Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Quality of a software mostly comes from the quality of its developers, not from the quality of its language or technologies.
https://mehrandvd.me/2015/10/15/software-quality-comes-from-people-not-languages/


@SoftwarePhilosophy
ما به عنوان مهندسین نرم‌افزار عادت کردیم که نرم‌افزار بسازیم، در حقیقت به آن معتاد شده‌ایم. به خاطر همین موضو است که اغلب دوست نداریم به این فکر کنیم که تغییری که در نرم‌افزار می‌دهیم چطور باید در نسخه لایو اجرایی شود. خیلی وقت‌ها نرم‌افزار را به صورت بسیار عالی تغییر می‌دهیم، ولی برنامه‌ای برای اینکه این تغییر چطور باید در نسخه‌اجرایی اعمال شود نداریم.
یکی از دغدغه‌ اصلی یک مهندس نرم‌افزار خوب، تمرکز بر Software Migration است. هر قطعه کدی که توسط یک مهندس نرم‌افزار نوشته می‌شود باید با دید یک Change دیده شود که باید روی نسخه لایو اعمال شود، نه صرفا یک کد جدید که Create شده‌است.

https://mehrandvd.me/2015/09/06/be-a-developer-not-a-programmer/


@SoftwarePhilosophy


___
یکی از مفاهیم خیلی مهم برای برنامه نویسان کلاینت ساید Box Sizing و نحوه استفاده از اونه. این مقاله خیلی خلاصه توضیح داده.

https://css-tricks.com/box-sizing/


@SoftwarePhilosophy


___
اگر می‌خواهید بدانید برای پورت کردن برنامه‌های قبلی خود به .Net Core چه کارهایی نیاز است انجام شود، این مقاله کمک زیادی به شما خواهد کرد. این مقاله توسط Immo Landwerth نوشته شده‌است که یکی از افراد تیم .Net در مایکروسافت است.

https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/


@SoftwarePhilosophy


___
کتاب فوق العاده Roslyn Succinctly برای کسانی می‌خواهند با این تکنولوژی عجیب آشنا بشن! تکنولوژی Roslyn که یکی از عجیب‌ترین و جدیدترین مفاهیم رو در دنیای کامپایلر معرفی کرده می‌تواند کاربردهای بسیار عجیب و باور نکردنی داشته باشد. برنامه‌هایی که توانایی درک و یا حتی تغییر کدهای خود را دارند.

https://channel9.msdn.com/coding4fun/blog/Roslyn-Succinctly


@SoftwarePhilosophy


___
اتفاقی که باید در وب می‌افتاد بالاخره افتاد! گوگل، مایکروسافت و موزیلا در یک تیم مشترک تصمیم گرفته‌اند تا بر روی یک باینری فرمت جدید برای وب کار کنند. این فرمت WebAssembly نام داره و تکنولوژی آن بر بستر C++ سوار شده همچنین گفته شده سرعت Decode در آن ۲۳ برابر سریعتر است.

https://techcrunch.com/2015/06/17/google-microsoft-mozilla-and-others-team-up-to-launch-webassembly-a-new-binary-format-for-the-web/


@SoftwarePhilosophy


___
یک مقاله جذاب از Dino Esposito یکی از معماران با تجربه نرم‌افزار که تخصصش معماری نرم‌افزارهای Large Scale و Enterprise است.
در این مقاله توضیح داده شده که چطور مفهوم IQueryable<T> و LINQ در معماری CQRS استفاده می‌شود و چگونه مفهوم Deffered Execution باعث معجزه در معماری نرم‌افزار می‌شود.


https://msdn.microsoft.com/en-us/magazine/mt683793


@SoftwarePhilosophy


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

https://blogs.technet.microsoft.com/dataplatforminsider/2016/03/10/mapping-the-universe-with-sql-server/


@SoftwarePhilosophy


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

https://blogs.msdn.microsoft.com/visualstudioalm/2016/03/02/linking-work-items-to-git-branches-commits-and-pull-requests/



@SoftwarePhilosophy


___
امکاناتی که در Update 2 به TFS 2015 اضافه شده. به طور خلاصه، امکانات مربوط به داشبورد، امکانات مربوط به کار با گیت و یکپارچگی بیشتر با ابزارهای تست جاوا از ویژگی‌های جذاب اضافه شده در این نسخه هستند.

https://www.visualstudio.com/news/tfs2015-update2-vs


@SoftwarePhilosophy


___
در این پست توضیح داده شده که چرا استفاده از git به عنوان سورس کنترل بهتر از TFVC است. در سالهای اخیر استفاده از گیت به قدری محبوب شده‌است که حتی در TFS نیز از هر دو حالت سورس کنترل پشتیبانی می‌شود و شما می‌توانید از یک git repository به عنوان سورس کنترل در TFS استفاده کنید.

https://www.linkedin.com/pulse/why-should-you-use-git-over-tfs-has-altaiar?trk=hp-feed-article-title-share


@SoftwarePhilosophy


___
یه کتابخانه جدید که امکانات LINQ رو به TypeScript اضافه می‌کنه.

https://github.com/kutyel/linq


@SoftwarePhilosophy


___
برای افرادی که برنامه نویسی IoT علاقه دارند، Raspberry Pi 3 یک سخت افزار هیجان انگیز به حساب می‌آید. مهمترین ویژگی این مدل نسبت به مدل‌های قبلی وجود Builtin WiFi در آن می‌باشد. در این مقاله از Scott Hanselman‌ نشان داده شده که چطور با استفاده از زبان JavaScript و VS Code می‌توان روی این سخت‌افزار کد نوشت.

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


@SoftwarePhilosophy


___
در این مقاله، چند Design Pattern‌ مهم که هنگام کار با NodeJS باید از آنها استفاده کنید توضیح داده شده‌است. خواندن این مقاله از آن جهت جالب است که برخی از این الگوها بسیار کاربردی هستند و در معماری‌های جدید بسیار استفاده می‌شوند. برای مثال مفهوم Middleware، مفهومی است که در Owin‌ نیز استفاده شده و معماری asp.net core نیز بر اساس همین مفهوم بنا شده.

https://webapplog.com/node-patterns-from-callbacks-to-observer/#post-1804


@SoftwarePhilosophy


___
این مقاله جالب توضیح می‌دهد که چطور تنبلی در کد نویسی باعث می‌شود ماژول‌های بیش از حد کوچک ساخته شود. در این مقاله دو ماژول npm معرفی شده‌اند که چند خط بیشتر ندارند. برای مثال در npm یک تابع به نام isArray وجود دارد که فقط یک خط است و تا به حال ۱۸ میلیون دانلود داشته. نویسنده این مقاله توضیح داده است که چرا برنامه نویسان به این سمت رفته‌اند و توابعی به این سادگی را نیز به صورت پکیج تعریف کرده‌اند.

https://www.haneycodes.net/npm-left-pad-have-we-forgotten-how-to-program/


@SoftwarePhilosophy


___
اگر از Entity Framework Code First استفاده می‌کنید، یکی از ویژگی‌های قدرتمند آن Migrations است. این قابلیت کمک می‌کند تا به روز رسانی دیتابیس در هنگام ارائه نسخه جدید نرم‌افزار بسیار راحت و امن و بدون خطا صورت گیرد. پیشنهاد می‌کنم حتمن آن را یاد بگیرید تا بتوانید از قدرت آن در پروژه‌ها استفاده کنید. ولی با توجه به اینکه ذاتا ماهیت Migration مفهوم پیچیده‌ای است، قبل از شروع کار با این قابلیت به اندازه کافی مطالعه کنید. به هیچ وجه زودتر از زمانی که کاملن به آن مسلط نشده‌اید از آن را در یک پروژه عملیاتی استفاده نکنید. ولی وقتی بر آن مسلط شدید ابزاری فوق‌العاده قدرتمند خواهد بود.
مقاله که توسط کسی نوشته شده که کاملا به صورت حرفه‌ای با آن کار کرده، به طور خلاطه ۹ نکته‌ای که حتمن هنگام کار با EF Migrations باید بدانید را شرح داده.


https://elegantcode.com/2012/04/12/entity-framework-migrations-tips/



@SoftwarePhilosophy


___
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
یکی از مباحثی که همیشه در تشکیل تیم‌های نرم‌افزاری مطرح است، انتخاب زبان برنامه‌نویسی و یا تکنولوژی‌های مورد استفاده است. مقایسه محصولات موفق و نا موفق نشان می‌دهد هیچکدام از آنها صرفا با یک تکنولوژی و یا یک زبان خاص نوشته نشده‌اند. برای مثال سیستم‌های موفق زیادی وجود دارند که با Java و یا C# نوشته شده‌اند. همچنین سیستم‌های بی کیفیت زیادی نیز وجود دارد که با Java و یا C# نوشته شده‌اند. این حقیقت نشان می‌دهد دلیل موفقیت یا شکست سیستم‌ها نمی‌تواند زبان برنامه‌نویسی باشد. مقاله زیر توضیح می‌دهد که چطور طرز فکر برنامه‌نویس‌ها موفقیت و یا شکست یک سیستم را رقم می‌زند.

https://mehrandvd.me/2015/10/15/software-quality-comes-from-people-not-languages/

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


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

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

https://uxmag.com/articles/the-price-of-not-using-ux-patterns

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


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

___
یکی از مهمترین پارامترهای یک کد خوب، نامگذاری صحیح متغییر‌ها، متدها، کلاس‌ها و سایر اجزای برنامه‌نویسی است. در هر زبان برنامه نویسی معمولا Convention هایی وجود دارد که رعایت آنها باعث می‌شود کد شما برای سایر برنامه‌نویسان آن زبان نیز خوانا باشد. اگر شما با زبان‌هایی مانند C# یا VB.NET برنامه می‌نویسید، مستند زیر استاندارد نامگذاری رعایت شده در .NET Framework را نشان می‌دهد. این مستند که به FDG یا Framework Design Guidelines معروف است، مستند استانداردی است که قبل ساخته شدن .Net Framework توسط یک تیم خبره نوشته شد و تمام تیم‌های برنامه نویسی داخل شرکت مایکروسافت موظف به رعایت آن هستند. این مستند هم به صورت کتابی به همین نام منتشر شده و هم همیشه آخرین نسخه آن از طریق لینک زیر قابل مطالعه و دسترسی است.

https://msdn.microsoft.com/en-us/library/ms229002%28v=vs.110%29.aspx

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


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


___