Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from Iran Agile
💢 پنج باید و نباید مهم در رویداد برنامه ریزی اسپرینت

به چه چیزهایی باید در این رویداد برنامه ریزی باید حواسمان باشد؟ چه چیزهایی میتواند کیفیت برنامه ریزی ما را پایین بیاورد؟

در لینک زیر این ده نکته را میتوانید مطالعه کنید 👇👇👇

https://www.scrum.org/resources/blog/5-dos-and-donts-during-sprint-planning

@iranagile
Forwarded from کدهک
کش کردن دیتا کمک می کند دفعات کمتری به دیتابیس مراجعه کنید و از فشار مازاد به سرور و دیتابیس می کاهد. داده های زیادی هستند که به صورت مداوم آپدیت نمی شوند و می توانید آنها را موقت کش کنید تا سریعتر به کلاینت نمایش داده شود. در این ویدیو نحوه کار با In Memory Caching در ASP NET Core آموزش داده میشود.

https://codehaks.com/go/csh
Forwarded from DotNetZoom (ALI_1992)
هک برنامه های دات نتی با dnSpy و de4dot

برای هک و کرک یک برنامه دات نتی به ترتیب به 4 مرحله زیر نیاز داریم :

1️⃣ مرحله Deobfuscate & Unpack
در این مرحله اگر برنامه مورد نظر، Obfuscate (ناخوانا کردن کد ها) یا Pack شده باشد ابتدا لازم است که آنرا Deobfuscate کنید

2️⃣ مرحله Decompile
برنامه های دات نتی چون به زبان IL کامپایل میشه امکان برگرداندنشون به کد قابل فهم #C توسط ابراز های Decompiler وجود دارد

3️⃣ مرحله Assembly Debugging
در این مرحله میتوانید مشابه Visual Studio برنامه را Debug کرده، توسط break-point خط به خط کد ها را در زمان اجرا بررسی کنید، متغیر ها و مقادیرشون رو ببینید و قسمتی از کد که لازم است تغییر کد را پیدا کنید

4️⃣ مرحله Assembly Editing
نهایتا در این مرحله باید کد مورد نظر را ویرایش کرده و سر جای خود ذخیره و کامپایل کنید

🔰 معرفی بهترین ابزار های این کار :

🔸برنامه de4dot بهترین و قویترین برنامه برای Deobfuscate است که سورس باز و رایگان بوده و در حال حاضر 19 روش Obfuscate را شناسایی و خنثی میکند
طرز کار با آن ساده بوده و توسط command line است ولی اگر میخواهید به اندازه یک راست کلیک روی برنامه و انتخاب گزینه "Deobfuscate with de4dot" ساده شود میتوانید آن از de4dot Installer برای نصب آن استفاده کنید

🔹 برنامه dnSpy بهترین و قوی ترین برنامه Decompile و Assembly Debug/Edit است که سورس باز و رایگان بوده و انواع مختلف NET Framework, NET Core, Unity و ... را متواند Decompile کند هم چنین توانایی Debugging و Editing در سطح #C و Visual Basic و مهم تر از همه IL را دارد که در نوع خود بی نظیر است

🔸 بعد از dnSpy برنامه ی DotPeek (از شرکت JetBrains) بهترین برنامه Decompiler هست که از مهم ترین قابلیت آن میتوان به برگرداندن یک DLL به یک پروژه Visual Studio ایی اشاره کرد

🔹 ویدئو آموزش هک برنامه دات نتی توسط dnSpy
https://www.youtube.com/watch?v=YLmeFJNm0Bc
_______________
@DotNetZoom
Forwarded from فلسفه دیزاین
هنر تاثیرگذار رفتارشناسی در Airbnb

دکتر رابرت بی. سیالدینی روانشناس، در کتاب «تأثیرگذاری» که در مورد مدیریت محصول می‌باشد به شش اصل کلیدی به عنوان اصول تأثیرگذاری بر مردم جهت رسیدن به خواسته‌های صاحب محصول اشاره می‌کند. این قواعد شامل تقابل، تعهد و ثبات، اثبات اجتماعی، علاقه، صلاحیت و کمیابی می‌باشد که در اینجا به اختصار به برخی این موارد اشاره می‌کنیم:

