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

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

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

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

اما انتخاب نوع این مجسّم‌سازی برای استفاده، صرفاً بحث زیبایی‌شناختی نیست، و نه حتی کاملاً شخصی هم نیست. انتخاب اشتباه می‌تواند بیننده را به بی‌حوصلگی و سردرگمی سوق دهد. بدتر از این، مصوّرسازی نادرست می‌تواند بین شما و مخاطبانتان بی‌اعتمادی ایجاد کند. به قول Stephen Few مبتکر و مشاور خبره‌ی این عرصه:
“اطلاعات ارزشمندی که در دستان شماست، داستان مهمی برای گفتن دارد و این وابسته به شماست که به آن‌ها صدایی واضح و قانع کننده بدهید”

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

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

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

پ.ن: شرکت‌های بسیاری از جمله Google و IBM به ساختن راهنماها و استایل‌شیت‌ها، مانند دیزاین سیستم‌ها پرداخته‌اند که از طریق لینک‌های زیر می‌توانید به آن‌ها دست پیدا کنید:

۱- https://www.ibm.com/design/v1/language/experience/data-visualization/

۲- https://material.io/design/communication/data-visualization.html

۳- https://medium.com/nightingale/style-guidelines-92ebe166addc

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

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

#مصورسازی_داده_ها #نمودار #داده #دیزاین_اطلاعات

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


ــــــ
💻 مایکروسافت در دسامبر سال 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 Software Philosophy
♨️ یک تغییر بزرگ: حذف دستور new از زبان‌های C# و Java ⁉️

بالاخره پس از مذاکرات و صحبت‌های زیاد در یک اقدام هماهنگ خالقان C# و Java تصمیم گرفتند دستور new را از این زبان‌ها حذف کنند. این تصمیم به این دلیل گرفته شد که از نظر طراحان این زبان‌ها همه Object Instantiation ها همیشه باید از طریق Dependency Injection انجام شود و اصولا در یک برنامه خوب برنامه‌نویس نباید خودش یک شی را ایجاد کند.

// Not a valid code anymore. 
Person p = new Person();

// New dependency injection syntax.
Person p = new.Resolve<Person>();

این تصمیم اولین تصمیم هماهنگ شده و همزمان بین تیم‌های توسعه زبان Java و C# است و Anders Hejlsberg و James Gosling هر دو در مورد این تصمیم بسیار خوشحالند.

با توجه به اینکه این تصمیم در روز اول آوریل (۱۳ فروردین) گرفته شد و نسخه Visual Studio 2019 نیز در همین روز منتشر شد، این تغییر در نسخه جدید C# 8.0 اعمال شده و باید از مدل جدید آن استفاده کنید.
در جاوا هم طبق برنامه‌ریزی این ویژگی در Java 15 اضافه خواهد شد که در سال ۲۰۲۵ ریلیز خواهد شد.

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

۱۳ بدرتان مبارک!

http://mehrandvd.me/2019/04/01/a-huge-change-in-java-and-c/

http://ow.ly/MldR30ojXpI

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

http://ow.ly/6RyP30ojWAP

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

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

___
مفهوم Collectionها در جاوا و نحوه استفاده از آن‌ها مبحث بسیار جذاب و مهمی برای هربرنامه نویس جاوا (یا حتی غیر جاوا) است. همانطور که می‌دانیم مبحث ساختمان‌های داده در جاوا به دو قسمت عمده Collection و Map تقسیم می‌شود که قسمت‌های اول به Collectionها اختصاص دارد . خود collection ها هم به List ها، Setها و ueue ها تقسیم می‌شود.
لینک زیر مقدمه‌ای بر این قسمت ارائه می‌دهد:

https://bit.ly/2x0dMx2

#شهریار_انتظام (http://ow.ly/qDN430nPiCg)

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

___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ ساخت دیتابیس یکبار مصرف Mongo بدون نیاز به نصب آن!

کتابخانه Mongo2Go یه کتابخونه عالی برای Integration Testing پروژه هایی هست که از MongoDb استفاده میکنند

