]> Sergey Matveev's repositories - stargrave-blog.git/log
stargrave-blog.git
9 months agoПочему Чили такая длинная?
Sergey Matveev [Wed, 3 Jul 2024 08:08:11 +0000 (11:08 +0300)]
Почему Чили такая длинная?

https://unchartedterritories.tomaspueyo.com/p/why-is-chile-so-long
Много любопытных фактов об этой стране.

9 months agoЗарегистрировал cypherpunks.su
Sergey Matveev [Tue, 2 Jul 2024 16:43:45 +0000 (19:43 +0300)]
Зарегистрировал cypherpunks.su

Решил зарегистрировать cypherpunks.su домен. Пока на всякий пожарный,
заранее, чтобы постепенно на него начать переводить ресурсы с
cypherpunks.ru. Похоже что .SU всё же не .RU/.РФ, и, надеюсь, что
ожидаемого идиотизма с обязательными Госуслугами
(9656f8631da287a2bc0ea60574ae7489433c5022) с ним не будет.

9 months agoregreSSHion
Sergey Matveev [Tue, 2 Jul 2024 15:57:53 +0000 (18:57 +0300)]
regreSSHion

https://www.qualys.com/regresshion-cve-2024-6387/
https://www.opennet.ru/opennews/art.shtml?num=61470
https://www.opennet.ru/opennews/art.shtml?num=61473
Наверное впервые вот появился баг/уязвимость в софте, который придётся
обновлять на каждой подвластной мне машине. Ибо есть такие, где ничего
не запущено из демонов по сути кроме OpenSSH. В новостях пишут что
glibc-based системы подвержены, но при этом что в FreeBSD, что в NetBSD
рассылках публикуют патчи для своих систем.

9 months agoСкорпионы светятся под ультрафиолетом
Sergey Matveev [Tue, 2 Jul 2024 12:56:35 +0000 (15:56 +0300)]
Скорпионы светятся под ультрафиолетом

https://habr.com/ru/companies/yoomoney/articles/826184/
Статья вообще-то про пауков, но у человека и скорпион имеется. Мало
того, что они переносят радиацию как никто, так ещё и светятся под
ультрафиолетом. Вспоминаю сразу же rad scorp-ов из Fallout.

9 months agoBlocktronics ACiD trip
Sergey Matveev [Tue, 2 Jul 2024 10:29:02 +0000 (13:29 +0300)]
Blocktronics ACiD trip

https://laughingsquid.com/blocktronics-acid-trip-a-super-long-piece-of-collaborative-ansi-art/
https://www.youtube.com/watch?v=6zpUb3mUExA
Длинное предлинное ANSI art творение. Круто сделано, интересно, красиво.
"links -g" без проблем смог показать PNG-шку с полным рендером онного.
А вот nsxiv просмотрщик отказывается, видимо потому что 640*52258 разрешение.

9 months agoТоп-менеджер Microsoft становится главой коммерческого направления Астры
Sergey Matveev [Mon, 1 Jul 2024 15:25:44 +0000 (18:25 +0300)]
Топ-менеджер Microsoft становится главой коммерческого направления Астры

https://habr.com/ru/news/825948/
Астра конечно и так проприетарна и закрыта, но качество было неплохое,
относительно других дистрибутивов что я видел. Теперь ей точно кранты.
Ах ну да, прибыли то повысятся же, профита будет много, только зачастую
это имеет обратную зависимость для качества кода. В итоге в РФ вместо
Microsoft Windows будет нечто с systemd и топом из Microsoft, почти как
Windows. Дали ведь такой шанс одуматься и сделать что-то полезное, а
вышло как всегда.

10 months agoUlcerate -- Cutting the Throat of God
Sergey Matveev [Sun, 30 Jun 2024 10:29:17 +0000 (13:29 +0300)]
Ulcerate -- Cutting the Throat of God

http://darkside.ru/album/56236/
Много раз уже прослушал сей альбом новозеландцев, даже на концерте
которых побывал. С ходу не мог сказать что он прям очень очень хорош.
Но точно не плох. Но чем дальше, тем больше тащусь. Солидарен со всем
что в рецензии по ссылке написано!

10 months agoСовременная почтовая экосистема
Sergey Matveev [Sun, 30 Jun 2024 09:53:20 +0000 (12:53 +0300)]
Современная почтовая экосистема

https://www.youtube.com/watch?v=HT3N8YWaGsg
Автор множества книг по BSD, рассказывает про email экосистему, а также
что требуется для запуска собственного почтового сервера. Отличный
доклад, ничего лишнего не сказано, ничего не пропущено! А то множество
статей не говорят ни про SPF, ни про DKIM, ни даже про PTR записи. Для
LAN поднять такое можно, но в крупный провайдер ты почту не отошлёшь.
А то и миф есть о том, что свой собственный почтовик вообще не поднять.

А также он верно заметил то, что крупные провайдеры всячески намекают в
своих интерфейсах о лёгкости нажатия на "отправить в спам", что люди и
частенько делают, вместо того, чтобы просто удалить неугодное сообщение,
отписаться от рассылки или поставить фильтр на игнорирование
определённого отправителя (не спам, но его не хочется более видеть). И
люди сами же себя вредят отправкой в спам -- вполне себе нормальный
домен, отправитель, не спаммер, будет начинать попадать в спам из-за
вредящих действий, не задумывающихся о последствиях, людей.

Задали вопрос из зала, мол, нафига вообще продолжать возиться с
email-ом? Ответ очевиден конечно же: а других работающих федеративных
систем нет, которые бы все, так или иначе, "приняли". Без email остаётся
ужас типа "мессенджеров", централизованных в руках нескольких корпораций.

10 months agoИстория журнала "Великий дракон", "Новая реальность"
Sergey Matveev [Fri, 28 Jun 2024 22:12:24 +0000 (01:12 +0300)]
История журнала "Великий дракон", "Новая реальность"

https://www.youtube.com/watch?v=3shD18orwqg
Я совершенно не в теме игровых приставок, никогда не было.
Но всё равно интересно посмотреть всю эту историю.
В игры то я всё же любил поиграть, и книги/журналы на эту
тему почитать.

10 months agoВ FreeBSD обсуждают добавление Rust
Sergey Matveev [Fri, 28 Jun 2024 21:35:48 +0000 (00:35 +0300)]
В FreeBSD обсуждают добавление Rust

https://www.opennet.ru/opennews/art.shtml?num=61456
В OpenBSD тоже было обсуждение, законченное, конечно же, посылом нахер
от Тео. Здесь чёрт его знает как всё пойдёт дальше. Возможно кто-то
сделает fork FreeBSD без Rust, ну или мне придётся с ней уйти
(оставаться на "нормальных" версиях).

Вообще такое впечатление, что разработчики FreeBSD прям просто
замещаются молодёжью, у которой в голове совершенно другие ценности и
понятия допустимого. Сейчас сборка Go в портах делается как? Скачиванием
заранее собранного Go! Пускай пока это только Go 1.4, но прежде он
собирался из исходников. Rust в портах тоже есть. И как он собирается?
Да никак. Единственным официальным для Rust-fan-ов способом: скачиванием
бинаря из Интернета!

Когда я на днях возился с GLib/GTK (a067c04f4aa9dc0ad9a31a779115353be9d3d8dc),
то один из пакетов (уже не помню какой именно), прямо при сборке лазил в
Интернет чтобы сделать git clone одной из своих зависимостей. Речь не
про то, что в /usr/ports/distfiles скачивается как в кэш, а про то, что
каждая сборка сопровождается git clone-ом во временную директорию сборки.

Качество тут конечно же падает. Доверие к maintainer-ам у меня
улетучивается бойкими темпами. Это конечно всё равно ни в какое
сравнение с тем что творится в GNU/Linux мире, но то что его тенденции
переходят и сюда -- это удручает.

10 months agoЧто будет, если пообщаться со мной?
Sergey Matveev [Fri, 28 Jun 2024 20:34:46 +0000 (23:34 +0300)]
Что будет, если пообщаться со мной?

Когда я устроился на одну работу, то в первые же недели я подошёл к
одному коллеге, взрослому дядьке, и поспрашивал минут десять как
устанавливать одну из там разработанных программ больших. На следующей
неделе после этого, он не то что уволился, но даже не забрал свою
трудовую книжку и вообще уехал в другой город.

Недавно я писал что у нас есть стажёр
(c7e63aec647725b80611c735b34f39474888c6cc), которому я вот поручил
разворачивать BASS, IPv6, WireGuard, OSPF ну и всякое такое. Неделю я с
ним парно поадминил/попрограммировал. На следующей неделе он написал
заявление на увольнение. Говорит, что не со мной связано. Но наверное
ведь все так скажут? :-)

Другой стажёр прислал свою первую программу/задачу. Я написал review на
~350 строчек. И да, там более менее всё годно было. Два дня ничего от
него не слышно. Коллеги говорят, что он ещё не закончил читал моё ревью :-)

С одной стороны, забавные случаи и совпадения. С другой... я реально
понимаю, что со мной невозможно бы было жить. Даже с Шелдоном Купером
люди сосуществуют (я же теперь в курсе ТБВ
(4461fc237445990ecec250c075649b15fbda382a)), а я зануда похлеще. Или это
только в кино такое возможно? И вот что мне отвечать или как реагировать
на "надо тебя поженить", "найти кого-нибудь", которые теперь даже
секретариат на работе предлагает? Предложить рандеву на несколько дней
со мной, чтобы вопросы/предложения отпали сами собой?

10 months agoWir sind des Geyers schwarzer Haufen, heia hoho
Sergey Matveev [Fri, 28 Jun 2024 08:45:32 +0000 (11:45 +0300)]
Wir sind des Geyers schwarzer Haufen, heia hoho

https://noldo-ecthelion.livejournal.com/154851.html
https://ru.wikipedia.org/wiki/Чёрный_отряд_Флориана_Гейера
На одном из концертов когда-то я купил футболку с очень красивой
картиной. Нашей художницей сделанной, как мне сказали. Но только
недавно я решил поискать что же там написано. А там строчка сабжевая.

Как оказалось, это очень известная песня/стихи в Германии с начала
прошлого века, много кем исполняемые. По сути народная. Про "чёрный
отряд" крестьян, которые своих феодалов свергали. Чисто такая
социалистическая. Ну и на футболке там крестьяне бунтующие.

Но да, ради того, чтобы быть поближе к народу, один из отрядов СС её
исполнял. Как и армия ГДР, ведь они же тоже социалисты.

10 months agoСнова про юзабельность смартфонов
Sergey Matveev [Fri, 28 Jun 2024 08:23:56 +0000 (11:23 +0300)]
Снова про юзабельность смартфонов

Сегодня из-за плеча видел как человек в приложении Сбера раз двадцать
нажимает кнопку "оплатить", и она никак на это не реагирует. Он и
разными частями пальца и в разные места кнопки на экране тыкал. И только
после того, как он нажал на... не знаю как это называется, когда в
миниатюре список запущенных программ показывается, и снова перешёл в эту
же самую от Сбера, нажал оплатить, и сразу же крутилка появилась, всё
заработало.

Бесит, когда люди считают, что почему-то у каждого должен быть этот
малоюзабельный кусок дерьма. Себя не уважать -- подобное использовать.
Или это только самого приложения Сбера касается? Слышал даже, что оно
откажется работать, если аппарат "root"-ованный будет.

10 months agoОпакечивание GLib и всяких GTK
Sergey Matveev [Thu, 27 Jun 2024 18:50:27 +0000 (21:50 +0300)]
Опакечивание GLib и всяких GTK

Какое же всё это лютейшей сраное говёное дерьмо этот GLib. Я бросил
попытки "переместить" его в BASS. Собрать сам GLib, невозможно просто
так не то что в FreeBSD, но и в Astra SE. Нужно тьма патчей. Возможно
всё не так плохо будет работать, если вообще всё что касается GLib и,
судя по всему, GTK ставить в один chroot. Но 90% всякие configure,
meson, cmake просто не видят и не берут во внимание то что установлено в
других местах. Где-то что-то можно решить подсовыванием переменных
окружения с путями. Но до конца я не всё побороть смог. И хрен чего
найдёшь в документации. Где-то наверное но должно быть, но для того,
чтобы мне установить их сраный софт, мне надо колоссальное количество
доки читать? Типа каждый там норовит свою экосистему всего и вся сваять
(GIO_*, GD_*/GDK_*, GTK). Причём из GTK я дальше третьего не пытаюсь
ничего ставить, ибо GTK4 тоже не собирается. Всякие AT-SPI ставят
почему-то не только себя, но и ATK, от которого зависят. Короче прям
тошнит от помойки всей этой.

10 months agoСделал detpax -- детерминированный архиватор
Sergey Matveev [Thu, 27 Jun 2024 16:47:22 +0000 (19:47 +0300)]
Сделал detpax -- детерминированный архиватор

http://www.git.cypherpunks.ru/?p=bass.git;a=blob_plain;f=build/contrib/detpax/README
https://reproducible-builds.org/docs/archives/
Для того, чтобы хоть как-то приближаться к reproducible build-ам, архивы
пакетов тоже должны быть "повторяемыми". bsdtar можно всякие опции
указывать для того, чтобы не хранить UID/GID. touch-ем можно выставить
фиксированное время. find-ом сортировать списки файлов. Но это всё
работает пока bsdtar по умолчанию делает ustar формат.

Но большого размера файлы в него не запихнуть. bsdtar автоматом начинает
использовать pax формат, что хорошо. Но при этом он начинает в него
пихать и точные временные штампы для файлов, что ломает детерминированность
создания архивов. С GNU tar-ом (bsdtar например даже на Astra SE стоит
из коробки), тоже какие-то загвоздки есть, но детали не помню.

Поэтому написал на Go, зная что в нём из коробки есть archive/tar
библиотека, поддерживающая pax-формат, архиватор который бы не сохранял
ничего лишнего. И добавил в него возможность указания более высокого
приоритета сортировки для каких-то директорий (чтобы они были в начале
архива). Сохраняет только права доступа, sticky/setuid/setgid флаги,
файлы, директории, символические и жёсткие ссылки.

10 months agoНарушение условий использования PyGOST
Sergey Matveev [Sun, 23 Jun 2024 15:23:24 +0000 (18:23 +0300)]
Нарушение условий использования PyGOST