اصل تقابل: براساس اصل تقابل، اگر كسى به ما لطف كند، ما تمایل به جبران لطف طرف مقابل داریم. از موارد کاربرد این ویژگی در رونق کسب و کارها می‌توان به ارائه رایگان خدمتی به مشتریان قبل از درخواست آن‌ها اشاره نمود. به عنوان مثال، ارائه دانلود رایگان کتاب الکترونیکی و یا اشتراک رایگان یک ماهه سرویس‌های ابری به مشتریان نوعی استفاده از این اصل می‌باشد.

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

اثبات اجتماعی: ما انسان‌ها معمولاً در شرایطی که در تصمیم‌گیری خود با تردید و دودلی مواجه می‌شویم به دنبال آنچه دیگران در شرایط مشابه انجام داده‌اند می‌گردیم. بنابراین، تمایل به مشاهده رفتارهای دیگران در شرایط مشابه با خود داریم. مثلا بررسی نظرات کاربران توسط مشتریان در خرید محصولی خاص نمونه‌ای از کاربرد این اصل می‌باشد. به طوری که معمولاً مشاهده رضایت دیگران، تمایل بیشتری به خرید محصولات و خدمات را در ما ایجاد می‌نماید.

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

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

https://bit.ly/dxgn637

(زمان حدودی مطالعه: ۷ دقیقه)

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

#روانشناسی‌اجتماعی #مدیریت‌کسب‌و‌کار‌ #طراحی‌تجربه‌کاری

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

_____
Forwarded from Iran Agile
💢 چرا نباید افراد را مجبور کنید که به رویدادهای اسکرام بپیوندند

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

🌟 آیا راهی وجود دارد که مانع از آن شود که افراد حس کنند که رویدادهای اسکرام بی‌ارزش هست؟

پاسخ بله است: دعوت کنید - تحمیل نکنید.

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

ادامه مطلب در لینک زیر
👇👇👇👇

https://medium.com/serious-scrum/why-you-should-not-enforce-people-to-join-scrum-events-6ffda2c3dfc2

@iranagile
Forwarded from DotNetZoom (ALI_1992)
حرفه ای ترین سلوشن 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 نسبت به حالت معمولی است. شاید فکر کنید دو دستور زیر هیچ تفاوتی نمیکنه!
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

_____________
@DotNetZoom
Forwarded from فلسفه دیزاین
کتاب تست مامان: نحوه‌ی درست یادگیری از مشتری

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

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

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

اما چیزهایی که از این کتاب یاد گرفتم:

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

پیشنهاد می‌کنم در ادامه، مقاله‌ای که خلاصه‌ای از برداشت‌های فصول مختلف کتاب هست، مطالعه کنید یا خود کتاب را تهیه کنید و از خواندن آن لذت ببرید. 🙂

https://bit.ly/dxgn640

(زمان حدودی مطالعه: ۶ دقیقه)

نویسنده: محمدرضا وفائی

#طراحی‌محصول #معرفی‌کتاب #مدیریت‌محصول
@Dexign فلسفه دیزاین

_____
Forwarded from Iran Agile
👈 الویت بندی بک‌لاگ محصول با یک سوال ساده

اولویت بندی برای مدیران محصول یک چالش همیشگی است، بک‌لاگ محصول هرگز پایان نمی‌یابد. اگر مدیر محصول باشید، یاد گرفته اید که گفتن "نه" همیشه آسان نیست.

به جای گفتن "نه" ، یک سوال ساده وجود دارد که می تواند به شما کمک کند: " انجام این چگونه از اهداف کسب و کار ما پشتیبانی می کند؟"

اما چگونه باید این کار را در واقعیت انجام داد؟
👇👇👇

https://brainmates.com.au/brainrants/prioritise-your-product-backlog-with-one-simple-question/

@iranagile
Forwarded from DotNetZoom (Ali)
این 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 (بازنویسی) کرده و بهتون اجازه میده که پیاده سازی متد هاش رو تغییر بدین

_____________
@DotNetZoom
Forwarded from فلسفه دیزاین
دیزاین اسپرینت: روشی برای حل مساله

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

