.NET Fun
#fun یکی از مشکلاتی که اپلیکیشن های monolithic دارند اینه که حل یک مشکل باعث بوجود اومدن مشکلات بیشتر میشه. یک تار عنکبوت رو در نظر بگیرید که اگه یک سمتش تکون بخوره سمت کاملا مخالفش هم تحت تاثیر اون تکون قرار میگیره در فلسفه نرم افزار لغتی وجود داره به اسم…
ادامه:
یکی از دلایل محبوبیت Microservice Architecture هم همین ایجاد High Cohesion هست. جایی که یک سرویس فقط و فقط وظیفه خودش رو انجام میده و سایر وابستگی هاش رو از سرویس های دیگه تامین میکنه و اگه مشکل یا باگی براش پیش بیاد کل سیستم رو دچار مشکل نمیکنه
البته این برداشت نشه که از فردا همه باید بریم سروقت معماری میکروسرویس، ولی خوبه که موقع برنامه نویسی این سوال ها رو از خودتون بپرسید:
فهم کدی که نوشتید چقدر سخته؟
اگر این کد فردا پس فردا تغییر کنه مشکلی برای کل سیستم بوجود میاره؟
تغییرات این قسمت از کد روی کدوم قسمت های سیستم تاثیر میذاره؟
آیا وظیفه کد برای برنامه نویسی جز خودم مشخصه؟
کد نوشته شده دقیقا یک وظیفه مشخص رو انجام میده؟ یا تبدیل شده به آچار فرانسه؟
اضافه کردن فیچر جدید به این کد چقدر سخته؟
یکی از دلایل محبوبیت Microservice Architecture هم همین ایجاد High Cohesion هست. جایی که یک سرویس فقط و فقط وظیفه خودش رو انجام میده و سایر وابستگی هاش رو از سرویس های دیگه تامین میکنه و اگه مشکل یا باگی براش پیش بیاد کل سیستم رو دچار مشکل نمیکنه
البته این برداشت نشه که از فردا همه باید بریم سروقت معماری میکروسرویس، ولی خوبه که موقع برنامه نویسی این سوال ها رو از خودتون بپرسید:
فهم کدی که نوشتید چقدر سخته؟
اگر این کد فردا پس فردا تغییر کنه مشکلی برای کل سیستم بوجود میاره؟
تغییرات این قسمت از کد روی کدوم قسمت های سیستم تاثیر میذاره؟
آیا وظیفه کد برای برنامه نویسی جز خودم مشخصه؟
کد نوشته شده دقیقا یک وظیفه مشخص رو انجام میده؟ یا تبدیل شده به آچار فرانسه؟
اضافه کردن فیچر جدید به این کد چقدر سخته؟
Overthinking damages everything
خیلی از دوستان هستند که به بنده لطف دارند و سوالی که براشون پیش میاد رو میپرسن.
مسئله ای که برام جالبه اینه که همه ما گاهی اوقات اینقدر وسواس به خرج میدیم که کلا اصل مسئله ای که قراره حل کنیم رو فراموش می کنیم. احتمالا سه تا اصطلاح زیر رو شنیده باشید
-YAGNI principle
-KISS
-No Tricky Code
اصطلاح اول میگه که بعضی از قابلیت هایی که سیستم درحال توسعه ممکنه در آینده بهش نیاز پیدا کنه رو الان نباید پیاده سازی کرد. و طبیعتا یک سری نیازها هست که شما نمیتونید به عنوان یک برنامه نویس پیشبینی کنید. وقتی زمان پیاده سازیش رسید، اون موقع بهش فکر کنید.
اصطلاح دوم و سوم در اصل یک چیز رو میگن. اونم اینه که خودتون رو درگیر پیچیدگی هایی که هیچ نیازی بهشون نیست نکنید. همیشه در ساده ترین حالت ممکن یک سیستم رو پیاده سازی کنید. بعد از پیاده سازی به ریفکتور و بهبودش فکر کنید. اگر بخوایم یه مثال باحال واسش بیاریم میتونیم به RED GREEN REFACTOR توی TDD اشاره کنیم. که شما اول نیاز های سیستم رو توی تست مینویسید و طبعا Test شما Fail یا قرمز میشه.
خیلی از دوستان هستند که به بنده لطف دارند و سوالی که براشون پیش میاد رو میپرسن.
مسئله ای که برام جالبه اینه که همه ما گاهی اوقات اینقدر وسواس به خرج میدیم که کلا اصل مسئله ای که قراره حل کنیم رو فراموش می کنیم. احتمالا سه تا اصطلاح زیر رو شنیده باشید
-YAGNI principle
-KISS
-No Tricky Code
اصطلاح اول میگه که بعضی از قابلیت هایی که سیستم درحال توسعه ممکنه در آینده بهش نیاز پیدا کنه رو الان نباید پیاده سازی کرد. و طبیعتا یک سری نیازها هست که شما نمیتونید به عنوان یک برنامه نویس پیشبینی کنید. وقتی زمان پیاده سازیش رسید، اون موقع بهش فکر کنید.
اصطلاح دوم و سوم در اصل یک چیز رو میگن. اونم اینه که خودتون رو درگیر پیچیدگی هایی که هیچ نیازی بهشون نیست نکنید. همیشه در ساده ترین حالت ممکن یک سیستم رو پیاده سازی کنید. بعد از پیاده سازی به ریفکتور و بهبودش فکر کنید. اگر بخوایم یه مثال باحال واسش بیاریم میتونیم به RED GREEN REFACTOR توی TDD اشاره کنیم. که شما اول نیاز های سیستم رو توی تست مینویسید و طبعا Test شما Fail یا قرمز میشه.
.NET Fun
Overthinking damages everything خیلی از دوستان هستند که به بنده لطف دارند و سوالی که براشون پیش میاد رو میپرسن. مسئله ای که برام جالبه اینه که همه ما گاهی اوقات اینقدر وسواس به خرج میدیم که کلا اصل مسئله ای که قراره حل کنیم رو فراموش می کنیم. احتمالا سه تا…
ادامه:
در مرحله بعد شما کدی رو مینویسید که فقط نیاز این تست رو برطرف کنه و تست شما سبز یا Pass بشه و در مرحله آخر به ریفکتور کدی که زدید فکر میکنید.
همیشه اینو در نظر داشته باشید که وسواس بیش از حد به محصول نهایی شرکت یا پروژه صدمه میزنه. و کلام آخر اینکه برنامه نویسی یک ابزاره برای تولید محصول یا ایجاد یک بیزینس موفق.
در مرحله بعد شما کدی رو مینویسید که فقط نیاز این تست رو برطرف کنه و تست شما سبز یا Pass بشه و در مرحله آخر به ریفکتور کدی که زدید فکر میکنید.
همیشه اینو در نظر داشته باشید که وسواس بیش از حد به محصول نهایی شرکت یا پروژه صدمه میزنه. و کلام آخر اینکه برنامه نویسی یک ابزاره برای تولید محصول یا ایجاد یک بیزینس موفق.
کلی اسلاید و مثال باحال واسه وبینار فردا آماده کرده بودم اما بخاطر کرونا کلا صدام در نمیاد. از همه دوستان عذرخواهی میکنم ایشالله هفته بعد وبینار رو برگزار میکنیم. قبلش هم اسلاید ها تو این گروه قرار میگیره و دمو ها داخل گیتهاب
گیتهاب:
https://github.com/babaktaremi
گیتهاب:
https://github.com/babaktaremi
GitHub
babaktaremi - Overview
C# and .Net enthusiasm. babaktaremi has 73 repositories available. Follow their code on GitHub.
Media is too big
VIEW IN TELEGRAM
ویدیو وبینار امروز
خیلی ممنون از دوستانی که وقت گذاشتن و شرکت کردند. اگر مشکلی ( چه فنی چه...) وجود داره پیشاپیش عذرخواهی میکنم و حتما بمن بگید که اصلاحش کنم
خیلی ممنون از دوستانی که وقت گذاشتن و شرکت کردند. اگر مشکلی ( چه فنی چه...) وجود داره پیشاپیش عذرخواهی میکنم و حتما بمن بگید که اصلاحش کنم
نظرتون راجب وبینار؟(اگه نکته با پیشنهادی هست حتما تو کامنت ها بگید)
Anonymous Poll
63%
خوب
29%
متوسط
9%
ضعیف
کتابی که در وبینار در موردش صحبت کردم
من قبلا از اینجا سفارش دادم و میتونم اطمینان بدم که کیفیت چاپ خیلی خوبی داره
اینجا میتونید سفارش بدید
متاسفانه علی رغم صحبت و پافشاری بسیار یک ریال هم تخفیف ندادند 🤦♂️
ولی قیمتش بنظرم مناسبه (۱۱۴۰۰۰ تومان)
اگه قیمتی غیر این بهتون گفتن حتما تو کامنت ها بگید
من قبلا از اینجا سفارش دادم و میتونم اطمینان بدم که کیفیت چاپ خیلی خوبی داره
اینجا میتونید سفارش بدید
متاسفانه علی رغم صحبت و پافشاری بسیار یک ریال هم تخفیف ندادند 🤦♂️
ولی قیمتش بنظرم مناسبه (۱۱۴۰۰۰ تومان)
اگه قیمتی غیر این بهتون گفتن حتما تو کامنت ها بگید
فری تاک راجب میکروسرویس رو به موقع خودش برگزار میکنیم ( یادم نرفته)
دومین مبحثی که تو نظرسنجی خیلی پرطرفدار بود مبحث DDD بود . من فکر کردم گفتم راجب هرچیزی درمورد DDD صحبت کنم قبلا اساتید بحثشو شکافتن رفتن جلو😂 . که یه سری مباحث باحال تر به ذهنم رسید
۱- اولیش این بود که همه دارن راجب مزایای DDD صحبت میکنن، ما بیایم خلاف جهت حرکت کنیم و از معایبش بگیم و کلا DDD رو بکوبیم. که این مبحث بنظرم خیلی subjective و انتزاعی هست و ممکنه خسته کننده بشه (از اونجایی که خودم با مباحثی که کد دخیلش نشن خیلی حال نمیکنم)
۲- دومین مسئله خیلی باحال بررسی عمیق ASP Net Core هست. هممون روزانه باهاش سر و کله میزنیم ولی شاید ندونیم که پشت صحنه چه اتفاقایی داره میوفته( بخوام مثال بزنم مثلا همه کنترلر ها کلاس سی شارپ هستن ولی تو Http Protocol چیزی به اسم کلاس و OOP نداریم که) یا اصلا kestrel چه کارایی انجام میده.
۳- سومین مسئله خیلی باحالتر بررسی عمیق EF Core + Optimization هست که بیایم ببینیم که این EF Core چجوری کار میکنه و اصلا کلک قضیه چیه که EF Core میاد کلاس های ما رو به تیبل های دیتابیس تبدیل میکنه و چجوری LINQ رو به کوئری ای تبدیل میکنه که اون دیتابیس بفهمه و بعدش هم بریم سراغ best practice ها و optimization ها
بازم انتخاب با خودتون هست...
دومین مبحثی که تو نظرسنجی خیلی پرطرفدار بود مبحث DDD بود . من فکر کردم گفتم راجب هرچیزی درمورد DDD صحبت کنم قبلا اساتید بحثشو شکافتن رفتن جلو😂 . که یه سری مباحث باحال تر به ذهنم رسید
۱- اولیش این بود که همه دارن راجب مزایای DDD صحبت میکنن، ما بیایم خلاف جهت حرکت کنیم و از معایبش بگیم و کلا DDD رو بکوبیم. که این مبحث بنظرم خیلی subjective و انتزاعی هست و ممکنه خسته کننده بشه (از اونجایی که خودم با مباحثی که کد دخیلش نشن خیلی حال نمیکنم)
۲- دومین مسئله خیلی باحال بررسی عمیق ASP Net Core هست. هممون روزانه باهاش سر و کله میزنیم ولی شاید ندونیم که پشت صحنه چه اتفاقایی داره میوفته( بخوام مثال بزنم مثلا همه کنترلر ها کلاس سی شارپ هستن ولی تو Http Protocol چیزی به اسم کلاس و OOP نداریم که) یا اصلا kestrel چه کارایی انجام میده.
۳- سومین مسئله خیلی باحالتر بررسی عمیق EF Core + Optimization هست که بیایم ببینیم که این EF Core چجوری کار میکنه و اصلا کلک قضیه چیه که EF Core میاد کلاس های ما رو به تیبل های دیتابیس تبدیل میکنه و چجوری LINQ رو به کوئری ای تبدیل میکنه که اون دیتابیس بفهمه و بعدش هم بریم سراغ best practice ها و optimization ها
بازم انتخاب با خودتون هست...
کدوم موضوع واستون جذابه؟
Anonymous Poll
16%
Bad things about DDD
42%
ASP Net Core in depth
42%
EF Core in Depth + optimization and best practices
.NET Fun
فری تاک راجب میکروسرویس رو به موقع خودش برگزار میکنیم ( یادم نرفته) دومین مبحثی که تو نظرسنجی خیلی پرطرفدار بود مبحث DDD بود . من فکر کردم گفتم راجب هرچیزی درمورد DDD صحبت کنم قبلا اساتید بحثشو شکافتن رفتن جلو😂 . که یه سری مباحث باحال تر به ذهنم رسید ۱- اولیش…
راجب مورد سوم
یکی از MVP ها و Senior Software Engineer های مایکروسافت که مستقیم روی EF Core کار میکنه ( که من این شخص رو بیچاره کردم از بس ازش سوال پرسیدم 😂) اقای Shay Rojansky هست. شخصیت خیلی باحال و صبور و صمیمی ای داره ( برخلاف خیلی از ماها که وقتی دوتا مقاله میخونیم دیگه خدا رو بنده نیستیم) . همیشه راجب EF Core بحث ها و رفرنس های خوبی رو معرفی میکنه که میتونه واسه دوستان مفید باشه
https://mobile.twitter.com/shayrojansky
https://dotnetfoundation.org/community/speakers/shay-rojansky
https://www.linkedin.com/in/shay-rojansky
یکی از MVP ها و Senior Software Engineer های مایکروسافت که مستقیم روی EF Core کار میکنه ( که من این شخص رو بیچاره کردم از بس ازش سوال پرسیدم 😂) اقای Shay Rojansky هست. شخصیت خیلی باحال و صبور و صمیمی ای داره ( برخلاف خیلی از ماها که وقتی دوتا مقاله میخونیم دیگه خدا رو بنده نیستیم) . همیشه راجب EF Core بحث ها و رفرنس های خوبی رو معرفی میکنه که میتونه واسه دوستان مفید باشه
https://mobile.twitter.com/shayrojansky
https://dotnetfoundation.org/community/speakers/shay-rojansky
https://www.linkedin.com/in/shay-rojansky
بررسی repository design pattern
پیاده سازی Auto Mapper
بررسی Response Caching
اینها به عنوان مباحث دوره میکروسرویس در یک سایت معروف آورده شده ( حالا اسمشو نمیاریم ولی ارائه دهندش معروف به معماری DDD هست) قیمت دوره ۶۰۰ هزارتومان
حالا کامنت ها:
استاد عزیز❤️❤️❤️
استاد شما دید من نسبت به برنامه نویسی رو تغییر دادید
استاد بدون شما چجوری به زندگی ادامه میدادیم❤️❤️❤️
استاد...
جدا از اینکه من کلا با بحث پول دادن به منابع ایرانی که کپی پیست داکیومنت ها و دوره های خارجی هست ( استثنا هم هست بینشون صددرصد) مشکل دارم، مشکل اصلی این هست که الان تبلیغات نقش به مراتب مهمتری رو به نسبت دانش فنی طرف بازی میکنه و نتیجه اش این میشه که یک سری بیسواد به خودشون میگن استاد و نتیجش این میشه که سطح جامعه برنامه نویسی به شدت افت میکنه. و بنظرم این وظیفه ماست که هم خودمون خوب رو از بد تشخیص بدیم و هم به دیگران کمک کنیم که مسیر درست رو از غلط تشخیص بدن
پیاده سازی Auto Mapper
بررسی Response Caching
اینها به عنوان مباحث دوره میکروسرویس در یک سایت معروف آورده شده ( حالا اسمشو نمیاریم ولی ارائه دهندش معروف به معماری DDD هست) قیمت دوره ۶۰۰ هزارتومان
حالا کامنت ها:
استاد عزیز❤️❤️❤️
استاد شما دید من نسبت به برنامه نویسی رو تغییر دادید
استاد بدون شما چجوری به زندگی ادامه میدادیم❤️❤️❤️
استاد...
جدا از اینکه من کلا با بحث پول دادن به منابع ایرانی که کپی پیست داکیومنت ها و دوره های خارجی هست ( استثنا هم هست بینشون صددرصد) مشکل دارم، مشکل اصلی این هست که الان تبلیغات نقش به مراتب مهمتری رو به نسبت دانش فنی طرف بازی میکنه و نتیجه اش این میشه که یک سری بیسواد به خودشون میگن استاد و نتیجش این میشه که سطح جامعه برنامه نویسی به شدت افت میکنه. و بنظرم این وظیفه ماست که هم خودمون خوب رو از بد تشخیص بدیم و هم به دیگران کمک کنیم که مسیر درست رو از غلط تشخیص بدن