کدهک
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
چرا Discord از Go به Rust مهاجرت کرد؟

دیسکورد (Discord) یک سرویس چت است که در بازی های آنلاین مورد استفاده قرار میگیرد.

تیم فنی Discord در یک مقاله مفصل شرح داده است که چرا از Go به Rust مهاجرت کرده است.

تیم Discord با بررسی لوگها متوجه شد در ترافیک بالا هنگام خواندن کش جهش های ناگهانی در CPU و Latency وجود دارد که در فواصل 2 دقیقه ای روی میدهند.

بررسی های بیشتر نشان داد مشکل از مکانیزم Garbage Collection در زبان Go است که باعث میشود برای لحظاتی سیستم هنگ کند تا پاکسازی حافظه انجام شود.

در زبان Rust پاکسازی حافظه بدون Garbage Collection صورت میگیرد در عین حال این زبان به صورت بهینه از حافظه استفاده میکند.

جایگزین کردن Rust کمک کرده است که نوسانات CPU و Latency حذف شود و سیستم روند یکدست و خطی را دنبال کند.

طراحی الگوریتم مناسب برای Garbage Collection از چالش های اصلی زبانهایی است که از این سیستم برای پاکسازی حافظه استفاده میکنند. یکی از دلایل محبوبیت Rust عدم استفاده از این روشهاست.
Forwarded from برنامه نویس
🔈🤑 تخفیف 90% پکیج های آموزش ASP.NET Core تا مدتی محدود

چند وقت پیش بود که پکیج های آموزش ASP.NET Core 2.2 رو ارائه دادم. پس از انتشار ASP.NET Core 3.1 می خواستم شروع به ضبط آموزش های جدید خاص این ورژن کنم، اما با مرور مستندات ASP.NET Core 3.1 متوجه شدم خوشبختانه در ASP.NET Core 3.1 مطالبی که در پکیج های قبلی ما آموزش داده شده هیچ تغییری نکرده اند و اون مطالب عینا در ورژن های جدید قابل استفاده است.

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

در این آموزش ها، علاوه بر مطالب ارائه شده توسط مایکروسافت و دیگر بزرگان عرصه آموزش، از تجربیات شخصی مدرس در برنامه نویسی پروژه های مختلف نیز استفاده شده و بعضی مثال ها و تکنیک های ارائه شده، در هیچ منبع و مرجع دیگری یافت نمی شود.

جهت رفاه مالی مخاطبین گرامی، پکیج های فوق تا مدتی محدود با 90% تخفیف از سایت ما قابل خرید هست. لازم به ذکر است تخفیف فوق روی قیمت دوره از قبل اعمال شده و نیاز به کد تخفیف نیست.
جهت مشاهده جزئیات پکیج های فوق می توانید به صفحه ویژه آموزش های ASP.NET Core در سایت آموزش برنامه نویس مراجعه فرمائید.

با تقدیم احترام
#مهدی_کرامتی
@barnamenevis_net
@barnamenevis_org
Forwarded from کدهک
در این ویدیو با کارکرد IAsyncEnumerable آشنا می شویم. این ابزار در NET Core 3.0 و #C 8.0 اضافه شده است و به شما امکان میدهد داده های Enumerable را به صورت async پردازش کنید. با استفاده از این تکنیک یک فایل متنی را پردازش می کنیم سپس اطلاعات بینکوین را به صورت زنده از سرور به کلاینت استریم می کنیم.

https://tinyurl.com/cdhk-asyncenum
Forwarded from کدهک
چرا foreach کندتر است؟

در نظر سنجی کدهک بیش از 50 درصد کاربرها اعتقاد داشتند که for-each سریعتر از for-loop است یا فرقی با آن ندارد. در اینجا این موضوع را بررسی می کنیم.

اگر با آرایه هایی کار می کنید که ابعاد مشخصی دارند فرقی بین for-loop و for-each وجود ندارد. از آنجا که در پس زمینه کامپایلر سی شارپ بجای حلقه ی for-each حلقه ی for-loop جایگزین می کند.

اما این تنها در صورتی است که آرایه را به IEnumerable تبدیل نکنید. کلاس IEnumerable برای پردازش آرایه از توابع Current و MoveNext استفاده می کند که در هر بار اجرای حلقه موقعیت جاری را چک می کند و شامل بک فرآیند try-catch هم میشود. این مسئله یک سربار روی حافظه و پردازش ایجاد می کند و منجر به کندتر شدن پردازش می شود. حتی اگر آرایه ابعاد ثابتی داشته باشد از آنجا که به IEnumerable تبدیل شده در پس زمینه قابل تبدیل به for-loop نیست.

پس به طور کلی for-each کندتر از for-loop است. در مواردی که پرفورمنس حلقه اهمیت زیادی پیدا می کند بهتر است آن را با for-loop جایگزین کنید.
آمار جالب NET Core در Docker Hub

تعداد دانلود فریم ورک NET Core در داکر هاب بیش از یک میلیارد دانلود رسیده است. همینطور NET Core SDK هم بیش از 500 میلیون را ثبت کرده است.

به نظر میرسد تغییر ساختار دات نت به خوبی آن را با Docker سازگار کرده است و توسعه دهندگان این فریم ورک در حال استفاده گسترده از آن در فضای Container ها و سرویس های ابری هستند.
Forwarded from کدهک
استفاده از View Compilation در ASP NET Core 3.0

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

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

https://youtu.be/W2l2I17wVDs
استریم کردن در SignalR

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

