چگونه کیفیت کدهای سی شارپ را بالاتر ببریم؟
https://www.aparat.com/v/tdaVX
https://t.me/one_programmer/168
https://www.aparat.com/v/tdaVX
https://t.me/one_programmer/168
WebGPU یک API گرافیکی است که برای دسترسی به قدرت پردازش گرافیکی سیستمهای در مرورگر طراحی شده است. این API از طریق JavaScript قابل دسترسی است و به توسعهدهندگان اجازه میدهد تا برنامههای گرافیکی پیشرفته را در مرورگرها اجرا کنند.
کتابخانههایی مانند Three.js و Babylon.js از WebGPU پشتیبانی میکنند.
به تازگی گوگل در کنفرانس I/O 2023 اعلام کرده است که این قابلیت در کروم فعال شده و پشتیبانی میشود.
در کنفرانس Google I/O اعلام شد که WebGPU به برنامه های وب روی تلفن همراه یا لپتاپ امکان استفاده مستقیمتر از نرم افزار های هوش مصنوعی را میدهد.
این ارتقاء می تواند در دامنه گسترده ای از برنامه ها و اپ ها مورد استفاده قرار گیرد. مت ودل، رهبر توسعه دهندگان Chrome می گوید که "WebGPU وب را آماده هوش مصنوعی می کند".
اجرای هوش مصنوعی به صورت محلی روی دستگاه هایی مانند تلفن همراه و لپتاپ باعث کم شدن مشکلات پهنای باند شبکه میوشد و کنترل بیشتر بر روی داده ها خصوصی را فراهم میکند.
کتابخانههایی مانند Three.js و Babylon.js از WebGPU پشتیبانی میکنند.
به تازگی گوگل در کنفرانس I/O 2023 اعلام کرده است که این قابلیت در کروم فعال شده و پشتیبانی میشود.
در کنفرانس Google I/O اعلام شد که WebGPU به برنامه های وب روی تلفن همراه یا لپتاپ امکان استفاده مستقیمتر از نرم افزار های هوش مصنوعی را میدهد.
این ارتقاء می تواند در دامنه گسترده ای از برنامه ها و اپ ها مورد استفاده قرار گیرد. مت ودل، رهبر توسعه دهندگان Chrome می گوید که "WebGPU وب را آماده هوش مصنوعی می کند".
اجرای هوش مصنوعی به صورت محلی روی دستگاه هایی مانند تلفن همراه و لپتاپ باعث کم شدن مشکلات پهنای باند شبکه میوشد و کنترل بیشتر بر روی داده ها خصوصی را فراهم میکند.
HTTP/3 پروتکلی است که برای جایگزینی HTTP/2 طراحی شده است. این پروتکل به کمک QUIC اجرا می شود و از پروتکل UDP برای ارسال داده ها استفاده می کند.
سه مزیت اصلی HTTP/3 نسبت به HTTP/2 :
1. کاهش تاخیر در شروع ارتباط:
در HTTP/2، برای شروع هر ارتباط، باید یک دستورالعمل (Handshake) انجام شود که این عمل ممکن است برای برقراری ارتباط اولیه بین کلاینت و سرور زمان زیادی بگیرد. با استفاده از QUIC، تاخیر در شروع ارتباط به صورت قابل توجهی کاهش پیدا می کند.
2. ایمنی و امنیت بیشتر:
HTTP/3 برای ارتباط با TLS 1.3 طراحی شده است و امنیت بیشتری دارد. در این روش فرایند رمزگذاری بهینه تر شده که باعث کاهش تاخیر و افزایش کارایی می شود.
3. ارتباط پایدارتر:
در HTTP/2، اگر بسته هایی هنگام انتقال از بین روند، کلیه بسته های بعدی در صف انتظار قرار می گیرند تا بسته های گمشده دوباره فرستاده شوند. در HTTP/3، از الگوریتم 'retransmission' استفاده می شود که امکان ارسال بسته های گمشده را به صورت همزمان با بسته های دیگر فراهم می کند که باعث بهبود کیفیت ارتباط و کاهش تاخیر در انتقال داده ها می شود.
سه مزیت اصلی HTTP/3 نسبت به HTTP/2 :
1. کاهش تاخیر در شروع ارتباط:
در HTTP/2، برای شروع هر ارتباط، باید یک دستورالعمل (Handshake) انجام شود که این عمل ممکن است برای برقراری ارتباط اولیه بین کلاینت و سرور زمان زیادی بگیرد. با استفاده از QUIC، تاخیر در شروع ارتباط به صورت قابل توجهی کاهش پیدا می کند.
2. ایمنی و امنیت بیشتر:
HTTP/3 برای ارتباط با TLS 1.3 طراحی شده است و امنیت بیشتری دارد. در این روش فرایند رمزگذاری بهینه تر شده که باعث کاهش تاخیر و افزایش کارایی می شود.
3. ارتباط پایدارتر:
در HTTP/2، اگر بسته هایی هنگام انتقال از بین روند، کلیه بسته های بعدی در صف انتظار قرار می گیرند تا بسته های گمشده دوباره فرستاده شوند. در HTTP/3، از الگوریتم 'retransmission' استفاده می شود که امکان ارسال بسته های گمشده را به صورت همزمان با بسته های دیگر فراهم می کند که باعث بهبود کیفیت ارتباط و کاهش تاخیر در انتقال داده ها می شود.
Nginx یک وب سرویس قدرتمند و محبوب است که امکان مقیاس پذیری افقی و عمودی سریع را فراهم می کند.
با توزیع بار، مدیریت توزیع ترافیک و استفاده از پراکسی معکوس، می توانید سایت خود را به راحتی مقیاس پذیر کنید و همچنین بار ترافیک را به صورت موازی بین سرورهای مختلف تقسیم کنید.
https://aparat.com/v/5oQkx
با توزیع بار، مدیریت توزیع ترافیک و استفاده از پراکسی معکوس، می توانید سایت خود را به راحتی مقیاس پذیر کنید و همچنین بار ترافیک را به صورت موازی بین سرورهای مختلف تقسیم کنید.
https://aparat.com/v/5oQkx
بارد یک چتبات LLM است که توسط هوش مصنوعی گوگل توسعه یافته است. این مدل بر روی مجموعه دادههای بزرگی از متون و کدها آموزش دیده است و قادر است متن تولید کند. زبانها را به هم ترجمه کند و انواع مختلفی از محتوای خلاقانه و پاسخ به سوالات تولید کند.
بارد هنوز در حال توسعه است، اما پتانسیل تبدیل شدن به یک ابزار قدرتمند برای ارتباط، خلاقیت و یادگیری را دارد.
در حال حاضر بارد قادر به درک زبان نیست و نمی توانید با زبان فارسی با آن ارتباط برقرار کنید.
بنا به گفته بسیاری گوگل در بازی هوش مصنوعی عقب است و پر کردن این فاصله در دنیایی که هر روز با شتاب بیشتری به سمت توسعه هوش مصنوعی میرود سخت به نظر میرسد.
می توانید از طریق آدرس زیر از بارد استفاده کنید:
https://bard.google.com
بارد هنوز در حال توسعه است، اما پتانسیل تبدیل شدن به یک ابزار قدرتمند برای ارتباط، خلاقیت و یادگیری را دارد.
در حال حاضر بارد قادر به درک زبان نیست و نمی توانید با زبان فارسی با آن ارتباط برقرار کنید.
بنا به گفته بسیاری گوگل در بازی هوش مصنوعی عقب است و پر کردن این فاصله در دنیایی که هر روز با شتاب بیشتری به سمت توسعه هوش مصنوعی میرود سخت به نظر میرسد.
می توانید از طریق آدرس زیر از بارد استفاده کنید:
https://bard.google.com
چرا Type-Safety در CLR مهم است؟
یکی از قابلیت های اصلی که Common Language Runtime در دات نت فراهم می کند Type-Safety است.
امنیت نوع یا Type-Safety تضمین میکند که متغیرها در خطوط برنامه دارای نوع متغیر همسان یا سازگار باهم باشند. در این حالت CLR در صورت عدم مطابقت بین نوع متغیرها از اجرای برنامه جلوگیری میکند تا با این روش درستی اجرای برنامه را تضمین کند.
امنیت نوع با جلوگیری از دسترسی غیرمجاز یا تغییر خانه های حافظه، به امنیت حافظه کمک میکند. در CLR، همه اشیاء به نوع خود مرتبط میشوند و در زمان اجرا صحت نوع چک میشود. این کار از خطاهای متداول برنامهنویسی مانند سرریز بافر، استثناء null و عدم تطابق نوع جلوگیری میکند. هر کدام از این موارد میتواند به آسیبپذیریهای امنیتی، کرشها یا رفتار غیرقابل پیشبینی ختم شود.
مثلا درحملات type confusion کد مخرب سعی میکند با بهرهبرداری از اشیاء با نوع ضعیف یا نادرست داده های برنامه را دستکاری کند و رفتار آن را تغییر دهد.
با اجرای صحت نوع در CLR امکان این نوع آسیبپذیریهایی در زبانهای دات نت کمتر میشود.
یکی از قابلیت های اصلی که Common Language Runtime در دات نت فراهم می کند Type-Safety است.
امنیت نوع یا Type-Safety تضمین میکند که متغیرها در خطوط برنامه دارای نوع متغیر همسان یا سازگار باهم باشند. در این حالت CLR در صورت عدم مطابقت بین نوع متغیرها از اجرای برنامه جلوگیری میکند تا با این روش درستی اجرای برنامه را تضمین کند.
امنیت نوع با جلوگیری از دسترسی غیرمجاز یا تغییر خانه های حافظه، به امنیت حافظه کمک میکند. در CLR، همه اشیاء به نوع خود مرتبط میشوند و در زمان اجرا صحت نوع چک میشود. این کار از خطاهای متداول برنامهنویسی مانند سرریز بافر، استثناء null و عدم تطابق نوع جلوگیری میکند. هر کدام از این موارد میتواند به آسیبپذیریهای امنیتی، کرشها یا رفتار غیرقابل پیشبینی ختم شود.
مثلا درحملات type confusion کد مخرب سعی میکند با بهرهبرداری از اشیاء با نوع ضعیف یا نادرست داده های برنامه را دستکاری کند و رفتار آن را تغییر دهد.
با اجرای صحت نوع در CLR امکان این نوع آسیبپذیریهایی در زبانهای دات نت کمتر میشود.
چرا به آن x86 میگویند؟
اصطلاح "x86" از روش نامگذاری استفاده شده برای میکروپرسسورهای اینتل بدست آمده است. میکروپرسسور اینتل 8086 در سال ۱۹۷۸ عرضه شد و اولین میکروپرسسور ۱۶ بیتی در معماری x86 اینتل بود. نسلهای بعدی پردازندهها، از جمله اینتل 80286 و اینتل 80386 و ... ، همچنان از روش نامگذاری "۸۶" استفاده میکردند.
با گذر زمان، اصطلاح "x86" به یک روش معمول برای اشاره به خانوادهای از پردازندهها که سازگار با اینتل 8086 اصلی بودند، تبدیل شد. هرچند که معماری از ۱۶ بیتی فراتر رفته و شامل نسخههای ۳۲ بیتی (IA-32) و ۶۴ بیتی (x86-64) شده است، اصطلاح "x86" به عنوان اختصاری برای این خانواده از پردازندهها و معماریهای مرتبط با آن همچنان به کار میرود.
اصطلاح "x86" اغلب به طور خاص به نسخه ۳۲ بیتی معماری x86 اشاره دارد. نسخه ۶۴ بیتی این معماری که با نام AMD64 توسط AMD معرفی شد و سپس توسط اینتل با نام Intel 64 پذیرفته شد، به طور معمول به عنوان "x86-64" یا "x64" شناخته میشود.
اصطلاح "x86" از روش نامگذاری استفاده شده برای میکروپرسسورهای اینتل بدست آمده است. میکروپرسسور اینتل 8086 در سال ۱۹۷۸ عرضه شد و اولین میکروپرسسور ۱۶ بیتی در معماری x86 اینتل بود. نسلهای بعدی پردازندهها، از جمله اینتل 80286 و اینتل 80386 و ... ، همچنان از روش نامگذاری "۸۶" استفاده میکردند.
با گذر زمان، اصطلاح "x86" به یک روش معمول برای اشاره به خانوادهای از پردازندهها که سازگار با اینتل 8086 اصلی بودند، تبدیل شد. هرچند که معماری از ۱۶ بیتی فراتر رفته و شامل نسخههای ۳۲ بیتی (IA-32) و ۶۴ بیتی (x86-64) شده است، اصطلاح "x86" به عنوان اختصاری برای این خانواده از پردازندهها و معماریهای مرتبط با آن همچنان به کار میرود.
اصطلاح "x86" اغلب به طور خاص به نسخه ۳۲ بیتی معماری x86 اشاره دارد. نسخه ۶۴ بیتی این معماری که با نام AMD64 توسط AMD معرفی شد و سپس توسط اینتل با نام Intel 64 پذیرفته شد، به طور معمول به عنوان "x86-64" یا "x64" شناخته میشود.
آدرس فایل در دات نت برای سازگاری با لینوکس و داکر
فریم ورک دات نت cross-platform است و می توانید سایت یا اپ خود را در لینوکس یا در داکر مبنتنی بر لینوکس اجرا کنید. نکته مهم توجه به آدرسی دهی فایلها است که بین ویندوز و لینوکس فرق دارد و می تواند بعد از انتشار روی سرور لینوکس برای شما دردسر ساز شود.
1- از
هیچوقت آدرس فایل ها را با
2- از آدرس دهی نسبی استفاده کنید:
موقعیت فایل را بر اساس محل قرار گرفتن اپلیکیشن مشخص کنید و از آدرس دهی مطلق که به درایو یا مسیر مشخصی روی سیستم عامل اشاره می کند استفاده نکنید. در
3- برای دسترسی به آدرس فولدرهای خاص از Enviroment Variables استفاده کنید:
با کمک Environment.SpecialFolder می توانید به مسیر فولدهایی
فریم ورک دات نت cross-platform است و می توانید سایت یا اپ خود را در لینوکس یا در داکر مبنتنی بر لینوکس اجرا کنید. نکته مهم توجه به آدرسی دهی فایلها است که بین ویندوز و لینوکس فرق دارد و می تواند بعد از انتشار روی سرور لینوکس برای شما دردسر ساز شود.
1- از
Path.Combine
استفاده کنید :هیچوقت آدرس فایل ها را با
+
ترکیب نکنید. آدرس دهی در ویندوز با \
و در لینوکس با /
انجام میشود و تابع Combine در فضای نامی System.IO
می تواند بر اساس سیستم عامل جاری جدا کننده درست را در مسیر فایل قرار دهد. 2- از آدرس دهی نسبی استفاده کنید:
موقعیت فایل را بر اساس محل قرار گرفتن اپلیکیشن مشخص کنید و از آدرس دهی مطلق که به درایو یا مسیر مشخصی روی سیستم عامل اشاره می کند استفاده نکنید. در
ASP.NET Core
می توانید از اینترفیس IWebHostEnvironment استفاده کنید.3- برای دسترسی به آدرس فولدرهای خاص از Enviroment Variables استفاده کنید:
با کمک Environment.SpecialFolder می توانید به مسیر فولدهایی
MyDocuments
یا ApplicationData
در سیستم عامل ویندوز و لینوکس دسترسی داشته باشید.
چرا از File-Scoped Namespace استفاده کنیم؟
از
با کمک این قابلیت می توانید فضای نامی را بدون
این قابلیت با حذف یک مرحله فاصله گذاری از نویز تصویری کدنویسی کم می کند و خواندن آن را ساده تر می کند.
بهتر است در کد نویسی از این قابلیت به صورت پیش فرض استفاده کنید و بعد از آپدیت به دات نت 6 کلاس های خود را به این حالت بروز رسانی کنید.
می توانید با Options در Visual Studio برای کلاسهای جدید گزینه پیش فرض را به File-Scoped تغییر دهید.
از
#C
نسخه 10 قابلیت تعریف فضای نامی در فایل اضافه شده است. با کمک این قابلیت می توانید فضای نامی را بدون
{ ... }
و فقط با نوشتن یک خط در بالای فایل تعریف کنید. این قابلیت با حذف یک مرحله فاصله گذاری از نویز تصویری کدنویسی کم می کند و خواندن آن را ساده تر می کند.
بهتر است در کد نویسی از این قابلیت به صورت پیش فرض استفاده کنید و بعد از آپدیت به دات نت 6 کلاس های خود را به این حالت بروز رسانی کنید.
می توانید با Options در Visual Studio برای کلاسهای جدید گزینه پیش فرض را به File-Scoped تغییر دهید.
قابلیت Alias any type در سی شارپ 12
قابلیت Alias یا قرار دادن اسم مستعار برای using ها از نسخه اول سی شارپ وجود داشته است. اما از نسخه 12 این قابلیت شامل Type ها هم میشود.
می توانید برای هر Type یک Alias تعریف کنید تا کد شما بیشتر بیانگر کاری باشد که انجام میدهد. مثلا اگر یک int در واقع شمارنده است یا یک String در واقع یک آدرس است می توانید با استفاده از using این موضوع را مشخص کنید.
#Build2023
قابلیت Alias یا قرار دادن اسم مستعار برای using ها از نسخه اول سی شارپ وجود داشته است. اما از نسخه 12 این قابلیت شامل Type ها هم میشود.
می توانید برای هر Type یک Alias تعریف کنید تا کد شما بیشتر بیانگر کاری باشد که انجام میدهد. مثلا اگر یک int در واقع شمارنده است یا یک String در واقع یک آدرس است می توانید با استفاده از using این موضوع را مشخص کنید.
#Build2023
قابلیت Collection Literals در سی شارپ 12
برای پر کردن ورودی کالکشن ها می توانید بجای استفاده از تایپ اصلی مانند:
در نسخه های قبلی
با قابلیت جدیدتر Collection Literals کد خوانا تر می شود و دیگر حتی نیاز به نوشتن عبارت new نیست.
#Build2023
برای پر کردن ورودی کالکشن ها می توانید بجای استفاده از تایپ اصلی مانند:
new List<int> {1,5,7}از عبارت
[1,5,7]
استفاده کنید.در نسخه های قبلی
#C
می توانستید از نوشتن تایپ صرف نظر کنید مثلا بنویسید:new() {1,5,7}و کامپایلر سی شارپ می توانست با دنبال کردن مسیر اجرا برنامه خودش تشخیص دهد که چه چیزی قرار است new شود. این قابلیت امکان می داد که کد راحت تر قابل تغییر باشد. مثلا اگر بعدا بجای List می خواستید از یک آرایه استفاده کنید لازم نبود هر جا از متد استفاده شده است تغییر کند.
با قابلیت جدیدتر Collection Literals کد خوانا تر می شود و دیگر حتی نیاز به نوشتن عبارت new نیست.
#Build2023
ویژگی deconstruct در
https://youtu.be/wk8z4TvL5ns
https://www.aparat.com/v/hZ1Ia
#C
میتواند زمانی استفاده شود که میخواهید اجزا یا پراپرتی های یک شی را درون متغیرهای جداگانه استخراج کنید.https://youtu.be/wk8z4TvL5ns
https://www.aparat.com/v/hZ1Ia
محبوبترین زبان های برنامه نویسی در نظر سنجی Stackoverflow 2023
جاوا و سی شارپ همچنان بالاتر از زبانهایی مانند Go و Rust و PHP قرار دارند.
محبوبترین زبان در بین توسعه دهندگان جونیور پایتون است.
بیشترین رشد در این آمار مربوط به زبان Lua میشود که نسبت به سال قبل 7 پله بالاتر آمده است.
#Stackoverflow2023
جاوا و سی شارپ همچنان بالاتر از زبانهایی مانند Go و Rust و PHP قرار دارند.
محبوبترین زبان در بین توسعه دهندگان جونیور پایتون است.
بیشترین رشد در این آمار مربوط به زبان Lua میشود که نسبت به سال قبل 7 پله بالاتر آمده است.
#Stackoverflow2023
از بین 57 هزار نفری که در این نظر سنجی شرکت کردند 19 درصد فریم ورک
فریم ورک ASP NET Core همچنان بالاتر از Spring و WordPress و Laravel قرار دارد.
فریم ورک Next.js نسبت به سال قبل 5 پله سعود کرده است.
#stackoverflow2023
ASP NET Core
را به عنوان فریم ورک وب محبوب خود انتخاب کرده اند.فریم ورک ASP NET Core همچنان بالاتر از Spring و WordPress و Laravel قرار دارد.
فریم ورک Next.js نسبت به سال قبل 5 پله سعود کرده است.
#stackoverflow2023
زبان های مورد تحسین و مطلوب
در نظر سنجی جدید بجای Wanted & Dreaded از مفهوم Admired و Desired استفاده شده است.
میزان علاقه افراد به استفاده از یک تکنولوژی پرسیده میشود(Desired) و با افرادی که از آن تکنولوژی در سال گذشته کار کرده اند و مایل هستند سال بعد هم با آن کار کنند (Admired)مقایسه میشود.
هر چقدر طول این خط کوتاهتر باشد نشان میدهد افرادی که با آن تکونولوژی کار کرده اند علاقه زیادی به استفاده از تکنولوژی در آینده ندارند. در واقع بیشتر Hype بوده تا اینکه در عمل مطلوب باشد.
تکنولوژی هایی که خط بلندتری دارند مانند
#stackoverflow2023
در نظر سنجی جدید بجای Wanted & Dreaded از مفهوم Admired و Desired استفاده شده است.
میزان علاقه افراد به استفاده از یک تکنولوژی پرسیده میشود(Desired) و با افرادی که از آن تکنولوژی در سال گذشته کار کرده اند و مایل هستند سال بعد هم با آن کار کنند (Admired)مقایسه میشود.
هر چقدر طول این خط کوتاهتر باشد نشان میدهد افرادی که با آن تکونولوژی کار کرده اند علاقه زیادی به استفاده از تکنولوژی در آینده ندارند. در واقع بیشتر Hype بوده تا اینکه در عمل مطلوب باشد.
تکنولوژی هایی که خط بلندتری دارند مانند
Rust
و #C
نشان می دهد که افراد پس از استفاده از آنها همچنان علاقمند به ادامه کار با آنها هستند و انتظارات آنها را برآورده کرده است.#stackoverflow2023
فروش ویژه تابستانه کدهک
با آغاز فصل تابستان می توانید به مدت 3 روز همه دوره های کدهک را با 25 درصد تخفیف تهیه کنید.
کد تخفیف: sum402
برای تهیه دوره ها می توانید به سایت کدهک سر بزنید.
https://codehaks.com/Shop
جهت پشتیبانی یا کسب اطلاعات بیشتر از طریق شماره 09380146555 یا آیدی @codehak در تلگرام تماس بگیرید.
با آغاز فصل تابستان می توانید به مدت 3 روز همه دوره های کدهک را با 25 درصد تخفیف تهیه کنید.
کد تخفیف: sum402
برای تهیه دوره ها می توانید به سایت کدهک سر بزنید.
https://codehaks.com/Shop
جهت پشتیبانی یا کسب اطلاعات بیشتر از طریق شماره 09380146555 یا آیدی @codehak در تلگرام تماس بگیرید.
Forwarded from کدهک
فصل گمشده در معماری تمیز
بررسی و مقایسه انواع روش های طراحی ساختار پروژه در دات نت
https://youtu.be/oP5w9eiPhEw
بررسی و مقایسه انواع روش های طراحی ساختار پروژه در دات نت
https://youtu.be/oP5w9eiPhEw
عبارت های لامبدا در سی شارپ متدهای بی نامی هستند که به جای delegate و Expression Tree قرار میگیرند و کد نویسی در سی شارپ را ساده تر می کنند.
https://youtu.be/ZqBT_kC7mOI
https://youtu.be/ZqBT_kC7mOI
بررسی ساختار درونی کالکشنها و ساخت یک کالکشن اختصاصی در دات نت.
https://www.aparat.com/v/Xr0OU
https://youtu.be/1oJ15J94dRg
https://www.aparat.com/v/Xr0OU
https://youtu.be/1oJ15J94dRg