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

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

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

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

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

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

http://bit.ly/dxgn460

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

#تعصب #موانع_دیزاین #تمارین_ذهن
@Dexign فلسفه دیزاین

___
Forwarded from Software Philosophy
پلتفرم Twitch یکی از استارتاپ‌های معروف و جذاب با داستانی عجیب برای برنامه‌نویسان است. هدف اولیه این استارتاپ Game Streaming است، یعنی gamer ها هنگام بازی کردن دسکتاپ خود را share می‌کنند تا follower هایشان بتوانند نحوه بازی کردن آنها را ببینند.
یکی از اتفاقات جالبی که در این پلتفرم افتاده، استفاده خاص برنامه‌نویسان است. اخیرا برنامه‌نویسانی شروع به استفاده از از این پلتفرم کرده‌اند و هنگامی که برنامه‌نویسی می‌کنند دسکتاپ خود را شیر می‌کنند و مفاهیمی را از این طریق آموزش می‌دهند.

در همین راستا ما نیز در Software Philosophy تصمیم گرفتیم رویدادهایی را در Twitch برگزار کنیم.
دومین رویداد در تاریخ ۱۳۹۷/۱۱/۰۶ (شنبه) ساعت ۱۹:۰۰ تا ۲۰:۰۰ با موضوع زیر برگزار می‌شود:
Async/Await in Practice

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

https://www.aparat.com/v/F07CS

برای مشاهده این رویداد روی لینک زیر کلیک کنید و کانال ما را در twitch فالو کنید.

https://www.twitch.tv/softwarephilosophy/

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

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


___
Forwarded from Software Philosophy
دومین ورک‌شاپ کانال Software Philosophy روی پلتفرم Twitch شنبه ۱۳۹۷/۱۱/۰۶ ساعت ۱۹ تا ۲۰. روی این لینک کلیک کنید: https://www.twitch.tv/softwarephilosophy/

@SoftwarePhilosophy
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
معرفی کتابخانه EFCore.BulkExtensions
در سری #معرفی_اکستنشن_های_کاربردی_EFCore
Entity Framework Core Bulk Batch Extensions for Insert Update Delete and Read (CRUD) operations on SQL Server

خیلی وقتا نیاز میشه یک مرتبه حجم زیادی از رکورد ها رو توسط EFCore ذخیره کنین (مثلا import کردن از یه فایل excel)
در حالت عادی (متد Add و یا AddRange)، رکورد های شما به صورت تکی Insert میشه و سرعت بالایی نداره، بر خلافش اما، در روش Bulk Insert، همه رکورد ها به صورت یکجا Insert میشن و سرعت بسیار بسیار بالایی داره این روش (حتی تا 20 برابر سریع تر!)

این کتابخونه بی نظیر، قابلیت انجام عملیات Bulk و Batch رو در EF Core فراهم میکنه و از async هم پیشتیبانی میکنه :
- Bulk operations (Insert, Update, Delete, Read, Upsert, Sync)
- Batch operations (Delete, Update)

* برای مقایسه پرفرمنس و تفاوت سرعت بین روش عادی و Bulk هم تصویر پست گویای همه چی هست

لینک ریپازیتوری + مثال و توضیحات :
https://github.com/borisdj/EFCore.BulkExtensions

#Bulk #EFCore #Performance
@IranAspMvc
Forwarded from Iran Agile
🔴 چگونه تخمین های بهتری داشته باشیم؟

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

http://bit.ly/2TJcwEq

@iranagile
در هر زبان و کتابخانه‌ی ابتدا باید با دقت ساختار پروژه خود را بچینیم تا در میانه راه لازم نباشد تغییرات خانه‌برانداز! روی ساختار پروژه اعمال کنیم.
در مورد react باید تصمیم بگیریم چه قطعه کدهایی قرار است component باشند. چه اطلاعاتی لازم است درstate نگهداری شوند و مسائل دیگری که ممکن است فقط خاص react نباشند.
در این مقاله یک دید جامع در مورد نحوه چیدن ساختار پروژه react به شما داده می‌شود.

https://www.graph.uk/insights/react-best-practices

#مریم_کمالی (http://ow.ly/9Wa430mFGeK)

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

