Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
هر موقع از ویژگی های جدید سی شارپ 8 صحبت می‌شه عمدتا Nullable Reference Type ها بیشتر خودش رو نشون می‌ده.

به همین دلیل احتمالا (به نظر من) بزرگترین چالش در ارتقاء C # 8.0 باید توی همین ویژگی باشه .

وقتی از این ویژگی استفاده می‌کنیم یکی از دلایلی که باعث ایجاد چالش می‌شه استفاده از جنریک متدهاست.

وقتی ما از ویژگی Nullable Reference Type ها استفاده می‌کنیم، باید صراحتا بگیم که نوع ورودی و خروجی دقیقا چیه.

ولی این امر توی جنریک‌ها به این راحتی نیست؛ ما ورودی یا خروجیمون از نوع T ست که اصلا نمی‌دونیم چیه (حتی با اضافه کردن قیود به جنریک‌ها بازم دقیق متوجه نمی‌شیم!)

پس به نظر من این می‌تونه یک چالش خیلی بزرگ باشه .

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

⁉️خب حالا باید چه کار کنیم ؟

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

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

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

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

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

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

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

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

برای ایجاد یک اکستنشن متد دلخواه میتوانید از این (https://stackoverflow.com/questions/55594672/how-to-create-a-generic-extension-method-for-async-methods) آموزش استفاده کنید.

https://docs.microsoft.com/en-us/dotnet/csharp/nullable-attributes#specify-post-conditions-maybenull-and-notnull

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

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

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

___
Forwarded from کدهک
آشنایی با الگوریتم Hi/Lo

معمولا کلید اصلی توسط دیتابیس ساخته میشود اما برای بدست آوردن آن اطلاعات رکورد ابتدا باید در دیتابیس ذخیره شود.

گاهی لازم است پیش از ذخیره سازی کلید اصلی در دسترس باشد در این موارد می توان از الگوریتم Hi/Lo استفاده کرد.

https://cutt.ly/4rwlwyq
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ آموزش Docker با جادی

از اونجایی که جادی همه آموزشاش باحاله و الانم یه آموزش 3 قسمتی در مورد داکر زده👌

اگه هنوز داکر رو شروع نکردین (عملا نصف عمرتون بر فناست ولی نگران نباشید) پیشنهاد میکنم با این آموزش "همین الان" شروعش کنین✌️

1️⃣ https://www.aparat.com/v/tqIM7
2️⃣ https://www.aparat.com/v/02ys3
3️⃣ https://www.aparat.com/v/oZlKB
________________
@DotNetZoom
Forwarded from فلسفه دیزاین
نقش معماری اطلاعات (IA) در دیزاین

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

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

مقاله امروز که توسط Tubik Studio انتشار یافته است که به بیان ماهیت معماری اطلاعات اختصاص یافته و نكات اساسی را كه همه طراحان باید در این خصوص بدانند ارائه می‌دهد.

http://bit.ly/dxgn569

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

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

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


ــــــ
یکی از ابزارهای قدرتمند برای Monitor کردن پروژه‌های .NET ، .NET Core و ASP.NET Core استفاده از Application Insight است. این کتابخانه تمام اطلاعات مورد نیاز برای مانیتور کردن یک برنامه را در اختیار شما قرار می‌دهد. مثلا وقتی که Api مربوط به پرداخت Call می‌شود، درApplication Insights علاوه بر اینکه اطلاعات خود Request ثبت می‌شود اطلاعات عملیات وابسته به این درخواست هم ثبت می‌شود مثل Query های که به دیتایس زده شده یا Request هایی که به درگاه پرداخت فرستاده شده‌اند.

هرچند مشکلی که وجود دارد این است که اطلاعات در Azure ذخیره می‌شوند.

برای حل این مشکل و «استفاده از Appliction Insights بدون داشتن اکانت Azure»، می‌توانید از کتابخانه Microsoft Diagnostics EventFlow استفاده کنید.

این کتابخانه تمام اطلاعات خروجی Application Insight (هم اطلاعات مستقیم و هم اطلاعات وابسه به یک درخواست) را جمع آوری می‌کند و در خروجی‌های مختلفی مثل Elasticsearch ذخیره می‌کند.

این کتابخانه همچین می‌تواند اطلاعات را از Serilog, Log4net, Nlog و... خوانده و در Elasticsearch, Splunk, Sql Server ذخیره کند یا به صورت Json به یک URL که شما مشخص می‌کنید بفرستد.

https://github.com/Azure/diagnostics-eventflow

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

#افشین_علیزاده (http://ow.ly/l7cA30m3OQ9)

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

___
Forwarded from Iran Agile
بیشتر از بیست سال از جنبش چابک می‌گذرد، اما هنوز بسیاری از شرکتها شکایت دارند که نتوانستند آن ارزش قول داده شده در چابک را تجربه کنند.

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

اما چه باید کرد؟

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

در این کتاب با چارچوب Factful Agilty آشنا خواهید شد که یک چارچوب کاربردی برای تحول چابک به حساب می‌آید.

http://factfulagility.com/book/

@iranagile
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
#سری_معرفی_وسایت_های_برتر

معرفی 10 سایت های برتر - سری اول
در مورد
#C و NET Core. و ASP.NET Core

🔶 اگه
مشتاق به یادگیری و مطالعه هستین این میتونه بهترین پست برای شما باشه. توی این سری پست ها هربار 10 وبسایت که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم👌
اینا در واقع منابعی هستند که خودم معمولا دنبالشون میکنم

🔷 یادتون نره واسه رفقاتون بفرستید✌️
1️⃣ https://exceptionnotfound.net/
2️⃣ https://www.talkingdotnet.com/
3️⃣ https://code-maze.com/
4️⃣ https://laurentkempe.com/
5️⃣ https://anthonygiretti.com/
6️⃣ https://michaelscodingspot.com/
7️⃣ https://www.meziantou.net/
8️⃣ https://mattwarren.org/
9️⃣ https://weblog.west-wind.com/
🔟 https://codewithshadman.com/
_____________________
@DotNetZoom
نقش آموزش در مدیریت تیم ارواح!!!

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

امروز (پنجشنبه) ساعت ۱۵:۰۰ در اینستاگرام به دعوت بچه‌های اینوتکس، قراره در مورد «نقش آموزش در کیفیت تیم‌های موفق نرم‌افزاری ریموت» صحبت کنم. در این لایو قرار هست در مورد فرایند کاری ما در «ملک‌رادار» و «CS Internship» هم صحبت کنم.

خوشحال می‌شم سوالاتتون رو اینجا بپرسید تا در موردشون صحبت کنم.

اینستاگرام: https://www.instagram.com/mehrandvd/
1
استفاده از سیستم پرباد در درگاه‌های بانکی


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

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

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

پرباد پروژه‌ای است که همین کار رو به صورت تمیز و خوب انجام داده است. خیلی راحت می‌توانید از Nuget نصب کرده و از آن استفاده کنید.

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

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

نهایتا اگه خوشتون اومد به پروژه گیت هاب پرباد ستاره بدید :)

https://github.com/Sina-Soltani/Parbad

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

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

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

____
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