https://tinyurl.com/cdhk-signalr-stream
اگر در ایران زندگی می کنید و کارمند هستید میزان حقوق دریافتی شما چقدر است؟
Anonymous Poll
43%
کمتر از 5 میلیون تومان
19%
بین 5 تا 10 میلیون تومان
7%
بیشتر از 10 میلیون تومان
30%
دیدن نتایج
آشنایی با gRPC

در چند سال گذشته استفاده از gRPC در رشد قابل توجهی داشته که نشان میدهد این تکنولوژی توانسته بسیاری از چالش های برقراری ارتباط بین شبکه ای حل کند.

در این ویدیو به معرفی این ابزار می پردازیم و آن را در محیط ASP NET Core پیاده می کنیم.

https://tinyurl.com/cdhk-grpc-intro
Audio
پادکست کدهک - قسمت چهارم

بررسی پیچیدگی در برنامه نویسی

چرا برنامه نویسان دات نت اصرار بر پیچیدگی دارن؟

#پادکست
Forwarded from کدهک
دیزاین پترنها روشهایی از قبل طراحی شده برای حل مسائل عمومی نرم افزار هستند. در حالی که اهمیت و کاربرد این مفاهیم در برنامه نویسی انکار ناپذیر است اما به نظر میرسد تاکید بیش از حدی روی آن وجود دارد. بر خلاف باور عمومی استفاده از آنها همیشه به سود شما نیست.

https://tinyurl.com/y5xrwer8
آشنایی با LSP

پروتکل Language Server روشی است برای ارتباط بین IDE و زبان برنامه نویسی که توسط مایکروسافت ابداع شده و به صورت متن باز توسعه داده میشود.

هنگام برنامه نویسی درون IDE یا ادیتور مانند VSCode یا Atom لازم است اطلاعاتی درباره کدی که وارد می کنید داشته باشید. مثلا تکمیل شدن دستور یا توضیحات درباره دستور و اینکه چه متدهایی در محدوده ی جاری کد در دسترس است کمک زیادی به تجربه ی بهتر برنامه نویسی می کند.

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

هر کاراکتری که وارد می کنید از طریق JSON به سرور زبان برنامه نویسی ارسال میشود و اطلاعات آن برگشت داده میشود و در ادیتور نمایش داده میشود.

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

پروژه OmniSharp برای سی شارپ LSP توسعه داده است که در VSCode و VIM و ... استفاده میشود. همچنین سایت Try.dot.net هم از این تکنیک استفاده میکند.
Forwarded from کدهک
اگر در ایران زندگی می کنید و کارمند هستید میزان حقوق دریافتی شما چقدر است؟
Anonymous Poll
43%
کمتر از 5 میلیون تومان
19%
بین 5 تا 10 میلیون تومان
7%
بیشتر از 10 میلیون تومان
30%
دیدن نتایج
هرچند VIM بعد از 20 سال همچنان طرفداران زیادی دارد اما بسیاری از کاربران بلد نیستند چگونه از این برنامه خارج شوند.

پست مربوط به "چگونه از ویرایشگر VIM خارج شوم؟" در StackOverFlow بیش از 2 میلیون بار دیده شده است !
استریم کردن دیتابیس از سرور به کلاینت

در این ویدیو با نحوه ی استریم کردن داده از سرور به کلاینت در SignalR آشنا می شویم. قرار است ردیف های یک جدول دیتابیس SQL Server را از استریم کنیم و یک به یک به کلاینت کنسول دات نت منتقل کنیم.

https://codehaks.com/go/sgh
Forwarded from کدهک
در این ویدیو با کارکرد IAsyncEnumerable آشنا می شویم. این ابزار در NET Core 3.0 و #C 8.0 اضافه شده است و به شما امکان میدهد داده های Enumerable را به صورت async پردازش کنید. با استفاده از این تکنیک یک فایل متنی را پردازش می کنیم سپس اطلاعات بینکوین را به صورت زنده از سرور به کلاینت استریم می کنیم.

https://tinyurl.com/cdhk-asyncenum
استریم کردن دو طرفه در gRPC

استریم دو طرفه به ما امکان میده داده هایی رو از کلاینت به سرور و از سرور به کلایت به صورت موازی ارسال کنیم.

در این ویدیو قابلیت Bidirectional Streaming رو در gRPC بررسی می کنیم سپس به مقایسه SignalR و gRPC می پردازیم.

https://codehaks.com/go/kjf
کتابخانه Rx حدود 10 سال پیش در آزمایشگاه مایکروسافت تهیه شده و حالا به صورت یک کتابخانه متن باز در بسیاری از زبانهای برنامه نویسی برای پیاده سازی الگوی Observer استفاده میشود.

در این ویدیو به معرفی این کتابخانه می پردازیم و یک نمونه ی از کاربردهای آن را مشاهده می کنیم.

https://codehaks.com/go/rxr
کدهک

بعد از دو سال فعالیت امروز ویدیوی شماره 200 در آپارات کدهک آپلود شد.

ویدیوهای کدهک در آپارات تا به امروز بیش از 135000 بار بازدید شده است.
Forwarded from کدهک
در این ویدیو با استفاده از SignalR قابلیت بروز رسانی Real-time را به یک برنامه ی Blazor اضافه می کنیم.

https://youtu.be/oX-ksIDtqhM
الگوی Property Injection در ASP NET Core با AutoFac

استفاده از الگوی Property Injection چندان توصیه نمیشود اما گاهی لازم است از آن استفاده کنید. در IoC Container پیش فرض ASP NET Core امکان Property Injection وجود ندارد. در این ویدیو سیستم تزریق وابستگی پیش فرض ASP NET Core را با AutoFac جایگزین می کنیم سپس الگوی Property Injection راپیاده میکنیم.

https://codehaks.com/go/LRK