نظرات مطالب
Globalization در ASP.NET MVC - قسمت ششم
برای طراحی یک سامانه مدیرت محتوا با کلی ماژول فکر می‌کنم حرفم منطقی باشه مهندس، در ضمن همونجوری که مهندس یوسف نژاد فرمودن اطلاعات در بازیابی اولیه کش میشه و تا ری ستارت شدن سایت در حافظه می‌مونه، فکر می‌کنم چندان تاثیری بروی کارایی داشته باشه با توجه به فرضیات، فرض کن من 10000 عنوان دارم، 30 تا زبان دارم در این صورت توی یک جدول زبان انگلیسی (en-کالچر انگلیسی) 10000 بار تکرار میشه علاوه بر اون عنوان مثلا "نام کاربری" به ازای 30 زبان 30 بار تکرار میشه زیادم حرف من غیر منظقی نیست و الا حرف شما درسته بله join سرعت پایین میاره اما ما که قرار نیست زیادی دسترسی به این جداول داشته باشیم.
"پس از اولین درخواست برای هر منبع، نمونه تولیدشده از پرووایدر مربوطه در حافظه سرور کش خواهد شد." سخن مهندس یوسف نژاد
نظرات مطالب
پیاده سازی پروژه نقاشی (Paint) به صورت شی گرا 5#
امروز فرصتی دست داد نگاهی اجمالی به این پروژه بیندازم. به نظرم کد نوشته شده تا به اینجا شی گرا محسوب نمی‌شود. یعنی برخی اهدافی که به واسطه آن پارادایم شی گرایی شکل گرفته در آن رعایت نشده است.
به طور مشخص منظورم متد DrawPreview است که در بخش سوم در کلاس Helpers نوشته شده. تکرار کد شدیدی که در دستور switch این متد دیده می‌شود به سادگی قابل حذف است. کد فوق 2 مشکل اساسی دارد: اول آنکه با زیاد شدن تعداد اشیای قابل رسم، این دستور switch بسیار طولانی شده (با تکرار کد) و کد ناخوانا می‌شود و دوم آنکه با اضافه شدن هر شی قابل رسم جدید به پروژه یک case باید به این دستور اضافه شود. یعنی تغییر در یک بخش از نرم‌افزار منجر به تغییر در سایر بخش‌ها (کلاس Helpers) می‌شود. بدیهی است پارادایم شی‌گرا برای جلوگیری از چنین مسائلی شکل گرفته. در غیر این صورت این کد همان کدهای ساخت‌یافته است که در قالب کلاس نوشته شده. به نظر می‌آید بهتر باشد یک اینترفیس drawable در نظر گرفته می‌شد، در این متد از آن استفاده می‌شد و اشیای قابل رسم آنرا پیاده‌سازی می‌کردند. یک راه بسیار ساده و کارامد 
نظرات اشتراک‌ها
کتابخانه‌ای برای تغییر تصاویر وب‌سایت به صورت هوشمند؛ جهت بهبود کارآیی و سرعت
- برای ارسال مشکلات یک کتابخانه از همان issue tracker آن در GitHub استفاده کنید. همچنین هم عنوان نکنید، «کار نمی‌کنه» چون اصلا مفید نیست و کمکی به رفع مشکل نمی‌کند.
- برای تغییر اندازه تصاویر و امثال اینها در دات نت 5 و 6، می‌توانید از Image sharp استفاده کنید. کتابخانه‌ای هست کاملا نوشته شده با سی‌شارپ، بدون وابستگی‌های native و چندسکویی.
نظرات اشتراک‌ها
واحد پول جدید؛ دغدغه آتی نرم افزارهای ایران
با سلام و عرض تشکر برای این مطلب خوب، شاید توجه به نقل قول ذیل جالب باشه:
وحید حلاجی:
از نوع money استفاده نکنید. برای عملیات محاسباتی، مثل ضرب و تقسیم دو money با همدیگه خیلی بد و غیر دقیق هست. money فقط مناسب عمل کستینگ casting برای نمایش به کاربر می‌تونه مفید باشه.  
اشتراک‌ها
خلاصه تجربیات یک نویسنده‌ی فنی پس از 8 سال

