اتاق برنامه نویسی </>
405 subscribers
63 photos
1 video
7 links
📌 کانال آموزش لاراول
@PapiDon_state
Download Telegram
اتاق برنامه نویسی </>
Photo
آشنایی با Heredoc در PHP

آیا تا به حال با مشکل تعریف رشته‌های چند خطی در PHP مواجه شده‌اید؟ 🤔 ممکن است در کار با متن‌های طولانی یا فرمت‌هایی مانند JSON و HTML به دنبال راه حلی راحت‌تر از استفاده مکرر از نقل قول‌ها و کاراکترهای اسکیپ باشید. اینجاست که Heredoc به کمک شما می‌آید!

📖 Heredoc ?

یک سینتکس در PHP است که امکان تعریف راحت و خوانای رشته‌های چند خطی را فراهم می‌کند. این روش به شما اجازه می‌دهد متن‌های بزرگ را بدون نگرانی در مورد اسکیپ کردن کاراکترهای خاص قرار دهید.

🧐 چگونه کار می‌کند؟

برای استفاده از Heredoc، کافی است عبارت <<< را دنبال شده با یک شناسه دلخواه (مثلا EOT) تایپ کنید. سپس، رشته‌ی مورد نظر خود را در خطوط بعدی قرار دهید و با همان شناسه در یک خط جدید به پایان ببرید. مهم است که شناسه پایانی باید در خط جدید و تنها محتوای آن خط باشد، بدون هیچ فضای خالی پیش یا پس از آن.

📌 مثال

<<<EOT

Please inspect the following text and determine if it is spam.

EOT;


🛠 نکات کاربردی:

- شناسه‌ها می‌توانند هر نامی باشند، اما باید معتبر و منحصر به فرد در متن شما باشند.

- اطمینان حاصل کنید که پس از شناسه پایانی و قبل از ; هیچ کاراکتر اضافی وجود ندارد.

- در واقع Heredoc برای قرار دادن HTML، SQL، JSON و هر نوع داده‌ی چند خطی دیگری در کد PHP ایده‌آل است.

🔥 جمع‌بندی:

ابزاری قدرتمند در PHP است که به شما کمک می‌کند با راحتی بیشتری با رشته‌های چند خطی کار کنید. با استفاده از این سینتکس، می‌توانید کدهای خود را خواناتر و مدیریت‌پذیرتر نگه دارید.




📁 #PHP #Heredoc

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
👍31🔥1
اتاق برنامه نویسی </>
Photo
Structuring React Projects with Feature-Driven Development

📁 ساختار پوشه‌های مبتنی بر ویژگی‌ها چیست؟

در این رویکرد، به جای تقسیم کد بر اساس نوع فایل (مانند components, services, utils)، کد را بر اساس ویژگی‌ها یا قابلیت‌های مختلفی که برنامه ارائه می‌دهد، تقسیم‌بندی می‌کنیم. به عبارت دیگر، هر ویژگی یا قابلیت به صورت یک ماژول یا پکیج جدا در می‌آید که تمامی اجزای مرتبط با آن ویژگی، از جمله کامپوننت‌ها، سرویس‌ها، ابزارها و حتی تست‌ها، در یک پوشه مشترک قرار می‌گیرند.

🧐 چرا از این رویکرد استفاده می‌کنیم؟

1️⃣ خوانایی بالا: با نگاه کردن به ساختار پروژه، به راحتی می‌توانید ویژگی‌های مختلف برنامه و اجزای مرتبط با هر ویژگی را شناسایی کنید.

2️⃣ توسعه و نگهداری آسان: هر ویژگی به صورت یک واحد مستقل درآمده و تغییرات مرتبط با یک ویژگی تنها در داخل پوشه مربوط به آن اعمال می‌شود، این امر سبب می‌شود که توسعه و نگهداری کد ساده‌تر و کم خطرتر باشد.

3️⃣ تیمی کار کردن: هر تیم یا فرد می‌تواند روی ویژگی‌های مختلف کار کند بدون آنکه نگران تداخل با کار سایر اعضا باشد.

⚙️ چگونه یک ساختار پوشه مبتنی بر ویژگی‌ها بسازیم؟

1️⃣ تعریف ویژگی‌ها: ابتدا ویژگی‌های اصلی برنامه خود را شناسایی کنید. هر ویژگی می‌تواند مربوط به یک صفحه، یک عملکرد خاص یا حتی یک جزء مجزا باشد.

2️⃣ ایجاد پوشه برای هر ویژگی: برای هر ویژگی یک پوشه ایجاد کنید و نام آن را مطابق با عملکرد یا قابلیتی که ارائه می‌دهد، انتخاب نمایید.

3️⃣ قرار دادن اجزای مرتبط: درون هر پوشه، کامپوننت‌ها، سرویس‌ها، ابزارها و تست‌های مرتبط با آن ویژگی را قرار دهید.

🌟 نکته کلیدی:

حفظ انعطاف‌پذیری و سازگاری در نام‌گذاری و ساختاردهی پوشه‌ها بسیار مهم است. بر اساس نیاز پروژه، ممکن است لازم باشد ساختار پوشه‌ها و نحوه تقسیم‌بندی کدها را تغییر دهید.

🛠 مثال:

فرض کنید در حال توسعه یک فروشگاه آنلاین هستید. می‌توانید ویژگی‌هایی مانند ProductListing, ShoppingCart, UserProfile را تعریف کنید. سپس برای هر کدام یک پوشه ایجاد کنید و تمامی اجزای مربوطه را درون آن قرار دهید.


📂 مثال ساختار پوشه بر اساس ویژگی‌ها در React.js:

این ساختار پوشه، چگونگی تقسیم‌بندی یک پروژه React را بر اساس ویژگی‌های مختلف نشان می‌دهد. هر ویژگی یا قابلیت به عنوان یک ماژول مجزا در نظر گرفته می‌شود که تمامی اجزاء مربوط به آن، در یک پوشه جمع‌آوری شده‌اند.

