Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
🔰 بررسی تغییرات جدید NET Core 3.0 Preview 5

توی این نسخه که همزمان با کنفرانس Microsoft Build 2019 منتشر شد شاهد تغییرات کم ولی مهمی هستیم.

🔸بهبود های WPF و Windows Forms
توی این نسخه پرفرمنس Startup (اجرای اولیه) این دو تکنولوژی به لطف قابلیتی به نام AOT Compilation افزایش پیدا کرده

ما 2 روش کامپایل داریم:
یکی حالت معمولی که کد رو به یک زبان میانی (توی دات نت بهش IL یا CIL هم میگن) کامپایل میکنه، در واقع DLL های خروجی پروژه ها شامل کد های IL یا همون Intermediate Language هستند و توسط Just-In-Time (به اختصار JIT) اجرا میشن

روش دوم که پرفرمنس خیلی بیشتری داره اسمش هست Ahead-Of-Time (یا به اختصار AOT) که کد ها رو نه به یک زبان میانی، بلکه مستقیما به کد ماشین (Native) تبدیل میکنه
در این روش کد ها مستقیما بر روی سیستم عامل اجرا میشن و شامل کد های Optimize شده برای همون سیستم عامل هستند

حالا یه چیز جدیدی به نام Runtime دیگه برای NET Core هم هست به نام CoreRT که برای همین AOT Compilation کاربرد داره و دیگه نهایت سرعته و قراره به عنوان بخشی از NET 5. منتشر بشه. [بعدا در موردش صحبت خواهیم کرد]

🔹بهبود های کلاس SqlClient
این کلاس، جز کلاس های پایه ADO.NET هست و کارش دسترسی به دیتابیس SQL Server هست و توی ORM ها از جمله EF/EF Core و Dapper هم از همین کلاس استفاده شده

این کلاس جز کلاس های پایه NET Framework و Core بوده (داخل اسمبلی System.Data.dll) و به صورت Package جدا گانه نیست به همین خاطر هر موقع فیچر های جدیدی بهش اضافه میشد باید صبر میکردیم تا آپدیت جدید دات نت بیاد تا بتونیم ازش استفاده کنیم

ولی الان ماکروسافت اون رو به یه پکیج جداگانه به نام Microsoft.Data.SqlClient منتقل کرده تا بتونه سریع تر براش آپدیت بده. همین الان بهبود هایی بهش اضافه شده و قراره در کنار توسعه دات نت کور، این پکیچ هم توسعه و بهبود داده بشه

کلاس قبلی (System.Data.SqlClient) قرار نیست حذف بشه و بروزرسانی های مهم رو دریافت خواهد کرد پس نگران تغییر نباشید ولی برای استفاده از کلاس جدید :
اگه از این کلاس به صورت مستقم (به روش ADO.NET) استفاده کردید به راحتی با نصب این پکیج و تغییر به namespace مورد نظر میتونین ازش استفاده کنین ولی اگه از ORM هایی مثل EF Core یا Dapper استفاده میکنین باید صبر کنین تا این ORM ها هم از این پکیج جدید استفاده کنن

🔸پابلیش تک فایلی یا (Single EXEs)
از این پس میتونین خروجی پروژه هاتون رو به صورت یک فایل تکی پابلیش بگیرید. دیگه لازم نیست کلی فایل رو توی سیستم مشتری کپی کنین
این فایل به صورت self-extracting خواهد بود و تمام DLL ها و فایل های مورد نیازش (Dependencies) رو داخل خودش Embed کرده و موقع اجرا، فایل ها رو تو یه مسیر Temp کپی میکنه و Load شون میکنه

🔹بهبود های JSON Serializer
قبلا در مورد JSON Serializer داخلی فوق سریع توی NET Core 3.0 Preview 2 صحبت کردیم. اینبار اما یه سری بهبود و تغییرات دیزاینی تو پیاده سازیش داشته که خیلی کاربردی نیست پس ازش میگذریم [اطلاعات بیشتر]

