"regression testing"? What's that? If it compiles, it is good, if it boots up it is perfect.
- linux torvalds
- linux torvalds
درباره arch
Arch Linux is an independently developed, x86-64 general purpose GNU/Linux distribution versatile enough to suit any role. Development focuses on simplicity, minimalism, and code elegance. Arch is installed as a minimal base system, configured by the user upon which their own ideal environment is assembled by installing only what is required or desired for their unique purposes. GUI configuration utilities are not officially provided, and most system configuration is performed from the shell by editing simple text files. Arch strives to stay bleeding edge, and typically offers the latest stable versions of most software.
Arch Linux uses its own Pacman package manager, which couples simple binary packages with an easy-to-use package build system. This allows users to easily manage and customize packages ranging from official Arch software to the user's own personal packages to packages from 3rd party sources. The repository system also allows users to easily build and maintain their own custom build scripts, packages, and repositories, encouraging community growth and contribution.
https://archlinux.org/about/
Arch Linux is an independently developed, x86-64 general purpose GNU/Linux distribution versatile enough to suit any role. Development focuses on simplicity, minimalism, and code elegance. Arch is installed as a minimal base system, configured by the user upon which their own ideal environment is assembled by installing only what is required or desired for their unique purposes. GUI configuration utilities are not officially provided, and most system configuration is performed from the shell by editing simple text files. Arch strives to stay bleeding edge, and typically offers the latest stable versions of most software.
Arch Linux uses its own Pacman package manager, which couples simple binary packages with an easy-to-use package build system. This allows users to easily manage and customize packages ranging from official Arch software to the user's own personal packages to packages from 3rd party sources. The repository system also allows users to easily build and maintain their own custom build scripts, packages, and repositories, encouraging community growth and contribution.
https://archlinux.org/about/
نوشتههای ترمینالی
تفاوت lxc با docker https://medium.com/@harsh.manvar111/lxc-vs-docker-lxc-101-bd49db95933a
برای sandbox کردن برنامهها، راههای متفاوت و سخت و آسونی وجود داره.
راههای virtualization مثل virtual box و vmware و parallels که کل یه OS رو شبیهسازی میکنه. قاعدتا سربار زیادی داره. دیر بالا میاد، مموری اضافه میگیره و ..
راههای دیگه، مبتنی بر همین سیستمعاملیه که داریم. یعنی با امکانات سیستمعامل، یه محیطی رو فراهم کنیم که یه پروسس با پروسس های دیگه کاری نداشته باشه.
قاعدتا سیستم عامل خوب همین کار رو همیشه انجام میده. مثلا فضای حافظه رو جدا میکنه که پروسس ها به حافظهی هم کار نداشته باشن.
حالا میتونیم از امکانات بیشتری استفاده کنیم.
مثلا این امکاناتی که تو سیستمعاملهای خوب (لینوکس!) وجود داره ایناست:
cgroups
chroot
namespace
seccomp
(البته احتمالا بازم هست ولی من بلد نیستم)
اولی که مخفف control groups هست، برای هر پروسس یه سری limit مثل مصرف حافظه، cpu و disk و network میذاره. استفاده ازش (به صورت مستقیم) خیلی آسون نیست اما کارش خیلی درسته.
دومی که به معنی change rootئه، میاد و مسیر روت (/) یه پروسسی رو میذاره تو یه پوشهای، در نتیجه اون پروسس اصلا نمیتونه بیرون از اون پوشه رو دست بزنه چون هر مسیری که بده تو همون پوشههه میفته.
اگرچه مکانیسم امنیتی نیست و کاربردهای خاص خودش رو داره اما عملا میشه دسترسی به فایلهای فایلسیستم رو محدود کرد.
سومی یا همون namespace، در واقع اون چیزی که توی cpp داشتیم نیست! کارش راحتی برنامهنویس نیست بلکه گروههای پروسسی رو از هم جدا میکنه و اساس کار کانتینرهاست.
چهارمی (seccomp) که مخفف secure computing mode، باز هم امکان کرنل لینوکس برای رفتن به یه حالت امنه. تو این حالت امن برنامه سیستمکال های خیلی خاصی مثل exit میتونه بزنه یا نهایتا خوندن و نوشتن همون فایلهایی که قبل secure شدن باز داشته.
حالا چطوری با این امکانات، امنیت ایجاد کنیم؟ یه راهش contianerها هستند.
کانتینرها مثل openvz و lxd (مخفف linux container) میان و یه لینوکس داخل لینوکس خودتون میدن که عملا هسته لینوکس شما اون رو کنترل میکنه، منتهی با فضای پروسس و منابع و حتی فایلهای جدا.
روی این lxd یه سری اومدن docker رو ساختن که از مکانیسم های lxd استفاده میکنه اما محبوب و کاربرپسند شده به دلایلی.
حالا گفته میشه که هدف کانتینرها امنیت نیست. یعنی اینکه اگرچه یه فضای جدا برا خودشون دارن اما در عمل نمیشه ۱۰۰ درصد مطمئن بود پروسسی که داخل کانتینره به بیرون کاری نکنه. حالا اگه کانتینر بیرون روت نباشه (unprivileged container) امنیت یکم بیشتر میشه اما باز ۱۰۰درصدی نیست.
اما جدا از کانتینر که کلا یه فضای جدید باز میکنه و بازم سربار داره، ابزارهای دیگهای هستن مثل firejail و isolate که میاد مثل یه wrapper برای ابزارهایی که گفتم عمل میکنه. مثلا جلوی دسترسی به شبکه یا یه سری فایل حساس رو میبنده (یا فقط read only میکنه)
کاربرد کانتینرها مثل داکر رو که همه آشنا هستیم، برای درست کردن یه سیستم جدا با نصب بودن برنامههای خاص و معماری خاصه که توسعه نرمافزار رو راحت کنه.
مدل دوم مخصوصا isolate توی جاج های انلاین استفاده میشه تا سرورشون رو در مقابل برنامههای احتمالا مخرب محافظت کنن.
اما firejail گویا کاربرد عمومی داره، برای هر نرم افزار یه پروفایل تعریف کرده که به چه چیزهایی اجازه دسترسی داره و در نتیجه نرمافزارها کار عجیب دیگهای نکنن و امنیت کلی سیستم بره بالا.
راههای virtualization مثل virtual box و vmware و parallels که کل یه OS رو شبیهسازی میکنه. قاعدتا سربار زیادی داره. دیر بالا میاد، مموری اضافه میگیره و ..
راههای دیگه، مبتنی بر همین سیستمعاملیه که داریم. یعنی با امکانات سیستمعامل، یه محیطی رو فراهم کنیم که یه پروسس با پروسس های دیگه کاری نداشته باشه.
قاعدتا سیستم عامل خوب همین کار رو همیشه انجام میده. مثلا فضای حافظه رو جدا میکنه که پروسس ها به حافظهی هم کار نداشته باشن.
حالا میتونیم از امکانات بیشتری استفاده کنیم.
مثلا این امکاناتی که تو سیستمعاملهای خوب (لینوکس!) وجود داره ایناست:
cgroups
chroot
namespace
seccomp
(البته احتمالا بازم هست ولی من بلد نیستم)
اولی که مخفف control groups هست، برای هر پروسس یه سری limit مثل مصرف حافظه، cpu و disk و network میذاره. استفاده ازش (به صورت مستقیم) خیلی آسون نیست اما کارش خیلی درسته.
دومی که به معنی change rootئه، میاد و مسیر روت (/) یه پروسسی رو میذاره تو یه پوشهای، در نتیجه اون پروسس اصلا نمیتونه بیرون از اون پوشه رو دست بزنه چون هر مسیری که بده تو همون پوشههه میفته.
اگرچه مکانیسم امنیتی نیست و کاربردهای خاص خودش رو داره اما عملا میشه دسترسی به فایلهای فایلسیستم رو محدود کرد.
سومی یا همون namespace، در واقع اون چیزی که توی cpp داشتیم نیست! کارش راحتی برنامهنویس نیست بلکه گروههای پروسسی رو از هم جدا میکنه و اساس کار کانتینرهاست.
چهارمی (seccomp) که مخفف secure computing mode، باز هم امکان کرنل لینوکس برای رفتن به یه حالت امنه. تو این حالت امن برنامه سیستمکال های خیلی خاصی مثل exit میتونه بزنه یا نهایتا خوندن و نوشتن همون فایلهایی که قبل secure شدن باز داشته.
حالا چطوری با این امکانات، امنیت ایجاد کنیم؟ یه راهش contianerها هستند.
کانتینرها مثل openvz و lxd (مخفف linux container) میان و یه لینوکس داخل لینوکس خودتون میدن که عملا هسته لینوکس شما اون رو کنترل میکنه، منتهی با فضای پروسس و منابع و حتی فایلهای جدا.
روی این lxd یه سری اومدن docker رو ساختن که از مکانیسم های lxd استفاده میکنه اما محبوب و کاربرپسند شده به دلایلی.
حالا گفته میشه که هدف کانتینرها امنیت نیست. یعنی اینکه اگرچه یه فضای جدا برا خودشون دارن اما در عمل نمیشه ۱۰۰ درصد مطمئن بود پروسسی که داخل کانتینره به بیرون کاری نکنه. حالا اگه کانتینر بیرون روت نباشه (unprivileged container) امنیت یکم بیشتر میشه اما باز ۱۰۰درصدی نیست.
اما جدا از کانتینر که کلا یه فضای جدید باز میکنه و بازم سربار داره، ابزارهای دیگهای هستن مثل firejail و isolate که میاد مثل یه wrapper برای ابزارهایی که گفتم عمل میکنه. مثلا جلوی دسترسی به شبکه یا یه سری فایل حساس رو میبنده (یا فقط read only میکنه)
کاربرد کانتینرها مثل داکر رو که همه آشنا هستیم، برای درست کردن یه سیستم جدا با نصب بودن برنامههای خاص و معماری خاصه که توسعه نرمافزار رو راحت کنه.
مدل دوم مخصوصا isolate توی جاج های انلاین استفاده میشه تا سرورشون رو در مقابل برنامههای احتمالا مخرب محافظت کنن.
اما firejail گویا کاربرد عمومی داره، برای هر نرم افزار یه پروفایل تعریف کرده که به چه چیزهایی اجازه دسترسی داره و در نتیجه نرمافزارها کار عجیب دیگهای نکنن و امنیت کلی سیستم بره بالا.
نوشتههای ترمینالی
برای sandbox کردن برنامهها، راههای متفاوت و سخت و آسونی وجود داره. راههای virtualization مثل virtual box و vmware و parallels که کل یه OS رو شبیهسازی میکنه. قاعدتا سربار زیادی داره. دیر بالا میاد، مموری اضافه میگیره و .. راههای دیگه، مبتنی بر همین…
اگه چیزی رو غلط یا ناکامل گفتم بهم بگید لطفا.
نوشتههای ترمینالی
برای sandbox کردن برنامهها، راههای متفاوت و سخت و آسونی وجود داره. راههای virtualization مثل virtual box و vmware و parallels که کل یه OS رو شبیهسازی میکنه. قاعدتا سربار زیادی داره. دیر بالا میاد، مموری اضافه میگیره و .. راههای دیگه، مبتنی بر همین…
https://unit42.paloaltonetworks.com/making-containers-more-isolated-an-overview-of-sandboxed-container-technologies/
این مطلب هم توضیحات خیلی خوبی داده:
در مورد اینکه چطوری containerها کار می کنن و چرا به اندازه کافی امن نیستن و چه تلاش هایی برای امن کردنشون (بدون سربار vm) صورت گرفته
این مطلب هم توضیحات خیلی خوبی داده:
در مورد اینکه چطوری containerها کار می کنن و چرا به اندازه کافی امن نیستن و چه تلاش هایی برای امن کردنشون (بدون سربار vm) صورت گرفته
Unit 42
Making Containers More Isolated: An Overview of Sandboxed Container Technologies
Currently available container-based infrastructure has limitations because containers are not truly sandboxed and share the host OS kernel. The root of the problem is the weak separation between containers when the host OS creates a virtualized userland for…
چرا نباید هر کامیتی که میکنیم کدمون خوب و تمیز باشه
و کلا چرا pre commit هوک ها بد هستن:
https://www.youtube.com/watch?v=-A0_RLl6udE
و کلا چرا pre commit هوک ها بد هستن:
https://www.youtube.com/watch?v=-A0_RLl6udE
YouTube
M180: Pre-commit Hook is a wrong idea
Many programmers love to use pre-commit hooks to run the build and test the code before it gets to the repository. I believe it's a bad idea for two reasons.
Blog: https://www.yegor256.com
Books: https://www.yegor256.com/books.html
GitHub: https://github.com/yegor256…
Blog: https://www.yegor256.com
Books: https://www.yegor256.com/books.html
GitHub: https://github.com/yegor256…
نوشتههای ترمینالی
برای sandbox کردن برنامهها، راههای متفاوت و سخت و آسونی وجود داره. راههای virtualization مثل virtual box و vmware و parallels که کل یه OS رو شبیهسازی میکنه. قاعدتا سربار زیادی داره. دیر بالا میاد، مموری اضافه میگیره و .. راههای دیگه، مبتنی بر همین…
یک نمونه از اینکه chroot به تنهایی مکانیسم امنیتی نیست:
https://github.com/earthquake/chw00t
https://github.com/earthquake/chw00t
GitHub
GitHub - earthquake/chw00t: chw00t - Unices chroot breaking tool
chw00t - Unices chroot breaking tool. Contribute to earthquake/chw00t development by creating an account on GitHub.
چرا زبان های برنامه نویسی محبوب بد هستند
https://cscalfani.medium.com/the-problem-with-popular-programming-languages-67faa14ac13b
https://cscalfani.medium.com/the-problem-with-popular-programming-languages-67faa14ac13b
Medium
The Problem with Popular Programming Languages
Every single year, technology publications produce their yearly most popular programming lists. And we programmers flock to those articles…
Forwarded from Programming Resources via @like
guided tour that walks through the fundamentals of Git, inspired by the premise that to know a thing is to do it.
آموزشهای قدم به قدم گیت از ابتداییترین چیزها تا تقریبا پیشرفتهترین مواردی که توی گیت کاربرد داره رو میتونید توی این سایت به صورت جامع یاد بگیرید.
#git #tutorial #tutorials #how #howto
@pyhony
githowto.com
آموزشهای قدم به قدم گیت از ابتداییترین چیزها تا تقریبا پیشرفتهترین مواردی که توی گیت کاربرد داره رو میتونید توی این سایت به صورت جامع یاد بگیرید.
#git #tutorial #tutorials #how #howto
@pyhony
githowto.com
https://www.youtube.com/watch?v=QZwneRb-zqA
کامپیوترها چطوری کار میکنند:
درباره gateهای منطقی و یه حدودی از مدارمنطقی.
کامپیوترها چطوری کار میکنند:
درباره gateهای منطقی و یه حدودی از مدارمنطقی.
YouTube
Exploring How Computers Work
A little exploration of some of the fundamentals of how computers work. Logic gates, binary, two's complement; all that good stuff!
Support my work (and get early access to new videos and source code) on Patreon or Nebula
* Patreon: https://www.patreon.…
Support my work (and get early access to new videos and source code) on Patreon or Nebula
* Patreon: https://www.patreon.…
یه دوستم میگفت ما برای دانلود کردن، میریم کلی IDM نصب میکنیم و کرک میکنیم، شما فقط میزنین wget؟
باید بهش بگم خبر نداری اسکرین ریکورد و convert و تقریبا هرکار گرافیکی و ویدیویی رو هم با ffmpeg تو ترمینال میکنیم.
https://www.ffmpeg.org/
باید بهش بگم خبر نداری اسکرین ریکورد و convert و تقریبا هرکار گرافیکی و ویدیویی رو هم با ffmpeg تو ترمینال میکنیم.
https://www.ffmpeg.org/
Forwarded from Programming Resources via @like
Test your shell knowledge with this awesome challenge.
مهارتهای shell خود را با این بازی آنلاین محک بزنید.
#shell #bash #command #line #challenge #practice #terminal #linux #game #gamification #fun
@pythony
cmdchallenge.com
مهارتهای shell خود را با این بازی آنلاین محک بزنید.
#shell #bash #command #line #challenge #practice #terminal #linux #game #gamification #fun
@pythony
cmdchallenge.com
Programming Resources
Test your shell knowledge with this awesome challenge. مهارتهای shell خود را با این بازی آنلاین محک بزنید. #shell #bash #command #line #challenge #practice #terminal #linux #game #gamification #fun @pythony cmdchallenge.com
برای تسلط به یه سری چیزها توی bash مثل find و grep توصیه میشه.
Forwarded from Sitpor.org سیتپـــــور
متجاوزان معرفتی
به افرادی که در زمینهای خارج از تخصص اصلیشون اظهار نظر غلط میکنند اصطلاحا متجاوزان معرفتی میگن؛ Epistemic trespassers
این نوشته در مورد این افراد و مسائل مربوط به این مدل تجاوزه!
🔗 sitpor.org/2021/09/epistemic-trespassing
~~~~~~~~~
@sitpor | sitpor.org
instagram.com/sitpor_media
#سیتپـــــور به خاطر روایتگری در علم
~~~~~~~~~
به افرادی که در زمینهای خارج از تخصص اصلیشون اظهار نظر غلط میکنند اصطلاحا متجاوزان معرفتی میگن؛ Epistemic trespassers
این نوشته در مورد این افراد و مسائل مربوط به این مدل تجاوزه!
🔗 sitpor.org/2021/09/epistemic-trespassing
instagram.com/sitpor_media
#سیتپـــــور به خاطر روایتگری در علم
ابزار tldr هم جالبه.
برای دستورات مختلف آموزش داره، اموزشش سبک man pageئه ولی خیلی مختصر مفید و البته با مثال. برای وقت هایی که وقت man خوندن نداریم یا خیلی طولانیه معمولا جواب میده.
البته خودش دیتایی نداره و انلاین کوئری میزنه ولی پیاده سازی های مختلف با زبان های مختلف داره.
https://tldr.sh/
برای دستورات مختلف آموزش داره، اموزشش سبک man pageئه ولی خیلی مختصر مفید و البته با مثال. برای وقت هایی که وقت man خوندن نداریم یا خیلی طولانیه معمولا جواب میده.
البته خودش دیتایی نداره و انلاین کوئری میزنه ولی پیاده سازی های مختلف با زبان های مختلف داره.
https://tldr.sh/
👍1