#Azure
#AppService
نه ( ۹ ) نکته پرفورمنسی برای Azure App Service
سرویس Azure App Service مهمترین سرویس Azure برای هاستینگ اپلیکیشنها است که امکانات scaling زیادی دارد. هر App Service جلوی خود یک Load Balancer دارد تا بتواند ترافیک را پخش و بالانس کند.
در مقاله زیر از Telerik، اسکات آلن ۹ نکته پرفورمنسی برای کار با App Service را توضیح داده که کمک میکنند اصطلاحا Even Faster شوید!!!
لینک مطلب
#AppService
نه ( ۹ ) نکته پرفورمنسی برای Azure App Service
سرویس Azure App Service مهمترین سرویس Azure برای هاستینگ اپلیکیشنها است که امکانات scaling زیادی دارد. هر App Service جلوی خود یک Load Balancer دارد تا بتواند ترافیک را پخش و بالانس کند.
در مقاله زیر از Telerik، اسکات آلن ۹ نکته پرفورمنسی برای کار با App Service را توضیح داده که کمک میکنند اصطلاحا Even Faster شوید!!!
لینک مطلب
Telerik Blogs
Nine Performance Tips for Azure App Services
Squeezing every bit of performance from your application hosted in Azure App Services will help you save money and keep your customers happy.
This media is not supported in your browser
VIEW IN TELEGRAM
#VSCode
#Edge
VS Code - Elements for Microsoft Edge (Chromium)
ابزار Elements مرورگر را در داخل ویرایشگر VSCode نمایش دهید و از آن سریعتر برای رفع نکات ظاهری، طرح بندی (Layout) و CSS با سایت خود استفاده کنید.
یک افزونه VSCode که به شما اجازه می دهد از ابزار مرورگر داخل ویرایشگر استفاده کنید. این ابزار به یک نمونه از Microsoft Edge متصل می شود که به شما امکان می دهد که میتوانید در زمان اجرا ساختار HTML ، طرح را تغییر دهید و یا css را اصلاح کنید و دیگر نیاز نیست تغییرات رو روی مرورگر ببینید و به vscode برگردید برای تغییرات !
برای نصب این افزونه میتونید از لینک زیر استفاده کنید.
Elements for Microsoft Edge
@fullStackDevs
#Edge
VS Code - Elements for Microsoft Edge (Chromium)
ابزار Elements مرورگر را در داخل ویرایشگر VSCode نمایش دهید و از آن سریعتر برای رفع نکات ظاهری، طرح بندی (Layout) و CSS با سایت خود استفاده کنید.
یک افزونه VSCode که به شما اجازه می دهد از ابزار مرورگر داخل ویرایشگر استفاده کنید. این ابزار به یک نمونه از Microsoft Edge متصل می شود که به شما امکان می دهد که میتوانید در زمان اجرا ساختار HTML ، طرح را تغییر دهید و یا css را اصلاح کنید و دیگر نیاز نیست تغییرات رو روی مرورگر ببینید و به vscode برگردید برای تغییرات !
برای نصب این افزونه میتونید از لینک زیر استفاده کنید.
Elements for Microsoft Edge
@fullStackDevs
#Security
#Hsts
#قسمت_اول
What Is Hsts?
پروتکل Http یک پروتکل ناامن است و اگر هکر ی بتواند دربین کلاینت و سرور موفق به شنود خط شود به راحتی دیتای تبادل شده بدون کدگذاری شدن برای او قابل مشاهده خواهد بود .
نام این حملات
( SSL-stripping یا man-in-the-middle )
میباشد.
برای حل این مشکل از نسخه امن Http با عنوان Https استفاده میکنیم اما این پروتکل نیز ضعف های امنیتی خود را دارد .
زمانی که برای وب سایت خود ssl تهیه میکنید و https را فعال میکنید از این به بعد وب سایت شما از طریق یک درخواست Https در دسترس خواهد بود اما شما نیز بایستی تنظیمات وب سایت خود را به گونه انجام دهید که فقط به صورت https در دسترس باشد و فقط درخواست های Https را بپزیرد در غیر اینصورت کاربر میتواند درخواستی مبتی بر Http به سایت شما انجام دهد. و مراحل آن به صورت زیر است .
1. کاربر ابتدا ادرس sabteahval.ir را در نوار آدرس مرورگر خود می نویسد.
2. مرورگر به صورت پیشفرض آدرس
http://www.sabteahval.ir/
را بار گذاری میکند.
3.و وب سایت sabteahval.ir در پاسخ درخواست به صورت ریدایرکت دائمی یا موقت به آدرس
https://www.sabteahval.ir/
مرور گر را آگاه میسازد .
4. واین بارمرورگر این ریدایرکت را میبیند و به جای سایت قبلی وبسایت
https://www.sabteahval.ir/
را بارگذاری میکند.
همانطور که میبینید با اینکه برای وب سایت خود ssl تهیه نموده و Https را فعال نموده اید باز هم وب سایت شما پذیرای دارخواست های http بوده و میتوانید در معرض حملات
SSL-stripping
قرار بگیرید و هکر در مرحله 3 (بالا) می تواند کاربر را به آدرس دیگری که تقریبا مشابه سایت شماست ریدایرکت کند.(فیشینگ)
وقتی که Hsts را فعال میکنید . اولین باری که مرورگر کاربر به سایتان درخواست http می فرستد در پاسخ درخواست ، هدر
Strict-Transport-Security
به ResposeHeader افزوده میشود و از این به بعد این هدر بر روی مرورگر کاربر فعال باقی میماند. و از این به بعد که کاربر بخواهد درخواستی http به سایتان بفرستد با فعال بودن این هدر مرورگر به صورت پیشفرض یک درخواست Https میفرستد.
@fullStackDevs
#Hsts
#قسمت_اول
What Is Hsts?
پروتکل Http یک پروتکل ناامن است و اگر هکر ی بتواند دربین کلاینت و سرور موفق به شنود خط شود به راحتی دیتای تبادل شده بدون کدگذاری شدن برای او قابل مشاهده خواهد بود .
نام این حملات
( SSL-stripping یا man-in-the-middle )
میباشد.
برای حل این مشکل از نسخه امن Http با عنوان Https استفاده میکنیم اما این پروتکل نیز ضعف های امنیتی خود را دارد .
زمانی که برای وب سایت خود ssl تهیه میکنید و https را فعال میکنید از این به بعد وب سایت شما از طریق یک درخواست Https در دسترس خواهد بود اما شما نیز بایستی تنظیمات وب سایت خود را به گونه انجام دهید که فقط به صورت https در دسترس باشد و فقط درخواست های Https را بپزیرد در غیر اینصورت کاربر میتواند درخواستی مبتی بر Http به سایت شما انجام دهد. و مراحل آن به صورت زیر است .
1. کاربر ابتدا ادرس sabteahval.ir را در نوار آدرس مرورگر خود می نویسد.
2. مرورگر به صورت پیشفرض آدرس
http://www.sabteahval.ir/
را بار گذاری میکند.
3.و وب سایت sabteahval.ir در پاسخ درخواست به صورت ریدایرکت دائمی یا موقت به آدرس
https://www.sabteahval.ir/
مرور گر را آگاه میسازد .
4. واین بارمرورگر این ریدایرکت را میبیند و به جای سایت قبلی وبسایت
https://www.sabteahval.ir/
را بارگذاری میکند.
همانطور که میبینید با اینکه برای وب سایت خود ssl تهیه نموده و Https را فعال نموده اید باز هم وب سایت شما پذیرای دارخواست های http بوده و میتوانید در معرض حملات
SSL-stripping
قرار بگیرید و هکر در مرحله 3 (بالا) می تواند کاربر را به آدرس دیگری که تقریبا مشابه سایت شماست ریدایرکت کند.(فیشینگ)
وقتی که Hsts را فعال میکنید . اولین باری که مرورگر کاربر به سایتان درخواست http می فرستد در پاسخ درخواست ، هدر
Strict-Transport-Security
به ResposeHeader افزوده میشود و از این به بعد این هدر بر روی مرورگر کاربر فعال باقی میماند. و از این به بعد که کاربر بخواهد درخواستی http به سایتان بفرستد با فعال بودن این هدر مرورگر به صورت پیشفرض یک درخواست Https میفرستد.
@fullStackDevs
#Security
#Hsts
#قسمت_دوم(قسمت اخر)
Enforce SSL And Use Hsts in Asp Core
در این پست که پست آخر در این مورد نیز میباشد به فعال سازی Https و نحوه افزودن هدر Strict-Transport-Security به ResposeHeader می پردازیم .
برای فعال سازی Hsts مسلم است که ابتدا باید Https را فعال نمایید که به دو صورت انجام میشود.
1.فعال کردن https فقط برای بخش هایی از سایت
2. فعال کردن Https برای کل سایت
در حالت اول میتوانید از اتریبیوت [RequireHttps] بربالای کنترل خود استفاده کنید.(این روش اصلا برای webapi توصیه نمی شود).
روش دوم استفده از گلوبال فیلتر هاست و به این صورت انجام میشود
Third Party Library
نظیر
اما از این نسخه به بعد میدلوری به نام
هدر را برای SubDomain های تان نیز فعال میکند.
MaxAge
مدت زمان فعال بودن هدر
ExcludedHosts
افزودن لیست سایت های که نیاز به فعال سازی هدر Hsts را برای آنها نیست.
Preload
اما هنوز ما مشکلی با اولین در خواست به سایتمان که به صورت پیشفرض توسط مرورگر http ارسال میشود داریم . این مشکل را میتوانید به کمک سایت https://hstspreload.org/ حل کنید
کافیست دامنه سایت تان را در آن ثبت کنید و در Release های بعدی مرورگر کروم دامنه سایت تان به صورت توکار در Preload List های مروگر خواهد بود و مرورگر میداند برای سایت تان باید از Https استفده کند.
مرورگر های فایر فاکس ، سافاری ،اپرا، IE 11 ،Edge نیز از همین Preload List کروم استفاده میکنند.
@fullStackDevs
https://www.tgoop.com/fullStackDevs
#Hsts
#قسمت_دوم(قسمت اخر)
Enforce SSL And Use Hsts in Asp Core
در این پست که پست آخر در این مورد نیز میباشد به فعال سازی Https و نحوه افزودن هدر Strict-Transport-Security به ResposeHeader می پردازیم .
برای فعال سازی Hsts مسلم است که ابتدا باید Https را فعال نمایید که به دو صورت انجام میشود.
1.فعال کردن https فقط برای بخش هایی از سایت
2. فعال کردن Https برای کل سایت
در حالت اول میتوانید از اتریبیوت [RequireHttps] بربالای کنترل خود استفاده کنید.(این روش اصلا برای webapi توصیه نمی شود).
روش دوم استفده از گلوبال فیلتر هاست و به این صورت انجام میشود
if (!_env.IsDevelopment())
{
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
});
}
مرحله بعدی فعال کردن Hsts میباشد. از نسخه 2.1 فریم Asp Core به بعد به صورت توکار میدلوری برای پیاده سازی Hsts به فریم وورک اضافه شد و تا قبل ان باید ازThird Party Library
نظیر
NWebsec.AspNetCore.Middleware
Joonasw.AspNetCore.SecurityHeaders
استفاده می کردید .اما از این نسخه به بعد میدلوری به نام
app.UseHsts();
به صورت توکار وجود دارد که کار افزودن هدر Strict-Transport-Security
انجام میدهد . if (env.IsDevelopment())
{
//
}
else
{
app.UseHsts(); // Add This
}
برای انجام تنظیمات خاص خود بر روی این هدر میتوانید در ConfigureServices
کانفیگ های خود را به این صورت اعمال نمایید.if (!_env.IsDevelopment())
{
services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
}
IncludeSubDomainsهدر را برای SubDomain های تان نیز فعال میکند.
MaxAge
مدت زمان فعال بودن هدر
Strict-Transport-Security
بر روی مرورگر کاربر به صورت پیشفرض 30 روز تنظیم شده است.ExcludedHosts
افزودن لیست سایت های که نیاز به فعال سازی هدر Hsts را برای آنها نیست.
Preload
اما هنوز ما مشکلی با اولین در خواست به سایتمان که به صورت پیشفرض توسط مرورگر http ارسال میشود داریم . این مشکل را میتوانید به کمک سایت https://hstspreload.org/ حل کنید
کافیست دامنه سایت تان را در آن ثبت کنید و در Release های بعدی مرورگر کروم دامنه سایت تان به صورت توکار در Preload List های مروگر خواهد بود و مرورگر میداند برای سایت تان باید از Https استفده کند.
مرورگر های فایر فاکس ، سافاری ،اپرا، IE 11 ،Edge نیز از همین Preload List کروم استفاده میکنند.
@fullStackDevs
https://www.tgoop.com/fullStackDevs
Telegram
Web Devs
Articles, News, Jokes, Quotes, Back-End and UI/UX for web developers.
Github : https://github.com/fullStackDevsGroup
Advertising: @adsfullStackDevs
Github : https://github.com/fullStackDevsGroup
Advertising: @adsfullStackDevs
Forwarded from Web Devs
#NewVersion
Fix bug on installing!
@fullStackDevs
Fix bug on installing!
Install-Package ABluePersianDateTime -Version 1.0.5
dotnet add package ABluePersianDateTime --version 1.0.5
paket add ABluePersianDateTime --version 1.0.5
@fullStackDevs
Forwarded from Web Devs
#PersianDateTime
#CSharp
🔹 ساختار تاریخ شمسی با متد های تبدیل به تاریخ میلادی و یا هجری
🔸 متدهای مختلف برای بدست آوردن رشته های مختلف تاریخ شمسی با فرمت های متفاوت و اعداد فارسی
🔹 پشتیبانی از سال کبیسه
🔸 شبیه سازی کامل ساختار DateTime
.NetFramework 4.5
نصب پکیج :
#CSharp
🔹 ساختار تاریخ شمسی با متد های تبدیل به تاریخ میلادی و یا هجری
🔸 متدهای مختلف برای بدست آوردن رشته های مختلف تاریخ شمسی با فرمت های متفاوت و اعداد فارسی
🔹 پشتیبانی از سال کبیسه
🔸 شبیه سازی کامل ساختار DateTime
.NetFramework 4.5
نصب پکیج :
Install-Package ABluePersianDateTime -Version 1.0.3
dotnet add package ABluePersianDateTime --version 1.0.3
paket add ABluePersianDateTime --version 1.0.3
@fullStackDevsForwarded from Web Devs
#ABluePersianDateTimePicker
توضیحات تکمیلی
نحوه استفاده از این picker به صورت زیر به صورت میلادی و شمسی می باشد . میتونید اچ تی ام ال این صفحه را مشاهده کنید و المنت های خودتونو به سادگی بسازید و به دلخواه css هارو تغییر دهید.
🔹 با اتریبوت زیر روی المنت مثلا اینپوت picker فعال میشود
data-disablebeforetoday="true"
🔹 با اتریبوت زیر روزهای قبل امروز غیر فعال میشوند
data-disablebeforetoday="true"
🔸 با اتریبوت زیر میتونید تاریخ میلادی را فعال کنید
data-isgregorian="true"
🔹 با اتریبوت زیر میتونید ساعت دقیقه ثانیه رو نمایش ندید
data-enabletimepicker="true"
ورژن جدید ریایز شده :
توضیحات تکمیلی
نحوه استفاده از این picker به صورت زیر به صورت میلادی و شمسی می باشد . میتونید اچ تی ام ال این صفحه را مشاهده کنید و المنت های خودتونو به سادگی بسازید و به دلخواه css هارو تغییر دهید.
🔹 با اتریبوت زیر روی المنت مثلا اینپوت picker فعال میشود
data-disablebeforetoday="true"
🔹 با اتریبوت زیر روزهای قبل امروز غیر فعال میشوند
data-disablebeforetoday="true"
🔸 با اتریبوت زیر میتونید تاریخ میلادی را فعال کنید
data-isgregorian="true"
🔹 با اتریبوت زیر میتونید ساعت دقیقه ثانیه رو نمایش ندید
data-enabletimepicker="true"
ورژن جدید ریایز شده :
Install-Package ABluePersianDateTimePicker -Version 1.0.4@fullStackDevs
dotnet add package ABluePersianDateTimePicker --version 1.0.4
<PackageReference Include="ABluePersianDateTimePicker" Version="1.0.4" />
paket add ABluePersianDateTimePicker --version 1.0.4
#TypeSafe_Lang
What is Type-safe?
Type-safe
به این معنی است که کامپایلر در زمان کامپایل نوع داده ها را اعتبارسنحی میکند.
و برای مثال اگر در کدتان تلاش کرده باشید که به یک متغیر String نوع داده صحیح(int) را اختصاص داده باشید کامپایلر یک ارور throw می کند.
این اتفاق حتی در هنگام اختصاص دادن مقدار با نوع اشتباه به آرگومان های یک تابع نیز می افتد.
Arraylist
از ساختمان داده NoTypeSafe در سی شارپ است و در هنگام استفاده از مقادیر موجود در آن ابتدا باید از نوع آنها مطمئن شوید.
در asp.net/AspnetCore نیز از Collection های NoTypeSafeمی توان به ViewData ,ViewBag اشاره کرد.
در مقابل ما loosely typed ها را داریم که دنیایه آزادانه ای را برای شما به وجود آورده اند
و هر مقداری با نوع متفاوت را می توانید به متغیر هایتان اختصاص دهید.
جاوا اسکریپت یک زبان loosely type می باشد.
@fullStackDevs
What is Type-safe?
Type-safe
به این معنی است که کامپایلر در زمان کامپایل نوع داده ها را اعتبارسنحی میکند.
و برای مثال اگر در کدتان تلاش کرده باشید که به یک متغیر String نوع داده صحیح(int) را اختصاص داده باشید کامپایلر یک ارور throw می کند.
این اتفاق حتی در هنگام اختصاص دادن مقدار با نوع اشتباه به آرگومان های یک تابع نیز می افتد.
Arraylist
از ساختمان داده NoTypeSafe در سی شارپ است و در هنگام استفاده از مقادیر موجود در آن ابتدا باید از نوع آنها مطمئن شوید.
در asp.net/AspnetCore نیز از Collection های NoTypeSafeمی توان به ViewData ,ViewBag اشاره کرد.
در مقابل ما loosely typed ها را داریم که دنیایه آزادانه ای را برای شما به وجود آورده اند
و هر مقداری با نوع متفاوت را می توانید به متغیر هایتان اختصاص دهید.
جاوا اسکریپت یک زبان loosely type می باشد.
@fullStackDevs
#EfCore_Best_Practice
Solve the problem 1+N in Ef Core
حل مشکل 1+N در Ef Core
این مشکل در correlated subqueries رخ میدهد.
به عنوان مثال در کوئری زیر
و به ازای هر
این مشکل با نام مشکل 1+N شناحته میشود.
از Ef Core 2.1 به بعد
کوئری اول سلکتی برای
برای انجام اینکار هم نیاز به انجام یک تغییر کوچک در کوئری خود دارید.
اطلاعات بیشتر در مورد این مسئله را می توانید در Issue 4007 مربوط به ریپازیتوری Ef Core مشاهده و دنبال کنید.
@fullStackDevs
Solve the problem 1+N in Ef Core
حل مشکل 1+N در Ef Core
این مشکل در correlated subqueries رخ میدهد.
به عنوان مثال در کوئری زیر
var query = context.Customers.Select(
c =>
c.Orders.Where(o => o.Amount > 100).Select(o => o.Amount)
);
ابتدا کوئری برای دریافت لیستی از Customers
به دیتابیس ارسال میشود .و به ازای هر
Customer
کوئری زیر c.Orders.Where(o => o.Amount > 100).Select(o => o.Amount)
ترجمه و به سمت دیتابیس ارسال میشود.این مشکل با نام مشکل 1+N شناحته میشود.
از Ef Core 2.1 به بعد
Optimization
ای برای این قبیل کوئری ها انجام شده است که از وقوع این مشکل جلوگیری میکند و سبب میشود که کوئری بالا حداکثر به دو اس کیو ال کوئری ترجمه شود.کوئری اول سلکتی برای
Customer
ها و کوئری دوم اعمال فیلتری بر روی Order
هابرای انجام اینکار هم نیاز به انجام یک تغییر کوچک در کوئری خود دارید.
var query = context.Customers.Select(
c => c.Orders.Where(o => o.Amount > 100).Select(o => o.Amount).ToList());
کافیست به SubQuery
خود متد ToList()
را اضافه کنید .اطلاعات بیشتر در مورد این مسئله را می توانید در Issue 4007 مربوط به ریپازیتوری Ef Core مشاهده و دنبال کنید.
@fullStackDevs
GitHub
Query: Optimize navigation property translation in projections · Issue #4007 · aspnet/EntityFrameworkCore
For example, customers.Select(c => new { c.Id, Orders = c.Orders }) results in n+1 at the moment. Make sure to consider the following scenarios when looking at this: #5754 #5738 #5791
#SEO
#WebMasters
🔘 خلاصه نکات گوگل سرچ کنسول
سایت مپ #SiteMap یک فایل با فرمت XML است که دربردارنده لیست و ساختار محتوایی وبسایت است.
✔️ اطلاعاتی که سایتمپ در اختیار گوگل قرار میدهد:
1️⃣ صفحات سایت آخرین بار چه زمانی بهروزرسانی شدهاند.
2️⃣ هر چند وقت یکبار ممکن است بهروزرسانی شوند.
3️⃣ آن صفحات در مقایسه با بقیه صفحات سایت چقدر مهم هستند.
🔸 آدرس صفحات سایت باید در نقشه به صورت absolute باشند، چرا که آدرس relative را شناسایی نمیکند.
🔸 فایل robots.txt دقیقا مخالف سایتمپ عمل میکند و به گوگل میگوید کدام بخشهای سایت من را بررسی نکن.
🔸 گزینه URL Inspection همان fetch در پنل قدیمی است. در تعداد استفاده از آن به ظاهر محدودیتی وجود ندارد و زیاد استفاده کردن از آن نکته منفی در #google محسوب نمیشود.
🔸 نرخ تبدیل جایگاه اول سرچ گوگل در حال حاضر 32 درصد است. اگر در جایگاه اول هستیم و CTR پایینی داریم باید دلیل آن را بررسی کنیم و با تغییر title و metaی صفحهای که در آن جایگاه داریم نرخ تبدیل را بالا ببریم.
🔹 ایمپرشن به صورت پیشفرض مربوط به نتایج صفحه اول گوگل است، مگر اینکه کاربر وارد صفحه دو شود (آن موقع تمام لینکهای صفحه دو هم ایمپرشن میگیرند.)
- بخش Links بخش دقیق و قابل استنادی نیست، چون دادهها با تاخیر آپدیت میشوند.
🔲 سی تی آر CTR که مخفف click through rate می باشد به معنای درصد تعداد کلیک های وب سایت در تعداد نمایش وب سایت شما در نتیجه های جستجو می باشد. هر چه این درصد بالاتر باشد به معنای آن است که وب سایت موفقیت بیشتری در جذب بازدید کننده از موتورهای جستجو دارد که CTR معمولا به دو صورت کلی بر اساس کل کلمات و به صورت جزئی بر اساس کلمه کلیدی مورد نظر شما ارائه می گردد. برای آنکه CTR بالاتری داشته باشید می بایست عنوان مناسبی را برای صفحات سایت خود انتخاب نمایید تا باعث کلیک بیشتر بر روی لینک شما گردد. همچنین در کنار انتخاب عنوان جذاب و حرفه ای می بایست توضیحات meta مناسبی را در صفحات سایت خود استفاده نمایید تا کاربر با خواندن آن ترغیب به کلیک بر روی وب سایت شود.
🔳 ایمپرشن (Impression) چیست؟
ایمپرشن به تعداد نمایش وب سایت شما در موتورهای جستجو گفته می شود که این آمار نیز معمولا به صورت کلی یعنی برای کل سایت و به صورت جزئی که بر اساس هر کلمه کلیدی ارائه می گردد. در گوگل وبمستر تولز می توانید آمار نمایش وب سایت خود را برای تک تک کلمات کلیدی مشاهده نمایید. Impression بالای وب سایت وابسته به تعداد جستجوی کاربران و جایگاه وب سایت در موتورهای جستجو می باشد. به عنوان مثال در صورتی که سایت برای کلمه کلیدی صفحه اول باشد Impression سایت تعداد کامل جستجوی های انجام گرفته کلمه کلیدی می باشد و در صورتی که سایت صفحات دوم وب سایت Impression سایت تعداد کاربرانی از موتور جستجو را نمایش می دهد که وارد صفحه دوم وب سایت شده اند.
@fullStackDevs
#WebMasters
🔘 خلاصه نکات گوگل سرچ کنسول
سایت مپ #SiteMap یک فایل با فرمت XML است که دربردارنده لیست و ساختار محتوایی وبسایت است.
✔️ اطلاعاتی که سایتمپ در اختیار گوگل قرار میدهد:
1️⃣ صفحات سایت آخرین بار چه زمانی بهروزرسانی شدهاند.
2️⃣ هر چند وقت یکبار ممکن است بهروزرسانی شوند.
3️⃣ آن صفحات در مقایسه با بقیه صفحات سایت چقدر مهم هستند.
🔸 آدرس صفحات سایت باید در نقشه به صورت absolute باشند، چرا که آدرس relative را شناسایی نمیکند.
🔸 فایل robots.txt دقیقا مخالف سایتمپ عمل میکند و به گوگل میگوید کدام بخشهای سایت من را بررسی نکن.
🔸 گزینه URL Inspection همان fetch در پنل قدیمی است. در تعداد استفاده از آن به ظاهر محدودیتی وجود ندارد و زیاد استفاده کردن از آن نکته منفی در #google محسوب نمیشود.
🔸 نرخ تبدیل جایگاه اول سرچ گوگل در حال حاضر 32 درصد است. اگر در جایگاه اول هستیم و CTR پایینی داریم باید دلیل آن را بررسی کنیم و با تغییر title و metaی صفحهای که در آن جایگاه داریم نرخ تبدیل را بالا ببریم.
🔹 ایمپرشن به صورت پیشفرض مربوط به نتایج صفحه اول گوگل است، مگر اینکه کاربر وارد صفحه دو شود (آن موقع تمام لینکهای صفحه دو هم ایمپرشن میگیرند.)
- بخش Links بخش دقیق و قابل استنادی نیست، چون دادهها با تاخیر آپدیت میشوند.
🔲 سی تی آر CTR که مخفف click through rate می باشد به معنای درصد تعداد کلیک های وب سایت در تعداد نمایش وب سایت شما در نتیجه های جستجو می باشد. هر چه این درصد بالاتر باشد به معنای آن است که وب سایت موفقیت بیشتری در جذب بازدید کننده از موتورهای جستجو دارد که CTR معمولا به دو صورت کلی بر اساس کل کلمات و به صورت جزئی بر اساس کلمه کلیدی مورد نظر شما ارائه می گردد. برای آنکه CTR بالاتری داشته باشید می بایست عنوان مناسبی را برای صفحات سایت خود انتخاب نمایید تا باعث کلیک بیشتر بر روی لینک شما گردد. همچنین در کنار انتخاب عنوان جذاب و حرفه ای می بایست توضیحات meta مناسبی را در صفحات سایت خود استفاده نمایید تا کاربر با خواندن آن ترغیب به کلیک بر روی وب سایت شود.
🔳 ایمپرشن (Impression) چیست؟
ایمپرشن به تعداد نمایش وب سایت شما در موتورهای جستجو گفته می شود که این آمار نیز معمولا به صورت کلی یعنی برای کل سایت و به صورت جزئی که بر اساس هر کلمه کلیدی ارائه می گردد. در گوگل وبمستر تولز می توانید آمار نمایش وب سایت خود را برای تک تک کلمات کلیدی مشاهده نمایید. Impression بالای وب سایت وابسته به تعداد جستجوی کاربران و جایگاه وب سایت در موتورهای جستجو می باشد. به عنوان مثال در صورتی که سایت برای کلمه کلیدی صفحه اول باشد Impression سایت تعداد کامل جستجوی های انجام گرفته کلمه کلیدی می باشد و در صورتی که سایت صفحات دوم وب سایت Impression سایت تعداد کاربرانی از موتور جستجو را نمایش می دهد که وارد صفحه دوم وب سایت شده اند.
@fullStackDevs
#FluentScheduler
زمانبندی خودکار با
Introducing Automated job scheduler with fluent interface.
A library to run scheduled jobs
Nuget Command for install that
@fullStackDevs
زمانبندی خودکار با
FluentScheduler
برای پلت فرم NET.Introducing Automated job scheduler with fluent interface.
A library to run scheduled jobs
Nuget Command for install that
Install-Package FluentScheduler
Documentation : FluentScheduler on Github@fullStackDevs
GitHub
GitHub - fluentscheduler/FluentScheduler: Automated job scheduler with fluent interface for the .NET platform.
Automated job scheduler with fluent interface for the .NET platform. - fluentscheduler/FluentScheduler
#Chart
APEXCHARTS.JS
نمودار های منبع باز مدرن و تعاملی
Modern & Interactive Open-source Charts
https://apexcharts.com/
@fullStackDevs
APEXCHARTS.JS
نمودار های منبع باز مدرن و تعاملی
Modern & Interactive Open-source Charts
https://apexcharts.com/
@fullStackDevs
#GenericRepository
One of the Loose Coupling Champion in our Apps Architecture
#RepositoryPattern_along_with_Ef
این ویدیو به بررسی استفاده از Unit Of Work And Repository pattern در کنار Entity Framework پرداخته است .
موارد مطرح شده در ویدیو :
1- آیا باید Repository Pattern در کنار Entity Framework استفاده بکنیم یا نکنیم ؟
2- مزایای استفاده از این الگو چیست ؟
3-پاسخ به سوال کسانی که همیشه این سوال رو میپرسن ایا اصلا ممکن است (persistence framework) (منظور Entity framework)برنامه مان تغییر کند؟
4- چطور Repository Pattern معماری پروژه مارا Loose Coupling نگه میدارد.
5- چرا Repository های ما نباید متد Update و Save داشته باشد.
6-پیاده سازی صحیح این الگو در کنار Entity Framework
مشاهده در یوتیوب :
https://youtu.be/rtXpYpZdOzM
Keep YourSelves Professional
@fullStackDevs
One of the Loose Coupling Champion in our Apps Architecture
#RepositoryPattern_along_with_Ef
این ویدیو به بررسی استفاده از Unit Of Work And Repository pattern در کنار Entity Framework پرداخته است .
موارد مطرح شده در ویدیو :
1- آیا باید Repository Pattern در کنار Entity Framework استفاده بکنیم یا نکنیم ؟
2- مزایای استفاده از این الگو چیست ؟
3-پاسخ به سوال کسانی که همیشه این سوال رو میپرسن ایا اصلا ممکن است (persistence framework) (منظور Entity framework)برنامه مان تغییر کند؟
4- چطور Repository Pattern معماری پروژه مارا Loose Coupling نگه میدارد.
5- چرا Repository های ما نباید متد Update و Save داشته باشد.
6-پیاده سازی صحیح این الگو در کنار Entity Framework
مشاهده در یوتیوب :
https://youtu.be/rtXpYpZdOzM
Keep YourSelves Professional
@fullStackDevs
YouTube
Repository Pattern with C# and Entity Framework, Done Right | Mosh
🔥Get the COMPLETE Entity Framework course (80% OFF - LIMITED TIME): http://bit.ly/2rZAgrD
Want to learn more from me? Check out my these links:
Courses: https://codewithmosh.com
Blog: https://www.programmingwithmosh.com/
Facebook: https://www.facebook.c…
Want to learn more from me? Check out my these links:
Courses: https://codewithmosh.com
Blog: https://www.programmingwithmosh.com/
Facebook: https://www.facebook.c…
Forwarded from MentorDev
طراحی UI/UX فرایند و مراحل خاصی دارد که هر فرد خلاق از اونها استفاده میکند.
1- مرحله کشف: شروع به تحقیق کردن، الهام گرفتن و جمع کردن ایدهها.
2- مرحله تعریف: تعریف چیزی که کشف شده است.
3- توسعه: طراحی کانسپت و پروتوتایپ، فرایند آزمون و خطا برای بهبود و اصلاح ایدهها.
4- تحویل: مرحله آخر، محصول نهایی شده و با موفقیت اجرا شده.
@frontdevir
1- مرحله کشف: شروع به تحقیق کردن، الهام گرفتن و جمع کردن ایدهها.
2- مرحله تعریف: تعریف چیزی که کشف شده است.
3- توسعه: طراحی کانسپت و پروتوتایپ، فرایند آزمون و خطا برای بهبود و اصلاح ایدهها.
4- تحویل: مرحله آخر، محصول نهایی شده و با موفقیت اجرا شده.
@frontdevir
#EfCore_Best_Practice
#Explicit_compiled_queries
در این پست به معرفی یک ویژگی باحال که از EF 5 به بعد و در LINQ to SQL نیز وجود داشت و در EF Core از نسخه 2.0 به آن افزوده شد می پردازیم.
در ابتدا Ef Core در ورژن 1.0 ویژگی query caching را معرفی کرد . این ویژگی علاوه بر پرفورمنسی که دارد اما دارای سربارهایی نیز است.
هر کوئری برای کش شدن و نگه داری آن در حافظه و سپس استفاده مجدد از آن به یک کلید هش شده نیاز دارد که تولید این کلید هش شده از روی Query Expression سرباری دارد.
اما از نسخه Ef Core2.0 ویژه گی query compilation به آن اضافه شده.
در این حالت کوئری یک بار کامپایل شده و در حافظه نگه داری میشود و می توانید به هر دفعات که خواستید از ان استفاده کنید.
Example:
usage :
1-کوئری تان قرار است خیلی بیشتر از یک بار متوالی اجرا شود.
2-کوئری شما به قدر کافی پیچیده است و هزینه هربار کامپایل ان زیاد است.
* نکته اول اگر دلیگیت کامپایل کوئری مورد نظر خود را به صورت استاتیک تعریف کنید می توانید در تمام نمونه های ApplicationDbContext خود از آن استفاده کنید.
*نکته دوم نسخه جاری Ef Core هنوز نوع خروجی
@fullStackDevs
#Explicit_compiled_queries
در این پست به معرفی یک ویژگی باحال که از EF 5 به بعد و در LINQ to SQL نیز وجود داشت و در EF Core از نسخه 2.0 به آن افزوده شد می پردازیم.
در ابتدا Ef Core در ورژن 1.0 ویژگی query caching را معرفی کرد . این ویژگی علاوه بر پرفورمنسی که دارد اما دارای سربارهایی نیز است.
هر کوئری برای کش شدن و نگه داری آن در حافظه و سپس استفاده مجدد از آن به یک کلید هش شده نیاز دارد که تولید این کلید هش شده از روی Query Expression سرباری دارد.
اما از نسخه Ef Core2.0 ویژه گی query compilation به آن اضافه شده.
در این حالت کوئری یک بار کامپایل شده و در حافظه نگه داری میشود و می توانید به هر دفعات که خواستید از ان استفاده کنید.
Example:
private static Func<AdventureWorksContextDI, int, Orders> _getOrderById =
EF.CompileQuery((AdventureWorksContextDI context, int id) =>
context.WorkOrders.Select(
x => new Orders
{
Id = x.WorkOrderId,
ProductName = x.Product.Name,
Quantity = x.OrderQty,
Date = x.DueDate
}).FirstOrDefault(x => x.Id == id));
usage :
public Orders GetOrderByIdCompiled(int id)
{
return _getOrderById(_context, id);
}
چه زمانی از این ویژگی استفاده کنیم ؟1-کوئری تان قرار است خیلی بیشتر از یک بار متوالی اجرا شود.
2-کوئری شما به قدر کافی پیچیده است و هزینه هربار کامپایل ان زیاد است.
* نکته اول اگر دلیگیت کامپایل کوئری مورد نظر خود را به صورت استاتیک تعریف کنید می توانید در تمام نمونه های ApplicationDbContext خود از آن استفاده کنید.
*نکته دوم نسخه جاری Ef Core هنوز نوع خروجی
List<T>را برای یک کامپل کوئری پشتیبانی نمیکند.
@fullStackDevs
#EntityFrameworkCore_Cacheable
A high-performance second-level query cache for EF Core.
این کتابخانه از معدود کتابخانه های کش سطح دوم برای Ef Core میباشد و قابلیتی را برای کش کردن انواع query result ها در Ef Core فراهم می اورد.
Nuget Command for install that
@fullStackDevs
A high-performance second-level query cache for EF Core.
این کتابخانه از معدود کتابخانه های کش سطح دوم برای Ef Core میباشد و قابلیتی را برای کش کردن انواع query result ها در Ef Core فراهم می اورد.
Nuget Command for install that
Install-Package EntityFrameworkCore.Cacheable
Documentation : EntityFrameworkCore.Cacheable on Github@fullStackDevs
GitHub
GitHub - SteffenMangold/EntityFrameworkCore.Cacheable: EntityFrameworkCore second level cache
EntityFrameworkCore second level cache. Contribute to SteffenMangold/EntityFrameworkCore.Cacheable development by creating an account on GitHub.
#قسمت_اول
#MessagePack
در این پست به معرفی یک فرمت سریالایز و دیسریالاز که بسیار سریع و ساده و جمع و جور می باشد میپردازیم.
🔸 مشکل کجاست ؟
مشکل آنجایی مطرح میشود که حجم تبادل دیتا بسیار زیاد و روال سریالاز و دیسریالاز کردن آن برای انتقال، بسیار سنگین و زمان بر باشد.
🔹 چگونه مشکل رو حل کنیم
راه حل استفاده از فرمت های انتقال اطلاعات سریع تر و سبک تر و کم حجم تر مانند MessagePack می باشد.
#MessagePack
مسیج پک یک فرمت باینری سریالاز و دیسریالایز سازی است که سریع ، کم حجم و بسیار جمع و جور تر از JSON و یا BSON میباشد.علاوه بر این تقریبا میتواند هر چیزی که توسط JSON قابل نمایش است را نمایش دهد. و در تمامی زبان های کاربردی و پدر و مادر دار پشتیبانی میشود.با این وجود شما میتوانید از این فرمت در API های خود نیز استفاده کنید.
🔻 سرعت و کارایی و مزایایی که این فرمت انتقال داده دارد را می توان ناشی از انواع داده ای که برای نمایش اطلاعات استفاده میکند دانست. برای مثال :
▪️ جیسون(JSON) از چهار بایت برای نمایش NULL استفاده میکند اما MessagePack تنها 1 بایت.
▪️ جیسون(JSON) از 2 بایت برای نمایش Int معمولی استفاده میکند. اما MessagePack نهایتا 1 بایت.
▪️ و از انجایی که این فرمت باینری میباشد. برای خواندن و نوشتن از JSON سریعتر است.
همچنین میتوانید اطلاعات بیشتری در مورد این فرمت و زبان هایی که از آن پشتیبانی میکنند را در این وب سایت msgpack.org مشاهده کنید.
مشخصات کاملتری از ان نیز در این ریپازیتوری در دسترس است.
در قسمت بعد به استفاده از آن در Asp.NetCore می پردازیم.
@fullStackDevs
〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
#MessagePack
در این پست به معرفی یک فرمت سریالایز و دیسریالاز که بسیار سریع و ساده و جمع و جور می باشد میپردازیم.
🔸 مشکل کجاست ؟
مشکل آنجایی مطرح میشود که حجم تبادل دیتا بسیار زیاد و روال سریالاز و دیسریالاز کردن آن برای انتقال، بسیار سنگین و زمان بر باشد.
🔹 چگونه مشکل رو حل کنیم
راه حل استفاده از فرمت های انتقال اطلاعات سریع تر و سبک تر و کم حجم تر مانند MessagePack می باشد.
#MessagePack
مسیج پک یک فرمت باینری سریالاز و دیسریالایز سازی است که سریع ، کم حجم و بسیار جمع و جور تر از JSON و یا BSON میباشد.علاوه بر این تقریبا میتواند هر چیزی که توسط JSON قابل نمایش است را نمایش دهد. و در تمامی زبان های کاربردی و پدر و مادر دار پشتیبانی میشود.با این وجود شما میتوانید از این فرمت در API های خود نیز استفاده کنید.
🔻 سرعت و کارایی و مزایایی که این فرمت انتقال داده دارد را می توان ناشی از انواع داده ای که برای نمایش اطلاعات استفاده میکند دانست. برای مثال :
▪️ جیسون(JSON) از چهار بایت برای نمایش NULL استفاده میکند اما MessagePack تنها 1 بایت.
▪️ جیسون(JSON) از 2 بایت برای نمایش Int معمولی استفاده میکند. اما MessagePack نهایتا 1 بایت.
▪️ و از انجایی که این فرمت باینری میباشد. برای خواندن و نوشتن از JSON سریعتر است.
همچنین میتوانید اطلاعات بیشتری در مورد این فرمت و زبان هایی که از آن پشتیبانی میکنند را در این وب سایت msgpack.org مشاهده کنید.
مشخصات کاملتری از ان نیز در این ریپازیتوری در دسترس است.
در قسمت بعد به استفاده از آن در Asp.NetCore می پردازیم.
@fullStackDevs
〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
GitHub
msgpack/spec.md at master · msgpack/msgpack
MessagePack is an extremely efficient object serialization library. It's like JSON, but very fast and small. - msgpack/msgpack