اشتراک‌ها
دریافت کتاب رایگان 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
نظرات مطالب
مهارت‌های تزریق وابستگی‌ها در برنامه‌های NET Core. - قسمت اول - تزریق وابستگی‌ها در برنامه‌های کنسول
یک نکته‌ی تکمیلی: الگویی thread-safe برای ساخت Service Provider در برنامه‌های کنسول
namespace Test
{
    public static class ConfigureServices
    {
        private static readonly Lazy<IServiceProvider> _serviceProviderBuilder =
            new Lazy<IServiceProvider>(getServiceProvider, LazyThreadSafetyMode.ExecutionAndPublication);

        /// <summary>
        /// A lazy loaded thread-safe singleton
        /// </summary>
        public static IServiceProvider Instance { get; } = _serviceProviderBuilder.Value;

        private static IServiceProvider getServiceProvider()
        {
            var services = new ServiceCollection();
            
// TODO: add other services here ... services.AddSingleton ....

            return services.BuildServiceProvider();
        }
    }
}
نظرات مطالب
PersianDateTime جایگزینی برای System.DateTime
کلاس PersianDateTime سازنده‌های متعددی دارد. از سازنده‌ای که نوع DateTime را مستقیما دریافت می‌کند، استفاده کنید:
new PersianDateTime(t.ResponseDate.Value).ToString(PersianDateTimeFormat.DateShortTime)
یعنی با وجود این سازنده، نیازی به ToString و سپس DateTime.Parse آن نیست:
    /// <summary>
    /// Initializes a new instance of the PersianDateTime class to a specified dateTime.
    /// </summary>
    /// <param name="dateTime">A date and time in the Gregorian calendar.</param>
    public PersianDateTime(DateTime dateTime)
    {
        _dateTime = dateTime;
    }
نظرات مطالب
EF Code First #12
- خیر. ASP.NET MVC یک فریم ورک AOP سر خود است. این مسایل رو باید با فیلترها پیاده سازی کنید.
- StructureMap وهله جدیدی را ایجاد می‌کند، اما ... کار استفاده (یا عدم استفاده) از آن به عهده ASP.NET MVC است و StructureMap دخالتی در آن ندارد.
- این مورد (عدم فراخوانی ExecuteCore تحریف شده) تغییری است که در MVC4 اعمال شده
public class MyBaseController : Controller
    {
        /// <summary>
        /// from http://forums.asp.net/t/1776480.aspx/1?ExecuteCore+in+base+class+not+fired+in+MVC+4+beta
        /// </summary>
        protected override bool DisableAsyncSupport
        { 
            get { return true; } 
        }

        protected override void ExecuteCore()
        {
            base.ExecuteCore();
        }
    }
باید DisableAsyncSupport را اضافه کنید.
مطالب
خواندن اطلاعات API فیدبرنر

مطلبی را در سایت رادیکال 2 در مورد نمایش تعداد خواننده یک فید دیدم که پیاده سازی آن با سی شارپ و xml serialization به صورت زیر است:

using System;
using System.Xml;
using System.Xml.Serialization;

namespace Test
{
/// <summary>
/// کلاسی جهت نمایش تعداد خواننده فید وبلاگ شما
/// <example>CFeedBurner data = new CFeedBurner { FeedID = "fhphjt61bueu08k93ehujpu234" };
/// MessageBox.Show(data.Circulation().ToString());</example>
/// </summary>
class CFeedBurner
{
/// <summary>
/// آی دی فید شما زمانیکه به فید برنر لاگین کرده‌اید در تایتل صفحه مربوطه
/// </summary>
public string FeedID { get; set; }

/// <summary>
/// نگاشت فید به یک کلاس
/// </summary>
/// <returns>کلاس متناظر با فید</returns>
/// <exception cref="Exception">لطفا شماره شناسایی فید را وارد کنید</exception>
rsp deserializeFromXML()
{
if (FeedID == null)
throw new Exception("لطفا شماره شناسایی فید را وارد کنید");

XmlSerializer deserializer =
new XmlSerializer(typeof(rsp));
using (XmlReader reader = XmlReader.Create(
string.Format("https://feedburner.google.com/api/awareness/1.0/GetFeedData?id={0}", FeedID)))
{
return (rsp)deserializer.Deserialize(reader);
}
}

/// <summary>
/// دریافت تعداد خواننده فید
/// </summary>
/// <returns>آمار فید</returns>
/// <exception cref="Exception">اطلاعات فید شما قابل دریافت نیست</exception>
public int Circulation()
{
rsp data = deserializeFromXML();
if (data == null || data.feed == null || data.feed.Length == 0)
throw new Exception("اطلاعات فید شما قابل دریافت نیست");

if (data.feed[0].entry == null || data.feed[0].entry.Length == 0)
throw new Exception("اطلاعات فید شما قابل پردازش نیست");

return int.Parse(data.feed[0].entry[0].circulation);
}
}
}