🔸تغییرات Index و Range
توی سی شارپ 8 شاهد قابلیت جدید و باحالی به نام index و range بودیم که توی NET Core 3 هم کم کم پیاده سازی شد ولی الان ماکروسافت تصمیم گرفته بر اساس فیدبک های کامیونتی یه سری تغییر در این رابطه انجام بده
این تغییرات و مثال هاش کمی طولانیه و اینجا جا نمیشه. [اطلاعات بیشتر]

🔹تغییرات دیگه ای هم بوده که زیاد مهم نیستند یا خیلی تخصصی اند
اطلاعات بیشتر :
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-0-preview-5/
_______________
@IranAspMvc
Forwarded from فلسفه دیزاین
که آسان می‌نمود اول ولی …

انتقال از مرحله دیزاین به مرحله توسعه نقطه عطفی در روند پیشبرد هر پروژه است. کلید موفقیت این انتقال، ارتباط و هماهنگی بین دیزاینر و توسعه‌دهندگان است که در اغلب موارد یکی از چالش‌های اصلی هر تیم فعال در این زمینه است.

در این انتقال عدم ارتباط و بدفهمی در نیت طراحی را می‌توان از مشکلات شناخته شده‌ای دانست که باعث ایجاد استرس‌های بی‌مورد در تمامی اعضای تیم می‌شود.

حال این سوال مطرح می‌شود که یک دیزاینر چه کاری می‌تواند انجام دهد تا این انتقال هر چه سریع‌تر و باکیفیت‌تر صورت گیرد؟ یا بطور کلی چه مواردی را در این انتقال باید در نظر بگیرد.

هنگامی که طرحی به توسعه‌دهنده تحویل داده ‌می‌شود، چندین لایه اطلاعاتی وجود دارد که باید منتقل شود. علاوه بر Mockups و Specs ،Assets، باید Interactions، Copy و Checklist را نیز به اشتراک گذاشت. تمامی این اطلاعات زوایای مختلفی از راهکار دیزاین شده را به توسعه‌دهنده نشان می‌دهد. تمامی این موارد را در قالب یک مستند می‌توان “Design Handoff Document" نامید. این مستند جامع و کاملی‌ست از اطلاعات و عناصری که به توسعه‌دهنده‌ها در تحلیل و فهم درست دیزاین کمک کرده، همچنین باعث تسریع در کار آن‌ها می‌شود. که این اتفاق کیفیت توسعه و برنامه‌نویسی را ارتقا می‌بخشد.

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

مقاله امروز را از دست ندهید:

http://bit.ly/dxgn496

(زمان حدودی مطالعه، ۱۰ دقیقه)

نویسنده: نیما حکیم‌رابط

#Handoff #تعامل #توسعه
@Dexign فلسفه دیزاین


ــــــــ
خرمشهر را اسکات هانسلمن آزاد کرد!!

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

خرمشهر در فارسی یعنی شهری که همه در اون خوش و خرم هستند و در ادبیات تاریخی ما نماد جایی هست که به زور می‌خواستند بگیرنش، بی شباهت به گیت‌هاب نیست!

خبر جذذاب (با تو تا ذ!) این بود که اسکات هانسلمن امروز فارسی توییت کرد «خسته نباشید!» اما چه ربطی داره!؟

ظاهرا تعداد زیادی برنامه‌نویس ایرانی که در توییتر با اسکات هانسلمن در این مورد صحبت کردن باعث شدن که صحبتی بین اسکات و «نات فریمن» مدیر عامل گیت‌هاب شکل بگیره و در حال حاضر این امکان فراهم شده که برنامه‌نویسانی که ریپازیتوری خصوصی داشتن بتونن پابلیکش کنن و به کدهاشون دسترسی پیدا کنن.

نات فریمن در توییتی توضیح داده که: «فعلا تونستیم کاری کنیم که افراد بتونن ریپازیتوری‌هاشون رو پابلیک کنن تا بهش دسترسی داشته باشن، طبق فهم ما از قانون فعلا نمی‌تونیم کار بیشتری کنیم...» و در توییتی دیگه نوشته: «ما این کار رو نکردیم چون می‌خواستیم، این کار رو کردیم چون مجبور شدیم...»

و در آخر اینکه لامصب اسکات هانسلمن، فارسی هم می‌خواد صحبت کنه فلوئنت صحبت می‌کنه!

