Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from Software Philosophy
عادت‌های خوب برنامه‌نویسی در هر زبان با زبان دیگر متفاوت است. یکی از نکاتی که در مورد عادت‌های برنامه‌نویسی مهم است، درک این مطلب است که هنگام استفاده از هر زبان یا تکنولوژی باید «مانند آن» فکر کنید و سعی نکنید عادت‌های قبلی خود را وارد زبان جدید کنید و یا طرز فکر قبلی خود را به زبان جدید تحمیل کنید. برای مثال اگر با زبان‌های شی‌گرا کار کرده‌اید، هنگام کار با یک زبان Functional سعی کنید مثل آن فکر کنید.
مقاله زیر توضیح می‌دهد چگونه برای کار با زبان‌های Functional مانند F# باید طرز فکر خود را تغییر دهید.

https://www.codeproject.com/Articles/462767/How-to-Think-Like-a-Functional-Programmer

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

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



___
Forwarded from Software Philosophy
بهترین UX برای یک برنامه، UXی است که دیده نمی‌شود! هر چه تجربه کاربری یک برنامه بهتر طراحی شده باشد، باعث می‌شود کاربر احساس راحتی بیشتری کند و اصلا احساس نکند چیزی وجود دارد! برای این منظور باید اصولی را در طراحی برنامه رعایت کرد.
- طراحی باید طوری باشد که همه چیز آشنا به نظر برسد!
- تمیز بودن و خلوت بودن به اندازه کاربردی بودن مهم است.
- رعایت اصل سادگی کمک بزرگی به طراحی روان‌تر می‌کند.
لینک زیر مواردی را که برای رسیدن به یک UX که دیده نشود لازم است را توضیح می‌دهد.

https://uxmag.com/articles/the-best-enterprise-ux-is-the-one-you-never-see

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

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



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

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

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

در ادامه با یه مقاله دیگه از Julie Zhou همراه باشید تا تفاوت‌های جالبی رو که ایشون بین طراحان ارشد و تازه‌کار قائل هستند، باهم مرور کنیم.

https://medium.com/the-year-of-the-looking-glass/junior-designers-vs-senior-designers-fbe483d3b51e

#معرفی_مقاله #مفاهیم
@HamDesign هَم دیزاین
Forwarded from Software Philosophy
چطور برنامه‌نویسی موازی را برای مادربزرگتان توضیح دهید!؟

برنامه نویسی موازی (Parallel Programming) و برنامه نویسی ناهمگام (Asynchronous Programming) مفاهیم نسبتا جدیدی در دنیای برنامه‌نویسی هستند که برای اغلب برنامه‌نویسان جدید است. همه در مورد آن شنیده‌انم ولی اغلب واضح نیست که دقیقا چیست و چرا سخت است. یک مفهوم پایه برای درک این مفاهیم پایه Thread یا نخ است. نخ‌ها مفاهیمی هستند که وظیفه انجام کارها روی CPU را دارند. در دنیای ما انسان‌ها کسانی هستند که کار انجام می‌دهند. مقاله زیر مفهوم «نخ» را به «انسان» شبیه دیده‌است و سعی کرده‌است مفاهیم پیچیده دنیای برنامه‌نویسی را با مفاهیم ساده‌ دنیای ما انسان‌ها توضیح دهد.

https://mehrandvd.me/2016/04/18/parallel-programming-grandmother/


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

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



___
فریم‌ورک Bootstrap به عنوان یکی از محبوب‌ترین فریم‌ورک‌های CSS شناخته می‌شود. این فریم‌ورک به حدی محبوب شده‌است که آشنایی با آن در بسیاری از جلسات مصاحبه فنی برای موقعیت Front-End Developer حیاتی است.
لینک زیر سوالات متداولی که در جلسات مصاحبه با نیرو‌های جدید در مورد این فریم‌ورک پرسیده می‌شود مطرح شده‌اند.

https://www.c-sharpcorner.com/article/top-bootstrap-interview-questions-and-answers

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

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



___
پروژه یا محصول؟ مدیر پروژه یا مدیر محصول؟

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

شما در حال توسعه کدام یک هستید؟ محصول یا پروژه؟

https://www.brainmates.com.au/brainrants/project-manager-vs-product-manager

#کاروان_جافی

لینکدین:
https://uk.linkedin.com/in/karvan-jafi-96897027

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



___
Forwarded from Iran .Net
انتشار نسخه نهایی aspnet core 1


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

البته هنوز signalR به این نسخه از aspnet اضافه نشده است.

https://blogs.msdn.microsoft.com/webdev/2016/06/27/announcing-asp-net-core-1-0/
تایپ پیش‌فرض Entity Framework برای نوع تاریخ در دیتابیس datetime است. این تایپ توانایی نگهداری زمانهایی بیشتر از «1/1/1753» را دارد. از طرفی در زبان C# مقدار پیش‌فرض برای DateTime مقدار «1/1/0001» می‌باشد. به همین دلیل اگر یک Property از این نوع داشته باشید هنگام ذخیره در دیتابیس خطا رخ می‌دهد. برای رفع این مشکل یا باید نوع این ستون را به datetime2 تغییر دهید و یا از نوع Nullable یا «DateTime?» استفاده کنید.

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

https://codemeek.blogspot.com/2013/07/resolve-entity-framework-error.html

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

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



___
نحوه آموزش یک زبان برنامه‌نویسی و یا یک تکنولوژی معمولا در محبوبیت آن نقش مهمی دارند. معمولا تکنولوژی‌ها و پلتفرم‌هایی محبوب می‌شوند که روش یادگیری آنها ساده‌تر و مستند تر باشد. سایت زیر برای یادگیری زبان C# روش جالبی را برگزیده است. در این سایت شما می‌توانید زبان برنامه‌نویسی که قبلا با آن کار می‌کرده‌اید مانند VB6 یا C++ را انتخاب کنید. محتوی آموزشی این سایت بر اساس تجربه قبلی شما تغییر می‌کند تا با بازدهی بیشتری آموزش انجام شود.

https://www.microsoft.com/net/tutorials/csharp/getting-started


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

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


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


https://goo.gl/G8SyJU

#مهدی_نظری

لینکدین
https://ir.linkedin.com/in/mohammad-mahdi-nazari-90097b58

توییتر
https://twitter.com/ShamehdiN

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


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

https://mehrandvd.me/2016/06/18/covariant-and-contravariant/

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

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



___
امروزه استفاده از فریم ورکهای css برای برنامه نویسان front end بسیار رایج است.
فریم ورکهای زیادی در این راستا وجود دارد ولی تعداد محدودی از آنها به عنوان فریم ورک خوب شناخته شده اند.
مقاله زیر به صورت خلاصه به معرفی و بررسی 5 فریم ورک برتر پرداخته است و نقاط قوت و ضعف آنها را بیان کرده است.
این 5 فریم ورکها عبارتند از:
• Bootstrap
• Fundation by ZURB
• Semantic UI
• Pure by Yahoo
• Ukit by YOOtheme

https://www.sitepoint.com/5-most-popular-frontend-frameworks-compared

#مریم_داودی

لینکدین:
https://www.linkedin.com/in/maryam-davoudi-7913565a

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


___
Forwarded from Software Philosophy
همیشه هر چیز خوبی، می‌تواند بد استفاده شود و نتیجه عکس دهد. این قضیه در مورد تکنولوژی هم صادق است. مقاله زیر توضیح می‌دهد که چه عادت‌های اشتباهی هنگام کار با LINQ می‌تواند شما را به اشتباه بیندازد و باعث ایجاد کد بد شود.
یکی از خطرناک‌ترین ویژگی‌های LINQ این است که وقتی با آن کار می‌کنید احساس می‌کنید خیلی باهوشید که غالبا باعث می‌شود کد احمقانه و پیچیده‌ای با آن بنویسید. فهمیدن مفهوم Provider ها نیز مسئله مهمی است که باید با آن آشنا باشید.
مقاله زیر این نکات را شرح می‌دهد.

https://mehrandvd.me/2016/03/28/linq-the-bad-parts/

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

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



___
Forwarded from Iran .Net
تعریف کلید های shortcut برای نرم افزارهای تحت وب:

برای نرم افزار های سازمانی تحت وب یا موارد دیگر، لازم است تا امکانی را فراهم کنیم که کاربر بتواند با استفاده از یکسری از shortcut ها، کارش را تسریع کند (عینا مشابه برنامه دسکتاپ). تعریف shortcut ها مستلزم این می باشد که
1. بتوانیم یک توالی از دکمه ها را تشخیص دهیم. مثلا ترکیب alt+shift+3 می تواند یک shortcut برای باز کردن یک صفحه به خصوص و یا باز کردن یک modal باشد.
2. نکته دیگر این است که باید فارغ از element ایی که دارای focus می باشد، بتوانیم وقوع shortcut توسط کاربر را تشخیص دهیم.

کتابخانه های زیر این کار را به راحتی و زیبایی برای ما تسهیل کرده و انجام می دهند:

https://dmauro.github.io/Keypress/

https://github.com/RobertWHurst/KeyboardJS

@irandotnet
ابزار‌های TFS و JIRA از ابزارهای معروف Issue Tracking در پروژه‌های نرم‌افزاری هستند. با اینکه این ابزارها قابلیت استفاده مستقل از تکنولوژی دارند اما عمدتا در پروژه‌های با تکنولوژی‌های مایکروسافت از TFS و در پروژه‌هایی با تکنولوژی‌های Java از JIRA استفاده می‌شود.
مقاله زیر خلاصه‌ی نتیجه‌ی یک تحقیق عملی درباره‌ی قابلیت‌های این دو ابزار ارائه شده‌است. تحقیق به این صورت بوده که یک تیم چهارنفره به دو گروه تقسیم شده‌اند و یکی از گروه‌ها با JIRA و دیگری با TFS کار کرده و در پایان قابلیت‌ها را با هم مقایسه کرده‌اند. در این مقاله به صورت خلاصه واژه‌های مرتبط مانند CI و ALM هم توضیح داده شده‌اند. هدف این مقاله معرفی معیارهایی است که کمک کند در هر شرایطی بهترین انتخاب اتفاق بیافتد.

https://blog.beolle.com/2014/01/research-around-jira-vs-tfs.html

#سمیه_کرمی

لینکدین :
https://ir.linkedin.com/in/skarami

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


___
Forwarded from Software Philosophy
مفهوم Dependency Injection یکی از مواردی است که در طراحی ASP.NET Core وجود دارد. مقاله زیر علاوه بر اینکه مروری بر این مفهوم مهم دارد، نحوه پیاده‌سازی و استفاده از آن را در ASP.Net Core توضیح می‌دهد. همچنین در این مقاله به منظور آموزش این مفهوم، یک مثال به صورت قدم به قدم پیاده‌سازی شده‌است.

https://www.c-sharpcorner.com/article/dependency-injection-in-Asp-Net-core/

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

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



___
Forwarded from Software Philosophy
یکی از کاربردهایی که پروژه Roslyn در برنامه‌های بیزنسی دارد، توانایی اجرای کد برنامه در زمان اجرا است. برای مثال می‌توانید قسمتی از کد برنامه را در یک تکست‌باکس از کاربر بگیرید و آن را اجرا کنید. معمولا قسمت‌هایی از برنامه که نباید Hard Code شود را به این صورت می‌توان به عنوان پیکربندی در دیتابیس ذخیره کرد و هنگام پیاده‌سازی نرم‌افزار، بدون تغییر کد اصلی، رفتار برنامه را تنظیم کرد. به این قابلیت Scripting هنگام اجرای برنامه می‌گویند.
مقاله زیر نشان می‌دهد که چگونه توسط Roslyn می‌توان کد‌ها را در زمان اجرا، کامپایل و اجرا کرد.

https://daveaglick.com/posts/compiler-platform-scripting

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

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



___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
Forwarded from Software Philosophy
طراحی تایم‌لاین در برنامه‌های وب یکی از روش‌های جذاب نمایش اتفاقات زمانی است. برای مدتی فیسبوک نیز از این مفهوم برای نمایش صفحات استفاده می‌کرد. مقاله زیر نحوه پیاده سازی مفهوم تایم‌لاین را با استفاده از CSS و JavaScript را آموزش داده است. شیوه آموزشی که در این مقاله به کار برده شده بسیار جالب است و کاملا به صورت قدم به قدم امکانات را به کنترل اضافه کرده تا فهم برنامه‌نویسی آن ساده شود.

https://webdesign.tutsplus.com/tutorials/building-a-vertical-timeline-with-css-and-a-touch-of-javascript--cms-26528

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

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



___
با ظهور تکنولوژی Roslyn شما می‌توانید از زبان C# به عنوان زبان اسکریپتینگ در برنامه‌های خود استفاد کنید. این مفهوم به این معنی است که شما برای مثال قسمتی از کد سی‌شارپ مورد نیاز برنامه‌تان را از طریق یک TextBox از کاربر بگیرید و در واقع به کاربران (پیاده‌سازان نرم‌افزار) بدون نیاز به تغییر کد اجازه شخصی‌سازی کد دهید. لینک زیر که از سری لینک‌های اموزشی Josh Vatry در این زمینه است می‌تواند دید خیلی خوبی در مورد امکانات اسکریپتینگ توسط Roslyn به طراحان بدهد.

https://joshvarty.wordpress.com/2015/10/15/learn-roslyn-now-part-14-intro-to-the-scripting-api

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

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


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

https://www.cio.com/article/2436015/enterprise-architecture/5-things-grady-booch-has-learned-about-complex-software-systems.html

#کاروان_جافی

لینکدین:
https://uk.linkedin.com/in/karvan-jafi-96897027

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


___