commit -m "better"
3.21K subscribers
1.01K photos
147 videos
3 files
2.36K links
just random thoughts
Download Telegram
А я, тем временем, занялся автоматизацией своей home #lab.

Моя home lab - это 3 сервера, в которых примерно 200 ядер, + 3 - 4 небольших нод, которые сделаны из всякого хлама, скопившегося за несколько лет.

Понятно дело, что все это и так крутится под #stal/ix, но, до сего момента, все это выглядело так - я руками ставил OS на машину, а дальше заходил на нее через ssh, и руками вводил какие-то команды, которые что-то делали с этой машиной.

Конечно, можно было бы взять что-то готовое, но:

* нужно есть свою собачью еду.

* https://en.wikipedia.org/wiki/Content-addressable_storage - очень хорошая основа для всякого там IaC, и мне хочется сделать еще один подход к этому снаряду.

Если совсем коротко:

* Ручная наливка хоста заканчивается тем, что мы удаляем set/stalix из system #realm, и ставим туда почти то же самое, но с автоапдейтом.

* Автоапдейт занимается тем, что "приводит систему к состоянию", которое указано в каком-то заранее определенном репозитории.

Состояние - это набор пакетов, заданное состояние - это набор пакетов, который описан в какой-то конкретной версии репозитория.

https://github.com/pg83/lab - вот код, который полностью описывает состояние моей home lab.

Он состоит:

* Fork stal/IX, который я периодически сливаю с upstream.

* Одна точка входа, тот самый пакет, который содержит ссылку на auto updater, и на пакеты, которые должны стоять в системе - https://github.com/pg83/lab/tree/master/pkgs/lab https://github.com/pg83/lab/blob/master/pkgs/lab/ix.sh#L7

Я его устанавливаю на каждый хост, он ставит:

* сам auto updater. https://github.com/pg83/lab/blob/master/pkgs/lab/services/autoupdate/scripts/ix.sh - простой скрипт, который в цикле забирает новое состояние с github, и приводит систему в соответствие этому состоянию.

* пакеты, которые должны быть на каждом хосте

* и диспетчер, который ведет на список пакетов, уникальный для хоста - https://github.com/pg83/lab/blob/master/pkgs/lab/ix.sh#L6

Вот, например, список пакетов для "host1" - https://github.com/pg83/lab/blob/master/pkgs/lab/hosts/host1/ix.sh. Видно, что он крутит мой ci, и какую-то ерунду, про которую расскажу в другой раз.

Так, я на вас вывалил некоторый "framework", в рамках которого потом буду рассказывать про свой home lab.
👍105🔥3🤡3🆒2
Forwarded from /g/‘s Tech Memes (ᅠ ᅠ)
12👏2😁2
/g/‘s Tech Memes
Photo
Вот ровно так на меня смотрят наши джуны, когда я предлагаю все переписать!
😁254🤔4💯1
https://a.exozy.me/posts/pulseaudiodb/

Текст про то, что KV база данных может быть устроена из чего угодно. В данном случае - из настроек громкости в PulseAudio.

Доставляет то, что получившийся KV поверх PulseAudio - очень медленный:

"and only takes 15.14 seconds to run for an amazing 200 reads and 200 writes"

Наверное, потому что кто-то очень любит программировать на sleep, а то как же это еще объяснить?
😁18🍌7🤯4👍1
commit -m "better"
А я, тем временем, занялся автоматизацией своей home #lab. Моя home lab - это 3 сервера, в которых примерно 200 ядер, + 3 - 4 небольших нод, которые сделаны из всякого хлама, скопившегося за несколько лет. Понятно дело, что все это и так крутится под #stal/ix…
Раз уж я занялся автоматизацией своего home #lab, то расскажите мне за DNS.

Вот у меня изначально каждый хост знает свой hostname. Ну потому, что хост - это единственное, что отличает его конфигурацию от всех остальных, и это единственное, что я задаю руками при наливке хоста.

А дальше мне бы хотелось, что, когда dhcp раздаст всем по IP, каждый хост "куда-то" рассказал про свой IP, в виде пары (hostname, IP), например, через broadcast, и это самое "куда-то" начало обрабатывать DNS запросы.

У меня в голове крутятся следующие ключевые слова: gossip, zeroconf, avahi, bonjour, но ничего конкретного я из этого стека вспомнить не могу, и вообще, я не настоящий сварщик.

Пока я сделал по рабоче-крестьянски: привязал в dhcp IP к mac, и прописал все хосты в /etc/hosts на каждом хосте, но это как-то не очень спортивно.
🤔5
https://habr.com/ru/companies/ruvds/articles/796345/

Годный текст (перевод, оригинал там же, по ссылке) про #GNOME.

Из него я узнал, что в GNOME появился аж третий терминал "по умолчанию", о как.

