کدی برای 1000 سال بعد
به تازگی گیتهاب برچسب هایی بین کاربران پخش میکند مبنی بر اینکه در پروژه Arctic Code Vault مشارکت کرده اند. بر اساس این پروژه گیتهاب در تاریخ 02/02/2020 (5 ماه پیش) سورس همه پروژه های عمومی گیتهاب را در قطب شمال و در عمق 250 متری از سطح زمین دفن کرده است. این پروژه با هدف آرشیو و حفظ کدها برای آیندگان راه اندازی شده است.
گیتهاب با همکاری چند شرکت و سازمان تصمیم دارد به صورت جدی سورس نرم افزارهای امروز را برای آیندگان حفظ کند. نگه داری اطلاعات در هوای سرد قطب شمال می تواند طول عمر آنها را تا 1000 سال افزایش دهد. اطلاعات در منطقه Svalbard نگه داری میشود که دور از دسترس عمومی است و طبق تعهدنامه جهانی باید غیر نظامی بماند. هر چند تغییرات آب و هوا ممکن است باعث آب شدن یخ ها شود اما بعید به نظر میرسد این تغییرات در عمق 250 متری اثر گذار باشد.
پروژه بعدی SILICA است که با همکاری تیم تحقیقاتی مایکروسافت انجام میشود. قرار است سورس ها روی کریستال های Quartz حک شود که طول عمر آنها را تا 10 هزار سال افزایش میدهد.
https://archiveprogram.github.com/
به تازگی گیتهاب برچسب هایی بین کاربران پخش میکند مبنی بر اینکه در پروژه Arctic Code Vault مشارکت کرده اند. بر اساس این پروژه گیتهاب در تاریخ 02/02/2020 (5 ماه پیش) سورس همه پروژه های عمومی گیتهاب را در قطب شمال و در عمق 250 متری از سطح زمین دفن کرده است. این پروژه با هدف آرشیو و حفظ کدها برای آیندگان راه اندازی شده است.
گیتهاب با همکاری چند شرکت و سازمان تصمیم دارد به صورت جدی سورس نرم افزارهای امروز را برای آیندگان حفظ کند. نگه داری اطلاعات در هوای سرد قطب شمال می تواند طول عمر آنها را تا 1000 سال افزایش دهد. اطلاعات در منطقه Svalbard نگه داری میشود که دور از دسترس عمومی است و طبق تعهدنامه جهانی باید غیر نظامی بماند. هر چند تغییرات آب و هوا ممکن است باعث آب شدن یخ ها شود اما بعید به نظر میرسد این تغییرات در عمق 250 متری اثر گذار باشد.
پروژه بعدی SILICA است که با همکاری تیم تحقیقاتی مایکروسافت انجام میشود. قرار است سورس ها روی کریستال های Quartz حک شود که طول عمر آنها را تا 10 هزار سال افزایش میدهد.
https://archiveprogram.github.com/
روز جمعه، بسیاری از وبسایتها و سرویسهای بزرگ اینترنتی برای چند دقیقه با مشکل و اختلال جدی روبهرو شدند و دلیل آن نیز مشکلی بود که در سرویس Cloudflare 1.1.1.1 DNS رخ داد. گزارشها میگویند اختلال به مدت ۲۵ دقیقه طول کشید و سپس اتصالها به وضعیت عادی برگشتند. برخی هم ادعا میکنند که احتمالا Google DNS هم دچار مشکل شده باشد.
متیو پرینس، مدیرعامل کلادفلر در همان دقایق اولیه پس از برقراری اتصال اعلام کرد که مشکل از روتری معیوب در آتلانتا ایجاد شده است. او در توییتر نوشت: «ما مشکلی داشتیم که بخشی از شبکهی کلادفر را با اختلال روبهرو کرد. ظاهرا روتری در آتلانتا دچار اختلال شد که مسیریابی اتصال شبکه را با مشکل روبهرو کرد. همین روتر باعث شد تا ترافیک به سمت PoPهای متصل به زیرساخت ما با مشکل روبهرو شود». کلادفلر همچنین بیانیهای ایمیلی ارسال کرد که در آن، روی عدم حمله به سیستمها تأکید شده بود.
کلادفلر در بیانیهای که برای شفافسازی پیرامون اختلال در شبکهی خود منتشر کرده بود، نوشت:
امروز بعدازظهر شاهد اختلال و قطعی در بخشهایی از شبکهی خود بودیم. این اختلال بهخاطر حمله یا نفوذ سایبری رخ نداده است. ظاهرا روتری در زیرساخت جهانی ما مسیریابی اشتباه انجام داده و منجر به خارج شدن بخشی از شبکه از دسترس شده است. مشکل ریشهای را کشف کردیم و اکنون سیستمها در حالت پایدار و تحت نظارت کامل قرار دارند. بهزودی اطلاعات بیشتری پیرامون مشکل منتشر میکنیم. هماکنون یک گروه اختصاصی مشغول نگارش اطلاعات بهروزرسانی پیرامون اختلال هستند.
از سرویسهایی که از اختلال کلادفلر ضربه خوردند میتوان به Discord, Feedly, Politico, Shopify و League of Legends اشاره کرد که گسترهی اختلال را بهخوبی نشان میدهد. نهتنها وبسایتهای متعددی بهخاطر اختلال پیشآمده با قطعی روبهرو شدند، بلکه برخی از سرویسهای اعلام وضعیت قطعی اینترنت هم چالشهایی را تجربه کردند
متیو پرینس، مدیرعامل کلادفلر در همان دقایق اولیه پس از برقراری اتصال اعلام کرد که مشکل از روتری معیوب در آتلانتا ایجاد شده است. او در توییتر نوشت: «ما مشکلی داشتیم که بخشی از شبکهی کلادفر را با اختلال روبهرو کرد. ظاهرا روتری در آتلانتا دچار اختلال شد که مسیریابی اتصال شبکه را با مشکل روبهرو کرد. همین روتر باعث شد تا ترافیک به سمت PoPهای متصل به زیرساخت ما با مشکل روبهرو شود». کلادفلر همچنین بیانیهای ایمیلی ارسال کرد که در آن، روی عدم حمله به سیستمها تأکید شده بود.
کلادفلر در بیانیهای که برای شفافسازی پیرامون اختلال در شبکهی خود منتشر کرده بود، نوشت:
امروز بعدازظهر شاهد اختلال و قطعی در بخشهایی از شبکهی خود بودیم. این اختلال بهخاطر حمله یا نفوذ سایبری رخ نداده است. ظاهرا روتری در زیرساخت جهانی ما مسیریابی اشتباه انجام داده و منجر به خارج شدن بخشی از شبکه از دسترس شده است. مشکل ریشهای را کشف کردیم و اکنون سیستمها در حالت پایدار و تحت نظارت کامل قرار دارند. بهزودی اطلاعات بیشتری پیرامون مشکل منتشر میکنیم. هماکنون یک گروه اختصاصی مشغول نگارش اطلاعات بهروزرسانی پیرامون اختلال هستند.
از سرویسهایی که از اختلال کلادفلر ضربه خوردند میتوان به Discord, Feedly, Politico, Shopify و League of Legends اشاره کرد که گسترهی اختلال را بهخوبی نشان میدهد. نهتنها وبسایتهای متعددی بهخاطر اختلال پیشآمده با قطعی روبهرو شدند، بلکه برخی از سرویسهای اعلام وضعیت قطعی اینترنت هم چالشهایی را تجربه کردند
دسترسی به اینترنت ماهوارهای استارلینک اسپیس ایکس به زودی ممکن میشود
اینترنت استارلینک (Starlink) پروژهای جنجالی و شگفتانگیز از کمپانی هوافضای اسپیس ایکس بوده که به زودی اینترنت ماهوارهای را برای تمامی ساکنان کره زمین فراهم خواهد کرد.
کمپانی هوافضای معروف و موفق اسپیس ایکس (SpaceX) از مدتی پیش مشغول کار روی پروژه اینترنت استارلینک (Starlink) بوده که از طریق ماهوارههای متعددی در فضا، دسترسی به اینترنت را برای تمامی ساکنان زمین فراهم میکند. در همین رابطه، اخبار جالبی در مورد عملی شدن پروژه مورد نظر و دسترسی به این اینترنت ماهوارهای منتشر شده است.
اسپیس ایکس تاکنون بیش از ۶۰۰ ماهواره را برای پروژه استارلینک وارد مدار زمین کرده و اخبار جدید نشان میدهند که یک ورژن بتا و ابتدایی از اینترنت ماهوارهای اسپیس ایکس در همین تابستان، به صورت خصوصی و آزمایشی مورد استفاده قرار میگیرد.
فراتر از آزمایشهای داخلی، اینترنت استارلینک تاکنون توسط عموم مردم و یا علاقهمندان دیگر به کار گرفته نشده و با اینکه از مدتی پیش مشتریان این شبکه اینترنت ماهوارهای با کد زیپ مناطق سکونت خود در ثبتنامهای اسپیس ایکس در این رابطه شرکت کردهاند، همچنان سرویس پولی و قابل خریدی در اختیار مردم قرار نگرفته است.
با این وجود، بر اساس گزارشهای منتشر شده اسپیس ایکس در حال نزدیک شدن به بهرهبرداری عمومی از استارلینک بوده و اخیرا به تمامی کاربرانی که در گذشته با کد زیپ منطقه خود ثبت نام کرده بودند، ایمیلی برای درخواست اطلاعات مکانی بیشتر و جزئیات آدرس مشتریان آینده از طرف این کمپانی هوافضای خصوصی ارسال شده است. گفته شده که پس از موفقیت آزمایش ورژن بتای اینترنت استارلینک در این تابستان، یک ورژن بتای عمومی هم مورد آزمایش قرار خواهد گرفت و در صورت درست پیش رفتن اوضاع، اینترنت ماهوارهای اسپیس ایکس بخشی از زندگی روزمره ساکنان زمین خواهد شد.
https://www.slashgear.com/starlink-satellite-internet-beta-imminent-as-elon-musk-confirms-dish-details-15629132/
اینترنت استارلینک (Starlink) پروژهای جنجالی و شگفتانگیز از کمپانی هوافضای اسپیس ایکس بوده که به زودی اینترنت ماهوارهای را برای تمامی ساکنان کره زمین فراهم خواهد کرد.
کمپانی هوافضای معروف و موفق اسپیس ایکس (SpaceX) از مدتی پیش مشغول کار روی پروژه اینترنت استارلینک (Starlink) بوده که از طریق ماهوارههای متعددی در فضا، دسترسی به اینترنت را برای تمامی ساکنان زمین فراهم میکند. در همین رابطه، اخبار جالبی در مورد عملی شدن پروژه مورد نظر و دسترسی به این اینترنت ماهوارهای منتشر شده است.
اسپیس ایکس تاکنون بیش از ۶۰۰ ماهواره را برای پروژه استارلینک وارد مدار زمین کرده و اخبار جدید نشان میدهند که یک ورژن بتا و ابتدایی از اینترنت ماهوارهای اسپیس ایکس در همین تابستان، به صورت خصوصی و آزمایشی مورد استفاده قرار میگیرد.
فراتر از آزمایشهای داخلی، اینترنت استارلینک تاکنون توسط عموم مردم و یا علاقهمندان دیگر به کار گرفته نشده و با اینکه از مدتی پیش مشتریان این شبکه اینترنت ماهوارهای با کد زیپ مناطق سکونت خود در ثبتنامهای اسپیس ایکس در این رابطه شرکت کردهاند، همچنان سرویس پولی و قابل خریدی در اختیار مردم قرار نگرفته است.
با این وجود، بر اساس گزارشهای منتشر شده اسپیس ایکس در حال نزدیک شدن به بهرهبرداری عمومی از استارلینک بوده و اخیرا به تمامی کاربرانی که در گذشته با کد زیپ منطقه خود ثبت نام کرده بودند، ایمیلی برای درخواست اطلاعات مکانی بیشتر و جزئیات آدرس مشتریان آینده از طرف این کمپانی هوافضای خصوصی ارسال شده است. گفته شده که پس از موفقیت آزمایش ورژن بتای اینترنت استارلینک در این تابستان، یک ورژن بتای عمومی هم مورد آزمایش قرار خواهد گرفت و در صورت درست پیش رفتن اوضاع، اینترنت ماهوارهای اسپیس ایکس بخشی از زندگی روزمره ساکنان زمین خواهد شد.
https://www.slashgear.com/starlink-satellite-internet-beta-imminent-as-elon-musk-confirms-dish-details-15629132/
SlashGear
Starlink satellite internet beta imminent as Elon Musk confirms dish details
New details about SpaceX’s Starlink satellite internet service have emerged, with the company confirming that a private beta program is set to kick off this summer. Bypassing traditional wire…
از زمان معرفی NET Core 1.0.، به نظر میرسد که به کل اکوسیستم دات نت زندگی جدیدی اعطا شده است. این چارچوب احیا شد و اکنون با نسخه 3، به قدرتی تبدیل شده است که بتوان روی آن حساب کرد. بسیاری از فناوریها به این سطح از جلا، پایداری، بلوغ و سرعت دست پیدا نکرده اند. ایجاد یک فناوری انعطاف پذیر و در عین حال پایدار تقریبا کار برجسته ای است و این دقیقاً همان چیزی است که توسعه دهندگان ASP.NET Core به آن دست یافته اند.
مهمتر از همه، APIهای REST به دلیل تواناییشان در جدا کردن قسمتهای backend و frontend برنامه و امکان ارائه سرویس به هزاران کلاینت به طور همزمان، به یک استاندارد بالفعل در صنعت تبدیل شده اند. با انتشار هر نسخه جدیدی از این فریم ورک، محبوبیت بیشتری پیدا میکند، بنابراین دیگر هیچ زمانی مانند الان پیدا نمیشود تا از قافله عقب نمانید و ASP.NET Core Web API را به مهارتهای خود اضافه کنید.
https://www.ebooksworld.ir/post/index/681
مهمتر از همه، APIهای REST به دلیل تواناییشان در جدا کردن قسمتهای backend و frontend برنامه و امکان ارائه سرویس به هزاران کلاینت به طور همزمان، به یک استاندارد بالفعل در صنعت تبدیل شده اند. با انتشار هر نسخه جدیدی از این فریم ورک، محبوبیت بیشتری پیدا میکند، بنابراین دیگر هیچ زمانی مانند الان پیدا نمیشود تا از قافله عقب نمانید و ASP.NET Core Web API را به مهارتهای خود اضافه کنید.
https://www.ebooksworld.ir/post/index/681
مایکروسافت لانچر ۶.۰ با امکاناتی فراوان از راه رسید
مایکروسافت جدیدترین بیلد پیشنمایش Windows 10 Insider را منتشر کرد که میتواند بهبود تجربهی تنظیمات صوتی را به همراه داشته باشد. علاوه بر این بیلد جدید، شرکت ردموندی مایکروسافت خبر از تکمیل طراحی نهایی اپلیکیشن Microsoft Launcher داد و اکنون آمادهی استفادهی کاربران است.
پس از چندین بیلد آزمایشی، سرانجام مایکروسافت لانچر ۶.۰ در دسترس تمام کاربرانی که این اپلیکیشن را روی گوشی اندرویدی خود نصب کردهاند قرار گرفت. علیرغم تغییرات بدیهی ظاهری، مایکروسافت این لانچر را بر مبنای یک پایه کد جدید طراحی کرده است که به توسعه دهندگان اجازهی استفاده از قابلیتهایی بیشتر از گذشته را میدهد.
صحبت از قابلیتها شد، Microsoft Launcher 6.0 شامل یک تم تیره جدید است که به صورت پیشفرض با تنظیمات تم تیره اندروید سازگاری دارد. همچنین، یک بخش خوراک خبری جدید شخصیسازی شده نیز به کاربران کمک میکند از تمام اتفاقاتی که در سراسر جهان رخ میدهد، مطلع شوند.
این لانچر اندرویدی از حالت لنداسکیپ کامل نیز پشتیبانی میکند و میتوانید به طور کامل آیکونها را باب سلیقهی خودتان دربیاورید. در نهایت، لازم به ذکر است که نسخه جدید لانچر مایکروسافت سریعتر از گذشته شده، کمتر از حافظه دستگاه استفاده میکند و در استفاده از باتری نیز خساست به خرج میدهد.
در هر صورت، اگر قصد دانلود این لانچر را دارید، باید گوشی شما به اندروید ۷ یا بالاتر از آن مجهز باشد. همچنین برخی از قابلیتهای آن شاید فقط روی گوشیهای مجهز به اندروید ۸ یا بالاتر فعال باشد.
https://www.phonearena.com/news/Download-Microsoft-Launcher-6-Android_id125969
مایکروسافت جدیدترین بیلد پیشنمایش Windows 10 Insider را منتشر کرد که میتواند بهبود تجربهی تنظیمات صوتی را به همراه داشته باشد. علاوه بر این بیلد جدید، شرکت ردموندی مایکروسافت خبر از تکمیل طراحی نهایی اپلیکیشن Microsoft Launcher داد و اکنون آمادهی استفادهی کاربران است.
پس از چندین بیلد آزمایشی، سرانجام مایکروسافت لانچر ۶.۰ در دسترس تمام کاربرانی که این اپلیکیشن را روی گوشی اندرویدی خود نصب کردهاند قرار گرفت. علیرغم تغییرات بدیهی ظاهری، مایکروسافت این لانچر را بر مبنای یک پایه کد جدید طراحی کرده است که به توسعه دهندگان اجازهی استفاده از قابلیتهایی بیشتر از گذشته را میدهد.
صحبت از قابلیتها شد، Microsoft Launcher 6.0 شامل یک تم تیره جدید است که به صورت پیشفرض با تنظیمات تم تیره اندروید سازگاری دارد. همچنین، یک بخش خوراک خبری جدید شخصیسازی شده نیز به کاربران کمک میکند از تمام اتفاقاتی که در سراسر جهان رخ میدهد، مطلع شوند.
این لانچر اندرویدی از حالت لنداسکیپ کامل نیز پشتیبانی میکند و میتوانید به طور کامل آیکونها را باب سلیقهی خودتان دربیاورید. در نهایت، لازم به ذکر است که نسخه جدید لانچر مایکروسافت سریعتر از گذشته شده، کمتر از حافظه دستگاه استفاده میکند و در استفاده از باتری نیز خساست به خرج میدهد.
در هر صورت، اگر قصد دانلود این لانچر را دارید، باید گوشی شما به اندروید ۷ یا بالاتر از آن مجهز باشد. همچنین برخی از قابلیتهای آن شاید فقط روی گوشیهای مجهز به اندروید ۸ یا بالاتر فعال باشد.
https://www.phonearena.com/news/Download-Microsoft-Launcher-6-Android_id125969
Phone Arena
Microsoft Launcher 6.0 now rolling out to everyone, here is what's new
After numerous beta builds, Microsoft Launcher 6.0 is now rolling to everyone who already has the app installed on their Android devices.
زبان GraphQL یک زبان «منبع باز» (Open Source) برای «دستکاری» (Manipulation) و «پرس و جوی» (Query) دادهها در واسطهای برنامهنویسی کاربردی محسوب میشود. یکی از ویژگیهای مهم زبان GraphQL، فراهم آوردن قابلیت دستکاری و پرس و جوی دادهها در «زمان اجرا» (Run Time) است. زبان GraphQL، در سال 2012 توسط فیسبوک توسعه داده شد و در سال 2015 در دسترس عموم قرار گرفت. نکته مهم در مورد زبان GraphQL، افزایش علاقه برنامهنویسان به این زبان در چند سال اخیر است. چنین امری، زبان GraphQL را به یکی از ترندهای برنامهنویسی تبدیل کرده است.
#Technical_Debt #Software_Engineering #معرفی_سایت
❇بدهی فنی (Technical Debt) چیست؟
بدهی فنی یکی از موارد کلیدی در موفقیت تجاری نرمافزارهای توسعهدادهشده است. این اصطلاح توسط وارد کانیگهام در سال ۱۹۹۲ ابداع شد. او چنین چیزی گفت: «انتشار اولین کد مثل بدهکار شدن است. کمی بدهی، سرعت توسعه را بهبود میبخشد؛ به شرطی که در اولین فرصت با بازنویسی کد، تسویه شود... خطر زمانی رخ میدهد که تسویه نشود. هر دقیقه که صرف کد نامطلوب شود به عنوان بهره تلقی میشود. تمامی یک سازمان مهندسی میتواند تحت بار بدهی این کد نامستحکم، به حالت توقف کشانده شود.»
🔸تشبیه بدهی فنی ارتباط نزدیکی با بدهی مالی دارد و مربوط به انتشار سریع یک چیز و در نتیجه بدهکار شدن است. بعداً باید این بدهی را با بهبود کیفیت، تسویه کنید و اگر این کار را نکنید مجبور به پرداخت نرخ بهره هستید چون بهرهوری شما کاهش پیدا میکند و توسعهتان کند میشود.
🔹دلایل بدهی فنی:
- فشار زمانی
- استفاده از یک فناوری جدید برای نخستین بار بدون درک درست از آن
- طراحی اشتباه به دلیل نداشتن شناخت صحیح از نیازمندی های حوزه ی کسب وکار
- پوسیدگی نرمافزار
🔸اما بدهی فنی همیشه بد نیست. در واقع بدهی فنی یک راهبرد است. چون میتوانیم با بدهکار شدن به سرعت به هدف کسب و کار برسیم. بهتر است چیزی را سریع بنویسید و به کاربر برسانید و ببینید که آیا برای کسی مفید است؟ اگر برای کسی مفید است آن وقت است که بدهی فنی را پرداخت میکنیم. اگر کد بینقصی برای عملکردی که نمیدانیم مفید است یا نه بنویسیم هدر دادن زمان است.
🔹این ها بخشی از صحبت های سوِن یوهان و ابرهارد ولف در مورد بدهی فنی از مجموعه پادکست های صوتی سایت SE Radio است که توسط سایت https://se-topics.ir/ به خوبی ترجمه و در اختیار توسعه دهندگان فارسی زبان قرار داده شده است.
این سایت از جمله سایت های خوب فارسی در حوزه ی مهندسی نرم افزار است و به تهیه ترجمه از پادکستهای صوتی و تصویری از افراد خبره در این حوزه می پردازد. همچنین در صورت تمایل می توانید به جمع مترجمان این سایت بپیوندید و در ترجمه ی پادکست ها با این سایت همکاری داشته باشید تا مقاله تان با ذکر نام خودتان بر روی سایت قرار گیرد.
🔰متن کامل مقاله:
https://se-topics.ir/topicview?id=54
🔰مطالعه ی بیشتر در مورد بدهی فنی:
https://www.infoq.com/articles/managing-technical-debt
___
❇بدهی فنی (Technical Debt) چیست؟
بدهی فنی یکی از موارد کلیدی در موفقیت تجاری نرمافزارهای توسعهدادهشده است. این اصطلاح توسط وارد کانیگهام در سال ۱۹۹۲ ابداع شد. او چنین چیزی گفت: «انتشار اولین کد مثل بدهکار شدن است. کمی بدهی، سرعت توسعه را بهبود میبخشد؛ به شرطی که در اولین فرصت با بازنویسی کد، تسویه شود... خطر زمانی رخ میدهد که تسویه نشود. هر دقیقه که صرف کد نامطلوب شود به عنوان بهره تلقی میشود. تمامی یک سازمان مهندسی میتواند تحت بار بدهی این کد نامستحکم، به حالت توقف کشانده شود.»
🔸تشبیه بدهی فنی ارتباط نزدیکی با بدهی مالی دارد و مربوط به انتشار سریع یک چیز و در نتیجه بدهکار شدن است. بعداً باید این بدهی را با بهبود کیفیت، تسویه کنید و اگر این کار را نکنید مجبور به پرداخت نرخ بهره هستید چون بهرهوری شما کاهش پیدا میکند و توسعهتان کند میشود.
🔹دلایل بدهی فنی:
- فشار زمانی
- استفاده از یک فناوری جدید برای نخستین بار بدون درک درست از آن
- طراحی اشتباه به دلیل نداشتن شناخت صحیح از نیازمندی های حوزه ی کسب وکار
- پوسیدگی نرمافزار
🔸اما بدهی فنی همیشه بد نیست. در واقع بدهی فنی یک راهبرد است. چون میتوانیم با بدهکار شدن به سرعت به هدف کسب و کار برسیم. بهتر است چیزی را سریع بنویسید و به کاربر برسانید و ببینید که آیا برای کسی مفید است؟ اگر برای کسی مفید است آن وقت است که بدهی فنی را پرداخت میکنیم. اگر کد بینقصی برای عملکردی که نمیدانیم مفید است یا نه بنویسیم هدر دادن زمان است.
🔹این ها بخشی از صحبت های سوِن یوهان و ابرهارد ولف در مورد بدهی فنی از مجموعه پادکست های صوتی سایت SE Radio است که توسط سایت https://se-topics.ir/ به خوبی ترجمه و در اختیار توسعه دهندگان فارسی زبان قرار داده شده است.
این سایت از جمله سایت های خوب فارسی در حوزه ی مهندسی نرم افزار است و به تهیه ترجمه از پادکستهای صوتی و تصویری از افراد خبره در این حوزه می پردازد. همچنین در صورت تمایل می توانید به جمع مترجمان این سایت بپیوندید و در ترجمه ی پادکست ها با این سایت همکاری داشته باشید تا مقاله تان با ذکر نام خودتان بر روی سایت قرار گیرد.
🔰متن کامل مقاله:
https://se-topics.ir/topicview?id=54
🔰مطالعه ی بیشتر در مورد بدهی فنی:
https://www.infoq.com/articles/managing-technical-debt
___
InfoQ
Managing Technical Debt
Technical Debt is widely regarded as a bad thing that should be paid back as soon as possible, however it can be a strategy that helps balance short-term wins and long-term productivity. The article describes different ways that a project could pay back Technical…
❇️روش های Audit!
https://bit.ly/2RrXDJe
ثبت وقایع کاربران یا لاگ تاریچه عملیاتی که هر کاربر در سیستم انجام داده (مثلا چه شخصی چه زمانی چه چیزی رو insert کرده یا update کرده یا delete) بعضا در نرم افزار های بزرگ جز موارد مهم به حساب میاد
🔸روش های مختلفی واسه این کار وجود داره
1- مدیریت این کار از طریق تریگر روی دیتابیس
2- استفاده از روش های Interception
3- استفاده از ActionFilter توی MVC
4- سفارشی سازی متد SaveChanges در EF و استفاده از ChangeTracker
و...
در اینجا لیست گلچین شده ای از منابع مورد نیاز برای روش های 3 و 4 رو داریم
کتابخانه های اماده ای برای اینکار وجود داره :
1- https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework
2- https://entityframework-plus.net/audit
3- https://github.com/bilal-fazlani/tracker-enabled-dbcontext
اگه هم نیازتون رو برطرف نکرد میتونین خودتون پیاده سازی کنین که خیلی راحته (پیشنهاد میکنم حتما کدش رو بررسی کنید)
https://bit.ly/2Sxyv0T
اگه هم مثل روش بالا (لاگ تاریخچه تغییرات) مد نظرتون نیست و فقط لاگ تغییرات اخرین کاربر روی یک Entity با فیلد های InsertDate, UpdateDate, DeleteDate و... کفایت میکنه میتونین از کتابخونه زیر استفاده کنین
https://bit.ly/2RtGTRI
و باز هم اگر نیازتون رو برطرف نکرد، پیاده سازیش خیلی راحته
https://bit.ly/2CJOymE
یه روش دیگه هم از لاگ گیری فعالیت های کاربران توی Mvc هست که توسط ActionFilter بعد از هر اکشن ثبت میکنه کدوم کاربر با کدوم IP کدوم صفحه رو در چه زمانی درخواست کرده
1- https://bit.ly/1PyYOKi
2- https://bit.ly/1Sh3s4N
البته این موارد مربوط به EF6 و MVC5 هستند ولی مفهومشون توی EF Core / Asp Core یکیه و با انجام تغییرات نه چندان زیاد میتونین توی Core هم ازش استفاده کنین
___
https://bit.ly/2RrXDJe
ثبت وقایع کاربران یا لاگ تاریچه عملیاتی که هر کاربر در سیستم انجام داده (مثلا چه شخصی چه زمانی چه چیزی رو insert کرده یا update کرده یا delete) بعضا در نرم افزار های بزرگ جز موارد مهم به حساب میاد
🔸روش های مختلفی واسه این کار وجود داره
1- مدیریت این کار از طریق تریگر روی دیتابیس
2- استفاده از روش های Interception
3- استفاده از ActionFilter توی MVC
4- سفارشی سازی متد SaveChanges در EF و استفاده از ChangeTracker
و...
در اینجا لیست گلچین شده ای از منابع مورد نیاز برای روش های 3 و 4 رو داریم
کتابخانه های اماده ای برای اینکار وجود داره :
1- https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework
2- https://entityframework-plus.net/audit
3- https://github.com/bilal-fazlani/tracker-enabled-dbcontext
اگه هم نیازتون رو برطرف نکرد میتونین خودتون پیاده سازی کنین که خیلی راحته (پیشنهاد میکنم حتما کدش رو بررسی کنید)
https://bit.ly/2Sxyv0T
اگه هم مثل روش بالا (لاگ تاریخچه تغییرات) مد نظرتون نیست و فقط لاگ تغییرات اخرین کاربر روی یک Entity با فیلد های InsertDate, UpdateDate, DeleteDate و... کفایت میکنه میتونین از کتابخونه زیر استفاده کنین
https://bit.ly/2RtGTRI
و باز هم اگر نیازتون رو برطرف نکرد، پیاده سازیش خیلی راحته
https://bit.ly/2CJOymE
یه روش دیگه هم از لاگ گیری فعالیت های کاربران توی Mvc هست که توسط ActionFilter بعد از هر اکشن ثبت میکنه کدوم کاربر با کدوم IP کدوم صفحه رو در چه زمانی درخواست کرده
1- https://bit.ly/1PyYOKi
2- https://bit.ly/1Sh3s4N
البته این موارد مربوط به EF6 و MVC5 هستند ولی مفهومشون توی EF Core / Asp Core یکیه و با انجام تغییرات نه چندان زیاد میتونین توی Core هم ازش استفاده کنین
___
♨️اپل فیس آیدی را به دنیای مک میآورد
چندین سالی میشود که اپل فیس آیدی را جایگزین تاچ آیدی در آیفونهای خود کرده و آپید پرو نیز به این فناوری مجهز شده است. حالا ظاهرا باید منتظر ورود آن به دنیای مک باشیم.
در حال حاضر مک بوک خود را میتوانید توسط پسورد یا تاچ آیدی آنلاک کنید، اما اخیرا 9to5Mac به کدی در نسخه بتای سیستم عامل مک او اس Big Sur دست پیدا کرده که نشان میدهد فیس آیدی احتمالا در آینده وارد کامپیوترهای اپل میشود.
به نظر میرسد کد موجود در این سیستم عامل به اسم رمز اپل برای دوربین TrueDepth اشاره دارد. این دوربین باعث میشود کاربران به فیس آیدی در محصولاتی مانند گوشیهای سری آیفون ۱۱ و آیپد پرو دست پیدا کند، البته مکهای کنونی و همچنین نسل جدید آیفون SE از چنین قابلیتی محروم هستند. در این کد عبارتهای «FaceDetect» و «BioCapture» نیز به چشم میخورند که از تشخیص چهره بیومتریک خبر میدهد.
در صورتی که فناوری تشخیص چهره به دنیای مک راه پیدا کند، میتوان با استفاده از آن قفل دستگاه را باز کرد و نرم افزارهای واقعیت افزوده از چهره کاربر یک نقشه تهیه میکنند. فیس آیدی در مک بوکها میتواند کاربرد زیادی داشته باشد، مخصوصا اگر از نسخه جدید سافاری استفاده کنید.
https://dgto.ir/1rya
چندین سالی میشود که اپل فیس آیدی را جایگزین تاچ آیدی در آیفونهای خود کرده و آپید پرو نیز به این فناوری مجهز شده است. حالا ظاهرا باید منتظر ورود آن به دنیای مک باشیم.
در حال حاضر مک بوک خود را میتوانید توسط پسورد یا تاچ آیدی آنلاک کنید، اما اخیرا 9to5Mac به کدی در نسخه بتای سیستم عامل مک او اس Big Sur دست پیدا کرده که نشان میدهد فیس آیدی احتمالا در آینده وارد کامپیوترهای اپل میشود.
به نظر میرسد کد موجود در این سیستم عامل به اسم رمز اپل برای دوربین TrueDepth اشاره دارد. این دوربین باعث میشود کاربران به فیس آیدی در محصولاتی مانند گوشیهای سری آیفون ۱۱ و آیپد پرو دست پیدا کند، البته مکهای کنونی و همچنین نسل جدید آیفون SE از چنین قابلیتی محروم هستند. در این کد عبارتهای «FaceDetect» و «BioCapture» نیز به چشم میخورند که از تشخیص چهره بیومتریک خبر میدهد.
در صورتی که فناوری تشخیص چهره به دنیای مک راه پیدا کند، میتوان با استفاده از آن قفل دستگاه را باز کرد و نرم افزارهای واقعیت افزوده از چهره کاربر یک نقشه تهیه میکنند. فیس آیدی در مک بوکها میتواند کاربرد زیادی داشته باشد، مخصوصا اگر از نسخه جدید سافاری استفاده کنید.
https://dgto.ir/1rya
دیجیاتو
اپل فیس آیدی را به دنیای مک میآورد
چندین سالی میشود که اپل فیس آیدی را جایگزین تاچ آیدی در آیفونهای خود کرده و آپید پرو نیز به این فناوری مجهز شده است....
از یک فستفود در فاصله ی 10 کیلومتری پیتزا سفارش میدهید. اگر پیتزا از قبل آماده ارسال باشد و پیک هم با سرعت 100 کیلومتر بر ساعت حرکت کند حداقل 6 دقیقه طول میکشد تا پیتزا به دست شما برسد و 12 دقیقه طول میکشد تا فستفود از تحویل باخبر شود.
تاخیر یا Latency : مدت زمانی که طول میکشد داده از نقطه ی A به B برسد Latency گفته میشود. از آنجا که فاصله همیشه وجود دارد تاخیر اجتناب ناپذیز است.
پهنای باند یا Bandwidth: پیک هربار فقط می تواند 5 پیتزا با خود حمل کند. اگر شما 20 پیتزا سفارش دهید باید 4 بار رفت و آمد کند.
در سال 1996 آقای Stuart Cheshire مقاله ای منتشر کرد با عنوان "Its latency stupid" و در آن مشکل شبکه های اینترنتی را Latency دانست و نه پهنای باند. همیشه میشود پهنای باند را افزایش داده اما نمی توان تاخیر زمانی بین دو نقطه را از بین برد.حتی اگر داده با سرعت نور حرکت کند همیشه تاخیر وجود دارد.
مشکل Latency چالش اصلی سرویس های Real-time مانند بازیهای آنلاین است. برای کاهش آن میتوان از سروری که در موقعیت فیزیکی نزدیک تری دارد استفاده کرد.
تاخیر یا Latency : مدت زمانی که طول میکشد داده از نقطه ی A به B برسد Latency گفته میشود. از آنجا که فاصله همیشه وجود دارد تاخیر اجتناب ناپذیز است.
پهنای باند یا Bandwidth: پیک هربار فقط می تواند 5 پیتزا با خود حمل کند. اگر شما 20 پیتزا سفارش دهید باید 4 بار رفت و آمد کند.
در سال 1996 آقای Stuart Cheshire مقاله ای منتشر کرد با عنوان "Its latency stupid" و در آن مشکل شبکه های اینترنتی را Latency دانست و نه پهنای باند. همیشه میشود پهنای باند را افزایش داده اما نمی توان تاخیر زمانی بین دو نقطه را از بین برد.حتی اگر داده با سرعت نور حرکت کند همیشه تاخیر وجود دارد.
مشکل Latency چالش اصلی سرویس های Real-time مانند بازیهای آنلاین است. برای کاهش آن میتوان از سروری که در موقعیت فیزیکی نزدیک تری دارد استفاده کرد.
قابلیت Nearby Share گوگل از مرداد در دسترس کاربران اندروید قرار میگیرد
قابلیت Nearby Share گوگل مشابه ایر دراپ در آی او اس، به کاربران اجازه به اشتراک گذاری فایلها میان دو گوشی اندرویدی را میدهد و حالا تاریخ عرضه احتمالی آن مشخص شده است.
به نظر میرسد که گوگل در مراحل پایانی تست و بررسی قابلیت به اشتراک گذاری Nearby Share قرار دارد و فاصله چندانی با انتشار نسخه نهایی آن نداریم. منابع خبری مطلع از این ویژگی، ارتباطی با مقامات رسمی گوگل ندارند اما صحبتها پیرامون این قابلیت به تازگی افزایش یافته و حالا ما بازهی زمانی احتمالی که قرار است این ویژگی جدید در اختیار کاربران اندروید قرار بگیرد را میدانیم.
طبق این گزارش قرار است از شروع ماه آگوست یعنی از اواسط مرداد ماه، کاربرانی که دارای گوشی های اندروید ۶ و بالاتر هستند، قادر به استفاده از آن باشند و اضافه شدن پشتیبانی از این ویژگی از طریق یک آپدیت انجام میگیرد. پیش از این نیز در مراحل تست نسخه بتای قابلیت Nearby Share گوگل، حداقل ورژن سیستم عامل برای پشتیبانی از این قابلیت به همین شکل اعلام شده بود و این احتمال حقیقی بودن گزارش را بالاتر میبرد.
مراحل تست نسخه بتا هنوز هم ادامه دارد و مدلهایی که از آن پشتیبانی میکنند، با دریافت یک نسخه بتا از سرویسهای گوگل پلی میتوانند آن را دریافت کنند. برخلاف دیگر ویژگیهای سطح پایین اندروید که بخشی از خود سیستم عامل به شمار میروند، قابلیت Nearby Share گوگل بخشی از فریم ورک محسوب میشود و به همین دلیل منطقی خواهد بود که تمام کاربران اندروید ۶ و نسخههای بعدی این سیستم عامل به راحتی از طریق یک پکیج بروزرسانی درون فروشگاه گوگل پلی، بتوانند آن را دریافت کنند.
https://www.gsmarena.com/google_nearby_share_could_be_coming_to_most_android_users_starting_august-news-44338.php
قابلیت Nearby Share گوگل مشابه ایر دراپ در آی او اس، به کاربران اجازه به اشتراک گذاری فایلها میان دو گوشی اندرویدی را میدهد و حالا تاریخ عرضه احتمالی آن مشخص شده است.
به نظر میرسد که گوگل در مراحل پایانی تست و بررسی قابلیت به اشتراک گذاری Nearby Share قرار دارد و فاصله چندانی با انتشار نسخه نهایی آن نداریم. منابع خبری مطلع از این ویژگی، ارتباطی با مقامات رسمی گوگل ندارند اما صحبتها پیرامون این قابلیت به تازگی افزایش یافته و حالا ما بازهی زمانی احتمالی که قرار است این ویژگی جدید در اختیار کاربران اندروید قرار بگیرد را میدانیم.
طبق این گزارش قرار است از شروع ماه آگوست یعنی از اواسط مرداد ماه، کاربرانی که دارای گوشی های اندروید ۶ و بالاتر هستند، قادر به استفاده از آن باشند و اضافه شدن پشتیبانی از این ویژگی از طریق یک آپدیت انجام میگیرد. پیش از این نیز در مراحل تست نسخه بتای قابلیت Nearby Share گوگل، حداقل ورژن سیستم عامل برای پشتیبانی از این قابلیت به همین شکل اعلام شده بود و این احتمال حقیقی بودن گزارش را بالاتر میبرد.
مراحل تست نسخه بتا هنوز هم ادامه دارد و مدلهایی که از آن پشتیبانی میکنند، با دریافت یک نسخه بتا از سرویسهای گوگل پلی میتوانند آن را دریافت کنند. برخلاف دیگر ویژگیهای سطح پایین اندروید که بخشی از خود سیستم عامل به شمار میروند، قابلیت Nearby Share گوگل بخشی از فریم ورک محسوب میشود و به همین دلیل منطقی خواهد بود که تمام کاربران اندروید ۶ و نسخههای بعدی این سیستم عامل به راحتی از طریق یک پکیج بروزرسانی درون فروشگاه گوگل پلی، بتوانند آن را دریافت کنند.
https://www.gsmarena.com/google_nearby_share_could_be_coming_to_most_android_users_starting_august-news-44338.php
GSMArena
Google Nearby Share could be coming to most Android users starting August
Support for Windows, macOS, Linux and ChromeOS are also on the roadmap.
هکرها اطلاعات ۷.۵ میلیون کاربر اپ بانکی دیجیتال «Dave» را در یک فروم عمومی منتشر کردند، اقدامی که باعث شده سازنده این برنامه، نقص امنیتی آن را تایید کند.
به گزارش ZDNet، این نقص امنیتی در حقیقت به شبکه شریک تجاری سابق آن، «Waydev» که یک پلتفرم تحلیلی مورد استفاده توسط تیمهای مهندسی است، مربوط میشود. سخنگوی Dave اعلام کرده:
«به علت رخنه امنیتی در Waydev، یکی از تامینکنندگان خدمات شخص ثالث سابق Dave، هکرها به برخی اطلاعات کاربران به صورت غیرمجاز دسترسی پیدا کردند.»
به گفته این کمپانی، هم اکنون هکرها به شبکه دسترسی ندارند و به کاربران قربانی نیز اطلاع داده شده است. پسوردهای اپلیکیشن Dave پس از اینکه در معرض خطر قرار گرفتند، ریست شدند:
«هنگامی که متوجه چنین موضوعی شدیم، به سرعت تحقیق درباره آن را آغاز کردیم و هم اکنون این پرونده با هماهنگی مقامات قانونی شامل FBI در جریان است. هکرها توانستهاند به برخی پسوردها دست پیدا کنند و بدنبال فروش اطلاعات مشتریان هستند.»
هم اکنون اطلاعات کاربران اپ بانکی Dave به صورت رایگان در دسترس قرار دارند و میتوان آنها را دانلود کرد، البته باید ابتدا عضو این فروم شد. این دیتا شامل اطلاعاتی مانند نام واقعی، شماره تلفن، ایمیل، تاریخ تولد و آدرس خانه میشود و در برخی آنها اطلاعات پرداخت و شماره تامین اجتماعی نیز به چشم میخورند که البته رمزگذاری شدهاند.
https://www.zdnet.com/article/tech-unicorn-dave-admits-to-security-breach-impacting-7-5-million-users/
به گزارش ZDNet، این نقص امنیتی در حقیقت به شبکه شریک تجاری سابق آن، «Waydev» که یک پلتفرم تحلیلی مورد استفاده توسط تیمهای مهندسی است، مربوط میشود. سخنگوی Dave اعلام کرده:
«به علت رخنه امنیتی در Waydev، یکی از تامینکنندگان خدمات شخص ثالث سابق Dave، هکرها به برخی اطلاعات کاربران به صورت غیرمجاز دسترسی پیدا کردند.»
به گفته این کمپانی، هم اکنون هکرها به شبکه دسترسی ندارند و به کاربران قربانی نیز اطلاع داده شده است. پسوردهای اپلیکیشن Dave پس از اینکه در معرض خطر قرار گرفتند، ریست شدند:
«هنگامی که متوجه چنین موضوعی شدیم، به سرعت تحقیق درباره آن را آغاز کردیم و هم اکنون این پرونده با هماهنگی مقامات قانونی شامل FBI در جریان است. هکرها توانستهاند به برخی پسوردها دست پیدا کنند و بدنبال فروش اطلاعات مشتریان هستند.»
هم اکنون اطلاعات کاربران اپ بانکی Dave به صورت رایگان در دسترس قرار دارند و میتوان آنها را دانلود کرد، البته باید ابتدا عضو این فروم شد. این دیتا شامل اطلاعاتی مانند نام واقعی، شماره تلفن، ایمیل، تاریخ تولد و آدرس خانه میشود و در برخی آنها اطلاعات پرداخت و شماره تامین اجتماعی نیز به چشم میخورند که البته رمزگذاری شدهاند.
https://www.zdnet.com/article/tech-unicorn-dave-admits-to-security-breach-impacting-7-5-million-users/
ZDNet
Tech unicorn Dave admits to security breach impacting 7.5 million users
Dave user data is now available for download on a public hacking forum.
✅ حرفه ای ترین سلوشن 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
_________