@one_programmer
اعتماد یا بی اعتمادی؟
پاسخ این سوال را می توانید با استفاده از "نظریه بازی ها" ببینید. نظریه بازی میتواند روشن کند که چرا بیاعتمادی همه گیر شده است و ما چطور میتوانیم برای آن چارهای پیدا کنیم.
بازی کوتاه "تکامل اعتماد" بر اساس نظریه بازی ها که توسط دکتر حامد سیدعلایی از پژوهشکده علوم شناختی IPM ترجمه شده است.
https://hamed.github.io/trust/
@one_programmer
اعتماد یا بی اعتمادی؟
پاسخ این سوال را می توانید با استفاده از "نظریه بازی ها" ببینید. نظریه بازی میتواند روشن کند که چرا بیاعتمادی همه گیر شده است و ما چطور میتوانیم برای آن چارهای پیدا کنیم.
بازی کوتاه "تکامل اعتماد" بر اساس نظریه بازی ها که توسط دکتر حامد سیدعلایی از پژوهشکده علوم شناختی IPM ترجمه شده است.
https://hamed.github.io/trust/
@one_programmer
hamed.github.io
تکامل اعتماد
یک راهنمای تعاملی برای نظریه بازی درباره اینکه چرا به یکدیگر اعتماد میکنیم
@one_programmer
پیغام های مزخرف "نام کاربری یا رمز عبور اشتباه هست"
یکی از best practice هایی که همیشه رعایت میشه ، زمانی هست که کاربر login میکنه . اگه رمز عبور یا نام کاربری اشتباه زده بشه ، پیغام "نام کاربری یا رمز عبور اشتباه هست" داده میشود ، اینکار برای این است که هکر ها متوجه اشتباه بودن نام کاربری نشوند.
این مقاله به این موضوع اشاره میکنه که اینکار مزخرف است !
“username or password incorrect” is bullshit
https://hackernoon.com/username-or-password-is-incorrect-is-bullshit-89985ca2be48
@one_programmer
پیغام های مزخرف "نام کاربری یا رمز عبور اشتباه هست"
یکی از best practice هایی که همیشه رعایت میشه ، زمانی هست که کاربر login میکنه . اگه رمز عبور یا نام کاربری اشتباه زده بشه ، پیغام "نام کاربری یا رمز عبور اشتباه هست" داده میشود ، اینکار برای این است که هکر ها متوجه اشتباه بودن نام کاربری نشوند.
این مقاله به این موضوع اشاره میکنه که اینکار مزخرف است !
“username or password incorrect” is bullshit
https://hackernoon.com/username-or-password-is-incorrect-is-bullshit-89985ca2be48
@one_programmer
Hackernoon
“username or password incorrect” is bullshit | HackerNoon
There’s a <a href="https://hackernoon.com/tagged/security" target="_blank">security</a> best practice where sign ins aren’t supposed to say “password is incorrect”. Instead they’re supposed to say the “<em>username</em> or password is incorrect”. This “best…
@one_programmer
12 best practices for user account, authorization and password management
https://cloudplatform.googleblog.com/2018/01/12-best-practices-for-user-account.html
@one_programmer
12 best practices for user account, authorization and password management
https://cloudplatform.googleblog.com/2018/01/12-best-practices-for-user-account.html
@one_programmer
Google Cloud Blog
12 best practices for user account, authentication and password management | Google Cloud Blog
Account management, authentication and password management can be tricky. For many developers, account management is a dark corner that doesn't get enough
Forwarded from Software Philosophy
مقایسه ایران با مایکروسافت ۱۰ سال پیش! تلگرام را فیلتر کنیم؟
تلگرام یک تهدید است برای اجتماع ایران؟ تلگرام یک تهدید است برای اقتصاد؟ همه اینها درست هستند ولی قضیه عمیقتر از خود تلگرام است. در حقیقت تلگرام نماینده یک شبکه باز است که در آن همه آزادانه حق دارند صحبت کنند بدون ترس از دستگیر شدن! و در آینده همه حق دارند با ازر دیجیتالی معامله کنند . در حقیقت این دو عبارت است که تهدید است نه خود تلگرام. تلگرام فقط ابزاری است که این دو را در اختیار قرار داده.
فیلتر کردن تلگرام فقط فیلتر کردن یک برنامه است. نکته مهم این طرز تفکر است، آن را چطور فیلتر کنیم؟ مثل صدا و سیما، ماهواره را ممنوع کردند تا صدا و سیما بیشتر دیده شود. فیلتر کردن ابزار به جای حل کردن مشکل. مشکل اصلی سلیقه مردم است که صدا و سیما همخوانی ندارد. با ممنوع کردن ماهواره هم این طرز فکر عوض نشد.
مشکل ما با بستری است که مردم در آن با یک #تکرار_میکنم رئیس جمهورشان را انتخاب کردهاند. مشکل اصلی ما این است که اگر مردم بتوانند در یک شبکه باز صحبت کنند چه کنیم؟ اگر در گروهها یا کانالهایی عضو شوند که ما دوست نداریم چه کنیم؟ مشکل ما با طرز فکر مردم است که نمیتوانیم آن را تحمل کنیم، پس ترجیح میدهیم آن را نبینیم! با فیلتر کردن هم این طرز فکر عوض نمیشود فقط تا مدتی دیده نمیشود.
از این لحاظ رویکرد ما خیلی شبیه مایکروسافت ۱۰ سال پیش است. مایکروسافتی که با دنیای open-source مخالف بود و سعی در نادیده گرفتن آن داشت تا جایی که به مرز حذف از بازار برنامهنویسی رسید. ولی آنها فهمیدند، خود را تغییر دادند، اوپنسورس بودن را درک کردند. به جای مقابله با آن شروع به استفاده از مزایای آن کردند و اکنون فعالترین open-souce community در github هستند. و آرام آرام در حال بازگشت به بازار.
اگر تلگرام را تهدید میبینیم، به خاطر این است که «باز بودن« یا «open-source بودن» را تهدید میبینیم و باید به حال آن فکری کنیم. با فیلتر کردن ابزار، این طرز فکر از بین نمیرود، فقط تبدیل به حالت جنگجویانهترش میشود و فیلتر کننده را از بین میبرد.
اگر میخواهیم رفع انحصار کنیم، باید مسنجری بسازیم که به واسطه طرز فکر بینظیرش اعتماد خارجیها را نیز جذب کند تا عضو آن شوند، چه برسد به خودمان.
ارز دیجیتال به هر حال میآید، اگر از آن میترسیم و برایمان تهدید است باید ارز دیجیتالی بسازیم که به خاطر طرز فکر بینظیرش بقیه جهان را نیز جذب کند، چه برسد به خودمان.
اعتماد خود و بقیه را نمیتوان با بسته نگه داشتن به دست آورد. باید در شفاف بودن و باز بودن ابتکار داشته باشیم تا اعتماد خلق کنیم. اگر بزرگ فکر نکنیم، کوچک میشویم. اگر کوچک فکر کنیم، بعد از مدتی وجود نخواهیم داشت.
نکته بعدی تکنولوژی blockchain است. قبل از آنکه باز هم دیر شود باید از الان روی آن کار کنیم. به جای اینکه از آن بترسیم باید آن را یاد بگیریم و از آن استفاده کنیم. من از آقای کورنگی، مدیرعامل MAPS متشکرم که سال پیش من را با این مفهوم آشنا کردند و باعث شدند مطالعاتی را در این زمینه شروع کنم. معتقدم باید از قدرت آیندهبینی و آیندهنگاری افرادی مثل ایشان نهایت استفاده را ببریم.
http://mehrandvd.me
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
http://ow.ly/wJ6i30jn1B4
#مهران_داودی (http://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
تلگرام یک تهدید است برای اجتماع ایران؟ تلگرام یک تهدید است برای اقتصاد؟ همه اینها درست هستند ولی قضیه عمیقتر از خود تلگرام است. در حقیقت تلگرام نماینده یک شبکه باز است که در آن همه آزادانه حق دارند صحبت کنند بدون ترس از دستگیر شدن! و در آینده همه حق دارند با ازر دیجیتالی معامله کنند . در حقیقت این دو عبارت است که تهدید است نه خود تلگرام. تلگرام فقط ابزاری است که این دو را در اختیار قرار داده.
فیلتر کردن تلگرام فقط فیلتر کردن یک برنامه است. نکته مهم این طرز تفکر است، آن را چطور فیلتر کنیم؟ مثل صدا و سیما، ماهواره را ممنوع کردند تا صدا و سیما بیشتر دیده شود. فیلتر کردن ابزار به جای حل کردن مشکل. مشکل اصلی سلیقه مردم است که صدا و سیما همخوانی ندارد. با ممنوع کردن ماهواره هم این طرز فکر عوض نشد.
مشکل ما با بستری است که مردم در آن با یک #تکرار_میکنم رئیس جمهورشان را انتخاب کردهاند. مشکل اصلی ما این است که اگر مردم بتوانند در یک شبکه باز صحبت کنند چه کنیم؟ اگر در گروهها یا کانالهایی عضو شوند که ما دوست نداریم چه کنیم؟ مشکل ما با طرز فکر مردم است که نمیتوانیم آن را تحمل کنیم، پس ترجیح میدهیم آن را نبینیم! با فیلتر کردن هم این طرز فکر عوض نمیشود فقط تا مدتی دیده نمیشود.
از این لحاظ رویکرد ما خیلی شبیه مایکروسافت ۱۰ سال پیش است. مایکروسافتی که با دنیای open-source مخالف بود و سعی در نادیده گرفتن آن داشت تا جایی که به مرز حذف از بازار برنامهنویسی رسید. ولی آنها فهمیدند، خود را تغییر دادند، اوپنسورس بودن را درک کردند. به جای مقابله با آن شروع به استفاده از مزایای آن کردند و اکنون فعالترین open-souce community در github هستند. و آرام آرام در حال بازگشت به بازار.
اگر تلگرام را تهدید میبینیم، به خاطر این است که «باز بودن« یا «open-source بودن» را تهدید میبینیم و باید به حال آن فکری کنیم. با فیلتر کردن ابزار، این طرز فکر از بین نمیرود، فقط تبدیل به حالت جنگجویانهترش میشود و فیلتر کننده را از بین میبرد.
اگر میخواهیم رفع انحصار کنیم، باید مسنجری بسازیم که به واسطه طرز فکر بینظیرش اعتماد خارجیها را نیز جذب کند تا عضو آن شوند، چه برسد به خودمان.
ارز دیجیتال به هر حال میآید، اگر از آن میترسیم و برایمان تهدید است باید ارز دیجیتالی بسازیم که به خاطر طرز فکر بینظیرش بقیه جهان را نیز جذب کند، چه برسد به خودمان.
اعتماد خود و بقیه را نمیتوان با بسته نگه داشتن به دست آورد. باید در شفاف بودن و باز بودن ابتکار داشته باشیم تا اعتماد خلق کنیم. اگر بزرگ فکر نکنیم، کوچک میشویم. اگر کوچک فکر کنیم، بعد از مدتی وجود نخواهیم داشت.
نکته بعدی تکنولوژی blockchain است. قبل از آنکه باز هم دیر شود باید از الان روی آن کار کنیم. به جای اینکه از آن بترسیم باید آن را یاد بگیریم و از آن استفاده کنیم. من از آقای کورنگی، مدیرعامل MAPS متشکرم که سال پیش من را با این مفهوم آشنا کردند و باعث شدند مطالعاتی را در این زمینه شروع کنم. معتقدم باید از قدرت آیندهبینی و آیندهنگاری افرادی مثل ایشان نهایت استفاده را ببریم.
http://mehrandvd.me
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
http://ow.ly/wJ6i30jn1B4
#مهران_داودی (http://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
LinkedIn
مقایسه ایران با مایکروسافت ۱۰ سال پیش! تلگرام را فیلتر کنیم؟
تلگرام یک تهدید است برای اجتماع ایران؟ تلگرام یک تهدید است برای اقتصاد؟ همه اینها درست هستند ولی قضیه عمیقتر از خود تلگرام است. در حقیقت تلگرام نماینده یک شبکه باز است که در آن همه آزادانه حق دارند صحبت کنند بدون ترس از دستگیر شدن! و در آینده همه حق دارند…
@one_programmer
این Regex.CacheSize لعنتی !!
مدت ها بود که میدیدم میکرو سرویس هامون بعضی مواقع دان میشن و کلا جواب نمیدن...
کلی لاگ گذاشته بودیم و مانیتور میکردیم اما باز هم این اتفاق می افتاد. بعد از کلی بررسی و وقتی که شخصا روی این موضوع گذاشتم به این نکته رسیدم. شما وقتی از Regex استفاده میکنید، به این صورت Regex.x . متد x میتونه هر متدی باشه، اگر به صورت option بیایید Compiled رو بدید ممکنه دچار اشتباه وحشتناکی بشید !!!
مشکل جایی شروع میشه که Regex.x میاد پترنی که شما بهش میدید رو کش میکنه و سایز کش اون برابر ۱۵ هست !!!
اگر تعداد پترن های regex های شما بیشتر از ۱۵ باشه با کندی شدیدی رو به رو میشید. کندی که ریسورس سخت افزاری زیادی نمیگیره اما برنامه تون دیگه به درخواست ها جواب نمیده.
راحل: افزایش سایز cache
Regex.cacheSize= 100;
مقاله ماکروسافت در مورد best practice های Regex
https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices
@one_programmer
این Regex.CacheSize لعنتی !!
مدت ها بود که میدیدم میکرو سرویس هامون بعضی مواقع دان میشن و کلا جواب نمیدن...
کلی لاگ گذاشته بودیم و مانیتور میکردیم اما باز هم این اتفاق می افتاد. بعد از کلی بررسی و وقتی که شخصا روی این موضوع گذاشتم به این نکته رسیدم. شما وقتی از Regex استفاده میکنید، به این صورت Regex.x . متد x میتونه هر متدی باشه، اگر به صورت option بیایید Compiled رو بدید ممکنه دچار اشتباه وحشتناکی بشید !!!
مشکل جایی شروع میشه که Regex.x میاد پترنی که شما بهش میدید رو کش میکنه و سایز کش اون برابر ۱۵ هست !!!
اگر تعداد پترن های regex های شما بیشتر از ۱۵ باشه با کندی شدیدی رو به رو میشید. کندی که ریسورس سخت افزاری زیادی نمیگیره اما برنامه تون دیگه به درخواست ها جواب نمیده.
راحل: افزایش سایز cache
Regex.cacheSize= 100;
مقاله ماکروسافت در مورد best practice های Regex
https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices
@one_programmer
Docs
Best Practices for Regular Expressions in .NET - .NET
Learn how to create efficient, effective regular expressions in .NET.
@one_programmer
C# Memory Barriers and Volatility
http://www.albahari.com/threading/part4.aspx
https://www.c-sharpcorner.com/UploadFile/009ee3/threading-overview-in-C-Sharp/
@one_programmer
C# Memory Barriers and Volatility
http://www.albahari.com/threading/part4.aspx
https://www.c-sharpcorner.com/UploadFile/009ee3/threading-overview-in-C-Sharp/
@one_programmer
C-Sharpcorner
Threading Overview In C#
In this article we will learn about threading overview in c#. Thread is a small set of executable instructions and this set of instructions can be used to isolate a task from a process
@one_programmer
بررسی بهبود ها و بنچمارک های Net Core 5. که قرار به زودی منتشر بشه. فقط این نسخه LTS نیست و پشتیبانی کوتاهی داره. مقاله زیر بهبود های عالی از این نسخه به نمایش گذاشته.
https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/
@one_programmer
بررسی بهبود ها و بنچمارک های Net Core 5. که قرار به زودی منتشر بشه. فقط این نسخه LTS نیست و پشتیبانی کوتاهی داره. مقاله زیر بهبود های عالی از این نسخه به نمایش گذاشته.
https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/
@one_programmer
Microsoft News
Performance Improvements in .NET 5
Explore many performance improvements, big and small, that have gone into the .NET 5 runtime and core libraries to make apps and services leaner and faster.
@one_programmer
Asp Core .NET 5 Preview 8
منتشر شد.
تغییرات خیلی خوبی داشته. همراه با اون ٍEf Core .Net 5 Preview 8 هم منتشر شده. در پست های بعدی لیست تغییرات رو بررسی میکنیم.
-Azure Active Directory authentication with
Microsoft.Identity.Web
-CSS isolation for Blazor components
-Lazy loading in Blazor WebAssembly
-Updated Blazor WebAssembly globalization support
-New InputRadio Blazor component
-Set UI focus in Blazor apps
-Influencing the HTML head in Blazor apps
-IAsyncDisposable for Blazor components
-Control Blazor component instantiation
-Protected browser storage
-Model binding and validation with C# 9 record types
-Improvements to DynamicRouteValueTransformer
-Auto refresh with dotnet watch
-Console Logger Formatter
-JSON Console Logger
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-5-preview-8/
https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-ef-core-5-0-preview-8/
https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-8/
@one_programmer
Asp Core .NET 5 Preview 8
منتشر شد.
تغییرات خیلی خوبی داشته. همراه با اون ٍEf Core .Net 5 Preview 8 هم منتشر شده. در پست های بعدی لیست تغییرات رو بررسی میکنیم.
-Azure Active Directory authentication with
Microsoft.Identity.Web
-CSS isolation for Blazor components
-Lazy loading in Blazor WebAssembly
-Updated Blazor WebAssembly globalization support
-New InputRadio Blazor component
-Set UI focus in Blazor apps
-Influencing the HTML head in Blazor apps
-IAsyncDisposable for Blazor components
-Control Blazor component instantiation
-Protected browser storage
-Model binding and validation with C# 9 record types
-Improvements to DynamicRouteValueTransformer
-Auto refresh with dotnet watch
-Console Logger Formatter
-JSON Console Logger
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-5-preview-8/
https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-ef-core-5-0-preview-8/
https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-8/
@one_programmer
ASP.NET Blog
ASP.NET Core updates in .NET 5 Preview 8
.NET 5 Preview 8 is now available and is ready for evaluation. Here’s what’s new in this release: Azure Active Directory authentication with Microsoft.Identity.Web CSS isolation for Blazor components Lazy loading in Blazor WebAssembly Updated Blazor WebAssembly…
@one_programmer
Automatically find latent bugs in your code with .NET 5
https://devblogs.microsoft.com/dotnet/automatically-find-latent-bugs-in-your-code-with-net-5/
@one_programmer
Automatically find latent bugs in your code with .NET 5
https://devblogs.microsoft.com/dotnet/automatically-find-latent-bugs-in-your-code-with-net-5/
@one_programmer
Microsoft News
Automatically find latent bugs in your code with .NET 5
Introducing AnalysisLevel in the C# compiler to introduce warnings to patterns like common codingmistakes or common API misuse.
@one_programmer
توی net core. 3 ماکروسافت از قابلیتی پرده برداشت که Trimming یا assembly linker نام داشت. این قابلیت می اومد خروجی نهایی پروژتون رو با حذف کتابخانه هایی که استفاده نمیکردید به صورت خوبی کاهش میداد. حالا ماکروسافت پاش رو فراتر گذاشته و توی core 5 اومده این قابلیت رو خیلی بهبود داده. طبق مقاله ایی که توی بلاگ ماکروسافت هست و تست گرفتن،برنامه به حدود ۱۰ مگابایت رسیده !
https://devblogs.microsoft.com/dotnet/app-trimming-in-net-5/
@one_programmer
توی net core. 3 ماکروسافت از قابلیتی پرده برداشت که Trimming یا assembly linker نام داشت. این قابلیت می اومد خروجی نهایی پروژتون رو با حذف کتابخانه هایی که استفاده نمیکردید به صورت خوبی کاهش میداد. حالا ماکروسافت پاش رو فراتر گذاشته و توی core 5 اومده این قابلیت رو خیلی بهبود داده. طبق مقاله ایی که توی بلاگ ماکروسافت هست و تست گرفتن،برنامه به حدود ۱۰ مگابایت رسیده !
https://devblogs.microsoft.com/dotnet/app-trimming-in-net-5/
@one_programmer
Microsoft News
App Trimming in .NET 5
Trimming is an option as part of publishing self contained apps in .NET Core. This post goes into more detail about the trimming options in .NET 5 including type and member level trimming.
@one_programmer
Secrets of a .NET Professional
https://khalidabuhakmeh.com/secrets-of-a-dotnet-professional
@one_programmer
Secrets of a .NET Professional
https://khalidabuhakmeh.com/secrets-of-a-dotnet-professional
@one_programmer
Khalid Abuhakmeh’s Blog
Secrets of a .NET Professional
Find out what over a decade of being a .NET professional has taught me and learn from my journey. The advice in this post might help you avoid some pitfalls.
@one_programmer
خواندن کد های دیگران باعث میشه ما برنامه نویس بهتری بشیم. این موضوع فارغ از زبان برنامه نویسی یک اصل هست. در پست قبلی هم یکی از نکته ها این موضوع بود. وقتی شما کد های پروژه ها رو میخوانید که هزاران نفر روی آن در Github کار کردن کار بسیار خوبی هست. میتوانید ایده های خوبی بگیرید و دست خط دیگران رو یاد بگیرید. این باعث میشه شما debugger عالی هم بشید و دلیل رفتار های lib که استفاده میکنید را بررسی کنید. برای خواندن کد های دیگران و پروژه هایی که در قابل nuget دارید استفاده میکنید راه های زیادی وجود دارد.
۱. استفاده از ابزاری مثل resharper یا rider ide
۲. استفاده از ابزار های decompiler کنار کارتان مثل reflector
۳. استفاده از visual studio
ما در این پست از visual studio استفاده میکنیم که یک ابزار داخلی هست و نیاز به نصب ابزاری نداره. شما باید نسخه ۱۶.۵ به بعد را نصب کنید. در این نسخه ماکروسافت از iLSpy استفاده کرده است که یک ابزار کاملا open source هست و در داخل Github قرار دارد. برای فعال سازی این قابلیت که فعلا به صورت پیشفرض غیر فعال هست باید در منو Tools در بخش Options کلمه decompile را سرچ کنید. در بخش Advance گزینه Enable navigation to decompiled sources (experimental) را تیک بزنید. هر جای پروژه میتوانید دکمه f12 رو بزنید و کد decompile شده رو بررسی کنید.
استفاده از این قابلیت بهترین گزینه نیست اما برای برنامه نویس هایی که نمیخان ابزار جدیدی نصب کنن بسیار عالی هست.
مقاله زیر هم به این موضوع میپردازه
https://devblogs.microsoft.com/visualstudio/decompilation-of-c-code-made-easy-with-visual-studio/
لینک مخزن iLSpy
https://github.com/icsharpcode/ILSpy
@one_programmer
خواندن کد های دیگران باعث میشه ما برنامه نویس بهتری بشیم. این موضوع فارغ از زبان برنامه نویسی یک اصل هست. در پست قبلی هم یکی از نکته ها این موضوع بود. وقتی شما کد های پروژه ها رو میخوانید که هزاران نفر روی آن در Github کار کردن کار بسیار خوبی هست. میتوانید ایده های خوبی بگیرید و دست خط دیگران رو یاد بگیرید. این باعث میشه شما debugger عالی هم بشید و دلیل رفتار های lib که استفاده میکنید را بررسی کنید. برای خواندن کد های دیگران و پروژه هایی که در قابل nuget دارید استفاده میکنید راه های زیادی وجود دارد.
۱. استفاده از ابزاری مثل resharper یا rider ide
۲. استفاده از ابزار های decompiler کنار کارتان مثل reflector
۳. استفاده از visual studio
ما در این پست از visual studio استفاده میکنیم که یک ابزار داخلی هست و نیاز به نصب ابزاری نداره. شما باید نسخه ۱۶.۵ به بعد را نصب کنید. در این نسخه ماکروسافت از iLSpy استفاده کرده است که یک ابزار کاملا open source هست و در داخل Github قرار دارد. برای فعال سازی این قابلیت که فعلا به صورت پیشفرض غیر فعال هست باید در منو Tools در بخش Options کلمه decompile را سرچ کنید. در بخش Advance گزینه Enable navigation to decompiled sources (experimental) را تیک بزنید. هر جای پروژه میتوانید دکمه f12 رو بزنید و کد decompile شده رو بررسی کنید.
استفاده از این قابلیت بهترین گزینه نیست اما برای برنامه نویس هایی که نمیخان ابزار جدیدی نصب کنن بسیار عالی هست.
مقاله زیر هم به این موضوع میپردازه
https://devblogs.microsoft.com/visualstudio/decompilation-of-c-code-made-easy-with-visual-studio/
لینک مخزن iLSpy
https://github.com/icsharpcode/ILSpy
@one_programmer
Microsoft News
Decompilation of C# code made easy with Visual Studio
Have you ever experienced an exception occurring in a 3rd party .NET assembly but had no source code to figure out why? You can now use Visual Studio to decompile managed code even if you don't have the symbols, allowing you to look at code, inspect variables…
@one_programmer
در مقاله زیر در مورد استفاده از ActionBlock در کلاس Tpl Dataflow صبحت میکنیم.
کلاس Tpl شامل تعداد زیادی زیر کلاس مفید برای کار های همزمانی هست، در زیر کلاس DataFlow ما میتونیم یک Flow یا Pipline درست بکنیم و آیتم ها رو پردازش بکنیم. یک کارخانه رو در نظر بگیرید که یک خط مستقیم داره که محصولات از روی اون رد میشن و کارگر ها به ترتیب دونه دونه محصولات رو برمیدارن و کار خاصی روش انجام میدن. این ساده شده Tpl DataFlow هست. یا فرض کنید یکسری ویدیو دارید که باید اون ها رو دونه دونه پردازش کنید. اول عملیات فشرده سازی رو انجام بدید و بعد با چند تا کیفیت ذخیره کنید. برای این موارد میشه از DataFlow استفاده کرد. در Dataflow میشه تنظیمات خاصی رو گذاشت که برای مثال درجه همزمانی تعداد کار رو تنظیم کرد، یا Buffer گذاشت برای ورودی Flow و..... زیاد وارد جزئیات Dataflow نمیشم اما کلاس های زیادی داره برای اینکار.
در Dataflow مامیتونیم یک flow درست کنیم و برای این flow تعدادی block درست کنیم و به ترتیب اون ها رو به هم وصل کنیم. هر block خودش ۲ تا buffer داره. یکی برای ورودی و یکی برای خروجی.یعنی مامیتونیم آیتم به block ها بفرستیم و منتظر جواب نمونیم.میشه foreach گذاشت و همزمان داده ها رو بهش پاس داد و همزمان هم داده ها به صورت concurrent و async پردازش بشن.
یکی از کلاس های Dataflow که برای انتها flow هست ActionBlock هست.
ما در این مقاله از ActionBlock برای انجام کار به صورت پیش زمینه استفاده میکنیم.
https://medium.com/@mohsen_rajabi/do-async-and-concurrent-work-with-actionblock-dataflow-in-c-f5da63ff3692
@one_programmer
در مقاله زیر در مورد استفاده از ActionBlock در کلاس Tpl Dataflow صبحت میکنیم.
کلاس Tpl شامل تعداد زیادی زیر کلاس مفید برای کار های همزمانی هست، در زیر کلاس DataFlow ما میتونیم یک Flow یا Pipline درست بکنیم و آیتم ها رو پردازش بکنیم. یک کارخانه رو در نظر بگیرید که یک خط مستقیم داره که محصولات از روی اون رد میشن و کارگر ها به ترتیب دونه دونه محصولات رو برمیدارن و کار خاصی روش انجام میدن. این ساده شده Tpl DataFlow هست. یا فرض کنید یکسری ویدیو دارید که باید اون ها رو دونه دونه پردازش کنید. اول عملیات فشرده سازی رو انجام بدید و بعد با چند تا کیفیت ذخیره کنید. برای این موارد میشه از DataFlow استفاده کرد. در Dataflow میشه تنظیمات خاصی رو گذاشت که برای مثال درجه همزمانی تعداد کار رو تنظیم کرد، یا Buffer گذاشت برای ورودی Flow و..... زیاد وارد جزئیات Dataflow نمیشم اما کلاس های زیادی داره برای اینکار.
در Dataflow مامیتونیم یک flow درست کنیم و برای این flow تعدادی block درست کنیم و به ترتیب اون ها رو به هم وصل کنیم. هر block خودش ۲ تا buffer داره. یکی برای ورودی و یکی برای خروجی.یعنی مامیتونیم آیتم به block ها بفرستیم و منتظر جواب نمونیم.میشه foreach گذاشت و همزمان داده ها رو بهش پاس داد و همزمان هم داده ها به صورت concurrent و async پردازش بشن.
یکی از کلاس های Dataflow که برای انتها flow هست ActionBlock هست.
ما در این مقاله از ActionBlock برای انجام کار به صورت پیش زمینه استفاده میکنیم.
https://medium.com/@mohsen_rajabi/do-async-and-concurrent-work-with-actionblock-dataflow-in-c-f5da63ff3692
@one_programmer
Medium
Do async and concurrent work with ActionBlock DataFlow in c#
In many scenarios in different projects, there are usually a number of things that we want to do in addition to the main work, but the…
@one_programmer
ASP.NET Core Apps Observability
https://devblogs.microsoft.com/aspnet/observability-asp-net-core-apps/
@one_programmer
ASP.NET Core Apps Observability
https://devblogs.microsoft.com/aspnet/observability-asp-net-core-apps/
@one_programmer
ASP.NET Blog
ASP.NET Core Apps Observability
Based on customers using .NET Core in different environments, this article explores options for adding observability to .NET Core apps.
@one_programmer
نکات جالب از stackoverflow با 1.3 بیلیون لود صفحه در ماه !!!
این لینک از چگونگی اینکار داده و ابزار ها رو کامل مشخص کرده. مثل سرور و تعداد سرور دیتابیس. همچنین نشون میده از Redis استفاده میشه که 2 تا نود دارن و با کلاینت که خودشون نوشتن به اسم StackExchange باهاش کار میکنن. همچنین استفاده از Jil برای json کردن. و همچنین Dapper به عنوان ORM خودشون. سرور های Elastic رو دارن برای بحث index کردن.2 تا سرور HAPAroxy دارن که فوق العاده هست. پیشنهاد میدم بخونید لینک زیر رو
https://stackexchange.com/performance
شرکت Stackoverflow اومده بیشتر ابزار های خودش رو opensource کرده که داخل github هست. https://github.com/StackExchange
@one_programmer
نکات جالب از stackoverflow با 1.3 بیلیون لود صفحه در ماه !!!
این لینک از چگونگی اینکار داده و ابزار ها رو کامل مشخص کرده. مثل سرور و تعداد سرور دیتابیس. همچنین نشون میده از Redis استفاده میشه که 2 تا نود دارن و با کلاینت که خودشون نوشتن به اسم StackExchange باهاش کار میکنن. همچنین استفاده از Jil برای json کردن. و همچنین Dapper به عنوان ORM خودشون. سرور های Elastic رو دارن برای بحث index کردن.2 تا سرور HAPAroxy دارن که فوق العاده هست. پیشنهاد میدم بخونید لینک زیر رو
https://stackexchange.com/performance
شرکت Stackoverflow اومده بیشتر ابزار های خودش رو opensource کرده که داخل github هست. https://github.com/StackExchange
@one_programmer
Stackexchange
Performance - Stack Exchange
We make Stack Overflow and 170+ other community-powered Q&A sites.
@one_programmer
چرا پرتاب Exception اینقدر کند هست . مقاله زیر در مورد این موضوع صحبت میکنه و شدیدا توصیه میکنه که در فلو های نرمال برنامه Exception پرتاب نکنیم.
https://mattwarren.org/2016/12/20/Why-Exceptions-should-be-Exceptional/
@one_programmer
چرا پرتاب Exception اینقدر کند هست . مقاله زیر در مورد این موضوع صحبت میکنه و شدیدا توصیه میکنه که در فلو های نرمال برنامه Exception پرتاب نکنیم.
https://mattwarren.org/2016/12/20/Why-Exceptions-should-be-Exceptional/
@one_programmer
Performance is a Feature!
Why Exceptions should be Exceptional
@one_programmer
وقتی از میکرو سرویس استفاده میکنیم. تجزیه و تحلیل میکرو سرویس و مانیتور اون ها یکی از بزرگ ترین چالش های اصلی شرکت ها هست. فرض کنید ۲۰ تا میکرو سرویس دارید و برای یکی از api ها مشکلی پیش میاد و کند میشه. فلو اون api هم به این شکل هست که از gateway عبور میکنه و به idnetity میرسه و بعد اون به میکرو سرویس a و بعد اون به b و به c میرسه !!!
حالا از کجا متوجه کندی بشیم که کدوم سرویس کند هست؟؟؟
اصلا سرویس کند هست یا دیتابیس کند هست ؟؟؟
شبکه مشکل داره یا خطا داریم و.....
برای این منظور ۲ ابزار خیلی خوب هست، هر دو open source هستن. یکی از اون ها برای uber هست و اون یکی برای elastic هست.
این دو تفاوت زیادی با هم ندارن.
ابزار jaeger برای uber هست و کلاینت اکثر زبان ها رو داره. Ui هم برای تجزیه تحلیل داره.
ابزار apm هم برای elastic هست.
ابزار apm غیر از trace کردن میتونه اطلاعات بیشتری برای تجزیه تحلیل بهتون بده.
برای راه اندازی jaeger نیازه سرور اون رو با داکر all in one خودش بالا بیارید و بعد کلاینت اون رو روی پروژه خودتون ادد کنید.
برای apm هم باید elastic و kibana رو نصب کنید.
Jaeger
https://github.com/jaegertracing/jaeger-client-csharp
Apm
https://github.com/elastic/apm-agent-dotnet
@one_programmer
وقتی از میکرو سرویس استفاده میکنیم. تجزیه و تحلیل میکرو سرویس و مانیتور اون ها یکی از بزرگ ترین چالش های اصلی شرکت ها هست. فرض کنید ۲۰ تا میکرو سرویس دارید و برای یکی از api ها مشکلی پیش میاد و کند میشه. فلو اون api هم به این شکل هست که از gateway عبور میکنه و به idnetity میرسه و بعد اون به میکرو سرویس a و بعد اون به b و به c میرسه !!!
حالا از کجا متوجه کندی بشیم که کدوم سرویس کند هست؟؟؟
اصلا سرویس کند هست یا دیتابیس کند هست ؟؟؟
شبکه مشکل داره یا خطا داریم و.....
برای این منظور ۲ ابزار خیلی خوب هست، هر دو open source هستن. یکی از اون ها برای uber هست و اون یکی برای elastic هست.
این دو تفاوت زیادی با هم ندارن.
ابزار jaeger برای uber هست و کلاینت اکثر زبان ها رو داره. Ui هم برای تجزیه تحلیل داره.
ابزار apm هم برای elastic هست.
ابزار apm غیر از trace کردن میتونه اطلاعات بیشتری برای تجزیه تحلیل بهتون بده.
برای راه اندازی jaeger نیازه سرور اون رو با داکر all in one خودش بالا بیارید و بعد کلاینت اون رو روی پروژه خودتون ادد کنید.
برای apm هم باید elastic و kibana رو نصب کنید.
Jaeger
https://github.com/jaegertracing/jaeger-client-csharp
Apm
https://github.com/elastic/apm-agent-dotnet
@one_programmer
GitHub
GitHub - jaegertracing/jaeger-client-csharp: 🛑 This library is DEPRECATED!
🛑 This library is DEPRECATED! Contribute to jaegertracing/jaeger-client-csharp development by creating an account on GitHub.