لینک توییت‌های ذکر شده:

https://twitter.com/shanselman/status/1155240674301624321
https://twitter.com/natfriedman/status/1155311124687945728
https://twitter.com/natfriedman/status/1155311125967171585
https://twitter.com/mehrandvd/status/1155385194657935360

#مهران_داودی (http://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy


⁉️ برای بحث و تبادل نظر فنی در مورد این پست، دکمه پایین را بزنید. 👇👇
#پست_مجدد این پست تا به حال بیش از ۳۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
با ایجاد هر تکنولوژی در دنیای نرم افزار ، انبوهی از قابلیت‌های جدید ایجاد می‌شود که به توسعه دهندگان این امکان را می‌دهند تا برنامه‌هایی با قابلیت‌های بالا و کد کمتر ایجاد کنند . در لینک زیر 20 کتابخانه مبتنی بر .netcore معرفی شده است که هر برنامه نویسی ممکن است به آنها نیاز داشته باشد.

https://codinginfinite.com/best-top-dot-net-core-useful-libraries-open-source/

#شهریار_انتظام (http://ow.ly/qDN430nPiCg)

کانال تلگرام:
@SoftwarePhilosophy

___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
معرفی ML.NET 1.0

🔸همزمان با کنفرانس Microsoft Build نسخه 1.0 ML.NET منتشر شد. ML.NET فریمورک سورس باز و کراس پلتفرم برای یادگیری ماشین مخصوص دات نت هست.

🔹توسط ML.NET میتونین به زبان های C# و F# برای سناریو های مختلفی از جمله تجزیه و تحلیل احساسات، طبقه بندی متون، تشخیص آنومالی (ناهنجاری)، پیش بینی و تخمین، سیستم های توصیه گر (recommendations) و... برنامه های مدل سازی یادگیری ماشین چند سکویی (قابل اجرا بر روی Linux, Mac و Windows) ایجاد کنید.
مثال های کار با ML.NET رو میتونین در ریپازیتوری زیر مشاهده کنین
https://github.com/dotnet/machinelearning-samples

🔸این فریمورک توسط واحد تحقیقاتی ماکروسافت توسعه داده شده و هم اکنون در برنامه های مختلفی از جمله Windows ،Azure ،Bing, Office, PowerBI و نیز سازمان های مختلفی داره استفاده میشه

🔹همچنین قابلیت انعطاف پذیری و گسترش پذیری بالایی داشته و ازفریمورک های مطرح دیگه مانند TensorFlow و Accord.Net و ONNX (فرمت مدل های یادگیری عمیق) پشتیبانی میکنه

🔸از مزایای این فریمورک میتوان به موارد زیر اشاره کرد
- قابلیت AutoML : که وظیفه آن انتخاب هوشمند الگوریتم و ساده/هوشمند سازی فرایند مدل سازی هست
- ابزار Model Builder : یک ابزار UI برای ساخت مدل های ML توسط AutoML
- ابزار ML.NET CLI : یک ابزار command line برای کار با ML.NET و AutoML

اطلاعات بیشتر :
https://devblogs.microsoft.com/dotnet/announcing-ml-net-1-0/

https://devblogs.microsoft.com/cesardelatorre/what-is-ml-net-1-0-machine-learning-for-net/
_______________
@IranAspMvc
#پست_مجدد این پست تا به حال بیش از ۲۵۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
و بالاخره... اینم از سخنرانی تدکس من: «پروژه یک من جدید!».
تو تدکس در مورد نرون‌های آینه‌ای صحبت کردم و اینکه چطور این قسمت عجیب از مغز می‌تونه کمک کنه کارهای عجیبی رو انجام بدیم. کارهایی که به نظر خیلی نشدنی میان!

یکی از چیزهایی که انتقالش خیلی سخته، انتقال درده! خیلی سخته یه یکی توضیح بدی چطور درد می‌کنه! یه مفهوم بی‌ربط دیگه هم هست که به نظر همینقدر سخته: انتقال مهارت‌های کار تیمی! تو این TEDx Talk توضیح دادم که چطور یه قسمت از مغزمون به نام Mirror Neurons (که خیلی هم غافلیم ازش) می‌تونه کمک کنه این کارهای خیلی سخت رو، به حتی بدون صحبت کردن انجام بدیم!

