Найти в Дзене
YAML кажется простым, пока не наткнёшься на «магические» значения, отступы и странные преобразования типов
YAML кажется простым, пока не наткнёшься на «магические» значения, отступы и странные преобразования типов. Вот быстрый чек-лист, чтобы не попасть: 1. Булевы ловушки # Плохо enabled: yes # станет true answer: No # станет false # Хорошо enabled: true answer: "No" # строка 2. Ведущие нули # Плохо port: 080 # Хорошо port: "080" # строка 3. Даты как строки # Плохо version: 2025-08-16 # Хорошо version: "2025-08-16" 4. Только пробелы, без табов items: - a - b 5. Анкоры и алиасы (DRY) base: &base image: nginx:latest web: <<: *base replicas: 2 6. Многострочные строки: `|` vs `>` | — сохраняет переносы строк...
1 день назад
В YAML списки (массивы) — это «последовательности
В YAML списки (массивы) — это «последовательности». Их пишут двумя способами: Блочный: с дефисами — самый читаемый servers: - web01 - web02 В строку (flow): компактно, но хуже на длинных списках web_servers: [web01, web02] Можно вкладывать списки в словари и наоборот: environments: - name: production servers: - prod-web01 - prod-db01 Длинные элементы удобно хранить как многострочные строки: config_files: - | server { listen 80; } Где это нужно: Ansible (tasks, hosts), Kubernetes (containers, ports), CI/CD (steps). Советы: * Только пробелы, без табов...
1 неделю назад
Если вы кодируете данные в Base64 для URL или пытаетесь сгенерировать JWT, символы + и / могут некорректно обрабатываться
Если вы кодируете данные в Base64 для URL или пытаетесь сгенерировать JWT, символы + и / могут некорректно обрабатываться. Для этого придуман стандарт Base64URL, где они заменены на - и _, а паддинг = убран. В PHP готовых функций нет, но их легко написать на основе base64_encode и strtr. Главное — не забыть при декодировании вернуть = на место, иначе ничего не получится. Кодирование: rtrim(strtr(base64_encode($data), '+/', '-_'), '='); Декодирование: base64_decode(strtr($data, '-_', '+/') . str_repeat('=',...
1 неделю назад
🚀 Next.js: JSON 404 для несуществующих API-роутов
🚀 Next.js: JSON 404 для несуществующих API-роутов В App Router есть нюанс: для несуществующих API-запросов возвращается HTML-страница из not-found.tsx. Но клиентам API нужен JSON, а не HTML 🙃 Решение — catch-all роут Создаём роут, который перехватывает все неизвестные запросы: /app/api/[...not_found]/route.ts export async function GET() { return Response.json({ error: 'Not Found' }, { status: 404 }); } export async function POST() { return Response.json({ error: 'Not Found' }, { status: 404 }); } А для /api без вложений — отдельный route...
2 недели назад
Оптимизация приоритетов процессов с nice и ionice: - nice: регулирует приоритет использования процессора (диапазон от -20 до +19). - ionice: управляет приоритетом операций ввода-вывода с тремя классами (Idle, Best-effort, Realtime). Пример запуска резервного копирования с низким приоритетом: nice -n 10 ionice -c 3 backup_script.sh Так можно снизить влияние фоновых процессов на активные задачи. https://varnote.ru/linux/nice-and-ionice/ #varnote #linux
10 месяцев назад
Пустой коммит в Git — это коммит, который не изменяет содержимое файлов проекта. Он создается специально без модификаций, что может показаться бесполезным на первый взгляд. Пустой коммит можно создать с помощью команды: git commit --allow-empty -m "Это пустой коммит" Команда --allow-empty явно указывает Git на то, что нужно создать коммит даже в отсутствии изменений. Такой коммит может показаться необычным и ненужным, но он находит применение в ряде важных задач. От триггеров CI/CD до фиксации важных этапов проекта, использование пустого коммита может существенно облегчить управление проектом и его автоматизацию. https://varnote.ru/other/empty-git-commit/ #varnote #git
10 месяцев назад
Принудительное удаление namespace в Kubernetes Namespaces в Kubernetes — это виртуальные кластеры, которые помогают изолировать ресурсы в кластере. Удаление namespace может происходить по стандартному сценарию или принудительно. Для удаления пространства имён выполните команду: kubectl delete namespace [your-namespace] Вместе с удалением namespace, также удаляются все объекты, связанные с этим пространством. Если namespace застрял в статусе "Terminating", нужно удалить "finalizer" — правило, выполняющее некую задачу до удаления объекта. https://varnote.ru/kubernetes/delete-namespace/
10 месяцев назад
Формат файла authorized_keys
Да, это целый формат файла. Это не просто место, где вы прописываете ключи и забываете о них, вы можете накладывать всевозможные ограничения или варианты поведения определенных пользователей. Файл authorized_keys - это ключевой элемент в системах Linux и Unix, который используется для аутентификации по SSH без пароля. Каждая строка содержит один публичный SSH-ключ пользователя. Обычно каждый ключ находится на отдельной строке. Мы рассмотрим лишь несколько параметров, которые особенно интересны...
1 год назад
Ограничение journald в Ubuntu 20
Ubuntu 20 по умолчанию не включено ограничение размера журнала journald. Это может привести к увеличению размера журнальных файлов со временем, что может привести к заполнению диска и недостатку свободного места. Кроме того, большие файлы журналов могут замедлять работу системы и ухудшать ее производительность. Включение ограничения размера журнала journald помогает предотвратить эти проблемы и обеспечить более эффективное использование ресурсов системы. Чтобы включить ограничение, нужно внести изменения в конфигурационный файл systemd-journald: 1) Откройте файл /etc/systemd/journald...
1 год назад