Pull to refresh

Kernel check. Освежаем ядро по всем правилам без лишних хлопот

Configuring Linux *
Про сборку ядра, кажется, не писал только ленивый. Мануалов о том, как правильно скомпилировать ядро и собрать его в установочный пакет, в интернете навалом.
Не так давно статья про сборку ядра для Debian based систем пробегала и на Хабре. И все в принципе отлично, если учесть, что
ядро требуется собирать не так часто.
Тем, кому по воле случая требуется регулярно заниматься сборкой ядра, может надоесть этот весьма длительный процесс компиляции и сборки пакета и захочется некоторой автоматизации.
Я не против консоли, bash скриптов, но иногда нет смысла изобретать велосипед, когда за Вас уже все сделали хоть и на питоне.
И так, представляю Вашему вниманию набор python скриптов Kernel Check, позволяющих сделать свежий debian package ядра, включая необходимые патчи, всего за пару кликов.
Читать дальше →
Total votes 41: ↑32 and ↓9 +23
Views 13K
Comments 24

evalidate: безопасная обработка пользовательских выражений

Information Security *Python *

Зачем нужно


Различная фильтрация есть везде. Например, файрволл netfilter (iptables) имеет свой синтаксис для описания пакетов. В файле .htaccess апача свой язык, как определять, кому давать доступ к каталогу, кому нет. В СУБД свой очень мощный язык (SQL WHERE ...) для фильтрации записей. В почтовых программах (thunderbird, gmail) — свой интерфейс описания фильтров, в соответствии с которыми письма будут раскидываться по папкам.

И везде — свой велосипед.

Для бухгалтерской программы вам может быть удобно позволить пользователю выбрать, кому будет повышена зарплата (все женщины, а так же мужчины возрастом от 25 до 32 лет, либо же до 50 лет если у мужчины имя Вася). И каждому подходящему повысить по пользовательскому выражению ( + 2000 рублей + 20% от прежней зарплаты + по 1000 рублей за каждый год стажа)

Для интернет-магазина (или его админки) — найти все ноутбуки, с памятью от 4 до 8 Gb, которых на складе более 3 штук, но не Acer, или даже Acer, если стоят меньше 30 000 рублей.

Конечно, можно присобачить свою сложную систему фильтров и критериев, сделать для них веб-интерфейс, но проще было бы все сделать в пару строк?

src="(RAM>=4 and RAM<=8 and stock>3 and not brand=='Acer') or (brand=='Acer' and price<30000)"
success, result = evalidate.safeeval(src,notebook)

Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 6.5K
Comments 9

Динамическое определение класса в Python

Abnormal programming *Python *ООP *
Под динамическим определением объекта можно понимать определение во время исполнения. В отличие от статического определения, которое используется в привычном определении класса с помощью ключевого слова class, динамическое определение использует встроенный класс type.

Метакласс type


Класс type часто используется для получения типа объекта. Например так:

h = "hello"
type(h)
<class 'str'>

Но у него есть другое применение. Он может инициализировать новые типы.
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Views 9.9K
Comments 16