کدهک
1.94K subscribers
1.29K photos
7 videos
1 file
674 links
آموزشگاه تخصصی دات نت

https://codehaks.com

لینکدین :
https://www.linkedin.com/in/codehaks

یوتیوب:
https://www.youtube.com/@codehaksfa

ارتباط با مدیر :
Admin: @codehak
Email: ghods.hakim@hotmail.com
call: 09380146555
Download Telegram
Forwarded from اِسکیلی Skilly (مهدی کرامتی)
👩‍💻👨‍💻 روز #برنامه‌نویس مبارک

💢 روز ۲۵۶ام هر سال (معادل عدد ۱۰۰ در مبنای شانزده) و مطابق با ۱۳ سپتامبر (۱۲ سپتامبر در سال‌های کبیسه) به عنوان روز برنامه‌نویسان نام گرفته ‌است. عدد ۲۵۶ (۲ به توان ۸) بزرگترین توان عدد ۲ کوچکتر از، ۳۶۵ که تعداد روزهای یک سال است، می‌باشد.

@barnamenevis_org
@barnamenevis_net
آشنایی با Blazor در ASP NET Core 3.0

طبق اعلام مایکروسافت نسخه ی رسمی Blazor به همراه NET Core 3.0 منتشر میشود. اما در حال حاضر فقط حالت Server-Side آن توسعه داده شده است و استفاده از Blazor به صورتی که در مرورگر کاربر اجرا شود به نسخه های بعدی دات نت موکول شده است.

هر چند که قالب پروژه مخصوص Client-Side وجود دارد و از همین امروز میتوانید از این تکنولوژی استفاده کنید اما پشتیبانی رسمی از آن انجام نمیشود.

در حال حاضر Blazor از نسخه ی NET Mono استفاده میکند و در واقع مایکروسافت یک نسخه از Runtime Mono را روی Web Assembly کامپایل کرده است.

تلاش زیادی برای کم کردن حجم Runtime صورت گرفته و در حال حاضر حجم آن به حدود 2 مگابایت رسیده است. این حجم در اولین نمایش صفحه دانلود میشود و در مرورگر کش میشود.

البته طبق گفته ی Steve Sanderson مبتکر اصلی Blazor در نسخه ی 5 از دات نت این روش تغییر خواهد کرد و روشهای بهتری جایگزن آن میشود که هنوز در دست بررسی است.
در حالت server-side کدهایی که برای کنترل UI نوشته شده درون سرور اجرا میشوند. وقتی کاربر روی یک دکمه کلید می کند رویداد آن از طریق SignalR به سرور ارسال میشود. در سرور اطلاعات پردازش شده و تغییراتی که باید در HTML اعمال شود به کلاینت برگردانده میشود.

از مزایای استفاده از Server-Side این است که کدهای شما در اختیار کلاینت قرار نمیگیرند. در این روش مستقیما به امکانات کامل دات نت دسترسی دارید و حتی می توانید با اکسل ارتباط مستقیم برقرار کنید. اطلاعات مستقیم از دیتابیس قابل دسترسی است و نیاز به Web API ندارید.

مشکل اصلی در Latency است چون گردش رویدادها بین کلاینت و سرور زمانبر است. همینطور زمانی که کاربرها زیاد باشند برای هرکدام یک کانکشن جدا به سرور ایجاد میشود که در ترافیک بالا میتواند فشار زیادی به سرور وارد کند. همینطور حالت آفلاین هم وجود ندارد و کلاینت نمیتواند بدون اینترنت از اپ استفاده کند.

خوشبختانه Blazor به شکلی توسعه داده شده است که می تواند به راحتی بین حالت Server-Side و Client-Side جابجا شد و در آینده اگر لازم باشه می تواند کدهای خود را بدون تغییر خاصی از سرور به کلاینت منتقل کنید.
آشنایی با GPU

در حالی که CPU به طور متوسط شامل 8 یا 16 هسته است اما GPU معمولا بیش از 1000 هسته دارد. این تعداد هسته در انجام پردازش های گرافیکی که نیاز به محاسبات ریاضی زیادی دارد به کار می آیند و تجربه ی بازی کردن یا طراحی سه بعدی را شکل میدهد.

در GPU واحدهای پردازشی محاسباتی یا (ALU) از طریق SIMD یک عملیات را به صورت موازی و همزمان انجام میدهند. این موضوع سرعت پردازش را چند ده برابر میکند اما تنوع عملیاهای قابل اجرا را کاهش میدهد.

در CPU عملیاهایی مانند محسبات ریاضی تا کار با دیسک و شبکه انجام میشود و هدف اصلی این است که عملیاتها های متنوع به صورت جداگانه و در کوتاهترین زمان ممکن انجام شود در نتیجه CPU بازه ی بسیار گسترده ای از عملیاتها را پوشش میدهد.

