اشتراک‌ها
پیشنهاد اضافه شدن Nullable reference types به C# 7
در حال حاضر reference types در زبان #C نال پذیر هستند. جهت بالا بردن میزان امنیت زبان، پیشنهاد شده‌است که حالت پیش فرض reference types به غیرنال پذیر تغییر یابد و اگر علاقمند بودید که نال پذیر شوند، همانند nullable value types فعلی مانند int? x، نوع ?T را تعریف کنید. البته این مورد یک پیشنهاد از طرف اعضای تیم سی‌شارپ است و عده‌ای با آن موافق هستند (جهت بالا بردن ضریب امنیت و کاهش null reference exceptions) و عده‌ای خیر (گیج کننده‌است و کدهای فعلی را با مشکل مواجه می‌کند؛ یا خطاهای زیادی را توسط کامپایلر گزارش خواهد کرد).
پیشنهاد اضافه شدن Nullable reference types به C# 7
اشتراک‌ها
5 دلیل برای اینکه ویندوز8 شکست خورده است
تغییر پلتفرم از Desktop به Tablet و SmartPhoneها تهدید بسیار جدی برای مایکروسافت و اینتل میتونه باشه. از عمده دلایل User Friendly بودن خانواده ویندوز برای عموم کاربران نرم افزارهای متعدد و با کیفیت است که در این زمینه هم مایکروسافت شدیدا عقب مونده(کمی و کیفی). به نطرم شیفت دادن ابزارها و کاربران به پلتفرم جدید توسط مایکروسافت بهتر بود چیزی شبیه اوبونتو باشه نه حرکت رادیکالی مثل این کارها(هنوزم بابت سرنوشت سیلورلایت از مایکروسافت دلخورم!).البته زیاد موافق نویسنده نیستم و قضاوت زودهنگامی برای شکست ویندوز8 هستش و در ثانی برای تمامی دلایلش جواب‌های قانع کننده ای میشه داد با اینهمه به قول معروف Numbers don't lie 
5 دلیل برای اینکه ویندوز8 شکست خورده است
نظرات مطالب
Blazor 5x - قسمت یازدهم - مبانی Blazor - بخش 8 - کار با جاوا اسکریپت
یک نکته‌ی تکمیلی: دریافت خروجی مستقیم از کدهای جاوااسکریپتی در برنامه‌های Blazor، بدون تهیه‌ی فایل‌های js. خارجی
با استفاده از تابع eval جاوااسکریپت می‌توان کدهای جاوااسکریپتی را به صورت مستقیم هم اجرا کرد؛ چند مثال:
- اجرای یک سطر کد جاوااسکریپتی به صورت مستقیم و دریافت خروجی آن:
var timeZoneOffSet = await jsRuntime.InvokeAsync<int>("eval", "new Date().getTimezoneOffset()");
- فراخوانی یک متد خود اجرا شونده و دریافت خروجی آن:
var ianaTimeZoneName = jsRuntime.Invoke<string>("eval",
    "(function(){try { return ''+ Intl.DateTimeFormat().resolvedOptions().timeZone; } catch(e) {} return 'UTC';}())");
نظرات مطالب
معماری میکروسرویس‌ها
اگر تجزیه و تحلیل، طراحی و پیاده‌سازی هر معماری و روشی به درستی انجام بشه میزان اشکالات یا چالش‌ها به حداقل میرسن. به عنوان مثال، کندی در بستر شبکه به دلیل خود این معماری نیست، بلکه این سیستم نیاز به یک شبکه سالم و نرمال داره، نه شبکه‌ای که قطعی زیاد و مسدودسازی‌های اشتباه داره. شبکه مریض تاثیر مخرب بر روی هر دو معماری داره و از اونجایی که این معماری آمده تا مشکلات کندی Monolithic رو با توزیع پذیری بیشتر رفع کنه با کارایی پایین مواجه میشه.
نیاز به پیاده‌سازی صحیح و بستر مناسب رو میشه برای باقی چالش‌های احتمالی که با آنها چندان موافق نبودید هم در نظر گرفت. 
نظرات مطالب
تولید SiteMap استاندارد و ایجاد یک ActionResult اختصاصی برای Return کردن SiteMap تولید شده
تشکر بابت پاسختون
2 - سایتی که من بر روی وب می‌گذارم با حدود یک میلیون صفحه در وب قرار می‌گیرد! (و قابل ذکر هست که بیش از 50000 لینک در سایت مپ ممکن نیست) بر اساس مواردی که شما بیان کردید، باید هر روز مقداری از این لینک‌ها را در سایت مپ قرار بدهم و بعد از ایندکس شدن توسط گوگل آن‌ها را تغییر دهم که عملا برای این حجم بالا ممکن نیست.
می تونم بپرسم جرا با ساختن فایل‌های فیزیکی برای سایت مپ موافق نیستید؟
(البته در شرایط صورت مسئله ای که بیان کردم) در این صورت می‌شود طوری برنامه ریزی کرد که این فایل ها( به دلیل بالا بودن تعداد لینک از چندین فایل استفاده شود) در بازه زمانی مشخص دوباره باز سازی شوند و هیچ بار اضافه ای برای ایجاد هرباره آن‌ها به وجود نیاید.
باز هم تشکر بابت وقتی که می‌گذارید...
نظرات مطالب
تنظیمات تاریخ قمری در ویندوز
امکان تبدیل تاریخ شمسی و میلادی به قمری، مستقل از تنظیمات ویندوز، به کتابخانه‌ی «DNTPersianUtils.Core » اضافه شد. روش استفاده:
// تبدیل تاریخ میلادی به قمری 
new DateTime(2018, 08, 31).ToIslamicDay() -> new IslamicDay(1439, 12, 19)

