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

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

لینک گروه ASPNET Core:
https://t.iss.one/+ufG25x7lVFgyYTNk
Download Telegram
❇️ لطفا به هر دو نظر سنجی بالا جواب بدید👆
میتونه به نتایج جالبی منجر بشه 😉
This media is not supported in your browser
VIEW IN TELEGRAM
کتابخانه تبدیل عدد به حروف فارسی

ریپازیتوری مربوطه با استفاده از Angular Pipe و TypeScript
https://github.com/EbrahimHamzeh/NumberToPersian
ریپازیتوری مربوطه برای JavaScript :
https://github.com/mahmoud-eskandari/NumToPersian
______________
@IranAspMvc
DotNetZoom via @vote
یه سوال جالب و مرتبط با برنامه نویسی! آیا شما به عنوان یه برنامه نویس، فکر میکنین برای تخلیه ذهنی و رفع دغدغه های فکری، Game میتونه کمک کنه؟ آیا خودتون هم گیمر هستین؟ anonymous poll 2- بله کمک میکنه ولی گیمر نیستم – 138 👍👍👍👍👍👍👍 39% 1- بله کمک میکنه، گیمر…
نتایج #جالب #نظرسنجی در مورد #Game
https://bit.ly/2sBqTzc
🔰 چند روز پیش نظرسنجی در مورد Game برگزار کردیم که به نتایج جالبی رسیدیم. جامعه آماری مون بیش از 300 نفر بوده و جالبه که تا این لحظه به اعداد رندی هم رسیدیم !

70% برنامه نویسا فک میکنن Game به تخلیه فکریشون کمک میکنه

30% معتقدن کمک نمیکنه

با اینکه اکثر برنامه نویسا با گیم موافقند ولی 60% شون اصلا بازی نمیکنن

40% برنامه نویسا گیمر هم هستند

21% برنامه نویسا ، کمتر از 1 ساعت در روز صرف Game میکنن (13% بین 1تا2 ساعت در روز)

این آمار نتایج قابل ملاحظه ای درباره مهم بودن Game در بین برنامه نویسا رو نشون میده و اینکه اکثرا تمایل دارند ذهنشون رو تخلیه فکری کنند
راه های مختلفی برای تخلیه فکری وجود داره ولی ظاهرا، گیم یکی از پرطرفدار ترین اون هاست
این که تمام شرکت های بزرگ مثل Google, Facebook و Microsoft هم این قضیه رو به طور جدی تو محیط شرکت اجرایی کردند هم میتونه دلیلش همین اهمیت گیم (یا به طور کلی تر تخلیه فکری) بین برنامه نویسا باشه
قطعا اگه برنامه نویسا، هر روز بعد از کار با ذهنی تخلیه شده از هیاهوی کد و باگ و ارور و... + کمی هیجان، محل کار رو ترک کنند به رضایت شغلی بیشتری توی بلند مدت دست پیدا میکنند
پس بهتره از خودمون شروع کنیم، ما هایی که شرکتی داریم یا سرپرست تیم هست یا به هر طریقی اختیاراتش رو داریم، این بحث رو توی شرکت پیاده کنیم، البته حساب شده، تا اثر سوء نداشته باشه :)
@IranAspMvc
#فیسبوک، الگوریتم #فشرده_سازی خود را در گیتهاب عمومی کرد

پروژه #Zstandard یا به اختصار zstd یک الگوریتم فشرده سازی بدون افت کیفیت با سرعت بالا است که فیسبوک آن را توسعه داده و برای مصارف خود مانند فشرده سازی دیتا و تصاویر و... استفاده میکرد و به تازگی سورس آن را به صورت متن باز منتشر کرده است
توضیحات بیشتر + بنچمارک :
https://facebook.github.io/zstd/
بنچمارک مقایسه zstd با الگوریتم های هم رده دیگه، نشون میده این الگوریتم دارای بیشترین میزان فشرده سازی (Compress Ratio) و سرعت نسبتا خوبی است.
در واقع از جمله سریع ترین الگوریتم ها می توان به LZ4 و برای قوی ترین الگوریتم فشرده سازی به LZMA اشاره کرد ولی الگوریتم Zstd تعادلی میان این دو است.
لینک ریپازیتوری :
https://github.com/facebook/zstd
این کتابخانه با زبان C نوشته شده است و چندین API جهت استفاده دارد. همچنین Wrapper هایی به زبان های زبادی از جمله C#, Java, PHP, Python, NodeJs و ... برای استفاده از API های این کتابخانه فراهم شده است.
در پست بعدی به معرفی کتابخانه های دات نتی آن و ابزار های استفاده از این الگوریتم می پردازیم.
@IranAspMvc
معرفی برنامه ها و کتابخانه های دات نتی جهت استفاده از الگوریتم فشرده سازی #Zstandard

نسخه مخصوص برنامه 7zip با پشتیبانی از الگوریتم #Zstd و چندین الگوریتم دیگر : Brotli, Fast-LZMA2, Lizard, LZ4, LZ5
لینک ریپازیتوری پروژه (شامل بنچمارک الگوریتم ها) و دانلود نسخه 64 بیتی
https://github.com/mcmilk/7-Zip-Zstd
و یا پلاگین مخصوص 7zip جهت استفاده از Zstd
https://www.tc4shell.com/en/7zip/modern7z/

2 کتابخانه سی شارپی جهت استفاده از Zstd در دات نت
https://github.com/skbkontur/ZstdNet
https://github.com/bp74/Zstandard.Net
طرز کارشون به این صورته که آرایه ای از byte ها رو دریافت کرده و فشرده سازی میکنن. مثال کامل هم داخلش هست
شما میتونین تصاویر یا فایل هایی که میخواین ذخیره کنین (چه توی دیتابیس و چه توی هارد) رو byte[] اش رو بخونین، فشرده کنین و سپس ذخیره کنین
@IranAspMvc
نگاشت خودکار اشیاء توسط #AutoMapper و #Reflection - ایده شماره 2

لینک مقاله :
https://www.dotnettips.info/post/2988
لینک ریپازیتوری :
https://github.com/mjebrahimi/auto-mapping

- در قسمت قبل، یک کلاس جنریک را به نام BaseDto ایجاد کردیم که با ارث بری Dto‌های پروژه از این کلاس، علاوه بر متد‌های ToEntity و FromEntity جهت ساده سازی عملیات نگاشت، Mapping‌های لازم بین Dto‌ها و Entity‌های مربوطه، توسط Reflection به صورت خودکار انجام می‌شد.
- در این قسمت می‌خواهیم مکانیزم Mapping خودکار را کمی تغییر داده و قابلیت سفارشی سازی Mapping‌ها را نیز فراهم کنیم.

#پیشنهاد میکنم حتما بخونین و لذت ببرین :)
@IranAspMvc
پروژه ای جهت پیاده سازی ایده های خلاقانه در ASPNET Core
https://github.com/aspnet/Entropy/

بررسی سورس کد این پرژه، ایده‌های بسیار جالبی به شما میدهد. پیشنهاد میکنم حتما کد هاشو بررسی کنید. نکات آموزشی زیادی داخل هست.

چند پروژه منتخب :
- پروژه Mvc.GenericControllers : ساخت کنترولر برای Entity‌ها بدون کدنویسی!
- پروژه Mvc.CustomRoutingConvention : مسیریابی بر اساس namespace کنترولر‌ها
- پروژه Localization.EntityFramework : مدیریت منابع چند زبانگی توسط EntityFramework
@IranAspMvc
تقویم شمسی، قمری و میلادی به همراه انتخاب‌گر زمان و تاریخ برای Kendo UI
https://github.com/kitcat2014/KendoUI_Gregorian-Persian-Hijri_Calendar-DatePicker-TimePicker
_______________
@IranAspMvc
This media is not supported in your browser
VIEW IN TELEGRAM
#آیا_میدانستید

آیا میدانستید اگر در یک ریپازیتوری Github، دکمه "T" را فشار دهید، صفحه ای برای جستجوی فایل ها بر اساس "نام و مسیر" برای شما باز میشود؟
بدون شک این راحت ترین و سریع ترین راه جستجوعه برای زمانی که میدونین دنبال چه فایلی میگردین😎

@IranAspMvc
معرفی کتابخانه 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
@IranAspMvc
دانلود کتاب رایگان TypeScript for C# Programmers به صورت PDF
لینک دانلود :
https://ufile.io/ydp6c
@IranAspMvc
مجموعه آموزش ویدئویی فارسی زامارین اندروید به صورت رایگان منتشر شد. از طریق لینک زیر می تونید همه قسمت ها را آنلاین ببینید یا دانلود کنید.
مدرس: ابوالفضل رجب پور
https://rajabpour.net/?p=81
سرفصل ها:
۰- مقدمه ای بر زامارین Xamarin
۱- چرا زامارین مهم است – یک داستان واقعی
۲- آموزش نصب زامارین در ویژوال استودیو – قسمت اول
۲- آموزش نصب زامارین در ویژوال استودیو – قسمت دوم
۳- نصب شبیه ساز جنی موشن Genymotion
۴- ساخت یک برنامه ساده
۵- پلتفرم زامارین
۶- ساختار یک برنامه اندروید
۷- کنترل های طراحی صفحات در اندروید
۸- ساختار پروژه فروشگاه کتاب
۹- ساخت صفحه نمایش جزئیات کتاب
۱۰- متصل کردن دیتا به صفحه نمایش کتاب
۱۱- ساخت یک لیست ویو ساده listview
۱۲- ساخت لیست ویو سفارشی custom listview
۱۳- انتقال دیتا بین اکتیویتی ها
۱۴- ساخت یک وب سرویس rest در asp.net
۱۵- فراخوانی وب سرویس rest در زامارین
۱۶- ذخیره سازی دیتای ساده در زامارین
۱۷- ذخیره سازی دیتا در زامارین با استفاده از sqlite
۱۸- صفحه ثبت نام و سفارش کتاب
۱۹- سبک متریال دیزاین اندروید material design
۲۰- کار با دفترچه تلفن در اندروید
۲۱- ارسال پیامک از طریق کد و دریافت پیام
۲۲- کار با گالری تصویر در اندروید
۲۳- انتشار برنامه اندروید در کافه بازار

#آموزش #فارسی #زامارین #اندروید
خااااار و مادر سرعت توی عملیات 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
@IranAspMvc
کتابخانه EasyCaching : قابلیت Caching با امکانات زیاد اما یکپارچه و آسان!
https://github.com/dotnetcore/EasyCaching
این کتابخانه، تکنولوژی‌ها و کتابخانه‌های زیر را در راستای ایجاد یک Caching کامل و با امکانات زیاد، یکپارچه کرده و استفاده از آنها را آسان می‌کند.
Caching Providers
- Memory
- Redis
- SQLite
- Memcached
- Hybrid(Combine local caching and distributed caching)
- Disk
Serializer Extensions
- BinaryFormatter
- MessagePack
- Json
- ProtoBuf
Caching Interceptor
- AspectCore
- Castle
Caching Bus
- Redis
- RabbitMQ
_______________
@IranAspMvc
کتابخانه EasyCaching : قابلیت #Caching با امکانات زیاد اما یکپارچه و آسان!
https://github.com/dotnetcore/EasyCaching
این کتابخانه، تکنولوژی‌ها و کتابخانه‌های زیر را در راستای ایجاد یک Caching کامل و با امکانات زیاد، یکپارچه کرده و استفاده از آنها را آسان می‌کند.
Caching Providers
- #Memory
- #Redis
- SQLite
- #Memcached
- Hybrid(Combine local caching and distributed caching)
- Disk
Serializer Extensions
- BinaryFormatter
- #MessagePack
- Json
- #ProtoBuf
Caching Interceptor
- AspectCore
- Castle
Caching Bus
- #Redis
- #RabbitMQ
_______________
@IranAspMvc
منتشر شد .NET Core 3 Preview 2

بررسی تغییرات و قابلیت های مهم :

1- پشتیبانی از قابلیت های جدید سی شارپ 8
- قابلیت Using Declarations :
توسط این قابلیت میتونین متغیر های Disposable تون رو به صورت using توی یک بلاک scope تعریف کنین و قتی اون بلاک به اتمام رسید، اون متغیر هم به صورت خودکار Dispose میشه
HttpResposeMessage GetUrl(string url)
{
using var httpClient = new HttpClient();
return httpClient.Get(url);
} // httpClient disposed here
- قابلیت Switch Expressions :
این قابلیت امکان تعریف راحت تر و هوشمندانه تر دستور switch رو مشابه سینتکس lambda expression را برای ما فراهم میکنه.
string Display(object item) => o switch
{
Point { X: 0, Y: 0 } => "origin",
Point { X: var x, Y: var y } => $"({x}, {y})",
_ => "unknown"
};
- قابلیت Async streams :
محدودیت قابلیت await/async این بود که در آن نمی شد لیستی از مقادیر رو به صورت yield باز گردوند. این محدودیت توسط قابلیت Async streams برطرف شده و شما میتونین همزمان هم از yield return و در نتیجه گرفتن خروجی به صورت lazy توی IEnumerable استفاده کنین و هم از async
- قابلیت های سی شارپ 8 در آینده به تفصل مورد بررسی قرار خواهند گرفت

2- اضافه شدن Json Seralizer داخلی بسیار سریع
در راستای حذف وابستگی JsonNET - Newtonsoft از ASP Core و جایگزین کردن آن با یک Json Serializer داخلی سبک و سریع، کلاس های Utf8JsonWriter و JsonDocument اضافه شده اند.
کلاس Utf8JsonWriter که برای Serialize کردن استفاده میشه نسبت به مشابه اون در JsonNET، افزایش پرفرمنس 30 تا 80 درصدی را (بدون تخصیص حافظه) به همراه داشته.
و کلاس JsonDocument که برای Desrialize/Parse کردن استفاده میشه نیز نسبت به مشابه آن در JsonNET بین 2 تا 3 برابر سریع تره و حافظه کمتری تخصیص میکنه.

3- بهبود محاسبات اعداد اعشاری!
در راستای مطابقت با استاندارد IEEE 754-2008 revision (که درباره عملیات های مربوط به محاسبات اعداد اعشاری است) بهبود هایی انجام گرفته و چندین api محاسبات ریاضی جدید هم اضافه شده.

4- پیشتبانی بیشتر از CPU instruction sets
مجموعه ای دستور العمل هایی برای CPU (مانند SIMD یا Bit Manipulation) وجود دارند که در بعضی سناریو های خاص مانند پردازش موازی یا... ،پرفرمنس را به شدت افزایش میدهند که در این ورژن پشتیبانی بیشتری از آنها انجام شده است.

لیست تغییرات خیلی بیشتره میتونین از لینک زیر مطالعه کنین.
توضیحات بیشتر :
https://blogs.msdn.microsoft.com/dotnet/2019/01/29/announcing-net-core-3-preview-2/
_______________
@IranAspMvc
منتشر شد ASP.NET Core 3.0
اینطور که پیداست، تغییرات توی AspCore 3.0 و پیش نمایش هاش زیاده و هر بار با تعداد زیادی قابلیت و تغییر مواجه میشیم
Razor Components
SignalR client-to-server streaming
Pipes on HttpContext
Generic host in templates
Endpoint routing updates

به زودی تغییرات مهم این رو هم بررسی میکنیم

https://blogs.msdn.microsoft.com/webdev/2019/01/29/aspnet-core-3-preview-2/
_____________
@IranAspMvc
دانلود کتاب رایگان Domain Driven Design: The First 15 Years
به مناسبت 15 امین سالگرد به وجود اومدن Domain Driven Design، با دعوت اساتید برجسته این حوزه، کتابی تحت عنوان "15 سال اول" تهیه و به صورت رایگان منتشر شده است.
https://ufile.io/u6bx8
_______________
@IranAspMvc
توی این سری پست ها میخوایم تغییرات مهم ASP.NET Core 3.0 پیش نمایش 2 رو بررسی کنیم.


1️⃣ حذف وابستگی ها

یکی از تغییرات مهم این نسخه، حذف وابستگی JSON.Net از ASP Core 3.0 و اضافه شدن یک Json Serializer داخلی سریع و سبک در NET Core 3.0 در راستای ایجاد یک بستر مشترک و مستقل برای ASP Core است
به همین جهت از این به بعد برای استفاده از JSON.Net (مثل سابق) و یا برای ارتقاء برنامه های موجود خود با ورژن های پایین تر به ASP Core 3.0، باید پکیج Microsoft.AspNetCore.Mvc.NewtonsoftJson نصب و متد زیر اعمال شود.
services.AddMvc()
.AddNewtonsoftJson();
در غیر این صورت، عملیات سریالاز Json توسط Json Serializer داخلی آن انجام می شود که در پست قبلی سرعت آن را مقایسه کردیم و پیشنهاد می شود از این به بعد از آن به جای JSON.Net استفاده شود چرا که بسیار سریع تر و سبک تر است.

همچنین در همین راستا، وابستگی کامپایلر Roslyn نیز حذف شده و در نتیجه آن قابلیت کامپایل runtime برای View ها نیز حذف شده است و به جای آن، کامپایل ویو ها در زمان Build انجام خواهد شد.
ولی گفته شده برای فعال سازی قابلیت کامپایل runtime ویو ها در نسخه های پیش نمایش بعدی، یک پکیچ Nuget ارائه خواهد شد.



2️⃣ قابلیت Streaming دیتا از کلاینت به سرور در SignalR

قابلیت استریمینگ از سرور به کلاینت توی نسخه 2.1 اضافه شد و این امکان رو به ما میداد که به جای اینکه سمت سرور منتظر باشیم تا دیتا کامل لود بشه و بعد اون رو سمت کلاینت ارسال کنیم، دیتا ها رو به محض اماده شدن، به صورت بخش بخش به کلانیت ارسال کنیم

حالا برعکس این قابلیت یعنی استریمینگ از کلاینت به سرور اضافه شده در نتیجه کلاینت میتونه به جای اینکه صبر کنه تا دیتا کامل سمت کلاینت آماده بشه، لحظه به لحظه به محض اینکه هر دیتایی سمت کلاینت آماده شد، اون رو به سرور ارسال کنه.
از این قابلیت میشه مثلا برای استریمینگ ویدئو به سرور (مثلا ارسال تصاویر وبکم به سرور) استفاده کرد و سمت سرور هم میتونیم تصاویر دریافتی رو به یه کاربر دیگه به صورت استریمینگ ارسال کنیم و این یعنی امکان ایجاد یک ارتباط ویدئویی آنلاین بین دو/چند نفر!
لینک زیر هم همینکارو خیلی جالب انجام داده. اگه وبکم دارین کافیه لینک زیر رو باز کنین و توی اون تکس باکس یه اسم تایپ کنین و دکمه Start Streaming رو بزنین و اجازه دسترسی وبکم رو بهش بدین و تصویر خودتون رو به صورت متنی مشاهده کنین!
https://streamr.azurewebsites.net/

در کل در این نسخه، تغییرات زیادی داشته و اگه نجنبیم از غافله اپدیت ها عقب میمونیم :)

ادامه بررسی ها در پست بعدی
@IranAspMvc