https://habr.com/ru/articles/823772/
https://github.com/li0ard/ckey
Увидел тут статью, где обрабатывают какой-то КриптоПро контейнер. И код,
где используются мои PyDERASN (LGPLv3) и PyGOST (GPLv3). Код размещён
под "MIT" лицензией (499d8afd7741e9056f0d4c9f969386f49a6a293f), что явно
противоречит условиям GPL.

10 months agoСтоляров а flock, lockf
Sergey Matveev [Sun, 23 Jun 2024 08:33:43 +0000 (11:33 +0300)]
Столяров а flock, lockf

http://www.stolyarov.info/books/pdf/progintro_e2v2.pdf
В главе 7.4 про захваты на уровне файловой системы, автор отмечает, что
надёжно корректно ничего из штатных средств ОС не работает. POSIX
захваты привязываются к файлу↔процессу, и если кто-то в процессе закроет
файл (например это сторонняя библиотека может быть), то захват будет
снят. BSD flock в разных ОС может быть реализован через POSIX lockf, и
поэтому заранее вы не знаете какое именно будет поведение у flock-а под
другой ОС/ядром.

Я когда читал про всю эту тему захватов при разработке goredo, тоже
сделал такой же вывод -- всё плохо непредсказуемо.

10 months agoРазмеры должны быть со знаком
Sergey Matveev [Sat, 22 Jun 2024 21:31:48 +0000 (00:31 +0300)]
Размеры должны быть со знаком

https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1428r0.pdf
Всякие size_t, пишут, должны быть со знаком. Ибо unsigned это не просто
"положительное число", а число подчиняющееся арифметике с модулями.
Откуда растёт тьма потенциальных проблем.

Я когда начинал на Си писать, то тоже удивлялся наличию не малого
геморроя (5f1645eb510d76ffb07c07fa09bffdea01959c03) с, казалось бы,
продуманному и вовсю используемому unsigned size_t.

10 months agoВы подождёте?
Sergey Matveev [Mon, 17 Jun 2024 18:55:16 +0000 (21:55 +0300)]
Вы подождёте?

http://lib.ru/BESTER/26-36.txt_with-big-pictures.html
Забавный рассказ про то, как человек хотел продать душу Сатане.
Вот очень очень похоже на бюрократический ад.

10 months agoNIST то, оказывается, рекомендует Balloon
Sergey Matveev [Mon, 17 Jun 2024 13:24:38 +0000 (16:24 +0300)]
NIST то, оказывается, рекомендует Balloon

https://scottarc.blog/2024/06/17/the-quest-for-the-gargon/
https://pages.nist.gov/800-63-3/sp800-63b.html
https://eprint.iacr.org/2016/027
Человек недоволен тем, что у NIST-а нет стандартизованных функций
хэширования пароля, чтобы напрягалась память, а не только процессор.
У нас, в ГОСТах, тоже нет ничего сильнее PBKDF2, что печально.

Но автор также тыкает в предложение NIST-а по рекомендации Balloon
функции. Совершенно не знал про это! Argon2 безусловно лучше чем PBKDF2,
но меня напрягает то, что это не конструкция "над" уже имеющимися хэшами.
Вот если в PBKDF2 засунуть Стрибог, то это пройдёт любую сертификацию. И
Argon2 внутри себя жёстко использует BLAKE2.

Balloon же мне нравится уже очень давно
(63f0684718f9df423be8268159684c788c052ab6) тем, что он не диктует какой
хэш использовать и его алгоритм относительно прост и быстро реализуется.
Поэтому я во многих своих проектах (GoVPN, NNCP например) использую
именно его (63f0684718f9df423be8268159684c788c052ab6), а не Argon2.
Balloon, судя по документу на IACR, имеет меньше потенциальных проблем
чем Argon2. То есть, безопаснее, проще и не зависит от конкретной хэш
функции. Вот и NIST его рекомендуют.

10 months agoПоследовательности в shell с нулём в начале
Sergey Matveev [Sun, 16 Jun 2024 21:03:05 +0000 (00:03 +0300)]
Последовательности в shell с нулём в начале

Случайно опечатался и обнаружил, что {01..10} в zsh (как оказалось,
и в bash) выдаёт числа с нулём в начале. А я всю жизнь printf %Xd
использовал, чтобы получить число нужной длины. Вот в Vim я не редко
читал документацию просто чтобы обнаружить любопытные трюки и факты,
а вот для *shell-а и многих других команд (find, grep, и т.д.) такой
привычки ещё не выработалось.

10 months agoПосмотрел Джона Уика 4
Sergey Matveev [Sun, 16 Jun 2024 20:44:06 +0000 (23:44 +0300)]
Посмотрел Джона Уика 4

То месяцами ничего не смотрю толком, то вот то одно, то другое
новенькое. Какие-то части (все?) сабжевых фильмов уже видел. И как и
прежде считал их наверное лучшими боевичками за эти годы, так и сейчас
продолжаю. Здорово и интересно поставленные драчки! А кроме них в фильме
и нечего более слушать или смотреть.

10 months agoПосмотрел "Непослушников"
Sergey Matveev [Sat, 15 Jun 2024 16:34:32 +0000 (19:34 +0300)]
Посмотрел "Непослушников"

https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%BF%D0%BE%D1%81%D0%BB%D1%83%D1%88%D0%BD%D0%B8%D0%BA%D0%B8
Тоже в кино, смотрел как-то и первую часть. Ничего так. Конец оказался
неожиданным ни для меня, ни для родителей. Не сказал бы что много видел
фильмов с Куценко, но всё больше его как актёра уважаю.

10 months agoВсе "домашние" пакеты перевёл в BASS
Sergey Matveev [Fri, 14 Jun 2024 21:15:56 +0000 (00:15 +0300)]
Все "домашние" пакеты перевёл в BASS

Родным пакетным менеджером FreeBSD я ставлю не одну сотню пакетов, но
которые я не обновляю. Пофиг какой версии, с отсутствием проблем с
безопасностью. Но не один десяток пакетов я хочу посвежее или их надо
обновлять из-за уязвимостей.

Делал я это всё руками, устанавливая пакеты в отдельные директории и
дальше GNU Stow-ов создавая ссылки в одно место, которое достаточно
добавить во всякие PATH, LD_LIBRARY_PATH, и т.д..

Теперь же осталось буквально несколько штук таким образом установленного
софта. Всё перенёс в BASS, заведя полторы сотни skel-ов. И вот теперь
полностью работаю (Git, SSH, Vim, zsh, Tmux, через которые это всё будет
опубликовано) через установленные в skelenv-е пакеты. Избавился от кучи
всего что было в ~/src директории, включая не пойми как разбросанные
заметки, скрипты и патчи.

Вообще я хотел написать CI систему для прогона тестов. Потом приросла
система сборки софта, но не было желания делать возможность
установки/удаления пакетов, тем более с hook-ами. Появились всё же. На
работе много пакетов обновляем удаляя и устанавливая новые версии. Но у
меня не было мыслей что я перееду на всё это и дома. Сегодня
окончательно переехал. А CI система на работе пока так ещё и не запущена...

10 months agoВышел POSIX.1-2024
Sergey Matveev [Fri, 14 Jun 2024 16:05:56 +0000 (19:05 +0300)]
Вышел POSIX.1-2024

https://news.ycombinator.com/item?id=40679809
Ссылка на самом ieee.org отвечает 418 кодом, поэтому только по
комментариям пока могу судить:
* наконец-то появилась setopt pipefail
* стали стандартными readlink/realpath
Это из того что я, так сказать, ждал. А то dash не поддерживал pipefail
(e3a3ccff5507dd83913a0809b9525e3adabd64d2), ибо его ведь нет в стандарте
POSIX, поэтому приходилось использовать другие shell-ы в скриптах, чтобы
не устраивать страшные костыли.

10 months agolibjpeg-turbo о libjpeg v9
Sergey Matveev [Fri, 14 Jun 2024 10:04:00 +0000 (13:04 +0300)]
libjpeg-turbo о libjpeg v9

https://libjpeg-turbo.org/About/Jpeg-9
Разработчики libjpeg, как заявляют libjpeg-turbo авторы, перешли все
границы по изменению API ради неподтверждённой полезности штуки,
поэтому, хоть они и могут эмулировать их API без проблем, но не будут
это делать в качестве протеста.

10 months agoВыложил BASS
Sergey Matveev [Thu, 13 Jun 2024 22:21:08 +0000 (01:21 +0300)]
Выложил BASS

http://www.bass.cypherpunks.ru/
Про проект, который изначально затевался как простая continuous
integration/testing система, переросшая в первую очередь в систему
сборки и управления пакетами, я уже упоминал
(d6a10bd448599b7fcdb4222e3d03810bd0cebec9). Пока я так и не поднял
CI-кластер, многие скрипты для удобства CI системы ещё предстоит
написать, но пакетная часть вовсю активно уже используется на работе.

Начальство разрешило публиковать это всё как мне заблагорассудится. И на
своих ресурсах выкладывать и copyright на себя делать и лицензию по
своему усмотрению. Поэтому, как всегда, это GPLv3-only.

Почти полностью перенёс в skel-ы ("рецепты" для создания пакетов) всё
что у меня собиралось вручную под управлением GNU Stow. Наверное держать
эти skel-ы вместе с кодом самого BASS не очень правильно, но пока вот так.

10 months agoКлючи/ссылки в библиографиях
Sergey Matveev [Wed, 12 Jun 2024 19:35:47 +0000 (22:35 +0300)]
Ключи/ссылки в библиографиях

http://blog.cr.yp.to/20240612-bibkeys.html
DJB много мыслей излагает о недостатках ключей не в виде порядковых номеров.

10 months agoПосмотрели "Министерство неджентельменских дел"
Sergey Matveev [Wed, 12 Jun 2024 15:44:49 +0000 (18:44 +0300)]
Посмотрели "Министерство неджентельменских дел"

Родители хотели на другой фильм, но опоздали, ждать не один час.
Ближайшим оказался сабжевый фильм, а мы все любим творчество Гая Ритчи.
Ну... активный боевичок, много крови, но что-то толком никакого Гая
Ритчи я толком и не увидел (кол-во крови вообще как-будто намекает что
это был Тарантино). Удовольствие получили, но и ничего особенного. В
целом добротно снято и сыграно.

10 months agoftpmirror.gnu.org прилёг
Sergey Matveev [Tue, 11 Jun 2024 14:39:52 +0000 (17:39 +0300)]
ftpmirror.gnu.org прилёг

Возясь с пакетами в BASS, не всегда я подсовываю заранее скачанные
tarball-ы на компьютеры. Ну чтобы заодно и проверить всё ли работает в
нём. И за несколько месяцев я частенько вижу недоступность то одних, то
других ресурсов. Сегодня вот недоступен сабжевый "CDN", с которого все
GNU программы качаются. У некоторых вообще перестали узнаваться домены.
Проверял не только из российских сетей, но и пользовался на ноутбуке для
запуска недоверенного кода зарубежными сервисами определения живности
ресурсов. Некоторые зеркала у SourceForge тоже лежат целый день. Бывает
так, что по IPv4 недоступны, а по IPv6 всё ok. А то и наоборот. Причём
не исключаю, что запросто некоторые случаи из-за кривых рук
администраторов, которые просто забывают про IPv4/IPv6 и их мониторинг
не проверяет форсированно их оба. С каким-то ресурсом так уже было, пока
я не написал письмо его владельцу.

В общем, кэширование и бережное хранение download artefacts -- штука
обязательная. Даже у крупных проектов вполне себе может относительно
продолжительное время что-то не быть доступно.

10 months agoСнова критика статей на Хабре
Sergey Matveev [Sat, 8 Jun 2024 17:58:21 +0000 (20:58 +0300)]
Снова критика статей на Хабре

https://habr.com/ru/articles/820429/
https://habr.com/ru/articles/820403/
Человек хочет описать как удалить нечаянно закоммиченный файл. Вообще
достаточно бы было сказать "man git-filter-branch", где внутри примеров
есть нужный код для удаления файла. Всё, два слова. Кто не знал был бы
благодарен такой команде.

Но нет, пишется статья где куча снимков экрана, да ещё в JPEG, упорно
всё демонстрируя в каких-то GUI и/или Web-интерфейсах. И это попадает в
главную сводку статей на Хабре. Не, уже не в первый раз, но именно
подобные статьи активно "плюсуют" и Хабр просто вынужден давать людям
подобный материал. Печально, печально.

Комментарии, у которых много "плюсиков", отдельно заслуживают ненависти,
ибо убеждают что в истории Git-а всё равно оно всё останется. То есть,
откровенная лажа откровенно популярна.

Перехожу на другую статью попавшую в Atom, про поднимание своего VPN.
Опять лютое количество снимков экрана с какой-то программой, ссылку на
которую нет вообще. На VPS-ке предлагают установить cURL для того,
чтобы... выполнить curl|sudo bash. После подобных советов не удивляешься
почему же будут считать "VPN"-ы не безопасной для граждан темой.

10 months agoЦивилизация Сида Мейера
Sergey Matveev [Thu, 6 Jun 2024 20:05:15 +0000 (23:05 +0300)]
Цивилизация Сида Мейера

https://www.youtube.com/watch?v=Ut0kNCE943U
Часовой рассказ про историю этой игры. Мне кажется, что на неё я уже
больше потратил времени чем на Fallout 2 когда-то. Не буквально ту самую
DOS версию, а FreeCiv, которая не то чтобы существенно отличается от
первой версии, точнее от чуть более продвинутой второй. В этом видео
хотя бы много показано кадров из gameplay.

10 months agoGathering получают золото за Mandylion
Sergey Matveev [Mon, 3 Jun 2024 18:49:51 +0000 (21:49 +0300)]
Gathering получают золото за Mandylion

https://www.darkside.ru/news/164259/
Спустя почти 30 лет из альбом стал золотым. Появился он у меня довольно
рано, среди первой музыки. Но как-то не впечатлил по началу вовсе. А
спустя уйму лет, снова переслушав, согласен что очень и очень достойный
(ae5a44d1d27b6ac42cbca8eb1a513dd563f780da).

10 months agoСтоит ли использовать include-what-you-use?
Sergey Matveev [Sun, 2 Jun 2024 08:22:55 +0000 (11:22 +0300)]
Стоит ли использовать include-what-you-use?

