کدهک
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
برای همه ی فصل ها : 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
به عنوان یک برنامه نویس زمان خواب و کار خود را چطور مدیریت می کنید؟
Anonymous Poll
44%
تا نیمه شب کار میکنم.
47%
فقط در طول روز کار میکنم
8%
قبل از طلوع آفتاب شروع به کار میکنم.
Forwarded from کدهک
در Identity از دو متد برای احراز هویت کاربر استفاده میشود:

متد IsSignedIn احراز هویت را فقط بر اساس کوکی ذخیره شده در مرورگر بررسی می کند.

متد IsAuthenticated همه ی روشهای احراز هویت را شامل میشود و فرقی نمیکند که کاربر از Cookie یا Token یا روش دیگری وارد حساب کاربری شده باشد.

اگر اکشنی دارید که فقط در مرورگر اجرا میشود می توانید از IsSignedIn استفاده کنید. اما اگر برنامه ی شما با Web API یا اپ گوشی کار میکند یا از Single Page App استفاده می کند بهتر است از IsAuthenticated استفاده کنید.
Forwarded from کدهک
در سایت های ASP NET Core از Kestrel به صورت Reverse Proxy استفاده میشود. به این ترتیب که IIS در مرحله ی اول درخواست HTTP را دریافت می کند و بعد از پالایش اولیه آن را به سرور کسترل ارسال میکند.

هر چند میشود مستقیما از کسترل استفاده کرد اما امکانات امنیتی و مدیریتی این سرور بسیار کمتر از IIS است.
Forwarded from کدهک
میزان تاخیر یا "Latency" در لایه های مختلف حافظه به نانو ثانیه

مشاهده می کنید که سرعت دیسک بسیار پایین است و اگر سیستم عامل مجبور شود اطلاعات شما را در هارد صفحه بندی کند پرفورمنس برنامه افت شدیدی می کند.
در این ویدیو با کارکرد IAsyncEnumerable آشنا می شویم. این ابزار در NET Core 3.0 و #C 8.0 اضافه شده است و به شما امکان میدهد داده های Enumerable را به صورت async پردازش کنید. با استفاده از این تکنیک یک فایل متنی را پردازش می کنیم سپس اطلاعات بینکوین را به صورت زنده از سرور به کلاینت استریم می کنیم.

https://tinyurl.com/cdhk-asyncenum
پایان پورت کردن API ها به NET Core

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

در این گزارش آمده است که NET Core 1.0 تنها 18K از API های NET Framework را در اختیار داشت.

در نسخه NET Core 2.0 این عدد به 38K رسید و حالا در نسخه 3.0 با توجه به اضافه شدن WinForm و WPF مجموع API های پورت شده به 120K رسیده است. این عدد بیش از نیمی از کل کتابخانه های NET Framework را شامل میشود.

این در حالی است که برای NET Core 3.0 تا به اینجا بیش از 62 هزار API جدید اضافه شده است که در نسخه ی قدیمی وجود ندارد.

به این ترتیب قرار نیست API های مربوط به AppDomains, remoting, WebForms, WCF server, Windows Workflow به NET Core اضافه شود.

مایکروسافت در نظر دارد این API ها به صورت متن باز و در قالب MIT منتشر کند تا توسعه دهندگان خود در صورت نیاز عمل پورت کردن را انجام دهند.
در ادامه ی بحث آپلود فایل در این ویدیو قصد دارم با استفاده از ASP NET Core و SignalR و Vuejs چند فایل را به صورت موازی به سرور آپلود کنم و همزمان درصد پیشرفت آپلود هر فایل را در مرورگر نمایش دهم.

https://tinyurl.com/cdhks-up-loads
پر کردن اطلاعات کاربری در Identity - قسمت 1 از 3

در EF Core قابلیت Seed کردن امکان میدهد که اطلاعات جداول را پر کنیم. هنگامی که با Identity کار می کنید لازم است تعدادی کاربر و سمت پیش فرض را در دیتابیس ایجاد کنید. در این مجموعه نحوه ی پیاده سازی Seed در Identity به چند روش بررسی می کنیم.



https://tinyurl.com/cdhks-seed-identity1
سایت codehak به ASP NET Core 3.0 آپدیت شد.

اولین نسخه ی کدهک با ASP NET Core 1.0 شروع به کار کرد و با هر آپدیت جدید فریم بروز رسانی شد.

همزمان با این بروز رسانی مایکروسافت اولین پیش نمایش ASP NET Core 3.1 را منتشر کرد. اگر از VS 2019 Preview استفاده می کنید بعد از نصب آپدیت نهایی SDK مربوط به NET Core 3.0 از سیستم حذف میشود و باید دوباره دستی دانلود و نصب کنید.

نسخه ی 3.1 تغییرات اساسی ندارد و فقط چند بهبود و تصحیح کوچک را شامل میشود. اما قرار است پشتیبانی بلند مدت داشته باشد.

https://codehaks.com
پر کردن اطلاعات کاربری در Identity - قسمت 2 از 3

در این قسمت با استفاده از خط فرمان و بدون اجرای سرور مشخصات حسابهای کاربری را در Identity پر می کنیم.

https://tinyurl.com/cdhks-identity-seed2
رشد صعودی برای مایکروسافت

مایکروسافت گزارش سه ماه اول سال مالی خود را منتشر کرد که نشان میدهد این شرکت در همه ی زمینه های کاری خود رشد داشته است.

طبق این گزارش سود سه ماه اول با 14 درصد رشد نسبت به سال گذشته به 33 میلیارد دلار رسیده است.

سود بخش محصولات تجاری مایکروسافت که شامل آفیس و سایت لینکدین میشوید با 13 درصد رشد به 11 میلیارد دلار رسیده است .

در این میان سرویس Azure مایکروسافت نسبت با سالهای قبل رشد کمتری داشته است. در دو سال گذشته رشد این بخش 76 درصد و 64 درصد بوده و امسال با رشد 59 درصدی سیر نزولی خود را حفظ کرده است.

منبع : techcrunch