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
درخواست دستیار آموزشی درس تحلیل و طراحی سیستم‌ها

این ترم درس تحلیل و طراحی سیستم‌ها را در دانشگاه شریف ارائه می‌کنم. دستیار آموزشی ارشدم جناب آقای امیرمهدی نامجو در حال تشکیل تیم دستیاران آموزشی است. در صورتی که تمایل دارید دستیار آموزشی این درس باشید، لطفاً این فرم را تکمیل نمایید.
👍111
الگوی anti-corruption layer چیست؟

ویدیویی برای این الگو داخل کانال یوتیوب قرار دادم و می‌توانید آن را از این لینک تماشا کنید.

بعد از تماشای ویدیو انتظار می‌رود:
بتوانید مسئله‌ای که این الگو حل می‌کند، تشریح نمایید.
نحوه استفاده از FaaS را در این الگو بیان کنید.
بتوانید مزایا و معایب آن را ذکر کنید.

@golemcourse
🔥7👍1
#معرفی_کتاب

Publishing Python Packages: Test, share, and automate your projects

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

یاد می‌گیرید چگونه با کمک pyproject.toml و setup.cfg بسته قابل نصب بنویسید.
تفاوت sdist و bdist را متوجه می‌شوید.
با کمک tox فرآیند اجرای تست، اجبار سبک کدزنی با black ، و بررسی کیفیت کد با flake را خودکار می‌کنید.
یاد می‌گیرید از github action برای اطمینان از صحت برنامه در محیط‌های پایتون ۳.۸، ۳.۹، ۳.۱۰ استفاده کنید.
با کمک sphinx و readthedocs برنامه‌تان را مستندسازی می‌کنید.


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

@golemcourse
👍15🔥2
برای ترم پیش‌رو، در درس تحلیل و طراحی سیستم‌ها از منابع زیر استفاده می‌کنم. با وسواس زیاد آن‌ها را انتخاب کردم. اگر قصد تدریس/یادگیری این درس را دارید، پیشنهاد می‌کنم آن‌ها را متناسب با نیازتان بررسی کنید.

۱. Scrum Guides (2020)
۲. Essential Scrum: A Practical Guide to the Most Popular Agile Process (2012)
۳. Software Architecture in Practice (2022)
۴. System Design Interview — An Insider's Guide (2020)
۵. System Design Interview — An Insider's Guide: Volume 2 (2022)
۶. Building Microservices: Designing Fine-Grained Systems (2021)
۷. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems (2017)
۸. Fundamentals of Software Architecture: An Engineering Approach (2020)
۹. Software Architecture: The Hard Parts (2022)
۱۰. Release It!: Design and Deploy Production-Ready Software (2018)
۱۱. The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win (2013)
۱۲. Grokking Continuous Delivery (2022)
۱۳. Learn Docker in a Month of Lunches (2020)
۱۴. Learn Kubernetes in a Month of Lunches (2021)
۱۵. Ansible for DevOps: Server and configuration management for humans (2023)
۱۶. Logging in Action: With Fluentd, Kubernetes and more (2022)
۱۷. Site Reliability Engineering: How Google Runs Production Systems (2016)
👍197🔥6💯1
حداقل سه متغیر زمان، قابلیت‌های محصول و بودجه در توسعه و ایجاد پروژه تأثیرگذار هستند. شاید برای پروژه‌هایی که عدم قطعیت ندارند (یا عدم قطعیت آن‌ها قابل مدیریت است) بتوانید با روش آبشاری هر سه متغیر را تعیین کرده و در قرارداد ذکر کنید. اما برای اکثر پروژه‌های نرم‌افزاری، به خصوص آن‌هایی که از روش‌های چابک استفاده می‌کنند، در نهایت باید یکی از این متغیرها را در قرارداد منعطف نگه دارید.عکس پیوست شده به این پست از فصل ۱۸ کتاب Essential Scrum گرفته شده است.

@golemcourse
👍12
#معرفی_کتاب

Lean from the Trenches: Managing Large-Scale Projects with Kanban

در سال ۲۰۱۱، پلیس سوئد پروژه‌ای را در سطح کشور برای بررسی آنلاین پرونده‌های افراد (مانند رانندگی در حالت مستی) تعریف کرد، بدون اینکه نیاز باشد افراد به ایستگاه‌های پلیس برای تشکیل پرونده مراجعه کنند.

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

کتاب حدوداً ۱۶۰ صفحه است و خواندن آن وقت‌گیر نیست. شخصاً توانستم آن را در یک روز بخوانم.

عکس پیوست شده، تصویری از برد پروژه است که در فصل چهارم کتاب آمده است.

