کدهک
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 کدهک
چرا 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
فروش ویژه آخر سال با 50 درصد تخفیف

از امروز می توانید برای مدت محدود همه ی دوره های آموزشی کدهک را با 50 درصد تخفیف تهیه کنید.

علاوه بر درگاه بانکی امکان خرید به صورت کارت به کارت وجود دارد. می توانید با @codehak تماس بگیرید.



کد تخفیف : eid99

آدرس فروشگاه :

https://codehaks.com/shop

همچنین کلیه دوستانی که قبلا اشتراک ویژه تهیه کردن اشتراک آنها به مدت یک سال تمدید شده است. لینک دانلود قسمتهای جدید از طریق سایت قابل دریافت است.
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ اگه هنوز براتون سواله که MongoDb یا مثلا SqlServer ❗️

اگه نمیدونین تئوری CAP چیه اول اینجا رو مطالعه کنین

وقتی از نگاه تئوری CAP دیتابیس mongo رو بررسی کنیم
مونگو تو شرایط مختلف trade-off متفاوتی از C و A و P رو فراهم میکنه

🔶 از نگاه Consistency :
مثلا وقتی به صورت Distribute ازش استفاده نشه Strong Consistent هست پس Consistency رو داره
ولی وقتی به صورت Distribute ازش استفاده بشه (مثلا دیتا از replica ها خونده بشه) Eventual Consistent هست پس Consistency رو فدا میکنه

🔷 از نگاه Availability:
وقتی از مونگو به صورت توزیع شده (Replica-Sets) استفاده بشه، high availability خوبی رو فراهم و در صورت دان شدن Primary Node سریعا یک node دیگه جایگزین میشه ولی در این حالت Consistency فدای Availability میشه

🔶 از نگاه Partition Tolerance:
توسط قابلیت Replica-Sets عملا Partition Tolerance فراهم است منتها تا زمانی که "بیش از نیمی" از Node ها به یک دیگر متصل باشند. در این حالت سیستم Primary Node جدید رو انتخاب میکنه
ولی اگر Node های ثانویه به اندازه کافی نباشند همچنان امکان read وجود داره ولی دیگه امکان write وجود نداره. پس دراین حالت Availability برای Consistency فدا میشه

🔰 نتیجه گیری :
✔️ اگر توزیع نشده استفاده بشه : CA
✔️ اگر توزیع شده باشه ولی اکثریت node ها در دسترس باشند : AP
✔️ اگر توزیع شده باشه ولی کمتر از نصف node ها در دسترس باشند : CP



در نهایت ویژگی های خوبی که باعث میشه Mongo انتخاب بهتری نسبت به دیتابیس SQL/Relational باشه ایناس :

1️⃣ شما نیاز به مقیاس پذیری بالا به صورت Horizontal Scaling دارید (توسط قابلیت Replica-Set و Sharding مونگو)
در این حالت معمولا Consistency فدا میشه پس باید دقت داشت که این روش برای دیتا های حساس که به یکپارچگی و ثبات بالا نیاز دارند مناسب نیست، مثل برنامه های حسابداری و بانکی

2️⃣ دیتای شما ساختار (Schema) مشخصی نداره و به انعطاف پذیری بالا نیاز دارید (به خاطر Schema-less بودن مونگو)
در این حالت باید توجه داشت که متفاوت بودن ساختار رکورد (داکیومنت) ها میتونه احتمال خطا توی سیستم رو افزایش بده پس باید در سطح کد نویسی حواسمون بهش باشه

3️⃣ دیتابیس Mongo برای ذخیره سازی و بازیابی دیتا های حجیم و "مرتبط" بسیار مناسبه و پرفرمنس بالایی داره، چون تمام دیتای مرتبط به یک سند داخل خودش ذخیره میشه و نیاز به Join خیلی کمتر احساس میشه

4️⃣ دیتابیس Mongo به خاطر ساختار و سادگی ایی که داره Performance Tuning و Optimization های حرفه ای که نیاز به DBA داشته باشه خیلی کمتر توش احساس میشه پس اگه میخواین خیلی درگیر کار های DBA ایی نشین Mongo گزینه مناسبیه
___________________
@DotNetZoom
آشنایی با کتابخانه vue.js و نحوه ی استفاده از آن در ASP NET Core

در این ویدیو به textarea شمارنده ی کاراکتر اضافه می کنیم با vue devtools و افزونه vue در ویژوال استودیو آشنا می شویم.

https://codehaks.com/go/vue