https://quera.ir/problemset
از بین این سوالا، SIMD و اروررررر و باگ در تخفیفها رو من طرح کردم، اگه دوست داشتید برید بخونید یا حلشون کنین.
SIMD
https://quera.ir/problemset/113613/
اروررررر
https://quera.ir/problemset/113611/
باگ در تخفیف ها
https://quera.ir/problemset/113609/
از بین این سوالا، SIMD و اروررررر و باگ در تخفیفها رو من طرح کردم، اگه دوست داشتید برید بخونید یا حلشون کنین.
SIMD
https://quera.ir/problemset/113613/
اروررررر
https://quera.ir/problemset/113611/
باگ در تخفیف ها
https://quera.ir/problemset/113609/
برنامه redshift رو با این پارامترها صدا میکنم، چشمام راضین. شما هم اگه دوست دارید blue light filter توی لینوس داشته باشید میتونین از این استفاده کنید.
b
یعنی در صبح ۷۹ درصد نور باشه و در شب ۶۵ درصد.
l
موقعیت جغرافیاییه. مال تهران رو زدم.
https://github.com/jonls/redshift
redshift -b 0.79:0.65 -l 35.74:51.33
b
یعنی در صبح ۷۹ درصد نور باشه و در شب ۶۵ درصد.
l
موقعیت جغرافیاییه. مال تهران رو زدم.
https://github.com/jonls/redshift
GitHub
GitHub - jonls/redshift: Redshift adjusts the color temperature of your screen according to your surroundings. This may help your…
Redshift adjusts the color temperature of your screen according to your surroundings. This may help your eyes hurt less if you are working in front of the screen at night. - jonls/redshift
اینا برداشتن فرانت و بک ادیتور رو جدا کردن، بعد نه بکانده امکانات خاصی داره نه فرانتاندهاش جنگی به دل میزنه. حتی اکثرا درست اجرا نمیشن.
https://github.com/xi-editor/xi-editor#frontends
https://github.com/xi-editor/xi-editor#frontends
GitHub
GitHub - xi-editor/xi-editor: A modern editor with a backend written in Rust.
A modern editor with a backend written in Rust. Contribute to xi-editor/xi-editor development by creating an account on GitHub.
نوشتههای ترمینالی
اینا برداشتن فرانت و بک ادیتور رو جدا کردن، بعد نه بکانده امکانات خاصی داره نه فرانتاندهاش جنگی به دل میزنه. حتی اکثرا درست اجرا نمیشن. https://github.com/xi-editor/xi-editor#frontends
اما شما هم اگه خواستین با سورس یه ادیتور بازی کنین، میتونین برید سراغشون.
کد پایتون برای polynomial regression بدون استفاده از sklearn
https://github.com/pickus91/Polynomial-Regression-From-Scratch
https://github.com/pickus91/Polynomial-Regression-From-Scratch
GitHub
GitHub - pickus91/Polynomial-Regression-From-Scratch: Polynomial regression from scratch
Polynomial regression from scratch. Contribute to pickus91/Polynomial-Regression-From-Scratch development by creating an account on GitHub.
"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.