src/
|-- features/ # پوشه‌ای برای نگهداری تمام ویژگی‌های مختلف برنامه
| |-- authentication/ # ویژگی احراز هویت
| | |-- components/ # کامپوننت‌های مرتبط با احراز هویت
| | | |-- LoginForm.js # فرم ورود
| | | |-- RegisterForm.js # فرم ثبت‌نام
| | |-- services/ # سرویس‌های مرتبط با احراز هویت (مانند درخواست‌های API)
| | |-- hooks/ # هوک‌های مرتبط با احراز هویت
| | |-- authenticationSlice.js # تعریف state و reducerهای مرتبط با احراز هویت
| |-- dashboard/ # ویژگی داشبورد
| | |-- components/ # کامپوننت‌های مرتبط با داشبورد
| | | |-- StatsCard.js # کارت‌های آماری
| | | |-- ActivityFeed.js # فید فعالیت
| | |-- services/ # سرویس‌های مرتبط با داشبورد
| | |-- hooks/ # هوک‌های مرتبط با داشبورد
| | |-- dashboardSlice.js # تعریف state و reducerهای مرتبط با داشبورد
|-- shared/ # پوشه‌ای برای نگهداری اجزای مشترک و کد قابل استفاده مجدد در سراسر برنامه
| |-- components/ # کامپوننت‌های مشترک
| |-- utilities/ # ابزارهای کمکی و توابع مشترک
|-- App.js # کامپوننت اصلی برنامه
|-- index.js # نقطه ورود برنامه


در این ساختار:

- هر ویژگی (authentication, dashboard) به صورت جداگانه در زیر features/ قرار دارد، که این امر تمرکز و توسعه مستقل هر ویژگی را امکان‌پذیر می‌سازد.
- درون هر ویژگی، کامپوننت‌ها، سرویس‌ها، و هوک‌های مرتبط با آن ویژگی جای داده شده‌اند. این به تفکیک وظایف و سهولت در مدیریت کد کمک می‌کند.


⚜️ جمع‌بندی:

استفاده از ساختار پوشه‌های مبتنی بر ویژگی‌ها در React.js می‌تواند به افزایش کارایی و سهولت در مدیریت پروژه‌های بزرگ کمک کند. این رویکرد با ارائه یک نگاه ماژولار و منظم به کد، توسعه و نگهداری آن را تسهیل می‌بخشد و امکان همکاری موثرتری را برای تیم‌های توسعه فراهم می‌آورد.


📁 #React

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
3🔥1
اتاق برنامه نویسی </>
Photo
در این پست، ما به طور کامل در مورد داکر (Docker)، یکی از محبوب‌ترین ابزارها در زمینه‌ی توسعه نرم‌افزار و عملیات می‌پردازیم. داکر یک پلتفرم نرم‌افزاری است که توسعه، انتشار و اجرای برنامه‌های کاربردی را در محیط‌های مجازی شده، که به آن‌ها کانتینر می‌گویند، ساده‌تر می‌کند. این تکنولوژی بر پایه‌ی ایده‌ی ایزوله کردن برنامه‌ها از زیرساخت‌هایی که روی آن اجرا می‌شوند، استوار است. با استفاده از داکر، توسعه‌دهندگان می‌توانند برنامه‌های کاربردی را در کانتینرهایی که تمام وابستگی‌ها و پیکربندی‌های لازم را در خود جای داده‌اند، بسته‌بندی و اجرا کنند.

🌐 مفهوم اصلی داکر

داکر با ارائه‌ی مفهوم کانتینرها، انقلابی در نحوه‌ی توسعه و انتشار نرم‌افزارها به وجود آورده است. کانتینرها اجزای نرم‌افزار را در یک محیط مجازی و ایزوله اجرا می‌کنند. این کانتینرها سبک‌وزن هستند، زیرا به جای اینکه هر کانتینر یک سیستم‌عامل کامل داشته باشد، همه‌ی آن‌ها می‌توانند از هسته‌ی مشترک سیستم‌عامل میزبان استفاده کنند.

🛠 کاربردهای داکر

1️⃣ توسعه نرم‌افزار: داکر به توسعه‌دهندگان امکان می‌دهد تا برنامه‌های کاربردی را در محیطی یکسان اجرا کنند، صرف‌نظر از محیط‌های محلی که روی آن‌ها کار می‌کنند.

2️⃣ تضمین قابلیت اجرا: با بسته‌بندی برنامه‌ها و وابستگی‌هایشان درون کانتینرها، تضمین می‌شود که برنامه در هر محیطی به یک شکل اجرا می‌شود.

3️⃣ مقیاس‌پذیری و انعطاف‌پذیری: داکر اجرای چندین نمونه از یک برنامه را به صورت موازی و با استفاده از منابع کمتر ممکن می‌سازد.

4️⃣ جداسازی و امنیت: کانتینرها از یکدیگر و از سیستم‌عامل میزبان جدا هستند، که این امر امنیت برنامه‌های کاربردی را افزایش می‌دهد.

🏗 ساختار داکر

داکر از چندین مؤلفه کلیدی تشکیل شده است:

🔸داکر انجین (Docker Engine):موتور اپلیکیشنی که کانتینرها را ایجاد و اجرا می‌کند.

🔸داکر هاب (Docker Hub): یک سرویس ابری برای به اشتراک‌گذاری و مدیریت Images کانتینر.

🔸تصاویر داکر (Docker Images): بسته‌های نرم‌افزاری قابل حمل که شامل همه چیز لازم برای اجرای یک برنامه هستند.

🔸کانتینرها (Containers): نمونه‌های اجرایی از تصاویر داکر که می‌توانند بر روی محیط‌های مختلفی اجرا شوند.

💡 نکته‌های کلیدی

