قالبهای پیشفرض Blazor 8x، به همراه قسمت بازنویسی شدهی ASP.NET Core Identity برای Blazor هم هستند که در این قسمت به بررسی نحوهی عملکرد آنها میپردازیم. معرفی قالبهای جدید شروع پروژههای Blazor در دات نت 8 به همراه قسمت Identity در قسمت دوم این سری، با قالبهای جدید شروع پروژههای Blazor 8x آشنا شدیم و هدف ما در آنجا بیشتر بررسی حالتهای مختلف رندر Blazor در دات نت 8 بود. تمام این قالبها به همراه یک سوئیچ دیگر هم به نام auth-- هستند که توسط آن و با مقدار دهی Individual که به معنای Individual accounts است، میتوان کدهای پیشفرض و ابتدایی Identity UI جدید را نیز به قالب در حال ایجاد، به صورت خودکار اضافه کرد؛ یعنی به صورت زیر: اجرای قسمتهای تعاملی برنامه بر روی سرور؛ به همراه کدهای Identity: dotnet new blazor --interactivity Server --auth Individual اجرای قسمتهای تعاملی برنامه در مرورگر، توسط فناوری وباسمبلی؛ به همراه کدهای Identity: dotnet new blazor --interactivity WebAssembly --auth Individual برای اجرای قسمتهای تعاملی برنامه، ابتدا حالت Server فعالسازی میشود تا فایلهای WebAssembly دریافت شوند، سپس فقط از WebAssembly استفاده میکند؛ به همراه کدهای Identity: dotnet new blazor --interactivity Auto --auth Individual فقط از حالت SSR یا همان static server rendering استفاده میشود (این نوع برنامهها تعاملی نیستند)؛ به همراه کدهای Identity: dotnet new blazor --interactivity None --auth Individual و یا توسط پرچم all-interactive--، که interactive render mode را در ریشهی برنامه قرار میدهد؛ به همراه کدهای I, ...ادامه مطلب
در قسمت قبل، با نامهایی مانند IdentityRevalidatingAuthenticationStateProvider و PersistingRevalidatingAuthenticationStateProvider آشنا شدیم. در این قسمت جزئیات بیشتری از این کلاسها را بررسی میکنیم. نحوهی پیاده سازی AuthenticationStateProvider در پروژههای Blazor Server 8x در کدهای زیر، ساختار کلی کلاس AuthenticationStateProvider ارائه شدهی توسط قالب رسمی پروژههای Blazor Server به همراه مباحث اعتبارسنجی مبتنی بر ASP.NET Core Identity را مشاهده میکنید: public class IdentityRevalidatingAuthenticationStateProvider : RevalidatingServerAuthenticationStateProvider { protected override TimeSpan RevalidationInterval => TimeSpan.FromMinutes(30); protected override async Task<bool> ValidateAuthenticationStateAsync( AuthenticationState authenticationState, CancellationToken cancellationToken) { // ... } } کار این کلاس، پیاده سازی کلاس پایهی RevalidatingServerAuthenticationStateProvider است. این کلاس پایه، چیزی نیست بجز یک کلاس پیاده سازی کنندهی AuthenticationStateProvider که در آن توسط حلقهای، کار یک تایمر را پیاده سازی کردهاند که برای مثال در اینجا هر نیم ساعت یکبار، متد ValidateAuthenticationStateAsync را صدا میزند. برای مثال در اینجا (یعنی کلاس بازنویسی کنندهی متد ValidateAuthenticationStateAsync که توسط تایمر کلاس پایه فراخوانی میشود) اعتبار security stamp کاربر جاری، هر نیم ساعت یکبار بررسی میشود. اگر فاقد اعتبار بود، کلاس پایهی استفاده شده، سبب LogOut خودکار این کاربر میشود. نحوهی پیاده سازی A, ...ادامه مطلب
درحال حاضر، باتوجه به خرده نداشتن مقادیر پولی در ایران، عموما از نوعهای int و bigint برای ذخیره سازی این مقادیر استفاده میشود؛ اما در آینده با احتمال حذف تعدادی از صفرها، نیاز به ثبت خردهها هم ضروری خواهد بود و در اینجا این سؤال مهم مطرح میشود که نوع دادهای مناسب برای انجام اینکار چیست؟ برای نمونه در SQL Server، نوعهای دادهای decimal، money، smallmoney و امثال آن وجود دارند که در این مطلب، تفاوتهای مهم آنها و روش صحیح انتخاب نوع دادهای مناسب مخصوص اینکار را بررسی خواهیم کرد. مشکل مهم نوع دادهای int جهت ذخیره سازی مقادیر پولی فرض کنید جدول سادهای را با دو فیلد Id و Price دارید که نوع مبلغ آنرا با توجه به عدم داشتن خرده در واحد پولی، int انتخاب کردهاید: CREATE TABLE [Test1]( [Id] [int] IDENTITY(1,1) NOT NULL, [Price] [int] NOT NULL, CONSTRAINT [PK_Test1] PRIMARY KEY CLUSTERED ( [Id] ASC )); اگر در این جدول فقط 7 رکورد زیر را ثبت کنیم: Insert into Test1 values (1000000000),(1000000000),(1000000000),(1000000000),(1000000000),(1000000000),(1000000000) به نظر شما خروجی کوئری سادهی زیر که جهت نمایش جمع مبالغ وارد شده تهیه شده، چیست؟ select sum(price) from Test1 خروجی آن فقط استثنای زیر است! Arithmetic overflow error converting expression to data type int. عنوان میکند که جمع آن از بازهی اعداد صحیح خارج شدهاست و در سیستمی که نوع مبالغ آنرا int انتخاب کردهاید، دیر یا زود به این مشکل خواهید رسید. فقط کافی است کاربران، یکسالی با آن برنامه کار کنند! برای حل این مشکل میتوان به صورت موقت، نوع دادهای را به bigint تبدیل کرد و مجددا جمع رکوردها را محاسب, ...ادامه مطلب
آموزش کامل سئوکلمه SEO مخفف سه کلمه search engine optimize است که معادل فارسی آن بهینه سازی برای موتور جستجو یا سئو است. البته برخی اشتباها آن را بهینه سازی موتور جستجو معرفی میکنند که معنایی ندارد و غلط است. در این مقال سعی داریم به سوال پایخ دهیم که سئو چیست و سئو کار کیست و چه وظایفی دارد. فرآیند سئو یا بهینه سازی سایتها از قبل از شروع طراحی سایت آغاز میشود و تا روزی که سایت قرار است دیده شود ادامه دارد. بعضیها تصور میکنند سئو مانند تعمیر موتور است و پس از تعمیر کار تمام میشود. ولی به هیچ وجه این طور نیست. سئو یک فرآیند است که برای کسب نتیجه باید به طور مستمر امتدادش داد. دف اصلی سئو در واقع افزایش ترافیک ارگانیک سایت است و از این طریق مشتریان بیشتری از همین سئو همین بس که روزانه میلیاردها جستجو در مرورگرها انجام میشود و اکثر کسب و کارها و خریدها و درخواستها از طریق اینترنت انجام میشود و هر چقدر سایت شما بهینهتر باشد سهمتان از این بازار بیشتر است. یک اصطلاحی بین سئوکاران وجود دارد که به تعداد سئوککاران روش سئو وجود دارد. تا حدودی میتواند این موضوع صحیح باشد ولی باید دقت کنید از یک سری اشتباهات سئو که اکثر افراد قبول دارند کار خطایی است دوری کنید. البته در راه بهینه سازی حتما باید از ابزارهای سئو کمک بگیرید تا با تحلیل دقیق به سوی موفقیت حرکت کنید. دسته بندی فعالیتهای سئو امروزه کارهایی که در سئو انجام میشود دارای طبقه بندیهای مختلفی است. یکی از این طبقه بندیها سئو کلاه سیاه و سئو کلاه سفید و سئو کلاه خاکستری است. سئو کلاه سفید به دیته بندی از کارها که مطابق میل موتورهای ستجو است سئو کلاه سفید میگویند. اگر شما از استاندارهای گوگل پیروی کنید در حق, ...ادامه مطلب
به ASP.NET Core 7، یک میانافزار جدید به نام Rate limiter اضافه شدهاست که امکان محدود سازی دسترسی به منابع برنامهی ما را میسر میکند. این میانافزار، طراحی جامع و مفصلی را دارد. به همین جهت نیاز است در ابتدا با مفاهیم مرتبط با آن آشنا شد و سپس به سراغ پیاده سازی و استفادهی از آن رفت. چرا باید میزان دسترسی به منابع یک برنامهی وب را محدود کرد؟ فرض کنید در حال ساخت یک web API هستید که کارش ذخیره سازی لیست وظایف اشخاص است و برای مثال از یک GET /api/todos برای دریافت لیست ظایف، یک POST /api/todos برای ثبت و یک PUT /api/todos/{id} برای تغییر موارد ثبت شده، تشکیل میشود. سؤال: چه مشکلی ممکن است به همراه این سه endpoint بروز کند؟ پاسخ: به حداقل چهار مورد زیر میتوان اشاره کرد: - یک مهاجم سعی میکند با برنامهای که تدارک دیده، هزاران وظیفهی جدید را در چند ثانیه به سمت برنامه ارسال کند تا سبب خاتمهی سرویس آن شود. - برنامهی ما در حین سرویس دهی، به یک سرویس ثالث نیز وابستهاست و آن سرویس ثالث، اجازهی استفادهی بیش از اندازهی از منابع خود را نمیدهد. با رسیدن تعداد زیادی درخواست به برنامهی ما تنها از طرف یک کاربر، به سقف مجاز استفادهی از آن سرویس ثالث رسیدهایم و اکنون برنامه، برای تمام کاربران آن قابل استفاده نیست. - شخصی در حال دریافت اطلاعات تک تک کاربران است. از شماره یک شروع کرده و به همین نحو جلو میرود. برای دریافت اطلاعات کاربران، نیاز است شخص به سیستم وارد شده و اعتبارسنجی شود؛ یعنی به ازای هر درخواست، یک کوئری نیز به سمت بانک اطلاعاتی جهت بررسی وضعیت فعلی و آنی کاربر ارسال میشود. به همین جهت عدم کنترل میزان دسترسی به لیست اطلاعات کاربران، بار سنگین, ...ادامه مطلب
در قسمت قبل با مفاهیم، اصطلاحات و الگوریتمهای مرتبط با میانافزار جدید Rate limiting مخصوص ASP.NET Core 7 آشنا شدیم که در پشت صحنه از امکانات موجود در فضای نام System.Threading.RateLimiting استفاده میکند. در این قسمت نحوهی استفادهی از آنرا مرور خواهیم کرد. روش افزودن میانافزار RateLimiter به برنامههای ASP.NET Core شبیه به سایر میانافزارها، جهت فعالسازی میانافزار RateLimiter، ابتدا باید سرویسهای متناظر با آنرا به برنامه معرفی کرد و پس از فعالسازی میانافزار مسیریابی، آنرا به زنجیرهی مدیریت یک درخواست معرفی نمود. برای نمونه در مثال زیر، امکان دسترسی به تمام درخواستها، به 10 درخواست در دقیقه، محدود میشود که پارتیشن بندی آن (در مورد پارتیشن بندی در قسمت قبل بیشتر بحث شد)، بر اساس useame کاربر اعتبارسنجی شده و یا hostname یک کاربر غیراعتبارسنجی شدهاست: var builder = WebApplication.CreateBuilder(args); builder.Services.AddRateLimiter(options => { options.GlobalLimiter = PartitionedRateLimiter.Create<HttpContext, string>(httpContext => RateLimitPartition.GetFixedWindowLimiter( partitionKey: httpContext.User.Identity?.Name ?? httpContext.Request.Headers.Host.ToString(), factory: partition => new FixedWindowRateLimiterOptions { AutoReplenishment = true, PermitLimit = 10, QueueLimit = 0, Window = TimeSpan.FromMinutes(1) })); }); // ... var app = builder.Build(); // ... app.UseRouting(); app.UseRateLimiter(); app.Map, ...ادامه مطلب
غنیسازی پاورشل PowerShell توسط اپلیکیشنهای مختلفی مانند VS Code یا Console قابل میزبانی است. با کمک این اپلیکیشنها، دستورات به موتور PowerShell ارسال میشوند. این موتور است که دستورات را دریافت کرده و آنها را اجرا میکند و در نهایت خروجی، درون این اپلیکشنهای میزبان، نمایش داده خواهند شد. علاوه بر آن، یک اپلیکیشن میزبان، مسئولیت بارگذاری و اجرای اسکریپتها را با هربار اجرای شل، بر عهده دارد. درون این اسکریپتها، فرصت این را خواهیم داشت تا ماژولهای موردنیازمان را بارگذاری کنیم؛ دایرکتوری پیشفرض را تغییر دهیم، یکسری توابع را تعریف و یا فراخوانی کنیم. بنابراین این امکان را داریم تا موتور PowerShell را درون یک پراسس NET. میزبانی کنیم. در اینحالت باید خودمان Input/Output را هندل کنیم. به عنوان مثال میتوانیم Error streams را درون یک Message Box نمایش دهیم، یا اینکه Information streams را درون یکسری RichText Box نمایش دهیم. در اینجا میتوانید مراحل پیادهسازی یک نمونه Host سفارشی را مشاهده کنید. برای مشاهدهی مشخصات اپلیکیشن میزبان میتوانید از دستور Get-Host یا از متغیر خودکار host$ نیز استفاده کنید: PS /> Get-Host Name : ConsoleHost Version : 7.3.0 InstanceId : c3f625f0-dad8-4325-a0a1-f6499afecb8a UI : System.Management.Automation.Inteal.Host.IntealHostUserInte rface CurrentCulture : en-GB CurrentUICulture : en-GB PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy DebuggerEnabled : True IsRunspacePushed : False Runspace : System.Management.Automation.Runs, ...ادامه مطلب
با نرم افزار Greenify یک برنامه کاربردی برای بهینه سازی مصرف باتری است. هرگز نباید تلفن و یا دستگاه اندروید ی خود را بعد از نصب برنامه های زیاد بدون شارژ و در حالت باتری ضعیف قرار داد. با نرم افز, ...ادامه مطلب
بازی و و اندروید و Township بازی محبوب مزرعه و داری و است که ترکیب منحصر به فردی از شهرستان سازی و و مزرعه داری برای دستگاه های اندرویدی است. بازی اندروید Township به شما این امکان را می دهد که مزرعه مورد ع, ...ادامه مطلب
با نرم افزار Greenify یک برنامه کاربردی برای بهینه سازی مصرف باتری است. هرگز نباید تلفن و یا دستگاه اندرویدی خود را بعد از نصب برنامه های زیاد بدون شارژ و در حالت باتری ضعیف قرار داد. با نرم افزار Greenify دستگاه شما می تواند عملکردی با دوام و روان مانند روز اولی که آن را در دست گرفته بودید، داشته باشد. این اپلیکیشن به شما کمک می کند تا برنامه … ۱۳۹۷-, ...ادامه مطلب
Ultimate Car Driving Simulator یک بازی شبیه سازی رانندگی کم حجم می باشد. این بازی بهترین بازی شبیه سازی رانندگی با ماشین به همراه فیزیک واقع گرایانه است. از ویژگی های بازی Ultimate Car Driving Simulator می توان به سفارشی سازی نامحدود، گیم پلی اعتیادآور و سرگرم کننده بی پایان اشاره کرد. بازی شبیه سازی رانندگی ترکیبی از یک بازی واقع گرایانه فیزیکی و سرگر, ...ادامه مطلب
Ultimate Car Driving Simulator یک بازی شبیه سازی رانندگی کم حجم می باشد. این بازی بهترین بازی شبیه سازی رانندگی با ماشین به همراه فیزیک واقع گرایانه است. از ویژگی های بازی Ultimate Car Driving Simulator می توان به سفارشی سازی نامحدود، گیم پلی اعتیادآور و سرگرم کننده بی پایان اشاره کرد. بازی شبیه سازی رانندگی ترکیبی از یک بازی واقع گرایانه فیزیکی و سرگر, ...ادامه مطلب
بازی My Gym: Fitness Studio Manager یک بازی جذاب در زمینه بازیهای مدیریتی و شبیه سازی میباشد که شما در آن باید یک باشگاه بدنسازی را مدیریت کنید و با افزودن تجهیزات ورزشی و دستگاهای تناسب اندام، مشتریان بیشتری را به سمت خود جذب کنید. در بازی My Gym: Fitness Studio Manager رسیدگی خوب به مشتریان و جواب دادن به مشتریان باعث میشود آنها به لباس و تغذیه مناسب نیاز داشته باشند. همچنین … آنلاین ۱۳۹۶-۱۱-۰۹ 7 بار بدون دیدگاه مجید نواییبازی My Gym: Fitness Studio Manager یک بازی جذاب در زمینه بازیهای مدیریتی و شبیه سازی میباشد که شما در آن باید یک باشگاه بدنسازی را مدیریت کنید و با افزودن تجهیزات ورزشی و دستگاهای تناسب اندام، مشتریان بیشتری را به سمت خود جذب کنید. در بازی My Gym: Fitness Studio Manager رسیدگی خوب به مشتریان و جواب دادن به مشتریان باعث میشود آنها به لباس و تغذیه مناسب نیاز داشته باشند. همچنین شما میتوانید به مشتریان خود مکملهای غذایی بفروشید، بعد از این آنها هنگام خروج، مشتریان پول خود را به شما پرداخت خواهند کرد با این پول شما میتوانید یک باشگاه بدنسازی دیگر برای افزایش درآمد خود ایجاد کنید یا اینکه باشگاه خود را به دلخواه تغییر دهید. پس از رسید به سطح یا لول ۸ شما قادر خواهید بود برای باشگاه و مشتریان خود مربیهایی استخدام کنید، این مربیها میتوانند سطح شما را, ...ادامه مطلب
اگر به سبک بازی ها بقا و ماجرایی علاقه دارید بهترین گزینه بازی Knives Out است که در آن شما و ده ها بازیکن دیگر در یک گروه به صورت آنلاین باید بتوانید با یکدگیر بر سر زنده ماندن و یافتن تجهیزات رقابت کنید این رقابت بر سر زندگی شما خواهد بود پس بهتر است که سریع و با دقت باشید.همانطور که گفته شد در بازی Knives Out ده ها … آنلاین ۱۳۹۶-۱۱-۰۸ 23 بار بدون دیدگاه مجید پاشاییاگر به سبک بازی ها بقا و ماجرایی علاقه دارید بهترین گزینه بازی Knives Out است که در آن شما و ده ها بازیکن دیگر در یک گروه به صورت آنلاین باید بتوانید با یکدگیر بر سر زنده ماندن و یافتن تجهیزات رقابت کنید این رقابت بر سر زندگی شما خواهد بود پس بهتر است که سریع و با دقت باشید.همانطور که گفته شد در بازی Knives Out ده ها بازیکن دیگر با شما در بازی شرکت میکنند تعداد دقیق بازیکن های موجود در یک سرور حداکثر ۱۰۰ نفر میباشد. بازی به صورت آنلاین و نیازمند به اتصال به اینترنت است به این معنی که شما با اتصال به نت قادر به رقابت کردن با این ۹۹ نفر خواهید بود پس هرچه اینترنت بهتری داشته باشید رقابتی آسانتری خواهید داشت. بازی Knives Out یک گیم آنلاین در سبک ماجراجویی و بقا با درجه سنی +۱۶ میباشد. این بازی توسط شرکت NetEase Games برای نسخه های اندرویدی تولید شده و منتشر گشته است. دانلود بازی Knives Out در گوگ پلی و سایت یزداپ, ...ادامه مطلب
اگر برای شما سوال است که یک ببر چگونه زندگی میکند، چه غذا هایی میخورد، در کجا میخوابد و… ولی جوابی برای آن ها ندارید بهتر است که بازی The Tiger را دانلود و نصب کنید. همانطور که از نام بازی مشخص میباشد داستان گیم مربوط به یک ببر درنده است.همانطور که گفته شد شما در بازی در نقش یک ببر درنده و خشن خواهید بود که باید بتوانید زندگی … آنلاین ۱۳۹۶-۱۱-۰۲ 17 بار بدون دیدگاه مجید پاشاییاگر برای شما سوال است که یک ببر چگونه زندگی میکند، چه غذا هایی میخورد، در کجا میخوابد و… ولی جوابی برای آن ها ندارید بهتر است که بازی The Tiger را دانلود و نصب کنید. همانطور که از نام بازی مشخص میباشد داستان گیم مربوط به یک ببر درنده است.همانطور که گفته شد شما در بازی در نقش یک ببر درنده و خشن خواهید بود که باید بتوانید زندگی یک ببر را در بازی حس و تجربه کنید تا بدانید که یک ببر چگونه زندگی میکند. شما باید همانند ببر ها شکار کنید، بخوابید، مبارزه کنید و… که تمامی این کار ها در بازی به نوبه خود برای شما پیش خواهد آمد. بازی The Tiger یک گیم آفلاین و آنلاین در سبک شبیه ساز با درجه سنی +۱۲ میباشد. این بازی توسط شرکت Swift Apps LTD برای نسخه های اندرویدی تولید شده و منتشر گشته است. دانلود بازی The Tiger در گوگل پلی و سایت یزداپلیکیشن به صورت رایگان با تمامی امکانات قابل دریافت است. آمار دانلود و نصب, ...ادامه مطلب