در مقاله امروز به توضیح این روش و بررسی نکات کلیدی آن پرداخته‌ایم. این مقاله برپایه کتاب The Design sprint نوشته شده است.

https://bit.ly/dxgn641

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

نویسنده: فرشید ایپکچی

#طراحی_محصول #دیزاین_اسپرینت

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

_____
Forwarded from Iran Agile
🔗 12 روش برای ایجاد روحیه تیمی از راه دور در طولانی مدت و نه به عنوان یک فعالیت کوتاه مدت

اکنون، بیش از هر زمان دیگری، این سوال وجود دارد که "چگونه روحیه تیمی را از راه دور ایجاد کنیم؟"

از زبان بدن تیم خود در تماس های زوم یا اسکایپ یا ...، می توانید تشخیص دهید. افراد به نظر بی روحیه می رسند، سطح انرژی پایین است.

شما در این احساس تنها نیستید. سی و نه درصد از مدیران در کارگاه اخیر KYT Live! جلسه با صدها مدیر از سراسر جهان ، سطح فعلی روحیه در تیم آنها را "پایین" توصیف کرد (از 140 شرکت کننده در نظرسنجی).

در میان همه گیری ها و انتخابات ایالات متحده و همه که اکنون از راه دور کار می کنند ، یک طوفان ترس ، اضطراب و کسالت به بسیاری از تیم ها راه یافته است.

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

👇👇👇

https://knowyourteam.com/blog/2020/10/29/how-to-build-team-morale-remotely/

@iranagile
Forwarded from DotNetZoom (Ali)
مقایسه پرفرمنس 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
________________
@DotNetZoom
Forwarded from فلسفه دیزاین
مرتب‌سازی کارت یا Card Sorting – روشی برای معماری اطلاعات بهتر

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

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

https://bit.ly/dxgn647

(زمان مورد نیاز برای مطالعه: ۱۲ دقیقه)

نویسنده: محمدرضا وفائی

#مرتب‌سازی‌کارت #تجربه‌کاربری #تحقیق
@Dexign فلسفه دیزاین

__
Forwarded from Iran Agile
👈 هشت روش متفاوت تخمین زدن برای تیم‌های چابک

T-Shirt Sizing 👕

Sprint Poker 🃏

Three Point Method 🔺

Affinity Estimation 📊

Relative Mass Evaluation ⚖️

Dot Voting 🟢

Maximum Allowable Size

Big, Uncertain, Small 🎰

https://www.parabol.co/blog/agile-estimation-techniques

@iranagile
Forwarded from DotNetZoom (Ali)
❇️ آموزش عیب یابی و رفع مشکلات Performance ایی برنامه های ASP.NET Core (زبان اصلی زیر نویس دار)

