کدهک
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
پروژه Actix تعطیل شد

پروژه Actix یک فریم ورک وب برای زبان Rust بود که روز گذشته توسط سازنده ی آن تعطیل شد.

مشکل از جایی شروع شد که بعضی از توسعه دهندگان Rust با بررسی سور س این فریم ورک متوجه شدند بخش قابل توجهی از آن با کلمه ی کلیدی unsafe پیاده شده است. این کلمه کلیدی در Rust چک های کامپایلر را از کار می اندازد و اجازه میدهد کد در حالت های غیر استاندارد اجرا شود.

هر چند Nikolay Kim سازنده ی Actix معتقد است از unsafe در شرایط درست استفاده کرده اما اعتراض ها و ایرادگیریهایی که در محیط متن باز پروژه پیش آمده باعث شد تصمیم بگیرد پروژه را به گیتهاب خصوصی اش منتقل کند و اعلام کرده در آینده ی نزدیک آن را حذف می کند.

جالب است بدانید در آخرین رده بندی رسمی سایت Techempower فریم ورک Actix بالاترین پرفورمنس را ثبت کرده است.

آقای Nikolay Kim کارمند مایکروسافت است و این پروژه را در وقت آزادش مدیریت میکرده است.
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ مهمترین اخبار اخیر

آپدیت ژانویه 2020 برای NET Core. منتشر شد

🔸بروز رسانی نسخه ها 2.1.15 و 3.0.2 و 3.1.1 به جهت رفع چند باگ امنیتی در مورد (Remote Code Execution و Denial of Service (حمله Dos)) منتشر شدند

🔹اگر از وِیژوال استادیو استفاده می کنید برای استفاده از آخرین بروزرسانیNET Core SDK. ورژن 3.1.x به نسخه Visual Studio 2019 نسخه 16.4.x به بالا نیاز خواهید داشت

دانلود NET Core SDK. نسخه 3.1.1
https://dotnet.microsoft.com/download/dotnet-core/3.1
توضیحات بیشتر
https://devblogs.microsoft.com/dotnet/net-core-january-2020/

پایان پشتیبانی از Windows 7 و. Windows Server 2008 و Windows Server 2008 R2

از این پس ویندوز های قبلی همچنان قابل استفاده خواهند بود ولی دیگر بروز رسانی های امنیتی را دریافت نخواهند کرد و در برابر آسیب پذیری های جدید ایمن نخواهند بود

نسخه نهایی مرورگر Edge مبتنی بر Chromium منتشر شد
ماکروسافت نسخه پایدار Edge جدید را برای سیستم عامل های Windows و Mac منتشر کرد. کاربران به زودی یک آپدیت برای Windwos 10 دریافت خواهند کرد که مرورگر Edge با آن نصب خواهد شد. ماکروسافت مدعی شده این مرورگر از Chrome سبک تر بوده و Memory کمتری مصرف میکند.
لینک دانلود
https://www.microsoft.com/en-us/edge
من که نصب کردم پیشنهاد میکنم شما هم امتحان کنین و نظرتونو بگین 😉✌️
_______________
@DotNetZoom
Forwarded from کدهک
آشنایی با Protocol Buffers

در واقع protobuf توسط گوگل ابداع شده و مشابه JSON فرمتی برای انتقال اطلاعات بین کلاینت و سرور است. با این فرق اساسی که داده ها به صورت باینری جابجا میشوند و کم حجمترند.

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

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

این فرمت برای انتقال اطلاعات بین سرور و مرورگر (جاوا اسکریپت و SPA) مناسب نیست چون مرورگر ها با JSON به صورت شهروند درجه اول برخورد میکنند و با پرفورمنس بالایی میخوانند که با وجود حجم بیشتر داده در مقایسه با Protobuf سریعتر است.

کاربرد اصلی Protobuf در gRPC است. جایی که دو سرویس به صورت مستقیم با هم ارتباط دارند و لازم است درخواستهای زیادی در کوتاهترین زمان و با کمترین حجم جابجا شود.
Forwarded from کدهک
آشنایی با gRPC

در ASP NET Core 3.0 یک قالب اختصاصی برای پروژه ی gRPC در نظر گرفته شده است. همین موضوع نشان از اهمیت و کاربرد زیاد تکنولوژی gRPC در دنیای امروز دارد.

در gRPC کلاینت می تواند متدی را در سرور اجرا کند درست مانند اینکه متد درون خودش قرار دارد.

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

متدهایی که در سرور قابل صدا زدن هستند از طریق Protobuf که یک فایل با پسوند proto است در اختیار کلاینت قرار میگیرند. ساختار پیامهای ارسالی و دریافتی از طریق این فایل مشخص میشود و بدون آن امکان خواندن محتوا بین کلاینت و سرور وجود ندارد. بر خلاف JSON در Protocol Buffer ساختار پیام ارسال نمیشود و فقط شامل خود داده است تا کمترین حجم پهنای باند مصرف شود.

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

از gRPC در میکروسرویسها بسیار استفاده میشود.
اجرای دات نت روی Win 3.1

