TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #721 · 26.12

Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev

Hashtags

Резултати

Намерени 3 подобни публикации

Търсене: #proxmox

当前筛选 #proxmox清除筛选
infosecurity

@tg_infosec · Post #2941 · 16.02.2025 г., 12:33

👨‍💻 Доступная виртуализация: Proxmox. • Когда потребности перерастают один, ответственный за все, железный сервер, но еще не настолько велики, чтобы использовать Kubernetes, на помощь приходят разные решения, позволяющие управлять кластером из нескольких хостов, организовать High Availability, репликацию и централизованный бэкап контейнеров и виртуалок. Proxmox — одно из них: • Разворачиваем Linstor хранилище ч.1; • Разворачиваем Linstor хранилище ч.2; • Разворачиваем Linstor хранилище ч.3; • Proxmox VE - обновляем 6ку на 7ку (Proxmox 6 to 7 upgrade); • Proxmox: бекапы и факапы (и ресторы); • Proxmox + NFS сервер - внешнее хранилище для iso и дисков; • Proxmox API - автоматизируем рутинную операцию; • Proxmox + Kerio Control - удобные песочницы; • Proxmox + Kerio Control - удобные песочницы; • Вводная; • Урок 1 - вебинар, инсталляция; • Урок 2.1 - Обновления; • Урок 2.2 - Контейнеры; • Урок 2.3 - Виртуальные машины; • Урок 2.4 - Настройки в машинах и контейнерах; • Урок 2.5 - Снапшоты; • Урок 2.6 - Бекапы; • Урок 2.7 - Пользователи и права; • Урок 2.8 - Сети; • Урок 2.9 - Внешнее хранилище; • Урок 2.10 - SSL сертификаты; • Урок 3.1 - Кластер: вводная; • Урок 3.1.2 - Кластер: подготовка нод; • Урок 3.2.1 - Кластер: добавление нод; • Урок 3.2.2 - Кластер: безопасность нод; • Урок 3.3 - Кластер: реплики нод; • Урок 3.4 - Кластер: HA; • Урок 4.1 - time drift; • Урок 4.2 - LB Proxy; • Урок 4.3 - LVM; • Урок 4.4 - Кеш; • Бекапим в облака. #Proxmox

Hashtags

DOFH - DevOps from hell

@dofh_ru · Post #3270 · 08.02.2024 г., 06:14

​​До появления Proxmox Backup Server я часто отдавал предпочтение при выборе гипервизора Hyper-V из-за того, что для Proxmox VE не было функционального инструмента для бэкапов VM, кроме его встроенного средства, которое делало только полные бэкапы. С выходом PBS этот вопрос был закрыт, причём бескомпромиссно. Предложенное решение было лучше, чем любое другое бесплатное. Так что связка Proxmox VE + PBS аналогов сейчас не имеет по удобству, простоте настройки и эксплуатации. Отдельно отметить и рассказать более подробно я хочу про Proxmox Backup Client. Это консольная утилита для Linux, которая позволяет делать бэкап на уровне файлов из виртуальной машины в PBS, даже если система находится на другом гипервизоре. То есть это полностью отвязанный от инфраструктуры Proxmox клиент, который позволяет складывать резервные копии в PBS. Таким образом этот сервер бэкапов может объединять в себе разнородную инфраструктуру. Сразу перечислю основные ограничения этого клиента: ▪ бэкап только на уровне файлов или образов дисков, не системы целиком; ▪ официальная поддержка только deb дистрибутивов, для rpm люди сами собирают пакеты, так как исходники открыты; ▪ нет поддержки windows, вариант бэкапа данных оттуда только один - монтирование диска по smb к linux машине и бэкап этого примонтированного диска. Использовать proxmox-backup-client очень просто. Я не буду подробно описывать его возможности, так как в оригинальной документации представлена исчерпывающая информация. Если хочется на русском, то можно обратиться к документации от altlinux. Кратко покажу пример установки и бэкапа. Ставим Proxmox Backup Client на Debian: # wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg # mcedit /etc/apt/sources.list.d/pbs-client.list Вставляем туда для Debian 12 deb http://download.proxmox.com/debian/pbs-client bookworm main Для Debian 11: deb http://download.proxmox.com/debian/pbs-client bullseye main Для Debian 10: deb http://download.proxmox.com/debian/pbs-client buster main Ставим клиента: # apt update && apt install proxmox-backup-client Теперь бэкапим корень сервера без примонтированных дисков. То есть делаем бэкап системы: # proxmox-backup-client backup root.pxar:/ --repository 10.20.1.47:main Здесь мы указали: ◽root.pxar - имя архива в формате pbs ◽/ - бэкапим корень системы ◽10.20.1.47 - адрес pbs сервера ◽main - имя datastore По умолчанию используется учётная запись root@pam, то есть дефолтный админ. Разумеется, на проде так делать не надо, потому что у него полные права, в том числе на удаление архивов. Делайте отдельные учётки для разных систем с ограниченными правами. В PBS это организовано удобно и просто, так что разобраться не трудно. Для указания имени пользователя, нужно использовать такой вид репозитория: user01@[email protected]. То есть мы указали созданного вручную пользователя user01@pbs. Для того, чтобы не вводить пароль пользователя вручную, можно задать его через переменную окружения PBS_PASSWORD. Смотреть содержимое бэкапов можно как через веб интерфейс, так и тут локально. Причём бэкап можно примонтировать через fuse. Сморим снэпшоты и выбираем любой для монтирования: # proxmox-backup-client snapshot list --repository 10.20.1.47:main # proxmox-backup-client mount host/debian12-vm/2024-02-06T19:19:12Z root.pxar --repository 10.20.1.47:main /mnt/backup Очень быстро и удобно. При желании бэкапы можно шифровать. #proxmox#backup

DOFH - DevOps from hell

@dofh_ru · Post #3851 · 03.09.2025 г., 12:20

Proxmox: привязка CPU к виртуальным машинам Не всегда очевидно, зачем вообще нужна привязка CPU к виртуальным машинам, особенно если речь идёт о небольших развертываниях - там этот параметр чаще всего просто игнорируют. Но в реальном продакшене использование CPU affinity становится действительно важным для повышения производительности виртуалок. https://telegra.ph/Proxmox-privyazka-CPU-k-virtualnym-mashinam-09-03 #ит_статьи#devops#proxmox#linux#numa