В статье разбирается модуль logging в Python — стандартный инструмент для логирования. Показаны базовые приёмы настройки, примеры и советы, как писать логи понятно и полезно для жизни проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤🔥4🤔1
Этот скрипт проверяет свободное место на диске и удаляет старые файлы в указанной директории, если свободного места осталось мало. Полезно для серверов и рабочих станций.
#!/bin/bash
# Минимально допустимый процент свободного места
MIN_FREE=15
# Директория для очистки
TARGET_DIR="/var/cache"
# Получаем процент свободного места на /
FREE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$FREE" -ge $((100 - MIN_FREE)) ]; then
echo "🚨 Мало свободного места! Очищаем $TARGET_DIR..."
find "$TARGET_DIR" -type f -atime +7 -delete
echo "✅ Очистка завершена"
fi
df
0 2 * * * /path/to/disk_clean.sh
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍2
Хочешь, чтобы Python сам сообщал тебе, если в какой-то папке появится новый файл, что-то удалилось или изменилось? Это мега-удобно: для логов, загрузок, фоток и даже безопасности 🔐
pip install watchdog
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import time
class WatcherHandler(FileSystemEventHandler):
def on_created(self, event):
print(f'Файл создан: {event.src_path}')
def on_deleted(self, event):
print(f'Файл удалён: {event.src_path}')
def on_modified(self, event):
print(f'Файл изменён: {event.src_path}')
if __name__ == "__main__":
path = "/home/user/Загрузки" # Замени на свою папку
observer = Observer()
observer.schedule(WatcherHandler(), path=path, recursive=True)
observer.start()
print(f'Следим за папкой: {path}')
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣26❤🔥2👍1🌚1
В видео показывают путь обычного пользователя Linux от первой установки Ubuntu до полного погружения в дистрибутивный культ с Gentoo, кастомизацией и лёгкой социофобией.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
В статье показывают, как можно получить root-доступ в Linux через группу disk — шаг за шагом разбирают настройку окружения, подготовку конфигурации и сам процесс эксплуатации уязвимости.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Когда нужно быстро оценить структуру директорий или найти вложенные папки — поможет команда tree.
# Установить tree (если не установлено)
sudo apt install tree # Debian/Ubuntu
sudo pacman -S tree # Arch
sudo dnf install tree # Fedora
# Посмотреть структуру директорий текущей папки
tree
# Показать только папки (без файлов)
tree -d
# Ограничить глубину вложенности
tree -L 2
# Подсчитать количество файлов и папок
tree -f --noreport | wc -l
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
В некоторых случаях (например, при работе с API или ресурсоёмкими функциями) нужно ограничить частоту вызова функции. В Python это можно сделать с помощью декоратора.
import time
from functools import wraps
def throttle(seconds):
def decorator(func):
last_call = [0]
@wraps(func)
def wrapper(*args, **kwargs):
now = time.time()
if now - last_call[0] >= seconds:
last_call[0] = now
return func(*args, **kwargs)
else:
print(f"Подожди ещё {round(seconds - (now - last_call[0]), 2)} сек")
return wrapper
return decorator
@throttle(3)
def fetch_data():
print("✔️ Данные успешно получены!")
Пример использования:
for _ in range(5):
fetch_data()
time.sleep(1)
-
throttle(seconds)
— внешний декоратор, который принимает интервал.-
last_call
— список, чтобы сохранить состояние между вызовами.-
wrapper
— обёртка, которая проверяет, прошло ли достаточно времени.- Подобный приём особенно полезен при работе с API (например, Telegram Bot API, Discord API и т.д.).
- Это способ сделать поведение программы более контролируемым и стабильным.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32🤣5😁2
Box — это удобная библиотека для работы со словарями в стиле dot-access (доступ к ключам как к атрибутам). Позволяет обращаться к данным через точку, при этом оставаясь совместимой с обычными dict.
Подходит разработчикам, которые хотят сочетать привычный синтаксис словаря и удобство обращения через атрибуты.
from box import Box
# Создаем Box-словарь
config = Box({
"database": {
"host": "localhost",
"port": 5432
}
})
print(config.database.host) # localhost
print(config["database"]["port"]) # 5432
# Можно добавлять новые значения как атрибуты
config.api.token = "secret_token"
print(config.api.token) # secret_token
➕ Преимущества:
dot-access
dict
dict
pip install python-box
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
В статье покажут, как поднять DLNA-сервер и Transmission на Orange Pi Zero 3 без монитора и клавы. Всё ставится через SSH прямо на диск — удобно, быстро и без лишнего гемора.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6👍2
Этот скрипт автоматически копирует указанные файлы на USB-флешку при её подключении. Полезно для бэкапа конфигураций, документов или скриптов.
#!/bin/bash
# Каталог для бэкапа
BACKUP_DIR="/home/user/backup"
# Папка на USB (должна быть заранее известна)
USB_MOUNT="/media/user/USB"
# Проверяем, подключён ли USB-накопитель
if mount | grep "$USB_MOUNT" > /dev/null; then
echo "📦 Копируем файлы на USB..."
rsync -av --delete "$BACKUP_DIR/" "$USB_MOUNT/backup/"
echo "✅ Резервная копия завершена."
else
echo "❌ USB-накопитель не найден."
fi
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Please open Telegram to view this post
VIEW IN TELEGRAM
😁22👍4🔥1
В видео объясняется, зачем писать
if __name__ == "__main__"
в Python, как эта строчка влияет на запуск скриптов и когда её стоит использовать. Всё — на практических примерах.Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤🔥3
В статье рассказывается о том, как создать защищённое текстовое общение в духе «Матрицы» — без серверов и доверия, используя инструменты типа Cryptcat. Это про хакерскую романтику и практическую криптографию.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2
diff
и rsync
Когда нужно узнать, чем отличаются две папки — например, резервная копия и рабочая версия — удобно использовать встроенные инструменты Linux.
# Сравнить два каталога построчно
diff -qr dir1/ dir2/
# Сравнить содержимое с выводом различий
diff -r dir1/ dir2/
# Только отличающиеся файлы по имени и дате
rsync -avun dir1/ dir2/
# Сравнить каталоги с сохранением логов
rsync -av --dry-run dir1/ dir2/ > changes.log
diff -r
показывает отличия в содержимом файловrsync --dry-run
подойдёт, если планируется синхронизацияPlease open Telegram to view this post
VIEW IN TELEGRAM
👍16
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣37🗿1
bidict — это библиотека, реализующая двунаправленный словарь: каждому ключу соответствует значение, и наоборот. Позволяет выполнять быстрый поиск в обе стороны — по ключу и по значению.
Подходит разработчикам, которым нужен надёжный способ инвертировать словари и гарантировать уникальность связей.
from bidict import bidict
# Создаём двунаправленный словарь
b = bidict({"a": 1, "b": 2})
# Доступ по ключу
print(b["a"]) # 1
# Обратный доступ — по значению
print(b.inv[1]) # 'a'
# Добавление новых пар
b["c"] = 3
print(b.inv[3]) # 'c'
➕ Преимущества:
pip install bidict
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤣2
Разбираюсь, как устроен протокол MCP от Anthropic, и повторяю его механику своими руками — чтобы не просто использовать, а понимать, как он живёт изнутри.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Если при установке пакетов через
apt
ты получаешь ошибку вроде:Could not get lock /var/lib/dpkg/lock-frontend
или
dpkg was interrupted, you must manually run 'sudo dpkg --configure -a'
это значит, что система занята другим процессом или установка оборвалась.
1. Проверить активные процессы APT:
ps aux | grep -i apt
Если видишь зависший
apt
или dpkg
, заверши процесс:sudo kill -9 <PID>
2. Удалить файлы блокировки:
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
3. Починить менеджер пакетов:
sudo dpkg --configure -a
sudo apt update
4. Проверить, не сломались ли зависимости:
sudo apt --fix-broken install
apt
снова работает.Ctrl+C
).apt
параллельно в нескольких окнах.Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤🔥4🔥2⚡1