DotNetZoom – Telegram
DotNetZoom
2.97K subscribers
342 photos
18 videos
36 files
606 links
DotNetZoom
💎 Everything about .NET

ارتباط با مدیر و تبلیغات آگهی استخدام:
@mjebrahimi

لینک گروه ASPNET Core:
https://news.1rj.ru/str/+ufG25x7lVFgyYTNk
Download Telegram
❇️ مقایسه کارآیی روش‌های مختلف جایگزین کردن حروف در یک رشته در برنامه‌های NET.

چند وقت با وحید نصیری dotnettips.info واسه یکی از ریپازیتوری هاش در مورد یه موضوع performance ایی بحث میکردیم و من یه Sample زدم براش
https://github.com/mjebrahimi/Micro-Optimization-Samples/tree/master/Replace-CharArray-Benchmark

🔸حالا وحید عزیز زحمت کشیدند و یه مقاله آموزشی کامل درباره این موضوع تهیه کرده
هرچند که این موضوع micro optimization ایی هست و به درد جونیور یا میدل ها نمیخوره ولی به سنیور ها خوندنشو پیشنهاد میکنم
https://www.dotnettips.info/post/3242

🔹در اینجا از Span برای افزایش سرعت و همچنین کاهش میزان memory allocation استفاده کردم
از این تکنیک جهت کار با رشته ها توی وب سرور Kesterl به شدت استفاده شده و میزان زیادی از پرفرمنسش رو مدیون این تکنیک هست

توی این ریپو برخی نکات micro optimization ایی که بهش برمیخورم و بنچمارک میگیرم رو نگهداری میکنم
دیدن خالی از لطف نیست و نکات جالب و advance ایی توش هست
https://github.com/mjebrahimi/Micro-Optimization-Samples
_______________
@DotNetZoom
❇️ کیفیت پایین یعنی سرعت پایین 👌

کدی پرفرمنس خوبی داره که قطعا کیفیت خوبی داشته باشه (پیچیدگی کم - خوانایی بالا - تست پذیری - توسعه پذیری و...)

🔰 چندتا از بهترین مقالات Code Quality (معیار های کد با کیفیت)

https://www.perforce.com/blog/sca/what-code-quality-and-how-improve-it

https://www.sealights.io/test-metrics/code-quality-metrics-is-your-code-any-good/

https://www.it-cisq.org/standards/code-quality-standards/

_______________
@DotNetZoom
ابزاری برای اسکن HTTP Headers های امنیتی وبسایت شما

https://securityheaders.com/
_______________
@DotNetZoom
معرفی بهترین ابزار های مستندسازی و تست API

پیشنهاد میکنم حتما ببینینش. ابزار های خوب و کاربردی ایی رو معرفی کرده✌️

https://pronovix.com/blog/free-and-open-source-api-documentation-tools
_______________
@DotNetZoom
❇️ معرفی چند ابزار Issue Tracker و Help Desk دات نتی

یکی از دوستان سراغ ابزار Issue Tracker و Help Desk دات نتی گرفت رفتم یه سرچی زدم خوباشو پیدا کردم گفتم با شما هم به اشتراک بذارم

💎این 2تا بهتریناش هستند
https://github.com/InstantASP/Plato
https://github.com/NullDesk/TicketDesk

🔸این 2تا هم معروفن ولی تکنولوژی شون قدیمیه
https://sourceforge.net/projects/bugnet/
https://sourceforge.net/projects/btnet/
___________________
@DotNetZoom
🔶 لب هم به رومون بسته شد + راهکار ها

مشابه اتفاقی که قبلا واسه GitHub افتاده بود الان متاسفانه واسه GitLab داره میافته
چند روز پیش گیتلب IP های ایران رو تحریم کرد و از دیروز داره اکانت های ایرانی ها رو مسدود میکنه و در این صورت دیگه دسترسی به کد هاتون نخواهید داشت

🔷 و اما حالا باید چیکار کنیم؟