- داکر امکان توسعه نرم‌افزار را با استفاده از کانتینرها، که محیط‌های ایزوله هستند، فراهم می‌آورد.

- کانتینرهای داکر سبک‌وزن و سریع هستند و امکان تضمین اجرای یکسان نرم‌افزار در محیط‌های مختلف را می‌دهند.

- داکر برای مواردی مانند توسعه میکروسرویس‌ها، آزمایش و پیاده‌سازی برنامه‌های کاربردی و مدیریت بسترهای تولید، بسیار مناسب است.



📁 #Docker

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
3👍1🔥1
🪻 سال نو مبارک 🪻


تیم پاپیدون سالی پر از برکت، روزی و آرامش و حال خوب رو براتون آرزو می‌کنه
و در هر مسیری از زندگیتون که براش در تلاش هستید به بهترین نحو ممکن به خواسته هاتون برسید و موفقیت رو به بهترین شکل تجربه کنید

❤️🌻🍃🥰
3🔥2👏1
اتاق برنامه نویسی </>
Photo
📘 تعریف Artifact

آرتی‌فکت‌ها در DevOps به فایل‌هایی گفته می‌شوند که به عنوان نتیجه فرایندهای توسعه نرم‌افزار تولید می‌شوند. این می‌تواند شامل باینری‌ها، بسته‌های نرم‌افزاری، تصاویر داکر، و غیره باشد.

🚀 اهمیت آرتی‌فکت‌ها در DevOps

- کارایی: ذخیره‌سازی آرتی‌فکت‌ها در مخزن آرتی‌فکت به تیم‌های توسعه اجازه می‌دهد تا به راحتی و سریعتر به فایل‌های مورد نیاز دسترسی پیدا کنند.
- نظم و انسجام: تمامی فایل‌های مرتبط با یک پروژه نرم‌افزاری در یک مکان منظم و دسترسی‌پذیر نگهداری می‌شوند.
- تکرارپذیری: استفاده از آرتی‌فکت‌های ثابت و مدیریت شده در تمام مراحل توسعه تا تولید، اطمینان حاصل می‌کند که نرم‌افزارها به طور یکسان و بدون تغییر در همه محیط‌ها اجرا می‌شوند.

📦 انواع آرتی‌فکت‌ها

1️⃣ باینری‌ها: فایل‌های اجرایی که مستقیماً می‌توانند بر روی سیستم‌ها اجرا شوند.

2️⃣ بسته‌های نرم‌افزاری: مانند فایل‌های .deb. jar که حاوی نرم‌افزارهای آماده نصب هستند.

3️⃣ تصاویر داکر: نسخه‌های قابل حمل نرم‌افزار که می‌توانند در محیط‌های مختلف به راحتی اجرا شوند.

4️⃣ پایگاه‌های داده موقتی و تنظیمات: داده‌ها و تنظیمات مورد نیاز برای اجرای نرم‌افزار در محیط‌های مختلف.

🏗 مخزن آرتی‌فکت‌ها

محلی برای ذخیره و مدیریت آرتی‌فکت‌ها که اغلب از سیستم‌هایی مانند JFrog Artifactory یا Nexus Repository استفاده می‌شود. این سیستم‌ها امکاناتی مانند:

- نسخه‌بندی: مدیریت نسخه‌های مختلف آرتی‌فکت‌ها.
- امنیت: تأمین امنیت دسترسی به فایل‌های آرتی‌فکت.
- یکپارچگی: اطمینان از یکپارچگی فایل‌های آرتی‌فکت در طول زمان.

🔁 نقش آرتی‌فکت‌ها در CI/CD

در فرایند ادغام مداوم (CI) و تحویل مداوم (CD)، آرتی‌فکت‌ها کلیدی هستند:

- ادغام مداوم (CI): تولید و ذخیره‌سازی آرتی‌فکت‌ها پس از هر تغییر کد برای اطمینان از سازگاری و عملکرد نرم‌افزار.
- تحویل مداوم (CD): استفاده از آرتی‌فکت‌های ثبت‌شده برای استقرار سریع و مکرر نرم‌افزار به محیط‌های مختلف تست و تولید.

🔄 بهترین شیوه‌ها

- استانداردسازی: استفاده از فرمت‌ها و استانداردهای یکسان برای تمام آرتی‌فکت‌ها.
- خودکارسازی: خودکارسازی تولید و استقرار آرتی‌فکت‌ها به منظور کاهش خطاهای انسانی و افزایش کارایی.
- مستندسازی: ثبت تمام فعالیت‌های مرتبط با آرتی‌فکت‌ها برای تسهیل در ردیابی و حل مشکلات.

📚 خلاصه
آرتی‌فکت‌ها بخش مهمی از فرآیند DevOps هستند که به بهبود سرعت، کارایی و امنیت در توسعه نرم‌افزار کمک می‌کنند. استفاده صحیح و مؤثر از آن‌ها می‌تواند تأثیر بسزایی در موفقیت پروژه‌های نرم‌افزاری داشته باشد.




📁 #DevOps

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
1👍1
📚 آشنایی با مفهوم کرنل و سیستم عامل

در دنیای فناوری اطلاعات، تفاوت‌های بین «کرنل» و «سیستم عامل» ممکن است کمی گیج‌کننده به نظر برسد.

🌐 کرنل (Kernel) چیست؟

کرنل را می‌توان به عنوان هسته‌ی مرکزی یا مغز سیستم عامل دانست. کرنل مسئولیت‌های بسیار مهمی دارد:

1️⃣ مدیریت منابع: کرنل کنترل می‌کند که برنامه‌ها چگونه و چه مقدار از منابع سخت‌افزاری مانند CPU و حافظه را استفاده کنند.

2️⃣ ارتباط سخت‌افزار و نرم‌افزار: کرنل به عنوان واسطه‌ای بین دستورات نرم‌افزاری و سخت‌افزار عمل می‌کند.

