Clean_Mobile_Architecture_Become_an_Android,_iOS,_Flutter_Architect.pdf
16.6 MB
🍁Clean Mobile Architecture: Become an Android, iOS, Flutter Architect
پ.ن: من نخوندمش. تایید یا ردش نمیکنم. حجمش کمه. خوندنش ضرر نداره.
پ.ن: من نخوندمش. تایید یا ردش نمیکنم. حجمش کمه. خوندنش ضرر نداره.
@purecoder_ir
🔥9
Forwarded from Vania Dart Framework
نظرتون چیه از این به بعد، سهشنبه آخر هر ماه یک جلسه آموزشی با محوریت فریمورک وانیا (Vania) برگزار کنیم؟
در هر جلسه، یکی از بخشهای مهم این فریمورک رو بهصورت عملی آموزش میدیم.
🗓 اولین جلسه: سهشنبه، ۲۹ مهر
📚 موضوع: پیادهسازی سیستم Authentication با پایگاه داده MongoDB و ایجاد گارد برای کاربران عادی، کاربران VIP و ادمین کل
🕒 مدت زمان: حدود ۱ تا ۲ ساعت
دوستانی که تمایل به شرکت در این جلسه دارند، میتوانند از طریق لینک زیر در کلندر گوگل ثبتنام کنند 👇
🔗 افزودن به کلندر
همچنین میتوانید مستقیماً از طریق Google Meet در جلسه شرکت کنید 👇
🎥 لینک ورود به جلسه
در هر جلسه، یکی از بخشهای مهم این فریمورک رو بهصورت عملی آموزش میدیم.
🗓 اولین جلسه: سهشنبه، ۲۹ مهر
📚 موضوع: پیادهسازی سیستم Authentication با پایگاه داده MongoDB و ایجاد گارد برای کاربران عادی، کاربران VIP و ادمین کل
🕒 مدت زمان: حدود ۱ تا ۲ ساعت
دوستانی که تمایل به شرکت در این جلسه دارند، میتوانند از طریق لینک زیر در کلندر گوگل ثبتنام کنند 👇
🔗 افزودن به کلندر
همچنین میتوانید مستقیماً از طریق Google Meet در جلسه شرکت کنید 👇
🎥 لینک ورود به جلسه
Google
پیادهسازی سیستم Authentication با پایگاه داده MongoDB فریمورک وانیا — Invitation via Google Calendar
⚡4🔥3👍1
نظر سنجی
بنظرت کدوم یک از حالت های زیر برای یک اپ موبایل میتونه پرفرمنس بهتری ارائه بده؟
بنظرت کدوم یک از حالت های زیر برای یک اپ موبایل میتونه پرفرمنس بهتری ارائه بده؟
Anonymous Poll
61%
سینگل ترد و asynchronous
39%
مولتی ترد و غیر asynchronous
👍1🔥1
میتونید وارد لینک زیر بشید با گیتهاب عضو بشید تا بهتون 100 دلار کردیت بده برای استفاده از API مدل های GPT,Claude میتونید توکن رو بردارید بزارید توی Claude code و ازش مثل cursor استفاده کنید
حتما با گیت هاب وارد بشید
لینک معرف
حتما با گیت هاب وارد بشید
لینک معرف
agentrouter.org
Agent Router
Claude Code, OpenAI Codex, Gemini Cli 公益站
👍3
دوستانی که مایل هستند توی میتینگ ساخت سیستم ورود و عضویت با وانیا شرکت کنند میتونید از لینک زیر جوین بشن
https://meet.google.com/ukm-pdux-tzv
https://meet.google.com/ukm-pdux-tzv
Google
Real-time meetings by Google. Using your browser, share your video, desktop, and presentations with teammates and customers.
Forwarded from Hamed
درود دوستان
این مدت اخیر احتمالا ریپو های منو دیدین و میدونین که چندتا کتاب برنامه نویسی رو به زبان شیرین فارسی ترجمه کردم.
مطمئناً گیت هاب جای مطالعه کتاب نیست و خسته کننده س برای این کار، پس به سرم زد که کار رو راحت کنم! ایده!
با گیت هاب پیج ترجمه ها رو آنلاین کنم که مطالعه راحت تر باشه.
و بووووومممم!
اینم سایت گیتاب ، Gitab
به زودی pdf همه شون قرار میدم.
لطفاً با دستای خوشگل تون با استار دادن حمایت کنید و به اشتراک بذارید، این ترجمه ها واقعا میتونه به برنامه نویس های جونیور، مید لول ... کمک کنه. هدف؛ بهانه نداشتن برای مطالعه کردن، افزایش منابع فارسی
https://hheydarian.github.io/Gitab/
این مدت اخیر احتمالا ریپو های منو دیدین و میدونین که چندتا کتاب برنامه نویسی رو به زبان شیرین فارسی ترجمه کردم.
مطمئناً گیت هاب جای مطالعه کتاب نیست و خسته کننده س برای این کار، پس به سرم زد که کار رو راحت کنم! ایده!
با گیت هاب پیج ترجمه ها رو آنلاین کنم که مطالعه راحت تر باشه.
و بووووومممم!
اینم سایت گیتاب ، Gitab
به زودی pdf همه شون قرار میدم.
لطفاً با دستای خوشگل تون با استار دادن حمایت کنید و به اشتراک بذارید، این ترجمه ها واقعا میتونه به برنامه نویس های جونیور، مید لول ... کمک کنه. هدف؛ بهانه نداشتن برای مطالعه کردن، افزایش منابع فارسی
https://hheydarian.github.io/Gitab/
🔥8
✅مهمترین اصلی که توی نام گذاری یه متد، variable یا ... باید رعایت کنیم اینه که در نهایت کدمون شبیه به یه story خونده بشه. یه جمله ی روون انگلیسی (Plain English )
🔥اگه قواعد گرامی ساده رو توی نام گذاری رعایت کنیم، نام های خیلی خوانا خواهیم داشت و خوندن کد خیلی ساده میشه.
🤦♂️بعضی مواقع این قواعد رو رعایت نمیکنیم و کار رو برای خودمون خیلی سخت میکنیم.
👈برای مثال وقتی یه کلاس user داریم و یه متدی داره که قراره یه bool ریترن کنه و بگه که email اش valid هست یا نه؟ باید در نظر بگیریم که این متد داخل یه if استفاده میشه.
❓حالا از بین جمله های زیر کدومش به انگلیسی روون نزدیکتره و راحتر خونده میشه؟
✅If user email is valid
❌If user is email valid
❌If user is valid email
✅مسلمه که جمله ی اول به انگلیسی روون نزدیکتره. پس بهتره اسم اون متد رو emailsValid بگذاریم.
🔥اگه این قاعده یعنی خونده شدن مثل یه جمله ی روون رو رعایت کنیم، خیلی جاها مشکلاتمون حل میشه. در این بین همچنین میتونیم بعضی جاها برای خوانا تر شدن کد از حروف تعریف مثل a, an, the استفاده کنیم و لزومی نداره که توی استفاده از اونها خساست به خرج بدیم.
پ.ن: پارادایم object oriented به تولید کدهایی که شبیه به یه جمله ی روون انگلیسی نوشته بشن و از قاعده ی زیر پیروی کنن کمک میکنه.
[subject] [action] [object]
🔥اگه قواعد گرامی ساده رو توی نام گذاری رعایت کنیم، نام های خیلی خوانا خواهیم داشت و خوندن کد خیلی ساده میشه.
🤦♂️بعضی مواقع این قواعد رو رعایت نمیکنیم و کار رو برای خودمون خیلی سخت میکنیم.
👈برای مثال وقتی یه کلاس user داریم و یه متدی داره که قراره یه bool ریترن کنه و بگه که email اش valid هست یا نه؟ باید در نظر بگیریم که این متد داخل یه if استفاده میشه.
❓حالا از بین جمله های زیر کدومش به انگلیسی روون نزدیکتره و راحتر خونده میشه؟
✅If user email is valid
❌If user is email valid
❌If user is valid email
✅مسلمه که جمله ی اول به انگلیسی روون نزدیکتره. پس بهتره اسم اون متد رو emailsValid بگذاریم.
🔥اگه این قاعده یعنی خونده شدن مثل یه جمله ی روون رو رعایت کنیم، خیلی جاها مشکلاتمون حل میشه. در این بین همچنین میتونیم بعضی جاها برای خوانا تر شدن کد از حروف تعریف مثل a, an, the استفاده کنیم و لزومی نداره که توی استفاده از اونها خساست به خرج بدیم.
پ.ن: پارادایم object oriented به تولید کدهایی که شبیه به یه جمله ی روون انگلیسی نوشته بشن و از قاعده ی زیر پیروی کنن کمک میکنه.
[subject] [action] [object]
@purecoder_ir
🔥8👍2
🔥asynchronous, multi threading
🆚Dart vs C#
🔥دارت و سی شارپ هر دو asynchronous هستن. البته توی سی شارپ هم میتونیم به صورت asynchronous کد بزنیم و هم غیر asynchronous.
✅یک برنامه ی asynchronous حتا در حالت single thread میتونه از یک برنامه ی multi thread که asynchronous نیست، بهینه تر عمل کنه.
✅سی شارپ به صورت پیش فرض یه محیط multi thread رو بهمون میده ولی دارت single thread هست.
✅پس توی سی شارپ اگه async کد بزنیم، میتونیم یه برنامه ی multi thread و asynchronous داشته باشیم و اگه async نزنیم یه برنامه ی multi thread معمولی داریم.
✅توی دارت کدهای بعد از await توی همون isolate ای اجرا میشن که کدهای قبل await اجرا میشدن. ولی توی سی شارپ ممکنه که کدهای قبل و بعد از await توی دو ترد مختلف اجرا بشن.
✅پس هر دو زبان با توجه به async بودن، بهینه عمل میکنن(البته به شرطی که ما کار رو خراب نکنیم). در مقابل زبان سی شارپ با توجه به مولتی ترد بودن میتونه از حداکثر ظرفیت CPU استفاده کنه. ولی در عین حال همین مولتی ترد بودن چالش هایی رو به همراه داره که یک برنامه ی single thread باهاشون روبرو نمیشه. مثل shared memory که بین ترد ها اتفاق میوفته و همیشه باید حواسمون باشه که برنامه thread safe باشه. مخصوصن در محیط هایی مثل اپ های بکند که امکان همزمانی بشدت بالا میره. و چالش های دیگه ... .
❓کدوم یک بهترن؟
✅همه چیز trade off عه. بهتر و بدتری وجود نداره.
سی شارپ سعی میکنه از بیشترین توان CPU استفاده کنه، ولی این در مقابل تحمیل یه سری هزینه ها اتفاق میوفته.
باید بین این دو trade off بشه.
🔥توی هر دو زبان امکان این که خود دولوپر worker thread هایی رو اجرا کنه وجود داره که توی دارت با توجه به share نشدن memory بین ترد ها، بهشون isolate میگن.
سی شارپ علاوه بر این ترد هایی که خود دولوپر ممکنه ران کنه، یک thread pool داره و برای پردازش های خودش از ترد های این thread pool استفاده میکنه. دولوپر برای پردازش های خاص خودش میتونه یه ترد از thread pool قرض بگیره و یا یه ترد اختصاصی برای خودش بسازه که هر کدوم trade off های خوذش داره (قرض گرفتن یا اختصاصی ساختن). در مقابل زبات دارت تا وقتی که خودمون isolate ای نسازیم، single thread هست. از طرفی عمر isolate هایی که خودمون میسازیم هم کوتاهه و در کل میتونیم دارت رو single thread بدونیم. البته تاکید میکنم که به خاطر async بودنش و بلاک نشدنش موقع درخواست های IO، از محیط های multi thread و غیر async میتونه بهینه تر هم عمل کنه یا دست کم پا به پاشون حرکت کنه.
🆚Dart vs C#
🔥دارت و سی شارپ هر دو asynchronous هستن. البته توی سی شارپ هم میتونیم به صورت asynchronous کد بزنیم و هم غیر asynchronous.
✅یک برنامه ی asynchronous حتا در حالت single thread میتونه از یک برنامه ی multi thread که asynchronous نیست، بهینه تر عمل کنه.
✅سی شارپ به صورت پیش فرض یه محیط multi thread رو بهمون میده ولی دارت single thread هست.
✅پس توی سی شارپ اگه async کد بزنیم، میتونیم یه برنامه ی multi thread و asynchronous داشته باشیم و اگه async نزنیم یه برنامه ی multi thread معمولی داریم.
✅توی دارت کدهای بعد از await توی همون isolate ای اجرا میشن که کدهای قبل await اجرا میشدن. ولی توی سی شارپ ممکنه که کدهای قبل و بعد از await توی دو ترد مختلف اجرا بشن.
✅پس هر دو زبان با توجه به async بودن، بهینه عمل میکنن(البته به شرطی که ما کار رو خراب نکنیم). در مقابل زبان سی شارپ با توجه به مولتی ترد بودن میتونه از حداکثر ظرفیت CPU استفاده کنه. ولی در عین حال همین مولتی ترد بودن چالش هایی رو به همراه داره که یک برنامه ی single thread باهاشون روبرو نمیشه. مثل shared memory که بین ترد ها اتفاق میوفته و همیشه باید حواسمون باشه که برنامه thread safe باشه. مخصوصن در محیط هایی مثل اپ های بکند که امکان همزمانی بشدت بالا میره. و چالش های دیگه ... .
❓کدوم یک بهترن؟
✅همه چیز trade off عه. بهتر و بدتری وجود نداره.
سی شارپ سعی میکنه از بیشترین توان CPU استفاده کنه، ولی این در مقابل تحمیل یه سری هزینه ها اتفاق میوفته.
باید بین این دو trade off بشه.
🔥توی هر دو زبان امکان این که خود دولوپر worker thread هایی رو اجرا کنه وجود داره که توی دارت با توجه به share نشدن memory بین ترد ها، بهشون isolate میگن.
سی شارپ علاوه بر این ترد هایی که خود دولوپر ممکنه ران کنه، یک thread pool داره و برای پردازش های خودش از ترد های این thread pool استفاده میکنه. دولوپر برای پردازش های خاص خودش میتونه یه ترد از thread pool قرض بگیره و یا یه ترد اختصاصی برای خودش بسازه که هر کدوم trade off های خوذش داره (قرض گرفتن یا اختصاصی ساختن). در مقابل زبات دارت تا وقتی که خودمون isolate ای نسازیم، single thread هست. از طرفی عمر isolate هایی که خودمون میسازیم هم کوتاهه و در کل میتونیم دارت رو single thread بدونیم. البته تاکید میکنم که به خاطر async بودنش و بلاک نشدنش موقع درخواست های IO، از محیط های multi thread و غیر async میتونه بهینه تر هم عمل کنه یا دست کم پا به پاشون حرکت کنه.
@purecoder_ir
🔥7👍4
❓کجا از async programming استفاده کنیم و کجا یه ترد دیگه ران کنیم؟
✅بستگی به تسکی داره که قراره انجام بشه.
تسک ها به دو دسته ی کلی تقسیم میشن:
☑️IO Bound
☑️CPU Bound
🔥دسته ی اول یعنی IO Bound اون هایی هستن که CPU خیلی توی سرعتشون تاثیر نداره و هرچقدر هم CPU قوی باشه توی سرعتشون تاثیر نمیگذاره. مثل network call یا خوندن یک فایل یا query زدن به دیتابیس و کارهایی از این دست.
IO = Input Output
input output operations
🔥دسته دوم یعنی CPU Bound تسک هایی هستن که CPU نقش تعیین کننده توی اون ها داره. مثل compress کردن یه ویدیو و یا حتا عملیات ساده ی جمع کردن دو تا عدد باهم.
✅اگه تسکی که داشتیم IO bound بود, مثل خوندن فایل, باید از async programming بهره ببریم تا در طول مدتی که اون درخواست درحال پردازش هست, ترد خودمون رو درگیر و بلاک نکنیم.
✅اگه تسکی که داشتیم, CPU Bound بود و البته سنگین بود, مثل compress کردن یه ویدیو, باید یه ترد دیگه ران کنیم و اونو توی اون ترد اجرا کنیم تا باز هم ترد اصلی خودمون رو درگیر اون پردازش سنگین نکنیم و از حداکثر توان CPU که به احتمال زیاد Multi Core هم هست استفاده کنیم.
🔥پس IO Bound ها معمولن با async await هندل میشن و CPU Bound های سنگین با ساختن ترد جدید.
@purecoder_ir
✅بستگی به تسکی داره که قراره انجام بشه.
تسک ها به دو دسته ی کلی تقسیم میشن:
☑️IO Bound
☑️CPU Bound
🔥دسته ی اول یعنی IO Bound اون هایی هستن که CPU خیلی توی سرعتشون تاثیر نداره و هرچقدر هم CPU قوی باشه توی سرعتشون تاثیر نمیگذاره. مثل network call یا خوندن یک فایل یا query زدن به دیتابیس و کارهایی از این دست.
IO = Input Output
input output operations
🔥دسته دوم یعنی CPU Bound تسک هایی هستن که CPU نقش تعیین کننده توی اون ها داره. مثل compress کردن یه ویدیو و یا حتا عملیات ساده ی جمع کردن دو تا عدد باهم.
✅اگه تسکی که داشتیم IO bound بود, مثل خوندن فایل, باید از async programming بهره ببریم تا در طول مدتی که اون درخواست درحال پردازش هست, ترد خودمون رو درگیر و بلاک نکنیم.
✅اگه تسکی که داشتیم, CPU Bound بود و البته سنگین بود, مثل compress کردن یه ویدیو, باید یه ترد دیگه ران کنیم و اونو توی اون ترد اجرا کنیم تا باز هم ترد اصلی خودمون رو درگیر اون پردازش سنگین نکنیم و از حداکثر توان CPU که به احتمال زیاد Multi Core هم هست استفاده کنیم.
🔥پس IO Bound ها معمولن با async await هندل میشن و CPU Bound های سنگین با ساختن ترد جدید.
@purecoder_ir
🔥7👍2
یکی از بزرگترین چالش های برنامه نویسی اینه که توی جاوااسکریپت this دقیقن به چی اشاره میکنه؟😂😂😂
🤣6