Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
تست راحت تر کد های سی شارپ با C# Interactive

خیلی وقتا نیازمون میشه یه کد سی شارپ رو فقط تست کنیم. یه راهش اینه که یه اپ Console بسازیم ولی یه برنامه نویس خوب همیشه از ابزار های مناسب اون کار استفاده میکنه و برای اینکار ابزار های راحت تر و بهتری هم وجود داره، مثل C# Interactive

🔸این ابزار خیلی کار راه بندازه و زمانی که ویژوال استادیو جلوتون بازه بهترین انتخابه
این ابزار بهمون اجازه میده در لحظه یه کدی رو تست کنیم؛ نیاز به ساختن پروژه جدید نداره و لود خیلی سریعی داره؛ میتونیم dll رفرنس بدیم به کدمون یا یه فایل noscript ایی که قبلا نوشتیم رو load و اجرا کنیم و...
به این قابلیت C# REPL یا CSI هم میگن. همچنین توسط کامند csi توی کامند لاین هم قابل استفاده هست.

🔹کلا کار باهاش که خیلی راحته و بعد یه مدت به ابزار روزمره تون تبدیل میشه ولی فقط نکته رو بدونین (هرچند که توی 2تا لینک بالا کامل توضیح داده) اونم اینه که خیلی وقتا لازم میشه یه یه dll ایی رفرنس بدیم که قبلا رفرنس نبوده
مثلا میخواین با کلاس SqlConnection کار کنین، از اونجایی که "System.Data" به صورت پیشفرض رفرنس نشده شما فقط کافیه اونو با r# رفرنس کنین. همین. مثال:
> #r "System.Data"
> using System.Data.SqlClient;
> var sql = new SqlConnection("myconn");

🔰یه بار این ویدئو یا مقاله زیر رو ببینین تا کامل متوجه طرز کارش بشین
https://dzone.com/articles/c-interactive-in-visual-studio
https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2015/103
___________________
@DotNetZoom
Forwarded from فلسفه دیزاین
تاثیر سوگیری‌های شناختی بر دیزاین

دیزاینرها به طور پیوسته در حال اصلاح و بهبود روند طراحی و استفاده از متدولوژی‌های جدیدتر و بهینه‌تر بوده و برای رسیدن به راه‌حلی بهتر همواره در حال مطالعه، تحلیل و بررسی یافته‌ها، آزمون و خطا و کسب بازخورد هستند. در راستای رسیدن به این هدف، هریک از این مراحل و روند‌ها دستخوش تغییر و تحول شده و براساس اطلاعات به دست آمده اصلاح می‌شوند. اما نکته‌ای که کمتر بدان پرداخته شده و مورد توجه قرار می‌گیرد،اهمیت بی‌طرفی و خنثی بودن دیزاینر در طول این روند است. منظور از این بی‌طرفی، اجتناب از سوگیری‌های شناختی (Cognitive Biases) در روند دیزاین است.

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

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

۱- سوگیری تأییدی: در این نوع سوگیری، ذهن تلاش دارد تا اطلاعات را به شکل دلخواه یا در راستای تایید دانسته‌های خود تعبیر و تفسیر کند.

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

۳- اجماع کاذب: در این حالت، شخص نظرات، اعتقادات و باورهای خود را منطبق با دیگران می‌داند و تصور دارد که همه اعتقادات و باورهایی مثل او دارند.

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

۵- نفرین دانش زیاد: در این حالت شخص به طور ناآگاهانه تصور می‌کند که دیگران نیز اطلاعات و دانشی مشابه وی در مورد موضوعی خاص دارند.

۶- نقطه کور: به حالتی اشاره دارد که فرد تاثیر سوگیری‌های دیگر اعضای گروه بر تصمیم‌گیری‌هایشان را تشخیص داده و درک می‌کند، اما تاثیر این سوگیری‌ها بر تصمیم‌گیری خود را نادیده می‌گیرد.

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

http://bit.ly/dxgn573

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

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