// تبدیل تاریخ شمسی به قمری 
IslamicDateUtils.PersianDayToIslamicDay(1397, 6, 9) -> new IslamicDay(1439, 12, 19)
نظرات مطالب
ModelBinder سفارشی در ASP.NET MVC
سلام؛ بنده یک کلاس به نام PersainCalender ایجاد کرده‌ام که از اینترفیس IModelBinder ارث بری می‌کند. در زمانیکه بخوام اطلاعات فرم رو با Ajax به سرور بفرستم عمل بایند انجام می‌شود؛ ولی فیلد تاریخ که به صورت شمسی از ورودی فرستادم به میلادی تبدیل نمی‌شود. ولی در غیر Ajax این طور نیست و تبدیل شمسی به میلادی انجام می‌شود. فقط در زمان ارسال اطلاعات با Ajax این اتفاق می‌افتد. به نظرتون مشکل از کجاست؟
نظرات مطالب
ASP.NET MVC #11
ممنون ولی یه خورده من گیج شدم ارزشی که پس از اعمال مدل بایندر در متغیر از جنس DateTime ذخیره می‌شود بصورت زیر است :


ولی واقعا معادل تاریخ میلادی برای تاریخ شمسی وارد شده نیست.از آنجائی که تو صورت مسئله نوشته شده بود مدل بایندر شمسی رو به میلادی تبدیل می‌کنه آیا این تبدیل بخاطر تاریخ شمسی سیستم دچار مشکل نمی‌شود. بخشی رو هم که فرمودید صرفا ToString محلی هست رو متوجه نشدم.
نظرات مطالب
امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x - قسمت دهم- ذخیره سازی اطلاعات کاربران IDP در بانک اطلاعاتی
با عرض سلام طبق مستندات Identity Server ، ثبت Claims‌ها در تابع  GetProfileDataAsync  بهتر است به صورت زیر نوشته شود:
  public async Task GetProfileDataAsync(ProfileDataRequestContext context)
        {
            var subjectId = context.Subject.GetSubjectId();
            var claimsForUser = await _usersService.GetUserClaimsBySubjectIdAsync(subjectId).Select(c => new Claim(c.ClaimType, c.ClaimValue)).ToList();
             context.AddRequestedClaims(claimsForUser );
        }    
زیرا تابع AddRequestedClaims  تنها Claims هایی که  کلاینت درخواست کرده را باز میگرداند ولی در صورتی که Claims ‌ها به طور مستقیم به IssuedClaims   اضافه شود حتی Claims  هایی که کلاینت درخواست نکرده نیز برگردانده میشود. این مشکل میتواند یک نقص امنیتی به وجود بیاورد که کلاینت از طریق آن میتواند به Claims هایی که به آنها دسترسی ندارد و آنها را درخواست نکرده است دسترسی داشته باشد!
نظرات مطالب
Accord.NET #1
Accord.NET در حقیقت یک توسعه ای برای AForge.NET است. و چنانچه می‌خواهید از آکورد استفاده کنید بایستی ابتدا AForge.NET نصب نمایید.
AForge.NET یک کتابخانه بسیار عالی است اما در هر کدام از فضای نام هایش نقص هایی وجود دارد که در آکورد دات نت به آن افزوده شده است؛ به عنوان مثال در درختواره فضای نام MachineLearning مستندات دو پروژه مشاهده می‌کنیم که بسیاری از مفاهیم یادگیری ماشین از جمله : دسته بند نیو بیز، بوستینگ، بگینگ، درخت تصمیم، انواع مختلف اعتبارسنجی‌ها و ... در Accord.NET گنجانده شده است.