اگه هنوز اکانتتون مسدود نشده عجله کنید و حتما هرچه سریعتر از Repository هاتون Backup بگیرید. دقت داشته باشین که به هیچ عنوان با IP ایران به گیتلب ریکوئست نزنید (هرچند بزنید هم جواب نمیده ولی احتمال مسدود شدن اکانتتون احتمالا بیشتر میشه)

🔰 راهکار های جایگزین

1️⃣ مهاجرت به Azure DevOps :
اگه به دنبال یه سرور گیت با امکانات خوب واسه پروژه های private تون هستید Azure DevOps یکی از بهترین گزینه هاست (هرچند احتمال تحریم در آینده برای این هم وجود داره ولی فعلا ازاده و مشکلی نداره). تنها محدودیت 5 یوزر به ازای هر پروژه داره

2️⃣ گیت سرور شخصی:
اگه به دنبال راه اندازی self-host روی سرور خودتون هستید هم Azure DevOps (تحت عنوان Azure DevOps Server و اینجا) نسخه قابل نصب داره. همچنین GitLab هم نسخه رایگان Community Edition (یا Gitlab CE) داره و این امکان رو به شما میده که سایت گیت لب رو (با یه سری امکانات محدود) روی سرور خودتون نصب کنین.

3️⃣ گزینه های دیگر:
برنامه های دیگری هم وجود داره که امکان راه اندازی git service به صورت self-hosted رو میدن و بهترینشون Gitea و Gogs هستند.
___________________
@DotNetZoom
#زنگ_تفریح

"موزیک برای برنامه نویس ها" نام سایتی است که درآن انواع موزیک های مناسب جهت افزایش تمرکز در حین برنامه نویسی وجود دارد

http://musicforprogramming.net/

________________
@DotNetZoom
Forwarded from Software Philosophy
سی شارپ 9 و بهبود pattern matching:

یکی از برتری های ویژوال بیسک نسبت به سی شارپ, موضوع pattern matching بود (البته قبل از سی شارپ 8).
از سی شارپ 8 به بعد ماکروسافت تمهیدات خاصی در جهت بهبود pattern matching در سی شارپ در نظر گرفت.👇👇

یکی از جالب ترین (و جذاب ترین) این موارد, بهبود در جملات شرطی است که در سی شارپ 9 به آن پرداخته شده است.

if(s is not string)
// is way more easier to read than
if(!(s is string))

خواندن عبارت ابتدایی بسیار آسان تر از عبارت دوم است.

Person p = new Person();
var a = p.Weight switch
{
< 150 => "light"
>= 150 and < 200 => "normal"
not null => "unknown"
null => "error"
};

و هچنین نوشتن این عبارات باعث زیباتر و خواناتر شدن کد می‌شود.

برای اطلاع از دیگر ویژگی های سی شارپ 9 می توانید از این لینک استفاده کنید.

جزئیات بیشتر را می‌توانید در لینک زیر مطالعه کنید:

https://blog.miguelbernard.com/c-9-0-improved-pattern-matching/

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، برروی دکمه «نظرت را بگو» کلیک کنید.

#حامد_حاجیلو (http://bit.ly/2IVjfYD)

کانال تلگرام:
@SoftwarePhilosophy

___
رمزنگاری JWT و افزایش امنیت آن در ASP.NET Core

توکن JWT در حالت عادی به صورت Base64 کدگذاری(Encoding) میشه که این نوع Encoding به راحتی قابل رمزگشایی و خواندنه (امنیت در برابر خوانده شدن نداره).
در این مقاله میخوایم توکن JWT رو رمزنگاری کنیم و اون رو به Json Web Encryption (به اختصار JWE) تبدیل کنیم و امنیتش رو بالا ببریم
https://www.dotnettips.info/post/2992

مثال کامل و قابل اجرا در ریپازیتوری گیتهاب:
https://github.com/mjebrahimi/Jwt-Encryption-AspCore
____________
@DotNetZoom
Forwarded from کدهک
برگزاری کارگاه آموزشی EF Core 5.0

در این دوره مباحث مقدماتی تا پیشرفته در EF Core آموزش داده میشود. دوره به صورت غیر حضوری برگزار میشود و همه قسمتها از پیش ضبط و قابل دانلود می باشد.

