Subscribe to خوراک کمالان
نشانی: http://kamalan.com
به‌روز شده: 19 ساعت 2 دقیقه پیش

چگونه یک پروژه کاتلین در اندروید استودیو بسازیم؟

ش., 05/27/2017 - 06:04
همانطور که در مطلب کاتلین، زبان جدید برنامه نویسی اندروید خدمتتان عرض کردم، گوگل پشتیبانی از این زبان را در گوگل I/O ۲۰۱۷ اعلام کرد. تیم برنامه نویسی JetBrains پشتیبانی اصلی را از این زبان جدید میکند. اما چرا کاتلین؟ چرا کاتلین؟ چرا اندروید تصمیم گرفت تا از این زبان پشتیبانی کند؟ مهمترین دلیل آن این است که اکثر قریب به اتفاق برنامه نویسان اندروید کاتلین را زبان جذابی یافتند که  کار برنامه نویسی اندروید را راحتتر میکند. کاتلین همچنین بدلیل ساختارش امکان این را دارد که در کنار برنامه جاوا قرار بگیرد. ۱۰۰٪ از جاوا پشتیبانی میکند و بنابراین به هرتعداد فایل کاتلین که خواستید میتوانید به پروژه فعلی تان (که براساس جاواست)، اضافه کنید تا پروژه تان ترکیب جاوا و کاتلین شود. حتی بعد از وارد کردن فایل کاتلین این امکان را دارید که از برنامه جاواتان هم اجرایش کنید. اگر از نسخه ۳.۰ اندروید استودیو استفاده میکنید احتیاجی نیست که پلاگین کاتلین را به آن وارد کنید چراکه در داخل آن وجود دارد. در نسخه های قبل از آن باید این پلاگین را نصب کنید. چگونه پلاگین کاتلین را نصب کنیم؟ به مسیر …File|Settings|Plugins|Install JetBrains plugin بروید، کلمه Kotlin را جستجو نمایید و آنرا نصب کنید. اگر […]

کاتلین (Kotlin)، زبان جدید برنامه نویسی اندروید

ش., 05/20/2017 - 13:52
اگر اخبار و رویدادهای چند روز گذشته مربوط به گوگل I/O را دنبال کرده باشید حتما متوجه شدید که گوگل از زبان برنامه نوسی کاتلین برای اندروید را بصورت رسمی پشتیبانی کرده است. بنابراین خبر خوب برای کسانی که تازه میخواهند برنامه نویسی اندروید را شروع کنند و با جاوا آشنایی ندارند این است که بجای جاوا میتوانند برنامه نویسی کاتلین را یادبگیرند. در این مطلب کلیه منابع موجود -تا این لحظه- که برای شروع برنامه نویسی کاتلین مناسب هستند را خدمتتان معرفی میکنم. کاتلین چیست؟ کاتلین، یک زبان برنامه نویسی ایستا (Statically typed) برای ماشین مجازی جاوا (JVM)، اندروید و مرورگر (Browser) است که از دو روز پیش رسما از طرف گوگل برای برنامه نویسی اندروید معرفی شد. البته ساخت این زبان حدود سال ۲۰۱۱ شروع شد و اوایل دی/بهمن ماه سال گذشته نسخه اول آن از طرف JetBrains معرفی شد که با استقبال بی نظیر برنامه نویسان اندروید مواجه شد. چرا از کاتلین برای برنامه نویسی اندروید استفاده کنیم؟ این مطلب البته سال گذشته نوشته شده است ولی از آنجاییکه گوگل بصورت رسمی از کاتلین پشتیبانی میکند، لذا ارزش مجددا خوانده شدن را دارد.  شروع برنامه نویسی کاتلین در اندروید وب سایت اصلی کاتلین برنامه نویسی اندروید با […]

تزریق وابستگی (Dependency Injection) در اندروید

