Forwarded from Fluttery's Journey
2⃣فصل دوم: Dart UI
🔥خب dart ui یه library خیلی low level عه که فریمورک فلاتر رو به انجین متصل میکنه.
✅توی این فصل با این المان های Low Level از جمله Engine Layer ها آشنا میشیم.
✅با مفهوم Frame و نحوه ی schedule کردن Frame اشنا میشیم و API های مختلف Platform Dispatcher رو هم بررسی میکنیم.
✅بدون استفاده از هیچ ویجتی و با low-level ترین API هایی که dart ui در اختیارمون میگذاره یه دونه UI و یه دونه Animation ساده میسازیم تا با مفاهیم از پایه اشنا بشیم.
✅با Canvas اشنا میشیم و به ویژه مفاهیم save و restore کردن رو توی canvas یاد میگیریم.
🔥مفاهیم این فصل پایه ای برای ادامه دوره ایجاد میکنن و به ویژه موقع کار با Render Tree و Layer Tree و انیمیشن ها توی فصل های بعدی، کاربردشون رو به صورت عملی میبینیم و درک میکنیم.
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
🔥خب dart ui یه library خیلی low level عه که فریمورک فلاتر رو به انجین متصل میکنه.
✅توی این فصل با این المان های Low Level از جمله Engine Layer ها آشنا میشیم.
✅با مفهوم Frame و نحوه ی schedule کردن Frame اشنا میشیم و API های مختلف Platform Dispatcher رو هم بررسی میکنیم.
✅بدون استفاده از هیچ ویجتی و با low-level ترین API هایی که dart ui در اختیارمون میگذاره یه دونه UI و یه دونه Animation ساده میسازیم تا با مفاهیم از پایه اشنا بشیم.
✅با Canvas اشنا میشیم و به ویژه مفاهیم save و restore کردن رو توی canvas یاد میگیریم.
🔥مفاهیم این فصل پایه ای برای ادامه دوره ایجاد میکنن و به ویژه موقع کار با Render Tree و Layer Tree و انیمیشن ها توی فصل های بعدی، کاربردشون رو به صورت عملی میبینیم و درک میکنیم.
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
@fluttery_journey
@purecoder_ir
❤5👌2
Forwarded from Fluttery's Journey
3⃣فصل سوم
✅توی این فصل با مفهوم Widget و Element و Render Object اشنا میشیم. البته اینجا خیلی ساده با این مفاهیم آشنا میشیم و توی فصل های اینده به طور دقیق Element و Render Object رو بررسی میکنیم.
✅تناظر بین ویجت ها، المنت ها و رندر ابجکت ها رو بررسی میکنیم و میبینیم که ایا به ازای هر ویجت توی widget tree یک المنت توی element tree و یک رندر ابجکت توی render tree داریم یا نه؟
✅ماهیت Value Object بودن ویجت ها رو بررسی میکنیم.
✅با Build Context و واقعیت پشتش اشنا میشیم.
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
✅توی این فصل با مفهوم Widget و Element و Render Object اشنا میشیم. البته اینجا خیلی ساده با این مفاهیم آشنا میشیم و توی فصل های اینده به طور دقیق Element و Render Object رو بررسی میکنیم.
✅تناظر بین ویجت ها، المنت ها و رندر ابجکت ها رو بررسی میکنیم و میبینیم که ایا به ازای هر ویجت توی widget tree یک المنت توی element tree و یک رندر ابجکت توی render tree داریم یا نه؟
✅ماهیت Value Object بودن ویجت ها رو بررسی میکنیم.
✅با Build Context و واقعیت پشتش اشنا میشیم.
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
@fluttery_journey
@purecoder_ir
❤6
Forwarded from Fluttery's Journey
4⃣و5⃣: فصل های چهارم و پنجم
✅این ۲ فصل به طور کامل به Elment Tree اختصاص داره.
✅با Widget ها و Element های مختلف کار میکنیم.
✔️StatelessWidget/Element
✔️StatefulWidget/Element
✔️InheritedWidget/Element
✔️RenderObjectWidget/Element
✅فاز build که فاز سوم یک فریم هست رو به طور کامل بررسی میکینم.
✅با setState و حقیقت پشتش اشنا میشیم.
✅با استیت های مختلفی که یک المنت درش قرار میگیره
✔️ initial ✔️active ✔️inactive ✔️defunct
و همچنین اکشن های مختلفی که باعث تغییر استت المنت میشه
✔️ create ✔️mount ✔️deactivate ✔️activate ✔️unmount
به طور کامل اشنا میشیم.
😳پس با یک Finite State Machine هم طرفیم که توی عکس بالا میبینیم.
✅همچنین ساخته شدن رندر تری توی فاز بیلد رو میبینیم.
✅و کلی نکته ی جذاب دیگه
6⃣فصل ششم: key ها
✅فصل ششم به Key ها اختصاص داره و انواع Key ها و ویژگی هاشون رو بررسی میکنیم.
✅با Local Key ها، ویژگی ها و کاربردشون اشنا میشیم.
✅همچنین Global Key ها رو هم به طور کامل بررسی میکنیم.
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
✅این ۲ فصل به طور کامل به Elment Tree اختصاص داره.
✅با Widget ها و Element های مختلف کار میکنیم.
✔️StatelessWidget/Element
✔️StatefulWidget/Element
✔️InheritedWidget/Element
✔️RenderObjectWidget/Element
✅فاز build که فاز سوم یک فریم هست رو به طور کامل بررسی میکینم.
✅با setState و حقیقت پشتش اشنا میشیم.
✅با استیت های مختلفی که یک المنت درش قرار میگیره
✔️ initial ✔️active ✔️inactive ✔️defunct
و همچنین اکشن های مختلفی که باعث تغییر استت المنت میشه
✔️ create ✔️mount ✔️deactivate ✔️activate ✔️unmount
به طور کامل اشنا میشیم.
😳پس با یک Finite State Machine هم طرفیم که توی عکس بالا میبینیم.
✅همچنین ساخته شدن رندر تری توی فاز بیلد رو میبینیم.
✅و کلی نکته ی جذاب دیگه
6⃣فصل ششم: key ها
✅فصل ششم به Key ها اختصاص داره و انواع Key ها و ویژگی هاشون رو بررسی میکنیم.
✅با Local Key ها، ویژگی ها و کاربردشون اشنا میشیم.
✅همچنین Global Key ها رو هم به طور کامل بررسی میکنیم.
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
@fluttery_journey
@purecoder_ir
❤5
Forwarded from Fluttery's Journey
🔥پارت دوم دوره شامل ۴ فصل میشه و از فصل های ۸ تا ۱۱ رو در بر میگیره:
https://purecoder.ir/course/fluttery-journey-2/
🔥این پارت به طور کامل به بحث Rendering اختصاص داره.
✅توی فصل های قبلی با فاز Build اشنا شدیم و توی این پارت با ۳ فاز دیگه که یک فریم فلاتری طی میکنه به طور کامل اشنا میشیم:
✔️Layout
✔️Paint
✔️Composite
✅با Render Object ها و ویژگی هاشون اشنا میشیم.
✅نکات مهمی رو در مورد Constraints میگیم.
✅فاز Layout توی Render Tree رو به طور کامل شرح میدیم و مفهوم Re-layout Boundary رو به خوبی درک میکنیم و بررسی میکنیم که Render Object ها در چه شرایطی به Re-layout Boundary تبدیل میشن.
✅فاز Paint توی Render Tree رو هم به طور کامل بررسی میکنیم و مفاهیم زیر رو به طور کامل بررسی میکنیم:
✔️Repaint Boundar
✔️Compositing Bits
🔥فقط ۷ قسمت به Repaint Boundary اختصاص داره. اگه هست جای دیگه ایران نه کل جهان که اینجوری توضیح داده باشه....
✅فاز Composite رو بررسی میکنیم و با Layer Tree و وظایفش به طور کامل اشنا میشیم.
✅با انواع Layer ها و ویژگی هاشون اشنا میشیم:
✔️Picture Layer
✔️Offset Layer ✔️Transform Layer
✔️Clip Layers ✔️BackdropFilter Layer ✔️...
✅کاربرد Engine Layer ها، Picture و Canvas رو که توی فصل ۲ باهاشون اشنا شده بودیم رو از نزدیک میبینیم.
✅با Painting Context اشنا میشیم و یاد میگیرم که چطوری باهاش کار کنیم.
✅با Pipeline Owner و نحوه ی مدیریت فاز های مختلف مربوط به rendering اشنا میشیم.
✅نحوه ی توسعه ی یک Render Object اختصاصی رو بررسی میکنیم.
✅و کلی نکته ی جذاب دیگه...
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
https://purecoder.ir/course/fluttery-journey-2/
🔥این پارت به طور کامل به بحث Rendering اختصاص داره.
✅توی فصل های قبلی با فاز Build اشنا شدیم و توی این پارت با ۳ فاز دیگه که یک فریم فلاتری طی میکنه به طور کامل اشنا میشیم:
✔️Layout
✔️Paint
✔️Composite
✅با Render Object ها و ویژگی هاشون اشنا میشیم.
✅نکات مهمی رو در مورد Constraints میگیم.
✅فاز Layout توی Render Tree رو به طور کامل شرح میدیم و مفهوم Re-layout Boundary رو به خوبی درک میکنیم و بررسی میکنیم که Render Object ها در چه شرایطی به Re-layout Boundary تبدیل میشن.
✅فاز Paint توی Render Tree رو هم به طور کامل بررسی میکنیم و مفاهیم زیر رو به طور کامل بررسی میکنیم:
✔️Repaint Boundar
✔️Compositing Bits
🔥فقط ۷ قسمت به Repaint Boundary اختصاص داره. اگه هست جای دیگه ایران نه کل جهان که اینجوری توضیح داده باشه....
✅فاز Composite رو بررسی میکنیم و با Layer Tree و وظایفش به طور کامل اشنا میشیم.
✅با انواع Layer ها و ویژگی هاشون اشنا میشیم:
✔️Picture Layer
✔️Offset Layer ✔️Transform Layer
✔️Clip Layers ✔️BackdropFilter Layer ✔️...
✅کاربرد Engine Layer ها، Picture و Canvas رو که توی فصل ۲ باهاشون اشنا شده بودیم رو از نزدیک میبینیم.
✅با Painting Context اشنا میشیم و یاد میگیرم که چطوری باهاش کار کنیم.
✅با Pipeline Owner و نحوه ی مدیریت فاز های مختلف مربوط به rendering اشنا میشیم.
✅نحوه ی توسعه ی یک Render Object اختصاصی رو بررسی میکنیم.
✅و کلی نکته ی جذاب دیگه...
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
@fluttery_journey
@purecoder_ir
🔥3
کدام یک از موارد زیر هم ارز Hollywood Principle است؟
این اصل میگه: Don't call us, we'll call you.
این اصل میگه: Don't call us, we'll call you.
Anonymous Quiz
43%
Inversion of Control
16%
Dependency Inversion
13%
Interface Segregation
27%
نمیدونم، دیدن جواب
🔥3
Forwarded from Fluttery's Journey
🔥پارت سوم دوره ی فلاتر شامل ۵ فصله که روی توسعه ی Render Box اختصاصی تمرکز می کنیم و هر چی نکته هست رو میگیم. همچنین توی دو فصل اخر در مورد Binding ها و Animation ها صحبت میکنیم:
https://purecoder.ir/course/flutterys-journey-3/
2⃣1⃣فصل دوازدهم
🔥این فصل به نحوه ی توسعه ی یک Render Box اختصاصی میپردازیم و نکته ای رو نگفته باقی نمیگذاریم.
✅در مورد Layout Protocol میگیم و مفاهیم Wet Layout و Dry Layout رو خیلی خوب بررسی و نحوه ی پیاده سازیش رو میگیم.
✅با Children Protocol و نحوه ی مدل کردن و مدیریت بچه های یه Render Box اشنا میشیم.
✅مفهوم Baseline رو به طور کامل شرح میدیم و میگیم که چطوری موقع ساخت یه Render Box اختصاصی باید به حسابش برسیم.
✅همچنین بحث مفصلی هم در مورد مفهوم Intrinsic Dimensions و پیاده سازیشون داریم.
✅در مورد نحوه ی نوشتن کانستراکتور و پراپرتی های یه Render Box و نکاتی که باید رعایت کنیم هم صحبت میکنیم.
🔥اما کار به اینجا ختم نمیشه و پا رو فراتر میگذاریم و در مورد ۲ مدل از Render Box های معروف مفصل صحبت میکنیم و ویژگی هاشون رو میگیم.
✔️Proxy Box
✔️Shifted Box
نحوه ی توسعه ی این ۲ مدل Box رو هم بررسی میکنیم.
✅و نکته های تر و تمیز دیگه که توی این فصل که با ۲۶ قسمت طولانی ترین فصل دوره هست، میگیم😍
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
https://purecoder.ir/course/flutterys-journey-3/
2⃣1⃣فصل دوازدهم
🔥این فصل به نحوه ی توسعه ی یک Render Box اختصاصی میپردازیم و نکته ای رو نگفته باقی نمیگذاریم.
✅در مورد Layout Protocol میگیم و مفاهیم Wet Layout و Dry Layout رو خیلی خوب بررسی و نحوه ی پیاده سازیش رو میگیم.
✅با Children Protocol و نحوه ی مدل کردن و مدیریت بچه های یه Render Box اشنا میشیم.
✅مفهوم Baseline رو به طور کامل شرح میدیم و میگیم که چطوری موقع ساخت یه Render Box اختصاصی باید به حسابش برسیم.
✅همچنین بحث مفصلی هم در مورد مفهوم Intrinsic Dimensions و پیاده سازیشون داریم.
✅در مورد نحوه ی نوشتن کانستراکتور و پراپرتی های یه Render Box و نکاتی که باید رعایت کنیم هم صحبت میکنیم.
🔥اما کار به اینجا ختم نمیشه و پا رو فراتر میگذاریم و در مورد ۲ مدل از Render Box های معروف مفصل صحبت میکنیم و ویژگی هاشون رو میگیم.
✔️Proxy Box
✔️Shifted Box
نحوه ی توسعه ی این ۲ مدل Box رو هم بررسی میکنیم.
✅و نکته های تر و تمیز دیگه که توی این فصل که با ۲۶ قسمت طولانی ترین فصل دوره هست، میگیم😍
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
@fluttery_journey
@purecoder_ir
❤4
Forwarded from Fluttery's Journey
🔥خب توی فصل ۱۲ هر نکته ای که برای توسعه ی یه دونه Render Box اختصاصی لازم بود رو گفتیم. ولی هر چقدر هم نکته بگیم، تا کد نزنیم و مثال نبینیم یه جای کار میلنگه.
🔥از این رو توی فصل های ۱۳ و ۱۴ وارد گود میشیم و چندین Render Box رو از صفر توسعه میدیم. توی این دو فصل ویجت های زیر و Render Box شون رو با هم توسعه میدیم:
✅ConstrainedBox / SizedBox
✅Padding
✅Align / Center
✅OverflowBox
✅ClipRect
✅Opacity
✅Stack
💥روند کار به این شکل نیست که بریم و سورس کد فلاتر رو نگاه کنیم. بلکه خدمون سناریو میچینیم و از صفر شروع به توسعه میکنیم. وسط کار به چالش میخوریم. چالش ها رو حل میکنیم و جلو میریم.
🔥با این مثال ها روند دقیق تحلیل نیازمندی ها و توسعه ی یه Render Box رو یاد میگیری و مثل اب خوردن انجامش میدی.
💥ویجت ها کاملن هوشمندانه انتخاب شدن تا توی هر کدوم نکته یا نکات خاصی رو یاد بگیریم و مدل های مختلفی از Render Box ها رو شامل میشن.
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
🔥از این رو توی فصل های ۱۳ و ۱۴ وارد گود میشیم و چندین Render Box رو از صفر توسعه میدیم. توی این دو فصل ویجت های زیر و Render Box شون رو با هم توسعه میدیم:
✅ConstrainedBox / SizedBox
✅Padding
✅Align / Center
✅OverflowBox
✅ClipRect
✅Opacity
✅Stack
💥روند کار به این شکل نیست که بریم و سورس کد فلاتر رو نگاه کنیم. بلکه خدمون سناریو میچینیم و از صفر شروع به توسعه میکنیم. وسط کار به چالش میخوریم. چالش ها رو حل میکنیم و جلو میریم.
🔥با این مثال ها روند دقیق تحلیل نیازمندی ها و توسعه ی یه Render Box رو یاد میگیری و مثل اب خوردن انجامش میدی.
💥ویجت ها کاملن هوشمندانه انتخاب شدن تا توی هر کدوم نکته یا نکات خاصی رو یاد بگیریم و مدل های مختلفی از Render Box ها رو شامل میشن.
🆔برای مشاوره یا ثبت نام در دوره به ایدی زیر پیام بدید👇
@PureCoder_support
@fluttery_journey
@purecoder_ir
❤6
رضا رشیدپور، مجری، آموزش هوش مصنوعی گذاشته.😂
نفری ۶۰۰ تومن هم میگیره که بهت یاد بده چطوری از chat gpt استفاده کنی.😭
سوراخ دعا...
نفری ۶۰۰ تومن هم میگیره که بهت یاد بده چطوری از chat gpt استفاده کنی.😭
سوراخ دعا...
🤣25😱1
❌کد کپه ای
کلین کردن و ریفکتور کردن کد به صورت توامان با کدنویسی و پیوسته انجام میشه.
اینجوری نیست که یه کپه کد بنویسیم و بعد شروع کنیم به ریفکتور و کلین کردنش.
هیچ موقع توی این تله نیوفتید.
کد زدن و ریفکتور کرذنش، دو فرایند جدا از هم نیستن. کاملن به هم پیوسته اند. یه کوچولو کد میزنی، ریفکتور و بهترش میکنی و دوباره یه کوچولوی دیگه. وگرنه اون کد کپه ای هیچ موقع کلین نمیشه و هی کپه تر میشه و بعد از یه مدتی کار کردنش هم قسطی میشه.
اتفاقن کمال گرایی باعث میشه که ادم صفر و صدی بشه و اون که یهو صفر بشی و بگی فقط یه چیزی مینویسم که بره و یهو صد بشی و بخوای از اول ایده ال بزنی، میشه کمال گرایی. حالت طبیعی یه کوچولو کد زدن و ریفکتور کردنش هست.
پ.ن: اصطلاح کد کپه ای هم اختراع خودم بود که میتونیم به واژگان کدنویسی اضافش کنیم😂😂😝😜
@purecoder_ir
کلین کردن و ریفکتور کردن کد به صورت توامان با کدنویسی و پیوسته انجام میشه.
اینجوری نیست که یه کپه کد بنویسیم و بعد شروع کنیم به ریفکتور و کلین کردنش.
هیچ موقع توی این تله نیوفتید.
کد زدن و ریفکتور کرذنش، دو فرایند جدا از هم نیستن. کاملن به هم پیوسته اند. یه کوچولو کد میزنی، ریفکتور و بهترش میکنی و دوباره یه کوچولوی دیگه. وگرنه اون کد کپه ای هیچ موقع کلین نمیشه و هی کپه تر میشه و بعد از یه مدتی کار کردنش هم قسطی میشه.
اتفاقن کمال گرایی باعث میشه که ادم صفر و صدی بشه و اون که یهو صفر بشی و بگی فقط یه چیزی مینویسم که بره و یهو صد بشی و بخوای از اول ایده ال بزنی، میشه کمال گرایی. حالت طبیعی یه کوچولو کد زدن و ریفکتور کردنش هست.
پ.ن: اصطلاح کد کپه ای هم اختراع خودم بود که میتونیم به واژگان کدنویسی اضافش کنیم😂😂😝😜
@purecoder_ir
👍18🔥2❤1🤣1
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
60%
سینگل ترد و asynchronous
40%
مولتی ترد و غیر 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👍3
❓کجا از 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
🔥6👍1