سرفصلها :
معرفی قابلیت های جدید
آموزش SQL Server و T-SQL
َشروع به کار با Code First
آموزش Fluent API
طراحی دیتابیس و ایجاد رابطه
خواندن و گزارش گیری از دیتابیس
کار با LINQ به صورت حرفه ای
ایجاد تغییرات در داده ها
کار با تراکنشها
رهگیری تغییرات
لوگ کردن و تست
پیاده سازی الگوی ریپوزیتوری و Unit Of Work
قابلیت های پیشرفته در EF Core
آموزش Dapper

شروع دوره : 1 آبان 99
مدت دوره : 20 ساعت
هزینه دوره : 400 هزارتومان

جهت ثبت نام با آی دی @codehak یا شماره 09380146555 تماس بگیرید.
🔸سال 93 یه پلاگین بررسی متن و پیشنهاد دهنده سئو واسه ASP MVC نوشتم (مشابه Yoast واسه WordPress) که خیلی باحال بود

🔹چند روز پیش به NETStandard آپدیتش کردم و گذاشتمش گیتهابم
https://github.com/mjebrahimi/DNZ.SEOChecker

🔰پ.ن:
1️⃣ الان دیگه قصد نگهداری و ریفکتورش رو ندارم، فقط گذاشتم بمونه به یادگار و شاید بررسی سورس کدش به درد کسی بخوره
2️⃣ اینو باید همون سالها اوپن سورسش میکردم، من اشتباه کردم، شما این اشتباهو تَکرار نکنین :)
________________
@DotNetZoom
❇️ معرفی MagicOnion : یک فریمورک Realtime مبتنی بر gRPC و MessagePack

این فریمورک با استفاده از قابلیت HTTP/2 Streaming مبتنی بر gRPC و بهره گیری از MessagePack برای Serialization (همراه با LZ4 integration) بستری قدرتمند را برای ارتباطات Realtime فراهم می‌کند.

🔸یکی از مزایای این فریمورک عدم نیاز به فایل‌های .proto مخصوص gRPC است چرا که از interface های سی شارپی برای به اشتراک گذاری امضای Endpoint‌های موجود بین Server و Client استفاده میکند.

🔹یکی از دیگر مزایای آن پشتیبانی از Swagger و داشتن Json Gateway توکار متبنی بر HTTP/1 است که به کمک آن می‌توان به صورت Json/RESTful نیز API‌ها را فراخوانی کرد.

🔸همچنین این فریمورک از OpenTelemetry پشتیبانی کرده و می‌توانید از برنامه‌های مانیتورینگ مانند Prometheus و StackDriver و Zipkin و... بر روی پروژه خود استفاده کنید و یا توسط Grafana یک داشبورد مانیتورینگ ویژوال و Realtime ایجاد کنید.

🔹این فریمورک ابزار مناسبی جهت ارتباطات بین Microservice‌ها می‌باشد.

🔸همچنین جایگزین مناسبی برای سرویس‌های API based مانند ASP.NET Core WebAPI و WCF بوده و نیز جایگزین مناسبی برای SignalR و Socket.io جهت ارتباطات Realtime می‌باشد.

🔰ریپازیتوری MagicOnion
https://github.com/Cysharp/MagicOnion
اطلاعات بیشتر
https://medium.com/@neuecc/magiconion-unified-realtime-api-engine-for-net-core-and-unity-21e02a57a3ff
___________
@DotNetZoom
🔸سال 94 یه مجموعه کامپوننت از روی پلاگین های معروف جاوااسکریپتی برای ASP MVC نوشتم که در اون زمان به خاطر امکاناتش جز شاهکارام محسوب میشد و تو این سال ها هم خیلی کارمو راه انداخت
کامپوننت هاش از جمله:
- Select2
- CKEditor
- DataTables
- iCheck
- DateRangePicker (with jalaali support)
- SweetAlert
- Noty
- Toaster
- And ...

