TGViewer
Channel Public Channel
DotNetZoom

DotNetZoom

@dotnetzoom

✅ DotNetZoom
💎 Everything about .NET

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

لینک گروه ASPNET Core:
https://t.me/+ufG25x7lVFgyYTNk
Subscribers
2.82K
Photos
342
Videos
18
Links
606

Showing posts older than #1061 · Back to latest

Older Posts 20 shown
Post #1060 2.56K

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

___
Post #1059 3.06K
#زنگ_تفریح

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

http://musicforprogramming.net/

________________
@DotNetZoom
Post #1058 9.45K
🔶 لب هم به رومون بسته شد + راهکار ها

مشابه اتفاقی که قبلا واسه 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
Telegram Attach Files
Post #1057 2.77K
❇️ معرفی چند ابزار 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
Post #1056 2.57K
Post #1053 3.63K
❇️ کیفیت پایین یعنی سرعت پایین 👌

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

🔰 چندتا از بهترین مقالات 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
Post #1052 4.18K
❇️ مقایسه کارآیی روش‌های مختلف جایگزین کردن حروف در یک رشته در برنامه‌های 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
.NET Tips مقایسه کارآیی روش‌های مختلف جایگزین کردن حروف در یک رشته در برنامه‌های NET. فرض کنید قصد دارید عملیات نرمال سازی اطلاعات را بر روی یک رشته انجام داده و برای مثال اعداد فارسی و انگلیسی موجود در یک رشته را یک‌دست کنید. اولین روشی که برای اینکار به ذهن می‌رسد، استفاده از متد Replace است: private static string toPersianNumbersUs…
Post #1051 3.24K
❇️ لیست برترین CMS های سورس باز ASP.NET Core

✔️ مرتب شده بر اساس محبوبیت

🔸1- nopCommerce (e-commerce)
🔹2- OrchardCMS
🔸3- SimplCommerce (e-commerce)
🔹4- Miniblog.Core
🔸5- Squidex (headless CMS)
🔹6- GrandNode (e-commerce)
🔸7- Weapsy
🔹8- Piranha CMS
🔸9- Cofoundry
🔹10- Blogifier
🔸11- Platformus
🔹12- SimpleContent
🔸13- Awesome CMS Core
🔹14- BlogCore (Blazor blog)
🔸15- Lynicon CMS
🔹16- NetCoreCMS
🔸17- VirtoCommerce (e-commerce)

https://dottutorials.net/top-open-source-asp-net-core-cms


_______________
@DotNetZoom
Post #1049 7.45K
✅معرفی کتابخانه EFCore.BulkExtensions
در سری
#معرفی_اکستنشن_های_کاربردی_EFCore
Entity Framework Core Bulk Batch Extensions for Insert Update Delete and Read (CRUD) operations on SQL Server

خیلی وقتا نیاز میشه یک مرتبه حجم زیادی از رکورد ها رو توسط EFCore ذخیره کنین (مثلا import کردن از یه فایل excel)
در حالت عادی (متد Add و یا AddRange)، رکورد های شما به صورت تکی Insert میشه و سرعت بالایی نداره، بر خلافش اما، در روش Bulk Insert، همه رکورد ها به صورت یکجا Insert میشن و سرعت بسیار بسیار بالایی داره این روش (حتی تا 20 برابر سریع تر!)

این کتابخونه بی نظیر، قابلیت انجام عملیات Bulk و Batch رو در EF Core فراهم میکنه و از async هم پیشتیبانی میکنه :
- Bulk operations (Insert, Update, Delete, Read, Upsert, Sync)
- Batch operations (Delete, Update)

* برای مقایسه پرفرمنس و تفاوت سرعت بین روش عادی و Bulk هم تصویر پست گویای همه چی هست

لینک ریپازیتوری + مثال و توضیحات :
https://github.com/borisdj/EFCore.BulkExtensions

#Bulk #EFCore #Performance
___________________
@DotNetZoom
Post #1048 3.54K
🔰 #آیا_میدانستید
توی کنسول مروگر میتونین با دستور console.table، آرایه ها و لیست ها تون رو به صورت جدولی نشون بدین؟

var exampleArray = [
"First item in the array",
"I'm the second item in this array",
"Obviously i'm the last item"
];
console.table(exampleArray);