ی., 04/23/2017 - 03:10
قبل از اینکه به سراغ تزریق وابستگی برویم ابتدا باید اصل وارونگی وابستگی (Dependency inversion principle) را بشناسیم.  حرف D در اصول برنامه نویسی شی گرا (SOLID)، اشاره بر جداسازی وابستگی ها در کد برنامه با توجه به تجرید (abstraction) بجای اجرای جزییات برنامه دارد. تزریق وابستگی مکانیزمی است که از آن برای پشتیبانی از جداسازی وابستگی ها استفاده میکنیم. بطور خاص کد برنامه وابستگی را تولید و به استفاده کننده تزریق میکند. بدین ترتیب استفاده کننده نیازی به ساخت آبجکت ندارد. در اندروید با استفاده از کتابخانه Dagger 2 میتوانیم از امکانات تزریق وابستگی استفاده کنیم. چرا از تزریق وابستگی استفاده کنیم؟ برای اینکه امکان جداسازی کلاسهای مختلف را به ما میدهد. فرض کنید کلاسی داریم با عنوان کاریر (User). متدی در این کلاس وجود دارد که سن کاربر را برمیگرداند. این متد برای محاسبه سن از کلاس تقویم (calendar) استفاده میکند. بدین ترتیب که یک آبجکت از این کلاس میسازد، آنرا مقدار دهی میکند و سپس با اطلاعات آبجکت کاربر مقایسه میکند و درانتها سن کاربر را برمیگرداند. اگرچه این روش کار میکند ولی مشکلش این است که کلاس Calendar برای کلاس User وابستگی است. بنابراین قانون فوق (SOLID) رعایت نشده است چراکه آبجکت کاربر دارد آبجکت تقویم […]

معماری برنامه اندروید براساس MVP (بخش سوم)

ی., 09/18/2016 - 07:55
این مطلب آخرین قسمت از سری مطالب معماری برنامه اندروید براساس MVP است. موارد زیر مورد بررسی قرار خواهند گرفت: چگونه با استفاده از کتابخانه simple-mvp سرعت برنامه نویسی  و اجرای کار بر مبنای MVP را بالاتر ببریم. مشکل های متداول در برنامه نویسی مبتنی بر MVP اگر مطالب قبلی را نخوانده اید یا میخواهید با مفاهیم Model-View-Controller آشنا شوید، مطالب قبلی را ببینید: معماری برنامه اندروید براساس MVP (بخش اول) معماری برنامه اندروید براساس MVP (بخش دوم) استفاده از کتابخانه Simple-MVP این کتابخانه بر اساس مفاهیمی که دکتر داگلاس اشمیت معرفی کرده است، ساخته شده است. از آنجاییکه کتابخانه اصول استاندارد را رعایت میکند (canonical form principles)، بنابراین از هیچ کتابخانه و یا منبعی خارج از Android SDK استفاده نمیکند. اما برای اینکه این چهارچوب/چارچوب (framework) درست کار بکند، باید اصول استفاده از آن رعایت شود. هشدار: این کتابخانه هنوز تحت آزمایش است و برای استفاده های تحقیقاتی منتشر شده است. به منظور ارتقای کتابخانه، نام بعضی از متدها و یا عملکردهای این کتابخانه در آینده ممکن است عوض شود. simple-mvp repository simple-mvp JavaDoc راه اندازی سریع کتابخانه ۱- ابتدا برای دانلود کتابخانه، آدرس آنرا به app/build.gradle میدهیم. compile 'com.tinmegali.mvp:mvp:0.0.7' ۲- برای ارتباط برقرار کردن بین لایه های مختلف MVP، به چهار […]

معماری برنامه اندروید براساس MVP (بخش دوم)