https://danra.prose.sh/dont_use_iwyu
Автор пишет о том, что не надо использовать сабж, мол много проблем. Вот
ни одной не встречал с ним (49a33c0057d871647886bde81c0bdfa9ed9c65f1).
Но потому что применяю для Си кода. Видимо все указанные проблемы связаны
с безумной ненужной сложностью C++. А я очень доволен работой этой штуки.

10 months agoUltimate Moscow Brutality
Sergey Matveev [Sat, 1 Jun 2024 19:11:25 +0000 (22:11 +0300)]
Ultimate Moscow Brutality

В шесть утра проснулся, уж не знаю от чего именно. Но соседи, явно
подростки, шумели с самой ночи. Видимо не спали вовсе. Пошёл засыпать с
берушами и маской для сна. Зато проснулся в кой да веки выспавшимся.

Планов куда-то идти не было, ибо работы до фига, прям горит. Но в
заметках был URL до концертов на сегодня. И оказалось что Ultimate
Moscow Brutality 2 начинается аж в 12:30 дня. Решался: или ехать туда
прямо сейчас, сразу же, и не думать о планах на день, как совместить
работу, работать ли, или... ну я не дет-металлист что ли, да и когда я в
последний раз то был на подобном, ведь даже Coyote Brutal Fest пропустил
в этом году. А тут ещё и первый день лета.

Разморозив блинчики в микроволновке, попихав их в себя впопыхах,
побрившись на скорую руку, поехал на концерт. Опоздал на полчаса, но
прямо к концу soundcheck-а первой группы. Ничего не пропустил. И вот
когда спускаешься в подвал, вместе с толпой волосатых непойми как одетых
чуваков, слышишь злобное мощное рычание электрогитар, то понимаешь что к
чёрту программирование всё это, как минимум на один день.

Отыграли Septory из Санкт-Петербурга -- ну просто slamming brutal death.
Далее Pulsa Di Nura из Севастополя -- интересную музыку играли, не шибко
слэмовую и качовую, но мне такое больше по душе. Далее шли Trigger из
Нижнего Новгорода, с интересными качовыми темами, нигде прежде не
слышымыми мною. Потом Total Despair из Пензы, мне уже знакомые, нечто
похожее на Swamp, тоже slamming brutal death.

По сути, единственными кто был не очень в теме, так это были последующие
Anal Grind. С ними я знаком давно, был на первых концертах, но дальше
уже... вырос что ли? Да и на фотографиях с разных мероприятий видел что
они девицу притаскивают, показывающую сиськи. Ну блин, это Коррозия
Металла что ли? Сегодня тоже были с ней. По сути я вроде впервые видел
что на сцене деваха с оголённым торсом была. Судя по разговорам в зале
после их выступления, они мало кому понравились, комментируя со смехом
что из-за сисек. Но я думаю большая доля правды тут есть: зачем они,
если ты и так способен отлично заводить толпу и веселиться?

Я вот думал: может это я такой странный и явно не нормальный, что
никогда не понимал (но и не был, конечно же) зачем нужен стриптиз, зачем
всё это голое на сцене? Ведь полно мужчин, судя по разговорам, и по
проституткам ходят и не считают это чем-то выделяющимся, мол как на
спортивное состязание сходить? Но, опять же, судя по разговорам в зале,
это не то чтобы одобряют.

Далее шли Gravegod, с хорошим качовым death-ом. Ну а потом 7 H.Target,
ради которых я и добавил в закладки URL на концерт. Басиста не было в
этот раз, как и фоновых музыкальных вставок. Барабанщик, гитарист и
вокалист. Но рвали и метали ещё как! Я явно их поклонник, хотя со
временем они всё же меняются. Много от них ждал и они полностью
удовлетворили меня.

Вообще ещё три группы должно было быть после, но я после моих любимцев
решил поехать домой. Я всё же и так устал из-за работы, а тут всё же с
часу дня до восьми на ногах. Не знаю что пропустил -- группы мне не
знакомы. Но уверен что переплюнуть 7 H.Target для меня они не смогут. Да
и домой удобно на транспорте можно вернутся. Дождик как-раз прошёл перед
моим выходом из клуба, радуга была большая. По пути домой дождя не было,
но сразу же начался как вошёл в квартиру. Но завтра шея будет отваливаться.

Ну и приобрёл 13 дисков и пару футболок.

11 months agoЦена VoLTE
Sergey Matveev [Fri, 31 May 2024 08:24:12 +0000 (11:24 +0300)]
Цена VoLTE

Обнаружилась проблема после начала использования нового сотового с VoLTE
(9e9b0a3dd40fc7f049e0a0ca888de42c8b53a72a). Раз в сутки он отправляет
несколько килобайт данных в Интернет. Само собой для меня это чёрный
ящик, понятное дело что небось в Китай/США/whatever сливает что-нибудь.
Была статья на Хабр, где демонстрировалось, что чуть ли не поголовно
всякие кнопочные, если не через Интернет, то через SMS в Китай шлют
данные. Пока я ещё не дошёл до кондиции полного отказа от сотового.

Проблема не в отправке (и так ясно что они упорно следят за нами), а в
том, что Билайн начинает тарифицировать это как выход в Интернет. 7₽/сут
за 10MB. Вот только он начисляет цену не за несколько килобайт реально
отправленных (судя по счётчику внутри телефона), а сразу за эти 10MB. То
есть каждый день с меня снимали по 7₽. 7*30=210. Я такие деньги могу
месяцами тратить на разговоры -- я мало общаюсь по нему. Дороговато.

Если в Nokia выключить "data service", то вырубается 4G и VoLTE. Если
через USSD команды Билайна вырубить доступ в Интернет, то... он не даёт
зарегистрироваться в 4G сети, соответственно тоже прощай VoLTE.

Удалял "connection" профили (APN), где упоминается Билайновский
Интернет. Так и не понял когда они "возрождаются" -- наверное если
SIM-ки менять между аппаратами. Остался "ims" профиль, где явно не
указан APN для Интернета. Для работы VoLTE этого хватает. Попытка
установить Opera Mini (она тут просто в меню есть, не удалить) говорит,
что доступа в Интернет нет, Билайн не присылает SMS что я вышел в
Интернет. Так что похоже, что всё же отключил возможность выхода в
Интернет, без ломания VoLTE. А то платить 200₽, пускай и за потрясающе
хорошую связь, ну как-то жаба душит.

11 months agoКак стажёр не стал ИТ-разрабом. Наш опыт
Sergey Matveev [Fri, 31 May 2024 07:29:58 +0000 (10:29 +0300)]
Как стажёр не стал ИТ-разрабом. Наш опыт

https://habr.com/en/companies/ozontech/articles/817737/
Тема стажировки для меня совершенно новая. В нашей компании никого ниже
junior-разрабов ещё не приходило. А тут так вышло, что я с коллегами с
двумя стажёрами будем вот заниматься. В других отделах тоже появились
стажёры, но им откровенно скучно и наверное задерживаться не будут, судя
по всему.

У нас же появится стажёр который ничего кроме Windows даже не трогал. Но
хочет быть программистом. Вот за всю свою жизнь я никогда не встречал из
(потенциальных) коллег кого-либо, кто не работал в Unix-like системах.
Благо, эту тему с ним будет закрывать другой коллега. Я прям тут даже не
знаю как подступаться к такому человеку и вообще сколько занимает время
погружения в уверенную работу в Unix ОС.

Начальство предложило скидывать мелкие задачи наших проектов на него. Но
у нас, соответственно, сразу и рождается вопрос: мы хотим чтобы стажёр в
каких-то мелочах нам помогал, но при этом ушёл от нас, ибо все эти
мелочи это скучные и унылые задачи (текущие проекты по большей части уже
на конечном пути развития, так сказать). Если бы мне давали всякие
задачи на написание тестов и прочего, то было бы очень скучно. Но без
подобных задач, конечно же, никуда.

Но мы решили дать задачу на написание IM-а. Очень люблю её, ибо ты и
сетевое взаимодействие между клиентом-сервером потрогаешь, и СУБД и
криптографию для защиты протокола и с форматами данных можно поиграться
и чуть поадминистрировать для разворачивания. Возможно коллеги что-то
подправят, но я предложил сделать JSON-RPC over TCP для взаимодействия
клиента и сервера. Потом JSON заменить например на protocol buffers,
чтобы потрогать не-schemaless форматы. Для защиты канала связи сверху
потом прикрутить Noise. Интерфейсом на клиенте для начала может быть
WebUI какой-нибудь: так ещё и HTTP+HTML можно будет потрогать. Ну и
соответственно всё это хотя бы интеграционно тестировать, писать
документацию в каждых коммитах.

Плюс ещё уже приступил к работе другой стажёр, который хочет стать в
идеале devops-ом. А вот для него задачи исключительно я напридумывал. У
нас есть неиспользуемая маленькая стойка со старыми серверами и
коммутатором. Вот организовать в ней IPv6-only сеть, развернуть на всех
машинах с разными ОС (в идеале и одну на FreeBSD бы иметь) BASS
(d6a10bd448599b7fcdb4222e3d03810bd0cebec9) CI систему. До этой сети
предполагается поднять VPN (WireGuard), а то ещё и OSPF/Babel например
приделать, чтобы подключаясь, получать маршруты до машин в этой
изолированной сети. Только одна машина будет иметь доступ в Интернет, на
которой и GoProxy и подобные другие демоны будут. А для BASS нужно будет
как-раз множество daemontools service-ов написать, что-то с zsh на POSIX
shell перевести, кое какие утилиты на Go написать и всё в таком духе. Не
знаю как там пойдёт всё это дело, но надеюсь что перед свободным релизом
BASS-а многое полезное будет написано как-раз. Придётся и в сетях
поковыряться, в VPN, в маршрутизации, в POSIX shell, zsh увидеть (и
сравнить насколько в нём проще), Go потрогать, понять daemontools и тему
про запуск процессов, поднять почтовый сервер (для отправки
уведомлений), писать как минимум уже с дюжину BASS skel-ов, являющиеся
redo-целями.

Пока коллеги решили что лучше ставить Debian. Пока один Debian на master
и одной slave ноде. Ну наверное не помешает человеку начать трогать
systemdOS, а то вдруг в основном ей и придётся заниматься. Но, кроме
FreeBSD, я думаю стоит и GNU/Linux (не systemdOS) какой-нибудь
поставить на другом slave, просто для саморазвития (Alpine, CRUX?
что-нибудь из этого).

Все задачи мы кстати заводим в schwabrak-е
(bd94115b066472316ea03e85d611f732785f8b7c,
42b3d1b739b5f0cef40f349cdc7044a785dc604a). Пока ещё не ясно смогут ли
стажёры это сдюжить. Никто не знает что такое merge vs rebase. То бишь в
Git нулевые знания.

В текстовых редакторах ещё никто из них не работал (всё что не Vi(m) или
Emacs, естественно нельзя воспринимать всерьёз). Но мы решили не
настаивать на их освоении. Просто порекомендовали задуматься об этом.

11 months agoВ Fedora одобряют включение бинарей для macOS
Sergey Matveev [Wed, 29 May 2024 21:21:46 +0000 (00:21 +0300)]
В Fedora одобряют включение бинарей для macOS

https://www.opennet.ru/opennews/art.shtml?num=61270
Бинарные пакеты для проприетарной ОС, теперь допустимы в пакетах Fedora,
где прежде существовало правило о сборке всего из исходников.

11 months agoУбедительные продавщицы
Sergey Matveev [Tue, 28 May 2024 16:58:45 +0000 (19:58 +0300)]
Убедительные продавщицы

Сегодня ходил в салон Tele2 для расторжения договора, ведь VoLTE на нём
нигде так и не запустился (9e9b0a3dd40fc7f049e0a0ca888de42c8b53a72a), в
отличии от Билайна. Продавщица спросила что за аппарат у меня, показал,
начала убеждать в том, что кнопочные это 2G, а Tele2 это 3G как минимум,
поэтому ничего и не заработало. Доводы о том, что он всё это прекрасно
держит -- закончились её фразой что не будет спорить, с тоном что она
всё равно при своём мнении.

Помню как-то я с другом на Митинском радиорынке приобретали переходник с
Motorola C350L порта на USB. Или на COM-порт, уже не помню. Так вот там
продавщица упорно настаивала на том, что USB порт (который в
действительности) это COM-порт. Или наоборот, опять же не помню детали.
Уж не помню, но предложили поспорить. Она даже на деньги. Куда то она
отошла спросить что же у неё в руках за кабель. Вернулась и типа делает
вид, что никто ни о чём не спорил.

Вот упорно женщинам надо доказывать свою правоту, даже там, где они явно
не правы и даже тогда, когда знают об этом.

11 months agoDNSBomb
Sergey Matveev [Mon, 27 May 2024 19:40:12 +0000 (22:40 +0300)]
DNSBomb

https://dnsbomb.net/
https://www.isc.org/blogs/2024-dnsbomb/
Так много атак всяких развелось, что для них постоянно придумывают
запоминающиеся названия и, соответственно, сайты. Ничего плохого,
наоборот здорово считаю.

11 months agoУмаялся подключать VoLTE
Sergey Matveev [Mon, 27 May 2024 19:21:08 +0000 (22:21 +0300)]
Умаялся подключать VoLTE

Новый сотовый (0b9b0c1e70dc4ed50cf4882a6101d4be0d1fe8e7) я специально
брал с поддержкой VoLTE. Ибо явно это правильно что гораздо гораздо
более совершенная и эффективная технология передачи данных используется
и для мизерного голосового трафика.

Сходил в офис Билайна, с вопросом что может идти не так и почему у меня
VoLTE не включается, хотя 4G покрытие есть, SIM-ка современная, в
настройках VoLTE явно включено. Конечно же, мне ничего не ответили, не
знают.

Пошёл в Tele2. С ним никогда не сталкивался, но отзывы хорошие слышал.
Надеялся что у них вроде бы как современная вся экосистема то должна
быть. Сразу сказал что мне нужна SIM-ка (номер) для VoLTE звонков, не
будет ли проблем? Заверили что нет, всё должно быть нормально.

Если Билайн при голосовых звонках делал downgrade до 2G, то Tele2 до 3G
и показывается значочек "HD", намекая на high definition аудиокодек.
Уровень сигнала Tele2 и у меня дома на максимуме и у родителей в
квартире. Уже хорошо, явно лучше чем 2G. Но VoLTE значка нет.

