اطلاعیه

کاربر گرامی

به انجمن برنامه نویسی AnswerCenter.ir خوش آمدید

 برای استفاده از تمامی امکانات سایت لطفا در انجمن عضو شوید


مهران محمودی

استاد
  • تعداد ارسال ها

    482
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    14

آخرین بار برد مهران محمودی در خرداد 26

مهران محمودی یکی از رکورد داران بیشترین تعداد پسند مطالب است!

4 دنبال کننده

درباره مهران محمودی

  • درجه
    مدیر بازنشسته
  • تاریخ تولد 10/04/1998

روش های تماس

  • اسکایپ
    Meran.Mahmoudi
  • آدرس سایت
    http://AnswerCenter.ir
  • یاهو
    MehranMahmoudi1119

مشخصات پروفایل

  • محل زندگی
    قزوین
  • محل تولد
    قزوین
  • علایق
    -
  • شغل
    -

آخرین بازدید کنندگان نمایه

2,564 بازدید کننده نمایه
  1. حساب توسعه دهنده گوگل

    سلام، فی نفسه کار سختی نیست و میتونید خودتون انجام بدید. قسمتی که چالش برانگیزه پرداخت و ثبت نام به عنوان توسعه دهنده گوگله که 25 دلار نیاز داره. ما هم به علت تحریم های بانکی نمیتونیم مستقیما پرداخت رو انجام بدیم. من از طریق یکی از آشنایان که در آمریکا زندگی میکنه پرداخت های گوگل پلی رو انجام میدم. مبلغ رو واسه ایشون واریز میکنم و پرداخت از اونجا انجام میشه جهت اطمینان خاطر که مشکلی پیش نیاد. چون اگه گوگل متوجه بشه از ایران هستید بلافاصله اکانت رو بلاک میکنه. خودتون هم میتونید از طریق سایت هایی مثل payment24 کارت اعتباری تهیه کنید، شارژش کنید و پرداخت رو انجام بدید. به همین دلیل نیاز به سرور مجازی دارید که این فرایند رو از اول تا آخر از طریق اون انجام بدید. فکر میکنم آموزش های زیادی در سطح اینترنت وجود دارن. متاسفانه فرصت چندانی ندارم که اینجا سر بزنم، برای اطلاعات و راهنمایی بیشتر میتونید از طریق ایمیلی که در امضای بنده وجود داره تماس بگیرید. موفق باشید.
  2. طراحی وب با جاوا

    سلام، جناب مهدی نژاد اطلاعات خوبی ارائه کردن، بنده هم دانسته های خودم رو در اختیارتون میذارم. از جاوا در طراحی سایت زمانی استفاده میشه که بحث امنیت فوق العاده بالا (به دلیل تراکنش های مالی زیاد و شدیدا حیاتی مثل سیستم های بانکی، سیستم های دانشگاهی که بحث پرداخت شهریه دارند و سیستم هایی از این قبیل) مطرح باشه. به عنوان مثال دوستانی که در دانشکده های فنی درس خوندن با سامانه ناد reg.tvu.ac.ir قطعا آشنا هستن! این سیستم با جاوا نوشته شده. نکته قابل توجه اینه که تمام دانشکده های فنی کشور (دقت کنید تمام دانشکده های فنی کشور!) دارن از این سامانه برای انتخاب واحد، مشاهده کارنامه، اعتراض به نمره، پرداخت شهریه و ... استفاده میکنن! این سامانه علی رغم اینکه سرعت پایینی که داره، از هسته قدرتمندی برخورداره. یا یک مثال دیگه: تا جایی که در جریانم اکثر سیستم های درون بانکی ایران با جاوا نوشته شدن؛ همینطور در جاهایی که بحث داده کاوی (Data Mining) مطرحه جاوا میتونه گزینه مناسبی باشه. (البته اگر اشتباه میکنم لطفا تصحیح کنید!) این نکته رو هم باید عرض کنم که تمام این سامانه ها با سایر زبان ها هم قابل پیاده سازی هستن، ولی به دلایلی که ذکر کردم یعنی امنیت و حیاتی بودن تراکنش ها، تیم های برنامه نویس حرفه ای به جاوا روی میارن. منتهی برای وبسایت های تجاری طور (شخصی، شرکتی، فروشگاهی، دانلود موسیقی، دانلود فیلم، دانلود نرم افزار، آموزشی، انجمن، گالری عکس و ...) استفاده کردن از جاوای خالص صرفا زیاد کردن زحمت خودِ برنامه نویسه و نیاز مبرم بهش نیست. استفاده از جاوا اسکریپت کاملا معقول و عادیه و چیز عجیبی در طراحی یک سایت نیست! امروزه کمتر سایت استانداردی رو میشه دید که از جاوا اسکریپت استفاده نکرده باشه. خصوصا برای اعتبارسنجی های سمت کاربر، جلوه دادن به سایت، پیاده سازی تکنیک AJAX و ... پس میشه گفت کاری که میخواید بکنید الزاما نباید با جاوا انجام بشه! کاملا اختیاریه. موفق باشید.
  3. اخطار موقع خروجی

    سلام، کاربر گرامی بنده متوجه شدم که چند روز اخیر درگیر کامپایل کردن سورس تلگرام هستید. به احتمال زیاد دلیل اینکه به مشکل میخورید اینه که بخشی از تلگرام (نسخه اندروید رو در جریان هستم) با سی پلاس پلاس نوشته شده. لذا نیازمند NDK هست. فایل رو از گیت هاب دانلود میکنید و بعد داخل اندروید استودیو Import میشه؟ توصیه میکنم اول سورس کد رو Fork کنید روی اکانت گیت هاب خودتون و بعدش از طریق منوی VCS اندروید استودیو و اضافه کردن Remote به اکانت گیت هاب خودتون + Clone کردن سورس، به اندروید استودیو اجازه بدید خودش سورس رو از اونجا دریافت کنه و پروژه بسازه. اینکار باعث میشه Gradle رو به سازگارترین حالت ممکن بسازه و اگر هم مشکلی هست، روی سایر بخش ها باشه و چندان چالشی روی همگام سازی Gradle گریبان گیر شما نشه. کار با Version Control ها مبحث گسترده و کارآمدیِ که متاسفانه در ایران خیلی خوب بهشون توجه نمیشه. شخصا در بسیاری از تیم های برنامه نویسی متوجه شدم که برنامه نویس ها ازش استفاده نمیکنند! بنده کمکی از دستم برنمیاد که بگم از چه راهی وارد بشید تا این مشکلات رفع بشن، ولی اطلاعاتی که داشتم رو در اختیارتون گذاشتم شاید کمکتون کنه! تا جایی که میتونید Android SDK خودتون رو کامل کنید. از بخش Extras در SDK Manager فایل های LLDB و CMAKE و NDK رو دانلود کنید. Android Gradle Plugin خودتون رو به بالاترین نسخه ش ارتقا بدید. نسخه Android Studio رو به بالاترین نسخه ش ارتقا بدید. از به روز بودن Android Sdk Tools و Build-Tools خودتون مطمئن بشید. سورس رو که گرفتید از بخش File - Project Structure مسیر NDK رو به پروژه معرفی کنید. ضمنا بهتره نام پوشه دانلودی NDK رو به ndk-bundle تغییر بدید و سپس به پروژه معرفی کنید. در نهایت باید این رو بگم بسیاری از برنامه نویس های پیشروی اندروید، روی Linux با اندروید استودیو کار میکنن. سرعتش روی لینوکس تقریبا 3 برابر ویندوز میشه! چرا که هسته اندروید بر پایه لینوکس نوشته شده و این باعث میشه بسیاری از ابزار مورد نیاز رو شما روی لینوکس راحت تر داشته باشید. لپ کلام: اغلب تلگرام های غیر رسمی (و البته اکثر اپلیکیشن های Play Store و بخش زیادی از اپلیکیشن های حرفه ای کافه بازار) در محیطی برپایه یونیکس (مکینتاش و یا لینوکس) نوشته شدن و روی ویندوز، اندروید کار کردن غیر منطقیه! (این حرف رو بسیاری از توسعه دهندگان کاربلد اندروید بارها و بارها زدن) کامپایل گرفتن تلگرام هم نه که غیرممکن باشه! بلکه کمی دشواره اگه به ابزار و مفاهیم کلی اندروید تسلط نداشته باشید طاقت فرساست. الفبای موضوع چیزِ پیچیده ایه! امیدوارم موفق بشید. موفق باشید!
  4. عدم نشان دادن فیلد خالی در دیتابیس در spinner

    سلام، کدهایی که دوستان دادن مشکلتون رو حل میکنه به نظرم. منتهی بنده پیشنهاد میکنم ساختار پایگاه داده تون رو درست کنید. برای چنین چیزی (اگه درست متوجه شده باشم هر ستون نام استان رو داره و سطرهاش شامل شهرهای اون استان میشن) در اصل شما باید دو جدول مجزا داشته باشید که با یکدیگر ارتباط دارن. مثال: جدول Province (استان): فیلد Id: حاوی یک مقدار عددی که میتونه Auto Increment باشه و به شکل خودکار بهش اضافه بشه. فیلد Name: نام استان جدول City (شهر): فیلد Id: میتونه اختیاری باشه. ولی بهتره که وجود داشته باشه (مثل فیلد Id جدول Province) فیلد ProvinceID: کلید خارجی که با فیلد Id جدول Province ارتباط داره، در مثالی که میزنم بهتر متوجه میشید. فیلد Name: نام شهر مثال: در جدول Province سطرهایی به این شکل وجود داره: 1 تهران 2 قزوین در جدول City: 1 2 قزوین 2 2 تاکستان 3 1 تهران 4 1 ورامین 5 1 لواسان 6 1 شمیران 7 1 قرچک 8 2 آوج شما متوجه میشید شهر "ورامین" متعلق به استانی هست که در جدول Province مقدار Id برابر با 1 هستش. و از اونجا هم میفهمید که در جدول Province شهر تهران دارای Id برابر 1. پس میشه این نتیجه رو گرفت: شهر ورامین متعلق به استان تهران هستش. پایگاه داده از این نظر که میتونه قلب تپنده یک اپلیکیشن محسوب بشه، شدیدا حائز اهمیت هستش و باید به درستی طراحی بشه. جزء اصول اولیه طراحی یک اپلیکیشن، آماده سازیِ دیتابیس اونه! کاملا قبل از شروع کدنویسی... اصولا یه شغلِ مجزاست در تیم های نرم افزاری! ولی خب ما تو ایرانیم :-) توصیه من اینه که ساختار رو صحیح طراحی کنید، اگر به این شکل جلو برید احتمالا تو دیتابیس دچار پدیده ای به نام "افزونگی" میشید که برای یک اپلیکیشن آفتِ بزرگیه! ضمن اینکه توسعه دادنش هم در آینده سخت تر میشه. موفق باشید.
  5. ارور Plugin with id 'com.android.application not found'

    سلام، لطفا محتویات فایل build.gradle مربوط به پروژه تون رو اینجا قرار بدید که بتونیم ببینیم. اینی که گذاشتید برای ماژول app هستش. نسخه اندروید استودیو رو هم ذکر کنید.
  6. تبدیل برنامه من به عنوان برنامه پیشنهادی

    بله درسته، باید Intent رو در لحظه اجرا شدن تو اکتیویتی کنترلش کنید. برای دریافت Intent ای که باعث اجرا شدن اکتیویتی شده، میتونید از کد زیر استفاده کنید: Dim startingIntent As Intent startingIntent = Activity.GetStartingIntent و برای استفاده از مقادیر موجود در Intent هم از کدهایی با ساختار زیر استفاده کنید (با توجه به نیازتون نام Key رو تغییر بدید): startingIntent.GetData startingIntent.GetExtra("key")
  7. گرفتن اطلاعات در مودال

    سلام، برای رفع خطا راهکار دقیقی مد نظرم نیست. جز اینکه پیشنهاد کنم نسخه B4A تون رو بروزرسانی کنید و از آخرین نسخه ی منتشر شده (7.80) استفاده کنید. از بروز بودن کتابخانه Core هم مطمئن بشید (آخرین نسخه ای که من از کتابخانه Core دارم نسخه ی 7.28 هست) گویا این دستور در نسخه های جدید B4A اضافه شده. علی الحساب از سمپلی که پیوست کردم استفاده کنید. (کدهای سمپل اصلی رو بدون استفاده از دستور WaitFor نوشتم) موفق باشید. DialogsSample.zip
  8. گرفتن اطلاعات در مودال

    سلام، پیشنهاد بنده استفاده از کلاس جدیدی هستش که به کتابخانه Dialogs اضافه شده (نسخه 4.01) به نام CustomLayoutDialog نسخه جدید کتابخانه + مثالی که همراهش هست رو براتون رو پیوست کردم. تصویر زیر نتیجه کار رو نشون میده: موفق باشید. DialogsExample.rar
  9. تبدیل برنامه من به عنوان برنامه پیشنهادی

    سلام، قاعدتا باید به شکل زیر باشه: از منوی Project گزینه Android Manifest رو انتخاب کنید و تمام کدهایی که @Gray Mind عزیز گذاشتن رو به این شکل در انتهاش قرار بدید: AddActivityText(BaseActivity,<intent-filter> <action android:name="android.intent.action.MUSIC_PLAYER" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.APP_MUSIC" /> <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="content" /> <data android:host="media" /> <data android:mimeType="audio/*" /> <data android:mimeType="application/ogg" /> <data android:mimeType="application/x-ogg" /> <data android:mimeType="application/itunes" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="file" /> <data android:mimeType="audio/*" /> <data android:mimeType="application/ogg" /> <data android:mimeType="application/x-ogg" /> <data android:mimeType="application/itunes" /> </intent-filter>) BaseActivity نام اون Activity هستش که قراره عملیات اجرا رو انجام بده، شما نام Activity خودتون رو قرار بدید. بنده صرفا کدهای ایشون رو در قالب قابل استفاده برای Basic4Android گفتم. دقت نکردم که ببینم مشکلتون رو حل میکنه یا نه! ولی با یه نگاه اجمالی به نظرم مشکلی نداره. حتی اگه مشکلی بود با کمی مطالعه در مورد Intent-Filterها رفع میشه. ضمنا سه تا intent-filter آخری رو هم حذف کردم بابت اینکه به نظرم به کارتون نمیومد. موفق باشید.
  10. استفاده از عکس داخل چند عکس

    الان متوجه شدم! با ابزارهایی مثل Photoshop که از پس زمینه Transparent پشتیبانی میکنن میتونید اینکار رو انجام بدید. ناحیه اطراف آیکن مورد نظرتون رو انتخاب کنید، Ctrl + C بزنید. از منوی فایل گزینه New رو انتخاب کنید. Document type رو روی Clipboard و اگر پس زمینه شفاف میخواید، Background Contents رو روی Transparent تنظیم کنید. در صفحه باز شده، Ctrl + V رو بزنید و با فرمت PNG ذخیره کنید. با اینکار میتونید تمام آیکن ها رو اسخراج کنید، یه نمونه رو پیوست کردم. --------- پیشنهاد میکنم اگر از اندروید استودیو استفاده میکنید، از تصاویر Vector بهره ببرید. با فرمت SVG داخل اندروید استودیو Import کنید. حجم نسبتا کمتری دارن و مشخصه قابل توجهشون اینه که هیچ تفاوتی در کیفیت تصاویر با تغییر اندازه اون ها نمیبینیم (چون از لحاظ ساختار، بُرداری هستن، با استفاده از منحنی های ریاضی رسم میشن و از پیکسل تشکیل نشدن و نمونه ی بارزش که قطعا هممون دیدیم، فونت ها هستن که با هر اندازه ای کیفیت مطلوبی دارن) بنده از B4A جز برای این اینجا استفاده ای نمیکنم و کارم با Android Studio هستش. بابت همین هم هیچ اطلاعی ندارم که آیا در B4A هم میتونیم از تصاویر SVG استفاده کنیم یا خیر. تحقیق میکنم اگر ممکن بود در اولین فرصت مطلبی رو راجع بهش ارائه میدم. موفق باشید.
  11. باز کردن برنامه ی من از طریق مرورگر گوشی

    سلام، این چند وقت که بیشتر هستم اینجا میبینم گاهی سوالات خوبی داره پرسیده میشه! سوال شما هم جالب و کاربری بود. در نظر داشتم در اولین فرصت مطلبی رو در موردش بنویسم. ------ کار سختی نیست. یه Activity جدید بسازید با نام مثلا ExampleActivity از منوی Project گزینه Manifest Editor، در انتهاش دستورات زیر رو اضافه کنید: AddActivityText(ExampleActivity,<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="answercenter.ir" android:scheme="https" /> </intent-filter>) در مورد تمام المنت های استفاده شده در این دستورات، میتونید در مقالات developer.android.com مطالعه کنید. من فقط بخش حائز اهمیتش که باعث میشه برنامتون به یه سری لینک های خاص حساس بشه رو توضیح میدم، کد زیر هستش که با تغییرش میتونید به هدف خودتون برسید: <data android:host="answercenter.ir" android:scheme="https" /> در واقع android:scheme بیانگر پروتکل استفاده شده و android:host معرف آدرس دامنه هستش. حالا برنامه شما میره جزء برنامه هایی که میتونن آدرس https://answercenter.ir رو کنترل و اجرا (به اصطلاح Handle) کنن. (مثل تلگرام که t.me رو داره یا اینستاگرام که instagram.com رو میبره تو اپلیکیشنش و ...) همین کار کافیه! برای تست و بررسیش همین برنامه رو روی دستگاه نصب کنید. با مرورگر گوشی برید به آدرس https://answercenter.ir و روی یکی از لینک های سایت که با https://answercenter.ir شروع میشه کلیک کنید، میبینید که برنامه پیشنهاد میشه برای اجرا کردنش. نکته آخر: برای دریافت اطلاعات ارسال شده در درون ExampleActivity و در داخل Activity_Create: Dim intentData As String : intentData = Activity.GetStartingIntent.GetData ToastMessageShow(intentData , True) که intentData حاوی یک لینک هستش (لینکی که برنامه رو اجرا کرده) موفق باشید.
  12. استفاده از عکس داخل چند عکس

    سلام، به شدت نامفهوم و گنگ! اصلا نتونستم متوجه منظورتون بشم متاسفانه. و نامفهوم ترین بخشش هم همینه: بالاخره یک عکس یا چند عکس؟!!! میتونید تصویر از چیزی که میخواید بذارید؟ یا بهتر توضیح بدید که بتونیم کمکتون کنیم.
  13. تشخیص مدل دستگاه

    سلام، Dim phone As Phone Dim val As String val = phone.Manufacturer val =val & " " & phone.Model ToastMessageShow(val,False) خروجی روی گوشی: Samsung SM-G530H روی شبیه ساز: unknown Google nexus 4 - 5.0.0 - API 21 - 768x1280 بررسی هاتون اشتباه نبوده احیانا ؟!
  14. قطع و وصل GPS

    سلام، محبت کنید تاپیک قدیمی رو بروز نکنید. برای مشکلتون تاپیک جدید مطرح کنید. در نسخه های اخیر اندروید نمیتونید GPS رو بدون اجازه کاربر خاموش/روشن بکنید. مگر با دسترسی روت، یا معرفی برنامه خودتون به عنوان سیستمی و ... که هر کدوم چالش خودش رو داره. برای دریافت مختصات از GPS در سطح سنسور، از ACCESS_COARSE_LOCATION استفاده کنید و برای دریافت آن در سطح اینترنت از ACCESS_FINE_LOCATION . سورسی که در لینک بالا هست، کمکتون میکنه کاربر رو به صفحه تنظیمات GPS هدایت کنید که خودش خاموش یا روشنش کنه و بعد مختصات رو دریافت میکنه. پیشنهاد میکنم در فایل مانیفست اون، دسترسی ACCESS_COARSE_LOCATION رو هم اضافه کنید. نکته حائز اهمیت هم اینه که دسترسی GPS از اندروید 6 به بعد جزء دسترسی های حساس محسوب میشه، مطلب پایین کامل توضیح داده: باقیش به همت خودتون مربوطه! من به اندازه ای که نیاز داشتید راهنماییتون کردم. موفق باشید.
  15. دریافت json با آبجکت های ناهمنام

    سلام، دوستان روش های جالبی ارائه کردن، منتهی بنده هم این رو پیشنهاد میکنم که کار با کتابخانه Gson رو که خود گوگل ارائه میکنه یاد بگیرید، برای Serialize (تبدیل شیء به متن Json) و Deserialize (تبدیل متن Json به شیء) فوق العاده کار ما رو آسان میکنه و گفتنش خالی از لطف نیست! فایلی که پیوست کردم رو دانلود کنید و از حالت فشرده خارجش کنید. از منوی File به زیرمنوی New برید و New Module رو انتخاب کنید. از پنجره باز شده گزینه Import JAR/.AAR Package رو انتخاب کنید و Next بزنید. فایلی که از حالت فشرده خارج کردید رو انتخاب کنید و Next بزنید تا به پروژه تون اضافه بشه. حالا به از منوی File گزینه Project Structure رو انتخاب کنید. در سمت چپ پنجره باز شده، در بخشِ Modules گزینه app رو انتخاب کنید. به زبانه آخر یعنی Dependencies برید و روی علامت بعلاوه سبز رنگی که در سمت راستش وجود داره کلیک کنید و Module dependency رو انتخاب کنید. دوباره از پنجره باز شده، gson رو انتخاب کرده و تمام پنجره ها رو اوکی کنید و اجازه بدید که Gradle کاملا همگام سازی بشه. داخل پرانتز: همه اینها رو گفتم و راه پیچیده ای بود، اگه به V-P-N دسترسی دارید میتونید با اضافه کردن خط زیر به فایل build.gradle متعلق به app در اندروید استودیو اجازه بدید خودش کتابخانه رو دانلود و به پروژه اضافه کنه. compile 'com.google.code.gson:gson:2.8.2' خب، کتابخانه به پروژه اضافه شد. باید بپردازیم به بحث اصلی که همون Deserialize کردن متن JSON هستش. برای اون JSON که آوردید، باید به این شکل کلاس تعریف کنید که هنگام کار با کتابخانه Gson مشکلی نباشه. public class GeneralModel { JsonItem Data1; JsonItem xyz; JsonItem abc; // و اگر ادامه داره اشیاتون، همش رو همینجا تعریف کنید // به دلیل استاندارد نبودن جیسون } public class JsonItem { String index1; String name; } به این شکل هم JSON خودتون رو به نمونه ای از این کلاس ها تبدیل کنید: Gson g = new Gson(); GeneralModel generalModel = g.fromJson(response, GeneralModel.class); به همین سادگی!! حالا شما یه شیء دارید که اطلاعاتتون داخلش قرار گرفته. مقادیر به این شکل هستش: // generalModel.Data1.name = dan // generalModel.Data1.index1 = 4 // generalModel.abc.name = jordan // generalModel.abc.index1 = 5 // generalModel.xyz.name = jimi // generalModel.xyz.index1 = 2 ولی پیشنهاد میکنم JSON خودتون رو کمی استاندارد کنید. کار کردن با JSON هایی به این شکل که یه بخشیشون بی قاعده و همواره متغیر باشه کمی سخت و البته غیر منطقیه! منتهی به این روشی که گفتم میتونید JSON رو به شیء تعریف بکنید که روش پیشنهادی خودِ گوگل هم هستش! برای تولید متن JSON هم میتونید از همین کتابخانه استفاده کنید. لینک Github برای مطالعه بیشتر موفق باشید. gson-2.8.2.zip