]> Sergey Matveev's repositories - stargrave-blog.git/log
stargrave-blog.git
17 months agoЗачем ACPI?
Sergey Matveev [Wed, 1 Nov 2023 08:48:05 +0000 (11:48 +0300)]
Зачем ACPI?

https://mjg59.dreamwidth.org/68350.html
https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface#Security_risks
https://bugzilla.kernel.org/show_bug.cgi?id=204807
https://www.welivesecurity.com/2022/04/19/when-secure-isnt-secure-uefi-vulnerabilities-lenovo-consumer-laptops/
https://www.csoonline.com/article/575447/gigabyte-firmware-component-can-be-abused-as-a-backdoor.html
https://security.stackexchange.com/questions/61785/firmware-backdoor-protection
Ещё одно пояснение откуда растут ноги у ACPI. Не забывая, что это один
из backdoor-ов в компьютере.

18 months agoOpenBSD избавляется от syscall
Sergey Matveev [Tue, 31 Oct 2023 12:30:52 +0000 (15:30 +0300)]
OpenBSD избавляется от syscall

https://marc.info/?l=openbsd-tech&m=157488907117170
https://marc.info/?l=openbsd-tech&m=157489277318829&w=2
https://marc.info/?l=openbsd-tech&m=157507151909740&w=2
http://stolyarov.info/guestbook/archive/8/
http://stolyarov.info/guestbook/archive/8/#cmt126
Нельзя теперь просто так брать и делать syscall из ассемблерного кода.
Надо через libc это делать. Помню что и прежде они предупреждали о том,
что надо через libc делать вызовы и в Go какой-то версии эта особенность
уже учитывалась. Но теряется совместимость со статическими бинарями.

Столяров негодует и теперь этой ОС для него не существует. А я вот не
понимаю почему это всё так катастрофично. Что за дрочево на всю эту
совместимость? Любая программа должна мочь в любой момент быть
пересобранной из исходных кодов. С обновлениями ОС надо будет всё
пересобирать. Что в этом такого? Или боязнь того, что в новой версии,
под которую надо пересобирать, будут и в API обратно несовместимые
изменения и поэтому уже не выйдет пересобрать? Ни в коей мере не могу
сказать что одобряю или симпатизирую тому что происходит в OpenBSD, но
мне их изменения никак не мешают например. Да и, насколько понимаю,
статические бинари всё равно можно собрать, что они и сами делают в
базовой системе.

18 months agoРазница между OpenBSD, FreeBSD, NetBSD and DragonFly BSD
Sergey Matveev [Mon, 30 Oct 2023 17:30:57 +0000 (20:30 +0300)]
Разница между OpenBSD, FreeBSD, NetBSD and DragonFly BSD

https://unixsheikh.com/articles/the-main-differences-between-openbsd-freebsd-netbsd-and-dragonflybsd.html
Полуюмористическая статья представляющая каждую из этих ОС как какое-то
транспортное средство. С детства считал что самая крутая машинка это
Мерседес. Так вот, судя по статье, я как-раз на нём и езжу :-)

18 months agoТестовые примеры для ГОСТ TLS 1.3
Sergey Matveev [Sun, 29 Oct 2023 17:39:59 +0000 (20:39 +0300)]
Тестовые примеры для ГОСТ TLS 1.3

https://datatracker.ietf.org/doc/html/rfc9367
Увидел тут что в RFC для ГОСТ TLS 1.3 вставлены тестовые примеры. Не
отмечено что они сделаны мною, но это есть в каком-то ТК26 документе.
Оформление и вообще всё сопровождение и ведение, конечно же, уже делал
не я. Даже сам вывод их -- чисто мой отладочный вывод который был мне
удобен для многих полей. Но там только два примера из четырёх разных
сценариев.

Это всё генерировалось из обмазанного сверху донизу отладочными
print-ами Go 1.12 кода, в котором реализован не просто ГОСТ TLS 1.3, но
и куча всяких других возможностей TLS 1.3 протокола, штатно
отсутствующих в родной crypto/tls реализации. Благо Go код достаточно
простой и это всё было не сложно добавлять. И запускались
детерминированные по поведению тесты, где PRNG был подсунут
детерминированный. Много мегабайт вывода сохранялось в текстовый файл. А
дальше Perl скрипты, которые выдирали нужную информацию из получившихся
логов и вставляли в заранее полуавтоматически подготовленный HTML
шаблон, в котором, кроме таблиц, по сути только всякие <pre>-вставки с
plaintext-ом и были.

"HELO gost.example.com\r\n" это моя дань SMTP протоколу, в качестве
первого тестового application data.

18 months agoПосмотрел "Повелитель ветра"
Sergey Matveev [Sun, 29 Oct 2023 13:25:15 +0000 (16:25 +0300)]
Посмотрел "Повелитель ветра"

https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B2%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%B2%D0%B5%D1%82%D1%80%D0%B0
https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%8E%D1%85%D0%BE%D0%B2,_%D0%A4%D1%91%D0%B4%D0%BE%D1%80_%D0%A4%D0%B8%D0%BB%D0%B8%D0%BF%D0%BF%D0%BE%D0%B2%D0%B8%D1%87
Фильм про относительно недавний кругосветный перелёт Фёдора Конюхова на
воздушном шаре. Понравился, мог бы рекомендовать. Хотя из недавно
просмотренных я бы ещё раз пересмотрел "Вызов"
(62b23efafa08da98884dac04c718b409d091f6ee). Очень круто выглядят облака
и циклоны в фильме -- насмотреться не мог.

18 months agoЧеловек размещает свою автономную систему дома
Sergey Matveev [Sun, 29 Oct 2023 13:09:00 +0000 (16:09 +0300)]
Человек размещает свою автономную систему дома

https://aaka.sh/posts/20230129-bgp-at-home.html
https://news.ycombinator.com/item?id=34853136
https://varunpriolkar.com/2018/12/bgp-on-a-shoestring-the-definitive-guide/
Интересно про всё это читать и хочется поиграться со своими собственными
IP-адресами, ASN, BGP и multihoming. Только дорого и никакой практической
пользы не могу придумать.

18 months agoОх уж эти сны
Sergey Matveev [Fri, 27 Oct 2023 13:43:59 +0000 (16:43 +0300)]
Ох уж эти сны

Лёг я поздно, ибо дочитывал (934e7563c300bba059c4df350ae7a53ce09e4bbb)
Coders At Work. Забыл поставить будильник и проспал аж до 12:30, просрав
работу. Но когда проснулся, то было довольно мрачно и темно -- я думал
что только ранее утро. Посмотрел в окно -- ничего не видно. Надел очки
-- всё равно ничего не видно, но понял что уже из-за метели. В этом
полугодии ещё не видел снега и первая мысль: ох сколько ж времени то я
проспал!

Но до сих пор частично помню пару снов не связанных за эту ночь. В одном
из них я был у родителей дома -- до сих пор всё продолжает мне их дом
сниться (2a901a3bc832f0936979328c6527ccdc493cbaa7). Был какой-то ясный
солнечный день, но на горизонте вдалеке что-то горело -- много чёрного
дыма уходило в небо. А потом непонятно что происходило, но волной по
всей земле начало появляться пламя, асфальт как-бы загорался. Я во сне
сказал, что вот та дымящаяся штука типа рванула и на десятки (сотни? она
очень далеко) километров как дождём топливом всё залило и оно
воспламенялось. И мы в квартире, на 13-ом этаже, чувствовали повышение
температуры. А потом, типа секунд через десять, всё разом прекратилось,
как не бывало. По радио (во сне) и ТВ никаких новостей о происшествии.

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

И вот что за фигня только не приснится после чтения Coders At Work?

18 months agoКарманный компьютер фанатов научной фантастики
Sergey Matveev [Fri, 27 Oct 2023 10:16:12 +0000 (13:16 +0300)]
Карманный компьютер фанатов научной фантастики

https://storage.yandexcloud.net/wr4img/439250_149_i_005.png

18 months agoПрочитал Coders At Work
Sergey Matveev [Thu, 26 Oct 2023 22:04:56 +0000 (01:04 +0300)]
Прочитал Coders At Work

Которую начал 70e91862259101f51bd34bc4fd28d35d817d2140. Жутко
вдохновляющая книга! Меня ведь не раз уже посещали мысли что может быть
ну это всё программирование нафиг и пойти заниматься чем-то совсем
другим, пускай и низкооплачиваемым, но мне для жизни много и не надо
(тем более всё равно ж один живу). Ибо всё больше и больше думаю что я
банально уже не в состоянии решать задачи, и даже на всякие письма в
рассылке, не говоря о доработках, касающихся NNCP -- даже просто нет
желания читать полностью и думать обо всём этом.

Но читая интервью со всеми этими хакерами, вижу что моё направление
мышления, выводов, мнений, отношений, приоритетов и вообще задаваемых
вопросов -- неимоверно схоже и похоже. Споры которые возникали с
опытными коллегами -- такие же как и у этих разработчиков. Как они
подходят к задачам/проблемам, как пишут код, когда (не) пишут тесты, как
отлаживают, как читают код и где граница что его надо переписывать -- у
меня всё полностью аналогично и схоже (как и у коллег которых я серьёзно
уважаю как профессионалов). Отношение/мнение этих хакеров к формальных
доказательствам, literate programming, вопросам на собеседованиях (все
считают их просто бессмысленными), важностью документации и умения хоть
сколько-то грамотно говорить на человеческом языке -- я полностью на
одной волне со всеми ними. Что такое простой и красивый код, насколько
это важно -- аналогично. И ни у кого нет каких-то совсем уж выделяющихся
мнений и отношений ко всему что сейчас происходит в мире
программирования. Ну... только Кнут выделяется на фоне всех, но даже он
заметил, что, например, не то что не мог бы рекомендовать читать свой
Art Of Computer Programming от корки до корки, но даже не уверен смог ли
сейчас он сам это проделать.

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

Хакеры которые занимаются JavaScript -- имеют немного другие ценности, и
например плюются от Perl. Однако остальные, кто из мира Unix/Си и других
прекрасных вещей -- очень положительно о нём отзываются, что мне очень
приятно видеть, что крутые хакеры с которыми я на одной волне, точно так
же уважают и используют этот язык. Но Кнут заметил, что программирование
схоже религии -- есть вещи/ценности/верования которые объективно не
могут у всех сойтись.

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

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

18 months agoDeathcore в переходе
Sergey Matveev [Thu, 26 Oct 2023 12:53:44 +0000 (15:53 +0300)]
Deathcore в переходе

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

18 months agoGemini, Mercury, Spartan, Nex, Guppy протоколы
Sergey Matveev [Wed, 25 Oct 2023 22:05:43 +0000 (01:05 +0300)]
Gemini, Mercury, Spartan, Nex, Guppy протоколы

gemini://gemini.conman.org/boston/2023/10/25.1
https://geminiprotocol.net/
gemini://zaibatsu.circumlunar.space/~solderpunk/gemlog/the-mercury-protocol.gmi
https://portal.mozz.us/spartan/spartan.mozz.us/
http://portal.mozz.us/nex/nex.nightfall.city/nex/info/specification.txt
gemini://gemini.dimakrasner.com/guppy-v0.3.1.gmi
Как только люди не продолжают изобретать новые Gemini протоколы, упрощая
и упрощая всё, даже доходя до UDP. Автор первой статьи предупреждает о
пагубности последней идеи. А у меня чешутся руки написать своё видение
протокола из этой серии, но сдержусь.

18 months agoPyPI и pygost, pyderasn пакеты
Sergey Matveev [Wed, 25 Oct 2023 14:44:19 +0000 (17:44 +0300)]
PyPI и pygost, pyderasn пакеты

https://pypi.org/project/pygost/
https://pypi.org/project/pyderasn/
Вижу что после удаления проекта с PyPI, на его месте всё равно появился
проект (прежде выдавалась честная 404). Какие-то заглушки с описанием:

    A package to prevent Dependency Confusion attacks against Yandex.

Почему PyPI вообще разрешает что-то создавать поверх старого имени? Мда...

18 months agoEBCDIC не совместим с GDPR
Sergey Matveev [Wed, 25 Oct 2023 13:33:37 +0000 (16:33 +0300)]
EBCDIC не совместим с GDPR

https://shkspr.mobi/blog/2021/10/ebcdic-is-incompatible-with-gdpr/
Из-за того, что банк до сих пор использует древние компьютеры IBM с
EBCDIC кодировкой, в которой нет всяких "á, è, ô, ü", то на него клиент
подал в суд за нарушение GDPR, ведь его имя не смогли корректно ввести в
систему.

18 months agoПробую использовать nnn
Sergey Matveev [Tue, 24 Oct 2023 14:06:46 +0000 (17:06 +0300)]
Пробую использовать nnn

https://github.com/jarun/nnn
Почти всё время я перемещаюсь и оперирую файлами просто в zsh. Но
иногда, когда надо или оглядеть какую-нибудь мешанину и/или выборочно из
неё что-то удалить/скопировать/переместить, то запускаю ортодоксальный
файловый менеджер (7efac46178ded122377f4d32485a3ab02d9574ea) Midnight
Commander, ибо подобными (187fbd62f66088016c61da19a36f8f0a7b9a48fb
Volkov Commander, Far Manager (код ещё сидел под Microsoft Windows)) я
пользовался ещё с детства.

На днях надо было попрыгать по ряду директорий с фотографиями и
запускать в них "sxiv -t ." для preview просмотра их содержимого.
Запускать sxiv натравив на все директории -- слишком большой объём,
слишком долго ждать. Но в MC каждый раз приходилось набирать руками этот
sxiv вызов. На n-ый раз я быстро сделал one-line "foo" скрипт, тупо
чтобы меньше набирать пришлось.

Снова задался вопросом: есть ли приемлемая замена MC? Слышал я про
ranger, vifm, nnn и ещё наверное какие-то. ranger сразу отпадает:
написан на Python, значит будет тормозить, а мне надо чтобы всё
мгновенно запускалось. vifm когда-то пробовал, но как-то всё не шибко
было удобно с ходу. Главное что я хочу: progress bar отображающий cp/mv
операции, со скоростью и ETA. Ну и быстрое перемещение между двумя
местами, чтобы из одного в другое быстро что-то перебрасывать --
собственно, две панельки поэтому и удобны в ортодоксальных менеджерах.

nnn при выходе иногда оставляет coredump, с ходу пока не понял почему.
Но компилируется из одного .c файла, занимает мизерное место. С одной
стороны он не ортодоксальный и нет двух панелек -- но есть tab-ы (они их
называют контекстами), между которыми можно быстро прыгать tab-ом или
циферками. Быстрый fuzzy-like поиск и перемещение: "/", вводим часть
имени, если в выборке остался один элемент (и это директория), то сразу
переходим в него. Непривычно, не прощает опечаток, но нажатий клавиш
минимум.

По-умолчанию он использует xdg-open для открытия файлов. XDG ненавижу.
Но достаточно export NNN_OPENER=zsh-mime-open и мои .mailcap/.mime.types
файлы начинают работать как и везде и всякие .jxl сразу же начинают
просматриваться. Хочется мне запускать "sxiv -t ."? Просто добавляю plug
в виде NNN_PLUG='s:!sxiv -t .*' -- нажимая ";s" в nnn, будет запускаться
sxiv команда.