Решил добить вопрос и поехал к отцу, у которого какой-то современный
дорогой всё умеющий смартфон, в котором и Билайн его рабочий и МТС для
Интернета SIM-ки. Хотел посмотреть что будет у меня с МТС картой. У МТС
и сила сигнала была хуже и бросало его между 2/3/4G. Причём мой сотовый
говорит что я в сети, а отец рядом сидит и его сотовый сообщает что не
могу дозвониться, абонента нету.

Но начали проверять все SIM-ки в его смартфоне. На моей Билайн и его --
VoLTE показывается, всё тип топ. Но ни Tele2, ни МТС VoLTE не показывают.
Попробовал даже подключить Интернет к Tele2, ну мало ли без этого
вообще, допустим, IP типа не ходит куда надо. Не помогло. В общем,
разочаровал меня Tele2, заверив что всё тип-топ, но ничего даже в
дорогом смартфоне не заработало. Ладно там Nokia кнопочная уж. Ну а про
SIM-ку МТС вообще никто ничего не помнит, хотя 4G на ней подключается.

Я как бы и удивлён и не очень. Ведь, насколько понимаю, VoLTE штука
полезная и для ОПСОСов, эффективно утилизируя радиоканал. Но никто ничем
не может в офисах помочь и неизвестно почему оно не работает. По факту
только на Билайне у отца и заработало. Но я всё же всё равно склонялся
перейти на Tele2 ради "HD", 3G и везде максимального уровня сигнала.

Пока ехал домой назад, то решил проверить оставил ли я галочки "VoLTE"
после всех этих перетасовок между SIM-ками. И... у меня внезапно "VoLTE"
показалась для моего Билайна. Единственное объяснение что могу дать:
после вставки моей SIM-ки в отцовый смартфон, он дал какую-то нужную
команду, тыкнул что-то куда и как надо и VoLTE на ней "просрался". В
итоге теперь VoLTE у меня работает на Билайне. Больше её нигде не
видели.

Позвонил с ней и папе и маме. Тоже показывается "HD". Совершенно
иной по качеству звук! Появились высокие частоты и гораздо чище слышно
собеседника. Причём с обоих сторон. Прям как-будто нормальный микрофон и
вменяемые гарнитуры используются -- очень хорошо и чисто слышно. И,
действительно, ощутимо быстрее идёт соединение. Ну и исчезла моя главная
проблема домашняя: я могу из любого места спокойно разговаривать. А то в
одной комнате -- одна сота, а в другой -- другая. Между ними связь в 95%
случаях рвалась всегда. Надо было стоять у окон в идеале, никуда не
переходить. LTE же у меня ловит одинаково хорошо на всей площади.

11 months agoСменил сотовый телефон
Sergey Matveev [Sun, 26 May 2024 19:36:48 +0000 (22:36 +0300)]
Сменил сотовый телефон

Philips Xenium в принципе ещё работает, но корпус совершенно стал
расхлябаным из-за постоянного открывания чтобы зарядить аккумулятор
(зарядку делаю в старом Nokia, ибо аккумулятор родной не нашёл). На
кнопках наполовину уже стёрты надписи и уже стал замечать что он
пропускает нажатия. Смена мне не горела, но чего тянуть?

Взял Nokia 110 4G DS. Камера мне не нужна, но уж что было в магазине.
А вот именно 4G с VoLTE я хотел. Ибо это гораздо более эффективная
технология чем древний 2G мною используемый. Везде VoLTE включил, 4G
показывает, но при голосовой связи индикатор показывает 2G соединение.
Как-нибудь схожу в офис Билайна спрашивать в чём может быть дело. У них
на сайте находил список поддерживаемых VoLTE устройств и эта Nokia там
была.

В принципе придраться не к чему, после одного дня использования. Но он
больше Philips по размеру, хотя в карман для зажигалки в кожаной жилетке
всё ещё умещается.

11 months agoДень на даче у друга
Sergey Matveev [Sun, 26 May 2024 12:02:29 +0000 (15:02 +0300)]
День на даче у друга

Отличная погода на этих выходных, вчера без намёков на дождь. Баня,
бассейн после неё. В казане готовили плов. Такого вкусного я ещё не ел.
Такой рассыпчатый рис я только в Иране пробовал. Чуть-чуть некоторые
кусочки мяса были прожарены больше чем надо, чуть чуть некоторые даже
пригорели -- но лично мне оно ещё больше таким нравится. Здорово
отдохнул и под вечер меня так разморило, что я без задних ног уснул.

11 months agoc.root-servers.net несколько дней не был синхронизирован
Sergey Matveev [Sun, 26 May 2024 11:27:45 +0000 (14:27 +0300)]
c.root-servers.net несколько дней не был синхронизирован

https://www.opennet.ru/opennews/art.shtml?num=61249
https://lists.dns-oarc.net/mailman/listinfo/dns-operations
https://list.mailop.org/listinfo/mailop
Наблюдал за этим в dns-operations@ почтовой рассылке. Ради подобных штук
и стоит подписываться на подобные.

В mailop@ рассылке много рассказывают о фактах полностью хаотичного
забрасывания почты в Yahoogle (72d10bb8cca4ec33bc69b241e561855e10ba1e46)
сервисах в спам. Вот, в очередной раз, на днях, выяснилось, что моё
письмо попало ему в спам, хотя за ~20 лет ни разу подобного не
происходило во время переписок с ним, как и неделю назад. А у меня из
настроек ничего не менялось за это время. Вроде бы уже никого не
осталось из тех кто живёт на @gmail.com, с кем моя почта не попадала бы
в спам.

Но между тем, шатание Интернета (d6456a9b2f2f0c724a131b400b7b120bb8941f49)
прекратилось. Уже наверное неделю как мой мониторинг ни разу не показал,
что мои VPS становятся еле доступными.

11 months agoПосмотрел "Бананы"
Sergey Matveev [Fri, 24 May 2024 21:41:11 +0000 (00:41 +0300)]
Посмотрел "Бананы"

https://ru.wikipedia.org/wiki/Бананы_(фильм)
Забавная комедия Вуди Аллена. Нравится его юмор, но он точно не каждому
по душе будет. Местами напоминает Монти Пайтоновский, такие вот ассоциации.
Но его "Зелиг" (b58f41859fdc20966f96188ad0f384aa1dd12da3), "Энни Холл"
(13a1a27cde021cfb5c5c38ed0eba57e93e38e4b8,
6c315b88d94f9c3a91441a57a9d012893c3873d2,
f6bb2d17f6cb82baecfa904b3bd80c19e8c5b5fb) и "Манхэттен"
(c3c94aea577efd138f4aac1927b75549b784ff2c) вне конкуренции конечно же.

11 months agoОтзывчивость Vim с set cursorcolumn
Sergey Matveev [Fri, 24 May 2024 09:44:45 +0000 (12:44 +0300)]
Отзывчивость Vim с set cursorcolumn

https://stackoverflow.com/questions/19030290/syntax-highlighting-causes-terrible-lag-in-vim
При редактировании писем и Git log message, у меня Vim частенько
потребляет 100% CPU и невероятно тормозит. Иногда в письмах даже
приходилось делать set syntax=off делать. Грешил всё это время на
людей которые обновляют файлы синтаксической подсветки, где
появляется что-то очень дорогое для расчётов.

Как оказалось, в одном из комментариев на stackoverflow, еле заметном,
кто-то предложил отключить такие фишки как cursorcolumn и cursorline,
которые динамически меняют цвет фона. И, о чудо, отключение cursorcolumn,
действительно убирает полностью все тормоза. Полностью отключать я её не
собираюсь, ибо мне нравится эта фишка, но для редких случаях можно, всё
же не полностью выключая синтаксическую подсветку.

11 months agoКак в итоге то работается с HiDPI монитором?
Sergey Matveev [Thu, 23 May 2024 08:12:04 +0000 (11:12 +0300)]
Как в итоге то работается с HiDPI монитором?

Более двух недель вот работаю с сабжем дома. По сути, единственный
геморрой, который он продолжает создавать, так это то, что GTK2 не
поддерживает scaling. GTK3 это только Zathura (ну и Surf). Qt не
осталось (Mumble заменён на VoRS).

Единственное приложение на GTK2 у меня это FreeCiv. Поэтому, когда я
хочу в неё поиграть -- просто приходится руками xrandr-ом переключиться
на FullHD разрешение и "xset m"-ом уменьшить скорость указателя. Пока я
в неё играю: больше толком ничем и не занимаюсь, поэтому это мелочь.

В остальном, конечно, пришлось в разных скриптах учитывать какой у меня
сейчас выставлен DPI. X-ы я запускаю либо одной командой, либо другой,
выставляющей на ФС флаговый файл "HI", который проверяется в скриптах
запуска графических броузеров (Surf и Links), Tk, самих X-ов для
увеличения скорости указателя и его размера.

То ли железо такое, то ли драйвера, то ли ещё чего, то ли кабели не
очень какие-то, но отключение монитора через DPMS может приводить к
деградации его refresh rate-а после включения (вместо 60 FPS, будут 30,
который заметны даже просто двигая курсором мыши). Поэтому скрипт
блокировки экрана, тоже должен учитывать "HI" флаг и не выключать через
DPMS монитор.

Я не один месяц провёл за "UEFI" драйверами графики, просто проверяя
можно ли жить без проприетарных блобов загружаемых Intel-овым драйвером.
Можно. Хоть и без xrandr и ускорения. На 4K не пробовал всё это, нет
времени. Так что по сути у меня всё же одна проприетарная штука то на
компьютере имеется, но она мизерного размера и за многие годы не
обновляется, не трогается. Ещё без этого блоба не будет звука через
HDMI/DP. Но я и в прошлом то мониторе чисто случайно узнал о наличии в
нём аудиоколонок, только когда какую-то LiveCD GNU/Linux-а загрузил и
был шокирован тем, что откуда то у меня звук приветствия отыгрался. В
этом мониторе колонок нет, но есть 3.5мм разъём аудиовыхода.

Но текст выглядит на нём просто потрясающе! Очень доволен, ни на йоту не
жалею о HiDPI.

11 months agoSSH jump host
Sergey Matveev [Thu, 23 May 2024 07:34:01 +0000 (10:34 +0300)]
SSH jump host

К своему стыду, лишь только недавно начал использовать встроенный
функционал работы с SSH jump host-ами. Как я до этого куда-то заходил
(по SSH), если нет прямого доступа, но есть промежуточный SSH хост? ssh
jumphost ssh dst, грубо говоря. Как вызвать scp таким образом? Не
задумывался и делал: tar cf - ... | ssh jumphost ssh dst tar xf - ....

Потом обнаружилось, что если целевые копируемые файлы где-то имеют ещё и
hardlink, то после использования tar-а они "пропадают". Всё штатно,
ничего неожиданного, но поведение scp временами хочется, когда он
перезаписывает файл и не разрушает hardlink-и.

Увидел опцию -J, для указания jump host-а. А также ProxyJump опцию в
конфигурационном файле, которую можно для конкретного хоста прописывать.
Где всё это раньше было, где я раньше был? Насколько же теперь удобнее
стало напрямую указывать нужный мне хост, а использование jump-а самим
SSH-ем прозрачно происходить.

11 months agoПревысившая скорость утка -- сфера деятельности Федерального управления авиации
Sergey Matveev [Wed, 22 May 2024 08:41:32 +0000 (11:41 +0300)]
Превысившая скорость утка -- сфера деятельности Федерального управления авиации

https://lenta.ru/news/2018/04/24/duck/
автоматическая дорожная камера сфотографировала утку, летящую над
дорогой с превышением допустимой скорости.

Я часто тут гуляю по нашим паркам и на прошлой неделе видел как по
обочине пешеходной дороги утка и селезень идут друг за дружкой куда-то.
Видимо к пруду тамошнему.

11 months agoСтатья про VoRS
Sergey Matveev [Mon, 20 May 2024 11:34:08 +0000 (14:34 +0300)]
Статья про VoRS

https://habr.com/ru/articles/815635/
Наконец-то на выходных нашлось время для написания статьи про VoRS.

11 months agoGPS и сотовая связь
Sergey Matveev [Sat, 18 May 2024 15:42:23 +0000 (18:42 +0300)]
GPS и сотовая связь

Судя по новостям, недавно была какая-то überсильная магнитная буря. GPS
плохо работали слышал. Где-то видел новость о том, что у фермеров в США
из-за этого были большие проблемы: их техника настолько автономна, что
кучу работы на полях делает полностью без человека, но ориентируется
исключительно по GPS сигналу. И вот проблемы с GPS там приводили к
останову работы, ибо вручную уже нельзя было что-то скорректировать в
работе тех машин.

2G/3G сотовая связь требует относительно хорошей синхронизации времени
на сотах, так как это сплошной TDM. И, очевидно, для простоты они
используют GPS сигнал. А GPS, как известно, очень не сложно глушить.
Северная Корея глушит на границе с Южной, временами создавая проблемы
для самолётов Сеула, заставляя на второй круг из лететь, так как не
работает GPS. Во время военных учений РФ, тоже на границах с
Скандинавскими странами, возникают проблемы с GPS. Ну а во время СВО так
это и так штатная процедура уже во многих местах.

Видимо, всё что тут написано касается и любой другой навигационной
системы, включая ГЛОНАСС. Я стараюсь не использовать "GPS", если речь
реально не конкретно именно про эту систему. Стараюсь "GNSS" например.
Но вот сельскохозяйственная техника в США наверное только GPS имеет.
А соты мобильной сети -- чёрт их знает, лень искать. Поэтому оставляю
как есть.

В 4G (LTE) можно NTP использовать вместо GNSS.

11 months agoНейросетевые переводы
Sergey Matveev [Sat, 18 May 2024 15:36:06 +0000 (18:36 +0300)]
Нейросетевые переводы

Ещё много выпусков linkmeup я не прочитал. Это распознанное
(90e75bc9f0c7f625bad072fcc5e5fb1fa550487e) аудио. Уже привык к тому, что
"НАТО" это на самом деле речь про NAT. А ещё можно увидеть "нацистских
денег не было" -- очевидно, что речь про то, что на Cisco денег не было.
Много забавного может выходить такого рода.

11 months agoBBR vs Reno vs CUBIC на Starlink
Sergey Matveev [Sat, 18 May 2024 15:16:52 +0000 (18:16 +0300)]
BBR vs Reno vs CUBIC на Starlink

