Golem Course
Open in Telegram
2 905
Subscribers
No data24 hours
-57 days
-2530 days
Posts Archive
2 905
دستیاران آموزشی عزیزم، زحمت کشیده و تمرین اول درس تحلیل و طراحی سیستمها را آماده کردهاند. این تمرین بر بحث مدیریت محصول تمرکز دارد. در بخشی از تمرین، اصطلاح OKR مطرح میشود. مرجع اصلی OKR، سایت whatmatters.com است و ویدیوهای آموزشی هم دارد. به علاوه، Google OKR playbook یک guideline برای تعریف OKR ها ارائه میکند.
2 905
برای دانشجویان درس تحلیل و طراحی سیستمها، یک نمونه سوال امتحانی طراحی کردم که برای اعضای این کانال نیز مفید است. پیشنهاد میکنم که به راهحل آن فکر کنید.
@golemcourse
2 905
به زودی قرار است در این ترم، مبحث REST را برای دانشجویان تدریس کنم. با توجه به ماهیت این مبحث، فکر میکنم این اطلاعات برای اعضای این کانال نیز مفید باشد. فایل پیوست، محتوایی است که برای این هدف آماده کردهام.
@golemcourse
2 905
زمانی که در حال توسعه یک محصول هستید و ابعاد آن از یک حد خاصی بیشتر میشود، نیاز به استراتژی برای ایجاد شاخه در گیت پیدا میکنید. استراتژیهای متنوعی مانند:
gitflow
github flow
gitlab flow
trunk-based development
برای مدیریت شاخهها وجود دارد. من یک ویدیو درباره مدل gitflow ضبط کردهام که میتوانید آن را از طریق این لینک در کانال یوتیوب من تماشا کنید.
@golemcourse
2 905
ساختار تیمی بر معماری نرمافزار تاثیر میگذارد. این مفهوم با قانون کانوی شناخته میشود.
اگر در یک سازمان سه تیم فرانتاند، بکاند و پایگاه داده وجود داشته باشد، احتمالاً محصول نهایی معماری سه لایهای خواهد داشت. برای مثال، اگر بخواهیم قابلیت انتخاب ژانر موسیقی را به محصول خود اضافه کنیم، هر سه تیم باید تغییراتی در لایههای خود اعمال کنند.
برای حل این مشکل، میتوانیم ساختار تیم را تغییر دهیم. به جای تقسیم کار بر اساس فناوری، تقسیم کار را بر اساس حوزه کسب و کار انجام دهیم: یک تیم برای موجودی، یک تیم برای پرداخت و یک تیم برای مشتریان. حالا، اگر قابلیت انتخاب ژانر موسیقی را به محصول خود اضافه کنید، فقط یک تیم باید تغییرات را اعمال کند.
این عکس از کتاب Building Microservices گرفته شده است.
2 905
در سازمان، ممکن است تعدادی تیم تشکیل شود. تیمهایی که افراد آنها تواناییها و نیازهای لازم برای ساخت و ارائه محصول یا سرویس را دارند، به عنوان feature team شناخته میشوند. به عنوان مثال، فرض کنید سازمانی وجود دارد که دارای دپارتمانهای توسعه، عملیات، تضمین کیفیت و امنیت است. برای ساخت محصول، یک تیم شش نفره تشکیل شده است که شامل سه نفر از بخش توسعه، یک نفر از بخش عملیات، یک نفر از بخش تضمین کیفیت و یک نفر از بخش امنیت است. این نوع تیمها به عنوان تیمهای cross functional نیز شناخته میشوند. در چارچوب اسکرام، تیمها از این دست هستند.
اگر همه اعضای یک تیم در یک حوزه تخصص داشته باشند، آنگاه با یک component team سر و کار خواهیم داشت. به عنوان مثال، گاهی اوقات یک تیم زیرساخت برای ارائه خدمات به سایر تیمها تشکیل میشود. این تیمها زمانی مفید هستند که حول یک سرویس شکل بگیرند. در غیر این صورت، بروکراسی بین تیمی ایجاد میشود.
تصویر پیوست شده از کتاب Lean From the Trenches برداشت شده است. در آن سه تیم وجود دارد که از نوع Feature هستند و دو تیم که از نوع Component هستند.
@golemcourse
2 905
#معرفی_کتاب
Lean from the Trenches: Managing Large-Scale Projects with Kanban
در سال ۲۰۱۱، پلیس سوئد پروژهای را در سطح کشور برای بررسی آنلاین پروندههای افراد (مانند رانندگی در حالت مستی) تعریف کرد، بدون اینکه نیاز باشد افراد به ایستگاههای پلیس برای تشکیل پرونده مراجعه کنند.
کتاب به صورت یک مطالعه موردی، روش مدیریت پروژه را با استفاده از ایدههای کانبان و اسکرام توضیح میدهد. به عنوان مثال، این کتاب نحوه مدیریت ۶۰ نفر، ساختار تیمها و تقسیم وظایف را شرح میدهد.
کتاب حدوداً ۱۶۰ صفحه است و خواندن آن وقتگیر نیست. شخصاً توانستم آن را در یک روز بخوانم.
عکس پیوست شده، تصویری از برد پروژه است که در فصل چهارم کتاب آمده است.
@golemcourse
2 905
حداقل سه متغیر زمان، قابلیتهای محصول و بودجه در توسعه و ایجاد پروژه تأثیرگذار هستند. شاید برای پروژههایی که عدم قطعیت ندارند (یا عدم قطعیت آنها قابل مدیریت است) بتوانید با روش آبشاری هر سه متغیر را تعیین کرده و در قرارداد ذکر کنید. اما برای اکثر پروژههای نرمافزاری، به خصوص آنهایی که از روشهای چابک استفاده میکنند، در نهایت باید یکی از این متغیرها را در قرارداد منعطف نگه دارید.عکس پیوست شده به این پست از فصل ۱۸ کتاب Essential Scrum گرفته شده است.
@golemcourse
2 905
برای ترم پیشرو، در درس تحلیل و طراحی سیستمها از منابع زیر استفاده میکنم. با وسواس زیاد آنها را انتخاب کردم. اگر قصد تدریس/یادگیری این درس را دارید، پیشنهاد میکنم آنها را متناسب با نیازتان بررسی کنید.
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)
2 905
یکی از الگوهای پرکاربرد ابری، الگوی retry است.
ویدیویی در کانال یوتیوب ضبط کردم و این الگوی ابری را توضیح دادم (لینک). علی رغم این که ظاهر الگو ساده است، اما کلی ریزهکاری دارد.
@golemcourse
2 905
#معرفی_کتاب
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
2 905
الگوی anti-corruption layer چیست؟
ویدیویی برای این الگو داخل کانال یوتیوب قرار دادم و میتوانید آن را از این لینک تماشا کنید.
بعد از تماشای ویدیو انتظار میرود:
بتوانید مسئلهای که این الگو حل میکند، تشریح نمایید.
نحوه استفاده از FaaS را در این الگو بیان کنید.
بتوانید مزایا و معایب آن را ذکر کنید.
@golemcourse
2 905
درخواست دستیار آموزشی درس تحلیل و طراحی سیستمها
این ترم درس تحلیل و طراحی سیستمها را در دانشگاه شریف ارائه میکنم. دستیار آموزشی ارشدم جناب آقای امیرمهدی نامجو در حال تشکیل تیم دستیاران آموزشی است. در صورتی که تمایل دارید دستیار آموزشی این درس باشید، لطفاً این فرم را تکمیل نمایید.
2 905
الگوی ambassador چیست؟
ویدیویی برای الگوی ابری ambassador ضبط کردم (لینک). بعد از تماشای ویدیو انتظار میرود:
با این الگوی ابری آشنا شوید.
بتوانید مسئلهای را که این الگو حل میکند، تشریح نمایید.
بتوانید مزایا و معایب آن را ذکر کنید.
2 905
چرا باید تا جای ممکن از ماک (mock) اجتناب کنیم؟
احتمالا نام mock و کاربرد آن در تست نرمافزار به گوشتان خورده است. اما به کارگیری آن در تست میتواند سبب به وجود آمدن پدیدهای به نام mocking hell شود. روشهای بهتری برای تست نرمافزار و اجتناب از ماک وجود دارد. فایلی کوتاه آماده کردم و مشکل را همراه با یک مثال پایتون توضیح دادم.
2 905
سلام و عرض ادب. 🌹
دوستان علاقه مند به تازه های حوزه NLP و یا VISION، دو تا کانال زدم شاید به دردتون بخوره.
https://t.me/NLP_New_Papers
https://t.me/Image_Processing_New_Papers
توضیح هم اینکه پشت این کانال ها رباتی وجود داره، میاد سایت arxiv رو باز میکنه، چند تا کلمه کلیدی رو در advanced search جستجو میکنه و مقالات جدید رو استخراج میکنه و خلاصه و ترجمه میکنه.
فعلا با arxiv شروع کردم و ایشالا بقیه سایت ها رو هم بهش اضافه خواهم کرد.
هنوز قطعا نقایصی داره و بسیار خوشحال میشم از نظراتتون حقیر رو بهره مند کنید. 🙏
@dangerous_seif
2 905
معماری بدون سرور (serverless) چیست؟
یک ویدیو ضبط کردم و داخل یوتیوب قرار دادم (لینک). بعد از تماشای ویدیو انتظار میرود:
- بتوانید مفهوم معماری بدون سرور را توضیح دهید.
- بتوانید دو جزء مهم این معماری یعنی FaaS و BaaS را تشریح کنید.
- بتوانید مزایا و معایب آن را ذکر کنید.
