Forwarded from کدهک
استفاده از await در Task
چرا بهتر است در Task های دات نت از کلمه ی کلیدی await استفاده کنیم؟ در این ویدیو نگاهی به مکانیزم های async/await در دات نت می اندازیم و درباره ی کدهای ساخته شده در پس زمینه صحبت می کنیم.
https://codehaks.com/go/lxt
چرا بهتر است در Task های دات نت از کلمه ی کلیدی await استفاده کنیم؟ در این ویدیو نگاهی به مکانیزم های async/await در دات نت می اندازیم و درباره ی کدهای ساخته شده در پس زمینه صحبت می کنیم.
https://codehaks.com/go/lxt
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
✅ برترین افزونه های رایگان Visual Studio که هر کسی باید داشته باشه
🔰بهترین افزونه های Code Analyzer سی شارپ
این افزونه ها کد های شما رو آنالیز میکنن و اشتباهات رایج هنگام کدنویسی سی شارپب رو به همراه اصلاحات لازم رو بهتون پیشنهاد میده
از جمله موارد مهمی که توسط این کد آنالیزر ها میشه تشخیص داد:
✔️ کد هایی که Naming Convention و Coding Style استاندارد رو رعایت نکردن
✔️ کد های کثیف و Code Smell ها
✔️ کد هایی که به لحاظ ساختاری bug دارند یا مستعد bug هستند
✔️ کد هایی که به لحاظ آسیب پذیری دارند یا منسوخ شدند
✔️ پیشنهاداتی برای تمیز تر کردن کدتون و استفاده از ویژگی های جدید سی شارپ
✔️ پیشنهاداتی که باعث بهبود Performance میشه
🔸SonarLint - Nuget
🔹Roslynator - Nuget
🔸CodeCracker - Nuget
🔹CodeMaid
🔸Sharpen
🔰بهترین افزونه های Code Analyzer مخصوص Async/Await
این دو کد آنالیزر اشتباهات رایج هنگام کدنویسی async رو به همراه اصلاحات لازم بهتون پیشنهاد میدن
🔸AsyncFixer - Nuget
🔹AsyncMethodNameFixer - Nuget
🔰نمایش بهتر خطا ها و هشدار ها
یه افزونه باحال و کاربردی که خطا ها و هشدار های هر فایل رو داخل Solution Explorer کنار اون فایل نشون میده
🔸ErrorVisualizer
🔰فرمت خودکار کد ها به هنگام Save
افزونه محبوب من که کد ها رو موقع ذخیره، به صورت اتوماتیک Format میکنه (معادل میانبر Ctrl+K+D) در نتیجه همیشه کد هاتون فرمت شده و تمیز باقی میمونه بدون اینکه دغدغه اش رو داشته باشین یا یادتون بره
🔹FormatDocumentOnSave
🔰هایلایت متون پنجره Output
یه افزون کاربردی که متون پنجره Output رو highlight میکنه. خیلی وقتا جزئیات و اطلاعاتی از خطا ها داخل پنجره Output نمایش داده میشه که خوندنش خیلی بهتون کمک میکنه
🔸OutputEnhancer
🔰نکته:
بعضی از Code Analyzer ها پکیج Nuget هم دارند کنارشون که این امکان رو میده که بتونید ازش هرجا که NET CLI. هست استفاده کنین. مثلا توی VSCode و مهم تر از اون برای CI/CD، به این صورت که میتونین جز pipeline CD/DI تنظیمش کنین که اگر کدی خطا های Naming Convention یا Coding Style داشت متوجه بشین یا حتی اجازه ندین Pull Request اش Merge بشه
________________
@DotNetZoom
🔰بهترین افزونه های Code Analyzer سی شارپ
این افزونه ها کد های شما رو آنالیز میکنن و اشتباهات رایج هنگام کدنویسی سی شارپب رو به همراه اصلاحات لازم رو بهتون پیشنهاد میده
از جمله موارد مهمی که توسط این کد آنالیزر ها میشه تشخیص داد:
✔️ کد هایی که Naming Convention و Coding Style استاندارد رو رعایت نکردن
✔️ کد های کثیف و Code Smell ها
✔️ کد هایی که به لحاظ ساختاری bug دارند یا مستعد bug هستند
✔️ کد هایی که به لحاظ آسیب پذیری دارند یا منسوخ شدند
✔️ پیشنهاداتی برای تمیز تر کردن کدتون و استفاده از ویژگی های جدید سی شارپ
✔️ پیشنهاداتی که باعث بهبود Performance میشه
🔸SonarLint - Nuget
🔹Roslynator - Nuget
🔸CodeCracker - Nuget
🔹CodeMaid
🔸Sharpen
🔰بهترین افزونه های Code Analyzer مخصوص Async/Await
این دو کد آنالیزر اشتباهات رایج هنگام کدنویسی async رو به همراه اصلاحات لازم بهتون پیشنهاد میدن
🔸AsyncFixer - Nuget
🔹AsyncMethodNameFixer - Nuget
🔰نمایش بهتر خطا ها و هشدار ها
یه افزونه باحال و کاربردی که خطا ها و هشدار های هر فایل رو داخل Solution Explorer کنار اون فایل نشون میده
🔸ErrorVisualizer
🔰فرمت خودکار کد ها به هنگام Save
افزونه محبوب من که کد ها رو موقع ذخیره، به صورت اتوماتیک Format میکنه (معادل میانبر Ctrl+K+D) در نتیجه همیشه کد هاتون فرمت شده و تمیز باقی میمونه بدون اینکه دغدغه اش رو داشته باشین یا یادتون بره
🔹FormatDocumentOnSave
🔰هایلایت متون پنجره Output
یه افزون کاربردی که متون پنجره Output رو highlight میکنه. خیلی وقتا جزئیات و اطلاعاتی از خطا ها داخل پنجره Output نمایش داده میشه که خوندنش خیلی بهتون کمک میکنه
🔸OutputEnhancer
🔰نکته:
بعضی از Code Analyzer ها پکیج Nuget هم دارند کنارشون که این امکان رو میده که بتونید ازش هرجا که NET CLI. هست استفاده کنین. مثلا توی VSCode و مهم تر از اون برای CI/CD، به این صورت که میتونین جز pipeline CD/DI تنظیمش کنین که اگر کدی خطا های Naming Convention یا Coding Style داشت متوجه بشین یا حتی اجازه ندین Pull Request اش Merge بشه
________________
@DotNetZoom
Forwarded from کدهک
آشنایی با InfluxDb
دیتابیس InfluxDb یک دیتابیس از نوع سری زمانی است که اطلاعات را درون کلیدی از جنس زمان با دقت نانو ثانیه ذخیره میکند.
در این ویدیو با استفاده از ASP NET Core اطلاعاتی را درون این دیتابیس ذخیره می کنیم و سپس با استفاده از Grafana به صورت گراف نمایش میدهیم.
https://tinyurl.com/cdhk-influx
دیتابیس InfluxDb یک دیتابیس از نوع سری زمانی است که اطلاعات را درون کلیدی از جنس زمان با دقت نانو ثانیه ذخیره میکند.
در این ویدیو با استفاده از ASP NET Core اطلاعاتی را درون این دیتابیس ذخیره می کنیم و سپس با استفاده از Grafana به صورت گراف نمایش میدهیم.
https://tinyurl.com/cdhk-influx
Forwarded from DotNetZoom (Ali Abdolmaleki)
❇️ نکاتی در مورد کار با PDF در دات نت و برترین کتابخانه های آن
کتابخونه های کار با pdf به 2 دسته کلی تقسیم میشن
🔸دسته اول کتابخونه هایی هستند که باهاشون میشه فایل های PDF رو خوند، محتواشو Extract کرد، Edit کرد و یا فایل جدید ساخت
از معروف ترین این کتابخونه ها میشه به ترتیب به موارد زیر اشاره کرد
✔️iTextSharp
✔️iTextSharp.LGPLv2.Core
✔️itext7
✔️PdfSharpCore
معروف ترین شون iTextSharp هست که فقط NET Framework Full. رو پشتیبانی میکنه اما وحید نصیری یه نسخه port شده ازش رو برای NET Core. رو براش درست کرده به نام iTextSharp.LGPLv2.Core
همچنین کتابخونه itext7 که توسط سازنده iTextSharp توسعه داده شده و به عنوان نسخه بعدی iTextSharp و با پشتیبانی از NET Core. اون رو توسعه داده و توصیه میکنه از itext7 استفاده کنین.
🔹دسته دوم کتابخونه هایی هستند که میتونن محتوای یه صفحه html (شامل المان ها و css ها و ...) رو به صورت PDF رندر کنن و خروجی PDF ازشون بگیرن
از جمله معروف ترین این کتابخونه ها میشه به ترتیب به موارد زیر اشاره کرد
✔️DinkToPdf
✔️itext7.pdfhtml
✔️Rotativa.AspNetCore
✔️Wkhtmltopdf.NetCore
طرز کار همشونم به این صورته که اینا معمولا wrapper ایی بر روی کتابخانه wkhtmltopdf هستند که کارش Render کردن خروجی html به pdf هست و پشت صحنه هم از موتور Qt WebKit استفاده میکنن که یک Browser Engine سورس باز هست
🔸اکثر مواقع نیاز برنامه نویسا همین دسته دوم هست. معمولا میخوان از گزارشاتشون خروجی pdf بگیرن که دسته دوم گزینه راحت تری هست چرا که اینجا ما دیگه با یه صفحه html+css سرو کار داریم و خیلی راحت میتونیم هر فرم و جدولی رو که بخوایم طراحی کنیم و وقتی از خروجی html ایی اون مطمئن شدیم اون رو به pdf تبدیل کنیم
دسته اول معمولا کاربرد خاص تری دارند. مثلا اگه بخواین فایل pdf تون رو بخونین، محتواش رو پردازش یا ویرایش کنین یا مثلا ساخت صفحاتتون رو خیلی سفارشی سازی کنین باید از کتابخونه های دسته اول استفاده کنین
یه سری کتابخونه قدرتمند دیگه هم هستند مثل Aspose و Syncfusion ولی چون اونا پولی هستند و نسخه رایگانشون محدودیت داره تو لیست نیاوردمشون
_______________
@DotNetZoom
کتابخونه های کار با pdf به 2 دسته کلی تقسیم میشن
🔸دسته اول کتابخونه هایی هستند که باهاشون میشه فایل های PDF رو خوند، محتواشو Extract کرد، Edit کرد و یا فایل جدید ساخت
از معروف ترین این کتابخونه ها میشه به ترتیب به موارد زیر اشاره کرد
✔️iTextSharp
✔️iTextSharp.LGPLv2.Core
✔️itext7
✔️PdfSharpCore
معروف ترین شون iTextSharp هست که فقط NET Framework Full. رو پشتیبانی میکنه اما وحید نصیری یه نسخه port شده ازش رو برای NET Core. رو براش درست کرده به نام iTextSharp.LGPLv2.Core
همچنین کتابخونه itext7 که توسط سازنده iTextSharp توسعه داده شده و به عنوان نسخه بعدی iTextSharp و با پشتیبانی از NET Core. اون رو توسعه داده و توصیه میکنه از itext7 استفاده کنین.
🔹دسته دوم کتابخونه هایی هستند که میتونن محتوای یه صفحه html (شامل المان ها و css ها و ...) رو به صورت PDF رندر کنن و خروجی PDF ازشون بگیرن
از جمله معروف ترین این کتابخونه ها میشه به ترتیب به موارد زیر اشاره کرد
✔️DinkToPdf
✔️itext7.pdfhtml
✔️Rotativa.AspNetCore
✔️Wkhtmltopdf.NetCore
طرز کار همشونم به این صورته که اینا معمولا wrapper ایی بر روی کتابخانه wkhtmltopdf هستند که کارش Render کردن خروجی html به pdf هست و پشت صحنه هم از موتور Qt WebKit استفاده میکنن که یک Browser Engine سورس باز هست
🔸اکثر مواقع نیاز برنامه نویسا همین دسته دوم هست. معمولا میخوان از گزارشاتشون خروجی pdf بگیرن که دسته دوم گزینه راحت تری هست چرا که اینجا ما دیگه با یه صفحه html+css سرو کار داریم و خیلی راحت میتونیم هر فرم و جدولی رو که بخوایم طراحی کنیم و وقتی از خروجی html ایی اون مطمئن شدیم اون رو به pdf تبدیل کنیم
دسته اول معمولا کاربرد خاص تری دارند. مثلا اگه بخواین فایل pdf تون رو بخونین، محتواش رو پردازش یا ویرایش کنین یا مثلا ساخت صفحاتتون رو خیلی سفارشی سازی کنین باید از کتابخونه های دسته اول استفاده کنین
یه سری کتابخونه قدرتمند دیگه هم هستند مثل Aspose و Syncfusion ولی چون اونا پولی هستند و نسخه رایگانشون محدودیت داره تو لیست نیاوردمشون
_______________
@DotNetZoom
Telegram
Attach Files
تخفیف ویژه عید 1400
از امروز می توانید همه دوره های کدهک را با 40 درصد تخفیف تهیه کنید.
کد تخفیف : ta1400
جهت تهیه یکپارچه همه دوره های کدهک به مبلغ تنها 999 هزار تومان می توانید با @codehak یا شماره 09380146555 تماس بگیرید.
https://codehaks.com/shop
از امروز می توانید همه دوره های کدهک را با 40 درصد تخفیف تهیه کنید.
کد تخفیف : ta1400
جهت تهیه یکپارچه همه دوره های کدهک به مبلغ تنها 999 هزار تومان می توانید با @codehak یا شماره 09380146555 تماس بگیرید.
https://codehaks.com/shop
Media is too big
VIEW IN 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
✅ معرفی 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
Forwarded from کدهک
تخفیف ویژه عید 1400
از امروز می توانید همه دوره های کدهک را با 40 درصد تخفیف تهیه کنید.
کد تخفیف : ta1400
جهت تهیه یکپارچه همه دوره های کدهک به مبلغ تنها 999 هزار تومان می توانید با @codehak یا شماره 09380146555 تماس بگیرید.
https://codehaks.com/shop
از امروز می توانید همه دوره های کدهک را با 40 درصد تخفیف تهیه کنید.
کد تخفیف : ta1400
جهت تهیه یکپارچه همه دوره های کدهک به مبلغ تنها 999 هزار تومان می توانید با @codehak یا شماره 09380146555 تماس بگیرید.
https://codehaks.com/shop
Forwarded from کدهک
کتابخانه Polly دارای قابلیت Circuit Breaker است که در صورت وجود خطا در سرویس از اجرای آن صرف نظر میکند. این قابلیت کمک می کند کدهایی با پایداری بالا داشته باشیم و در برابر خطاهای احتمالی پیش بینی های لازم را انجام دهیم.
https://codehaks.com/go/hwo
https://codehaks.com/go/hwo
Forwarded from کدهک
با استفاده از اینترفیس IActionResult میتوان در ASP NET Core نوع بازگشتی اختصاصی ایجاد کرد. در این ویدیو می بنیم که چطور یک کاکشن را به صورت فایل CSV در خروجی اکشن تولید کنیم.
https://codehaks.com/go/dyk
https://codehaks.com/go/dyk
Forwarded from Software Philosophy
اولین گپ تکنیکال «فلسفه نرمافزار»
با موضوع «Open Source and Community Driven Activity»
همونطور که میدونین تلگرام امکان Voice Chat رو اخیرا به کانالها اضافه کرده، امکانی که تجربه خیلی جالبی رو به تلگرام اضافه کرده که خیلی مشابه Clubhouse هست و باعث میشه بتونیم گپهای باحالی با هم بزنیم. انگار رفتیم و تو یه کافه نشستیم و با هم گپ تکنیکال میزنیم.
ما هم تصمیم گرفتیم اولین گپ تکنیکال رو از طریق همین ابزار برگزار کنیم.
تو این دورهمی مهران داودی، یاسر مرادی و محمد جواد ابراهیمی هم صحبت خواهند کرد.
امروز، یکشنبه، ۸ فروردین، ساعت ۸ منتظرتون هستیم. برای اینکه اون تایم یادتون نره میتونین کانال (@SoftwarePhilosophy) رو تو تلگرامتون پین کنین تا اون ساعت متوجه شروعش بشید.
@SoftwarePhilosophy
با موضوع «Open Source and Community Driven Activity»
همونطور که میدونین تلگرام امکان Voice Chat رو اخیرا به کانالها اضافه کرده، امکانی که تجربه خیلی جالبی رو به تلگرام اضافه کرده که خیلی مشابه Clubhouse هست و باعث میشه بتونیم گپهای باحالی با هم بزنیم. انگار رفتیم و تو یه کافه نشستیم و با هم گپ تکنیکال میزنیم.
ما هم تصمیم گرفتیم اولین گپ تکنیکال رو از طریق همین ابزار برگزار کنیم.
تو این دورهمی مهران داودی، یاسر مرادی و محمد جواد ابراهیمی هم صحبت خواهند کرد.
امروز، یکشنبه، ۸ فروردین، ساعت ۸ منتظرتون هستیم. برای اینکه اون تایم یادتون نره میتونین کانال (@SoftwarePhilosophy) رو تو تلگرامتون پین کنین تا اون ساعت متوجه شروعش بشید.
@SoftwarePhilosophy
یک فانکشن در SQL Server تعریف می کنیم و آن را در یک Computed Column استفاده می کنیم و سرعت اجرای آن را با Sub Query در EF Core مقایسه می کنیم.
https://youtu.be/uCASTdXdYMg
https://youtu.be/uCASTdXdYMg
Forwarded from کدهک
آموزش ایجاد Global Tools در دات نت
یک Global Tool در اصل یک برنامه کنسول است که میتوانید آن را از هر جایی در سیستم اجرا کنید. این ابزار شباهت زیادی به پکیج های گلوبال در NPM دارند و می توانید برای پیاده سازی ابزارهای برنامه نویسی و کارهای عمومی از آنها استفاده کنید.
https://codehaks.com/go/glb
یک Global Tool در اصل یک برنامه کنسول است که میتوانید آن را از هر جایی در سیستم اجرا کنید. این ابزار شباهت زیادی به پکیج های گلوبال در NPM دارند و می توانید برای پیاده سازی ابزارهای برنامه نویسی و کارهای عمومی از آنها استفاده کنید.
https://codehaks.com/go/glb
مایکروسافت اولین بیلد خودش از Open JDK جاوا را منتشر کرد.
جاوا در دو نسخه Oracle JDK و Open JDK عرضه میشود. برای استفاده از Oracle JDK در پروژه های تجاری باید حق لایسنس پرداخت شود اما نسخه Open JDK کاملا رایگان است.
مایکروسافت به واسطه Azure و کار با Big Data و سرویس هایی که در طول سالها خریداری کرده به طور گسترده از Open JDK و جاوا درون سازمانی استفاده میکند.
در 18 ماه گذشته مایکروسافت 50 پچ روی Open JDK پیاده و منتشر کرده است.
حالا مایکروسافت نسخه خودش را از Open JDK بیلد کرده و قرار است آن را برای بلند مدت پشتیبانی و آپدیت کند.
https://www.microsoft.com/openjdk
جاوا در دو نسخه Oracle JDK و Open JDK عرضه میشود. برای استفاده از Oracle JDK در پروژه های تجاری باید حق لایسنس پرداخت شود اما نسخه Open JDK کاملا رایگان است.
مایکروسافت به واسطه Azure و کار با Big Data و سرویس هایی که در طول سالها خریداری کرده به طور گسترده از Open JDK و جاوا درون سازمانی استفاده میکند.
در 18 ماه گذشته مایکروسافت 50 پچ روی Open JDK پیاده و منتشر کرده است.
حالا مایکروسافت نسخه خودش را از Open JDK بیلد کرده و قرار است آن را برای بلند مدت پشتیبانی و آپدیت کند.
https://www.microsoft.com/openjdk
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
✅ آموزش Cache در Asp.Net Core (قسمت دوم : EasyCaching)
در دنیای امروز برنامه نویسی ، پکیج ها و فریمورک ها نقش بسیار مهمی را ایفا میکنند بطوری که در بسیاری ازین موارد استفاده از این پکیج ها عمل عاقلانه تری نسبت به دوباره نویسی فیچر های مربوطه است.
برای عمل کشینگ در Asp.Net Core نیز پکیج های فوقالعاده ای وجود دارد که در این مقاله به بررسی و استفاده از پکیج EasyCaching، یک پکیج محبوب و کاربردی برای پیاده سازی کش در Asp.Net Core میپردازیم.
همچنین جهت افزایش Performance از کتابخانه EasyCaching.Extensions.EasyCompressor که یک افزونه بر روی EasyCaching هست، استفاده میکنیم .این پکیج اطلاعات را قبل از کش شدن فشرده سازی میکند و حجم اطلاعات را به طور محسوسی کاهش میدهد که میزان فضای اشغالی Ram را کم کرده و همچنین عمل جابجایی اطلاعات را نیز تسریع میبخشد.
#سجاد_کاردل
https://vrgl.ir/SJlkR
پ.ن:
شخصا پیشنهاد میکنم به جای IMemoryCache و IDistributedCache ماکروسافت برای Caching از کتابخانه EasyCaching و در کنارش از EasyCompressor توی پروژه هاتون استفاده کنین (محمدجواد ابراهیمی)
__________________
@DotNetZoom
در دنیای امروز برنامه نویسی ، پکیج ها و فریمورک ها نقش بسیار مهمی را ایفا میکنند بطوری که در بسیاری ازین موارد استفاده از این پکیج ها عمل عاقلانه تری نسبت به دوباره نویسی فیچر های مربوطه است.
برای عمل کشینگ در Asp.Net Core نیز پکیج های فوقالعاده ای وجود دارد که در این مقاله به بررسی و استفاده از پکیج EasyCaching، یک پکیج محبوب و کاربردی برای پیاده سازی کش در Asp.Net Core میپردازیم.
همچنین جهت افزایش Performance از کتابخانه EasyCaching.Extensions.EasyCompressor که یک افزونه بر روی EasyCaching هست، استفاده میکنیم .این پکیج اطلاعات را قبل از کش شدن فشرده سازی میکند و حجم اطلاعات را به طور محسوسی کاهش میدهد که میزان فضای اشغالی Ram را کم کرده و همچنین عمل جابجایی اطلاعات را نیز تسریع میبخشد.
#سجاد_کاردل
https://vrgl.ir/SJlkR
پ.ن:
شخصا پیشنهاد میکنم به جای IMemoryCache و IDistributedCache ماکروسافت برای Caching از کتابخانه EasyCaching و در کنارش از EasyCompressor توی پروژه هاتون استفاده کنین (محمدجواد ابراهیمی)
__________________
@DotNetZoom
ویرگول
آموزش Cache در Asp.Net Core (قسمت دوم : EasyCaching)
در قسمت اول درمورد سیستم Cache دیفالت موجود در AspNet Core و مزیت ها و معایبش گفتیم اگر قسمت اول رو نخواندید پیشنهاد میکنم در همین پروفای…
خروج Objective-C و بازگشت Fortran
گزارش ماهانه TIOBE نشان میدهد 6 سال پس از کنار گذاشته شدن Objective-C توسط Apple این زبان برنامه نویسی از جمع 20 زبان برنامه نویسی محبوب و پر استفاده خارج شده است.
بازگشت دوباره Fortran اما یک اتفاق جدید است. این زبان آخرین بار 10 سال پیش در جمع 20 تایی ها حضور داشت.
سی شارپ همچنان جایگاه پنجم خودش را حفظ کرده است و به نظر نمیرسد در آینده نزدیک تغییر خاصی در ردیف های بالای این جدول صورت گیرد.
گزارش TIOBE از بررسی تعداد برنامه نویسان، آمار موتورهای جستجو، آگهی های استخدام، تعداد کتاب ها و دورهه های آموزشی و ... تهیه میشود.
https://www.tiobe.com/tiobe-index
گزارش ماهانه TIOBE نشان میدهد 6 سال پس از کنار گذاشته شدن Objective-C توسط Apple این زبان برنامه نویسی از جمع 20 زبان برنامه نویسی محبوب و پر استفاده خارج شده است.
بازگشت دوباره Fortran اما یک اتفاق جدید است. این زبان آخرین بار 10 سال پیش در جمع 20 تایی ها حضور داشت.
سی شارپ همچنان جایگاه پنجم خودش را حفظ کرده است و به نظر نمیرسد در آینده نزدیک تغییر خاصی در ردیف های بالای این جدول صورت گیرد.
گزارش TIOBE از بررسی تعداد برنامه نویسان، آمار موتورهای جستجو، آگهی های استخدام، تعداد کتاب ها و دورهه های آموزشی و ... تهیه میشود.
https://www.tiobe.com/tiobe-index
Forwarded from DotNetZoom (Ali Abdolmaleki)
✅ لاگ کردن جزئیات Request ها به کمک Serilog و ActionFilter
بعضی وقتا پیش میاد لازم دارید اطلاعات هر درخواست ورودی Action هامون رو به همراه جزئیات کاملشون رو جهت عیب یابی یا بررسی های آتی ثبت و Log کنیم
در اینجا یک نمونه پروژه آماده کردم که این کار رو به راحتی قرار دادن یک اتریبیوت [LogRequest] بر روی اکشن های مورد نظر انجام میده یا میتونین روی Controller یا به صورت Global ثبت اش کنین تا همه اکشن ها رو Log کنه
🔸طرز کارش به این صورته که در درون ActionFilter مذکور (LogRequest)، جزئیات لازم رو قبل و بعد از اجرا شدن Action مورد نظر Log میکنه (بنا بر نیازتون میتونین هر دیتای دلخواه دیگه ای رو هم از request و response بهش اضافه کنین)
و نهایتا برای ذخیره سازی لاگ ها هم از Serilog و از SqlServer به عنوان Sinks استفاده میکنه (در صورت دلخواه میتونین تو هر Storage/Sink دیگه ای ذخیره کنین)
🔹مسلما لاگ کردن همه درخواست ها میتونه سربار داشته باشه و شخصا پیشنهاد نیمکنم همیشه و همه جا ازش استفاده کنین ولی نکته ای که در مورد Sink های Serilog وجود داره اینه که اکثرا از Async و PeriodicBatching استفاده میکنن به این صورت که در بازه های زمانی Log ها رو به صورت Bulk ایی Insert میکنن (اونم به صورت Async که Thread ایی رو بلاک نکنن) در نتیجه از نظر پرفرمنسی در حالت بهینه ای کار میکنن
🔰از جمله جزئیاتی که در هر درخواست Log میکنه:
1- آدرس URL درخواستی به همراه مقادیر QueryString
2- مقادیر Header های Request و Response
3- مقادیر ارسالی از سمت کاربر (آرگومان های Action)
4- وضعیت ModelState به همراه Error Message ها در صورت وجود
5- مقادیر Routing بسته به Route مچ شده
6- مقادیر شی User.Identity از جمله Claim ها، Name و IsAuthenticated
7- مقدار IP Address کاربر
8- مقدار Url Referrer (آدرس هدایت کننده قبلی به این صفحه)
9- مدت زمان پردازش درخواست جاری (Elapsed Time) و زمان ثبت درخواست
10- جزئیات Exception در صورت وقوع خطا
11- وضعیت Http Status Code درخواست
12- و...
https://github.com/dotnetzoom/RequestLogger-AspNetCore
____________________
@DotNetZoom
بعضی وقتا پیش میاد لازم دارید اطلاعات هر درخواست ورودی Action هامون رو به همراه جزئیات کاملشون رو جهت عیب یابی یا بررسی های آتی ثبت و Log کنیم
در اینجا یک نمونه پروژه آماده کردم که این کار رو به راحتی قرار دادن یک اتریبیوت [LogRequest] بر روی اکشن های مورد نظر انجام میده یا میتونین روی Controller یا به صورت Global ثبت اش کنین تا همه اکشن ها رو Log کنه
🔸طرز کارش به این صورته که در درون ActionFilter مذکور (LogRequest)، جزئیات لازم رو قبل و بعد از اجرا شدن Action مورد نظر Log میکنه (بنا بر نیازتون میتونین هر دیتای دلخواه دیگه ای رو هم از request و response بهش اضافه کنین)
و نهایتا برای ذخیره سازی لاگ ها هم از Serilog و از SqlServer به عنوان Sinks استفاده میکنه (در صورت دلخواه میتونین تو هر Storage/Sink دیگه ای ذخیره کنین)
🔹مسلما لاگ کردن همه درخواست ها میتونه سربار داشته باشه و شخصا پیشنهاد نیمکنم همیشه و همه جا ازش استفاده کنین ولی نکته ای که در مورد Sink های Serilog وجود داره اینه که اکثرا از Async و PeriodicBatching استفاده میکنن به این صورت که در بازه های زمانی Log ها رو به صورت Bulk ایی Insert میکنن (اونم به صورت Async که Thread ایی رو بلاک نکنن) در نتیجه از نظر پرفرمنسی در حالت بهینه ای کار میکنن
🔰از جمله جزئیاتی که در هر درخواست Log میکنه:
1- آدرس URL درخواستی به همراه مقادیر QueryString
2- مقادیر Header های Request و Response
3- مقادیر ارسالی از سمت کاربر (آرگومان های Action)
4- وضعیت ModelState به همراه Error Message ها در صورت وجود
5- مقادیر Routing بسته به Route مچ شده
6- مقادیر شی User.Identity از جمله Claim ها، Name و IsAuthenticated
7- مقدار IP Address کاربر
8- مقدار Url Referrer (آدرس هدایت کننده قبلی به این صفحه)
9- مدت زمان پردازش درخواست جاری (Elapsed Time) و زمان ثبت درخواست
10- جزئیات Exception در صورت وقوع خطا
11- وضعیت Http Status Code درخواست
12- و...
https://github.com/dotnetzoom/RequestLogger-AspNetCore
____________________
@DotNetZoom