✅ حرفه ای ترین سلوشن Logging در NETCore. با استفاده از Serilog و ElasticSearch و Kibana
#PerformanceTuning
کتابخانه های مختلفی برای لاگ کردن خطا ها در دات نت وجود داره، از جمله Elmah، NLog, Log4net و ...
کتابخانه Elmah بهترین انتخاب برای پروژه های کوچک و متوسطه، کار باهاش راحته و پنل ساده ای هم داره، ولی توی پروژه های بزرگ که تعداد لاگ ها خیلی زیاد میشه، دیگه Elmah جوابگو نیست، هم به خاطر سرعت کمش نسبت به بقیه کتابخانه ها و هم به خاطر پنل ضعیف اش که حتی یه سرچ هم نداره
در این شرایط راه های مختلفی هست مثل استفاده از سرویس های نگهداری لاگ Cloud-based مثل setrny.io , elmah.io و ...
راه حل بعدی استفاده از برنامه های مدیریت لاگ مثل Seq هستند که بر خلاف مورد قبلی، یک سرویس خارجی نیست و روی سرور خودتون لاگ ها رو نگهداری میکنه و داشبورد قدرتمندی برای سرچ و کوئری گرفتن در اختیارتون میذاره (ولی پولیه)
🔰 راه حل حرفه ای تر و البته رایگان، استفاده از Serilog و ElasticSearch و Kibana هست
🔸دیتابیس ElasticSearch در واقع یک دیتابیس NoSql و یک Search Engine (موتور جستجو) سورس باز و فوق سریع (بر پایه Lucene) هست که قابلیت جستجو و کوئری زدن زدن (به صورت full text search) با سرعت و قدرت بالا رو داره از اون برای نگهداری لاگ ها استفاده خواهیم کرد
🔹پنل Kibana هم یه پلاگین داشبور سورس باز و قدرتمند با امکانات زیاد برای نمایش اطلاعات دیتابیس Elastic هست و از اون برای نمایش خطا ها و جستجو کردن و نمودار گرفتن استفاده می کنیم
🔸 کتابخانه Serilog هم میشه گفت بهترین کتابخانه Logging هست. نسبت به NLog جدید تره و طراحی مدرن تری داره و میزان رشد محبوبیتش هم بیشتره؛ پس میشه گفت از NLog هم بهتره (البته خیلی اختلاف ندارند)
این کتابخونه قابلیت های زیادی داره که به لطف پلاگین های زیادی که برای Serilog وجود داره (اصطلاحا بهش میگن Sinks) براش فراهم شده و از لحاظ پرفرمنسی هم از NLog سریع تره.
🔹 تنها نکته مهم، استفاده از روش Structred Logging نسبت به حالت معمولی است. شاید فکر کنید دو دستور زیر هیچ تفاوتی نمیکنه!
مقالات آموزش این سلوشن :
https://bit.ly/2EAjpTh
https://bit.ly/2EBUYFc
https://bit.ly/2X7g1Xn
https://bit.ly/2Exvs3C
مخزن نمونه کد :
https://github.com/thecarlo/elastic-kibana-netcore-serilog
_____________
#PerformanceTuning
کتابخانه های مختلفی برای لاگ کردن خطا ها در دات نت وجود داره، از جمله Elmah، NLog, Log4net و ...
کتابخانه Elmah بهترین انتخاب برای پروژه های کوچک و متوسطه، کار باهاش راحته و پنل ساده ای هم داره، ولی توی پروژه های بزرگ که تعداد لاگ ها خیلی زیاد میشه، دیگه Elmah جوابگو نیست، هم به خاطر سرعت کمش نسبت به بقیه کتابخانه ها و هم به خاطر پنل ضعیف اش که حتی یه سرچ هم نداره
در این شرایط راه های مختلفی هست مثل استفاده از سرویس های نگهداری لاگ Cloud-based مثل setrny.io , elmah.io و ...
راه حل بعدی استفاده از برنامه های مدیریت لاگ مثل Seq هستند که بر خلاف مورد قبلی، یک سرویس خارجی نیست و روی سرور خودتون لاگ ها رو نگهداری میکنه و داشبورد قدرتمندی برای سرچ و کوئری گرفتن در اختیارتون میذاره (ولی پولیه)
🔰 راه حل حرفه ای تر و البته رایگان، استفاده از Serilog و ElasticSearch و Kibana هست
🔸دیتابیس ElasticSearch در واقع یک دیتابیس NoSql و یک Search Engine (موتور جستجو) سورس باز و فوق سریع (بر پایه Lucene) هست که قابلیت جستجو و کوئری زدن زدن (به صورت full text search) با سرعت و قدرت بالا رو داره از اون برای نگهداری لاگ ها استفاده خواهیم کرد
🔹پنل Kibana هم یه پلاگین داشبور سورس باز و قدرتمند با امکانات زیاد برای نمایش اطلاعات دیتابیس Elastic هست و از اون برای نمایش خطا ها و جستجو کردن و نمودار گرفتن استفاده می کنیم
🔸 کتابخانه Serilog هم میشه گفت بهترین کتابخانه Logging هست. نسبت به NLog جدید تره و طراحی مدرن تری داره و میزان رشد محبوبیتش هم بیشتره؛ پس میشه گفت از NLog هم بهتره (البته خیلی اختلاف ندارند)
این کتابخونه قابلیت های زیادی داره که به لطف پلاگین های زیادی که برای Serilog وجود داره (اصطلاحا بهش میگن Sinks) براش فراهم شده و از لحاظ پرفرمنسی هم از NLog سریع تره.
🔹 تنها نکته مهم، استفاده از روش Structred Logging نسبت به حالت معمولی است. شاید فکر کنید دو دستور زیر هیچ تفاوتی نمیکنه!
logger.Debug("UserName is : Ali");
logger.Debug("UserName is : {username}", "Ali");
ولی عملکرد این دو یکسان نبوده و خط دوم که به صورت Structred هست اطلاعات را به صورت جداگانه ضبط و ثبت میکنه درنتیجه در کنار متن خطا، یک فیلد به نام username با مقدار Ali نیز ذخیره میکنه که کار جستجو و کوئری زدن رو راحت تر میکنهمقالات آموزش این سلوشن :
https://bit.ly/2EAjpTh
https://bit.ly/2EBUYFc
https://bit.ly/2X7g1Xn
https://bit.ly/2Exvs3C
مخزن نمونه کد :
https://github.com/thecarlo/elastic-kibana-netcore-serilog
_____________
❇️ معرفی برترین کتابخانه های Task Scheduling (انجام کار های پس زمینه) در دات نت
برای این کار راه های مختلفی هست
1️⃣ کلاس Generic Host و BackgrounService :
در ساده ترین حالت توسط قابلیت های تو کار خود ASP Core میتونین اینکارو انجام بدین
https://www.dotnettips.info/post/2997
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-2.2
2️⃣ کتابخانه Coravel :
مزیت این کتابخانه اینه که DI رو به صورت داخلی ساپورت میکنه (بر خلاف FluentScheduler) [گزینه مورد علاقه خودم - ساده و سبک ولی مدرن]
https://github.com/jamesmh/coravel
https://docs.coravel.net
3️⃣ کتابخانه FluentScheduler
https://github.com/fluentscheduler/FluentScheduler
4️⃣ کتابخانه Hangfire :
بهترین گزینه برای پروژه های بزرگ (خیلی حرفه ای و full-feature هست)
یک پنل داشبوری برای نمایش لیست کار های زمان بندی شده به همراه وضعیتشون بهتون میده که میتونین تسک ها رو غیر فعال کنین یا گزارش ازشون بگیرین و...
https://www.hangfire.io/
https://github.com/HangfireIO/Hangfire
5️⃣ کتابخانه DNTScheduler.Core :
نویسنده این کتابخانه وحید نصیری عزیز هستش
https://github.com/VahidN/DNTScheduler.Core
https://www.dotnettips.info/post/1736
6️⃣کتابخانه Quartz.Net :
این کتابخانه port شده از معادل جاواییش هست و code quality خوبی نداره و طراحیش هم مدرن نیست (کلا پیشنهاد نمیکنم تا گزینه های بهتری هست)
https://www.quartz-scheduler.net/
https://github.com/quartznet/quartznet
✅ همه این کتابخانه ها از Cron پشتیبانی میکنن
در واقع Cron یه سینتکس دستوری واسه زمان بندی کار ها هست که قوائد خاص خودش رو داره (اسامی CronTab و CronJob هم از همین خانوادس)
مثلا برای اینکه یه تسک هر ۱۵ دقیقه یک بار انجام بشه، دستور Cron اش میشه
_____________
برای این کار راه های مختلفی هست
1️⃣ کلاس Generic Host و BackgrounService :
در ساده ترین حالت توسط قابلیت های تو کار خود ASP Core میتونین اینکارو انجام بدین
https://www.dotnettips.info/post/2997
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-2.2
2️⃣ کتابخانه Coravel :
مزیت این کتابخانه اینه که DI رو به صورت داخلی ساپورت میکنه (بر خلاف FluentScheduler) [گزینه مورد علاقه خودم - ساده و سبک ولی مدرن]
https://github.com/jamesmh/coravel
https://docs.coravel.net
3️⃣ کتابخانه FluentScheduler
https://github.com/fluentscheduler/FluentScheduler
4️⃣ کتابخانه Hangfire :
بهترین گزینه برای پروژه های بزرگ (خیلی حرفه ای و full-feature هست)
یک پنل داشبوری برای نمایش لیست کار های زمان بندی شده به همراه وضعیتشون بهتون میده که میتونین تسک ها رو غیر فعال کنین یا گزارش ازشون بگیرین و...
https://www.hangfire.io/
https://github.com/HangfireIO/Hangfire
5️⃣ کتابخانه DNTScheduler.Core :
نویسنده این کتابخانه وحید نصیری عزیز هستش
https://github.com/VahidN/DNTScheduler.Core
https://www.dotnettips.info/post/1736
6️⃣کتابخانه Quartz.Net :
این کتابخانه port شده از معادل جاواییش هست و code quality خوبی نداره و طراحیش هم مدرن نیست (کلا پیشنهاد نمیکنم تا گزینه های بهتری هست)
https://www.quartz-scheduler.net/
https://github.com/quartznet/quartznet
✅ همه این کتابخانه ها از Cron پشتیبانی میکنن
در واقع Cron یه سینتکس دستوری واسه زمان بندی کار ها هست که قوائد خاص خودش رو داره (اسامی CronTab و CronJob هم از همین خانوادس)
مثلا برای اینکه یه تسک هر ۱۵ دقیقه یک بار انجام بشه، دستور Cron اش میشه
*/15 * * * *
توی سایت زیر که یک محیط تعاملی برای نوشتن دستور Cron هست میتونین با قوائد و مثال هاش بیشتر آشنا بشین_____________
❇️ سری آموزش DevOps for ASP.NET Developers (زبان اصلی زیر نویس دار)
از پایین ویدئو گزینه [Subtitle/captions] میتوانید زیرنویس آن را فعال کنید
1️⃣ What is DevOps
2️⃣ Source Control
3️⃣ Work Item Tracking
4️⃣ Continuous Integration
5️⃣ Unit Testing
6️⃣ Release Pipelines
7️⃣ Templates and Scaffolding Tools
8️⃣ Azure DevOps Integration with GitHub
____________
از پایین ویدئو گزینه [Subtitle/captions] میتوانید زیرنویس آن را فعال کنید
1️⃣ What is DevOps
2️⃣ Source Control
3️⃣ Work Item Tracking
4️⃣ Continuous Integration
5️⃣ Unit Testing
6️⃣ Release Pipelines
7️⃣ Templates and Scaffolding Tools
8️⃣ Azure DevOps Integration with GitHub
____________
Docs
DevOps For ASP.NET Developers Pt.1 - What is DevOps?
DevOps is the union of people, process, and products to enable continuous delivery of value to our end users. Azure DevOps is everything you need to turn an idea into a working piece of software.In this first episode of the DevOps for ASP.NET Developers series…
🔰 یک نکته پرفرمنسی درباره Logging
🔸استفاده از تامین کننده Console برای Logging در حین ارائه نهایی (Production) به شدت باعث کند شدن و کاهش کارآیی برنامه خواهد شد. بهتر است این تامین کننده را صرفا در محیط Development تنظیم کنید (مانند تصویر)
🔹اگر از WebHost.CreateDefaultBuilder استفاده میکنید، به صورت پیشفرض سه تامین کننده Console و Debug و EventSource ثبت خواهند شد پس لازم است ابتدا آن ها را توسط متد ClearProviders حذف کنید
#PerformanceTuning
_________
🔸استفاده از تامین کننده Console برای Logging در حین ارائه نهایی (Production) به شدت باعث کند شدن و کاهش کارآیی برنامه خواهد شد. بهتر است این تامین کننده را صرفا در محیط Development تنظیم کنید (مانند تصویر)
🔹اگر از WebHost.CreateDefaultBuilder استفاده میکنید، به صورت پیشفرض سه تامین کننده Console و Debug و EventSource ثبت خواهند شد پس لازم است ابتدا آن ها را توسط متد ClearProviders حذف کنید
#PerformanceTuning
_________
۱۲ نکته در مورد Debugging در ویژوال استودیو:
در این پست فرض بر این است که خواننده اصول اولیه دیباگ کردن با ویژوال استودیو را می داند.
در صورتی که تسلط کامل بر روی این ۱۲ نکته داشته باشید، می توانید با کیفیت بالایی کد های خود را دیباگ کنید.
مواردی که در این پست به آن پرداخته شده است:
✅ 1) Run to Cursor : Ctrl+F10
✅ 2) Run through here with a mouse click
✅ 3) Set next statement to here : holding the key Ctrl
✅ 4) Data breakpoint: Break when value changes
✅ 5) Conditional breakpoint
✅ 6) Trace breakpoint
✅ 7) Track Objects that Are Out-Of-Scope : Make Object ID
✅ 8) View values returned by functions :
Debug > Windows > Autos
✅ 9) Reattach To Process: Shift+Alt+P
✅ 10) No-Side-Effect evaluation in Immediate Window and in the Watch Window
✅ 11) Show Threads in Source
✅ 12) Debug source code decompiled from IL code
جزئیات کامل را میتوانید در لینک زیر مطالعه کنید:
https://blog.ndepend.com/12-visual-studio-debugging-productivity-tips/
_
در این پست فرض بر این است که خواننده اصول اولیه دیباگ کردن با ویژوال استودیو را می داند.
در صورتی که تسلط کامل بر روی این ۱۲ نکته داشته باشید، می توانید با کیفیت بالایی کد های خود را دیباگ کنید.
مواردی که در این پست به آن پرداخته شده است:
✅ 1) Run to Cursor : Ctrl+F10
✅ 2) Run through here with a mouse click
✅ 3) Set next statement to here : holding the key Ctrl
✅ 4) Data breakpoint: Break when value changes
✅ 5) Conditional breakpoint
✅ 6) Trace breakpoint
✅ 7) Track Objects that Are Out-Of-Scope : Make Object ID
✅ 8) View values returned by functions :
Debug > Windows > Autos
✅ 9) Reattach To Process: Shift+Alt+P
✅ 10) No-Side-Effect evaluation in Immediate Window and in the Watch Window
✅ 11) Show Threads in Source
✅ 12) Debug source code decompiled from IL code
جزئیات کامل را میتوانید در لینک زیر مطالعه کنید:
https://blog.ndepend.com/12-visual-studio-debugging-productivity-tips/
_
NDepend
12 Visual Studio Debugging Productivity Tips - NDepend
The top 12 Visual Studio debugging productivity tips illustrated with some GIFs. Learn these tips now and boost your debugging sessions.
⚫️ مایکروسافت به دنبال تصاحب TikTok
به نظر می رسد سال 2020 سال اتفاقات شگفت انگیزی باشد. طبق آخرین شایعات منتشر شده پس از دستور ترامپ ریاست جمهوری ایالات متحده، به نظر می رسد مایکروسافت به دنبال تصاحب TikTok از طریق کمیته سرمایه گذاری امریکا باشد.
طبق گزارش بلومبرگ، برنامه چینی محبوب TikTok بر روی تلفن های همراه میلیون ها امریکایی نصب شده ، موجب نگرانی های امنیتی در دولت ایالات متحده شده است. منابع تایید شده ای می گویند مایکروسافت در حال مذاکره برای خرید تیک تاک است.
به نظر می رسد سال 2020 سال اتفاقات شگفت انگیزی باشد. طبق آخرین شایعات منتشر شده پس از دستور ترامپ ریاست جمهوری ایالات متحده، به نظر می رسد مایکروسافت به دنبال تصاحب TikTok از طریق کمیته سرمایه گذاری امریکا باشد.
طبق گزارش بلومبرگ، برنامه چینی محبوب TikTok بر روی تلفن های همراه میلیون ها امریکایی نصب شده ، موجب نگرانی های امنیتی در دولت ایالات متحده شده است. منابع تایید شده ای می گویند مایکروسافت در حال مذاکره برای خرید تیک تاک است.
✅ این Mock یا Mocking چیه؟!!
#سوال_درخواستی
🔸 در واقع Mock کردن (Mocking) یک تکنیک تست نویسی است که در آن قسمتی از کد را با یک پیاده سازی دلخواه جایگزین میکنیم و از آن برای شبیه سازی یک عملیات واقعی استفاده میشه.
🔹 معمولا ماک کردن زمانی استفاده میشه که یک متد یا کلاس، وابستگی یا وابستگی هایی داره که توی تستمون تداخل ایجاد میکنه.
🔸 مثلا فرض کنید یک سرویسی رو میخواین تست کنین که داخلش از سرویس SmsSender استفاده شده (یعنی به سرویس SmsSender وابستگی داره)، درنتیجه هربار که اون تست رو انجام میدید یه SMS هم ارسال میکنه که خب لازم نیست
در این صورت میایم و سرویس SmsSender رو ماک میکنیم که دیگه Sms ارسال نکنه ولی true رو برگردونه (به این معنی که درست کار کرده)
🔹 این باعث میشه ما بتونیم عملکرد (functionality) همون متد رو تست کنیم به جای اینکه تست مون را درگیر و وابسته به عوامل ثالث (مثل ارسال SMS) کنیم
🔰حالا چه وقتایی معمولا ماک استفاده میشه؟
1️⃣ وابستگی ما در دسترس نباشه
مثلا سرویس شما قراره یه اطلاعاتی رو از وب سرویس بخونه، خب اگه اینترنت قط باشه، تا بالاترن سطح سرویس هامون که به این وابسته بوده fail میشه، پس میایم ماک اش میکنیم و میگیم با فرض اینکه وب سرویس در دسترسه و داره درست اطلاعات رو بر میگردونه، حالا برو ببینم خودت چند مرده حلاجی؟!
2️⃣ وابستگی ما کند باشه
مثلا یه تست برای انجام شدنش نیاز به یه کوئری به دیتابیس داره که 60 ثانیه زمان میبره، پس میایم و ادامه ماجرا ...
3️⃣ وابستگی ما باید توی تست رفتارش عوض بشه
مثل همین مثال سرویس SmsSender
4️⃣ و چندین سناریو دیگه ...
🔰 بهترین کتابخانه های Mocking در دات نت این ها هستند
1️⃣ Moq
2️⃣ NSubstitute
3️⃣ FakeItEasy
🔰حالا یه سوالی که پیش میاد اینه که این کتابخانه های Mocking چطوری کار میکنن؟!
اساس کار این ابزار ها به 2 صورت هست
1️⃣ بر اساس interface :
که عملا توی runtime، یک کلاس الکی درست میکنن که از interface شما ارث بری کرده و بهتون اجازه میده که پیاده سازی متد هاش رو تغییر بدین
2️⃣ بر اساس virtual :
در این روش متد هایی که میخواین قابل mock شدن باشن باید virtual تعریف بشن، در این صورت میاد و توی runtime یک کلاس ایجاد میکنه که از کلاس مورد نظر شما ارث بری کرده ولی متد های virtual اش رو override (بازنویسی) کرده و بهتون اجازه میده که پیاده سازی متد هاش رو تغییر بدین
_________
#سوال_درخواستی
🔸 در واقع Mock کردن (Mocking) یک تکنیک تست نویسی است که در آن قسمتی از کد را با یک پیاده سازی دلخواه جایگزین میکنیم و از آن برای شبیه سازی یک عملیات واقعی استفاده میشه.
🔹 معمولا ماک کردن زمانی استفاده میشه که یک متد یا کلاس، وابستگی یا وابستگی هایی داره که توی تستمون تداخل ایجاد میکنه.
🔸 مثلا فرض کنید یک سرویسی رو میخواین تست کنین که داخلش از سرویس SmsSender استفاده شده (یعنی به سرویس SmsSender وابستگی داره)، درنتیجه هربار که اون تست رو انجام میدید یه SMS هم ارسال میکنه که خب لازم نیست
در این صورت میایم و سرویس SmsSender رو ماک میکنیم که دیگه Sms ارسال نکنه ولی true رو برگردونه (به این معنی که درست کار کرده)
🔹 این باعث میشه ما بتونیم عملکرد (functionality) همون متد رو تست کنیم به جای اینکه تست مون را درگیر و وابسته به عوامل ثالث (مثل ارسال SMS) کنیم
🔰حالا چه وقتایی معمولا ماک استفاده میشه؟
1️⃣ وابستگی ما در دسترس نباشه
مثلا سرویس شما قراره یه اطلاعاتی رو از وب سرویس بخونه، خب اگه اینترنت قط باشه، تا بالاترن سطح سرویس هامون که به این وابسته بوده fail میشه، پس میایم ماک اش میکنیم و میگیم با فرض اینکه وب سرویس در دسترسه و داره درست اطلاعات رو بر میگردونه، حالا برو ببینم خودت چند مرده حلاجی؟!
2️⃣ وابستگی ما کند باشه
مثلا یه تست برای انجام شدنش نیاز به یه کوئری به دیتابیس داره که 60 ثانیه زمان میبره، پس میایم و ادامه ماجرا ...
3️⃣ وابستگی ما باید توی تست رفتارش عوض بشه
مثل همین مثال سرویس SmsSender
4️⃣ و چندین سناریو دیگه ...
🔰 بهترین کتابخانه های Mocking در دات نت این ها هستند
1️⃣ Moq
2️⃣ NSubstitute
3️⃣ FakeItEasy
🔰حالا یه سوالی که پیش میاد اینه که این کتابخانه های Mocking چطوری کار میکنن؟!
اساس کار این ابزار ها به 2 صورت هست
1️⃣ بر اساس interface :
که عملا توی runtime، یک کلاس الکی درست میکنن که از interface شما ارث بری کرده و بهتون اجازه میده که پیاده سازی متد هاش رو تغییر بدین
2️⃣ بر اساس virtual :
در این روش متد هایی که میخواین قابل mock شدن باشن باید virtual تعریف بشن، در این صورت میاد و توی runtime یک کلاس ایجاد میکنه که از کلاس مورد نظر شما ارث بری کرده ولی متد های virtual اش رو override (بازنویسی) کرده و بهتون اجازه میده که پیاده سازی متد هاش رو تغییر بدین
_________
GitHub
GitHub - devlooped/moq: The most popular and friendly mocking framework for .NET
The most popular and friendly mocking framework for .NET - devlooped/moq
❇️ آموزش استفاده از Container در NET Core. (زبان اصلی زیر نویس دار)
از پایین ویدئو گزینه [Subtitle/captions] میتوانید زیرنویس آن را فعال کنید
[00:44] - What are some of advantages of containers?
[01:14] - How do containers compare to other hosting options?
[04:14] - Demo of Visual Studio tooling for containers
[07:06] - Deploying your container to Azure
Useful Links
Azure Container Service (AKS)
Azure Container Registry
.NET Core Docker container images
ASP.NET Core Docker container images
Create a Free Account (Azure)
_____________
از پایین ویدئو گزینه [Subtitle/captions] میتوانید زیرنویس آن را فعال کنید
[00:44] - What are some of advantages of containers?
[01:14] - How do containers compare to other hosting options?
[04:14] - Demo of Visual Studio tooling for containers
[07:06] - Deploying your container to Azure
Useful Links
Azure Container Service (AKS)
Azure Container Registry
.NET Core Docker container images
ASP.NET Core Docker container images
Create a Free Account (Azure)
_____________
Docs
.NET Core and Containers
On this episode of On.NET, Microsoft Cloud Developer Advocate, Jeremy Likness, is joined by Microsoft Most Valuable Professional (MVP), Josh Lane, to discuss .NET Core and Containers. Josh and Jeremy discuss what containers are and how they fit into modern…
#اطلاعیه_SciSharp
دوستان عزیز همانطور که میدانید زبان سطح بالای Python که دارای فریمورک های زیادی است و بیشتر این فریمورک ها مربوط به ( هوش مصنوعی و زیر مجموعه های آن مانند یادگیری ماشین - بینایی ماشین - و... ) است.
حالا یه تیمی از که طریق مایکروسافت وظیفه دارند تمامی این فریمورک هارو Port کنند در سی شارپ با حداقل ۹۹ درصد شباهت در کد ها و تابع ها و ....
این اکوسیستم SciSharp Stack نام دارد.
که تا الان چند فریمورک قوی مانند Tensorflow و Keras و NumPy و Catalyst NLP رو تا الان Portکردند، و هر اپدیتی که از طرف این فرویمورک های اصلی بشود، این پکیج های nuget هم آپدیت میشوند.
درخواست این تیم این است که اطلاع داده بشه به همه که همچین چیزی وجود داره.
کتابخانه ها و فریمورک های دیگر هم در دست ساخت هستش مثل PyTorch و Pandas و Matplotlib و....
https://scisharp.github.io/SciSharp/
خوبیش اینه که ۹۹ درصد کدها شبیه هم هستند و برای مثال با دیدن یک آموزش Tensorflow در پایتون میتونید تو سی شارپ هم با Tensorflow کار کنید.( البته صد در صد به جبر خطی و ... نیاز دارید برای کارهای حرفه ای ).
دوستان عزیز همانطور که میدانید زبان سطح بالای Python که دارای فریمورک های زیادی است و بیشتر این فریمورک ها مربوط به ( هوش مصنوعی و زیر مجموعه های آن مانند یادگیری ماشین - بینایی ماشین - و... ) است.
حالا یه تیمی از که طریق مایکروسافت وظیفه دارند تمامی این فریمورک هارو Port کنند در سی شارپ با حداقل ۹۹ درصد شباهت در کد ها و تابع ها و ....
این اکوسیستم SciSharp Stack نام دارد.
که تا الان چند فریمورک قوی مانند Tensorflow و Keras و NumPy و Catalyst NLP رو تا الان Portکردند، و هر اپدیتی که از طرف این فرویمورک های اصلی بشود، این پکیج های nuget هم آپدیت میشوند.
درخواست این تیم این است که اطلاع داده بشه به همه که همچین چیزی وجود داره.
کتابخانه ها و فریمورک های دیگر هم در دست ساخت هستش مثل PyTorch و Pandas و Matplotlib و....
https://scisharp.github.io/SciSharp/
خوبیش اینه که ۹۹ درصد کدها شبیه هم هستند و برای مثال با دیدن یک آموزش Tensorflow در پایتون میتونید تو سی شارپ هم با Tensorflow کار کنید.( البته صد در صد به جبر خطی و ... نیاز دارید برای کارهای حرفه ای ).
scisharp.github.io
SciSharp STACK
A .NET based Open Source Ecosystem for Data Science, Machine Learning and AI
👍2
✅ مقایسه پرفرمنس gRPC و REST
طبق این بنچمارک میتونین ببینین که توی درخواست های سبک ( مثل یه GET ساده با دیتای کم حجم) gRPC و REST تفاوتی خاصی با هم ندارن
ولی توی درخواست های سنگین (که حجم دیتای انتقالی زیاد باشه) :
🔸توی حالت GET (دریافت اطلاعات) gRPC بیش از 7 برابر سریع تر از REST عمل میکنه
🔹وتوی حالت POST (ارسال اطلاعات) gRPC بیش از 11 برابر سریع تر از REST عمل میکنه
🔸دلیل اصلی این سرعت بسیار بالا اینه که gRPC از Protocol Buffers برای سریالایز و فشرده سازی اطلاعات استفاده میکنه و نیز به صورت پیشفرض از HTTP/2 و استفاده میکنه که اون هم یه مکانیزم فشرده سازی داره
🔹برای کار با gRPC در حالت عادی باید از CLI مخصوص اون "protoc" برای کامپایل و تولید کلاس های سرویس از روی فایل های "proto." استفاده کنید. ولی با Visual Studio میتونین همین کار رو کامپایلر built-in اش راحت تر انجام بدین
🔸جمع بندی اینکه gRPC میتونه گزینه بسیار خوبی برای ارتباطات بیین Micro-service ها باشه
لینک مقاله و ریپازیتوری گیتهاب این بنچمارک
Evaluating Performance of REST vs. gRPC
Github Repository
________________
طبق این بنچمارک میتونین ببینین که توی درخواست های سبک ( مثل یه GET ساده با دیتای کم حجم) gRPC و REST تفاوتی خاصی با هم ندارن
ولی توی درخواست های سنگین (که حجم دیتای انتقالی زیاد باشه) :
🔸توی حالت GET (دریافت اطلاعات) gRPC بیش از 7 برابر سریع تر از REST عمل میکنه
🔹وتوی حالت POST (ارسال اطلاعات) gRPC بیش از 11 برابر سریع تر از REST عمل میکنه
🔸دلیل اصلی این سرعت بسیار بالا اینه که gRPC از Protocol Buffers برای سریالایز و فشرده سازی اطلاعات استفاده میکنه و نیز به صورت پیشفرض از HTTP/2 و استفاده میکنه که اون هم یه مکانیزم فشرده سازی داره
🔹برای کار با gRPC در حالت عادی باید از CLI مخصوص اون "protoc" برای کامپایل و تولید کلاس های سرویس از روی فایل های "proto." استفاده کنید. ولی با Visual Studio میتونین همین کار رو کامپایلر built-in اش راحت تر انجام بدین
🔸جمع بندی اینکه gRPC میتونه گزینه بسیار خوبی برای ارتباطات بیین Micro-service ها باشه
لینک مقاله و ریپازیتوری گیتهاب این بنچمارک
Evaluating Performance of REST vs. gRPC
Github Repository
________________
❇️ اگه میخواین مفهوم Hash و Salt رو درک کنین
فیلم زیر از جادی خیلی باحال توضیحش میده
🔰 نقل قول از جادی :
"به نظر من، هشها از قشنگیهای دنیای کامپیوتر و برنامه نویسی. فانکشنهایی که میتونن اطلاعات رو به ترکیبی از بیت های دیگه با طول ثابت تبدیل کنن و نتیجه شون هم همیشه برای ورودی ثابت، ثابته. این ایده درخشان منتیج به نتایج خیلی جالبی هم شده. مثلا فرض کنین می خواین بدونین آیا فایلی که دانلود کردین سالمه یا نه. یا می خواین کلی دیتا رو جایی بریزین و سریع پیداشون کنین. یا از اون جالبتر، می خواین به یکی پشت تلفن بگین «یه عدد در نظر بگیر» و بعد عدد رو حدس بزنین و مطمئن باشین که تقلبی نمی تونه اتفاق بیافته یا حتی رمزارز بسازین. همه اینجاها، هش کار گشا است فهمیدنش برای یک برنامه نویس خوب واجبه. "
1️⃣ https://www.aparat.com/v/1YjmV/
2️⃣ https://www.aparat.com/v/PmYpu/
3️⃣ https://www.aparat.com/v/Yg02q/
___________
فیلم زیر از جادی خیلی باحال توضیحش میده
🔰 نقل قول از جادی :
"به نظر من، هشها از قشنگیهای دنیای کامپیوتر و برنامه نویسی. فانکشنهایی که میتونن اطلاعات رو به ترکیبی از بیت های دیگه با طول ثابت تبدیل کنن و نتیجه شون هم همیشه برای ورودی ثابت، ثابته. این ایده درخشان منتیج به نتایج خیلی جالبی هم شده. مثلا فرض کنین می خواین بدونین آیا فایلی که دانلود کردین سالمه یا نه. یا می خواین کلی دیتا رو جایی بریزین و سریع پیداشون کنین. یا از اون جالبتر، می خواین به یکی پشت تلفن بگین «یه عدد در نظر بگیر» و بعد عدد رو حدس بزنین و مطمئن باشین که تقلبی نمی تونه اتفاق بیافته یا حتی رمزارز بسازین. همه اینجاها، هش کار گشا است فهمیدنش برای یک برنامه نویس خوب واجبه. "
1️⃣ https://www.aparat.com/v/1YjmV/
2️⃣ https://www.aparat.com/v/PmYpu/
3️⃣ https://www.aparat.com/v/Yg02q/
___________
آپارات - سرویس اشتراک ویدیو
هش (یک از سه) - درک مفهوم
هش ها مفهوم مهمی در برنامه نویسی هستن و منم دوستشون دارم. پس بیاین معرفی شون کنیم، بگیم چی هستن و به چه دردی می خورن.
سلام دوستان
یه دوره بینظیر توی یودمی با موضوع طراحی وب که فریمورک محبوب جنگو رو هم پوشش داده امروز رایگانه
به اکانتتون اضافه کنین تا همیشه دسترسی داشته باشین
https://www.udemy.com/course/python-and-django-full-stack-web-development-for-beginners/?couponCode=27441EC3EACCB06FA8D5
یه دوره بینظیر توی یودمی با موضوع طراحی وب که فریمورک محبوب جنگو رو هم پوشش داده امروز رایگانه
به اکانتتون اضافه کنین تا همیشه دسترسی داشته باشین
https://www.udemy.com/course/python-and-django-full-stack-web-development-for-beginners/?couponCode=27441EC3EACCB06FA8D5
Udemy
Python and Django Full-Stack Web Development for beginners
Build web projects with HTML, CSS,BOOTSTRAP,JavaScript,Python ,Django,PostgreSQL
این دوره فول استک پایتون رو هم اضافه کنید
https://www.udemy.com/course/full-stack-web-development-for-beginners/?couponCode=0E8942BF9C8AD8F5A9E6
https://www.udemy.com/course/full-stack-web-development-for-beginners/?couponCode=0E8942BF9C8AD8F5A9E6
Udemy
Full-Stack Web Development For Beginners
Learn Frontend and Backend Web Development Using: HTML, CSS, JAVASCRIPT, NODE, SQL,POSTGRESQL,REACT,RESTful APIs
This media is not supported in your browser
VIEW IN TELEGRAM
🔵تیزر معرفی سرفیس دئو
سرفیس دئو به طور رسمی معرفی شد!
مایکروسافت از تمامی آنچه که ما در مورد این دستگاه شگفتانگیز بایستی بدانیم رونمایی کرده است.
مایکروسافت تصمیم به عرضه این دستگاه با پردازنده کوالکام اسنپدراگون ۸۵۵، ۶ گیگابایت رم، ۱۲۸/۲۵۶ گیگابایت حافظه داخلی و برچسب قیمتی ۱۴۰۰ دلار گرفته است.
زمان عرضه در نظر گرفته شده، ۱۰ سپتامبر است اما پیش از آن علاقهمنندان قادر به پیشخرید از طریق مایکروسافت استور با قیمت ۱۴۰۰ دلار برای نسخه ۱۲۸ گیگابایتی و ۱۵۰۰ دلار برای نسخه ۲۵۶ گیگابایتی خواهند بود. همچنین کاربران قادر به پیشخرید از طریق AT & T و Best Buy خواهند بود.
سرفیس دئو به طور رسمی معرفی شد!
مایکروسافت از تمامی آنچه که ما در مورد این دستگاه شگفتانگیز بایستی بدانیم رونمایی کرده است.
مایکروسافت تصمیم به عرضه این دستگاه با پردازنده کوالکام اسنپدراگون ۸۵۵، ۶ گیگابایت رم، ۱۲۸/۲۵۶ گیگابایت حافظه داخلی و برچسب قیمتی ۱۴۰۰ دلار گرفته است.
زمان عرضه در نظر گرفته شده، ۱۰ سپتامبر است اما پیش از آن علاقهمنندان قادر به پیشخرید از طریق مایکروسافت استور با قیمت ۱۴۰۰ دلار برای نسخه ۱۲۸ گیگابایتی و ۱۵۰۰ دلار برای نسخه ۲۵۶ گیگابایتی خواهند بود. همچنین کاربران قادر به پیشخرید از طریق AT & T و Best Buy خواهند بود.
Media is too big
VIEW IN TELEGRAM
هنر تفکر ، اما با هم! صحبت در مورد مفهوم "الماس دوگانه" و اینکه چگونه می تواند به تفکر موثر در کنار هم کمک کند.
2020 نیاز به برقراری ارتباط چهره به چهره را مورد توجه قرار داد و نسخه آلفای مکالمات ویدیویی ما هم اکنون در اندروید موجود است و هرچه سریعتر به iOS می آید. می توانید یک تماس ویدیویی را از صفحه نمایه مخاطب خود شروع کرده و در هر زمان مکالمه ویدیویی را در طول تماس صوتی روشن یا خاموش کنید. مانند سایر محتوای ویدیویی در تلگرام ، مکالمات ویدیویی از حالت تصویر در تصویر پشتیبانی می کنند و به شما امکان می دهند ضمن حفظ ارتباط چشمی ، از طریق گپ ها و چند وظیفه حرکت کنید. همه تماسهای ویدیویی با رمزگذاری نهایی به پایان محافظت می شوند. برای تأیید ارتباط خود ، چهار ایموجی نشان داده شده روی صفحه را برای شما و شریک گفتگوی خود مقایسه کنید - در صورت تطابق ، تماس شما با رمزگذاری آزمایش شده از زمان تست شده و همچنین در گفتگوهای مخفی و تماس صوتی Telegram مورد استفاده قرار می گیرد. می توانید جزئیات بیشتری را در این صفحه پیدا کنید. برنامه های ما برای Android و iOS ساخته های قابل تکرار است ، بنابراین هر کسی می تواند رمزنگاری را تأیید کند و تأیید کند که برنامه آنها از همان کد منبع باز استفاده می کند که ما با هر به روز رسانی منتشر می کنیم.
This media is not supported in your browser
VIEW IN TELEGRAM
#فوری
🎥 تلگرام در آستانه هفتمین سالگرد تولد این شبکه اجتماعی و اطلاع رسانی، امکان تماس تصویری و کنفرانس ویدئو با کیفیت عالی را اضافه کرد.
🔹این خدمات همینک برای استفاده کنندگان از سیستمعامل اندروید در دسترس است و تا ساعاتی دیگر در اختیار کاربران IOS هم قرار خواهد گرفت.
🎥 تلگرام در آستانه هفتمین سالگرد تولد این شبکه اجتماعی و اطلاع رسانی، امکان تماس تصویری و کنفرانس ویدئو با کیفیت عالی را اضافه کرد.
🔹این خدمات همینک برای استفاده کنندگان از سیستمعامل اندروید در دسترس است و تا ساعاتی دیگر در اختیار کاربران IOS هم قرار خواهد گرفت.
❇️ آموزش عیب یابی و رفع مشکلات Performance ایی برنامه های ASP.NET Core (زبان اصلی زیر نویس دار)
از پایین ویدئو گزینه [Subtitle/captions] میتوانید زیرنویس آن را فعال کنید
[04:10] - Introducing the demo
[06:03] - Performance Diagnostic tools
[08:37] - Collecting performance data with PerfCollect
[16:24] - Inspecting performance data with PerfView
[25:30] - Common ASP.NET Core Performance Issue
[28:49] - ASP.NET Core Performance Best Practices
Useful Links
PerfView
PerfCollect
ASP.NET Core performance best practices
از پایین ویدئو گزینه [Subtitle/captions] میتوانید زیرنویس آن را فعال کنید
[04:10] - Introducing the demo
[06:03] - Performance Diagnostic tools
[08:37] - Collecting performance data with PerfCollect
[16:24] - Inspecting performance data with PerfView
[25:30] - Common ASP.NET Core Performance Issue
[28:49] - ASP.NET Core Performance Best Practices
Useful Links
PerfView
PerfCollect
ASP.NET Core performance best practices
Docs
Diagnosing ASP.NET Core performance issues
In the episode, Mike Rousos shows us how we can use tools like PerfView and PerfCollect to diagnose performance problems in ASP.NET Core applications. He discusses how we can use the tools for performance analysis on both Linux and Windows servers. Also,…