#دیزاین #روانشناسی
@Dexign فلسفه دیزاین


_____
#پست_مجدد این پست تا به حال نزدیک به ۲۳۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Peivast | پیوست
🔸مهران داودی، مدیرعامل ملک‌رادار یادداشتی به نام «دورکاری شوآف نیست» نوشته و در آن از تجربه موفق دورکاری تیم ملک‌رادار پس از ۳ سال می‌گوید.

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

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

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

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

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

🆔 @peivast

🔗یادداشت مدیرعامل ملک‌رادار را از طریق لینک زیر بخوانید:
http://pvst.ir/7l1
Forwarded from Iran Agile
کارشناس بخش امنیت به مدیر پروژه x زنگ میزند، “سلام…به من گفتند که در مورد پروژه تون کمی اطلاعات بگیرم، تا بتونیم اگر لازم شد ما هم با مشتری در ارتباط باشیم”
مدیر پروژه x: “ببخشید من به شما نمی تونم اطلاعات بدم، سرمون هم خیلی شلوغ هست، یک نامه رسمی بزنید تا بررسی کنیم …”
بعد از نامه رسمی، کمترین حد ممکن اطلاعات به قسمت مربوطه داده شد. قسمت امنیت هم سعی می کند از کانال‌های غیر متعارف و دور زدن وارد داستان شود و … .
این داستان، یک داستان عادی در سازمان‌ها و شرکت‌ها و حتی استارتاپ‌هایی است که در حال بزرگ شدن هستند. به این عارضه، فرهنگ یا ذهنیت سیلو گفته می شود.

سیلو (Silo) چیست؟
(فرهنگ فارسی معین ). از اسپانیایی ، چاله یا حفره ای که در زمین ساخته میشود و در آن دانه ها، ریشه ها، علوفه ٔ سبز و نظایر آن را نگاهداری میکنند. نیز انبار یا مخزن کاملاً بسته ای که در زیرزمین یا روی آن برای محفوظ نگاه داشتن محصولات کشاورزی میسازند. سیلوهای غلات ممکن است از فولاد یا سیمان یا مصالح بنایی ساخته شوند.

https://blog.scrum.ir/2017/01/silo-culture/

@iranagile
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
تست کد های #C به صورت آنلاین

توی پست قبلی در مورد C# Interactive توضیح داده بودم الان میخوام روش آنلاینش رو بررسی کنیم.
واسه اینکار سایت های زیادی هست که امکان Syntax Highlighter و Run کردن کد رو بهتون میدن. با این ابزار ها میتونین کد سی شارپ تون رو انلاین و راحت تست کنین و یا کدتون رو با بقیه به اشتراک بگذارین

🔸اول از همه بهترینشون و با اختلاف فاحش، سایت SharpLab هست. امکانات فوق العاده ای داره، Intellisense خیلی قوی ایی داره که در نوع خودش واقعا بی نظیره، امکان Decompile کردن کد خروجی به IL و #C و حتی Jit Assembly رو بهتون میده. UX خوب و روون ایی داره و خیلی سریع، در لحظه کد رو اجرا میکنه.
https://sharplab.io/

🔹این سایت برای ویرایشگرش اش از پلاگین جاوااسکریپتی CodeMirror استفاده میکنه که یک Code Editor و Syntax Highlighter قوی هست و از تموم زبان ها پشتیبانی میکنه
مثلا اگه خواستین قابلیت اسکریپت نویسی و اجرای کد داینامیک رو برای پروژه تون اضافه کنین میتونین از این پلاگین استفاده کنین
https://github.com/codemirror/CodeMirror
[Demo] https://codemirror.net/

🔸 این سایت برای اجرای کد ها از Roslyn و برای Decompile کردنشون از ILSpy استاده میکنه که قوی ترین برنامه Decompiler دات نت هست و ابزار های حرفه دیگه از از جمله dnSpy از رو همین ساخته شدن