Выделять что-то, переключаться между контекстами и делать
вставку/копирование -- требует минимум нажатий клавиш. Прогресса
никакого нет. Точнее штатная документация говорит что под BSD системами
вы можете самостоятельно отправлять SIGINFO сигнал
(37bc49efafc88667a4bd371133e843ddbc6c0ce3,
b10b27905edfce6ad8054172f508ada4e3ebc09f,
954a5de29f23ee16e037b107e5847fd33799246e) и видеть прогресс копирования.
Но mv прогресс не покажет. Может быть можно написать собственный плагин,
который возьмёт selection и самостоятельно раскидает всё в tar и pv
например? Без проблем! Добавляю "c"-plug: NNN_PLUG='c:!_nnn-cd*' и
создаю _nnn-cd исполняемый файл:

    #!/usr/bin/env zsh
    set -e
    sel=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
    [[ -s $sel ]]
    read -d $"\x00" -A tgts < $sel || :
    size=$(du -A -c $tgts)
    size=(${=size})
    size=${size[$#size - 1]}
    for tgt ($tgts) ( cd $tgt:h ; tar cf - $tgt:t ) |
    pv --wait --interval 0.5 --size ${size}k |
    tar xf - --options read_concatenated_archives

В zsh можно сразу же удобно в массив прочитать null-terminated список
файлов selection-а. Натравливаю на всё это du чтобы хотя бы примерно
иметь представление о размере данных. А далее для каждой цели делаю по
tar архиву, чтобы в каждом из них только последний элемент явно
копировался (то бишь "music", а не "home/stargrave/music").

В nnn нельзя просто взять и указать "cd куда-то". Или переходить в ~,
или в /, или в какой-то bookmark и от них уже через "/" отправляться в
нужную директорию. Но ведь plugin может быть просто как-раз cd команда
же. А у меня есть время от времени используемая "cf", которая запускает
bfs и fzf, которыми можно fuzzy выбрать директорию для перехода.
NNN_PLUG='c:!_nnn-cd*;C:!_nnn-cd /*'

    #!/usr/bin/env zsh
    set -e
    [[ -n "$NNN_PIPE" ]]
    autoload ~/.zsh/functions/cf
    cf $1
    print -n -- "0c$PWD" > "$NNN_PIPE"

Последняя строка -- протокол взаимодействия с nnn через pipe. Тут мы ему
говорим чтобы сменил директорию. ";c" запустит интерактивный fzf от
текущей директории, а ";C" -- от корня.

Midnight Commander умеет и прозрачно переходить в архивы. nnn же
использует archivemount утилиту для этого, которая поверх FUSE монтирует
archive. Впервые использовал, но так как она работает через libarchive,
через которые вообще все tar/cpio/whatever в FreeBSD сделаны, то значит
поддерживает всё что нужно сразу же. Действительно -- работает. Во
временной директории nnn из под пользователя она всё монтирует. С
.tar.zst проблем не нашлось.

Когда-то я ещё использовал возможности подключения к FTP или SFTP в MC,
но уже наверное годами ни разу не использовал эти возможности, обходясь
ручным вызовом ftp/sftp ради единичных файлов.

Похоже, что nnn более чем удовлетворителен и годится на замену MC,
который тянет за собой GLib, libssh2 и S-Lang.

18 months agoMitM на уровне ДЦ на jabber.ru/xmpp.ru
Sergey Matveev [Sun, 22 Oct 2023 17:07:54 +0000 (20:07 +0300)]
MitM на уровне ДЦ на jabber.ru/xmpp.ru

https://notes.valdikss.org.ru/jabber.ru-mitm/
https://www.opennet.ru/opennews/art.shtml?num=59965
https://www.linux.org.ru/news/security/17386475
https://dxdt.ru/2023/10/21/11256/
https://habr.com/ru/news/768914/
https://www.devever.net/~hl/xmpp-incident
https://blog.thc.org/https-interception-by-a-state-actor-in-germany
Все новостные ленты забиты этой новостью.

18 months agoСпросили паспорт при покупке пива
Sergey Matveev [Fri, 20 Oct 2023 20:48:23 +0000 (23:48 +0300)]
Спросили паспорт при покупке пива

Брал сегодня пиво в магазине. Даже не для себя (я то вообще ничего
алкогольного не пью). Попросили показать паспорт. Стукнуло 36, а не
поверили что я дорос.

18 months agoВо второй версии udpobfs используется TLS 1.3
Sergey Matveev [Thu, 19 Oct 2023 15:59:28 +0000 (18:59 +0300)]
Во второй версии udpobfs используется TLS 1.3

В udpobfs (552979396ad8de1f3bbeb409f1c2a65f7446806b,
77002b8c0c2ee7bf0840141f8d972f63672f4d92) прежде не было ничего что
касается handshake, что не шибко удобно конечно.

Отталкиваясь от того, что уж TLS то должен работать, то пускай сначала
устанавливается TLS 1.3 соединение, а уж из него экспортируется ключевой
материал. И аутентификация двусторонняя появляется сразу же сильная, на
основе X.509 ключевых пар.

Также осуществляется посылка пустых (payload) пакетов каждые десять
секунд, если легитимного трафика нет. Ну и heartbeat по TLS каналу.
И сколько угодно параллельно сессий может работать, в отличии от
предыдущего варианта.

Вместо полноценного шифра использую BLAKE3 XOF который XOR-ится с
данными. На маленьких пакетах это немного медленнее ChaCha20-Poly1305,
но те кто приближается к килобайтному размеру -- уже быстрее. Poly1305
соответственно заменён BLAKE3-MAC. Для выработки ключей -- BLAKE3-KDF.
Размер MAC-а увеличил с 5 до 6 байт, за счёт уменьшения передаваемого
номера на 1 байт -- этого всё равно достаточно, судя по всему.
Шифрование заголовка Blowfish-ем так и осталось.

18 months agoБыстрое создание CA и EE ключевых пар в zeasypki
Sergey Matveev [Thu, 19 Oct 2023 08:02:42 +0000 (11:02 +0300)]
Быстрое создание CA и EE ключевых пар в zeasypki

Упоминал в 47b11bfd222d9f3f03664035e4fb4ca32cfa75de о том, что сделал
скрипт для управления X.509 сертификатами. С ним же ещё и генератор DNS
зон (d4eadab571bf5e8ea00d19598f129a708a322d15) интегрирован и он может
самостоятельно находить и создавать DANE записи.

Вот вчера понадобилось быстро сделать какой-нибудь CA и пару EE
сертификатов. Учитывая что zeasypki я отнюдь не каждый день пользуюсь,
то в 100% случаев начало работы с ним начинается с вызова без
аргументов, а дальше по usage становится всё понятно, что не перестаёт
радовать.

    $ zeasypki ca eddsa ca
    $ zeasypki new ee/eddsa/ca/server
    $ zeasypki new ee/eddsa/ca/client
    $ zeasypki keypair ee/eddsa/ca/server > server.pem
    $ zeasypki keypair ee/eddsa/ca/client > client.pem
    $ cp ca/eddsa/ca/cer.pem ca.pem

А ещё недавно менял шифрование ключей в нём с GnuPG на age. Ровно по
одной строчке в key_encrypt/key_decrypt функциях пришлось поменять.

Я прям вовсю ухожу с GnuPG и OpenPGP в целом -- они по сути остаются как
бы только для WoT/доверия и для почты. Прямо вот сейчас в рассылке
OpenPGP снова ругань Коха со всеми остальными и категорическое неприятие
им предлагаемых изменений, которые похоже прям вот-вот уже приведут к
конкретному расколу в стандарте и реализациях. А я уже вовсю подписываю
и релизы и Git-тэги (c5e9b245012a5a1ac1732b2c94fc89d9e760efe3,
d2890179a8bbb7bc3f2dcd807faa906e6ab78224), а также уже не оставил и
зашифрованных .gpg файлов.

18 months agoМуха устроила погром
Sergey Matveev [Thu, 19 Oct 2023 07:57:26 +0000 (10:57 +0300)]
Муха устроила погром

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

18 months agoКуча black metal на русском языке
Sergey Matveev [Thu, 19 Oct 2023 07:43:32 +0000 (10:43 +0300)]
Куча black metal на русском языке

Прослушал кучу дисков с прошлого (b82620abe745fd85916525228597ccb44068ad2a)
концерта. Мало того, что музыка много где нравится именно мелодичностью,
а не техничностью (хотя и такое есть), но и нравятся тексты песен. Не то
чтобы я всё разбираю, тем более понимаю смысл, но лексикон обожаем!
ca23bc85781a099a3f61719c1714957ac20c8e6c
113ca725be819d6c11d69bf98825da50bfc949fa
2d440a96b081b1740db1c2d1183ab04c3ecec2e0
Морок крут, в котором даже балалайки встречаются и клёвый женский вокал.
White Night/Black Forest дико местами напоминает мне Solefald
(77d6fc201a7da5267ba59ce5047ee0f57ec26269), даже внешний вид frontman.
Frostnatt инструментальный альбом прям погружает в атмосферу сибирской
зимы. Altwald, Credimus, Heretoir, Horn, Туга -- все понравились
музыкой. Громоверж прям сильно такой языческий, но очень классно
записан, атасный вокал, воодушевляющие слова, красивая музыка с огромным
количеством дудок. Split "Ural Megalith" содержит: Nothing, Темень,
Всполох и Вихрь. Слышал названия эти групп, но не ожидал что, особенно
две последние, такие интересные и прекрасные оказались. В общем, под
большим впечатлением и очень обрадован музыкальной кладези в стране.

18 months agoНачал читать Coders At Work
Sergey Matveev [Thu, 19 Oct 2023 07:35:58 +0000 (10:35 +0300)]
Начал читать Coders At Work

https://en.wikipedia.org/wiki/Coders_at_Work
В книге собраны интервью со всякими известными программистами и
хакерами. Пока я прочитал только о четверых. Очень нравится то, что
ничем особенным их ответы не выделяются относительно того, что и я бы
говорил. В плане рекомендаций и мнений относительно C++ какого-нибудь
и других технологий. Пока они все довольно чётко разграничивают то, что
делают академики со всякими комитетами и те, кто реально в
"промышленности", а не выдуманном мире первых. У всех самые сложные баги
связаны с конкурентной работой в программах -- как и я сколько раз
убеждался в сложности этого занятия. Не шибко много каких книг
рекомендуют, а вот читать код в один голос. Интересно что там будет в
интервью у Кнута какого-нибудь или Томпсона.

18 months agounum -- конвертер между числами, Unicode и HTML/XHTML кодами
Sergey Matveev [Mon, 16 Oct 2023 07:38:33 +0000 (10:38 +0300)]
unum -- конвертер между числами, Unicode и HTML/XHTML кодами

https://www.fourmilab.ch/webtools/unum/
Приятная утилитка, конвертирующая между числами в разных форматах,
HTML/XHTML и Unicode символами.

18 months agoOnly Fetish Fest 6: Чернее чёрного
Sergey Matveev [Sun, 15 Oct 2023 08:59:53 +0000 (11:59 +0300)]
Only Fetish Fest 6: Чернее чёрного

Более четырёх месяцев так и не выбирался на концерты. И тут вот посетил
наверное самый офигенный из всех black metal фестивалей за всю историю!
И крут он не только, так сказать, техническими сторонами, типа отличного
звука, отличной толпы и поддержки и количества людей, отличного
настроения и веселья, отличной подготовки performance музыкантов, но и
разнообразием black-а как такового в принципе. И медляки, и
полуатмосферные вещи, и нечто авангардное, и танцевальное, и true black,
и raw black, и с чистым вокалом, и с гроулом, и скримингом, и даже не
без горлового пения немного, и максимально мрачного, и задорно
плясовально танцевального, и яростно быстро агрессивного. Никакого death
не было и в помине! Это всё было просто интересно слушать, ибо
разнообразия хоть отбавляй! И похоже впервые я мог бы впервые сказать
что, пожалуй, моему организму достаточно distortion звука было, пресытился!

Открывали сей чёрный шабаш ребята из Саранска "По́́́тьма". Крутой вокал,
крутые музыканты, интересная разнообразная музыка, вообще headliner-ами
могли бы быть. Слэм уже начался на них.

Black Forest из Северодвинска были крутейше агрессивны и мощны. Очень
понравился их кавер на "I'm Gonna Be Your God" -- куда куда более
суровый чем у Slayer. Офигенны, народ бесился ещё как.

Следом были Credimus. Вот на них как-то всё было уныловато, хотя под
конец народ всё же побесился. Вроде бы и играют неплохо, долбят, делают
стену distortion-а гитарами, гроулят, в костюамх, но чего-то вот не
хватало. Возможно после Black Forest все силы были выжаты? Но у них
наверное был самый быстрый барабанщик из всех что слышал. Dysthymia
(82ad61dd650a01e72aa3a1c1c8d4f11ba2af20d4) делают больше ударов, но
ничего кроме них и нет, тогда как в Credimus всё очень сложно и
разнообразно. Но на одних барабанах не выедешь.

Meister Leonhardt мне уже знаком (37b4cb1c9b843cfe6353b539269e0f26b816bda8).
А судя по разговорам и вопросам в зале -- не многим. Всякий этот black
metal конечно должен иметь некую толику бунтарства, но тут ребята
перегнули палку. Пока настраивались, то ходили в нормальных (как у меня)
футболках. Но перед выходом на сцену все одели гавайские рубашки!
Задумка клёвая, отдельно респект. А вот вокалист, огромных размером, был
полностью в балахоне, в чёрных перчатках и полностью чёрной
непроницаемой одёже на голове -- ни кусочка тела не видно. Я то знал что
на них будет круто. Так и было. После выступления в толпе слышал "я же
тебе говорил что они ахуенны!".

Ведьмин Прах из Уфы, судя по разговорам, ждали многие. Вокалист в
ведьминой шапке, зелёная подсветка... прям чувствуешь что на каком-то
шабаше. На сцене только вокалист/гитарист и басист. Ударные -- drum
machine. Скорость и буйство знатные, но без агрессии, только весёлые
пляски. Это как взять какую-нибудь "Лесную царевну" у Ashen Light и
только подобное с забавными текстами и играть. Отрывался народ под всё
это знатно. Честно говоря, вообще не понимал откуда у людей могут ещё
браться силы на продолжение слэма -- судя по всему, из закромов
последние были. И греблю устраивали и сколько только людей не
перетаскали на руках. В общем, понял отчего и почему их так ждали.

А закрывали всё это Туга. Быстрый зубодробительный black, но очень такой
разнообразный и с быстро меняющимися темами. Кто-то пытался послеймиться,
но по мне так это можно было просто стоя слушать и наслаждаться. На
сцене череп со свечкой зажжённой на нём. Очень круто, послушать и на
записи и в живую однозначно хотелось бы ещё. Но до конца я их не
дослушал: время уже было почти полночь и мне надо было успеть на
электричку (ведь ещё и в гардероб бы очередь была). Организатор в 23:30
уже им намекал что пора закругляться, так что, надеюсь, я только минут
пять и не дослушал.

По этому концерту особо сильно понимаешь что black metal вовсю
эволюционирует и прогрессирует, меняется, не стоит на месте. То тут, то
там, но явно элементы из других жанров и стилей притаскиваются. И так и
хочется сказать что тут группы только лучшее от всех брали. Но без death
metal, который частенько сопутствует black.

Приобрёл 13 дисков и 4 футболочки.

18 months agoСовременные UI
Sergey Matveev [Fri, 13 Oct 2023 07:59:43 +0000 (10:59 +0300)]
Современные UI

https://artemis.sh/2023/10/12/scrollbars.html
Автор ругается на то, что scrollbar-ы становятся не то что меньше, а
вообще исчезают даже, скрываются. Тоже в каком-то LiveCD и современной
GUI программе видел такое. И не было ни одного раза чтобы я не
проматерился при этом, ведь scrollbar мягко говоря часто использую,
чтобы быстрее перемещаться.

Вчера же я пошёл оплачивать всякие домены и VPS свои. LiveCD на
отдельном ноутбуке приходится запускать, ведь нихера ничего не работает
под броузерами даже с JavaScript хотя бы двухлетней давности (которые у
меня в виртуальной машине есть). Отличился reg.ru. Его интерфейс
как-будто каждый 1-2 года меняется, как-будто прям полностью меняют
команду разработки UI. И каждый раз они умудряются переплёвывать себя в
неюзабельности. Я бы не поверил в это, но когда показывается список
доменов, то в нём отображается только их имена. Нет даже даты до какого
они действуют. Раньше там кроме этого были и даже NS-сервера видны.
Приходится буквально переходить на каждый их них чтобы увидеть дату.
Когда-то были ясные ссылки на услуги (домены там, VPS), а сейчас я с
трудом догадался тыкнуть на какую-то херь с чёрточками и это оказалось
ниспадающее меню. Нашёл иконку (да, даже если мышку навести, то никакого
всплывающего текста о том что это за кнопка не появится) с настройками
таблицы. В ней указано что всякие даты и куча другой информации мол типа
отображаются, это даже отключить нельзя. Тыкая на кнопочки переключения
видимости это информации мне выдаются сообщения о том что это нельзя
отключить (я думал что выключив и включив всё появится) -- и эти
сообщения заняли четверть экрана, очень неспешно по таймеру пропадая.

Если поперемещаться у них в помощи, то например кнопка на мышке или в
броузере назад -- не работает, ибо это же всё динамическое, AJAX, Web
2.0/x.0, поэтому ни штатных средств навигации, ни Home/End не будет
работать. На других сайтах, пока я всё это проделывал, тоже видел что
"назад" не работает, как частенько и PgUp/PgDown -- используйте
scrollbar и мышку... ой, а нету же scrollbar, вы должны туда
прицелиться, а потом перемещать ползунок, ибо тыкнуть в нужное место
scrollbar-а уже не выйдет.

Ввод телефонного номера например это на каждом сайте всегда по разному.
Где-то это просто вводится as-is текстом. Где-то они дают подсказку
серым цветом о том, в каком формате надо вводить, начиная с "+7": где-то
вводишь +7 и всё ok, где-то оно съедается, но дальнейшая часть номера
вводится, где-то съедается "+", а 7 становится первой цифрой после "+7".
Где-то, введя три цифры, надо нажать пробел чтобы он в дальнейшую ячейку
для 2-4 цифр перепрыгнул, где-то это происходит автоматом. Нажимая
КАЖДУЮ цифру, приходится смотреть на экран и смотреть где же мой курсор
и всё ли пошло по плану.

Отдельная "хвала" цветовой схеме. В некоторых местах read-only текст
показан бледным цветом. Настолько бледным, что я, не имея проблем с
монитором домашним прежде, вынужден был головой подвигать чтобы
действительно убедиться что там где-то в этом месте написан таки текст,
а не просто мне так показалось. Почему нельзя его сделать не бледно
бледно пребледно альбиносо серым, а нормальным ближе-к-серому цветом,
как в какой-нибудь Windows 95 элементы в интерфейсе показывались? Просто
с ходу про них вспомнил: всегда везде видно, на любом мониторе. Бывает
так, что текст там чёрный, а фон еле серый -- в итоге ты даже не
понимаешь что это read-only элемент на самом деле, поэтому тебе и не
дают его исправить. Но еле-серым на белом, почти невидимого цвета...
Плюс ещё сейчас мода все таблицы делать без рамок/разграничителей,
просто с висящими в воздухе элементами, когда даже не понятно кто из них
куда и как относится и является ли частью вот этой или другой формы.

Я реально охреневаю: это вообще хоть кто-то когда-либо пытался из
разработчиков/менеджеров/тестеров использовать? Думаю что да, но просто
такие сейчас стали стандарты юзабельности. Мир сходит с ума, лютое
безумие, идиотизм и дебилизм. Или это всё удобно на смартфонах может
быть? Какого хера уж интерфейсы то работы с регистратором доменов или
VPS-ок делать заточенными для смартфонов?

18 months agoCDN ivi, anycast, ECMP
Sergey Matveev [Fri, 13 Oct 2023 05:09:44 +0000 (08:09 +0300)]
CDN ivi, anycast, ECMP

https://habr.com/en/companies/ivi/articles/240237/
https://habr.com/en/companies/ivi/articles/237349/
Наткнулся тут во время поиска на старые статьи от бывшего коллеги из
ivi, рассказывающего про сетевое устройство их CDN-а. Много лет назад я
не шибко понимал всё что там написано. Когда запускали мои наработки на
прокси серверах, то чтобы вывести/ввести узел в строй, просто
опускали/запускали BGP демона. И я не понимал полностью все процессы что
за этим стоят и как так оно всё так работает. Сейчас же мне кажется что
ведь всё так очевидно и просто.

18 months agoСписок частей с BluRay
Sergey Matveev [Thu, 12 Oct 2023 20:43:43 +0000 (23:43 +0300)]
Список частей с BluRay

https://github.com/beandog/bluray_info
bluray_info утилита позволяет удобно получать метаинформацию
о мультимедиа данных BluRay диска. Причём сразу же в формате
пригодном для mkvmerge (--title X --chapters --xchap).

18 months agoТретье место
Sergey Matveev [Wed, 11 Oct 2023 17:15:17 +0000 (20:15 +0300)]
Третье место

https://en.wikipedia.org/wiki/Third_place
https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B5%D1%82%D1%8C%D0%B5_%D0%BC%D0%B5%D1%81%D1%82%D0%BE
Первое -- дом, где живём. Второе -- работа, где проводим большую часть
времени. А вот ещё выделяют третье, например бары, кафе, церкви,
библиотеки, спортзалы, парки, и т.д.. В примере русскоязычной страницы
указаны coworking и антикафе. Я про них только слышал, но не бывал. Как
и никогда не был, в отличии от большинства сверстников в Королёве, в
Интернет-кафе. Для меня третье место это явно концертные площадки, хотя
общения явного с окружающими там нет.

18 months agoRFC: The Twelve Networking Truths
Sergey Matveev [Wed, 11 Oct 2023 11:24:44 +0000 (14:24 +0300)]
RFC: The Twelve Networking Truths

https://www.rfc-editor.org/rfc/rfc1925

    Abstract

       This memo documents the fundamental truths of networking for the
       Internet community. This memo does not specify a standard, except in
       the sense that all standards must implicitly follow the fundamental
       truths.

    Acknowledgements

       The truths described in this memo result from extensive study over an
       extended period of time by many people, some of whom did not intend
       to contribute to this work. The editor merely has collected these
       truths, and would like to thank the networking community for
       originally illuminating these truths.

    1. Introduction

       This Request for Comments (RFC) provides information about the
       fundamental truths underlying all networking. These truths apply to
       networking in general, and are not limited to TCP/IP, the Internet,
       or any other subset of the networking community.

    2. The Fundamental Truths

       (1)  It Has To Work.

       (2)  No matter how hard you push and no matter what the priority,
            you can't increase the speed of light.

            (2a) (corollary). No matter how hard you try, you can't make a
                 baby in much less than 9 months. Trying to speed this up
                 *might* make it slower, but it won't make it happen any
                 quicker.

       (3)  With sufficient thrust, pigs fly just fine. However, this is
            not necessarily a good idea. It is hard to be sure where they
            are going to land, and it could be dangerous sitting under them
            as they fly overhead.

       (4)  Some things in life can never be fully appreciated nor
            understood unless experienced firsthand. Some things in
            networking can never be fully understood by someone who neither
            builds commercial networking equipment nor runs an operational
            network.

       (5)  It is always possible to aglutenate multiple separate problems
            into a single complex interdependent solution. In most cases
            this is a bad idea.

       (6)  It is easier to move a problem around (for example, by moving
            the problem to a different part of the overall network
            architecture) than it is to solve it.

            (6a) (corollary). It is always possible to add another level of
                 indirection.

       (7)  It is always something

            (7a) (corollary). Good, Fast, Cheap: Pick any two (you can't
                have all three).

       (8)  It is more complicated than you think.

       (9)  For all resources, whatever it is, you need more.

           (9a) (corollary) Every networking problem always takes longer to
                solve than it seems like it should.

       (10) One size never fits all.

       (11) Every old idea will be proposed again with a different name and
            a different presentation, regardless of whether it works.

            (11a) (corollary). See rule 6a.

       (12) In protocol design, perfection has been reached not when there
            is nothing left to add, but when there is nothing left to take
            away.

    Security Considerations

       This RFC raises no security issues. However, security protocols are
       subject to the fundamental networking truths.

    References

       The references have been deleted in order to protect the guilty and
       avoid enriching the lawyers.

18 months agoРыбные салаты в Иране
Sergey Matveev [Wed, 11 Oct 2023 10:11:54 +0000 (13:11 +0300)]
Рыбные салаты в Иране

https://moslenta.ru/news/lyudi/kukhni-11-10-2023.htm
https://moslenta.ru/lyudi/na-rasstoyanii/budete-est-rolly-v-irane-vas-nazovut-sumasshedshim-persiyanka-o-nacionalnoi-ede-pereezde-v-moskvu-i-russkom-mentalitete.htm
Иранцы не понимают прелести ни мимозы, ни селёдки под шубой. Именно эти
два салата я *всегда* беру в Глобусе себе. Больше могу никакой не брать,
но мимозу уж обязательно.

18 months agoМузыка в метро вернулась
Sergey Matveev [Tue, 10 Oct 2023 07:28:48 +0000 (10:28 +0300)]
Музыка в метро вернулась

С этих выходных появились снова места для выступления музыкантов. У меня
два перехода, где уже вовсю по пути на работу играет живая музыка. А то
со времён COVID прикрывали же это всё, к сожалению.

18 months agoПодарил проигрыватель пластинок папе
Sergey Matveev [Mon, 9 Oct 2023 18:52:57 +0000 (21:52 +0300)]
Подарил проигрыватель пластинок папе

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

Съездили с ним в магазин Аудиомания, проконсультировали, рассказали,
порекомендовали всякого. Приобрели Audio Technica неплохой. С
автоматической системой запуска/останова, которую раньше и не видели
никогда в действии.

18 months agogoredo 2.0
Sergey Matveev [Sun, 8 Oct 2023 08:34:49 +0000 (11:34 +0300)]
goredo 2.0

http://www.goredo.cypherpunks.ru/News.html#Release-2_005f0_005f0
После более чем недели разработки по вечерам, выпустил новую версию
сабжа. В рассылке сказали что на большом количестве целей goredo
работает в разы медленнее чем apenwarr/redo. Я особо с оптимизацией и не
заморачивался, но, действительно, время затрачиваемое на нахождение
зависимостей в нём идёт на минуты, а redo-sources я вообще не смог
дождаться на своём синтетическом примере.

Оказалось, что в нём просто тьма одной и той же работы выполнялась
каждый раз при рекурсивном прохождении информации о зависимостях.
redo-sources был написал просто ужасно неоптимально, слишком дуболомно.
Очень много времени затрачивалось на постоянную работу с путями:
path.Split, path.Join, path.Abs и подобные. Сотни мегабайт памяти
уходило на хранение строчек, большая часть из которых одинакова.
Информация о зависимостях в памяти хранилась вообще как буквально
map[string]string, как словарик вытащенный о каждой из цели из .rec
файла, где у всех одни и те же строковые ключи.

Оптимизацию и проверку скорости омрачал тот факт, что регулярно стали
появляться ошибки при любых операциях с файлами, типа fd.Stat(),
fd.Read(). Раньше никогда не вылазило ничего подобное. Но когда
запускаются десятки тысяч целей, у каждой из которых по тысяче
зависимостей, то иногда секунд десять может всё идти нормально, иногда
чуть ли не секунду от каждой цели вылазит сообщение об ошибке работы с
файлом. Долго выяснял, но стало похоже на то, что как-будто os.File
пытается работать с уже другим файловым дескриптором. Как-будто один
закрыли и его переиспользовали, но os.File об этом не знал.

Оказалось, что в Go на os.File вешается finalizer, который закрывает
файловый дескриптор. А срабатывать он будет если попадает под сборщик
мусора. Долго искал и место где у меня с какой-то стати, но переменная
выходит за scope и почему-то попадает под GC. Чуть ли не в самом начале
main(), действительно, был if {} scope внутри которого открывался файл,
и не предполагалось что он должен закрываться. Короче исправил проблему.

Вместо чисто string путей использовал структуру, внутри которой
предвычисленные пути (абсолютный, путь к .rec файлу зависимости,
относительный путь к Cwd). А также завёл кэш этих самых строчек, чтобы
не создавалась куча копий одной и той же строки по сути.

Вместо хранение map[string]string зависимости, имело смысл хранить
нормальные структуры с int-ами. Так и сделал. Даже хэш у меня прежде
хранился в виде шестнадцатеричной строки, ужас. Но потом до меня дошло,
что информация об иноде: размер, номер иноды, ctime, mtime -- не требуют
явного парсинга, ибо они используются по сути просто только для
сравнения. Всё это можно просто положить одной бинарной строкой
сконкатенированной. Завёл кэш и инодов, чтобы не плодилось копий, и кэш
хэшей. Позже дошло что вероятность того, что для заданной иноды хэш
может отличаться -- мизерная. Поэтому можно иноду и хэш хранить вместе в
одной 6*8+32 байта строчке. А ещё можно использовать не строчку, которая
хранит указатель и длину данных, а просто массив фиксированного размера.

Ну и дошло до того, что парсинг двух гигабайт recfile-ов отнимает (что
не удивительно) львиную долю времени. Перешёл на бинарный формат. Думал
было взять что-то существующее, типа Protocol Buffers, но плюнул. Просто
друг за другом идущие chunk-и, каждый из которых начинается на 16-бит
длину, далее один байт тип (ifcreate, ifchange, ifchange-nonexistent,
stamp, always), а далее либо имя файла (до конца chunk), либо перед ним
ещё фиксированного размера поля иноды с хэшом. redo-depfix команда
теперь может сконвертировать все имеющиеся .redo/*.rec в .dep бинарные
файлы, а redo-dep2rec может наоборот показать .dep в виде recfile.

В общем, теперь всё в разы быстрее apenwarr/redo, на порядки чем было
прежде. Правда и ценой использования RAM.

18 months agoНаучпоп про Буревестник (ракета с ядерным двигателем)
Sergey Matveev [Wed, 4 Oct 2023 16:04:59 +0000 (19:04 +0300)]
Научпоп про Буревестник (ракета с ядерным двигателем)

https://naked-science.ru/article/tech/burevestnik
Любопытно почитать, как минимум, зачем такая ракета нужна в принципе.

18 months agoНеобычные твари на Земле
Sergey Matveev [Wed, 4 Oct 2023 15:45:50 +0000 (18:45 +0300)]
Необычные твари на Земле

https://habr.com/ru/companies/leroy_merlin/articles/765286/
Про ящериц, которые стреляют своей же кровью из глаз не слышал
никогда. Фринов никогда не видел -- жутко выглядят. Казуара даже
помню как выглядит, но не знал что это самые опасные птицы.

18 months agoDJB о Kyber-512
Sergey Matveev [Wed, 4 Oct 2023 05:16:13 +0000 (08:16 +0300)]
DJB о Kyber-512

http://blog.cr.yp.to/20231003-countcorrectly.html
Катком Бернштайн проходится по NIST-у и его стандартизации Kyber-а,
советуя держаться от него подальше.

18 months agoИстория спектра цветов окружающих нас предметов
Sergey Matveev [Mon, 2 Oct 2023 11:57:57 +0000 (14:57 +0300)]
История спектра цветов окружающих нас предметов

https://habr.com/ru/articles/764798/
Любопытная статистика о цветах вокруг нас. Исчезло дерево, появился
пластик и метал, синтетические синие цвета. В общем и целом мир
становится темнее, мрачнее и холоднее.

19 months agoПрошёл Шизариум
Sergey Matveev [Thu, 28 Sep 2023 17:38:29 +0000 (20:38 +0300)]
Прошёл Шизариум

https://en.wikipedia.org/wiki/Sanitarium_(video_game)
https://www.youtube.com/watch?v=ggrBv4UqLQs
А точнее Sanitarium. Шизариум это версия с русским переводом. Про этот
квест я что-то забыл, а ведь он был признан одним из лучших наряду с
Grim Fandango. Я же хотел пройти крутые и великие квесты, а в ScummVM
как-раз недавно добавили поддержку этой игры.

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

Квест очень понравился! Хотя это уже третий связанный с больными на
голову шизиками, в шкуре которых ты находишься. Хочется упоминать его
рядом с Downfall (870457cf42b00dd34f6290e0f9e8a4b6e28329e0,
268649c35a191daa616b2d5c0525dfe74d4e3580,
8e8951c2d1d2537cb3427e09cb58ee32fa361dbd) и Cat Lady
(54b1f46f0908b66ba1a98d78c380d4355c82bdd1).

В Sanitarium очень понравилось как всё нарисовано, особенно когда я
оказался в теле циклопа. И круто что чем ближе к концу, тем больше и
больше становится понятного что же всё это означает.

Но всё же Downfall (оригинал, а не переделку 2016-го) не переплюнуть,
только нервно в сторонке покуривать. Такого впечатления уже возможно
никогда никогда не произведёт!

19 months agoOpenBSD PF vs FreeBSD PF
Sergey Matveev [Wed, 27 Sep 2023 19:46:37 +0000 (22:46 +0300)]
OpenBSD PF vs FreeBSD PF

https://mwl.io/archives/23127
Есть давний миф о том, что PF сделана в OpenBSD, один раз портирована на
FreeBSD, с тех пор не обновляется и не изменяется толком. Типа PF на
OpenBSD постоянно улучшается, а в FreeBSD на него плюнули. Человек,
написавший много книг про BSD системы и разный софт под них, объясняет
как дела обстоят на самом деле.

19 months agoДве недели с собаками
Sergey Matveev [Wed, 27 Sep 2023 14:26:48 +0000 (17:26 +0300)]
Две недели с собаками

Прожил две недели с двумя нашими собаками. Муха прежде
(63f7f86c5e15507ca960e0b7d861176c48a4655c) ещё не была у меня, всё для
неё новое и непривычное. Даже не ела в первый день из-за переживания. Но
потом обвыклась и по полдня обе у меня на коленках дрыхли, пока я за
компьютером. Обожаю собак, а эти две обожают меня.

19 months agoТед Чан "Правда фактов, правда ощущений"
Sergey Matveev [Wed, 27 Sep 2023 14:15:59 +0000 (17:15 +0300)]
Тед Чан "Правда фактов, правда ощущений"

https://www.libking.ru/books/sf-/sf/575930-ted-chan-pravda-faktov-pravda-oshchushcheniy.html
https://ru.wikipedia.org/wiki/%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F_%D0%B2%D1%81%D0%B5%D0%B9_%D1%82%D0%B2%D0%BE%D0%B5%D0%B9_%D0%B6%D0%B8%D0%B7%D0%BD%D0%B8
Очень крута данная книга, как по мне! Куча примеров, когда идеальная
память (записанная на электронный носитель, без ошибок
воспроизводящаяся, не изменяющаяся со временем) будет не просто вредить,
но и разрушать отношения людей. Как забывание многого крайне важно.

И в первом сезоне "Чёрного зеркала", в эпизоде "История всей твоей
жизни", как-раз точно так же, как и в книге, присутствуют всё
запоминающие устройства и как это негативно скажется на жизни людей.
Уже писал как впечатлила (611484087e7d3f7a7ed8e72f0636f92dbd965068) меня
та серия, ибо я бы точно такие же шаги и выводы делал на месте главного
героя. Вот и книга обо всём этом же.

19 months agoECMP в FreeBSD с BIRD заработал
Sergey Matveev [Mon, 25 Sep 2023 20:05:52 +0000 (23:05 +0300)]
ECMP в FreeBSD с BIRD заработал

http://lists.cypherpunks.ru/archive/goredo-devel/ZRGx74oYIMB_OUSL@stargrave.org/
https://gitlab.nic.cz/labs/bird/-/commit/a80cd4707464cedb526eb72e7704b097af20beb7
Сегодня день каких-то очевиднейших открытий. Во-первых, в goredo я
поправил неприятное поведение, когда при параллельной сборке он мог
десяток сообщений вывести о том что, мол, resource deadlock avoided при
попытке захвата lock-а на файл. На BSD системах не воспроизводится
вообще. Сегодня попристальнее почитал man по fcntl lock-ам и они явно
говорят, что Linux вполне себе может выдать эту ошибку и когда на самом
деле deadlock-ов никаких нет, мол показалось. Так что с чистой совестью
можно проверять на эту ошибку и просто *молча* пытаться брать lock заново.
Сколько лет это сообщение донимает GNU/Linux пользователей, а я только
сейчас дочитал man до нужного места.

А дальше я решил ещё раз посмотреть в репозиторий BIRD на тему есть ли
там какой прогресс с ECMP (3eeb6b3ec3b4abdd3a25f78402f02f3cf821305e)
поддержкой в FreeBSD. И я же ведь видел этот коммит прежде, аж декабря
прошлого года, но то ли криво собрал, то ли ещё чего ступил прежде, но
сейчас собрал BIRD с bsd-netlink реализацией и... ECMP прекрасно
заработал! Вижу двойные маршруты до одной и той же цели, через разные
интерфейсы. В 190e3364aaed45929ea025671bdc0a331cd6aad0 я обозвал BIRD
слишком уж Linux-центричным, чуть ли не готовым его поменять на FRR
какой-нибудь. Но он реабилитировался, так уж и быть. MTU всё равно для
default route не умеет делать (ну или я ещё не понял как это провернуть),
но да и ладно.

19 months agoПосмотрел прохождение Gabriel Knight 1 и 2
Sergey Matveev [Sun, 24 Sep 2023 16:54:52 +0000 (19:54 +0300)]
Посмотрел прохождение Gabriel Knight 1 и 2

https://en.wikipedia.org/wiki/Gabriel_Knight:_Sins_of_the_Fathers
https://en.wikipedia.org/wiki/The_Beast_Within:_A_Gabriel_Knight_Mystery
Пробовал когда-то начинать играть в первую часть, но моментально уставал
от скуки от постоянного трёпа на темы мне не очень интересные. А трёпа
там уйма! Но игра многими считается хорошим квестом. В этом месяце
посмотрел (на ускоренной промотке) прохождение. И точно не пожалел что
не пытался играть -- игра чуть ли не полностью состоит из диалогов. Вот
совсем не по мне, хотя ничего плохого и не могу сказать.

Вторая игра по сути является детективным фильмом, многосерийным. Квеста
в игре, как такового, не шибко то много, просто направление главного
героя в нужное русло. Это мне больше понравилось, но, опять же, это
сложно прям к квесту отнести.

19 months agoПутешествие Margot Flügel-Anhalt в Гималаи
Sergey Matveev [Sun, 24 Sep 2023 07:37:22 +0000 (10:37 +0300)]
Путешествие Margot Flügel-Anhalt в Гималаи

https://www.youtube.com/watch?v=OIWNyibf_0w
Известная в Германии путешественница в совсем недавно, этим летом,
20тыс. проехала на нашей Ниве из Германии в Пакистан, через Турцию
и Иран. Посмотреть на людей можно. Приятно что отнюдь не мало
понимаю чего там она по немецки говорит. Ниву очень хвалит.

Сам хотел было в Пакистане побывать, но то одно, то другое, то третье --
так и не дошло до него дело ещё.

19 months agoNetBSD применяет Argon2 для хэширования паролей
Sergey Matveev [Sat, 23 Sep 2023 17:04:09 +0000 (20:04 +0300)]
NetBSD применяет Argon2 для хэширования паролей

https://wiki.netbsd.org/projects/project/Add_Argon2_password_hashing/
Уже упоминал (d553fdf1e57d86722ba41cb9fb04329c7dd2bd4e) что чисто
случайно узнаю что у NetBSD всякие современные приятности внедряются
регулярно. Вот в нём Argon2 для /etc/passwd используется. Молодцы!

19 months agoПоказ состояния SES корзин
Sergey Matveev [Sat, 23 Sep 2023 15:17:15 +0000 (18:17 +0300)]
Показ состояния SES корзин

https://dan.langille.org/2023/09/23/r730-01-2/
Человек показал на чём работает, что за диски у него. Ведь видел много
раз я название "sesutil" утилиты, но ни разу не запускал! А оно делает
ведь прям прекрасный вывод:

    ses0: <AHCI SGPIO Enclosure 2.00>; ID: 3061686369656d30
    Desc     Dev     Model                     Ident                Size/Status
    Slot 00  -       -                         -                    Not Installed
    Slot 01  ada0    TOSHIBA MG03ACA300        Y2M3K1DCF            3T
    Slot 02  ada1    TOSHIBA MG03ACA300        Y2M1K1T4F            3T
    Slot 03  ada2    HGST HUS724020ALA640      PN1134P6KPS00W       2T
    Slot 04  -       -                         -                    Not Installed
    Slot 05  -       -                         -                    Not Installed

    ses0: <AHCI SGPIO Enclosure 2.00>; ID: 3061686369656d30
    Desc     Dev     Model                     Ident                Size/Status
    Slot 00  -       -                         -                    Not Installed
    Slot 01  -       -                         -                    Not Installed
    Slot 02  -       -                         -                    Not Installed
    Slot 03  -       -                         -                    Not Installed
    Slot 04  ada0    WDC WUH722020ALE6L4       2LG531XK             20T
    Slot 05  ada1    WDC WD161KRYZ-01AGBB0     2CGP65MN             16T
    Slot 06  ada2    WDC WD161KRYZ-01AGBB0     2BJYBELD             16T
    Slot 07  ada3    WDC WUH722020ALE6L4       2LG4WGDF             20T

А вот корзина с SAS дисками подключена к HBA контроллеру, но только SAS
кабелями. Даже не думал о подключении SES-кабеля (или как он там
называется). Когда в следующий раз полезу в компьютер, то надо бы не
забыть посмотреть.

19 months agoРодословная Unix shell-ов
Sergey Matveev [Sat, 23 Sep 2023 08:21:23 +0000 (11:21 +0300)]
Родословная Unix shell-ов

https://github.com/marcpaq/shellancestry

19 months agoBIRD и выставление MTU статическому маршруту
Sergey Matveev [Fri, 22 Sep 2023 20:11:10 +0000 (23:11 +0300)]
BIRD и выставление MTU статическому маршруту

https://bird.network.cz/pipermail/bird-users/2021-May/015453.html
В cdd29ba1d7a5fdd299f169e5d213c33258e561df упоминал, что BIRD может
устанавливать маршрут по умолчанию, меняя его шлюз при изменении
маршрутов. Но, штатно в нём нет способа указать ему MTU. Когда я прежде
выставлял его руками, то мог (bcdf941977524afc69a18a4bf23fa7923d3aa182)
для каждого маршрута (ну мне только для default и надо было) указать
MTU, ибо бывают проблемы (не работает) с PMTUD.

Поисковик выдал письмо из рассылки, где предлагают установить krt_mtu
атрибут маршрута. Вот только фигня в том, что оно только под Linux. Под
BSD системы аналогичных атрибутов в BIRD нет.

Это уже второй раз (2699f8360ee6aa3622e6aab139a1b650dc375fa6), когда
BIRD именно под (Free)BSD не умеет что-то делать, что я хотел бы. На
данный момент моё снисхождение и приязнь к нему сходят на нет. Очень уж
какой-то он Linux-centric.

19 months agoIPv4-in-IPv6 туннель дома
Sergey Matveev [Fri, 22 Sep 2023 20:05:38 +0000 (23:05 +0300)]
IPv4-in-IPv6 туннель дома

В cdd29ba1d7a5fdd299f169e5d213c33258e561df упоминал, что для IPv4
трафика всякие 10GbE, демоны маршрутизации и прочие штучки-дрючки
не применяются. Он тупо статическим маршрутом идёт в шлюз. Ибо ну
не хочу я видеть упоминание этого рудимента у себя в прекрасных
конфигах, как можно меньше бы.

Но что мне мешает пускать IPv4 трафик внутри IPv6 туннеля между шлюзом и
другими компьютерами? Тогда и его путь будет зависеть от подключённости
10GbE и если используется WireGuard, то и внутри него он будет
заворачиваться. Зато демоны маршрутизации ничего про IPv4 не знают.
Сделал, прекрасно работает, доволен результатом.

19 months agoBIRD OSPF, default route, 10GbE с hop-ом
Sergey Matveev [Thu, 21 Sep 2023 21:23:12 +0000 (00:23 +0300)]
BIRD OSPF, default route, 10GbE с hop-ом

Первая задача что стояла (efb7b138ba42bd19945b3ab1f700c340061524f2):
трафик с NUC должен ходить до beta-сервера через gw-сервер, так как они
соединены 10GbE. Но NUC соединён с beta-сервером и напрямую через 1GbE.
Об этом всём они знают через OSPF. cost интерфейса в OSPF по умолчанию
равен 10. Прежде, я просто задавал cost=5 и 10GbE интерфейс становился
более приоритетным. Я подумал что возможно из-за дополнительного hop-а,
5+5≥10 (какой-нибудь там ещё плюсик появляется) и поэтому маршрут до
beta всё равно идёт через 1GbE.

Долго возился, делал огромные cost-ы у 1GbE интерфейса, но он всё равно
упорно не собирался ходить через лишний hop. Понял что что-то у меня не
ладно с пониманием OSPF в BIRD, ибо у меня метрики много где показывают
10000, 10001, 10002, в зависимости от кол-ва hop-ов в этих маршрутах.
Какое-то большое значение. В документации его нашёл только в упоминании
метрик для OSPF от external маршрутов.

Голова уже не очень свежа, но похоже что дело было так: источник
маршрутов на самой машине это protocol direct, в котором я перечисляю
"lo0" как минимум. Адреса с него становятся маршрутами, внешними с точки
зрения OSPF. И имея огромные веса, всякие мои потуги с cost интерфейсов
ни на что не влияют. В общем, сделал так: 10GbE интерфейсы имеют cost по
умолчанию (10); 1GbE cost=100; WG-туннели в Интернет cost=1000. И
добавил строчку с заданием метрики OSPF в фильтр экспорта только
"Интернет" маршрутов, которые у меня copy-paste на всех машинах:

    filter only_internet {
            if proto = "directed" then ospf_metric1 = 1;
            if net ~ [2000::/3+] then accept;
            reject;
    }

после этого, метрики birdc show route стали вменяемыми, и по сути
показывать и количество hop-ов как-бы и интерфейсы между ними. После
этого всё стало работать как надо, как я ожидаю и хочу. Документация по
protocol direct говорит что надо бы подумать, прежде чем вообще
применять этот протокол, ибо learn в protocol kernel типа должен и так
всё сделать. Понятия не имею что там будет с метриками при этом, почему
я от learn избавился не помню, но надо бы будет выяснить.

          ------------------------ >8 ------------------------

Вторая задача возникла на пустом месте. На втором сервере у меня если не
подключён 10GbE, то я хотел бы чтобы трафик, очевидно, всё равно шёл по
1GbE имеющемуся. Добавил в /etc/rc.conf:
    ipv6_defaultrouter="2a03:e2c0:2663:2::1 -mtu 1480"
ожидая что после поднятия BIRD, он добавит маршрут до ::2:1 и default
route сможет типа работать. И этот сервер перезапускался уйму раз, и...
я считал что всё работало. Я же мог на него SSH-нутся. И за это время я
только по IPv6 или в LAN работал, или BitTorrent по IPv4 использовал,
который вообще статично настроен и демонов маршрутизации не касается. В
netstat -r я видел default маршрут, но не пытался сделать ping на что-то
вне LAN. А на него он говорил бы:
    ping: sendmsg: No buffer space available
    ping6: wrote ya.ru 16 chars, ret=-1
Обнаружил это уже на своём ПК, в котором появился 10GbE и я аналогичную
конфигурацию проделал.
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=221445

Увидел что в самом BIRD можно задать статичный маршрут.
    route ::/0 via 2a03:e2c0:2663:2::1;
и вижу что в ядре ничего не появляется. И только спустя пару часов я
вновь решил посмотреть получше документацию и увидел, что вместо "via"
можно задавать "recursive", который прям рекурсивно доходит до нужного
next hop адреса. И вот теперь то у меня нормально появляется и
обновляется default route, идущий через link-local адрес актуального на
данный момент сетевого интерфейса.

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

19 months agoТеперь все компьютеры дома на 10GbE
Sergey Matveev [Thu, 21 Sep 2023 17:14:31 +0000 (20:14 +0300)]
Теперь все компьютеры дома на 10GbE

В прошлый upgrade (c88a83563caf8a6000f430b69e37aa4766315c93) я соединил
только два сервера 10GbE сетью через DAC кабель. А моя основная рабочая
машина, Intel NUC, ходила по 1GbE. Сегодня привезли ещё одну сетевую
карту и два SFP+ на RJ45.

Карта точно такая же с Mellanox ConnectX-3 чипом и двумя портами, что и
заказывал прежде. Но её вставил во второй сервер, а из него вынул карту
с одним SFP+ портом и Intel чипом на борту. Благо что ко всем карточкам
давались низкопрофильные планки, ибо в старый сервер только такие
влезают.

Вставил всё это дело в NUC. И... ничего не заработало. Карта вообще не
видится в списке PCI устройств. Изначально то я именно Mellanox новую
купленную попробовал, потом её заменил на Intel, который точно рабочий
-- подумал что может быть карта нерабочая?

Но я же теперь типа немного поумнее стал после просмотра лекции введения
в PCIe (4df90850b243b914bf29f7ee7396c99724af3945) и подумал что может
быть в NUC, учитывая что у меня аж два NVMe там уже стоят, банально не
хватает каким-то образом PCIe lane-ов или что-нибудь в этом духе? Так то
в NUC 4x и 16x gen 3 порта. Поставил в BIOS: force 8x, 4x, 4x в разделе
PCIe bifurcation. И всё заработало! Причём 4x gen3 lane-ов достаточно
для обоих NVMe, а 8x gen2 достаточно (даже избыток) для NIC.

SFP+ заработали без проблем. Проверил iperf3: более 9Gbps, но скорость
сильно танцует и плавает на полгигабита. С DAC-ом 9.88 стабильно
показывает. Греется, действительно, как и пишут, пипец как сильно,
трогать пальцем нельзя. Но хотя бы если кабель не подключён, то вроде
перестаёт.

Cat7 кабеля у меня нет, только 6e. Но расстояние в полметра -- так что
наверное вряд ли на что-то влияет. Так вот главное то: ping на DAC
показывал ± стабильно 0.030мс, тогда как на RJ45 0.110мс, которые
колбасятся и иногда >0.220, иногда чуть меньше 0.090.

Добавил интерфейс в BIRD OSPF конфигурацию, указал меньший cost для
10GbE link-ов и IPv6 трафик автоматом идёт по более быстрому каналу. По
умолчанию cost=10 для 1GbE. Я указал cost=5. Это сработало при
подключении сервер↔сервер. Но мой NUC подключён 10GbE только к одному
серверу, и 1GbE через коммутатор ко второму. Он выбирает для второго
сервера маршрут через 1GbE, а не через, пускай и на один hop дальше,
10GbE link-и. Плюс раньше у меня default route шёл просто через
-iface wg_gw, а сейчас это уже либо 10GbE, либо wg туннель. Надо как-то
динамически менять этот default route будет.

19 months agoXML лучше YAML
Sergey Matveev [Wed, 20 Sep 2023 15:27:25 +0000 (18:27 +0300)]
XML лучше YAML

https://changelog.com/posts/xml-better-than-yaml
Статья начинается с утверждения:
    There's always something better than YAML
с которым невозможно поспорить. Пишешь 1.20, получаешь 1.2.
Плюс старая проблема с Норвегией (8976383f8feb44fca9cf0b8f4e614b853d671214).
Когда-то я тоже использовал YAML, но одумался. Особенно когда на работе
его хорошенько поиспользовали. YAML не может быть (адекватным) вариантом
-- никогда. XML местами может быть адекватен.

19 months agoNina Hagen Band выступление 1978-го
Sergey Matveev [Wed, 20 Sep 2023 15:12:07 +0000 (18:12 +0300)]
Nina Hagen Band выступление 1978-го

https://www.youtube.com/watch?v=VdsPft_uaNg
Клёвое выступление! На таком концерте бы с удовольствием побывал.
Нормальный рок, хотя и ничего выдающегося. Но вокал и поведение Нины
очень по мне. Пишут что она мать немецкого панка -- легко поверю, круто!

19 months agoТупейшие игры-симуляторы
Sergey Matveev [Wed, 20 Sep 2023 06:36:42 +0000 (09:36 +0300)]
Тупейшие игры-симуляторы

https://www.youtube.com/watch?v=8bGN2Riyr0A
Забавно какой только фигни не придумают в играх. В половину бы сыграть.
* Симулятор камня
* Симулятор заварки чая
* Симулятор робота-пылесоса
* Симулятор оленя в городе, с пистолетами вместо рогов
* Симулятор таракана
* Симулятор лежания на кровати
* Симулятор ребёнка проказника
* Симулятор парня девушки
* Симулятор ГАИшника
* Симулятор инвалида-колясочница
* Симулятор жителя России: соревнование по буханию, гонки верхом на
  медведях, мольба голышом на улице Путину, гопота, корты, трапеза
  арбузом с медведем
* Симулятор ОМОНа
* Симулятор бабули
* Симулятор уличного мастурбатора
* Симулятор туалета от первого лица. 20k полигонов на какаху

19 months agoNFS поверх 10GbE
Sergey Matveev [Tue, 19 Sep 2023 10:37:23 +0000 (13:37 +0300)]
NFS поверх 10GbE

Сегодня наконец-то возникла задача по копированию сотен гигабайт между
серверами, по NFS. Указав nconnect=4 опцию при монтировании, он делает
несколько TCP соединений к серверу, стабильно выдавая 988 MiB/sec (если
dd например делать). Штатно то всё равно упрётся в HDD диски. И это на
ZFS dataset-е где sync=disable. В общем, особо затыков не наблюдается, и
ведь никакого tuning толком не делал. Ожидал больше засад.

Ещё заметил что vfs.zfs.arc_max в новой версии ZFS/FreeBSD стал равен
просто нулю, означая автоматическое вычисление (почти всю RAM чтобы
использовал).

19 months agoSHA256 Git репозитории то больше не экспериментальны
Sergey Matveev [Mon, 18 Sep 2023 16:52:29 +0000 (19:52 +0300)]
SHA256 Git репозитории то больше не экспериментальны

https://lore.kernel.org/git/27BFEA76-A6F5-418C-B18C-1206704849F7@zombino.com/T/
Внезапно увидел, что уже в 2.42.0 версии Git-а, sha256 object-format не
считается экспериментальным, теперь только совместимые изменения будут
вносится и можно формально не беспокоится что репозиторий будет поломан.

Увидел в одном месте, что можно как бы сконвертировать репоизторий из
sha1 формата в sha256, прогоняя через git-fast-export|git-fast-import.

19 months agoКонтрольные суммы distfiles у NetBSD
Sergey Matveev [Mon, 18 Sep 2023 07:19:20 +0000 (10:19 +0300)]
Контрольные суммы distfiles у NetBSD

https://www.cambus.net/on-the-importance-of-distfiles/
Эти парни, в отличии от FreeBSD и OpenBSD (SHA256), используют
BLAKE2s и SHA512. Молодцы! Вот как ни какой-нибудь любопытный
факт про NetBSD, так нравятся всё больше и больше.

19 months agoВпервые потрогал что-то связанное с нейросетями
Sergey Matveev [Sun, 17 Sep 2023 19:10:00 +0000 (22:10 +0300)]
Впервые потрогал что-то связанное с нейросетями

https://github.com/ggerganov/whisper.cpp
Программа которая может транскрибировать аудиофайлы. Зависимостей для
сборки не требует. Но нужно скачать модель. Я использовал "large"
модель, которая 3GB+ требует памяти -- для меня копейки. Решил проверить
на аудиокниге из "Созвездия льва" (859b583e6ea48f5bb3de8338274d7fe936c2f225)
"Роберт Шекли -- О высоких материях". Книга длится 357 сек. На восьми
ядрах NUC работа заняла 504 сек. То бишь, в полтора раза медленнее чем
неспешное чтение книги.

    [...]
    [00:04:03.440 --> 00:04:11.960]   несамостоятельность. Лапух. Любому неприятно было бы угодить в подобный переплет. Но что же в
    [00:04:11.960 --> 00:04:19.280]   жизни главное? Мортенсен загасил сигарету и вспомнил, что она у него последняя. Тьфу,
    [00:04:19.280 --> 00:04:25.760]   только не отвлекаться. Главное в жизни — сомнение, желание, стремление к цели,
    [00:04:25.760 --> 00:04:34.040]   наслаждение. Потерев лоб, Мортенсен громко, хоть и слегка дрожащим голосом, выговорил — главное
    [00:04:34.040 --> 00:04:43.280]   в жизни — воспламенение. Воцарилась зловещая тишина. Выждав пристойный по своим понятиям срок,
    [00:04:43.280 --> 00:04:52.280]   Мортенсен спросил — угадал я или нет? — Воспламенение, — пророкотал возвышенный
    [00:04:52.280 --> 00:05:04.520]   могущественный глаз. — Чересчур длинно. Горение? Тоже длинновато. Огонь! Главное в жизни — огонь.
    [00:05:04.520 --> 00:05:14.240]   Подходит. — Я и имел в виду огонь, — вывернулся Мортенсен. — Ты меня действительно выручил,
    [00:05:14.240 --> 00:05:20.080]   — заверил голос. — Ведь я прямо завяз на этом слове. А теперь помоги разобраться
    [00:05:20.080 --> 00:05:26.560]   с семьдесят восьмым по горизонтали. Отчество изобретателя бесфрикционного привода для
    [00:05:26.560 --> 00:05:31.960]   звездолётов. Четвёртая буква «Д» вертится на языке, да вот никак не поймаю.
    [00:05:31.960 --> 00:05:38.680]   По словам Мортенсена, тут он повернулся кругом и пошёл себе в освояси подальше от
    [00:05:38.680 --> 00:05:48.040]   неземного глаза и от высоких материй. Роберт Шекли
    [00:05:48.040 --> 00:05:53.720]   О высоких материях Рассказ читал Олег Булдаков
    [00:05:53.720 --> 00:05:58.480]   [музыка]

Это конечно не готовый для публикации текст, есть косячки, но в целом
всё отлично. Но это очень качественно записанная книга с качественным
диктором. А как оно справится например с моей презентацией NNCP на
CryptoInstallFest?

    [00:00:10.000 --> 00:00:16.000]   Всем привет! Сергей Матвеев, я разработчик заданного программа "Досучение" и "Шифровал".
    [00:00:16.000 --> 00:00:23.000]   Сегодня я хотел бы рассказать про NCP, это набор утилит, которые позволяют строить в сторону форвард-сети,
    [00:00:23.000 --> 00:00:29.000]   которые можно использовать, например, для построения независимых от интернета сети передачи данных.
    [00:00:29.000 --> 00:00:34.000]   Про эту тему я уже рассказывал в прошлом году на CryptoCentralFest,
    [00:00:34.000 --> 00:00:38.000]   эта тема просто немного более расширена.
    [00:00:38.000 --> 00:00:48.000]   В предыдущей лекции все отлично сказали про все наши проблемы с интернетом,
    [00:00:48.000 --> 00:00:58.000]   про то, что мы его по сути потеряли, теряем, и я уверен, безвозвратно, и у нас огромные проблемы.
    [00:00:58.000 --> 00:01:05.000]   То есть интернет, как некое чудо света, когда два произвольных компьютера между собой могут обменяться произвольными данными,
    [00:01:05.000 --> 00:01:12.000]   мы вовсю теряем. И восстановить это я не знаю как, это невозможно.
    [...]
    [00:04:39.000 --> 00:04:45.000]   Это клиент включается к серверу и ему дают, в общем-то, просто закрытую программу,
    [00:04:45.000 --> 00:04:49.000]   99%, что это будет отдельно стервенный natural script код, сравнение с эндвером.
    [00:04:49.000 --> 00:04:53.000]   И эта программа полностью контролирует, что он может сделать,
    [...]
    [00:06:04.000 --> 00:06:09.000]   Какие решения? Очевидно, прокладывать собственный канал связи, как говорят, дорого,
    [00:06:09.000 --> 00:06:12.000]   просто и смертно это не могут сделать, и если у нас будет вайп-рейс блокировки,

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

Добавление -mavx512f флага показывает что AVX512 включён (на новом
сервере моём), но это не то чтобы ощутимо помогает: 532 vs 547 сек.

19 months agoСдохло два 2TB диска
Sergey Matveev [Sun, 17 Sep 2023 10:27:23 +0000 (13:27 +0300)]
Сдохло два 2TB диска

Как статистика и всякие законы говорят: беда не приходит одна. Когда
начинает вылетать одно железо (9412c8cdb0c01875e9bfca8d3efde9695e4d9211),
то начнёт и другое. В течении прошлых месяцев я видел как возникали I/O
ошибки на одном из HGST дисков. Переставлял в другой слот корзины --
пропадали. Сегодня упорно выдаёт без разницы где находясь. Проверил в
другом компьютере (другой контроллер), другой корзине, USB контейнере:
не работает, SMART показывает возрастающие reallocated sectors.
Ладно, не страшно. Ему было аж десять лет, с июля 2013-го.

Но что меня поразило: ради проверки достал из ящика 2TB WD диск и он
тоже отказался работать. Его я много использовал через USB-контейнер.
Месяц назад работал без проблем. Снова в другой компьютер, корзину, USB
-- тоже упорно не работает. Подумал даже, что может быть сам сервер
испортил диск как-либо? Но другие же работают. Чудеса какие-то. Впрочем
этот второй диск был даже ещё немного постарше: март 2013-го.

Подумал что в сервере может быть питания как-то стало не хватать (он ещё
старее чем диски)? Вынимал 10GbE, оставлял только 1-2 диска.

19 months agoСвой среди металлистов
Sergey Matveev [Sun, 17 Sep 2023 09:27:00 +0000 (12:27 +0300)]
Свой среди металлистов

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

19 months agoМатч по Mortal Kombat
Sergey Matveev [Sat, 16 Sep 2023 10:19:11 +0000 (13:19 +0300)]
Матч по Mortal Kombat

https://www.youtube.com/watch?v=oyjtkt7N1tw
По сути я в первый раз посмотрел как играют прошаренные в MK люди.
Именно этот MK мне больше всего нравился и озвучкой и графикой и всеми
этими движениями и скоростью. В живую видел как одноклассник только
против компьютера дрался. Я никогда не умел играть в них.

Впечатляет как буквально одна ошибка, один раз не поставленный блок,
сразу означают потерю чуть ли не 2/3 всего здоровья. Захватывает
смотреть. Помню себя за мочиловом в Quake 3: тут у ребят адреналин
должен зашкаливать.

19 months agoПейджинговых компаний больше не будет у нас
Sergey Matveev [Sat, 16 Sep 2023 09:57:43 +0000 (12:57 +0300)]
Пейджинговых компаний больше не будет у нас

https://lenta.ru/news/2023/09/16/pagerstory/
В этом году перестали выдавать лицензии пейджинговым компаниями. Я ведь
когда-то даже звонил и интересовался есть ли у нас (хотя бы в Московской
области) пейджинговые сети (5f60c60543a521b46e8d51d8c78c77f373631dc0)
чтобы подключиться. Муниципальных масштабов уже не было. А ведь пейджер
прекрасен тем, что является только приёмником: выдачи твоего
местоположения, как это происходит с сотовыми, нету.

19 months agoПосмотрел "Сосисочную вечеринку"
Sergey Matveev [Sat, 16 Sep 2023 09:43:18 +0000 (12:43 +0300)]
Посмотрел "Сосисочную вечеринку"

https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%BD%D1%8B%D0%B9_%D1%80%D0%B0%D1%81%D0%BA%D0%BE%D0%BB%D0%B1%D0%B0%D1%81
https://en.wikipedia.org/wiki/Sausage_party
Вообще ничего не читал заранее про этот фильм. Кроме вступления о том,
что там пищевые продукты, которые не знают что их едят. Ох какая же
лютая прикольная забавная жесть! Первый мультфильм получивший рейтинг
"R" -- не знаю что значит, но типа обилие сцен с сексом, насилием,
расчленёнкой. Но мне люто понравилось! Ну кроме того, что там в конце
гомосеков показывали, уже прям надоело что как ни западный
фильм/мультфильм, то не без них. Но они не сильно впечатление
подпортили. И я бы сказал что это один из самых эротичных
фильмов/мультфильмов что видел -- аппетитные булочки там повсюду!

19 months agoViolet
Sergey Matveev [Sat, 16 Sep 2023 09:37:32 +0000 (12:37 +0300)]
Violet

https://monsterfeet.com/grue/notes/54
Три года назад (1cc31a53541018c39ea575cf890f1cd980f163b3) я прошёл
Violet IF игру. Помню что ни одной секунды не жалеешь на прохождение.
Которую можно осилить за пару часов, будучи не знакомым с IF-ом вообще.
В подкасте Eaten By A Grue оба автора яро рекомендуют поиграть в неё
каждому. За всё время я не помню чтобы оба это рекомендовали так сильно,
плюс подчёркивая что ничего про неё не стоит заранее читать. Надо просто
выделить пару часов и включить её. В ней вообще даже одна комната только.
Юмора полно, концовка очень неожиданная. Рекомендуют всем кто пускай и
не разу в IF не играл.

19 months agoGeekon в Нижнем Новгороде
Sergey Matveev [Sat, 16 Sep 2023 09:31:23 +0000 (12:31 +0300)]
Geekon в Нижнем Новгороде

https://www.youtube.com/watch?v=huLFC-AQcFE
Круто что во всё большем количестве городов проходят подобные
мероприятия по ретрокомпьютерам, приставкам и игровым автоматам.
Плюс музеи появляются. Насколько понимаю, там большая часть людей
(организаторов и авторов) это примерно мои сверстники. Но я не сказал
бы что мало играл, но точно не настолько увлечён всем этим. Хотя вот
приставок у меня вообще никогда не было. Ни в одном игровом клубе или
Интернет кафе не был даже на пороге.

19 months agoПосмотрел "Грязь"
Sergey Matveev [Thu, 14 Sep 2023 19:05:10 +0000 (22:05 +0300)]
Посмотрел "Грязь"

https://ru.wikipedia.org/wiki/%D0%93%D1%80%D1%8F%D0%B7%D1%8C_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_2013)
Давненько не смотрел новых (незнакомых мне) фильмов. И вот угоразди же
мой выбор пасть на сабжевый фильм. Обилие сцен с сексом, наркотиками,
всяких непотребств, суицида и в общем всякой... грязи. Но не сказать что
было мерзко. Местами и комедийно. Игра Джеймса Макэвоя офигенна! В общем
фильм понравился, хотя ведь куча лютой дичи.

19 months agoЗадница серверов
Sergey Matveev [Thu, 14 Sep 2023 09:47:09 +0000 (12:47 +0300)]
Задница серверов

Фотография сабжа. Вот не нравятся мне все эти Apple фотографии где или
ни одного кабеля, или максимум только питание будет. Ведь если нет
проводов, то значит WiFi/Bluetooth используются, заведомо имея куда
более отвратительный QoS и user experience. У меня конечно перегиб в
сторону хаоса: всё разноцветное, у 8P8C некоторых отломаны держатели,
всё болтается в воздухе, но всё равно на это приятнее смотреть.

19 months agoВсё, OpenBGPD достал
Sergey Matveev [Thu, 14 Sep 2023 09:05:45 +0000 (12:05 +0300)]
Всё, OpenBGPD достал

Два месяца (2699f8360ee6aa3622e6aab139a1b650dc375fa6) пожил с OpenBGPD
вместо BIRD. Да, приходилось явно придумывать и указывать AS-ы и IP
адреса для соединения демонов, но мне чисто эстетически очень нравился
формат конфигов и вывода этой команды.

Но после банальной попытки пускать BGP поверх недавно появившегося 10GbE
(c88a83563caf8a6000f430b69e37aa4766315c93) соединения, количество
проблем превысило мой порог терпимости.

* bgpd не запускается если нет интерфейса указанного в конфигурации. У
  меня были как-раз WireGuard интерфейсы, в зависимости от того где
  нахожусь, то присутствующие, то нет. Я переименовывал их и создавал
  фиктивные, просто присутствующие, чтобы запускать демона без изменения
  конфига
* bgpd не работает, если есть один и тот же IP адрес на разных
  интерфейсах (62fffff07180b3ecdf59193dde24366c1649f8d5), даже если это
  и link-local, что абсолютно нормальная ситуация
* ну а попытка просто добавить знание о ещё одном 10GbE интерфейсе
  приводят к тому, что один из детей демона падает и он перезапускается
  из-за этого. Как это было при совпадении link-local адресов. Я
  использовал gdb чтобы понять в чём же дело то, ибо сообщений о причине
  падения никуда не выводится. Хотя добавления ещё одного пути до AS я
  уже делал (2x WG туннеля по двум Ethernet в один коммутатор)

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

19 months agoПочтовая рассылка про историю Интернета
Sergey Matveev [Thu, 14 Sep 2023 06:53:50 +0000 (09:53 +0300)]
Почтовая рассылка про историю Интернета

https://elists.isoc.org/mailman/listinfo/internet-history
Не знал про такую рассылку, где люди кучей историй делятся.
Это в купе с "форумом компьютерных старых пердунов" (COFF)
и The Unix Heritage Society (TUHS) надо подписываться
(9a0b3dc87f230374cc1d26e8118d9258579f0bc0).

19 months agoСмена дистрибутива в день программиста
Sergey Matveev [Wed, 13 Sep 2023 17:48:36 +0000 (20:48 +0300)]
Смена дистрибутива в день программиста

Один знакомый использовал Gentoo возможно уже более десяти лет. И вот
именно сегодня узнаю новость о том, что он послал её на три буквы и
перешёл на Arch Linux. Если долго не обновляться, то он два дня пытался
разрешать всякие накопившиеся возникающие конфликты и в итоге забросил.
И символично именно в День Программиста он решился это сделать.

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

19 months ago(Не)Мобилизация по зрению
Sergey Matveev [Wed, 13 Sep 2023 17:44:22 +0000 (20:44 +0300)]
(Не)Мобилизация по зрению

https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D1%81%D1%82%D1%80%D0%BE%D1%82%D1%8B_%D0%B7%D1%80%D0%B5%D0%BD%D0%B8%D1%8F
https://lenta.ru/news/2023/09/13/spisok/
Блин, ещё одна причина почему во время мобилизации меня не возьмут. Моё
зрение существенно хуже допустимого минимума. Так то я ограниченно годен
был только потому что сутулый (ну или как там это называется правильно).

19 months agoMidnight Commander в Astra
Sergey Matveev [Wed, 13 Sep 2023 06:09:33 +0000 (09:09 +0300)]
Midnight Commander в Astra

Снова я про Astra Linux, но просто так получилось что возился с ней в
последние дни. Вспомнил что с самого начала меня удивило в ней наличие
из коробки установленного Midnight Commander. С ходу не вспомню
дистрибутивов, где если почти никакие галочки не выбраны по установке
(без X11 того же), то был бы mc. Мелькает мысль о том, что это
показатель того, что это точно в РФ делают дистрибутив, ибо у нас
ортодоксальные файловые менеджеры (7efac46178ded122377f4d32485a3ab02d9574ea)
особенно популярны.

19 months agoТеперь у меня дома 10GbE LAN
Sergey Matveev [Tue, 12 Sep 2023 20:24:43 +0000 (23:24 +0300)]
Теперь у меня дома 10GbE LAN

Наконец-то своё давнее желание исполнил заиметь 10Gbps Ethernet сеть
дома. Пока это только две сетевые карты, и два соединённых сервера. Одна
карта с Intel 82599 чипом и одним SFP+ портом, другая с Mellanox
ConnectX-3 и двумя портами. Не шибко современные, но достаточно дешёвые
(~100$) и драйвера FreeBSD из коробки обе поддерживают.

Думаю что и в NUC вставлю что-то подобное, но возможно уже с 8P8C портом
и 8P8C↔SFP+ модуль во второй порт имеющейся сетевой карты: ибо NUC это
уже устройство которое часто отключается от сети.

Первый запуск iperf3 показал скорость в 1.6Gbps всего. Если отключить
TSO и LRO (что я и так делаю всегда для всех сетевух), то по IPv6,
вместе с ipfw, с --parallel 2 опцией для iperf3 -- стабильно показывает
9.88Gbps что в одну, что в другую сторону по TCP.

Соединял не оптикой, в Twinax DAC кабелем. Дешевле, да и расстояний даже
между комнатами у меня нет. А вот 8P8C (RJ45) принципиально не хочу, ибо
в куче статей видел про задержки чуть ли не сравнимые с 1Gbps Ethernet-ом,
плюс дьявольски сильный нагрев. Для NUC-а уж ладно -- всё же это будет
порт для частого включения/выключения, но в целом это, как мне показалось,
просто несерьёзная 10GbE сеть.

19 months agoЦИК DDoSят, как и меня
Sergey Matveev [Sun, 10 Sep 2023 19:22:16 +0000 (22:22 +0300)]
ЦИК DDoSят, как и меня

https://lenta.ru/news/2023/09/10/ddos/
У нас же выборы, вот и активизировался запад и терроризм. Полдня я был
вне дома. Вернулся -- а и меня всякими UDP пакетами заваливают так, что
я даже ssh на свой сервер не могу сделать. Просто добавил ряд сетей (всё
из Европы) в ipfw deny правила.

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

Ну а у нас губернатор Воробьёв (88f4a2f3787c354b3d5c59ccc4e8702d2b480cf7)
победил, что тоже отлично, с моей точки зрения. Как минимум вижу
изменения в общественном транспорте в целом по подмосковью, да и как
преображаются города типа Щёлково, Королёва, Мытищ, Сергиев-Посада.

Плюс в голосовании участвуют Запорожская и Херсонская области, как и ДНР
с ЛНР, что тоже радует. Хотя и не обошлось без терактов.

19 months agoEnterprise версия FizzBuzz
Sergey Matveev [Sat, 9 Sep 2023 19:45:09 +0000 (22:45 +0300)]
Enterprise версия FizzBuzz

https://habr.com/ru/amp/publications/173885/
https://ru.wikipedia.org/wiki/Fizz_buzz
Эталонно написанная enterprise версия FizzBuzz игры.

19 months agoDPI то есть, замедление трафика
Sergey Matveev [Fri, 8 Sep 2023 07:38:46 +0000 (10:38 +0300)]
DPI то есть, замедление трафика

Работа наша подключена через Ростелеком. До неё выдали OpenVPN (TCP). И
вот по нему уже несколько месяцев но скорости неспешные, типа 50KiB/сек.
Я поднял WireGuard (а это UDP) до дома -- тоже точно такие же (50KiB)
скорости. Тогда как если чего просто параллельно по тому же NNCP слать,
или HTTP/HTTPS, то хоть все 100Mbps можно выжать. Сказали что у нас явно
ничего не урезают по скорости, явно где-то на upstream провайдерах (том
же Ростелеком).

Так что DPI реально имеется и вовсю вполне себе работает уже не первый
месяц. Я то, судя по новостям, считал что полностью вообще обрубают
возможность передачи данных, что у меня было один раз
(55eac8d1c25b49bafcc4ed1ece2f4f7763e0230f), но в одном из комментариев в
552979396ad8de1f3bbeb409f1c2a65f7446806b мне напомнили что, даже в том
же Китае, речь про ограничение скорости до вот таких вот маленьких
значений. Там я написал что наверняка бы смог при этом работать и не
считал бы это прям обрубанием связанности. Так и есть: передать ISO
образ DVD конечно типа не очень вариант, но во всём остальном это не
сильно мешает.

19 months agoКак вести Git ветки
Sergey Matveev [Fri, 8 Sep 2023 06:46:52 +0000 (09:46 +0300)]
Как вести Git ветки

https://nvie.com/posts/a-successful-git-branching-model/
https://nvie.com/files/Git-branching-model.pdf
https://www.gitkraken.com/learn/git/git-flow
Модель git-flow много где популярна (как мне показалось). В ivi она
активно использовалась и там для большинства требовали чтобы они
использовали git-flow инструментарий, явно говоря "хочу начать делать
feature", "надо hotfix", и т.д.. Мне нравится вся эта модель: простая,
незатейливая, дисциплинирует и покрывает множество case-ов. Собственно,
я до сих пор поэтому много где веду "develop" ветку именно с отсылкой на
git-flow.

19 months agoВведение в PCIe для пользователя
Sergey Matveev [Thu, 7 Sep 2023 18:54:49 +0000 (21:54 +0300)]
Введение в PCIe для пользователя

https://www.youtube.com/watch?v=fE0fnGbI8B8
Введение, на чисто пользовательском уровне, в мир PCIe устройств. Почти
на два часа. Я даже удивился: о чём можно столько времени говорить, если
не углубляться в сам протокол PCIe? Ан нет, мужик говорит достаточно
быстро, чётко, ясно, но действительно информации не мало. Много
любопытных фактов о которых не знал прежде.

19 months agoПрочитал пару томов "Механиков"
Sergey Matveev [Wed, 6 Sep 2023 18:44:48 +0000 (21:44 +0300)]
Прочитал пару томов "Механиков"

https://www.litres.ru/serii-knig/mehaniki/
Но дальше наверное уже не буду. Лёгкая, незатейливая приключенческая
фантастика. Хотя от фантастики то только факт попадания в другой мир,
и другая природа. Я бы даже сказал что местами прям наивно просто
многое.

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

Ну да, ненормальный я мужчина, ибо мне насрать на всё это. Десять лет у
нас был Daewoo Matiz с 0.8л двигаталем и эта машина более чем устраивала
и меня и родителей (экономичность, дешёвость починки, массу всего можно
перевозить (на болтах кресла снял и хоть холодильник, хоть электроплиту
суй), неплохая проходимость (сколько раз видели что многие не могут
проехать там где мы), отличный обзор. Некоторые говорили что некоторые
девушки точно сливались узнав на чём я ездил (сейчас я просто почти за
руль не сажусь, ибо нет задач для этого). Оно и к лучшему, конечно же.

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

19 months agoПонял за что Astra можно не любить
Sergey Matveev [Wed, 6 Sep 2023 14:50:10 +0000 (17:50 +0300)]
Понял за что Astra можно не любить

Делаю man getrandom -- говорят что getrandom() появился в glibc 2.5.
man на русском языке, который по умолчанию выставляется.
Делаю LC_ALL=C !! -- и англоязычный man говорит про glibc 2.25, что
соответствует правде. А я ведь, доверившись русскому man, пошёл было
собирать программу с этим getrandom и думал что Astra выпилила что ли
его с какой-то целью.

19 months agoPrime Trust потерял ключ от криптокошелька
Sergey Matveev [Wed, 6 Sep 2023 11:49:08 +0000 (14:49 +0300)]
Prime Trust потерял ключ от криптокошелька

https://www.schneier.com/blog/archives/2023/09/cryptocurrency-startup-loses-encryption-key-for-electronic-wallet.html
Криптовалютный стартап потерял ключи от своего кошелька, >38M$, банкроты.
Шнайер "can’t understand why anyone thinks these technologies are a good idea".

19 months agopassman менеджер паролей
Sergey Matveev [Tue, 5 Sep 2023 19:48:03 +0000 (22:48 +0300)]
passman менеджер паролей

http://www.git.stargrave.org/?p=passman.git;a=summary
Что-то ни разу не писал про свой менеджер паролей тут. Видимо, потому
что он был сделан задолго до создания блога.

Давным давно я хранил пароли в текстовом файле в TSV формате,
зашифрованном GnuPG. gpg -d < passwords.tsv.gpg | grep foo.com

Дальше я перешёл на хранение всего этого в виде иерархии директорий и
текстовых файлов. www.foo.com/stargrave+foo@stargrave.org/passwd файл
содержит пароль, просто одной строчкой. Соответственно я вводил "passman
foo.com" и он найдёт www.foo.com. Если в нём одна запись
(поддиректория), то сразу же в X11 буферы обмена копирует
stargrave+foo@stargrave.org и пароль. Если учётных записей несколько,
скрипт вернёт плохой код возврата и покажет доступные найденные
варианты. А я уже уточню "passman foo.com/stargrave2" каким-нибудь.

В GUI программах вставить из одного буфера обмена просто третьей
кнопкой, а из второго через контекстное меню. В эмуляторах терминалов,
даже в suckless terminal, shift+ins и alt+shift+ins тоже позволяет из
одного и другого буфера вставку произвести. Через десять секунд скрипт
очищает буфер с паролем.

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

Теперь passman хранит всё в одном recfile. И все действия используют
родной инструментарий recutils для поиска и вывода паролей. Ищем пароль
регулярным выражением через recsel. На вход ему подаётся БД всех
паролей, а на выходе тоже будет уже отфильтрованная другая БД. recsel
--count покажет сколько записей найдено, recsel -P Password уже выведет
только пароль из этой БД.

passman gen -- сгенерирует случайный пароль (16 случайных байт в
Base64). passman add name [password] -- добавит новую запись под именем
name (если пароль не задан, то сгенерирует его). Можно её добавить, а
дальше уже вызвать passman name чтобы в буфере получить пароль для
копирования в броузере -- таким образом я его на мониторе вообще ни разу
не увижу. passman mod -- позволяет отредактировать весь recfile в
редакторе, например чтобы добавить Data: поле с произвольными данными,
которые при поиске пароля тоже будут выведены на экран.

И этот файл автоматически шифруется age-ем с использованием парольной
фразы и сжимается zstd. passman mod конечно же натравит редактор на
временный дешифрованный файл, а дальше его зашифрует. Надо сменить
парольную фразу на БД? Просто запустить passman mod и сохранить файл
ничего в нём не изменяя -- age всё равно перешифрует всё в другой
временный файл.

Переконвертировать 238 паролей из иерархии директорий: одной строчкой
zsh-а сделал и к началу только добавил схему этой БД, чисто чтобы была,
для красоты и порядка.

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

19 months agoЁжик в парке
Sergey Matveev [Tue, 5 Sep 2023 18:23:45 +0000 (21:23 +0300)]
Ёжик в парке

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

19 months agoПосмотрел на протокол shadowsocks
Sergey Matveev [Tue, 5 Sep 2023 14:20:53 +0000 (17:20 +0300)]
Посмотрел на протокол shadowsocks

https://www.hindawi.com/journals/scn/2022/4862571/
https://github.com/shadowsocks/shadowsocks-org/wiki/Protocol
https://github.com/Shadowsocks-NET/shadowsocks-specs
https://habr.com/ru/news/758786/
https://habr.com/ru/news/758638/
https://habr.com/ru/news/758556/
Новости и статьи на Хабре завалены тем, что у нас могут быть
заблокированы ресурсы где есть информация по настройке обходов
блокировок. Большинство это приравнивает ко всем VPN технологиям.

Чаще всего упоминают shadowsocks, говоря что он прям основной основной
инструмент для работы в условиях GFW. Ну решил посмотреть что у него за
протокол то. Оказалось, что он просто простой препростой: это тупо
симметричное шифрование, без handshake-ов, где с каждым пакетом
прикладывается соль/IV/рандом. То есть это прям ничего кроме шифрования,
почти сплошной шум.

Ведь совсем недавно я тоже задавался вопросом есть ли решения просто для
шумовой обфускации UDP пакетов и написал свой udpobfs
(552979396ad8de1f3bbeb409f1c2a65f7446806b). То что shadowsocks до боли
простой -- одобряю. Что это не какой-то очередной монстр пытающийся то
так, то сяк в кошки-мышки играть и притворяться то TLS, то DTLS, то SRTP
-- тоже нравится. Да и говорят что в Китае это прекрасно работает --
чего извращаться то с мимикрией под другие протоколы? Возможно просто у
кого какой опыт и, судя по комментариям, там от города к городу, от
провайдера к провайдеру всё по разному в плане DPI и работоспособности.

Но что мне больше всего понравилось: мой udpobfs гораздо меньше overhead
имеет! Не просто так я старался не добавлять лишние байтики. Но у меня
переиспользование PSK очень не хорошо будет -- поэтому предполагается
рядом наличие SSH-like канала через который ключ будет синхронизирован.
В shadowsocks так как "IV" с каждым пакетом отправляется, то не такая
большая проблема.

В оригинальном SS протоколе всё плохо с replay защитой. Сделали SS-2022
версию, где для выработки ключа даже новомодный BLAKE3 применяется и
AEAD шифры (что всё хорошо конечно же). У меня в udpobfs replay защиты
нет, но на уровне моей программы, ибо просто было лень писать. Но в
протоколе есть последовательные номера, поэтому ничто не мешает и её
реализовать.

Ну а главное отличие: SS явно передаёт адреса/id-каналов: то есть там
прям мультиплексирование множества соединений возможно. Я же явно ничего
подобного и не хотел делать, ибо предполагается полноценный VPN под
слоем обфускации, где и PFS, и replay, и защита, и аутентификация и
маршрутизация/мультиплексирование/whatever.

19 months agoКак я делаю релизы
Sergey Matveev [Tue, 5 Sep 2023 07:33:33 +0000 (10:33 +0300)]
Как я делаю релизы

Где-то в блогах увидел как кто-то описывает процесс создания релиза СПО
программы. Есть время -- опишу и свой процесс, хотя он во всяких
скриптах закоммиченных в Git и так имеется, тайн нет. Ну и просто мои
мысли о структуре программы.

* .gitignore не должен содержать исключения касающиеся инструментария
  конкретного разработчика. Если кто-то использует Emacs, то у него не
  появятся vim-specific файлы. Если кто-то использует другую реализацию
  redo, то запросто не будет .redo директорий, и т.д.
* Я стараюсь прописывать в .gitignore как можно более точные/узкие
  правила. Если надо проигнорировать директорию, то явно указываю "/",
  так как это директория. Если только в текущей директории что-то, то
  слэш в начале. Прописываю "/foo.out" в foo/.gitignore и "/bar.out" в
  bar/.gitignore, вместо "/*.out" в .gitignore выше foo и bar директорий

* Любой проект должен содержать README по хорошему, где было бы хотя бы
  краткое описание что это, пускай и пара строчек. У меня не во всех
  репозиториях это есть, но они только про маленькие утилиты, где
  документацией является комментарий в начале скрипта
* Никаких README.md и вообще Markdown
  (da160c3c7b3f5393aa37f2d042f9b281264273de,
  9d989dceed050f0e0e8f5ac63c22cd3771cd2d56,
  b8b7029858e6e5cbea511e66dedfb98c4d7340b3)!

* Лицензия является важной вещью для СПО. Можно быть против copyright,
  против "intellectual property" и подобных вещей, но пока в этом мире
  есть законы стран и по ним ваше творение не может считаться свободным
  ПО, если это явно не отмечено. Я считаю что выбор можно свести либо к
  семейству GPLv3: GPLv3, AGPLv3, LGPLv3, либо public domain. Для новых
  форматов/протоколов GNU сайт также рекомендует обратить внимание на
  permissive лицензии типа Apache License 2.0, однако например OpenBSD
  не считает её допустимой свободной (http://www.openbsd.org/policy.html)
  Те, кто говорят что топят за полную свободу, но при этом используют
  Expat лицензию (которую некорректно называют "MIT"
  (499d8afd7741e9056f0d4c9f969386f49a6a293f)) -- лицемеры, ибо не делают
  public domain (1c19e4cee16c687f33dba569b8b7381527fc3e51). Кто за
  распространение СПО, то GPLv3 более чем отлично продумана и учитывает
  засады типа TiVoization
* В значимых файлах исходного кода стоит, как GPL и гласит, добавлять
  явно информацию о том что файл лицензирован так то. По умолчанию GPLv3
  в своём примере вставки для кода предлагает использовать v3 или более
  позднюю версию. Я не доверяю людям из FSF, только RMS, ибо там шиза у
  них в головах лютейшая и у меня сомнения что они за СПО как RMS,
  поэтому все мои проекты не содержат разрешения (автоматического)
  использования более поздних версий GPL (1afd778850d7ed026677339de509ef3c0c3a5269)
* GNU Coding Standards рекомендуют GNU GPL помещать в COPYING файл, чему
  тоже и следую. И срать я хотел что многие новомодные платформы для
  разработки ПО хотят видеть LICENSE. Не они толкают СПО в мир, они не
  хотят СПО в этом мире, плюс меня бесит американское написание этого
  слова и я написал бы LICENCE

* Go стал обязательно требовать использования системы модулей. И я это
  яро одобряю, ибо они удобны и хороши тем, что жёстко фиксируют
  конкретную версию зависимостей. Может быть даже несколько версий одной
  библиотеки. Вообще нарадоваться не могу этому всему.
* Я убеждён что Make не имеет права на существование, ибо оно просто
  прям вот всем всем хуже и не выполняет задач, не помогает разработчику
  (a79698c8ace58a8c35fa35ba382281a018fea59e). Поэтому никаких
  Makefile-ов! Но и .do файлов я из многих Go проектов поубирал тоже,
  ибо в самом Go собственная система сборки/кэширования и достаточно
  простых скриптов вызывающих go build возможно с передачей нескольких
  флагов
* Я использую свой goredo, как redo реализацию, но .do файлы пишутся
  только с предположением что есть redo-{ifchange,create} команды, если
  это не .do файлы для "внутреннего" использования, не предполагающие
  запуск другим человеком
* Если в Go проекте используется stringer, то я не коммичу
  сгенерированный им файл, ибо репозиторий это для разработки, не
  готовый для использования код, не релиз, не tarball, поэтому и нет
  условия что из него должно всё мочь собираться
* Если программа является демоном, то для неё я или в документации или в
  contrib/ директории описывал как создавать daemontools файл для
  запуска. Никаких systemd-модулей (ведь так же называется?) у меня быть
  не может. Единственно правильным подходом по запуску демонов я считаю
  подход daemontools. Не обязательно буквально его использовать: это
  может быть и runit и s6 какой-нибудь, но принцип у них такой же

* Всякие вспомогательные утилиты для сборки, для разработки я стараюсь
  помещать в utils/. Скрипты/программы без которых в общем и целом можно
  обойтись, но они возможно пригодятся конечному пользователю --
  стараюсь помещать в contrib/. Например это примеры использования той
  или иной программы, скрипты для запуска под daemontools, и т.п..
  Например когда NNCP требовал redo для сборки, то минималистичную
  реализацию redo на POSIX shell я помещал в contrib/do
* Если исполняемый файл подразумевает интерактивный запуск
  пользователем, то я стал стараться опускать расширение файла. Не
  "foo.sh", а а просто "foo". Ведь какая разница на чём он написан? Да и
  имея .py расширение -- не будет понятно Py2 это или Py3. Для
  определения типа файла достаточен вызов file или head
* Если скрипт предполагает source кем-то другим, именно source ("."), а
  не выполнение, то стараюсь добавлять .rc расширение, пускай даже после
  расширения говорящего про тип языка (.tcl.rc, .zsh.rc)
* Абсолютно недопустимо никакого GNU Bash применения или упоминания. Он
  ещё больше не имеет права на существование чем Make
  (http://www.stargrave.org/ZSH-proscons.html). Огромный, монструозный,
  громоздкий, медленный. Имеет смехотворные средства customization, но
  для скриптов это не имеет значения, ok. Не имеет никакой помощи для
  работы хотя бы даже с переменными/файлами содержащими пробелы -- чем
  он тогда лучше POSIX shell? Кроме того, на множестве дистрибутивов он
  не стоит по умолчанию, а значит #!/bin/bash требует подтягивания
  сторонней зависимости, которая для скриптов мало чем лучше будет чем
  POSIX shell
* Почти для всего надо использовать #!/usr/bin/env, а не #!/usr/bin/perl
  какой-нибудь, ибо он может находится (собственно, как и /bin/bash не
  обязан существовать в этом месте) в другом месте
* Не приемлю использование awk (ибо их куча диалектов, а зачем писать на
  узком подмножестве, если можно использовать Perl?). Не забываю про
  разницу между BSD sed и GNU sed, где даже поведение -i аргумента
  отличается. sed использую для относительно простых действий, но вообще
  даже для sed -i частенько применяю perl. В OpenBSD он идёт из коробки.
  Во многих системах он из коробки тоже, хотя в современной FreeBSD это
  отдельный пакет. Но что за система без Perl, который везде одинаково
  работает, ибо нет BSD/GNU/Plan9/whatever диалектов несовместимых между
  собой? Считаю что Perl5 доступен будет всегда, поэтому частенько
  скрипты на нём присутствуют в проектах

* Документацию пишу в Texinfo формате
  (http://www.stargrave.org/InfoRules.html) и считаю Info достаточно
  хорошим форматом для неё. Собственно, Info и является официальным
  форматом документации в GNU, а не какие-нибудь man-страницы. Некоторые
  проекты пишут на подмножестве Texinfo и используют утилиты способные
  их версию сконвертировать в man-страницы (GnuPG и Z shell, насколько
  помню, как минимум). Но я не считаю это оправданным геморроем, ибо
  info команда вполне себе удобна для использования и нет смысла в man
* Частенько использую PlantUML. К сожалению, на их сайте сейчас призывы
  поддерживать терроризм и собирать средства на нацистов, мразей, воров
  и бандитов всяких. Но это не отменяет что прошлые версии их программы
  умеют делать как и растровые, так и Unicode текстовые версии диаграмм.
  Только ради этой программы и держу Java. Отрендеренные изображения не
  коммичу: ведь это же build artifact, как и .o/.a какой-нибудь
* Есть redo правила для сборки как .info, так и .html, как правило.
  Вроде бы во всех случаях я документацию пишу так, чтобы она могла
  выступать как исходник для HTML сайта программы
* Кроме короткого описания что это за программа (аналог README), нужно
  не забывать про информацию со спасибами (thanks), про информацию о
  том, как можно связаться с автором, возможных списков рассылки, как
  стоит отправлять патчи, отчёты об ошибках и и т.п.
* На странице установки/скачивания я стараюсь приводить коротко список
  команд как скачать и собрать программу. wget|fetch, tar xf, go build
  -mod=vendor, и т.д.
* Список tarball-ов оформлен в виде таблицы. Если в проекте ведётся
  старница "новостей", где описаны изменения от релиза к релизу, то
  каждая версия tarball-а является ссылкой на версию страницы NEWS. Не
  забывать указывать дату релиза, его размер
* Когда-то (c3ba3d2f29655d06dffe1ec836c9f0b98daec0c9) я там прописывал
  SHA256 от tarball. Для проектов связанных с ГОСТ криптографией ещё
  добавлял Стрибог-256. А недавно всё это убрал и стал публиковать
  ссылку на Metalink .meta4 XML файл, создаваемый собственной meta4a
  утилитой, которая прописывает кучу видов хэшей, а также URL-ы на
  Yggdrasil (y.что-то-там) версию сайтов и возможно других зеркал.
  Удобно тем, что и GNU Wget это поддерживает и позволяет и автоматом
  проверять целостность и качать с разных мест
* Также раньше я добавлял ссылку на OpenPGP ASCII-armored подпись.
  Недавно (d2890179a8bbb7bc3f2dcd807faa906e6ab78224) стал ещё
  подписывать OpenSSH ключом (c5e9b245012a5a1ac1732b2c94fc89d9e760efe3),
  стал двигаться в сторону *существенно* более простого софта. Теперь в
  таблице tarball-ов есть ссылка на .sig ASCII файлик с подписью
* В репозитории появляется из-за этого файл PUBKEY-PGP.asc с armored
  OpenPGP публичным ключом подписи tarball-ов и Git тэгов проекта. Рядом
  находится PUBKEY-SSH.pub файл с публичным OpenSSH ключом подписи.
  Возможно им я и Git тэги начну подписывать вместо OpenPGP. Этот .pub
  файл содержит ключ в формате пригодном для использования в качестве
  "-f allowed_signers_file". Этот файл также ещё и подписан OpenPGP
  ключом в detached signature файле PUBKEY-SSH.pub.asc. Если у кого-то
  есть доверие к моему основному ключу, то ключ подписи проекта он
  сможет проверить, а им уже проверить подпись под OpenSSH ключом
* .meta4 также содержат и armored версии OpenPGP и OpenSSH подписей tarball-а
* В документации, особенно для установки, часто использую @var{VERSION}
  переменные, которые во время сборки подставляю каким-нибудь
  -D "VERSION `cat ../VERSION`" вызовом. чтобы руками явно ничего не
  прописывать
* В этом году отказался от использования CSS вовсе
  (--set-customization-variable NO_CSS=1). Прежде применял свой
  "фирменный" style.css, со спёртыми цветами из одного из screenshot-ов
  SGI IRIX 4Dwm. Но я всегда хочу видеть границы ячеек в таблицах. Без
  CSS они невидимы. Модифицировал код своего локально установленного
  Texinfo чтобы он добавлял border=1 к таблицам

Собственно, как же сам процесс релиза то выглядит?

* Убеждаюсь в doc/news.texi содержит всю информацию о новом релизе,
  ничего не забыто. В .go файле где зашивается версия программы тоже
  выставлена нужная версия
* Делаю git tag -a -s -u proj-id vX.Y.Z. Если проект содержит отдельные
  ветки master и develop, то перед этим делаю: git checkout master; git
  merge --no-ff develop; git tag ...; git branch -d develop ; git branch
  develop ; git checkout develop
* Далее запускаю ./makedist скрипт. По сути в котором все действия
  автоматизированы. Скрипт рассчитан на запуск на моей системе, поэтому
  там вроде бы точно где-то есть и hard-coded пути. Если это программа
  для работы, то всё всё равно происходит примерно аналогично как и СПО
  версиям. Всё что ниже: делается автоматически
* Клонируется git репозиторий во временную директорию, чтобы никакой
  лишний файл ненароком не мешал
* git checkout vX.Y.Z
* Зависит от проекта, но чаще всего делается redo VERSION, который
  вычисляет версию на основе текущего тэга коммита. Появляется VERSION с
  vX.Y.Z строчкой
* Далее собирается документация. Она всегда использует redo для этого.
  Но перед сборкой я заменяю doc/download.texi файл, содержащий таблицу
  с tarball-ами, на пустышку из нескольких строчек: "tarball вот отсюда
  можно скачать". Запускаю redo/PROJNAME.info
* Делаю отдельный NEWS файл в корне проекта. Создаю временный NEWS.texi
  файл, в который просто копируется содержимое doc/news.texi, без
  @node/@section, которые бы сбили иерархию секций. Отдельным makeinfo
  вызовом собираю ASCII версию NEWS
* Аналогичное повторяю для INSTALL файла и THANKS в корне проекта. Для
  INSTALL файла из-за этого есть ограничения: в нём нельзя сделать
  ссылки на другие страницы документации, так как он собирается без
  ведома остальных файлов
* Исходный код (*.go, go.*) перемещаю в src/
* Выполняю go mod vendor, который создаст vendor/ со всеми необходимыми
  зависимостями для сборки проекта
* Копирует он отнюдь не все файлы что находятся в репозиториях
  зависимостей. Иногда вызываю modvendor утилиту и указываю что ещё надо
  докопировать (типа тестовых векторов например) в vendor/ директорию.
  Чтобы каждая зависимость более-менее была самодостаточна и полноценна
* Выполняю зачистку: удаляю всякие .gitignore find-ом, .travis.yaml,
  тяжёлые *_test.go, возможно что-то касающееся *_windows.go и всё в
  таком духе. Зашиваю я это всё в скрипт makedist заранее. Если я
  обновлял зависимости, то во время релиза, как правило, делаю
  makedist-ом tarball и смотрю что в него попадает, всё ли нормально,
  вменяемого ли размера он получается
* Удаляю свои собственные вспомогательные скрипты и ненужные файлы:
  .redo (redo-cleanup full), makedist, VERSION.do, .git* и т.д.
* Если есть скрипты вызывающие "go build", то sed/perl-ом добавляю в них
  -mod=vendor. Иногда в скриптах есть просто проверка на наличие vendor
  директории и они сами добавляют эту опцию
* Меняю права доступа для всех файлов на 644, для директорий на 755.
  Тем, что нужны права на исполнение: явно добавляю chmod +x. Сам по
  себе то я штатно работаю с umask 077, поэтому у меня права по
  умолчанию для группы и других будут вообще по нулям. Вообще git
  archive например делает 664/775 права, но GNU Coding Standards
  рекомендует 755 для директорий, чему и следую
  (https://www.gnu.org/prep/standards/standards.html#Releases)
* Засовываю всё в архив: tar cf --uid=0 --gid=0 --numeric-owner
  Это делает архив более "детерминированным" при создании. git clone
  тоже выставляет mtime-ы во что-то отталкивающихся от времени коммита
* Я много уделял времени на поиск идеального архиватора/формата
  (d5670fc7a83b5161ebbb4f7b9cdaf34f3edf3a94,
  a3f2621a4986184923161e2e1c65778f61a98086,
  c13068dff5ce5219180a26327a0e0a8bafa20f6f,
  3292f9367343832b03ecc52e17437333d136cab6,
  dd558b2a665788dfa4a15024397060615bd86d98,
  b4b36a45ec721be274a4b6c0f9f243d5672f3a48) и сделал вывод что pax лучше
  всех. Но BSD tar (libarchive-based который) по умолчанию делает как:
  ustar формат если ничего из метаинформации не будет потеряно, pax в
  противном случае. Поэтому я не указываю форсированное использование
  pax (ведь ustar это небольшое его подмножество), и для исходного кода
  на деле получается ustar архив по факту
* Сжимаю Zstandard-ом с -19 силой. Для себя я файлы часто сжимаю с
  --ultra -22 -- максимальной силой, но -22 требует --ultra, а он, в
  свою очередь больше памяти для декомпрессии. Я уверен что для моих
  относительно не больших tarball-ов это вряд ли где будет проблемой, но
  всё же не гоже выходить за пределы рекомендуемого и предъявлять
  повышенные требования к памяти целевой системы. Почему .zst? Да потому
  что невероятно быстрый при декомпрессии, сжимает почти как XZ (сильно
  лучше gzip), давно на него уже переходят во множестве пакетных
  менеджеров. Сжимается один раз -- разжимается часто
* Делаю OpenSSH и OpenPGP подписи:
    ssh-keygen -Y sign -f ~/.ssh/sign/PROJ -n file $tarball
    gpg --armor --detach-sign --sign --local-user PROJ "$tarball"
* Вызываю meta4-create -fn "$tarball" -mtime "$tarball"
    -sig-pgp "$tarball".asc -sig-ssh "$tarball".sig
    http://www.PROJ/download/"$tarball"
    http://y.PROJ/download/"$tarball" < "$tarball" > "$tarball".meta4
* Вывожу сгенерированный кусок Texinfo для вставки в doc/download.texi,
  где есть человекочитаемый размер (в KiB) и пути к сгенерированным файлам
* Переношу это всё в doc/PROJ.html/download/
* mtime .meta4 файла явно выставляется равным tarball-у. Для файлов
  подписей не парюсь с идентичностью mtime, хотя не помешало бы
* Вывожу портянку текста для отправки в письме в рассылку об анонсе
  выхода новой версии PROJ. В письмо подставляются URL-ы и размер
  tarball. Прежде я туда вставлял и хэш
* Далее вывожу команду запуска mutt, в которой указано, что надо
  прикрепить .meta4 файл, а также выставить соответствующую тему. Именно
  благодаря .meta4, я и перестал засовывать хэш в текст письма, ибо оно
  и так всё содержится в Metalink файле
* makedist скрипт на этом завершает своё выполнение
* Добавляю кусок текста о новом tarball для download.texi и собираю
  документацию для сайта. Как правило, это redo doc/www цель.
* Отличается она от просто сборки HTML версии документации тем, что ещё
  вызывает releases.atom.zsh (390632c69d7d0dc7a048befff5b48e1f0b34cf42)
  скрипт для создания releases.atom файла на основе файлов в
  doc/PROJ.html/download. В этот XML файл добавляется URL до нового
  tarball и его .meta4. Время берётся из mtime-а tarball. Затем perl
  скриптом в Install.html файле добавляется <link rel=alternate> ссылка
  до releases.atom. Для файлов/директорий HTML документации выставляется
  644/755 права
* Запускаю ./update скрипт, делающий rsync HTML документации на VPS и
  мой основной сервер
* На серверах запущен godlighty
  (bc087ee7e3be4177e83bc39ae3b1497e336ec5da), который умеет на лету
  парсить .meta4 лежащие рядом и выставлять соответствующие заголовки
  (контрольные суммы, альтернативные URL-ы для скачивания) при попытке
  скачивания tarball-ов
* git push --tags master develop
* Запускаю подготовленный mutt, копирую в него текст из makedist,
  открываю NEWS файл из tarball-а и вставляю в письмо. Когда-то пробовал
  хранить эту информацию в git tag сообщении, но потом забил, ибо
  геморрой, требует аккуратность, не так сложно копировать небольшие
  кусочки текста при не так уж и частых релизах
* Письма подписываются моим основным OpenPGP ключом, в MIME режиме.
  Поэтому подписью покрывается и .meta4 файл со всеми хэшами

Если проект подразумевает использование и чисто через go get/install
(например в нём нет ни contrib, ни чего-либо такого особо интересного
кроме чисто кода), то отдельно ещё иду в директорию с prepro
(f110400deb3082f8a7c551479153143fb2808e25) и добавляю знание о новом
релизе в скрипты подготовки директории с .zip модулями. Запускаю
./update для rsync-а онных на мои сервера.

Если это совсем новый проект, то для него надо и сайт подготовить:

* Через zeasypki (47b11bfd222d9f3f03664035e4fb4ca32cfa75de) создаю X.509
  сертификат для HTTPS версии сайта
* В zdns (d4eadab571bf5e8ea00d19598f129a708a322d15) завожу новый
  поддомен (при этом, если он увидит сертификат для нового домена, то и
  DANE записи автоматом пропишет)
* В godlighty прописываю знание о новом домене и где брать на файловой
  системе статические файлы для него
* собираю его новую версию, вычисляю bsdiff-ом
  (bf0b7e0357b8bf41a874a85ab55f920a0fba7d59) патч, загружаю на сервер
  (это всё одним скриптом делается), запускаю скрипт применяющий
  бинарный патч
* svc -t /var/service/godlighty*
* Для не совсем маленьких и тривиальных проектов завожу отдельные
  OpenPGP и OpenSSH ключи (это происходит уже и в момент создания
  проекта, ведь PUBKEY надо закоммитить и знания прописать в makedist).
  Возможно что OpenPGP перестану заводить уже. Во всех случаях это
  ed25519 ключ -- быстрый, безопасный, компактный, более чем хорошо
  проанализированный
* Для OpenPGP ключей отдельно делаю gpg --edit-key и удаляю ключ
  шифрования, так как всё равно эти ключи только для подписи Git тэгов и
  файлов. Делаю подпись ключа своим основным
* Так как большая часть проектов расположена на
  cypherpunks.ru/stargrave.org доменах, то и идентификатор ключа это
  goredo@cypherpunks.ru какой-нибудь. Поэтому иду в ~w/cypherpunks-www,
  редактирую keys.do, в котором добавляю строчку вида
    mk-wkd-keys goredo@cypherpunks.ru 3A528DDE952C7E93
  mk-wkd-keys команда создаёт файл с armored версией указанного ключа, с
  именем пригодным для использования в WKD системе
* redo all && ./update для пересборки сайта cypherpunks.ru, добавления
  нового ключа в .well-known/openpgpkey, rsync-а на два сервера.
  Аналогично всё и для stargrave.org домена
* Далее иду в файлы настройки Postfix и добавляю знание о новом домене
  и/или новых почтовых адресах, обновляю файлы баз данных, перезапускаю
  Postfix
* А если нужна почтовая рассылка... то иду конфигурировать public-inbox
  (8c5adc4480ecdd5c1e35da40c5f2fddd896ea892) и mlmmj
  (aac872add6b3defe52aef4d70dbb54a6fcddf973). Это всё по документации
  каждый раз вспоминаю. Далее в ~w/lists, добавляю знание о новой
  рассылке в index.texi, redo all && ./update
* Ах, да, ещё добавляю в список ключей на домашней странице знание о
  новом ключе OpenSSH/OpenPGP: cd ~hp ; vi trustanchor.texi. Поменяв
  список ключей, выделяю визуально текст для подписи и делаю
  :'<,'>!gpg --clear-sign -u myself -u myold -- обновляя и clearsign
  подпись. redo all && ./update
* Подготовка git-репозитория публичного: su -l git ; cd ~/pub ; mkdir
  PROJ.git ; cd PROJ.git ; git init --object-format=sha256 --bare ; echo
  description > description ; touch git-daemon-export-ok ; cd
  ~/cypherpunks.ru ; ln -s ../pub/PROJ.git .
  По факту у меня репозитории касающиеся stargrave.org и cypherpunks.ru
  лежат одной кучей в одной директории и только символическими ссылками
  распределяются по этим двум доменам

Забыл ли я чего? Наверняка!

19 months agoО чём было American McGee's Alice
Sergey Matveev [Mon, 4 Sep 2023 21:17:42 +0000 (00:17 +0300)]
О чём было American McGee's Alice

https://www.youtube.com/watch?v=zu4qyAJzsL4
Алису я так и не прочитал. Всякие фильмы были психоделическими о ней. Но
игра, судя по вырезкам из gameplay, просто жуть какая-то страшная. Будь
ребёнком -- не уснул бы уже.

19 months agoВоробьёва нет в почтовом ящике
Sergey Matveev [Mon, 4 Sep 2023 17:38:09 +0000 (20:38 +0300)]
Воробьёва нет в почтовом ящике

Возвращаюсь домой, захожу в подъезд, вижу что почти в каждом почтовом
ящике вложен буклет с какой-то информацией от нашего губернатора (видно
на лицевой стороне о чём он). Выборы же на этой неделе. Почти: это из
множества десятков нет только в трёх. Включая мой. Думаю что некоторые
просто уже успели вернуться и забрать/выбросить. А мне не вложили. Вот
прям мой один ящик в окружении кучи других с торчащим буклетом: пуст.

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

19 months agoУменьшена плата за проезд в маршрутке
Sergey Matveev [Mon, 4 Sep 2023 17:33:28 +0000 (20:33 +0300)]
Уменьшена плата за проезд в маршрутке

Вообще плату всегда вроде бы повышают на проезд, почти каждый код, на
протяжении всей моей жизни. А тут на 15% сделали дешевле и возвращают
сдачу. Как так? Что? Почему? Промелькнула мысль что может быть это наш
губернатор Московской области распорядился, перед самими выборами то?

19 months agoПрицепился картёжник на остановке
Sergey Matveev [Mon, 4 Sep 2023 17:33:12 +0000 (20:33 +0300)]
Прицепился картёжник на остановке

Жду на автобусной остановке маршрутку свою, третий в очереди. Подходит
молодой парень, спрашивает не очень ли я тороплюсь, предлагает просто
так сыграть в козла, 21, и ещё с десяток названий игр на выбор
озвучивает, показывая колоду карт в руке. Говорю, достав наушник, что,
мол нет, не хочу, не интересно. Он настаивает снова, продолжая
перечисление игр, подчёркивая что не на деньги же. "Повторяю -- нет",
вставляю наушник назад. Он не унимается. "Сколько раз вам повторить
нет?". Всё равно не отстаёт. Дальше уже просто молча игнорирую не смотря
на него. Через пять секунд отстал, "какой-то вы не разговорчивый". Пошёл
к кому-то дальше в очереди, девицу похоже уговорил поиграть, слыша его и
её голоса. Что это было? Кто это был? Не слышал, не видел такого прежде.
Очень не понравилось что на троекратное (или даже более) чёткое "нет"
(без наверное или раздумья и неуверенности) привязывается как банный лист.

19 months agoСообщил о БПЛА в Москве
Sergey Matveev [Mon, 4 Sep 2023 17:13:55 +0000 (20:13 +0300)]
Сообщил о БПЛА в Москве

Сегодня видел как небольшой самолёт, ниже многих зданий, с пухлым
передним фюзеляжем (как у кучи всяких БПЛА, судя по фотографиям)
бесшумно пролетал по Москве. Недолго думая сообщил в полицию. Размер,
высота, направление, цвет, шумность, вертолётного или самолётного типа,
и подобное спросили. Судя по новостям, взрывов вроде не было. Или
грохнулся, или сбили, или он разведывательный был, насколько понимаю.

19 months agoНе шибко много я и хожу
Sergey Matveev [Mon, 4 Sep 2023 08:49:09 +0000 (11:49 +0300)]
Не шибко много я и хожу

За последние два месяца я регулярно раз в 2-3 дня выходил погулять. Пару
лет назад даже было немыслимо для меня идти на прогулку просто ради
прогулки, а не для того чтобы в какое-то определённое место попасть.
Сейчас не могу без этого, не сидится дома, хочется размяться.

И в пути я по 3-3.5 часа на ногах. Думал что уже не менее 20-25км при
этом точно делаю, но на днях посмотрел по карте мой последний путь:
всего 15км туда-обратно. Выходит что я двигаюсь около 5км/ч. Я обгоняю
пешком всех людей -- хожу быстро. Насколько знал, ходят они 5км/ч,
поэтому ожидал что у меня ну 7-8 должно быть. Фигня оказалась.

Заходил в глубь Лосиного острова на пару километров. Давно я в нём не
был. Ужасно влажно там и холодно. Через асфальтовую дорогу в город
входишь, буквально 10м, и сразу чуть ли не на десять градусов выше
температура.

19 months agoДоверие к документации Linux у разработчиков OpenBGPD
Sergey Matveev [Sun, 3 Sep 2023 15:03:57 +0000 (18:03 +0300)]
Доверие к документации Linux у разработчиков OpenBGPD

commit 9abfa3f135f62515557c78cc182dcc3a683c125e
Author: Claudio Jeker <claudio@openbsd.org>
Date:   2023-08-30 10:46:34 +0200

    Never ever trust the linux documentation, it is full of lies!

    While RTA_METRICS is everywhere documented as type `int` it is not.
    It seems to be an array of ints but who knows, there is no documentation,
    not even in the header files.

19 months agoДоступ к LUKS разделу GNU/Linux-а... просто зажав Enter
Sergey Matveev [Sat, 2 Sep 2023 10:31:02 +0000 (13:31 +0300)]
Доступ к LUKS разделу GNU/Linux-а... просто зажав Enter

https://www.opennet.ru/opennews/art.shtml?num=59702
Ага, вот так вот просто (почти) зажав Enter, можно не то что обойти ввод
пароля, но и вообще получить доступ к дешифрованному разделу LUKS. Но
для этого надо использовать ключ в TPM. Вот именно из-за подобных
инцидентов я не доверяю никаких криптотокенам/ключам/TPM/etc -- если я
чётко знаю что *я* должен ввести ключевой материал, то это я понимаю,
могу прикидывать риски и доверять так или иначе. А если это чёрный ящик,
где я, будучи не НИИ/НТЦ/ФСБ, не могу ничего проверить или узнать, то не
могу этому доверять. Безусловно никто не отменяет keylogger и прочие
штуки, но уж просто зажав Enter получить доступ к шифрованной информации
(грубо говоря)... это как-то уж совсем ни в какие ворота.

20 months agoЗащита игр от нелегального копирования
Sergey Matveev [Thu, 31 Aug 2023 19:23:49 +0000 (22:23 +0300)]
Защита игр от нелегального копирования

https://www.youtube.com/watch?v=wr7eqHS3rEk
Показана масса способов защиты от копирования игрушек прежде мне не
ведомых. Чего только не придумают!

20 months agoПринципы работы lattice PQC алгоритмов, MLS
Sergey Matveev [Tue, 29 Aug 2023 19:32:12 +0000 (22:32 +0300)]
Принципы работы lattice PQC алгоритмов, MLS

https://www.youtube.com/watch?v=_C5dkUiiQnw
https://www.youtube.com/watch?v=QDdOoYdb748
https://www.youtube.com/watch?v=K026C5YaB3A
https://www.youtube.com/watch?v=FESp2LHd42U
Симпатичная девчонка рассказывает про то, что такое пост-квантовая
криптография и на пальцах принципы работы lattice-based схем, а также
про групповое шифрование в MLS протоколе.

20 months agoАнна
Sergey Matveev [Tue, 29 Aug 2023 09:26:29 +0000 (12:26 +0300)]
Анна

Скинули тут ссылку на рецензию фильма "Анна". Ссылка на dzen.ru, сервисе
Яндекса, поэтому без JavaScript не открыть. Прислали текст, забавно
написанный и в котором нет сомнений что всё так в фильме. Ибо "смотрел"
(проматывая так, что минут за десять управился) "Красный воробей", в
котором такая лютая паршивая дичь, что только голые телеса Лоуренс
удерживали у экрана.

    1985 год. По Москве едет «Джигульи тщетвьорка» (говорит с сильным
    американским акцентом), за рулем сидит американская агентша,
    загримированная под советскую женщину.

    Тут в машине звонит телефон. Если бы у кого-то из настоящих
    владельцев «четвёрки» в 1985 году в машине зазвонил телефон, он бы
    закричал и въехал. Но женщина спокойно берет трубку — сразу видно,
    агент. Трубка большая с витым телефонным проводом — только по такому
    телефону прямо в «четвёрку» может дозвониться куратор из ЦРУ. Он
    говорит, что всё пропало, Петька вылезай, нас предали, гони в
    американское посольство. Женщина такая:
    — Ну ладно, давайте.

    Женщина гонит. Пока она гонит, по всей Москве дяденьки в кожаных
    плащах попарно подходят к нескольким людям сзади и под белы руки
    ведут их понятно куда. В застенки! (говорит с сильным подвальным
    акцентом).

    Женщина-агент останавливается у ворот американского посольства и
    говорит, что она дипломат, пропустите. Её обещают через секунду
    впустить и женщина расслабляется. Она не знает, что за рулем
    «четвёрки» вообще расслабляться нельзя, поэтому через секунду в неё
    насмерть приезжает Гелендваген.

    Вскоре ЦРУшный куратор получает посылку. Он вскрывается коробку и
    отшатывается — в коробке голова агента! Зритель сначала тоже
    отшатывается, но потом наоборот приглядывается — голова аккуратно
    упакована в полиэтиленку, в пенопласт... Очень хорошо упакованная
    голова, прямо приятно за советскую почту! Вокруг куратора стоят еще
    восемь коробок.

    Проходит пять лет.

    Французский коммивояжер приезжает на московский рынок. Он идёт по
    рядам в поисках русскикх красавитсц. Он видит Анну. Анна продает
    русскийе куукли (матрьиошки). Француз говорит Анне, что забирает её
    с собой в Париж, виза-квартира, работа-модель,
    фотоаппарат-щёлк-щёлк, полный пансион. Ля пансион. Де Пари. Анна
    кобенится четыре долгие секунды, но потом говорит:
    — Ну ладно, давайте.

    Она едет в Париж фоткаться и жить жизнью модели — ходить в красивом,
    волооко смотреть и спать с женщиной. Она знакомится с русским
    бизнесменом (говорит с сильным криминальным акцентом), они крутят
    роман, но целомудренно. Через два месяца бизнесмен говорит, что сил
    на целомудренность у него больше нет, что он в конце концов оружием
    торгует, а тут Анна из него веревки вьёт и так нельзя. «Хорошо», —
    говорит Анна и идёт в ванну готовиться к разврату. А бизнесмен не
    идет, он к разврату готов.

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

    Ого! — говорит зритель, который тоже, как русский бизнесмен, был
    более готов к разврату, чем к пистолету.

    И тут нам рассказывают подлинную историю Анны за три года до этого.
    Она трагическая: начало девяностых, Анна живёт в Москве, а её парень
    — актёр Александр Петров. Он ведёт себя как Александр Петров,
    смеется как Александр Петров и кричит как Александр Петров. Мы
    понимаем, как Анне плохо.

    Анна возвращается домой из магазина с двумя авоськами (говорит с
    сильным продуктовым набором, то есть акцентом). Тут подъезжает
    Александр Петров с дружками на машине типа «наглый Мерс» и
    приглашает Анну прокатиться. Анна говорит:
    — Ну ладно, давай.

    Они едут в банкомат.
    — Но у нас же нет банкоматов?! — говорит Анна.
    — Теперь есть! — радуется Петров. — Один!

    Они подъезжают в банкомату, Петров достает из багажника Мерседеса
    какого-то иностранца и начинает вместе с дружками пихать его в
    банкомат, чтобы обменять на деньги. Иностранец полный — он не лезет
    в банкомат.

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

    Дома их поджидает агент КГБ. Он сразу убивает Александра Петрова,
    тем самым сразу и навсегда располагая к себе зрителей. Анна
    облегченно сидит. Все самые тяжелые её вещи — Александр Петров и
    авоськи — лежат на полу. Агент КГБ говорит, что Анна будет шпионкой,
    а он будет её куратором (говорит с сильным половым акцентом). Но
    Анна отвечает «Не-а» и режет себе вены, потому что Александр Петров
    умер, а чего ещё в жизни можно пожелать. Но агент качает головой и
    спрашивает, что бы сказала на это Анина мама, ай-яй-яй! Агенты КГБ —
    отличные психологи. Анна испытывает стыд, затыкает вену пальцем и
    говорит:
    — Ну ладно, давай.

    Агент КГБ знакомит Анну со старой опытной кгбшницей, которая будет
    старшим куратором. Кгбшная старушка не хочет признавать Анну
    агентом, но та отвечает ей Чеховым на Достоевского и старушка берет
    Анну на испытательный срок.
    — Ну ладно, давай, — говорит старушка.

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

    Дальше мы узнаем историю с матрьошками с другой стороны.
    Французского коммивояжера специально заманили на тот рынок. Это
    буквально была операция «Троянская матрьошка» — снаружи московский
    рынок, внутри рынка Анна, внутри Анны КГБ. И все они прокрались
    через коммивояжера в Париж.

    В Париже Анна начинает работать в полную силу, много и часто убивая
    злодеев и забирая их секретные чемоданчики. Складывается даже
    впечатление, что Анна вошла во вкус и просто убивает всех подряд
    мужчин в костюмах с чемоданчиками. И в КГБ такие: «Анна, прекрати,
    ну сколько можно?!», а у самих уже половина застенков завалена
    чемоданчиками.

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

    На очередном задании по отниманию чемоданчиков Анну перехватывает
    тот самый агент ЦРУ, которому в начале фильма прислали шпионское
    поголовье. Он предлагает работать на него, дожидается от Анны: «Ну
    ладно, давай» — и перевербовывает её: в гостиничный номер зашла
    русская шпионка по чемоданчикам, а вышла дабл агент по кейсам
    (говорит с сильным вирджинским акцентом).

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

    Постепенно вскрывается, что весь сыр-бор — в генерале КГБ Уасильеве.
    Вообще-то КГБ и ЦРУ всегда дружили, спокойно охотились за шпионами,
    прослушивали друг друга и возможно даже оставляли друг другу
    забавные записочки на конспиративных квартирах. Но потом во главе
    КГБ встал Уасильев и растоптал все куличики в общей секретной
    песочнице.

    И ЦРУ говорит Анне:
    — Понимаешь, Анна, Уасильев — он... он... в общем, у него есть чемоданчик.

    И Анна прям задрожала сразу вся, забилась — чемоданчик, чемоданчик,
    дайте я его убью. Ну и убила прямо в его кабинете в КГБ, а потом
    ушла огородами, то есть подвалами. В КГБ нет огородов.

    Затем собрала в парижском парке за столиком КГБшного куратора,
    ЦРУшного куратора, поцеловала обоих подряд и говорит, мол, мальчики,
    давайте вы меня отпустите пожить, а сами продолжайте следить друг за
    другом хоть без выходных, микрофоны там, записочки, бинокли, ну всё,
    чем вы обычно занимаетесь. Давайте?

    А мальчики сидят и у каждого за спиной полпарка агентов, и у всех
    пальцы на курках дрожат. И все они целиком тоже дрожат, да так, что
    в парке листья с деревьев осыпаются. Мальчики подумали и говорят:
    — Ну ладно, давай.

    Жаль, что в фильме Анна не рожает детей от обоих кураторов — тогда
    ЦРУ с КГБ были бы не только друзья, но ещё и семья.

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

    Она открывает ноутбук, а там видосик от Анны. Анна говорит, что у
    неё на старушку компромат. Поэтому возьми моё досье, старушка — и
    удоли его! Удоли!

    Старушка думает: «Ну ладно, давай» — и нежно удаляет досье. С
    сильным материнским акцентом.

В США снова что ни фильм про нас, так показывают как зверей, продажных
по любому поводу, всех женщин как конченых шлюх, страну предателей,
трусов и воров. А ведь, если забыть про пропаганду, то по бежавшим из
страны такое мнение и сложится действительно.

20 months agoСтруктурированное логирование в Go
Sergey Matveev [Mon, 28 Aug 2023 14:19:57 +0000 (17:19 +0300)]
Структурированное логирование в Go

https://go.dev/blog/slog
https://pkg.go.dev/log/slog
https://github.com/golang/example/blob/master/slog-handler-guide/README.md
Про slog я давно уже слышал что наконец-то что-то более навороченное чем
родной log добавят в новую версию Go. Но не вчитывался даже в документацию,
поэтому и не обратил внимание на возможность объединять key-value значения
в группы. Мне казалось этого нет, поэтому заменой логирования который
умеет делать RFC 5424 структурированные записи.

Сегодня уже вплотную начал рассматривать slog. Группы есть -- а значит
RFC 5424 задачи может покрыть. С первого раза и первого компилирования
написал slog.Handler который бы сохранял записи в recfile формате. Очень
удобно и просто работать со всем что даёт slog. И разные уровни, и
key-value и просто сообщения, и With/WithAttrs, и WithGroup -- всё
тривиально но удобно. Заморочены на производительности -- приятно. И
явно типизированные данные в качестве value можно логировать, что
здорово. В двух проектах мою самопальную систему структурированного
логирования можно полностью заменять на slog.

Я не поклонник RFC 5424 сейчас, но его внедрял и в ivi и на следующей
работе. Сам формат сейчас перестал нравится тем, что многострочные
данные уже не засунуть, типа traceback-ов, если только не изобретать
дополнительный формат или экранирование. Мне нравится идея записей из
recfile-ов, где и многострочные можно засовывать и читается это легко
человеку и даже готовые утилиты для работы есть.

20 months agoНужна ли математика программисту?
Sergey Matveev [Sun, 27 Aug 2023 05:25:17 +0000 (08:25 +0300)]
Нужна ли математика программисту?

https://beldmit.dreamwidth.org/963985.html
Само собой -- смотря какими задачами занимаешься. Но мне она ни разу не
понадобилась. Более того: я в школе то её еле еле на тройку натянуто
сдал. Непойми как в институте умудрился чуть выше двойки сдать.
Программист я посредственный, возможно из-за отсутствия знаний и умений
математических -- ну да и ладно, работы всё равно хватает и без неё.
Понравилось как автор написал:

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

20 months agoСтатическая линковка с pthread
Sergey Matveev [Sat, 26 Aug 2023 12:11:00 +0000 (15:11 +0300)]
Статическая линковка с pthread

https://stackoverflow.com/questions/35116327/when-g-static-link-pthread-cause-segmentation-fault-why
Под FreeBSD добавление -static для одной моей программы было достаточно,
чтобы статически слинковать и оно работало. Под GNU/Linux -- хрен мне,
конечно же. Линкует, запускает, но при попытке взять lock в pthread-е
выдаёт ошибку. "-Wl,--whole-archive -lpthread -Wl,--no-whole-archive"
помог, но сам бы я до этого не допёр.

20 months agoПроизводительность SHA256 с SHA инструкциями, BLAKE3 с AVX512
Sergey Matveev [Sat, 26 Aug 2023 08:58:23 +0000 (11:58 +0300)]
Производительность SHA256 с SHA инструкциями, BLAKE3 с AVX512

В новом Xeon (9412c8cdb0c01875e9bfca8d3efde9695e4d9211) появились SHA
инструкции, но только которые SHA1 и SHA256 поддерживают. Проверяю
скорость: pv < /dev/zero | cmd

     NUC, cmd=sha256: 152 MiB/sec
    Xeon, cmd=sha256: 226 MiB/sec

     NUC, cmd=openssl sha256: 276 MiB/sec
    Xeon, cmd=openssl sha256: 933 MiB/sec

b3sum (который на Си, github.com/BLAKE3-team/BLAKE3) поддерживает AVX512:

     NUC: 1.68 GiB/sec
    Xeon: 3.43 GiB/sec

но это всё только одно ядро грузит. Go-шная реализация
(lukechampine.com/blake3) выдаёт такие же скорости.

Ради интереса остальные хэши на Xeon, никаких открытий:

    b2sum: 506 MiB/s
    openssl sha512: 493 MiB/sec
    skein512: 463 MiB/sec
    b2sum -a blake2s: 412 MiB/sec
    skein256: 367 MiB/sec
    goshake128: 348 MiB/sec
    sha512: 345 MiB/sec
    goshake128: 284 MiB/sec
    nettle-hash --algorithm=streebog*: ~82 MiB/sec

То бишь, SHA256 самый медленный (ну не считая Стрибога, в котором никто
не заморачивается оптимизациями (они есть в проприетарных решениях или
железе)), но с SHA-инструкциями самый быстрый, кроме BLAKE3.

20 months agoПоддерживаемые команды CPU
Sergey Matveev [Sat, 26 Aug 2023 08:42:56 +0000 (11:42 +0300)]
Поддерживаемые команды CPU

В 93a94460359f21b284080d1a1b4be8dcea26c4bd упоминал cpuc утилиту,
которая красиво выводит список расширенных инструкций процессора. А то
прежде я знал только способ в виде чтения dmesg-а, рассказывающий про
процессор.

В новом Xeon (9412c8cdb0c01875e9bfca8d3efde9695e4d9211) у меня дома
появились AVX512 инструкции, а также SHA. Пошёл в код Go смотреть
поддерживает ли он их и как определяет наличие. Увидел
golang.org/x/sys/cpu модуль, через который можно получить почти такой же
список расширений как и cpuc выдаёт:

    import "golang.org/x/sys/cpu"
    data, _ := json.MarshalIndent(cpu.X86, "", "  ")
    fmt.Println(string(data))

Затем вспомнил, что ведь lukechampine.com/blake3 Go-шный пакет тащит за
собой github.com/klauspost/cpuid/v2, который наверняка занимается
узнаванием поддерживаемых команд. И в blake3 вроде AVX512 поддержка
есть. Действительно, cpuid отдельную утилиту предоставляет, которая и
частоты и размеры кэшей покажет -- побольше информации чем cpuid и лично
мне приятнее с Go иметь дело:
    go install github.com/klauspost/cpuid/v2/cmd/cpuid@latest