https://www.potaroo.net/ispcol/2024-05/starlink-tcp.html
Ещё одна статья (df6ba3e958cf56d72bb23869f22144c07521e4a7 прежде)
про существенную разницу при выборе алгоритма TCP, если канал связи
это низкоорбитальные спутники и относительно высокая скорость передачи.

11 months agoКонцерт Rammstein в Праге
Sergey Matveev [Fri, 17 May 2024 14:20:50 +0000 (17:20 +0300)]
Концерт Rammstein в Праге

https://www.youtube.com/watch?v=F7H2VOVlhDs
Крутейший концерты у них, конечно! Только за подобным шоу и стоит ходить
на большие стадионы. В противном случае, лучше конечно в небольшом клубе
быть.

11 months ago.ru/.рф через Госуслуги
Sergey Matveev [Tue, 14 May 2024 07:47:51 +0000 (10:47 +0300)]
.ru/.рф через Госуслуги

https://habr.com/ru/news/814123/
Похоже что они таки введут обязаловку через Госуслуги. Которые я через
один LiveCD всё же удалил в этом году. Видимо, придётся скоро забыть про
cypherpunks.ru домен, что печально. А ещё больше боюсь того, что, для
своего же удобства, наши регистраторы вообще всё сделают через эту ЕСИА.
Что тогда делать -- не знаю.

11 months agoКак выращивают картофель
Sergey Matveev [Mon, 13 May 2024 15:01:38 +0000 (18:01 +0300)]
Как выращивают картофель

https://habr.com/ru/articles/813955/
С фотографиями и стоимостью каждого шага. Интересно! Вот такие статьи на
Хабре мне нравятся. То там было про шаурму
(41c1911299a38bce85656a1a42cb79f070e38f3f). То про сеть музыкальных
клубов, что мне тоже же интересно, ибо во много десятков же был, тоже
любопытно насколько это всё геморройно и окупается ли насколько.

11 months agoПолярные сияния из-за магнитной бури в разных уголках Земли
Sergey Matveev [Mon, 13 May 2024 14:46:20 +0000 (17:46 +0300)]
Полярные сияния из-за магнитной бури в разных уголках Земли

https://naked-science.ru/community/956530
Никогда в живую не видел их. Но это наверное самые красивые фотографии
мне известные. Такие разноцветные!

11 months agoШадаев остаётся в Минцифре
Sergey Matveev [Mon, 13 May 2024 07:49:59 +0000 (10:49 +0300)]
Шадаев остаётся в Минцифре

https://habr.com/ru/news/813821/
https://linkmeup.ru/podcasts/2400/
В Linkmeup подкасте с Олегом Бартуновым, он рассказывал что на каком-то
из совещаний, где надо было Московскую область перевести с Oracle СУБД,
ему сказали что это невозможно, мол титаническая работа. Он пригрозил
каким-то чёрным списком. И через три месяца всё заработало на PostgreSQL.
Что здорово, конечно же. Лениться у нас все горазды.

Ещё из подкаста узнал о том, что на западе на PostgreSQL смотрят как на
MySQL какой-нибудь -- мол, поделие для web-сайтиков. Типа как это он
может быть вполне серьёзной СУБД, когда вот рядом у нас дорогущие Oracle
и IBM решения то?

11 months agoЗимняя погода
Sergey Matveev [Thu, 9 May 2024 19:21:11 +0000 (22:21 +0300)]
Зимняя погода

Уже третий день, как периодически идёт снег в Московской области. Вчера
вечером у меня под окнами абсолютно всё было заснежено -- крыши, трава,
дороги. А метель, что за 30м не видно ни черта. Только высота снежного
покрова намекает на то, что это всё же не зимой глубокой происходит. Но
мне прям нравится такая погода, зная что она не надолго пришла погостить.
Не люблю жару, а тут аж снова осеннюю куртку пришлось надеть, ибо ветер
сильный и ледяной.

11 months agoПразднование Дня Победы в Королёве
Sergey Matveev [Thu, 9 May 2024 19:17:52 +0000 (22:17 +0300)]
Празднование Дня Победы в Королёве

Очень много семей гуляло по городу. Во всех парках всякие концерты и всё
подготовлено для приёма большого количества людей. Погода, конечно, не
самая прогулочная, но к вечеру всё же теплее и теплее становилось. Очень
приятная и радостная атмосфера.

11 months agoПосмотрел "Сто лет тому вперёд"
Sergey Matveev [Thu, 9 May 2024 19:13:30 +0000 (22:13 +0300)]
Посмотрел "Сто лет тому вперёд"

https://ru.wikipedia.org/wiki/Сто_лет_тому_вперёд_(фильм)
За компанию с родителями в кинотеатр сходил. Ничего так, понравился.
Хотя я наверняка через несколько недель уже и забуду сюжет. Ну,
собственно, как и у многих других фильмов с action-ом и приключениями.

11 months agoDrum check
Sergey Matveev [Tue, 7 May 2024 15:47:40 +0000 (18:47 +0300)]
Drum check

https://www.youtube.com/watch?v=zbPSR7rAdxI
https://www.youtube.com/watch?v=iiWAS8cu2S0
https://www.last.fm/music/Ahumado+Granujo/_/Sandokal
У Morbid Angel на одном из альбомов есть забавный drum check.
А у Ahumado Granujo, с которыми я раньше познакомился, кавер
на него, на альбоме "Splatter Tekk" в трэке Sandokal.

11 months agoПро TunnelVision жгут
Sergey Matveev [Tue, 7 May 2024 12:13:22 +0000 (15:13 +0300)]
Про TunnelVision жгут

https://www.securitylab.ru/news/548033.php
https://www.opennet.ru/opennews/art.shtml?num=61130
https://dxdt.ru/2024/05/07/13000/
https://habr.com/ru/news/812867/
https://www.schneier.com/blog/archives/2024/05/new-attack-on-vpns.html
Полдня в ленте новостей попадаются заголовки об "атаке" TunnelVision.
И вот на одном ресурсе вообще написали "ни один VPN-сервис больше не
является безопасным". Обычно подобным коверканьем смысла занимаются
журналисты, но теперь, видимо, и писаки на сайтах.

Хорошо всё объяснено на dxdt.ru сайте.
* это и не атака, не уязвимость, а штатная функция DHCP
* к VPN, как таковым, оно вообще отношения не имеет
Но нет, напишут же что все "VPN-сервисы более не безопасны".

11 months agoHDR в X.org
Sergey Matveev [Tue, 7 May 2024 08:39:49 +0000 (11:39 +0300)]
HDR в X.org

https://wiki.archlinux.org/title/HDR_monitor_support
Мой новый монитор (447cdfbb145f6597c7df2be1bec8d15a5d36237c) умеет 10bpc
и HDR (+WCG?). HDR, правда, по сути то не настоящий, ибо яркость монитора
всё равно только 300nit. Как, собственно, и поддержка цветов тоже не
настоящие 10бит, а 8bit+FRC. Но это всё мне и не надо.

X.org достаточно запустить с startx -depth 30, чтобы он начал
использовать 10bpc (судя по /var/log/Xorg. mpv, терминал работают без
проблем. А вот Links в графическом режиме -- говорит что не нашёл
supported depths. Действительно, в исходном коде обрабатываются только
вплоть до 24-бит глубины. OpenArena в segfault падает.

А HDR в X.org вообще не планируется добавлять. Даже в Wayland это всё
ещё work-in-progress. А работает ли WCG (когда вне sRGB диапазона надо)
в нём в принципе -- не понял.

11 months agoСанта-Барбара в NixOS
Sergey Matveev [Sun, 5 May 2024 22:03:30 +0000 (01:03 +0300)]
Санта-Барбара в NixOS

https://www.opennet.ru/opennews/art.shtml?num=61122
https://save-nix-together.org/
Судя по тексту, всё началось с того, что спонсором на одной из
конференций была компания выполняющая военные заказы. И лидер проекта,
ничего плохого не увидел в этом. Как бы компьютеры, Интернет, да и чуть
ли не всё на свете -- всегда для военных целей рассматривалось. Но куча
не очень мне понятных людей из NixOS-а воспротивились этому и начали
бухтеть. Короче, судя по беглому чтению, нормальный был мужик, но
понабежали всякие @#$% и всё давай поганить. Не удивительно что среди
моих знакомых почти никого не осталось на Nix-е, ибо задрало его
постоянная эволюция ради эволюции, с поломкой обратной совместимости.
В одном комментарии увидел верное замечание: сначала в современных
программерских проектах пишут code of conduct, а уж только потом код.

11 months agoКоротко о разработке ПО сейчас
Sergey Matveev [Sun, 5 May 2024 17:28:05 +0000 (20:28 +0300)]
Коротко о разработке ПО сейчас

https://dc09.ru/posts/fff/
Как разрабатывается ПО, на примере создания полочки для специй?
Понравилась аналогия и статья. Было бы даже забавно, коли не было бы так
грустно от правды. Недавно знакомый проходил курс по Go и их там, в
простой задаче, очень и очень натаскивали и хотели чтобы всё было
обмазано ООП вот прям по сути как в этой статье. На Go. ООП. На пустом
месте, чтобы было. Прям вот учат насильно этому. Ну это, фабрики строить.

11 months agoПрекращаю использовать DuckDuckGo
Sergey Matveev [Sun, 5 May 2024 07:16:42 +0000 (10:16 +0300)]
Прекращаю использовать DuckDuckGo

С поисковиками огромная беда и проблема: их считанные единицы. А то что
есть: зачастую не работает без загрузки проприетарного ПО. Яндекс давно
не работает без JS и cookie. Google когда как, но на него я уже годами
не захожу, ибо почти всегда он хочет CAPTCHA. Rambler.ru -- не ищет даже
банальные запросы (то бишь, не выдаёт никаких результатов), связанные с
моими сайтами. Как и Bing. Когда-то работал StartPage.com -- теперь
говорит, что я робот и иду нафиг. Yahoo просто ничего не отдаёт: HTTP
запрос при отправке формы поиска умирает по timeout.

Поэтому использовал DuckDuckGo. Оно хотя бы просто работало. Но за
последние годы, как они решили поддерживать террористические организации
(демократические страны, как они себя называют), мягко говоря, задолбали
политизированной выдачей. Ищешь что-то чисто по технике, а тебе, как
визуально кажется, чуть ли не половина выдачи это сплошные "новости"
связанные с политикой и военными действиями. На нашем СМИ любят говорить
о "фейках" (ненавижу это нерусское слово, своего что ли нет?), что их
много от западных людей. И действительно, неприкрытой лжи я там встречал
уйму. Когда происходили очередные террористические события недалеко от
мест где я был или слышал от близких людей, то даже я понимал что или
фотографии или текст настолько не соответствуют действительности
(например они из другого конца мира сделаны и в совершенно другое
время), что офигеваешь от бессовестности. По сути ложь, ложь и ничего
кроме лжи, даже на пустом месте сделанной. Зато какой-нибудь факт водной
блокады Крыма, но чтобы не из русских источников -- не найдёшь, не смог.
Так что это не шутки про безумную цензуру и сплошную ложь СМИ
демократических стран.

YaCy на практике (5557435836a7e048e91493f44b00dcad7f748583) никогда не
работали у меня. Возможно из-за свободной реализации JVM или сочетания с
ОС, но годами я время от времени, с разными версиями софта, пытался их
использовать (безусловно понимая, что это не может быть полноценной
заменой централизованных поисковиков гигантов), но через несколько дней,
после забивания определённого места на диске, оно так тормозит, что
просто не юзабельно. Слышал и видел Searx проект. Опять же, локально,
уже не помню почему, но не выходило запустить подобное.

Но тут увидел поиск от Brave. Могу только с DDG сравнить: есть IPv6
адреса, несколько серверов, никакой политики в выдаче. Всё, само собой,
работает под Lynx без проблем. Так что пока на нём. К сожалению, службы
типа каталогов в мире не прижились.

11 months agoTk и HiDPI
Sergey Matveev [Sat, 4 May 2024 16:41:08 +0000 (19:41 +0300)]
Tk и HiDPI

Современный Tk из коробки так себе выглядит на HiDPI -- всё маленькое.
Есть команда "tk scaling", но она не применяется к шрифтам. Не шибко
разбирался как всё лучше организовать, но пока добавил такое в ~/.wishrc:

    font create myDefaultFont -family Go -size 14
    option add *font myDefaultFont
    tk scaling [expr {163 / 72.0}]
    tk_setPalette grey

и использую тот факт, что wish интерпретатор его считывает, если
исходный код подаётся через stdin. У меня Tk приложение по сути то
только одно: tofuproxy, который как-раз вызывает wish с передачей кода
через stdin.

11 months agoОбновил монитор. Теперь HiDPI
Sergey Matveev [Sat, 4 May 2024 14:24:18 +0000 (17:24 +0300)]
Обновил монитор. Теперь HiDPI

https://wiki.archlinux.org/title/HiDPI
На моём прошлом мониторе, дешёвом AOC 27" FullHD, по середине уже стала
появляться полоска выцветшая. Прямо в том месте, где разделительная
яркая белая линия в Vim между окнами проходит. Прям выгорело и намекает
на то, как много я нахожусь в Vim.

Я уже прежде пробовал на работе 4K (d154bb0f1f7d36997a293728311427d549ed7e66)
мониторы. Точнее тут важна речь не про разрешение, а про DPI, точнее HiDPI.
И, действительно, текст реально лучше и приятнее выглядит. Да, во всех этих
наших "линуксах" куча геморроя с DPI≠96 и, судя по Arch Wiki, чуть ли не
для каждого GUI toolkit/framework/DE нужно собственные настройки для
всего этого дела задавать. И там например нет ни слова про Links2, в котором
свой движок рендеринга.

Но так как я всё же почти все время провожу в консоли, то о HiDPI я
подумывал. Ну и взял Samsung S27A800NMI монитор. Хотел бы я 24", но
вообще нигде нет, и толком не выпускают. Этот же 26.9", почти 27".

11 months agoЖизнь BBS сисопа
Sergey Matveev [Sat, 4 May 2024 08:04:47 +0000 (11:04 +0300)]
Жизнь BBS сисопа

https://arstechnica.com/information-technology/2022/12/my-secret-life-as-an-11-year-old-bbs-sysop/
Немножко снимков экрана есть обо всей этой теме, и рассказ какого это
всё было. У меня тоже был распечатанный в ASCII табличке листочек со
списком московских BBS-ок, где я делал пометки об особенностях работы
и всяком подобном. Но с появлением FidoNet-а, на BBS-ки перестал ходить.

11 months agoGoVPN.info домен скоро протухнет
Sergey Matveev [Fri, 3 May 2024 08:49:31 +0000 (11:49 +0300)]
GoVPN.info домен скоро протухнет

Я давно официально забросил GoVPN проект, но домен всё продолжал
оплачивать. Через пару недель он протухнет. Копия сайта есть на
http://www.govpn.cypherpunks.ru/ теперь. Не вижу смысла платить
за него, ибо нет планов возрождать.

11 months agoОбновил уличные наушники
Sergey Matveev [Thu, 2 May 2024 14:06:21 +0000 (17:06 +0300)]
Обновил уличные наушники

Уже говорил (c2f2a088cd088b7d290de4fb40921897c74e8d7e), что я не хочу в
ухо вставлять что-то глубоко -- я хочу вкладыш! А их ничерта нету. Ну
точнее надо поискать. Вот уже вторые за 100₽ износились -- прям провод
ломается, одно ухо перед этим тоже перестаёт почти что-либо воспроизводить.
И сломались они как-раз, когда я ехал в Глобус, слушал аудиокнигу. Нашёл
в нём не вкладыши, но и без резиновых уплотнителей. Выглядят почти как и
все остальные внутриканальные, но всё же просто пластик такой формы и
глубоко не вставляются. Рискнул и взял.

Почти две недели я каждый день выхожу гулять по городу и почти две
недели в этих наушниках. Нареканий нет. Внешний мир слышу отлично,
держатся хорошо, громкость самая огромная среди всех маленьких наушниках
что была (а то некоторые затычки даже на максимальной громкости не
перекричат автомобильную дорогу рядом).

11 months agoОбновил аккумулятор во втором ИБП
Sergey Matveev [Thu, 2 May 2024 14:04:40 +0000 (17:04 +0300)]
Обновил аккумулятор во втором ИБП

2+ месяца назад менял уже (26ce9b18e282ced0e15a4eb02348b99ffd659828),
а теперь руки дошли до второго ИБП.

11 months agoПользователей Tor из РФ вдвое меньше
Sergey Matveev [Thu, 2 May 2024 08:24:43 +0000 (11:24 +0300)]
Пользователей Tor из РФ вдвое меньше

https://habr.com/ru/news/811687/
Пишут что "активная аудитория" понауехала и много кто переместился в
Telegram. Первое -- ну понятно, ибо всякие сепаратисты и враги страны.
Второе -- да потому что на всю эту анонимность плевать там многие хотели,
и вся риторика всего проекта о свободе слова, безопасности журналистов и
всему подобному, чушь собачья, используемая для прикрытия.

12 months agoНастройка маршрутизатора требует Интернет
Sergey Matveev [Tue, 30 Apr 2024 19:01:54 +0000 (22:01 +0300)]
Настройка маршрутизатора требует Интернет

https://brainbaking.com/post/2024/04/isp-router-design-mistakes/
В Бельгии провайдеры настолько суровы, что в их маршрутизаторах для
дома, нет возможности локальной настройки. Надо через Интернет зайти на
какой-то их сайт, чтобы через него отослать настройки маршрутизатору. Я
конечно слышал о лютом маразме, но компании не перестают удивлять.

12 months agoГде здесь кнопки?
Sergey Matveev [Sun, 28 Apr 2024 18:19:20 +0000 (21:19 +0300)]
Где здесь кнопки?

https://grumpy.website/media/2024/1522.jpeg
Со стороны вижу как современные web/mobile приложения выглядят и поэтому
я отвратительно отношусь ко всему что касается современных UI. Я не
встречал хороших примеров. Если кто-то считает что оно просто стало
другим: нет, не соглашусь, оно стало неюзабельным дерьмом. Просто
неуважение к самому себе подобное пытаться использовать.

12 months agoМоя должность на работе
Sergey Matveev [Sun, 28 Apr 2024 09:47:36 +0000 (12:47 +0300)]
Моя должность на работе

У нас решили поменять штатное расписание и понаписать должности по
современными тенденциям и реалиям ИТ-компаний. А то у кучи людей,
включая меня, просто например прописано "главный специалист". На допросе
в милиции когда был, то после этого ждут продолжения фразы, ибо... спец
по чему? Просто спец? Действительно, ведь фигня какая-то непонятная и ни
о чём не говорящая.

Нас заранее предупреждали о том, что расписание будет изменено. Я
смотрел (просто по случайным ссылкам в поисковике) а какие вообще
бывают должности, чем отличается senior/middle/junior программист
(ибо уж частенько употребляют эти термины) и что ещё вообще бывает.
И это какая-то жесть: везде чуть ли не противоречащая информация
попадается. Или отсутствие деталей. Или... или я вообще толком не
понимаю кем я являюсь.

На днях меня и спросили как я бы хотел чтобы меня обзывали в "штатке". Я
честно ответил что не знаю. "Разнорабочий" -- самое точное слово :-).