🔹سازنده این سایت اومده کل پکیج Code Editor سی شارپیش رو که بر روی CodeMirror و Roslyn ساخته شده رو به صورت سورس پاز تو گیتهاب گذاشته
بدین صورت مثلا میتونین یه ویرایشگر کامل سی شارپی به همراه Autocomplete واسه اسکریپت نویسی داینامیک به پروژه تون اضافه کنین
https://github.com/ashmind/mirrorsharp

🔰تنها ایرادی که سایت sharplab.io داره اینه که که امکان اضافه کردن Nuget Package به کد هاتون رو نداره
واسه همین یه سایت دیگه به نام NET Fiddle. هست (که البته به خوبی اون نیست ولی بعضی امکانات اضافه تر مثل همین nuget package داره)
https://dotnetfiddle.net/
____________________
@DotNetZoom
Forwarded from فلسفه دیزاین
طراحیِ ابدی!

شاید بسیاری از کاربران حرفه‌ای‌ترِ ویندوز ۹۵ و ۹۸ در دو دهه‌ی اخیر به یاد داشته باشند که مایکروسافت با عرضه‌ی نسخه‌های بعدی ویندوز نتوانست کاربران قدیمی خود را به سمت طراحی‌های جدید خود جذب کند. این اتفاق در سال ۲۰۰۱ با عرضه‌ی ویندوز xp، کاربران قدیمی‌تر را به علت استقبال گسترده عموم مردم به چالش کشید و بر سر دوراهی وداع با ویندوز ۹۸ قرار داد. اما سوای قابلیت‌های سخت‌افزاری، چه چیزی در ویندوز ۹۸ این وفاداری را در کاربران ایجاد می‌کرد؟

مایکروسافت پس از ارائه‌ی نسخه‌ی ناموفق ویستا در سال ۲۰۰۷ (حجم سنگین گرافیکی) بلافاصله ویندوز ۷ را ارائه کرد؛ اما پس از آن ورق برگشت! مایکروسافت با رویکردی جدید برآمده از تجربیات خود و نیم‌نگاهی به موفقیت رقبایش ویندوز ۸ را منتشر کرد. این نسخه نیز با جبهه‌گیری و انتقادات بسیاری مواجه شد، اما بعدتر با بهبود کاستی‌ها و ارائه‌ی ویندوز ۱۰ سروصداها کمتر شد و نهایتاً مایکروسافت با سادگی اوّلین طراحی‌های ویندوزش تجدید میثاق نمود.

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

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

به نظر شما آیا در دنیای جدید دیجیتال می‌توانیم به این پایداری برسیم یا خیر؟ خوشحال می‌شویم دیدگاهتان را درباره‌ی این موضوع با ما به اشتراک بگذارید.

http://bit.ly/dxgn574-1

پ.ن:
همچنین برای دیدن تصاویر تاریخچه‌ی کامل دیزاین ویندوز می‌توانید لینک زیر را ببینید:

http://bit.ly/dxgn574-2

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

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

#دیزاین_جاودان #تاریخچه_دیزاین #ویندوز #تجربه_کاربری

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


ــــــ
Forwarded from Iran Agile
ترکیب Domain-Driven Design در پروژه های چابک

در سال 2016 یک شرکت خرده فروشی جهانی تصمیم به جایگزین کردن نرم افزار وفاداری (لویالیتی) خود با یک اپ دیگر گرفت. در این گزارش جزئیات این سفر شرح داده شده است و چگونگی کمک Kacper Gunia در اتخاذ شیوه های Domain-Driven Design را بیان می کند. این فعالیتهای طراحی آگاهانه به آنها کمک کرد تا یک سیستم میکروسرویس در مقیاس بزرگ را پیاده سازی و ارائه کنند.

https://bit.ly/2ZgrbNp

@iranagile
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ معرفی برنامه Fiddler Everywhere