🔹چند روز پیش اون رو به NET Core 3.1 آپدیت کردم و گذاشتمش گیتهابم
https://github.com/mjebrahimi/DNZ.MvcComponents

🔰پ.ن:
1️⃣ الان دیگه قصد نگهداری و ریفکتورش رو ندارم، فقط گذاشتم بمونه به یادگار و شاید بررسی سورس کدش به درد کسی بخوره
2️⃣ اینو باید همون سالها اوپن سورسش میکردم، من اشتباه کردم، شما این اشتباهو تَکرار نکنین :)
________________
@DotNetZoom
آخرت سرعت در عملیات Linq با کتابخانه LinqFaster !

این کتابخانه با استفاده از تکنولوژی SIMD (ساده بگم : پردازش برداری موازی و فوق سریع) و پردازش موازی با Multi-Threading اومده و متد های کمکی مشابه ایی نوشته که عملیات Linq رو با سرعت بالا و مصرف حافظه کمتر انجام میده.
فقط کافیه بنچمارک رو توی تصویر ببینین :)

LinqFaster
متد‌های کمکی Linq با پرفرمنس بالا
https://www.nuget.org/packages/LinqFaster/

LinqFaster.SIMD
متد‌های کمکی Linq با پرفرمنس بالا با استفاده از تکنولوژی SIMD
https://www.nuget.org/packages/LinqFaster.SIMD/

LinqFaster.Parallel
متد‌های کمکی Linq با پرفرمنس بالا با استفاده از پردازش موازی/Multi-Threading
https://www.nuget.org/packages/LinqFaster.Parallel/

LinqFaster.SIMD.Parallel
متد‌های کمکی Linq با پرفرمنس بالا با استفاده از تکنولوژی SIMD و پردازش موازی/Multi-Threading
https://www.nuget.org/packages/LinqFaster.SIMD.Parallel/

لینک ریپازیتوری :
https://github.com/jackmott/LinqFaster

#Linq #Performance
__________________
@DotNetZoom
❇️ کتابخانه ای جهت پیاده سازی Unobtrusive Ajax در ASP.NET Core

قبلا توی MVC5 میتونستیم توسط Ajax.BeginForm و Ajax.ActionLink براحتی فرم ها و لینک های Ajax ایی درست کنیم که بهش Unobtrusive Ajax هم میگفتند.
🔸متاسفانه این امکان (Ajax Helper ها) توی ASP.NET Core حذف شدند و قرار هم نیست اضافه بشند. البته همچنان میشه از Unobtrusive Ajax استفاده کرد ولی باید دستی بنویسیم و attribute هاش رو به تگ form اضافه کنیم.
مقاله زیر آموزش کاملش رو به همراه نکات خوبی ارائه داده.
https://www.dotnettips.info/post/2518

🔹اخیرا اما برای مهاجرت پروژه ای که با MVC5 نوشته شده بود و زیاد از Ajax.BeignForm استفاده کرده بود به ASP.NET Core، خیلی به این امکان نیاز داشتم و دیدم که کسی تا حالا کتابخونه ای برای این کار نزده.
پس دست به کار شدم و نتیجه اش شد یه کتابخونه خیلی کامل و با امکاناتی بیش از پیش از جمله:

1- اگر از قابلیت Ajax Helper ها استفاده کنین به صورت خودکار فایل جاوااسکریپت Unobtrusive Ajax رو توی Layout شما تزریق میکنه و در صورت عدم استفاده اون رو تزریق نمیکنه. پس هم فایل js اضافی تو صفحه لود نمیشه و هم نگرانی بابت فراموش کردنش نخواهید نداشت
2- به صورت پیشفرض از یک جاوااسکریپ Embed شده استفاده میکنه ولی میتونین تنظیم کنین که از CDN (وبسایت cdnjs) استفاده کنه
3- با Upload فایل ها سازگاره
4- به صورت خودکار ForgeryToken رو ارسال میکنه و با [AntiForgeryTokenValidation] سازگاره
5- دارای اتریبیوت [AjaxOnly] برای محدودیت گذاری روی اکشن ها هست
6- دارای اکسنشن متد httpRequest.IsAjaxRequest() هست تا بتونین براساس اون تصمیم بگیرین PartialView برگردونین یا Json
دارای چندین متد overload اضافی هست برای راحتی بیشتر

