نظرات اشتراک‌ها
معرفی Mozilla Firefox Accounts
این امکان رو گوگل کروم قبلا اضافه کرده بود.
اشتراک‌ها
با پیدا شدن اشکال امنیتی جدی، SSL 3.0 به پایان خود رسید

دو روز گذشته( ۲۳ مهر ۱۳۹۳ ) گروهی از کارشناسان گوگل اشکالی امنیتی در پروتکل امنیتی SSL 3.0 پیدا کردند که باعث می‌شود افراد مهاجم بتوانند اطلاعات کدشده میان سرور و مرورگر را بخوانند.
این اشکال امنیتی Poodle نام گرفته و برای رفع آن هیچ راه حلی به جز غیرفعال کردن SSL 3.0 رور مرورگر وجود ندارد.
موزیلا اعلام کرد که در نگارش ۳۵ فایرفاکس این پروتکل را به طور کلی غیرفعال خواهد کرد. گوگل نیز اعلام کرد برنامه دارد تا این پروتکل را در آینده‌ای نزدیک از کروم حذف کند. 

با پیدا شدن اشکال امنیتی جدی، SSL 3.0 به پایان خود رسید
نظرات مطالب
نحوه ایجاد یک اسلایدشو به صورت داینامیک
با نحوه دیباگ اسکریپت‌های jQuery آشنا هستید؟ افزونه فایرباگ رو نصب کنید. بعد مراجعه کنید به قسمت مثلا network آن. بعد مشاهده کنید، آیا چیزی رد و بدل شده؟ آیا در کنسول اسکریپت‌های مرورگر خطایی لاگ شده. آیا مثلا CSSهای سایت روی این افزونه تاثیر داشته. مرورگر کروم هم در قسمت developer tools آن شبیه به فایرباگ رو داره. دکمه F12 آن.
نظرات مطالب
Blazor 5x - قسمت 34 - توزیع برنامه‌های Blazor بر روی IIS
- اسمبلی‌های دات نتی را که هربار به صورت خودکار دریافت می‌کند. یکی از کارهای اسکریپتی که در انتهای فایل index.html درج شده، دقیقا بررسی امضای دیجیتال موارد موجود در کش مرورگر و موارد بر روی سرور هست. بنابراین غیرممکن است که اسمبلی‌های جدید WASM، از کش خوانده شوند.
- تنها مواردی که ممکن است از کش خوانده شوند، فایل‌های استاتیک برنامه هستند که دو رویه‌ی تنظیم هدر کش فایل‌های استاتیک (تنظیمات کش کردن چندسکویی فایل‌های ایستا در ASP.NET Core) و استفاده از روش‌های cache busting را باید مدنظر داشته باشید (مانند قرار دادن یک کوئری استرینگ بیانگر نگارش در انتهای فایل‌های css و js شبیه به asp-file-version) و این مورد در تمام برنامه‌های وب، یکسان است.
نظرات مطالب
بررسی تغییرات Blazor 8x - قسمت چهارم - معرفی فرم‌های جدید تعاملی

یک نکته‌ی تکمیلی: نحوه‌ی نامگذاری ویژه‌ی عناصر در فرم‌های جدید Blazor SSR

اگر با نگارش‌های دیگر Blazor کار کرده باشید، عموما یک EditForm را به صفحه اضافه کرده و چند المان را به آن اضافه می‌کنیم و ... کار می‌کند. حتی اگر کامپوننت‌های سفارشی را هم بر این مبنا تهیه کنیم ... بازهم بدون نکته‌ی خاصی کار می‌کنند. اما ... در برنامه‌های Blazor SSR اینطور نیست! زمانیکه برای مثال مدل فرم را به این صورت تعریف می‌کنیم:

[SupplyParameterFromForm]
public OrderPlace? MyModel { get; set; }

و آن‌را به نحو متداولی در صفحه نمایش می‌دهیم:

<InputText @bind-Value="MyModel.City"/>

اگر به المان رندر شده‌ی در مرورگر مراجعه کنیم، ویژگی name حاصل، با MyModel.City مقدار دهی شده‌است و ... این موضوع درج نام خاصیت مدل (و یا اصطلاحا Html Field Prefix)، برای Blazor SSR بسیار مهم است! تاحدی که اگر از آن آگاه نباشید، ممکن است ساعتی را مشغول دیباگ برنامه شوید که چرا، مقدار نالی را دریافت کرده‌اید و یا عناصر تعریف شده‌ی در کامپوننت‌های سفارشی، کار نمی‌کنند و مقدار نمی‌گیرند!

متاسفانه API بازگشت نام کامل عناصری که توسط Blazor SSR تولید می‌شود، عمومی نیست و internal است. اگر از کامپوننت‌های استاندارد خود Blazor استفاده می‌کنید، نیازی نیست تا به این موضوع فکر کنید و مدیریت آن خودکار است؛ اما همینکه قصد تولید کامپوننت‌های سفارشی مخصوص SSR را داشته باشید، اولین مشکلی را که با آن مواجه خواهید شد، دقیقا همین مساله‌ی تولید صحیح HtmlFieldPrefix‌ها است.