___
Forwarded from فلسفه دیزاین
گذری بر 10YearChallenge و غول‌های دنیای اینترنت

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

در یک اقدام جالب آقای Arun Venkatesan گریزی به دیزاین ۱۰ سال پیش پربازدید‌ترین سایت‌های دنیا زده و نمایی قدیمی و امروزی آن‌ها را در کنار هم برای مقایسه قرار داده است.

http://bit.ly/dxgn461

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

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

#چالش_ده_سال #ریدیزاین #نمونه_موفق
@Dexign فلسفه دیزاین

___
#پست_مجدد این پست تا به حال بیش از ۸۷۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
اغلب در دولوپ اپ‌های انگولاری که نیاز به بک اند برای تبادل اطالاعات وجود دارد، بک اند روی پورت دیگری از localhost بوده و یا بک اند روی سرور دیگری قرار دارد. در این صورت برای ارسال ریکوست از سمت کلاینت به سرور بک اند دو راه وجود دارد. یکی استفاده از CORS یا سرور ساید پروکسی.
خوشبختانه، Angular CLI این امکان را به ما می‌دهد که با ست کردن proxy config ریکوست از سمت کلاینت به سرور بک اند مورد نظر فرستاده شود.
لینک زیر نحوه انجام این کانفیگ را توضیح می‌دهد.

https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md

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

http://ow.ly/41My30mm7ym

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


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

___
Forwarded from Iran Agile
🔵 چگونه برای تیم‌های چابک استخدام کنیم؟

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

🚀 http://bit.ly/2WmDhAt

@iranagile
#پست_مجدد این پست تا به حال نزدیک به ۱۰۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
همیشه انتخاب یک فریم ورک JavaScript برای Front End یک چالش است و هر از گاهی ظهور یک فریم ورک جدید کار را سخت‌تر می‌کند.

فریم‌ورکVue.js (ویو خوانده میشود مانندview) فریم ورکی JavaScript است که در فوریه 2014 ارایه شد. نکته جالب توجه این فریم ورک آن است که توسط یک نفر تولید شده است و نه یک تیم، هرچند که در حال حاضر افراد زیادی در توسعه آن مشارکت دارند که توسط Evan You تولید کننده Vue.js رهبری می‌شوند.

این فریم ورک تلفیقی است از بهترین فریم ورک‌های محبوب AngularJSو ReactJS. از مزایای Vue.js سادگی استفاده، انعطاف پذیری، کم حجم بودن و یکپارچگی ساده با پروژه‌های موجود است و کد آن بسیار قابل تست است. به دلایلی که اشاره شد استفاده از Vue.js در بین توسعه دهندگان نرم افزار به سرعت در حال افزایش است.

وبسایت Vue.js:

https://vuejs.org

لینک زیر مزایای استفاده از این فریم ورک را توضیح می‌دهد:

https://hackernoon.com/what-is-vue-js-and-what-are-its-advantages-4071b7c7993d

و این لینک نیز مقایسه‌ای است از سه فریم ورک ReactJS، Angular5 و Vue.js:

https://medium.com/@TechMagic/reactjs-vs-angular5-vs-vue-js-what-to-choose-in-2018-b91e028fa91d

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

http://ow.ly/czDp30mC86D

#محمد_محبتی (http://ow.ly/4ZMN30lzoxf)

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

___
Forwarded from SQL Server (Hamidreza)
سلام و عرض ادب خدمت دوستان عزیزم
شبتون بخیر باشه
نکته ای که اخیرا زیاد میشنوم در خصوص مدیریت فایلهای LDF ، این هست که بعضی مواقع نیاز شده فایلها سایزشون کم بشه ، دوستان اومدن دیتابیس رو Detach کردن و فایل log رو حذف کرده و با استفاده از attach for rebuild دیتابیس رو attachکردن که فایل Log هم ساخته شده.!!!
این یک کار بسیار خطرناک و پر ریسکی هست و اگر به هردلیلی تراکنش های باز در فایل Log باشه دیگه فایل Log برای شما ساخته نمیشه و در واقع دیتابیس شما attach نخواهد شد.
و تنها راهش استفاده از روشهای پیچیده برای بازیابی فایلهای MDF می باشد.
لطفا برای مدیریت Log ها از روشهای بهتر مانند Log Backup استفاده کنید و زندگی بی دردسری رو تجربه کنید. 😁😁

نکته دوم و خیلی حیاتی برای دوستانی که عادت دارند مستقیما در محیطهای عملیاتی داده ها رو تغییر بدن و عملا دل شیر دارن😉
حتما از این روش استفاده کنید که اگر یک درصد خطایی هم رخ داد بتونید به شرایط نرمال برگردین.
Begin Tran
Update Table1 set field1=10

اگر دقت کرده باشین من یک Transaction باز کردم ولی نه Commit کردم نه Rollback . این باعث میشه تغییرات من در دیتابیس اعمال نشه و در همین Session من میتونم از جداولی که نیاز هست Query تهیه کنم ببینم داده ها درست اعمال شدند یا خیر.
اگر درست بود میتونم با دستور Commit تغییرات رو اعمال کنم و اگر درست نبود با Rollback تغییرات برمیگرده.
بارها پیش اومده مثلا جدولی Drop شده یا مقداری حذف شده ، با این روش به راحتی میتونید جلوی خطاهایی مانندوارد کردن اشتباه اسم جداول ، نذاشتن فیلترهای مناسب ، دستورات نابجا رو بگیریم.
امیدوارم این دو نکته کمک کنه وارد شرایط بحرانی نشین.😉😉😉

ارادتمند شما
حمیدرضا صادقیان

ID:@Hamidreza_Sadeghian
Channel :@SQL_Server
#پست_مجدد این پست تا به حال نزدیک به ۴۵۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
امکانات جدید C# 8.0 با بوی هوش مصنوعی!

نسخه major بعدی C# 7.3 که C# 8.0 خواهد طبق برنامه‌ریزی به همراز .Net Core 3.0 ریلیز خواهد شد و امکان آزمایش آن در Visual Studio 2019 Preview وجود خواهد داشت.
امکانات جذابی که به این زبان اضافه شده در لینک زیر شرح داده‌شده که به عنوان خلاصه می‌توان به امکانات زیر اشاره کرد:

- Nullable Reference Types
string? s = null;


- Async Streams
await foreach (var result in GetResultsAsync()) 
{
if (result > 20) yield return result;
}


- Ranges and Indices
Index i1 = 3; // number 3 from beginning 
Index i2 = ^4; // number 4 from end
int[] a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Console.WriteLine($"{a[i1]}, {a[i2]}"); // "3, 6"
var slice = a[i1..i2]; // { 3, 4, 5 }


- Recursive Patterns
if (p is Student { Graduated: false, Name: string name })


- Target-Typed New Expressions
Point[] ps = { new (1, 4), new (3,-2), new (9, 5) }; // all Points

وقتی نام تایپ قابل استنتاج است نیازی نیست نام کلاس هنگام new کردن مشخص شود!


به نظر می‌رسد با توجه به تمرکز جدید مایکروسافت روی هوش مصنوعی، امکاناتی که در این نسخه به زبان اضافه شده، بیشتر با هدف ساده‌سازی کار برای برنامه‌نویسان Data Science است. همانطور که می‌بینید ویژگی‌هایی از زبان Python که موجب جذابیت این زبان برای متخصصان Data Science بوده در این لیست دیده می‌شوند.

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

https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0/

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

http://ow.ly/36cL30mMFJK

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

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

___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
مقایسه تکنولوژی استفاده شده در شرکت های بزرگ برنامه نویسی دنیا

توسط این سایت می توانید بهترین تکنولوژی، ابزار ها و فریمورک های مورد استفاده در شرکت های بزرگ برنامه نویسی دنیا را مشاهده و با یکدیگر مقایسه کنید.
https://stackshare.io/

مثلا لینک زیر تکنولوژی ها و ابزاری های مورد استفاده در شرکت Airbnb را نمایش می دهد.
https://stackshare.io/airbnb/airbnb
_______________
@IranAspMvc
Forwarded from Iran Agile
🔵 یادداشت برداری و مستند کردن نتایج اسپرینت‌ها می‌تواند ابزار مفیدی برای اسکرام مسترها باشد، به گونه‌ای که می‌توانند هر ازگاهی آن را با تیم مرور کرده و پیشرفت یا پسرفت خود را بهتر درک کنند، بعلاوه در برخی موارد میتواند بعنوان گزارش عملکرد تیم نیز مورد استفاده قرار گیرد.

🚀 http://bit.ly/2RPb3Lj

@iranagile
خداحافظی با خطای میلیون دلاری: NullReferenceException

پس تغییر جنجالی C# 8.0، یعنی اضافه شدن امکان Nullable Reference Types، دیگر متغییرهای Reference Type مقدار نال قبول نخواند کرد مگر نوعشان Nullable باشد.
‍‍‍‍‍‍```
Person p = null; // ERROR
Person? P = null; // OK
string s = null; //ERROR
string? s = null; OK
اینکه این ویژگی فعال باشد یا نه از طریق تنظیمات پروژه قابل تنظیم است.
این تغییر باعث می‌شود این خطای معروف از بین برود. از طرفی پروژه‌هایی که از قبل نوشته شده‌اند نیاز به تغییرات دارند. فرانک کروگر یکی از برنامه‌نویسانی است که یکی از برنامه‌های خود را کامل بازنویسی کرده و تجربیات خود را د به اشتراک گذاشته است. جدا از اینکه تجربیاتش بسیار خواندی هستند، در حین تبدیل به چالش‌هایی برخورده که نتیجه یکی از آنها پیشنهاد اضافه کردن var? به C# بوده که نتیجه‌گیری و کاربرد جالبی است.

https://praeclarum.org/2018/12/17/nullable-reference-types.html

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

http://ow.ly/paMV30nGBdD

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

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

___
#پست_مجدد این پست تا به حال بیش از ۲۱۰۰ بار مشاهده شده و به نظر می‌رسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
آآآیا از کار کردن این فایل اکسل‌های پر از شیت رنج می‌برییییید!؟
آآآیا وقتی می‌خواین یه شیت رو پیدا کنین بیچاره می‌شین!؟
آآآیا وقتی برای فهمیدن اینکه فرمولای این شیت از کدوم شیت‌های دیگه استفاده کرده «شیت گیجه» می‌گیرید!؟

دییییگر نگران نباشید!

با افزونه «Sheet Explorer» همه چیز راحت می‌شود:
- شیت‌ها رو راحت و واضح می‌بینید.
- می‌تونید بین شیت‌ها جستجو کنید.
- می‌تونید وابستگی هر شیت رو به شیت‌های دیگه به صورت درختی ببینید.

جالبی افزونه‌های Office این است که می‌توان آنها را کاملا با JavaScript نوشت و از آنها استفاده کرد. مقاله زیر خیلی خلاصه توضیح داده‌است که افزونه بالا چگونه نوشته شده‌است. همچنین می‌توانید کد آن را در github بررسی کنید.

http://mehrandvd.me/2016/10/10/excel-sheet-explorer-turning-shits-to-sheets/

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

http://ow.ly/Jmw130jZkcI

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

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


___
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
مقایسه بهترین کتابخانه های دات نت
https://dotnet.libhunt.com
توسط این سایت میتونین کتابخانه های دات نت رو با هم مقایسه کنین و بفهمین کدوم محبوب تره، همچنین میتونین لیستی از کتابخانه های مشابه رو هم برای هر کدوم پیدا کنید.

این سایت از پارامتر های مختلفی برای مقایسه و امتیازدهی کتابخانه ها استفاده میکنه. از جمله:
- Star, Fork, Watcher گیتهاب
- میزان فعال بودن بر اساس آخریت کامیت
- تعداد دانلود در ماه
- میزان کیفیت کد و ...
- میزان سرچ اش رو هم براسا امار Google Trend نشون میده

مثلا لینک زیر IOC Container های معروف Autofac و Ninject را با هم مقایسه میکنه.
https://dotnet.libhunt.com/compare-autofac-vs-ninject?rel=cmp-lib

🔸 توسط این سایت و سایت قبلی که معرفی کردیم میتونین بدون شک "محبوب ترین" کتابخانه و ابزار ها رو برای کاراتون پیدا کنین.
@IranAspMvc