⌛️ کرنل مانند یک رهبر ارکستر عمل می‌کند که تعیین می‌کند چه نوازنده‌ای در چه زمانی باید نواخته شود تا هماهنگی و تعادل در اجرای قطعه موسیقی برقرار باشد.

💻 سیستم عامل (Operating System) چیست؟

سیستم عامل، که شامل کرنل می‌شود، سیستمی است جامع که وظایف زیر را بر عهده دارد:

🔸 رابط کاربری: فراهم کردن یک محیط گرافیکی (GUI) یا متنی (CLI) برای تعامل کاربران با کامپیوتر.
🔹مدیریت برنامه‌ها: اجرا، مدیریت و بستن برنامه‌ها.
🔸امنیت و دسترسی: تعیین دسترسی‌ها و محافظت از داده‌ها.
🔹پشتیبانی از دستگاه‌ها: مدیریت درایورها و ارتباط با سخت‌افزارهای جانبی.

🖥 سیستم عامل می‌تواند به عنوان یک مرکز کنترل تصور شود که همه جنبه‌های استفاده از کامپیوتر را پوشش می‌دهد، از رابط کاربری گرفته تا امنیت و اجرای برنامه‌ها.

👀 تفاوت کرنل و سیستم عامل

در حالی که کرنل هسته‌ی مرکزی و ضروری سیستم عامل است، سیستم عامل خود شامل کرنل به علاوه تمام برنامه‌ها و ابزارهای لازم برای ایجاد یک محیط کاملاً قابل استفاده است. به طور خلاصه، کرنل زیربنای سیستم عامل است، در حالی که سیستم عامل تجربه کامل کاربری را ارائه می‌دهد.

👨‍💻 برای مثال، لینوکس به طور خاص به کرنل اشاره دارد که در سیستم‌های عامل مختلف مانند Ubuntu و Fedora مورد استفاده قرار می‌گیرد. این سیستم‌های عامل از کرنل لینوکس استفاده می‌کنند اما از طریق افزودن برنامه‌ها، رابط‌های کاربری و سایر عناصر، تجربه‌ی کاربری متفاوتی را ارائه می‌دهند.


📁 #DevOps

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
2👍1🔥1
📘 توضیح مفهوم Open Source و Closed Source

در دنیای نرم‌افزار، اصطلاحات "Open Source" (منبع باز) و "Closed Source" (منبع بسته) دو رویکرد متفاوت در توسعه و توزیع نرم‌افزار را نشان می‌دهند. بیایید با زبانی ساده این دو مفهوم را بررسی کنیم و ببینیم آیا "Open Source" همیشه به معنای رایگان است یا خیر.

🌐 Open Source (منبع باز)

نرم‌افزار منبع باز به نرم‌افزاری گفته می‌شود که کد منبع آن برای عموم قابل دسترسی است. این به کاربران اجازه می‌دهد که:

1️⃣ مشاهده کنند: کاربران می‌توانند کد نرم‌افزار را بررسی کنند تا بفهمند دقیقاً چگونه کار می‌کند.

2️⃣ تغییر دهند: افراد می‌توانند تغییرات یا بهبودهایی در کد ایجاد کنند.

3️⃣ به اشتراک بگذارند: کاربران می‌توانند کد تغییر یافته یا اصلی را با دیگران به اشتراک بگذارند.

👨‍💻 برای مثال، سیستم عامل‌هایی مانند Linux و برنامه‌هایی مثل Firefox و LibreOffice از جمله محصولات نرم‌افزاری منبع باز هستند.

🔒 Closed Source (منبع بسته)

نرم‌افزار منبع بسته، که گاهی اوقات به عنوان "proprietary software" نیز شناخته می‌شود، نرم‌افزاری است که کد منبع آن فقط توسط ایجادکنندگانش قابل دسترسی و ویرایش است. این نوع نرم‌افزار:

1️⃣ محدودیت دسترسی: کاربران نمی‌توانند کد منبع را مشاهده یا تغییر دهند.

2️⃣ خرید لایسنس: معمولاً برای استفاده از نرم‌افزار باید هزینه‌ای پرداخت شود.

3️⃣ پشتیبانی و بروزرسانی‌ها: توسعه دهندگان نرم‌افزار برای پشتیبانی و به‌روزرسانی‌های آن مسئول هستند.

نمونه‌هایی از نرم‌افزار منبع بسته شامل Microsoft Windows و Adobe Photoshop می‌باشند.

آیا Open Source به معنای رایگان است؟

اینکه نرم‌افزاری منبع باز است به این معنا نیست که حتماً رایگان باشد. "رایگان" به قیمت نرم‌افزار اشاره دارد، در حالی که "منبع باز" به دسترسی به کد منبع اشاره دارد. بسیاری از نرم‌افزارهای منبع باز بدون هزینه قابل دانلود و استفاده هستند، اما برخی دیگر ممکن است برای ویژگی‌های پیشرفته یا پشتیبانی تخصصی هزینه‌ای دریافت کنند.

🔑 به طور خلاصه، منبع باز یک مدل توسعه نرم‌افزار است که تأکید بر شفافیت، همکاری و دسترسی آزاد به کد منبع دارد، در حالی که منبع بسته کنترل بیشتری بر نرم‌افزار و کاربرد آن دارد.


📁 #SoftwareTransparency

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
اتاق برنامه نویسی </>
Photo
Namespace in Linux

در لینوکس یک ویژگی از هسته لینوکس است که به فرآیندها (Processes) امکان می‌دهد تا فقط بخشی از سیستم‌عامل و منابع موجود را ببینند. این به‌طور موثری اجازه می‌دهد که هر فرآیند فکر کند که بر روی یک سیستم مستقل و اختصاصی در حال اجرا است.