برای رفع این مشکل و دسترسی به API پشت صحنه‌ی تولید نام فیلدها در Blazor SSR، می‌توان از کامپوننت پایه‌ی InputBase خود Blazor ارث‌بری کرد و به این ترتیب به خاصیت جدید NameAttributeValue آن دسترسی یافت (این خاصیت به دات‌نت 8 و مخصوص Blazor SSR، اضافه شده‌است) که اینکار در کلاس BlazorHtmlField انجام شده‌است. روش استفاده‌ی از آن هم به صورت زیر است:

private BlazorHtmlField<T?> ValueField
        => new(ValueExpression ?? throw new InvalidOperationException(message: "Please use @bind-Value here."));

[Parameter] public T? Value { set; get; }

[Parameter] public EventCallback<T?> ValueChanged { get; set; }

[Parameter] public Expression<Func<T?>> ValueExpression { get; set; } = default!;

زمانیکه می‌خواهیم در یک کامپوننت سفارشی، خاصیتی bind پذیر را طراحی کنیم، روش کار آن، مانند مثال فوق است که به همراه یک خاصیت، یک EventCallback و یک Expression است تا اعتبارسنجی و انقیاد دوطرفه را فعال کند. اما ... اگر همین Value را مستقیما در فیلدهای کامپوننت استفاده کنیم ... مقدار نمی‌گیرد؛ چون به همراه نام کامل خاصیت بایند شده‌ی به آن نیست. برای مثال بجای MyModel.City فقط City درج می‌شود (که به علت نداشتن .MyModel، سیستم binding از مقدار آن صرفنظر می‌کند). اکنون با استفاده از BlazorHtmlField فوق، می‌توان به نام کامل تولیدی توسط Blazor SSR دسترسی یافت و از آن استفاده کرد:

<input type="text" dir="ltr"
        name="@ValueField.HtmlFieldName" 
        id="@ValueField.HtmlFieldName" />

HtmlFieldName ای که در اینجا درج می‌شود، توسط خود Blazor محاسبه شده و با انتظارات موتور binding آن تطابق دارد و دیگر به خواص بایند شده‌ای که مقدار نمی‌گیرند، نخواهیم رسید.

نظرات مطالب
React 16x - قسمت 33 - React Hooks - بخش 4 - useContext Hook
- بله. ()React-Redux connect دقیقا در پشت صحنه از همین Context API استفاده می‌کند. تفاوت این دو مانند مقایسه‌ی صرفا داشتن یک API ابتدایی (Context API) و داشتن یک کتابخانه‌ی غنی بنا شده‌ی بر اساس یک API هست (React-Redux) .
+ یک هوک دیگر به نام useReducer Hook هم به لیست هوک‌های استاندارد React اضافه شده که که در حقیقت زیرساخت useState است و کارش فراهم آوردن مدیریت حالت پیشرفته‌ای مخصوص یک کامپوننت است. البته جایگزین Redux که سراسری عمل می‌کند نیست.
برای مطالعه‌ی بیشتر: Redux vs. The React Context API 
نظرات مطالب
ارتقاء به ASP.NET Core 1.0 - قسمت 7 - کار با فایل‌های config
منظور این بود که اگر فایل متنی JSON مرتبط را در نوت‌پد (و امثال آن و یا با برنامه نویسی) باز کردید و تغییر دادید (ذخیره کردید، تاریخ Last modified آن را تغییر دادید)، بلافاصله تغییرات آن در برنامه منعکس می‌شوند؛ چون یک file watcher برای تغییرات آن فایل در پشت صحنه فعال است. مانند file watcher فایل معروف web.config در برنامه‌های ASP.NET که آن هم یک کانفیگ است البته از نوع XML و اگر تغییری در آن داده شود، کل برنامه را ری‌استارت می‌کند. اما در اینجا برنامه با تغییرات فایل JSON کانفیگ آن ری‌استارت نخواهد شد. فقط «یک نکته: بارگذاری مجدد اطلاعات فایل config در ASP.NET Core 1.1» قابل استفاده خواهد بود.
ایجاد رابط کاربری هم برای آن مساله‌ای است شخصی که در نهایت شامل deserialization و تبدیل آن به شیء و تغییر آن در برنامه و در آخر serialization این شیء و بازگشت به حالت JSON آن است. عموما از کتابخانه‌ی JSON.NET برای انجام اینکار استفاده می‌کنند.
نظرات مطالب
پیاده سازی JSON Web Token با ASP.NET Web API 2.x
return Ok نوشته شده محدودیتی ندارد؛ چون در پشت صحنه از کتابخانه‌ی Json.NET استفاده می‌کند و قادر هست با انواع و اقسام اشیاء پیچیده کار کند و آن‌ها را serialize کند. جهت سادگی کار در اینجا از یک anonymous object استفاده شده‌است. آن‌را با هر شیء دیگری و با هر ساختاری که علاقمندید تعویض کنید. هر نوع شیءایی را در اینجا می‌توان ذکر و یا اضافه کرد:
public IHttpActionResult Get()
{
  // Anonymous and Weakly-Typed Objects
   return Ok(new
            {
                Id = 1,
                Title = "Hello from My Protected Controller!",
                Username = this.User.Identity.Name,
                Property2 = new Object1 {  id = 1, name = "V" }
            });
   // OR ... Strongly-Typed Objects
   return Ok(model);
}
اشتراک‌ها
فریم ورک Eto

فریم ورکی برای ساخت برنامه‌های دسکتاپ چندسکویی دات نتی 

فریم ورک Eto