یه قسمت از کلیپ هست که پام با محکککم می‌خوره به یه صندلی که تو صحنه هست که تو فیلم خیلی واضح نیفتاده. این رو گفتم که اون وسط نگین چی شد یه هو!

لینک ویدئوی کامل در صفحه رسمی تدکس در یوتیوب: https://www.youtube.com/watch?v=DfTuWdPV6JU

در صورت باز نشدن، این ویدئو در آپارات هم آپلود شده.
Forwarded from فلسفه دیزاین
نکته‌هایی درباره ارائه بهتر

به عنوان یک دیزاینر، در هر سطحی که باشید، یک روزی احساس نیاز به ارائه کارهایتان به افراد تیم، مدیرتان یا صاحب آن کسب‌وکار پیدا می‌کنید. چه موضوع ارائه شما روند طراحی یک باتن باشد و چه روند طراحی UX یک پروژه بین‌المللی، شما باید پیامتان را به بهترین وجه ممکن برسانید.

طبیعتا ساده‌ترین گزینه ممکن این است که از اول مسیر، شروع کنید با نرم‌افزار مورد علاقه‌تان به طراحی اسلاید‌ها. اما این یکی از اشتباه‌ترین کارهای ممکن در مساله طراحی یک پرزنتیشن می‌باشد.
جالب است بدانید پرزنتیشن‌ها هم پروژه‌های مخصوص به خودشان هستند، نیاز به تفکر زیاد، اسکچ روی کاغذ و حتی پروتوتایپ دارند. یادمان نرود که در هر حالت هدف ما به عنوان دیزاینر، انتقال درست مفاهیم به مخاطب است.

مقاله‌ای که امروز برای شما آماده کردیم، درباره روش طراحی پرزنتیشنی موثر و زیباست. خانوم «Sierre Wolfkostin» »، طراح محصول در کمپانی Domino’s از چالش‌هایی که یک طراح باید برای طراحی یک پرزنتیشن با آنها دست و پنجه نرم‌کند می‌گوید. عواملی مانند «ایده‌پردازی» ، «ساخت پروتوتایپ» ، «تست پرزنتیشن»، «دریافت بازخورد‌ها» و تکرار دوباره تمام این مراحل تا رسیدن به بهترین نتیجه ممکن.

حالا چگونه باید پرزنتیشن‌های خود را ارزیابی کنیم؟
طبیعتا یکی از مهم‌ترین بخش‌های یک پرزنتیشن، مخاطبان آن هستند، و هدف یک پرزنتیشن، رساندن یک یا چند پیام مهم به مخاطبان می‌باشد.
از عوامل مهمی که در طراحی و ارائه یک پرزنتیشن باید مورد توجه باشد می‌توان به موراد زیر اشاره کرد:

۱- داستانی جذاب تعریف کنید. حتی اگر موضوع پرزنتیشن درباره یک مساله درون‌سازمانی خسته‌کننده باشد.

۲- روی اسلاید‌ها، شروع خوبی داشته باشید، محصول یا موضوع خود را درست و محکم معرفی کنید.

۳- با کمک اسلایدها و قدرت کلام، به مخاطبانتان بفهمانید چرا راه‌حلی که در دست دارید، یا محصولی که طراحی کردید، برای کسب‌وکار آن‌ها مهم است؟

۴- درباره روندی که تا به امروز طی کردید تا به این راه‌حل رسیدید کاملا توضیح بدهید.

۵- یک پروتوتایپ آماده کنید و ارائه کنید.

۶- و در آخر حتما تاکید داشته باشید موردی که درباره‌اش صحبت می‌کنید چرا برای رونق کسب‌وکار آن‌ها مهم است و چه ارزشی برای بهبود کیفتش دارد.

این مقاله را از دست ندهید:

http://bit.ly/dxgn502

(زمان حدودی مطالعه، ۸ دقیقه)

نویسنده: آرش اصغری

@Dexign فلسفه دیزاین

