Golem Course – Telegram
Golem Course
2.93K subscribers
47 photos
43 videos
40 files
144 links
Alireza Aghamohammadi, Ph.D.

https://youtube.com/@GolemCourse
Download Telegram
07-proxies.pdf
257.2 KB
پراکسی در طراحی سیستم‌ها کاربرد زیادی دارند. توزان کننده بار (load balancer) که در جلسه‌های گذشته صحبت کردیم در واقع پراکسی است.

#07_proxies
#System_Design
👍4
08-cdn.pdf
449.6 KB
کاربران سیستم ما لزوماً از یک منطقه جغرافیایی نیستند. ممکن است برخی از آن‌ها در ایران ساکن باشند و برخی در قاره آمریکا. اگر قرار باشد همه درخواست‌ها به یک مکان ارسال شود، زمان پاسخ کاربران بسته به محل سکونت آن‌ها متفاوت خواهد بود. برای افزایش سرعت و کارایی سیستم می‌توان از ایده شبکه توزیع محتوا (Conent Delivery Network ) بهره برد.
#08_CDN
#System_Design
👍2
09-sharding.pdf
522.5 KB
سناریویی را در نظر بگیرید که حجم داده آنقدر زیاد شده است که امکان قرار دادن آن در یک سرور ذخیره‌سازی (پایگاه داده) امکان پذیر نیست. حتی ممکن است بهبود توان و فضای سرور ذخیره‌سازی هم مقرون به صرفه نباشد زیرا پاسخ به درخواست وارده باید کل پایگاه داده را بررسی کند.
افراز بندی پایگاه داده که به آن شارد کردن (sharding) نیز می‌گویند، یک راه معروف برای حل مشکل فوق است.

#09_Sharding
#System_Design
👍3
در این جلسه یک rate limiter طراحی می‌کنیم. هدف از rate limiter ها تعریف محدودیت بر روی میزان تعداد درخواست بر روی api ها به ازای کاربران است. مثلاً می‌ خواهیم در یک شبکه اجتماعی هر کاربر حداکثر بتواند پنجاه در خواست دوستی در روز ارسال کند. استفاده از rate limiter ها به مدیریت هزینه و بهره‌وری منابع سیستم کمک می‌کند و مانع از حمله denial of service می‌شود.


https://youtu.be/fVCo97rgv9s
👍31
سال گذشته (۱۴۰۱) چند کتاب خواندید؟ (به غیر از موارد اجباری دانشگاه و مدرسه)
Anonymous Poll
75%
کمتر از پنج
14%
بین پنج تا ده
5%
بین یازده تا بیست
5%
بیشتر از بیست
👍5
consistent hashing
در توازن کننده‌های بار
برای تعیین سروری که درخواست باید به آن ارسال شود استفاده می‌شود. علاوه بر آن در پایگاه داده‌های غیر متمرکز برای ذخیره و بازیابی داده در سرور مربوطه استفاده می‌شود. این جلسه به طراحی این نوع سیستم می‌پردازیم.

https://youtu.be/6BtKpkQT1bw
1👍1
Golem Course
سال گذشته (۱۴۰۱) چند کتاب خواندید؟ (به غیر از موارد اجباری دانشگاه و مدرسه)
اگر کتاب خواندن را دوست دارید، در گودریدز هم فعال هستم (لینک). خوشحال می‌شوم آنجا نیز با هم در ارتباط باشیم. فقط در ارسال درخواست لطفاً بگویید از کانال تلگرام آمدید تا اکسپت کنم.
3👍3
درخت مرکل در طراحی سیستم‌ها کاربرد زیادی دارد. سه مثال معروف که از درخت مرکل استفاده می‌کنند به شرح زیر است:

کاربرد اول. تعدادی فایل در نظر بگیرید که می‌خواهیم تغییرات در این فایل‌ها را به سرعت تشخیص دهیم. درست مانند سیستم گیت.

کاربرد دوم. پایگاه داده غیرمتمرکز داده‌ها را در سرورهای مختلف ذخیره می‌کند. تکرار داده (فایل‌های بک‌آپ) باید با یکدیگر همگام باشند. اگر یکی از داده‌های تکرار تغییر کرد به جای آن که کل داده جابجا شود، فقط بخش تغییریافته می‌خواهیم بین سرورها منتقل شود.

کاربرد سوم. فایلی از تورنت دانلود می‌کنیم. به خاطر اختلال شبکه بخشی‌هایی از فایل به درستی دانلود نشده است. به جای آن که کل فایل دوباره دانلود شود، می‌خواهیم تنها بخش‌های خراب دوباره دانلود شود.

https://youtu.be/nWBeOITLqss
👍2
توییتر را در نظر بگیرید. افراد از بخش‌های مختلف دنیا در هر لحظه توییت می‌کنند. هر توییت باید یک شناسه یکتا داشته باشد. به خاطر مسائل کارایی و این که افراد در نواحی مختلف دنیا پخش هستند، این شناسه‌ها باید به صورت غیرمتمرکز تولید شود. در این ویدیو این مسئله و راه حل آن را بررسی می‌کنیم.

https://youtu.be/KhxzznOiHdA
👍6
چگونه سیستم کوتاه‌کننده آدرس URL طراحی کنیم؟

سرویس‌هایی مانند TinyURL یا Bitly قابلیت تبدیل آدرس بلند URL را به آدرس کوتاه دارند. برای آنکه شهودی نسبت به ابعاد بزرگ تعداد درخواست‌های کاربران این سرویس‌ها داشته باشید. آماری از سایت شرکت Bitly نقل می‌کنم.
این شرکت به طور متوسط در هر ماه حدود ۳۰۰ میلیون درخواست ایجاد آدرس و حدود ۱۰ میلیارد درخواست خواندن دارد. در این ویدیو با ایده طراحی چنین سیستمی آشنا می‌شویم.

