چگونه 7 برنامه را در 16 ساعت ایجاد کردم

“x” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “>” “>” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “>” “” “”> “” ” src = “https://hackernoon.com/images/avatars/92yJ4hz2g6Q04EqjO9iS2ci52jW2.jpg” alt = “عکس نمایه نویسنده”>

danieldallosDaniel Dallos

> علاقه مندان به اینترنت اشیا | توسعه دهنده iOS | عاشق فناوری

داستان

معمولاً هر داستان محصول با یک درد شروع می شود ، یک مشکل که باید حل شود. مشکلی که شما را آزار می دهد ، شما را آزار می دهد ، مرتباً با آن روبرو هستید و احتمالاً با آن تنها نیستید.
این مورد نیز تفاوتی نداشت.

چند ماه پیش ما شروع به کار کردیم استفاده از سیستم جدید منابع انسانی که دارای مزایای زیادی در مقایسه با سیستم قدیمی است. اما این نیز معایبی داشت … از دست رفتن قابلیت ها ، از دست دادن اطلاعات … یا اطلاعات موجود است ، اما بیرون آوردن آنها از سیستم سخت است.

این زمانی است که ایده Pandoo (برنامه ریز تعطیلات) ) متولد شد.

مشکلی که وجود دارد ” < ما عادت کرده ایم.

روشی خوب و تمیز برای دیدن همه تعطیلات ، تعطیلات تیم (و نوع آن تعطیلات) و رزرو آنها در یک گروه.

سلب مسئولیت: شاید برخی از این مشکلات با پیکربندی مدیر یا با آموزش کاربران قابل کنترل باشند .. اما معمولاً وقتی افراد ابزار خود را عوض می کنند فقط انتظار داشته باشید که “کارساز باشد” و آنها همه چیزهایی را که قبلا داشته اند به علاوه خوب دارند موارد اضافی.

هدف این مقاله سرزنش این ابزار نیست ، بلکه درمورد راه حل و آموخته های اصلی است.

راه حل < p class = "paragraf"> من می خواستم عملکردها را از ابزار قدیمی بازگردانم. من می خواستم تعطیلاتم را مثل گذشته ببینم ، می خواستم تعطیلاتم را مثل گذشته رزرو کنم. و من با این تنها نبودم.

الزامات

  • نمی خواهم وقت زیادی را برای این کار تلف کنم MVP ، فقط کافی است آن را با قابلیت های اساسی کار کنید و من را خوشحال کنید.
  • به هیچ وجه نمی توان چندین برنامه را با استفاده از چندین زبان برنامه نویسی ساخت.
  • همراه اول ، اما پشتیبانی از صفحه نمایش بزرگتر در جاهایی که می توانم داده های بیشتری را ببینم خوب است.
  • خودم را به چالش بکشم.

انتخاب / p>

چرا؟

قول فلاتر

Flutter ابزاری است بین پلتفرمی که توسط Google ساخته شده و به شما کمک می کند از یک پایگاه کد برنامه های تلفن همراه بومی بسازید

(ویرایش (2020/09/19): این کمی تغییر کرده است همانطور که بعداً خواهید دید )

من قبلاً تجربه هایی داشتم

من Edengreen را ساخته ام ، ابزاری که به شما کمک می کند در دسترس بودن خود را بررسی کنید کوپن های غذا.

این یک برنامه واقعاً اساسی است ، اما اصول کارکرد فلاتر را به من آموخت. در این زمان فلاتر هنوز در مرحله بتا بود.

یکی دیگر از پروژه های من هشدار CoronaVirus بود ، ابزاری که کشورها را بر اساس کشور کنترل می کند و برای شما اعلان های فشاری ارسال می کند.

در این پروژه ، من اینجا و آنجا با Firebase ، توابع بدون سرور و اسکریپت های سفارشی بازی کرده ام. من آموخته ام که مجموعه بزرگی از کتابخانه های شخص ثالث برای Flutter وجود دارد و جامعه نیز به سرعت در حال رشد است

پشتیبانی وب

من هرگز تلاش نکرده ام ، اما ظاهراً پشتیبانی ابتدایی وب نیز وجود داشته است.

چالش

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

مطالب خود را بشناسید

من به یک نمایش جدول قابل جابجایی غول پیکر احتیاج داشتم که به صورت افقی بتوانم روزهای سال و به صورت عمودی همه همکاران و تعطیلات آنها را نشان دهم. br> این آسان به نظر می رسد ، اما در واقعیت ، هرگز چنین نیست. موارد عجیب و غریب ، آزار دهنده که تقریباً کارتان تمام شده است ، عدم دانش Flutter از طرف من ، محدودیت های پیش بینی نشده سیستم عامل ، و غیره