از
پایین ویدئو گزینه [Subnoscript/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

____________
@DotNetZoom
👍1
Forwarded from فلسفه دیزاین
قانون پارکینسون یا اصل محدودیت زمانی

«هر کار به اندازه‌ی زمانی که برای آن تخصیص داده شده طول می‌کشد.»

قانون پارکینسون مفهومی رایج در مدیریت است. نام آن از نام تاریخدان انگلیسی سیریل نورث‌کوت پارکینسون گرفته شده که در سال ۱۹۵۵ در مقاله‌ای طنزآمیز در اکونومیست به این قانون اشاره کرده است.

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

گاهی اوقات دقت کرده‌ایید که هنگام انجام دیزاینی که به دقایق ۹۰ آن رسیده، تازه ایده‌ها به سراغتان می‌آیند و بهره‌وری لازم به اوج خود می‌رسد؟! اما چه فایده که به پایان مهلت آن کار رسیده‌اید و دیگر فرصتی نیست.

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

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

فکر می‌کنم برای واکاوی بیشتر این موضوع، خواندن مقاله‌ی زیر راهگشا باشد:

https://bit.ly/dxgn648

پ.ن: خوشحال می‌شویم که تجربیات خود را در مورد مدیریت زمان با ما در زیر همین پست در قسمت نظرات به اشتراک بگذارید.

(زمان حدودی مطالعه‌ی مقاله‌‌: ۶ دقیقه)

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

#تجربه_کاربری #قانون_پارکینسون #مدیریت_زمان #محدودیت

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

__
Forwarded from Iran Agile
"ما ساختمانهایمان را شکل می دهیم، پس از آن ساختمانها ما را شکل می‌دهند." چرچیل.

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

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

افراد سیستم را می‌سازند، ولی خود افراد دوباره اسیر سیستم می‌شوند و سیستم تصمیم‌های آینده را شکل می‌دهد؟

در اینجا بین انجمن چابک، دوگانگی بزرگی وجود دارد، یک دسته فکر می‌کنند که افراد در مرکز چابکی هستند ولی دسته دوم فکر می‌کنند سیستم در مرکز هست زیرا این سیستم است که به افراد و روابط شکل می‌دهد.

مربی ها، افراد را در مرکز امور قرار می‌دهند ولی مشاورها تمرکز روی سیستم دارند.

اما واقعاً کدام در مرکز توجه باید باشد؟
👇👇👇👇

https://www.allankellyassociates.co.uk/archives/4834/the-people-problem-problem-and-the-great-agile-divide/


@iranagile
Forwarded from کدهک
آموزش RabbitMQ و پیاده سازی الگوی Messaging

در این ویدیو به معرفی RabbitMQ می پردازیم و نحوه استفاده از آن را در NET Core. بررسی می کنیم. از RabbitMQ به عنوان Message Broker استفاده میشود که میتواند پیامها را درون صف نگه دارد و به ترتیب در اختیار سایر سرویس ها قرار دهد. این ابزار در پیاده سازی Distributed System ها و میکروسرویس ها کاربرد زیادی دارد.

https://codehaks.com/go/fpw
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
قابلیت Decompile کد های #C در Visual Studio

قبلا در مورد اضافه شدن قابلیت Decompile کد های سی شارپ در VSCode توسط ILSpy گفته بودیم

این قابلیت برای Visual Studio هم وجود داره اما در حالت پیش نمایش هست و به صورت پیشفرض فعال نیست

جهت فعال سازی این قابلیت باید از منو Tools گزینه Options را انتخاب کرده و از قسمت Text Editor > C# > Advanced گزینه Enable navigation to decompiled sources رو تیک بزنین

بعد از فعال سازی روی کلاس/متدی که سورسش رو ندارین راست کلید و گزینه "Go to Definition" رو انتخاب کنین براتون Decompile کنه و کدشو نشونتون بده

این امکان هم توسط کتابخانه معروف ILSpy انجام شده و بار اولی که ازش استفاده کنین یه سوال (در مورد قبول License کتابخونه ILSpy) میپرسه که گزینه Yes رو باید بزنین

جهت استفاده از این قابلیت باید حداقل ویژوال استادیو 2019 نسخه 16.5 به بالا نصب داشته باشین (از منوی Help گزینه Check for Update میتونین چک کنین)
جهت مطالعه بیشتر اینجا و اینجا
______________
@DotNetZoom
اولین #گپ_تکنیکال «فلسفه نرم‌افزار»
با موضوع «Open Source and Community Driven Activity»

همونطور که می‌دونین تلگرام امکان Voice Chat رو اخیرا به کانال‌ها اضافه کرده، امکانی که تجربه خیلی جالبی رو به تلگرام اضافه کرده که خیلی مشابه Clubhouse هست و باعث می‌شه بتونیم گپ‌های باحالی با هم بزنیم. انگار رفتیم و تو یه کافه نشستیم و با هم گپ تکنیکال می‌زنیم.

ما هم تصمیم گرفتیم اولین گپ تکنیکال رو از طریق همین ابزار برگزار کنیم.
تو این دورهمی #مهران_داودی، #یاسر_مرادی و #محمد_جواد_ابراهیمی هم صحبت خواهند کرد.

امروز، یکشنبه، ۸ فروردین، ساعت ۲۰:۰۰ منتظرتون هستیم. حتما تلگرامتون رو آپدیت کنین و برای اینکه اون تایم یادتون نره می‌تونین کانال (@SoftwarePhilosophy) رو تو تلگرامتون پین کنین موقع شروع متوجه بشید.

@SoftwarePhilosophy
Live stream started