Меня смущает то, что я встречал не раз людей которые обзывают себя
громкими словами и в резюме пишут "и senior, и team lead и architect
могу быть", но зная этих людей я понимаю что они на задачи junior-а то
еле годятся, слабо представляя как происходит разработка ПО в целом.

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

Я видел über-программистов, но которые не могут спланировать задачи,
разбить "бизнес"-задачу на части, спроектировать архитектуру, вести
кроме кода и документацию, и тесты, и CI, и отчёты и всё подобное что
сопутствует разработке. Но программировать они умеют здорово. Я же
считаю, что я не только программить умею. И вот если в должностях моя
будет одинакова с ихними -- ну как-то обидно типа что ли.

Или подразумевается что все эти умения должны применяться только если ты
руководитель? А вот этого, общения с людьми, за их задачами, пинание --
этого я, действительно, не хотел бы. А судя по статьям так и выходит:
или ты программист, где тебя ставят чёткую задачу чисто по написанию
кода и ты её выполняешь, или же ты сразу же руководителем будешь
являться, который понимает зачем эта задача, откуда у неё растут ноги и
вообще что надо сделать для выполнения поставленной цели.

Блин, да куча людей, как оказалось, даже не представляют как вообще
вести командную разработку надо. Куча людей даже не задумывается о том,
чтобы использовать issue tracker. Их коммиты максимально не атомарны и
хаотичны -- делая их просто некими ZFS snapshot-ами рабочей директории.
Хотя код они могут написать, спору нет. Коллега заметил что многие эти
умения или хотя бы понимания зачем это всё нужно -- даются если бы
человек занимался также и участием в разработке свободного ПО. Сильно
согласен с этим, чем дальше, тем больше убеждаюсь.

Мне с ходу предложили например прописать "ведущий системный программист".
Я пошёл искать что же означает "системный программист", ибо мне казалось
это всё же сильнее упор на ОС, на связь с железом. Где-то (случайные
статьи из поисковика) я встречал определения где даже ОС не упоминается,
а просто типа детальные знания каких-нибудь ФС, как устроено то или сё.
Где-то только про ОС. Что считать общесистемным ПО? Компилятор, отладчик?
Похоже что да. Они не для конкретной прикладной задачи, но без них
прикладные не выполнишь. Но почему я не могу придумать чёткого ответа
чем же тут текстовый редактор не будет является общесистемным ПО? Типа
выхлоп редактора уже может быть законченной задачей, а выхлоп
компилятора или возможность запуска программы под ОС -- сами по себе не
несут конечной прикладной пользы? BASS package manager может ли
называться общесистемным ПО? По сути, насколько понимаю -- да. Ведь сам
по себе он только помогает прикладное собрать/установить. Или redo? Если
так, то системные вещи я типа пишу. В сетях как-то разбираюсь, про ФС
детали глубже многих тоже. Но например на ассемблере никогда не писал
ничего. Приходилось читать ассемблерный выхлоп, но не более.

Но ведь на работе я уйму времени трачу и на "консультации". Когда просто
надо рассказать или понять что-то о конкретных технологиях. И
разработкой протоколов занимался -- а это ведь, грубо говоря, просто в
результате HTML/PDF файлик самодостаточный уже.

Эх, сложно что-то со всем этим. И я не вижу чёткого flat списка
возможных "choice"-ов из чего выбирать. С одной стороны упоминаются
"junior" и "senior", с другой стороны слова типа "ведущий" -- я даже не
понимаю можно ли map-ить друг на друга или это два разных мира точек
зрения? Понапридумывают... попробуй разберись что вообще бывает. Ещё же
есть "архитектор", "эксперт", какие-то там аналитики...

12 months agoШатание Интернета по вечерам
Sergey Matveev [Sun, 28 Apr 2024 09:40:30 +0000 (12:40 +0300)]
Шатание Интернета по вечерам

Последние недели, прям как по расписанию, Интернет начинает работать
существенно хуже. Ну то есть потери пакетов, большие задержки, и т.д..
В c1e4bf6cc029ad338577718afcc9cd671ab70258 я упоминал про такое
"шатание", но тут как по расписанию. Со времён ivi я знаю что люди
приходят с работы и начинают смотреть всякое -- нагрузка на каналы круто
возрастает. Собственно, все графики трафика это и показывают всегда. И
вот любопытно: это из-за перебитых кабелей хуситами куча трафика начала
идти через нас (где-то читал об этом факте и о том, что РФ это как бы на
руку даже оказалось) и запаса прочности для вечеров уже не хватает. Или
это ТСПУ какие понаставили и они являются бутылочным горлышком.
Ухудшение связи не только у меня, но и у коллег наблюдается.

12 months agoМиллионы пакетов через VoRS
Sergey Matveev [Sun, 28 Apr 2024 08:33:58 +0000 (11:33 +0300)]
Миллионы пакетов через VoRS

Мой VoIP клиент/сервер (4a521b9d638a8d23487ff6c36ac3be97c8c464b3,
48584050c661df42c76a1026b3aebe16da078b52,
2cccf7ddd72756431263b6c3e96dfd710f2931ee) уже десятки часов успешно
проработал. С момента его создания чуть ли не каждый день проводили
сессии парного программирования/администрирования, и это чуть ли не на
целый день. У меня FreeBSD клиент, сервер VoRS на FreeBSD VPS-ке поднят,
у коллег Ubuntu. Всё работало замечательно. И за одну сессию по
полмиллиона пакетов от меня проходило.

Я беспокоился за то, что Opus же ведь stateful кодек, а у нас бывали
большие потери пакетов. Вот недавно аж по несколько сотен за минуту --
кто-то сильно Интернет шатал. И я думал что мало ли, может там какие
ошибки будут накапливаться или ещё чего подобное или там отсутствие echo
cancellation или вообще хоть какой-либо обработки аудио будет мешать. Но
нет, всё без нареканий с нашей стороны.

В его v2 версии я заменил Poly1305, который и так уже был урезан до
64-бит, на SipHash24. Последний всё же является криптографически сильным
MAC-ом, поэтому на безопасность это не должно негативно влиять. SipHash
заточен под аутентификацию коротких сообщений, которыми 20мс Opus кадры
и являются. И SipHash24 быстрее более чем на порядок, ведь ключ для
Poly1305 генерируется из 512-бит (размер блока ChaCha20, где 256-бит
к тому же отбрасываются за ненадобностью) выхлопа ChaCha20, чтобы после
этого ещё один 512-бит блок сгенерировать уже для шифрования. Дороговато
выглядит.

12 months agoBASS будет свободным
Sergey Matveev [Sun, 28 Apr 2024 08:21:17 +0000 (11:21 +0300)]
BASS будет свободным

В 7e1dbd0539c7ea5c6bd5e8831abeea4796da693e,
3a1f5e5f8e1280737b635fd50e3a30e501963a7f,
d0d24e9b8d061de7f630ef5bf0de3a6bec29fb2b,
89b5da9451fd2295ad59b2d5a75061c11ad2583a я упоминал что написал систему
сборки пакетов и пакетный менеджер. Изначально вообще-то делался CI, но
для него вот проще было написать и свои пакеты. Так вот начальство
одобрило его публикацию как свободное ПО, чему я очень рад, ибо были
сомнения.

Боюсь что до этого руки дойдут только через пару месяцев наверное. Ибо
надо восстановить работоспособность его CI части, которая поломана после
кучи рефакторинга. Нужно поднять эти самые CI сервера хотя бы для пары
проектов. Надо выпилить кучу пакетов относящихся к внутренним проектам.
Надо добавить кучу мультимедиа пакетов -- самому то бишь переехать на
сборку мультимедиа софта через BASS, ибо это основная головная боль у
меня была (много зависимостей, всего хочется поновее, пока это сплошная
ручная работа).

Но BASS уже вовсю начал использоваться как пакетный менеджер (десятки
пакетов с зависимостями), через который разворачивается одна система.
Для поднятия десятков демонов используются отдельные XXX-service пакеты,
в которых подготовленные daemontools'es supervise run-файлы. То есть
сама программа и её запускался -- независимы, что очень удобно и гибко.

Когда я всё это только начинал писать -- не было не только уверенности
что оно напишется (возможно проблемы и подводные камни похоронят по мере
написания), но и что оно будет вполне себе удобно и реально помогать. На
мой взгляд всё вышло более чем круто и результат мне самому очень
нравится чисто эстетически, не только тем что оно выполняет задачу.
Хотя сама CI его часть ещё не то чтобы уж очень хожена.

Изначально почти всё на Z shell было, а дальше то тут, то там чуть его
повыпиливал и от него ничего и не осталось.

12 months agoGroup в slog
Sergey Matveev [Sun, 28 Apr 2024 08:13:36 +0000 (11:13 +0300)]
Group в slog

Недавно начал активно использовать log/slog.Group в программах. Очень
клёво с ним выходит создавать иерархичные логи. Например есть какой-то
handshake, внутри которого нужно бы и ключи с сертификатами распечатать,
и показать каждый шаг каждого шифрования (входные данные, результат) и
всяких там HKDF и прочего. Нижестоящие функи могут возвращать или список
slog.Attr или slog.Attr созданный через Group, а дальше эти кусочки
логов можно подставлять в другие Attr. Если для простоты по умолчанию
использовать родной JSON handler, то выплёвывается очень детальная и
машиночитаемая JSON-ина. Минимум телодвижений, зато какой
детализированный и удобный результат.