من می خواستم ببینم آنچه در حال حاضر توسط جامعه در دسترس است ، شاید چیزی وجود داشته باشد که مشابه باشد و بتواند متناسب با نیازهای من باشد (با حداقل تغییرات کوچک). خوشبختانه من بسته horizontal_data_table را پیدا کردم ، که 90٪ از آنچه را که نیاز داشتم فراهم می کرد … من بسته را چنگال زده و تنظیماتی را برای نیازهای خود در راه انجام داده ام.

دریافت بسته داده ها از ابزار HR بسیار آسان بود ، آنها یک REST API خوب را برای تعامل با back-end فراهم می کنند.

هنگام اتصال نقاط باید محتاط باشید. شما باید بدانید که از ابزار خود انتظار دارید ، چگونه کار خواهد کرد. چگونه داده ها را بدست می آورد؟ آیا ما باید داده ها را به صورت محلی ذخیره کنیم؟ آیا ما به یک منطق اضافی سمت سرور نیز نیاز داریم؟ آیا قصد استفاده از عناصر UI عجیب و غریب را داریم؟

اینها س importantالات مهمی هستند ، زیرا وقتی کتابخانه / بسته ای را در Flutter انتخاب می کنید و به عنوان مثال اگر در Android کار کند به معنای خودکار کارکردن روی iOS یا حتی در وب نیست. شما باید کتابخانه هایی را انتخاب کنید که به پشتیبانی بومی پیش فرض و بدون کتابخانه شخص ثالث بومی اضافی متکی باشند. (یا تکیه بر آن کتابخانه ها باید از هر طرف کامل باشد.)

به عنوان مثال ، اگر می خواهید از سرویس های Firebase در برنامه خود استفاده کنید ، باید بررسی کنید که کدام سیستم عامل ها هستند پشتیبانی. اگر هدف شما نباشد ، هنگام تلاش Flutter برای دسترسی به API های غیرمجاز ، با یک زمان خراب روبرو خواهید شد.

هنگام جستجوی بسته Flutter در مخزن رسمی بسته دارت / فلاتر ، همچنین می توانید از سیستم عامل های پشتیبانی شده نیز دیدن کنید.

>

/ strong>

بر اساس تجارب گذشته در MVP ، من هیچ کتابخانه خارجی خاصی را انتخاب نکردم (به غیر از جدول_داده_افقی) زیرا می خواستم مشکلات سازگاری بین iOS ، Android و وب را محدود کنم .

بعد از اینکه نسخه کمتری به پایان رسید ، اجرای آن را در Android و iOS آزمایش کردم.

کار کرد و زیبا به نظر می رسید! (مطمئناً ، هنگام پیمایش در تعطیلات کل شرکت ، این و آنجا مشکلات عملکردی داشت … اما در یک مجموعه داده خوب بود.)

بنابراین اکنون دو برنامه آماده استفاده داریم!

بیایید ببینیم چگونه در وب کار می کند.

البته در چند جا خراب شد. اما هیچ چیز جدی که یک “اگر-جای دیگر” خوب قدیمی نتواند حل کند. من هنوز هم از برخی رابط های برنامه کاربردی (API) استفاده کردم که در وب در دسترس نبودند ، بنابراین لازم بود از ثابت kIsWeb استفاده کنم تا منطق بین وب و تلفن همراه محلی را متفاوت کنم.

همچنین دارای برخی از سوالات رابط کاربر بود به عناصر UI پشتیبانی نشده / حشره دار (دارای شیب) ، اما برای مرحله فعلی به اندازه کافی مناسب بود.

ما برنامه سوم را نیز داریم و شما می توانید بگویید” خوب ، کار شما تمام شد ، همه آن را دارید ، وب اجرا می شود همه سیستم عامل ها “.

اما صبر کنید ، موارد دیگری وجود دارد!

برنامه های Meetup و 3 برنامه اضافی

من واقعاً Meetups را دوست دارم. من می توانم با افراد همفکر ملاقات کنم ، به سخنرانی های خوب و جالب گوش دهم و گاهی اوقات نیز سخنرانی می کنم ?.

یک نشست امیدوار کننده از GDG بروکسل در مورد موضوع فلاتر وجود داشت. بر اساس خلاصه ارائه ، هدف آن یک مقدمه اساسی Flutter و تجربیات نویسنده بود.

