در پست قبلی در مورد این صحبت کردیم که با چه رویکردهایی میشه سورس یک اپلیکیشن رو بررسی کرد. اولین اپلیکیشنی که برای بررسی انتخاب شده اسمش کیکاستارتر هست. اگر تا حالا اسم کیکستارتر رو نشنیدید، ویکی پدیا فارسی در موردش اینجوری توضیح میده:
کیکاستارتر (به انگلیسی: Kickstarter)، شرکتی آمریکایی و عامالمنفعه برای کمک به پروژههای نوآورانه در زندگی بشر است که از استارتآپهایی با ایدههای نوین و خلاقانه استقبال میکند. ایدههای جدید در همه زمینهها از فناوری گرفته تا آشپزی در وبسایت این شرکت برای جذب سرمایه عمومی تحت پوشش قرار میگیرد.
ما به سایت و اپلیکیشن iOSش کار نداریم و فقط سورس اندروید رو بررسی میکنیم. اگر دوس دارید اول خود اپلیکیشن رو ببنیید، میتونید از گوگل پلی دانلود کنید. سورس اپلیکیش اندروید کیک استارتر داخل این ریپو گیتهاب هست. برای بررسی سورس اپلیکیشن مجبور نیستید که سورس رو بیلد کنید یا حتی دانلودش بکنید ( البته معمولا دانلود کردن کار رو خیلی راحتتر میکنه). من خودم از سایت گیتهاب استفاده کردم و چیزی دانلود نکردم.
خب حالا وقتشه که کار رو شروع کنیم. در ادامه نکتههایی که از جاهای مختلف سورس کیک استارتر یادگرفتم رو مینویسم.
توجه: اشکال نداره اگر این نکتههایی که من نوشتم براتون خیلی سخت یا شاید حتی خیلی آسون باشه، اینها فقط نکتههایی هستند که من از بررسی سورس کیکاستارتر یاد گرفتم. حالا احتمال داره شما وقتی خودتون سورس رو بررسی کنید به نکتههای دیگهای توجه کنید یا چیزهای دیگهای بنظرتون جالب باشه.
در رابطه با فواید خوندن سورس پروژههایی (میتونه خروجیش اپلیکیشن باشه یا کتابخونه) که توسط افراد دیگه نوشته شده مقالههای زیادی توی اینترنت وجود داره و لازم به صحبت بیشتر نیست. فقط اگر بخوام تجربه شخصی خودمو بگم، فکرکنم در حدود ۶۰ ۷۰درصد چیزهایی که بلدم رو با خوندن سورسها یاد گرفتم. مهمترین بهونهای که بعضی برنامهنویسا میارن تا اینکار پرفایده رو انجام ندن، اینه که میگن هنوز دانششون برای اینکار کم هس. در صورتی که خب بدیهی هست مثلاً اگر منم سورس اپلیکیشن تلگرام رو بررسی میکنم قطعاً کلی از بخشهاشو متوجه نمیشم و هیچوقت هم هدفم این نیست ۱۰۰درصد یه پروژه رو متوجه بشم. سورسهارو میشه با دو رویکرد زیر بررسی کرد. ادامه …
برخلاف سری قبلی که خیلی طول کشید تا نسخهی جدیدی از حِلما منتشر بشه، ایندفعه توی کمتر از یک هفته نسخهی ۰٫۲٫۰ هم منتشر شد. دلیلش اینه که در نسخهی قبلی، داخل پروژه اندرویدی که حِلما تولید میکرد از قابلیتهای آخرین نسخهی کتابخونهی دگر۲ (نسخهی ۲.۱۱) استفاده نمیشد و نیاز بود تا حِلما بهروز بشه. مهمترین تغییر این نسخهی حلما استفاده از ماژول اندروید کتابخونه دگر هست که شکل تزریق وابستگیها به اکتیویتی و فرگمنت رو کاملا عوض میکنه. در ادامه میتونید لیست تغییرات جدید رو ببینید. ادامه …
اگر پروژههاتون رو براساس الگوی معماری MVP درست میکنید، احتمالا از ساخت فایلهای اضافه برای هر اکتیویتی یا فرگمنت خسته شدید. اینجاس جنریتور میتونه کلی از کارتون کم کنه! و این وظیفه رو به عهده بگیره. خودم از وقتی که نسخهی خیلی اولیه جنریتور رو منتشر کردم، ازش استفاده میکنم. مزیت جنریتور در ساخت فایلهای مرتبط با MVP و … نسبت به روشهای دیگه اینه هم سریعتر هست و هم اینکه مثل روش کپی پیست باگ تولید نمیکنه (مثلا پیش نمیاد یادتون بره یه فیلد رو rename کنید).
توی این مدت یه سری مشکلات داخلش پیدا کردم. بین پروژهها دو روزی فرصت شد تا برای بهبود و توسعهاش وقت بذارم. البته مهمترین مشکل نسخهی قبل نداشتن راهنما برای استفاده بود. در ادامه تغییرات جدید و نحوهی استفاده از جنریتور رو براتون توضیح میدم. ادامه …
در قسمت قبل نحوهی استفاده از Component.Builder@ و BindsInstance@ رو توضیح دادم، توی این پُست قراره در مورد دو نکتهی بعدی بنویسم. اگر میخواید به سورس کامل دسترسی داشته باشید به ریپوی SearchMovies برید.
خیلی وقت بود در مورد dagger2 (دگر۲) چیزی نخونده بودم تا اینکه دوباره فرصت شد مقالههای جدیدی بخونم و ۳ تا نکتهی جدید ازشون یاد بگیرم. این سه نکته رو در قالب دو پُست بلاگ توضیح میدم. برای اینکه کاربردشون رو بهتر نشون بدم، هر نکته رو در قالب یک کامیت روی پروژهی SearchMovies اعمال کردم.
گاهی پیش میاد به عنوان برنامهنویس اندروید نیاز میشه که یک کتابخونهی جاوا رو تست کنید. مثلا فکرکنید میخواید ویژگی خاصی رو توی dagger2 یا retrofit امتحان کنید اما تا بخواید پروژه اندروید بسازید و هر بار منتظر بشید تا build بشه! خیلی وقتتون گرفته میشه.
در این موارد ساختن یه پروژهی console application جاوا میتونه خیلی کمک کنه. اینجوری درگیر lifecycle اکتیویتی یا درست کردن فایل xml و … هم نمیشید و میتونید تمرکزتون رو روی اون موضوعی که میخواید تست کنید بذارید. فقط اگر پروژهی معمولی جاوا بسازید باید خودتون فایل jar کتابخونههایی که نیاز دارید رو پیدا کنید و چیزی مثل gradle توی اندروید نیست تا کمکتون بکنه. برای حل این مشکل میشه از maven استفاده کرد، بهش dependecyهاتون رو شبیه gradle در یک فایل xml معرفی میکنید و بقیه کار رو به اون میسپرید. بعدش میتونید خیلی راحت از کتابخونهها توی کدتون استفاده کنید.
تا حالا چند سری سرچ کردم و آموزش ساخت پروژه با maven رو خوندم اما دفعهی بعدی باز یادم میرفت! این بار تصمیم گرفتم کامل اینجا داکیومنتش کنم تا اگر کسی نیاز داشت یا خودم خواستم بتونم خیلی راحت اینکارو بکنم.
چندماه از وقتی که وبسرویس MoviesApi رو با هدف آموزشی درست کردم میگذره. توی این مدت فرصت نشده بود تا قابلیتی بهش اضافه کنم. بالاخره دیروز بعد چند ساعت کلنجار رفتن با لاراول تونستم امکان احراز هویت از طریق oAuth رو براش درست کنم. مزیتش اینه اگر کسی میخواد احراز هویت از طریق oAuth با password grant type رو توی اندروید، iOS یا هر زبان دیگهای یاد بگیره، میتونه با این وبسرویس تمرین کنه. برای پیادهسازی oAuth از Passport استفاده کردم و فقط یه تغییر کوچیک دادم که نیاز نباشه client_secret و client_id برای دریافت توکن ارسال بشه. ادامه …
چند وقت پیش در بلاگم پستی با تیتر “سوالات متداول توسعهدهندگان تازه کار اندروید” نوشتم. سوال ۸ام اون پست “چطور میشه برنامهنویسی اندروید رو یاد گرفت؟” بود که جوابشو بصورت خلاصه نوشته بودم. این مقاله درواقع جواب کامل اون سوال هست و داخلش منابعی رو که خودم در سه سال گذشته ازشون استفاده کردم و برنامهنویسی اندروید یاد گرفتم رو بهتون معرفی میکنم. در طول این سه سال گذشته در هیچ شرکت یا تیم اندرویدی نبودم و فقط از منابع داخل این پست برای یادگیری اندروید استفاده کردم. در ادامه میتونید با این منابع و روشی که ازشون استفاده میکنم آشنا بشید.
برای یادگرفتن برنامهنویسی روشهای گوناگونی هست، مثلا میشه توی کلاسهای حضوری و مجازی ثبتنام کرد یا بصورت خودخوان (self study) از منابع موجود در اینترنت استفاده کرد. اینکه کدوم روش برای شما مناسبه، بستگی به روحیات و سلیقتون داره. توی این پست قراره در رابطه با این صحبت کنیم که هر روش برای چه افرادی مناسبتر هست. چیزایی که در ادامه مینویسم چکیدهی تجربهام از تعامل با برنامهنویسان تازهکار توی گروههای تلگرامی، فرومها و کسایی که خصوصی بهشون درس دادم هست. منظورم اینه پشتوانهی علمی نداره و فقط نظر تجربی و شخصیم هست.