12 months agoДЦ Яндекса к Мянтсяля
Sergey Matveev [Sun, 28 Apr 2024 08:06:10 +0000 (11:06 +0300)]
ДЦ Яндекса к Мянтсяля

https://www.dp.ru/a/2024/02/05/data-centr-jandeksa-v-finljandii
https://www.youtube.com/watch?v=-hE8jkyfqMw
После поддержки нациков всякими западными странами, видел новость о том,
что ДЦ отключили от электричества. А дальше в новостях не встречал что с
ним после то происходило. Так как он отапливал на 70% близлежащий город,
то подключили снова, насколько вижу.

В видео от Яндекса очень хвалятся эффективностью его охлаждения, которое
сложно делать и только Amazon, Facebook и Microsoft в мире подобным ещё
занимаются. Именно вентиляцию/охлаждение мой отец разрабатывал для них,
как и для нескольких других их ДЦ.

12 months agoПро Гагарина из энциклопедии в США
Sergey Matveev [Tue, 23 Apr 2024 20:02:23 +0000 (23:02 +0300)]
Про Гагарина из энциклопедии в США

Советский тоталитарный режим запустил в 1961 году в космос смертника,
которому однако, удалось вернуться назад живым. Ракета была сделана на
основе немецких разработок Вернера фон Брауна, отца американской лунной
программы.

12 months agoEd25519 сертификаты и macOS
Sergey Matveev [Mon, 22 Apr 2024 07:04:49 +0000 (10:04 +0300)]
Ed25519 сертификаты и macOS

https://stackoverflow.com/questions/77717713/how-to-import-ed25519-root-ca-into-keychain-access-macos
Снова из-за VoRS (2cccf7ddd72756431263b6c3e96dfd710f2931ee) мне написали
что мои ed25519 X.509 сертификаты не добавляются в macOS хранилище. Типа
не поддерживаемый формат. Ну так а что они хотели то, ведь проприетарная
ОС, разработчик которой уже как-то засветился на применении Dual_EC_DRBG.
ed25519 алгоритм не требует наличия хорошего PRNG, в отличии от ECDSA.
Если PRNG будет поломан, с backdoor-ом, то ECDSA ключ можно будет "слить".
А с ed25519 такого не выйдет. Поэтому и не включают его поддержку.

12 months agoОтносительный URL в Gemini
Sergey Matveev [Sun, 21 Apr 2024 13:13:59 +0000 (16:13 +0300)]
Относительный URL в Gemini

Спецификация Gemini говорит:

    URL may be absolute or relative. If relative, it should be resolved
    against the URL used in the original request.

вроде бы это интерпретируется однозначно как "берёшь текущий URL,
добавляешь к нему (относительную) ссылку".

Я в Gemini редко бываю, но бывает посещаю время от времени их ресурсы.
Заметил, что у некоторых относительные ссылки не работают. Текущий URL
"host.name/foo", относительная ссылка "bar/baz", и они ожидают
"host.name/bar/baz", а не "host.name/foo/bar/baz".

Решил выяснить кто же всё таки прав, хоть спецификация и не читается
двояко. Так вот первый (reference) клиент для Gemini был написан на
Python. И в нём используется urljoin (dcd9193595c262f96f29e4984ca0304106634fbc),
который вот так вот коряво объединяет ссылки. То есть, некоторые
gem-сайты ожидают bug-compatible поведения как у дурацкого Python
клиента, хоть это и не по спецификации, которую сам же автор клиента и
написал.

12 months agoVoRS под macOS
Sergey Matveev [Fri, 19 Apr 2024 18:04:52 +0000 (21:04 +0300)]
VoRS под macOS

https://news.ycombinator.com/item?id=40083641
https://forum.crystal-lang.org/t/cannot-compile-statically-ld-library-not-found-for-lcrt0-o/4070
https://developer.apple.com/library/archive/qa/qa1118/_index.html
Опубликовал новость о VoRS на Hacker News. Многие пишут что с
совместимостью между разными броузерами у WebRTC нету сейчас проблем.
Ну... может быть, но пару лет назад сам воочию видел. Да и это не
отменяет что современный броузер для задачи VoIP это безумием всё равно
остаётся.

Даже если забыть про броузеры и поглядеть в сторону Pion, где на чистом
Go реализован весь его стэк -- это не отменяет колоссальную монструозность
всей этой экосистемы, заточенной под пробивание и работы за NAT-ом.

Некоторые хотят клиента вообще без TUI. Ну да, надо бы сделать подобный
режим. Оказывается, есть какой-то не-QT Murmur сервер для Mumble.
Здорово. Не знал о нём прежде. А то тащить Qt ради GUI-less сервера...
так себе охота.

Кто-то мне написал что под macOS оно не собирается. В целом -- и
плевать. Но, как оказалось, под ней вообще нельзя собрать статически
слинкованные бинари. Apple как всегда, в своём духе, а я в очередной раз
удивлюсь "как это кто-то ещё использует?". Но выложил на сайт VoRS-а
патч для отключения статической линковки, хотя и не знаю поможет ли на
macOS.

12 months agoOpenBSD по-умолчанию начинает использовать pax формат
Sergey Matveev [Wed, 17 Apr 2024 08:57:09 +0000 (11:57 +0300)]
OpenBSD по-умолчанию начинает использовать pax формат

https://www.opennet.ru/opennews/art.shtml?num=61011
Давно пора! Впрочем мне то нравится поведение libarchive по-умолчанию:
если можно обойтись ustar-ом, то используется он, в противном случае pax.
d5670fc7a83b5161ebbb4f7b9cdaf34f3edf3a94
a3f2621a4986184923161e2e1c65778f61a98086
3292f9367343832b03ecc52e17437333d136cab6
b4b36a45ec721be274a4b6c0f9f243d5672f3a48
c13068dff5ce5219180a26327a0e0a8bafa20f6f
63d54cebf28a23d793e211edd65aed6a1eded1cb

12 months agoСходил на оперу "Риголетто"
Sergey Matveev [Mon, 15 Apr 2024 08:04:00 +0000 (11:04 +0300)]
Сходил на оперу "Риголетто"

https://ru.wikipedia.org/wiki/%D0%A0%D0%B8%D0%B3%D0%BE%D0%BB%D0%B5%D1%82%D1%82%D0%BE
Вместе с мамой, которая на нём уже была. Ей было интересно насколько мне
зайдёт не Вагнеровская опера. Очень понравилось! Точно уяснил что мне не
только из-за немецкого Вагнеровские нравились. На "Аиде"
(411cc4cd20be6c375c0cbb101330d1aa2fd7fae8) я вообще не разбирал границы
слов: речь просто лилась и лилась, где толком даже не понимал на каком
языке пелось. Тут же: каждое слово я чётко слышу. Итальянский я хоть и
не знаю, но чётко слышу что это именно на нём поётся, со всеми границами
между слов. Так что это именно в Геликон-опере, даже на отличных, почти
самых дорогих местах, это было всё так себе (по сравнению с тем, что мы
слышим в Новой Опере).

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

В общем, здоровская опера! И без немецкого языка тоже крута.

12 months agoНа чём играет современная молодёжь?
Sergey Matveev [Sun, 14 Apr 2024 20:55:43 +0000 (23:55 +0300)]
На чём играет современная молодёжь?

https://www.youtube.com/watch?v=6CV0D9OO4EE
Бачило говорит, что современные старшеклассники поголовно не играли
никогда в игровые консоли (приставки). Я про себя думаю: да ладно,
неужто на ПК реально все переезжают с них? Оказалось поспешил, ибо,
как он говорит, у них только смартфоны для игр, больше ничего. О
дивный новый мир.

12 months agoЗа что мы любим Python? urljoin!
Sergey Matveev [Sat, 13 Apr 2024 14:45:32 +0000 (17:45 +0300)]
За что мы любим Python? urljoin!

Python 3.10:
    >>> from urllib.parse import urljoin
    >>> urljoin('http://1.2.3.4:9010', '1.2.3.4:9010')
    '1.2.3.4:9010'

Python 3.7:
    >>> from urllib.parse import urljoin
    >>> urljoin('http://1.2.3.4:9010', '1.2.3.4:9010')
    'http://1.2.3.4:9010/1.2.3.4:9010'

И в документации к 3.10 нет никаких пометок об особенностях или
изменении поведения. По моему это лютая недопустимая дичь что творится.

12 months agoОтпраздновал день космонавтики Грай-ем
Sergey Matveev [Fri, 12 Apr 2024 22:15:12 +0000 (01:15 +0300)]
Отпраздновал день космонавтики Грай-ем

Более трёх месяцев не посещал метал-концерты. Всё работа, работа.
А сегодня сходил на Грай (262934d9e7bbabd2aca4ffb0958a615308797580).
Жара, духота, потные люди в округ беснуются, сам в поту, в грудине
отдают бас-бочки, плотный сочный звук электрогитар -- короче эталонный
метал-концерт. Сплошные мощные боевики и хиты. Пару их песен не слышал
прежде. Куча кача и бошкотряса. Зыбина отлично общается с толпой. Плюс
у неё вполне выходит гроулить, чего на альбомах нет вообще. 3-ей уже
понёсся "Пир Мертвецов" (3c041cdba9698d43330552d88a0688abd223edc3),
с настоящей волынкой. Отличная отдача от пришедшего народа, активно
подпевали в том числе. И мне кажется что громче толпы я ещё не слышал
прежде -- очень уж всем нравится Грай.

На разогреве были Nimea из Санкт-Петербурга. По сути, впервые слышу
музыку восточную (с восточным уклоном, ну там Персия, всё такое) с
тяжёлыми гитарами и убойными барабанами. Интересная группа оказалась.
Вот только в самом начале и микрофон и половину других инструментов не
включили, и только на половине их выступления как-будто кто-то догадался
повернуть ручку громкости из колонок на 45° и сразу стало достаточно
громко, ударно, сочно. Звукачи, короче, смазали первое впечатление о них.

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

12 months agoДоработки VoRS
Sergey Matveev [Thu, 11 Apr 2024 19:17:05 +0000 (22:17 +0300)]
Доработки VoRS

В прошлой записи упоминал об относительно простом VoIP клиент/сервере.
До четырёх утра не спал, но решил ещё красивее сделать: заменить TLS на
Noise. Кода конечно потребовало больше, ведь не готовый же протокол
используется, но зато в целом куда более простая система.

Выбрал Noise-NK шаблон, где всего ровно за один round-trip производится
рукопожатие. При этом, уже в первое сообщение от клиента и сервера можно
вложить полезную нагрузку (которая тоже будет зашифрована). В итоге, уже
с первым сообщением от клиента он предоставляет свой username. А сервер
в своём сообщении может сразу объяснить причину отказа например.

Кроме того, вместо того, чтобы заставлять клиента использовать такой же
номер UDP порта с которого он пришёл на TCP сервера (что не всегда может
быть доступно), клиент отправляет пакеты с произвольного порта. Во время
рукопожатия, сервер выдаёт ему 128-бит cookie, которую клиент должен в
UDP пакете послать ему. Ведь проходя через NAT-ы, он в общем случае
может и не знать какой порт увидит сервер. Только приняв cookie, сервер
выдаёт клиенту SID и оповещает остальных о его подключении. И проверка
связи по UDP, и дружелюбность к NAT-ам и stateful firewall-ам.

От пароля избавился. Так как публичный ключ сервера во время рукопожатия
не передаётся, то его нужно знать клиенту заранее. А чем заранее выданный
публичный ключ не идентичен паролю? Shared секрет для аутентификации.

Включил в Opus-е DTX (discontinuous transmission), где кодек может
вообще не отправлять пакеты если в них тишина. Действительно, при
ней ничего не отправляет. А также всё же снизил bitrate до 24Kbps, ибо
это вполне себе потолок достаточности для VoIP.

Урезал Poly1305 до 64-бит. Overhead от VoRS выходит 12-байтным (и это с
шифрованием и аутентификацией). Ну и сервер начали проверять Poly1305,
ибо это штука очень быстрая.

Плюс попробовал использовать ML/нейросети из Opus 1.5
(78018e649ab66c7a1f45b793ba7c3c8c7f0a24e4). Для этого нужно повысить
настройку сложности декодера. Go обёртка не позволяет это сделать, ибо
раньше в декодере этого просто нельзя было указывать. Сделал fork в
git://git.stargrave.org/go-opus.git, где оно появилось. Действительно,
особенно при потерях пакетов, разница на слух есть заметная, если
libopus собран с --enable-deep-plc --enable-osce и complexity=10. Но это
всё опционально.

12 months agoМоё новое поделие: VoRS
Sergey Matveev [Tue, 9 Apr 2024 21:47:05 +0000 (00:47 +0300)]
Моё новое поделие: VoRS

http://www.vors.stargrave.org/
Как-то я бросался словами что надо написать свой собственный VoIP клиент
(+сервер). А то из всего VoIP есть только Mumble, который хоть как-то
ещё можно собрать и который хоть как-то но работает. Хоть как-то -- это
значит что всё равно со сторонними реализациями всё плохо (Mumble на Go):
7dac01b0761a750312eef3765d3131e36fac95aa
6bf8ec6fda4ba9a2ee54819e4a6613ff33d8effe
ecf0bbd8f4f25d6039438e1c6756c518e6979cfb
Отдельная боль в Mumble -- его Murmur сервер, который хоть и не GUI, но
требует Qt.

За три последних дня, не забывая про работу, я осилил написать своё
решение. Когда-то я думал что это вообще на Си стоило бы, но увидел, что
Go-шная wrapper библиотека для libopus существует, в ней почти нет кода
(буквально просто обёртки), замечательно работает. В итоге Си как то сам
собою отпал.

Около экрана кода достаточно чтобы P2P Opus закодированный трафик по UDP
передавать. Я было обрадовался как оказалось всё просто. Но вот если
захочется больше чем два человека, то тогда что делать? Всем
перезапускаться и указывать ещё один дополнительный IP адрес? Геморрой.
Да и я не планировал и яростно против любых NAT-traversal технологий, но
отдельный сервер всё же вполне себе был бы и решением до сих пор
остающихся неподключёнными к Интернету людей (которые за NAT).

И с его появлением всё сразу как-то сразу усложнилось. Но я постарался
сделать так, чтобы всё же проще было некуда. VoRS: Vo(IP) Really Simple.