От автора патчей, ускорявших vte (да, да, все три терминала построены вокруг одной и той же библиотеки, #libvte, только вот у кого-то она тормозит, а у кого-то нет).

Неожиданно годный продукт, по крайней мере, не возникает позыва закрыть, и никогда больше не запускать.

https://gitlab.gnome.org/sungsphinx/ptyxis

#ptyxis

Правда, автор пока не договорился с libvte про свои патчи, и носит их с собой:

https://gitlab.gnome.org/sungsphinx/ptyxis/-/tree/main/build-aux

Поэтому он не может быть собран с системной libvte, и вынужден предлагать всем попробовать свое поделие через flathub - https://gitlab.gnome.org/sungsphinx/ptyxis#installation.

Я когда-то писал про libvte, и про gnome-console, удивительно, но вот этот косяк с W_EXITCODE (https://xn--r1a.website/itpgchannel/282) люди тащат из проекта в проект.
👍12😁6🤮3🔥2
Forwarded from The After Times
💯27😁8🤡7
Поговорим о карьерных перспективах
😁32🍌8💯4
commit -m "better"
https://habr.com/ru/companies/ruvds/articles/796345/ Годный текст (перевод, оригинал там же, по ссылке) про #GNOME. Из него я узнал, что в GNOME появился аж третий терминал "по умолчанию", о как. От автора патчей, ускорявших vte (да, да, все три терминала…
https://habr.com/ru/companies/ruvds/articles/796345/

Никак меня не отпускает этот текст.

Там просто кладезь говна, изготовляемого #GNOME, и сопричастными.

Например:

"Когда они выпустили libxml 2.12.2, она была настолько поломана, что всё зависящее от неё не собиралось из-за отсутствующих заголовков. В том числе и больше четырёхсот приложений, не имеющих никакой связи с десктопным окружением GNOME, такие как Chromium, FFmpeg, VLC, Wayland, Xfce [23]. Неделю спустя была выпущена новая версия, устраняющая баг [22]."

Не понимаю, почему .2, наверное, раньше просто не заметили.

Оно было сломано с самой 2.12.0, и было сломано катастрофически.

https://github.com/pg83/ix/commits/main/pkgs/lib/xml/2/t/ix.sh
https://xn--r1a.website/itpgchannel/1473

Оцените, я с ноября прошлого года занимался тем, что накатывал каждую следующую версию libxml из ветки 2.12.X, а потом, матерясь, откатывал на 2.11.

Почти полгода они не могли починить одну сраную библиотеку после небольшого рефакторинга.

Вот, наконец-то, сегодня не стал откатывать. На самом деле, два проекта были сломаны по сборке, но мне это пиздострадание надоело, и я починил их сборку самостоятельно.

Треш, угар, содомия.
🔥13😁8🤡8
Forwarded from The After Times
Появление React ребята из Facebook часто объясняют примерно вот так:

В далеком 2013 году в Facebook Chat часто появлялись фантомные сообщения: уведомление приходило, иконка загоралась, а самого сообщения не было.

Это было вызвано ужасным императивным кодом, а чтобы это починить и был придуман React.


У меня всегда были вопросы к этому объяснению. А вчера Adam Wolff причастный к разработке добавил деталей:

Да, React, был действительно создан для решения проблемы фантомных уведомлений, но эту проблему он в результате не решил, потому что проблема на самом деле была в кривых настройках DNS где-то в Индии, и когда DNS починили проблема ушла.

https://twitter.com/dmwlff/status/1762885255030259854?s=20
😁63👍4😢4🐳4🤣1
The After Times
Появление React ребята из Facebook часто объясняют примерно вот так: В далеком 2013 году в Facebook Chat часто появлялись фантомные сообщения: уведомление приходило, иконка загоралась, а самого сообщения не было. Это было вызвано ужасным императивным кодом…
Правильно, когда не можешь разобраться в проблеме, все вали на старый плохой код, и говори, что надо вместо старого и плохого написать новый и хороший.

Конечно, если все делать плохо, то будет плохо, а если плохо не делать, а делать только хорошо - то все будет исключительно хорошо.
😁15👍85🤯2
https://www.opennet.ru/opennews/art.shtml?num=60686

Вышли 6-ые кеды.

У меня их нет, и пока не будет (#kparts), а вот то, что они объявили #wayland сеанс основным, очень и очень много значит.

Это значит, что внедрение wayland сейчас станет лавинообразным, и, через год-два, будет не 15% wayland, а 15% X11. #future

Надеюсь, не откатят это, как когда-то сделали SDL.
👍21👌3🐳3
Forwarded from Programmer memes
Редкое издание

Programmer memes
😁48🗿54👎1
commit -m "better"
Ночной (уже) #rant У меня продолжает бомбить от обновления #musl, да. Есть такое, довольно популярное мнение, что мы "должны" open source'у, и что надо тащить все изменения в #upstream, неважно, насколько там упоротые мейнтейнеры. Я с этим категорически…
Вышла новая musl, и, традиционно, она ломает то, что раньше "всегда" работало.

musl характеризуется тем, что не инклудит заголовки из ядра linux, а использует только публичные данные про ABI Linux.

С одной стороны, это хорошо, потому что меньше зависимостей и проще для #bootstrap.

С другой, им приходится заново описывать все структуры и константы для общения с ядром.

Вот, в новом musl досыпали интерфейсов для stat* вызовов.

Конкретно, поддержали вызов statx(). Но сделали это очень неполно:

https://git.musl-libc.org/cgit/musl/tree/include/sys/stat.h#n129 - вот структура от Фелкера

https://github.com/torvalds/linux/blob/master/include/uapi/linux/stat.h?ysclid=lt8qmyswiv398996151#L99 - а вот структура от Торвальдса

Видно, что у Торвальдса в конце на 3 поля больше.

Что это значит?

1) Что те программы, которые одновременно включают sys/stat.h, и linux/stat.h, перестанут компилироваться

2) Те, что включают только sys/stat.h, перестанут компилироваться, если используют вот эти 3 поля, которых нет в musl.

Проблема, понятное дело, не надуманная, у меня уже сломалась сборка приличного набора софта после upver.

Мораль?

Не знаю, копируешь описания структур - будь добр проверить, что они работают с уже существующим кодом.
👍9🐳4🔥3
commit -m "better"
Вот, опять, ровно те же круги по воде - новая libadwaita, новая версия webkitgtk. Значит, скоро 45-ый #GNOME. Вот вам соображение - libadwaita и webkitgtk пишет, в основном, #igalia, в первую переносят запчасти из epiphany, а вторую - в ней же и используют.…
epiphany  46rc-1
webkitgtk 2.43.4-1


Что это значит?

А это значит скоро, свежий релиз #GNOME.

Вообще, конечно, #igalia молодцы, по сути, сами себе пишут webkitgtk, и сами же его релизят, когда им нужно.
👌6👍3🌚3
commit -m "better"
С точки зрения мейнтейнера CI в дитсрибутиве, Rust - это тихий ужас:
Я, когда писал вот этот вот текст, про то, что rust с его каргой - тихий ужас, с точки зрения дистростроения, тогда еще не имел в своем #CI программ на #rust.

А теперь у меня их порядка 20 штук, и, я должен сказать, что https://xn--r1a.website/itpgchannel/337, как говорится, не "в бровь, а в глаз".

Потому что мой CI половину (половину, Карл!!!) времени занимается тем, что пересобирает эти несчастные 25 программ. Напомню, что всего у меня порядка 2000 пакетов, и вот где эти 20 программ, и где половина времени моего CI?

Я тогда, конечно, был чересчур оптимистичен, и решение, которое мне тогда пришло в голову, прямо сейчас реализовать не выйдет.

Но я выкрутился тем, что отселил CI для растопрограмм в отдельный контур, на отдельный, более слабый, хост (64 ядра vs 88 в основном контуре). Ну и оно там "как-то" бежит, не замедляя весь процесс.

Я не знаю, какой-нибудь сраный https://github.com/zed-industries/zed - это 1200 крейтов в зависимостях. 1200, Карл!!! Это больше, чем просто библиотек в среднем дистрибутиве Linux! Для сборки текстового редактора! 1200 библиотек!

Меня, признаться, знатно подбамбливает от всей этой экосистемы, так жить нельзя.
👍1873😁1🤯1
commit -m "better"
#linux #kernel #ci https://www.phoronix.com/news/Linux-6.8-Sched-Regression TL;DR - в процессе слияния ядра 6.8 Линус заметил, что, когда он собирает свежее ядро, будучи загруженным в это свежее ядро (#bootstrap), то у него это ядро собирается в 2 раза медленнее.…
Смотрите, не прошло и года, как коллегам из ядра предложили наладить хоть какой-то CI, лишь бы они согласились:

https://patchwork.kernel.org/project/linux-kselftest/cover/20240228225527.1052240-1-helen.koike@collabora.com/

Пока в треде ничего интересного не произошло, в основном, зарубились за то, можно ли использовать для общения проприетарные сервисы, или нет, по делу никто ничего не сказал.

Но, с учетом того, что в этом замешаны RedHat и Коллабора, шансы у этого начинания есть.
🔥6👍3🆒3🤔1
Нас, кстати, уже > 1500!

Если честно, я удивлен (и обрадован), тому, что так много людей готовы читать мои бредни про open source вообще, и про ошибки сборки open source программ в частности!

Stay tuned!
🔥56👍13❤‍🔥86🍾5🏆3😎2👨‍💻1