مهدی معروف به سقراط مناطق محروم :)
مهدی معروف به سقراط مناطق محروم :)
خواندن ۳ دقیقه·۸ ماه پیش

این قسمت، افسانه های ناتمام شروع نشده!

از اون جا که قرارمون این شد که قدم به قدم کار هایی که تو جامعه اوپن سورس (open-source) میکنم رو این جا به اشتراک بگذارم، امروز روز دوم هست، اگه قسمت قبلی رو نخوندید پیشنهاد میکنم بخونید: این لینک

عکس هکری :))
عکس هکری :))

خوب امروز به ذهنم رسید برای این که بتونم مرور کنم که تکلونوژی های مختلف اندروید چجوری کار میکنه، بعد از اون جا که ساخت برنامه هایی مثل to−do خز شده بود، گفتم بیام و یه چالش جالب تر رو انجام بدم.

گفتم و بیام جعبه لایتنر بسازم، چند وقت پیش یکی از دوستان میخواست زبان بخونه اما هیچ اپ رایگان و خوبی برای جعبه لایتنر پیشنهاد نداد، منم بهش اپ اوپن سورس انکی (Anki) رو پیشنهاد دادم اما خیلی باهاش حال نکرد، گفتم این ایده خوبیه برای این که بیام شروع کنم.

تازه چون باید خیلی چیز ها تو خود اندروید مدیریت بشن (زمان خوندن فلش کارت ها و این ها) دیدم چالش خوبیه تا با مفاهیمی که قبلا کار نکردم کار کنم. مثلا استفاده از WorkMangaer و چیز های دیگه.

مثلا من برای تزریق وابستگی (dependency injection) از Koin استفاده کرده بودم اما میخواستم از Dagger هم استفاده کنم تا ببینم که چجوری میتونم از این هم استفاده کنم (تو بیشتر اپ هایی که دیدم از Dagger استفاده میکنند)

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

با این که من شاید بیشتر ۶ تا اپ نوشتم اما به نظرم هیچکدومشون اصولی نبودن و میخوام یه برنامه خوب و اصولی بنویسم و با چالش های اون روبرو بشم. البته چون من مدتی بود که از برنامه نویسی اندروید دور بودم تصمیم گرفتم که برای مرور هم که شده پروژه بزنم.(درگیر درس های دانشگاه و خوندن برای کارشناسی ارشد بودم) یه جمله ای رو میخوندم قبلا خیلی جالب بود، میگفت:

دانشی که در بازو نیست، افسانه ای بیش نیست!!

چرا داری هنوز ادامه میدی به خوندن!!! حداقل یه ۱۰ ثانیه تأمل کنید:)

توضیح پروژه

پروژه رو میتونید تو گیت هاب من پیدا کنید، در این لینک

تا الان فقط view های برنامه رو ساختم،

چرا با view کار میکنم و jetpack compose نمیزنم، چون هم مرور کنم و هم این که بیشتر پروژه های بزرگ هنوز هم روی view هستند و مثل همون DuckDuckGo البته من compose هم کار کردم اما برای همین.

توی این جا میتونید view ها رو ببینید. تا الان فقط ۵ تا view بسیار ساده ساختم و هنوز براش theme و نه style و font ست نکردم، ایده ام این هست که بجای صرف زمان برای درست کردن یه UI قشنگ میتونم جزییات تکنیکی بیشتر یاد بگیرم و سریع تر این پروژه رو تموم کنم. و به قول یه ضرب المثلی که میگه:

Sometime less is more!

یعنی "بعضی وقت ها زیبایی در سادگیه" (نقل به مضمون!)

تازه چون میخواستم این وبلاگ رو هم بنویسم، میخواستم یه چیزی باشه که زیاد درگیر زیبایی و این ها نشه و سعی کنه که بیشتر روی کارایی (Performance) توجه کنه.

توی MainActivity هم فعلا کار خاصی نکردم، فقط یه چیز تستی نوشتم تا بتونم view هایی که نوشتم رو تست کنم.

کلا قراره برنامه دو تا فیچر داشته باشه، خوندن کارت ها و اضافه کردن کارت (لایتنر چیست؟)

قراره که تو این برنامه از کتابخونه Room استفاده کنم و از Modern Android App Architecture که توی سایت خود اندروید هست. و همون طور که گفتم برای تزریق وابستگی هم از Dagger.

امروز هم این مقاله رو که درباره این بود که لایه UI باید چجوری باشه خوندم. و نکته جالبی بود که نمیدونستم و توی این قسمت و این قسمت از برنامه پیاده سازی کردم.


اگه ایده یا سخنی هست، خوشحال میشم که توی گیت هاب برام بنویسید، اگه تازه کار هستند اصلا مشکلی نیست، برید توی قسمت issue ها و هرچی دلتون میخواد بنویسید، اینجا

=================

میخوام سعی کنم تا جایی که میتونم این پروژه رو با داکیومنت بنویسیم، ببینم چی میشه :)

اگه نکته ای چیزی هم هست که دوست دارید اشاره کنید، حتما بگید خجالت نکشید!

اگه کتاب یا منبع خوب میشناسید، بسیار خوشحال میشم معرفی کنید.


اوپن سورسگیت هابopen sourceاندرویدandroid
سوال های احمقانه ایست مرا که جوابی بر آن نیست، پس بنواز ای ساز گیتی تا ز آن خرد آموزم
شاید از این پست‌ها خوشتان بیاید