کدهک
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 (محمد جواد ابراهیمی)
تست کد های #C به صورت آنلاین

توی پست قبلی در مورد C# Interactive توضیح داده بودم الان میخوام روش آنلاینش رو بررسی کنیم.
واسه اینکار سایت های زیادی هست که امکان Syntax Highlighter و Run کردن کد رو بهتون میدن. با این ابزار ها میتونین کد سی شارپ تون رو انلاین و راحت تست کنین و یا کدتون رو با بقیه به اشتراک بگذارین

🔸اول از همه بهترینشون و با اختلاف فاحش، سایت SharpLab هست. امکانات فوق العاده ای داره، Intellisense خیلی قوی ایی داره که در نوع خودش واقعا بی نظیره، امکان Decompile کردن کد خروجی به IL و #C و حتی Jit Assembly رو بهتون میده. UX خوب و روون ایی داره و خیلی سریع، در لحظه کد رو اجرا میکنه.
https://sharplab.io/

🔹این سایت برای ویرایشگرش اش از پلاگین جاوااسکریپتی CodeMirror استفاده میکنه که یک Code Editor و Syntax Highlighter قوی هست و از تموم زبان ها پشتیبانی میکنه
مثلا اگه خواستین قابلیت اسکریپت نویسی و اجرای کد داینامیک رو برای پروژه تون اضافه کنین میتونین از این پلاگین استفاده کنین
https://github.com/codemirror/CodeMirror
[Demo] https://codemirror.net/

🔸 این سایت برای اجرای کد ها از Roslyn و برای Decompile کردنشون از ILSpy استاده میکنه که قوی ترین برنامه Decompiler دات نت هست و ابزار های حرفه دیگه از از جمله dnSpy از رو همین ساخته شدن

🔹سازنده این سایت اومده کل پکیج Code Editor سی شارپیش رو که بر روی CodeMirror و Roslyn ساخته شده رو به صورت سورس پاز تو گیتهاب گذاشته
بدین صورت مثلا میتونین یه ویرایشگر کامل سی شارپی به همراه Autocomplete واسه اسکریپت نویسی داینامیک به پروژه تون اضافه کنین
https://github.com/ashmind/mirrorsharp

🔰تنها ایرادی که سایت sharplab.io داره اینه که که امکان اضافه کردن Nuget Package به کد هاتون رو نداره
واسه همین یه سایت دیگه به نام NET Fiddle. هست (که البته به خوبی اون نیست ولی بعضی امکانات اضافه تر مثل همین nuget package داره)
https://dotnetfiddle.net/
____________________
@DotNetZoom
Forwarded from DotNetZoom (ALI_1992)
معرفی Design Pattern ها به همراه مثال در زبان های مختلف

یکی از بهترین سایت هایی که میشه به عنوان مرجع برای #DesignPattern ها بهش نگاه کرد سایت زیر هست.

این سایت خیلی روون و ساده الگو های برنامه نویسی رو توضیح داده، براشون مثال زده و توی زبان های مختلفی از جمله #C و JavaScript و Java و Python و ... پیاده سازیشون کرده

https://refactoring.guru/design-patterns/catalog

🔰2تا ریپوی زیر هم پیاده سازی ایی از این دیزاین پترن ها در سی شارپ هست
1️⃣ https://github.com/exceptionnotfound/DesignPatterns
2️⃣ https://github.com/HamidMosalla/CSharpDesignPatterns
_____________________
@DotNetZoom
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
وب اسمبلی (WebAssembly) چیه؟ و چرا آینده Web هست؟!

وب اسمبلی (یا WASM مخفف WebAssembly) یک زبان low-level (سطح پایین) با فرمت Binary (دو-دویی) هست که توسط مرورگر اجرا میشه

🔸در اینجا چندتا نکته مهم وجود داره:
1️⃣ اول اینکه یه زبان سطح-پایین هست و با پرفرمنسی نزدیک به Native اجرا میشه (اصلا یکی از اهداف اصلی ایجاد WASM اجرا سریع تر کدها توی مروگر بود)

