برنامه نویسی

🔦 کانون توجه جامعه – ساختن Doodletoy، یک برنامه Doodling🔦

برجسته کردن پروژه ها از جامعه Appwrite

معرفی

با رشد چشمگیر جامعه توسعه دهندگان Appwrite، ما می خواهیم برای قدردانی و نمایش برخی از برنامه های کاربردی شگفت انگیز که توسط جامعه ما ساخته شده اند، وقت بگذاریم. شاید از این پروژه‌ها الهام بگیرید تا با Appwrite چیزی شگفت‌انگیز بسازید!

در این ماه، ما می‌خواهیم به دیو توجه کنیم که یک برنامه موفق به نام Doodletoy ساخته است. بیایید با مصاحبه با آنها شروع کنیم تا درباره پروژه و سفر آنها بیشتر بدانیم.


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

سلام من هستم دیو داوکینز ، (@DaveDawkins در توییتر، دیوید#4833 در Discord). من عاشق ساختن برنامه های وب با F# و Fable هستم.


نام پروژه ای که ساختید چیست؟

ابله! مانند shadertoy اما برای doodle.


چرا تصمیم به ساخت این گرفتید؟ چه چیزی الهام بخش شما شد؟

چند دلیل:

  • من می خواستم Appwrite یاد بگیرم
  • من می‌خواستم در تقویم ظهور F# 2021 مشارکت کنم.
  • من می خواستم با استفاده از Sutil، یک چارچوب وب که در حال توسعه آن هستم، یک برنامه وب کامل، تمام شده و واقعی ایجاد کنم.

Doodletoy چیست؟

Doodletoy به شما امکان می‌دهد تا doodle ایجاد کرده و به اشتراک بگذارید. Doodle یک نقاشی است که به صورت برنامه‌ریزی شده و با استفاده از یک زبان سفارشی “گرافیک لاک پشت” بیان می‌شود. متغیرهای زمان و موقعیت ماوس در دسترس هستند، بنابراین می‌توان doodleهایی داشت که به حرکت ماوس متحرک و/یا واکنش نشان می‌دهند. همچنین می‌توانید فراکتال‌هایی مانند درخت کریسمس و دانه‌ی برف کوخ بکشید. بعضی ها فقط مسحور کننده هستند. برای الهام گرفتن اولیه، بسته Elm’s Turtle Graphics را ببینید


برای ایجاد آن از چه فناوری هایی استفاده کردید و چگونه از هر فناوری استفاده کردید؟

نامحسوس – یک چارچوب برنامه کاربردی وب واکنشی برای F# + Fable

Sutil به شما امکان می دهد HTML بسازید که بتواند خود را در پاسخ به تغییرات در وضعیت برنامه بازسازی کند. این مانند React نیست، زیرا VDOM وجود ندارد. Sutil مستقل است و در بالای چارچوب دیگری قرار نمی گیرد.

افسانه – یک ترانسپایلر F#-to-JS

Sutil با F# نوشته شده است و Fable ابزاری است که این امکان را می دهد.
این کار زیر را انجام می دهد:

  • شادی توسعه دهندگان را فراهم می کند
  • درجه ای از دات نت را به مرورگر می آورد
  • بسیاری از خطاهایی که JS خالص می آورد را حذف می کند (درست است که Typescript هم این کار را انجام می دهد)

F# – F# پسر عموی سی شارپ است و از خانواده دات نت است. استدلال می شود که F مخفف “Fun” است، اما می توانید ببینید که ریشه آن در برنامه نویسی تابعی است. برای یک برداشت عالی دیگر، این ارائه توسط اسکات ولاشین را ببینید.
در هر صورت، این زبان در نوع خود زبان زیبایی است و می توانید همه چیز را در مورد FP فراموش کنید.

Appwrite – Appwrite روی یک میزبان Linode میزبانی می شود و doodletoy از این ویژگی ها استفاده می کند

  • احراز هویت به طوری که کاربران بتوانند وارد سیستم شوند و doodles خود را ذخیره کنند.
  • پایگاه های داده برای ذخیره سازی ابله، لایک و تعداد بازدید.

مخاطبان هدف شما چه کسانی هستند و چگونه به آنها کمک می کند تا درباره پروژه شما بیشتر بدانند؟

من عمدتاً جامعه F# + Fable را هدف قرار داده بودم. می‌خواستم نشان دهم که می‌توان از Sutil و Appwrite برای ساخت برنامه‌ها استفاده کرد. من نمی توانم ادعا کنم که بهترین روش ها را به کار می برم، زیرا اکثریت تجربه من در طول سال ها C# دسکتاپ و برنامه های سمت سرور بوده است، اما افرادی که بهتر می دانند می توانند من را روشن کنند.


هنگام ساخت این پروژه با چه مسائلی برخورد کردید و چگونه آنها را حل کردید؟

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

زمانی که من شروع کردم، خود Appwrite در نسخه 0.11 بود. حفظ ارتقاهای سمت سرور و یادگیری نحوه استقرار گواهینامه های SSL یک چالش بود، فقط به این دلیل که خود داکر برای من جدید بود (من یک کاربر با تجربه یونیکس/لینوکس هستم، بنابراین آن بخش خوب بود).

ایجاد پیوندهای Fable برای Appwrite از Typescript API یک روش دستی بود. خوشبختانه ما https://fable.io/ts2fable داریم که به طور خودکار Typescript را به F# تبدیل می کند. من نیاز به بهبودهایی در خود ts2fable داشتم که کمی سرعتم را کاهش داد، اما هنوز هم یک تجربه یادگیری لذت بخش بود و احساس خوبی برای کمک به Fable داشتم.

در آخرین Appwrite SDK، نوع Omit<'Document,'Keys> باعث ایجاد چند مشکل برای اتصالات F# شد. من هنوز در Fable با Smart Folk صحبت نکرده‌ام، اما در نهایت Omit<'Document,_> را فقط با ‘Document’ جایگزین کردم و سپس از یک تابع کمکی برای حذف ویژگی‌های داخلی ‘$’ Appwrite قبل از ارسال داده‌ها استفاده کردم. به سرور این باعث می شود فکر کنم که Appwrite می تواند این کار را در SDK انجام دهد.


چگونه Appwrite به پروژه شما کمک کرد؟

Appwrite به طور خاص با ارائه یک Backend با ویژگی های خوب که می توانستم روی سرورهایی که قبلاً مستقر کرده بودم میزبانی کنم به من کمک کرد. نصب واقعاً آسان است، و پشتیبانی عالی در Discord وجود داشت. متشکرم!


چند چیز را دوست دارید قبل از شروع پروژه بدانید؟

دانستن بیشتر در مورد docker می‌توانست چند چیز را آسان‌تر کند، اما باز هم Appwrite راه خوبی برای یادگیری در مورد docker بود. پروژه در نظر گرفته شده بود که یک چالش باشد، بنابراین من این دیدگاه را ندارم که “کاش این یا آن را می دانستم”


چیز دیگری که می خواهید به اشتراک بگذارید؟

اگر برنامه های تحت وب توسعه می دهید، به https://fable.io نگاهی بیندازید. Sutil تنها چارچوب وب موجود نیست – اگر توسعه‌دهنده React هستید، با پروژه‌های Fable.React و Feliz خود را در خانه پیدا خواهید کرد. احتمالاً از یادگیری معماری Elmish نیز لذت خواهید برد.


دیگران کجا می توانند برنامه شما را پیدا کنند؟

پیوند به برنامه – https://play.banquise.app


لطفا اسکرین شات های پروژه خود را به اشتراک بگذارید

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا