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
🔰 نمونه مثالی از 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
_______________
@IranAspMvc
Forwarded from کدهک
دوره کامل آموزش ASP.NET Core

فروش مجموعه ی 28 ساعت آموزش تخصصی از مقدماتی تا پیشرفته به همراه یک سال اشتراک ویژه کدهک

فروش ویژه نوروزی

کد تخفیف 50 درصدی : bahar

https://tinyurl.com/bahar98
منتشر شد Net Core 3.0 Preview 3

🔰توی پست های بعدی به بررسی تغییرات و بهبود های هر کدوم میپردازیم

معرفی Net Core 3.0 Preview 3
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-preview-3/

معرفی ASP NET Core 3.0 Preview 3
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-3/

لینک دانلود
https://dotnet.microsoft.com/download/dotnet-core/3.0
_______________
@IranAspMvc
Xamarin - DotNetTalk
DotNetTalk
#پادکست با موضوع سیر تا پیاز Xamarin
#Radio_DotNetTalk

در این پادکست از مزیا و معایب زامارین میگیم
با React Native مقایسه اش میکنیم و از ترفند های زامارین در مورد افزایش پرفرمنس، کاهش حجم اپلیکیشن خروجی و... میگیم
طرز کار زامارین رو بررسی می کنیم و میگیم که این حرف که "توی زامارین کد های سی شارپ به جاوا تبدیل میشن" مهملی بیش نیست! و اینکه Native بودن زامارین به چه معناست؟
در نهایت هم چالش های کار با زمارین و یادگیرین اون رو بررسی میکنیم

ارائه توسط یاسر مرادی و محمد جواد ابراهیمی
جامعه برنامه نویسان دات نت ایران (دات نت تاک)
@DotNetTalk
🔰 بررسی تغییرات جدید NET Core 3.0 Preview 3

تاکنون تاریخ دقیقی واسه انتشار ورژن نهایی NET Core 3.0 اعلام نشده بود و فقط توی Roadmap اش نوشته بود تا پایان فصل اول سال 2019 ولی الان ماکروسافت اعلام کرده در نیمه دوم سال 2019 منتشر خواهد شد که تاریخ دقیق اون توی کنفرانس Build 2019 ماکروسافت اعلام خواهد شد
از طرفی Visual Studio 2019 که هفته پیش نسخه RC یش هم منتشر شد و ماکروسافت اعلام کرده نسخه نهاییش در تاریخ 2 ماه April منتشر میشه
با توجه به اخبار، خیلی انتظار میرفت که ورژن نهایی NET Core 3.0 همراه با ورژن نهایی VS منتشر بشه که خب ظاهرا قضیه کنسله

و اما بریم سراغ تغییرات جدید :

🔸امکان Upgrade شدن نسخه های SDK :
اولین تفاوتی که بهش میخوریم اینه که از این پس، نسخه های SDK Installer روی ورژن های patch قبلی Upgrade میشن. به این معنی که با نصب نسخه های جدید، پچ قبلی همون نسخه (که قسمت feature bands مشترکی داشته) حذف شده و سپس نسخه جدید نصب میشه
قسمت feature bands همون قسمت صدگان آخر ورژن هست. مثلا با نصب ورژن 3.0.101، نسخه قبلی اون یعنی 3.0.100 حذف میشه (چون فیچر بند های یکسانی دارند) ولی با نصب 3.0.200، نسخه 3.0.101 حذف نمیشه (چون فیچر بند های متفاوتی دارند)
این باعث میشه تعداد SDK های نصبی روی کامپیوتر شما کاهش پیدا کنه و الکی فضای ها هاردتون با نسخه های بی مصرف پر نشه

🔹بهبود قابلیت Memory Limits برای Docker :
توسط این قابلیت میتونین منابع داکر رو برای برنامه تون محدود کنین مثلا بگین فقط 100 مگابایت حافظه مموری در اختیار برنامه تون بذاره، این قابلیت مخصوصا برای اجرای NET Core روی دیوایس های IOT کاربرد داره
این قابلیت قبلا هم بوده ولی الان بهبود داده شده و توضیحاتش مفصله .پس اطلاعات بیشترش رو میتونین از لینک خود ماکروسافت بخونین

🔸ارائه Container Image های ماکروسافت در MCR
ماکروسافت یه Container Registry به نام Microsoft Container Registry یا به اختصار MCR راه اندازی کرده (چیزی مشابه DockerHub ولی نه دقیقا مثل اون؛ درواقع فقط یه مخزنی هست واسه Image هاش)
2 3 هفته پیش ریپازیتوری نسخه های nightly شو از DockerHub به MCR انتقال داد و الان هم ریپازیتوری نسخه های NET Core رو به MCR منتقل کرده
اطلاعات بیشتر در لینک ماکروسافت

🔹بهبود قابلیت های Index و Range موجود در سی شارپ 8
این قابلیت نیاز به توضیح نداره با یه مثال متوجه میشین
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
دستور 1^ یعنی اولی از آخر
int lastNum = nums[^1]; // 10
دستور 6..2 یعنی آیتم های 2 تا 6 این آرایه
int[] subsetNums = nums[2..6]; // {3, 4, 5, 6}
این قابلیت توی Preview 1 اومد ولی فقط واسه آرایه های عددی بود. الان این قابلیت واسه Span، Memory، Array و String امکان پذیر شده

🔸دیگر تغییرات :
تغییرات دیگه ای از جمله بهبود هایی در مورد پیشتبانی بهتر از EF, WPF, WinFroms و... در NET Core 3.0 هم انجام شده که از توضیحاتش صرف نظر می کنیم

جهت اطلاعات بیشتر لینک زیر رو مطالعه کنین
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-preview-3/
___________
@IranAspMvc
🔰بررسی تغییرات جدید ASP.NET Core 3.0 Preview 3.0

🔸بهبود های Razor Components
قابلیت Razor Components این امکان رو بهمون میده که کامپوننت های UI سمت کاربر رو در سمت سرور بنویسیم توی پیش نمایش قبلی هم توی همین کانال در موردش صحبت کردیم. کلا چیز خیلی باحالیه و ظاهرا آینده خوبی داره؛ ماکروسافتم حسابی پشتش رو گرفته

توی این ورژن بهبود هایی در موردش انجام شده که مهمترین اونا :
1- قالب پیشفرض پروژه های Razor Component قبلا شامل 2تا پروژه توی یه سلوشن بود که الان شده یک پروژه که روی ASP Core هاست شده فقط

2-پسوند فایل های Razor Component قبلا .cshtml بود ولی الان شده .razor (درسته که توی هردوشون با Razor کد مینویسیم ولی کامپایلشون متفاوته). البته الان هم میشه با کانفیگ به حالت قبل برش گردوند

3- یکپارچه سازی Razor Component ها با قابلیت Endpoint Routing که خب بحثت مفصله

4- طرز رندر شدن Razor Component ها به این صورت که اول محتوای اون کامپوننت سمت سرور رندر میشه و به صورت html به مروگر کلاینت ارسال میشه. بعد اتصال SignalR برقرار میشه و محتوای اون رو بروزرسانی و interactive (قابل تعامل) میکنه
خوبی این روش اینه که اولا این کامپیوننت ها برای کاربرانی با سرعت کم سریع تر لود میشه و دوما چون کامپوننت ها به صورت html ایی رندر میشن، عملا توسط موتور های جستجو مثل گوگل قابل Crawrl و ایندکس گذاری میشن. دقیقا اون مشکل Server Side Redering که برای فریمورک های SPA هست رو برطرف کرده

5- امکان اضافه کردن و استفاده از Razor Component ها درون Razor Class Library ها

6- بهبود امکان Event Handling در Razor Component ها
توسط نوع EventCallback میتونین واسه Razor Component هاتون event های سمت سروری رو هندل کنین. مثلا یه button سمت کلاینت ایجاد کنین که onClick اش، یه متد سمت سروری رو صدا میزنه. تازه هم از متد های sync معمولی و هم از متد های async پشتیبانی میکنه
نمونه کدش رو پیشنهاد میکنم از لینک خود ماکروسافت ببینین

7- امکان اعتبار سنجی سمت کلاینت و سرور در Razor Component ها
توسط این امکان میتونین اعتبار سنجی هاتون رو بر اساس Data Annotation ها، هم سمت سرور و هم سمت کلاینت انجام بدین
بازم بهتره نمونه کدش رو توی لینک ماکروسافت ببینین

🔹امکان Runtime compilation
در راستای ایجاد یک framework مشترک برای ASP NET Core چندتا از پکیج ها حذف شدن از جمله (EF Core - Newtonsoft.Json و Roslyn) در نتیجه امکان Runtime compilation که به Roslyn وابسته است به صورت پیشفرض حذف شده از NET Core 3.0 ولی با افزودن یه پکیج و یه متد توی سرویس ها میتونین فعال اش کنین

🔸قالب جدیدی به نام Worker Service
توی تپملیت پروژه های قابل ایجاد، یه قالب جدیدی اضافه شده به نام Worker Service که توسط اون میتونین وظایف پس زمینه طولانی (long-running) رو انجام بدین که توی ویندوز، توسط Windows Service و توی لینوکس توسط Linux Daemon انجام میشه

🔹قالب پروژه Angular به Angular 7 اپدیت شد
به زودی و پیش از انتشار نسخه نهایی ASP NET Core ، این قالب به Angular 8 آپدیت خواهد شد

🔸امکان احراز هویت در قالب پروژه های SPA مانند Angular و React
امکان احراز هویت توسط Identity Server انجام میشه ولی با اضافه شدن یه سری اکسنشن متد، طرز کار باهاش خیلی ساده تر میشه و از این پس میتونین به راحتی توی پروژه های Angular تون ازش استفاده کنین
بازم بهتره نمونه کدش رو توی لینک ماکروسافت ببینین

🔹امکان استفاده از SignalR با Endpoint Routing
قابلیت Endpoint Routing که توضیحش مفصله و مزایای زیادی (که یکیش پرفرمنسی) هست رو داره. مزیت دیگه ای که اینجا به دردمون میخوره اینه که به جای اینکه شما Routing هاتون رو برای MVC، RazorPages و SignalR سر جاهای خاص خودشون و جدا از هم تعریف کنین، توسط این قابلیت میتونین، یکجا و درکنار هم دیگه تعریفشون کنین که خب مدیریتش رو هم ساده تر میکنه. مثال :
app.UseRouting(routes =>
{
routes.MapRazorPages();
routes.MapHub<ChatHub>("hubs/chat");
});
🔸اضافه شدن قابلیت Long Polling به SDK کلاینتی SignalR واسه Java
تعریفش معلومه دیگه... توضیح نمیخواد

🔹اضافه شدن قالب پروژه gRPC
این قالب امکان ایجاد سرویس های gRPC را توسط یک فریمورک gRPC را فراهم میکنه. خود gRPC یک فریمورک remote procedure call یا به اختصار RPC هست که با همکاری گوگل ساخته شده است
در کل خودمم از این قسمت چیز زیادی سردر نیاوردم. اگه کسی بلده، لطفا تقلب برسونه :دی

جهت اطلاعات بیشتر لینک زیر رو مطالعه کنین
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-3/
________________
@IranaAspMvc
سیر تا پیاز Repository و UnitOfWork ؟!!! 🤨

خیلی از دوستان در مورد repo و uow سوال میپرسند
- اینکه واقعا چیه؟
- مزایا معایبش چیه؟
- اصلا ازش با EF استفاده بکنیم یا نه؟! (خیلی هم بحث اشتباه بودن استفاده ازش روی EF داغه و البته اخلاف بین علما، زیاد!)
- پیاده سازی صحیحش چطوریه؟
- و کلی سوال و چرای دیگه ...

🔸توی سایت dotnettips.info، مقاله های خوبی از مزایا و معایبش و اینکه استفاده بکنیم یا نکنیم وجود داره ولی تعدادش زیاده و بعضا ضد و نقیض هم هستند!
مثلا یکی از مقاله هاش گفته استفاده ازش روی EF اشتباهه در صورتی که خود وحید نصیری ازش استفاده میکنه!

🔹خلاصه که هیچ منبع جامع و درست و درمونی واسه این قضیه وجود نداره و متاسفانه از اون بعد تر، مدرس ها و مقاله های زیادی که به اشتباه توضیحش دادن و پیاده سازیش کردن 😐

🔸نهایتا برخلاف میل شخصیم تصمیم گرفتم یه آموزش کاااامل و جامع ازش تهیه کنم
توی این آموزش که نسبتا طولانی خواهد شد، هیچ جواب نسخه پیچ شده ای به شما نخواهم داد (چون اساسا اشتباه هست) ولی همه جوانبش رو با هم دیگه بررسی میکنیم تا یادبگیریم کجا و چرا استفاده ازش صحیحه و کجا و چرا استفاده ازش اشتباهه😎
روش های مختلف پیاده سازیش رو بررسی میکنیم و روش صحیح استفاده از اون روی EF رو هم انجام میدیم.
آخرشم پروژشو با فیلماش توی گیتهاب میگذارم تا همه استفاده کنند✌️
باشد که دیگه کسی نیاد از این سوالا بپرسه

🔹 واما کاری که شما باید بکنین اینه که "هررررر چی" سوال در مورد این موضوع دارین رو واسم ارسال کنین تا در ارستای هرچه تکمیل تر شدن این آموزش، به اون سوالا هم جواب بدم
پس سوالاتتون در این رابطه رو به اکانت @mjebrahimi ارسال کنین. (البته فقط تا روز 22 اسفند) پس منتظرتونم
_______________
@IranAspMvc
🔰 یه نکته :
در مورد async فقط عملیات IO bound بهتره async بشن و اگه عملیات CPU bound رو async کنیم، عملا اون ازاد شدن ترد جاری رو نخواهیم داشت
حالا عملیات IO bound فقط میشن کار با Network و HDD و Database که بازم میشه همون هارد
نکته ای که وجود داره اینه که کلاس هایی متد MemoryStream که عملا فقط توی حافظه رم دیتا رو میریزند و می خونند، عملا متد های async شون، async واقعی نیستند و عملیات به صورت sync انجام میشه و نهایتا یه completed Task بازگردونده میشه. در واقع نه تنها هیچ منفعتی نداره بلکه یه سربار اضافی و غیر لازم هم داره

حالا دلیل اینکه پس چرا متد های async رو هم بهشون اضافه کردند، به خاطر اینه که کلاس MemoryStream از Stream ارث بری میکنه و چون توی اون کلاس متد های async وجود داره پس توی اینم پیاده سازی شده صرفا واسه یک دست بودن (والبته اکثر کلاس های Stream ایی عملیات های IO Bound دارن مثل FileStream و...)

https://stackoverflow.com/a/20805616
https://stackoverflow.com/a/47283540
___________
@IranAspMvc
This media is not supported in your browser
VIEW IN TELEGRAM
#زنگ_تفریح
وقتی دو اسکاتلندی سوار آسانسوری
با سیستم تشخیص گفتار میشند! 😁😂😂
@IranAspMvc
میزان عیدی سال 1397
خیلی ها از نحوه محاسبه و میزان عیدی و سنوات پایان سالشون خبر ندارن و نمیدونن چقدر باید بگیرن

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

✔️میزان عیدی برابر با حقوق 2 ماه کاری شماست ولی حداقل و حداکثر داره
🔸حداقل عیدی برابر است با 2,222,538 تومان و
🔹حداکثر عیدی برابر است با 3,333,807 تومان

مثلا :
اگه حقوقتون 1 میلیون باشه، عیدی تون میشه 2,222,538 تومن
اگه حقوقتون 1.5 میلیون باشه، عیدی تون میشه 3 میلیون تومن
اگه حقوقتون 2 میلیون باشه، عیدی تون میشه 3,333,807 تومن

✔️ پس میزان عیدی شما میشه 2برابر حقوق ماهیانه شما به شرطی که توی رنج حداقل و حداکثر باشه که در غیراین صورت همون میزان های حداقل و حداکثر محاسبه میشن

✔️ اکثر شرکتا فقط حداقل میزان عیدی رو لحاظ میکنن، حتی اگه میزان عیدی شما بیشتر از حداقل باشه! که در این صورت شما باید اعتراض کنین

✔️ سنوات رو دقیقش رو اطلاعی ندارم ولی ظاهرا اون هم برابر با 1 حقوق کامل هست (اینکه حداقل یا حداکثر داره یا نه رو نمیدونم، اگه کسی میدونه بگه تا اصلاح کنم)

✔️ در بهترین حالت باید عیدی و سنوات رو آخر ماه بهمن بدهند ولی معمولا این اتفاق نمی افته و آخر اسفند میدن

✔️ به عنوان نکته آخر اینکه این میزان عیدی و سنوات یک سال کامل هست و در صورتی که کمتر از یک سال کارمند اون شرکت هستین به میزان تعداد ماه هایی که بودین حساب میشه
مثلا اگه 5 ماهه که استخدام شدین، میزان عیدی و سنوات تون تقسیم بر 12 و ضرب در 5 میشه و اینطور نیست که اصلا چیزی بهتون تعلق نگیره

@IranAspMvc
معرفی کتابخانه CacheManager

این کتابخانه تمامی ابزار های لازم برای فرایند #Caching را یکپارچه کرده و در اختیار ما میگذاره.

در واقع با استفاده از این کتابخانه میتونین از بهترین ابزار های کش رو درکنار هم به راحتی استفاده کنین و هر موقع که خواستین، هر کدوم از اونا رو با یه کانفیگ ساده تغییر بدین. مثلا روش کشینگ تون رو از MemoryCache به Redis تغییر بدین

قابلیت ها :
🔹امکان استفاده از کش پروایدر های مختلف InMemory مانندMemoryCache و System.Runtime.Caching
🔸امکان استفاده از کش پروایدر های مختلف Distributed مانند Memcached، Redis و Couchbase
🔹امکان استفاده از ابزار های Serialization مانند : Binary، Json ، Bond و ProtoBuf گوگل که جز سریع ترین هاست
🔸لاگ تمامی عملیات ها بر اساس Logging موجود در NET Core
🔹قابلیت اعمال تنظیمات بر اساس Configuration موجود در NET Core و App/Web.config و نیز کد نویسی
🔸 امکان فراخوانی متد ها به هنگام رخ داد (Event) های مختلف مانند OnGet, OnAdd, OnRemove و...
🔹قابلیت استفاده از کش های چند لایه ای
🔸مدیریت خودکار مباحث Expiration در کش های چند لایه
🔹قابلیت Sync کردن دیتا ها در کش های چند لایه
🔸امکان ثبت گزارشات (Statistics) و معیار های پرفرمنسی (Performance Counters)

همچنین این کتابخانه ضمن رعایت نکات پرفرمنسی و Best Practice های کشینگ، امکان استفاده ایمن و یکپارچه برای ما فراهم میکنه

https://github.com/MichaCo/CacheManager

در حال حاضر این کتابخونه و کتابخونه EasyCaching که قبلا معرفی کردیم، بهترین کتابخانه های Cache Integration هستند
@IranAspMvc
DotNetZoom
🔰دوره دوره API نویسی اصولی و حرفه ای در ASP.NET Core در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP Core بررسی شده اند. همچنین سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده بشه. ونیز Best Practice…
مدیر سایت بیاموز زحمت کشیدن طی یک حرکت انقلابی، آتش زدن به آموزش بنده 😑😅
به مناسبت عید نوروز، کد تخفیف 51 درصدی ارائه کردند
با همون dotnetzoom میتونین با 51% تخفیف دوره ها رو تهیه کنین✌️
❇️ نحوه ساخت اپلیکیشنهای Real-time تحت وب با ASP NET Core SignalR (زبان اصلی زیر نویس دار)

[02:10] - Quick introduction to SignalR
[06:06] - Targeting clients
[10:51] - Leveraging the Hub protocol
[12:18] - SignalR Transports
[13:55] - Hosting SignalR in a background service
[16:22] - Azure SignalR Service
[18:22] - The SignalR Java client on Android
[22:34] - Streaming with SignalR

https://channel9.msdn.com/Shows/On-NET/Real-time-web-applications-with-ASPNET-Core-SignalR
_______________
@IranAspMvc
معرفی EFSecondLevelCache.Core
در سری #معرفی_اکستنشن_های_کاربردی_EFCore

توسط این کتابخانه میتونین کش سطح دوم (second level caching) رو روی EF Core فعال کنین. در واقع میتونین نتیجه کوئری هاتون رو کش کنین تا دفعه بعد، به جای دیتابیس، از کش خونده بشه.
این کتابخانه توسط وحید نصیری عزیز، مدیر سایت dotnettips.info نوشته شده است.

🔸این کتابخانه برای مدیریت Caching اش از کتابخانه CacheManager استفاده میکنه که فوق العاده قدرتمند و انعطاف پذیر هست و قبلا معرفیش کردیم.

🔹در حال حاضر این کتابخانه محبوبترین و سپس کتابخانه EntityFrameworkCore.Cacheable که قبلا معرفی کردیم جز بهترین کتابخانه های کش سطح دوم برای EF Core هستند.

🔸مزیت این کتابخانه نسبت به اون، اینه که از async هم پشتیبانی میکنه. مثال :
var products = context.Products.Include(x => x.Tags).Cacheable().FirstOrDefault();

🔹مزیت دیگه اش اینه که به صورت خودکار بحث اعتبار سنجی کش (اصطلاحا Invalidation یا Revalidation) رو به صورت خودکار مدیریت میکنه به این صورت که به محض تغییر یه entity یعنی (insert, update, delete)، آیتم های مربوط به اون رو از کش حذف میکنه تا توی کوئری بعدی بروز رسانی بشه.

https://github.com/VahidN/EFSecondLevelCache.Core/
_______________
@IranAspMvc
نمودارهای اولیه و نتایج خام نظر سنجی بزرگ کار و زندگی برنامه نویسان و مدیران سیستم ایران در سال ۱۳۹۷

به نقل از وبلاگ جادی (jadi.net) :
خب دوستان، بعد از یک‌ماه تقریبا ۳۰۰۰ نفر فرم نظر سنجی سالانه کار و زندگی برنامه نویسان و مدیران سیستم رو پر کردن و نتایج آماده انتشاره. این نظر سنجی سالانه می تونه در طول زمان کلی به کمک ما بیاد و در نبود یک سندیکا، حداقلی از اینکه چقدر باید حقوق بگیرم یا چه شرایطی باید از یک محیط کار بخوایم رو بهمون نشون بده. همچنین با سبک زندگی و خیلی چیزهای همدیگه آشنا می شیم و می‌بینیم بقیه چه چیزهایی بلدن و کجاها کار می کنن و احتمالا مسیری برای پیشرفت خودمون پیدا می کنیم. پس با تشکر از همه ۲۹۵۷ نفری که پرسشنامه رو پر کردن، اول به این نمودارها نگاهی می کنیم و بعدش اون آخر، فایل اصلی رو می ذاریم تا اگر کسی خواست، تحلیل خودش رو بده. منم در طول عید سعی می کنم چند تحلیل روی دیتاها انجام بدم و سعی کنیم روابط آماری بینشون رو کمی کشف کنیم. شما هم اگر کار جالبی روی دیتاها کردین خوشحال می شم بهم (وبلاگ جادی) معرفی کنین تا توی همین سری ها اضافه اش کنم. اما اولین مطلب،‌ منطقا آمار ابتدایی است.

https://jadi.net/2019/03/iran-programmers-results/
البته سایت جادی فیلتره و اگه فیلتر شکن ندارین میتونین نتایج رو به صورت PDF از لینک زیر دانلود کنین
https://bit.ly/2Tg9Ux2
_______________
@IranAspMvc
Forwarded from Software Philosophy
♨️ یک تغییر بزرگ: حذف دستور new از زبان‌های C# و Java ⁉️

بالاخره پس از مذاکرات و صحبت‌های زیاد در یک اقدام هماهنگ خالقان C# و Java تصمیم گرفتند دستور new را از این زبان‌ها حذف کنند. این تصمیم به این دلیل گرفته شد که از نظر طراحان این زبان‌ها همه Object Instantiation ها همیشه باید از طریق Dependency Injection انجام شود و اصولا در یک برنامه خوب برنامه‌نویس نباید خودش یک شی را ایجاد کند.

// Not a valid code anymore. 
Person p = new Person();

// New dependency injection syntax.
Person p = new.Resolve<Person>();

این تصمیم اولین تصمیم هماهنگ شده و همزمان بین تیم‌های توسعه زبان Java و C# است و Anders Hejlsberg و James Gosling هر دو در مورد این تصمیم بسیار خوشحالند.

با توجه به اینکه این تصمیم در روز اول آوریل (۱۳ فروردین) گرفته شد و نسخه Visual Studio 2019 نیز در همین روز منتشر شد، این تغییر در نسخه جدید C# 8.0 اعمال شده و باید از مدل جدید آن استفاده کنید.
در جاوا هم طبق برنامه‌ریزی این ویژگی در Java 15 اضافه خواهد شد که در سال ۲۰۲۵ ریلیز خواهد شد.

برای اطلاعات بیشتر می‌توانید مقاله‌ای که در این مورد در لینک زیر نوشته شده‌است را بخوانید.

۱۳ بدرتان مبارک!

https://mehrandvd.me/2019/04/01/a-huge-change-in-java-and-c/

https://fa.wikipedia.org/wiki/%D8%AF%D8%B1%D9%88%D8%BA_%D8%A7%D9%88%D9%84_%D8%A2%D9%88%D8%B1%DB%8C%D9%84

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

https://ow.ly/6RyP30ojWAP

#مهران_داودی (https://ow.ly/GwIl309lFEm)

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

___
رمزنگاری خودکار فیلدها در 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
_______________
@IranAspMvc
🔰بررسی نتایج کلیدی نظرسنجی Stackoverflow 2019 (قسمت اول)

چند روز پیش نتایج نظرسنجی Stackoverflow 2019 منتشر شد
این نظرسنجی که بزرگترین و معتبر ترین نظرسنجی دلوپر هاست، نتایج جالبی داشته که مهمترین نتایج کلیدیش رو با هم بررسی خواهیم کرد

محبوب ترین Framework ها:

🔸 فریمورک NET Core با 77% محبوبیت، محبوب ترین فریمورک شناخته شده است
این محبوبیت به معنای پر استفاده ترین نیست و به معنی دوست داشتنی ترین است، یعنی میزان علاقه به این فریمورک ها را نشان میدهد
درواقع اکثر افرادی که از این فریمورک ها استفاده میکنند راضی بوده و علاقمند به ادامه کار با آنها هستند
پس از آن Torch/PyTorch (فریمورک یادگیری عمیق پایتون) و Flutter (فریمورک گوگل برای توسعه اپ های موبایل به صورت Cross-platform) به ترتیب با اختلاف کمی جز محبوب ترین فریمورک ها هستند

🔹 از بین فریمورک های معروف، Cordova و Xamarin جز کم محبوبیت ترین ها شناخته شده است
به این معنی که کسانی که با این فریمورک ها برنامه نویسی میکنند، علاقه کمی به ادامه کار با اینها را دارند.
پس اگر از اینها استفاده میکنید یا تصمیم به یادگیری آنها دارید، شاید لازم باشه یه تجدید نظری بکنین

محبوب ترین Database ها:

🔸 دیتابیس های Redis (برای سومین سال متوالی) و PostgreSQL و Elasticsearch به ترتیب با 71 و 69 و 63 درصد محبوب ترین دیتابیس ها شناخته شده اند و اکثر افراد علاقمند به ادامه کار با آنها هستند
دیتایس SQL Server نیز با 57% محبوبیت در میانه جدول قرار دارد!

🔹 در نقطه مقابل دیتابیس ها Couchbase و Oracle و Cassandra و MySQL به ترتیب جز کم محبوبیت ترین ها هستند و استفاده کنندگان، به ادامه کار با آنها علاقمند نیستند
با این اوصاف میشه گفت دوره پادشاهی این دیتابیس ها به پایان رسیده و در آینده نیز بیشتر خواهد رسید

محبوب ترین پلفرم ها :

🔸 بعد از Linux (که بدیهی هست) Docker و Kubernetes به ترتیب با 77 و 76 درصد جز محبوب ترین پلتفرم ها شناخته شده اند
اگر هنوز به استفاده از اینها رو نیاوردید، مطمئن باشید آینده از آن شما نیست!

🔹 در نقطه مقابل با کمال تعجب WordPress کم محبوبیت ترین پلتفرم بوده! و این شاید زنگ خطری برای وردپرس کاران باشد
وردپرس هم اکنون هم پر استفاده ترین CMS دنیاست ولی کم محبوب بودن به معنی علاقمند نبودن به ادامه استفاده از اون هست، یعنی کاربرانش راضی نیستند و احتمالا در آینده استفاده ازش کاهش پیدا میکنه

محبوب ترین محیط کدنویسی:

🔸 برای دومین سال متوالی Visual Studio Code با 50.7% محبوب ترین ابزار کد نویسی شناخته شد و پس از آن Visual Studio و NotePad++ به ترتیب با 31 با 30 درصد در صدر جدول قرار داشتند
این آمار بیشتر مربوط به برنامه نویسای وب بوده ولی برای برنامه نویسان موبایل هم، Visual Studio Code با اختلاف کمتر از 1 درصد در جایگاه دوم و پس از Android Studio قرار داد

محبوب ترین سیستم عامل کدنویسی:

🔹 سیستم عامل Windows با اختلاف زیاد و با 47 درصد محبوبیت در صدر قرار دارد و پس از آن مک و لینوکس به ترتیب با 26 و 25 درصد در جایگان دوم و سوم
بر کسی پوشیده نیست که لینوکس بهترین سیستم عمل برای سرور بوده و هست ولی دلیل نمیشه برای محیط توسعه هم بهترین باشه، اینجاست که به این نتیجه میرسیم که هر چیز باید در جای خودش استفاده بشه

پر درآمد ترین زبان ها:

🔸 زبان Clojure به طور میانگین با 90 هزار دلار درآمد سالانه، گران قیمت ترین زبان برنامه نویسی است و پس از آن F# و Go با درآمد سالانه 80 هزار دلار درجایگان بعدی قرار دارند

🔹 زبان C# نیز به طور میانگین، با درآمد سالانه 59 هزار دلار تقریبا در میانه جدول قرار دارد

🔸 زبان های Java و C و Assembly با درآمد سالانه 52 هزار دلار و زبان های HTML/CSS و JavaScript به ترتیب با 55 و 56 هزار دلار جز زبان های ارزان دنیا هستند
لازم به ذکره این نتایج مربوط به میانگین آمار جهانی بوده و در آمریکا تا حد زیادی متفاوت است

🔹 و در آخر زبان PHP با حدود 42 هزار دلار درآمد سالانه، کمترین درآمد رو داره
به نحوی که حتی توی لیست اصلی جا نشده ولی توی نمودار پایینای صفحه هست

https://insights.stackoverflow.com/survey/2019
_______________
@IranAspMvc
🔰بررسی نتایج کلیدی نظرسنجی Stackoverflow 2019 (قسمت دوم)

🔸 بیش از نیمی از برنامه نویس ها، آخرین تغییر شغلیشون مال 2 سال گذشته بوده این یعنی اینکه معمولا نمیشه برنامه نویسا رو بیشتر از 2 سال یه جا نگه داشت
این نیاز به تنوع و تغییر شرکت دادن، توی برنامه نویسا خیلی معمول هست، دلیلشم اینه که برنامه نویسا معمولا دنبال یادگیری و چالش های جدید هستند و قاعدتا بعد یه مدت، چالش ها و فرصت های یادگیری یه تموم میشه و جذابیتش رو براشون از دست میده

🔹 57 درصد برنامه نویسا بهترین محیط برای کار کردن رو "اداره" میدونن و 33 درصدشونم "خونه"
به عنوان یه صاحب تجربه توی این بحث میتونم بگم شاید کار کردن توی خونه برای تنوع و یا کوتاه مدت مفید باشه ولی برای بلند مدت اصلا مناسب نیست
از معایبش میشه به کاهش بهره وری در بلند مدت و نیز کاهش شور و نشاط و سطح روابط اجتماعی به دلیل در ارتباط نبودن (یا کم بودن) با همکاران و دوستان هست

🔸 بیش نیمی از توسعه دهندگان (54 درصد) از تکنولوژی های Container ایی (مانند داکر) به ترتیب برای محیط های Development و Testing و Production خود استفاده می کنند

🔹 80 درصد توسعه دهندگان، از تکنولوژی های Blockchain ایی استفاده (یا پیاده سازی) نمی کنند و از اون افراد باقی مانده که اکثرا هندی هستند، 12 درصدشون برای مباحث غیر مالی (Non-currency) بهره میبرند

🔸 در کل اکثر برنامه نویسای دنیا (برعکس ایران متاسفانه) برای پروژه های خودشون از Unit Test می نویسند و نکته جالبش اینجاست که اکثر افرادی که در اینگونه شرکت ها (که Unit Test استفاده میکنند) استخدام هستند، کمی رضایت شغلی بیشتری دارند

🔹 اکثر برنامه نویسا برای تمرکز موقع کد نویسی ترجیح میدند آهنگ گوش کنند
گوناگونی سبک موزیک ها زیاده ولی به عنوان محبوب ترین ها میتوان به سبک های Rock، Metal، Electronic و نیزآهنگ های Classic و بدون کلام اشاره کرد
خلاصه که اگه خواستی بببینی طرف برنامه نویسه یا نه، ببین موقع کد نویسی موزیک گوش میده یا نه :))

🔸 بیشتری ساعت کاری برنامه نویسا مربوط به کشور های اروپای شرقی، هند و آمریکا هست که معمولا بیشتر از 44 ساعت در هفته کار می کنند و همین عامل نشون میده اونجا جای من نیست! :))

https://insights.stackoverflow.com/survey/2019
___________
@IranAspMvc
Forwarded from کدهک
ویدیو :

مقایسه عملکرد متدهای Sync و Async در ASP NET Core

https://tinyurl.com/y57t4u33