قدرت پردازش بالای GPU باعث شده است در هوش مصنوعی و یادگیری ماشین همینطور در رمز ارزها و دستگاههای ماینر BitCoin مورد استفاده قرار گیرد.

در سی شارپ می توانید با استفاده از کامپایلر hybridizer برای GPU برنامه نویسی کنید. این کامپایلر کد سی شارپ را به پلتفرم CUDA منتقل میکند و فایل باینری مورد نیاز را تولید میکند.

https://tinyurl.com/cdhks-hybridizer
آموزش مقدماتی SignalR در ASP NET Core

در 8 ویدیو به مدت 30 دقیقه

https://tinyurl.com/cdhk-signalr
آشنایی با Worker Service در NET Core 3.0

فردا همزمان با NETConf 2019 نسخه ی نهایی NET Core 3.0 منتشر میشود. یکی از موارد جدیدی که در این نسخه اضافه شده است قابلیت Background Service است که از طریق قالب پروژه Worker Service در دسترس است.

از Worker Service برای ایجاد سرویس هایی که قرار است برای مدت طولانی در سیستم عامل اجرا شوند استفاده میشود. این نوع اپ ها رابط کاربری ندارند و معمولا برای لوگ کردن اطلاعات یا نمایش وضعیت کلی سیستم در صفحه Terminal مورد استفاده قرار میگیرند.

کاربرد این نوع اپ ها در مواردی است که قصد دارید یک عملیات در پس زمینه همیشه در حال اجرا باشد .

یکی از کاربردهای Worker Service مدیریت پیامهای RabbitMQ است. یا اگر میخواهید پیامک یا ایمیل ها در ساعت زمانبندی شده خارج از پروسه اصلی سایت اجرا شود مناسب است. همچنین از این ابزار برای مونیتور کردن سلامت سرور و دیتابیس استفاده میشود.

در گذشته از برنامه های کنسول یا TopShelf استفاده میشد اما Worker Service ابزاری اختصاصی برای اجرا عملیاتهای بلند مدت فراهم می کند و به راحتی می توان آن را به صورت Windows Service یا Daemon Linux اجرا کرد.
پخش زنده کنفرانس NetConf در یوتویب

کنفرانس NETConf امشب ساعت 19:30 به وقت ایران شروع میشود.

قرار است طی این کنفرانس که به صورت مجازی برگزار میشود نسخه ی NET Core 3.0 RTM معرفی شود.

نسخه ی جدید NET Core شامل ASP NET Core و Blazor و Win Forms و WPF میشود که کاملا به صورت متن باز توسعه داده شده است.

در این نسخه فقط بخش Server-side از Blazor عرضه میشود و ارائه ی قابلیبت Client-side آن به نسخه ی 3.1 موکول شده است.

لینک پخش زنده :

https://tinyurl.com/cdhk-netconf
نسخه ی نهایی NET Core 3.0 منتشر شد.

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


دات نت متن باز توسعه داده میشود و تا به حال بیش از 100 هزار Pull Request توسط افراد خارج از مایکروسافت پذیرفته شده است.

ویژوال استودیو نسخه 2019 سریعتر از نسخه های قبل توسط دولوپر ها دانلود و مورد استفاده قرار گرفته است.

نسخه ی نهایی NET Core 3.0 بعد از 10 نسخه ی پیش نمایش منتشر شده است و بسیاری از باگها و ایرادات آن در این بازه ی زمانی برطرف شده است. از همین امروز می توانید شروع به استفاده از این نسخه کنید.

این نسخه شامل پشتیبانی LTS نمیشود و برای آن باید تا انتشار نسخه ی 3.1 که یک ماه دیگر ارئه میشود صبر کنید.

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

مایکروسافت برنامه ی بلند مدت خود را برای توسعه ی نسخه های بعدی دات نت اعلام کرد.

نسخه ی 3.1 از NET Core در اواخر ماه نوامبر (یک ماه دیگر) منتشر میشود که شامل پشتیبانی LTS یا بلند مدت سه ساله است.

در دوره های پشتیبانی بلند مدت برای باگها و مشکلات امنیتی پچ و آپدیت ارائه میشود که به صورت رایگان در اختیار همه قرار میگیرد.

در سال 2020 قرار است نسخه ی یک پارچه ی دات نت به شماره 5.0 منتشر شود و همه ی فریم ورکهای مختلف دات نت را زیر یک چتر مشترک جمع آوری کند.

