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

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

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

از جهاتی برخی بر این باورند که الگوی سیاه، عملی غیراخلاقی و غیرمسئولانه است؛ شاید استفاده از طراحی سیاه به خودیِ خود غیرقانونی نباشد، اما سوءاستفاده از آن می‌تواند کاربران را متحمل ضرر مالی یا امنیتی کند. مثال ملموس از سوءاستفاده از الگوی سیاه، ماجرای «فعالیت خدمات ارزش افزوده (VAS) اپراتورهای تلفن همراه»، است که طبق گفته‌ی مقامات، مبلغ ۱۳هزارمیلیارد تومان از جیب مردم کسب درآمد کرده‌ بودند. عمده قربانیان این خدمات، افرادی بودند که در مسابقات پیامکی تلویزیون شرکت کرده بودند.

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


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

۱- http://bit.ly/dxgn570-1

۲- http://bit.ly/dxgn570-2

۳- http://bit.ly/dxgn570-3

(زمان حدودی مطالعه مقاله‌ی اوّل: ۸ دقیقه، مقاله‌ی دوّم: ۱۰ دقیقه و مقاله‌ی سوّم: ۵ دقیقه )

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

#الگوی_سیاه #تجربه_کاربری #دیزاین_سیاه

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

_____
Forwarded from Iran Agile
همه مدلها اشتباه هستند، فقط بعضی از آنها در شرایطی کار می‌کنند

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

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

https://www.jeremiahlee.com/posts/failed-squad-goals/

@iranagile
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
شرط گذاری روی Include ها در EF Core

🔸متداول ترین دلیل کاهش پرفرمنس توی پروژه ها، واکشی دیتای اضافی و کوئری های غیر ضروریه؛ اینو به تجربه توی اکثر پروژه هایی که بررسی کردم دیدم.

🔹حالا یه مقاله کامل نوشتم در مورد اینکه چطوری روی کوئری های Include شرط بذاریم و اونها رو بهینه کنیم.
تو این مقاله روش های مختلف رو مقایسه کردم و از نظر سرعت و میزان memory allocation (تخصیص حافظه) هم بنچمارک گرفتم

🔸توی پروژه هایی که خودتون کار میکنین چقدر به این مورد خوردین و شاید اصلا حواستونم بهش نبوده؟ شاید بد نباشه کداتون رو بررسی کنین و با بهینه کردن کوئری هاتون، پرفرمنس پروژه رو بالا ببرین

https://www.dotnettips.info/post/3190
__________________
@DotNetZoom
Forwarded from فلسفه دیزاین
تجربه کاربری شئ‌گرا

اگر در حیطه برنامه‌نویسی تجربه‌ای داشته باشید، احتمالا با مفهوم برنامه‌نویسی شئ‌گرا (Object-Oriented Programming) آشنا هستید. برنامه‌نویسی شئ‌گرا یکی از پارادایم‌های اساسی در یک زبان برنامه‌نویسی است که برنامه‌نویس با استفاده از آن می‌تواند برنامه‌اش را براساس یک استایل خاص پیاده‌سازی بکند. برنامه‌نویسی شئ‌گرا یکی از مدل‌های مناسب برای توسعه اپلیکیشن‌هایی است که معمولا ساختار پیچیده‌ای دارند و بزرگ هستند.

برخلاف جاافتادگی و قدمت این مفهوم در برنامه‌نویسی، مفهوم تجربه کاربری شئ‌گرا (Object-Oriented UX) مفهومی جدید و نوظهور است. در طراحی تجربه کاربری معمولا روند‌ها و مفاهیم بر پایه‌ تعامل و برخورد کاربر و محصول تعریف می‌شوند و رویکردها بیشتر تعامل‌محور است. اما زمانی که حجم اطلاعات و داده‌ها افزایش می‌یابد، درک و تشخیص ساختار و معماری داده‌ها و ارتباط بین آنها پیچیده می‌شود و استفاده از مفهوم تجربه کاربری شئ‌گرا منجر به ایجاد تجربه کاربری ساده و کاربردی می‌شود.

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

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

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

http://bit.ly/dxgn571

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

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

#تجربه‌_کاربری #شئ‌گرا
@Dexign فلسفه دیزاین


_____
انواع الگوی Pattern Matching در سی شارپ:

مفهوم pattern matching در سی شارپ 7 اضافه شد و هدف آن این بود که بتوان با objectها بهتر کار کرد.
در این پست قصد داریم به انواع pattern matching بپردازیم.

〰️〰️〰️〰️〰️〰️〰️〰️
📓 الگوی const:
عملگر is در ورژن‌های قبلی سی شارپ هم موجود بود ولی در ورژن 7 به بهبود کارایی pattern matching کمک کرده است.
چنانچه قبلا می‌خواستیم null بودن یک شی را بررسی کنیم از کد زیر استفاده می‌کردیم:
obj==null 
or
obj!=null

اما توسط این ویژگی می‌توانیم به شیوه زیر کد را بنویسیم:

 obj is null
or
obj is Object

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

〰️〰️〰️〰️〰️〰️〰️〰️
📓 الگوی Type :
همان مدل قبلی و شیوه استفاده کردن از is است با این تفاوت که در صورت برقرار بودن شرط توسط عملگر is عمل انتساب مقدار جدید به شی انجام می شود.

if (obj is User p)

در این مثال اگر obj از نوع User باشد , p مقدار دهی می شود.

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

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

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

استفاده از pattern matching ها در switch:

قبلا فقط می‌توانستیم از انواع عددی، رشته ای، کاراکتری و ... در caseهای switch استفاده کنیم، ولی در حال حاضر می‌توان از objectها و مشتقات آن مثل کلاس‌ها و null نیز استفاده کرد.

این ویژگی‌ها در سی شارپ ۷ اضافه شد ولی در سی شارپ ۸ بهبود چشمگیری یافت. به نحوی که توانست خلای که در سی شارپ وجود داشت را برطرف کند؛ این خلا یکی از برتری‌های visual basic نسبت به سی شارپ بود. ویژگی یا خلا ذکر شده باز بودن دست برنامه نویس هنگام کار با switch است.
مثلا در این ورژن می‌توانیم کد زیر را به عنوان یکی از caseهای switch بنویسیم

case var number when ((number >= 10) && (number <= 30)):

مثال جالبی در این لینک ارائه شده است. نکته لینک ذکر شده هم نحوه کار کردن با switch در ورژن ۸ سی شارپ است که دلیل آن همین ویژگی pattern matching است.


Rainbow.Red => new RGBColor(0xFF, 0x00, 0x00),

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

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

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

___
Forwarded from Iran Agile
در دهه 1880، یک مهندس کشاورزی فرانسوی یک سری آزمایش بر روی مفهوم تنبلی اجتماعی انجام داد. آزمایشات او با استفاده از یک مسابقه طناب کشی بود. آزمایشات وی نشان می داد كه افراد وقتی همراه تعداد زیادی از افراد دیگر باهم طناب را می كشیدند زور كمتری نسبت به زمانی كه به تنهایی آن می‌كشیدند، وارد میکردند. و بدین ترتیب مفهوم تنبلی اجتماعی متولد شد.

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

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

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

https://www.estherderby.com/but-are-they-working-hard

@iranagile
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