Software Philosophy
3.43K subscribers
160 photos
41 videos
1.54K links
چکیده‌ای از مفاهیم به روز مهندسی نرم افزار برای مهندسین نرم‌افزار.
معماری نوین نرم‌افزار، تکنولوژی‌های برنامه نویسی جدید
Download Telegram
Forwarded from Software Philosophy
معماری حافظه در .Net یکی از مفاهیم مهمی است که هنگام کار، مخصوصا هنگام نوشتن برنامه‌هایی که از Parallel Programming استفاده می‌کنند بسیار اهمیت دارد. کلمه کلیدی volatile دستوری در زبان C# است معمولا کمتر شناخته شده‌است، ولی در خیلی از شرایط موازی، عدم استفاده از آن باعث ایجاد خطاهای عجیب می‌شود. مقاله زیر از Igor Ostrovsky (یکی از برنامه نویسان تیم ابزارسازی دات‌نت) در مورد مدل معماری حافظه در .Net صبحت کرده است. در این مقاله در مورد مفاهیمی مانند Lazy Initialization که بسیار پر کاربرد هستند نیز صحبت کرده است.

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

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

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



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

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

http://www.rleonardi.com/interactive-resume

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

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



___
#پست_مجدد این پست تا به حال بیش از ۱۳۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
زبان C++ کماکان یکی از قوی‌ترین زبان‌هایی است که تا به امروز ساخته شده است. خالق این زبان Bjarne Stroustrup اخیرا یک پیش‌نویس ارائه داده است که در آن در مورد اهداف نسخه بعدی یعنی C++ 17 صبحت کرده‌است. مهمترین اهداف طراحی در این نسخه عبارتند از:
• بهبود پشتیبانی از large-scale dependable software
• بهره‌مند شدن از ماژول‌های سطح بالاتر برای concurrency
• ساده سازی هسته زبان

لینک زیر مصاحبه‌ای است که با Stroustrup در مورد این پیش‌نویس انجام شده است.

https://www.infoq.com/news/2015/04/stroustrup-cpp17-interview

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

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


___
مفهوم Parameter Binding در ASP.NET Web Api وظفیه نگاشت و پر کردن پارامترهای مورد نیاز در متد تعریف شده به عنوان Action را دارد. این کار به وسیله اطلاعاتی که در پارامترها در URI و اطلاعاتی که در Body آمده‌است انجام می‌شود.
به صورت پیش‌فرض پارامترهای از نوع‌های پایه (int, string, …) از طریق URI پر می‌شوند و پارامترهای Complex از طریق Body ساخته می‌شود. برای تغییر این رویه روش‌های خاصی وجود دارد که در مقاله زیر به طور کامل توضیح داده شده‌است.

https://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

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

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

___
پیاده سازی Owin Authorization در برنامه‌هایی که از Owin WebApi استفاده می‌کنند معمولا بسیار کاربردی است. استفاده از Owin در معماری برنامه‌های تحت وب مزایای زیادی دارد. مفهوم Middleware در این معماری باعث خوانایی بسیار زیادی در معماری می‌شود. در معماری Owin فضاهای بسیار مشخصی برای نوشتن کدها تعریف شده‌است.
مقاله زیر به خوبی نشان می‌دهد چطور Claim based authentication را با استفاده از Owin روی ASP.NET WebApi تنظیم کنید.

https://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer

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

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


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

https://www.thoughtworks.com/insights/blog/5-tips-being-effective-tech-lead

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

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

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

___
به احتمال خیلی زیاد همه ما، خصوصا برنامه نویسان موبایل، بعد از شهرت یافتن بازی پوکومن با مفهوم واقعیت افزوده یا Augmented Reality آشنا شده ایم. تکنولوژی که می تواند تمامی معادلات آینده را دستخوش تغییر کند. اما تفاوت‌های آن با مفهوم Virtual Reality (واقعیت مجازی)، یکی از مبهم‌ترین مسائل می باشد. مقاله زیر تفاوت این دو مفهوم را به سادگی توضیح داده است.

http://www.augment.com/blog/virtual-reality-vs-augmented-reality/

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

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
پیاده سازی Multi-Tenant Application و مدیریت داده‌های مشتریان مختلف در یک بانک اطلاعاتی، پیچیدگی‌های فراوانی دارد. در نسخه SQL Server 2016 امکانی به نام RLS (Row-Level Security) اضافه شده که این موضوع را بسیار ساده‌تر کرده است. لینک زیر توضیح می‌دهد که چگونه با استفاده از این امکان می‌توان امنیت داده‌ها را در سطح رکورد فراهم کرد. با استفاده از این قابلیت‌ می‌توان برنامه‌هایی برای چندین مشتری که اطلاعات آنها در یک بانک اطلاعاتی نگهداری می شوند، تولید کرد.

https://www.mssqltips.com/sqlservertip/4004/sql-server-2016-row-level-security-introduction

#محمدمحبتی

لینکدین :
https://www.linkedin.com/in/mohabbati

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


