اشتراک‌ها
کنفرانس dotNetConf 2015 مایکروسافت

During the two-day event we will have more than 16 hours of content on subjects such as ASP.NET 5, .NET Core, C#, F#, Roslyn, debugging with VS2015, learnings from running large scale websites, and more! 

کنفرانس dotNetConf 2015 مایکروسافت
مطالب
معرفی افزونه‌ی WhySharper

ReSharper جهت بهبود کیفیت کد‌های نوشته شده راهنمایی‌های مختلفی را ارائه می‌دهد. اما اکثر این‌ها مختصر و مفید و خلاصه هستند. برای مثال این متد بهتر است استاتیک شود یا این متغیر بهتر است readonly شود و الی آخر. اما چرا؟
برای رفع این نقیصه، افزونه‌ای برای ReSharper تهیه شده است به نام WhySharper که دلایل راهنمایی‌های ارائه شده از طرف افزونه‌ی اصلی را نیز بیان می‌کند (لینکی را به سایت stackoverflow جهت مشاهده بحث مربوطه ارائه می‌دهد).



این افزونه از گوگل کد و یا رپیدشیر قابل دریافت است.

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

C:\Documents and Settings\UserName\Application Data\JetBrains\WhySharper

سپس دو فایل زیر را در آن مسیر کپی نمائید:
http://whysharper.googlecode.com/svn/trunk/WhySharper/SuggestionsVersion.txt
http://whysharper.googlecode.com/svn/trunk/WhySharper/Suggestions.xml

دریافت این دو فایل

نظرات نظرسنجی‌ها
برای توسعه برنامه‌های مبتنی بر NET Core. از چه محیطی استفاده می‌کنید؟
من از Rider روی MacBook استفاده می‌کنم و واقعاً کار کردن باهاش عالیه چون همزمان یک IDE جامع و همچنین ReSharper رو ارائه میده. به شخصه وقتی از Visual Studio استفاده می‌کنم نیاز به استفاده از ماوس خیلی بیشتر احساس می‌شه ولی وقتی در محیط Rider کدنویسی می‌کنم اصلاً نیازی به استفاده از ماوس ندارم. همچنین قابلیت‌های جالبی برای دیباگ کد به خصوص Lambda Expression ارائه میده که واقعاً جالب و کاربردی هستن (+). در نهایت به شخصه Rider رو بیشتر می‌پسندم چون JetBrains سعی کرده محصولات برترش رو توی این IDE قرار بده، به عنوان مثال شما در Rider به یک نسخه کم حجم DataGrip نیز دسترسی دارید که نوشتن TSQL را واقعاً راحت کرده:
 


Rider به مرور زمان داره ویژگی‌های Visual Studio رو اضافه می‌کنه، به عنوان مثال در ورژن‌های جدید قابلیت C# Interactive رو اضافه کرده اما فعلاً به خوبی Visual Studio نیست و از IntelliSence پشتیبانی نمی‌کنه:


اشتراک‌ها
Sketch Theme برای استفاده در Prototypeها

Sometimes, in order to get rapid feedback, it’s useful to throw together a prototype that has literally nothing going on in the backend, but lets the user get a sense of how the application would flow. The problem, of course, is that once users see such a thing, they can’t always tell the difference between smoke and mirrors and the real thing. 