کلاس rsp از فایل xml فید استاندارد سایت فیدبرنر درست شده است. روش تولید آن‌را قبلا توضیح داده بودم. به سادگی اجرای دو سطر زیر است:

xsd.exe GetFeedData.xml
xsd.exe GetFeedData.xsd /c

دریافت فایل‌های کلاس‌های نامبرده شده.

پاسخ به بازخورد‌های پروژه‌ها
چند متد الحاقی پیشنهادی
متد پیش فرض دات نت برای بررسی مقادیر String مناسب است. شاید با ترکیب دو متد IsNullOrWhiteSpace  و IsNullOrEmpty بتوان متد بهتری ساخت. متد پیشنهادی من به صورت زیر است:
        /// <summary>
        /// It returns true if string is null or empty or just a white space otherwise it returns false.
        /// </summary>
        /// <param name="input">Input String</param>
        /// <returns>bool</returns>
        public static bool IsEmpty(this string input)
        {
            return string.IsNullOrEmpty(input) || string.IsNullOrWhiteSpace(input);
        }

نظرات مطالب
انجام کارهای زمانبندی شده در برنامه‌های ASP.NET توسط DNT Scheduler
کلمه هر ثانیه اشتباه من بود و هر دقیقه صحیح هست. این وظیفه برای یک web API  نوشته شده و آدرس root خاصی نداره و مطابق ذیل هست: 
" {context.Request.Scheme}://{context.Request.Host.Value}"
منتها وقتی آدرس root درخواست میشه در browser تبدیل به چنین آدرسی میشه به خاطر swagger : 
https://domain.com/index.html
authorize خاصی هم نداره.
نظرات مطالب
EF Code First #8
چقدر خوب که این مطلب رو تکمیل کردید (هرچند View متناظر در اینجا هم باید ذکر می‌شد).
همچنین چقدر خوب می‌شد زمانیکه سؤال اصلی رو اینجا پرسیدید، موارد فوق رو هم ذکر می‌کردید. چون افراد نمی‌تونند از راه دور کار شما را مشاهده یا دیباگ کنند یا دقیقا بدانند که چه کدی را نوشته‌اید که این خطا را داده. به همین جهت سعی می‌کنند حدس بزنند که در مرحله آخر و پس از نگاشت‌ها، چکار کرده‌اید که خطای فوق حاصل شده.

مطلب خوبی در این زمینه: «نحوه صحیح گزارش دادن یک باگ»
نظرات مطالب
آشنایی با Refactoring - قسمت 9
سلام ، 
اگر فرض کنیم RoleRepository مطلب جاری پیاده سازی منطق تجاری قسمت کاربران در یک پروژه‌ی ASP.NET MVC می‌باشد، این استثناء‌ها کجا باید مدیریت شوند ؟ در بدنه‌ی Controller ؟ 
به عبارتی دیگر بهتر است نوع بازگشتی لایه‌ی سرویس یک شیء باشد که موفقیت / عدم موفقیت عملیات به همراه پیغام خطا را بازگرداند یا اینکه در صورت صحیح نبودن روند مثلا تکراری بودن نام کاربری Exception ارسال شود و استفاده کننده از Service مثل Controller مسئولیت Handle کردن استثناء‌ها را بر عهده بگیرد ؟