🚰 Якщо потрібно віддавати певні файли засобами Django view, а не як статичний файл через NGINX. То не забуваємо додавати заголовки про інформацію для кешування браузерами, щоб не перевантажувати запитами сервер.
Персональний блог на різноманітні теми: від кулінарії до мережевої безпеки.
MYCSS
2024-10-29
2024-10-27
Нотатка про метакласаси в Python. Основи використання метакласів.
Дивлячись інтерв'ю "DOU : Python — погана мова програмування, а Go — ще гірша | Обговорюємо та обираємо технології", виникло питання з метакласами.
📕 Метаклас в Python — це "клас для класу", тобто він визначає, як самі класи поводяться. Використовуючи метаклас, ви можете налаштувати створення класу, додати нову поведінку, модифікувати атрибути або запровадити певні обмеження для підкласів.
- Оголошення метакласу: Метаклас зазвичай визначається через наслідування від type, який є типовим метакласом у Python.
- Методи __new__ і __init__: У метакласі зазвичай перевизначають методи __new__ або __init__, щоб контролювати створення класів.
- __new__ створює клас, приймаючи аргументи для імені класу, базових класів і словника класу (атрибути та методи).
- __init__ ініціалізує клас після його створення.
- Вказування метакласу: Щоб вказати метаклас для класу, використовується ключове слово metaclass.
📌 Приклад: Налаштування створення класу за допомогою метакласу
Припустимо, ви хочете, щоб усі атрибути класу мали назви у верхньому регістрі. Метаклас допоможе забезпечити це.
✔ Пояснення
- Метаклас UpperCaseAttributes: Приймає ім'я класу, його базові класи та словник атрибутів. Він створює змінений словник з атрибутами у верхньому регістрі, після чого передає його в type __new__.
- Застосування metaclass=UpperCaseAttributes: При оголошенні MyClass вказано метаклас UpperCaseAttributes, тож клас буде оброблений за логікою, прописаною в цьому метакласі.
💢 Коли використовувати метакласи
- Впровадження правил: Наприклад, всі атрибути мають дотримуватися певних іменувальних правил.
- Автоматична реєстрація класів: Наприклад, автоматичне збирання підкласів для плагінової системи.
- Синглтон: Забезпечення існування лише одного екземпляра класу, контролюючи інстанціювання через метаклас.
💧 Матеріали:
2024-10-22
Run APIs Easily. Anywhere. traefik.io. Q & A.
2024-10-19
FastAPI Dependency Injection: 21 Examples Using Depends() with AI Answers
Why ?
Some answers were wrong, some I had already optimized a bit. But all the results shown are real and created by me personally.
2024-10-12
Restore a VM from a backup file on a ZFS snapshot over NFS in Proxmox VE by use GUI.
Умови:
Proxmox VE server періодично робить резервні копії до NFS спільної теки котра розміщена на NAS сервері.
NAS це TrueNAS сервер що зберігає дані у ZFS файловій системі. TrueNAS автоматично налаштований робити періодичні знімки (snapshots) ZFS dataset де розміщенні дані для NFS теки.
У VM сервера знайдено підозрілі файли за назвою "." розміром 1024 bytes з бінарним вмістом. Необхідно провести аналіз в "offline copy" сервера.
Задача:
Відновити віртуальну машину з попередньої резервної копії.
Рішення:
Під'єднати попередні періодичні знімки (snapshots) ZFS dataset, що створені на стороні NAS сервера, для відновлення віртуальної машини з її резервної копії.
Підключення до консолі Proxmox Node.
- Proxmox node: ns21
- NFS share: nfs-ns58-10g
- Target data: 2024-10-11
- Target VM ID: 150
![]() |
| Proxmox console. |
Знайдено цільовий шлях де зберігаються потрібні резервні копії: /mnt/pve/nfs-ns58-10g/.zfs/snapshot/auto-2024-10-11_00-00
2024-10-05
Note. FreeBSD. pkg create. Backup of erlang-21. Сталася класична ситуація з оновленнями. Postmortem Report.
Умови:
Є віртуальна машина з FreeBSD під керуванням Proxmox VE.
Є застосунок 'pleroma' котрий працює на базі erlang.
Причини:
Для підтримання інфраструктури операційна система оновлюється і пакунки
підтримуються в актуальному стані.
Застосунок працює, в пам'яті, все
нормально. Користувачі заносять нові дані...
2024-09-25
Нотатка для себе. UPS, NUT. Ubuntu (Proxmox VE, Proxmox Backup), FreeBSD, Windows
2024-09-21
Note. Restore the old physical server by moving it to a virtual machine on the Proxmox VE. Creating an iSCSI disk and mounting it at boot. FreeBSD 9.0.
Примітка. Відновлення старого фізичного сервера, перемістивши його на віртуальну машину на Proxmox VE. Створення iSCSI диску та його монтування при завантажені операційної системи. FreeBSD 9.0.
Історія
Основне правило адміністратора, працює не чіпай. Призводить то того що рано чи пізно це вилазить боком. На кшталт не можеш нічого оновити та встановити.
Тому мені історично діставався цей сервер котрий треба перемістити до віртуального середовища поки "/raid1" масив ще працює після нового його збою, але варто зауважити міцний горішок.
Є декілька способів як перемістити систему з фізичного до віртуального. Але я не хотів переносити усі накопиченні проблеми, і вирішив перенести все окрім ядра та базової системи використовуючи rsync.
2024-09-09
FreeBSD 14. Mail server POSTFIX and mariadb-client instead of mysql-client
Маю операційну систему FreeBSD 14.1-RELEASE у віртуальному середовищі Proxmox VE.
Щойно оновив поштовий сервер з FreeBSD 13.1-RELEASE, і з'ясувалося що я не можу тепер встановити POSTFIX та mariadb-client одночасно, як це було раніше. Тому це нотатка мені як я розв'язав цю проблему, щоб не наступати на ті самі граблі двічі.
Коли встановлено у Вас mariadb-server та mariadb-client на одному сервері, то при встановленні поштового сервера postfix як пакунок через pkg install postfix-mysql, або з портів з опцією MySQL.
![]() |
| postfix freebsd port, mysql option |
Вам буде пропоновано видалити mariadb-server та mariadb-client і встановити mysql-client.
When you forgot your native language you would become a poor at spirit every day ...
Д.Білоус / D.Bilous