#تجربه_کاربری #ارائه #پرزنتیشن

ـــــــ
آیا شما با Git کار می‌کنید؟

آیا کد شما Commit شده اما Push نشده است؟

آیا کد در یک Branch مشترک Push شده است؟

آیا یک Merge اشتباها Push شده است؟

احتمالا با خواندن مقاله زیر مشکل‌تان برطرف می‌شود:

https://dev.to/vorahsa/fixing-mistakes-with-git-27a5


#شهریار_انتظام (http://ow.ly/qDN430nPiCg)

کانال تلگرام:
@SoftwarePhilosophy

___
#پست_مجدد این پست تا به حال بیش از ۴۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
با ایجاد هر تکنولوژی در دنیای نرم افزار ، انبوهی از قابلیت‌های جدید ایجاد می‌شود که به توسعه دهندگان این امکان را می‌دهند تا برنامه‌هایی با قابلیت‌های بالا و کد کمتر ایجاد کنند . در لینک زیر 20 کتابخانه مبتنی بر .netcore معرفی شده است که هر برنامه نویسی ممکن است به آنها نیاز داشته باشد.

https://codinginfinite.com/best-top-dot-net-core-useful-libraries-open-source/

#شهریار_انتظام (http://ow.ly/qDN430nPiCg)

کانال تلگرام:
@SoftwarePhilosophy

___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
🔰 معرفی Deno.js (شاید جایگزین Nodejs !)

سال قبل در کنفرانس JSConf 2018 خالق Nodejs از ساخت آن اظهار پشیمانی کرد و در مورد تعدادی از مشکلات آن ارائه داشت
https://www.youtube.com/watch?reload=9&v=M3BM9TB-8yA

سپس ماه قبل در کنفرانس JS Fest 2019، محصول جدیدی به نام Deno.js را ارائه کرد که مشابه Nodejs یک Runtime جاوااسکریپت بر فراز موتور V8 کروم است ولی با زبان های Rust و TypeScript نوشته شده‌است.
https://github.com/denoland/deno
https://deno.land/
_______________
@IranAspMvc
Forwarded from Iran Agile
تجربه و نمونه عملی پیاده سازی اسکرام گسترده با چارچوب LeSS در صنعت بیمه آلمان

http://bit.ly/2M2YqxQ

@iranagile
Forwarded from فلسفه دیزاین
۱۰ قدم تا طراحی تعاملی بهتر

برای رسیدن به یک هدف، ابتدا لازم است آن هدف را بشناسیم. برای برقراری ارتباط بهتر بین یک محصول و انسان، نیازمند روشی از طراحی به نام طراحی تعاملی (Interaction Design) هستیم.

اجازه بدهید موضوع را به این شکل توضیح دهم، یک صندلی اداری را در نظر بگیرید:

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

دونالد نورمن، پروفوسور و نویسنده‌ی کتاب The Design of Everyday Things برای حالت اوّل عنوان Affordance را آورده که به معنای چیزهایی که اشیاء، قابلیت انجام آن را دارند؛ و برای حالت دوّم نام Signifier می‌آورد به معنای چیزهایی که اشیاء، وظیفه‌ی انجام آن را دارند.

طراحی تعاملی یعنی همین دقّت و ریزبینی‌هایی که طراحان تعاملی در کوشش ساخت آن هستند؛ یعنی شناخت انواع یک رابطه و ایجاد یک نوع معنادار آن بین محصول و انسان. این مهم، نیازمند ساختار و رفتار ویژه‌‌ای است که در مقاله‌ی امروز به بررسی قدم به قدم آن می‌پردازیم.

روشی در دنیای دیزاین که نه تنها دنیای کاری شما را متحول می‌کند بلکه زندگی شخصیتان نیز پیشرفت قابل توجّهی خواهد کرد.

http://bit.ly/dxgn506

نویسنده: حسین میرزاده

#طراحی_تعاملی #روش_شناسی #دونالد_نورمن
@Dexign فلسفه دیزاین

___
Software Philosophy
Photo
یکی از کارهای جذذابی (با دو تا ذ) که اخیرا شروع کردم طراحی این دو تا دوره‌ست:

