❓کجا از 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
🔥9👍3
یکی از بزرگترین چالش های برنامه نویسی اینه که توی جاوااسکریپت this دقیقن به چی اشاره میکنه؟😂😂😂
🤣10👍1
This media is not supported in your browser
VIEW IN TELEGRAM
سیاوش شهشهانی، استاد ریاضی دانشگاه شریف:
واقعن چقدر مهارت کلیدی برای یه توسعه دهنده ی نرم افزاره!
انشا بیشتر از ریاضی به تقویت استدلال کمک میکنه!
واقعن چقدر مهارت کلیدی برای یه توسعه دهنده ی نرم افزاره!
@purecoder_ir
❤10
Pure Coder
سیاوش شهشهانی، استاد ریاضی دانشگاه شریف: انشا بیشتر از ریاضی به تقویت استدلال کمک میکنه! واقعن چقدر مهارت کلیدی برای یه توسعه دهنده ی نرم افزاره! @purecoder_ir
مهارت انشا نوشتن به اون معنا که توی ذهنمونه (انشا های مدرسه) برای توسعه دهنده ی نرم افزار ضروری نیست.
مثل یک نویسنده که خودش رو جای شخصیت های مختلف داستان قرار میده و قصه رو از دید اونها روایت میکنه، یک توسعه دهنده وقتی میتونه استدلال قوی داشته باشه که در درجه ی اول تعامل خوبی با سایر ذینفعان پروژه داشته باشه و در درجه ی دوم بتونه از زاویه ی نگاه اونها جهان رو ببینه و داستان نرم افزار رو روایت کنه.
یک توسعه دهنده هرچقدر هم که مهارت های فنی بالایی داشته باشه و هر چقدر هم که به ابزار های مختلف مسلط باشه، تا وقتی که توی کسب و کار حل نشه و دنیا رو از دید صاحبان کسب و کار تماشا نکنه، نمیتونه نرم افزار خوبی تولید کنه.
مثل یک نویسنده که خودش رو جای شخصیت های مختلف داستان قرار میده و قصه رو از دید اونها روایت میکنه، یک توسعه دهنده وقتی میتونه استدلال قوی داشته باشه که در درجه ی اول تعامل خوبی با سایر ذینفعان پروژه داشته باشه و در درجه ی دوم بتونه از زاویه ی نگاه اونها جهان رو ببینه و داستان نرم افزار رو روایت کنه.
یک توسعه دهنده هرچقدر هم که مهارت های فنی بالایی داشته باشه و هر چقدر هم که به ابزار های مختلف مسلط باشه، تا وقتی که توی کسب و کار حل نشه و دنیا رو از دید صاحبان کسب و کار تماشا نکنه، نمیتونه نرم افزار خوبی تولید کنه.
@purecoder_ir
🔥10
Forwarded from Vania Dart Framework
آموزش ساخت سیستم عضویت ، ورود ، تایید ایمیل با ارسال ایمیل به وسیله فریم ورک وانیا
میتونید ویدیو رو توی یوتیوب مشاهده کنید
https://www.youtube.com/watch?v=8_K-1Cc4ufE
میتونید ویدیو رو توی یوتیوب مشاهده کنید
https://www.youtube.com/watch?v=8_K-1Cc4ufE
YouTube
User Authentication System in Vania (in Persian)
In this video, you’ll learn how to build a complete user authentication system in Vania, including registration, login, and email verification — all explained step by step in Persian (Farsi).
This tutorial covers:
How to set up user registration and login…
This tutorial covers:
How to set up user registration and login…
❤2
🔥Async Queue
✅همون طور که میدونیم صف ها یا Queue ها به صورت FIFO یعنی First in First out کار میکنن و دو متد معروف دارن:
☑️Enqueue
☑️Dequeue
با متد اول یک ایتم رو به ته صف اضافه میکنیم و با متد دوم یک ایتم رو از سر صف یا queue بیرون میکشیم و پردازش میکنیم.
✅کد بالا یک Async Queue هست.
به این صورت که متد Dequeue به حالت async در اومده.
await queue.Dequeue();
در نتیجه اگه ایتمی توی queue باشه, بلافاصله اون رو ریترن میکنه و اگه نباشه, هر موقع که یه ایتم جدید به queue اضافه شد, اون رو بهمون تحویل میده.
🔥به این صورت ترد های مختلف میتونن از این queue استفاده کنن و متد Dequeue رو کال کنن و اون رو await کنن و هر موقع که ایتمی به queue اضافه شد, اون ترد ها به نوبت در صف پردازش قرار میگیرن.
پ.ن: کد به زبان سی شارپ نوشته شده.
@purecoder_ir
✅همون طور که میدونیم صف ها یا Queue ها به صورت FIFO یعنی First in First out کار میکنن و دو متد معروف دارن:
☑️Enqueue
☑️Dequeue
با متد اول یک ایتم رو به ته صف اضافه میکنیم و با متد دوم یک ایتم رو از سر صف یا queue بیرون میکشیم و پردازش میکنیم.
✅کد بالا یک Async Queue هست.
به این صورت که متد Dequeue به حالت async در اومده.
await queue.Dequeue();
در نتیجه اگه ایتمی توی queue باشه, بلافاصله اون رو ریترن میکنه و اگه نباشه, هر موقع که یه ایتم جدید به queue اضافه شد, اون رو بهمون تحویل میده.
🔥به این صورت ترد های مختلف میتونن از این queue استفاده کنن و متد Dequeue رو کال کنن و اون رو await کنن و هر موقع که ایتمی به queue اضافه شد, اون ترد ها به نوبت در صف پردازش قرار میگیرن.
پ.ن: کد به زبان سی شارپ نوشته شده.
@purecoder_ir
🔥4❤2
معماری هایی مثل clean، هگزاگونال، onion در چه مواردی نظر صریح میدن و قانون وضع میکنن؟(میتونی چند مورد رو انتخاب کنی)
Anonymous Poll
63%
Seperation of Concern
27%
Layer Boundaries
27%
تعریف دقیق لایه ها(مثلن اجبارت میکنن که حتمن ۴ لایه داشته باشی )
27%
اجبار به استفاده از پترن های خاص در هر لایه (مثلن ریپوزیتوری )
47%
مدیریت دپندنسی بین لایه ها
🔥5❤1
ایا معماری هایی مثل کلین، هگزاگونال یا onion توانایی سوییچ کردن و تغییر دیتابیس مثل اب خوردن رو بهمون میدن؟ (برای مثال تغییر MySQL به MongoDb) (نظر خودت رو بگو، کوییز نیست!)(فرض بر پیاده سازی درست معماری هست)
Anonymous Poll
58%
آره
42%
نه
🔥4❤1
به طور کلی دامنه ی تغییرات توی کدوم یک از لایه های زیر بیشتره؟(کوییز نیست، نظر و تحلیل خودت رو بگو)
Anonymous Poll
31%
Domain
49%
Application Service (Usecaee)
20%
Infrastructure (Data)
🔥3