Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
یک کد خوب نیاز به مستندسازی قوی دارد. در C#، برای این کار میتوانید از XML Documentation استفاده کنید که با سه اسلش ///، درست قبل از بلاک کد مربوطه شروع می شود.
شما می توانید خودتان نیز تگ های مورد نیاز خود را ایجاد کنید یا از لیست تگهای پیشنهادی موجود استفاده کنید.
پرکاربردترین تگ های پیشنهادی شامل موارد زیر است:
/// <summary>
/// Class or Method or Property or… summary documentation goes
///here.</summary>

/// <remarks>
/// Longer comments can be associated with a type or member through
/// the remarks tag.</remarks>


/// <value>
/// A value tag is used to describe the property value.</value>


/// <param name="s"> Parameter denoscription for s goes here.</param>


/// <seealso cref="System.String">
/// You can use the cref attribute on any tag to reference a type or member
/// and the compiler will check that the reference exists. </seealso>


/// <returns>
/// Return results are described through the returns tag.</returns>


زمانی که با آپشن /doc کامپایل کنید، کامپایلر از روی تمام تگ‌های xml موجود در کد فایل داکیومنت XML را می سازد.
لینک زیر شرح کاملی از xml documentation و نحوه استفاده آن ارایه می دهد.

https://msdn.microsoft.com/en-us/library/z04awywx.aspx

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/Pzau30aN6fd

#مریم_داودی (http://ow.ly/HGkG309B7de)

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

___
نسخه جدید کتابخانه Json.NET منتشر شد. مهمترین ویژگی جدید نسخه Json.NET 10.0 پشتیبانی آن از عملیات async است. این امکان کمک می‌کند هنگام تبدیل فایل‌های بزرگ Json، پروسس نخ به خاطر I/O بلاک نمی‌شود. به این صورت برنامه‌های Client بسیار Responsive تر می‌شوند و Web Application ها نیز بسیار scalable تر می‌شوند.

برای آشنایی با نحوه استفاده از ویژگی async این کتابخانه می‌توانید توضیحات و مثال‌های آن را در لینک زیر مطالعه کنید.

http://james.newtonking.com/archive/2017/03/21/json-net-10-0-release-1-async-performance-documentation-and-more

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/WUU030aPV1A

#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. نحوه برخورد با NullReferenceException در Visual Studio 2017
#visualstudio
https://news.1rj.ru/str/SoftwarePhilosophy/755

۲. ده نکته مهم در رابطه با فایل web.config
#aspnet
https://news.1rj.ru/str/SoftwarePhilosophy/756

۳. دیزاینرها، دیزاینر بدنیا نمی‌آیند (دیزاین)
#design
https://news.1rj.ru/str/SoftwarePhilosophy/757

۴. نحوه استفاده از XML Documentation برای مستندسازی در C#
#csharp #documentation
https://news.1rj.ru/str/SoftwarePhilosophy/758

۵. آشنایی با نحوه استفاده از ویژگی async در نسخه جدید کتابخانه Json.NET
#dotnet #json #async
https://news.1rj.ru/str/SoftwarePhilosophy/759

ـــــــــــ

@SoftwarePhilosophy
استفاده از هوش مصنوعی اخیرا جاذبه زیادی را در نرم‌افزارها ایجاد کرده‌است. یکی از ابزارهایی که می‌توانید در برنامه‌نویسی برنامه‌های خود از آن استفاده کنید Microsoft Cognitive Services (که قبلا به اسم پروژه آکسفورد معروف بود) است. شما با استفاده از این API می‌توانید احساساتی که در یک عکس وجود دارد را تشخصی دهید. برای مثال در لینک زیر با استفاده از این سرویس یک برنامه موبایل نوشته شده است که می‌تواند میزان رضایت کاربر از برنامه شما را از طریق عکس او تخشیص دهد.

نحوه نوشتن این برنامه برای سه پلتفرم Android, iOS, Windows 10 در لینک توضیح داده شده‌است.

https://github.com/Microsoft/XamarinAzure_ShoppingDemoApp/wiki/Cognitive-Services

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/ziQd30aSGEe

#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
آیا مهاجرت به ASP.NET Core لازم است؟ نه لزوما! این جواب اولیه‌ای است که معمار ارشد مایکروسافت Dino Esposito به این سوال داده‌است. جمله جالب دیگر او این است که «کافیست که شما بدانید چطور یک نرم‌افزار وب بنویسید، و همین بس است». او در ادامه یک جمله از یک رمان را نقل قول کرده: «اگر ما بخواهیم چیزها همانطور که هستند بمانند، آنها مجبور به تغییر خواهد شد!»
بنابرین او اعتقاد دارد نسل آینده نرم‌افزارها به این سمت می‌رود و اگر می‌خواهید در آینده هنوز نرم‌افزار تحت وب بنویسید، بالاخره روزی خواهد رسید که باید ابزارهای قدیمی خود را کنار بگذارید و به سمت جلو حرکت کنید.

در پست زیر Dino نظر خود در باره فلسفه مهاجرت به ASP.NET Core را توضیح می‌دهد. نحوه نگارش او طوری است که خواندن آن بسیار آموزنده است.

https://www.linkedin.com/pulse/me-aspnet-core-you-dino-esposito

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/8Aqo30aTBEs


#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
Forwarded from فلسفه دیزاین
دراپ‌باکس دوست‌داشتنی و
روند هیجا‌ن‌انگیز بازطراحی آن

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

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

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

https://medium.com/dropbox-design/influencing-redes-85844706fbe4

(زمان حدودی مطالعه، ۸ دقیقه)

پ. ن.
در طول این مقاله یک سرویس جالب و متن‌باز به اسم Cactus از سازنده سرویس Framer، آقای Koen Bok معرفی میشه که خیلی کاربردیه.

#روند #طراحی_محصول #بازطراحی #تجربه_کاربری #مدیریت_طراحی
@Dexign دیزاین

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

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

http://cssguidelin.es/

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/IdOy30aYW4S

#مریم_داودی (http://ow.ly/HGkG309B7de)

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

___
Forwarded from Iran Agile
🔴 راهنمای عملی پروتوتایپ برای مدیران محصول

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

http://blog.scrum.ir/2017/04/prototyping-for-product- managers
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. نحوه استفاده از هوش مصنوعی Microsoft Cognitive Services در سه پلتفرم Android, iOS, Windows 10
#ai #cognitiveservices #dotnet
https://news.1rj.ru/str/SoftwarePhilosophy/761

۲. نظر Dino Esposito در مورد زمان مهاجرت به ASP.NET Core
#aspnetcore #dotnetcore
https://news.1rj.ru/str/SoftwarePhilosophy/762

۳. دراپ‌باکس دوست‌داشتنی و روند هیجا‌ن‌انگیز بازطراحی آن (دیزاین)
#design #ui #ux
https://news.1rj.ru/str/SoftwarePhilosophy/763

۴. راه های ساده و کارآمد برای داشتن کد مرتب CSS
#css #cleancode
https://news.1rj.ru/str/SoftwarePhilosophy/764

۵. راهنمای عملی پروتوتایپ برای مدیران محصول (Iran Agile)
#prototype
ـــــــــــ

@SoftwarePhilosophy
تنظیم محیط برنامه‌نویسی Linux روی Windows 10 عنوان مقاله‌ای است که اسکات هانسلمن در بلاگش در مورد آن توضیح داده‌است. یکی از نکات جالب مورد اشاره او در این پست این جمله بود: «بعضی‌ها دوست دارند با ماوس و کلیک کار کنند، بعضی‌ها ترجیح می‌دهند با کیبورد و تایپ کردن کار کنند، اشکال ندارد برای همه جا هست!»
دو عادت کاملا متفاوت برنامه‌نویسان، محیط‌های کارمندی و محیط‌های گرافیکی است. در این مقاله نحوه استفاده از bash روی linux که روی windows 10 بالا آمده‌است توضیح داده شده.

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

https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/FD3X30b4Kyd

#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


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

در مقاله زیر تجربه استفاده از دو ابزار Team Foundation Server و یکپارچگی آن با سرویس‌های Azure در یک پروژه عملی شرح داده شده است. در این فرایند Feature‌ ها به عنوان زبان مشترک بین تیم فنی و بیزنس طراحی می‌شوند. سپس این Feature ها به Backlog Item ها شکسته می‌شوند. یک Backlog Item در حقیقت یک نیازمندی‌است است که آنقدری کوچک شده که بتوان آن را به تنهایی تست کرد. به طوری که اگر تست تمام Backlog Item های یک Feature پاس شود، به معنی قابل تحویل بودن آن به تیم بیزنس باشد. سپس Task ها مجموعه کارهایی (فنی و غیر فنی) است که باید انجام شود تا بتوان تست یک Backlog Item را پاس کرد.

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

http://mehrandvd.me/2017/02/24/azure-experience-handling-requirements/

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/3NGm30b5IjZ

#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
Forwarded from Iran Agile
دو مورد کلی باعث Gold Plating می شود:

1- عطش یادگیری در نیروهای فنی : چه دوست داشته باشیم یا نه، این ویژگی بارز نیروهای فنی است و آنها همیشه دوست دارند تکنولوژی های جدید را تجربه کنند و یاد بگیرند و دوباره یاد بگیرند. البته نیروی فنی با دیدن فیلم آموزشی یا کلاس چیزی یاد نمی گیرد، او زمانی یاد می گیرد که در پروژه (واقعی) تجربه کرده باشد. اما بعضی وقت ها هزینه یادگیری، یک پروژه شکست خورده می شود (یکی از دوستان می گفت؛ خوب چی مهم تر از این (: )

2- بزرگ جلوه دادن پروژه از سمت مدیران محصول: بعضی وقت ها مدیران محصول بدلیل عدم آشنایی با کسب کار، پروژه را بزرگ جلوه می دهند. مثلا برنامه نویس می پرسد چند نفر قرار است با این سیستم همزمان کار کنند، جواب "خیلی زیاد مثلا 500 هزار نفر". یا "آیا قرار است بعدا این قوانین کسب کار توسط خود مشتری عوض شوند؟" جواب: "بله". شاید یک جواب بله، باعث بشود که تیم به سراغ Workflow engine - فرم ساز و ... بروند و این یعنی هزینه خیلی زیاد.

👍 راه حل :

1- عطش یادگیری را نمی توان از بین برد، ولی شرکت هایی مثل گوگل که 20 درصد زمان را به خود نفرات می دهند، شاید یکی از دلایل همین یادگیری در حین کار باشد.

2- اصلا YAGNI در مورد این است که به چیزی که نیاز ندارید و مطئمن نیستید زیاد فکر نکنید، You are not gonna need it. یکی از هنرهای مدیریت محصول این است که تیم را به سمت ایجاد یک راه حل بزرگ نکشاند و سعی کند مشکل کسب کار را با کوچکترین راه حل ممکن حل کند.

3- هنر تیم هم این است که با تکیه بر اصول Keep it simple و با معماری تدریجی و طراحی پدیداری، سعی کند معماری و طراحی را از اول پیچیده در نظر نگیرد. به قول دوستان معمار، معمار خوب کسی است که تصمیم های مهم را به بعد موکول کند، یعنی اینکه با کسب دانش در طول پروژه بتواند تصمیم های درست تری بگیرد.

https://goo.gl/U4LLN0
Forwarded from فلسفه دیزاین
بوم سفیدی برای تمام دنیا:
داستان شیرین یک همکاری معجزه‌آسا

خارجی‌ها هم مثل دروغ سیزده ما، مفهومی به اسم April's Fool دارن که در روز اول آوریل خیلی از سرویس‌ها و سایت‌ها عمل مشابه دروغ سیزده انجام میدن و بعضی از شرکت‌ها هم از این فرصت و بهانه استفاده می‌کنن تا ایده‌های هیجان‌انگیزشون رو به دنیا معرفی کنن.

امسال هم مثل سال‌های گذشته شرکت‌های بزرگ زیادی در این رسم شرکت کردن. یکی از بهترین‌های ایده‌های اجرا شده، ایده سایت Reddit بود.
سایت Reddit یک سایت بحث و گفتگو و همینطور خبری است. یکی از ویژگی‌های بارز سایت پرطرفدار Reddit اینه که خیلی از کاربرانش به شکل ناشناس (Anonymous) در اون فعالیت دارند.
امسال Reddit به بهانه April's Fool، یک صفحه به اسم Place راه‌اندازی کرد که یک بوم سفید بود و هر کاربر می‌تونست یک پیکسل از این بوم سفید رو با یکی از ۱۶ رنگی که در اختیارش قرار داره رنگ کنه. هر کاربری هرچند باری که میخواست می‌تونست این کار رو انجام بده، فقط باید چند دقیقه بین هر بار رنگ کردن یک پیسکل صبر می‌کرد.
قبل از خوندن ادامه به این ایده فکر کنید و تصور کنید که ساختن یک شکل واحد در اون ممکنه ماه‌ها طول بکشه یا اصلا آیا با این تعداد کاربری که ممکنه این صفحه رو ببینن و روی پیکسل‌های همدیگه رو رنگ کنن، اصلا ساختن یک طرح مشخص امکان‌پذیره یا نه؟
نتیجه کار حتی برای خود سازندگان سایت Reddit هم حیرت‌آور بود.

جامعه‌ای جهانی متشکل از ۱ میلیون کاربر شکل گرفت و شروع کردن به رنگ کردن این بوم سفید، مثل تمامی جوامع واقعی بشری، برخی به دنبال ساختن شکلی در کل بوم بودن و برخی فقط برای یه تیکه از بوم برنامه‌ریزی کرده بودن، گروه‌های خرابکاری شکل گرفت که مدام کارهای بقیه رو خراب می‌کردن. گروه‌های هکری دست به هک کردن تایمر زدن تا بتونن خارج از نوبت بوم رو رنگ کنن و …

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

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

https://digitalculturist.com/when-pixels-collide-reddit-place-and-the-creation-of-art-3f9c15cc3d82

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

پ. ن.
انیمیشن گیف زیر نحوه شکل‌گیری طرح نهایی رو از ابتدا نشون میده.

#ایده #هنر
@Dexign دیزاین

___
مفهوم Concurrent Programming و تفاوت آن با Parallel Programming همیشه یکی از مباحث چالش برانگیز برای برنامه نویسان بوده است. مفهوم اجرای همزمان یا Concurrent حتی قابل اجرا روی یک نخ یا یک cpu است. در حالی که اجرای موازی یا Parallel نیاز به چند نخ دارد. مقاله زیر به زیبایی و بسیار خلاصه این دو مدل برنامه‌نویسی را توضیح داده‌است. همچنین نحوه استفاده از امکانات .net core را برای پیاده‌سازی این مفاهیم را به همراه مثال‌هایی خوانا شرح داده‌است.

مفاهیم TPL, PLINQ, Async, Immutable Collection و مفاهیم دیگر در این مقاله با ذکر مثال‌هایی جالب شرح داده شده‌اند.

http://www.dotnetcurry.com/dotnet/1360/concurrent-programming-dotnet-core

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/xoWQ30bbJFn

#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
Forwarded from Iran Agile
آیا بعد از پیاده سازی اسکرام، نیازی به اسکرام مستر داریم؟

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

👇👇👇👇👇
https://goo.gl/JYXqfx

@iranagile
#خلاصه_مطالب «فلسفه نرم‌افزار» در هفته گذشته:

۱. تنظیم محیط برنامه‌نویسی Linux روی Windows 10

https://news.1rj.ru/str/SoftwarePhilosophy/767

۲. شرح استفاده از دو ابزار Team Foundation Server و یکپارچگی آن با سرویس‌های Azure در یک پروژه عملی

https://news.1rj.ru/str/SoftwarePhilosophy/768

۳. دلایل ایجاد Gold Plating و راه حل‌های آن (Iran Agile)

https://news.1rj.ru/str/SoftwarePhilosophy/769

۴. بوم سفید سایت Reddit برای کاربران (دیزاین)

https://news.1rj.ru/str/SoftwarePhilosophy/770
https://news.1rj.ru/str/SoftwarePhilosophy/771

۵. توضیحاتی در رابطه با مفاهیم مفاهیم TPL, PLINQ, Async, Immutable Collection

https://news.1rj.ru/str/SoftwarePhilosophy/772

۶. آیا بعد از پیاده سازی اسکرام، نیازی به اسکرام مستر داریم؟ (Iran Agile)

https://news.1rj.ru/str/SoftwarePhilosophy/773

ـــــــــــ

@SoftwarePhilosophy
حذف حجم زیادی از سطرها از دیتابیس با اجرای دستور DELETE می‌تواند بسیار پر هزینه و زمان‌بر باشد. برای بهبود عملکرد و سرعت عملیات حذف باید Foreign Key ها، Index ها را هم بررسی کرد. ولی پس از بررسی و بهبود توسط این عوامل، راه بعدی استفاده از Delete Chunks است. شکستن DELETE های بزرگ به تکه‌های کوچک‌تر می‌تواند کمک زیادی به بهبود سرعت کند.

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


https://sqlperformance.com/2013/03/io-subsystem/chunk-deletes

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/CcQz30bhNiQ


#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
الگوی Async Retry Pattern یکی از الگوهایی است که در برنامه‌نویسی برنامه‌های نسل جدید بسیار مهم است. بسیاری دستگاه‌ها و بسترهای جدید شبکه مطمئنی ندارند. برای مثال اینترنت روی گوشی ممکن است بسته به موقعیت قطع و وصل شود و یا کیفیت پایینی داشته باشد. در این بسترها عملیات باید در صورت ناموفق بودن چند بار تکرار شوند و یا اصلاحا retry شود. ابزارهایی که برای retry طراحی شده‌اند این امکان را می‌دهند تا بتوان یک کار را با چند بار retry کردن انجام داد. برای مثال:
var maxRetryAttempts = 3;
var pauseBetweenFailures = TimeSpan.FromSeconds(2);

RetryHelper.RetryOnException(
maxRetryAttempts,
pauseBetweenFailures,
() => {
httpClient.Delete("https://example.com/api/products/1");
}
);

کد بالا برای شرایط کدهای همگام مناسب است ولی اگر بخواهید این کد را به صورت async اجرا کنید و از httpClient.DeleteAsync() استفاده کنید کد مناسبی نیست.

مقاله زیر ضمن تشریح این الگو، توضیح داده‌است که چطور می‌توان با استفاده از async/await الگوی retry pattern را پیاده‌سازی کرد.

https://alastaircrabtree.com/implementing-the-retry-pattern-for-async-tasks-in-c/

#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd

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

___
Forwarded from فلسفه دیزاین
مروری بر معماری اطلاعات:
فوت کوزه‌گری دیزاین

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

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

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

https://blog.prototypr.io/information-architecture-the-most-important-part-of-design-youre-probably-overlooking-20372ade4fc0

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

#معماری_اطلاعات #تجربه_کاربری #مفاهیم
@Dexign دیزاین

___