در لینوکس Namespace، مکانیزمی برای فراهم کردن ایزولاسیون و مدیریت منابع برای فرآیندهای در حال اجرا است. این ویژگی به فرآیندها این امکان را می‌دهد که فقط بخش‌هایی از سیستم عامل را که به آن‌ها اختصاص داده شده مشاهده و استفاده کنند.

⁉️ چرا Namespace ها مهم هستند؟

برای ایجاد ایزولاسیون بین فرآیندهای در حال اجرا در یک سیستم عامل واحد استفاده می‌شوند. این ایزولاسیون به مدیریت بهتر منابع و امنیت سیستم کمک می‌کند.

انواع Namespace در لینوکس:

1️⃣ PID Namespace:
ایزوله کردن فرآیندهای سیستم. هر PID namespace دارای مجموعه‌ای منحصر به فرد از شناسه‌های فرآیند است.

2️⃣ Network Namespace:
ایزوله کردن منابع شبکه. فرآیندهای داخل یک Network Namespace فقط می‌توانند اجزای شبکه‌ای را که به آن‌ها اختصاص داده شده ببینند، مانند اینترفیس‌ها، جداول مسیریابی، و آدرس‌های IP.

3️⃣ Mount Namespace:
ایزوله کردن نقاط اتصال فایل سیستم. این امر به فرآیندها اجازه می‌دهد که نمایی منحصر به فرد از ساختار فایل سیستم داشته باشند.

4️⃣ UTS Namespace:
ایزوله کردن نام سیستم و نام دامنه. تغییرات در یک UTS Namespace تأثیری بر سایر Namespace‌ها ندارد.

5️⃣ User Namespace:
ایزوله کردن شناسه‌های کاربر و گروه. یک فرآیند می‌تواند دارای دسترسی‌های ریشه (root) در یک User Namespace باشد، بدون آنکه بر دیگر Namespace‌ها تأثیر بگذارد.

6️⃣ IPC Namespace:
ایزوله کردن سازوکارهای بین فرآیندی (Inter-process communication) مانند صف‌های پیام و حافظه مشترک.

⚙️ چگونه Namespace ها به داکر کمک می‌کنند؟

در داکر، Namespace ها بخش کلیدی برای فراهم کردن ایزولاسیون بین کانتینرها هستند. هر کانتینر می‌تواند دارای Namespace‌های مختلفی باشد که اجازه می‌دهد آنها به طور مجزا از دیگر کانتینرها اجرا شوند. این به ایمن‌سازی کانتینرها کمک می‌کند و مطمئن می‌شود که فعالیت‌های یک کانتینر تأثیری بر دیگر کانتینرها نداشته باشد.

🎲 نتیجه‌گیری:

در لینوکس Namespace‌ها ابزارهای قدرتمندی هستند که مدیریت منابع و ایزولاسیون را در سطح سیستم‌عامل بهبود می‌بخشند. این تکنولوژی به مدیران سیستم اجازه می‌دهد تا محیط‌های مجزا و امن را برای فرآیندهای مختلف فراهم کنند، که این امر به کاربردهای امنیتی، توسعه نرم‌افزار و مدیریت منابع به طور وسیع کمک می‌کند. Namespace‌ها با فراهم کردن این قابلیت‌ها، لینوکس را به یک پلتفرم بسیار قابل تطبیق و انعطاف‌پذیر برای محیط‌های چندکاربره و چندبرنامه‌ای تبدیل می‌کنند.



📁 #Linux

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1👏1
🛡 مفهوم DAC
( Discretionary Access Control )

تصور کنید شما صاحب یک خانه هستید و تصمیم می‌گیرید که چه کسانی می‌توانند وارد خانه‌تان شوند یا از وسایل داخل آن استفاده کنند. در سیستم‌های کامپیوتری، DAC (کنترل دسترسی اختیاری) به همین معناست؛ یعنی صاحب فایل‌ها و منابع سیستم می‌تواند تصمیم بگیرد که چه کسانی می‌توانند به آن‌ها دسترسی داشته باشند.

کاربرد DAC چیست؟

- کنترل دسترسی توسط مالک: مالک فایل‌ها و منابع سیستم می‌تواند تصمیم بگیرد که چه کسانی به آن‌ها دسترسی داشته باشند.

- انعطاف‌پذیری: امکان تغییر دسترسی‌ها به سادگی توسط مالک وجود دارد.

- مدیریت کاربران: تعیین و مدیریت دسترسی‌های کاربران به منابع مختلف سیستم.

⚙️ چگونه DAC کار می‌کند؟

در سیستم‌عامل‌های مبتنی بر لینوکس، هر فایل یا پوشه‌ای دارای مالک (کاربر) و گروه است. مالک می‌تواند سطوح دسترسی مختلفی را برای خود، گروه و سایر کاربران تعیین کند. این سطوح دسترسی به سه دسته اصلی تقسیم می‌شوند:

1️⃣ خواندن (Read - r): امکان مشاهده محتویات فایل یا پوشه.

2️⃣ نوشتن (Write - w): امکان تغییر محتویات فایل یا ایجاد و حذف فایل‌ها در پوشه.

3️⃣ اجرا (Execute - x): امکان اجرای فایل به عنوان برنامه یا دسترسی به محتویات پوشه.

📝 مزایای DAC

🔸 سادگی: پیاده‌سازی و مدیریت آسان.
🔸 انعطاف‌پذیری: مالک می‌تواند به راحتی دسترسی‌ها را تغییر دهد.
🔸کنترل مستقیم: مالک فایل یا پوشه کنترل کاملی بر روی دسترسی‌ها دارد.

🛠 محدودیت‌های DAC

امنیت کمتر: در مقایسه با سیستم‌های کنترل دسترسی اجباری (MAC)، امنیت کمتری دارد زیرا کاربران می‌توانند به طور دلخواه دسترسی‌ها را تغییر دهند.

پیچیدگی در مدیریت زیاد کاربران: در سیستم‌هایی با تعداد کاربران زیاد، مدیریت دسترسی‌ها ممکن است پیچیده شود.

