کش در دستور docker build
دستور docker build برای ساخت ایمیجهای داکر استفاده میشود. این دستور به صورت لایهای عمل میکند و هر لایه یک تغییر در ایمیج را ایجاد میکند. این لایهها به صورت مجزا ذخیره میشوند و در صورت نیاز میتوان از آنها مجدد استفاده کرد.
برای اینکه دستور docker build سریعتر عمل کند، از قابلیت کش استفاده میشود. این قابلیت باعث میشود که لایههایی که قبلاً ساخته شدهاند، مجدداً ایجاد نشوند و تنها لایههایی که تغییر کردهاند، مجدداً ساخته شوند.
نحوه کار کش در دستور docker build
دستور docker build ابتدا فایل Dockerfile را بررسی میکند و لایههای مورد نیاز برای ساخت ایمیج را تعیین میکند. سپس برای هر لایه، یک کانتینر موقت ایجاد میکند و تغییرات مورد نظر را در آن اعمال میکند. در نهایت، محتویات کانتینر موقت را به عنوان یک لایه جدید در ایمیج ذخیره میکند.
اگر لایهای قبلاً ساخته شده باشد، دستور docker build آن لایه را از کش میخواند و مجدداً آن را نمیسازد. تنها در صورتی که تغییراتی در فایلهای لایه ایجاد شده باشد، دستور docker build آن لایه را مجدداً میسازد.
نحوه فعال کردن کش در دستور docker build
کش به صورت پیشفرض در دستور docker build فعال است. اما میتوانید با استفاده از گزینه --no-cache آن را غیرفعال کنید.
برای فعال کردن کش در دستور docker build میتوانید از گزینه --cache-from استفاده کنید. این گزینه به شما اجازه میدهد که مشخص کنید که از کدام ایمیجها برای کش استفاده شود.
نحوه پاک کردن کش در دستور docker build
برای پاک کردن کش در دستور docker build میتوانید از گزینه --cache-clean استفاده کنید. این گزینه باعث میشود که تمام لایههای کش شده پاک شوند.
مثال
فرض کنید که فایل Dockerfile زیر را دارید:
این فایل Dockerfile یک ایمیج داکر از nginx ایجاد میکند.
برای ساخت این ایمیج، دستور زیر را اجرا کنید:
این دستور ابتدا فایل Dockerfile را بررسی میکند و متوجه میشود که این ایمیج از دو لایه تشکیل شده است:
لایه اول ایمیج ubuntu:latest را به عنوان پایه استفاده میکند.
لایه دوم بسته nginx را نصب میکند و پورت 80 را برای استفاده باز میکند.
دستور docker build ابتدا لایه اول را میسازد. این لایه از قبل ساخته شده است، بنابراین دستور docker build آن را از کش میخواند.
سپس دستور docker build لایه دوم را میسازد. این لایه قبلاً ساخته نشده است، بنابراین دستور docker build آن را مجدداً میسازد.
در نهایت، دستور docker build ایمیج my-nginx را با استفاده از دو لایه ساخته شده ایجاد میکند.
اگر تغییراتی در فایل Dockerfile ایجاد کنید و دوباره دستور docker build را اجرا کنید، دستور docker build تنها لایههایی را که تغییر کردهاند مجدداً میسازد. به عنوان مثال، اگر بسته nginx را به نسخه جدیدی بهروزرسانی کنید، دستور docker build تنها لایه دوم را مجدداً میسازد.
_______
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
_______
دستور docker build برای ساخت ایمیجهای داکر استفاده میشود. این دستور به صورت لایهای عمل میکند و هر لایه یک تغییر در ایمیج را ایجاد میکند. این لایهها به صورت مجزا ذخیره میشوند و در صورت نیاز میتوان از آنها مجدد استفاده کرد.
برای اینکه دستور docker build سریعتر عمل کند، از قابلیت کش استفاده میشود. این قابلیت باعث میشود که لایههایی که قبلاً ساخته شدهاند، مجدداً ایجاد نشوند و تنها لایههایی که تغییر کردهاند، مجدداً ساخته شوند.
نحوه کار کش در دستور docker build
دستور docker build ابتدا فایل Dockerfile را بررسی میکند و لایههای مورد نیاز برای ساخت ایمیج را تعیین میکند. سپس برای هر لایه، یک کانتینر موقت ایجاد میکند و تغییرات مورد نظر را در آن اعمال میکند. در نهایت، محتویات کانتینر موقت را به عنوان یک لایه جدید در ایمیج ذخیره میکند.
اگر لایهای قبلاً ساخته شده باشد، دستور docker build آن لایه را از کش میخواند و مجدداً آن را نمیسازد. تنها در صورتی که تغییراتی در فایلهای لایه ایجاد شده باشد، دستور docker build آن لایه را مجدداً میسازد.
نحوه فعال کردن کش در دستور docker build
کش به صورت پیشفرض در دستور docker build فعال است. اما میتوانید با استفاده از گزینه --no-cache آن را غیرفعال کنید.
برای فعال کردن کش در دستور docker build میتوانید از گزینه --cache-from استفاده کنید. این گزینه به شما اجازه میدهد که مشخص کنید که از کدام ایمیجها برای کش استفاده شود.
نحوه پاک کردن کش در دستور docker build
برای پاک کردن کش در دستور docker build میتوانید از گزینه --cache-clean استفاده کنید. این گزینه باعث میشود که تمام لایههای کش شده پاک شوند.
مثال
فرض کنید که فایل Dockerfile زیر را دارید:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
این فایل Dockerfile یک ایمیج داکر از nginx ایجاد میکند.
برای ساخت این ایمیج، دستور زیر را اجرا کنید:
docker build -t my-nginx .
این دستور ابتدا فایل Dockerfile را بررسی میکند و متوجه میشود که این ایمیج از دو لایه تشکیل شده است:
لایه اول ایمیج ubuntu:latest را به عنوان پایه استفاده میکند.
لایه دوم بسته nginx را نصب میکند و پورت 80 را برای استفاده باز میکند.
دستور docker build ابتدا لایه اول را میسازد. این لایه از قبل ساخته شده است، بنابراین دستور docker build آن را از کش میخواند.
سپس دستور docker build لایه دوم را میسازد. این لایه قبلاً ساخته نشده است، بنابراین دستور docker build آن را مجدداً میسازد.
در نهایت، دستور docker build ایمیج my-nginx را با استفاده از دو لایه ساخته شده ایجاد میکند.
اگر تغییراتی در فایل Dockerfile ایجاد کنید و دوباره دستور docker build را اجرا کنید، دستور docker build تنها لایههایی را که تغییر کردهاند مجدداً میسازد. به عنوان مثال، اگر بسته nginx را به نسخه جدیدی بهروزرسانی کنید، دستور docker build تنها لایه دوم را مجدداً میسازد.
_______
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
_______
👍13❤1🔥1👏1
وضعیت WebAssembly در سال 2023 و 2024
ابزار WebAssembly (Wasm) یک فرمت اجرایی مستقل از پلتفرم است که میتواند در مرورگرها و سایر محیطهای ادغام شده اجرا شود. Wasm با هدف ایجاد یک استاندارد برای اجرای کد بومی در مرورگرها ایجاد شد و در سال 2017 بهعنوان یک استاندارد W3C پذیرفته شد.
در سال 2023، Wasm شاهد پیشرفتهای قابلتوجهی بود. چندین پیشنهاد استاندارد، مانند Tail Calls، Garbage Collection، Multiple Memories، و Relaxed SIMD، تصویب شد. چندین مورد از این ویژگیها در برخی از مرورگرها و runtimeها پیادهسازی شدهاند و کار در سایر مرورگرها نیز در حال انجام است.
همچنین شاهد افزایش پشتیبانی از زبانهای برنامهنویسی برای Wasm بودیم. زبانهایی مانند Kotlin، Dart، Flutter، و OCaml به دلیل پشتیبانی از Garbage Collection، به Wasm اضافه شدند.
پشتیبانی از ابزارها نیز همچنان بهبود مییابد. به عنوان مثال، .NET Jinterpereter، بهطور پویا ماژولهای Wasm را در حین اجرا ایجاد میکند که باعث میشود دانلودها با استفاده از رویکرد تفسیری سریعتر و اجرای با سرعت بالا با استفاده از رویکرد AOT انجام شود. به لطف WASI، تیم .NET همچنین در حال آزمایش اجرای Wasm در سرور است.
سال 2024 نیز سال هیجانانگیز دیگری برای Wasm در حال شکلگیری است. احساس میشود که استفاده از Wasm در حال افزایش است، هم به عنوان ماژولهای Wasm معمولی و هم به عنوان اجزای WASI، به ویژه با توجه به اینکه WASI Preview 2 به زودی منتشر خواهد شد.
در ادامه، برخی از پیشرفتهای کلیدی Wasm در سال 2023 را بررسی میکنیم:
ویژگی Tail Calls: Tail Calls یک ویژگی مهم برای بهبود کارایی برنامههای Wasm است. Tail Calls به برنامهها اجازه میدهد تا فراخوانیهای بازگشتی را بدون ایجاد پشته جدید انجام دهند. این میتواند به کاهش مصرف حافظه و افزایش عملکرد منجر شود.
ویژگی Garbage Collection: Garbage Collection یک ویژگی مهم برای بهبود توسعهپذیری برنامههای Wasm است. Garbage Collection به توسعهدهندگان اجازه میدهد تا بدون نیاز به مدیریت دستی حافظه، برنامههای خود را بنویسند. این میتواند به کاهش پیچیدگی کد و افزایش سرعت توسعه منجر شود.
ویژگی Multiple Memories: Multiple Memories یک ویژگی مهم برای بهبود انعطافپذیری برنامههای Wasm است. Multiple Memories به برنامهها اجازه میدهد تا چندین فضای حافظه را با ویژگیهای مختلف مدیریت کنند. این میتواند به برنامهها اجازه دهد تا از منابع بهطور کارآمدتری استفاده کنند.
ویژگی Relaxed SIMD: Relaxed SIMD یک ویژگی مهم برای بهبود عملکرد برنامههای Wasm است. Relaxed SIMD به برنامهها اجازه میدهد تا از دستورالعملهای SIMD با کارایی بیشتری استفاده کنند. این میتواند به افزایش عملکرد برنامههای محاسباتی منجر شود.
این پیشرفتها نشان میدهند که Wasm یک فناوری در حال رشد است که پتانسیل تغییر نحوه توسعه و اجرای برنامههای وب را دارد.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
_______
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
_______
ابزار WebAssembly (Wasm) یک فرمت اجرایی مستقل از پلتفرم است که میتواند در مرورگرها و سایر محیطهای ادغام شده اجرا شود. Wasm با هدف ایجاد یک استاندارد برای اجرای کد بومی در مرورگرها ایجاد شد و در سال 2017 بهعنوان یک استاندارد W3C پذیرفته شد.
در سال 2023، Wasm شاهد پیشرفتهای قابلتوجهی بود. چندین پیشنهاد استاندارد، مانند Tail Calls، Garbage Collection، Multiple Memories، و Relaxed SIMD، تصویب شد. چندین مورد از این ویژگیها در برخی از مرورگرها و runtimeها پیادهسازی شدهاند و کار در سایر مرورگرها نیز در حال انجام است.
همچنین شاهد افزایش پشتیبانی از زبانهای برنامهنویسی برای Wasm بودیم. زبانهایی مانند Kotlin، Dart، Flutter، و OCaml به دلیل پشتیبانی از Garbage Collection، به Wasm اضافه شدند.
پشتیبانی از ابزارها نیز همچنان بهبود مییابد. به عنوان مثال، .NET Jinterpereter، بهطور پویا ماژولهای Wasm را در حین اجرا ایجاد میکند که باعث میشود دانلودها با استفاده از رویکرد تفسیری سریعتر و اجرای با سرعت بالا با استفاده از رویکرد AOT انجام شود. به لطف WASI، تیم .NET همچنین در حال آزمایش اجرای Wasm در سرور است.
سال 2024 نیز سال هیجانانگیز دیگری برای Wasm در حال شکلگیری است. احساس میشود که استفاده از Wasm در حال افزایش است، هم به عنوان ماژولهای Wasm معمولی و هم به عنوان اجزای WASI، به ویژه با توجه به اینکه WASI Preview 2 به زودی منتشر خواهد شد.
در ادامه، برخی از پیشرفتهای کلیدی Wasm در سال 2023 را بررسی میکنیم:
ویژگی Tail Calls: Tail Calls یک ویژگی مهم برای بهبود کارایی برنامههای Wasm است. Tail Calls به برنامهها اجازه میدهد تا فراخوانیهای بازگشتی را بدون ایجاد پشته جدید انجام دهند. این میتواند به کاهش مصرف حافظه و افزایش عملکرد منجر شود.
ویژگی Garbage Collection: Garbage Collection یک ویژگی مهم برای بهبود توسعهپذیری برنامههای Wasm است. Garbage Collection به توسعهدهندگان اجازه میدهد تا بدون نیاز به مدیریت دستی حافظه، برنامههای خود را بنویسند. این میتواند به کاهش پیچیدگی کد و افزایش سرعت توسعه منجر شود.
ویژگی Multiple Memories: Multiple Memories یک ویژگی مهم برای بهبود انعطافپذیری برنامههای Wasm است. Multiple Memories به برنامهها اجازه میدهد تا چندین فضای حافظه را با ویژگیهای مختلف مدیریت کنند. این میتواند به برنامهها اجازه دهد تا از منابع بهطور کارآمدتری استفاده کنند.
ویژگی Relaxed SIMD: Relaxed SIMD یک ویژگی مهم برای بهبود عملکرد برنامههای Wasm است. Relaxed SIMD به برنامهها اجازه میدهد تا از دستورالعملهای SIMD با کارایی بیشتری استفاده کنند. این میتواند به افزایش عملکرد برنامههای محاسباتی منجر شود.
این پیشرفتها نشان میدهند که Wasm یک فناوری در حال رشد است که پتانسیل تغییر نحوه توسعه و اجرای برنامههای وب را دارد.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
_______
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
_______
Uno Platform
The State of WebAssembly – 2023 and 2024
Explore the 2023 Milestones and 2024 Predictions for WebAssembly in Our annual wasm Article - Get insights into the latest developments and future trends in WebAssembly, including browser support updates, new features like Tail Calls, Garbage Collection,…
👍16❤6🔥2
پروژه ای به اسم GitHub Arctic Code Vault برای نسل آینده
پلتفرم GitHub پلتفرمی بزرگ برای برنامههای منبع باز است که میلیونها توسعهدهنده و پروژه را در بر میگیرد. اما این برنامهها چقدر ماندگار هستند؟ آیا میتوانیم از آنها در آینده دور استفاده کنیم؟ برای پاسخ به این سوال، GitHub یک برنامه بایگانیسازی را راهاندازی کرده است که نام آن GitHub Archive Program است. این برنامه هدف دارد که تمام برنامههای منبع باز فعال را در GitHub در یک محل امن و ماندگار ذخیره کند.
یکی از بخشهای این برنامه، GitHub Arctic Code Vault نام دارد. این بخش مسئول ذخیرهسازی برنامههای منبع باز در یک انبار داده در Arctic World Archive (AWA) است. AWA تسهیلات بایگانیسازی بسیار بلندمدت است که ۲۵۰ متر عمیق در سرمای ماندگار یک کوه قطبی قرار دارد. این انبار داده در یک معدن زغالسنگ تعطیل شده در آرشیپل سوالبارد واقع است، که نزدیکتر به قطب شمال از دایره قطبی است.
پلتفرم GitHub در تاریخ ۲/۲/۲۰۲۰ یک عکس فوری از هر برنامه منبع باز فعال در GitHub گرفت و آن را بر روی ۱۸۶ رول فیلم سخت شده ذخیره کرد. این فیلمها میتوانند تا ۱۰۰۰ سال در شرایط سرد و خشک نگه داشته شوند. هر رول فیلم شامل یک راهنمایی برای خواندن دادهها، یک فهرست از برنامهها و یک کد QR برای دسترسی به آنها در وب است. همچنین GitHub یک نسخه دیجیتال از این برنامهها را در یک سرور در نروژ نگه داشته است.
پروژه GitHub Arctic Code Vault یک تلاش بیسابقه برای حفظ میراث برنامهنویسی است. این پروژه نشان میدهد که چگونه میتوانیم از تکنولوژی برای محافظت از دانش و فرهنگ استفاده کنیم. این پروژه همچنین یک پیام امیدوارکننده به نسلهای آینده میفرستد که ما به آنها اهمیت میدهیم و میخواهیم آنها از برنامههای ما بهرهمند شوند.
_______
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
_______
پلتفرم GitHub پلتفرمی بزرگ برای برنامههای منبع باز است که میلیونها توسعهدهنده و پروژه را در بر میگیرد. اما این برنامهها چقدر ماندگار هستند؟ آیا میتوانیم از آنها در آینده دور استفاده کنیم؟ برای پاسخ به این سوال، GitHub یک برنامه بایگانیسازی را راهاندازی کرده است که نام آن GitHub Archive Program است. این برنامه هدف دارد که تمام برنامههای منبع باز فعال را در GitHub در یک محل امن و ماندگار ذخیره کند.
یکی از بخشهای این برنامه، GitHub Arctic Code Vault نام دارد. این بخش مسئول ذخیرهسازی برنامههای منبع باز در یک انبار داده در Arctic World Archive (AWA) است. AWA تسهیلات بایگانیسازی بسیار بلندمدت است که ۲۵۰ متر عمیق در سرمای ماندگار یک کوه قطبی قرار دارد. این انبار داده در یک معدن زغالسنگ تعطیل شده در آرشیپل سوالبارد واقع است، که نزدیکتر به قطب شمال از دایره قطبی است.
پلتفرم GitHub در تاریخ ۲/۲/۲۰۲۰ یک عکس فوری از هر برنامه منبع باز فعال در GitHub گرفت و آن را بر روی ۱۸۶ رول فیلم سخت شده ذخیره کرد. این فیلمها میتوانند تا ۱۰۰۰ سال در شرایط سرد و خشک نگه داشته شوند. هر رول فیلم شامل یک راهنمایی برای خواندن دادهها، یک فهرست از برنامهها و یک کد QR برای دسترسی به آنها در وب است. همچنین GitHub یک نسخه دیجیتال از این برنامهها را در یک سرور در نروژ نگه داشته است.
پروژه GitHub Arctic Code Vault یک تلاش بیسابقه برای حفظ میراث برنامهنویسی است. این پروژه نشان میدهد که چگونه میتوانیم از تکنولوژی برای محافظت از دانش و فرهنگ استفاده کنیم. این پروژه همچنین یک پیام امیدوارکننده به نسلهای آینده میفرستد که ما به آنها اهمیت میدهیم و میخواهیم آنها از برنامههای ما بهرهمند شوند.
_______
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
_______
👍10❤3🔥1
شروع work-item ها از یک شماره خاص
فرض کنید به هر دلیلی نیاز دارید تا شماره work-item های روی Azure DevOps Board تان از یک عدد خاص (مثلا ۱۰۰۰) شروع کنید.
قبل از ادامه مطالعه این پست فکر کنید برای انجام این کار چه ایدههایی به ذهن میرسد!
یکی از ایدهها این است که به صورت دستی هزار تا work-item ایجاد و حذف کنیم! خب طبیعتا زمان زیادی طول صرف میشود.
راه بهتر این است که همین کار ایجاد و حذف را انجام دهیم ولی نه به صورت دستی، بلکه با یه اسکریپت.
مراحل کار:
- نصب Azure Cli: لینک نصب
- اضافه کردن امکانات Azure DevOps به Azure Cli:
- داخل اکانت خود در قسمت Azure Devops چرخ دنده بالا سمت راست که مربوط به تنظیمات اکانت میشود را بزنید و از آنجا Personal account tokens را انتخاب و یک Token ایجاد کنید (دسترسیهای لازم رو به Token مورد نظر بدهید).
توکن را کپی کنید در مرحله بعد به آن نیاز خواهید داشت!
- لاگین:
- یک فایل با اسم s.ps1 ایجاد کنید و محتوای زیر را در آن قرار دهید:
- مقادیر [ORGANIZATIONURL] و [PROJECTNAME] را تغییر دهید.
- وارد مسیر فایلی که ایجاد کردهاید شده و آن را ران کنید:
منتظر بمانید تا کار اسکریپت تمام شود. بعد از این مرحله work-item هایی که ایجاد میکنید از همان عدد خاصی که میخواهید شروع خواهد شد.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#حامد_حاجیلو (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
__________
فرض کنید به هر دلیلی نیاز دارید تا شماره work-item های روی Azure DevOps Board تان از یک عدد خاص (مثلا ۱۰۰۰) شروع کنید.
قبل از ادامه مطالعه این پست فکر کنید برای انجام این کار چه ایدههایی به ذهن میرسد!
یکی از ایدهها این است که به صورت دستی هزار تا work-item ایجاد و حذف کنیم! خب طبیعتا زمان زیادی طول صرف میشود.
راه بهتر این است که همین کار ایجاد و حذف را انجام دهیم ولی نه به صورت دستی، بلکه با یه اسکریپت.
مراحل کار:
- نصب Azure Cli: لینک نصب
- اضافه کردن امکانات Azure DevOps به Azure Cli:
az extension add --name azure-devops
- داخل اکانت خود در قسمت Azure Devops چرخ دنده بالا سمت راست که مربوط به تنظیمات اکانت میشود را بزنید و از آنجا Personal account tokens را انتخاب و یک Token ایجاد کنید (دسترسیهای لازم رو به Token مورد نظر بدهید).
توکن را کپی کنید در مرحله بعد به آن نیاز خواهید داشت!
- لاگین:
az devops login
- یک فایل با اسم s.ps1 ایجاد کنید و محتوای زیر را در آن قرار دهید:
$i = 1
while ($i -lt 1000)
{
az boards work-item create --noscript dummy$i --type "Bug" --org [ORGANIZATIONURL] --project [PROJECTNAME]
az boards work-item delete --id $i --org [ORGANIZATIONURL] --project [PROJECTNAME] --yes
$i++
}
- مقادیر [ORGANIZATIONURL] و [PROJECTNAME] را تغییر دهید.
- وارد مسیر فایلی که ایجاد کردهاید شده و آن را ران کنید:
./s.ps1
منتظر بمانید تا کار اسکریپت تمام شود. بعد از این مرحله work-item هایی که ایجاد میکنید از همان عدد خاصی که میخواهید شروع خواهد شد.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#حامد_حاجیلو (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
__________
Docs
Install the Azure CLI on Windows
To install the Azure CLI on Windows, you must use PowerShell, or an MSI installer, which gives you access to the CLI through the Windows Command Prompt (CMD).
👍7🔥3❤2👏1
ابزار Dev Tunnel: دنیای توسعه نرمافزار را با Visual Studio 2022 دگرگون کنید
در دنیای توسعه نرمافزار که هر روز با نوآوریهای جدید روبهرو هستیم، Visual Studio 2022 با معرفی ویژگی Dev Tunnel تجربهای نوین را برای توسعهدهندگان .NET به ارمغان آورده است. این قابلیت، امکان دسترسی به برنامههای در حال توسعه از هر نقطهای از اینترنت را ممکن میسازد و مرزهای میان توسعه local و آزمایشهای واقعی را محو میکند.
ابزار Dev Tunnel چیست؟
ابزار Dev Tunnel، یک پل امن میان محیط توسعه local شما و دنیای بیرون است. با این قابلیت، میتوانید برنامههای .NET خود را که بر روی دستگاه خودتان در حال اجرا هستند، بدون نیاز به استقرار روی سرورهای عمومی، در دسترس قرار دهید.
چرا Dev Tunnel مهم است؟
- تسریع در فرآیند تست: دسترسی فوری به برنامهها از هر دستگاهی، فرآیند تست و دریافت بازخورد را سریعتر میکند.
- تست سازگاری دستگاهها: امکان تست برنامه روی دستگاههای مختلف بدون پیچیدگیهای استقرار.
- همکاری بهبود یافته: تیمها میتوانند به صورت زنده روی پروژهها کار کرده و مشکلات را به صورت مشترک حل کنند.
- امنیت: ارتباطات از طریق Dev Tunnel رمزنگاری شده و امن است.
شروع کار با Dev Tunnel
۱. نصب و بهروزرسانی Visual Studio 2022
برای استفاده بهینه از قابلیت Dev Tunnel در توسعه برنامههای .NET، نیاز است که Visual Studio 2022 نسخه 17.6 یا بالاتر را بر روی سیستم خود نصب کنید.
۲. ایجاد یا باز کردن پروژه وب با .NET
پروژه .NET خود را در Visual Studio ایجاد کنید یا اگر پروژهای قبلاً دارید، آن را باز کنید.
۳. راهاندازی Dev Tunnel
در نوار بالا Visual Studio، قابلیت دیباگ برنامه وجود دارد و در کنار این گزینه یک فلش رو به پایین قرار دارد، زمانی که بر روی آن کلیک کنیم گزینههای بیشتری را برای دیباگ برنامه خود مشاهده میکنیم، یکی از این گزینهها Dev Tunnels است. روی این گزینه کلیک کرده و یک Dev Tunnel جدید ایجاد میکنیم. این گزینه، Dev Tunnel را فعال میسازد و به شما امکان میدهد تا برنامه خود را در محیطی local اجرا کرده و آن را از طریق اینترنت قابل دسترس نمایید.
۴. بهدست آوردن URL دسترسی
پس از فعالسازی Dev Tunnel و اجرا گرفتن برنامه، یک URL منحصربهفرد برای پروژه شما تولید میشود. این URL را میتوانید با دیگران به اشتراک بگذارید یا برای تست برنامه خود روی دستگاههای مختلف استفاده کنید.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
______
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
در دنیای توسعه نرمافزار که هر روز با نوآوریهای جدید روبهرو هستیم، Visual Studio 2022 با معرفی ویژگی Dev Tunnel تجربهای نوین را برای توسعهدهندگان .NET به ارمغان آورده است. این قابلیت، امکان دسترسی به برنامههای در حال توسعه از هر نقطهای از اینترنت را ممکن میسازد و مرزهای میان توسعه local و آزمایشهای واقعی را محو میکند.
ابزار Dev Tunnel چیست؟
ابزار Dev Tunnel، یک پل امن میان محیط توسعه local شما و دنیای بیرون است. با این قابلیت، میتوانید برنامههای .NET خود را که بر روی دستگاه خودتان در حال اجرا هستند، بدون نیاز به استقرار روی سرورهای عمومی، در دسترس قرار دهید.
چرا Dev Tunnel مهم است؟
- تسریع در فرآیند تست: دسترسی فوری به برنامهها از هر دستگاهی، فرآیند تست و دریافت بازخورد را سریعتر میکند.
- تست سازگاری دستگاهها: امکان تست برنامه روی دستگاههای مختلف بدون پیچیدگیهای استقرار.
- همکاری بهبود یافته: تیمها میتوانند به صورت زنده روی پروژهها کار کرده و مشکلات را به صورت مشترک حل کنند.
- امنیت: ارتباطات از طریق Dev Tunnel رمزنگاری شده و امن است.
شروع کار با Dev Tunnel
۱. نصب و بهروزرسانی Visual Studio 2022
برای استفاده بهینه از قابلیت Dev Tunnel در توسعه برنامههای .NET، نیاز است که Visual Studio 2022 نسخه 17.6 یا بالاتر را بر روی سیستم خود نصب کنید.
۲. ایجاد یا باز کردن پروژه وب با .NET
پروژه .NET خود را در Visual Studio ایجاد کنید یا اگر پروژهای قبلاً دارید، آن را باز کنید.
۳. راهاندازی Dev Tunnel
در نوار بالا Visual Studio، قابلیت دیباگ برنامه وجود دارد و در کنار این گزینه یک فلش رو به پایین قرار دارد، زمانی که بر روی آن کلیک کنیم گزینههای بیشتری را برای دیباگ برنامه خود مشاهده میکنیم، یکی از این گزینهها Dev Tunnels است. روی این گزینه کلیک کرده و یک Dev Tunnel جدید ایجاد میکنیم. این گزینه، Dev Tunnel را فعال میسازد و به شما امکان میدهد تا برنامه خود را در محیطی local اجرا کرده و آن را از طریق اینترنت قابل دسترس نمایید.
۴. بهدست آوردن URL دسترسی
پس از فعالسازی Dev Tunnel و اجرا گرفتن برنامه، یک URL منحصربهفرد برای پروژه شما تولید میشود. این URL را میتوانید با دیگران به اشتراک بگذارید یا برای تست برنامه خود روی دستگاههای مختلف استفاده کنید.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
______
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
Docs
Dev tunnels in Visual Studio 2022
Learn how to use dev tunnels in Visual Studio with ASPNET Core apps.
👍24❤3🔥2👏1
استفاده از Rate Limiting که «یک باید» برای API میباشد!
تعریف Rate Limiting:
یک Rate Limiting تکنیکی است که کنترل میکند کاربر یا مشتری میتواند در یک دوره معین چند درخواست به یک API ارسال کند. برای مثال، ممکن است کاربر را به 100 درخواست در ساعت یا 10 درخواست در دقیقه محدود کنید. هدف ازRate Limiting جلوگیری از سوء استفاده، اضافه بار یا سوء استفاده از API شما است.
چرا باید از Rate Limiting در API خود استفاده کنید؟
- بار روی سرور خود را کاهش دهید.
- صرفه جویی در پهنای باند و منابع.
- جلوگیری از استفاده ناعادلانه.
اصول پیاده سازی Rate Limiting
- استراتژی محدود کردن نرخ را انتخاب کنید: استراتژی Rate Limiting مناسب را بر اساس الزامات و محدودیت های API خود تعیین کنید.
- پیاده سازی Middleware: ایجاد میان افزار برای رهگیری درخواستهای دریافتی و بررسی محدودیتهای نرخ تعریف شده.
- ردیابی میزان مصرف: برای اعمال محدودیتهای نرخ به طور موثر، سابقه استفاده را برای هر مشتری، چه در حافظه و چه با استفاده از یک ذخیرهسازی دائمی داده، حفظ کنید.
- کنترل خطا: زمانی که مشتری از حد مجاز فراتر رفت، با یک کد وضعیت HTTP مناسب پاسخ دهید (مثلاً 429 درخواست خیلی زیاد) و اطلاعاتی را در مورد زمانی که مشتری میتواند درخواستهای اضافی ارسال کند، درج کنید.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
تعریف Rate Limiting:
یک Rate Limiting تکنیکی است که کنترل میکند کاربر یا مشتری میتواند در یک دوره معین چند درخواست به یک API ارسال کند. برای مثال، ممکن است کاربر را به 100 درخواست در ساعت یا 10 درخواست در دقیقه محدود کنید. هدف ازRate Limiting جلوگیری از سوء استفاده، اضافه بار یا سوء استفاده از API شما است.
چرا باید از Rate Limiting در API خود استفاده کنید؟
- بار روی سرور خود را کاهش دهید.
- صرفه جویی در پهنای باند و منابع.
- جلوگیری از استفاده ناعادلانه.
اصول پیاده سازی Rate Limiting
- استراتژی محدود کردن نرخ را انتخاب کنید: استراتژی Rate Limiting مناسب را بر اساس الزامات و محدودیت های API خود تعیین کنید.
- پیاده سازی Middleware: ایجاد میان افزار برای رهگیری درخواستهای دریافتی و بررسی محدودیتهای نرخ تعریف شده.
- ردیابی میزان مصرف: برای اعمال محدودیتهای نرخ به طور موثر، سابقه استفاده را برای هر مشتری، چه در حافظه و چه با استفاده از یک ذخیرهسازی دائمی داده، حفظ کنید.
- کنترل خطا: زمانی که مشتری از حد مجاز فراتر رفت، با یک کد وضعیت HTTP مناسب پاسخ دهید (مثلاً 429 درخواست خیلی زیاد) و اطلاعاتی را در مورد زمانی که مشتری میتواند درخواستهای اضافی ارسال کند، درج کنید.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
DEV Community
Rate Limiting: A Must-Have for Your API ⌛
If you are building or using an API, you might have heard of rate limiting. But what is it, and why...
👍29❤5
آشنایی با VNET و NIC
معرفی VNET 🤔
یک VNET یا Virtual Network در اصل نمایشی از شبکه شما در فضای ابری است. این یک جداسازی منطقی از ابر است که میتوانید آن را در یک محیط ابر عمومی ارائه دهید. آن را به عنوان فضای شخصی خود در دنیای ابری در نظر بگیرید که در آن میتوانید بلوکهای آدرس IP، تنظیمات DNS، سیاستهای امنیتی و جداول مسیریابی را کنترل کنید.
معرفی NIC 🤔
یک NIC یا Network Interface Controller جزئی سخت افزاری یا نرم افزاری است که کامپیوتر یا ماشین مجازی را به شبکه متصل میکند. در زمینه VNET ها، یک NIC نقطه تماس بین VM شما و VNET است که در آن قرار دارد.
موارد استفاده از VNET و NIC 🛠
- در واقع VNET برای ایجاد یک محیط امن و scalable پذیر برای اجرای برنامهها و سرویسهای شما استفاده میشود. این موارد به منابعی مانند VM اجازه میدهند که به طور ایمن با یکدیگر، اینترنت یا شبکههای داخلی ارتباط برقرار کنند.
- یک NIC در VNET ها استفاده میشوند تا VM ها را قادر به اتصال به شبکههای مختلف و ارتباط با منابع خارجی کنند.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
معرفی VNET 🤔
یک VNET یا Virtual Network در اصل نمایشی از شبکه شما در فضای ابری است. این یک جداسازی منطقی از ابر است که میتوانید آن را در یک محیط ابر عمومی ارائه دهید. آن را به عنوان فضای شخصی خود در دنیای ابری در نظر بگیرید که در آن میتوانید بلوکهای آدرس IP، تنظیمات DNS، سیاستهای امنیتی و جداول مسیریابی را کنترل کنید.
معرفی NIC 🤔
یک NIC یا Network Interface Controller جزئی سخت افزاری یا نرم افزاری است که کامپیوتر یا ماشین مجازی را به شبکه متصل میکند. در زمینه VNET ها، یک NIC نقطه تماس بین VM شما و VNET است که در آن قرار دارد.
موارد استفاده از VNET و NIC 🛠
- در واقع VNET برای ایجاد یک محیط امن و scalable پذیر برای اجرای برنامهها و سرویسهای شما استفاده میشود. این موارد به منابعی مانند VM اجازه میدهند که به طور ایمن با یکدیگر، اینترنت یا شبکههای داخلی ارتباط برقرار کنند.
- یک NIC در VNET ها استفاده میشوند تا VM ها را قادر به اتصال به شبکههای مختلف و ارتباط با منابع خارجی کنند.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
DEV Community
Understanding VNET and NIC 🌐💻
Summary In this post, we'll dive into the world of networking within cloud environments,...
👍4
💥 استفاده از Azure Locks: ایمن کردن منابع ابری شما
- آشنایی با قفل های Azure و نحوه ایمن سازی Azure Storage Account 🔒
سرویس Azure Locks یک ویژگی ارزشمند ارائه شده توسط Azure است که برای حفظ یکپارچگی منابع و جلوگیری از تغییر یا حذف ناخواسته استفاده میشود. این ویژگی را میتوان برای منابعی از جمله Azure Storage Accounts اعمال کرد که شامل دو نوع قفل اصلی میشود:
- نوع CanNotDelete: این قفل به کاربران مجاز اجازه میدهد تا یک منبع را بخوانند و تغییر دهند اما از حذف منبع جلوگیری میکند.
- نوع ReadOnly: این قفل به کاربران مجاز اجازه میدهد تا یک منبع را بدون امکان حذف یا بهروزرسانی آن بخوانند.
🛡 این قفل ها ابزارهای ضروری مدیران برای محافظت از منابع Azure خود هستند.
📊 ملاحظات قبل از اعمال قفل
قبل از تنظیم قفلها، مهم است که دامنه و مفاهیم آنها را درک کنید:
- قفلها برای عملیات control plane اعمال میشوند، نه عملیات data plane.
- وراثت قفل به این معنی است که هر قفلی که در سطح والدین اعمال شود به همه منابع فرزند انتقال مییابد.
- قفل با بیشترین محدوده در زنجیره وراثت اولویت بیشتری دارد.
قفلهای Azure بخش مهمی از مدیریت و ایمن سازی منابع Azure شما هستند. با درک انواع قفلهای موجود و نحوه اعمال آنها، می توانید اطمینان حاصل کنید که حسابهای ذخیره سازی Azure شما در برابر تغییرات ناخواسته محافظت میشوند.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
- آشنایی با قفل های Azure و نحوه ایمن سازی Azure Storage Account 🔒
سرویس Azure Locks یک ویژگی ارزشمند ارائه شده توسط Azure است که برای حفظ یکپارچگی منابع و جلوگیری از تغییر یا حذف ناخواسته استفاده میشود. این ویژگی را میتوان برای منابعی از جمله Azure Storage Accounts اعمال کرد که شامل دو نوع قفل اصلی میشود:
- نوع CanNotDelete: این قفل به کاربران مجاز اجازه میدهد تا یک منبع را بخوانند و تغییر دهند اما از حذف منبع جلوگیری میکند.
- نوع ReadOnly: این قفل به کاربران مجاز اجازه میدهد تا یک منبع را بدون امکان حذف یا بهروزرسانی آن بخوانند.
🛡 این قفل ها ابزارهای ضروری مدیران برای محافظت از منابع Azure خود هستند.
📊 ملاحظات قبل از اعمال قفل
قبل از تنظیم قفلها، مهم است که دامنه و مفاهیم آنها را درک کنید:
- قفلها برای عملیات control plane اعمال میشوند، نه عملیات data plane.
- وراثت قفل به این معنی است که هر قفلی که در سطح والدین اعمال شود به همه منابع فرزند انتقال مییابد.
- قفل با بیشترین محدوده در زنجیره وراثت اولویت بیشتری دارد.
قفلهای Azure بخش مهمی از مدیریت و ایمن سازی منابع Azure شما هستند. با درک انواع قفلهای موجود و نحوه اعمال آنها، می توانید اطمینان حاصل کنید که حسابهای ذخیره سازی Azure شما در برابر تغییرات ناخواسته محافظت میشوند.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
DEV Community
Azure Locks: Securing Your Cloud Resources
Understanding Azure Locks and How to Secure Your Azure Storage Account 🔒 Azure Locks is...
👍4
Forwarded from Software Philosophy
اثری که Body language بر خود فرد میگذارد، اگر بیشتر از اثری که بر مخاطب میگذارد نباشد، کمتر هم نیست.
استاد دانشگاه هاروارد Amy Cuddy تحقیقی انجام داده است و در آن به این نتیجه رسیده است که فرم و حالت بدن میتواند بر «ذهن» و «فیزیولوژی» اثر گذارد، بدین صورت که اگر شما ۲ دقیقه ژست یک فرد پیروز را به خود بگیرید میزان تستوسترون افزایش و کورتیزول کاهش میابد. میزان این هورمونها اثر مستقیمی بر مغر گذاشته و میتواند باعث افزایش قدرت ریسکپذیری و موفقیت شود.
https://www.ted.com/talks/amy_cuddy_your_body_language_shapes_who_you_are
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilosophy
___
استاد دانشگاه هاروارد Amy Cuddy تحقیقی انجام داده است و در آن به این نتیجه رسیده است که فرم و حالت بدن میتواند بر «ذهن» و «فیزیولوژی» اثر گذارد، بدین صورت که اگر شما ۲ دقیقه ژست یک فرد پیروز را به خود بگیرید میزان تستوسترون افزایش و کورتیزول کاهش میابد. میزان این هورمونها اثر مستقیمی بر مغر گذاشته و میتواند باعث افزایش قدرت ریسکپذیری و موفقیت شود.
https://www.ted.com/talks/amy_cuddy_your_body_language_shapes_who_you_are
#افشین_علیزاده
لینکدین:
https://ir.linkedin.com/in/afshinalizadehbehjati
کانال تلگرام:
@SoftwarePhilosophy
___
👍11🔥8❤5
Forwarded from Software Philosophy
EXACT INSTRUCTIONS
پیشنهاد میکنم اول فیلم رو ببنید بعد بقیه مطلب رو بخونید.
https://www.youtube.com/watch?reload=9&v=Ct-lOOUqmyY
خیلی جالب بود و در نگاه اول هیچ ربطی به نرمافزار و دنیای نرمافزار نداره. ولی وقتی یه خورده عمیق بشیم خیلی جالب میشه.
یکی از مهمترین کارهایی که باید توی شرکتهای نرمافزاری به درستی انجام بشه، داکیومنت کردن است. (داکیومنت به معنی کامنت گذاشتن داخل کد اصلا منظورم نیست، کد باید خودش به قدری خوانا باشه که نیاز به کامنت نداشته باشه یا به اصطلاح Self-Document باشه.)
داکیومنت کردن رو نباید به عنوان یه کار اضافه دید و سرسری انجامش داد.
تمام مراحل انتقال دانش باید به وسیله داکیومنت انجام بشه. نه به صورت نقل قول و سینه به سینه.
اتفاقی که برای خودم افتاد رو براتون تعریف میکنم:
در شرکت کرانه ادمین TFS بودم، و یکی از کارهایی که باید انجام میدادم و داکیومنت میکردم Disaster Recovery خود TFSبود. ۱ روز کامل وقت گذاشتم و Recovery رو انجام دادم و داکیومنتش رو نوشتم، کاری که مدیرمون کرد خیلی خوب بود. داکیومنت رو داد به یکی دیگه گفت TFS رو بیار بالا. حدس میزنید چی شد؟ نتونست، چون داکیومنتی که نوشته بودم به درد خودم میخورد.
و حرفی که به من زد این بود «داکیومنت باید طوری باشه که اگه دست یه نفر رو از توی خیابون گرفتم و این داکیومنت رو بهش دادم بتونه TFS رو بیاره بالا». بعد از ۳ بار داکیومنت نوشتن بالاخره موفق شدم داکیومنتی بنویستم که به هر کی بدمش فقط با Back up دیتا بیس بتونه TFS رو بالا بیاره.
به نظر من داکیومنت باید طوری باشه تا تمام کسانی که میخوننش، همشون یک برداشت رو داشته باشن، داکیومنت نباید وابسته به Context ذهن ما باشه.
خوشحال میشم نظر شما رو هم بدونم.
#افشین_علیزاده (http://ow.ly/l7cA30m3OQ9)
کانال تلگرام:
@SoftwarePhilosophy
___
پیشنهاد میکنم اول فیلم رو ببنید بعد بقیه مطلب رو بخونید.
https://www.youtube.com/watch?reload=9&v=Ct-lOOUqmyY
خیلی جالب بود و در نگاه اول هیچ ربطی به نرمافزار و دنیای نرمافزار نداره. ولی وقتی یه خورده عمیق بشیم خیلی جالب میشه.
یکی از مهمترین کارهایی که باید توی شرکتهای نرمافزاری به درستی انجام بشه، داکیومنت کردن است. (داکیومنت به معنی کامنت گذاشتن داخل کد اصلا منظورم نیست، کد باید خودش به قدری خوانا باشه که نیاز به کامنت نداشته باشه یا به اصطلاح Self-Document باشه.)
داکیومنت کردن رو نباید به عنوان یه کار اضافه دید و سرسری انجامش داد.
تمام مراحل انتقال دانش باید به وسیله داکیومنت انجام بشه. نه به صورت نقل قول و سینه به سینه.
اتفاقی که برای خودم افتاد رو براتون تعریف میکنم:
در شرکت کرانه ادمین TFS بودم، و یکی از کارهایی که باید انجام میدادم و داکیومنت میکردم Disaster Recovery خود TFSبود. ۱ روز کامل وقت گذاشتم و Recovery رو انجام دادم و داکیومنتش رو نوشتم، کاری که مدیرمون کرد خیلی خوب بود. داکیومنت رو داد به یکی دیگه گفت TFS رو بیار بالا. حدس میزنید چی شد؟ نتونست، چون داکیومنتی که نوشته بودم به درد خودم میخورد.
و حرفی که به من زد این بود «داکیومنت باید طوری باشه که اگه دست یه نفر رو از توی خیابون گرفتم و این داکیومنت رو بهش دادم بتونه TFS رو بیاره بالا». بعد از ۳ بار داکیومنت نوشتن بالاخره موفق شدم داکیومنتی بنویستم که به هر کی بدمش فقط با Back up دیتا بیس بتونه TFS رو بالا بیاره.
به نظر من داکیومنت باید طوری باشه تا تمام کسانی که میخوننش، همشون یک برداشت رو داشته باشن، داکیومنت نباید وابسته به Context ذهن ما باشه.
خوشحال میشم نظر شما رو هم بدونم.
#افشین_علیزاده (http://ow.ly/l7cA30m3OQ9)
کانال تلگرام:
@SoftwarePhilosophy
___
👍21❤9👎1🔥1
Software Philosophy
EXACT INSTRUCTIONS پیشنهاد میکنم اول فیلم رو ببنید بعد بقیه مطلب رو بخونید. https://www.youtube.com/watch?reload=9&v=Ct-lOOUqmyY خیلی جالب بود و در نگاه اول هیچ ربطی به نرمافزار و دنیای نرمافزار نداره. ولی وقتی یه خورده عمیق بشیم خیلی جالب میشه. یکی…
سلام
ویدئو رو میتونید از طریق لینک زیر ببینید:
https://www.youtube.com/watch?v=FN2RM-CHkuI
کانال تلگرام:
@SoftwarePhilosophy
___
ویدئو رو میتونید از طریق لینک زیر ببینید:
https://www.youtube.com/watch?v=FN2RM-CHkuI
کانال تلگرام:
@SoftwarePhilosophy
___
YouTube
Exact Instructions Challenge PB&J Classroom Friendly | Josh Darnit
Exact Instructions PB&J Educators Version - We've had many requests from teachers asking for a "classroom friendlier" version of this video. We are honored to be part of messing with your students! 😂
We love how much teachers and computer programmers (and…
We love how much teachers and computer programmers (and…
دات نت و معماری Runtime دات نت
از کد تا Intermediate Language (IL) 📝➡️🔄
وقتی کد C# را مینویسید، کامپایلر Roslyn وارد عمل میشود تا آن را به (IL) تبدیل کند. این مرحله که به عنوان compile time شناخته میشود، زمانی است که کد شما از فرم قابل خواندن توسط انسان به IL تبدیل میشود. اما چرا IL؟ چرا مستقیماً در کد اسمبلی کامپایل نمیشود؟ 🤔
جادو در انعطاف پذیری DotNet Framework نهفته است. DotNet به گونهای طراحی شده است که پلتفرم آگنوستیک باشد، میتواند در محیطهای مختلفی مانند ویندوز، مک و اندروید اجرا شود. هر محیط دارای Common Language Runtime (CLR) خود است که برای آن پلتفرم خاص بهینه شده است. این بدان معنی است که کد IL شما میتواند در سیستمهای مختلف اجرا شود و یک معماری زمان اجرا همه کاره و قدرتمند ارائه دهد. 🌍✨
نقش (CLR) ⏳
در زمان اجرا، CLR کار را به دست میگیرد. این بخش اجرای کد IL است. در CLR، یک جزء حیاتی به نام کامپایلر Just-In-Time (JIT) وجود دارد که IL را درست قبل از اجرا، به کد ماشین اصلی کامپایل میکند و کارایی و سرعت را تضمین میکند. 🚀
مشخصات Common Language Specification (CLS) 🔄
بخش CLS قوانینی را برای نحوه تعامل زبانهای مختلف تعیین میکند. به عنوان مثال، در VB.NET، نیازی به پایان دادن دستورات با ; ندارید، در حالی که در C# اجباری است.
نقش Common Type Specification (CTS) 📋
بخش CTS نحوه اعلان و استفاده از انواع داده را تعریف میکند. به عنوان مثال، C# از int استفاده میکند در حالی که VB.NET از Integer استفاده میکند، اما در انتها، هر دو به عنوان Int32 نشان داده میشوند که این بخش توسط CTS تعیین میشود.
نقش The Base Class Library (BCL) 📚
در کنار CLR، کتابخانه کلاس پایه (BCL) قرار دارد که کتابخانههای ضروری مانند List و Dictionary را در خود جای داده است. BCL مؤلفههای اساسی را ارائه میدهد که توسعهدهندگان هر روز از آن ها استفاده میکنند و ثبات و قابلیت اطمینان را در پلتفرمهای مختلف تضمین میکند. 🏛
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه و فیلم را در یوتیوب تماشا کنید. 🎦
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
از کد تا Intermediate Language (IL) 📝➡️🔄
وقتی کد C# را مینویسید، کامپایلر Roslyn وارد عمل میشود تا آن را به (IL) تبدیل کند. این مرحله که به عنوان compile time شناخته میشود، زمانی است که کد شما از فرم قابل خواندن توسط انسان به IL تبدیل میشود. اما چرا IL؟ چرا مستقیماً در کد اسمبلی کامپایل نمیشود؟ 🤔
جادو در انعطاف پذیری DotNet Framework نهفته است. DotNet به گونهای طراحی شده است که پلتفرم آگنوستیک باشد، میتواند در محیطهای مختلفی مانند ویندوز، مک و اندروید اجرا شود. هر محیط دارای Common Language Runtime (CLR) خود است که برای آن پلتفرم خاص بهینه شده است. این بدان معنی است که کد IL شما میتواند در سیستمهای مختلف اجرا شود و یک معماری زمان اجرا همه کاره و قدرتمند ارائه دهد. 🌍✨
نقش (CLR) ⏳
در زمان اجرا، CLR کار را به دست میگیرد. این بخش اجرای کد IL است. در CLR، یک جزء حیاتی به نام کامپایلر Just-In-Time (JIT) وجود دارد که IL را درست قبل از اجرا، به کد ماشین اصلی کامپایل میکند و کارایی و سرعت را تضمین میکند. 🚀
مشخصات Common Language Specification (CLS) 🔄
بخش CLS قوانینی را برای نحوه تعامل زبانهای مختلف تعیین میکند. به عنوان مثال، در VB.NET، نیازی به پایان دادن دستورات با ; ندارید، در حالی که در C# اجباری است.
نقش Common Type Specification (CTS) 📋
بخش CTS نحوه اعلان و استفاده از انواع داده را تعریف میکند. به عنوان مثال، C# از int استفاده میکند در حالی که VB.NET از Integer استفاده میکند، اما در انتها، هر دو به عنوان Int32 نشان داده میشوند که این بخش توسط CTS تعیین میشود.
نقش The Base Class Library (BCL) 📚
در کنار CLR، کتابخانه کلاس پایه (BCL) قرار دارد که کتابخانههای ضروری مانند List و Dictionary را در خود جای داده است. BCL مؤلفههای اساسی را ارائه میدهد که توسعهدهندگان هر روز از آن ها استفاده میکنند و ثبات و قابلیت اطمینان را در پلتفرمهای مختلف تضمین میکند. 🏛
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه و فیلم را در یوتیوب تماشا کنید. 🎦
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
DEV Community
DotNet and Its Runtime
DotNet and Its Runtime -...
👍15❤6👏2🔥1
Forwarded from Software Philosophy
و بالاخره... اینم از سخنرانی تدکس من: «پروژه یک من جدید!».
تو تدکس در مورد نرونهای آینهای صحبت کردم و اینکه چطور این قسمت عجیب از مغز میتونه کمک کنه کارهای عجیبی رو انجام بدیم. کارهایی که به نظر خیلی نشدنی میان!
یکی از چیزهایی که انتقالش خیلی سخته، انتقال درده! خیلی سخته یه یکی توضیح بدی چطور درد میکنه! یه مفهوم بیربط دیگه هم هست که به نظر همینقدر سخته: انتقال مهارتهای کار تیمی! تو این TEDx Talk توضیح دادم که چطور یه قسمت از مغزمون به نام Mirror Neurons (که خیلی هم غافلیم ازش) میتونه کمک کنه این کارهای خیلی سخت رو، به حتی بدون صحبت کردن انجام بدیم!
یه قسمت از کلیپ هست که پام با محکککم میخوره به یه صندلی که تو صحنه هست که تو فیلم خیلی واضح نیفتاده. این رو گفتم که اون وسط نگین چی شد یه هو!
لینک ویدئوی کامل در صفحه رسمی تدکس در یوتیوب: https://www.youtube.com/watch?v=DfTuWdPV6JU
در صورت باز نشدن، این ویدئو در آپارات هم آپلود شده.
تو تدکس در مورد نرونهای آینهای صحبت کردم و اینکه چطور این قسمت عجیب از مغز میتونه کمک کنه کارهای عجیبی رو انجام بدیم. کارهایی که به نظر خیلی نشدنی میان!
یکی از چیزهایی که انتقالش خیلی سخته، انتقال درده! خیلی سخته یه یکی توضیح بدی چطور درد میکنه! یه مفهوم بیربط دیگه هم هست که به نظر همینقدر سخته: انتقال مهارتهای کار تیمی! تو این TEDx Talk توضیح دادم که چطور یه قسمت از مغزمون به نام Mirror Neurons (که خیلی هم غافلیم ازش) میتونه کمک کنه این کارهای خیلی سخت رو، به حتی بدون صحبت کردن انجام بدیم!
یه قسمت از کلیپ هست که پام با محکککم میخوره به یه صندلی که تو صحنه هست که تو فیلم خیلی واضح نیفتاده. این رو گفتم که اون وسط نگین چی شد یه هو!
لینک ویدئوی کامل در صفحه رسمی تدکس در یوتیوب: https://www.youtube.com/watch?v=DfTuWdPV6JU
در صورت باز نشدن، این ویدئو در آپارات هم آپلود شده.
YouTube
Mirroring Neurons: A "NEW ME" can change the world! | Mehran Davoudi | TEDxYouth@Tehran
We are living in the most strange country of the world. We have everything to be the best, but still we are not! Far far away, just because of one thing! We have the majority types of mines, majority types of planets and… Lack of "one thing" stops us from…
3👍11❤6🔥5🥰1👏1
انتقال Git Stashes بین دستگاهها
ابزار Git stashes ابزاری قدرتمند برای ذخیره موقت تغییرات است. اما اگر نیاز دارید این stashes را به دستگاه دیگری منتقل کنید، چطور؟ در این پست، نحوه انتقال Git stashes را باهم برسی میکنیم تا هیچ کدام از تغییرات در حال انجام را از دست ندهید.
پیشنیازها :
ابتدا Git را طوری تنظیم کنیم که شامل فایلهای غیر ردیابی (Untracked) شده را هم در stashهایمان نیز باشد:
این تنظیمات تضمین میکند که وقتی یک stash میسازیم، تمام تغییرات از جمله فایلهای غیر ردیابی شده شامل شوند.
گام 1: ایجاد یک Stash
روی دستگاه فعلی خود، تغییرات را stash کنید:
پارامتر
گام 2: ایجاد یک فایل Patch
حالا یک فایل patch از stash ایجاد کنید:
این فرمان یک فایل با نام
گام 3: انتقال فایل Patch
فایل
گام 4: اعمال Patch در دستگاه جدید
روی دستگاه جدید، به مخزن Git خود بروید و patch را اعمال کنید:
این فرمان تغییرات را از فایل patch به پوشه کاری شما اعمال میکند.
نکته : میتوانید برای stashهای مختلف، فایلهای patch مجزا ایجاد کنید (مثلاً
با دنبال کردن این مراحل، میتوانید بدون توجه به جایی که در حال کار هستید به راحتی Git stashes خود را بین دستگاهها منتقل کنید و پیوستگی جریان کاری خود را حفظ کنید.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
ابزار Git stashes ابزاری قدرتمند برای ذخیره موقت تغییرات است. اما اگر نیاز دارید این stashes را به دستگاه دیگری منتقل کنید، چطور؟ در این پست، نحوه انتقال Git stashes را باهم برسی میکنیم تا هیچ کدام از تغییرات در حال انجام را از دست ندهید.
پیشنیازها :
ابتدا Git را طوری تنظیم کنیم که شامل فایلهای غیر ردیابی (Untracked) شده را هم در stashهایمان نیز باشد:
git config stash.showIncludeUntracked true
این تنظیمات تضمین میکند که وقتی یک stash میسازیم، تمام تغییرات از جمله فایلهای غیر ردیابی شده شامل شوند.
گام 1: ایجاد یک Stash
روی دستگاه فعلی خود، تغییرات را stash کنید:
git stash push -u
پارامتر
-u فایلهای غیر ردیابی شده را هم در stash شامل میشود.گام 2: ایجاد یک فایل Patch
حالا یک فایل patch از stash ایجاد کنید:
git stash show "stash@{0}" -p > changes.patchاین فرمان یک فایل با نام
changes.patch ایجاد میکند که شامل تمام تغییرات در آخرین stash شماست.گام 3: انتقال فایل Patch
فایل
changes.patch را به دستگاه دیگر خود منتقل کنید.گام 4: اعمال Patch در دستگاه جدید
روی دستگاه جدید، به مخزن Git خود بروید و patch را اعمال کنید:
git apply changes.patch
این فرمان تغییرات را از فایل patch به پوشه کاری شما اعمال میکند.
نکته : میتوانید برای stashهای مختلف، فایلهای patch مجزا ایجاد کنید (مثلاً
stash@{1}, stash@{2}).با دنبال کردن این مراحل، میتوانید بدون توجه به جایی که در حال کار هستید به راحتی Git stashes خود را بین دستگاهها منتقل کنید و پیوستگی جریان کاری خود را حفظ کنید.
🔗 نسخه کامل مقاله را میتوانید در اینجا مطالعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
DEV Community
Moving Git Stashes Between Devices: A Step-by-Step Guide
Git stashes are a powerful feature that allows developers to temporarily store uncommitted changes....
👍19👏3❤2🎉1
Forwarded from Dubai .NET Developers
.NET Conf Watch Party!
Put a comment if you want to watch the conference online, but together!
It will be on Teams :)
Put a comment if you want to watch the conference online, but together!
It will be on Teams :)
1🔥9❤3
Forwarded from Dubai .NET Developers
We're watching .NET Conf AI 2024 together here:
https://teams.microsoft.com/l/meetup-join/19:91cc6eeb886d4f0eb167546a1ce3fd2f@thread.tacv2/1724170108497?context=%7B%22Tid%22:%2224fbf492-43a9-4a8f-ba7b-6f12fa9b8d87%22,%22Oid%22:%22aca9b64a-ea78-46f4-a5b4-b3afd7832f63%22%7D
https://teams.microsoft.com/l/meetup-join/19:91cc6eeb886d4f0eb167546a1ce3fd2f@thread.tacv2/1724170108497?context=%7B%22Tid%22:%2224fbf492-43a9-4a8f-ba7b-6f12fa9b8d87%22,%22Oid%22:%22aca9b64a-ea78-46f4-a5b4-b3afd7832f63%22%7D
Microsoft Teams
Join conversation
🔥1
استفاده از Span در سیشارپ
فرض کنید که یک رشته متن دارید و میخواهید تاریخ را از آن جدا کنید. اگر از متدهای Split یا Substring استفاده می کنید، برای رشتههای جدید ایجاد شده، هربار حافظه اختصاص مییابد. این فرآیند میتواند کند باشد و میزان زیادی از حافظه را به خود اختصاص دهد، به خصوص زمانی که با مجموعه دادههای بزرگ سروکار داریم.
از طرف دیگر، Span مستقیماً روی حافظه اصلی بدون ایجاد و تخصیص حافظه جدید عمل می کند. این کار باعث میشود تا به طور قابل توجهی انجام کار سریعتر و کارآمدتر شود.
در نظر داشته باشید که Span از نظر نوع و حافظه ایمن است. بدون ایجاد نسخههای اضافی، مستقیماً روی حافظه کار میکند و میتواند با آرایهها، رشتهها، حافظه، پشته و غیره کار کند.
در مواقع Span ها مانند یک view بروی حافظه یا مکان مورد نظر شما میباشند و در نتیجه بسیار سریع هستند.
🔗 برای مشاهده فیلم کوتاه در یک دقیقه ، اینجا کلیک کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
فرض کنید که یک رشته متن دارید و میخواهید تاریخ را از آن جدا کنید. اگر از متدهای Split یا Substring استفاده می کنید، برای رشتههای جدید ایجاد شده، هربار حافظه اختصاص مییابد. این فرآیند میتواند کند باشد و میزان زیادی از حافظه را به خود اختصاص دهد، به خصوص زمانی که با مجموعه دادههای بزرگ سروکار داریم.
از طرف دیگر، Span مستقیماً روی حافظه اصلی بدون ایجاد و تخصیص حافظه جدید عمل می کند. این کار باعث میشود تا به طور قابل توجهی انجام کار سریعتر و کارآمدتر شود.
در نظر داشته باشید که Span از نظر نوع و حافظه ایمن است. بدون ایجاد نسخههای اضافی، مستقیماً روی حافظه کار میکند و میتواند با آرایهها، رشتهها، حافظه، پشته و غیره کار کند.
در مواقع Span ها مانند یک view بروی حافظه یا مکان مورد نظر شما میباشند و در نتیجه بسیار سریع هستند.
🔗 برای مشاهده فیلم کوتاه در یک دقیقه ، اینجا کلیک کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#محمدرضا_پازوکی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______
YouTube
Span in C#
Today, we're diving into the nitty-gritty of memory management and performance in C#. If you’ve ever wondered how to optimize your code for speed and efficie...
👍18