Please open Telegram to view this post
VIEW IN TELEGRAM
🤣32
Иногда нужно временно отключить тачпад, изменить поведение кнопок мыши или включить "tap-to-click". Особенно полезно для ноутбуков, серверов с X11, или в случае проблем с внешними устройствами.
# Показать список всех устройств ввода (мыши, тачпады и др.)
xinput list
# Узнать ID устройства и его свойства
xinput list-props <ID>
# Отключить устройство (например, тачпад)
xinput disable <ID>
# Включить устройство обратно
xinput enable <ID>
# Включить "тап" по тачпаду как клик (если поддерживается)
xinput set-prop <ID> "libinput Tapping Enabled" 1
# Назначить другое поведение для кнопок мыши (например, инвертировать)
xinput set-button-map <ID> 3 2 1
# Постоянное применение параметров через ~/.xprofile или ~/.xinitrc
echo 'xinput set-prop <ID> "libinput Tapping Enabled" 1' >> ~/.xprofile
xinput
работает в окружениях X11 и помогает управлять вводомPlease open Telegram to view this post
VIEW IN TELEGRAM
👍15
Почему Python — не просто язык для скриптов, а основа крупных систем в корпорациях. Рассказываю, как типизация, dataclasses, Pydantic 2 и msgspec сделали его надёжным бизнес-инструментом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤🔥2🔥2
pyrsistent — это функциональная библиотека для работы с неизменяемыми (immutable) структурами данных: списками, словарями, множествами и др.
Идеально подходит для надёжных систем, где важно избежать нежелательных побочных эффектов и сохранить предыдущие состояния данных — например, в конфигурациях, многопоточности и тестах.
from pyrsistent import pvector, pmap
# Неизменяемый список
v = pvector([1, 2, 3])
v2 = v.append(4)
print(v) # ➔ [1, 2, 3]
print(v2) # ➔ [1, 2, 3, 4]
# Неизменяемый словарь
m = pmap({"user": "alice", "active": True})
m2 = m.set("active", False)
print(m["user"]) # ➔ alice
print(m2["active"]) # ➔ False
# Все оригинальные данные остаются неизменными
print(m["active"]) # ➔ True
➕ Преимущества:
dataclasses
и copy.deepcopy
)pip install pyrsistent
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁14👍4💯1
Мониторинг доступной оперативной памяти помогает вовремя обнаружить утечки, перегрузки и определить, какие задачи съедают ресурсы.
Этот скрипт проверяет доступную память, логирует предупреждения и может использоваться для базового анализа производительности.
#!/bin/bash
LOG_FILE="/var/log/mem_monitor.log"
THRESHOLD_MB=500 # Порог доступной памяти (в мегабайтах)
echo "🔍 Проверка памяти... $(date)" | tee -a "$LOG_FILE"
# Получаем доступную память в МБ
AVAIL_MEM=$(free -m | awk '/Mem:/ {print $7}')
if [ "$AVAIL_MEM" -lt "$THRESHOLD_MB" ]; then
echo "⚠️ Доступно мало памяти: ${AVAIL_MEM}MB (< ${THRESHOLD_MB}MB)" | tee -a "$LOG_FILE"
echo "🧾 Топ 5 процессов по использованию RAM:" | tee -a "$LOG_FILE"
ps -eo pid,comm,%mem --sort=-%mem | head -n 6 | tee -a "$LOG_FILE"
else
echo "✅ Память в норме: ${AVAIL_MEM}MB" | tee -a "$LOG_FILE"
fi
echo "🛑 Проверка завершена." | tee -a "$LOG_FILE"
free -m
даёт удобный формат доступной памятиps -eo
показывает, какие процессы используют RAM/var/log
, можно настроить уведомления через email, Telegram, Slack и т.д*/15 * * * * /path/to/mem_monitor.sh
🗣 Особенно полезен для серверов, рабочих станций с ограниченным объёмом ОЗУ, VPS и embedded-устройств.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Разбираем настройку сети с несколькими SSID на базе VLAN, pfSense и OpenWRT. Добавим туннели через отдельную VM в Proxmox. Решение для устройств, где нельзя изменить маршрутизацию.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4
Разобрался, как работают symlink, hardlink и inode в Linux, зачем они нужны и как один невинный symlink может открыть дверь хакеру. Всё показал на живых примерах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣31😁11❤🔥1
Настройка прав доступа — важная часть безопасности и организации данных в системе. Ниже — практичные команды для контроля над доступом, пользователями и группами.
# Показать права доступа к файлу/папке
ls -l /path/to/file
# Изменить владельца файла
sudo chown username /path/to/file
# Изменить владельца и группу
sudo chown username:groupname /path/to/file
# Изменить права доступа (например, rw-r--r--)
chmod 644 /path/to/file
# Сделать скрипт исполняемым
chmod +x myscript.sh
# Запретить доступ к каталогу всем, кроме владельца
chmod 700 /my/secret/dir
# Установить одинаковые права на все файлы внутри каталога
chmod -R 644 /my/data
# Назначить владельца и права для новых файлов в каталоге через umask
umask 027
# Проверить текущую маску прав
umask
# Создать группу и добавить пользователя
sudo groupadd editors
sudo usermod -aG editors username
# Разрешить группе запись в каталог
sudo chown -R :editors /project
sudo chmod -R 775 /project
chmod
, chown
и umask
— основные инструменты управления правами-R
облегчают массовую настройкуumask
влияет на создаваемые файлы по умолчаниюPlease open Telegram to view this post
VIEW IN TELEGRAM
👍11❤🔥1
Купил крутой RGB-хаб, но под Линуксом он мёртв. Написал техподдержке — дали доки! Теперь пытаюсь на их основе написать свой драйвер, хотя USB я знаю только со стороны пользователя.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4
returns — это библиотека для написания чистого и безопасного функционального кода в Python. Она добавляет контейнеры вроде
Result
, Maybe
, IO
, и другие концепции из Haskell / Scala, помогая избавиться от None
, try/except
, и повышая предсказуемость кода.Идеальна, если ты хочешь писать декларативно, безопасно и без side-effect'ов.
from returns.result import Result, Success, Failure
def divide(x: int, y: int) -> Result[float, str]:
if y == 0:
return Failure("Деление на ноль")
return Success(x / y)
result = divide(10, 2).map(lambda x: x * 2)
print(result) # ➔ <Success: 10.0>
error = divide(10, 0).map(lambda x: x * 2)
print(error) # ➔ <Failure: 'Деление на ноль'>
➕ Преимущества:
Result
, Maybe
, IO
, RequiresContext
— как в языках с strong typingtry/except
.map()
, .bind()
и .alt()
для чистого, цепочного кодаmypy
и типизациейpip install returns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣33😁3
Контроль за критичными файлами — важная мера безопасности. Этот скрипт отслеживает изменения в
sudoers
, passwd
, shadow
и других чувствительных файлах, уведомляя при их модификации.#!/bin/bash
LOG_FILE="/var/log/security_watch.log"
FILES=(
"/etc/sudoers"
"/etc/passwd"
"/etc/shadow"
"/etc/group"
"/etc/ssh/sshd_config"
)
echo "🔍 Проверка контрольных сумм... $(date)" | tee -a "$LOG_FILE"
for file in "${FILES[@]}"; do
CHECKSUM_FILE="/var/lib/security_watch/$(basename $file).sha256"
if [ ! -f "$CHECKSUM_FILE" ]; then
mkdir -p /var/lib/security_watch
sha256sum "$file" > "$CHECKSUM_FILE"
echo "📦 Сохранили контрольную сумму для $file" | tee -a "$LOG_FILE"
continue
fi
CURRENT_SUM=$(sha256sum "$file")
OLD_SUM=$(cat "$CHECKSUM_FILE")
if [ "$CURRENT_SUM" != "$OLD_SUM" ]; then
echo "⚠️ Изменения в файле $file!" | tee -a "$LOG_FILE"
echo "$CURRENT_SUM" > "$CHECKSUM_FILE"
else
echo "✅ $file без изменений." | tee -a "$LOG_FILE"
fi
done
echo "🛡 Проверка завершена." | tee -a "$LOG_FILE"
sha256sum
проверяет целостность без лишнего шума@daily /path/to/security_watch.sh
🗣 Полезно для серверов, рабочих станций с несколькими пользователями, CI/CD-агентов — чтобы быстро реагировать на подозрительные изменения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Покажу, как чинить критические баги в ядре Linux без ребута с помощью livepatch. На примере Ubuntu 22.04 и реального патча. Будет и вторая часть.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Покажу 10 расширений, которые превращают VS Code в ультимативную среду для Python. Меньше багов, больше скорости, AI в помощь. Кодить станет легче, быстрее и веселей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19🗿4❤🔥1
В Linux каждая программа использует файловые дескрипторы (FD) — не только для файлов, но и сокетов, пайпов, устройств. Переполнение лимита может привести к сбоям. Эти команды помогут понять, кто сколько ресурсов потребляет и где «течёт».
# Посмотреть лимиты текущего пользователя
ulimit -a
# Узнать общий лимит открытых файлов
cat /proc/sys/fs/file-max
# Сколько открытых файлов в системе сейчас
cat /proc/sys/fs/file-nr
# Найти процессы с наибольшим числом открытых файлов
sudo lsof | awk '{ print $2 }' | sort | uniq -c | sort -nr | head
# Посмотреть все открытые файлы конкретного процесса (по PID)
ls /proc/<PID>/fd
# Вывести число открытых дескрипторов по каждому процессу
for pid in $(ls /proc | grep -E '^[0-9]+$'); do
echo -n "$pid: "; ls /proc/$pid/fd 2>/dev/null | wc -l;
done | sort -nk2 | tail
# Найти утечку файловых дескрипторов (много открытых одного и того же файла)
sudo lsof | awk '{print $9}' | sort | uniq -c | sort -nr | head
# Временное увеличение лимита для сессии
ulimit -n 65535
# Постоянное изменение лимита (в /etc/security/limits.conf):
# username soft nofile 65535
# username hard nofile 65535
lsof
помогает диагностировать утечки и узкие местаulimit
управляет лимитами на уровне пользователя и сессииPlease open Telegram to view this post
VIEW IN TELEGRAM
👍10
Разбираю детский ARM-ноут от VIA, запускаю на нём Linux с дуалбутом, вспоминаю гиковские мечты детства и проверяю, на что способен старичок за полтысячи.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9😁1
deal — это декларативная библиотека контрактного программирования, которая позволяет добавлять к функциям проверяемые условия: предусловия, постусловия, инварианты, исключения и побочные эффекты.
Она не просто валидирует логику — она анализирует и тестирует ваш код, включая статическую проверку через
mypy
и deal lint
.import deal
@deal.pre(lambda x: x >= 0)
@deal.post(lambda result: result >= 0)
def sqrt(x: float) -> float:
return x ** 0.5
print(sqrt(9)) # ✔️
print(sqrt(-4)) # ❌ deal.PreContractError
@deal.raises(ZeroDivisionError)
def div(a, b):
return a / b
➕ Преимущества:
@pre
, @post
, @raises
— чёткие и читаемые контрактыdeal lint
— предупреждает ошибки ещё до запускаmypy
, pytest
, hypothesis
pip install deal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥8👍5