از سال 2021 هر سال نسخه ی جدیدی از دات نت منتشر خواهد شد و یک سال در میان هم پشتیبانی LTS ارائه میشود.
چرا برنامه نویسان دسکتاپ باید به NET Core مهاجرت کنند؟

نسخه ی NET Core 3.0 اولین نسخه ای است که از WinForm و WPF پشتیبانی می کند.

دات نت Core امکان نصب Side-by-Side دارد و میتوان چند نسخه ی NET Core را کنار هم روی یک سیستم عامل نصب کرد.

همچنین می توان برنامه را به صورت self-contained منتشر کرد. در این حالت فایلهای فریم ورک به همراه پروژه منتشر میشود و نیاز به نصب ندارد.

امکان ایجاد فایل یکتا برای کل پروژه وجود دارد و مانند اپ Portable با کپی و پیست تکسیر و بدون نصب اجرا میشود.

کامپایلر جدید امکان حذف کتابخانه های مازاد دات نت را فراهم کرده با این کار حجم بسیار کمتر میشود. دیگر لازم نیست همه فریم ورک NET Core در کنار برنامه ی شما روی سیستم کاربر کپی شود.

حالت WinForm و WPF فقط برای ویندوز است و در لینوکس یا مک اجرا نمیشود. این سیستم عاملها محیط گرافیکی متفاوتی نسبت به ویندوز دارند که پیاده سازی آن روی دات نت کاربردی نیست.

نکته : بخش Form Designer مربوط به WinForm هنوز آماده نشده است و فعلا به صورت Preview و با نصب افزونه قابل استفاده است ولی برای WPF و محیط XAML مشکلی وجود ندارد.
اولین نگاه به ASP NET Core 3.0

در این ویدیو به معرفی نسخه ی جدید ASP NET Core می پردازیم و آن را با نسخه ی 2.2 مقایسه می کنیم.

لینک :
https://tinyurl.com/cdhk-aspcore3
برای همه ی فصل ها : NET Core

دات نت Core متن باز توسعه داده میشود و به صورت cross-platform قابل پیاده سازی و اجراست. فرقی نمیکند سیستم عامل شما ویندوز، مک یا لینوکس باشد.

در NET Core 3.0 علاوه بر ASP و Console امکان توسعه ی رابط کاربری با WPF و WinForm هم اضافه شده است.

ابزار Xamarin این امکان را فراهم میکند که از یک کد مشترک برای توسعه ی اپ های موبایل روی پلتفرمهای گوناگون استفاده کنید تا اپ شما با کمترین دردسر در اختیار همه ی کاربران قرار گیرد.

برای توسعه ی بازی های دو بعدی و سه بعدی می توانید از ابزار Unity در دات نت استفاده کنید.

مایکروسافت امکان توسعه اینترنت اشیا با سی شارپ را فراهم کرده و میتوانید برای Rasberry Pi و ARM32 و ARM64 اپ بسازید.

نسخه ی 1.0 از ML.NET منتشر شده است که امکان برنامه نویسی ماشین و هوش مصنوعی را در دات نت و به زبان #C فراهم میکند.

ویژوال استودیو در کنار زبان #C و فریم ورک متن باز دات نت محیطی را فراهم میکند که هر نوع اپ با کاربری های گوناگون طراحی کنید و از پشتیبانی با کیفیت و بلند مدت بهره ببرید.
اضافه کردن کامپوننت Blazor به پروژه ASP NET Core

در این ویدیو ابتدا یک پروژه ی خالی ASP NET Core 3.0 ایجاد می کنیم و سپس به آن Razor Pages را اضافه می کنیم. در آخر یک کامپوننت Blazor را درون صفحه اصلی سایت نمایش میدهیم.

با استفاده از این تکنیک می توانید به پروژه های جاری خود کامپوننت Blazor اضافه کنید و از آخرین تکنولوژی های ارائه شده بهره ببرید.

https://tinyurl.com/cdhk-blazor-rp
آشنایی با قابلیت های Blazor

در این ویدیو یک اپ CRUD پیاده شده با Blazor در حالت Server-side را بررسی می کنیم.

https://youtu.be/Px9WedDTjQg
استفاده از View Compilation در ASP NET Core 3.0

به صورت پیشفرض در ASP NET Core 3.0 ویوها تنها در زمان بیلد و پابلیش کامپایل میشوند و نمی توانید تغییرات ایجاد شده در HTML را با رفرش کردن صفحه مشاهده کنید.

برای حل این مشکل باید View Compilation را در حالت Runtime فعال کنید.

https://youtu.be/W2l2I17wVDs
Forwarded from کدهک
آشنایی با ref struct

