thisisnabi.dev [Farsi] – Telegram
thisisnabi.dev [Farsi]
2.16K subscribers
458 photos
38 videos
24 files
160 links
اینجا مطالبی از تجربیات خودم رو در زمینه طراحی سیستم با دات نت باهاتون به اشتراک میذارم.
Download Telegram
thisisnabi.dev [Farsi]
اکسپشن بی صاحب، به این مدل از اکسپشن ها می گن که کسی گردنش نمی گیره تا به یوزر نهایی میرسه. توی میت Defensive Programming به این موضوعات می پردازیم. @thisisnabi_dev
روی API Gateway می تونید globally این مشکل رو حل کنید.
اگر توسعه دهنده ای هم روی یه سرویس یادش رفت و چنین گندی زد، شما حواستون بوده و کارو جم کردین.
یخورده تمیز تر شده، وگرنه زیاد چیز عجیب و غریبی نیست :)

@thisisnabi_dev
وبلاگش رو بخونید حرف نداره مقاله هاش❤️
خدایی زیبا نیست؟
هفته گذشته سر یه مسئله ای نیاز داشتم تا کاپلینگ 2 بخش یه سیستم رو از بین ببرم و ایده این پیاده سازی خیلی کمکم کرد.


@thisisnabi_dev ♻️
از اون روزی که حضرت رایگان شده منم با vs روی سیستم شخصیم خداحافظی کردم.
Asynchronous programming enables scalability, but BE CAREFUL :)
بی خودی هم اعداد فضایی ندید

چند روز پیش به یه دوستم که در xxx چند هکتار باغ داره توصیه کردم چند تا کره خر هم بگیره و ازشون ویدیو بذاریم تو یوتیوب.

قرار شده نصف نصف باشیم درامدش رو 😅
ای کسانی که سیرکت بریکیر می نویسید؛ سیرکت بریکر ننویسید و از polly استفاده کنید :/
با مایکروسرویس شروع نکنید!

این یک کلام ناآگاهانه س. بسته به ماهیت کار شما، باید در فاز discovery به این سوال پاسخ داده بشه که از چه معماری استفاده کنیم، نه اینکه نسخه عمومی براتون بپیچن.
Abstraction over Auth :)

یخورده پیاده سازی گیت هاب متفاوت بود و چون اکثر کارهایی که دارم انجام می دم روی اعتبارسنجی با گیت هاب هستش، ترجیح دادم یه AuthHandler برای گیت هاب بنویسم.

بزرگترین چالشم؟ نداشتم، زدیم رفت :)
دوست داشتید می تونید اینجا کدش رو ببینید.
2 عدد خطا عمدا گذاشتم درش، خواستید خودتون رو محک بزنید و پیداش کنید.

https://github.com/thisisnabi/AspNetCore.Authentication.GitHub
یکی از الزامات Auth2.1

@thisisnabi_dev
این فورس کردن https هم بخشی از الزامات auth2.1 هست.
روی BCL مایکروسافت شما Request.Scheme رو خواهید دید.
thisisnabi.dev [Farsi]
این فورس کردن https هم بخشی از الزامات auth2.1 هست. روی BCL مایکروسافت شما Request.Scheme رو خواهید دید.
این کجا داستان ساز میشه، وقتی دارین پترن Gateway Offloading استفاده میکنید و scheme رو از خود سرویس میگیرید.
احتمالا HTTP بهتون بده.
برای پیاده سازی top k problem با حجم دیتایی بالا (حدودا ۱۵۰ میلیون رکورد) در میت های سیستم دیزاین ۵ ساعت صحبت کردیم و ردیس رو هم به همین بهانه آموزش دادیم.

در این مثال، کنار top k problem باید یه key section هم دیده بشه.
9 ساعت روی Authentication & Authorization صحبت کردیم 🔥
فکر نکنم کلاسی مونده باشه در BCL که یه ناخنکی بهش نزده باشم.

البته هنوز 2 ساعتش مونده :)
تصور کنید در یک سیستم رویداد گرا، حجم زیادی از رویداد ها رو تولید کردید و این باعث شده که یک صفی از رویداد ها تشکیل بشه، به این نتیجه میرسید که یکی از رویداد باید حذف بشه. چه کاری انجام میدید؟ (چند روز دیگه جوابش رو میذارم براتون)
Final Results
20%
رویداد رو از صف حذف می کنید
80%
یک رویداد برای undo کردن تاثیرات رویداد مورد نظر ایجاد می کنید
امروز توی اینستا یه پستی دیدم از این پیج، می گفت ما رو فالو کن بعد کامنت بذار که لیست قیمت فلان محصول رو براتون بفرستیم. من فالو کردم و کامنت گذاشتم.

منتها از پیام مشخصه در اکشن فالوو eventual consistency داریم.
۱۰ ثانیه بعدش کامنت گذاشتم و اوکی بود.

اینکه strong consistency داشته باشید یا تاخیر بروز رسانی رو بپذیرید موضوع جذابی هست که خوبه یادش بگیریم.
👍1
بنظرم audit logging باید در سطح فریم ورک باشه و نباید بسپریمش به برنامه نویس.
چون احتمال فراموش کردنش هست.

یعنی یه بیس کلاسی چیزی باید براش تعریف کنید.
حالا که دات نت ۹ داره میاد

وقتی می خواید فریمورک یک پروژه رو ارتقا بدین باید به breaking changes های نسخه جدید فریمورک  آشنا باشید.

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