کدهک
1.95K subscribers
1.29K photos
7 videos
1 file
672 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 DotNetZoom (Ali Abdolmaleki)
#سری_معرفی_وسایت_های_برتر

معرفی 10 سایت برتر (سری ششم)
در مورد
#C و NET Core. و ASP.NET Core

🔸توی این سری پست ها هربار 10 وبسایت برتر که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم
اینا منابعی هستند که معمولا خودم دنبالشون میکنم

1️⃣ https://jimmybogard.com/
2️⃣ https://jonhilton.net/
3️⃣ https://rimdev.io/
4️⃣ http://josephwoodward.co.uk/
5️⃣ https://dotnetkicks.com/
6️⃣ https://www.mikesdotnetting.com/
7️⃣ https://blog.jeremylikness.com/
8️⃣ https://www.davideguida.com/
9️⃣ https://tyrrrz.me/blog
🔟 https://swimburger.net/
_____________
@DotNetZoom
رشد چشمگیر استفاده از Blazor در بین توسعه دهندگان دات نت

نظر سنجی NET Foundation که از 4458 نفر تهیه شده نشان میدهد بعد از Angular استفاده از Blazor به عنوان فریم ورک SPA رشد قابل توجهی داشته است.

این نظر سنجی همچنین نشان میدهد 90 درصد با Visual Studio کار میکنند و تنها 20 درصد تا به حال از Rider استفاده کرده اند.

بیش از 80 درصد روی پروژه های Web API کار میکنند و نسخه هدف آنها هم در بیش از 60 درصد موارد دات نت 5.0 بوده است.

توسعه دهندگان دات نت بعد از #C بیشتر از همه از Javascript استفاده کرده اند و علاقمند هستند زبان Rust را یاد بگیرند.

https://codehaks.com/go/rup
Forwarded from کدهک
با استفاده از قابلیت Expression Bodied Members می توانید کدهای کمتر و مرتب تری در سی شارپ داشته باشید.


https://codehaks.com/go/bfq
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
معرفی ویژگی Records در C# 9.0: کار با داده‌های تغییر ناپذیر

🔸 کار کردن با داده‌های تغییر ناپذیر بسیار قدرتمند است، اغلب منجر به باگ‌های کمتری می‌شود، و شما را مجبور می‌کند تا اشیا را تبدیل به اشیای جدید کنید به جای اینکه اشیای موجود را اصلاح کنید. توسعه دهندگان #F به این عادت کرده‌اند، زیرا #F همه چیز را به طور پیش‌فرض به عنوان تغییرناپذیر در نظر می‌گیرد. حالا شما انواع تغییر ناپذیر را در C# ۹.۰ نیز دارید، یا به اصطلاح انواع record نامیده می‌شود. Records کار با داده‌های تغییر ناپذیر در #C را برای شما آسان‌تر می‌کند.

❇️ از طریق لینک زیر می‌توانید ترجمه مقاله‌ای از Thomas Claudius Huber که به بررسی این ویژگی و جزییات بیشتر پرداخته مطالعه کنید:

#سپهر_اسلامی
https://vrgl.ir/1zp5a
_____________
@DotNetZoom
شمارش خودکار ارجاع یا ARC روشی است که در زبانهایی مانند Objective-C و Swift برای مدیریت حافظه استفاده میشود.

در این روش پاکسازی حافظه یک شی زمانی انجام میشود که دیگر هیچ رفرنسی به آن داده نشده باشد.

در GC که #C و Java از آن استفاده میکنند پاکسازی حافظه در بازه های زمانی اتفاق می افتد و باعث مکث در برنامه میشود. همچنین هنگامی که حافظه سیستم پر میشود باید GC در بازه های زمانی کوتاهتر اجرا شود.

در ARC رفرنس های داده شده به شی یا گرفته شده از آن شمارش میشود و زمانی که تعداد آنها به صفر میرسد حافظه شی تخلیه میشود. این روش نیاز به الگوریتم ساده تری دارد و جایی که منابع حافظه محدود است (موبایل) کارایی بیشتری دارد.

اما ARC قادر به مدیریت Reference Cycle نیست یعنی زمانی که شی A فقط به شی B وابسته باشد و برعکس تعداد رفرنس ها هیچوقت صفر نمیشود و نیاز به مکانیزم بیرونی برای تشخیص و پاکسازی بوجود می آید در غیر این صورت Memory Leak پیش می آید.

همچنین دفعات زیاد رفرنس دهی یا حذف رفرنس از شی در ARC غیر بهینه عمل میکند. در حالی که در GC تاثیر نمیگذارد.

در iOS از نسخه 5 به بعد از ARC استفاده میشود.
برنامه نویسی سبز

زبان های برنامه نویسی از نظر مصرف انرژی با هم فرق می کنند و در تحقیقی که تازگی بروز رسانی شده مشاهده شده است که زبان C همچنان سبز ترین زبان برنامه نویسی است و کمتر از بقیه منابع محیط زیست ما را مصرف میکند.

این مقاله به بررسی و مقایسه اجرا الگوریتمهای مختلف در زبان های پر استفاده می پردازد.

از نظر مصرف انرژی #C سه برابر C است و سه برابر هم کندتر است. مصرف حافظه سی شارپ هم حدود سه برابر بهترین زبان (پاسکال) است اما نسبت به زبانهایی مثل جاوا و جاوا اسکریپت در جایگاه بهتری است.

پایتون 75 برابر زبان C انرژی مصرف میکند و 70 برابر هم کندتر است.

جاوا دوبرابر کندتر از C است و دو برابر هم بیشتر انرژی مصرف میکند اما 6 برابر بیشتر حافظه مصرف میکند که این میزان دوبرابر سی شارپ است.

لینک مقاله:
https://codehaks.com/go/mpx
چرا باید زبان #C رو انتخاب کنید؟
در این ویدیو به معرفی زبان سی شارپ می پردازم و از مزایای برنامه نویسی در محیط دات نت میگم.

https://youtu.be/AUMqfDHqptY
تفاوت بین decimal و double در #C

در #C ، دو نوع داده عددی به نام‌های decimal و double وجود دارند که برای نمایش اعداد اعشاری به کار می‌روند.

اصلی‌ترین تفاوت بین این دو دقت و اندازه آن‌هاست. decimal یک نوع داده ۱۲۸ بیتی است و حدود ۲۸-۲۹ رقم معنادار را با محدوده‌ای حدوداً ±۷٫۹ × ۱۰²⁸ قابل نمایش است. این نوع داده برای محاسبات مالی و پولی که دقت بالا مورد نیاز است، مناسب است. decimal از حساب عددی پایه ۱۰ استفاده می‌کند، بنابراین اعداد اعشاری را نسبت به double می‌تواند دقیق‌تر نمایش دهد.

از سوی دیگر، double یک نوع داده ۶۴ بیتی است که حدود ۱۵-۱۶ رقم معنادار را با محدوده‌ای حدوداً ±۵٫۰ × ۱۰^-³² تا ±۱٫۷ × ۱۰³⁰ قابل نمایش است. این نوع داده برای محاسبات علمی و فنی که سرعت و محدوده بیشتری مورد نیاز است، مناسب است. double از حساب عددی پایه ۲ استفاده می‌کند، بنابراین اعداد اعشاری را نسبت به decimal با دقت کمتری نمایش میدهد.

بطور کلی، اگر به دقت بالا نیاز دارید، decimal را برای محاسبات مالی و پولی استفاده کنید. از double را برای محاسبات علمی و فنی و یا هنگامی که نیاز به اعداد بزرگ با دقت کمتر است استفاده کنید.
چرا از File-Scoped Namespace استفاده کنیم؟

از #C نسخه 10 قابلیت تعریف فضای نامی در فایل اضافه شده است.

با کمک این قابلیت می توانید فضای نامی را بدون { ... } و فقط با نوشتن یک خط در بالای فایل تعریف کنید.