@golemcourse
👍83
در سازمان، ممکن است تعدادی تیم تشکیل شود. تیم‌هایی که افراد آن‌ها توانایی‌ها و نیازهای لازم برای ساخت و ارائه محصول یا سرویس را دارند، به عنوان feature team شناخته می‌شوند. به عنوان مثال، فرض کنید سازمانی وجود دارد که دارای دپارتمان‌های توسعه، عملیات، تضمین کیفیت و امنیت است. برای ساخت محصول، یک تیم شش نفره تشکیل شده است که شامل سه نفر از بخش توسعه، یک نفر از بخش عملیات، یک نفر از بخش تضمین کیفیت و یک نفر از بخش امنیت است. این نوع تیم‌ها به عنوان تیم‌های cross functional نیز شناخته می‌شوند. در چارچوب اسکرام، تیم‌ها از این دست هستند.

اگر همه اعضای یک تیم در یک حوزه تخصص داشته باشند، آنگاه با یک component team سر و کار خواهیم داشت. به عنوان مثال، گاهی اوقات یک تیم زیرساخت برای ارائه خدمات به سایر تیم‌ها تشکیل می‌شود. این تیم‌ها زمانی مفید هستند که حول یک سرویس شکل بگیرند. در غیر این صورت، بروکراسی بین تیمی ایجاد می‌شود.

تصویر پیوست شده از کتاب Lean From the Trenches برداشت شده است. در آن سه تیم وجود دارد که از نوع Feature هستند و دو تیم که از نوع Component هستند.
@golemcourse
👍5🔥2💯2
ساختار تیمی بر معماری نرم‌افزار تاثیر می‌گذارد. این مفهوم با قانون کانوی شناخته می‌شود.

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

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

این عکس از کتاب Building Microservices گرفته شده است.

@golemcourse
👍16💯1
زمانی که در حال توسعه یک محصول هستید و ابعاد آن از یک حد خاصی بیشتر می‌شود، نیاز به استراتژی برای ایجاد شاخه در گیت پیدا می‌کنید. استراتژی‌های متنوعی مانند:
gitflow
github flow
gitlab flow
trunk-based development
برای مدیریت شاخه‌ها وجود دارد. من یک ویدیو درباره مدل gitflow ضبط کرده‌ام که می‌توانید آن را از طریق این لینک در کانال یوتیوب من تماشا کنید.

@golemcourse
🔥84👍1
009_rest.pdf
116.9 KB
به زودی قرار است در این ترم، مبحث REST را برای دانشجویان تدریس کنم. با توجه به ماهیت این مبحث، فکر می‌کنم این اطلاعات برای اعضای این کانال نیز مفید باشد. فایل پیوست، محتوایی است که برای این هدف آماده کرده‌ام.
@golemcourse
👍254🔥1
SUT_SAD_SampleExam.pdf
134.3 KB
برای دانشجویان درس تحلیل و طراحی سیستم‌ها، یک نمونه سوال امتحانی طراحی کردم که برای اعضای این کانال نیز مفید است. پیشنهاد می‌کنم که به راه‌حل آن فکر کنید.
@golemcourse
🔥156💯2
HW1_SAD_D.pdf
1.4 MB
دستیاران آموزشی عزیزم، زحمت کشیده و تمرین اول درس تحلیل و طراحی سیستم‌ها را آماده کرده‌اند. این تمرین بر بحث مدیریت محصول تمرکز دارد. در بخشی از تمرین، اصطلاح OKR مطرح می‌شود. مرجع اصلی OKR، سایت whatmatters.com است و ویدیوهای آموزشی هم دارد. به علاوه، Google OKR playbook یک guideline برای تعریف OKR ها ارائه می‌کند.
👍16🔥2
Project.pdf
231.2 KB
دستیاران آموزشی عزیزم، زحمت زیادی کشیده و پروژه درس تحلیل و طراحی سیستم‌ها را آماده کرده‌اند. این پروژه مهمترین بخش درس است. در این پروژه، دانشجویان باید یک message broker شبیه به RabbitMQ یا Kafka، اما ساده‌تر، را پیاده‌سازی و مستقر کنند. برای انجام این پروژه، دانشجویان با ابزارهایی مانند Docker، Kubernetes، Prometheus Grafana و Gitlab CI/CD نیز درگیر خواهند شد.
🔥23👍64
#معرفی_کتاب
عنوان:
Think Like a CTO

به تازگی، خواندن این کتاب را از انتشارات Manning به پایان بردم. در این کتاب، وظایف مدیر ارشد فنی (CTO) و رابطه‌ای که باید با مدیرعامل (CEO) و مدیر ارشد مالی (CFO) داشته باشد، مورد بررسی قرار گرفته است.

کتاب چندین بخش جالب داشت که به من چشم‌انداز جدیدی ارائه داد:
۱. کارهایی که مدیر ارشد فنی که به تازگی در سازمان استخدام شده، در ۱۰۰ روز اول کارش باید انجام دهد.
۲. چک‌لیست‌هایی که در انتهای هر فصل قرار دارد و می‌تواند به عنوان مرجع بعدها به آن رجوع کرد.
۳. تکنیک‌های مصاحبه شغلی و استخدام افراد
۴. موضوعاتی که در قرارداد باید رعایت شود
۵. خرید استارتاپ/شرکت دیگر و ادغام آن با سازمان فعلی و اهمیت و نحوه کارکرد due diligence در این فرآیند