د., 09/12/2016 - 04:26
در بخش اول این مطلب، راجع به مفهوم (Model-View-Presenter (MVP  و علت مهم بودن آن در توسعه برنامه اندروید توضیح دادیم. در این بخش به سراغ کدنویسی میرویم تا عمیقتر آنرا مورد بررسی قرار دهیم. پروژه ای ساده خواهیم ساخت و طریقه ساخت لایه های مختلف و چگونگی ارتباط بین این لایه ها را خواهیم دید. ممکن است پیچیده بنظر برسد، اما بعد از درک کامل آن خواهید دید که چقدر مفید است. یادآوری از بخش اول: Presenter: رابطی است میان View و Model. دیتا را از مدل دریافت میکند، آنرا ویرایش/آماده میکند و در اختیار View قرار میدهد. اما برخلاف MVC، تصمیم میگیرد که چه واکنشی به درخواست کاربر در ارتباط با View انجام دهد (مثلا زمانیکه دکمه ای کلیک شد). View: عموما توسط اکتیوتی اجرا میشود و رفرنسی از Presenter را در خود دارد. تنها کاری که View انجام میدهد این است که متدخاصی را – از Presenter – زمانیکه اتفاقی در واسط کاربری افتاد (مثلا زمانیکه دکمه ای کلیک شد)، صدا کند. Model: در برنامه ای که خیلی خوب لایه های معماری رعایت شده باشد، Model تنها چیزی است که منطق بیزینسی پروژه را اجرا میکند. اینطوری به آن نگاه کنید که دیتای مورد نیاز برای نماش […]

معماری برنامه اندروید براساس MVP (بخش اول)

د., 09/05/2016 - 04:33
اساسی ترین کار در علم کامپیوتر انتخاب مناسب الگوی معماری (Architecture Pattern) پروژه است. تنها راهی است که میتوان پروژه را براساس آن تمیز (clean)، گسترش پذیر (expansible) و قابل تست (testable) نگهداری کرد. الگوها روش های شناخته شده ای هستند که در طول سال های برنامه نویسی بوجود آمده اند، تست شده اند، بهینه شده اند و امروزه بعنوان استاندارد شناخته میشوند. آنها بطور مدارم درحال متحول شدن هستند. بعنوان نمونه در اندروید الگوی معتبر (Model-View-Controller (MVC به الگوی (Model-View-Presenter (MVP تغییر کرده است. در بخش اول مقاله به تفاوت ها و ویژگیهای هرکدام از این الگوها میپردازیم. Android SDK وقتی به جزییات Android SDK و بطور خاص به layout – activity – data دقیق شویم، متوجه میشویم که بهترین الگو برای استفاده در معماری برنامه اندروید مدل (Model View Controller (MVC است. اما زمانیکه پروژه سنگین و بزرگ میشود، امکانات آن علی الخصوص در مورد تست برنامه جوابگوی مشکلات پیش رو نیست (برای اطلاعات بیشتر رجوع شود به Separation of concerns). با اینحال، هنوز براساس معماری اندروید، امکان انتخاب الگوی دیگر وجود دارد که به آن بدون الگو! یا آنتی پترن (Anti-pattern) گفته میشود. با اینکه MVC الگویی قابل اعتماد و شناخته شده است، اما زمین بازی را به الگوی جدیدتر MVP باخته […]

سخن بزرگان ۳

ش., 08/13/2016 - 04:58
ما دیگران را فقط تا آن قسمت از جاده که خود پیموده‌ایم می‌توانیم هدایت کنیم.

فیلم آموزشی – ادغام و تحویل مداوم با استفاده از Bitrise

س., 08/02/2016 - 01:07
شرکت های بزرگ در رقابت هستند تا ویژگی های جدید به برنامه شان اضافه کنند تا بازار را از رقبای خود بگیرند. بنابراین نیاز دارند تا باسرعت هرچه بیشتر امکانات جدید را به برنامه هایشان اضافه کنند و در دسترس کاربرانشان قرار دهند. اما سرعت بیشتر همراه است با درصد خطای بالاتر. برای جلوگیری از اینگونه خطرات مانند کرش کردن برنامه در دست کاریر، نیاز به استراتژی است که صحت کار و عملکرد مطلوب برنامه را ضمانت کند. تحویل و ادغام مداوم دو رویکردی است که مهندسی نرم افزار برای تولید باکیفیت نرم افزار در اختیار ما قرار میدهد. ادغام مداوم (Continuous Integration) و تحویل مداوم (Continuous Delivery) از مهمترین رویکرد (approach)های مهندسی نرم افزار هستند که به تیم درگیر پروژه این امکان را میدهند که در بازه های زمانی کوتاه بتوانند ورژن جدیدی از برنامه را تمام کنند و خروجی نهایی کار با درجه اطمینان بالا در هر زمانی قابل انتشار است. هدف نهایی این رویکرد این است که نرم افزار چرخه ساخت (Build)،‌تست و تحویل (Delivery) را در بازه های زمانی کوتاه طی کند. این رویکرد باعث کاهش هزینه تولید، کاهش زمان انجام کار و کاهش ریسک تغییرات انجام شده میشود که درنتیجه این امکان را میدهد تا […]

دیباگ کردن برنامه اندروید بر روی wifi

پ., 06/02/2016 - 04:00
ما اکثرا برای دیباگ کردن برنامه گوشی موبایلمان را با استفاده از کابل USB به کامپیوترمان متصل میکنیم. ممکن است گاهی به کابل دسترسی نداشته باشیم، در این حالت میتوانیم از (adb (Android Debug Bridge بر روی wifi استفاده کنیم. ولی برای تنظیم اولیه کار حتما به کابل usb نیاز داریم. بعد از تنظیم دیگر میتوانید کابل را کنار بگزارید و تا زمانیکه ip گوشی تان عوض نشده از این روش استفاده کنید. روش کار بسیار آسان است. مرحله اول: مطمین شوید هردوی کامپیوتر و موبایلتان به یک شبکه wifi متصل هستند. مرحله دوم: موبایلتان را با استفاده از کابل ‌usb به کامپیوترتان متصل کنید. به محض اتصال کامپیوتر دیوایستان را شناسایی خواهد کرد و adb در مد usb قرار خواهد گرفت. با استفاده از دستور adb usb$ مطمین میشوید که adb در این مد است و دستور adb devices$ لیست دیوایس های فعال (حتی ایمولاتور) را نشان میدهد. بطور خلاصه: $ adb usb restarting in USB mode $ adb devices List of devices attached ZX1D63HX9R device مرحله سوم: adb با استفاده از دستور زیر راه اندازی مجدد (restart) نمایید. $ adb tcpip 5556 restarting in TCP mode port: 5556 مرحله چهارم: ip دستگاه اندرویدتان را پیدا کنید. روش های مختلفی […]

کلیات تست کد در اندروید

س., 05/03/2016 - 06:36
اندروید صفحه ای را به منظور آموزش روش برنامه نویسی اندروید مبتنی بر (MVP (Model View Presenter ساخته است که درکنار آموزش این روش برنامه نویسی، به آموزش روش های تست کد مانند یونیت تستینگ و تست UI نیز اشاره کرده است. در ادامه آموزش مباحث پیشرفته تست UI با استفاده از Espresso نیز آموزش داده شده است. من در فکرم بود که این آموزشها را بنویسم ولی از آنجاییکه زمانش معلوم نیست شما را به این آموزش ارجا میدهم. مواردی که در این آموزش خواهید آموخت: معماری پروژه اندروید با استفاده از MVP استفاده از اندروید استودیو و گرادل به منظور اجرای تست نوشتن تست برای اندروید با استفاده از JUnit4 نوشتن UI تست با استفاده از Espresso و کتابخانه پشتیبان اندروید (Android Test Support Library) توضیح چند مورد از مباحث پیشرفته در اسپرسو (Espresso-contrib, Espresso-intents and IdlingResources) چگونگی گزارش گیری برای پیدا کردن سطح پوشش کد (Code Coverage). در علم کامپیوتر، پوشش کد اندازه ای از کد است که با تست پوشش داده شده است. بعبارتی تست ها چه مقدار از کد را تحت پوشش قرار داده اند. هرچه بیشتر بهتر.

پلاگین آموزش زبان برنامه نویسی Kotlin

جمعه, 03/18/2016 - 01:29
در مطلب انتشار نسخه ۱٫۰ زبان برنامه نویسی Kotlin درباره این زبان آموزشی توضیحات نسبتا کاملی دادم. امروز Jetbrains سازنده این زبان آموزشی (و همینطور ابزارهای برنامه نویسی مانند اندروید استودیو) پلاگینی در ارتباط با آموزش این زبان برنامه نویسی منتشر کرد که خیلی خوب بنظر میرسد. آنها بر این باورند که آموزش این زبان بسیار راحت است و در همین راستا بازهم برای آسانتر کردن کار اینبار به سراغ محیط توسعه آمده اند و آموزش برنامه نویسی کتلین را درقالب پلاگین ارایه کرده اند. Kotlin Edu پلاگینی است برای محیط توسعه IntelliJ Idea 2016-1 که به شما اجازه دریافت پلاگین را میدهد. من بر روی اندروید استودیو که تست کردم متاسفانه تا این لحظه در دسترس نیست و حتما باید از طریق IntelliJ Idea دانلود و نصب شود. دوره شامل چندین تمرین است و هر تمرین نیز شامل چند مرحله است که برای گذر از آنها، تمرین ها باید کامل و درست حل شود. سابق بر این تنها یک دوره آموزشی وجود داشت که با نام Kotlin Koans معروف بود و آموزشها را بصورت آنلاین در اختیار علاقه مندان برنامه نویسی کتلین قرار میداد. این پلاگین همان آموزش ها را منهی بصورت آفلاین در اختیارتان قرار میدهد با این تفاوت که در محیط […]

پلاگین آموزش زبان برنامه نویسی Kotlin

جمعه, 03/18/2016 - 01:29
در مطلب انتشار نسخه ۱٫۰ زبان برنامه نویسی Kotlin درباره این زبان آموزشی توضیحات نسبتا کاملی دادم. امروز Jetbrains سازنده این زبان آموزشی (و همینطور ابزارهای برنامه نویسی مانند اندروید استودیو) پلاگینی در ارتباط با آموزش این زبان برنامه نویسی منتشر کرد که خیلی خوب بنظر میرسد. آنها بر این باورند که آموزش این زبان بسیار راحت است و در همین راستا بازهم برای آسانتر کردن کار اینبار به سراغ محیط توسعه آمده اند و آموزش برنامه نویسی کتلین را درقالب پلاگین ارایه کرده اند. Kotlin Edu پلاگینی است برای محیط توسعه IntelliJ Idea 2016-1 که به شما اجازه دریافت پلاگین را میدهد. من بر روی اندروید استودیو که تست کردم متاسفانه تا این لحظه در دسترس نیست و حتما باید از طریق IntelliJ Idea دانلود و نصب شود. دوره شامل چندین تمرین است و هر تمرین نیز شامل چند مرحله است که برای گذر از آنها، تمرین ها باید کامل و درست حل شود. سابق بر این تنها یک دوره آموزشی وجود داشت که با نام Kotlin Koans معروف بود و آموزشها را بصورت آنلاین در اختیار علاقه مندان برنامه نویسی کتلین قرار میداد. این پلاگین همان آموزش ها را منهی بصورت آفلاین در اختیارتان قرار میدهد با این تفاوت که در محیط […]

بررسی کیفیت پروژه با استفاده از SonarQube

د., 03/14/2016 - 03:18
من ندیده ام تابحال کسی بطورجدی راجع به SonarQube صحبت کرده باشد چه برسد راجع به استفاده از آن در تست برنامه اندروید. بنابراین تصمیم گرفتم یک مطلب کلی راجع به آن بنویسیم تا مخاطبان سایت با آن آشنا شوند که استفاده از آن در برنامه های بزرگ بسیار مفید خواهید بود. در بخش دوم مطلب هم طریقه استفاده از آنرا در پروژه اندروید توضیح خواهم داد. SonarQube (که قبلا فقط sonar نامیده میشد) پلتفرمی است منبع باز که برای بررسی کیفیت کد نوشته شده در پروژه استفاده میشود. استفاده از آن محدود به اندروید یا حتی جاوا نیست و تاکنون از ۲۰ زبان برنامه نویسی مختلف مانند جاوا، C#, C/C++, PL/SQL و غیره پشتیبانی میکند. کار اصلی که سونار انجام میدهد بررسی قوانین (Rules) است که به آن داده شده است. قوانینی مانند “بیشترین تعداد خط های برنامه در یک کلاس ناشناس (anonymous) باید ۲۰ خط باشد”، “بلاک switch میبایست دارای آیتم پیشفرض (default) باشد”، “()thread.sleep نباید در کلاس های تست استفاده شود”، “کلاسهای مختلف نباید شامل بلاک های کد یکسان باشند (duplicate code)”، “عبارات تهی (empty statements) میبایست پاک شوند”. ممکن زمان طولانی نیاز باشد تا قسمت هایی از کد که از اینگونه قوانین تخطی کرده باشند، دوباره نویسی شوند […]

بررسی کیفیت پروژه با استفاده از SonarQube

د., 03/14/2016 - 03:18
من ندیده ام تابحال کسی بطورجدی راجع به SonarQube صحبت کرده باشد چه برسد راجع به استفاده از آن در تست برنامه اندروید. بنابراین تصمیم گرفتم یک مطلب کلی راجع به آن بنویسیم تا مخاطبان سایت با آن آشنا شوند که استفاده از آن در برنامه های بزرگ بسیار مفید خواهید بود. در بخش دوم مطلب هم طریقه استفاده از آنرا در پروژه اندروید توضیح خواهم داد. SonarQube (که قبلا فقط sonar نامیده میشد) پلتفرمی است منبع باز که برای بررسی کیفیت کد نوشته شده در پروژه استفاده میشود. استفاده از آن محدود به اندروید یا حتی جاوا نیست و تاکنون از ۲۰ زبان برنامه نویسی مختلف مانند جاوا، C#, C/C++, PL/SQL و غیره پشتیبانی میکند. کار اصلی که سونار انجام میدهد بررسی قوانین (Rules) است که به آن داده شده است. قوانینی مانند “بیشترین تعداد خط های برنامه در یک کلاس ناشناس (anonymous) باید ۲۰ خط باشد”، “بلاک switch میبایست دارای آیتم پیشفرض (default) باشد”، “()thread.sleep نباید در کلاس های تست استفاده شود”، “کلاسهای مختلف نباید شامل بلاک های کد یکسان باشند (duplicate code)”، “عبارات تهی (empty statements) میبایست پاک شوند”. ممکن زمان طولانی نیاز باشد تا قسمت هایی از کد که از اینگونه قوانین تخطی کرده باشند، دوباره نویسی شوند […]