- شما عالم به مطلب خود هستید، بنابراین سطح آن‌را باید برای خواننده‌ی غیرمطلع تنظیم کنید.
- قبل از شروع کردن به کد نویسی و ارائه‌ی راه حلی، کمی توضیح دهید که چرا دارید اینکار را انجام می‌دهید. ابتدا باید نیازی را خلق کنید.
- اگر زمان مطالعه‌ی مطلب شما به بیش از 4 دقیقه برسد، شانس خوانده شدن آن زیر 40 درصد خواهد بود.
- ارائه تصاویر مرتبط با بحث را فراموش نکنید. یک تصویر بهتر است از هزاران کلمه.

خلاصه تجربیات یک نویسنده‌ی فنی پس از 8 سال
نظرات مطالب
Blazor 5x - قسمت چهارم - مبانی Blazor - بخش 1 - Data Binding
- کامپوننت InputText نیازی به رخداد ذکر شده ندارد؛ چون خاصیت Value آن دوطرفه است و همچنین Value آن با V بزرگ است و نه کوچک و بهتر است این موارد کوچک و بزرگ را با هم ترکیب نکنید. پشت صحنه‌ی روش طراحی آن‌را کمی بالاتر توضیح دادم: «یک نکته‌ی تکمیلی: روش تعریف data binding دو طرفه در کامپوننت‌ها»
نظرات مطالب
امکان تغییر شکل سراسری URLهای تولیدی توسط برنامه‌های ASP.NET Core 2.2
یک نکته‌ی تکمیلی: از LowercaseQueryStrings استفاده نکنید!

به همراه نکات این مطلب، خاصیت دیگری به نام LowercaseQueryStrings نیز وجود دارد و به همان نحوی که LowercaseUrls تنظیم می‌شود، قابل تنظیم است، اما نحوه‌ی پردازش آن به صورت زیر است:
 if (_options.LowercaseUrls && _options.LowercaseQueryStrings) 
 { 
     queryString = queryString.ToLowerInvariant(); 
 }
یعنی کل کوئری استرینگ و حتی محتوای آن‌را هم تغییر می‌دهد. در این حالت برای مثال اگر اطلاعات کوئری استرینگ شما به همراه داده‌ای رمزنگاری شده باشد، به علت از دست رفتن و تخریب اصل اطلاعات، دیگر قابلیت رمزگشایی را نخواهد داشت.
نظرات مطالب
Blazor 5x - قسمت 21 - احراز هویت و اعتبارسنجی کاربران Blazor Server - بخش 1 - افزودن قالب ابتدایی Identity
- خارج از موضوع بحث نکنید.
- ساختار ابتدایی پروژه‌های Blazor Server را در مطلب «Blazor 5x - قسمت دوم - بررسی ساختار اولیه‌ی پروژه‌های Blazor» بررسی کردیم که در آن AddServerSideBlazor و غیره بحث شده‌اند که شامل موارد دیگری مانند مشخص سازی روش رندر کامپوننت‌ها و ... سیم‌کشی‌های دیگری هم هست برای اجرای بدون خطا:
<component type="typeof(App)" render-mode="ServerPrerendered" />
نظرات مطالب
Blazor 5x - قسمت سوم - مبانی Razor
- using directives هیچگونه تاثیری را بر روی مصرف حافظه‌ی برنامه ندارند. در NET CLR. هیچگونه مفهومی تحت عنوان using directive وجود خارجی ندارد و در نتیجه در باینری حاصل نمودی را پیدا نمی‌کند. هدف از آن‌ها فقط این است که فضاهای نام طولانی را تایپ نکنید.
- اکثر مثال‌های مایکروسافت بر مبنای best practices تهیه و طراحی نمی‌شوند و بیشتر جنبه‌ی دمو دارند.
نظرات مطالب
React 16x - قسمت 29 - احراز هویت و اعتبارسنجی کاربران - بخش 4 - محافظت از مسیرها
استفاده از window.location سبب خواهد شد تا کامپوننت App که بالاترین کامپوننت برنامه است، مجددا رندر شود و اطلاعات جدید را از یک کامپوننت سطح پایین‌تر دریافت کند (صفحه را reload می‌کند). اگر از آن استفاده نکنید، همین اتفاقی که عنوان کردید رخ می‌دهد. روش بهتر مدیریت این موارد (انتقال ساده‌تر اطلاعات بین کامپوننت‌ها)، state management سراسری مانند Redux و یا MobX است که پس از پایان این سری در مورد آنها بحث شده.