به تازگی شرکت Telerik نسخه Cross-Platform برنامه محبوب Fiddler رو تحت عنوان Fiddler Everywhere منتشر کرده
این برنامه خیلی سبک و ساده تر هست و بعضی از امکانات نسخه اصلی رو نداره ولی امکانات اصلی و مهمش رو داره از جمله :

🔸قابلیت Traffic Inspector : امکان مشاهده و بررسی Request ها و Response ها

🔹قابلیت API Composer : امکان ارسال درخواست HTTP با مشخصات و اطلاعات سفارشی

🔸قابلیت Auto Responder : امکان پاسخ دهی خودکار به یه سری درخواست ها با شرایط مشخص (مثلا واسه وقتی خوبه که یه API گرفتین که پیاده کنین ولی هربار نمیخواین به سایت اصلی Request بفرستین؛ با این قابلیت میتونین یه پاسخ ساختگی واسه اون درخواست تعریف کنین و براحتی تست هاتون رو انجام بدین)

🔰لینک دانلود
https://www.telerik.com/download/fiddler/fiddler-everywhere-windows
توضیحات بیشتر
https://www.telerik.com/blogs/from-fiddler-classic-to-fiddler-everywhere
___________________
@DotNetZoom
دات نت ۵: اتحاد زیر یک پرچم

از زمان معرفی دات نت فریم ورک و فراز و نشیب‌های زیاد و ریلیز نسخه‌های متفاوت و استفاده‌ی آن در تکنولوژی‌های متفاوت، ماکروسافت نهایتا از ارائه نسخه جدید دات نت پرده برداشت و دات نت ۵ را معرفی کرد، در شروع این معرفی آمده است:
"تنها یک دات نت وجود خواهد داشت و می‌توانید توسط آن در توسعه پروژه‌هایی برای پلتفرم های ویندوز، لینوکس، مک او اس، آی او اس، اندروید، وب اسمبلی و ... استفاده کنید. "
همچنین قابلیت های . NET API ، ران تایم و فیچرهای زبان را به عنوان بخشی از این پروژه معرفی کرد.
از زمان شروع دات نت کور تا کنون، ماکروسافت بالغ بر 50 هزار API را از دات نت‌های پیشین به Core منتقل نموده و در NET Core 3 بسیاری از شکاف های موجود در .NET Framework 4.8 را عملا بست برای مثال در این نسخه از دات نت، امکان استفاده از برنامه نویسی ویندوز فرم با ابزارهای زیاد موجود در آن را فراهم کرد و هدف از NET 5 هم ادامه همین راه است که با بهره گیری از .NET Core و Mono امکان ساخت یک پلتفرم واحد را میسر کند و همه API ها را تحت یک ران تایم در اختیار برنامه نویسان قرار دهد، با استفاده از این ویژگی برنامه نویسان امکان اجرای کدهایشان را در محیط‌های مختلف خواهند داشت.

مزایای NET 5 :
-
همانند نسخه‌های قبلی NET Core این نسخه هم اوپن سورس خواهد بود و امکان مشارکت برای تمامی برنامه نویسان از طریق گیت هاب فراهم می‌باشد.
- کراس پلتفرم بودن.
- پشتیبانی از قابلیت‌هایی همجون WIndows Form و WPF روی ویندوز و پلتفرم‌های native با ساتفاده از زامارین.
- پرفرمنس بالا
- نصب و توسعه مرحله به مرحله.
- همانند نسخه‌های قبلی تنها فایل‌های مورد نیاز در پروژه مورد استفاده قرار می‌گیرند.
- امکان استفاده از CLI
- بکارگیری و اینتگریت بودن در تمامی محیط‌های توسعه شامل VS Code و VS و VS for Mac
نسخه نهایی NET 5 در نوامبر 2020 ارائه می‌گردد.

پ.ن : دلیل نامگذاری 5 عدم کنتاکت با نسخه پر استفاده Net Framework 4 بوده است.

https://devblogs.microsoft.com/dotnet/introducing-net-5/


