C# 9: Attributes on local functions
قبلا در مورد ویژگیهای سی شارپ 9 صحبت کردهایم.
این ویژگیها باعث شدند که ما بتونیم از امکانات زیادی برخوردار باشیم.
یکی از این امکانات, قابلیت افزودن Attribute های شرطی بالای توابع محلی است.
همانطور که در پستهای قبلی اشاره شده، اکثر تغییرات سی شارپ 9 بهبود ظاهری است.
قبل از سی شارپ 9
توجه شما رو به یه توییت جالب از David Fowler جلب میکنم.
برای دیدن امکاناتی که با آپدیت سی شارپ 9 به وجود اومده میتونید از این لینک استفاده کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، برروی دکمه «نظرت را بگو» کلیک کنید.
#حامد_حاجیلو (http://bit.ly/2IVjfYD)
کانال تلگرام:
@SoftwarePhilosophy
________
قبلا در مورد ویژگیهای سی شارپ 9 صحبت کردهایم.
این ویژگیها باعث شدند که ما بتونیم از امکانات زیادی برخوردار باشیم.
یکی از این امکانات, قابلیت افزودن Attribute های شرطی بالای توابع محلی است.
همانطور که در پستهای قبلی اشاره شده، اکثر تغییرات سی شارپ 9 بهبود ظاهری است.
قبل از سی شارپ 9
class Programبعد از سی شارپ 9
{
static void Main(string[] args)
{
static void DoAction()
{
// Perform action
Console.WriteLine("Performing action");
}
#if DEBUG
DoAction();
#endif
}
}
class Programخب میبینید که از لحاظ ظاهری خیلی قشنگه :)
{
static void Main(string[] args)
{
[Conditional("DEBUG")]
static void DoAction()
{
// Perform action
Console.WriteLine("Performing action");
}
DoAction();
}
}
توجه شما رو به یه توییت جالب از David Fowler جلب میکنم.
برای دیدن امکاناتی که با آپدیت سی شارپ 9 به وجود اومده میتونید از این لینک استفاده کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، برروی دکمه «نظرت را بگو» کلیک کنید.
#حامد_حاجیلو (http://bit.ly/2IVjfYD)
کانال تلگرام:
@SoftwarePhilosophy
________
Telegram
Software Philosophy
سی شارپ 9 و بهبود pattern matching:
یکی از برتری های ویژوال بیسک نسبت به سی شارپ, موضوع pattern matching بود (البته قبل از سی شارپ 8).
از سی شارپ 8 به بعد ماکروسافت تمهیدات خاصی در جهت بهبود pattern matching در سی شارپ در نظر گرفت.👇👇
یکی از جالب ترین (و…
یکی از برتری های ویژوال بیسک نسبت به سی شارپ, موضوع pattern matching بود (البته قبل از سی شارپ 8).
از سی شارپ 8 به بعد ماکروسافت تمهیدات خاصی در جهت بهبود pattern matching در سی شارپ در نظر گرفت.👇👇
یکی از جالب ترین (و…
Forwarded from Iran Agile
💢 مدیریت محصول هنر شناخت مسئله/مشکل است و نه راه حل
مردم برای مدیریت بهتر زمان خود ساعت مچی رولکس نمی خرند.
این ساعت دیگر قرار است چه کاری انجام دهد؟ حتی ضربان قلب یا شمارنده قدم را فراهم نکرده یا با تلفن شما ارتباط برقرار نمی کند. در این حالت، به وضوح، رولکس در حال حل یک نوع مسئله بسیار متفاوت است.
دانستن اینکه شما چه نوع مشکل/مسئله/نیاز را برای مشتری خود حل می کنید، راه دستیابی به یک نقشه راه محصول موثرتر است. مُسکنها، ویتامینها و آب نبات ها همگی تجارتهای میلیون دلاری هستند - فقط اگر بدانید چه چیزی ایجاد می کنید و از این طریق به بازار عرضه میکنید. اگر مُسکن را مانند ویتامین قرار دهید، نمیفروشد. اگر ویتامین خود را به عنوان مُسکن قرار دهید، ممکن است از شما شکایت شود. شما باید روی مشکلات تمرکز کنید، یک مسئله شناس شوید.
مدیریت محصول در واقع یافتن مشکلات واقعی کاربران واقعی است که واقعاً به دنبال راه حل هستند.
https://medium.com/swlh/product-management-is-the-art-of-problems-not-solving-fda73549adc3
@iranagile
مردم برای مدیریت بهتر زمان خود ساعت مچی رولکس نمی خرند.
این ساعت دیگر قرار است چه کاری انجام دهد؟ حتی ضربان قلب یا شمارنده قدم را فراهم نکرده یا با تلفن شما ارتباط برقرار نمی کند. در این حالت، به وضوح، رولکس در حال حل یک نوع مسئله بسیار متفاوت است.
دانستن اینکه شما چه نوع مشکل/مسئله/نیاز را برای مشتری خود حل می کنید، راه دستیابی به یک نقشه راه محصول موثرتر است. مُسکنها، ویتامینها و آب نبات ها همگی تجارتهای میلیون دلاری هستند - فقط اگر بدانید چه چیزی ایجاد می کنید و از این طریق به بازار عرضه میکنید. اگر مُسکن را مانند ویتامین قرار دهید، نمیفروشد. اگر ویتامین خود را به عنوان مُسکن قرار دهید، ممکن است از شما شکایت شود. شما باید روی مشکلات تمرکز کنید، یک مسئله شناس شوید.
مدیریت محصول در واقع یافتن مشکلات واقعی کاربران واقعی است که واقعاً به دنبال راه حل هستند.
https://medium.com/swlh/product-management-is-the-art-of-problems-not-solving-fda73549adc3
@iranagile
Forwarded from DotNetZoom (ALI_1992)
❇روش های 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- http://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 هم ازش استفاده کنین
___
@DotNetZoom
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- http://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 هم ازش استفاده کنین
___
@DotNetZoom
Forwarded from فلسفه دیزاین
آنچه طراحان UX از اقتصاد رفتاری میآموزند
ما انسانها آنطور که تصور میکنیم موجوداتی منطقی نیستیم و حتی زمانی که تلاش میکنیم بهترین خود باشیم، بازهم ممکن است که تحتتاثیر احساسات و شرایط مختلف تصمیمهایی بگیریم که به نفعمان نیست. البته خیلی از مردم این را نمیپذیرند و اینطور تصور میکنند که عواملی ماننند فقدان اطلاعات و قاببندیها حتی اگر دیگران را تحت تاثیر قرار دهد بازهم هیچ تاثیری روی انتخابهای آنها نمیگذارد. اما خطاهای ذهنی ما بسیار راحت تر از آنچه فکرش را بکنیم رخ میدهند و باعث میشوند که در یک چشم به هم زدن تصمیم اشتباهی بگیریم. به همین دلیل علومی همچون اقتصاد رفتاری (Behavioral Economics) ایجاد شده است تا نواقص ذهن انسان را بررسی کند و به تصمیم گیریهای اشتباه انسانها بپردازد.
دانش اقتصاد رفتاری علم روانشناسی اقتصادی است اما در عینحال میتواند به طراحان UX کمک کند تا با بررسی الگوهای رفتاری کاربرانشان فرصتهای قابل دسترسی را بشناسند و طراحیهای خود را بر مبنای آن انجام دهند. به این ترتیب طراحان با توجه به مفاهیمی مانند تاثیر قاببندی، فقدان اطلاعات، اینرسی، تعصب، خوشبینی، اطمینان بیشاز حد و مانند اینها و بررسی آنها در قالب رفتار کاربرانشان این امکان را پیدا میکنند که تجربه کاربری بهتری را برای آنها ایجاد کنند.
در این مقاله درباره اقتصاد رفتاری و چگونگی استفاده از آن در طراحی UX بخوانید.
https://bit.ly/dxgn635
(زمان حدودی مطالعه: ۶ دقیقه)
نویسنده: فیروزه ایمانی
#اقتصاد_رفتاری #رابط_کاربری
@Dexign فلسفه دیزاین
_____
ما انسانها آنطور که تصور میکنیم موجوداتی منطقی نیستیم و حتی زمانی که تلاش میکنیم بهترین خود باشیم، بازهم ممکن است که تحتتاثیر احساسات و شرایط مختلف تصمیمهایی بگیریم که به نفعمان نیست. البته خیلی از مردم این را نمیپذیرند و اینطور تصور میکنند که عواملی ماننند فقدان اطلاعات و قاببندیها حتی اگر دیگران را تحت تاثیر قرار دهد بازهم هیچ تاثیری روی انتخابهای آنها نمیگذارد. اما خطاهای ذهنی ما بسیار راحت تر از آنچه فکرش را بکنیم رخ میدهند و باعث میشوند که در یک چشم به هم زدن تصمیم اشتباهی بگیریم. به همین دلیل علومی همچون اقتصاد رفتاری (Behavioral Economics) ایجاد شده است تا نواقص ذهن انسان را بررسی کند و به تصمیم گیریهای اشتباه انسانها بپردازد.
دانش اقتصاد رفتاری علم روانشناسی اقتصادی است اما در عینحال میتواند به طراحان UX کمک کند تا با بررسی الگوهای رفتاری کاربرانشان فرصتهای قابل دسترسی را بشناسند و طراحیهای خود را بر مبنای آن انجام دهند. به این ترتیب طراحان با توجه به مفاهیمی مانند تاثیر قاببندی، فقدان اطلاعات، اینرسی، تعصب، خوشبینی، اطمینان بیشاز حد و مانند اینها و بررسی آنها در قالب رفتار کاربرانشان این امکان را پیدا میکنند که تجربه کاربری بهتری را برای آنها ایجاد کنند.
در این مقاله درباره اقتصاد رفتاری و چگونگی استفاده از آن در طراحی UX بخوانید.
https://bit.ly/dxgn635
(زمان حدودی مطالعه: ۶ دقیقه)
نویسنده: فیروزه ایمانی
#اقتصاد_رفتاری #رابط_کاربری
@Dexign فلسفه دیزاین
_____
Medium
What UX designers can learn from Behavioral Economics
Concepts to help you understand how people make decisions in the real world
Forwarded from Iran Agile
💢 پنج باید و نباید مهم در رویداد برنامه ریزی اسپرینت
به چه چیزهایی باید در این رویداد برنامه ریزی باید حواسمان باشد؟ چه چیزهایی میتواند کیفیت برنامه ریزی ما را پایین بیاورد؟
در لینک زیر این ده نکته را میتوانید مطالعه کنید 👇👇👇
https://www.scrum.org/resources/blog/5-dos-and-donts-during-sprint-planning
@iranagile
به چه چیزهایی باید در این رویداد برنامه ریزی باید حواسمان باشد؟ چه چیزهایی میتواند کیفیت برنامه ریزی ما را پایین بیاورد؟
در لینک زیر این ده نکته را میتوانید مطالعه کنید 👇👇👇
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
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
برای هک و کرک یک برنامه دات نتی به ترتیب به 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 فلسفه دیزاین
_____
دکتر رابرت بی. سیالدینی روانشناس، در کتاب «تأثیرگذاری» که در مورد مدیریت محصول میباشد به شش اصل کلیدی به عنوان اصول تأثیرگذاری بر مردم جهت رسیدن به خواستههای صاحب محصول اشاره میکند. این قواعد شامل تقابل، تعهد و ثبات، اثبات اجتماعی، علاقه، صلاحیت و کمیابی میباشد که در اینجا به اختصار به برخی این موارد اشاره میکنیم:
اصل تقابل: براساس اصل تقابل، اگر كسى به ما لطف كند، ما تمایل به جبران لطف طرف مقابل داریم. از موارد کاربرد این ویژگی در رونق کسب و کارها میتوان به ارائه رایگان خدمتی به مشتریان قبل از درخواست آنها اشاره نمود. به عنوان مثال، ارائه دانلود رایگان کتاب الکترونیکی و یا اشتراک رایگان یک ماهه سرویسهای ابری به مشتریان نوعی استفاده از این اصل میباشد.
اصل تعهد و پایداری: اصل تعهد و پایداری به این معناست که به محض اینکه ما به چیزی متعهد گردیم، سعی میکنیم در هر تصمیمی که میگیریم علیرغم وجود هر نوع فشار داخلی و یا خارجی به آن تعهد پایبند بمانیم. به طور مثال برای افزایش مشتریان، کسب و کارها مسابقهای ترتیب میدهند و از مشتریان خود میخواهند که در مورد کالای خاصی که دوست دارند مطلب کوتاهی بنویسند و برنده جایزه شوند.
اثبات اجتماعی: ما انسانها معمولاً در شرایطی که در تصمیمگیری خود با تردید و دودلی مواجه میشویم به دنبال آنچه دیگران در شرایط مشابه انجام دادهاند میگردیم. بنابراین، تمایل به مشاهده رفتارهای دیگران در شرایط مشابه با خود داریم. مثلا بررسی نظرات کاربران توسط مشتریان در خرید محصولی خاص نمونهای از کاربرد این اصل میباشد. به طوری که معمولاً مشاهده رضایت دیگران، تمایل بیشتری به خرید محصولات و خدمات را در ما ایجاد مینماید.
در اینجا به دلیل طولانیتر نشدن مطلب تنها به توضیح مختصر سه مورد از این اصول بسنده کردم. برای آشنایی بهتر با این اصول، درک کاربرد عملی آنها در کسب و کارهای مختلف و اطلاع از اینکه در طراحی کدام سرویسهای معتبر بکار رفتهاند شما را به خواندن مقاله امروز دعوت میکنم.
نویسنده این مقاله چگونگی استفاده از این اصول کلیدی را در سرویس Airbnb به عنوان یکی از بهترین سرویسهای ارائه خدمات اقامتی و گردشگری جهان مورد بررسی قرار داده است و به نتایج جالبی رسیده است. بنابراین اگر به مباحث مربوط به روانشناسی اجتماعی و مدیریت کسب و کار علاقه دارید، پیشنهاد میکنم مطالعه این مقاله را از دست ندهید.
https://bit.ly/dxgn637
(زمان حدودی مطالعه: ۷ دقیقه)
نویسنده: نیما حکیمرابط
#روانشناسیاجتماعی #مدیریتکسبوکار #طراحیتجربهکاری
@Dexign فلسفه دیزاین
_____
Medium
Airbnb and the art of Behavioral Influence
I recently reached out to Niels Hoven for any reading material on social psychology that will be helpful from a product management…
Forwarded from Iran Agile
💢 چرا نباید افراد را مجبور کنید که به رویدادهای اسکرام بپیوندند
گاهی اوقات در سازمانهایی که اسکرام یا چابک برای مدتی نهادینه شده است، خستگی را مشاهده میکنیم. ظاهراً خیلی از توسعه دهندگان از اسکرام خوششان نمی آید. برخی شکایت دارند که اسکرام جلسات زیادی تولید می کند. این به برخی از رویدادهای اسکرام به عنوان جلساتی بدون ارتباط، ارزش، انرژی و درگیری اشاره دارد.
🌟 آیا راهی وجود دارد که مانع از آن شود که افراد حس کنند که رویدادهای اسکرام بیارزش هست؟
پاسخ بله است: دعوت کنید - تحمیل نکنید.
عضویت در رویدادهای اسکرام خود را اختیاری کنید.
بله ، کاملاً اختیاری است. مجازات عدم حضور در آن. نه اینکه یک نفر شخص دیگری را تحمیل کند. از هیچ کس انتظار نمی رود که به دلیل برخی سیاستهای شرکت که آن را به دلیل الزامات انطباق تعیین می کند، حضور پیدا کند.
ادامه مطلب در لینک زیر
👇👇👇👇
https://medium.com/serious-scrum/why-you-should-not-enforce-people-to-join-scrum-events-6ffda2c3dfc2
@iranagile
گاهی اوقات در سازمانهایی که اسکرام یا چابک برای مدتی نهادینه شده است، خستگی را مشاهده میکنیم. ظاهراً خیلی از توسعه دهندگان از اسکرام خوششان نمی آید. برخی شکایت دارند که اسکرام جلسات زیادی تولید می کند. این به برخی از رویدادهای اسکرام به عنوان جلساتی بدون ارتباط، ارزش، انرژی و درگیری اشاره دارد.
🌟 آیا راهی وجود دارد که مانع از آن شود که افراد حس کنند که رویدادهای اسکرام بیارزش هست؟
پاسخ بله است: دعوت کنید - تحمیل نکنید.
عضویت در رویدادهای اسکرام خود را اختیاری کنید.
بله ، کاملاً اختیاری است. مجازات عدم حضور در آن. نه اینکه یک نفر شخص دیگری را تحمیل کند. از هیچ کس انتظار نمی رود که به دلیل برخی سیاستهای شرکت که آن را به دلیل الزامات انطباق تعیین می کند، حضور پیدا کند.
ادامه مطلب در لینک زیر
👇👇👇👇
https://medium.com/serious-scrum/why-you-should-not-enforce-people-to-join-scrum-events-6ffda2c3dfc2
@iranagile
Medium
Why You Should Not Force People to Join Scrum Events
What happens if participation in Scrum events is voluntary? What if it is not?
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 نسبت به حالت معمولی است. شاید فکر کنید دو دستور زیر هیچ تفاوتی نمیکنه!
مقالات آموزش این سلوشن :
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
#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 فلسفه دیزاین
_____
کتابی که در این مطلب میخواهیم معرفی کنیم، کتاب هنر یادگرفتن از مشتری است، چیزی که ما در نهایت به عنوان محصول تولید میکنیم باید پاسخگوی نیاز مشتری باشد و هیچچیزی دردناکتر از شکست یک محصول نیست. ابزار ما سوالها و اهدافی هست که باید به درستی از کاربر پرسیده شود تا هر پاسخی که دریافت میکنیم سازنده و کارآمد برای محصول ما باشد.
یادگرفتن از مشتری مثل کندوکاو باستانشناسان برای پیدا کردن زیرخاکیهاست. همه چیز اون پایینه ولی خیلی حساس و شکننده. با هر بیلی که به زمین میزنیم به حقیقت نزدیک میشویم ولی کافیه کندوکاو ناکارآمد باشه تا گنجی که اون زیر هست، تکه تکه شه.
برای پیداکردن جواب درست باید سوال ما درست باشه. ابزار ما سوالات و اهدافمون هستن. اما باید خوب یادشون بگیریم. کار راحتی نیست اما اگر به گنج اون پایین فکر کنیم اون موقع به ارزش این مهارت پی میبریم.
اما چیزهایی که از این کتاب یاد گرفتم:
- هر ایدهای که دارین نه تنها از مادرتون بلکه از هیچکس دیگر دربارهی خوببودن آن نپرسید.
- در همان ابتدا ایدهی خودتون رو تعریف نکنید.
- دربارهی زندگی و عادات مشتری سوال بپرسید نه دربارهی ایدهی خودتون.
- درباره گذشته و رفتار مشتریها بپرسید نه دربارهی آینده، هرچیزی که به آینده مربوط هست یک دروغ خوشبینانهست.
پیشنهاد میکنم در ادامه، مقالهای که خلاصهای از برداشتهای فصول مختلف کتاب هست، مطالعه کنید یا خود کتاب را تهیه کنید و از خواندن آن لذت ببرید. 🙂
https://bit.ly/dxgn640
(زمان حدودی مطالعه: ۶ دقیقه)
نویسنده: محمدرضا وفائی
#طراحیمحصول #معرفیکتاب #مدیریتمحصول
@Dexign فلسفه دیزاین
_____
Medium
The Mom Test by Rob Fitzpatrick
A delightful book for Product Managers
Forwarded from Iran Agile
👈 الویت بندی بکلاگ محصول با یک سوال ساده
اولویت بندی برای مدیران محصول یک چالش همیشگی است، بکلاگ محصول هرگز پایان نمییابد. اگر مدیر محصول باشید، یاد گرفته اید که گفتن "نه" همیشه آسان نیست.
به جای گفتن "نه" ، یک سوال ساده وجود دارد که می تواند به شما کمک کند: " انجام این چگونه از اهداف کسب و کار ما پشتیبانی می کند؟"
اما چگونه باید این کار را در واقعیت انجام داد؟
👇👇👇
https://brainmates.com.au/brainrants/prioritise-your-product-backlog-with-one-simple-question/
@iranagile
اولویت بندی برای مدیران محصول یک چالش همیشگی است، بکلاگ محصول هرگز پایان نمییابد. اگر مدیر محصول باشید، یاد گرفته اید که گفتن "نه" همیشه آسان نیست.
به جای گفتن "نه" ، یک سوال ساده وجود دارد که می تواند به شما کمک کند: " انجام این چگونه از اهداف کسب و کار ما پشتیبانی می کند؟"
اما چگونه باید این کار را در واقعیت انجام داد؟
👇👇👇
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
#سوال_درخواستی
🔸 در واقع 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
GitHub
GitHub - devlooped/moq: The most popular and friendly mocking framework for .NET
The most popular and friendly mocking framework for .NET - devlooped/moq
Forwarded from فلسفه دیزاین
دیزاین اسپرینت: روشی برای حل مساله
ما در استودیو دیزاین نیاز به یک راهکار سریع و خوب برای ایدهپردازی روشمند در جهت حل مسائل طراحی محصول را کاملا حس کردیم و پس از آزمودن روشهای مختلف و بعضا ابتکاری خودمان، بر آن شدیم که از دیزاین اسپرینت در برخی پروژهها بهره ببریم.
دیزاین اسپرینت روشیست که ساخت محصول اولیه، تست و استخراج ایرادات آن را با سرعت بالا امکانپذیر میکند. این روش یک فرآیند پنج روزه برای پاسخدهی به سوالات حساس بیزینس از طریق دیزاین، پروتوتایپ کردن و تست ایدهها با مشتری است.
در مقاله امروز به توضیح این روش و بررسی نکات کلیدی آن پرداختهایم. این مقاله برپایه کتاب The Design sprint نوشته شده است.
https://bit.ly/dxgn641
(زمان حدودی مطالعه: ۱۳ دقیقه)
نویسنده: فرشید ایپکچی
#طراحی_محصول #دیزاین_اسپرینت
@Dexign فلسفه دیزاین
_____
ما در استودیو دیزاین نیاز به یک راهکار سریع و خوب برای ایدهپردازی روشمند در جهت حل مسائل طراحی محصول را کاملا حس کردیم و پس از آزمودن روشهای مختلف و بعضا ابتکاری خودمان، بر آن شدیم که از دیزاین اسپرینت در برخی پروژهها بهره ببریم.
دیزاین اسپرینت روشیست که ساخت محصول اولیه، تست و استخراج ایرادات آن را با سرعت بالا امکانپذیر میکند. این روش یک فرآیند پنج روزه برای پاسخدهی به سوالات حساس بیزینس از طریق دیزاین، پروتوتایپ کردن و تست ایدهها با مشتری است.
در مقاله امروز به توضیح این روش و بررسی نکات کلیدی آن پرداختهایم. این مقاله برپایه کتاب 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
اکنون، بیش از هر زمان دیگری، این سوال وجود دارد که "چگونه روحیه تیمی را از راه دور ایجاد کنیم؟"
از زبان بدن تیم خود در تماس های زوم یا اسکایپ یا ...، می توانید تشخیص دهید. افراد به نظر بی روحیه می رسند، سطح انرژی پایین است.
شما در این احساس تنها نیستید. سی و نه درصد از مدیران در کارگاه اخیر 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
طبق این بنچمارک میتونین ببینین که توی درخواست های سبک ( مثل یه 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 فلسفه دیزاین
__
مرتبسازی کارت روشی برای تحقیق در حوزهی تجربهی کاربری است که کاربران موضوعات را به صورت گروهی دستهبندی میکنند. بخشی از ساخت یک وبسایت کارآمد، سازماندهی اطلاعات به گونهای است که افراد آنچه را که میخواهند به راحتی پیدا کنند. اغلب اوقات، محتوا بر اساس آنچه برای شرکتها و استارتاپها معنی دارد نه برای کاربران ساخته میشود. یکی از راههای اصلی برای فهمیدن این که یک سرویس با مدل ذهنی کاربران مطابقت دارد، از طریق مرتبسازی کارت است.
در این مقاله، با مفهوم و جزییات مرتبسازی کارت بیشتر آشنا شوید.
https://bit.ly/dxgn647
(زمان مورد نیاز برای مطالعه: ۱۲ دقیقه)
نویسنده: محمدرضا وفائی
#مرتبسازیکارت #تجربهکاربری #تحقیق
@Dexign فلسفه دیزاین
__
Nielsen Norman Group
Card Sorting: Uncover Users' Mental Models for Better Information Architecture
Card sorting is a UX research technique in which users organize topics into groups. Use it to create an IA that suits your users' expectations.
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
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
از پایین ویدئو گزینه [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
Docs
Diagnosing ASP.NET Core performance issues
In the episode, Mike Rousos shows us how we can use tools like PerfView and PerfCollect to diagnose performance problems in ASP.NET Core applications. He discusses how we can use the tools for performance analysis on both Linux and Windows servers. Also,…
👍1
Forwarded from فلسفه دیزاین
قانون پارکینسون یا اصل محدودیت زمانی
«هر کار به اندازهی زمانی که برای آن تخصیص داده شده طول میکشد.»
قانون پارکینسون مفهومی رایج در مدیریت است. نام آن از نام تاریخدان انگلیسی سیریل نورثکوت پارکینسون گرفته شده که در سال ۱۹۵۵ در مقالهای طنزآمیز در اکونومیست به این قانون اشاره کرده است.
این قانون زمینهی گسترش بیرویه بوروکراسی را بیان میکند. از دید این قانون هر کار تا زمانی که برای آن تعیین شده طول میکشد و این مدت ارتباط چندانی با میزان و ماهیت کار ندارد.
این نحوه عمل در سازمانها رخ میدهد و بوروکراسیها بدون گسترش اهدافشان، خود گسترش مییابند.
گاهی اوقات دقت کردهایید که هنگام انجام دیزاینی که به دقایق ۹۰ آن رسیده، تازه ایدهها به سراغتان میآیند و بهرهوری لازم به اوج خود میرسد؟! اما چه فایده که به پایان مهلت آن کار رسیدهاید و دیگر فرصتی نیست.
اینکه هر قسمت از وظیفه یا کار باید محدودیت زمانی داشته و انتهای آن بسته باشد به این دلیل است که انسان با تعصبها و ناهنجاریهای شناختیای که دارد در پیشبینی و تخمین زدن، بسیار بد عمل میکند. به نظر میرسد برای انجام کاری چه یک هفته وقت گذاشته شود و چه یک روز، ما آن را تا نزدیک موعد مقرر آن انجام نمیدهیم. پس بهتر نیست که زمان مناسب و لازم را برای آن در نظر بگیریم؟
البته این بدان معنی نیست که شما به عنوان مثال یک اپلیکیشن بزرگ را در یک روز به صورت کامل ببندید که نتیجه جز فاجعه چیزی نخواهد بود.
باید یک تعادل مناسب بین حجم کاری که در حال انجام آن هستیم و زمان مورد نیاز آن ایجاد کنیم و چه بهتر که این زمان به اندازههای کوچکتر تقسیم شوند تا به کلیات نتایجی که نیاز داریم سریعتر برسیم و درصورت شکست، لااقل زمان زیادی را هدر نداده باشیم.
فکر میکنم برای واکاوی بیشتر این موضوع، خواندن مقالهی زیر راهگشا باشد:
https://bit.ly/dxgn648
پ.ن: خوشحال میشویم که تجربیات خود را در مورد مدیریت زمان با ما در زیر همین پست در قسمت نظرات به اشتراک بگذارید.
(زمان حدودی مطالعهی مقاله: ۶ دقیقه)
نویسنده: حسین میرزاده
#تجربه_کاربری #قانون_پارکینسون #مدیریت_زمان #محدودیت
@Dexign فلسفه دیزاین
__
«هر کار به اندازهی زمانی که برای آن تخصیص داده شده طول میکشد.»
قانون پارکینسون مفهومی رایج در مدیریت است. نام آن از نام تاریخدان انگلیسی سیریل نورثکوت پارکینسون گرفته شده که در سال ۱۹۵۵ در مقالهای طنزآمیز در اکونومیست به این قانون اشاره کرده است.
این قانون زمینهی گسترش بیرویه بوروکراسی را بیان میکند. از دید این قانون هر کار تا زمانی که برای آن تعیین شده طول میکشد و این مدت ارتباط چندانی با میزان و ماهیت کار ندارد.
این نحوه عمل در سازمانها رخ میدهد و بوروکراسیها بدون گسترش اهدافشان، خود گسترش مییابند.
گاهی اوقات دقت کردهایید که هنگام انجام دیزاینی که به دقایق ۹۰ آن رسیده، تازه ایدهها به سراغتان میآیند و بهرهوری لازم به اوج خود میرسد؟! اما چه فایده که به پایان مهلت آن کار رسیدهاید و دیگر فرصتی نیست.
اینکه هر قسمت از وظیفه یا کار باید محدودیت زمانی داشته و انتهای آن بسته باشد به این دلیل است که انسان با تعصبها و ناهنجاریهای شناختیای که دارد در پیشبینی و تخمین زدن، بسیار بد عمل میکند. به نظر میرسد برای انجام کاری چه یک هفته وقت گذاشته شود و چه یک روز، ما آن را تا نزدیک موعد مقرر آن انجام نمیدهیم. پس بهتر نیست که زمان مناسب و لازم را برای آن در نظر بگیریم؟
البته این بدان معنی نیست که شما به عنوان مثال یک اپلیکیشن بزرگ را در یک روز به صورت کامل ببندید که نتیجه جز فاجعه چیزی نخواهد بود.
باید یک تعادل مناسب بین حجم کاری که در حال انجام آن هستیم و زمان مورد نیاز آن ایجاد کنیم و چه بهتر که این زمان به اندازههای کوچکتر تقسیم شوند تا به کلیات نتایجی که نیاز داریم سریعتر برسیم و درصورت شکست، لااقل زمان زیادی را هدر نداده باشیم.
فکر میکنم برای واکاوی بیشتر این موضوع، خواندن مقالهی زیر راهگشا باشد:
https://bit.ly/dxgn648
پ.ن: خوشحال میشویم که تجربیات خود را در مورد مدیریت زمان با ما در زیر همین پست در قسمت نظرات به اشتراک بگذارید.
(زمان حدودی مطالعهی مقاله: ۶ دقیقه)
نویسنده: حسین میرزاده
#تجربه_کاربری #قانون_پارکینسون #مدیریت_زمان #محدودیت
@Dexign فلسفه دیزاین
__
Medium
Parkinson’s Law: Why Constraints Are The Best Thing You Can Work With
“Work expands to fill the time available for its completion.”
Forwarded from Iran Agile
"ما ساختمانهایمان را شکل می دهیم، پس از آن ساختمانها ما را شکل میدهند." چرچیل.
بله، این افراد هستند که سازمانها، فرایندها و فرهنگ را شکل میدهند. اما همین افراد به همان اندازه که کنترل کننده آن تصمیمات هستند، اسیر آن تصمیمات و سیستمهای خود ساخته نیز هستند.
بسیاری از اوقات شاید بگوییم که فلان فرآیند یا سیستم و ... مشکل دارد، ولی در حقیقت این مشکل افراد هست نه فرآیند یا ابزار. شاید فکر کنیم تغییر آن موارد به معنای تغییر سیستم است، در حالی که این تغییر باید توسط افراد ایجاد شود.
افراد سیستم را میسازند، ولی خود افراد دوباره اسیر سیستم میشوند و سیستم تصمیمهای آینده را شکل میدهد؟
در اینجا بین انجمن چابک، دوگانگی بزرگی وجود دارد، یک دسته فکر میکنند که افراد در مرکز چابکی هستند ولی دسته دوم فکر میکنند سیستم در مرکز هست زیرا این سیستم است که به افراد و روابط شکل میدهد.
مربی ها، افراد را در مرکز امور قرار میدهند ولی مشاورها تمرکز روی سیستم دارند.
اما واقعاً کدام در مرکز توجه باید باشد؟
👇👇👇👇
https://www.allankellyassociates.co.uk/archives/4834/the-people-problem-problem-and-the-great-agile-divide/
@iranagile
بله، این افراد هستند که سازمانها، فرایندها و فرهنگ را شکل میدهند. اما همین افراد به همان اندازه که کنترل کننده آن تصمیمات هستند، اسیر آن تصمیمات و سیستمهای خود ساخته نیز هستند.
بسیاری از اوقات شاید بگوییم که فلان فرآیند یا سیستم و ... مشکل دارد، ولی در حقیقت این مشکل افراد هست نه فرآیند یا ابزار. شاید فکر کنیم تغییر آن موارد به معنای تغییر سیستم است، در حالی که این تغییر باید توسط افراد ایجاد شود.
افراد سیستم را میسازند، ولی خود افراد دوباره اسیر سیستم میشوند و سیستم تصمیمهای آینده را شکل میدهد؟
در اینجا بین انجمن چابک، دوگانگی بزرگی وجود دارد، یک دسته فکر میکنند که افراد در مرکز چابکی هستند ولی دسته دوم فکر میکنند سیستم در مرکز هست زیرا این سیستم است که به افراد و روابط شکل میدهد.
مربی ها، افراد را در مرکز امور قرار میدهند ولی مشاورها تمرکز روی سیستم دارند.
اما واقعاً کدام در مرکز توجه باید باشد؟
👇👇👇👇
https://www.allankellyassociates.co.uk/archives/4834/the-people-problem-problem-and-the-great-agile-divide/
@iranagile