جناب Michal Strehovský از توسعه دهندگان Runtime دات نت که در مایکروسافت مشغول به کار است در نمایش قابلیت های این ابزار یک برنامه دات نت core در حالت self-contained را به صورت Native کامپایل کرده و آن را در ویندوز بسیار قدیمی 3.1 اجرا کرده است.

https://tinyurl.com/sdrrmm3
ویدیو : آشنایی با Esquio

با استفاده از این کتابخانه می توانید در ASP NET Core قابلیت Feature Toggling و A/B Testing اضافه کنید. روشن یا خاموش کردن قابلیت های سایت یا Feature Toggling روشی است که بتوانید پروژه را به صورت مداوم توسعه دهید و در حالت زنده تست کنید.

https://tinyurl.com/cdhk-esqui
This media is not supported in your browser
VIEW IN TELEGRAM
آشنایی با CAP Theorem

معرفی کارگاه تخصصی Distributed System Design
Forwarded from کدهک
هسته ی مرکزی دات نت با عنوان Common Language Runtime یا CLR شناخته میشود.

این هسته شامل کدهای Garbage Collection و Just In Time Compiler میشود و رابط بین برنامه های دات نت و سیستم عامل است.

بخش بزرگی از سورس CLR با زبان سی شارپ نوشته شده است اما برای کدهای GC و JIT و بعصی موارد دیگر از ++C و Assembly نیز استفاده شده است.

سورس CLR باز است و می توانید از Github دانلود کنید.
Forwarded from کدهک
مقایسه const و static readonly

در سی شارپ برای نگه داری مقادیر ثابت از const استفاده میشود. همچنین می توان با استفاده از static readonly متغیرهای فقط خواندنی تعریف کرد.

مقدار const باید در زمان تعریف مشخص شود و بعد از آن قابل تغییر نیست. همچنین const فقط مقادیر built-in مثل int و string به خود میگیرد.سی شارپ در پس زمینه هر جایی که const بکار رفته با مقدارش جایگزین میکند و در کد کامپایل شده hard-code میکند. این مقدار دیگر قابل تغییر نیست مگر اینکه پروژه مجدد build شود. به همین دلیل اگر از چند dll استفاده میکنید بهتر است از const استفاده نکنید.

مقادیر که به صورت Static readonly تعریف میشوند در زمان اجرا قابل تغییر نیستند. در اینجا می توان هر نوع داده ای از جمله مقادیر reference type هم ذخیره کرد. همچنین می توان مقدار اولیه را درون سازنده ی کلاس مشخص کرد. از آنجا که hard-code انجام نمیشود برای بدست آوردن مقدار باید به حافظه رجوع شود و ممکن است کندتر از const عمل کند.

نکته ی آخر اینکه مقادیر const خود به خود static هم هستند. مقادیر static پاکسازی نمیشوند و تا پایان اجرای برنامه درون حافظه باقی می مانند.
متوسط حقوق

موسسه کاریابی Vettery هر سال گزارشی از وضعیت حقوق و درآمد صنعت IT منتشر میکند. به تازگی گزارش 2019 این موسسه منتشر شده که در ادامه آمار مربوط به شهر سانفرانسیسکو آمده است.

شهر سانفراسیسکو در ایالت کالیفرنیا ی آمریکا مرکز فعالیت شرکتهای بزرگ تکنولوژی مثل فیس بوک ، گوگل ، اوبر و ... است.

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

برنامه نویسان Back-end بعد از سال اول نسبت به سایر تخصص ها درآمد بیشتری دارند.

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

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

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

زبان Ruby در آمریکا همچنان پر طرفدار است و از نظر دستمزد بسیار نزدیک به پایتون پیش میرود.
اضافه حقوق بر مبنای مهارت

داشتن مهارت در برنامه نویسی Scala می تواند برای شما تا 15 هزار دلار در سال حقوق بیشتر داشته باشد.

محبوبت زبان Go و استفاده ی زیاد آن در معماری میکروسرویس هم باعث شده است دانستن آن شامل 11 هزار دلار اضافه حقوق باشد.

آشنایی با ابزاری مثل D3.js که در Data Visualization و تحلیل داده کاربرد دارد هم در بین شرکتهای آمریکایی یک مزیت مهم به شمار میرود.
Forwarded from کدهک
هنگامی که با کد Unmanaged کار می کنید همیشه احتمال دارد با Memory Leak مواجه شوید.

منظور از Unmanaged کدی است که توسط زبانهایی مثل ++C نوشته شده و حافظه ی آن به صورت خودکار پاکسازی نمی شود.

نشت حافظه یا Memory Leak زمانی اتفاق می افتد که کد Unmanaged به هر دلیلی حافظه ی خود را پاکسازی نمیکند و در نتیجه با گذشت زمان کد شما کندتر میشود.

در سی شارپ برای پاکسازی حافظه Unmanaged از کلمه ی کلیدی Using استفاده میشود. از نسخه ی 8.0 به بعد دیگر نیاز نیست برای Using از Code Block استفاده شود. هرجا متغیری با استفاده از Using تعریف شود در انتهای متد پاکسازی حافظه ی آن به صورت خودکار انجام میشود.
چرا 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 ها و سرویس های ابری هستند.