⁉️ برای بحث و تبادل نظر فنی در مورد این پست، برروی دکمه «نظرت را بگو» کلیک کنید.

#ریبوار_حسین_پوری (https://bit.ly/3b0VWbn)

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

___
Forwarded from فلسفه دیزاین
دسترسی‌پذیری؛ تکنولوژی برای همه

این روزها تکنولوژی به بخشی جدایی‌ناپذیر از زندگی بسیاری از انسان‌ها بدل گشته است. براساس آمار ارائه شده توسط گوگل، بالغ بر 5/4 میلیارد نفر در سراسر جهان به اینترنت متصل هستند و از آن استفاده می‌کنند. در این میان افرادی با انواع مختلف معلولیت‌ها قرار دارند که استفاده از اینترنت و محتوای آن بدون همراهی تکنولوژی‌های کمکی برایشان سخت یا غیرممکن است. محتوای دیجیتال و اینترنتی در صورتی که منطبق بر اصول و قواعد دسترسی‌پذیری (Accessibility) نباشند توسط افراد معلول قابل استفاده نخواهند بود.

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

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

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

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

http://bit.ly/dxgn577

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

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

#دسترسی‌پذیری #تجربه‌کاربری
@Dexign فلسفه دیزاین


_
تعدادی اکسنشن متد برای برنامه نویسی asynchronous و استفاده از Taaskها

متد WhenAll :
کار آن ترکیب تعدادی Task و اجرای آن‌هاست. تنها زمانی خاتمه می‌یابد که کلیه‌ی Taskهای معرفی شده به آن خاتمه یافته باشند. در اینجا هر Task کاری به Task دیگر ندارد و جداگانه انجام می‌شود.
همچنین اگر خطایی برای هر کدام از Task ها رخ دهد، در آخر اجرای همه تسک‌ها آن خطا نمایش داده می‌شود که معمولا از نوع Aggregate Exception است.
await Task.WhenAll(tasksList);

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

 var finishedTask = await Task.WhenAny(tasksList);
var result = await finishedTask;

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

متدهای Run و FromResult
زمانی استفاده می‌شود که می‌خواهیم از Thread pool استفاده کنیم. Run وظیفه اختصاص Thread را دارد و از FromResult برای خروجی استفاده می‌شود.

متد Delay
همانند Thread.Sleep است با این تفاوت که در اینجا Thread جاری قفل می‌شود ولی در Task.Delay قفل نمی‌شود.

متد Yield
خروجی را بر می‌گرداند با این تفاوت که ادامه کار متوقف نمی‌شود و ...

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

تمامی متدهای دیگر task ها را می‌توانید در این پست مشاهده بفرمایید.

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، برروی دکمه «نظرت را بگو» کلیک کنید.

#حامد_حاجیلو (http://bit.ly/2IVjfYD)

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

___
Forwarded from Iran Agile
مقایسه سه چارچوب هدف‌گذاری و هم‌ترازی استراتژیک

https://blog.crisp.se/2020/05/25/mattiasskarin/comparison-of-three-strategy-alignment-frameworks

@iranagile
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
چرا نوع های double و float برای محاسبات اعشاری با دقت بالا مناسب نیست

نوع های float و double بر مبنای عدد 2 عمل میکنن و برای محاسبات اعدادی که بر منبای عدد 10 نیاز داریم گزینه مناسبی نیستند
این رفتار نه تنها در سی شارپ بلکه در تمام زبان های برنامه نویسی وجود داره
اطلاعات بیشتر:
▪️Why not use Double or Float to represent currency?
▪️Float or double?

🔰 نتیجه :
🔸از نوع های double و float (معادل کلاس Single) برای محاسبه های اعشاری با دقت بالا استفاده نکنید
🔹همیشه به جای double و float از نوع decimal استفاده کنید مگر خلافش ثابت بشه!
__________________
@DotNetZoom
Forwarded from فلسفه دیزاین
بینش مصنوعی: دیزاین تکامل‌یافته

هوش مصنوعی یا هوش ماشینی (Artificial Intelligence) به هوشی که یک ماشین در شرایط مختلف از خود نشان می‌دهد، گفته می‌شود. به عبارت دیگر هوش مصنوعی به سیستم‌هایی گفته می‌شود که می‌توانند واکنش‌هایی مشابه رفتارهای هوشمند انسانی از جمله درک شرایط پیچیده، شبیه‌سازی فرایندهای تفکری و شیوه‌های استدلالی انسانی و پاسخ موفق به آن‌ها، یادگیری و توانایی کسب دانش و استدلال برای حل مسایل را داشته باشند. “از ویکیپدیای فارسی”

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

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

http://bit.ly/dxgn578

(زمان ویدئو: ۱۵ دقیقه و ۲۴ ثانیه)

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

#هوش_مصنوعی #بینش_مصنوعی #دیزاین_تکامل_یافته #الگوریتم

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


ــــــ
#پست_مجدد این پست تا به حال نزدیک به ۴۱۰۰بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
💻 مایکروسافت در دسامبر سال 2019 در کنفرانس بیلد اعلام کرد که NET 5.0. انتشار بزرگ بعدی در خانواده NET. است و در تاریخ نوامبر 2020 وارد بازار می‌شود.

📌در این پست به معرفی اجمالی NET 5. پرداخته می‌شود:

📓 فریم‌ورک NET 5.0. ترکیبی از بهترین ویژگی‌های هسته‌های NET Core .NET Framework Xamarin و Mono است.

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

تمامی ویژگی‌های قبلی کماکان وجود دارد:
- متن باز و Community-Oriented بودن در گیت هاب
- پیاده سازی Cross-Platform
- [ادامه ویژگی‌ها به همراه ویژگی‌های جدید ... ].

📓دلیل جهش مایکروسافت از NET Core 3. به 5 جلوگیری از سردرگم شدن برنامه نویس‌هاست.
به این دلیل که برنامه‌نویسان دات نت فریم‌ورک از ورژن های 4x استفاده می‌کردند و اگر به جای Net 5.0. از Net 4.0. استفاده می‌شد، امکان داشت سر درگمی برای کاربران به وجود آید، بنابراین دات نت Core نسخه‌ی 4 نخواهیم داشت.

📓دو مورد اساسی که در این ورژن اتفاق می‌افتد و باید به آن‌ها اشاره شود:
۱- هماهنگ شدن و تلفیق تیم Unity با دیگر برنامه‌نویسان دات نت.
۲- ارائه نسخه نهایی Blazor

📎[منبع] 📎[تصویر]
〰️〰️〰️〰️〰️〰️〰️〰️

📓لینک های مرتبط :
📎 Mono: from Xamarin to WebAssembly, Blazor, and .NET 5 - Q&A with Miguel de Icaza
📎Did ASP.NET Web Forms Need to Die?
📎Not planning now to migrate your .NET 4.8 legacy, is certainly a mistake
📎Add Mono to the repository #1912
📎 .NET 5
📎ساماندهی مخازن کد NET Core. برای کار بر روی NET 5.
📎.NET Core master branches have switched to "5.0" #118
📎What Does .NET 5 Mean To You
📎Will .NET 5 include WCF?
📎.NET 5 The Future is Now

〰️〰️〰️〰️〰️〰️

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، برروی دکمه «نظرت را بگو» کلیک کنید.

#حامد_حاجیلو (http://bit.ly/2IVjfYD)

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

___
Forwarded from Iran Agile
سازماندهی ساختار محصول در شرکت‌ها

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

شکستن تیم:
✂️⁩ بر اساس محصول یا یک‌ ناحیه محصول، به عنوان مثال محصولات آفیس، محصول اکسل و پاورپوینت
✂️ براساس⁩ گروه مشتری/کاربر، به عنوان مثال، بانکداری شخصی برای مشتریان حقیقی، محصول بانکداری شرکتی برای مشتریان حقوقی
✂️⁩ براساس دستیابی به هدف کلی، به عنوان مثال تیم متمرکز بر رشد در مقابل تیم متمرکز بر وفادارسازی کاربر
✂️⁩ ساختار موقت بر اساس ابتکارات استراتژیک شامل تیم های مختلف، به عنوان مثال، فعالیت چند ماهه برای بهبود پروسه آنبورد کردن مشتریان

مقاله کامل
https://medium.com/@jefago/establishing-a-product-organization-structure-5cb4fbc2153

@iranagile
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
آموزش معماری تمیز (Clean Architecture) + سورس کد بهترین پیاده سازی ها

اکثر مقالاتی که این معماری رو به صورت کلی و انتزاعی توضیح دادند ممکنه برنامه نویس رو به خوبی شیرفهم نکنه مخصوصا وقتی با مفاهیمی آشنا میشن که شاید تا قبل نمیشناختین یا معادلی براش توی ذهنتون ندارین مثل Interactor و Interface Adapters و Drivers!
این موضوع حتی برای منبع اصلی Clean Artchiture یعنی مقاله شخص Robert C Martin (معروف به Uncle Bob) هم صدق میکنه هرچند که خیلی جامع و کامل توضیح داده ولی برای یه برنامه نویس سی شارپی ممکنه مبهم به نظر بیاد، مادامی که پیاده سازی عملی ازش رو نبینه.
همچنین خیلی از مقاله ها با دخیل کردن بیش از حد مورادی چون DDD و CQRS و ...، فهم اصل موضوع Clean Architecture رو برای مخاطب سخت میکنن.

🔸مقاله زیر خیلی ساده و روان و البته مختصر و مفید به توضیح معماری تمیز پرداخته و در آخر هم رفرنس های خوبی رو معرفی میکنه که پیشنهاد میکنم حتما ببینیدشون
https://www.dandoescode.com/blog/clean-architecture-an-introduction/

🔹و اما بریم سر اصل مطلب یعنی پیاده سازی؛ پیاده سازی های مختلفی از این معماری وجود داره توی اینترنت و گیتهاب که هرکس معمولا بنا به فهم و سلیقه خودش اومده یه پروژه ای ساخته که بعضا اشتباه هم هستند و صرفا اسم Clean Architecture رو به دوش میکشند

1️⃣ بهترین پیاده سازی هایی که من دیدم به ترتیب اینا هستند
https://github.com/jasontaylordev/CleanArchitecture
🔰آموزش ویدئویی این مورد توی یوتیوب هم هست که برای درک بهتر خیلی بهتون کمک میکنه
https://www.youtube.com/watch?v=5OtUm1BLmG0
https://jasontaylor.dev/clean-architecture-getting-started/

2️⃣ پیاده سازی بعدی توسط ardalis تهیه شده و ویدئو اش هم توی یوتیوب قرار داده شده
https://github.com/ardalis/CleanArchitecture

3️⃣ پیاده سازی بعدی هم خوبه و توضیحات بیشترش توی wiki خود ریپازیتوری و پست های وبلاگ نویسنده (1 و 2 و 3) + پلی لیست ویدئو هاش تو یوتیوب خود نویسنده قرار داده شده
https://github.com/ivanpaulovich/clean-architecture-manga


4️⃣ و در اخر پیاده سازی زیر که به همراه پست بلاگ نویسنده قرار داده شده
https://github.com/mmacneil/CleanAspNetCoreWebApi
________________
@DotNetZoom
Forwarded from فلسفه دیزاین
به رنگ سادگی

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

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

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

برای رسیدن به سادگی در دیزاین راه‌های مختلفی وجود دارد که برخی از آن‌ها عبارتند از:

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

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

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

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

برای آشنایی بیشتر با این روش‌ها و نمونه‌هایی موفق از پیاده‌سازی آن‌ها، مقاله زیر را مطالعه کنید:

http://bit.ly/dxgn585

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

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

#دیزاین #سادگی

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


_____