جمع‌بندی

یک روش ساده و موثر برای کنترل دسترسی‌ها در سیستم‌های لینوکسی است که به مالک فایل‌ها اجازه می‌دهد تا به راحتی تعیین کند که چه کسانی می‌توانند به فایل‌ها و پوشه‌هایش دسترسی داشته باشند.



📁 #Linux #DAC

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
اتاق برنامه نویسی </>
🛡 مفهوم DAC ( Discretionary Access Control ) تصور کنید شما صاحب یک خانه هستید و تصمیم می‌گیرید که چه کسانی می‌توانند وارد خانه‌تان شوند یا از وسایل داخل آن استفاده کنند. در سیستم‌های کامپیوتری، DAC (کنترل دسترسی اختیاری) به همین معناست؛ یعنی صاحب فایل‌ها…
☄️ مفهوم MAC

( Mandatory Access Control )

تصور کنید شما مدیر یک شرکت بزرگ هستید و می‌خواهید مطمئن شوید که فقط افراد مشخصی به بخش‌های مختلف شرکت دسترسی دارند. مثلاً تنها کارمندان بخش مالی به اطلاعات مالی دسترسی داشته باشند و بقیه نتوانند به این اطلاعات دسترسی پیدا کنند. در سیستم‌های کامپیوتری، MAC (کنترل دسترسی اجباری) به همین معناست؛ یعنی یک سیاست امنیتی مرکزی که دسترسی به منابع سیستم را کنترل می‌کند و کاربران نمی‌توانند این سیاست‌ها را تغییر دهند.

👀 کاربرد MAC چیست؟

- امنیت بالا: جلوگیری از دسترسی غیرمجاز به اطلاعات حساس.
- کنترل مرکزی: مدیران سیستم می‌توانند سیاست‌های امنیتی را به صورت مرکزی و دقیق تنظیم کنند.
- عدم تغییر توسط کاربران: کاربران نمی‌توانند سیاست‌های دسترسی را تغییر دهند و فقط می‌توانند در چارچوب‌های تعیین شده عمل کنند.

⚙️ چگونه MAC کار می‌کند؟

در سیستم‌های مبتنی بر لینوکس، MAC با استفاده از ماژول‌های امنیتی خاصی پیاده‌سازی می‌شود که سیاست‌های امنیتی را اعمال می‌کنند. این سیاست‌ها می‌توانند بسیار دقیق و پیچیده باشند و به مدیران سیستم اجازه دهند که دسترسی به فایل‌ها، پوشه‌ها، پورت‌ها و سایر منابع را به طور کامل کنترل کنند.

🛡 ماژول‌های معروف MAC در لینوکس

1️⃣ SELinux (Security-Enhanced Linux):

- توسط NSA توسعه داده شده است و از سیاست‌های امنیتی بسیار دقیق پشتیبانی می‌کند.
- اجازه می‌دهد تا سیاست‌های امنیتی پیچیده‌ای را تعریف کنید که کنترل دقیقی بر دسترسی‌ها دارند.

2️⃣ AppArmor:

- توسط Novell/SUSE توسعه داده شده و سیاست‌های امنیتی را با استفاده از پروفایل‌ها اعمال می‌کند.
- هر پروفایل می‌تواند دسترسی‌های مجاز یک برنامه را مشخص کند.

3️⃣ SMACK (Simplified Mandatory Access Control Kernel):

- توسط Intel توسعه داده شده و سیاست‌های امنیتی را به صورت ساده‌تری پیاده‌سازی می‌کند.
- برچسب‌های امنیتی ساده‌ای برای کنترل دسترسی‌ها استفاده می‌شود.

🗂 مثالی از MAC در لینوکس

فرض کنید شما یک سیستم با SELinux دارید. SELinux سیاست‌های امنیتی خود را به فایل‌ها و برنامه‌ها اعمال می‌کند. مثلاً یک برنامه ممکن است اجازه نداشته باشد به فایل‌های خاصی دسترسی پیدا کند، حتی اگر مالک آن فایل اجازه دسترسی را داده باشد.

مثال:
فرض کنید یک فایل به نام secure_file.txt دارید. در حالت عادی (بدون MAC)، مالک فایل می‌تواند دسترسی‌ها را تعیین کند:

-rw-r--r-- 1 user group 0 May 17 12:00 secure_file.txt


اما با فعال بودن SELinux، سیاست‌های امنیتی بیشتری اعمال می‌شود. مثلاً سیاست SELinux ممکن است بگوید که تنها برنامه‌های خاصی می‌توانند به این فایل دسترسی داشته باشند، حتی اگر دسترسی فایل به صورت عمومی تنظیم شده باشد.

🔼 مزایای MAC

- امنیت بالا: با اعمال سیاست‌های دقیق، امنیت سیستم بهبود می‌یابد.
- کنترل مرکزی: مدیران سیستم می‌توانند به صورت مرکزی سیاست‌های امنیتی را کنترل کنند.
- پیشگیری از دسترسی غیرمجاز: جلوگیری از دسترسی غیرمجاز به منابع حساس.

❗️ محدودیت‌های MAC

- پیچیدگی در تنظیمات: پیاده‌سازی و تنظیم سیاست‌های MAC می‌تواند پیچیده و زمان‌بر باشد.
- سختی در تطابق با نیازهای خاص: سیاست‌های عمومی ممکن است نیازهای خاص همه کاربران را پوشش ندهند و نیاز به سفارشی‌سازی داشته باشند.
- نیاز به آموزش و آگاهی بیشتر: کاربران و مدیران سیستم نیاز به آموزش و آگاهی بیشتری برای کار با MAC دارند.

جمع‌بندی