بنابراین نمی تواند برای من جالب باشد ، من با اصول اولیه کار کردم … اما من همیشه دوست دارم موارد مشابه را تکرار کنم ، زیرا شاید بتوانم اطلاعات جدیدی پیدا کنم که می تواند دیدگاه من را تغییر دهد و فکر من را شروع کند. به همین دلیل ، من کتابهایی را در موضوعات مشابه می خوانم / گوش می دهم … حتی 95٪ همان کتاب قبلی است ، 5٪ باقیمانده ارزش زمان را دارد.

< strong> خوشبختانه این مورد نیز تفاوتی نداشت.

مجری برنامه چالش های توسعه برنامه خود را بررسی کرد و اینکه چگونه سریع برنامه ها را از ابتدا در Flutter دوباره اجرا کرده اند. < / p>

سپس او چیز جالبی را نشان داد. برنامه او در یک پنجره عجیب و غریب بود. به نظر می رسید مانند یک مرورگر یا شبیه ساز iOS بدون حاشیه است. ظاهراً این برنامه او در برنامه MacOS بومی جمع آوری شده است. معلوم شد که فلاتر پشتیبانی از سیستم عامل های دسک تاپ را نیز اضافه کرده است. بدیهی است که این حتی در مراحل اولیه پشتیبانی وب بود ، اما ارزش امتحان آن را دارد.

روز بعد که آن را امتحان کردم ، جواب داد! من پاندو را به عنوان یک برنامه بومی MacOS داشتم. در همین حال ، من کشف کرده ام که پشتیبانی اساسی از لینوکس و ویندوز نیز وجود دارد … پس از راه اندازی اولیه محیط ها در VirtualBox ، می توانم Pandoo را به عنوان برنامه ویندوز و لینوکس بومی نیز گردآوری کنم! ?

مطمئناً ، محدودیتهای اضافی در ویندوز و لینوکس وجود داشت ، من مجبور شدم شرایط اضافی “اگر-جای دیگر” را انجام دهم. به عنوان مثال. هیچ API ذخیره سازی مداومی در این سیستم عامل در دسترس نبود ، بنابراین من نمی توانم هیچ داده ای را بر روی دیسک ذخیره کنم.
(ویرایش (20/09/2020): بعداً با استفاده از خواندن پرونده پیش فرض دارت و نوشتن API.)

سه برنامه دیگر انجام شد . خوب به نظر می رسد ، اینطور نیست؟

img https: .googleapis.com / v0 / b / hackernoon-app.appspot.com / o / images٪ 2F92yJ4hz2g6Q04EqjO9iS2ci52jW2-4f773wui.jpeg؟ alt = media & token = 52c97307-5ef8-4ea8-aedc-b89a1 < b1a1> b1a1 = “b> b1a1” b> b1a1 = “b> b> b1a1” b> b> b1a1 = “> b = b1a1 =”> b = b1a1> “image-container”>

+1

اگر این به عنوان برنامه هفتم محسوب شود یا خیر ، می توانیم در این مورد بحث کنیم. اما این برای من بسیار تعجب آور بود ، بنابراین لطفاً اجازه دهید تا آن را 1+ بشمارم.

در حالی که مشغول تست Pandoo در مرورگر Chrome بر روی تلفن خود بودم ، یک پنجره بازشو پیدا کردم که از من پرسید آیا می خواهم Pandoo را به صفحه اصلی خود اضافه کنم؟ حتما چرا که نه. اما این نماد در صفحه اصلی من با پیوند صفحه دیگر متفاوت بود. و … همچنین بین برنامه های من در راه انداز ظاهر شد. چه؟

معلوم شد که برنامه های وب ساخته شده توسط Flutter نیز برنامه های PWA هستند بنابراین حتی اگر دستگاه آفلاین باشد ، می توانید برنامه های وب را باز و استفاده کنید. یا ، اگر یک صفحه وب برای آن ساخته شده باشد ، می توانید … در مورد من ، من هیچ داده ای را از ابزار HR ذخیره نمی کنم ، هر بار همه داده ها را از API می گیرم. این بدان معناست که وقتی Pandoo درون مرورگر بارگیری می شود و سعی می کنید بدون اتصال به اینترنت از آن استفاده کنید ، خطای API را نشان می دهد (دقیقاً مانند تمام نسخه های دیگر برنامه). من می توانم آخرین داده های واکشی شده را به صورت محلی ذخیره کنم و بلافاصله در هنگام بارگیری برنامه بارگیری کنم (در حالی که جدید بارگیری می شود) … اما در حال حاضر ، همانطور که هست خوب است.

نتیجه گیری

من فکر می کنم فلاتر یک نامزد قدرتمند در دوره توسعه برنامه است. نه تنها برای موبایل بلکه به طور کلی.

