Было время когда я решил, что сидеть за компьютером все время как-то нехорошо и надо что то руками сделать. Это было давно и в итоге я спроектировал, и построил установку горизонтально-направленного бурения. С тех пор прошло много лет и я решил отдать все материалы по этой установке в общественное пользование. Эта статья доказывает, что и руками я могу делать вещи странные и непонятные :)
Программист Java Spring/Java/Kotlin
Личное облако на Proxmox
В прошлой статье (https://habr.com/ru/articles/794508/) я писал как поставить Proxmox 8 на Orange Pi 5(b). Это даже получилось, но я уперся в то, что производитель железки не выпускает свежие ядра под нее. Для железки есть 5.10.160 и оно устарело для Proxmox 8. Виртуалки работают, но есть проблемы с фаерволом. Производитель обещает вот-вот выпустить новое, но ждать я не стал и решил сделать инфраструктуру по другому. О чем и напишу. Получается уже цикл статей. Эта будет описывать цель и первые шаги к ней.
OrangePi 5 с Proxmox 8
В прошлой статье я описал начальную настройку загрузчика для OrangePI 5b (для OrangePI 5 тоже сработает), а так же настройку и запуск Proxmox 7 до состояния "оно запустилось". Виртуалки там я не пробовал и оказалось, что они и не работают без дополнительных телодвижений. В этой статье я опишу как настроить уже Proxmox 8.1.3 и довести до полностью работоспособного состояния.
EDK II UEFI + Debian + Proxmox 7 на Orange Pi 5
Купил я себе пару Orange PI 5B. Показалось, что вайфай это очень хорошо. Памяти много, хочу на них накатить разного. Но не хочется постоянно все переставлять и вообще жажду удобства. В итоге поискал и нашел, что Proxmox позволяет сделать фермочку с виртуалками и потом их сносить. Мне идея сразу понравилась, памяти на девайсе много, можно порезать на виртуалки и куда поставить k3s, куда еще что. Собственно порядок установки я и опишу.
Для начала на этой версия железки нет m2 слота для подключения ssd, так что он подключен снаружи в usb3 порт. Просто купил портативный ссд диск, попутно пожалев, что не дождался выхода версии где и вафля есть и m2, но пойдет для моих скромных задачек. То есть мне нужно что бы загрузка была с emmc (впаян в плату), там должен загрузчик стоять, а ОС должна быть на SSD, который воткнут в USB3 порт. Потому как износить emmc впаянный не хотелось бы.
Поставить ОС на SD карточку и грузить, и даже поставить на SD карту и грузить с USB-SSD не сложно вроде бы, это дефолтные установщики умеют (не вышло, но я не старался), мы не ищем легких путей. Значит надо поставить загрузчик, который умеет сразу с emmc зацепить USB-SSD. Такой загрузчик называется EDK II (мне он понравился среди альтернатив тем, что позволяет свободно грузится откуда угодно). Далее порядок установки загрузкичка, который из всех сработал. На основе вот этой доки я собрал rkdeveloptool это прошивалка emmc, который распаян на борту orangepi 5b.
Jackson ObjectMapper Streaming API без возни
Маппинг джейсонов или еще чего в модели чаще всего головная боль. Много мелочей, модели сделай, все подгони, аннотации расставь и прочее. Далее код примерно наколеночный, кому надо идею, поймет. Маппинг еще и памяти ест очень много, так как обычно ObjectMapper применяют примерно так:
mapper.readValue(inputStream,Model.class)
В итоге если модель большая маппер ее всю в памяти построит за раз, прочитав опять же весь json из стрима. Хуже когда даже json сначала в строку читают конечно. Потом приходит очередной ругатель и заявляет, что это java виновата. Что бы этого не делать, придумали ObjectMapper Streaming API. Что то вроде такого:while (jParser.nextToken() != JsonToken.END_OBJECT) {
String fieldname = jParser.getCurrentName();
if ("name".equals(fieldname)) {
jParser.nextToken();
parsedName = jParser.getText();
}
Но фактически руками парсить json это тоже головняк. Есть хак, который позволяет и модели сразу получать и стриминг использовать. Может кому пригодится.
Как продлить время автономной работы телефона (VPN+DNS)
Надо было мне разобраться получше с iptables и ansible, а для этого нужна задачка. Задачка была выбрана такая: поднять свой VPN сервер с возможностью резки рекламы и прочего spyware.
Суть происходящего при резке рекламы с помощью DNS сервера состоит в том, что когда клиент спрашивает сервер какой IP адрес сопоставлен имени хоста, то DNS сервер отвечает ему 0.0.0.0 В итоге клиент ходит сам к себе и быстро получает отказ, так что не пользуется для этого модемом связи в случае с телефоном. Что экономит батарейку не просто на процент, а при моем режиме использования телефона время автономной работы выросло с 8-10 часов до 23.5. Специально засекал и был мягко говоря удивлен. Как показала практика 85% запросов от телефона это spyware.
Ansible был выбран потому, что для настройки всего даже на настраиваемый сервер заходить не надо, просто нужен доступ по ssh к нему. После настройки конфиги для подключения к VPN будут лежать в папке с плейбуком. Да и сам запуск это одна команда. Не люблю я запоминать, что я там пять лет назад настроил и Ansible для того что бы этого не делать идеален, не говоря уже о прочих его достоинствах. Запустил у себя на ноуте плейбук, он все тебе на сервере настроил, потом отсканил QR код на телефоне, работает.
В качестве DNS сервера с возможностью резать телеметрию и прочую гадость был выбран Pi-hole DNS. Просто потому, что он очень не требователен к ресурсам и мне хватает на амазоне t3.nano ноды, которую мне дали бесплатно на год. При этом я видел на DigitalOcean готовый дрополет Pi-hole VPN, но он прибит к этому провадйеру, а мой плейбук я пробовал уже на двух разных и он просто пашет, плюс там видно все, что он делает. Плюс ко всему при установке он закачивает более 5млн бан записей в DNS что бы не искать их потом.
Как поднять инстанс Mastodon (аналог Twitter)
Прошло уже месяца два как я начал миграцию из Twitter в Mastodon (далее прописью). Мастодон это полный аналог твиттера, только ты можешь поднять свой сервер и все сервера соединены между собой, так что ты можешь общаться со всей сетью. Контента, особенно англоязычного, в мастодоне море, журналисты, NASA, все крупные новостные издания уже там и среди моих подписок. Если не хочется возни, то можно на любом сервере завести себе аккаунт где открыта регистрация. Есть веб клиенты и приложения для android и ios. Все это называется федеративная сеть. Не нравится модератор сервера, заводишь свой или мигрируешь на другой. Все реже появляюсь в твиттере теперь. Но просто создать аккаунт в мастодоне было не интересно так что я поднял себе инстанс (так называют сервера мастодона обычно), о чем и напишу.
Особо хочу отметить адекватность и интересность обитателей. Пока что это сеть не пораженная раком как твиттер. Так что шитпостинга и неадекватов там мало. И как в твиттере нет одного Илона, нашего всего, Маска, способного забанить кого угодно по желанию левой пятки. Мало того так как админ сервера вы, вы можете банить целые сервера федиверса так что всякая гадость, с вашей точки зрения, быстро остается в изоляции и может совершенно спокойно коммуницировать межу собой на своих серверах и между своих серверов внутри своего сегмента федиверса. Есть много инстансов где пускают только по приглашению или вообще не пускают. При этом они могут читать всех, их могут читать все, но они могут забанить кого не хотят видеть. В общем все честно и спокойно, все живут с кем хотят и как хотят, и могут общаться. Инстансов сотни, может уже тысячи. С миллионами пользователей уже.
Игровой сетап на linux
Хотел я написать о багах и разработчиках но подумал, что это никому не надо и напишу о том как я настроил себе удобное место для поиграть на linux.
Чиним резолвинг адресов в VPN-локалке (openconnect) для docker и systemd-resolved
Публикуем либку в maven central
Предисловие
Решил я что то сделать полезное. Был проект в котором мы должны были вместо старого сервиса сделать новый, но лучше. Сервис большой получился, 10к строк бизнесс-правил+код на джаве 15к строк. Сейчас уже раза в два больше. Но так как логики много и никто толком уже многого не помнит (за тем нас и призвали, что бы были тесты, доки и минимум багов) надо было сравнить старый сервис и новый. Что бы наши тестеры не умерли от старости, пытаясь все проверить я подумал и написал сервис, который дергал апи старого и нового, сравнивал и сливал разницу ответов в базу, что бы тестеры проверили и мы пофиксили разницу. Но вот проблема, на входе у нас много параметров и возможных их значений, это же миллиарды комбинаций будут, проверять несколько месяцев с полной нагрузкой, да и похожих много.
В итоге сначала была рождена идея взять и сократить возможные изменения параметров и вообще выкинуть некоторые из перебора, а потом была взята на вооружение Pairwise testing теория и она позволила закинуть все параметры и все значенеия и все проверить целиком.
Что стоит выбрать вместо обычных подвижных видов спорта гику
Переключение раскладки с помощью CapsLock в Ubuntu 14.04
Найдено простое решение.
Виртуалки VirtualBox на btrfs
Настройка e-mu 0204 usb в ubuntu GNU/linux
Reverse tethering (получаем интернет на android с ПК linux)
Information
- Rating
- 5,883-rd
- Location
- Praha, Hlavni Mesto Praha, Чехия
- Date of birth
- Registered
- Activity