یک روش پیشرفته برای کنترل دسترسی‌ها در سیستم‌های لینوکسی است که با اعمال سیاست‌های امنیتی مرکزی و دقیق، امنیت سیستم را بهبود می‌بخشد. با استفاده از ماژول‌های امنیتی مانند SELinux و AppArmor، مدیران سیستم می‌توانند دسترسی به منابع را به دقت کنترل کنند و از دسترسی غیرمجاز جلوگیری کنند. با این حال، پیچیدگی پیاده‌سازی و نیاز به آموزش‌های بیشتر از جمله چالش‌های استفاده از MAC است.



📁 #Linux #MAC

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1👏1
اتاق برنامه نویسی </>
Photo
⭐️ مفهوم CGroup در لینوکس به زبان ساده

CGroup (Control Group)

یکی از ویژگی‌های مهم در سیستم‌عامل لینوکس است که به شما امکان مدیریت منابع سیستمی مانند CPU، حافظه، دیسک و شبکه را برای گروهی از فرآیندها می‌دهد. این ابزار برای کنترل و محدود کردن استفاده از منابع توسط برنامه‌ها و سرویس‌ها بسیار مفید است.

🖥 مفهوم CGroup :

1️⃣ گروه‌بندی فرآیندها: CGroup به شما این امکان را می‌دهد که فرآیندهای مرتبط را در یک گروه قرار دهید. به عنوان مثال، می‌توانید همه فرآیندهای یک برنامه خاص را در یک گروه بگذارید.

2️⃣ مدیریت منابع: بعد از گروه‌بندی فرآیندها، می‌توانید منابع سیستمی را به آن گروه اختصاص دهید یا محدود کنید. مثلاً می‌توانید تعیین کنید که این گروه از فرآیندها فقط از 20 درصد از CPU استفاده کنند یا بیش از 1 گیگابایت حافظه مصرف نکنند.

3️⃣ نظارت و کنترل: با استفاده از CGroup، می‌توانید مصرف منابع توسط گروه‌های مختلف را نظارت کنید و در صورت نیاز تنظیمات را تغییر دهید تا از استفاده بیش از حد منابع جلوگیری کنید.

کاربردهای CGroup:

- محدود کردن منابع: برای جلوگیری از اینکه یک برنامه تمام منابع سیستم را مصرف کند و باعث کاهش کارایی دیگر برنامه‌ها شود.

- بهبود امنیت: با محدود کردن دسترسی به منابع، می‌توانید از رفتارهای مخرب جلوگیری کنید.

- مدیریت سرویس‌ها: در سرورهای بزرگ و پیچیده، می‌توانید سرویس‌های مختلف را با استفاده از CGroup مدیریت و کنترل کنید تا هر کدام منابع مشخصی داشته باشند.

🔖 مثال ساده:

فرض کنید یک سرور دارید که چندین سرویس مختلف روی آن اجرا می‌شود. می‌خواهید اطمینان حاصل کنید که سرویس وب شما همیشه عملکرد خوبی دارد و تحت تاثیر سرویس‌های دیگر قرار نمی‌گیرد. با استفاده از CGroup، می‌توانید:

- گروهی برای فرآیندهای سرویس وب ایجاد کنید.
- محدودیت‌هایی برای استفاده از CPU و حافظه این گروه تعیین کنید.
- مطمئن شوید که حتی اگر سرویس‌های دیگر منابع زیادی مصرف کنند، سرویس وب شما همچنان منابع کافی برای کار کردن دارد.

🐳 چگونه Docker از CGroup استفاده می‌کند؟

1️⃣ مدیریت منابع: Docker از CGroup برای مدیریت منابع استفاده می‌کند. به این معنا که می‌تواند منابع CPU، حافظه، دیسک و شبکه را برای هر کانتینر به طور جداگانه محدود کند.

2️⃣ ایزوله‌سازی: CGroup به Docker کمک می‌کند تا هر کانتینر را از کانتینرهای دیگر ایزوله کند. این ایزوله‌سازی به اطمینان از اینکه فرآیندهای یک کانتینر نمی‌توانند منابع کانتینرهای دیگر را تحت تأثیر قرار دهند، کمک می‌کند.

3️⃣ نظارت و کنترل: Docker با استفاده از CGroup می‌تواند مصرف منابع هر کانتینر را نظارت کند و در صورت نیاز تنظیمات منابع را تغییر دهد تا از کارایی و پایداری سیستم اطمینان حاصل کند.


نتیجه‌گیری:

پس CGroup ابزاری قدرتمند در لینوکس است که به شما امکان مدیریت بهتر منابع سیستمی را می‌دهد. با استفاده از CGroup می‌توانید فرآیندها را گروه‌بندی کنید، منابع را به صورت دقیق تخصیص دهید و از کارایی و پایداری سیستم خود مطمئن شوید.


📁 #Linux #Docker

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21
اتاق برنامه نویسی </>
Photo
🖥 حل مشکل دانلود متادیتا برای مخازن CentOS در کانتینر داکر با استفاده از مخازن Vault

🧐هنگامی که تلاش می‌کنید بسته‌ای را در داخل کانتینر CentOS-8 با استفاده از yum نصب کنید، ممکن است با خطای زیر مواجه شوید:

Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist


علت مشکل:

این مشکل به دلیل پایان عمر (EOL) CentOS 8 و عدم دسترسی به مخازن پیش‌فرض CentOS به وجود می‌آید. زمانی که CentOS 8 به پایان عمر خود رسید، مخازن پیش‌فرض آن دیگر به‌روزرسانی نمی‌شوند و دسترسی به آنها ممکن است محدود یا قطع شود. بنابراین نیاز است که از مخازن جایگزین مانند مخازن Vault استفاده کنیم.

⚙️ راه حل:

1️⃣ ایجاد یا ویرایش فایل مخزن

ابتدا باید مخازن Vault را در یک فایل مخزن جدید تنظیم کنیم تا بتوانیم به بسته‌های مورد نیاز دسترسی پیدا کنیم.

- ایجاد یا ویرایش یک فایل مخزن جدید:

