آکادمی طراحی و معماری نرم افزار هادی احمدی
Статистика- Последний пост
- 12 авг.
- Последнее чтение
- 14 авг.
- Постов за неделю
- 1
- Всего постов
- 21
- Тип
- открытый
- Язык
- арабский
- Категория
- Дизайн
- В каталоге с
- 14 авг.
- 1/24сутки в ленте
- 203
- 1/48двое суток
- 232
- 1/72трое суток
- 250
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
این روزها در شبکه ایکس بیشتر مینویسم. نه لزوما فنی، گاهی هم از روزمرهها: https://x.com/HAhmadi15 اخیرا هم شروع کردم وبلاگ رو بهروز کردن. اگر دوست داشتید نوشتهها رو بخونید، خوشحال میشم دنبالش کنید: https://t.me/hadiahmadi_blog #پست_موقت
سومین دوره از مسیر معماری نرمافزار ✨ معماری نرمافزار در گذر زمان ✨ دنیایی که نرمافزار در آن فعالیت میکند هرگز ثابت نیست، به همین دلیل معماری نیز باید یک فعالیت مستمر، ادامهدار و تکاملی باشد. این دوره بررسی میکند که چه اقداماتی لازم است تا معماری یک سیستم نرمافزاری با تغییرات پیرامون خود همراه شود و همزمان با این تغییرات در طول زمان منسجم بماند. محورهای اصلی دوره Continuous Architecture و Evolutionary Architecture ▪️ 20 جلسه (14 جلسه آموزشی، 6 جلسه عملی) ▪️مجموعا 60 ساعت ▪️یکشنبهها از ساعت 18 تا 21 – به وقت تهران ▪️برگزاری به صورت آنلاین ▪️شروع دوره از 1 شهریور 1405 🔗 مطالعه سرفصل دوره 🔗 لینک ثبتنام دوره
با سلام و عرض ادب خدمت دوستان و همراهان گرامی 🌹 دامنه دانلود ویدیوهای کلاس از dl.hadiahmadi.ir به dl.hadi-ahmadi.com تغییر کرده است. تمامی ویدیوهای قبلی با همان URLها و همچنین نام کاربری / رمز عبور سابق، از طریق دامنه جدید قابل دسترس هستند. 🔹 همچنین سایت قبلی که شامل سرفصلهای دورهها بود، در حال حاضر در دسترس نیست و به زودی مجددا فعال خواهد شد. #پست_موقت
◾️ عنوان: کمیتهها چگونه اختراع میکنند؟ ◾️ نویسنده: Melvin E. Conway ◾️ مترجم: هادی احمدی ◾️ انتشار اولیه: مجله Datamation – آوریل ۱۹۶۸ ◾️ نسخهی فارسی: سنتز – ویرایش 1.0 – اردیبهشت ۱۴۰۴ 🔗 نسخه اصلی: https://www.melconway.com/Home/pdf/committees.pdf 🔗 نسخه ترجمه: https://dl.santez.tv/articles-papers/how-do-committees-invent-mel-conway-persian-translation.pdf
هر سازمانی که اقدام به طراحی یک سیستم میکند، ناگزیر طرحی ارائه میدهد که ساختارش بازتابی از ساختار ارتباطی همان سازمان است. این جملهی کلیدی، اساس قانون کانوی (Conway’s Law) را شکل میدهد. این قانون، فراتر از دنیای نرمافزار، نگاهی بنیادین به طراحی هر نوع سیستم انسانی ارائه میدهد. به بیان ساده، هر سیستمی که انسانها طراحی میکنند، شکلی شبیه به شیوهی همکاری و ارتباط خودشان پیدا میکند. مقالهی «کمیتهها چگونه اختراع میکنند؟» نوشتهی Melvin Conway، یکی از تأثیرگذارترین و مهمترین متون در تاریخ طراحی سیستمهاست. اثری کلاسیک که فراتر از مهندسی نرمافزار، به موضوعاتی چون ساختار سازمانی، تصمیمگیری، و رفتار مدیریتی نیز میپردازد. خواندن این مقاله به همه علاقهمندان طراحی سیستمها توصیه میشود. (لینک و فایل در پست بعدی)
دوره سبکهای معماری نرمافزار ▪️مجموعا 63 ساعت ▪️15 جلسه آموزشی - 6 جلسه Case Study ▪️دوشنبهها از ساعت 18 تا 21 ▪️برگزاری به صورت آنلاین ▪️شروع دوره از 16 مهر ▪️مهلت ثبتنام تا 10 مهر 🔹 لینک سرفصل: https://edu.hadiahmadi.ir/Courses/09/Software-Architecture…
دوره سبکهای معماری نرمافزار ▪️مجموعا 63 ساعت ▪️15 جلسه آموزشی - 6 جلسه Case Study ▪️دوشنبهها از ساعت 18 تا 21 ▪️برگزاری به صورت آنلاین ▪️شروع دوره از 16 مهر ▪️مهلت ثبتنام تا 10 مهر 🔹 لینک سرفصل: https://edu.hadiahmadi.ir/Courses/09/Software-Architecture-Styles/ 🔹 لینک ثبت نام: https://evnd.co/70CYe ✨عزیزانی که در برنامههای آموزشی قبلی آکادمی حضور داشتند، میتوانند جهت دریافت کد تخفیف به اکانت تلگرام @AhmadiAcademySupport پیام ارسال فرمایند.
در عصر پیشرفتهای سریع دنیای دیجیتال که در آن نرمافزارها به سرعت بزرگتر، پیچیدهتر و کلیدیتر میشوند، اهمیت به اشتراکگذاری دانش و تجربیات در میان مهندسین نرمافزار بیش از پیش احساس میشود. رویداد «استادکار» فضایی برای به اشتراکگذاری دانش و تجربه، تعامل نزدیک با سایر متخصصان و کشف فرصتهای جدید برای رشد است. رویداد استادکار 2، برای علاقهمندان به مهندسی نرمافزار با لیست برنامههای زیر ارائه میشود: ▪️ ارائه اول: هندسه فراکتال طراحی نرمافزار ایلماز سورانی - مهندس نرمافزار ▪️ ارائه دوم: فریمها و سوگیریهای شناختی در طراحی نرمافزار کیوان علیمحمدی - Engineering Manager at Sanppfood ▪️ ارائه سوم: DDD و تکامل مدل و زبان هادی احمدی - طراح و معمار نرمافزار ▪️ پنل گفتوگو: چگونه بهتر شکست بخوریم؟ سهیل مقدم – CTO سابق گروه دیجیکالا ابراهیم نبیئی – CTO گروه علی بابا مسعود بهرامی – مهندس و مشاور نرمافزار 📅 جمعه - 19 مرداد 🕒 ساعت 11 تا 18 📍تهران، مفتح، دانشکده الهیات دانشگاه تهران لینک ثبتنام: https://evnd.co/ogFWD مهلت ثبتنام: 15 مرداد
بهتر است که ارتشی کوچک از نیروهای قوی و گرانقیمت بسازم و یا ارتشی بزرگ از نیروهای ضعیف و ارزان؟ بازی تدافعی و تمرکز بر اقتصاد خود مهمتر است و یا بازی تهاجمی و ضربه به اقتصاد حریف؟ تسلط بر نقاط استراتژیک و کنترل نقشه مهمتر است یا تمرکز بر پیشرفتهای فناوری؟ تجارت و تبادل با بازیکنان دیگر منطقیتر است و یا انحصار و تحریم بازیکنان دیگر؟ اگر اهل بازیهای استراتژیک باشید (چه Board Game و چه Video Game) احتمالا در حین بازی به طور مداوم با این نوع سوالات روبرو خواهید شد. بازیهای استراتژیک نیازمند تصمیمگیری مداوم هستند. تصمیمگیری مؤثر در این بازیها نیازمند تحلیل دقیقی از Context (شرایط خود بازیکن، حریفان، امتیازها، نقشه و ...)، شناسایی گزینهها، ارزیابی و Trade-off گزینهها، توسعه استراتژی و به کارگیری تاکتیکهای مناسب در راستای آن استراتژیهاست. بدون در نظر گرفتن شرایط بازی، احتمالا نتوان اصولی را برای این نوع بازیها ارائه کرد، اما میتوان پیشنهادات، نکات، راهنماییها و رهیافتهایی را ارائه کرد که سطح بازی بازیکن را ارتقا داده و او را به برنده شدن نزدیکتر کند. برای مثال در بازی شطرنج: ▪️در ابتدای بازی، تمرکز را بر توسعه مهرههای خود قرار دهید. ▪️تلاش کنید تا هرچه بیشتر مرکز صفحه بازی را کنترل کنید. ▪️مهره وزیر خود را زود بازی نکنید. یادگیری و شروع بازیهای استراتژیک آسان اما برنده شدن در آنها دشوار است. پیچیدگی، عدم قطعیت و جنبههای ناشناخته بازی، بازیکن را مجبور میسازد که بر مجموعهای از رهیافتها (Heuristics) برای تصمیمگیری تکیه کند. این رهیافتها، برنده شدن بازیکن را تضمین نمیکنند و کاملا به شرایط و Context و نحوه به کارگیری آنها وابسته هستند. حتی ممکن است بعضا با هم در تضاد باشند. اما در Context صحیح، توصیههای درستی هستند و میتوانند باعث برنده شدن و یا حداقل تسهیل برد بازیکن شوند. اگر تجربه فعالیت در حوزه مهندسی نرمافزار را داشته باشید، به سرعت متوجه میشوید که این وضعیت شباهت بسیاری با تصمیمگیری در این فضا دارد. به بیان کاملتر، Heuristicها را میتوان یکی از اصلیترین اجزای هر رشته مهندسی دانست. Billy Vaughn Koen در کتاب The Discussion of the Method طراحی مهندسی (Engineering Design) یا روش مهندسی (Engineering Method) را اینگونه تعریف میکند: «استفاده از Heuristic ها جهت اعمال بهترین تغییر در محیط و وضعیتی ناشناخته با منابع محدود» در این کارگاه آموزشی قصد داریم تا با کمک گرفتن از Board Gameهای استراتژیک، مهارتهای شناخت، توسعه و بهکارگیری Heuristicها را در علاقهمندان به طراحی و معماری نرمافزار تقویت کنیم. در این کارگاه با مفهوم Heuristic آشنا میشویم، بازیهای متفاوتی را تجربه میکنیم، آنها را تحلیل میکنیم و سعی میکنیم تا شبکهای منسجم از Heuristicها را طراحی کرده و آنها را در قالب یک Patterns Language مستند کنیم. 🔹 فرمت: به صورت حضوری - در قالب ارائه آموزشی و انجام عملی بازیها 🔹 تاریخ و زمان: 1 تیر - ساعت 9 تا 18 🔹 مربی: هادی احمدی 🔹 محل برگزاری: کارخانه نوآوری آزادی 🔹 میزبان: شرکت سفرهای علی بابا - قاف کامیونیتی 🔹 مخاطبین کارگاه: برنامهنویسان ارشد، طراحان و معماران نرمافزار 🔹 پیشنیاز: تجربه قبلی در Board Game های استراتژیک 🔹هزینه: این کارگاه یک برنامه آموزشی رایگان بوده و تنها مبلغ حداقلی بابت پوشش هزینههای جاری و خرید بازیها از شرکتکنندگان دریافت میشود. 🔹 ظرفیت: 24 نفر 🔹 مهلت ثبتنام: 18 خرداد 🔹 لینک پیش ثبتنام: https://survey.porsline.ir/s/kwWEsAT ❗️به علت محدودیت ظرفیت، متاسفانه ناچار هستیم از لیست افراد علاقهمند تعداد محدودی را انتخاب کنیم. معیار انتخاب افراد تجربه آنها در Board Game های استراتژیک و همچنین انگیزه آنها برای شرکت در این کارگاه آموزشی خواهد بود. بنابراین پیشاپیش از عزیزانی که در لیست شرکتکنندگان قرار نمیگیرند، عذرخواهی میکنیم. لیست افراد انتخاب شده تا تاریخ 25 خرداد اعلام خواهد شد.
без подписи
انجمن DDD ایران همراستا با مسئولیت خود جهت بسترسازی گفتگو و اشتراک تجربهی علاقهمندان به DDD، میزبان Vlad Khononov شده است. میهمان این گفتگو، نویسنده کتاب Learning Domain-Driven Design است. کتابی ساده و روان که برای علاقهمندان به موضوع DDD محتوای ارزشمندی فراهم کرده است. برای آشنایی بیشتر با Vlad اینجا را ببینید: https://vladikk.com/page/about/ میزبان وبینار: هادی احمدی زمان برگزاری: پنجشنبه ۱۳ اردیبهشت - ساعت ۱۸:۳۰ برای ثبتنام به لینک زیر مراجعه کنید: https://evand.com/events/chat-with-vlad-khononov شرکت در وبینار رایگان است. - انجمن DDD ایران @DDD_IRAN
طراحی سیستمهای توزیعشده همواره با چالشهای بسیاری همراه است. این چالشها در ابعاد مختلفی از طراحی، پیادهسازی، تست، استقرار، نگهداری، افراد و تیمها و ... بروز پیدا میکنند. این کارگاه آموزشی با تمرکز بر چندین حوزه کلیدی از این مسائل، تلاش دارد تا فضایی عملی برای تمرین و یادگیری طراحی موثر مایکروسرویسها ارائه کند. مواردی که در این کارگاه آموزشی پوشش داده میشوند عبارتند از: ▪️طراحی سرویسها طراحی سرویسها، شناسایی مرز بین آنها و تفکیک آنها از یکدیگر را میتوان یکی از اساسیترین موضوعات طراحی سیستمهای توزیع شده مبتنی بر معماری Microservices دانست. موضوعاتی که در این بخش مورد بحث و تمرین قرار میگیرند عبارتند از: ▫️تحلیل Sub-Domain های موجود در مساله ▫️طراحی سرویسها و Boundary ها ▫️روابط (Relations) و ارتباطات (Communications) بین سرویسها ▫️مساله Adaptability سرویسها با استراتژیهای کلان کسبوکار ▫️مساله Evolvability و مطالعه و ارزیابی تکاملپذیری معماری ▫️استقلال و Autonomy سرویسها ▫️وابستگی و Coupling بین سرویسها ▫️مساله مقیاس و مشخصههای Scalability و Elasticity در طراحی سرویسها ▫️برخورد با Failure و مساله Resiliency ▫️موضوع Service Composability و ترکیب سرویسها ▪️ارتباط بین سرویسها یکی دیگر از حوزههای فعالیت این کارگاه، ارتباط بین سرویسها و روشهای مختلف Integrate کردن سرویسها با تمرکز بر Event-Driven Architecture است که شامل موارد زیر میشود: ▫️طراحی Integration بین سرویسها در سناریوهای مختلف ▫️استفاده از الگوهای مختلف Messaging (مانند Splitter، Aggregator و ...) ▫️طراحی Saga ها و Process Manager ها ▫️مساله Eventual Consistency و روشهای مدیریت آن ❌ این کارگاه صرفا بر روی دانش و مهارت شرکتکنندگان در حوزه «طراحی سرویسها و ارتباط و Integration بین آنها» تمرکز خواهد کرد، اما این حوزه به تنهایی کافی نخواهد بود. استفاده موثر از معماری Microservices، نیازمندی دانش و مهارت در حوزههای متفاوتی است که پرداختن به بسیاری از آنها جزء اهداف این کارگاه نخواهد بود. برای مثال: حوزه تست، حوزه Deployment و Delivery، مباحث Containerization، طراحی API ها، مباحث زیرساختی مانند Distributed Logging، Tracing و ... . 🔹فرمت: به صورت حضوری و عملی 📅 زمان و تاریخ: روزهای 5-6-7 اردیبهشت از ساعت 8 تا 17 📖 پیشنیاز: این کارگاه برای افرادی طراحی شده است که با مفاهیم بنیادین طراحی و معماری سیستمهای توزیعشده آشنا بوده و به دنبال کسب تجربه عملی و افزایش مهارت و دانش خود در این حوزه هستند. لذا ثبتنام در کارگاه بدون مطالعه و آشنایی قبلی، ابدا توصیه نمیشود. پیشنهاد میشود در صورت عدم اطمینان، قبل از قطعی کردن ثبتنام با مدرس دوره مشورت کنید. لطفا جهت ثبتنام و دریافت اطلاعات بیشتر، با شماره 09923434009 تماس گرفته و یا به اکانت تلگرام @AhmadiAcademySupport پیام ارسال بفرمایید.
без подписи
🔹مشخصات رویداد قالب: رویداد حضوری مکان: محدوده غرب تهران تاریخ و زمان: 10 اسفند – از ساعت 14:30 تا 19:00 لینک ثبت نام: https://evnd.co/lHKYR
🔹مشخصات رویداد قالب: رویداد حضوری مکان: محدوده غرب تهران تاریخ و زمان: 10 اسفند – از ساعت 14:30 تا 19:00 لینک ثبت نام: https://evnd.co/lHKYR
« کارگاه Practicing Domain-Driven Design » قصد داریم یک کارگاه آموزشی جهت تمرین کردن DDD برگزار کنیم. این کارگاه به صورت یک کار تیمی و گروهی، به صورت حضوری و عملی برگزار می شود. در این کارگاه ما با مسالهای شبه-واقعی روبرو هستیم و فردی به عنوان Domain Expert برای انتقال مساله در کنار ما خواهد بود. افراد حاضر در کارگاه باید در قالب تیمهای مختلف، مسیر طراحی را با رویکرد Design Driven-Domain طی کنند.این کارگاه به صورت فشرده و در قالب 3 روز کامل برگزار می شود. برنامه روزها به صورت زیر می باشد: ▪️روز اول Knowledge Crunching & Collaborative Modeling در روز اول به طور دسته جمعی به صحبت، تحلیل، کاوش، جستجو و اکتشاف در حوزه مساله میپردازیم. سعی میکنیم مفاهیم را شناسایی و درک و نقاط ابهام را رفع کنیم و به عمق قابل قبولی از دانش در مورد مساله دست پیدا کنیم. در این روز دوست خوبم مسعود بهرامی هم به عنوان منتور حوزه Collaborative Modeling در کنار ما حضور خواهند داشت. ▪️روز دوم - Strategic Design در روز دوم به صحبت و کاوش در مورد ابعاد راهبردی و استراتژیک مساله میپردازیم. در مورد استراتژی کسب و کار و زنجیره ارزش صحبت میکنیم، Domain ها و Sub-Domain ها را شناسایی میکنیم و نهایتا به طراحی Bounded Context ها و ارتباطات بین آنها میپردازیم. ▪️روز سوم - Tactical Design در روز سوم بر روی Modeling و طراحی Building Block ها در هر BC تمرکز میکنیم. سپس بسته به معماری انتخاب شده برای هر BC، به طراحی و پیاده سازی آن مشغول میشویم. 🔹فرمت: حضوری و فشرده - 3 روز کامل 🔹تاریخ و ساعت: روزهای 20-21-22 دی ماه – از ساعت 9 تا 17 🔹محدوده غرب تهران 🔹ظرفیت محدود (16 نفر) 🔹به همراه ناهار و پذیرایی جهت ثبت نام در این برنامه آموزشی، لطفا به اکانت @AhmadiAcademySupport پیام ارسال بفرمایید.
без подписи
« کارگاه Refactoring پروژه های Legacy بزرگ » یکی از بزرگترین مشکلات دوره های Refactoring، ساده بودن مثال ها در مقایسه با پیچیدگی های پروژه های واقعی است. به همین دلیل بسیاری از دوره های این حوزه نمی توانند آورده چندانی برای مخاطب داشته باشند. برای حل این مشکل، راه حل جدیدی را برای برگزاری این برنامه آموزشی در نظر گرفته ایم. در این کارگاه، هر دانشجو می تواند پروژه خود را بر روی کامپیوتر شخصی خود به همراه آورده و مباحث و تکنیک ها را پس از یادگیری بر روی آن اعمال کند. همچنین از آنجا که دانشجو با Domain پروژه خود آشناست، زمان یادگیری ماهیت پروژه به حداقل می رسد و دانشجو فرصت این را دارد که به صورت کاملا عملی، بهبود ساختار و Refactor یک پروژه واقعی را تجربه کند. این کارگاه به صورت فشرده و در 3 روز برگزار می شود. ▪️روز اول - Analysis & Planning سوال کلیدی: «چه چیزی را باید Refactor کنم؟ از کجا باید Refactoring را شروع کنم؟» در روز اول به بررسی تکنیک ها، روش ها و رویکردهای شناسایی مشکلات و نقاط کلیدی پروژه جهت Refactoring می پردازیم. در این جلسه با مباحث Code Analysis در دو قالب Behavioral & Static آشنا می شویم. ▪️روز دوم – Test سوال کلیدی: «چطور برای پروژه Legacy تست بنویسم تا Refactoring امنی داشته باشم، در حالی که پروژه تست پذیر نیست؟» در روز دوم بر روی نحوه تست نویسی در پروژه های Legacy و ساخت Safety net جهت اعمال Refactoring به 3 روش Example-Based Testing ، Property-Based Testing و Approval Testing خواهیم پرداخت. ▪️روز سوم – Refactoring Techniques سوال کلیدی: «چطور یک پروژه Legacy بزرگ را بدون متوقف کردن جریان توسعه، در دراز مدت و به صورت Iterative بهبود بدهم؟» در روز آخر به بررسی تکنیک های Long-Term Refactoring و نحوه اعمال تغییرات ساختاری بزرگ در سطوح مختلف طراحی خواهیم پرداخت. ▪️ قالب: حضوری و فشرده – 3 روز کامل ▪️تاریخ و ساعت: روزهای 24 -25 - 26 آبان – از ساعت 9 تا 17 ▪️محدوده غرب تهران ▪️ظرفیت محدود (20 نفر) ▪️به همراه ناهار و پذیرایی جهت ثبت نام در این برنامه آموزشی، لطفا به اکانت @AhmadiAcademySupport پیام ارسال بفرمایید.
без подписи
без подписи