2️⃣ برخلاف js به جای اینکه فرمت متنی داشته باشه، فرمت باینری (دو-دویی) داره که باعث میشه کد حجم کمتری داشته باشه در نتیجه این به معنی بارگزاری سریع تر نیز هست
در واقع وقتی کدی قراره human-readable باشه حجم بیشتری میگیره تا اینکه باینری باشه. مشابه این اتفاق برای سریالایز کردن به json در مقایسه با binary formatter هایی مانند protobuf و message-pack هم اتفاق میافته. ضمن اینکه کدی که به صورت باینری باشه امکان فشرده سازی بیشتر و بهینه تری داره

3️⃣ علاوه بر حالت باینری، یه حالت متنی (به صورت S-expression) هم داره که human-readable هست و قابلیت دیباگ و خوانایی خوبی داره
این فرمت در قالب فایل های با پسوند wat. یا wast. ذخیره میشه که میتونین نمونه کدش رو اینجا ببینین (البته در گذشته این دو معادل هم بودند ولی جدیدا بیشتر wat. برای اینکار استفاده میشه)

4️⃣ گرچه در ابتدا WASM برای اجرا توی مروگر طراحی شده بود ولی بعد ها توی پلتفرم های دیگه هم مورد استقبال قرار گرفت و یه سری Runtime هایی (مانند wasmer و wasmtime) براش نوشته شد که این امکان رو میده که برنامه های WASM رو توی Desktop و IoT و Server و... اجرا بشن

5️⃣ این زبان در کنار خودش یه سری کامپایلر (از جمله emscripten و binaryen) ارائه داده تا زبان های low-level ایی همچون C و ++C و Rust بتونن کدشون رو به WASM کامپایل کنن
زبان های دیگه هم از جمله #C و Java و Python و Go به این سمت حرکت کردن و امکان اجرای کد هاشون رو توی مرورگر فراهم کردند
به عنوان مثال Blazor امکان اجرا کد های #C رو در مرورگر فراهم میکنه
مزیت این روش اینه که شما به زبون های دلخواه خودتون میتونین کدی بنویسین که توی مرورگر اجرا بشه. یعنی اصلا نیاز نیس زبان WASM رو بلد باشین.

🔹حالا سوال مهم اینه که این زبان جای JavaScript رو میگیره؟
جواب: نه، اصلا نمیتونه. WASM اومده که مکمل JS باشه و ضعف های اون رو برطرف کنه
زبان JS تو پلتفرم های زیادی استفاده میشه و جامعه بسیار بزرگی داره پس نه WASM نه هیچ زبان دیگه ای نمی تونه اون رو کنار بزنه (حداقل به این زودی ها نه)
در واقع تنها مزیت منحصر به فرد JS سمت Front این بود که تنها پادشاه سمت مرورگر بود. ولی الان که امکان اجرای زبان های دیگه سمت مرورگر فراهم شده عملا راه برای ظهور پادشاه های دیگری هم فراهم شده
یکی از کارهای دیگری که در این زمینه انجام شده AssemblyScript هست که در واقع یک کامپایلر TypeScript به WASM هست که سینتکس کدش کاملا TS نیست ولی شبیه اونه و نهایتا کد های شما رو به WASM کامپایل میکنه

🔸در آخر نکته مهم اینه که که بدونین این تکنولوژی محکوم به اینه که آینده وب باشه!
یعنی حتی اگه این زبان از خودش هیچ آورده ای هم نداشته باشه بازم مسیر توسعه وب در آینده به سمت اون هدایت میشه (توسط دست های پشت پرده :دی) .
چرا؟ چون توسط بنیاد W3C (کنسرسیوم جهانی وب) به عنوان یه استاندارد شناخته شده و نیز شرکتای غولی همچون Google و Microsoft و Mozilla و Apple و Intel و Red Hat و... روش سرمایه گذاری کردن
میگن اگه میخوای پیش گوی خوبی باشی، آینده رو پیش بینی نکن، اون رو بساز. و این ها در واقع کسانی هستند که مسیر توسعه وب رو پیش بینی نمیکنند بلکه اون رو خودشون میسازند

🔰اگه میخواین بیشتر در مورد WebAssembly بدونین این مقاله خوبیه
_______________
@DotNetZoom
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