Sketch Theme برای استفاده در Prototypeها
مطالب
Feature Toggle
در بسیاری از پروژه‌های نرم افزاری ما ممکن است یک امکان (Feature) را برای بازه‌ی زمانی خاصی بنا به درخواست مشتری یا ضوابط خودمان نیاز داشته باشیم و در زمان دیگری یا برای مشتری دیگری نیاز نداشته باشیم و باید قابلیت مورد نظر غیر فعال باشد. یا حتی ممکن است قابلیتی را به تازگی افزوده باشیم، ولی در زمان اجرا خطایی داشته باشد و مجبور باشیم فورا آن را از دسترش خارج کنیم. به این فرایند در اصلاح Feature Toggle میگویند که البته نام‌های دیگری از جمله (feature switch, feature flag, feature flipper, conditional feature ) هم دارد. مارتین فاولر آن را این چنین تعریف میکند:
"Feature Toggling" is a set of patterns which can help a team to deliver new functionality to users rapidly but safely
"Feature Toggling" تکنیک قدرتمندی است که به ما این اجازه را میدهد تا رفتار سیستم را بدون تغییر کد عوض کنیم.
ساده‌ترین الگوی پیاده سازی Feature Toggling چیزی شبیه به نمونه زیر می‌باشد. یک اینترفیس که باید مشخصه یا متدی برای بررسی فعال بودن و نبودن داشته باشد.
 public interface IFeatureToggle {
   bool FeatureEnabled {get;}  
}
برای اینکه اصل قابل تنظیم بودن (Configurable) را هم رعایت کرده باشیم، بررسی فعال بودن کامپوننت را از طریق وب کانفیگ انجام میدهیم.
class ShowMessageToggle : IFeatureToggle  
 {   
    public bool FeatureEnabled {
     get{
           return  bool.Parse(ConfigurationManager.AppSettings["ShowMessageEnabled"]);      
        }
 }
و حالا کافی است در هر جایی که قصد استفاده از آن کلاس را داشته باشیم، فعال بودن و نبودنش را بررسی کنیم.
class Program
 {
 static void Main(string[] args)
   {
     var toggle = new ShowMessageToggle();
     if (toggle.FeatureEnabled)
     {
        Console.WriteLine("This feature is enabled")
     }
     else
     {  
         Console.WriteLine("This feature is disabled");            
     }
   }  
 }
مثال بالا ساده‌ترین نحوه‌ی استفاده از Feature Toggling بود. اما شبیه الگوی IOC که ابزارهای زیادی برای پیاده سازی آن عرضه شده است، برای این الگو هم ابزارهای جالبی تولید شده است که به‌راحتی این قابلیت را در پروژه‌های ما ایجاد و نگهداری میکند. لیستی از این ابزارها و پکیج‌ها را از اینجا میتوانید ببینید.
بطور مثال برای کار با FeatureToggle ابتدا آنرا با دستور زیر نصب میکنیم:
Install-Package FeatureToggle
سپس کلاس مورد نظر را از کلاس پایه SimpleFeatureToggle ارث بری میکنیم.
MyAwesomeFeature : SimpleFeatureToggle {}
در  فایل کانفیگ برنامه یک تنظیم جدید را با نام کلاس مذکور ایجاد میکنیم:
<add key="MyAwesomeFeature " value="true" />
حالا هرجای برنامه نیاز داشتید میتوانید فعال بودن و نبودن قابلیت‌های مختلف را بررسی کنید.
if (!myAwesomeFeature.FeatureEnabled)
{ // code to disable stuff (e.g. UI buttons, etc) }
شما به همین سادگی و سرعت، میتوانید قابلیت Feature Toggle را در پروژه‌هایتان راه اندازی کنید.

لیست منابع
 http://nugetmusthaves.com/Tag/toggle 
http://featureflags.io/dotnet-feature-flags/ 
http://martinfowler.com/articles/feature-toggles.html
اشتراک‌ها
بحثی در مورد آینده‌ی #C از Mads Torgersen

What’s Next in C#? - Mads Torgersen - Copenhagen DevFest 2023
NDC Conferences
Join Mads on a tour of upcoming language features in C#. While still very much in the works, C# 12 is starting to take shape. We touch on some of the ways, big and small, that C# is striving to make your life easier in the coming years. 

بحثی در مورد آینده‌ی #C از Mads Torgersen
اشتراک‌ها
مقایسۀ ماژول های داخلی و خارجی TypeScript

We have done Javascript development for quite a few years and we are quite proficient at it as a team. Still there is room for improvement. We really dislike the syntax of the revealing module pattern and we love strongly typed languages for the compile time checks it provides

مقایسۀ ماژول های داخلی و خارجی TypeScript
اشتراک‌ها
بررسی تاثیر React بر روی جامعه‌ی توسعه دهندگان جاوااسکریپت

“I’ve written before about how React is the new default frontend framework, and how I don’t think most people using React on a regular basis realize quite how much it’s fallen behind.” High level thoughts about the React ‘bubble’ and some reasons to look beyond it, including a round up of some of the alternative options. 

بررسی تاثیر React بر روی جامعه‌ی توسعه دهندگان جاوااسکریپت
اشتراک‌ها
Qt 5.7 منتشر شد

The latest version of the Qt GUI has been released just three months after the previous update. Despite the short interval there's quite a lot of changes, including support for the Raspberry Pi 3. 

Qt 5.7 منتشر شد