Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from Software Philosophy
برنامه نویسی کپی-پیست یا Cut&Paste Programming یک نمونه ضد الگوی برنامه نویسی (Anti Pattern) محسوب می‌شود. یکی از علائم آن استفاده از این جملات است:
-من این باگ رو قبلا درست کرده بودم، چرا هنوز هست!؟
-وااو... شما چقدر سریع کار می‌کنید، تو این سه هفته ۴۰۰.۰۰۰ خط حد نوشتید.

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

https://sourcemaking.com/antipatterns/cut-and-paste-programming

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


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


___
اگر می‌خواهید بیشتر در این مورد بدانید در لینک زیر توضیحات کاملی در این مورد داده شده.
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
این مقاله توسط Igor Ostrovsky یکی از مغزهای متفکر برنامه نویسی موازی یا Parallel Programming در .Net نوشته شده است. او در این سری مقالات مفهوم مدل حافظه یا Memory Model را در زبان C# به صورت تئوری و عملی توضیح داده است. از آنجاییکه یکی از مهمترین مشکلات برنامه‌نویسی موازی مشکل Shared Memory‌ است، فهمیدن این مدل کمک بسیاری در نوشتن و دیباگ کردن کدهای Parallel می‌کند.

https://msdn.microsoft.com/en-us/magazine/jj863136.aspx

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


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


___
این روزها نوشتن «بات» به یکی از کارهای هیجان انگیز تبدیل شده و بات‌های زیادی در بستر‌های مختلف ارتباطی در حال ظهور هستند. نوشتن یک بات کامل و پیشرفته معمولن نیاز به حجم زیادی از برنامه نویسی دارد. مخصوصا اگر قرار باشد تا حدود زیادی قدرت تشخیص زبان را داشته باشد و فقط محدود به یک سری کلمات از پیش تعریف شده نباشد. همچنین این که یک بات قابلت کار بر روی بسترهای ارتباطی مختلفی مانند اسکایپ، تلگرام، فیسبوک و غیره را نیز دارا باشد.
لینک زیر نحوه‌ی برنامه نویسی با فریم ورک جدید مایکروسافت برای نوشتن بات (Microsoft Bot Framework) را توضیح داده‌است.
این بات در ادامه توانایی اتصال به سرویس‌های هوش مصنوعی Microsoft Research مانند «تشخیص گفتار» و «تشخیص عکس» را نیز دارد.

https://www.microsoft.com/en-gb/developers/articles/week05july16/an-introduction-to-the-microsoft-bot-framework

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

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


___
برنامه ریزی امکانات در Entity Framework Core 1.1 احتمالا برای کسانی که در حال حاضر از نسخه 1.0 این محصول استفاده می‌کنند جذاب باشد. هنوز امکانات زیادی وجود دارد که نسل جدید این ORM اضافه نشده‌است. در مقاله زیر توضیح داده شده است که نسخه بعدی شامل چه امکاناتی است و چه امکاناتی در دستور کار نسخه بعدی نیست.

https://blogs.msdn.microsoft.com/dotnet/2016/07/29/entity-framework-core-1-1-plans/

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

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


___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
محصول Entity Framework 7 که به تازگی نام آن به Entity Framework Core 1 تغییر یافته به هیچ وجه نسخه بعدی Entity Framework 6 نیست. علت تغییر نام این محصول نیز به همین دلیل بوده‌است. هدف از تغییر نام واضح کردن این نکته بوده تا برنامه‌نویسان انتظارات اشتباه نداشته باشند.

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


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

http://www.c-sharpcorner.com/article/new-features-of-entity-framework-7/

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


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


___
اصطلاح Dev Ops این روزها با رقابتی‌تر شدن نرم‌افزارها بسیار بیشتر به گوش می‌خورد. فرایندها و ابزارهایی که به تولید کنندگان نرم‌افزار کمک می‌کند محصولات خود را با کیفیت بالا و با سرعت بالاتر تولید کنند و به دست مشتریان برسانند. مقاله زیر پایپلاین ریلیز را برای محصولات موبایلی توضیح داده است. همچنین در این مقاله توضیح داده‌است که چطور این پایپلاین توسط TFS پیاده‌سازی می‌شود. یکی از قسمت‌های جالب این مقاله معرفی Xamarin Test Cloud است که به وسیله آن یک برنامه موبایل روی تمامی گوشی‌های موجود بازار تست می‌شود و نتیجه تست به برنامه نویس گزارش داده می‌شود. به این ترتیب بدون اینکه لازم باشد گوشی‌های مختلف داشته باشید، نتیجه اجرای برنامه خود را روی تمامی مدل‌های گوشی خواهید داشت.

https://msdn.microsoft.com/magazine/mt767694

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

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


___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
چهار چیزی که طراحان خوب به آن اهمیت می‌دهند:
۱. طراحان خوب به «انسانها» اهمیت می‌دهند. آنها انسانها و سطوح احساسی و معنوی انسانها را می‌فهمند.
2. طراحان خوب به «ساختن» اهمیت می‌دهند و از ساختن استقبال می‌کنند (مثلا ساخت مدل). حس خوب به ساختن باعث می‌شود چیزی که ساخته می‌شود نیز خوب باشد!
۳. طراحان خوب به «چرایی» اهمیت می‌دهند. طراحان در هنگام کار نیاز دارند تصمیم بگیرند. آنها شانسی تصمیم نمی‌گیرند، بلکه تصمیمات آگاهانه خود را بر اساس ریزترین چیزهایی که دیده‌اند می‌گیرند.
۴. طراحان خوب به صداقت اهمیت می‌دهند. آنها صداقت محض خود را وارد کار می‌کنند تا به این وسیله چیزهایی درست و معنی‌دار خلق کنند.

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

http://uxmag.com/articles/four-things-great-designers-care-about

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


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


___
فریم‌ورک Nancy یک فریم‌ورک کوچک و جمع و جور برای پیاده‌سازی Web API است. این فریم‌ورک با الهام‌گیری از فریم‌ورک Sinatra در Ruby نوشته شده‌است. نسخه ۱.۴.۳ آن در حال حاضر نسخه stable تحت .NET است. نسخه جدید این فریم‌ورک تحت عنوان Nancy 2.0 بر پایه .NET Core در حال توسعه است و نسخه بتای آن آماده آزمایش است. در مقاله زیر، اسکات هانسلمن نشان داده چطور می‌توان از Nancy روی Kestrel و Owin استفاده کرد.

http://www.hanselman.com/blog/ExploringAMinimalWebAPIWithNETCoreAndNancyFX.aspx

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۳۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
اگر دوست دارید با تکنولوژی‌های محبوبی که در راه هستند یک پروژه بنویسید، مقاله زیر از Code Project را بخوانید. این مقاله به صورت قدم به قدم یک پروژه را ساخته‌است و از این تکنولوژی‌ها استفاده کرده‌است:
- فریم‌ورک Angular 2 (فریم ورک محبوب UI که توسط تیم گوگل در حال توسعه است)
- زبان TypeScript که زبانی محبوب برای کار با جاوااسکریپت می‌باشد و محبوبیت زیادی پیدا کرده‌است.
این مقاله نشان می‌دهد که چطور می‌توان این دو تکنولوژی را در Visual Studio 2015 ادغام کرد و از مزایای هر دو بهره برد.

http://www.codeproject.com/Articles/1087605/Angular-typenoscript-configuration-and-debugging-for

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


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


___
یکی از راه‌های مدیریت خطاهای تو در تو، استفاده از Exception Wrapping است. در این روش خطاهایی که باعث ایجاد یکدیگر می‌شوند اصطلاحا در هم Wrap می‌شوند. این به معنی پر کردن Cause در Java و یا InnerException در C# است. در مقاله زیر روش دیگری به نام Exception Enrichment به عنوان جایگزین این روش معرفی شده‌است. در این روش به جای اینکه خطاها به صورت تودرتو ساخته شوند، پیغام‌های خطا تکمیل‌تر می‌شود. با اینکه این روش در شرایط خاصی کاربردی به نظر می‌رسد، به نظر من روش خوب و کارایی برای مدیریت واقعی خطاها در یک نرم‌افزار واقعی و بزرگ نیست. زیرا در این روش «Stack Trace مربوط به Exception های میانی» از بین می‌روند که بسیاری از اوقات این اطلاعات در لاگ‌های برنامه کمک بسیاری به فهم خطاهای رخ داده می‌کند.

http://tutorials.jenkov.com/java-exception-handling/exception-enrichment.html

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
مقاله زیر حاوی نکات بسیار جالبی در مورد یک UX موفق است. نکاتی ساده، اما کاربردی که رعایت آنها تاثیر مهمی روی محصول شما می‌گذارد.

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

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


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


___
عبارت Azure Function مفهوم جالبی است که می‌توان از آن به خوبی استفاده کرد. یک Azure Function قطعه کدی مستقل است که می‌توان آن را در بستر Cloud مایکروسافت یا همان Azure تعریف کرد و به راحتی آن را از طریق برنامه خود فراخوانی کرد. این امکان برای پیاده‌سازی یک micro service فوق‌العاده است. در معماری میکرو سرویس‌ها شما برنامه خود را به صدها و هزاران قطعه کد مستقل به نام میکروسرویس می‌شکنید که هر کدام قابلیت این را دارند که جداگانه به کار خود ادامه دهند.
مقاله زیر نشان داده‌است که چگونه به سادگی می‌توانید یک Azure Function را در خود سایت آژور و بدون نیاز به داشتن محیط برنامه نویسی بسازید و از آن بوسیله ajax استفاده کنید.

http://www.c-sharpcorner.com/article/create-first-azure-function

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
ارتباط بین طراحان و برنامه نویسان

برای رسیدن به یک محصول خوب، طراحان و برنامه‌نویس‌ها باید رابطه بسیار خوبی با یکدیگر داشته باشند. نکات زیر کمک می‌کند بدانید چگونه می‌توانید در بهبود این روابط به تیم خود کمک کنید.

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

۲. همیشه یک نماینده تیم برنامه‌نویسی را در جلسات نهایی برنامه‌ریزی داشته باشید.

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

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

http://uxmag.com/articles/the-relationship-between-designers-and-developers

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


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


___
برای Sync کردن دیتابیس‌های مختلف معمولا نیاز دارید تغییرات یک دیتابیس را از طریق یک شماره مانند ورژن متوجه شوید. به عبارتی برای یک دیتابیس نیاز دارید همیشه یک عددی داشته باشید که با هر تغییر اطلاعات یک شماره افزایش یابد. در SQL Server دو روش برای این کار وجود دارد. یکی استفاده از @@DBTS و دیگری تابع min_active_rowversion است. تفاوت این دو تابع در رفتار آنها حین انجام یک تراکنش است. اولی حین اجرای تراکنش تغییر می‌کند و دومی پس از اتمام تراکنش به روز می‌شود. دانستن دقیق تفاوت این دو کمک بسیاری در انجام موفق پروژه‌های همگام‌سازی اطلاعات می‌کند.
مقاله زیر تفاوت‌های این دو روش را با مثال‌های خوبی توضیح داده‌است.

https://www.mssqltips.com/sqlservertip/3423/sql-server-rowversion-functions-minactiverowversion-vs-dbts

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۴۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.