This media is not supported in your browser
VIEW IN TELEGRAM
The source code of Windows’ troubleshooting program has leaked.
❤🔥3👍1
دکوراتورها در پایتون ابزارهایی هستند که به ما امکان میدهند رفتار توابع را بدون تغییر در کد اصلی آنها گسترش دهیم.
🧩 دکوراتورها با افزودن قابلیتهای جدید به توابع، کد را بهینه میکنند و از تکرار جلوگیری میکنند. این امر به خوانایی و نگهداری بهتر کد کمک میکند.
🔄 استفاده از دکوراتورها به ما این امکان را میدهد که بدون تغییر در توابع اصلی، قابلیتهای جدیدی اضافه کنیم و کدها انعطافپذیرتر شوند.
🛠️ ساختار دکوراتورها به ما اجازه میدهد قبل و بعد از اجرای توابع اصلی، کارهایی انجام دهیم؛ این ویژگی برای مواردی مانند لاگکردن یا بررسی ورودیها مفید است.
⚠️ یکی از چالشهای استفاده از دکوراتورها این است که ممکن است نام توابع اصلی در زمان دیباگ کردن قابل شناسایی نباشد و به مشکلاتی در شناسایی خطاها منجر شود.
📈 استفاده از کتابخانه "functools" میتواند به حفظ هویت اصلی توابع کمک کند و از مشکلات اورراید جلوگیری کند، و امنیت بیشتری فراهم آورد.
🤔 درک صحیح از دکوراتورها و نحوهی کارکرد آنها نیاز به زمان و تمرین دارد؛ این مفهوم میتواند در ابتدا گیجکننده باشد، اما با تمرین به راحتی قابل فهم میشود.
💡 استفاده معقول از دکوراتورها میتواند به بهبود کیفیت کد کمک کند، اما افراط در استفاده ممکن است کد را پیچیده کند و باید در نظر گرفت تا کدها قابل نگهداری و توسعه باقی بمانند.
https://youtu.be/CuCudHMIPi4?si=_g-sZfyso-vpl_Qe
🧩 دکوراتورها با افزودن قابلیتهای جدید به توابع، کد را بهینه میکنند و از تکرار جلوگیری میکنند. این امر به خوانایی و نگهداری بهتر کد کمک میکند.
🔄 استفاده از دکوراتورها به ما این امکان را میدهد که بدون تغییر در توابع اصلی، قابلیتهای جدیدی اضافه کنیم و کدها انعطافپذیرتر شوند.
🛠️ ساختار دکوراتورها به ما اجازه میدهد قبل و بعد از اجرای توابع اصلی، کارهایی انجام دهیم؛ این ویژگی برای مواردی مانند لاگکردن یا بررسی ورودیها مفید است.
⚠️ یکی از چالشهای استفاده از دکوراتورها این است که ممکن است نام توابع اصلی در زمان دیباگ کردن قابل شناسایی نباشد و به مشکلاتی در شناسایی خطاها منجر شود.
📈 استفاده از کتابخانه "functools" میتواند به حفظ هویت اصلی توابع کمک کند و از مشکلات اورراید جلوگیری کند، و امنیت بیشتری فراهم آورد.
🤔 درک صحیح از دکوراتورها و نحوهی کارکرد آنها نیاز به زمان و تمرین دارد؛ این مفهوم میتواند در ابتدا گیجکننده باشد، اما با تمرین به راحتی قابل فهم میشود.
💡 استفاده معقول از دکوراتورها میتواند به بهبود کیفیت کد کمک کند، اما افراط در استفاده ممکن است کد را پیچیده کند و باید در نظر گرفت تا کدها قابل نگهداری و توسعه باقی بمانند.
https://youtu.be/CuCudHMIPi4?si=_g-sZfyso-vpl_Qe
YouTube
دکوریتور در پایتون | Decorator in Python
من در شبکه های اجتماعی دیگه:
اینستاگرام
https://instagram.com/am.mthri
کانال تلگرام
https://news.1rj.ru/str/mthri_tips
توییتر
https://twitter.com/a_mthri
وبلاگ
https://iamamir.ir
اینستاگرام
https://instagram.com/am.mthri
کانال تلگرام
https://news.1rj.ru/str/mthri_tips
توییتر
https://twitter.com/a_mthri
وبلاگ
https://iamamir.ir
👍5❤🔥2
چگونه پوت های باز روی سرور لینوکسی خود را ببینیم؟
ابزار های زیادی برای این کار وجود دارد ، اما یکی از آن ها:
استفاده از ابزار netstat:
ابتدا باید مطمئن باشیم که پکیج مروبطه بر روی سرور ما نصب باشد :
و بعد از نصب کامند زیر را اجرا میکنیم :
که هر آپشن در اینجا مشخص کننده ی یک ویژگی میباشد :
آپشن t : برای پروتکلهای TCP
آپشن u : برای پروتکل های UDP
آپشن l : برای نمایش پورتهایی که در حالت "LISTEN" هستند (در حال گوش دادن)
آپشن n : برای نمایش آدرسها به صورت عددی که دلبخواه است و میتوانید نزنید .
ابزار های زیادی برای این کار وجود دارد ، اما یکی از آن ها:
استفاده از ابزار netstat:
ابتدا باید مطمئن باشیم که پکیج مروبطه بر روی سرور ما نصب باشد :
apt install net-tools
و بعد از نصب کامند زیر را اجرا میکنیم :
sudo netstat -tuln
که هر آپشن در اینجا مشخص کننده ی یک ویژگی میباشد :
آپشن t : برای پروتکلهای TCP
آپشن u : برای پروتکل های UDP
آپشن l : برای نمایش پورتهایی که در حالت "LISTEN" هستند (در حال گوش دادن)
آپشن n : برای نمایش آدرسها به صورت عددی که دلبخواه است و میتوانید نزنید .
❤🔥4👍2
مفهوم HeartBeat در کلاستر ها !
در مباحث کلاسترینگ (خوشهبندی)، «heartbeat» به سیگنالهایی گفته میشود که بین گرهها (nodes) در کلاستر ارسال میشود تا وضعیت آنلاین یا آفلاین بودن هر گره را مشخص کند. این سیگنالها بهطور منظم و با فاصلههای زمانی کوتاه بین گرهها رد و بدل میشوند. اگر یکی از گرهها به هر دلیلی پاسخ ندهد یا heartbeat خود را ارسال نکند، سیستم متوجه میشود که آن گره دچار مشکل شده و ممکن است عملیات failover یا جابهجایی وظایف آن گره به گرههای دیگر را انجام دهد.
این مکانیزم در سیستمهای حساس و با دسترسپذیری بالا (high availability) بسیار مهم است تا مطمئن شویم که در صورت خرابی یکی از گرهها، سیستم بدون وقفه به کار خود ادامه میدهد.
اگه بخوایم مثالی بزنیم :
فرض کنید در یک بانک بزرگ از سیستم کلاسترینگ استفاده میشود تا خدمات مالی بدون وقفه به مشتریان ارائه شود. این بانک دو سرور دارد که بهطور موازی کار میکنند و اگر یکی از آنها دچار مشکل شود، دیگری بتواند بدون قطع خدمات به کار ادامه دهد. این دو سرور (که به آنها گره یا node گفته میشود) برای این منظور به یکدیگر heartbeat میفرستند.
1. ارسال و دریافت heartbeat:
هر چند ثانیه یک بار، هر یک از گرهها سیگنالی به نام heartbeat برای دیگری ارسال میکند. این سیگنال شامل اطلاعاتی مانند زمان ارسال، وضعیت عملکرد و بار فعلی سیستم است. هدف از ارسال این سیگنال این است که هر گره متوجه شود دیگری فعال است و به درستی کار میکند.
2. شناسایی خرابی گرهها:
فرض کنید گره ۱ بهدلیل بروز یک مشکل سختافزاری یا نرمافزاری از کار میافتد و دیگر قادر به ارسال heartbeat نیست. در این حالت، گره ۲ که سیگنال heartbeat را دریافت نکرده است، متوجه میشود که گره ۱ از دسترس خارج شده است. این شناسایی خرابی معمولاً بر اساس مدت زمانی که سیگنال heartbeat قطع شده است انجام میشود. اگر چند سیگنال پشت سر هم دریافت نشود (برای مثال، پس از ۳ ثانیه)، گره ۲ نتیجه میگیرد که گره ۱ دچار مشکل شده است.
3. اجرای failover یا جابهجایی وظایف:
با تشخیص خرابی گره ۱، گره ۲ فوراً وارد عمل میشود و وظایف گره از کار افتاده را به عهده میگیرد. به این فرآیند «failover» گفته میشود. در این مرحله، گره ۲ از دستورات و اطلاعاتی که برای حالت پشتیبان آماده کرده بود، استفاده میکند تا بدون هیچ قطعی، سرویسها و اطلاعات مورد نیاز کاربران را ارائه دهد.
4. بازگرداندن سیستم به حالت اصلی:
پس از تعمیر گره ۱ و بازگشت آن به حالت عادی، دو گره دوباره به تبادل heartbeat ادامه میدهند. بسته به نوع تنظیمات سیستم، ممکن است گره ۲ وظایف را به گره ۱ بازگرداند یا بهعنوان پشتیبان باقی بماند تا در صورت خرابی مجدد، باز هم بتواند وظایف را به عهده بگیرد.
در مباحث کلاسترینگ (خوشهبندی)، «heartbeat» به سیگنالهایی گفته میشود که بین گرهها (nodes) در کلاستر ارسال میشود تا وضعیت آنلاین یا آفلاین بودن هر گره را مشخص کند. این سیگنالها بهطور منظم و با فاصلههای زمانی کوتاه بین گرهها رد و بدل میشوند. اگر یکی از گرهها به هر دلیلی پاسخ ندهد یا heartbeat خود را ارسال نکند، سیستم متوجه میشود که آن گره دچار مشکل شده و ممکن است عملیات failover یا جابهجایی وظایف آن گره به گرههای دیگر را انجام دهد.
این مکانیزم در سیستمهای حساس و با دسترسپذیری بالا (high availability) بسیار مهم است تا مطمئن شویم که در صورت خرابی یکی از گرهها، سیستم بدون وقفه به کار خود ادامه میدهد.
اگه بخوایم مثالی بزنیم :
فرض کنید در یک بانک بزرگ از سیستم کلاسترینگ استفاده میشود تا خدمات مالی بدون وقفه به مشتریان ارائه شود. این بانک دو سرور دارد که بهطور موازی کار میکنند و اگر یکی از آنها دچار مشکل شود، دیگری بتواند بدون قطع خدمات به کار ادامه دهد. این دو سرور (که به آنها گره یا node گفته میشود) برای این منظور به یکدیگر heartbeat میفرستند.
1. ارسال و دریافت heartbeat:
هر چند ثانیه یک بار، هر یک از گرهها سیگنالی به نام heartbeat برای دیگری ارسال میکند. این سیگنال شامل اطلاعاتی مانند زمان ارسال، وضعیت عملکرد و بار فعلی سیستم است. هدف از ارسال این سیگنال این است که هر گره متوجه شود دیگری فعال است و به درستی کار میکند.
2. شناسایی خرابی گرهها:
فرض کنید گره ۱ بهدلیل بروز یک مشکل سختافزاری یا نرمافزاری از کار میافتد و دیگر قادر به ارسال heartbeat نیست. در این حالت، گره ۲ که سیگنال heartbeat را دریافت نکرده است، متوجه میشود که گره ۱ از دسترس خارج شده است. این شناسایی خرابی معمولاً بر اساس مدت زمانی که سیگنال heartbeat قطع شده است انجام میشود. اگر چند سیگنال پشت سر هم دریافت نشود (برای مثال، پس از ۳ ثانیه)، گره ۲ نتیجه میگیرد که گره ۱ دچار مشکل شده است.
3. اجرای failover یا جابهجایی وظایف:
با تشخیص خرابی گره ۱، گره ۲ فوراً وارد عمل میشود و وظایف گره از کار افتاده را به عهده میگیرد. به این فرآیند «failover» گفته میشود. در این مرحله، گره ۲ از دستورات و اطلاعاتی که برای حالت پشتیبان آماده کرده بود، استفاده میکند تا بدون هیچ قطعی، سرویسها و اطلاعات مورد نیاز کاربران را ارائه دهد.
4. بازگرداندن سیستم به حالت اصلی:
پس از تعمیر گره ۱ و بازگشت آن به حالت عادی، دو گره دوباره به تبادل heartbeat ادامه میدهند. بسته به نوع تنظیمات سیستم، ممکن است گره ۲ وظایف را به گره ۱ بازگرداند یا بهعنوان پشتیبان باقی بماند تا در صورت خرابی مجدد، باز هم بتواند وظایف را به عهده بگیرد.
YouTube
How to use Heartbeat and DRBD for HA (high availability)
We look into high availability using Heartbeat and DRBD. Heartbeat is a software to monitor and failover when a machine is unresponsive and DRBD can help you replicate data between machines making your setup highly available. This solution can help you doing…
❤🔥4👍2
چگونه تشخیص بدیم معماری سرور لینوکسی ما چی هست؟
برای تشخیص معماری سیستمعامل لینوکسی خود ، میتونیم از دستور زیر استفاده کنیم:
حالا با توجه به خروجی که میده میتونه در یکی از دسته های زیر قرار بگیرد:
اگر خروجی x86_64 باشد، معماری سیستم شما 64 بیتی و Intel یا AMD است.
اگر خروجی aarch64 باشد، سیستم شما 64 بیتی ARM است.
اگر خروجی armv7l یا armv6l باشد، سیستم شما 32 بیتی ARM است.
یک روش دیگه برای بررسی این موضوع استفاده از دستور زیر است :
خروجی هایی که این دستور میدهد :
اگر amd64 برای سیستمهای 64 بیتی مبتنی بر Intel یا AMD
اگر arm64 برای سیستمهای 64 بیتی ARM
اگر armhf برای سیستمهای 32 بیتی ARM
برای تشخیص معماری سیستمعامل لینوکسی خود ، میتونیم از دستور زیر استفاده کنیم:
uname -m
حالا با توجه به خروجی که میده میتونه در یکی از دسته های زیر قرار بگیرد:
اگر خروجی x86_64 باشد، معماری سیستم شما 64 بیتی و Intel یا AMD است.
اگر خروجی aarch64 باشد، سیستم شما 64 بیتی ARM است.
اگر خروجی armv7l یا armv6l باشد، سیستم شما 32 بیتی ARM است.
یک روش دیگه برای بررسی این موضوع استفاده از دستور زیر است :
dpkg --print-architecture
خروجی هایی که این دستور میدهد :
اگر amd64 برای سیستمهای 64 بیتی مبتنی بر Intel یا AMD
اگر arm64 برای سیستمهای 64 بیتی ARM
اگر armhf برای سیستمهای 32 بیتی ARM
👍7❤🔥2
در این ویدیو به تفاوتهای بین is و == و همچنین str و repr در پایتون پرداخته میشود.
تفاوت is و ==: is به آدرس حافظه و == به مقادیر واقعی آبجکتها توجه دارد.
استفاده از متد copy(): برای ایجاد کپی از لیستها و تفاوتهای بین آبجکتها کاربرد دارد.
متدهای str و repr: هر دو برای تبدیل آبجکتها به رشته استفاده میشوند، اما کاربردهای متفاوتی دارند.
اهمیت متد repr: برای دیباگ و نمایش دقیقتر اطلاعات آبجکتها مفید است.
توصیه به پیادهسازی هر دو متد: پیادهسازی همزمان str و repr برای جلوگیری از رفتار غیرمنتظره مهم است.
بررسی آدرسهای حافظه: با استفاده از id() میتوان فهمید که آیا دو آبجکت یکسان هستند یا خیر.
اهمیت یادگیری is و ==: درک دقیق این تفاوتها به بهبود کیفیت کد کمک میکند.
تفاوت بنیادی: is بررسی میکند که آیا دو متغیر به یک آدرس حافظه اشاره میکنند، در حالی که == بررسی میکند که آیا مقادیر آنها برابر هستند. این نکته برای جلوگیری از خطاهای منطقی بسیار مهم است.
کاربرد copy(): استفاده از copy() برای ایجاد کپیهای مستقل از لیستها ضروری است، زیرا اشتباه در این موضوع میتواند منجر به تغییرات ناخواسته شود.
دیباگینگ آسانتر: استفاده از repr در دیباگینگ کمک میکند تا اطلاعات بیشتری درباره نوع و وضعیت آبجکتها به دست آورید، که در شناسایی مشکلات کد بسیار مفید است.
پیادهسازی همزمان: همیشه توصیه میشود که هر دو متد str و repr را پیادهسازی کنید تا از رفتار غیرمنتظره جلوگیری کنید. عدم پیادهسازی یکی از آنها میتواند به نتایج غیرمنتظره منجر شود.
اهمیت آدرس حافظه: بررسی آدرس حافظه با استفاده از id() میتواند به شما بگوید که آیا دو متغیر به یک آبجکت اشاره میکنند یا خیر، که در تصمیمگیریهای منطقی بسیار حیاتی است.
تسلط بر مفاهیم: یادگیری و درک تفاوتهای بین is، == و متدهای رشتهای در پایتون به توسعهدهندگان کمک میکند تا کدهای بهتری بنویسند و از بروز خطاهای احتمالی جلوگیری کنند.
https://youtu.be/FNJ2NZxIhfs?si=fVAlS-fk7JEcvNvq
تفاوت is و ==: is به آدرس حافظه و == به مقادیر واقعی آبجکتها توجه دارد.
استفاده از متد copy(): برای ایجاد کپی از لیستها و تفاوتهای بین آبجکتها کاربرد دارد.
متدهای str و repr: هر دو برای تبدیل آبجکتها به رشته استفاده میشوند، اما کاربردهای متفاوتی دارند.
اهمیت متد repr: برای دیباگ و نمایش دقیقتر اطلاعات آبجکتها مفید است.
توصیه به پیادهسازی هر دو متد: پیادهسازی همزمان str و repr برای جلوگیری از رفتار غیرمنتظره مهم است.
بررسی آدرسهای حافظه: با استفاده از id() میتوان فهمید که آیا دو آبجکت یکسان هستند یا خیر.
اهمیت یادگیری is و ==: درک دقیق این تفاوتها به بهبود کیفیت کد کمک میکند.
تفاوت بنیادی: is بررسی میکند که آیا دو متغیر به یک آدرس حافظه اشاره میکنند، در حالی که == بررسی میکند که آیا مقادیر آنها برابر هستند. این نکته برای جلوگیری از خطاهای منطقی بسیار مهم است.
کاربرد copy(): استفاده از copy() برای ایجاد کپیهای مستقل از لیستها ضروری است، زیرا اشتباه در این موضوع میتواند منجر به تغییرات ناخواسته شود.
دیباگینگ آسانتر: استفاده از repr در دیباگینگ کمک میکند تا اطلاعات بیشتری درباره نوع و وضعیت آبجکتها به دست آورید، که در شناسایی مشکلات کد بسیار مفید است.
پیادهسازی همزمان: همیشه توصیه میشود که هر دو متد str و repr را پیادهسازی کنید تا از رفتار غیرمنتظره جلوگیری کنید. عدم پیادهسازی یکی از آنها میتواند به نتایج غیرمنتظره منجر شود.
اهمیت آدرس حافظه: بررسی آدرس حافظه با استفاده از id() میتواند به شما بگوید که آیا دو متغیر به یک آبجکت اشاره میکنند یا خیر، که در تصمیمگیریهای منطقی بسیار حیاتی است.
تسلط بر مفاهیم: یادگیری و درک تفاوتهای بین is، == و متدهای رشتهای در پایتون به توسعهدهندگان کمک میکند تا کدهای بهتری بنویسند و از بروز خطاهای احتمالی جلوگیری کنند.
https://youtu.be/FNJ2NZxIhfs?si=fVAlS-fk7JEcvNvq
YouTube
'is' vs '==' and '__str__' vs '__repr__' in python
من در شبکه های اجتماعی دیگه:
اینستاگرام
https://instagram.com/am.mthri
کانال تلگرام
https://news.1rj.ru/str/mthri_tips
توییتر
https://twitter.com/a_mthri
وبلاگ
https://iamamir.ir
اینستاگرام
https://instagram.com/am.mthri
کانال تلگرام
https://news.1rj.ru/str/mthri_tips
توییتر
https://twitter.com/a_mthri
وبلاگ
https://iamamir.ir
❤🔥3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Always ask yourself how far you can go rather than how long it will take. 🙌
❤🔥4👍2🔥1
شبکه ی Overlay چیست؟
شبکهی Overlay یا شبکه همپوشانی یک نوع شبکهی مجازی است که روی یک شبکهی فیزیکی دیگر (مثل اینترنت یا شبکهی داخلی) ساخته میشود. این شبکه کمک میکند تا دستگاهها یا سرورهایی که از نظر فیزیکی از هم دور هستند، طوری به هم متصل شوند که انگار در یک شبکه محلی و نزدیک به هم هستند.
چرا Overlay Network؟
گاهی اوقات در محیطهای بزرگ مثل مراکز داده یا زیرساختهای ابری (cloud)، نیاز داریم تا سرورها، کانتینرها، یا ماشینهای مجازی مختلف، بدون توجه به موقعیت جغرافیاییشان، با هم در ارتباط باشند. شبکههای فیزیکی محدودیتهایی دارند و در تغییرات و توسعه ممکن است زمانبر و پرهزینه باشند. اینجا است که Overlay Network وارد کار میشود؛ یعنی یک شبکه مجازی که به شما اجازه میدهد دستگاهها و سرورها را بدون تغییر در شبکهی فیزیکی، به هم متصل کنید.
شبکه Overlay چگونه کار میکند؟
شبکه Overlay از روشی به نام تونلزنی (Tunneling) استفاده میکند. در این روش، بستههای داده (Packetها) طوری بستهبندی یا کپسوله (Encapsulate) میشوند که انگار از یک شبکه مجازی عبور میکنند، در حالی که در واقع از بستر شبکهی فیزیکی منتقل میشوند. به عبارت سادهتر، دادهها در یک بستهی مخصوص پیچیده شده و روی مسیرهای شبکهی فیزیکی منتقل میشوند، اما به شبکهی مجازی تعلق دارند.
فرض کنید دو سرور در دو دیتاسنتر مختلف دارید که میخواهید به هم متصل شوند. با ایجاد یک Overlay Network، میتوانید این دو سرور را طوری به هم وصل کنید که انگار در یک شبکه محلی و یکجا هستند، حتی اگر کیلومترها از هم فاصله داشته باشند.
کاربردهای Overlay Network
شبکه Overlay بیشتر در موارد زیر کاربرد دارد:
زیرساختهای ابری (Cloud Infrastructure): در محیطهایی مثل Amazon Web Services (AWS) یا Google Cloud، Overlay Network امکان ارتباط بین منابع مختلف (مثل ماشینهای مجازی یا کانتینرها) را فراهم میکند.
کانتینرها و Docker: در داکر (Docker) و ارکستراسیون کانتینرها (مانند Kubernetes)، Overlay Network کمک میکند تا کانتینرها که ممکن است روی سرورهای مختلف باشند، بهسادگی با هم ارتباط برقرار کنند. این نوع شبکه در Docker Swarm برای ارتباط امن و سریع کانتینرها به کار میرود.
شبکههای چند لایهای و ایمن: Overlay Network میتواند برای ایجاد شبکههای امن و چند لایه استفاده شود. مثلا در شبکههای سازمانی برای اتصال بین دفاتر مختلف از این روش استفاده میشود.
مزایای Overlay Network
انعطافپذیری بالا: بدون نیاز به تغییر زیرساخت فیزیکی، میتوان بهراحتی شبکههای جدید ایجاد و تنظیم کرد.
مقیاسپذیری: بهراحتی میتوان سرورها و دستگاههای جدید را به شبکه اضافه کرد.
افزایش امنیت: بستهها بهصورت تونلزده ارسال میشوند که امنیت بیشتری به ارتباطات بین دستگاهها میدهد.
ارتباط ساده در محیطهای توزیعشده: در پروژههای بزرگ که منابع در نقاط مختلف جغرافیایی پراکنده هستند، Overlay Network راهکاری کارآمد برای اتصال دستگاهها و سرورها ارائه میدهد.
مثال ساده از Overlay Network
فرض کنید یک سازمان دارای چند شعبه در شهرهای مختلف است و هر شعبه دارای سرورهای مخصوص به خودش است. اگر این سازمان بخواهد همهی سرورها را طوری به هم متصل کند که انگار همگی در یک ساختمان هستند، میتواند از Overlay Network استفاده کند. این شبکه مجازی طوری کار میکند که تمام سرورها به یکدیگر متصل میشوند و بدون در نظر گرفتن فاصله فیزیکی، تبادل اطلاعات انجام میدهند.
نتیجهگیری
شبکهی Overlay یکی از راهکارهای مدرن و کارآمد برای ایجاد ارتباطات مجازی بین منابع مختلف است. با این شبکه میتوانید سرورها، کانتینرها و منابع مختلف را بهراحتی و بدون نیاز به تغییرات زیرساخت فیزیکی به هم متصل کنید و از مزایای انعطافپذیری و امنیت آن بهرهمند شوید.
این شبکهها در دنیای امروزی، مخصوصا در حوزههای ابری و کانتینرها، بسیار پرکاربرد هستند و ابزار مناسبی برای سادهسازی و مدیریت شبکههای پیچیده به حساب میآیند.
شبکهی Overlay یا شبکه همپوشانی یک نوع شبکهی مجازی است که روی یک شبکهی فیزیکی دیگر (مثل اینترنت یا شبکهی داخلی) ساخته میشود. این شبکه کمک میکند تا دستگاهها یا سرورهایی که از نظر فیزیکی از هم دور هستند، طوری به هم متصل شوند که انگار در یک شبکه محلی و نزدیک به هم هستند.
چرا Overlay Network؟
گاهی اوقات در محیطهای بزرگ مثل مراکز داده یا زیرساختهای ابری (cloud)، نیاز داریم تا سرورها، کانتینرها، یا ماشینهای مجازی مختلف، بدون توجه به موقعیت جغرافیاییشان، با هم در ارتباط باشند. شبکههای فیزیکی محدودیتهایی دارند و در تغییرات و توسعه ممکن است زمانبر و پرهزینه باشند. اینجا است که Overlay Network وارد کار میشود؛ یعنی یک شبکه مجازی که به شما اجازه میدهد دستگاهها و سرورها را بدون تغییر در شبکهی فیزیکی، به هم متصل کنید.
شبکه Overlay چگونه کار میکند؟
شبکه Overlay از روشی به نام تونلزنی (Tunneling) استفاده میکند. در این روش، بستههای داده (Packetها) طوری بستهبندی یا کپسوله (Encapsulate) میشوند که انگار از یک شبکه مجازی عبور میکنند، در حالی که در واقع از بستر شبکهی فیزیکی منتقل میشوند. به عبارت سادهتر، دادهها در یک بستهی مخصوص پیچیده شده و روی مسیرهای شبکهی فیزیکی منتقل میشوند، اما به شبکهی مجازی تعلق دارند.
فرض کنید دو سرور در دو دیتاسنتر مختلف دارید که میخواهید به هم متصل شوند. با ایجاد یک Overlay Network، میتوانید این دو سرور را طوری به هم وصل کنید که انگار در یک شبکه محلی و یکجا هستند، حتی اگر کیلومترها از هم فاصله داشته باشند.
کاربردهای Overlay Network
شبکه Overlay بیشتر در موارد زیر کاربرد دارد:
زیرساختهای ابری (Cloud Infrastructure): در محیطهایی مثل Amazon Web Services (AWS) یا Google Cloud، Overlay Network امکان ارتباط بین منابع مختلف (مثل ماشینهای مجازی یا کانتینرها) را فراهم میکند.
کانتینرها و Docker: در داکر (Docker) و ارکستراسیون کانتینرها (مانند Kubernetes)، Overlay Network کمک میکند تا کانتینرها که ممکن است روی سرورهای مختلف باشند، بهسادگی با هم ارتباط برقرار کنند. این نوع شبکه در Docker Swarm برای ارتباط امن و سریع کانتینرها به کار میرود.
شبکههای چند لایهای و ایمن: Overlay Network میتواند برای ایجاد شبکههای امن و چند لایه استفاده شود. مثلا در شبکههای سازمانی برای اتصال بین دفاتر مختلف از این روش استفاده میشود.
مزایای Overlay Network
انعطافپذیری بالا: بدون نیاز به تغییر زیرساخت فیزیکی، میتوان بهراحتی شبکههای جدید ایجاد و تنظیم کرد.
مقیاسپذیری: بهراحتی میتوان سرورها و دستگاههای جدید را به شبکه اضافه کرد.
افزایش امنیت: بستهها بهصورت تونلزده ارسال میشوند که امنیت بیشتری به ارتباطات بین دستگاهها میدهد.
ارتباط ساده در محیطهای توزیعشده: در پروژههای بزرگ که منابع در نقاط مختلف جغرافیایی پراکنده هستند، Overlay Network راهکاری کارآمد برای اتصال دستگاهها و سرورها ارائه میدهد.
مثال ساده از Overlay Network
فرض کنید یک سازمان دارای چند شعبه در شهرهای مختلف است و هر شعبه دارای سرورهای مخصوص به خودش است. اگر این سازمان بخواهد همهی سرورها را طوری به هم متصل کند که انگار همگی در یک ساختمان هستند، میتواند از Overlay Network استفاده کند. این شبکه مجازی طوری کار میکند که تمام سرورها به یکدیگر متصل میشوند و بدون در نظر گرفتن فاصله فیزیکی، تبادل اطلاعات انجام میدهند.
نتیجهگیری
شبکهی Overlay یکی از راهکارهای مدرن و کارآمد برای ایجاد ارتباطات مجازی بین منابع مختلف است. با این شبکه میتوانید سرورها، کانتینرها و منابع مختلف را بهراحتی و بدون نیاز به تغییرات زیرساخت فیزیکی به هم متصل کنید و از مزایای انعطافپذیری و امنیت آن بهرهمند شوید.
این شبکهها در دنیای امروزی، مخصوصا در حوزههای ابری و کانتینرها، بسیار پرکاربرد هستند و ابزار مناسبی برای سادهسازی و مدیریت شبکههای پیچیده به حساب میآیند.
👍8❤🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Let your action talk - not your mouth!
🔥5❤🔥1👍1
این ویدیو درباره اکسپشنهای سفارسی در پایتون است و نحوه مدیریت خطاها و نوشتن کدهای قابل توسعه را توضیح میدهد.
نکات مهم:
📚 معرفی اکسپشنهای سفارسی
🔧 اهمیت مدیریت خطا در برنامهنویسی
✏️ ایجاد کلاسهای اختصاصی برای خطاها
🚀 بهبود قابلیت توسعه کد
💡 پیشنهاد نوشتن توضیحات برای اکسپشنها
🔍 بررسی کتابخانههای مفید
🎥 تماشای مثالهای عملی
کلیات:
⚙️ مدیریت خطا: نوشتن اکسپشنهای سفارسی به توسعهدهندگان کمک میکند تا خطاهای احتمالی را به وضوح شناسایی و مدیریت کنند.
📈 قابلیت توسعه: با استفاده از اکسپشنهای سفارسی، کدها به مرور زمان قابل توسعهتر و نگهداری آسانتری خواهند داشت.
🛠️ استفاده از کلاسهای اختصاصی: ایجاد کلاسهای اختصاصی برای اکسپشنها، خطاها را واضحتر و قابل درکتر میکند.
📖 توضیحات برای اکسپشنها: نوشتن توضیحات مختصر برای اکسپشنها میتواند به درک بهتر دلایل وقوع خطا کمک کند.
🔄 کتابخانههای مفید: استفاده از کتابخانههای معتبر که اکسپشنهای مناسب را ارائه میدهند، به بهبود کیفیت کد کمک میکند.
🧩 مدیریت بهتر خطاها: با مدیریت مناسب خطاها، توسعهدهندگان میتوانند از بروز مشکلات بزرگ در پروژههایشان جلوگیری کنند.
🎓 آموزش پیوسته: یادگیری و بهکارگیری تکنیکهای جدید برای مدیریت خطاها، از جمله اکسپشنهای سفارسی، به توسعهدهندگان کمک میکند تا مهارتهای خود را ارتقاء دهند.
https://youtu.be/mTlLPMYjRFk?si=WByHVO8jmlE6_AzX
نکات مهم:
📚 معرفی اکسپشنهای سفارسی
🔧 اهمیت مدیریت خطا در برنامهنویسی
✏️ ایجاد کلاسهای اختصاصی برای خطاها
🚀 بهبود قابلیت توسعه کد
💡 پیشنهاد نوشتن توضیحات برای اکسپشنها
🔍 بررسی کتابخانههای مفید
🎥 تماشای مثالهای عملی
کلیات:
⚙️ مدیریت خطا: نوشتن اکسپشنهای سفارسی به توسعهدهندگان کمک میکند تا خطاهای احتمالی را به وضوح شناسایی و مدیریت کنند.
📈 قابلیت توسعه: با استفاده از اکسپشنهای سفارسی، کدها به مرور زمان قابل توسعهتر و نگهداری آسانتری خواهند داشت.
🛠️ استفاده از کلاسهای اختصاصی: ایجاد کلاسهای اختصاصی برای اکسپشنها، خطاها را واضحتر و قابل درکتر میکند.
📖 توضیحات برای اکسپشنها: نوشتن توضیحات مختصر برای اکسپشنها میتواند به درک بهتر دلایل وقوع خطا کمک کند.
🔄 کتابخانههای مفید: استفاده از کتابخانههای معتبر که اکسپشنهای مناسب را ارائه میدهند، به بهبود کیفیت کد کمک میکند.
🧩 مدیریت بهتر خطاها: با مدیریت مناسب خطاها، توسعهدهندگان میتوانند از بروز مشکلات بزرگ در پروژههایشان جلوگیری کنند.
🎓 آموزش پیوسته: یادگیری و بهکارگیری تکنیکهای جدید برای مدیریت خطاها، از جمله اکسپشنهای سفارسی، به توسعهدهندگان کمک میکند تا مهارتهای خود را ارتقاء دهند.
https://youtu.be/mTlLPMYjRFk?si=WByHVO8jmlE6_AzX
YouTube
اکسپشن های سفارسی در پایتون | Custom Exception in Python
من در شبکه های اجتماعی دیگه:
اینستاگرام
https://instagram.com/am.mthri
کانال تلگرام
https://news.1rj.ru/str/mthri_tips
توییتر
https://twitter.com/a_mthri
وبلاگ
https://iamamir.ir
اینستاگرام
https://instagram.com/am.mthri
کانال تلگرام
https://news.1rj.ru/str/mthri_tips
توییتر
https://twitter.com/a_mthri
وبلاگ
https://iamamir.ir
👍2❤🔥1
(پارت دوم)
داکر Swarm چیست؟
داکر Swarm یک ابزار برای مدیریت و هماهنگسازی کانتینرهای Docker است که امکان اجرای برنامهها در مقیاس بزرگ را روی چندین سرور فراهم میکند. در واقع، با استفاده از Docker Swarm میتوانید یک کلاستر از سرورهای مختلف ایجاد کنید و کانتینرها را بهطور خودکار روی این سرورها توزیع و مدیریت نمایید.
در Docker Swarm، هر سرور میتواند بهعنوان یک گره (Node) در نظر گرفته شود:
گره مدیر (Manager Node): وظیفه مدیریت کل کلاستر و تصمیمگیری دربارهی توزیع کانتینرها روی گرهها را بر عهده دارد. به این گره Master هم میگن.
گره کارگر (Worker Node): وظیفه اصلی این گرهها اجرای کانتینرها است و از گرههای مدیر دستور میگیرند.
مراحل و مثال عملی
۱. فعالسازی Docker Swarm: فرض کنید یک سرور با آدرس IP 192.168.1.10 دارید. برای شروع Docker Swarm، روی سرور اصلی به عنوان node مدیر یا Manager دستور زیر را اجرا کنید:
پس از اجرای این دستور، Docker Swarm راهاندازی میشود و پیامی حاوی دستوری نمایش میدهد که باید آن را روی سرورهای دیگر اجرا کنید تا به کلاستر بپیوندند.
۲. افزودن گرههای کارگر یا همون Worker ها به کلاستر: با اجرای دستوری که گره مدیر ارائه کرده، میتوانید گرههای کارگر را به کلاستر متصل کنید. دستور برای گرههای کارگر معمولاً به شکل زیر است:
این دستور را روی سرورهای دیگر اجرا کنید و به کلاستر اضافه شوید.
نکته ی مهم در این بخش که از نکات مهم حوزه ی شبکه هست ، دقت در باز بودن پورت مورد نظر در فایروال است!
۳. ایجاد سرویس در Docker Swarm: حالا میتوانید یک سرویس روی کلاستر خود اجرا کنید. بهعنوان مثال، یک سرویس وب ساده از nginx ایجاد میکنیم:
که در اینجا:
آپشن --name my-nginx نام سرویس را مشخص میکند.
آپشن -p 80:80 پورت ۸۰ را برای سرویس در دسترس قرار میدهد.
و آپشن --replicas 3 تعداد نسخههای (Replica) کانتینر را مشخص میکند؛ یعنی ۳ کانتینر nginx روی کلاستر توزیع میشود.
مزایا
خودکارسازی توزیع کانتینرها: Docker Swarm بهطور خودکار کانتینرها را روی گرههای مختلف توزیع میکند.
تابآوری بالا: در صورت از دست رفتن یکی از گرهها، Swarm بهطور خودکار کانتینرها را روی گرههای دیگر بازیابی میکند.
مقیاسپذیری: بهراحتی میتوان تعداد گرهها و کانتینرها را افزایش یا کاهش داد.
بنابر این Docker Swarm ابزاری عالی برای اجرای برنامههای توزیعشده است که بهویژه برای سیستمهایی با نیاز به دسترسی بالا و مدیریت کانتینرها مناسب است.
داکر Swarm چیست؟
داکر Swarm یک ابزار برای مدیریت و هماهنگسازی کانتینرهای Docker است که امکان اجرای برنامهها در مقیاس بزرگ را روی چندین سرور فراهم میکند. در واقع، با استفاده از Docker Swarm میتوانید یک کلاستر از سرورهای مختلف ایجاد کنید و کانتینرها را بهطور خودکار روی این سرورها توزیع و مدیریت نمایید.
در Docker Swarm، هر سرور میتواند بهعنوان یک گره (Node) در نظر گرفته شود:
گره مدیر (Manager Node): وظیفه مدیریت کل کلاستر و تصمیمگیری دربارهی توزیع کانتینرها روی گرهها را بر عهده دارد. به این گره Master هم میگن.
گره کارگر (Worker Node): وظیفه اصلی این گرهها اجرای کانتینرها است و از گرههای مدیر دستور میگیرند.
مراحل و مثال عملی
۱. فعالسازی Docker Swarm: فرض کنید یک سرور با آدرس IP 192.168.1.10 دارید. برای شروع Docker Swarm، روی سرور اصلی به عنوان node مدیر یا Manager دستور زیر را اجرا کنید:
docker swarm init --advertise-addr 192.168.1.10
پس از اجرای این دستور، Docker Swarm راهاندازی میشود و پیامی حاوی دستوری نمایش میدهد که باید آن را روی سرورهای دیگر اجرا کنید تا به کلاستر بپیوندند.
۲. افزودن گرههای کارگر یا همون Worker ها به کلاستر: با اجرای دستوری که گره مدیر ارائه کرده، میتوانید گرههای کارگر را به کلاستر متصل کنید. دستور برای گرههای کارگر معمولاً به شکل زیر است:
docker swarm join --token <token> 192.168.1.10:2377
این دستور را روی سرورهای دیگر اجرا کنید و به کلاستر اضافه شوید.
نکته ی مهم در این بخش که از نکات مهم حوزه ی شبکه هست ، دقت در باز بودن پورت مورد نظر در فایروال است!
۳. ایجاد سرویس در Docker Swarm: حالا میتوانید یک سرویس روی کلاستر خود اجرا کنید. بهعنوان مثال، یک سرویس وب ساده از nginx ایجاد میکنیم:
docker service create --name my-nginx -p 80:80 --replicas 3 nginx
که در اینجا:
آپشن --name my-nginx نام سرویس را مشخص میکند.
آپشن -p 80:80 پورت ۸۰ را برای سرویس در دسترس قرار میدهد.
و آپشن --replicas 3 تعداد نسخههای (Replica) کانتینر را مشخص میکند؛ یعنی ۳ کانتینر nginx روی کلاستر توزیع میشود.
مزایا
خودکارسازی توزیع کانتینرها: Docker Swarm بهطور خودکار کانتینرها را روی گرههای مختلف توزیع میکند.
تابآوری بالا: در صورت از دست رفتن یکی از گرهها، Swarm بهطور خودکار کانتینرها را روی گرههای دیگر بازیابی میکند.
مقیاسپذیری: بهراحتی میتوان تعداد گرهها و کانتینرها را افزایش یا کاهش داد.
بنابر این Docker Swarm ابزاری عالی برای اجرای برنامههای توزیعشده است که بهویژه برای سیستمهایی با نیاز به دسترسی بالا و مدیریت کانتینرها مناسب است.
YouTube
Docker Swarm | Docker Swarm Tutorial | What Is Docker Swarm? | Docker Swarm Example | Simplilearn
"️🔥 Cloud Architect Masters Program - https://www.simplilearn.com/cloud-solutions-architect-masters-program-training?utm_campaign=Tm0Q5zr3FL4&utm_medium=DenoscriptionFFF&utm_source=Youtube
️🔥Purdue - Cloud Computing and DevOps Certification Program - htt…
️🔥Purdue - Cloud Computing and DevOps Certification Program - htt…
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
زیگموند فروید میگه "وسعت شخصیت هر فرد توسط بزرگی مشکلی که میتواند او را از حالت منطقی بیرون آورد تعریف میشود."
تاب آوری و حل مسئله و نحوه برخورد و واکنش افراد در برابر مشکلات و چالش هاشون عیار اونا رو تعیین میکنه!
تاب آوری و حل مسئله و نحوه برخورد و واکنش افراد در برابر مشکلات و چالش هاشون عیار اونا رو تعیین میکنه!
👍6❤🔥1
Media is too big
VIEW IN TELEGRAM
این ویدیو رو کامل ببینید، این تکنولوژی روی سرور های G11 شرکت HPE ارائه میگردد.
🔥4👍2❤🔥1❤1
آپشن --rm در داکر چیست؟
در Docker، گزینه --rm به این معنی است که وقتی اجرای کانتینر به پایان رسید، بهطور خودکار کانتینر حذف شود. این گزینه مخصوصاً برای کانتینرهای موقت مفید است که تنها یک عملیات مشخص را انجام میدهند و دیگر نیازی به حفظ آنها بعد از اتمام کار نیست.
برای مثال:
در این دستور ما محتوای دایرکتوری /etc/nginx را در مسیر /backup کپی میکنیم ، و از طرفی این دایرکتوری backup هم به مسیر /mnt/nginx_config مونت شده است ، پس ما یک کپی از مسیر /etc/nginx در سیستم هاستمون داریم.
در این دستور، پس از کپی کردن فایلها، کانتینر بهطور خودکار حذف میشود و نیازی نیست آن را بهصورت دستی پاک کنید.
پس این آپشن صرفا جهت کپی کردن فایل های دایرکتوری مربوطه ایجاد شده و بعد از انجام عملیات بطور خودکار حذف میشود
در Docker، گزینه --rm به این معنی است که وقتی اجرای کانتینر به پایان رسید، بهطور خودکار کانتینر حذف شود. این گزینه مخصوصاً برای کانتینرهای موقت مفید است که تنها یک عملیات مشخص را انجام میدهند و دیگر نیازی به حفظ آنها بعد از اتمام کار نیست.
برای مثال:
docker run --rm -v /mnt/nginx_config:/backup nginx:alpine cp -r /etc/nginx/* /backup
در این دستور ما محتوای دایرکتوری /etc/nginx را در مسیر /backup کپی میکنیم ، و از طرفی این دایرکتوری backup هم به مسیر /mnt/nginx_config مونت شده است ، پس ما یک کپی از مسیر /etc/nginx در سیستم هاستمون داریم.
در این دستور، پس از کپی کردن فایلها، کانتینر بهطور خودکار حذف میشود و نیازی نیست آن را بهصورت دستی پاک کنید.
پس این آپشن صرفا جهت کپی کردن فایل های دایرکتوری مربوطه ایجاد شده و بعد از انجام عملیات بطور خودکار حذف میشود
❤🔥3