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
در این جلسه یک 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
Forwarded from Deep Time
تشخیص و راهکار مقابله با یکی از بزرگترین معضلات تمرکز یعنی procrastivity

از قبل قرار شد در این مورد بنویسم. شناخت این مسئله نه تنها در سطح فردی بلکه در سطح مدیریتی اهمیت بالایی داره. از تعریف شروع میکنیم:
تعریف:
همونطور که قبلا صحبت شد، بر خلاف procrastination که به معنی اهمال یا به نوعی وقت هدر دادن هست، procrastivity یعنی انجام یک کار مفید که اولویت و ضرورت نیست. برای مثال خوندن یک مطلب علمی غیر مرتبط بجای اتمام پروژه‌ای که در دست داریم.

چرا procrastivity اتفاق می افتد؟
زیرا آن کاری که بجای کار اصلی انجام میدهیم ویژگی‌های زیر را نسبت به کار اصلی دارد:
- مسیر و اعمال شناخته‌ شده‌ تر هست
- معمولا دستی و فیزیکی تر هست
- تخمین زمان واضح تر هست
- وجود ارتباط مستقیم تر بین تلاش و نتیجه
- پایان مشخص و خوشایند است

راهکار مدیریت procrastivity:
راهکار اساسی مقابله با این حالت، مقابله با حس ناخوشاندیست (حس ugh) که از شروع کار اصلی (اولویت اول) داریم که عبارتند از:
- شروع با حداقل اقدام عملی ممکن
- ترسیم اجزا و مراحل انجام کار
- تخصیص زمان مقرر برای هر مرحله
- تبدیل انتزاعی به جامد و مجسم

در این مورد همچنین پیشنهاد میکنم کتاب شروع کردن را تمام کنید، تمام کردن را شروع کنید رو مطالعه کنید. ضمن اینکه این کتاب مربوط به متودولوژی Kanban هست که شبیه Scrum یک متودولوژی توسعه چابک برای پروژه‌های نرم افزاریست.

@deeptimeai
👍9
#معرفی_کتاب

Learn Docker in a Month of Lunches

در حال حاضر به نظرم بهترین کتاب موجود در بازار برای آموزش داکر است. کتاب مباحث را در هر فصل در قالب مثال‌های عملی و پروژه آموزش می‌دهد. سورس کد هر فصل هم برای همراهی با کتاب، در گیتهاب نویسنده موجود است.

کتاب ابتدا مباحث پایه‌ای را آموزش می‌دهد. بعد از آن داکرکامپوز را برای مدیریت چند کانتینر در یک سرور یاد میدهد. در بخش سوم کتاب مدیریت چند کانتینر در چند سرور را یاد میدهد. در بخش آخر هم مباحث پیشرفته تر را مانند یکپارچه‌سازی مستمر/تحویل مستمر، کار با لاگ‌ها (کیبانا و الستیک سرچ)، کار با لود بالانسرها و بهینه سازی حجم تصاویر آموزش می‌دهد.


کمبودها:
تعدادی مبحث پیشرفته وجود دارد که بهتر بود برای جذب خواننده‌های حرفه‌ای پرداخته میشد. (اما اشاره ای در کتاب نشد):

۱. مبحث پروسه‌های زامبی (zombie processes) و چگونگی رفع آن با ابزارهایی مانند tiny init, dumb init یا baseimage

۲. مشکل تداخل سطح دسترسی کاربر سیستم عامل و کاربر داخل کانتینر هنگام استفاده از bind mount و روش حل آن

۳. اهمیت پیکربندی bind propagation و مفهوم share, slave, private

۴. نحوه مدیریت سیگنال‌هایی شبیه
sigterm

@golemcourse
🔥7👍32
تفاوت متدولوژی، چارچوب و راهنما چیست؟

متدولوژی به صورت دقیق و با جزئیات مشخص میکند چه محصولاتی (products) طبق چه فرآیندی (processes) با چه نقش‌ها و افرادی (people) ساخته می‌شود.

