نمودار های کتابخانه D3js
name: Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup .NET Core 2.1
uses: actions/setup-dotnet@v1
with:
dotnet-version: 2.1.607
- name: Setup .NET Core 3.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.0.101
- name: .NET Core SxS
run: |
rsync -a ${DOTNET_ROOT/3.0.101/2.1.607}/* $DOTNET_ROOT/
- name: Build (Release - netcoreapp2.1)
run: dotnet build --configuration Release --framework netcoreapp2.1
- name: Build (Release - netcoreapp3.0)
run: dotnet build --configuration Release --framework netcoreapp3.0
- NET Core. نسخههای 2.1.607 و 3.0.101 در دو step نصب شده اند.
- سپس sync کردن این دو توسط دستور rsync انجام شده است.
- توسط تنظیم --framework به مقادیر netcoreapp2.1 و netcoreapp3.0 ، عملیات build توسط این دو target انجام شده است.
کامپوننتی را با نام SynchronousInitComponent با کد زیر درنظر میگیریم. همانطور که از اسم آن مشخص است این کامپوننت به صورت متقارن یا همزمان پیادهسازی شده است:
<p>Sync rendered by thread @IdOfRenderingThread</p> @code { int IdOfRenderingThread; protected override void OnInitialized() { base.OnInitialized(); IdOfRenderingThread = System.Threading.Thread.CurrentThread.ManagedThreadId; } }
حال در کامپوننت دیگری برای مثال کامپوننت index، کامپوننت همزمان فوق را به شکل زیر فراخوانی میکنیم:
@page "/" <h1>Components with synchronous OnInitialized()</h1> @for (int i = 0; i < 5; i++) { <SynchronousInitComponent /> }
Components with synchronous OnInitialized() Sync rendered by thread 4 Sync rendered by thread 4 Sync rendered by thread 4 Sync rendered by thread 4 Sync rendered by thread 4
حال همین آزمایش را با متدهای نامتقارن یا ناهمزمان انجام میدهیم. کامپوننت AsynchronousInitComponent را با کد زیر درنظر بگیرید:
<p>Async rendered by thread @IdOfRenderingThread</p> @code { int IdOfRenderingThread; protected override async Task OnInitializedAsync() { // Runs synchronously as there is no code in base.OnInitialized(), // so the same thread is used await base.OnInitializedAsync().ConfigureAwait(false); IdOfRenderingThread = System.Threading.Thread.CurrentThread.ManagedThreadId; // Awaiting will schedule a job for later, and we will be assigned // whichever worker thread is next available await Task.Delay(1000).ConfigureAwait(false); IdOfRenderingThread = System.Threading.Thread.CurrentThread.ManagedThreadId; } }
@page "/async-init" <h1>Components with asynchronous OnInitializedAsync()</h1> @for (int i = 0; i < 5; i++) { <AsynchronousInitComponent/> }
Components with asynchronous OnInitializedAsync() Async rendered by thread 4 Async rendered by thread 4 Async rendered by thread 4 Async rendered by thread 4 Async rendered by thread 4
Components with asynchronous OnInitializedAsync() Async rendered by thread 7 Async rendered by thread 18 Async rendered by thread 10 Async rendered by thread 13 Async rendered by thread 11
This is a guide on how to make requests to a protected resource using Client Credentials with the IdentityServer4.Contrib.HttpClientService nuget package. The library is actually an HttpClient
service that makes it easy to make authenticated and resilient HTTP requests to .protected by IdentityServer4 resource
سه مطلب کوتاه
مشکل فایرفاکس با سایتهای msdn و codeplex
هر از چند گاهی در بلاگهای msdn و یا سایت codeplex با خطای زیر از طرف سایت مواجه میشوم:
Bad Request - Request Too Long
HTTP Error 400. The size of the request headers is too long.
اگر با این مشکل مواجه شدید، تمامی کوکیهای مربوط به سایتهای مذکور را یافته و حذف کنید.
به نظر باگی در فایرفاکس در این زمینه سبب میشود که کوکیهای تمام زیر سایتهای فوق با هم ترکیب شده و رشتهای بسیار طولانی بجای کوکی اصلی آن زیر سایت به هاست ارسال شود.
که البته عکس العمل سایتهای مایکروسافت از دیدگاه امنیتی هم جالب توجه است (برای برنامه نویسهای وب).
IE8 و ارائهی fakepath بجای آدرس فایل
کنترل استاندارد آپلود فایل در مرورگرهای جدید، دیگر آدرس محلی فایل را حتی در اختیار اسکریپتهای سمت کاربر نیز قرار نمیدهند. فایرفاکس مدت زیادی است که این مورد را پیاده سازی کرده. اما IE بجای اینکه یک رشتهی خالی را بازگشت دهد مسیر c:\fakepath را ارائه خواهد داد (fakepath جزو استاندارد html 5 است). اگر احیانا با این مورد برخورد داشتید، با استفاده از تنظیم زیر میتوان مانند سابق مسیر کامل را نیز دریافت کرد:
Internet Explorer -> Tools -> Internet Option -> Security -> Custom ->
find the "Include local directory path when uploading files to a server"
-> click on "Enable"
اهمیت این مورد هم برای من این است که IE، یعنی همان مرورگر کاری در اکثر شرکتها (و این مورد فوق را به سادگی از طریق گروپ پالیسی میتوان به تمام کامپیوترها اعمال کرد).
علت تایم آوت و باز نشدن یک سری از سایتها در ایران
مدت زیادی این سؤال برای من وجود داشت که وجه مشترک سایتهایی مانند dotnetkicks.com ، summerofnhibernate.com ، lessthandot.com و امثال آن چیست که از این طرف باز نمیشوند؟
اگر به آدرسهای فوق که به سایت domaintools.com ختم میشوند، مراجعه کنید و سپس برگهی Server Stats آنها را ملاحظه نمائید، همگی توسط Godaddy.com Inc هاست میشوند. این شرکت غیرمحترم، IP های ایرانی را بسته است (مطلب جدیدی هم نیست).
Redis Fundamentals for .NET Developers
Redis is an open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and even a message broker.
In this live sessions, Stephen Lorello, Senior Field Engineer at Redis, joins us to show the the fundamental features .NET developers show know about using Redis
آموزش 2 ساعته روش کار با Postman
"Learn Postman in One Video: Master the API Testing Tool" is an engaging and comprehensive Udemy course designed to take you from a beginner to a proficient user of Postman. In this concise and focused course, you will learn everything you need to know about Postman, the popular API testing and development tool.