___
Forwarded from Software Philosophy
اگر دوستانی دارید که نه تنها برنامه نویس هستند، بلکه اعتقاد دارید «مهندس نرم‌افزار» هم هستند، آنها را به کانال @SoftwarePhilosophy دعوت کنید.
این پیغام را برای آنها Forward کنید.
ظهور فناوری‌های جدید در طراحی بازی‌های جدید کامپیوتری تاثیر زیادی دارد. یکی از مهمترین تغییراتی در حال متحول کردن بازی‌های کامپیوتری است، «واقعیت مجازی» یا حتی «واقعیت ساختگی‌» است. ویدئوی زیر یکی از بازی‌هایی را نشان می‌دهد که روی تخته سنگ واقعی که صخره نوردان از آن بالا می‌روند پیاده‌سازی شده‌است. این بازی از طریق یک Kinect سنگنورد را روی تخته سنگ شناسایی و دنبال می‌کند و در نهایت از طریق پروژکتور بازی را روی تخته سنگ نمایش می‌دهد. این سبک‌ بازی‌ها نشان می‌دهند که به راحتی می‌توان با یک زبان برنامه نویسی مانند C# به دستگاه Kinect وصل شد. برای خلق محصولات خاص و جدیدی مانند این بازی، می‌توانید از Kinect SDK استفاده کنید.

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
مفهوم Tow way bindig یکی از مهمترین امکاناتی است که فریم ورک AngularJS در اختیار برنامه‌نویسان قرار می‌دهد. این امکان به این صورت است که با تغییر view model، scope model نیز تغییر میکند و بلعکس. کاری که این فریم ورک برای ایجاد ارتباط بین view و scope model انجام میدهد به این صورت است که زمانیکه scop model تغییر می کند، به صورت خودکار $scope.$apply() صدا زده می شود که متعاقب آن $rootScope.$digest() فراخوانی میشود. با فراخوانی این سرویس، سیکل digest روی $scopeRoot شروع به کار کرده و تمام سرویس‌های $watch را اجرا می کند. سرویس $watch مقدار view Model را با scope model مقایسه و مقادیر جدید را جایگزین میکند.
مقاله زیر توضیحات کاملی درباره سرویس های $apply و $digest داده و چرخه وصل کردن view به scope را به طور کامل شرح داده است.

https://www.sitepoint.com/understanding-angulars-apply-digest

#مریم_داودی

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

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


___
پیش بینی می شود که تکنولوژی‌های واقعیت مجازی و واقعیت افزوده تا سال 2020 بتوانند 150 میلیارد دلار درآمد داشته باشند که بیشترین سهم را واقعیت مجازی یا Augmented Reality دارد. در نتیجه یادگیری استفاده از این تکنولوژی و یا تولید برنامه‌هایی برپایه این تکنولوژی به برنامه نویسان موبایل توصیه می‌شود. در این راستا خیلی از شرکت ها،SDK هایی برای سیستم عامل های Android و IOS تولید کرده اند که بین آن ها Wikitude از همه پر طرفدارتر بوده است. توضیحات تکمیلی و نسخه آزمایشی آن را می توانید در لینک زیر پیدا کنید.

http://www.wikitude.com/products/wikitude-sdk/

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

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

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

___
Forwarded from Iran .Net
یکی از مسائلی که عمدتا در پروژه های نرم افزاری پیش می آید، ارسال ایمیل می باشد. متن ایمیل ها باید داینامیک بوده و با توجه به پارامتر های مختلف تغییر کند. همچنین ایمیل ها باید ظاهری خوب و دلچسب داشته باشند.
کتابخانه Mailzory می تواند در حل این موضوع به کمک تان بیاید. شما می توانید قالب هایی را با Razor طراحی کنید. سپس این قالب و مقادیر مدل های تان را به Mailzory تحویل دهید تا محتوای ایمیل را تولید کرده و برای گیرندگان ارسال کند.

پروژه های دیگری هم نظیر Postal وجود دارند که می توانند در ارسال ایمیل به کمک شما بیایند. اما متاسفانه روند توسعه Postal متوقف شده و در سناریوهایی عملا نمی توانید از آن استفاده کنید.

توجه کنید که از پروژه Mailzory می توانید در Desktop Application ها و Web Application ها استفاده کنید.

https://github.com/mirsaeedi/Mailzory
یکی از تکنیک‌هایی که در مدیریت پروژه‌های نرم‌افزاری برای مدیریت کارها استفاده می‌شود استفاده از مفهوم «کانبان» است. این روش که شرکت تویوتا از آن در سیستم تولید just-in-time خود استفاده می‌کند برای پروژه‌های نرم‌افزاری نیز سازگار شده‌است.
یکی از اهداف کانبان، شناسایی گلوگاه‌های کاری است تا بتوان به فرایندی بهینه‌تر برای تولید نرم‌افزار رسید.

لینک زیر پس از توضیح مفهوم کانبان، نحوه استفاده از بورد کانبان را در پروژه‌های نرم‌افزاری شرح داده‌است.

http://kanbanblog.com/explained/

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

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

___
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
کپی کردن کامل یک object معمولا یا از طریق Serialization‌ انجام می‌شود یا از طریق Reflection. همیشه Serialization محدودیت‌های خاص خود را دارد. برای مثال در XmlSerialization ارجاعات حلقه‌ای (Circular References) باعث مشکل می‌شوند. همچنین سرعت کپی از طریق سریالایزیشن نسبت به Reflection بسیار کمتر است. از طرفی سرعت کپی شدن از طریق Reflection هنوز نسبت به کپی دستی (manually copy functions) کمتر است.
مقاله جدید روش جدیدی را برای کپی اشیا از طریق Expression Trees در زبان C# ارائه داده‌است که هم قدرت Reflection را دارد و سرعت آن تقریبا برابر با روش «کپی دستی» است. خواندن این مقاله روشی که Expression Tree از آن استفاده می‌کند را بسیار خوب توضیح داده است و در مثال‌های عملی قدرت این ساختار را نمایش داده است.

http://www.codeproject.com/Articles/1111658/Fast-Deep-Copy-of-Objects-by-Expression-Trees-Csha

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

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


___