کدهک
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 کدهک
فونت FiraCode به صورت Mono Space است که برای کد نویسی بسیار مناسب است.

همچنین این فونت دارای لیگاتور است و بجای کاراکترهایی نظیر == یا => از نماد استفاده میکند.

دانلود :
https://bit.ly/2byEo9Y
Forwarded from کدهک
آشنایی با Polly

چگونه در ASP NET Core قابلیت Fault Tolerance پیاده کنیم که در صورت وجود خطا در وب سرویس ها مجدد سعی کند؟

پیاده سازی مکانیزم Resilience و Retry در ASP NET Core

https://tinyurl.com/cdhk-polly
Forwarded from کدهک
متوسط حقوق

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

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

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

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

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

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

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

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

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

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

آشنایی با ابزاری مثل D3.js که در Data Visualization و تحلیل داده کاربرد دارد هم در بین شرکتهای آمریکایی یک مزیت مهم به شمار میرود.
Forwarded from DotNetZoom (ALI_1992)
💡#آیا_میدانستید

آیا میدانستید حلقه for سریع تر از list.ForEach یا اصلاحا ForEach Lambda است؟

آیا میدانستید حلقه list.ForEach سریع تر از foreach است؟ زیرا list.ForEach داخل خود از for استفاده میکند ولی foreach داخل خود از مکانسیم Enumerator Iteration که به مراتب سنگین تر است، استفاده میکند.

آیا میدانستید حلقه for که مقدار count آن توسط یک متغیر خوانده شود سریع تر از حلقه for ایی است که مقدار count خود را از list.Count میخواند؟ زیرا سرعت خواندن متد get یک property زمانبر تر از خواندن مقدار یک متغیر است.
مثال :
var count = list.Count;
for (int i = 0; i < count ; i++) { }
از روش زیر سریع تر است
for (int i = 0; i < list.Count ; i++) { }
نتیجه :
در تست انجام شده، سرعت اجرای حلقه ها روی 100 میلیون آیتم به ترتیب زیر است
1- حلقه for که از متغیر count میخواند (زمان : 378 میلی ثانیه)
2- حلقه for که از خاصیت list.Count میخواند (زمان : 415 میلی ثانیه)
3- حلقه list.ForEach یا اصطلاحا ForEach Lambda (زمان : 650 میلی ثانیه)
4- حلقه foreach (زمان : 1136 میلی ثانیه)

همانطور که مشاهده میکنید تفاوت این ها آنقدر محسوس نیست که سرعت پروژه را کاهش دهد.
درنتیجه بهتر از کدی را بنویسید که «تمیز» تر است.
_______________
@DotNetZoom
در پی جنبش "Black Lives Matter" که این روزها در ایالات متحده شدت گرفته نیل فریدمن مدیر عامل گیتهاب اعلام کرد این شرکت در حال تغییر عنوان پیشفرض "master" به "main" است.

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

گوگل اعلام کرده است عباراتی مثل Black List و White List را حذف می کند و کلماتی چون "Block List" و "Allow List" جایگزین می کند. اتفاقات مشابهی در PHP و Curl و Linkedin و سایر شرکتهای آی تی در جریان است.

تغییر دادن نام متغیرها، متدها یا کتابخانه ها دردسرهای پیش بینی نشده زیادی به همراه دارد و انتظار میرود کار پر هزینه ای باشد. اما به نظر میرسد این تصمیم گرفته شده و حذف عبارت هایی که ریشه در دوران برده داری دارند یا نژاد پرستانه هستند از همین حالا شروع شده است.
قبلا در چند ویدیو استفاده از روش Async در ASP NET Core بررسی شد. این بار از دید سرور به شمارش تعداد Thread ها و مدت زمان تولید Response می پردازیم و رفتار Thread Pool در بکارگیری الگوریتم های Hill Climbing و Starvation Avoidance مشاهده می کنیم.

https://codehaks.com/go/dwt
Forwarded from کدهک
آشنایی با ref return در سی شارپ

https://tinyurl.com/cdhks-ref-return
Forwarded from DotNetZoom (ALI_1992)
❇️ نکاتی در مورد تست نویسی روی EF6 / EFCore توسط دیتابیس InMemory

🔸یکی از مزیت های الگوی Repository، قابلیت تست پذیری لایه دیتا به واسه ساختن ریپازیتوری های Fake هست. در واقع ریپازیتوری هایی میسازیم که از (مثلا IRepository) ارث بری میکنه ولی به جای ذخیره سازی در بانک اطلاعاتی، دیتا ها رو به صورت InMemory ذخیره و واکشی میکنه
همچنین روش های دیگری برای اینکار وجود داره مثل Mock کردن DbContext یا DbSet که هر کدوم دردسر ها و محدودیت های خودشو داره تا جایی که حتی بخشیدن عطاش به لقاش منطقی تره
اینجا لیستی از بهترین منابعش رو گلچین کردم (1 و 2 و 3 و 4 و 5 و 6 و 7 و 8 و 9) تا واسه خودمم آرشیو بمونه