https://youtu.be/Roo30rewgyE
👍6
Forwarded from Golem Course
کانال تلگرام علیرضا آقامحمدی
کانال یوتیوب علیرضا آقامحمدی

💰 می‌خواهید وارد بازار کار شوید؟
📕 می‌خواهید دانش و مهارت ضروری صنعت کامپیوتر را بلد باشید؟
🧠 عاشق یادگیری هستید؟

اگر پاسخ شما به سه سوال بالا منفی است، این کانال مناسب شما نیست!

لینک دسترسی به تمام ویدیو‌ها در کانال یوتیوب:

🐳 مسیر یادگیری دوآپس

🎯 طراحی سیستم‌ها: (۲:۳۰ ساعت - در حال ضبط)


🎯 مدیریت سرور لینوکس: (۱:۳۰ ساعت - در حال ضبط)

🥉 مسیر یادگیری و تقویت زبان انگلیسی


========================
=========
🎯 آموزش زبان انگلیسی: (۳۰:۳۷ ساعت - به اتمام رسیده)

==================
🥈مسیر برنامه‌نویس شدن:

🎯 طراحی وب‌سایت - فرانت اند: (۵:۲۸ ساعت - در حال ضبط)

🎯 دوره آموزشی پایتون: (۱۸:۰۳ ساعت - در حال ضبط)

🎯 دوره آموزشی گیت: (۴:۰۶ ساعت - به اتمام رسیده)

🎯 دوره تست نرم‌افزار با پایتون: (۱:۲۰ ساعت - به اتمام رسیده)

🎯 آموزش کتابخانه پانداس: (۲:۲۶ ساعت - در حال ضبط)

==================

🥇 مسیر کار تیمی و ایجاد نرم‌افزار

🎯 دوره آموزشی اسکرام:
(۲:۳۰ ساعت - به اتمام رسیده)

🎯 دوره مهندسی نیازمندی‌ها: (۴:۳۲ ساعت - در حال ضبط)

🎯 دوره مدیریت پروژه: (۳:۱۶ ساعت - در حال ضبط)

==================
10🔥1💯1
بعد از مدت‌ها فرصتی دوباره پیش‌آمد تا ویدیویی در رابطه با آموزش برنامه‌نویسی پایتون ضبط کنم.

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

یکی از استانداردهای رایج در پروژه‌های پایتونی استفاده از پیکربندی‌هایی با قالب ini است. در این ویدیو ابتدا توضیحی درباره این استاندارد می‌دهم و سپس در برنامه‌ای می‌نویسیم که بتواند پارامترهای مورد نیازش را از فایل پیکربندی بخواند.

https://youtu.be/gkUpWXEfywQ
👍2
خزنده‌های وب (Web Crawlers) برای دانلود محتوای وب استفاده می‌شود.

کاربرد اصلی این نوع از سیستم‌ها را در موتورهای جست‌و‌جو می‌بینیم. موتورهای جست‌وجو برای رتبه‌بندی صفحات وب در ابتدا نیاز به استخراج آن‌ها دارند. کاربرد دیگر خزنده‌های وب یافتن موارد نقض‌کننده کپی‌رایت است. می‌توان صفحاتی از وب را پیدا کرد که بدون داشتن گواهی‌نامه معتبر محتوایی را استفاده می‌کنند.
خزنده‌های وب مقیاس‌پذیر می‌توانند میلیاردها صفحه را در بازه ماهانه از وب استخراج کنند. در این جلسه نحوه طراحی این گونه از سیستم‌ها را یاد می‌گیریم.

https://youtu.be/Et8RETiA_uo
👍31
یکی از مهارت‌های مورد نیاز در طراحی سیستم‌ها برآورد است. با یادگیری این مهارت می‌توانیم به سوالاتی نظیر زیر پاسخ دهیم:

نرخ درخواست نوشتن بر ثانیه چقدر است؟
نرخ درخواست خواندن بر ثانیه چقدر است؟
میزان پهنای باند شبکه مورد نیاز چقدر است؟
به چه میزان فضای ذخیره‌سازی احتیاج داریم؟

https://www.youtube.com/watch?v=YUjs-Fx2Q5s&ab_channel=GolemCourse
👍3
داده ساختار bloom filter برای بررسی وجود یک عنصر در لیست استفاده می‌شود. این داده‌ساختار به علت سرعت بالا و حجم کم در طراحی سیستم‌ها کاربردهای زیادی دارد:


کاربرد ۱: اگر عنصر در داده‌ساختار bloom filter موجود نبود سراغ حافظه کَش نرویم و مستقیماً از پایگاه‌داده اطلاعات را بخوانیم (کاهش cache miss)


کاربرد ۲: موتورهای جست‌وجو اگر آدرسی را پیش‌تر بررسی کرده‌اند، دوباره آن را بررسی نکنند.


کاربرد ۳: زمان ساخت حساب‌کاری، اگر نام‌کاربری پیش‌تر توسط فردی انتخاب شده بود، به اطلاع کاربر برسد.


کاربرد ۴: لیستی از آدرس اسپم‌های معروف داشته باشیم و اگر ایمیلی با آدرسی از آن لیست آمد، به عنوان اسپم شناخته شود.

در این ویدیو به نحوه کارکرد داده‌ساختار bloom filter می‌پردازیم.

https://youtu.be/g6oi78Hc-S4
👍5