- آموزش زبان فنی برای تیم‌های بیزنسی.
- آموزش زبان بیزنس برای تیم‌های فنی.


یکی از مشکلات اغلب افرادی که استارتاپ دارن، شرکت دارن و یا تو تیمی هستن که با تیم‌های فنی کار می‌کنه، اینه که زبان مشترکی با تیم‌های فنی ندارن. اصطلاحاتی می‌شنون که ارتباطش رو با موضوع متوجه نمی‌شن. برای همین همیشه حس ابهام یا حس‌های دیگه نسبت به کار با تیم‌های فنی دارن.

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

اگر یک بیزنسی هستین و با تیم‌های فنی کار می‌کنین، این دوره تجربه خیلی جذذابی براتون خواهد بود و مطمئنا به پرفورمنس تیمتون خیلی کمک می‌کنه.

از طرف دیگه، اگر یک برنامه‌نویس هستید، مطمئن باشید که دنیای بیزنس برای ما برنامه‌نویسان یک دنیای جذاب و ناشناخته است. دنیایی که که با ادبیاتش آشنا بشیم، ساخت محصول و کار کردن با تیم‌های بیزنسی، عوض شدن زمان‌ها، نیازمندی‌ها و خیلی چیزهای دیگه معنی‌دار می‌شه و کمک می‌کنه بتونیم به اتفاق هم راه‌حل‌های بهتری برای مسائل بیزنسی پیدا کنیم. این کاری هست که دوره دوم قراره انجام بده.


اگر یک بیزنسی هستید که دوست دارین زبان تیم‌های فنی رو بهتر یاد بگیرید،
اگر یک برنامه‌نویس هستید که دوست دارین زبان بیزنسی رو بهتر یاد بگیرید،

👈 برای اطلاعات بیشتر و رزرو در دوره با شماره 021-88677808 تماس بگیرید و یا از طریق دایرکت اینستاگرام در تماس باشید:

Instagram.com/tehranmarketing_school


#مهران_داودی (http://ow.ly/GwIl309lFEm)

کانال تلگرام:
@SoftwarePhilosophy

____
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
حرفه ای ترین سلوشن Logging در NETCore. با استفاده از Serilog و ElasticSearch و Kibana
#PerformanceTuning
کتابخانه های مختلفی برای لاگ کردن خطا ها در دات نت وجود داره، از جمله Elmah، NLog, Log4net و ...
کتابخانه Elmah بهترین انتخاب برای پروژه های کوچک و متوسطه، کار باهاش راحته و پنل ساده ای هم داره، ولی توی پروژه های بزرگ که تعداد لاگ ها خیلی زیاد میشه، دیگه Elmah جوابگو نیست، هم به خاطر سرعت کمش نسبت به بقیه کتابخانه ها و هم به خاطر پنل ضعیف اش که حتی یه سرچ هم نداره
در این شرایط راه های مختلفی هست مثل استفاده از سرویس های نگهداری لاگ Cloud-based مثل setry.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
___________
@IranAspMvc
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
شاید برای شما هم تا کنون پیش آمده باشد که در یک وب سایت با اشکال هندسی روبرو شوید که در #CSS تولید شده اند، یا حتی بخواهید در وب سایت خود این اشکال جالب را قرار دهید. یکی از شکل‌های پرتکرار در وب سایت‌ها، مثلث است که از آن در ایجاد انواع مختلف مثلث، جهت‌نما (فلش) و یا حتی جهت‌دار کردن اشکال دیگر استفاده می‌گردد.
لینک زیر به صورت بسیار مختصر و مفید، به همراه یک انیمیشن عالی، به توضیح نحوه ایجاد آن می پردازد:

https://bit.ly/1GzOIaN

همچینن در زیر، لینک یک تولید کننده مثلث در کد #CSS آورده شده است که بعد از مطالعه لینک بالا می توانید به راحتی از آن در طراحی های خود استفاده نمایید.

https://bit.ly/2W9NzDf

#محمدرضا_حاج_بابایی (http://ow.ly/PnEY30oq1sK)

کانال تلگرام:
@SoftwarePhilosophy


___