Software Philosophy
3.46K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from Software Philosophy
یک پروژه برای تحلیل جهان هستی!
در حال حاضر ۱۲ ترابایت اطلاعات در یک دیتابیس به نام SkyServer ذخیره شده است که اطلاعات وضعیت کهشکان‌ها رو با جزئیات بالا نگه می‌داره و به روز می‌شه. این مقاله نشون می‌ده که چطور اطلاعات کهکشان‌ها در این دیتابیس ذخیره شده و معماری فیزیکی دیتابیس‌ها و سخت‌افزار آنها چطور طراحی شده.

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


@SoftwarePhilosophy


___
Forwarded from Software Philosophy
با ما در ارتباط باشید!
تا امروز فیدبک‌های خیلی خوبی از شما دوستان گرفتیم. بر اساس فیدبک‌های شما تصمیم گرفتیم که پست‌های این کانال را در سه دسته بندی پست کنیم:
۱) مطالب مهندسی و معماری نرم‌افزار و مدیریت تیم‌های نرم‌افزاری
۲) مطالب مربوط به آخرین تکنولوژی‌ها
۳) مطالب مربوط به تکنولوژی‌های مرسوم که در شرکت‌ها استفاده می‌شود.

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

لطفا اگر نظر، پیشنهاد، انتقاد و یا هرگونه فیدبکی نسبت به این کانال دارید، در توئیتر بنویسید. مطمئن باشید ما آنها را می‌خوانیم. (در توئیتر https://twitter.com/mehrandvd را منشن کنید و از هشتگ #SoftwarePhilosophy استفاده کنید)
پروتکل HTTP/2 امکانات جالبی دارد که اکثر آنها بر روی Perfomance تاثیر بسیار زیادی دارند. باز نگه داشتن Connection و استفاده از آن برای چندین درخواست و همچنین پشتیبانی از Server Push از مزایای این پروتکل هستند. مقاله زیر در مورد این پروتکل توضیحاتی بیشتر و کاربردی داده‌است.

https://blog.cloudflare.com/announcing-support-for-http-2-server-push-2/

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

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



___
Forwarded from Iran .Net
فرض کنید تعداد فایل های javascript و css زیادی در پروژه تان دارید. اخیرا هم مطالب زیادی در مورد bundling و minfication خوانده اید و می خواهید با اعتماد به نفس بالا، با استفاده از قابلیت های توکار ASPNET کاری کنید که بهره وری سایت تان را با این روش ها بالا ببرید.

مشکلی که در این مواقع پیش می آید این است که دیباگ این نوع از فایل های جدیدِ bundle و minify شده به شدت سخت و دشوار است و این ها هیچ شباهتی به فایل هایی که کد شان توسط شما تولید شده اند، ندارند.
اگر در محیط Production و "عملیاتی" مشکلی به شما گزارش شود، شما چطور می خواهید بفهمید که مشکل از کجاست؟ مخصوصا این مشکل زمانی محرز تر می شود که تعداد زیادی فایل js داشته باشید که همه شان را در یک فایل bundle کرده باشید و بعد هم با انجام minification، کد نهایی را به کلی دگرگون کرده اید و دیگر از کد سر در نمیاورید.
این مشکل زمانی حادتر می شود که کد های اصلی ما با TypeScript نوشته شده باشند. یا فایل های CSS مان با SASS و یا LESS تولید شده باشند. دیگر عملا هیچ ربط و نسخی بین کدهایی که توسعه کرده ایم و کدهایی که مرورگر استفاده می کند وجود ندارد و کار دیباگ بسیار دشوار خواهد شد.
راه حل این مشکل استفاده از فایل هایی به نام Sourcemap می باشد. sourcemap ها در همه مرورگرهای مدرن پشتیبانی می شوند. به کمک این فایل ها، مرورگر در عین اینکه فایل های minify و bundle شده را اجرا می کند، در هنگام دیباگ می تواند نشان دهد که هر خط از این کد ها، به کدام فایل و کدام خط از کدهایی که ما توسعه داده ایم مربوط می شوند.
متاسفانه قابلیت های سنتی توکار ASPNET امکان تولید فایل های sourcemap را ندارند و برنامه نویس های سنتی ASPNET از این قابلیت بی بهره می باشند. پس باید با سختیِ دیباگ کدهای عجیب غریب سمت کلاینت دسته و پنجه نرم کنند.
یکی از ساده ترین راه ها برای تولید فایل های sourcemap استفاده از gulp می باشد.
پس "بیایید برای پیوستن به دنیای مدرن وب از gulp استفاده کنیم!"

تشریح sourcemap با مثال:
https://www.sitepoint.com/enhance-your-javascript-debugging-with-cross-browser-source-maps/
حتما تا به حال از کتابخانه Bootstrap استفاده کرده‌اید. این نوع کتابخانه‌ها کمک می‌کنند که بتوانید به راحتی از امکانات CSS استفاده کنید، بدون اینکه نیاز به درگیر شدن با پیچیدگی‌های آن پیدا کنید. کتابخانه‌های زیادی از این قبیل به وجود آمده‌اند. یکی از این کتابخانه‌ها که اخیرا به دنیای برنامه‌نویسی معرفی شده کتابخانه Office UI Fabric است. این کتابخانه که تقریبا تمام امکانات گرید سیستمBootstrap را دارد بر اساس معماری مدرن UI که در نرم‌افزارهای مایکروسافت استفاده شده ساخته شده‌است. اگر با این کتابخانه کار کنید، می‌توانید برنامه‌هایی بسازید که UI آن سازگار با برنامه‌هایی مانند Word Online, Excel Online, Outlook Online و مانند آن باشد.

https://dev.office.com/fabric/get-started

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

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



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

https://sirwan.info/Why-Angular

#سیروان_عفیفی
لینکدین:
https://ir.linkedin.com/in/sirwan-afifi-73225345

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



___
هشت نکته در زبان C# که احتمالا آنها را نمی‌دانید! دو نکته که برای من جالب بود:
۱. در Indexer ها می‌توان از params استفاده کرد و چندین پارامتر ورودی استفاده کرد.
۲. بر روی enum ها هم می‌توان Extension Method تعریف کرد.

https://damieng.com/blog/2012/10/29/8-things-you-probably-didnt-know-about-csharp

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

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


___
شرکت اوراکل اعلام کرد زمان ارائه Java 9 تا سال ۲۰۱۷ به تعویق انداخته شده‌است. علت این تصمیم پروژه Jigsaw اعلام شده‌است. هدف پروژه Jigsaw ماژولار کردن و شکستن JRE به Interoperable Components است. به این ترتیب با انجام این پروژه هر برنامه می‌تواند JRE شخصی‌سازی شده‌تری داشته باشد که در نتیجه می‌توان برنامه‌های جاوا را به راحتی به قطعات کوچک محساباتی Scale‌ کرد که منجر به بهبود سرعت و امنیت می‌شود. در این زمینه Mark Reinhold‌ معمار ارشد پلتفرم جاوا در شرکت اوراکل گفته است که برنامه‌نویسان علاقه بسیار زیادی به این رویکرد از طریق فیدبک‌ها ارائه داده‌اند.

https://blog.takipi.com/jigsaw-delays-push-java-9-launch-date-to-2017/

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

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



___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
ضد الگوی ‌Blind Developer یا «برنامه نویس کور» یک ضد الگوی شایع در تیم‌های نرم‌افزاری است که معمولا از زبان معمار نرم‌افزار با این جمله تشریح می‌شود: «هیچوقت به برنامه‌نویس اجازه ندهید با مشتری صحبت کند». این مفهوم به این دلیل به وجود آمده که معمولا افراد غیر برنامه‌نویس بهتر نیازمندی کاربر را درک می‌کنند. البته این واقعیت اغلب صادق است ولی نکته‌ای که به آن توجه نشده‌است تغییرات است. تغییرات در نیازمندی باعث افزایش هزینه توسعه می‌شود. در جریان نبودن برنامه‌نویسان از بیزنس معمولا باعث می‌شود این تغییرات هزینه بسیار بیشتری داشته باشد. همچنین باعث می‌شود بسیاری از ریسک‌ها خیلی دیر و حتی هنگام تحویل محصول نمایان شوند.

در لینک زیر این ضد الگو بیشتر توضیح داده شده‌است.

https://sourcemaking.com/antipatterns/mushroom-management

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

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



___
برای شما که علاقه دارید (عجله دارید!) تا امکانات C# 7.0 را همین الان امتحان کنید، قبل از اینکه نسخه‌ نهایی آن منتشر شود، لینک زیر توضیح می‌دهد که چطور می‌توانید در Visual Studio 2015 و یا Visual Studio '15' (نسخه بعدی) نسخه جدید زبان C# را امتحان کنید. با توجه به اینکه کامپایلر جدید این زبان (Roslyn) دیگر Open Source شده، شما می‌توانید حتی آخرین نسخه‌ موجود را امتحان کنید.

https://www.c-sharpcorner.com/article/how-to-compile-test-C-Sharp-7-features/

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

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



___
Forwarded from فلسفه دیزاین
درس‌هایی درباره «دکمه‌ها»، خالص‌ترین نماینده یک طراحی

شاید تا حالا از این دید که درباره‌ش خواهیم گفت به دکمه‌ها نگاه نکرده باشید.
دکمه‌ها دوست داشتنی هستند. دکمه‌ها باعث «اعمال تغییرات» می‌شوند، دکمه‌ها شما رو به «مرحله بعدی» می‌برن و باعث «انجام» کارها می‌شوند.
دکمه‌ها بهترین نماینده زبان یک طراحی (Design Language) هستند و المان‌هایی که در اون‌ها استفاده میشه، می‌تونه پایه بخش‌های پیچیده‌تر طراحی باشه.
دکمه‌ها از سه بخش مهم رنگ، تایپوگرافی و آیکنوگرافی تشکیل شدند. این سه بخش می‌تونن پایه زبان طراحی و راهنمای بصری (Style Guide) باشن. دکمه‌ها حتی بحث «فاصله‌ها» رو هم با موارد مثل Padding و Margin به چالش می‌کشند. بُعد طراحی رو با سایه زیرشون و حس طراحی رو با گوشه‌های گرد و یا تیز‌شون مشخص می‌کنند.

پس دکمه‌ها یکی از مهم‌ترین بخش‌های یک طراحی هستند.
در این مقاله با Nathan Curtis، بنیانگذار موسسه تجربه کاربری Eight Shapes همراه می‌شیم تا ۱۲ درسی رو که ایشون درباره «دکمه‌ها» در طراحی سیستم‌ها آموختن، بخونیم.

https://medium.com/eightshapes-llc/buttons-in-design-systems-eac3acf7e23

#مفاهیم #دکمه #طراحی_سیستم #معرفی_مقاله #زبان_طراحی
@HamDesign هَم دیزاین
همیشه یکی از مراحل مهم در توسعه نرم‌افزار، مرحله Optimization است. در این مرحله معمولا کدها نوشته شده و حال نوبت رفع کندی‌هایی است که در برنامه وجود دارد. برای این کار باید ابتدا تشخیص دهید چه قسمت‌هایی از برنامه کند است، یا به طور دقیق‌تر چه متدهایی و یا دقیقا اجرای چه خط‌هایی باعث کند شدن برنامه شده‌است. به ابزارهایی که به شما کمک می‌کنند بتوانید نرم‌افزار خود را از این لحاظ بررسی کنید Performance Profiler می‌گویند. از نمونه ابزارهای قوی در این حوزه می‌توان به dotTrace و ANZ اشاره کرد. در خود Visual Studio نیز چنین ابزاری به نام Profiler وجود دارد که لینک زیر نحوه استفاده از آن را شرح داده‌است.

https://blogs.msdn.microsoft.com/visualstudioalm/2016/04/28/how-cpu-sampling-works/

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

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



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

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


@SoftwarePhilosophy


___
از جمله تکنولوژی‌های جذابی که این روز‌ها به عنوان تکنولوژی‌های آینده وب مطرح هستند Angular 2، TypeScript و ASP.NET Core برای ساخت برنامه‌های Cross-Platform هستند. یکی از جذابیت‌های این تکولوژی‌ها این است که تمامی آنها کاملا از ابتدا نوشته شده‌اند و با توجه به این که نیازی به پشتیبانی از نسخه‌های قبل ندارند معماری کاملا نوینی و مدرنی دارند.
این لینک به صورت قدم به قدم آموزش داده است که همین الان چطور می‌توانید با این تکنولوژی‌ها برنامه تولید کنید. بنابراین با خواندن این پست و انجام مراحل شما یک محصول کامل خواهید نوشت.


https://chsakell.com/2016/01/01/cross-platform-single-page-applications-with-asp-net-5-angular-2-typescript/

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

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



___
معماری نرم‌افزاری و سخت‌افزاری سایت StackOverflow در سایت ۲۰۱۶. در این پست Nick Craver یکی از برنامه‌نویسان سایت StackOverflow حجم بالای ترافیک این سایت را توصیف کرده و توضیح می‌دهد که در معماری نرم‌افزاری که برای نوشتن این سایت استفاده شده از چه تکنولوژی‌های استفاده شده‌است. از آنجایی که این سایت یکی از محصولات موفق با بار ترافیک بالا است، تکنولوژی‌های استفاده شده در این سایت همیشه برای برنامه‌نویسان جذاب بوده است.

https://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/

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

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



___
اگر می‌خواهید از Entity Framework Core روی SQLite استفاده کنید، لینک زیر محدودیت‌های EF Core را روی آنها توضیح داده‌است. البته بیشتر این محدودیت‌ها به دلیل پشتیبانی نکردن خود SQLite از این عملیات است. برای مثال شما می‌توانید برای رفع محدودیت‌های Migration در مورد این کارهای خاص از متد Sql(string) استفاده کنید.

https://ef.readthedocs.io/en/latest/providers/sqlite/limitations.html

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

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



___
پروژه Jil یک کتابخانه جذاب برای استفاده به عنوان JSON Serializer است. اگر تا به حال از کتابخانه‌هایی مانند NewtonSoft استفاده کرده‌اید و دغدغه Performance داشته‌اید این کتابخانه می‌تواند جایگزین مناسبی باشد. جالب است بدانید که کتابخانه‌ای است که برنامه‌نویسان سایت StackOverflow به دلیل Performance انتخاب کرده‌اند و در طراحی این سایت از آن استفاده کرده‌اند.

https://github.com/kevin-montrose/Jil

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

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



___
نسل جدید بازی‌ها و همچنین نرم‌افزارها در راه است. این نسل جدید بر پایه VR یا «واقعیت مجازی» بنا شده‌است. از آنجایی که این مفهوم هنوز خیلی جدید است خیلی مطالب هنوز در مورد آن دقیق و مشخص نشده است. از جمله این مفاهیم استانداردهای UX است که امروزه در محیط‌های دیگر خیلی به آن پرداخته شده‌است. واقعیت مجازی محیطی کاملا متفاوت با محیط‌های قبلی است و نیازمند باز طراحی این استانداردها است. لینک زیر استراتژی‌هایی را برای UX بهتر در بازی‌های کامپیوتری مبتنی بر VR ارائه داده‌است.

https://uxmag.com/articles/4-strategies-for-mastering-ux-in-virtual-reality-games

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

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



___
همیشه یکی از مهمترین کارهایی که باید توسط یک معمار نرم‌افزار انجام شود و معمولا هم اصلا انجام نمی‌شود(!) فکر کردن به نحوه انتقال به نسخه جدید است. در این فرایند معمولا با کلماتی مانند Deployment یا Migration سر و کار دارید. پست زیر توسط یکی از برنامه‌نویسان سایت StackOverflow نوشته‌شده است و توضیح می‌دهد فرایند Deployment این سایت در سال 2016 چگونه طراحی شده‌است. نحوه برخورد با سورس کدها، مراحلی که نیاز به یک انسان دارد، مدیریت Branch ها، Database Migration، مدیریت Translation ها و نکات بسیاری را برای یادگیری دارد.

https://nickcraver.com/blog/2016/05/03/stack-overflow-how-we-do-deployment-2016-edition/

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

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



___