مثال های بیشتر:
https://www.telerik.com/blogs/better-visualization-of-console-data-with-tables
__________
@DotNetZoom
Post #1046 3.77K
🔰 نمونه مثالی از ASP.NET Core و Entity Framework Core به همراه معماری DDD و CQRS و Event Sourcing

🔸تکنولوژی ها و کتابخانه های استفاده شده :
- ASP NET Core 2.2 (with .NET Core 2.2)
- ASP NET MVC Core
- ASP NET WebApi Core
- ASP NET #Identity Core
- Entity Framework Core 2.2
- .NET Core Native DI
- #AutoMapper
- #FluentValidator
- #MediatR
- #Swagger UI
🔹معماری و پترن های استفاده شده :
- Full architecture with responsibility separation concerns, #SOLID and #Clean_Code
- #DDD : Domain Driven Design (Layers and Domain Model Pattern)
- #Domain_Events
- #Domain_Notification
- #CQRS (Imediate Consistency)
- #Event_Sourcing
- #UnitofWork
- #Repository and Generic Repository

🔰ریپازیتوری پروژه :
https://github.com/EduardoPires/EquinoxProject
_______________
@DotNetZoom
GitHub GitHub - EduardoPires/EquinoxProject: Web Application ASP.NET 9 using Clean Architecture, DDD, CQRS, Event Sourcing and a lot of… Web Application ASP.NET 9 using Clean Architecture, DDD, CQRS, Event Sourcing and a lot of good practices - EduardoPires/EquinoxProject
Post #1045 2.87K
✅ رمزنگاری خودکار فیلدها در EF Core
بعلاوه بررسی قابلیت HasConversion و ValueConverter در EF Core

🔸مقاله زیر قابلیت جالبی (و البته خاصی) رو به نام ValueConverter ها در EF Core 2.1 (به بالا) معرفی میکنه، توسط این قابلیت دیتا های شما قبل از اینکه وارد دیتابیس بشه (مثلا Add و Update و...) این امکان رو به شما میده که تغییرش بدین؛ مثلا مقادیر enum تون رو به جای اینکه عددش توی دیتابیس ذخیره بشه، متن string اش ذخیره بشه.
این کار پشت صحنه و به صورت خودکار انجام میشه و نیازی نیست توی کد هاتون خودتون هندل اش کنین.

🔹همچنین موقع واکشی کردن اطلاعات، قبل از اینکه دیتا به دست شما برسه این امکان رو به شما میده که تغییرش بدین، مثلا همون متن string رو به enum مربوطه تبدیل کنین. این کار هم به صورت خودکار انجام میشه و نیازی نیست توی کوئری هاتون کد اضافه تری بنویسین.

🔸حالا وحید نصیری عزیز با استفاده از این ترفند اومده یه مثال زده. اومده یه ValueConverter نوشته که کارش Encrypt کردن متون قبل از Insert شدن و Decrypt کردن اون به هنگام واکشی هست. در نتیجه متون شما توی دیتابیس رمزنگاری شده ذخیره میشه، ولی وقتی توی برنامه کوئری میزنین، متن عادی (رمزگشایی شده) رو مشاهده میکنین.

🔹البته این صرفا یک مثال (خلاقانه) هست و به نظرم راه بهینه ای واسه رمزنگاری اطلاعات دیتابیس نباشه، توی SQLServer راه های اصولی تری مخصوص این قضیه وجود داره

https://www.dotnettips.info/post/3015
___________________
@DotNetZoom
.NET Tips رمزنگاری خودکار فیلدها توسط Entity Framework Core از EF Core 2.1 به بعد، قابلیت جدیدی تحت عنوان «تبدیلگرهای مقدار»، به آن اضافه شده‌است. برای مثال در EF Core، زمانیکه اطلاعات Enums، در بانک اطلاعاتی ذخیره می‌شوند، معادل عددی آن‌ها درج خواهند شد. اگر علاقمند باشید تا بجای این مقادیر عددی دقیقا همان رشته‌ی…
Post #1044 4.22K
❇️ مجموعه آموزش های Microservices در NET Core.