* каждый клиент подключается по TCP к серверу
* на нём заранее генерируется X.509 сертификат самоподписанный, ed25519
  алгоритм, хэш от SPKI выдаётся клиентам
* инициируется TLS 1.3 с curve25519 DH. Проверяется SPKI хэш сервера
* далее внутри TLS следует текстовый построчный протокол: сервер
  отсылает 128-бит challenge; мы отвечаем BLAKE2s(пароль, challenge) и
  username-ом. Серверу и клиентам заранее указываются пароли подключения.
  Факт успешного расчёта MAC-а над challenge означает что клиент
  аутентифицирован и авторизован к подключению
* если с паролем всё ok, если username не сдублирован, то сервер или
  отвечает "OK <SID>" или сообщением с ошибкой. SID это stream
  identifier -- 8-бит число, по сути просто идентификатор подключённого
  клиента
* далее по этому TLS-у раз в 10сек бегают PING/PONG, с отключением если
  долго от противоположной стороны ничего не было

X.509 -- потому что из коробки в Go есть. X.509+пароль -- точно так же
это устроено и в Mumble. То бишь для Mumble-пользователей привычно.

После успешной авторизации, сервер и клиент вырабатывают симметричный
ключ шифрования UDP трафика, используя встроенную возможность TLS 1.3 в
виде Export Keying Material.

Аудио читается кусками по 20мс -- рекомендованное значение Opus-а.
48kHz, 1 канал, 16-бит S-LE. Натравливается функция кодирования Opus,
получается несколько десятков байт пакет. К нему добавляется 32-бит
заголовок: 8-бит SID и 24-бита счётчик пакетов. 24-бита достаточно для
многодневной беседы без остановки, учитывая что отсылается 50pps.
Счётчик используется для обнаружения переупорядочивания и потерь
пакетов. Используются PLC (Packet Loss Concealment) возможности libopus
для сглаживания потерь.

Bitrate выставлен в 32Kbps. Изначально выставлял 24Kbps, как
рекомендовано. Но... 4-байт заголовок VoRS, 40-байт заголовок IPv6,
16-байт на MAC, 8-байт на UDP... выходит что размер payload-а меньше чем
overhead на передачу! Поэтому пускай будет 32Kbps, чтобы всё же чуть
больше чем overhead быть, и суммарно получить 64Kbps трафика.

Раз в секунду отправляется пакет с 1-им байтом SID-а, чисто для UDP hole
punching-а stateful firewall-а.

Собственно, ключ EKM используется для ChaCha20-Poly1305. В качестве
nonce которого используется счётчик пакетов. Пока используются все
128-бит Poly1305, но я думаю что имеет смысл сократить в два раза.

UDP трафик от клиента отправляется на сервер, который только смотрит на
первый байт SID-а и UDP IP:порт. Клиент шлёт UDP трафик с такого же
номера порта по которому он подключился для TCP. А дальше сервер просто
буквально рассылает копии пакета всем остальным. Да -- это пока самое
неприятное место, ибо микшированием аудиопотоков сервер не занимается и
поэтому объём трафика растёт пропорционально кол-ву участников. Но на
моей практике, людей в Mumble буквально не больше 4-5, и это речь про
64Kbps поток от каждого.

Как же дешифровать то трафик могут другие, ведь у них же свои TLS
соединения со своим state-ом. Сервер по TLS-у просто сообщает текстовой
строкой о факте подключения нового участника: ADD SID USERNAME KEY. Если
кто отключается, то: DEL SID. Безусловно пока есть race между тем как
дойдёт ADD/DEL по TCP до клиентов и параллельно с этим идущим UDP
трафик. Но да и фиг с ним: речь про доли секунды возможно ещё не
дешифрующегося трафика.

Когда сервер научится микшировать аудиопотоки, то от него будет идти
ровно один stream с audio. Можно будет избавиться от SID-а в принципе.
Если дойдут до этого руки, ибо задача вроде бы отнюдь не тривиальна.
Сервер сейчас даже не работает с криптографией UDP пакетов, хотя мог бы
проверять MAC например (ключ же он знает).

Самая жопа это ввод и вывод аудио. Ничего портабельного, кроме говна
типа PulseAudio или очередных его заменителей -- нет. OSS4 это мир BSD.
ALSA это Linux. JACK из коробки не стоит, да и я не знаю адекватно ли с
ним работать. Видел и даже трогал софт с OpenAL -- но на Go как-то оно
всё не то чтобы стабильно работало (может быть это софт был говно, а не
с OpenAL дело).

Пока решил поступить по тупому: SoX-овый rec для того, чтобы из него
просто забирать поток PCM байт. Его же play для воспроизведения. Приятно
то, что он не требует чтобы я поток постоянно выдавал. Если мне не
приходят UDP/Opus пакеты, то в play я байты никакие не подаю и это не
проблема. Для каждого клиента/stream-а я запускаю ещё один "play".
Насколько знаю, возможности микшировать потоки с разных приложений
зависят от драйверов и вообще звуковой подсистемы. Но вроде бы и ALSA и
OSS давно без проблем это всё из коробки умеют уже давно. У меня play
прекрасно запускается в большом количестве и асинхронно к ним подаются
кусочки звуковых данных -- всё тип-топ работает.

Вместо play/rec можно использовать всё что угодно другое. Это просто
команда которая или с stdout или на stdin должна принимать PCM данные.
Хоть ffmpeg засунуть -- должно быть пофиг. И по идее это нигде не должно
создавать проблем. Проверял на какой-то Ubuntu не самой свежей (с
LiveCD), ну и на своих FreeBSD, как со встроенными Intel HDA
звуковухами, так и подключёнными через USB или даже virtual_oss. Если я
доберусь до микширования звука на сервере, то этот же код можно будет
использовать и на клиенте, для того чтобы ровно один "play"/whatever
запускать, если будет в этом смысл.

Ну и оно должно быть удобно для использования. Я люблю бегающие чиселки.
Mumble настолько ничего не показывает, что частенько он говорит что типа
всё ok, мы работаем, вот только звуковое устройство отвалилось, как и
сервер.

Решил сразу сбацать TUI интерфейс. Экран для произвольных логов (ошибки,
события подключения), и для каждого участника по окошечку, где
перечисляются кол-во принятых/переданных пакетов (на сервере, а на
клиенте только принятых от остальных, или переданных от себя), размеры в
байтах (только payload конечно же), потерянные или переупорядоченные
пакеты,

Если последний UDP пакет был принят более секунды назад -- считается что
пользователь молчит. В противном случае показывается "TALK" зелёным
цветом. Как на сервере, так и на клиентах. Нажатием Enter можно
включать/выключать mute локальный -- UDP просто не будет отсылаться.

Не знаю зачем, но всегда хотелось иметь прыгающую полосочку громкости
когда человек говорит. Вычисляю RMS 200мс отрезков и рисую bar. С такой
же периодичностью обновляю экран.

В планах не было делать Voice Activity Detection, но раз я уже умею
вычислять RMS, то что мешает добавить VAD? Я не очень понял про его
значения, не вдавался в подробности, но просто написал утилитку, которая
выводит RMS значение для звука из rec-а. На глаз можно оценить какой
порог надо задать и передать его в клиента -- тихий звук до него будет
считаться тишиной и никакой UDP передаваться не будет. Вроде работает
отлично.

В "бою" я это ещё не проверял -- только в домашних условиях. Но с
задержками проблем не увидел, собралось под старой Ubuntu без проблем,
работает прям отлично как-будто. Запросто где-то фатальные косяки, ибо
делал на скорую руку. Но по идее оно полностью покрывает функционал
Mumble для просто общения (вне игр, где всякие positional audio).

Нет разделения по "комнатам". Конечно можно и добавить, но думаю что
проще поднять ещё один сервер на соседнем порту. У него из аргументов то
пути только bind, путь-к-pem и пароль. Плюс он не требует libopus или
чего-то подобного: обычная статически собранная Go программа.

12 months agofind -mtime в GNU и BSD
Sergey Matveev [Sat, 6 Apr 2024 17:31:41 +0000 (20:31 +0300)]
find -mtime в GNU и BSD

Эх, снова буду бурчать на GNU ОС. Вот мне надо удалять файлы которые
старше n часов. В FreeBSD можно указать find-у: -mtime +4h. Под GNU, как
оказалось, никаких часов нельзя указать. Только 24-часовыми единицами
оперировать.

Меня не перестаёт удивлять: вот вроде бы в GNU очень громоздкие утилиты
всех их с тьмой опций на любой случай жизни. Но всё равно регулярно
наталкиваюсь на обратное: что удобных вещей, которые сами по себе по
жизни появляются, в них не завозят, тогда как во, вроде бы, более
минималистичных BSD они появляются. Вот как-раз куча всего что завозят в
GNU: и без этого можно, а то что реально нужно пользователям -- это в BSD.

12 months agoВстретил чувака с Only Fetish Fest
Sergey Matveev [Fri, 5 Apr 2024 09:44:20 +0000 (12:44 +0300)]
Встретил чувака с Only Fetish Fest

В антракте на опере (b6d42eb8e4a3bba09cccbd93aa8cb007f5146cdc) увидел
чувака в футболке с OFF-а. Подошёл, поздоровался, тоже сказал что бывал
на нескольких мероприятиях онных. Поговорили, обсудили оперу, обоим
понравилась. Вот куда ходят культурные люди то!

12 months agoСходил на оперу "Лоэнгрин"
Sergey Matveev [Thu, 4 Apr 2024 20:14:46 +0000 (23:14 +0300)]
Сходил на оперу "Лоэнгрин"

https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D1%8D%D0%BD%D0%B3%D1%80%D0%B8%D0%BD_(%D0%BE%D0%BF%D0%B5%D1%80%D0%B0)
Снова в "Новой опере", где были на "Летучем голландце"
(e53fa95d1df289c3c6fc5ebcd142bf1f9f64a576). Особо расписывать нечего.
Лучшая музыка что я слышал среди всех опер. Само пение не так впечатлило
как на "голландце", но возможно потому что уже не в первый раз на
немецком слушаю. В любом случае, это сильно больше понравилось чем Аида
(411cc4cd20be6c375c0cbb101330d1aa2fd7fae8). Вагнер -- очень крут! Причём
то ли я какие отрывки (не считая свадебную тему, известную всем) слышал
и прежде, то ли я прям стал понимать и слышать фишек именно Вагнера.

12 months agoОщутимо иначе стал воспринимать death метал
Sergey Matveev [Tue, 2 Apr 2024 14:56:41 +0000 (17:56 +0300)]
Ощутимо иначе стал воспринимать death метал

Помню что меня не то чтобы впечатляли многие death metal группы. Больше
любил грайндкорчик и горграйндчик. И когда говорили про приезжающих
монстров death metal, то я конечно на многих из них ходил, но не то
чтобы это запоминалось. А тут за последние дни много альбомов Avulsed,
Decapitated, Deicide, Deranged, Devourment, Dying Fetus, Morbid Angel,
Mortician, Putrid Pile, Wormrot прослушал и прям тащусь от большинства
из них. Сейчас мне именно подобного хочется поставить, чем грайнду. Да
кардинальное изменение с (b1131e9ec315c349c3d299b9cdd4fbbca598dda6)
Cryptopsy не забуду. А black-а прежде я слушал ещё меньше чем death.
Сейчас же совсем наоборот.

12 months agoMagic Security Dust
Sergey Matveev [Mon, 1 Apr 2024 18:18:04 +0000 (21:18 +0300)]
Magic Security Dust

https://shostack.org/magic-security-dust
https://www.schneier.com/blog/archives/2024/04/magic-security-dust.html
Революционное решение для того, чтобы делать вещи безопасными by design.
В ролике снялся сам Брюс Шнайер, заявляя что там где он использовал эту
пыль, то security theatre пропал. Продаётся там же, где и snake oil.

12 months agoFLIP протокол
Sergey Matveev [Mon, 1 Apr 2024 17:52:46 +0000 (20:52 +0300)]
FLIP протокол

https://www.rfc-editor.org/rfc/rfc9564.html
Faster than LIght speed Protocol, использующий ChatGPT, может
предсказывать какие пакеты должны прибыть, делая канал связи
быстрее чем скорость света.

12 months agoДальнейшие приключения с gmail.com
Sergey Matveev [Mon, 1 Apr 2024 08:26:54 +0000 (11:26 +0300)]
Дальнейшие приключения с gmail.com

В 67c58801e7f5cd763f98639317494484493e4774 писал, что IPv6 SMTP трафик
после какого-то времени установления (кол-ва пакетов?) TCP соединения
перестаёт ходить со стороны подключающегося. На выходных убрал IPv6
адрес из DNS-а для входящего почтового сервера, оставив только IPv4. И
почта с gmail.com стала ходить. То есть, как минимум, это говорит о том,
что SMTP трафик по IPv4 никто не режет и это Google даже не пытается по
нему подключаться.

Добавил ещё один MX сервер, у которого только IPv4 есть адрес, надеясь,
что Google хотя бы будет пытаться ротировать список MX серверов для
попыток доставки. Но нет -- вижу что никаких попыток достучаться до IPv4
снова нет.

В голову ничего не приходит, кроме как: 1) забить и считать что
gmail.com связь невозможна, из-за кого на магистралях режущих IPv6
трафик. 2) убрать возможность доставки по IPv6. 3) drop-ать
самостоятельно трафик от gmail.com, чтобы он считал что этот IPv6 точно
так же как и mailfake[01].stargrave.org недоступны. 1) -- не очень
приятно, ибо люди на gmail.com имеются, хоть и не большинство. 2) точно
нет, регресс снова в каменный век?

3) сработал как и ожидалось:

    drill _spf.google.com TXT
    "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com ... ~all"
    drill _netblocks2.google.com TXT
    "v=spf1 ip6:2001:4860:4000::/36 ip6:2404:6800:4000::/36 ... ~all"

    ipfw table google-mail create type addr
    tableadd google-mail 2001:4860:4000::/36
    tableadd google-mail 2404:6800:4000::/36
    tableadd google-mail 2607:f8b0:4000::/36
    tableadd google-mail 2800:3f0:4000::/36
    tableadd google-mail 2a00:1450:4000::/36
    tableadd google-mail 2c0f:fb50:4000::/36
    $add deny tcp from "table(google-mail)" to "table(mein)" smtp

Увидел drop пакетов, а дальше увидел попытку соединения по IPv4, по
которой почта прошла.