▪️تفاوت این کتابخونه با jQuery Ajax اینه که در عمل خود این کتابخونه هم از jQuery Ajax استفاده میکنه ولی برای جا هایی که سفارشی سازی خاصی لازم ندارید استفاده از ajax رو خیلی ساده تر میکنه.
▪️توی صفحه اصلی ریپازیتوریش طریقه استفادش رو کامل توضیح دادم اما اگه خواستین میتونین پروژه رو دانلود/clone کنین و پروژه demo رو اجرا کنین تا چندتا از sample هاش رو ببینین
https://github.com/mjebrahimi/AspNetCore.Unobtrusive.Ajax
__________________
@DotNetZoom
بررسی اجمالی معماری ASP.NET Core

🔸توی این اسلاید خیلی زیبا، خلاصه و مفید معماری ASP.NET Core رو نشون میده و باعث میشه دید خوبی از اجزای مختلف این فریمورک و طرز کارکردشون پیدا کنید.
https://speakerdeck.com/davidfowl/asp-dot-net-core-architecture-overview

🔹این اسلاید توسط David Fowler، معمار تیم ASP.NET ماکروسافت تهیه شده. بقیه اسلاید های ایشون رو هم از لینک زیر میتونین ببینین که واقعا آموزنده هست.
https://speakerdeck.com/davidfowl
__________________
@DotNetZoom
تست کد های #C به صورت آنلاین

توی پست قبلی در مورد C# Interactive توضیح داده بودم الان میخوام روش آنلاینش رو بررسی کنیم.
واسه اینکار سایت های زیادی هست که امکان Syntax Highlighter و Run کردن کد رو بهتون میدن. با این ابزار ها میتونین کد سی شارپ تون رو انلاین و راحت تست کنین و یا کدتون رو با بقیه به اشتراک بگذارین

🔸اول از همه بهترینشون و با اختلاف فاحش، سایت SharpLab هست. امکانات فوق العاده ای داره، Intellisense خیلی قوی ایی داره که در نوع خودش واقعا بی نظیره، امکان Decompile کردن کد خروجی به IL و #C و حتی Jit Assembly رو بهتون میده. UX خوب و روون ایی داره و خیلی سریع، در لحظه کد رو اجرا میکنه.
https://sharplab.io/

🔹این سایت برای ویرایشگرش اش از پلاگین جاوااسکریپتی CodeMirror استفاده میکنه که یک Code Editor و Syntax Highlighter قوی هست و از تموم زبان ها پشتیبانی میکنه
مثلا اگه خواستین قابلیت اسکریپت نویسی و اجرای کد داینامیک رو برای پروژه تون اضافه کنین میتونین از این پلاگین استفاده کنین
https://github.com/codemirror/CodeMirror
[Demo] https://codemirror.net/

🔸 این سایت برای اجرای کد ها از Roslyn و برای Decompile کردنشون از ILSpy استاده میکنه که قوی ترین برنامه Decompiler دات نت هست و ابزار های حرفه دیگه از از جمله dnSpy از رو همین ساخته شدن

🔹سازنده این سایت اومده کل پکیج Code Editor سی شارپیش رو که بر روی CodeMirror و Roslyn ساخته شده رو به صورت سورس پاز تو گیتهاب گذاشته
بدین صورت مثلا میتونین یه ویرایشگر کامل سی شارپی به همراه Autocomplete واسه اسکریپت نویسی داینامیک به پروژه تون اضافه کنین
https://github.com/ashmind/mirrorsharp

🔰تنها ایرادی که سایت sharplab.io داره اینه که که امکان اضافه کردن Nuget Package به کد هاتون رو نداره
واسه همین یه سایت دیگه به نام NET Fiddle. هست (که البته به خوبی اون نیست ولی بعضی امکانات اضافه تر مثل همین nuget package داره)
https://dotnetfiddle.net/
____________________
@DotNetZoom