🔶 توسط این کتابخونه می تونین دیتابیس های MongoDb رو بدون نیاز به نصب اون به صورت یکبار مصرف ایجاد کنین، یعنی یه دیتابیس موقت (توی پوشه Temp سیستم عامل) براتون میسازه و در آخر وقتی کارتون باهاش تموم شد اون رو حذف میکنه. در نتیجه برای Integration Testing بسیار مناسب و کاربردی هست.

🔷 قاعدتا برای استفاده از مونگو باید ورژن متناسب با سیستم عاملتون رو نصب و کانفیگ کنین یا راحت تر اینکه اون رو توسط Docker راه اندازی کنین ولی توسط این کتابخونه دیگه نیازی به نصب اون ندارین چون فایل های باینری MonogDb رو داخل خودش داره (واسه همین یه مقدار حجمش زیاده، 69 مگابایت)

🔰طرز کار باهاش خیلی سادس فقط کافیه ناگتش رو نصب کنین
Install-Package Mongo2Go
و به صورت زیر ازش استفاده کنین
using (var runner = MongoDbRunner.Start())
{
var client = new MongoClient(runner.ConnectionString);
var database = client.GetDatabase("IntegrationTest");
var collection = database.GetCollection<TestDocument>("TestCollection");

//Just use it!
}

ریپازیتوری گیتهاب :
https://github.com/Mongo2Go/Mongo2Go
_________________
@DotNetZoom
Forwarded from فلسفه دیزاین
چاشنی موفقیت محصول در بازار

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

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

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

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

- چه کسی و به چه دلیلی از اپلیکیشن می‌خواهد استفاده کند؟

- پیام اصلی که قرار است از طریق المان‌ها، لوگو، رنگ‌ها، تایپوگرافی‌ها، ایلاستریشن‌ها و ... به کاربر برسد چیست؟

- اپلیکیشن چه احساسی را می‌خواهد به کاربرانش منتقل کند؟

- کاربر اپلیکیشن با چه لحنی مورد خطاب قرار می‌گیرد؟ رسمی، غیر رسمی، مانند یک دوست، متخصص یا رهبر!

- کاربران چگونه درباره اپلیکیشن اطلاعات کسب می‌کنند؟ چه راه‌های ارتباطی میان کاربر و اپلیکیشن وجود دارد؟

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

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

http://bit.ly/dxgn563

مدت زمان مورد نیاز برای مطالعه: ۱۳ دقیقه

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

#برندینگ #طراحی

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


ــــــ
Forwarded from Iran Agile
من امروز فهمیدم که یک اسکرام مستر حرفه ای سالهاست پیش روی من است: “بتمن“.
البته مطمئن نیستم که خود او هم بخواهد مبارزه با جرم و جنایت را کنار بگذارد و شغل اسکرام مستری را انتخاب کند. اما اگر تمایل به این کار داشته باشد، فکر می کنم پنج دلیل وجود دارد که بتمن اسکرام مستر ایده آلی باشد.

1. بتمن فروتن است

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

2. بتمن در محافظت عالی است

اگر بتمن بتواند از گاتهام در برابر جنایتکاران شروری مانند جوکر[3] ، ریدلر و پنگوئن[4] محافظت کند، مطمئناً قادر خواهد بود تیم شما را نیز از اولویت بندی مجدد، موانع و وقفه های حین کار و عدم دسترسی ها محافظت کند. ذینفعان یا صاحبان محصول هیچ تفاوتی برای بتمن بعنوان اسکرام مستر، ندارند.

3. بتمن قدرت فوق العاده ای ندارد

بر خلاف اکثر ابرقهرمانان، بتمن از طریق امواج رادیواکتیو، والدین فرازمینی ، جهش های ژنتیکی یا آزمایش های علمی به قدرت نرسیده است. بتمن مجبور شد خودش اقتدار خودش را بدست آورد - درست مانند اسکرام مسترها.
بتمن حتی یک روز هم در ایستگاه پلیس گاتهام حضور پیدا نکرد . او به کمیسر گوردون گفت : " هر زمان که شهر به کمک من احتیاج داشت، سیگنال درخواست کمک را ارسال کن."
در ابتدا، بتمن با رسیدگی به جرائم و مشکلات، ضروری بودن حضورش را اثبات کرد. پس از آن بود که کمیسر گوردون مشتاقانه منتظر کمک بتمن در از بین بردن موانع جنایی بود.

4- بتمن هرگز از بین نمی رود

بتمن پایدار است. او هرگز تسلیم نمی شود. حتی زمانیکه او را به یک اره وصل كرده اند تا از وسط به دو نیم کنند بازهم مطمئن است كه می تواند راه حلی پیدا كند.
چه کسی است که نخواهد یک اسکرام مستر با این حد از اعتماد به نفس ( و دانش و مهارت های لازم ) را در تیمش داشته باشد؟ آنهم زمانیکه تیم شما محصول را تحویل نداده و جوکر آماده انفجار بمب در سراسر شهر است؟ من که همیشه بتمن را به عنوان اسکرام مستر با خودم می برم.

5- بتمن طبق قانون اخلاقی زندگی می کند

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

بتمن اسکرام مستری عالی خواهد بود

به همین پنج دلیل و احتمالاً دلایلی بیشتر ، بتمن یک اسکرام مستر عالی خواهد بود. من فکر نمی کنم که او در حال حاضر به دنبال شغل جدیدی باشد. اما من قصد دارم سیگنال کمک بتمن را ارسال کنم و ببینم که وی پاسخی می دهد یا خیر.

ترجمه علی مفخر
اسکرام مستر آسیاتک

منبع
https://www.mountaingoatsoftware.com/blog/five-reasons-why-batman-would-be-a-great-scrum-master
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ پروژه API نویسی پیشرفته در ASP.NET Core به ورژن 3.1.2 (آخرین نسخه جاری) بروز رسانی شد✌️

🔸مخزن گیتهاب پروژه
https://github.com/dotnetzoom/AspNetCore-WebApi-Course

🔹نسخه قبلی به برنچ AspNetCore2.1 منتقل شد
https://github.com/dotnetzoom/AspNetCore-WebApi-Course/tree/AspNetCore2.1

🔸مشاهده مهم ترین تغییرات این بروز رسانی
https://github.com/dotnetzoom/AspNetCore-WebApi-Course/blob/master/CHANGELOG.md

🔰جهت تهیه آموزش ویدئویی کامل این دوره میتونین از لینک زیر و کد تخفیف dotnetzoom استفاده کنید
http://bit.ly/2Xo6NX2
____________________
@DotNetZoom
Forwarded from فلسفه دیزاین
بازی‌ها؛ اَشکالِ بهینه‌ی تجربه‌ی بشر

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

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

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

نویسنده به بررسی چند کتاب در حیطه‌ی دیزاین بازی‌ها پرداخته و با واکاوی آن‌ها اطلاعات خوبی را در اختیار می‌گذارد. مقاله‌ی امروز را دنبال کنید و از امروز به کنسول‌های بازی خود بیشتر سر بزنید ;)

http://bit.ly/dxgn565

پ.ن:
به نظر شما چه عنصری باعث می‌شود که یک بازی از بازی دیگری جذاب‌تر باشد؟ (هر نکته‌ی خاصی که باعث شده شما آن بازی را دوست داشته باشید و ساعات بیشتری را صرف آن کنید) خوشحال می‌شویم که پاسخ آن را با استودیوی دیزاین در قسمت نظرات به اشتراک بگذارید.

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

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

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

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


ـــــــ
Forwarded from Iran Agile
شش روش برای تبدیل شدن به یک اسکرام مستر یا مربی چابک عالی

۱. به آنها کمک کنید تا مرزها و حدود را درک کنند

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

۲. کاری کنید تا احساس امنیت کنند

کار Scrum Master ایجاد ایمنی است. یعنی از ترس، محتاطانه کار کمتر و بی دردسر را انتخاب نکنند، یا حرف درست را نزنند.

۳. آنها را ستایش کنید

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

۴. از آنها پشتیبانی کنید

شما می دانید که بخشی از کار شما حذف موانع است

۵. آنها را خوب جلوه دهید
کار Scrum Master این است که تیم را خوب جلوه دهد. نه مصنوعی بلکه با خوب بودن...

۶. بدانید چه زمانی قوانین را بشکنید

قوانین Scrum لازم هستند اما در زمان درست شکستن قوانین لازم است، یک اسکرام مستر عالی آن زمان را می‌شناسد

متن کامل
https://www.mountaingoatsoftware.com/blog/six-things-your-team-wants-from-you-as-their-scrum-master
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ فعال سازی سطح دوم کش روی EF Core توسط EFCoreSecondLevelCacheInterceptor

قبلا کتابخانه EFSecondLevelCache.Core رو معرفی کرده بودیم
توسط این کتابخانه میتونین کش سطح دوم (second level caching) رو روی EF Core فعال کنین. در واقع میتونین نتیجه کوئری هاتون رو کش کنین تا دفعه بعد، به جای دیتابیس، از کش خونده بشه.
این کتابخانه توسط وحید نصیری عزیز، مدیر سایت dotnettips.info نوشته شده است.

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

🔰مزیت این کتابخونه نسبت به قبلی اینه که :
🔹کار باهاش ساده تره
🔸به دلیل استفاده از Interceptor پرفرمنس بالاتری داره
🔹یه سری از باگ ها و محدودیت هایی که قبلی داشت رو دیگه نداره
🔸و وابستگی به کتابخونه شخص ثالث برای Caching نداره و از Abstract های خود دات نت استفاده میکنه

🔰 نکته :
✔️اکیدا پیشنهاد میکنم اگه از قبلی استفاده میکردین، به پکیج جدید مهاجرت کنین (ضمن اینکه کتابخانه قلبی Archive شده و دیگر توسعه داده نمشه)
✔️کشینگ همیشه ازش به عنوان یه شمشیر "دو لبه" یاد میشه که اگه با علم کافی و به جا ازش استفاده نکنین و حواستون به Invalidate کردن ایتم های کش شده نباشه، سیستم رو دچاره مشکل میکنه
خوبی این کتابخونه اینه که بحث Invalidate کردن رو به صورت خودکار انجام میده و دیگه نگرانیی بابت اون نخواهید داشت، پس افرادی که توی این مبحث واقعا بزرگ (Caching) حرفه ای هم نیستن راحت تر میتونن تو پروژه هاشون ازش استفاده کنن

https://github.com/VahidN/EFCoreSecondLevelCacheInterceptor
___________________
@DotNetZoom
Forwarded from فلسفه دیزاین
در دنیای دیزاین، فقط انسان ها مهم نیستند

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

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

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

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

در تفکر محصولی جزییات و موضوعات حايز اهمیت دیگری نیز وجود دارد که طراحان لازم است با آنها آشنا باشند، برای یادگیری بیشتر به لینک زیر رجوع کنید:

http://bit.ly/dxgn568

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

#تفکر_محصول #تجربه_کاربری

نویسنده: رضا دانشیان

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


__
#پست_مجدد این پست تا به حال نزدیک به ۳۹۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
This media is not supported in your browser
VIEW IN TELEGRAM
چگونه یک نیروی جدید به تیم اضافه کنیم.

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

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

به نظرم این مدل برای تیم‌های نرم‌افزاری و تیم‌های استارتاپی که در حال scale کردن هستن، کاملا الگوی مناسبیه.

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

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

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

___
Forwarded from Iran Agile
ترندهای چابکی، چه چیزهایی به نهایت بلوغ یا اصطلاحاً همه اسمشان را شنیدن، رسیده‌اند؟ چه چیزهایی در حال رشد هستند و چیزهایی در حال تولد؟

گزارش کامل را از اینجا مطالعه کنید

https://www.infoq.com/articles/teams-teamwork-trends-2020/

@iranagile
هر موقع از ویژگی های جدید سی شارپ 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