من برای داشتن یک برنامه Mac OSX حتی یک خط کد ننوشتم. اگرچه من با برنامه های Mac OSX (مایک) تجربیاتی دارم ، بنابراین می توانم ایده ای را از کجا شروع کنم ، این یک کپی / پیست کردن از یک برنامه iOS نیست ، شما باید کارهایی را در آنجا انجام دهید. امیدوارم Mac Catalyst در آینده به این امر کمک کند.

برنامه ای برای ویندوز و لینوکس بنویسید؟ حتی به آن فکر نمی کنم.

پشتیبانی وب اضافی واقعاً خوب است و می تواند واقعاً مفید باشد. به عنوان مثال ، اگر یک حساب Revolut و TransferWise دارید ، احتمالاً متوجه شده اید که برنامه های تلفن همراه شباهت زیادی به یکدیگر دارند و همچنین نسخه وب با مجموعه ای از ویژگی های محدود را نیز ارائه می دهند. من نمی دانم که آنها از چه فناوری هایی استفاده می کنند ، اما (اگر از قبل Flutter نبوده است) می توانم تصور کنم که در آینده این نوع خدمات Flutter را برای برنامه های خود در نظر بگیرند.

در این بازه زمانی ، من توانستم مهمترین قسمت برنامه ، نمای جدول غول پیکر را با تمام داده های موجود در آن ، نمای تعادل تعطیلات و روش درخواست تعطیلات را یکی یکی توسعه دهم.

منهای اضافی ، ویژگیهای اضافی ، رفتن به Meetup … را حساب نمی کنم.

برای پشتیبانی پایه اصلی دسک تاپ ، هیچ لحظه ای حساب نمی کنم. اساساً ، هیچ تغییری در کد انجام نشده است ، مگر اینکه وقتی تصادفی را دیدم ، “اگر-جای دیگری” را در قسمت مشکل دار قرار دادم و “برطرف شد”. همچنین ، تغییرات بعدی پرکننده در نظر گرفته نشده است.

یادگیری های کلیدی

به طور کلی:

  • برای ساخت نمونه اولیه ، فلاتر یکی از بهترین ابزارهای موجود در بازار است.
  • شما نیازی به مهندسی بیش از حد MVP ندارید.
  • بهتر است از محدودیت های ابزار خود در ابتدا بدانید تا اینکه بعداً متعجب شوید.
  • دیدارها برای ملاقات با افراد جالب و جمع آوری اطلاعات جدید بسیار مناسب است.

درباره Flutter:

  • از Android ، iOS ، Web ، Windows ، MacOS ، Linux (و Fuchsia) پشتیبانی می کند.
  • اگر کتابخانه شخص ثالث بومی وجود دارد ، اما وجود دارد هنوز پشتیبانی از Flutter وجود ندارد ، می توانید آن را با Flutter سازگار کنید.
  • کتابخانه های اصلی دارت در همه سیستم عامل ها در دسترس هستند ، بنابراین در بدترین حالت می توانید به آنها بازگردید.
  • جامعه بسیار زیاد است.

پشتیبانی

آیا از داستان من لذت بردید؟ موارد بیشتری در دسترس است… ?

آیا می خواهید اطلاعات بیشتری کسب کنید؟ آیا دوست دارید درباره تکنیک های استفاده شده بحث کنید ، یا می خواهید بخشی از کد را ببینید؟ سپس از طریق ابتکار عمل Tweaked.Tech خود در نظر بگیرید که به حامی ماهانه Patreon تبدیل شوید.

چرا؟

  • مقالات ابتدا در Patreon منتشر می شوند.
  • یک مقاله بعدی وجود دارد که بینش ، تکنیک های مورد استفاده ، معماری ، زیرساخت ها را به اشتراک می گذارد.
  • شما می توانید به پروژه ها دسترسی زودهنگام داشته باشید در مرحله بتا.
  • ما می توانیم در مورد ایده های شما ، تردیدهای شما و مسائل فعلی که در پروژه خود با آن روبرو هستید بحث کنیم.
  • شما مرا ادامه می دهید ، این یک چیز بزرگ است انگیزه من را تقویت کنید!

من از یک پشتیبانی یک بار نیز قدردانی می کنم ، شما می توانید این کار را از طریق Buy Me a کافی انجام دهید .

بابت خواندن داستان من متشکرم ، من سپاسگزارم که تا آخر اینجا بودید.

قبلاً در https: // danieldallos منتشر شده بود .com / posts / 2020/07 / how-i-built-6-1-apps-in-one-day /