🔻توی EFCore به دلیل وجود پروایدر InMemory نیازی به این کار نیست و عمل تست نویسی رو برامون خیلی راحت کرده ولی توی EF6 چون پروایدر InMemory نداریم مجبوریم تن به یکی از این بدیم.

🔹پروژه سورس باز و رایگان Effort یک پروایدر InMemory مخصوص Entity Framework هست (که از نسخه های 5 و 6 EF پشتیبانی میکنه) و امکان Unit Test نویسی برای EF رو براحتی براتون فراهم میکنه و سعی کرده
این کتابخونه از برای دیتابیس خودش از NMemory استفاده میکنه که یک Engine دیتابیس رابطه ای InMemory هست و سعی کرده تا حد زیادی رفتار های یک دیتابیس واقعی رو شبیه سازی کنه و از مواردی از جمله Indexes و Foreign Key Relations و Transaction Handling and Isolation و Stored Procedures و... پشتیبانی میکنه پس به نسبت بقیه روش ها (مثل یه List استاتیک!) در مورد شبیه سازی دیتابیس، رفتار بسیار بسیار قابل اعتماد تری ارائه میده

🔰کار باهاش هم خیلی راحته و از لینک و دردسر ها و محدودیت های پیاده سازی روش های قبلی رو نداره
https://entityframework-effort.net/overview
واسه مطالعه بیشتر هم لینک های زیر خوبن (اینجا و اینجا و اینجا)

نکته:
🔸تمام روش های بالا و اساسا تمام دیتابیس های InMemory (حتی پروایدر InMemory خود EFCore) یه مشکل اساسی دارن و اون هم اینه که هیچ کدوم نمیتونن 100 درصد رفتار یک دیتابیس واقعی رو شبیه سازی کنن. بدیهی هم هست چون که هیچ کدوم نمیتونن تمام قابلیت های دیتابیس واقعی پروژه شما (مثلا SqlServer) رو داشته باشن.

این کمبود ها که تعدادشونم کم نیست بعضی مواقع باعث مشکل میشن مثلا در مورد دیتابیس InMemory خود EFCore :
▪️شما نمیتونین SP های خودتون رو روش اجرا کنین
▪️شما نمیتونین از Transaction های دیتابیسی استفاده کنین
▪️شما نمیتونین از Function های دیتابیسی و یا کلا هر قابلیت منحصر به دیتابیس تون استفاده کنین
▪️قیودی که فقط توی دیتابیس واقعی اعمال میشن و ...
▪️حتی یک کوئری یکسان روی InMemory و دیتابیس واقعی میتونه نتایج متفاوتی داشته باشه (بدلیل تفسیر متفاوتی ازش توسط پروایدر مربوطه انجام میشه)
▪️در واقع تست درون حافظه‌ی LINQ to Objects با تست واقعی LINQ to Entities که روی یک بانک اطلاعاتی واقعی اجرا می‌شود، الزاما نتایج یکسانی نخواهد داشت
▪️حتی اگه یه متدی که معادل SQL ایی نداره توی کوئری هاتون استفاده کنین، هنگام استفاده از InMemory خطا نمیده ولی موقع دیتابیس واقعی خطای عدم امکان تفسیر به معادل Sql میده

🔹در نتیجه همه اینها پاس شدن یک تست با دیتابیس InMemory الزاما دلیل بر صحت عملکرد پروژه و به معنای درست کار کردن برنامه در دنیای واقعی نیست. و ممکنه همون تست با دیتابیس واقعی به خطا بخوره.

🔸در نهایت هرچند که دیتابیس InMemory رفتار قابل اطمینانی از یه دیتابیس رو نمیتونه شبیه سازی کنه ولی در مورادی که به این تناقض ها بخورد نمیکنیم (معمولا در حد CRUD و یه Storage) میتونه خیلی مفید و کاربردی باشه. فقط نکته اش اینه که حواسمون به این کمبود ها باشه و توصیه میشه که حتما در این گونه موارد که از Integration Test به همراه یک دیتابیس واقعی استفاده کنیم

🔻نظر شما در این باره چیه؟ توی پست های بعدی توضیحات بیشتری خواهم داد.
___________________
@DotNetZoom
Forwarded from کدهک
غلغلک دادن یک دایناسور تک شاخ :
بررسی Single-thread بودن Node.js و مقایسه ی آن با ASP NET Core