vi /etc/yum.repos.d/CentOS-Vault.repo


- اضافه کردن مخازن Vault:

محتوای زیر را در فایل قرار دهید:

[AppStream]
name=CentOS-$releasever - AppStream
baseurl=http://vault.centos.org/8.3.2011/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[BaseOS]
name=CentOS-$releasever - Base
baseurl=http://vault.centos.org/8.3.2011/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[extras]
name=CentOS-$releasever - Extras
baseurl=http://vault.centos.org/8.3.2011/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial


2️⃣ غیرفعال کردن مخازن پیش‌فرض

باید مطمئن شویم که مخازن پیش‌فرض CentOS غیرفعال شده‌اند تا تداخل ایجاد نشود.

- ویرایش فایل‌های مخازن پیش‌فرض:

فایل‌های مخازن پیش‌فرض در مسیر /etc/yum.repos.d/ قرار دارند. به عنوان مثال، فایل‌های زیر را ویرایش کنید:

vi /etc/yum.repos.d/CentOS-Linux-AppStream.repo
vi /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
vi /etc/yum.repos.d/CentOS-Linux-Extras.repo


- غیرفعال کردن مخازن پیش‌فرض:

در هر کدام از این فایل‌ها، خط enabled را به 0 تغییر دهید. به عنوان مثال:

[AppStream]
name=CentOS-$releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial


همین تغییر را برای BaseOS و Extras انجام دهید.

3️⃣ پاک کردن کش YUM و به‌روزرسانی

- پاک کردن کش YUM:

yum clean all


- به‌روزرسانی لیست بسته‌ها:

yum makecache


4️⃣ نصب بسته tree

- نصب بسته tree:

حالا باید بتوانید بسته tree را بدون مشکل نصب کنید.

yum install tree


⁉️ پرسش‌های متداول (FAQ)

🤔متادیتا چیست؟

متادیتا شامل اطلاعاتی در مورد بسته‌ها، نسخه‌ها، وابستگی‌ها و سایر جزئیات مرتبط با مخازن نرم‌افزاری است. yum از متادیتا برای جستجو و مدیریت بسته‌ها استفاده می‌کند.

متادیتا اطلاعاتی است که yum از آن برای مدیریت بسته‌ها استفاده می‌کند. این اطلاعات شامل:
- لیست بسته‌های موجود
- نسخه‌های مختلف هر بسته
- وابستگی‌های هر بسته
- اطلاعات مربوط به امنیت و بروزرسانی‌ها

بدون دسترسی به متادیتا، yum نمی‌تواند بسته‌های مورد نظر شما را پیدا و نصب کند.

🤓مخازن Vault چیست؟

مخازن Vault شامل نسخه‌های قدیمی‌تر از بسته‌های نرم‌افزاری است که برای نسخه‌هایی از سیستم عامل که به پایان عمر خود رسیده‌اند (EOL) استفاده می‌شود. این مخازن به شما امکان دسترسی به بسته‌های نرم‌افزاری و بروزرسانی‌ها را حتی پس از پایان عمر رسمی نسخه سیستم عامل می‌دهند.

مخازن Vault به شما اجازه می‌دهند تا به نسخه‌های قدیمی‌تر بسته‌ها دسترسی داشته باشید که دیگر در مخازن اصلی موجود نیستند. این مخازن به ویژه برای سیستم‌های قدیمی که به پایان عمر خود رسیده‌اند (EOL) مفید هستند.


📁 #Linux #Docker

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥1
مفهوم Mount کردن در لینوکس به زبان ساده

تصور کنید که شما یک کمد لباس دارید که پر از لباس‌های مختلفه. حالا فرض کنید این کمد توی اتاق دیگه‌ای هست و شما نمی‌تونید به راحتی به لباس‌هاتون دسترسی پیدا کنید. اما اگه شخصی اون کمد رو به اتاق شما بیاره و توی گوشه‌ای از اتاقت بذارن، شما می‌تونید خیلی راحت به همه لباس‌ها دسترسی داشته باشید.

در دنیای کامپیوتر هم، وقتی می‌خواهیم به فایل‌ها و پوشه‌هایی که روی یک دیسک یا پارتیشن (مثل همون کمد لباس‌ها) هستند دسترسی پیدا کنیم، باید اون دیسک یا پارتیشن رو به یک دایرکتوری (مثل همون اتاق شما) Mount کنیم. این کار باعث میشه که کامپیوتر بدونه این دیسک یا پارتیشن رو کجا پیدا کنه و بتونه فایل‌ها رو بخونه و بنویسه.

🧐 چرا باید Mount کنیم؟

1️⃣ دسترسی راحت‌تر به فایل‌ها: مثل وقتی که کمد لباس‌هاتون توی اتاقتون هست، وقتی یک دیسک یا پارتیشن رو Mount می‌کنیم، می‌تونیم راحت‌تر به فایل‌ها دسترسی داشته باشیم.

2️⃣ مرتب و سازمان‌دهی شده: فرض کنید همه لباس‌هاتون توی یک کمد بزرگ و درهم باشند. پیدا کردن یک لباس خاص خیلی سخت میشه. اما اگر کمدهای جداگانه برای هر نوع لباس داشته باشید، پیدا کردنشون خیلی راحت‌تر میشه. در کامپیوتر هم، هر دیسک یا پارتیشن می‌تونه به یک دایرکتوری خاص Mount بشه تا فایل‌ها بهتر سازمان‌دهی بشن.

3️⃣ مدیریت بهتر: وقتی که یک دیسک یا پارتیشن Mount میشه، می‌تونید راحت‌تر بفهمید چقدر فضا استفاده شده و چقدر فضا خالی دارید. این کار مثل این می‌مونه که بدونید چقدر از کمد لباس‌هاتون پر شده و چقدر جا برای لباس‌های جدید دارید.



📁 #Linux

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
👏2🔥1