از نسخه های اول #C امکان استفاده از struct وجود داشت. struct شباهت زیادی به کلاس دارد با این تفاوت که یک Value Type است و محتوای آن در Stack نگه داری میشود. اما همیشه اینطور نیست. اگر Struct درون کلاس به صورت Property تعریف شود یا به عنوان پارامتر Generic در List قرار گیرد عملیات Boxing اتفاق می افتد و حافظه ی Struct به Heap منتقل میشود.

پاکسازی Heap توسط Garbage Collection صورت میگیرد و می تواند باعث افت پرفورمنس شود.

در سی شارپ 7.2 قابلیت ref struct معرفی شد که نوع خاصی از struct است و فقط می تواند در Stack نگه داری شود.

خواندن از Stack سریعتر از Heap است اما از نظرحجم محدودیت دارد. به همین دلیل نمی توان دادهای زیادی درون ref struct قرار داد.

همچنین استفاده از ref struct کاربردهای محدودی دارد. از آنجا که به صورت Property درون کلاس قابل استفاده نیست، Box نمی شود و در List هم قرار نمیگیرد موارد کمی است که به کارتان می آید.

در عوض زمانی که میشود از Ref struct استفاده کرد پرفورمنس بالایی دارد که قبلا نمونه ی آن را در Span دیدیم.
در این ویدیو با استفاده از SignalR قابلیت بروز رسانی Real-time را به یک برنامه ی Blazor اضافه می کنیم.

https://youtu.be/oX-ksIDtqhM
Forwarded from Web Devs
#Boxing
#UnBoxing

🧩 Boxing & unBoxing in C#

زبان برنامه نویسی سی شارپ دارای یک سیستم واحد نوع داده ای است. یعنی تمام دیتا تایپ ها در این زبان به صورت مستقیم یا غیر مستقیم از کلاس object ارث بری میکنندکه شامل value type ها و هم reference type ها میشود.
همانطور که میدانید متغیر های value type مستقیما دربردرانده دیتای خود هستند و دیتای آنها در حافظه stack ذخیره میشود. اما متغیر های reference type که به انها ابجکت گفته میشود، فقط reference ای از دیتای خود دارند و دیتای آن ها در حافظه managed heap ذخیره میشود.

زمانی که یک متغیر valute type را به یک متغیر reference type(آبجکت) اختصاص میدهید(assign) عمل Boxing اتفاق می افتد.
مثال :
int i = 24;
object ob = i;
یا
object ob1=21; 

در هر دو مثال بالا عمل Boxing اتفاق می افتد.
متغیر i که ار نوع integer است دارای مقدار 24 میباشد که در حافظه stack ذخیره شده است و در خط بعد این متغیر به یک object کپی شده است. یعنی آبجکت ob هم اکنون به یک مقدار integer اشاره میکند و هر دو متغیر شامل عدد 24 و به صورت مستقل از هم هستند و تغییر در یکی بر روی دیگری اثری نمیگذارد.
عمل Boxing در سی شارپ حافظه و زمان زیادی را مصرف میکند بدلیل اینکه به آبجکتی که به یک value type اشاره میکند باید مقدار حافظه ای در heap اختصاص داده شود و در مرحله بعد یک کپی از مقدار متغیر value type که در حافظه stack میباشد به حافظه ی heap اختصاص داده شده آن آبجکت، منتقل شود.

عمل unBoxing برعکس Boxing میباشد یعنی زمانی که یک متغیر از نو reference type (آبجکت) را سعی میکنید به یک متغیر از نوع value type تبدیل کنید.
در unBoxing مقدار متغیر reference type از حافظه heap به محل اختصاص داده شده متغیر value type در حافظه stack منتقل میشود . برخلاف عمل Boxing در unBoxing بایستی به صورت صریح این عمل casting را ذکر کنید.مثال :
int i = 24;
object ob = i; //Boxing
int j = (int) ob;//unBoxing

مقدرا اختصاص داده شده به متغییر ob از نوع integer باید دوباره به همان نوع (integer) به صورت صریح cast شود.
در واقع عملیات Boxing به صورت implicit و عملیات unBoxing به صورت explicit انجام میشود.
عملیات unBoxing نیز همانند Boxing حافظه و زمان زیادی مصرف میکند.

@fullStackDevs
بسیاری از پروژه های قدیمی به روش Database First پیاده شده است. در این ویدیو مشاهده می کنید که چطور می توانیم با استفاده از Entity Framework Core 3.0 دیتابیس های موجود را به حالت Code First تبدیل کنیم.

https://tinyurl.com/cdhk-dbtocd
در این ویدیو با یک فایل را در ASP.NET Core آپلود می کنیم و می بینیم که چطور میتوان با استفاده از SignalR درصد پیشرفت آپلود را نمایش داد.


https://tinyurl.com/cdhk-signalr-progress