این قابلیت با حذف یک مرحله فاصله گذاری از نویز تصویری کدنویسی کم می کند و خواندن آن را ساده تر می کند.

بهتر است در کد نویسی از این قابلیت به صورت پیش فرض استفاده کنید و بعد از آپدیت به دات نت 6 کلاس های خود را به این حالت بروز رسانی کنید.

می توانید با Options در Visual Studio برای کلاسهای جدید گزینه پیش فرض را به File-Scoped تغییر دهید.

قابلیت Collection Literals در سی شارپ 12

برای پر کردن ورودی کالکشن ها می توانید بجای استفاده از تایپ اصلی مانند:

new List<int> {1,5,7}

از عبارت [1,5,7] استفاده کنید.

در نسخه های قبلی #C می توانستید از نوشتن تایپ صرف نظر کنید مثلا بنویسید:

new() {1,5,7}

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

با قابلیت جدیدتر Collection Literals کد خوانا تر می شود و دیگر حتی نیاز به نوشتن عبارت new نیست.

#Build2023
ویژگی deconstruct در #C می‌تواند زمانی استفاده شود که می‌خواهید اجزا یا پراپرتی های یک شی را درون متغیرهای جداگانه استخراج کنید.

https://youtu.be/wk8z4TvL5ns

https://www.aparat.com/v/hZ1Ia
زبان های مورد تحسین و مطلوب

در نظر سنجی جدید بجای Wanted & Dreaded از مفهوم Admired و Desired استفاده شده است.

میزان علاقه افراد به استفاده از یک تکنولوژی پرسیده میشود(Desired) و با افرادی که از آن تکنولوژی در سال گذشته کار کرده اند و مایل هستند سال بعد هم با آن کار کنند (Admired)مقایسه میشود.

هر چقدر طول این خط کوتاهتر باشد نشان میدهد افرادی که با آن تکونولوژی کار کرده اند علاقه زیادی به استفاده از تکنولوژی در آینده ندارند. در واقع بیشتر Hype بوده تا اینکه در عمل مطلوب باشد.

تکنولوژی هایی که خط بلندتری دارند مانند Rust و #C نشان می دهد که افراد پس از استفاده از آنها همچنان علاقمند به ادامه کار با آنها هستند و انتظارات آنها را برآورده کرده است.

#stackoverflow2023
با Task.FromResult می توانید عملیاتی که همزمان (Sync) انجام میشود به صورت Async جا بزنید!

تصور کنید که یک جعبه جادو دارید که می‌تواند به سرعت یک عدد تولید کند، (مثلا 42). شما می‌خواهید از این جعبه جادو در یک برنامه استفاده کنید و می‌خواهید به نظر بیاید که دارید کاری ناهمگام انجام می‌دهید (مثل انتظار برای مدت طولانی)، حتی اگر نتیجه را فوراً دریافت می‌کنید. برای اینکار می توانید از Task.FromResult استفاده کنید.

بنابراین، به زبان ساده‌تر، Task.FromResult روشی است برای تظاهر به اینکه چیزی ناهمگام است در حالی که در واقعیت به سرعت و همزمان اتفاق می‌افتد.

این روش برای حفظ ساختار کد هنگام کار با عملیات‌های Sync و Async در#C مفید است.

ممکن است کدی داشته باشید که در صورت درستی شرط عملیات Sync و در حالت دیگر از Async استفاده می کند ولی برای همه متد باید از خروجی Task استفاده کنید.
کنفرانس سالانه دات نت روز سه شنبه ساعت 19:30 به وقت ایران آغاز میشود.

این رویداد به مدت سه روز برگزار میشود و قرار است از آخرین نسخه دات نت رو نمایی شود.

دات نت 8 به همراه 12.0 #C و ASP.NET Core 8.0 عرضه میشود و نسخه نهایی ابزاری مثل Blazor و MAUI و Entity Framework هم در این بسته قرار دارد.

دات نت 8 پشتیبانی 3 ساله (LTS) دارد و مایکروسافت از همه توسعه دهندگان دات نت درخواست میکند از نسخه قبلی به 8 آپدیت کنند.