https://goo.gl/Y5RpRz
آیا قراردادن کلاسها در کتابخانه های جدا به معنی چند لایه کردن پروژه است؟ تصمیم گیری درباره محل قرار گرفتن اجزای پروژه یکی از ساده ترین در عین حال سخت ترین مراحل پیاده سازی هر پروژه ای است. در این ویدیو می بینیم که چطور فایلها را دسته بندی کنیم و یک مدل انعطاف پذیر برای ساختار پروژه در نظر بگیریم.

https://codehaks.com/go/agt
نسخه Alpha از Bootstrap 5.0 منتشر شد.

مهمترین تغییرات این نسخه حذف شدن وابستگی به jQuery است.

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

طبق گفته بلاگ بوت استرپ پشتیبانی از RTL باید سالها پیش به این کتابخانه اضافه میشد و حالا با کمک جامعه متن باز در حال انجام است.
آموزش آپلود کردن فایل در ASP NET Core

در این ویدیو تمامی مراحل آپلود کردن فایل در ASP NET Core آموزش داده میشود. فایل با IFormFile از مرورگر کاربر دریافت میشود و در فولدر سرور کپی میشود. در ادامه با محدود کردن دسترسی به فایل آشنا میشوید.

https://codehaks.com/go/eoz
آیا از Git-Flow استفاده می کنید؟
Anonymous Poll
15%
بله
23%
خیر
63%
آشنایی ندارم
Forwarded from DotNetZoom (ALI_1992)
کتابخانه اعتبارسنجی FoolProof برای ASP.NET Core

خیلی وقتا لازم میشه یه سری اعتبارسنجی روی مقادیر ورودی کاربر داشته باشیم. مثلا مقدارش کمتر یا بیشتر از فلان مقدار نباشه و ... تو این شرایط معمولا خودمون میایم و یه Attribute Validation سفارشی ایجاد میکنیم (که تازه اعتبار سنجی سمت کلاینت با jQuery رو هم نداره و فقط سمت سرور چک میشه) ولی الان میخوام یه کتابخونه رو معرفی کنیم که کارتون رو خیلی راحت میکنه.

🔸کتابخانه FoolProof.Core تعداد زیادی Attribute برای اعتبار سنجی مقادیر کاربر داره که همگی علاوه بر Server-side از Client-side Validation هم پشتیبانی میکنن. نسخه قدیمی آن (foolproof) برای ASPNET MVC سابق است.
(آموزش استفاده از آن در سایت dotnettips) ولی این نسخه از ASPNET Core پیشتیبانی میکنه

🔹لیست Attribute های پشتیبانی شده:
✔️ Is
✔️ EqualTo
✔️ NotEqualTo
✔️ GreaterThan
✔️ LessThan
✔️ GreaterThanOrEqualTo
✔️ LessThanOrEqualTo
✔️ Improved required validators:
✔️ RequiredIf
✔️ RequiredIfNot
✔️ RequiredIfTrue
✔️ RequiredIfFalse
✔️ RequiredIfEmpty
✔️ RequiredIfNotEmpty
✔️ RequiredIfRegExMatch
✔️ RequiredIfNotRegExMatch
✔️ In
✔️ NotIn

🔰لینک پکیچ Nuget و مخزن گیتهاب
https://www.nuget.org/packages/FoolProof.Core/
https://github.com/rpgkaiser/FoolProof.Core

#FoolProof #Validation #اعتبارسنجی
__________________
@DotNetZoom
منظور از Availability در یک سیستم در دسترس بودن آن است.

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

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

تعداد 9 ها یا The Nines اصطلاحی است که جهت نشان دادن درصد دسترسی به یک سیستم استفاده میشود.

برای بدست آوردن تعداد 9 های یک سیستم ابتدا باید با پیاده سازی سیستم مونیتورینگ مناسب میزان Down-Time را اندازه گرفت و با تقسیم آن در بازه زمانی درصد Availability را بدست آورد.

بسته به اینکه چه سرویسی ارائه می کنید میزان دسترسی مورد نیاز تغییر میکند.

سرویس شما به چه میزان Availability نیاز دارد؟
تعداد 9 های سرویس شما چندتاست؟
در بسیاری از پروژه ها لازم است اطلاعات فایل از کاربر دریافت و در سرور ذخیره شود. این ذخیره سازی ممکن است درون فولدر یا در دیتابیس انجام شود. در این مجموعه به آموزش کامل تمامی مراحل آپلود و دانلود فایل در ASP NET Core می پردازیم.

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

مدت دوره 140 دقیقه

https://codehaks.com/go/fmn
آموزش ایجاد Global Tools در دات نت

یک Global Tool در اصل یک برنامه کنسول است که میتوانید آن را از هر جایی در سیستم اجرا کنید. این ابزار شباهت زیادی به پکیج های گلوبال در NPM دارند و می توانید برای پیاده سازی ابزارهای برنامه نویسی و کارهای عمومی از آنها استفاده کنید.

https://codehaks.com/go/glb