متدولوژی می‌تواند بخش‌هایی با درجه آزادی داشته باشد و تیم توسعه متناسب با نیاز پروژه و سازمان آن را اختصاصی سازی کنند.

چارچوب (framework) بر خلاف متدولوژی سطح بالاست و جزئیات ندارد. برای استفاده در پروژه حتما باید نسخه اختصاصی آن را ساخت. مثلا اسکرام یک چارچوب است و سند آن هفده صفحه بیش‌تر نیست. اما کتاب رابینز در ۵۰۰ صفحه یک نمونه نسخه متدولوژی شده را از این چارچوب اسکرام بیان کرده است.

راهنما (guides) مجموعه ای از اصول، ارزش‌ها، شیوه‌ها (practices) و تکنیک هاست که می‌تواند در پروژه مورد استفاده قرار بگیرد. در واقع می‌توانیم از راهنما برای اختصاصی‌سازی بخش‌های دارای درجه‌آزادی متدولوژی استفاده کنیم. پم‌باک (pmbok) یک راهنماست. مثلا در نسخه ششم آن ۴۹ تا فرآیند متداول در مدیریت پروژه را مطرح کرده است.


@golemcourse
👍102🔥1
Forwarded from Golem Course
کانال تلگرام علیرضا آقامحمدی
کانال یوتیوب علیرضا آقامحمدی

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

==================
13👍3🔥2
Forwarded from Deep Time
This media is not supported in your browser
VIEW IN TELEGRAM
الگویی که در طول تاریخ به طور مستمر تکرار شده

ظهور کشاورزی و یکجانشینی، اختراع صنعت چاپ، انقلاب صنعتی و اتوماسیون و در آخر ظهور کامپیوتر و اینترنت صنایع و مشاغل رو متحول کرد، حالا انقلاب هوش مصنوعی با شدت زیادی همه چیز رو متحول خواهد کرد.

اینجا در پنل تخصصی نمایشگاه بین‌المللی صنعت مالی با آرش سروری درباره فایننس، هوش مصنوعی و بازار مالی صحبت کردم. غرفه ما در سالن ۳۵ هست.

لینک گفتگوی کامل

@deeptimeai
👍21
روتین‌های زندگی‌ام در آستانه ۳۰ سالگی

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

در ادامه برخی از مهم‌ترین آن‌ها را توضیح می‌دهم:


۱. خواب منظم از ساعت ۲۱ شب تا ۵ صبح.


شاید این روتین اولین و تأثیرگذارترین روتین‌هایم باشد. سال‌هاست که هر روز باید هشت ساعت و آن هم با زمان مشخص بخوابم. اوایل مجبور بودم برای بیدار شدن ساعت بگذارم. اما سال‌هاست که به صورت خودکار بدون ساعت بیدار می‌شوم. مهمترین تأثیر این روتین برای من داشتن انرژی و بهبود خلق و خوی‌ام در طول روز است.

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

۲. پیاده‌روی به مدت ۵۰ دقیقه


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

۳. تعیین استراتژی ماهانه و تسک‌های روزانه

ابتدای هر ماه یک استراتژی تدوین می‌کنم. و هر روز تعدادی تسک که در راستای آن استراتژی‌ها باشد تعریف می‌کنم. مزیت این کار آن است که از کارهای بی‌اهمیت اجتناب می‌کنم.


ادامه دارد ...

@golemcourse
41👍12🔥1
بخش دوم روتین‌های زندگی‌ام در آستانه ۳۰ سالگی

۴. مطالعه کتاب حداقل نیم ساعت در هر روز

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

به نظرم مهمترین درس و فایده کتاب خواندن، یادآوری این نکته به خودمان است که هنوز خیلی دانش کمی داریم، باید کمی فروتن باشیم، آماده پذیرفتن نظرات مخالف خودمان باشیم حتی اگر ۱۰۰٪ با باورهایمان تناقض داشته باشد، و ذهن همیشه یادگیر داشته باشیم (life-long learner).

۵. وقت گذاشتن برای خانواده، دوستان و نزدیکان


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

۶. نوشتن، نوشتن، نوشتن


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

@golemcourse
23👍7🔥1