Phil covers using computed columns in EF Core as well as mapping SQL Server function to C# functions for use in LINQ queries.
Watch in this link
💎 Strongly recommend
@fullStackDevs
Watch in this link
💎 Strongly recommend
@fullStackDevs
Docs
Entity Framework Core In-Depth Part 8
In this episode, Robert is joined by Phil Japikse for part 8 of a 10 part series on Entity Framework Core. This series is a follow-up to the 5 part series that was aimed at folks new to EF Core and provides a more in-depth exploration of a number of topics.Blending…
#GraphQl Part2
#ApiDesign
❇️اجزای اصلی یک GaphQL کوئری
🔸Queries :
▪️یک کوئری درخواستی است که توسط کلاینت صورت میپزیرد.
🔸Resolvers :
▪️به بیان ساده یک Resolver، چگونگی fetch کردن داده ها و اینکه داده ها از از چه محلی باید آورده شوند، را انجام می دهد.در واقع resolver وظیفه آماده سازی و فراهم کردن دیتای متناظر با هر فیلد در درخواست داده شده را دارد.
🔸Schema :
▪️یک GraphQl Schema عملیاتی که کلایت بعد از متصل شدن به GraphQl میتواند انجام دهد را توصیف میکند. درون Schema مهترین ساختار type ها هستند.
🧩
توضیح کامل در مورد type های GraphQL ار در اینجا مطالعه نمایید.
🧩
🔰سوال 1 ؟ GraphQl بهتر است یا REST ؟؟
▪️سالهاست که REST به یک استاندارد برای طراحی Web Api ها تبدیل شده است.
مزایای استفاده از REST عبارتند از :
🔻Stateless servers
🔻Structured access to resources
و REST API ها در برابر تغییرات مورد نیاز کلاینت برای دسترسی به Resource ها به شدت انعطاف ناپذیر هستند.
▪️در مقابل GraphQl برای ایجاد چنین انعطاف پذیری که REST از آن برخوردار نبود توسعه داده شد و بسیاری از کم و کاستی هایی که توسعه دهندگان هنگام کار کردن با یک REST API ممکن است مواجه را برطرف میکند.
✳️معایب اصلی REST
🔸Underfetching :
▪️یکی از عمده ترین مشکلات REST میباشد هنگامی که تنها راه دریافت اطلاعات صدا زدن API میباشد و API فقط داده ای Structured و ثابت بازگشت میدهد و این امکان وجود ندارد تا بسته به نیاز کلاینت، ساختار داده بازگشتی تغیر کند.
🔸Overfetching :
▪️این مشکل به این معنی است که کلاینت در اکثر مواقع دیتایی بیشتر از آنچه که نیاز دارد، دریافت میکند.
🔸n+1 requests problem :
▪️این مشکل با نام
underfetching and the n+1-requests problem
شناخته میشود.
به طور کلی underfetching به این معنی است که یک endpoint خاص، دیتای مورد نیاز را بسته به درخواست کلاینت، نمی تواند فراهم کند و کلاینت باید برای دریافت دیتا مورد نیاز خود درخواست های متعدد ارسال کند.
🔰سوال 2 ؟ چه زمانی REST بهترین گزینه است؟
▪️در واقع یک REST API یک Concept برای اپلیکیشن های network-based میباشد و در مقابل GraphQl یک query language و مجموعه ای از ابزارهاست که برای انجام عملیات بروی یک endpoint از HTTP استفاده میکند.و علاوه بر اینها در چندین سال گذشته از REST برای ساخت API ها استفاده شده است در حالیکه GraphQL بروی بهبود عملکرد و بهینه سازی و انعطاف پذیری متمرکز است.
🔰سوال 3 ؟ بالاخره GraphQl را یاد بگیریم یا نه ؟
▪️در بین Company ها REST یک استاندارد در صنعت شناخته میشود و به عنوان یک معماری کامل پذیرفته شده است که کاربری چندین ساله دارد.
با اینکه GraphQl به اندازه REST در بین Company ها رایج نیست اما یاد گرفتن ان ارزشمند است و ارزش یادگیری آنرا دارد با automation شدن کارها زندگی آسانتر میشود در نتیجه برای ما که خالقین این automation ها هستیم سرعت و کارایی بهتر اپلیکیشن اهمیت ویژه ی دارد و تجربه کاربری بهتری را برای کاربر به ارمغان می اورد، اینجاست که بهبود عملکرد اپلیکیشن برگ برنده برنامه نویس محسوب میشود و این امر میسر نمیگردد مگر با استفاده از ابزار های مناسب خاص خود نظیر GraphQl.
@fullStackDevs
#ApiDesign
❇️اجزای اصلی یک GaphQL کوئری
🔸Queries :
▪️یک کوئری درخواستی است که توسط کلاینت صورت میپزیرد.
🔸Resolvers :
▪️به بیان ساده یک Resolver، چگونگی fetch کردن داده ها و اینکه داده ها از از چه محلی باید آورده شوند، را انجام می دهد.در واقع resolver وظیفه آماده سازی و فراهم کردن دیتای متناظر با هر فیلد در درخواست داده شده را دارد.
🔸Schema :
▪️یک GraphQl Schema عملیاتی که کلایت بعد از متصل شدن به GraphQl میتواند انجام دهد را توصیف میکند. درون Schema مهترین ساختار type ها هستند.
🧩
توضیح کامل در مورد type های GraphQL ار در اینجا مطالعه نمایید.
🧩
🔰سوال 1 ؟ GraphQl بهتر است یا REST ؟؟
▪️سالهاست که REST به یک استاندارد برای طراحی Web Api ها تبدیل شده است.
مزایای استفاده از REST عبارتند از :
🔻Stateless servers
🔻Structured access to resources
و REST API ها در برابر تغییرات مورد نیاز کلاینت برای دسترسی به Resource ها به شدت انعطاف ناپذیر هستند.
▪️در مقابل GraphQl برای ایجاد چنین انعطاف پذیری که REST از آن برخوردار نبود توسعه داده شد و بسیاری از کم و کاستی هایی که توسعه دهندگان هنگام کار کردن با یک REST API ممکن است مواجه را برطرف میکند.
✳️معایب اصلی REST
🔸Underfetching :
▪️یکی از عمده ترین مشکلات REST میباشد هنگامی که تنها راه دریافت اطلاعات صدا زدن API میباشد و API فقط داده ای Structured و ثابت بازگشت میدهد و این امکان وجود ندارد تا بسته به نیاز کلاینت، ساختار داده بازگشتی تغیر کند.
🔸Overfetching :
▪️این مشکل به این معنی است که کلاینت در اکثر مواقع دیتایی بیشتر از آنچه که نیاز دارد، دریافت میکند.
🔸n+1 requests problem :
▪️این مشکل با نام
underfetching and the n+1-requests problem
شناخته میشود.
به طور کلی underfetching به این معنی است که یک endpoint خاص، دیتای مورد نیاز را بسته به درخواست کلاینت، نمی تواند فراهم کند و کلاینت باید برای دریافت دیتا مورد نیاز خود درخواست های متعدد ارسال کند.
🔰سوال 2 ؟ چه زمانی REST بهترین گزینه است؟
▪️در واقع یک REST API یک Concept برای اپلیکیشن های network-based میباشد و در مقابل GraphQl یک query language و مجموعه ای از ابزارهاست که برای انجام عملیات بروی یک endpoint از HTTP استفاده میکند.و علاوه بر اینها در چندین سال گذشته از REST برای ساخت API ها استفاده شده است در حالیکه GraphQL بروی بهبود عملکرد و بهینه سازی و انعطاف پذیری متمرکز است.
🔰سوال 3 ؟ بالاخره GraphQl را یاد بگیریم یا نه ؟
▪️در بین Company ها REST یک استاندارد در صنعت شناخته میشود و به عنوان یک معماری کامل پذیرفته شده است که کاربری چندین ساله دارد.
با اینکه GraphQl به اندازه REST در بین Company ها رایج نیست اما یاد گرفتن ان ارزشمند است و ارزش یادگیری آنرا دارد با automation شدن کارها زندگی آسانتر میشود در نتیجه برای ما که خالقین این automation ها هستیم سرعت و کارایی بهتر اپلیکیشن اهمیت ویژه ی دارد و تجربه کاربری بهتری را برای کاربر به ارمغان می اورد، اینجاست که بهبود عملکرد اپلیکیشن برگ برنده برنامه نویس محسوب میشود و این امر میسر نمیگردد مگر با استفاده از ابزار های مناسب خاص خود نظیر GraphQl.
@fullStackDevs
#HOC
#DesignPattern
#ReactJs
❇️ HOC (Higher Order Component) Design Pattern in React JS
🔹 این پست درباره یکی از روش های رعایت DRY با استفاده از الگوی HOC در ری اکت جی اس میباشد.
🔸 الگوی HOC تکنیکی است که از آن برای استفاده مجدد از منطق یک کامپوننت استفاده میشود.
درواقع HOC یک فانکشن است که به عنوان پارامتر یک کامپوننت دریافت میکند و خروجی آن یک کامپوننت جدید است.
🔹شرایطی را در نظر بگیرید که برای ساخت یک کامپوننت باید منطقی را پیاده سازی کنید اما قبلا یک کامپوننت دیگر با همین منطق پیاده سازی کرده اید و دو کامپوننت فقط در UI با یکدیگر متفاوت اند، در چنین شرایطی می توانید با استفاده از HOC منطق اصلی کامپوننت پیشین خود را دوباره استفاده کنید و به جای دوباره پیاده سازی کردن آن، از آن در کامپوننت جدید خود استفاده کنید. کامپوننت جدید می تواند UI ای کاملا متفاوت از کامپوننت اصلی داشته باشد، در حالی که منطق مشابهی دارد.
▫️برای دانستن اینکه HOC چیست و چگونه میتوان از آن استفاده کرد به مثال زیر توجه نمایید :
🔻در مثال زیر یک کامپوننت clickable ساده ساخته ایم که یک Button را رندر میکند و به عنوان props یک text و یک onClick ایونت دریافت میکند.
makeToggleable(Clickable) {
return class extends React.Component {
constructor() {
super();
this.toggle = this.toggle.bind(this);
this.state = {
show: false
};
}
toggle() {
this.setState(prevState => ({ show: !prevState.show }));
}
render() {
return (
<div>
<Clickable {...this.props} onClick={this.toggle} />
{this.state.show && this.props.children}
</div>
)
}
}
}
#DesignPattern
#ReactJs
❇️ HOC (Higher Order Component) Design Pattern in React JS
🔹 این پست درباره یکی از روش های رعایت DRY با استفاده از الگوی HOC در ری اکت جی اس میباشد.
🔸 الگوی HOC تکنیکی است که از آن برای استفاده مجدد از منطق یک کامپوننت استفاده میشود.
درواقع HOC یک فانکشن است که به عنوان پارامتر یک کامپوننت دریافت میکند و خروجی آن یک کامپوننت جدید است.
🔹شرایطی را در نظر بگیرید که برای ساخت یک کامپوننت باید منطقی را پیاده سازی کنید اما قبلا یک کامپوننت دیگر با همین منطق پیاده سازی کرده اید و دو کامپوننت فقط در UI با یکدیگر متفاوت اند، در چنین شرایطی می توانید با استفاده از HOC منطق اصلی کامپوننت پیشین خود را دوباره استفاده کنید و به جای دوباره پیاده سازی کردن آن، از آن در کامپوننت جدید خود استفاده کنید. کامپوننت جدید می تواند UI ای کاملا متفاوت از کامپوننت اصلی داشته باشد، در حالی که منطق مشابهی دارد.
▫️برای دانستن اینکه HOC چیست و چگونه میتوان از آن استفاده کرد به مثال زیر توجه نمایید :
🔻در مثال زیر یک کامپوننت clickable ساده ساخته ایم که یک Button را رندر میکند و به عنوان props یک text و یک onClick ایونت دریافت میکند.
🔻حال با استفاده از HOC می خواهیم کامپوننتی بسازیم که منطقی یکسان دارد و به آن ویژگی های جدید اضافه کنیم همچنین لازم است کامپوننت خود را Toggleable کنیم. و از این به بعد هر زمان که به HOC فانکشن خود یک Clickable کامپوننت به عنوان پارامتر دهیم یک کامپوننت جدید با عملکری Toggleable ریترن میکند.
import React from "react";
export function Clickable(props) {
return <Button onClick={props.onClick}>
{props.text}
</Button>
}
```
import React from "react";makeToggleable(Clickable) {
return class extends React.Component {
constructor() {
super();
this.toggle = this.toggle.bind(this);
this.state = {
show: false
};
}
toggle() {
this.setState(prevState => ({ show: !prevState.show }));
}
render() {
return (
<div>
<Clickable {...this.props} onClick={this.toggle} />
{this.state.show && this.props.children}
</div>
)
}
}
}
```
@fullStackDevsمعرفی
🔻.NET 5.0 Preview 8
🔻EF Core 5.0 Preview 8
🔻ASP.NET Core (updates) in .NET 5 Preview 8
اخیرا پیش نمایش 8 از دات نت 5 معرفی شده و این نسخه از فریم وورک پیش تر از گذشته به نسخه نهایی خود نزدیک شده است همچنین پیش نمایش جدیدی از EF Core 5 و ابدیت های جدیدی برای Asp.Net Core معرفی شده است.
برای دریافت و استفاده از این ویژگی ها ویژال استادیو خود را به اخرین نسخه ابدیت کنید.
در این پست به معرفی ویژگی های مهم
EF Core 5.0 preview 8
می پردازیم.
نسخه EF Core 5.0 دات نت استاندارد 2.1 را پیاده سازی کرده است و میتوانید EF Core 5 را بروی NetCore 3.1 هم اجرا کنید و لزوما نیازی نیست تا نسخه فریم وورک حتما Net 5 باشد.
در پست های قبل گفتیم رابط خط فرمان
Ef Core 3.1 , Ef Core 3.0
به صورت پکیجی جدا نصب میشوند و دیگر به همراه خود فریم وورک عرضه نمیشوند در Ef Core 5 نیز به همین صورت میباشد و برای استفاده از رابط خط فرمان EF Core 5 باید آنرا نصب کنید.
از این رابط برای اجرای دستورات Migration و یا scaffold کردن سایر فرمان های دیگر استفاده میشود.(اصطلاحا به آن DotNet tool گفته میشود.)
برای نصب به صورت گلوبال :
dotnet tool install
اگر قبلا نصب کرده اید فقط باید آنرا آبدیت کنید :
dotnet tool update
اما موارد جدید در EF Core 5 Preview 8
Table-per-type (TPT) mapping
در Ef Core برای نمایش سلسله مراتب ارث بری Model ها در دیتابیس سه روش وجود دارد :
Table Per Hierarchy (TPH)
در این روش از یک تیبل جدا برای نمایش تمام کلاس ها (مدل کلاس ها) در یک سلسله مراتب ارث بری استفاده میشود، همچنین این تیبل یک ستون به نام discriminator خواهد داشت که برای متمایز ساختن مدل ها از یک دیگر ساخته میشود .
نام تیبل ساخته شده از نام base Class گرفته میشود یا نامی که به وسیله تعریف DbSet مشخص کرده اید. توضیحات بیشتر
Table Per Type (TPT)
در این روش به ازای هر کلاس (شامل ابستراکت کلاسها ) در سلسله مراتب ارث بری یک تیبل جدا ساخته میشود و کلاس های مشتق شده به وسیله یک کلید خارجی به base class خود مرتبط میشوند. لینک مثال
Table Per Concrete Type (TPC)
در این روش به ازای هر کلاس (شامل ابستراکت کلاس ها نمیشود) و همه پراپرتی هایش(شامل پراپرتی های inherited) یک تیبل جدا ساخته میشود.
Migrations: Rebuild SQLite tables
در مقایسه با سایر دیتابیس ها SQLite دارای محدودیت هایی در تغییرات schema دیتابیس است. برای مثال با حذف کردن یه ستون در یک تیبل که قبلا ساخته شده ، لازم است که کل تیبل حذف شود و دوباره ساخته شود. در این نسخه از EF Core 5
automatic rebuilding
اضافه شده است که تیبل مربوطه را در صورت تغییرات shema به صورت خودکار rebuild میکند.
support for mapping .NET methods to table-valued functions (TVFs)
با استفاده از این ویژگی میتوانید با تعریفی متدی در DbContext یک TVF تعریف شده در دیتابیس رو در Linq Query خود صدا بزنین.
TVF
نوعی از فانکشن های تعریف شده توسط یوزر در sql server است که نتیجه
Select Statement
را به صورت یک تیبل برمیگرداند. مشاهده مثال
Flexible query/update mapping
نگاشت یک Entity Type به ابجکت های متفاوت در دیتابیس، مثلا به یک فانکشن یا یک تیبل یا یک view
برای مثال Entity Type زیر هم به یک تیبل و هم به یک view نگاشت شده است.
@fullStackDevs
🔻.NET 5.0 Preview 8
🔻EF Core 5.0 Preview 8
🔻ASP.NET Core (updates) in .NET 5 Preview 8
اخیرا پیش نمایش 8 از دات نت 5 معرفی شده و این نسخه از فریم وورک پیش تر از گذشته به نسخه نهایی خود نزدیک شده است همچنین پیش نمایش جدیدی از EF Core 5 و ابدیت های جدیدی برای Asp.Net Core معرفی شده است.
برای دریافت و استفاده از این ویژگی ها ویژال استادیو خود را به اخرین نسخه ابدیت کنید.
در این پست به معرفی ویژگی های مهم
EF Core 5.0 preview 8
می پردازیم.
نسخه EF Core 5.0 دات نت استاندارد 2.1 را پیاده سازی کرده است و میتوانید EF Core 5 را بروی NetCore 3.1 هم اجرا کنید و لزوما نیازی نیست تا نسخه فریم وورک حتما Net 5 باشد.
در پست های قبل گفتیم رابط خط فرمان
Ef Core 3.1 , Ef Core 3.0
به صورت پکیجی جدا نصب میشوند و دیگر به همراه خود فریم وورک عرضه نمیشوند در Ef Core 5 نیز به همین صورت میباشد و برای استفاده از رابط خط فرمان EF Core 5 باید آنرا نصب کنید.
از این رابط برای اجرای دستورات Migration و یا scaffold کردن سایر فرمان های دیگر استفاده میشود.(اصطلاحا به آن DotNet tool گفته میشود.)
یک Net tool. ناگت پکیجی است که شامل یک پروژه کنسول اپلیکیشن میباشد و آنرا میتوانید به صورت global یا local بروی ماشین خود نصب کنید. tool هایی که به صورت global نصب میشوند از طریق هر دایرکتوری بروی ماشین قابل اجراست.
در مقابل tool هایی که به صورت لوکال نصب میشوند فقط از طریق همان دایرکتوری و ساب دایرکتوری هایش در دسترس خواهند بود.
رابط خط فرمان این پیش نمایش بدین صورت قابل نصب است :برای نصب به صورت گلوبال :
dotnet tool install
--global
dotnet-ef --version 5.0.0-preview.8.20407.4اگر قبلا نصب کرده اید فقط باید آنرا آبدیت کنید :
dotnet tool update
--global
dotnet-ef --version 5.0.0-preview.8.20407.4اما موارد جدید در EF Core 5 Preview 8
Table-per-type (TPT) mapping
در Ef Core برای نمایش سلسله مراتب ارث بری Model ها در دیتابیس سه روش وجود دارد :
Table Per Hierarchy (TPH)
در این روش از یک تیبل جدا برای نمایش تمام کلاس ها (مدل کلاس ها) در یک سلسله مراتب ارث بری استفاده میشود، همچنین این تیبل یک ستون به نام discriminator خواهد داشت که برای متمایز ساختن مدل ها از یک دیگر ساخته میشود .
نام تیبل ساخته شده از نام base Class گرفته میشود یا نامی که به وسیله تعریف DbSet مشخص کرده اید. توضیحات بیشتر
Table Per Type (TPT)
در این روش به ازای هر کلاس (شامل ابستراکت کلاسها ) در سلسله مراتب ارث بری یک تیبل جدا ساخته میشود و کلاس های مشتق شده به وسیله یک کلید خارجی به base class خود مرتبط میشوند. لینک مثال
Table Per Concrete Type (TPC)
در این روش به ازای هر کلاس (شامل ابستراکت کلاس ها نمیشود) و همه پراپرتی هایش(شامل پراپرتی های inherited) یک تیبل جدا ساخته میشود.
Migrations: Rebuild SQLite tables
در مقایسه با سایر دیتابیس ها SQLite دارای محدودیت هایی در تغییرات schema دیتابیس است. برای مثال با حذف کردن یه ستون در یک تیبل که قبلا ساخته شده ، لازم است که کل تیبل حذف شود و دوباره ساخته شود. در این نسخه از EF Core 5
automatic rebuilding
اضافه شده است که تیبل مربوطه را در صورت تغییرات shema به صورت خودکار rebuild میکند.
support for mapping .NET methods to table-valued functions (TVFs)
با استفاده از این ویژگی میتوانید با تعریفی متدی در DbContext یک TVF تعریف شده در دیتابیس رو در Linq Query خود صدا بزنین.
TVF
نوعی از فانکشن های تعریف شده توسط یوزر در sql server است که نتیجه
Select Statement
را به صورت یک تیبل برمیگرداند. مشاهده مثال
Flexible query/update mapping
نگاشت یک Entity Type به ابجکت های متفاوت در دیتابیس، مثلا به یک فانکشن یا یک تیبل یا یک view
برای مثال Entity Type زیر هم به یک تیبل و هم به یک view نگاشت شده است.
```
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.Entity<Blog>()
.ToTable("Blogs")
.ToView("BlogsView");
} ```
و به طور پیشتفرض EF Core 5 کوئری (SELECT) را از view انجام میدهد و موارد ابدیت شده رi به table میفرستد. مثال ادامه در پست بعدی ....@fullStackDevs
ادامه پست قبلی
Context-wide split-query configuration
از این به بعد میتوانید به صورت پیشفرض برای هر کوئری ای به وسیله DbContext اجرا میشود Split query را کانفیگ کنید.
این کانفیگوریشن فقط برای پروایدر های رابطه ای مانند sql server در دسترس است .
بدین ترتیب Ef Core به کمک ویژگی Split queries به کوئری های Linq این اجازه را میدهد تا Collection های مربوط به کوئری را که include شده اند، به چند sql query جدا شوند. این ویژگی موجب بهبود پرفورمنس شده و همچنین ممکن است موجب ناهماهنگی هایی در نتایج برگشت داده شده شود این اتفاق زمانی می افتد که داده ها در بین اجرای دو کوئری تغییر کنند.
PhysicalAddress mapping
این ویزگی به وسیله contribute اقای رافائل آلمیدا سانتوس به Ef Core 5 اضافه شده و کلاس PhysicalAddress در دات نت استاندار به صورت خودکار در هنگام ساخت دیتابیس از روی model کلاس ها به یک ستون استرینگی مپ میشود.
@fullStackDevs
Context-wide split-query configuration
از این به بعد میتوانید به صورت پیشفرض برای هر کوئری ای به وسیله DbContext اجرا میشود Split query را کانفیگ کنید.
این کانفیگوریشن فقط برای پروایدر های رابطه ای مانند sql server در دسترس است .
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder
.UseSqlServer(
Your.SqlServerConnectionString,
b => b.UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery));
بدین ترتیب Ef Core به کمک ویژگی Split queries به کوئری های Linq این اجازه را میدهد تا Collection های مربوط به کوئری را که include شده اند، به چند sql query جدا شوند. این ویژگی موجب بهبود پرفورمنس شده و همچنین ممکن است موجب ناهماهنگی هایی در نتایج برگشت داده شده شود این اتفاق زمانی می افتد که داده ها در بین اجرای دو کوئری تغییر کنند.
PhysicalAddress mapping
این ویزگی به وسیله contribute اقای رافائل آلمیدا سانتوس به Ef Core 5 اضافه شده و کلاس PhysicalAddress در دات نت استاندار به صورت خودکار در هنگام ساخت دیتابیس از روی model کلاس ها به یک ستون استرینگی مپ میشود.
@fullStackDevs
Telegram
Web Devs
معرفی
🔻.NET 5.0 Preview 8
🔻EF Core 5.0 Preview 8
🔻ASP.NET Core (updates) in .NET 5 Preview 8
اخیرا پیش نمایش 8 از دات نت 5 معرفی شده و این نسخه از فریم وورک پیش تر از گذشته به نسخه نهایی خود نزدیک شده است همچنین پیش نمایش جدیدی از EF Core 5 و ابدیت های…
🔻.NET 5.0 Preview 8
🔻EF Core 5.0 Preview 8
🔻ASP.NET Core (updates) in .NET 5 Preview 8
اخیرا پیش نمایش 8 از دات نت 5 معرفی شده و این نسخه از فریم وورک پیش تر از گذشته به نسخه نهایی خود نزدیک شده است همچنین پیش نمایش جدیدی از EF Core 5 و ابدیت های…
#js
خروجی کد بالا چیست؟
خروجی کد بالا چیست؟
Anonymous Quiz
44%
SyntaxError
26%
{ a : 'three' , b : 'two' }
23%
{ b : 'two' , a : 'three'}
7%
{ a : 'one' , b : 'two' }
🎯 وبلاگ داتنت
𝗝𝗲𝘁𝗕𝗿𝗮𝗶𝗻𝘀
مطالب خواندنی برای داتنت کارها داره، خصوصا کە هر ماه در قالب یک خبرنامه لیستی از پستهای مفید داتنتی رو با عنوان
.𝗡𝗘𝗧 𝗔𝗻𝗻𝗼𝘁𝗮𝘁𝗲𝗱 𝗠𝗼𝗻𝘁𝗵𝗹𝘆
از سایتهای مختلف جمع میکنە کە نگاه اجمالی به آنها خالی از لطف نیست.
https://blog.jetbrains.com/tag/net-annotated/
@fullStackDevs
𝗝𝗲𝘁𝗕𝗿𝗮𝗶𝗻𝘀
مطالب خواندنی برای داتنت کارها داره، خصوصا کە هر ماه در قالب یک خبرنامه لیستی از پستهای مفید داتنتی رو با عنوان
.𝗡𝗘𝗧 𝗔𝗻𝗻𝗼𝘁𝗮𝘁𝗲𝗱 𝗠𝗼𝗻𝘁𝗵𝗹𝘆
از سایتهای مختلف جمع میکنە کە نگاه اجمالی به آنها خالی از لطف نیست.
https://blog.jetbrains.com/tag/net-annotated/
@fullStackDevs
#js
#WorkerService
Worker Service in JS
🔹 تا حالا در مورد worker serviece ها از خودتون پرسیدین و سعی کردین متوجه بشین که دقیقا چی هستن و کارشون چیه؟
▪️تو این پست سعی میکنیم تا به برخی از این سوالها در این مورد پاسخ بدیم.
❇️ یک worker service اسکریپتی هست که در بک گراند در یک thread ای جدا از browser ui اجرا میشه .
✳️ کار کردن وب سایت به صورت افلاین توسط worker service میسر میشود و به کمک آنها یکپارچه سازی پلتفرمها مانند push notification و rich caching و background sync انجام پذیر است.
▪️در تکنولوژی PWA قلب و هسته اصلی worker service ها هستند.
✳️از ویژگی های یک worker service این است که به DOM دسترسی مستقیم ندارد ولی میتواند تمام درخواست های شبکه را رهگیری کند.
این مسئله به توسعه دهنگان این فرصت را میدهد تا نحوه مدیریت درخواست ها را کنترل کنند و راهی موثر برای کار کردن وب سایت در زمان افلاین ، فراهم آورند.
بدون شک قاعده بازی وب سایتها توسط worker service ها تغییر میکند.
🔰در زیر ویژگی های اصلی worker service ها را لیست میکنیم : یک worker service ❕
🔻یک فایل جاوا اسکریپت است.
🔻در thread جدا از ui اجرا میشوند.
🔻بطور مستقیم به DOM دسترسی ندارند.
🔻برای فعال شدن یک worker service مجموعه ای از رویداد های و life cycle ها باید انجام شود.
🔻فقط زمانی که مورد استفاده قرار گیرند Live هستند در نتیجه مصرف بی رویه باتری ای وجود ندارد.
🔻فقط به Domain یا origin ای که رجیستر شده اند، محدود میشوند.
🔻برای کار کردن به Https قطعا و الزاما نیاز دارند.
🔻توانایی دریافت و یا ارسال پیام ها را به ui دارند
🔻برای اجرا نیازی نیست تا حتما page باز باشد.
🔻توسط تمامی مرورگر های ضروری و اصلی و از جمله Ios safari پشتیبانی میشوند.
🔻تقریبا مشابه web worker ها هستند اما در خیلی از موارد بهتر هستند.
✳️ یک service worker چگونه کار میکند ؟
🔸یک service worker بین مرورگر و شبکه قرار میگیرد. مانند یک پراکسی سرور عمل میکند و مجموعه ای از تسک هایی که مربوط به UI نیستند را مدیریت میکند. آنها همچنین رویداد محور (Event Driven) هستند و جدا از پراسس مرورگر کار میکنند.
اولین و مهمترین قابلیتی که یک service worker برای یک وب سایت به ارمغان می اورد قابلیت کار کردن به صورت افلان با کنترل پذیری بالا است.
این امر به کمک API های caching و رهگیری همه ی درخواست های شبکه قبل از اینکه ارسال شوند، انجام میشود.
🔹در این پست مقدمه ای از service worker ها را بررسی کردیم و در قسمتهای بعد به جزئیات بیشتر خواهیم پرداخت و در نهایت به PWA ها خواهیم رسید.🔹
@fullStackDevs
#WorkerService
Worker Service in JS
🔹 تا حالا در مورد worker serviece ها از خودتون پرسیدین و سعی کردین متوجه بشین که دقیقا چی هستن و کارشون چیه؟
▪️تو این پست سعی میکنیم تا به برخی از این سوالها در این مورد پاسخ بدیم.
❇️ یک worker service اسکریپتی هست که در بک گراند در یک thread ای جدا از browser ui اجرا میشه .
✳️ کار کردن وب سایت به صورت افلاین توسط worker service میسر میشود و به کمک آنها یکپارچه سازی پلتفرمها مانند push notification و rich caching و background sync انجام پذیر است.
▪️در تکنولوژی PWA قلب و هسته اصلی worker service ها هستند.
✳️از ویژگی های یک worker service این است که به DOM دسترسی مستقیم ندارد ولی میتواند تمام درخواست های شبکه را رهگیری کند.
این مسئله به توسعه دهنگان این فرصت را میدهد تا نحوه مدیریت درخواست ها را کنترل کنند و راهی موثر برای کار کردن وب سایت در زمان افلاین ، فراهم آورند.
بدون شک قاعده بازی وب سایتها توسط worker service ها تغییر میکند.
🔰در زیر ویژگی های اصلی worker service ها را لیست میکنیم : یک worker service ❕
🔻یک فایل جاوا اسکریپت است.
🔻در thread جدا از ui اجرا میشوند.
🔻بطور مستقیم به DOM دسترسی ندارند.
🔻برای فعال شدن یک worker service مجموعه ای از رویداد های و life cycle ها باید انجام شود.
🔻فقط زمانی که مورد استفاده قرار گیرند Live هستند در نتیجه مصرف بی رویه باتری ای وجود ندارد.
🔻فقط به Domain یا origin ای که رجیستر شده اند، محدود میشوند.
🔻برای کار کردن به Https قطعا و الزاما نیاز دارند.
🔻توانایی دریافت و یا ارسال پیام ها را به ui دارند
🔻برای اجرا نیازی نیست تا حتما page باز باشد.
🔻توسط تمامی مرورگر های ضروری و اصلی و از جمله Ios safari پشتیبانی میشوند.
🔻تقریبا مشابه web worker ها هستند اما در خیلی از موارد بهتر هستند.
✳️ یک service worker چگونه کار میکند ؟
🔸یک service worker بین مرورگر و شبکه قرار میگیرد. مانند یک پراکسی سرور عمل میکند و مجموعه ای از تسک هایی که مربوط به UI نیستند را مدیریت میکند. آنها همچنین رویداد محور (Event Driven) هستند و جدا از پراسس مرورگر کار میکنند.
اولین و مهمترین قابلیتی که یک service worker برای یک وب سایت به ارمغان می اورد قابلیت کار کردن به صورت افلان با کنترل پذیری بالا است.
این امر به کمک API های caching و رهگیری همه ی درخواست های شبکه قبل از اینکه ارسال شوند، انجام میشود.
🔹در این پست مقدمه ای از service worker ها را بررسی کردیم و در قسمتهای بعد به جزئیات بیشتر خواهیم پرداخت و در نهایت به PWA ها خواهیم رسید.🔹
@fullStackDevs
#معرفی_وبسایت
#برنامه_نویسی
🔰معرفی سه تا وب سایت فوق العاده برای برنامه نویسان
🔸در این پست سه تا وب سایت بهتون معرفی میکنیم که به کمک اونها میتونین هنگامی که برای حل مشکلی در کدتون به کمک کسی نیاز دارین (به خصوص در گروه ها ) ، ازشون استفاده کنین.
1️⃣ codeshare.io
🔹از فوق العاده بودن این وب سایت هرچی بنویسیم کم نوشتیم. در این وب سایت میتونین کد خودتون را با بقیه share کنین و به صورت realtime با بقیه در مورد کدتون صحبت کنین (از طریق ویدیو چت😎). و اگه مشکلی داره ازشون بخواین تا برطرفش کنن.
2️⃣ repl.it
🔹با استفاده از این وب سایت میتونین در هر زبانی یه پروژه ای رو سریعا setup کنین و به نوبه خودش یک IDE کامل در browser هست
3️⃣ onelang.io
🔹به کمک این وب سایت میتونین یک قطعه کد رو در یک زبان برنامه نویسی بنویسین و معادلش رو در زبان های مطرح دیگه ببینین.
@fullStackDevs
#برنامه_نویسی
🔰معرفی سه تا وب سایت فوق العاده برای برنامه نویسان
🔸در این پست سه تا وب سایت بهتون معرفی میکنیم که به کمک اونها میتونین هنگامی که برای حل مشکلی در کدتون به کمک کسی نیاز دارین (به خصوص در گروه ها ) ، ازشون استفاده کنین.
1️⃣ codeshare.io
🔹از فوق العاده بودن این وب سایت هرچی بنویسیم کم نوشتیم. در این وب سایت میتونین کد خودتون را با بقیه share کنین و به صورت realtime با بقیه در مورد کدتون صحبت کنین (از طریق ویدیو چت😎). و اگه مشکلی داره ازشون بخواین تا برطرفش کنن.
2️⃣ repl.it
🔹با استفاده از این وب سایت میتونین در هر زبانی یه پروژه ای رو سریعا setup کنین و به نوبه خودش یک IDE کامل در browser هست
3️⃣ onelang.io
🔹به کمک این وب سایت میتونین یک قطعه کد رو در یک زبان برنامه نویسی بنویسین و معادلش رو در زبان های مطرح دیگه ببینین.
@fullStackDevs
#CI
#CD
✳️ What is CI/CD ?
🔹 CI
🔸 مفهوم Continuous integration یا به اختصار CI، سبک یا روشی از کدنویسی است که تیم های توسعه را به سمت اعمال تغییرات کوچک و ثبت مکرر آنها در سورس کنترل میبرد.
هدف تکنیکال CI برقراریه روشی برای BUILD , Package , Test خودکار اپلیکیشن میباشد.
به عنوان مثال فرض کنید در یک تیم پنج نفره کار می کنید و از github به عنوان کد ریپازیتوری خود استفاده میکنید. هر یک از اعضای تیم کدهای و تغییرات خود را هروز به ریپازیتوری مربوطه در گیتهاب push میکنند و ممکن است مواردی پیش آید که یک نفر کدی را push کند که دارای باگ باشد و این مورد منجر به درست کار نکردن و از کار افتادن اپلیکشن میشود.
در اینجاست که CI برای جلوگیری از این اتفاق به کمکتان می آید.
🔹 Benefit of using CI
🔸 از مزیت های CI تنظیم ریپازیتوری به گونه ای است که هر زمانی که کسی کد جدیدی را در ریپازیتوری push میکند، CI به صورت خودکار BUILd ای برای کدهایتارن اجرا میکند و اگر اروری در کدها باشد build نخواهد شد و اعضای تیم از آن مطلع میشوند علاوه بر این میتوانید با نوشتن test case های خودکار، بعد از هر build آن هارا اجرا کنید بدین ترتیب اگر موردی درست کار نکند و fail شود بقیه از ان مطلع خواهند شد.
🔹 CD
🔸 مفهوم continuous delivery و continuous deployment و یا به اختصار CD را میتوان به فرایند خودکاری گفت که از تغییرات اعمال شده برنامه نویسان بروی کدها در ریپازیتوری، یک release برای production انجام میشود تا به وسیله مشتریان اپلیکیشن مورد استفاده قرار گیرد.
برای مثال فرض کنین که اپلیکیشن خود را بروی هاست میزبانی کرده اید و میخواهید فرایند توسعه اپلیکیشن را automate کنید. برای این منظور می توانید CD را طوری پیاده کنید ک وقتی تغییرات را روی branch مستر push کردید به صورت خودکار کدهایتارن رو روی AWS دیپلوی (Deploy) کند.
@fullStackDevs
#CD
✳️ What is CI/CD ?
🔹 CI
🔸 مفهوم Continuous integration یا به اختصار CI، سبک یا روشی از کدنویسی است که تیم های توسعه را به سمت اعمال تغییرات کوچک و ثبت مکرر آنها در سورس کنترل میبرد.
هدف تکنیکال CI برقراریه روشی برای BUILD , Package , Test خودکار اپلیکیشن میباشد.
به عنوان مثال فرض کنید در یک تیم پنج نفره کار می کنید و از github به عنوان کد ریپازیتوری خود استفاده میکنید. هر یک از اعضای تیم کدهای و تغییرات خود را هروز به ریپازیتوری مربوطه در گیتهاب push میکنند و ممکن است مواردی پیش آید که یک نفر کدی را push کند که دارای باگ باشد و این مورد منجر به درست کار نکردن و از کار افتادن اپلیکشن میشود.
در اینجاست که CI برای جلوگیری از این اتفاق به کمکتان می آید.
🔹 Benefit of using CI
🔸 از مزیت های CI تنظیم ریپازیتوری به گونه ای است که هر زمانی که کسی کد جدیدی را در ریپازیتوری push میکند، CI به صورت خودکار BUILd ای برای کدهایتارن اجرا میکند و اگر اروری در کدها باشد build نخواهد شد و اعضای تیم از آن مطلع میشوند علاوه بر این میتوانید با نوشتن test case های خودکار، بعد از هر build آن هارا اجرا کنید بدین ترتیب اگر موردی درست کار نکند و fail شود بقیه از ان مطلع خواهند شد.
🔹 CD
🔸 مفهوم continuous delivery و continuous deployment و یا به اختصار CD را میتوان به فرایند خودکاری گفت که از تغییرات اعمال شده برنامه نویسان بروی کدها در ریپازیتوری، یک release برای production انجام میشود تا به وسیله مشتریان اپلیکیشن مورد استفاده قرار گیرد.
برای مثال فرض کنین که اپلیکیشن خود را بروی هاست میزبانی کرده اید و میخواهید فرایند توسعه اپلیکیشن را automate کنید. برای این منظور می توانید CD را طوری پیاده کنید ک وقتی تغییرات را روی branch مستر push کردید به صورت خودکار کدهایتارن رو روی AWS دیپلوی (Deploy) کند.
@fullStackDevs
درآمد یک سال گذشته شما مهر ۹۸ تا ۹۹ در کدام دسته بندی قرار میگیرد؟ حقوق و درآمد های جانبی شامل سود سهام، پروژه های فریلنسری ، مشاوره و ...
@fullStackDevs
@fullStackDevs
Anonymous Quiz
68%
زیر 50 میلیون
17%
بین 50 تا 100 میلیون
9%
بین 100 تا 350 میلیون
5%
350 میلیون به بالا
Forwarded from Web Devs
#NewVersion
#ABluePersianDateTimePicker
#NETCore
✅ ورژن جدید 2.0.1 برای NETCore
@fullStackDevs
#ABluePersianDateTimePicker
#NETCore
✅ ورژن جدید 2.0.1 برای NETCore
Install-Package ABluePersianDateTimePicker -Version 2.0.1توضیحات تکمیلی 👇
@fullStackDevs
Forwarded from Web Devs
#NewVersion
#ABluePersianDateTimePicker
#NETCore
☑️ موارد اضافه شده در این ورژن :
🔸استفاده شده از bootstrap 4
🔹ورژن مختص NETCore
🔸 اضافه شدن از تاریخ تا تاریخ به صورتی که تاریخ "تا" حتما باید بزرگتر از تاریخ "از" میباشد و تاریخ های قبل همه غیرفعال میشوند.
🔰 اصلاحیات
✅ در ورژن های قبل page سمپلی که تو ناگت قرار داشت درست کار نمیکرد ولی تو این ورژن تقریبا تمام مدل های استفاده از این پیکر را بصورت سمپل گنجانده شده و میتونید از نمونه ها استفاده کنید !
✅ ورژن های قبل تو دات نت کور وقتی پکیج را نصب میکردیم فایل های js و css اضافه نمیشد و باید به آدرس C:\Users\MyUser\.nuget\packages میرفتیم تا فایل ها را به پروژه اضافه میکردیم که با نصب این ورژن یه فولدر در wwwroot شما اضافه خواهد شد که شامل css,js و sample page میباشد.
‼️توجه داشته باشید این ورژن برای دات نت کور NET CORE میباشد و برای استفاده از ورژن های غیر Core از ورژن 1.0.5 به پایین استفاده کنید .
⚙️ اگر نقطه نظر یا انتقاد یا پیشنهادی برای بهبود این کامپوننت دارین میتونید با بنده در میان بگذارید.
✔️ ورژن جدید ریلیز شده :
#ABluePersianDateTimePicker
#NETCore
☑️ موارد اضافه شده در این ورژن :
🔸استفاده شده از bootstrap 4
🔹ورژن مختص NETCore
🔸 اضافه شدن از تاریخ تا تاریخ به صورتی که تاریخ "تا" حتما باید بزرگتر از تاریخ "از" میباشد و تاریخ های قبل همه غیرفعال میشوند.
🔰 اصلاحیات
✅ در ورژن های قبل page سمپلی که تو ناگت قرار داشت درست کار نمیکرد ولی تو این ورژن تقریبا تمام مدل های استفاده از این پیکر را بصورت سمپل گنجانده شده و میتونید از نمونه ها استفاده کنید !
✅ ورژن های قبل تو دات نت کور وقتی پکیج را نصب میکردیم فایل های js و css اضافه نمیشد و باید به آدرس C:\Users\MyUser\.nuget\packages میرفتیم تا فایل ها را به پروژه اضافه میکردیم که با نصب این ورژن یه فولدر در wwwroot شما اضافه خواهد شد که شامل css,js و sample page میباشد.
‼️توجه داشته باشید این ورژن برای دات نت کور NET CORE میباشد و برای استفاده از ورژن های غیر Core از ورژن 1.0.5 به پایین استفاده کنید .
⚙️ اگر نقطه نظر یا انتقاد یا پیشنهادی برای بهبود این کامپوننت دارین میتونید با بنده در میان بگذارید.
✔️ ورژن جدید ریلیز شده :
Install-Package ABluePersianDateTimePicker -Version 2.0.1@fullStackDevs
dotnet add package ABluePersianDateTimePicker --version 2.0.1
<PackageReference Include="ABluePersianDateTimePicker" Version="2.0.1" />
paket add ABluePersianDateTimePicker --version 2.0.1
Telegram
Arman AB
@fullStackDevs @FullStackDevsGroup