https://www.dotnetconf.net
دات نت از کامپایل just-in-time استفاده می‌کند، جایی که کدهای #C به زبان میانی (IL) کامپایل شده و سپس با JIT-compiler به کد ماشینی در زمان اجرا تبدیل می‌شوند. به این ترتیب کد برنامه به ماشین نهایی مستقیم وابسته نیست و JIT می تواند بر اساس نوع ماشین خروجی را بهینه کند.

اما موارد زیادی است که استفاده از AOT یک نیاز است چون حجم نهایی برنامه را کاهش داده و پرفورمنس برنامه در زمان اجرا افزایش می یابد. برنامه های موبایل و سرور می توانند از AOT بهره ببرند.

در نسخه 8 دات نت با به کار گیری AOT حجم کانتینر های دات نت تا 8 مگابایت کم شده و حافظه و زمان بارگذاری نیز کاهش یافته است.

#dotnetconf2023
آموزش Delegates، Func و Action در #C

▶️ https://youtu.be/vN7ntZ7zQSM

#csharp #dotnet
آشنایی با Stream ها در #C - کار با FileStream و روش‌های خواندن فایل

▶️https://youtu.be/C7dCtW-juew

#dotnet #csharp #FileStream
‏CSnakes یک کدساز و ران‌تایم برای دات نت است که به شما امکان می‌دهد کدهای پایتون را با پرفورمنس بالا در پروژه‌های دات‌نت اجرا کنید، بدون نیاز به REST، HTTP یا میکروسرویس‌ها.

این ابزار می‌تواند از روی پایتون کد#C تمیز و خوانا تولید کند که در هر پروژه دات‌نت قابل استفاده است.

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

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


▶️https://youtu.be/LLN4YgjSwyE
در این ویدیو به معرفی زبان برنامه‌نویسی Zig پرداختم و یک برنامه‌ی ساده برای تبدیل تصاویر رنگی در فرمت BMP به سیاه و سفید نوشتم. این پروژه رو هم با Zig و هم با #C پیاده‌سازی کردم تا تفاوت‌ها و امکانات هر زبان رو بررسی کنیم.

▶️https://youtu.be/iuzczBpmy7A

#dotnet #csharp #ziglang
Forwarded from Code With HSN
ویدئو جدید منتشر شد 🚀
موشکافی dotnet و بررسی 10 ترفند برای مصرف کمتر یا بهتر حافظه؛ از مشکلات خطرناک MemoryStream بگیر تا ترفندهای مخفی LINQ و اسرار ValueTask، همه‌چیز رو براتون شکافتم! هدف اینه که دست خطی داشته باشید که از مموری کمتر استفاده کنه و آگاهانه از خیلی چیز ها استفاده کنید

🎯 مواردی که یاد میگیرید:

1. بهینه‌سازی حافظه در #C 🚀
مشکلات MemoryStream و راه‌حل با RecyclableMemoryStream
جلوگیری از Memory Leak و مدیریت حافظه

2.دو کلاس ValueTask vs Task ⚡️
چه زمانی از ValueTask استفاده کنیم؟
مزایا و معایب هرکدام برای Performance

3. پشت‌پرده async/await 🔍
نحوه عملکرد IAsyncStateMachine
کلاس Delegateها چه مشکلاتی ایجاد می‌کنند؟

4. مشکلات Boxing 📦
چه زمانی Structها Boxing می‌شوند؟
تأثیر آن روی Performance و راه‌های جلوگیری

5. بهینه‌سازی LINQ و List 💡
مصرف حافظه در LINQ و راه‌های کاهش آن
ترفندهای افزایش سرعت در Listها

6. بررسی ObjectPool و Generic 🛠
پیاده‌سازی ObjectPool برای کاهش تخصیص حافظه
مزایای استفاده از INumber و Genericها

از اینجا مشاهده کنید: https://youtu.be/YM86MO0ohYg?si=qX5ZbHXWQ-6_oqhR