اشتراک‌ها
Dispose کردن موارد فراموش شده توسط Roslyn
This extension uses the Roslyn compiler plattform to identify IDisposable-instances that are not disposed.
IDisposable instances that are not disposed, usually lead to some hard-to-find errors like memoryleaks. The current version is only able to find this undisposed instances, future version should also provide code-fixes. 
Dispose کردن موارد فراموش شده توسط Roslyn
اشتراک‌ها
مکانیسمهای سعی مجدد و نادیده گرفتن خطاهای زودگذر با Microsoft Enterprise Library

When cloud-based applications use other cloud-based services, errors can occur because of temporary conditions such as intermittent service, infrastructure-level faults, or network issues. Very often, if you retry the operation a short time later (maybe only a few milliseconds later) the operation may succeed

مکانیسمهای سعی مجدد و نادیده گرفتن خطاهای زودگذر با  Microsoft Enterprise Library
اشتراک‌ها
اعتبارسنجی مدل‌ها در Web API

When a client sends data to your web API, often you want to validate the data before doing any processing. This article shows how to annotate your models, use the annotations for data validation, and handle validation errors in your web API. 

اعتبارسنجی مدل‌ها در Web API
اشتراک‌ها
ارسال ایمیل در برنامه های ASP.NET MVC

This article takes a comprehensive look at the business of generating and sending email from an ASP.NET MVC application. It covers the most common use cases as well as some advanced scenarios. It also explores some of the more common errors that arise from attempting to generate and send email programmatically from an ASP.NET MVC site. 

ارسال ایمیل در برنامه های ASP.NET MVC
اشتراک‌ها
Clean Code عبارات منطقی

The most important thing I learn in 2015 is that clean code is everything. You can have bad performance or logical errors or even security issues. 

But without clean code you cannot fix anything above, because you don't understand the code. 

Clean Code عبارات منطقی
اشتراک‌ها
دریافت کتاب رایگان Regular Expression

  Text Processing

  Using Regular Expressions in .NET

  Character Sets

  Quantifiers

  Anchors

  Alternation

  Searching Summary

  Regex Tester Program II

  Regex Objects

  Groups

  Look-Arounds

  Replacing Text with Regex

  Cleaning Data with Regular Expressions

  Unicode

  Optimizing Your Regex

  Regex Errors

  Other Regex Options

  Regex Summary

  Resources

 
دریافت کتاب رایگان Regular Expression
نظرات مطالب
سفارشی سازی ASP.NET Core Identity - قسمت سوم - نرمال سازها و اعتبارسنج‌ها
با سلام.
در پروژه ای ما باید یک ثبت نام اولیه برای کاربر انجام دهیم به این شکل که کاربر را با حداقل اطلاعات عضو سیستم می‌کنیم و پس از اولین لاگین اطلاعات تکمیلی ثبت نام رو می‌گیریم.
            // Extending the built-in validator
            validateEmail(user, errors);

بنده این تابع رو بکلی غیر فعال کردم ولی بازهم ایمیل رو اعتبار سنجی می‌کنه.
همین مشکل رو ما در مورد پسورد داریم و باید در مرحله اول یک پسورد ۴ کاراکتری بدیم ولی در مرحله دوم باید یک پسورد ۱۰ کاراکتری داشته باشیم.
در مورد پسورد یک راه پیدا کردیم و اونم اینه که پسورد هش شده رو در دیتابیس ذخیره کنیم ولی دنبال راه حل بهتری هستم.
آیا کلا راهی وجود داره تا بدون نیاز به Migration و update datatbase سیستم اعتبار سنجی رو برای برخی توابع فعال و غیر فعال کرد؟
با تشکر
نظرات مطالب
آشنایی با Promises در جاوا اسکریپت
خیلی ممنون از مطلب مفیدتون.
تنها یک سوال برای بنده پیش اومده. من توی سرویس‌های AngularJs متدهای get و post را به صورت زیر پیاده سازی میکنم:
    var _sampleGet = function (sampleModel) {
        return $http.get(serviceBase + '/api-path/', sampleModel);
    }

    return {
        sampleGet: _sampleGet,
    };
حال اینکه اصلا درون سرویس از q$ و defer و resolve استفاده نمیکنم. و در سمت کنترلر هم به صورت زیر از سرویس استفاده میکنم.
        myService.sampleGet(vm.formData).then(
            function (response) {
                vm.savedSuccessfully = true;
                // rest of process
            },
            function (response) {
                //handle errors
            });
