Forwarded from Web Devs
#exploring
#static
#Readonly
✳️Const vs Readonly Static
🔹Const
▫️متغیرهایی که به صورت Constant تعریف میشوند باید در هنگام تعریفشان مقدار دهی شوند و دیگر در طی طول عمر برنامه قابل تغییر نیستند. تنها type های داخلی سی شارپ را میتوان به
صورت Constant تعریف کرد. به استثنای (system.object).
تایپ های تعریف شده توسط کاربر شامل کلاس ها،struct ها و یا آرایه ها ، نمیتوانند به صورت Const تعریف شوند.
همچنین سی شارپ از متدها و پراپرتی ها و ایونت ها به صورت Const پشتیبانی نمیکند.
▪️مقادیر در متغیر های Const در
زمان compile-time شناخته و صدا زده میشوند.
▫️از Const زمانی استفاده کنید که مطمئن هستید مقدار یک متغیر در طی طول عمر اپلیکیشن تغییر نخواهد کرد.
هر متغیری که به صورت Const تعریف میشود به صورت غیر صریح static نیز تعریف خواهد شد.
▫️زمانی که کامپایلر با یک
متغیر Const مواجه میشود، مقدار آنرا مستقیما در کد IL تولید شده جایگزین میکند.
🔹Static
▫️یک عضو Static مانند : متغیرها ،متد ها و ... به Type شی تعلق دارند و از طریق نام Type در دسترس خواهد بود.
🔹ReadOnly
▫️یک فیلد ReadOnly در
زمان run-time مقدار آن ارزیابی میشود.به یک فیلد ReadOnly فقط در زمان تعریف و یا در متد سازنده کلاس دربردارنده آن میتوانید مقدار اختصاص دهید.در نتیجه این را میتوان استنباط کرد که می توان برای یک
فیلد ReadOnly در متدهای سازنده مختلف مقادیر متفاوت اختصاص داد.
🔸از اختصاص دادن مقادیر به یک فیلد Readonly برای value type ها
و reference type ها در متد سازنده چند نتیجه میتوان گرفت :
🔻در valueType ها از آنجایی که مستقیما شامل مقادیر خود هستند اگر یک فیلد به صورت ReadOnly تعریف شود immutable نیز خواهد بود.
🔻در referenceType ها که یک رفرنس به داده های خود هستند اگر یک
فیلد refrenceType
بصورت ReadOnly تعریف شود، همیشه باید به یک شی یکسان و از همان نوع اشاره کند و همچنین ReadOnly تعریف کردن آنها باعث جلوگیری از تغییر مقادیر فیلد های آن شی نمیشود.
▪️با این تعاریف به سوال اصلی خود باز میگردیم❕
❇️const vs static readonly
🔹اول از همه باید بدانیم که ویژگی های یک متغیر static readonly چیست⁉️
🔻در جایی غیر از متد سازنده static و یا در هنگام تعریف آن نمیتوانید به آن مقدار اختصاص دهید.(به خاطر readonly بودن آن)
🔻از طریق نام کلاس به آن دسترسی دارید (به خاطر static بودن آن)
🔹با این وجود در نگاه اول یک
متغیر static readonly به یک
متغیر const بسیار شبیه است زیرا یک constant فقط در هنگام تعریف می تواند مقدار بگیرد و در هیچ جای دیگری از کد مقدار آن نمیتواند تغییر کند اما تفاوت در جزئیات نهفته است.
اول از همه بدانید که یک متغیر const به جیزی ارجاع نمیکند (reference) و استفاده ار آن
به معنای hard code کردن مقدار آن میباشد .
✳️ علاوه بر اینها یک تفاوت کلیدی وجود دارد که باید از آن آگاه باشیم .همانطور که پیش تر گفتیم مقادیر یک متغیر const در کد IL جایگرین میشوند.
⚠️ اگر یک متغیر const در اسمبلی A وجود داشته باشد و اسمبلی B از اسمبلی A استفاده کند . اگر یک مقدار جدید به متغیر const موجود در اسمبلی A دهید و دوباره این اسمبلی را recompile کنید و تا زمانی که اسمبلی B را recompile نکرده اید، از همان مقدار قبلی hard code شده برای متغیر const موجود در اسمبلی A استفاده میکند.
خلاصه
🔻متغیرهای static readonly فقط میتوانند در لحظه تعریف شدن یا در متد سازنده static تغییر کنند.
🔻اگر مطمئن هستید و میدانید که مقدار یک متغیر تغییر نمیکند
از const استفاده کنید.
🔻اگر مطمئن نیستید که مقدار یک متغیر تغییر میکند یا خیر و نمیخواهید کلاس دیگری مقدار آنرا تغییر دهد
از read only استفاده کنید.
🔻متغیر های const به صورت غیر صریح static هستند.
🔻اگر میخواهید از طریق نام type به یک عضو آن دسترسی داشته باشید از static استفاده کنید.
منابع 🔍
1 - 2 -3 - 4 - 5 - 6
@FullStackDevs
#static
#Readonly
✳️Const vs Readonly Static
🔹Const
▫️متغیرهایی که به صورت Constant تعریف میشوند باید در هنگام تعریفشان مقدار دهی شوند و دیگر در طی طول عمر برنامه قابل تغییر نیستند. تنها type های داخلی سی شارپ را میتوان به
صورت Constant تعریف کرد. به استثنای (system.object).
تایپ های تعریف شده توسط کاربر شامل کلاس ها،struct ها و یا آرایه ها ، نمیتوانند به صورت Const تعریف شوند.
همچنین سی شارپ از متدها و پراپرتی ها و ایونت ها به صورت Const پشتیبانی نمیکند.
▪️مقادیر در متغیر های Const در
زمان compile-time شناخته و صدا زده میشوند.
▫️از Const زمانی استفاده کنید که مطمئن هستید مقدار یک متغیر در طی طول عمر اپلیکیشن تغییر نخواهد کرد.
هر متغیری که به صورت Const تعریف میشود به صورت غیر صریح static نیز تعریف خواهد شد.
▫️زمانی که کامپایلر با یک
متغیر Const مواجه میشود، مقدار آنرا مستقیما در کد IL تولید شده جایگزین میکند.
🔹Static
▫️یک عضو Static مانند : متغیرها ،متد ها و ... به Type شی تعلق دارند و از طریق نام Type در دسترس خواهد بود.
🔹ReadOnly
▫️یک فیلد ReadOnly در
زمان run-time مقدار آن ارزیابی میشود.به یک فیلد ReadOnly فقط در زمان تعریف و یا در متد سازنده کلاس دربردارنده آن میتوانید مقدار اختصاص دهید.در نتیجه این را میتوان استنباط کرد که می توان برای یک
فیلد ReadOnly در متدهای سازنده مختلف مقادیر متفاوت اختصاص داد.
🔸از اختصاص دادن مقادیر به یک فیلد Readonly برای value type ها
و reference type ها در متد سازنده چند نتیجه میتوان گرفت :
🔻در valueType ها از آنجایی که مستقیما شامل مقادیر خود هستند اگر یک فیلد به صورت ReadOnly تعریف شود immutable نیز خواهد بود.
🔻در referenceType ها که یک رفرنس به داده های خود هستند اگر یک
فیلد refrenceType
بصورت ReadOnly تعریف شود، همیشه باید به یک شی یکسان و از همان نوع اشاره کند و همچنین ReadOnly تعریف کردن آنها باعث جلوگیری از تغییر مقادیر فیلد های آن شی نمیشود.
▪️با این تعاریف به سوال اصلی خود باز میگردیم❕
❇️const vs static readonly
🔹اول از همه باید بدانیم که ویژگی های یک متغیر static readonly چیست⁉️
🔻در جایی غیر از متد سازنده static و یا در هنگام تعریف آن نمیتوانید به آن مقدار اختصاص دهید.(به خاطر readonly بودن آن)
🔻از طریق نام کلاس به آن دسترسی دارید (به خاطر static بودن آن)
🔹با این وجود در نگاه اول یک
متغیر static readonly به یک
متغیر const بسیار شبیه است زیرا یک constant فقط در هنگام تعریف می تواند مقدار بگیرد و در هیچ جای دیگری از کد مقدار آن نمیتواند تغییر کند اما تفاوت در جزئیات نهفته است.
اول از همه بدانید که یک متغیر const به جیزی ارجاع نمیکند (reference) و استفاده ار آن
به معنای hard code کردن مقدار آن میباشد .
✳️ علاوه بر اینها یک تفاوت کلیدی وجود دارد که باید از آن آگاه باشیم .همانطور که پیش تر گفتیم مقادیر یک متغیر const در کد IL جایگرین میشوند.
⚠️ اگر یک متغیر const در اسمبلی A وجود داشته باشد و اسمبلی B از اسمبلی A استفاده کند . اگر یک مقدار جدید به متغیر const موجود در اسمبلی A دهید و دوباره این اسمبلی را recompile کنید و تا زمانی که اسمبلی B را recompile نکرده اید، از همان مقدار قبلی hard code شده برای متغیر const موجود در اسمبلی A استفاده میکند.
خلاصه
🔻متغیرهای static readonly فقط میتوانند در لحظه تعریف شدن یا در متد سازنده static تغییر کنند.
🔻اگر مطمئن هستید و میدانید که مقدار یک متغیر تغییر نمیکند
از const استفاده کنید.
🔻اگر مطمئن نیستید که مقدار یک متغیر تغییر میکند یا خیر و نمیخواهید کلاس دیگری مقدار آنرا تغییر دهد
از read only استفاده کنید.
🔻متغیر های const به صورت غیر صریح static هستند.
🔻اگر میخواهید از طریق نام type به یک عضو آن دسترسی داشته باشید از static استفاده کنید.
منابع 🔍
1 - 2 -3 - 4 - 5 - 6
@FullStackDevs
#css
#frontEnd
#سی_اس_اس
🔰Css tricks
🔸با اینکه css آنقدرها پیچیده نیست، اما اگر تجربه ی زیادی هم در کار کردن با css داشته باشید باز هم چیزهای جدیدی هست که دانستن آن متعجب تون میکنه!
پراپرتی هایی که بسیار ازشون استفاده کردین بدون اینکه به جزئیاتش توجه خاصی کرده باشین، یا پراپرتی هایی که تاکنون ممکن است وجود آنها بی خبر بوده باشین.
🔹در این پست چندتا از این پراپرتی هارو میخوایم بررسی و معرفی کنیم.
❇️Color Property
🔹از این پراپرتی قائدتا بسیار استفاده کردین. (برای تغییر رنگ Text)
اما باید بدونید که این پراپرتی رنگ foreground المنت رو مشخص میکنه و فقط برای مشخص کردن رنگ text المنت نیست.
❇️visibility property
🔹از این پراپرتی هم حتما بسیار استفاده کرده اید و مقدار پیشفرض برای آن visible میباشد تفاوت آن با
display: none
این است که مرورگر در هنگام render المنتی که visibility آن hidden است فضای اشغال شده توسط المنت را در نظر میگیرد ولی المنت قابل رویت نمیباشد اما هنگامی که یک المنت display: none مرورگر در هنگام render صفحه هیچ فضایی برای المنت در نظر نمیگیرد.
پراپرتی visibility دارای مقداری دیگری برای set کردن به نام collapse میباشد. هنگامی که مقدار visibility المنتی را برابر با collapse قرار میدهید، مرورگر با آن المنت همانند حالت hidden عمل میکند، به استثنا در table rows و table row groups و table columns و table column groups در چنین مواقعی تنظیم کردن مقدار collapse برای یک المنت در table base المنت ها مانند display : none خواهد بود و المنت مربوطه فضایی اشغال نخواهد کرد.
🔸نکته قابل توجه این است که مرورگر های مختلف به روش های یکسانی در مواجه با visibility : collapse عمل نمی کنند.
❇️href=#top
🔹برای هدایت کاربر به بالای صفحه جاری میتوانید از مقدار
href=#top
استفاده کنید.
❇️Smooth scroll
🔹برای تنظیم اسکرول نرم برای کل سند html یا یک المنت بخصوص، میتوانید خاصیت scroll-behavior را برابر با
smooth
قرار دهید.
🔸برای اینکه مقدار تمام پراپرتی های یک المنت را به مقدار initial شده یا inherit شده آن ریست کنید از این پراپرتی استفاده کنید.
تمامی پراپرتی های به غیر از direction و unicode-bidi ریست خواهند شد.
🔸استفاده از مقدار currentColor به جای مشخص کردن دوباره نام رنگ مورد نظرتان برای پراپرتی هایی نظیر background و غیره باعث خواهد شده تا مرورگر از رنگ محاسبه شده پیشین برای آن المنت استفاده کند.
#frontEnd
#سی_اس_اس
🔰Css tricks
🔸با اینکه css آنقدرها پیچیده نیست، اما اگر تجربه ی زیادی هم در کار کردن با css داشته باشید باز هم چیزهای جدیدی هست که دانستن آن متعجب تون میکنه!
پراپرتی هایی که بسیار ازشون استفاده کردین بدون اینکه به جزئیاتش توجه خاصی کرده باشین، یا پراپرتی هایی که تاکنون ممکن است وجود آنها بی خبر بوده باشین.
🔹در این پست چندتا از این پراپرتی هارو میخوایم بررسی و معرفی کنیم.
❇️Color Property
🔹از این پراپرتی قائدتا بسیار استفاده کردین. (برای تغییر رنگ Text)
اما باید بدونید که این پراپرتی رنگ foreground المنت رو مشخص میکنه و فقط برای مشخص کردن رنگ text المنت نیست.
❇️visibility property
🔹از این پراپرتی هم حتما بسیار استفاده کرده اید و مقدار پیشفرض برای آن visible میباشد تفاوت آن با
display: none
این است که مرورگر در هنگام render المنتی که visibility آن hidden است فضای اشغال شده توسط المنت را در نظر میگیرد ولی المنت قابل رویت نمیباشد اما هنگامی که یک المنت display: none مرورگر در هنگام render صفحه هیچ فضایی برای المنت در نظر نمیگیرد.
پراپرتی visibility دارای مقداری دیگری برای set کردن به نام collapse میباشد. هنگامی که مقدار visibility المنتی را برابر با collapse قرار میدهید، مرورگر با آن المنت همانند حالت hidden عمل میکند، به استثنا در table rows و table row groups و table columns و table column groups در چنین مواقعی تنظیم کردن مقدار collapse برای یک المنت در table base المنت ها مانند display : none خواهد بود و المنت مربوطه فضایی اشغال نخواهد کرد.
🔸نکته قابل توجه این است که مرورگر های مختلف به روش های یکسانی در مواجه با visibility : collapse عمل نمی کنند.
❇️href=#top
🔹برای هدایت کاربر به بالای صفحه جاری میتوانید از مقدار
href=#top
استفاده کنید.
❇️Smooth scroll
🔹برای تنظیم اسکرول نرم برای کل سند html یا یک المنت بخصوص، میتوانید خاصیت scroll-behavior را برابر با
smooth
قرار دهید.
element {❇️all property
scroll-behavior: smooth;
}
🔸برای اینکه مقدار تمام پراپرتی های یک المنت را به مقدار initial شده یا inherit شده آن ریست کنید از این پراپرتی استفاده کنید.
تمامی پراپرتی های به غیر از direction و unicode-bidi ریست خواهند شد.
div {❇️currentColor
background-color: yellow;
color: red;
all: initial;
}
🔸استفاده از مقدار currentColor به جای مشخص کردن دوباره نام رنگ مورد نظرتان برای پراپرتی هایی نظیر background و غیره باعث خواهد شده تا مرورگر از رنگ محاسبه شده پیشین برای آن المنت استفاده کند.
div {@fullStackDevs
color: red;
border: 5px solid currentColor;
box-shadow: 0 0 5px solid currentColor;
}
This media is not supported in your browser
VIEW IN TELEGRAM
🔹 ابتدا کاری کنید که کار کند.
سپس آنرا زیبا کنید.
سپس اگر واقعا مجبورید آنرا سریع کنید.
90 درصد مواقع اگر آنرا زیبا کرده باشید،سریع نیز خواهد بود.
بنابراین فقط آنرا زیبا کنید. 🔹
"Joe Armstrong" 👨🏻💻
Computer scientist
source
@fullStackDevs
سپس آنرا زیبا کنید.
سپس اگر واقعا مجبورید آنرا سریع کنید.
90 درصد مواقع اگر آنرا زیبا کرده باشید،سریع نیز خواهد بود.
بنابراین فقط آنرا زیبا کنید. 🔹
"Joe Armstrong" 👨🏻💻
Computer scientist
source
@fullStackDevs
🔰 یکی از بهترین راه ها برای اکتیو کردن یک css بروی یک device خاص با عرض مشخص استفاده از media query در css3 میباشد.
دو روش برای استفاده از media query در css3 وجود دارد
در تصویر بالا به کمک پراپرتی media و مشخص کردن rule مد نظرمان، فایل stylesheet مشخص شده فقط در rule مشخص شده اعمال میشود.
🔸 توجه کنید در هر صورت فایل css لود خواهد شد اما فقط در صورت صدق rule مشخص شده، اکتیو و اعمال میشود.
@fullStackDevs
دو روش برای استفاده از media query در css3 وجود دارد
در تصویر بالا به کمک پراپرتی media و مشخص کردن rule مد نظرمان، فایل stylesheet مشخص شده فقط در rule مشخص شده اعمال میشود.
🔸 توجه کنید در هر صورت فایل css لود خواهد شد اما فقط در صورت صدق rule مشخص شده، اکتیو و اعمال میشود.
@fullStackDevs
اطلاعات حساب کاربری ۵۰۰ میلیون کاربر #لینکدین لو رفت
اطلاعات شخصی ۵۰۰ میلیون کاربر شبکه اجتماعی لینکدین فاش شده و گفته میشود هکرها قصد فروش این اطلاعات را در یک انجمن آنلاین دارند.
link
@fullStackDevs
اطلاعات شخصی ۵۰۰ میلیون کاربر شبکه اجتماعی لینکدین فاش شده و گفته میشود هکرها قصد فروش این اطلاعات را در یک انجمن آنلاین دارند.
link
@fullStackDevs
This media is not supported in your browser
VIEW IN TELEGRAM
Insights and productivity
The AI IntelliCode engine in Visual Studio continues to get better at seamlessly anticipating your next move. Visual Studio 2022 will provide more and deeper integrations into your daily workflows, helping you to take the right action in the right place at the right time.
📌 Link
@fullStackDevs
The AI IntelliCode engine in Visual Studio continues to get better at seamlessly anticipating your next move. Visual Studio 2022 will provide more and deeper integrations into your daily workflows, helping you to take the right action in the right place at the right time.
📌 Link
@fullStackDevs
#SourceCode
open-source clones of popular sites like Airbnb, Amazon, Instagram, Netflix, Tiktok, Spotify, Whatsapp, Youtube etc. See source code, demo links, tech stack, github stars.
Link
@fullStackDevs
open-source clones of popular sites like Airbnb, Amazon, Instagram, Netflix, Tiktok, Spotify, Whatsapp, Youtube etc. See source code, demo links, tech stack, github stars.
Link
@fullStackDevs
#Dapper
#EFCore
EF Core 6.0 !
#EntityFramework biweekly update #efcore
TechEmpower Fortunes perf!
⏫ EF Core 6.0 is 33.1% faster than EF Core 5.0
⏫ Dapper is also 6.0% faster
⏫ EF Core is now at 93.5% of Dapper perf
Plus: learn to contribute! We live-streamed a PR end-to-end.
📌 Link
@fullStackDevs
#EFCore
EF Core 6.0 !
#EntityFramework biweekly update #efcore
TechEmpower Fortunes perf!
⏫ EF Core 6.0 is 33.1% faster than EF Core 5.0
⏫ Dapper is also 6.0% faster
⏫ EF Core is now at 93.5% of Dapper perf
Plus: learn to contribute! We live-streamed a PR end-to-end.
📌 Link
@fullStackDevs
#JS
#slice
#prototype
#trick
🌀 معرفی متد slice در جاوا اسکریپت :
Array.prototype.slice()
Syntax
slice()
slice(start)
slice(start, end)
✅ متد slice عناصر انتخاب شده را در یک آرایه به عنوان یک شی آرایه جدید برمی گرداند.
❕ دو تا پارامتر داره که start تا end ایندکس عناصر انتخاب شده را مشخص میکند. اگر فقط پارامتر start را مقدار بدید یعنی از مقدار ایندکس start ارایه تا انتهای عنصر ارایه انتخاب شود. مثال زیر را در نظر بگیرید :
✅ متد slice در prototype استرینگ هم وجود دارد و قسمتهایی از یک رشته را استخراج کرده و قسمتهای استخراج شده را در یک رشته جدید برمی گرداند و پارامتر های شروع و پایان برای انتخاب شروع پایان رشته را نیز دارد.
1400/02/09
برای اینکه اعداد کوچکتراز ده ما همیشه دو رقمی نمایش داده شود و if و else هم استفاده نکنیم کافی است از همین متد slice استفاده کنیم به این صورت که یک “0” سمت چپ عدد ماه قرار میدیم و از انتها 2 کاراکتر از سمت راست یا انتها (2-) بر میداریم . بصورت زیر :
#slice
#prototype
#trick
🌀 معرفی متد slice در جاوا اسکریپت :
Array.prototype.slice()
Syntax
slice()
slice(start)
slice(start, end)
✅ متد slice عناصر انتخاب شده را در یک آرایه به عنوان یک شی آرایه جدید برمی گرداند.
❕ دو تا پارامتر داره که start تا end ایندکس عناصر انتخاب شده را مشخص میکند. اگر فقط پارامتر start را مقدار بدید یعنی از مقدار ایندکس start ارایه تا انتهای عنصر ارایه انتخاب شود. مثال زیر را در نظر بگیرید :
const fruits = ['apple', 'banana', 'orange', 'Pineapple', 'Strawberry'];‼️ نکته: برای انتخاب از انتهای رشته از یک عدد منفی استفاده کنید (زمانی که شما پارامتر های start , end را مقدار منفی بدید کاملا برعکس مقدار مثبت عمل میکند):
console.log(fruits.slice(2));
// expected output: Array ["orange ", " Pineapple ", "Strawberry"]
console.log(fruits.slice(2, 4));
// expected output: Array ["orange ", " Pineapple "]
var fruits = ['apple', 'banana', 'orange', 'Pineapple', 'Strawberry'];string.prototype.slice()
var myBest = fruits.slice(-3, -1);
// expected output: Array ["orange ", " Pineapple "]
✅ متد slice در prototype استرینگ هم وجود دارد و قسمتهایی از یک رشته را استخراج کرده و قسمتهای استخراج شده را در یک رشته جدید برمی گرداند و پارامتر های شروع و پایان برای انتخاب شروع پایان رشته را نیز دارد.
var str = "Hello world!";❗️ حالا تصور کنید میخوایید اعداد تک رقمی را دو رقمی نمایش دهید مانند نمایش ماه یا روز در تاریخ به صورت زیر :
var res = str.slice(3, 8);
// expected output: "lo world! "
1400/02/09
برای اینکه اعداد کوچکتراز ده ما همیشه دو رقمی نمایش داده شود و if و else هم استفاده نکنیم کافی است از همین متد slice استفاده کنیم به این صورت که یک “0” سمت چپ عدد ماه قرار میدیم و از انتها 2 کاراکتر از سمت راست یا انتها (2-) بر میداریم . بصورت زیر :
var myNumber = 7;@fullStackDevs
var myNumber2 = 11;
var formattedNumber = ("0" + myNumber).slice(-2);
// expected formattedNumber: 07
var formattedNumber2 = ("0" + myNumber2).slice(-2);
// expected formattedNumber2: 11
#LoopOptimizations
Loop Optimizations in C# (and various other compilers)
This post comprises infographics showing various loop optimizations that happen in C# (dotnet).
🔗 Link
@fullStackDevs
Loop Optimizations in C# (and various other compilers)
This post comprises infographics showing various loop optimizations that happen in C# (dotnet).
🔗 Link
@fullStackDevs
#NetCore
#NewVersion
✅ دات نت ورژن 5.0.6 منتشر شد. با قابلیت نصب دات نت بر روی Ubuntu ورژن 21.04 و Fedora ورژن 34 .
https://devblogs.microsoft.com/dotnet/net-may-2021/
✅ می توانید نسخه های 5.0.6 ، 3.1.15 ، 2.1.28 را برای ویندوز ، macOS و Linux برای x86 ، x64 ، Arm32 و Arm64 بارگیری کنید.
** Improvements
ASP.NET Core : 5.0.6 | 3.1.15
CoreFx: 2.1.28
CoreCLR: 3.1.15
Extensions: 3.1.15
Runtime : 5.0.6
Winforms: 5.0.6
@fullStackDevs
#NewVersion
✅ دات نت ورژن 5.0.6 منتشر شد. با قابلیت نصب دات نت بر روی Ubuntu ورژن 21.04 و Fedora ورژن 34 .
https://devblogs.microsoft.com/dotnet/net-may-2021/
✅ می توانید نسخه های 5.0.6 ، 3.1.15 ، 2.1.28 را برای ویندوز ، macOS و Linux برای x86 ، x64 ، Arm32 و Arm64 بارگیری کنید.
** Improvements
ASP.NET Core : 5.0.6 | 3.1.15
CoreFx: 2.1.28
CoreCLR: 3.1.15
Extensions: 3.1.15
Runtime : 5.0.6
Winforms: 5.0.6
@fullStackDevs
.NET Blog
.NET May 2021 Updates – 5.0.6, 3.1.15, 2.1.28
Today, we are releasing the .NET May 2021 Updates. These updates contains reliability and security improvements. See the individual release notes for details on updated packages. You can download 5.0.6 , 3.1.15, 2.1.28 versions for Windows, macOS, and Linux…
#Flexbox
🔰Flexbox Grid System
🔸بسیاری از توسعه دهندگان با سیستم های گریدی css مانند بوت استرپ اشنا هستند. که درگذشته با استفاده از float و مقادیر درصدی برای width المنت ها، پیاده سازی شده اند.
🔹اما امروزه مرورگر ها پیشترفته تر شده اند و به خوبی از flexbox پشتیبانی میکنند.
از همین رو استفاده از یک گرید سیستم بر پایه flexbox مزایای شاخص داری را، ارائه میدهد.
▫️simpler syntax
▫️ equal height columns
▫️ reordering sibling content
🔹بوت استرپ 4 از یک flex grid سیستم برخوردار است.
اکنون به برسی یک سری general structure در سیستم گرید و نحوه پیاده سازی انها میپردازیم.
▪️Rows
ساختار کلی مانند دیگر سیستم های قدیمی گرید است. با ساختاری مانند یک parent row و column های child، در نتیجه flex container تان به این شکل خواهد بود :
🔻 پراپرتی
▪️Columns
برای تعریف یک base class برای Columns این گونه کد مینویسیم :
🔻با پراپرتی
▪️Flex-direction
جهت چینش عناصر داخلی یا فرزند هارا در المنت پدر مشخص میکند.
🔻با پرارپتی
▪️justify-content
با این پراپرتی , فلکس ایتم ها یا المنت های فرزند در جهت افقی چینش میشوند.
▪️align-items
با این پراپرتی , فلکس ایتم ها یا المنت های فرزند در جهت عمودی چینش میشوند.
▪️align-content
این پراپرتی رفتار flex-wrap را تغییر میدهد و مشابه پراپرتی align-items میباشد با این تفاوت که به جای align کردن فلکس ایتم ها، فلکش لاین ها را چینش میکند. در این حالت باید فلکس ایتم ها بیشتر از چند line باشند تا مقادیر این پراپرتی بر روی انها تاثیر بگذارد.
@fullStackDevs
🔰Flexbox Grid System
🔸بسیاری از توسعه دهندگان با سیستم های گریدی css مانند بوت استرپ اشنا هستند. که درگذشته با استفاده از float و مقادیر درصدی برای width المنت ها، پیاده سازی شده اند.
🔹اما امروزه مرورگر ها پیشترفته تر شده اند و به خوبی از flexbox پشتیبانی میکنند.
از همین رو استفاده از یک گرید سیستم بر پایه flexbox مزایای شاخص داری را، ارائه میدهد.
▫️simpler syntax
▫️ equal height columns
▫️ reordering sibling content
🔹بوت استرپ 4 از یک flex grid سیستم برخوردار است.
اکنون به برسی یک سری general structure در سیستم گرید و نحوه پیاده سازی انها میپردازیم.
▪️Rows
ساختار کلی مانند دیگر سیستم های قدیمی گرید است. با ساختاری مانند یک parent row و column های child، در نتیجه flex container تان به این شکل خواهد بود :
.row {
display: flex;
flex-wrap: wrap;
margin-left: -1rem;
margin-right: -1rem;
}
🔻 پراپرتی
flex-wrap
مشخص میکند که در حالت فلکس باکس ،فلکس ایتم ها فقط در یک خط کنار هم بیایند و یا به خط بعدی منتقل شوند.▪️Columns
برای تعریف یک base class برای Columns این گونه کد مینویسیم :
.col {
flex-grow: 1;
flex-basis: 100%;
padding-left: 1rem;
padding-right: 1rem;
}
🔻با پراپرتی
flex-grow
می توانیم عرض آیتم یا آیتم هایی که با حالت Flexbox درون یک تگ container صفحه آرایی شدند افزایش دهیم.▪️Flex-direction
جهت چینش عناصر داخلی یا فرزند هارا در المنت پدر مشخص میکند.
🔻با پرارپتی
flex-basis
می توان به هر عنصر یک مقدار اختصاص داد و این مقدار با توجه به جهت عنصر نگهدارنده به عرض یا ارتقاع به صورت خودکار تعلق میگیرد یعنی اگر جهت عنصر نگهدارنده row باشد این مقدار به عرض عنصرهای داخلی داده می شود و اگر column باشد به ارتقاع عنصرهای داخلی تعلق میگیرد▪️justify-content
با این پراپرتی , فلکس ایتم ها یا المنت های فرزند در جهت افقی چینش میشوند.
▪️align-items
با این پراپرتی , فلکس ایتم ها یا المنت های فرزند در جهت عمودی چینش میشوند.
▪️align-content
این پراپرتی رفتار flex-wrap را تغییر میدهد و مشابه پراپرتی align-items میباشد با این تفاوت که به جای align کردن فلکس ایتم ها، فلکش لاین ها را چینش میکند. در این حالت باید فلکس ایتم ها بیشتر از چند line باشند تا مقادیر این پراپرتی بر روی انها تاثیر بگذارد.
@fullStackDevs
#Netcore
#DiagnosticSource
🔰DiagnosticSource
🔹مجموعه ای ساده و کاربردی از api ها که از طریق نوگت پکیج
System.Diagnostics.DiagnosticSource
در دسترش میباشد.
🔸بدین ترتیب دیگر لایبری ها مانند EF , SqlClient و ... با استفاده از DiagnosticSource ایونت هایی را در سیستم تحت یک نام مرتبط، ارسال میکنند و اپلیکیشن با دریافت این ایونت ها، آنها را پردازش میکند.
🔸 هر ایونتی که ارسال میشود علاوه بر نام، یک payload هم به همراه دارد و از انجایی که پردازش ایونت در همان فرایند ارسال اتفاق می افتد، این اطلاعات (payload) میتواند شامل هرنوع آبجکتی بدون نیاز به سریالایز یا دیسریالاز شدن باشد.
🔸همچنین DiagnosticSource در
AspNetCore و EntityFrameworkCore و HttpClient و SqlClient
نیز استفاده شده است و این قابلیت را به developer میدهد تا در خواست های ورودی و خروجی , دیتابیس کوئری ها را رهگیری (intercept) کند.
همچنین دسترسی به آبجکت هایی نظیر
HttpContext, DbConnection, DbCommand, HttpRequestMessage
و بسیاری دیگر امکان پذیر است و میتوانید در ایونت ارسال شده اگه نیاز باشد تغییراتی در آنها ایجاد کنید.
🔹 هدف از توضیح و معرفی DiagnosticSource در این پست این بود که گرچه DiagnosticSource چیزی جدیدی نیست اما دانستن اطلاعاتی در مورد آن میتواند در چالش های پیش رو به کمک ما بیاد
برای مثال Interceptor ها از نسخه 3.0 به Ef Core اضافه شدند و پیش از آن در نسخه های قبلی Ef Core پیاده سازی نشده بودند.
و امکان استفاده از Interceptor ها در نسخه های پایینتر Ef core وجود نداشت و برای این منظور میتوانیم از Diagnostic listener ها استفاده کنیم.
🔻 نکته : Diagnostic listener ها با Interceptor متفاوت هستند برای مثال یک Interceptor برای هر نمونه از DbContext رجیستر میشود در حالی که با Diagnostic listener میتوانید از ایونت های ارسال شده همه DbContext instance ها در اطلاعات, (payload) دریافت کنید.
🔹در asp core سه سیستم وجود دارد که از آنها برای logging می توان استفاده کرد که یک مورد آن DiagnosticSource میباشد. مورد بعدی سیستم ILogger است که استفاده از آن بسیار رایج است .
🔸اما یک تفاوت مهم وجود دارد و آن اینکه asp core از سیستم DiagnosticSource برای ایونت های مرتبط با زیر ساخت فریم وورک و از سیستم ILogger برای tracing جریان پراسس های اپلیکیشن استفاده میکند.
نمونه سورس کدی که از DiagnosticSource برای log ایونت ها استفاده شده است .
@fullStackDevs
#DiagnosticSource
🔰DiagnosticSource
🔹مجموعه ای ساده و کاربردی از api ها که از طریق نوگت پکیج
System.Diagnostics.DiagnosticSource
در دسترش میباشد.
🔸بدین ترتیب دیگر لایبری ها مانند EF , SqlClient و ... با استفاده از DiagnosticSource ایونت هایی را در سیستم تحت یک نام مرتبط، ارسال میکنند و اپلیکیشن با دریافت این ایونت ها، آنها را پردازش میکند.
🔸 هر ایونتی که ارسال میشود علاوه بر نام، یک payload هم به همراه دارد و از انجایی که پردازش ایونت در همان فرایند ارسال اتفاق می افتد، این اطلاعات (payload) میتواند شامل هرنوع آبجکتی بدون نیاز به سریالایز یا دیسریالاز شدن باشد.
🔸همچنین DiagnosticSource در
AspNetCore و EntityFrameworkCore و HttpClient و SqlClient
نیز استفاده شده است و این قابلیت را به developer میدهد تا در خواست های ورودی و خروجی , دیتابیس کوئری ها را رهگیری (intercept) کند.
همچنین دسترسی به آبجکت هایی نظیر
HttpContext, DbConnection, DbCommand, HttpRequestMessage
و بسیاری دیگر امکان پذیر است و میتوانید در ایونت ارسال شده اگه نیاز باشد تغییراتی در آنها ایجاد کنید.
🔹 هدف از توضیح و معرفی DiagnosticSource در این پست این بود که گرچه DiagnosticSource چیزی جدیدی نیست اما دانستن اطلاعاتی در مورد آن میتواند در چالش های پیش رو به کمک ما بیاد
برای مثال Interceptor ها از نسخه 3.0 به Ef Core اضافه شدند و پیش از آن در نسخه های قبلی Ef Core پیاده سازی نشده بودند.
و امکان استفاده از Interceptor ها در نسخه های پایینتر Ef core وجود نداشت و برای این منظور میتوانیم از Diagnostic listener ها استفاده کنیم.
🔻 نکته : Diagnostic listener ها با Interceptor متفاوت هستند برای مثال یک Interceptor برای هر نمونه از DbContext رجیستر میشود در حالی که با Diagnostic listener میتوانید از ایونت های ارسال شده همه DbContext instance ها در اطلاعات, (payload) دریافت کنید.
🔹در asp core سه سیستم وجود دارد که از آنها برای logging می توان استفاده کرد که یک مورد آن DiagnosticSource میباشد. مورد بعدی سیستم ILogger است که استفاده از آن بسیار رایج است .
🔸اما یک تفاوت مهم وجود دارد و آن اینکه asp core از سیستم DiagnosticSource برای ایونت های مرتبط با زیر ساخت فریم وورک و از سیستم ILogger برای tracing جریان پراسس های اپلیکیشن استفاده میکند.
نمونه سورس کدی که از DiagnosticSource برای log ایونت ها استفاده شده است .
@fullStackDevs
GitHub
blog-examples/diagnostic-listener/DiagnosticListenerExample at master · andrewlock/blog-examples
Sample applications for blog posts on https://andrewlock.net - blog-examples/diagnostic-listener/DiagnosticListenerExample at master · andrewlock/blog-examples
#Js
#AccessToDevice
New Standards to Access Device Hardware using JavaScript
WebHID, WebNFC, and WebUSB have opened up new avenues to interact with user’s device hardware for web apps.
آیا تاکنون نیاز به دسترسی به سخت افزار دستگاه کاربر و پیاده سازی یک برنامه دسک تاپ فقط برای آن ویژگی پیدا کرده اید؟ تو تنها نیستی. تا همین اواخر ، راه دستیابی به موارد فوق دور از ذهن و دست و پا گیر بود. با این حال ، با به روزرسانی های اخیر Chrome DevTools ، صحبت با سخت افزار با استفاده از JavaScript به واقعیت تبدیل شده است.
https://blog.bitsrc.io/new-standards-to-access-user-device-hardware-using-javascript-86b0c156dd3d
@fullStackDevs
#AccessToDevice
New Standards to Access Device Hardware using JavaScript
WebHID, WebNFC, and WebUSB have opened up new avenues to interact with user’s device hardware for web apps.
آیا تاکنون نیاز به دسترسی به سخت افزار دستگاه کاربر و پیاده سازی یک برنامه دسک تاپ فقط برای آن ویژگی پیدا کرده اید؟ تو تنها نیستی. تا همین اواخر ، راه دستیابی به موارد فوق دور از ذهن و دست و پا گیر بود. با این حال ، با به روزرسانی های اخیر Chrome DevTools ، صحبت با سخت افزار با استفاده از JavaScript به واقعیت تبدیل شده است.
https://blog.bitsrc.io/new-standards-to-access-user-device-hardware-using-javascript-86b0c156dd3d
@fullStackDevs
#Brave
ظاهرا رقیب گوگل از راه رسید
نسخه بتای موتور جستجوی Brave در اختیار کاربران جهانی
▪️ موتور جستجوی Brave درون مرورگر (دانلود ) این شرکت قرار گرفته و از طریق آدرس search.brave.com در دسترس است. Brave میگوید در آینده یک نسخه پولی از این سرویس را بدون تبلیغات عرضه میکند ولی در حال حاضر نسخه رایگان آن را با تبلیغات معمولی در اختیار کاربران قرار میدهد.
▫️ ین موتور جستجو با تمرکز بر حریم خصوصی و شفافیت ساخته شده و میگوید فعالیتهای شما را ردیابی نمیکند.
@fullStackDevs
ظاهرا رقیب گوگل از راه رسید
نسخه بتای موتور جستجوی Brave در اختیار کاربران جهانی
▪️ موتور جستجوی Brave درون مرورگر (دانلود ) این شرکت قرار گرفته و از طریق آدرس search.brave.com در دسترس است. Brave میگوید در آینده یک نسخه پولی از این سرویس را بدون تبلیغات عرضه میکند ولی در حال حاضر نسخه رایگان آن را با تبلیغات معمولی در اختیار کاربران قرار میدهد.
▫️ ین موتور جستجو با تمرکز بر حریم خصوصی و شفافیت ساخته شده و میگوید فعالیتهای شما را ردیابی نمیکند.
@fullStackDevs
Forwarded from Full Stack Amigo (HESAM KASHEFI)
Advanced C# - Understand the implementation details of readonly and how it affects performance of your C# applications.
🔴 Don't forget to like, Share and Subscribe!
#csharp
https://youtu.be/6T5pE1pPBd8
🔴 Don't forget to like, Share and Subscribe!
#csharp
https://youtu.be/6T5pE1pPBd8
YouTube
Does readonly affect Performance ?! - Avoid Defensive Copies - Advanced C#
Does readonly affect performance of your C# applications?
In this video we learn about compiler details of readonly.
😀If you have any question ask me in the comments
🔴 SUBSCRIBE 🔥 using the following link
http://bit.ly/39PJJ8Z
🔴Don't forget to like and…
In this video we learn about compiler details of readonly.
😀If you have any question ask me in the comments
🔴 SUBSCRIBE 🔥 using the following link
http://bit.ly/39PJJ8Z
🔴Don't forget to like and…
This media is not supported in your browser
VIEW IN TELEGRAM
#GitHub
#Copilot
‼️ ابزار جدید GitHub ساخته شده با هوش مصنوعی برای برنامه نویسان و توسعه دهندگان.
این ابزار GitHub Copilot نام دارد که از سیستم هوش مصنوعی ساخته شده توسط شرکت OpenAI استفاده میکند.
این سیستم میتواند با استفاده از درک متن کدی که برنامه نویس نوشته است خطوط و توابع کامل را به برنامه نویس پیشنهاد دهد.
این ابزار از طیف گسترده ای از زبان ها را پشتیبانی میکند ولی در حال حاضر با پایتون و جاوا نتایج بهتری میدهد.
github copilot
About GitHub Copilot telemetry
Introducing GitHub Copilot: your AI pair programmer
@fullStackDevs
#Copilot
‼️ ابزار جدید GitHub ساخته شده با هوش مصنوعی برای برنامه نویسان و توسعه دهندگان.
این ابزار GitHub Copilot نام دارد که از سیستم هوش مصنوعی ساخته شده توسط شرکت OpenAI استفاده میکند.
این سیستم میتواند با استفاده از درک متن کدی که برنامه نویس نوشته است خطوط و توابع کامل را به برنامه نویس پیشنهاد دهد.
این ابزار از طیف گسترده ای از زبان ها را پشتیبانی میکند ولی در حال حاضر با پایتون و جاوا نتایج بهتری میدهد.
github copilot
About GitHub Copilot telemetry
Introducing GitHub Copilot: your AI pair programmer
@fullStackDevs
#Angular
Designing Scalable Angular Apps: Pages, Containers and Views
Terminology and a methodology that would help you build a scalable Angular application
http://amp.gs/jjtsl
@fullStackDevs
Designing Scalable Angular Apps: Pages, Containers and Views
Terminology and a methodology that would help you build a scalable Angular application
http://amp.gs/jjtsl
@fullStackDevs
Medium
Designing Scalable Angular Apps: Pages, Containers and Views
Terminology and a methodology that would help you build a scalable Angular application.
#OneLineCode
#Readability
🔰 فرض کنید software Developer یک شرکت هستید و task ای به شما داده می شود تا برای حل یک مسئله پیچیده یک الگوریم و یا راه حل پیدا کنید.
🔶 شما کار را با پیدا کردن هر راه حل ممکن برای حل کردن مسئله شروع میکنید. بعد از مدتی بلاخره یک راه حل کاری پیدا میکنید اما فکر میکنید که این راه حل بسیار طولانی و شلوغ است پس فکر میکنید که :
🔶 حتما باید راه حلی هوشمندانه تر و سریعتری برای حل این مسئله وجود داشته باشه.
🔹 پس دوباره شروع میکنید به گشتن و بعد از گذراندن مدتی بلاخره راه حلی به ذهنتان خطور که میکند. راه حلی که در عین پیچیدگی فقط یک خط کد است.
🔹پس پیش سنیور دولوپر خود میروید و راه حل خود را ارائه میدهید و او میگوید :
دوباره انجامش بده !!!
چرا!!!!؟؟
🔰در توسعه نرم افزار هدف نوشتن کدی است که بقیه بتوانند آنرا بفهوند نه کدی که از بقیه کوتاه تر باشد چون برای ما Readability اهمیت دارد.
@fullStackDevs
#Readability
🔰 فرض کنید software Developer یک شرکت هستید و task ای به شما داده می شود تا برای حل یک مسئله پیچیده یک الگوریم و یا راه حل پیدا کنید.
🔶 شما کار را با پیدا کردن هر راه حل ممکن برای حل کردن مسئله شروع میکنید. بعد از مدتی بلاخره یک راه حل کاری پیدا میکنید اما فکر میکنید که این راه حل بسیار طولانی و شلوغ است پس فکر میکنید که :
🔶 حتما باید راه حلی هوشمندانه تر و سریعتری برای حل این مسئله وجود داشته باشه.
🔹 پس دوباره شروع میکنید به گشتن و بعد از گذراندن مدتی بلاخره راه حلی به ذهنتان خطور که میکند. راه حلی که در عین پیچیدگی فقط یک خط کد است.
🔹پس پیش سنیور دولوپر خود میروید و راه حل خود را ارائه میدهید و او میگوید :
دوباره انجامش بده !!!
چرا!!!!؟؟
🔰در توسعه نرم افزار هدف نوشتن کدی است که بقیه بتوانند آنرا بفهوند نه کدی که از بقیه کوتاه تر باشد چون برای ما Readability اهمیت دارد.
@fullStackDevs
#miro
میرو یا Miro یک پلت فرم آنلاین وایت برد مشترک است که تیم های توزیع شده را قادر می سازد تا به طور موثر با یکدیگر کار کنند ، از طوفان مغزی با یادداشت های مهم دیجیتالی و ترسیم فلوچارت گرفته تا ایجاد تسک و بک لاگ و برنامه ریزی و مدیریت گردش کار اجایل.
https://vimeo.com/362858018
https://miro.com
@fullStackDevs
میرو یا Miro یک پلت فرم آنلاین وایت برد مشترک است که تیم های توزیع شده را قادر می سازد تا به طور موثر با یکدیگر کار کنند ، از طوفان مغزی با یادداشت های مهم دیجیتالی و ترسیم فلوچارت گرفته تا ایجاد تسک و بک لاگ و برنامه ریزی و مدیریت گردش کار اجایل.
https://vimeo.com/362858018
https://miro.com
@fullStackDevs