کدهک
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
در این ویدیو با استفاده از 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
در برنامه نویسی موازی هماهنگ کردن Thread ها همیشه یک چالش است. در این ویدیو با Race Condition آشنا میشویم و میبینیم که چطور میتوان مشکل Data Race را با کمک Interlocked در سی شارپ حل کرد.

https://tinyurl.com/yy6wqntw
در این ویدیو با استفاده از Cancelation Token اجرای عملیات را در سمت سرور متوقف می کنیم و سپس مکانیزم TimeOut را درون یک حلقه پیاده می کنیم.

https://tinyurl.com/y6srku6x
اطلاعات Claims در کوکی نگه داری میشوند و به این ترتیب نیاز نیست برای خواندن آنها به دیتابیس مراجعه کنیم.

این موضوع در UserId و UserName همینطور متد IsInRole که سمت کاربر را چک میکند کار را چک میکند استفاده میشود.

در این ویدیو می خواهیم فیلدهای درون ApplicationUser را به Claims تبدیل کنیم بدون اینکه از جدول Claims در دیتابیس Identity استفاده کنیم.

https://tinyurl.com/cdhk-claims-id
Forwarded from کدهک
در سی شارپ قابلیت Garbage Collection حافظه ی مازاد را از سیستم خالی می کند.

این ابزار پاک سازی را در سه مرحله انجام میدهد که اصطلاحا Generation خوانده می شوند.

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

حافظه ی Gen1 در مقایسه با Gen0کمتر پاکسازی میشود.

به همین ترتیب وقتی پاکسازی روی Gen1 انجام میشود اشیایی که باقی می مانند به Gen2 منتقل میشود.

شانس اینکه حافظه ی Gen2 پاکسازی انجام شود کم است و معمولا داده های این بخش برای مدت زمان زیادی نگه داری میشوند.

متغیرهای استاتیک در Gen2 باقی می مانند.

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

زمانی که GC انجام میشود اجرای برنامه متوقت میشود. به همین دلیل GCتاثیر مستقیم در پرفورمنس دارد.
کارگاه تخصصی DDD در ASP NET Core برگزار میشود.

سرفصلها:

SOLID
MediatR
CQRS Pattern
Designing Application Architecture
Value Objects
Entities
Domain Services
Domain Events
Aggregates
Factories
Repositories
Unit Of Work
Event Sourcing
Unit Testing

این کارگاه در مدت 10 ساعت به صورت غیر حضوری به همراه پیاده سازی یک پروژه ی عملی برگزار میشود.

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

شروع دوره : 25 آبان 98
سطح دوره : پیشرفته
مبلغ : 250 هزارتومان

جهت ثبت نام یا کسب اطلاعات بیشتر با آیدی @codehak یا شماره 09380146555تماس بگیرید.
Media is too big
VIEW IN TELEGRAM
آشنایی با Domain-Driven Design و MediatR

در این ویدیو سرفصلهای کارگاه تخصصی DDD در ASP NET Core معرفی می کنیم

ابتدا با مفاهیم DDD در توسعه ی پروژه های نرم افزاری آشنا میشویم و سپس می بینم که چطور با MediatR می توان پیاده سازی معماری های پیچیده را ساده کرد.