اگر در اینترنت به دنبال آموزش های Microservices گشته باشین متوجه میشین که اکثر مقالات یا به صورت کلی و عمومی هستند (نه مختص دات نت) و یا برای زبان های دیگه اند و در نهایت اونایی هم مختص دات نت باشن به صورت پراکنده در فضای اینترنت پخش شده اند

علاوه بر این، مبحث Microservices دارای موضوعات متعدد و بزرگی هست و نمیشه اون رو با یک یا چند مقاله جسته و گریخته یاد گرفت واسه همین به یک سری آموزش نیاز دارید.
همچنین بعد از یادگیری مفاهیم پایه این مبحث، بهترین چیزی که میتونه شما رو بر روی این موضوع مسلط کنه، بررسی سورس نمونه پروژه های واقعی که بر پایه Microservices و NET Core. نوشته شده اند هست

🔰ریپازیتوری زیر سعی کرده بهترین آموزش های Microservices که مختص NET Core. هستند رو گردآوری کنه و در پایان لیستی از پروژه های سورس باز گیتهاب که با این معماری نوشته شده اند رو جمع آوری کنه

اگر علاقمند به یادگیری Microservices در NET Core. هستید این بهترین منبع رایگانی هست که میتونه به شما کمک کنه

https://github.com/mjebrahimi/Awesome-Microservices-NetCore
__________
@DotNetZoom
Post #1043 1.86K

Forwarded from کدهک

آشنایی با Git در Visual Studio

در این مجموعه ویدیو ها به معرفی ابزار و قابلیت های Git در Visual Studio می پردازیم و نحوه استفاده از آن را در ASP NET Core بررسی می کنیم.

https://codehaks.com/go/pra
Post #1042 2.86K
✅ #یک_نکته

ترجیحا متد های async را به روش sync و توسط Task.Wait و Task.Result فراخوانی نکنید زیرا باید block شدن ترد جاری شده و حتی میتواند باعث dead-lock شود.

ولی اگر جایی مجبور شدید به این صورت استفاده کنید (مثلا در سازنده کلاس زیرا نمی توان async/await استفاده کرد) به جای
task.Wait();
var result = task.Result;
حتما حتما از روش زیر استفاده کنید
var result = task.GetAwaiter().GetResult();

این روش دقیقا مانند روش اول است حتی بحث dead-lock و blocking ترد هم صادق است ولی ...
در روش اول اگر خطایی رخ دهد استثنای صادر شده را در یک AggregateException محصور شده پرتاب میکند که بررسی Detail آن سخت تر و نامفهوم تر است ولی در روش دوم اگر خطایی رخ دهد یک Exception معمولی پرتاب میشود

منابع :
https://codurance.com/2018/12/06/wait-and-getawaiter/
https://stackoverflow.com/questions/17284517
_______________
@DotNetZoom
Codurance Await vs GetAwaiter | Codurance A tiny bit of async in your life. I have decided to talk about a little thing regarding the retrieval of results on C# while using async.
Post #1041 3.23K
❇️ بازنویسی یک برنامه‌ی قدیمی Web Form با DDD، TDD و NET Core

پیشنهاد میکنم این مقاله طولانی رو بخونین، موارد خیلی زیادی رو به صورت عملی یاد میگیرین
فقط کافیه لیست تکنولوژی ها و معماری های استفاده شده رو ببینین تا به پر مایه بودنش پی ببرین

- #DDD & #CQRS
- Using CoreDdd (a library to work with DDD and CQRS.)
- #TDD & #Unit_Testing
- Using #NUnit (a unit test framework)
- Using #Shouldly (an assertion framework for NUnit)
- Using #Nhibernate ORM & CoreDdd.Nhibernate (for persistence layer)
- Using #FluentNHibernate (for database mappings)
- #Mocking & #Fake Services
- Using #FakeItEasy (an easy mocking framework)
- Adding ASP NET Core & built-in IOC Container
- #Command_Handler Pattern
- #Domain_Events Handler Pattern
- Domain Events Message Handler Pattern
- Adding #Message_Bus
- Using #Rebus & Rebus.Async (a message bus library)
- Using Await/Async for Performance Boost

🔸لینک مقاله :
https://bit.ly/2UpoW5F
🔹ریپازیتوری پروژه :
https://github.com/xhafan/legacy-to-coreddd
____
@DotNetZoom
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →