Software Philosophy – Telegram
Software Philosophy
3.45K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
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

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

همانطور که می‌دانید در چند سال اخیر استفاده از فرمت json برای فایل‌های کانفیگ بسیار رایج شده است. در این مورد یک توییت جالب همه را به چالش کشید: «خواهش می‌کنم از json برای کانفیگ فایل‌ها استفاده نکنید، تو json نمی‌شه کامنت نوشت و بدون کامنت مدیریت کانفیگ‌ها خیلی سخته». این نکته برای من خیلی جالب بود. به نظر می‌رسد فرمت json برای فایل‌هال کانفیگ چالش‌هایی دارد.

لینک زیر یک فرمت جدید رو که اسمش Human Json یا Hjson هست را معرفی کرده که نه تنها مشکل کامنت را ندارد، بلکه خیلی مشکلات دیگر که هنوز به آن فکر نشده بود را هم ندارد! جالبه که کتابخانه‌هایی هم برای این استاندارد نوشته شده که استفاده از اون رو در بیشتر زبان‌های محبوب مانند Java, C#, JavaScript, Mono, Ruby, Python, Noder.js, PHP, Go و زبانهای دیگر ساده می‌کند.

http://hjson.org/


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


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


___
مفهوم Reflection API ابزاری قدرتمند است برای نوشتن برنامه‌هایی که احتیاج دارند در زمان اجرا به کلاس‌ها و دسترسی‌هایی که در برنامه تعریف شده است، دسترسی داشته باشند. بیشترین استفاده از Reflection در نوشتن فریم‌ورک‌هاست به این دلیل که اطلاعی از کلاس‌هایی که تعریف خواهد شد، وجود ندارد. برای مثال Spring Framework برای تزریق وابستگی‌های یک کلاس از Reflection استفاده می‌کند.
ماشین مجازی جاوا (JVM) برای هر تایپی که ایجاد می‌شود یک شی از کلاس Java.Lang.Class متناظر با آن ایجاد می‌کند تا اطلاعاتی را در مورد آن شی در خود نگه دارد. کلاس Java.Lang.Class نقطه شروع تمام عملیات‌های Reflection است. از عملیات Reflection می‌توان موارد زیر را نام برد:
• دستیابی به کلاس یک شی در زمان اجرا
• ایجاد یک شی از کلاس در زمان اجرا
• دستیابی به فیلد و متدهای یک کلاس در زمان اجرا
• فراخوانی هر متدی از یک شی در زمان اجرا

لینک زیر آموزش کاملی است از آنچه که با استفاده از Reflection می‌توان انجام داد.
http://tutorials.jenkov.com/java-reflection/index.html

#زهره_مرادی

لینکدین:
https://ir.linkedin.com/in/zohre-moradi

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

___
#پست_مجدد این پست تا به حال بیش از ۱۲۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
لینک زیر نشان می‌دهد که چگونه می‌توانید یک «بات»‌ بنویسید. «بات» برنامه‌ای است که مثلا در پشت یک سرویس مانند اسکایپ یا تلگرام قرار می‌‌گیرد و می‌تواند با چت کردن با شما، به نیازهای شما پاسخ دهد. در این لینک از زیرساخت جدیدی که توسط مایکروسافت به نام Microsoft Bot Framework معرفی شده استفاده شده‌است. جالب است بدانید برای نوشتن بات‌ها می‌توانید از زیرساخت‌هایی تحقیقاتی که توانایی درک متن را دارند استفاده کنید. این زیرساخت‌ها عمدتا در شاخه Microsoft Cognitive Services قرار دارند و به وسیله آنها می‌توانید متن و حتی عکس را تا حد زیادی درک کنید و به آنها پاسخ دهید.

http://www.c-sharpcorner.com/article/real-time-bot-project-using-microsoft-bot-framework/

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


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


___
نوشتن «بات‌» هوشمند در دنیای رقابتی بات‌ها می‌تواند خیلی جذاب باشد. مدتی است مایکروسافت چند پروژه‌ هوش مصنوعی را تحت عنوان Cognitive Science شروع کرده که به تشخیص عکس و تشخیص گفتار کمک می‌کند. همچنین امکان یکپارچه کردن آن با زیر ساخت Bot Framework می‌تواند منجر به تولید بات‌های بسیار کارایی شود.
در لینک زیر نحوه استفاده از هوش مصنوعی پروژه‌های Cognitive در بات‌ها آموزش داده شده است.

http://www.dotnetcurry.com/csharp/1281/simple-bot-using-microsoft-bot-framework-cognitive-services

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

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


___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
یک API برای درک احساسات افراد در تصاویر! سرویس زیر که یکی از اجزای Microsoft Cognitive Science است به شما این امکان را می‌دهد تا با دادن یک عکس از گروهی از افراد به API به این اطلاعات دست پیدا کنید:
- مختصات صورت‌هایی که در عکس تشخیص داده شده‌است.
- میزان هر یک از احساسات در چهره: «خشم»، «ترس»، «خوشحالی»، «غم» و ...
همانطور که در لینک می‌بینید این اطلاعات به صورت JSON قابل استفاده هستند.

http://www.microsoft.com/cognitive-services/en-us/emotion-api

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


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


___
بر خلاف زبان‌هایی مانند C++ در زبان C# مفاهیم class و struct امکانات مشابهی دارند و در بسیاری از موارد می‌توانند به جای یکدیگر استفاده شوند. به همین منظور هنگام معماری نرم‌افزار نقاط بسیاری وجود دارد که نیاز به تصمیم گیری برای انتخاب یکی از آنها است. به طور خلاصه class ها به عنوان reference type شناخته می‌شوندو در Heap نگهداری می‌شوند، در حالی که struct ها به عنوان value type شناخته می‌شوند و در stack نگهداری می‌شوند. یاد گرفتن دقیق این دو مفهوم و تفاوت‌های آنها کمک بسیاری در انتخاب درست آنها در معماری می‌کند.
لینک زیر مربوط به بخشی از کتاب Framework Design Guidelines (FDG) است که به طور کامل در مورد این موضوع توضیح داده‌است. این کتاب استانداردی است که تمام برنامه‌نویسان در مایکروسافت باید آن را مطالعه کرده باشند و نکات آن را رعایت کنند.

https://msdn.microsoft.com/en-us/library/ms229017(v=vs.110).aspx

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

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


___
#پست_مجدد این پست تا به حال بیش از ۱۶۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
معماری ASP.NET Core کاملا با معماری ASP.NET قبل فرق دارد. نسخه جدید بیشتر با تمرکز بر استراتژی جدید مایکروسافت مبنی بر پشتیبانی از تمام محیط‌ها و سیستم‌عامل‌ها برای توسعه نرم‌افزار معماری شده و کمتر روی اضافه کردن امکانات جدید دارد.
در این مقاله Dino Esposito توضیح می‌دهد با دیدی انتقادی به این تفاوت بنیادین نگاه می‌کند و به این نکته اشاره می‌کند که اکو سیستم جدید باید طوری باشد که برنامه‌نویسان قبلی تمایل بیشتری برای حرکت به نسخه Core داشته باشند.

https://www.simple-talk.com/content/article.aspx?article=2402

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

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


___
در بین مقاله‌های مقایسه فریم‌ورک‌های react, aurelia و angular پست زیر از Shawn Wildermuth جالب و جنجالی به نظر می‌رسد. شاون در این مقاله توضیح داده‌است که اولا انتخاب تکنولوژی آنقدر هم که برنامه نویسان نسبت به آن حساس هستند ارزش ندارد و کمتر پروژه‌ای به خاطر تکنولوژی اشتباه شکست خورده است. برای مثال پروژه‌های بسیار زیادی با تکنولوژی‌های قدیمی (مانند Perl+CGI) وجود دارند که هنوز هم هستند و بسیار هم موفق هستند. به هر حال او در این پست دلیل اینکه او angular را انتخاب کرده توضیح داده است و نکته جالبی را هم در مورد فریم‌ورک aurelia ذکر کرده است: «aurelia معماری خیلی خوبی دارد ولی مشکل اینجاست که برنامه نویسان aurelia خیلی فریم‌ورک نویس هستند، آنها قبلا durandal را نوشته‌اند و حالا هم یک فریم‌ورک به نام aurelia نوشته‌اند. احتمال دارد مدتی بعد هم یک فریم‌ورک جدید بنویسند و این به من احساس نا امنی می‌دهد.»
خواندن مقاله زیر از آن جهت بسیار جذاب است که شاون یکی از برنامه نویسان بسیار با تجربه در زمینه ساخت برنامه‌های وب است.

http://wildermuth.com/2015/09/01/Angular_v_React_v_Aurelia_v_et_al

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

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


___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
پروتکل 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



___
در یک مصاحبه با Eric Lippert (یکی از اعضای سابق تیم زبان C#) از او پرسیده شده بود «آیا سی‌شارپ یک زبان strongly typed است یا weakly typed». جواب او به این سوال این بوده: «بله!» به نظر جواب غیر واضحی می‌آید. اریک در ادامه توضیح داده که مشکل از خود سوال است و اگر در سوال «یا» را به «و» تبدیل کنید، جواب من هنوز «بله» است!!
در پست زیر از بلاگ اریک، این مفاهیم با جزئیات بیشتری مانند statically typed، memory safe و type safe توضیح داده شده‌است.

https://ericlippert.com/2012/10/15/is-c-a-strongly-typed-or-a-weakly-typed-language

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

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


___