میخواستم بدونم پیاده سازی من چه مشکلی را به وجود میاره؟
یک سوال دیگه این بود که برای فرایند هایی که امکان undo دارند (مثل ارسال ایمیل به یک فرد که سریعا یک پیغام برای undo کردن نمایش داده میشود) هم آیا از همین قابلیت‌ها استفاده میکنند؟
نظرات مطالب
آناتومی یک گزارش خطای خوب
با سلام خدمت آقای نصیری
معمولا زمانی که مشکلی برام پیش میاد میرم سراغ StackOverFlow.
من معمولا با پرسیدن سوال تو این وبسایت مشکل دارم البته اونم به لحاظ ضعیف بودن زبان انگلیسی بنده است.یک استاندارد برای پرسیدن سوال وجود داره و به تازگی قبل از پرسیدن سوال کلی توضیح و راهنمایی نمایش داده میشه
How to resolve errors with unsafe pointer in C#?
سوال بالا آخرین موضوعی بود که چندی پیش پرسیدم.کلی امتیاز منفی بهمراه داشت و در انتها سوالم Close شد.

مطالب
چگونه یک عبارت sql را فرمت شده نمایش دهیم؟
در مورد کتابخانه‌ی SQLDom مطالبی را پیشتر در این سایت مطالعه کرده‌اید (^ و ^). یکی دیگر از کاربردهای آن، فرمت عبارات SQL است. برای مثال تبدیل عبارتی مانند
SELECT * FROM tb1 WHERE x1 = '12';
به نمونه‌ی فرمت شده‌ی آن:
SELECT *
FROM tb1
WHERE x1 = '12';
برای اینکار می‌توان از کلاس ذیل کمک گرفت:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.TransactSql.ScriptDom;
 
namespace SqlDomAnalyzer.Core
{
    public static class PrettyPrintTSql
    {
        public static string FormatTSql(string tSql)
        {
            IList<ParseError> errors;
            TSqlScript sqlFragment;
            using (var reader = new StringReader(tSql))
            {
                var parser = new TSql120Parser(initialQuotedIdentifiers: true);
                sqlFragment = (TSqlScript)parser.Parse(reader, out errors);
            }
 
            if (errors != null && errors.Any())
            {
                var sb = new StringBuilder();
                foreach (var error in errors)
                    sb.AppendLine(error.Message);
 
                throw new InvalidOperationException(sb.ToString());
            }
 
            var sql110ScriptGenerator = new Sql120ScriptGenerator(new SqlScriptGeneratorOptions
            {
                SqlVersion = SqlVersion.Sql120
            });
            string finalScript;
            sql110ScriptGenerator.GenerateScript(sqlFragment, out  finalScript);
            return finalScript;
        }
    }
}
در اینجا ابتدا عبارت SQL ورودی Parse شده و سپس به کتابخانه‌ی تولید اسکریپت ScriptDom ارسال می‌شود. خروجی آن، یک خروجی فرمت شده‌است.

نکته‌ی جالب دیگری که در اینجا وجود دارد، تهیه‌ی یک خروجی همواره یک شکل است. برای نمونه سه عبارت SQL زیر را در نظر بگیرید:
SELECT * from tb1 WHERE x1 = '12';
SELECT * from tb1 where x1 = '12';
select * from tb1 WHERE x1 = '12';
در اینجا در عبارت اول، from با حروف کوچک نمایش داده شده‌است. در عبارت دوم، where نیز با حروف کوچک نمایش داده شده‌است و در عبارت سوم اینکار در مورد select نیز تکرار شده‌است.
در هر سه حالت یا هر حالت قابل تصور دیگری، خروجی SQL فرمت شده‌ی حاصل یک چنین شکلی را دارد:
SELECT *
FROM tb1
WHERE x1 = '12';

موارد کاربرد آن؟
علاوه بر نمایش زیبای SQL فرمت نشده، احتمالا برنامه‌های Profiler ایی را دیده‌اید که عنوان می‌کنند قادرند عبارات SQL همانند را تشخیص دهند (جهت یافتن Lazy loading اشتباه). یک چنین خروجی یکسانی، قابلیت تهیه Hash عبارات SQL دریافتی را میسر می‌کند؛ چون دیگر اینبار مهم نیست که اجزای تشکیل دهنده‌ی یک عبارت SQL با حروف بزرگ هستند یا کوچک و فاصله‌ی بین آن‌ها چقدر است و آیا در این بین خطوط جدیدی نیز وجود دارند و امثال آن. خروجی نهایی نرمال شده‌ی توسط Sql120ScriptGenerator همواره یک شکل است. از این دو قابلیت در برنامه‌ی DNTProfiler استفاده شده‌است.