@golemcourse
👍105🔥2💯1
مسیر شغلی به چه شکل است؟
در گذشته در سازمان‌ها، فرد فنی مسیری را از کارآموزی تا نقش جونیور، سپس به نقش ارشد، مدیریت و در نهایت مسئولیت دپارتمان در سازمان طی می‌کرد (سمت چپ تصویر). اما افراد بعد از نقش سینیور مجبور می‌شوند به بخش مدیریتی منتقل شوند. این تغییر برای همه خوشایند نیست، مخصوصاً اگر فرد تجربه فنی بالایی داشته باشد و علاقه‌ای به جزئیات کسب و کار نداشته باشد.
در سال‌های اخیر، سازمان‌ها به سمت ارائه مسیر ارتقای شغلی جدیدتر حرکت کرده‌اند (سمت راست تصویر) که دو راه را در پیش روی افراد می‌گذارد. بعد از نقش سینیور، افراد می‌توانند انتخاب کنند که در جهت فنی ارتقا پیدا کنند یا به سمت نقش‌های مدیریتی سازمان بروند. تفاوت این مدل با قبلی در آن است که افرادی که نقش‌های staff engineer یا principal engineer را برعهده می‌گیرند، همچنان نقش فنی خود را حفظ می‌کنند، با این تفاوت که مسئول تصمیم‌گیری و مدیریت چندین تیم فنی را بر عهده دارند. از لحاظ سطح ارشدیت، principal engineer با director و staff engineer با manager جایگاه برابر دارند.
عکس از صفحه ۴ کتاب The Staff Engineer’s Path گرفته شده است.

@golemcourse
👍14🔥4💯31
Forwarded from Deep Time
مهمان ما دکتر علی حبیب‌نیا استاد دانشگاه ویرجینیاتک هستن. در مورد موارد متنوعی از جمله سیستم‌های ترید، استارتاپ‌های موفق و بازارها صحبت میکنیم.
شنبه ساعت 9:30 شب، لایو در تلگرام.

@deeptimeai
8💯3👍1
دستیاران آموزشی‌ام در درس تحلیل و طراحی سیستم‌ها در این ترم زحمت زیادی کشیدند و مجموعه‌ای از ویدیوهای آموزشی را برای دانشجویان آماده کردند.
باور دارم این محتوا برای اعضای این کانال هم بسیار مفید است.

کارگاه کافکا (تهیه شده توسط محمدطه جهانی‌نژاد):

https://drive.google.com/file/d/1k3zZRXYdKaF7ew5-doyRzZ6Mp204j-Bb/view?usp=sharing

کارگاه داکر (تهیه شده توسط حسین سمیعی):

https://drive.google.com/drive/folders/16rwbD6hs_n-Gx2_rbHjDMre34ReenB7m?usp=sharing

کارگاه CI/CD (تهیه شده توسط محمدصادق مجیدی یزدی):

https://drive.google.com/drive/folders/1FczGY_qJ8LYSS9qJuiJk-0s-Oa46Ko_s?usp=sharing

کارگاه مانیتورینگ (تهیه شده توسط کمیل یحیی‌زاده):

https://drive.google.com/drive/folders/1eu8ftc6LfD5Xb6C_C-bny7BHQu3EXP9E?usp=sharing

@golemcourse
44🔥3👍2
امروز، کلاس درس تحلیل و طراحی سیستم‌ها به صورت مجازی برگزار شد و من فرصتی برای ضبط آن پیدا کردم. در این جلسه، درباره مدل‌سازی موقعیت مکانی بحث کردیم و بررسی کردیم که چگونه شرکت‌هایی مانند گوگل، تیندر، لیفت، اسنپ و تسپی کار می‌کنند. به طور خاص، به سه تکنیک مهم پرداختیم:

۱. تکنیک Geohashing که شرکت‌هایی نظیر ‌Bing Maps و Lyft از آن استفاده می‌کنند.

۲. داده ساختار Quadtree که شرکت Yext آن را به کار می‌گیرد.

۳. خم هیلبرت (Hilbert Curve) که Google Maps و Tinder از آن بهره می‌برند.

ویدیو ضبط شده را می‌توانید از طریق لینک زیر از گوگل درایو دانلود کنید:

https://drive.google.com/file/d/1kA_5bEtfA0C2emQdOyRJpJQBzMV9qAdd/view?usp=sharing

@golemcourse
23🔥6👍4💯1
HW2_SAD_D.pdf
1.5 MB
تیم دستیاران آموزشی درس تحلیل و طراحی زحمت کشیدند و تمرین دوم درس را منتشر کردند. تمرین دوم با موضوع رابط و تجربه کاربری است.


همچنین ویدیو کارگاه آموزشی Figma را می‌توانید از لینک زیر دانلود کنید:

https://drive.google.com/file/d/1emxEZxn6bzyvTsY03oQtQWdgeIFHhkYZ/view?usp=sharing

@golemcourse
👍98💯2