]> Sergey Matveev's repositories - stargrave-blog.git/log
stargrave-blog.git
2 months agoInk console
Sergey Matveev [Thu, 20 Feb 2025 17:54:39 +0000 (20:54 +0300)]
Ink console

https://blog.zarfhome.com/2025/02/the-ink-console
https://inkconsole.com/
Наконец-то портативная консоль не для всяких этих ваших стрелялок и
бродилок, а для interactive fiction игрушек! Но если серьёзно, то без
клавиатуры... и без софта или ручки под рукой для рисования карт...
не уверен что будет хорошим user experience-ом. Впрочем, я тот ещё игрок :-)

2 months agozstd --patch-from
Sergey Matveev [Thu, 20 Feb 2025 10:48:44 +0000 (13:48 +0300)]
zstd --patch-from

https://www.linux.org.ru/news/opensource/17890558
https://github.com/facebook/zstd/releases/tag/v1.5.7
Только что вышел новый zstd. Узнал о существовании --patch-from штуки,
которая и прежде был (но кто ж читает документацию!?). Попробовал --
действительно, делает прям патч, который можно применить относительно
уже существующих данных.

Я применяю bsdiff для обновления (bf0b7e0357b8bf41a874a85ab55f920a0fba7d59)
своих web-серверов, ведь у них нет явного конфига и любые изменения это
пересборка самого демона, который весит несколько мегабайт. Тогда как
bsdiff патчи занимают десятки килобайт (если не прыжок с мажорной Go
версии на мажорную произошёл). zstd делает патчи в разы большего
размера, но это всё равно сильно лучше чем передавать полностью все эти
бинарники. Думаю, что буду zstd использовать теперь для этих целей,
просто чтобы иметь меньший зоопарк инструментов. Впрочем, под FreeBSD
bsdiff идёт из коробки.

Попробовал и новую --max опцию. Памяти она жрёт уйму: для двух потоков
более 30GiB. Поэтому я не могу утилизировать все свои ядра на компьютере
(мало памяти). Ну и медленно оно конечно работает. Для больших файлов
вряд ли вариант -- уж очень долго.

2 months agoRust в Linux всё же будет
Sergey Matveev [Thu, 20 Feb 2025 07:53:15 +0000 (10:53 +0300)]
Rust в Linux всё же будет

https://www.opennet.ru/opennews/art.shtml?num=62748
https://www.opennet.ru/opennews/art.shtml?num=62756
https://lore.kernel.org/all/2025021954-flaccid-pucker-f7d9@gregkh/
https://lore.kernel.org/lkml/Z7SwcnUzjZYfuJ4-@infradead.org/T/
Не то чтобы я сильно переживал и интересовался происходящему в Linux,
но, к сожалению, он, как Windows, окружает повсюду. И двое главных
решили что Rust однозначно будет в ядре.

Для меня Linux уже давно мёртв и не рассматривается, но теперь это ещё
одна причина не думать о нём. К Rust-у у меня резко негативное отношение.

Одна из причин: его авторы/разработчики плевать хотели на то, чтобы мы
могли его собрать из исходных кодов. Мол, бери бинарники которые мы дали
и не вякай. Возможно что-то за годы поменялось, но сторонний mrustc
проект на FreeBSD у меня не вышло собрать. Поэтому это по сути закрытое
ПО, ну или как минимум доступное только на GNU/Linux, под которым у меня
на работе всё же вышло собрать на Devuan большим количеством шагов,
которые не факт что удастся повторить, ибо то одни, то другие патчи на
сам Rust требовались, то одни, то другие пакеты из его Cargo. Судя по
всему, современные программисты на Rust это всякая молодёжь, которая
вообще не понимает как так может быть, что при сборке/установке софта
может не быть Интернета и что такого в том, чтобы использовать бинари?
a109e79ace807e6d0caa8c682f9d507725a51356

Плюс он жутко сложный. А я убеждён, что одна из главным проблем в ИТ это
(безосновательная) сложность. Да, это наверное говорит о моей
некомпетентности и не высоком профессиональном уровне, но я за неделю не
смог зашифровать AES-ом файлик. Это когда я всё же решил углубиться в
этот язык для понимания что это такое и может быть он не так уж плох.
Взяв его документацию и под Devuan собранную версию (по NFS-у из FreeBSD
правил код, а по ssh-у запускал компилирование под GNU/Linux в виртуалке)
я так и не смог осилить: открытие файла, чтение в память, инициализация
AES с ключом, шифрование, запись в другой файл. Надо быть очень умным
для его использования. Может быть люди тем самым и любят этот язык? Он
сам по себе отсеивает некомпетентных и у них не будет шанса написать
какое-нибудь говно забагованное? В этом случае у нас действительно
тотальная нехватка квалифицированных специалистов. Но даже знакомые
коллеги, кто на Rust ради интереса реализовывали ASN.1 с CMS-ом, после
этого ничего на нём и не писали и не стремятся где-либо ещё попробовать
его применить.

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

2 months agoCAP теорема на собеседовании
Sergey Matveev [Thu, 20 Feb 2025 07:16:23 +0000 (10:16 +0300)]
CAP теорема на собеседовании

https://habr.com/ru/companies/ru_mts/articles/882656/
https://en.wikipedia.org/wiki/CAP_theorem
Очередная статья про ИТ собеседования, плохие вопросы и всё такое
прочее. Как в ней и сказано -- 1001-ая, тьма их.

Но в ней на картинке есть какой-то пример с: "как реализовать новостную
ленту со строгой консистентностью, высокой доступностью и гео
резервом?". И я вот не понял: типа высмеивают этот вопрос, мол типа он
сложный что ли? Я почти такой же вопрос задаю на собеседованиях: "какая
их современных существующих СУБД могут обеспечить и консистентность и
доступность и устойчивость к обрыву связи между ДЦ?". Уж извините, но
это простой вопрос и на него простейший ответ: никакая. Как сделать
ленту новостей заявленную? Никак! Ну если не вдаваться в особые режимы
работы типа переключения в read-only режим и всё такое прочее. В ivi
поэтому для разных задач (например работа с финансами/балансом
пользователя и показом ему истории просмотра) разные подходы и БД
использовались.

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

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

Недавно на собеседовании хотя бы один человек смог правильно ответить на
мой вечный вопрос "по какому протоколу работает Интернет?". Другой же
ответил "HTTP". Эх, ну вот почему так удручающе мало людей хоть как-то
интересуются сетями и совершенно не понимают что происходит когда они
ежедневно путешествуют по Паутине?

Возможно это нам HR/рынок/HH/хз подкидывают такие варианты стажёров, а
другие разбегаются по иным компаниям, крупным наверняка, но в моё время,
что я, что все мои знакомые ИТшники студенты, даже начав работать со
второго курса, но каждый день приезжали на работу, пускай и не на полный
рабочий день. А сейчас складывается впечатление, что у молодёжи сама
мысль о каждодневной работе просто невозможна. На последних курсах так у
нас наверное половина одногруппников и моих знакомых из других
институтов уже даже продвигались по служебной лестнице, были вполне себе
ценными кадрами. Но это и старшее поколение мне подтверждает: молодёжь
сейчас не хочет работать, не понимает как можно вкалывать хотя бы по 8ч
в день, нормально и полноценно. Я считаю, что слишком много у нас
сюсюкаются с молодёжью (говорю только про ИТ сферу).

2 months agoВывожу age из использования
Sergey Matveev [Tue, 18 Feb 2025 08:20:39 +0000 (11:20 +0300)]
Вывожу age из использования

В 4eed9f47294d277e84f8ba1451b1b4ced04a09de упоминал, что начал делать
аналог CMS EnvelopedData контейнера. Всё уже настолько устаканилось, что
бОльшую часть всего перешифровал в cm/encrypted контейнеры.

Изначально у меня вовсю использовались слова типа "pki" и сертификаты.
Выпилил любое упоминание PKI, решив назвать все эти криптографические
форматы "cm"-ом -- cryptographic messages. И коротко и не пересекается с
чем-то другим распространённым. Сертификаты заменил просто на публичные
ключи. У которых, как и в случае с PGP, могут быть подписи, не без этого.

ChaPoly шифрование распараллелил, аналогично как делал в реализации на
основе деревьев Меркла (f77b37849893c17724125acc62916d01521e363d). Всё
равно до сих пор не понимаю где затык, но утилизировать все ядра не
выходит -- 2.5+GiB/sec потолок, хотя он достигается на 3-4 потоках
шифрования уже, половина ядер остаются у меня не использованными.

Чтобы рандомизировать шифрование, на всякий пожарный, решил nonce для
ChaPoly делать не просто счётчиком, но подмешивать в него неизвестное
злоумышленнику значение, как это делается в TLS 1.3.

Причесал работу с HKDF-ом, ибо где-то его Extract шаг не нужен, где-то
нужен. В целом зоопарк стал более упрощённым. ChaPoly для DEM-а не
отличается теперь от ChaPoly применяемом в KEM-ах (для key wrapping).

Доработал утилиты cmkeytool, cmenctool, cmsigtool, cmhshtool для более
удобной интерактивной работы с человеком. Собственно, их и применяю уже
для своих нужд, радуясь огромной скорости работы без бутылочного
горлышка в виде одного ядра.

Обнаружил, что вообще нет ни BLAKE3 реализаций на Си, ни BLAKE2
распараллеленных. Ни ChaPoly распараллеленного не смог найти (возможно
оно только в составе более сложного софта). Такое впечатление, что
распараллеливание толком никому не нужно и все удовлетворяются
скоростями на одном ядре. Но ChaPoly у меня даже до GiB/sec не
дотягивает. Аппаратно ускоренный AES-OCB в GnuPG вроде тоже что-то около
GiB/sec был, как и BLAKE2b. Это конечно относительно не мало, но всё же
SSD диски во много раз быстрее, как и суммарная производительность всех
ядер процессора. Понимаю что parallel код сложнее устроен, но он же
стоит того. А вот нифига свободных и открытых реализаций не видно, кроме
как на Rust попадаются.

Добавил возможность шифровать приватные ключи тем же самым cm/encrypted
контейнером но с применением KEM-а на основе парольной фразы. И
прозрачно использовать такие ключи при дешифровании. Типа весь основной
функционал age повторил удобный.

А ещё в KEKS появился новый тип данных: MAGIC. 16-байтная строчка
начинающаяся с "KEKS". "K" является тэгом, не используемый прежде
codepoint. 12 байт произвольных данных можно засунуть в неё.
Предполагается, что MAGIC будет просто добавляться в начало файла, чтобы
хоть как-то намекать на используемый в нём тип данных. Ведь ни в ASN.1,
ни в JSON невозможно это легко и просто понять. В ASN.1 любят делать
контейнеры типа {"type": "SignedData", "data": ...}, но с этим не очень
удобно работать если хочется делать аналог json.Unmarshal -- оно всё
загрузит в память. А MAGIC можно потоково декодировать просто как один
единственный KEKS-атом, а дальше продолжить чтение из io.Reader.

И для удобства использования и в cm/signed и в cm/encrypted применяется
BLOB вне основной структуры. В случае с cm/signed:
    MAGIC(cm/signed) || cm-signed-prehash || BLOB(detached-data) || cm-signed
и подписывается:
    [detached-data] || /load || sig-tbs
всё это позволяет не делать потоковое декодирование данных, а частями
засовывать в io.Reader/hash.Hash и подобные. KEKS позволяет потоково
работать, как и сама Go реализация, но это не так удобно и просто как
сделать .Unmarshal. В случае с cm/encrypted:
    MAGIC(cm/encrypted) || cm-encrypted || BLOB(encrypted-data)

Для себя применяю (d0120e47839413c5e3a04c9c6e31bab5f3996de9) Classic
McEliece в качестве KEM-а (не считая Balloon-BLAKE2b для шифрования по
парольной фразе).

А ещё обнаружил, что в http://libpqcrypto.org/command.html софте от DJB
вовсю используются не только stdout файловые дескрипторы. В моём
cmenctool я один из таких дополнительных "файлов" использовал для вывода
bind значения (сейчас его не стало). А в libpqcrypto они вообще
используются вовсю для передачи и приватных и публичных ключей. Чем
дальше, тем больше у меня появляется схожих идей и ещё больше одобрения
того как делается DJB софт.

2 months agoПрочитал Real World Cryptography
Sergey Matveev [Mon, 17 Feb 2025 10:01:10 +0000 (13:01 +0300)]
Прочитал Real World Cryptography

https://www.manning.com/books/real-world-cryptography
Хорошая книжка по прикладной криптографии. Самое главное: она хотя бы
упоминает и показывает как в действительности криптография применяется,
без всех этих "RSA зашифровали сессионный ключ" которым полны другие
книги и люди совершенно теряются и не понимают где же "асимметричное
шифрование" в TLS/IPsec/SSH/Signal/whatever протоколах то?

2 months agoПосмотрел "Сквозь снег"
Sergey Matveev [Mon, 17 Feb 2025 07:54:50 +0000 (10:54 +0300)]
Посмотрел "Сквозь снег"

https://ru.wikipedia.org/wiki/Сквозь_снег
В целом понравился фильм. Люблю когда постоянно совершенно новые "миры"
открываются по мере развития приключений главных героев. Каждый новый
вагон это непохожий на другие мир.

Вот только концовка, где выживают китаец и негр... неприятный осадок
оставляет.

2 months agoСходил на оперу Вагнера "Тристан и Изольда"
Sergey Matveev [Mon, 17 Feb 2025 06:25:09 +0000 (09:25 +0300)]
Сходил на оперу Вагнера "Тристан и Изольда"

https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%BD_%D0%B8_%D0%98%D0%B7%D0%BE%D0%BB%D1%8C%D0%B4%D0%B0_(%D0%BE%D0%BF%D0%B5%D1%80%D0%B0)
С учётом того, что перед самой оперой ещё была небольшая лекция
рассказывающая об истории создания и о самом Вагнере, то в опере
провёл почти шесть часов. Очень всё понравилось. Вагнер -- мощь!
Почти никакого действия, минималистичные декорации и костюмы, лишь
постоянно играющая насыщенная музыка и отличное пение. Папа не стал
поклонником опер, поэтому ходил только с мамой. Но, не смотря на часы
проведённые в зале, ни капли не устали, не чувствовали измотанности.
Так как в напряжении постоянно держит, никакой скуки.

По сути мы прослушали все доступные Вагнеровские оперы в Москве.

2 months agoOBS Studio грозит иском к Fedora из-за пакета
Sergey Matveev [Fri, 14 Feb 2025 08:47:56 +0000 (11:47 +0300)]
OBS Studio грозит иском к Fedora из-за пакета

https://www.opennet.ru/opennews/art.shtml?num=62718
Когда я увидел как пакетируют мой NNCP в Debian, то, мягко говоря, тоже
офигел. Я поставляю tarball со всеми зависимостями -- нужен только Go
соответствующей версии, больше ничего. Но там форсированно убирают все
предоставленные зависимости, используют +- (!) схожие версии из пакетов
и в итоге всё собирается с отличающимися версиями библиотек. И типа в
Debian так принято и всё тут. Недовольство OBS я могу понять.

2 months agoНесколько проектов перевёл на Go 1.24
Sergey Matveev [Wed, 12 Feb 2025 17:39:56 +0000 (20:39 +0300)]
Несколько проектов перевёл на Go 1.24

https://go.dev/blog/go1.24
Он вышел только сегодня, но я как-раз возился с кодом, где есть и HKDF и
PBKDF2 и SHA3/SHAKE, которые теперь перекочевали из golang,org/x/crypto
в родную библиотеку. Плюс не draft версия ML-KEM для TLS появилась. А
обновлённые go vet анализаторы активно начинают приучать использовать
родные итераторы Go (про которые только читал, но не пробовал ради
обратной совместимости) и generic-based библиотеки типа slices.

Пока портировал свои правки для поддержки ГОСТ в TLS 1.3,
то много видел упоминаний о FIPS 140-3, что нервирует.
Оно нигде не мешает, но глаз мозолит.

2 months agoНашёл проблему с Ethernet кабелями
Sergey Matveev [Wed, 12 Feb 2025 17:26:07 +0000 (20:26 +0300)]
Нашёл проблему с Ethernet кабелями

А то была (8bf72b323ea37b56beda8d15bf3f5008609dffa7) аномалия с разными
кабелями. Всё оказалось проще: это был вышедший из строя SFP модуль.
Недавно он вообще перестал поднимать link. Поменял SFP-ку и всё вновь
заработало, с любыми кабелями. Причём полностью исчезли ошибки передачи
(ну, как минимум, счётчики). То ли SFP другой компании не отдаёт эту
информацию, то ли это действительно был показатель изначально корявого
прошлого SFP. Но задержки (e542298de3baade166b3abf55636933620ff667d)
лучше не стали.

2 months agoПрочитал "Кладбище домашних животных"
Sergey Matveev [Tue, 11 Feb 2025 19:04:27 +0000 (22:04 +0300)]
Прочитал "Кладбище домашних животных"

https://ru.wikipedia.org/wiki/Кладбище_домашних_животных_(роман)
Не один десяток рассказов Стивена Кинга я "прочитал" в сборниках
аудиокниг. Решил тут что-нибудь большее по размеру прочесть из его
творчества. Взял вот эту книгу, которую он считает самой страшной.

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

В статье Wikipedia есть фраза:
    Написанное напоминает страшилку в лавкрафтовском стиле.
Может это тоже одна из причин почему так понравилось?

2 months agoДобавил Classic McEliece KEM
Sergey Matveev [Tue, 11 Feb 2025 18:53:46 +0000 (21:53 +0300)]
Добавил Classic McEliece KEM

https://classic.mceliece.org/
К уже существующему черновому (4eed9f47294d277e84f8ba1451b1b4ced04a09de)
формату зашифрованных данных, где реализован SNTRUP4591761+Curve25519 в
качестве KEM (не считая шифрования по парольной фразе), добавил KEM с
Classic McEliece. Больного много про него в рассылках упоминают,
постоянно добавляя про консервативность алгоритма.

Почитал про него побольше и тоже он очень понравился. Алгоритм
существует типа более 40 лет уже, и никаких атак серьёзных. Он прошёл и
в финал NIST PQC конкурса и одобрен для применения как альтернатива
Kyber/ML-KEM. То есть, даже де-юре, в отличии от SNTRUP, годен к
использованию. Описание алгоритма не то чтобы мне сильно понятно, но
выглядит убедительно квантовоустойчиво и просто. Увидел, что и сам DJB
не раз презентовал этот алгоритм и рассказывал про него -- одобряет.

Его приватный ключ: ~14KiB. Публичный: 1MiB. Зато шифротекст менее 200
байт. Из-за такого публичного ключа его проблематично использовать как
аналог DH, но зато отлично пригодно для CMS/PGP-like задач где есть
долгоживущий публичный ключ. Как и для формата зашифрованных данных на
основе KEKS! Где-то видел, что Classic McEliece используют для
долговременных ключей, а параллельно SNTRUP для эфемерных, ради PFS.

Понравилось, что внутри себя он использует SHAKE256 хэш. Поэтому и HKDF
для него тоже на его основе, не BLAKE2b.

2 months agoВозможность убийства зная настоящее имя
Sergey Matveev [Tue, 11 Feb 2025 06:44:06 +0000 (09:44 +0300)]
Возможность убийства зная настоящее имя

https://www.tuhs.org/cgi-bin/utree.pl?file=V4/man/man1/ps.1
В man ps в некоторых версиях UNIX есть фраза:

    v5 ps manual (v5man.pdf page 94)

    The process unique number (as in certain cults it is possible to
    kill a process if you know its true name).

    v7  usr/man/man1/ps.1

    .TP
    PID
    The process ID of the process; as in certain cults it is possible to
    kill a process if you know its true name.

Хотя у меня, первым делом, возникает воспоминание как одна девушка
уговорила посмотреть "Тетрадь смерти", чтобы обязательно на японском
(с субтитрами). По началу всё довольно интересно было, но потом тааак
всё высасывают из пальца, что даже при 4x промотке не смог досмотреть
всё до конца. И так и не понял зачем слышать мне оригинальную японскую
речь.

2 months agoТелефонный спам перезванивает с того же номера
Sergey Matveev [Mon, 10 Feb 2025 12:52:19 +0000 (15:52 +0300)]
Телефонный спам перезванивает с того же номера

Когда-то я регулярно (раз в пару лет) менял номера телефонов. Потом я
догадался не отвечать на незнакомые мне номера и номер поэтому уже не
менял наверное самое долгое время. Я условился: если хотя бы два раза
позвонят с одного и того же номера, то подниму трубку.

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

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

2 months agoПосмотрел "Круто сваренные"
Sergey Matveev [Sun, 9 Feb 2025 17:52:14 +0000 (20:52 +0300)]
Посмотрел "Круто сваренные"

https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D1%83%D1%82%D0%BE_%D1%81%D0%B2%D0%B0%D1%80%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5
Отличный боевичок! Говорят, что именно от Джуна Ву, режиссёра этого
фильма, взяты фишки типа стрельбы с двух рук, замедленной съёмки,
постоянных полётов во время мочилова и подобного. Вот умели же круто и
интересно снимать без тонны компьютерной графики! Местами кажется, что
есть отсылки на Матрицу, но всё совсем наоборот.

2 months agoFOSDEM WiFi
Sergey Matveev [Sun, 9 Feb 2025 13:06:49 +0000 (16:06 +0300)]
FOSDEM WiFi

https://vincentdelft.be/post/post_20250208
Судя по статье, у них она исключительно на IPv6. Уважуха!

2 months agoМы уничтожаем софт
Sergey Matveev [Sun, 9 Feb 2025 10:43:21 +0000 (13:43 +0300)]
Мы уничтожаем софт

https://antirez.com/news/145
Быстро закрыл эту статью, ибо всё совершенно очевидное ведь написано,
каждому толковому программисту всё это видно. Но... ведь как-раз таки
преобладающему большинству то как-раз это не ясно. antirez -- очень
опытный и толковый разработчик.

    We are destroying software by no longer taking complexity into
    account when adding features or optimizing some dimension.

Одно из самых первых что предъявляю и оцениваю в софте. Поэтому и
вынужден писать всякие VoRS, KEKS и подобные штуки.

    We are destroying software with complex build systems.

Абсолютно верно! Поэтому и был создан BASS с goredo, ведь это просто
безумие если посмотреть в сторону какого-нибудь CMake или Autotools.

    We are destroying software with an absurd chain of dependencies,
    making everything bloated and fragile.

Это одна из причин почему я больше не хочу прикасаться к Python
экосистеме, а также наслышан про сотни *тысяч* зависимостей у NodeJS
проектов. По моему это просто невозможно использовать.

    We are destroying software telling new programmers: "Don't reinvent
    the wheel!". But, reinventing the wheel is how you learn how things
    work, and is the first step to make new, different wheels.

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

    We are destroying software by no longer caring about backward APIs
    compatibility.

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

    We are destroying software pushing for rewrites of things that work.

Наверное да.

    We are destroying software by jumping on every new language,
    paradigm, and framework.

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

    We are destroying software by always underestimating how hard it is
    to work with existing complex libraries VS creating our stuff.

Ну... могу вспомнить/представить множество примеров с перекосом в одну и
в другую стороны.

    We are destroying software by always thinking that the de-facto
    standard for XYZ is better than what we can do, tailored
    specifically for our use case.

Абсолютно верно!

    We are destroying software claiming that code comments are useless.

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

    We are destroying software mistaking it for a purely engineering
    discipline.

Наверное не понял это предложение.

    We are destroying software by making systems that no longer scale
    down: simple things should be simple to accomplish, in any system.

Верно.

    We are destroying software trying to produce code as fast as
    possible, not as well designed as possible.

Ну бывает нужно и уметь писать *прототип* as fast as possible. Но
проблемой будет если этот прототип будет конечным продуктом, это да.

    We are destroying software, and what will be left will no longer
    give us the joy of hacking.

Аминь!

2 months agoНаписание простой системы сериализации данных
Sergey Matveev [Sun, 9 Feb 2025 07:19:05 +0000 (10:19 +0300)]
Написание простой системы сериализации данных

https://rxi.github.io/a_simple_serialization_system.html
Человек показывает, как можно просто на Си написать и структуры и
массивы и разные типы данных, включая строки. По сути у меня прям всё
точно такое же, даже Си сериализация. Разница только в большем
количестве поддерживаемых данных и более сложном кодировании длины для
экономии места. В очередной раз, понимаю что я был на правильном пути.

Не в первый раз здесь предлагают string interning использовать
технологию, где строчки можно заменить ссылками на уже декодированные. В
Binc (3f218260ad4a9b16f7e56031ab8a32d2b810de28) формате такое же было и
в каком-то из более широкоиспользуемых (flat buffers, cap'n'proto?).
Пока я не готов к подобному, хотя обдумывал, было дело.

2 months agoКризис в продвижении Rust в Linux
Sergey Matveev [Sat, 8 Feb 2025 09:25:32 +0000 (12:25 +0300)]
Кризис в продвижении Rust в Linux

https://www.opennet.ru/opennews/art.shtml?num=62685
https://www.linux.org.ru/news/kernel/17876385
Искренне злорадствую! И тому, что Rust не проникает. И тому, что в
очередной раз у них постоянные тёрки в ядре и люди официально уходят. И
Линус показывает своё лицемерие западное, мол он весь из себя только за
технические решения/дискуссии, но не раз не забывает напоминать о том,
что он фин, последователь своих предков нацистов. Мир Linux это уже
такая гнилая помойка...

2 months agoПассажира поезда оштрафовали на €150
Sergey Matveev [Sat, 8 Feb 2025 09:20:43 +0000 (12:20 +0300)]
Пассажира поезда оштрафовали на €150

https://habr.com/ru/news/880642/
Завидую подобным действиям во Франции! Ибо как же задолбали все эти суки
говорящие по сотовым в общественном транспорте. И ведь реально куча
включает ещё и громкоговоритель. На МЦК есть вагоны тишины, но некоторые
люди идут по поезду, садятся именно в них и начинают или смотреть
сериалы/передачи или трепаться через громкоговоритель. Раздражают
подобные невоспитанные и показушно никого в округе неуважающие похлеще
тех, кто занимает две стороны эскалаторов, или еле плетутся по ним
уткнувшись в свой смартфон. А ещё сколько детей маленьких играет в игры
с громкоговорителями, при этом их мамаши/папаши сидят рядом и им насрать
что слышно на полвагона.

2 months agotime.Kitchen
Sergey Matveev [Fri, 7 Feb 2025 09:27:07 +0000 (12:27 +0300)]
time.Kitchen

Даже в форматах времени в Go есть место юмору:
    go doc time.Kitchen
        Kitchen = "3:04PM"

2 months agoПочему в GNSS нужно четыре спутника
Sergey Matveev [Thu, 6 Feb 2025 19:02:28 +0000 (22:02 +0300)]
Почему в GNSS нужно четыре спутника

https://en.wikipedia.org/wiki/Satellite_navigation
https://en.wikipedia.org/wiki/Hyperbolic_navigation
https://en.wikipedia.org/wiki/Hyperbolic_positioning
https://en.wikipedia.org/wiki/GPS#Hyperboloids
В 99.99% статьях что нахожу на просторах Паутины, пишут про нахождение
местоположения по спутникам (как в GPS например) по замерам времени. Тут
мне всё очевидно: скорость, время, расстояние. Берём три спутника и уже
получаем (триангуляция) местоположение. Тут всё понятно. Но ведь у нас
же нет синхронизированных и точных часов! Как быть? И везде пишут, что
вот как-раз четвёртный спутник типа тут может помочь. Ну я про себя и
полу-додумывал, что, мол, наверное мы за reference можем взять сигнал
хотя бы кого-нибудь, а дальше уже итеративно плясать от него и всё
большую точность предположений времени делать. Уверен что это не так, ну
или, как минимум, нет понимания что я понимаю хотя бы абстрактно.

Более того, в статье про GPS на Wikipedia так и написано что пример с
пересекающимися сферами не верен:

    It is sometimes incorrectly said that the user location is at the
    intersection of three spheres. While simpler to visualize, this is
    the case only if the receiver has a clock synchronized with the
    satellite clocks (i.e., the receiver measures true ranges to the
    satellites rather than range differences).

Точнее верен когда у нас синхронизированы часы, что для меня полностью
понятно. И вот геометрическое объяснение с гиперболами уже мне дало
чувство того, что я точно понимаю почему именно четыре спутника надо.
Плюс, после этого понятно (когда мы поняли своё местоположение и точное
расстояние/задержку от спутника) почему и время можно точно получать
только после выяснения своего местоположения.

Впрочем... качество статей Wikipedia тоже печально известно.

2 months agoBrave всё
Sergey Matveev [Thu, 6 Feb 2025 09:13:27 +0000 (12:13 +0300)]
Brave всё

Менее года назад я начал (e022335c957350b8e124f9668e55bda101ad4edb)
использовать Brave Search вместо DuckDuckGo (совсем обезумевшие своей
политикой и цензурой). И вот сегодня он начал говорить что давай ка
CAPTCHA решай и JS врубай.

И что же остаётся? Пока только рекомендованный в комментариях
мета-поисковик SearX, его публичные instance. Уже заметил что качество
выдачи у них отличается. А больше работающих поисковых систем я вообще
не нашёл. Либо JS, либо 403 "русским смерть", либо на запрос
"шифропанки" ничего не выдаёт, даже хотя бы страничек из Wikipedia.

Вообще я давно уже начал считать, что правильной идеей было иметь
каталог ресурсов (https://en.wikipedia.org/wiki/Web_directory). И я был
уверен, что монополия поисковиков, уничтожившая каталоги, перейдёт на
обязательный запуск их программ на наших компьютерах (JS) и альтернатив
не останется. Почти полностью уже так и произошло.

2 months agoПриключение с link-ом на Cat8 кабеле
Sergey Matveev [Thu, 6 Feb 2025 08:10:02 +0000 (11:10 +0300)]
Приключение с link-ом на Cat8 кабеле

Для меня это звучит как чертовщина какая-то, но на недавно приобретённом
(8b07d4cdd34f2ee48aefb66f7a7921444c841dd4) Cat8 Ethernet кабеле после
перезапуска компьютера не поднимается link. Лампочка на NIC мигает один
раз и всё. ifconfig up/down на обеих сторонах не помогает.

Однако, если вместо Cat8 подключить старый Cat 4(/5?), то link
поднимается. После чего можно перетыкнуть Cat8 кабель и всё тоже
заработает.

2 months agoИнтереснейшая история о том, как человек познакомился с компьютерами
Sergey Matveev [Wed, 5 Feb 2025 08:13:57 +0000 (11:13 +0300)]
Интереснейшая история о том, как человек познакомился с компьютерами

https://nzdr.ru/creation/prograf/vehi
https://nzdr.ru/creation/prograf/vehi/first
https://nzdr.ru/creation/prograf/vehi/second
С массой иллюстраций и фотографий. Я же слишком молодой, чтобы застать
многие из подобных вещей, хотя и знаю чуть ли не про каждый компьютер
вдоволь. Помню, что тоже очень хотел МК-52 микрокалькулятор.

2 months agoЕщё не встречал чтобы USB не отваливался
Sergey Matveev [Tue, 4 Feb 2025 09:27:07 +0000 (12:27 +0300)]
Ещё не встречал чтобы USB не отваливался

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

GNSS приёмник (caebe45a7eadafe4d5f93734b1118514685c8dbd) представляется
системе как umodem устройство, COM-порт типа. Но раз в сутки исчезает с
шины. Благо, usbconfig reset помогает.

2 months agomacOS создаёт битые .zip
Sergey Matveev [Tue, 4 Feb 2025 07:35:02 +0000 (10:35 +0300)]
macOS создаёт битые .zip

https://askubuntu.com/questions/1025742/unzipping-large-file-bad-zipfile-offset-local-header-sig
https://stackoverflow.com/questions/27151176/zip-files-corrupt-over-4-gigabytes-no-warnings-or-errors-did-i-lose-my-data/59518097
https://sourceforge.net/p/sevenzip/bugs/2038/
Ну конечно же, кто как ни Apple будет делать софт, который создаёт
well-known .zip архивы, но не валидные и никем не открываемые.
Причём даже и не большого размера и с десятком файлов внутри.

2 months agoНужная ли PTR запись для исходящего почтового сервера?
Sergey Matveev [Sun, 2 Feb 2025 14:08:39 +0000 (17:08 +0300)]
Нужная ли PTR запись для исходящего почтового сервера?

https://old.reddit.com/r/sysadmin/comments/k93d8r/ptr_record_is_it_required_nowadays/
Узнал тут, что даже без PTR записи некоторые большие почтовые провайдеры
могут принять почту. Для меня это стало большой новостью, ибо уж кто кто,
но "большие" только больше и больше закручивают гайки в почтовой
экосистеме. Но, возможно, приём и без PTR/rDNS записи возможно им больше
полезен будет для статистики спаморассылателей. Серверам же помельче без
этой проверки будет туго, ибо (попыток отправки) спама реально много. Да
и вообще я впервые услышал что кого то, кто поднял свой почтовик, куда
то почта могла ходить без PTR.

На Reddit нашёлся разговор, где тоже упоминают о том, что типа Google и
Microsoft перестали проверять rDNS. Но я не нашёл подтверждений оного.
Возможно оно участвует только в оценке спам/не-спам. В любом случае, это
только несколько провайдеров из тысячи, которые rDNS требуют.
Вероятность того, что сервер без PTR-а окажется легитимным -- крайне
низкая, поэтому отключать эту проверку у себя не буду, ибо от спама помогает.

2 months agoГотовлю Merkle-tree-based хэширование в signed-data
Sergey Matveev [Sun, 2 Feb 2025 10:30:47 +0000 (13:30 +0300)]
Готовлю Merkle-tree-based хэширование в signed-data

Во время написания (4eed9f47294d277e84f8ba1451b1b4ced04a09de)
enveloped-data контейнера на основе KEKS, я задумался о
производительности скорости подписывания данных. chacha20-poly1305 у
меня выдаёт почти ГиБ/сек, а вот скорость подписывания больших данных
зависит от скорости хэша, где BLAKE2b всё равно будет медленнее ChaPoly.
Распараллелить ChaPoly, раз я бью на независимые блоки по 64КиБ, можно
без проблем. А вот хэш уже нет. Но кто ж помешает добавить опциональный
режим хэширования в виде деревьев Меркле? Я такое уже делал в NNCP, но
там это было нужно для возможности "дохэширования" данных, а
распараллеливание я не делал.

Пока все наработки в отдельной ветке, в master ещё не попали, но
2+ГиБ/сек я могу и на SHA2-512 достичь на своём компьютере. Но я не
один день бился над тем, чтобы попытаться утилизировать все процессоры.
Видимо, мне не хватает базовых знаний по структурам/алгоритмам. Задачи я
раздаю через каналы заранее запущенным горутинам считающие хэш.
Результаты собираю из другого канала. Делая чтение из stdin в буфер, а
дальше его запись в io.Pipe+io.ReadFull, у меня не однократное
копирование присутствует. Если размер блока Меркле дерева 128КиБ, то я
легко достигаю 2+ГиБ/сек пропускной способности. Если же 8КиБ, как
изначально хотел, то с трудом поднимаюсь выше 1.1. На данный момент я
дошёл профилированием и оптимизациями до того, что я по сути упираюсь в
производительность каналов Go. А точнее в частые использования mutex.
Пробовал использовать попадающиеся под руку lock-free реализации каналов
пригодных для моей задачи -- 10-20% прироста есть, но не более. Добавил
возможность хэшировать из mmap-нутого файла, избавляясь от чтений из
stdin и записей в hash.Hash -- это тоже дало только ~10%
производительности. Я в итоге не мог утилизировать все ядра процессора
для BLAKE2b. Коллега предложил решение в виде круговых буферов с
lock-free взаимодействием с ним, но это прям сильно неканонично с точки
зрения Go будет, который гласит "Don't communicate by sharing memory;
share memory by communicating".

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

2 months agoHeartbeat сигнал на принтере
Sergey Matveev [Sat, 1 Feb 2025 18:19:38 +0000 (21:19 +0300)]
Heartbeat сигнал на принтере

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

2 months agoКритикуют L4S эксперимент Comcast-а
Sergey Matveev [Sat, 1 Feb 2025 18:10:58 +0000 (21:10 +0300)]
Критикуют L4S эксперимент Comcast-а

https://habr.com/ru/news/877886/
https://lists.bufferbloat.net/pipermail/bloat/2025-February/018191.html
В рассылке bufferbloat очень недовольны фактом попыток использования L4S
AQM-а, который требует модификации всех участников передачи данных.

2 months agoПриобрёл Cat8 Ethernet кабель
Sergey Matveev [Sat, 1 Feb 2025 17:58:47 +0000 (20:58 +0300)]
Приобрёл Cat8 Ethernet кабель

https://ru.genuinemodules.com/c8b-sftp-blk-10m
Пока в магазине брал 10м USB удлинитель для GNSS приёмника, то не смог
устоять и перед коробкой с Cat8 Ethernet-ом. Я даже не знал, что есть
что-то выше Cat7. А у этого плетёная оболочка, вместо пластика
скользкого -- прям приятен на ощупь и совсем не жёсткий, как некоторые
еле гнущиеся Cat7. Соединил им свой компьютер с сервером 10GbE. И нет,
это не повлияло на задержки (e542298de3baade166b3abf55636933620ff667d),
как и на кол-во ошибок. Может стало и получше, но ни в какое сравнение с
twinax-ом, который стоил даже чуть дешевле.

2 months agoOnline документация должна быть offline
Sergey Matveev [Fri, 31 Jan 2025 07:49:44 +0000 (10:49 +0300)]
Online документация должна быть offline

https://rldane.space/online-documentation-should-be-offline.html
Полностью согласен с автором: online документация для программы это
просто недопустимо. Если документация имеется хотя бы Git-репозитории,
то я его клонирую и могу ещё закрыть глаза на отсутствие доки в более
удобных форматах (чем исходники документации). Но когда дока это только
wiki страницы какие-нибудь или размашистый статический сайт, то я почти
наверняка вообще не буду рассматривать возможность использования
программы. 1-2 HTML странички, которые я могу скачать wget-ом ещё тоже
терпимо.

2 months agoТочность NTP в LAN с GNSS-ом без PPS
Sergey Matveev [Thu, 30 Jan 2025 19:11:32 +0000 (22:11 +0300)]
Точность NTP в LAN с GNSS-ом без PPS

Подключил таки GNSS приёмник к основному серверу, оставив NTP для сравнения:

MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
 * GNSS                          0   4   377    21   -226us[ -251us] +/-  142us
^- 194.190.168.1                 1   7   377   597  -1097us[-1036us] +/-   27ms
^- 2001:6d0:ffd4::1              1   8   377   339   -468us[ -371us] +/-   26ms

Смотрю как два других моих компьютера относительно него синхронизируются:

MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* www.stargrave.org             1   6   377    18   +272us[ +320us] +/-  345us

MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* www.stargrave.org             1   6   357    48    +87us[ +138us] +/-  365us

то есть доли мс, вместо нескольких десятков мс. Но в настройках chronyd
пришлось добавить offset 0.04, ибо приёмник по банальному USB1 отдаёт
время отличающееся на 40мс от того что я с NTP получаю.

Рабочий компьютер, подключённый через VPN к домашнему серверу (для того,
чтобы IPv6 трафик шёл через него напрямую), показывает на порядок лучше
показатели чем наш NTP сервер в LAN:

MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
   2a05:fb42:20f:11::1           1   6    17    14   +500us[ +402us] +/- 3232us
   our.lan.ntp                   2   6    17     5  -1021us[-1119us] +/-   19ms

2 months agoПриобрёл GNSS приёмник для использования с сервером времени
Sergey Matveev [Wed, 29 Jan 2025 19:48:59 +0000 (22:48 +0300)]
Приобрёл GNSS приёмник для использования с сервером времени

Простой USB-шный, но поддерживающий и ГЛОНАСС и китайскую с европейской
(не считая GPS) навигацию. Не предоставляет PPS, но и без него,
насколько вижу, стабильность выше. Пока без точных цифр, ибо проверяю на
своём рабочем компьютере, а не центральном сервере с которым все
синхронизируются. gpsd завёлся моментально, chronyd соединился с ним
тоже с ходу.

2 months agoDTrace помогает на работе
Sergey Matveev [Wed, 29 Jan 2025 19:27:00 +0000 (22:27 +0300)]
DTrace помогает на работе

https://www.brendangregg.com/blog/2011-02-11/dtrace-pid-provider-arguments.html
https://www.brendangregg.com/blog/2011-02-14/dtrace-pid-provider-return.html
Есть задача по трассировке всех вызовов функций в Си программе.
DTrace-овский "pid" провайдер добавляет пробы при входе и выходе из
функции, даже которая была static.

    pid$target::mylib*:entry {}
    pid$target::mylib*:return {}

Будет выводить факты вызовов всех функций с префиксом mylib в имени.
И аргументы функций доступны через arg0, arg1, .... Без изменения
программы можно чуть ли не полностью трасировать всё что в ней
происходит. Хотя мне и пришлось добавить свои пробы дополнительные,
которые где-то в середине функций имеются. Можно и Си-шные структуры
тоже разбирать прямо внутри DTrace.

3 months agoРеклама на упаковке шаурмы
Sergey Matveev [Wed, 29 Jan 2025 07:51:02 +0000 (10:51 +0300)]
Реклама на упаковке шаурмы

Как надоели мне роллы и суши... требуют мяса рабочие души!

3 months agoКак палятся нацистские мошенники
Sergey Matveev [Fri, 24 Jan 2025 12:12:34 +0000 (15:12 +0300)]
Как палятся нацистские мошенники

Знакомых пытались развести в IM-е на телефонный разговор с (якобы)
представителями ФСБ, чтобы выяснить не спонсирует ли человек ВСУ.
Был приложен подписанный документ, штампы, подписи, типа всё серьёзно.
Вот только использование "в Украине" моментально выдаёт написавшего, что
он явно не местный. Как в шпионских фильмах сущие мелочи выдают людей.

3 months agoGit trailers
Sergey Matveev [Mon, 20 Jan 2025 18:08:29 +0000 (21:08 +0300)]
Git trailers

https://alchemists.io/articles/git_trailers
Не замечал прежде в Git-е такую штуку как --trailer,
которые ещё можно и парсить git interpret-trailers командой.

3 months agoSession IM: раунд 2
Sergey Matveev [Mon, 20 Jan 2025 09:56:40 +0000 (12:56 +0300)]
Session IM: раунд 2

https://getsession.org/blog/a-response-to-recent-claims-about-sessions-security-architecture
https://soatok.blog/2025/01/20/session-round-2/
Оказывается, Session ответил на ранее (c48fd6b9485a4ea70a8287d1985dfcb9d9219a4c)
опубликованную критику из протокола.

Они не согласны с тем, что используется 128-бит энтропии для
генерирования Ed25519. Почему? Потому что к их 128-бит дополняются ещё
128-бит нулями и это пропускается через SHA512. Я даже не знаю как это
прокомментировать. "Сколько бит энтропии потребляется при выработке
ключа?" -- всё так же 128-бит, от этого никак не отвертеться. Для чего
они используют 128-бит? Чтобы это уместилось в парольную фразу.

Дальнейшая критика критики сводится к тому, что "вы не правильно поняли
наш код". Может быть это намёк на то, что ваш код настолько непонятно
написан?

3 months agoIXP с нуля: peering LAN
Sergey Matveev [Mon, 20 Jan 2025 08:18:12 +0000 (11:18 +0300)]
IXP с нуля: peering LAN

https://blog.apnic.net/2025/01/20/ixp-from-scratch-part-3-the-peering-lan/
https://datatracker.ietf.org/doc/html/rfc7947
https://datatracker.ietf.org/doc/html/rfc7948
https://datatracker.ietf.org/doc/html/rfc5963
Интересное чтиво о том, как настоящие, пусть и не большие, Internet
exchange provider устроены.

3 months agoРазличный экстремальный вокал
Sergey Matveev [Mon, 20 Jan 2025 08:11:23 +0000 (11:11 +0300)]
Различный экстремальный вокал

https://world-playground-deceit.net/blog/2025/01/most-memorable-extreme-music-screaming.html
Большая подборка музыки с запоминающимся (по мнению автора)
экстремальным вокалом. К сожалению я лишь с несколькими группами из
этого списка знаком, но у которых, действительно, вокал выделяется.

3 months agoDJB о скором изобретении на практике работающих квантовых компьютеров
Sergey Matveev [Sat, 18 Jan 2025 19:23:21 +0000 (22:23 +0300)]
DJB о скором изобретении на практике работающих квантовых компьютеров

http://blog.cr.yp.to/20250118-flight.html
DJB рассматривает всякие аргументы против PQC и то, что люди с ним
носятся. Говорит, что, учитывая как упорно финансируются АНБ, нанимающие
передовых специалистов в этих областях, они (атакующие) находятся на годы
впереди остальных, кто придумывает PQC. И типа всякие прорывные штуки
происходят внезапно и за короткое время. Мы можем только надеяться, что
квантовые компьютеры (способные выполнять алгоритм Шора и имеющие
практически достаточное кол-во кубит) не появятся, только верить.

3 months agoКороткоживущие сертификаты Let's Encrypt -- ещё большая централизация
Sergey Matveev [Sat, 18 Jan 2025 19:19:33 +0000 (22:19 +0300)]
Короткоживущие сертификаты Let's Encrypt -- ещё большая централизация

https://dxdt.ru/2025/01/17/14811/
Верно автор заметил, что их новые сертификаты это ещё большая власть и
централизация вообще всего web-а. И ведь юридически красиво сделано:
неугодные (с точки зрения США и прочих террористов) ресурсы можно даже и
не отзывать, а просто перестать обслуживать и выпускать для них новые
сертификаты. Отзыва нет -- ничего не нарушено, а никто не гарантировал
постоянное обслуживание.

3 months agoПосмотрел "Чёрная кошка, белый кот"
Sergey Matveev [Sat, 18 Jan 2025 19:16:17 +0000 (22:16 +0300)]
Посмотрел "Чёрная кошка, белый кот"

https://ru.wikipedia.org/wiki/Чёрная_кошка,_белый_кот
Очень забавная комедия. Очень понравилось как всё снято, какие декорации
и костюмы необычные (для нас) использованы. Кадры, где хрюшка поедает
автомобиль, показанные типа просто так: запоминаются. Да и вообще
животных в фильме много, что тоже приятно.

3 months agoНачинаю делать enveloped-data аналог
Sergey Matveev [Sat, 18 Jan 2025 14:53:48 +0000 (17:53 +0300)]
Начинаю делать enveloped-data аналог

http://www.keks.cypherpunks.su/enveloped_002ddata.html
http://www.keks.cypherpunks.su/signed_002ddata.html
Не смотря на то, что KEKS ещё так себе покрыт тестами, особенно его
"PKI" часть, но приспичило меня всё же продумать формат для шифрования
на его основе.

Аналог подписанных данных (SignedData CMS, PKCS#7) у меня уже имеется.
Аналог X.509 сертификатов тоже. Главным отличием является то, что
сертификаты сами по себе являются signed-data документом. Нет разделения
на совершенно отдельный формат сертификата и совершенно отдельный формат
произвольно подписанных данных.

    0 000 { 2
    1 006   load: { 2
    2 009     t: "cer"
    2 015     v: { 3
    3 019       ku: { 2
    4 023         ca: NIL
    4 028         sig: NIL
                }
    3 034       pub: [ 1
    4 035         0: { 3
    5 038           a: "ed25519-blake2b"
    5 056           v: 32:81A531CAA9342C482901274F5287C8D88918F8C0...
    5 092           id: 94c109bc-d2d5-4a0c-a962-7d7de7a3eadc
                  }
                ]
    3 115       sub: { 2
    4 118         C: "RU"
    4 124         CN: "SubCA"
                }
              }
            }
    1 138   sigs: [ 1
    2 139     0: { 2
    3 144       tbs: { 3
    4 149         cid: 019479ea-fdc9-745f-91f0-ab248fcaef4d
    4 170         exp: [ 2
    5 171           0: TAI64(2025-01-18 14:57:48 TAI, 2025-01-18 14:57:11 UTC)
    5 180           1: TAI64(2026-01-18 14:57:48 TAI, 2026-01-18 14:57:11 UTC)
                  ]
    4 194         sid: e451d616-8a97-41b6-a37b-7bb245f97fc2
                }
    3 217       sign: { 2
    4 220         a: "ed25519-blake2b"
    4 238         v: 64:A0B62600DA9A49BDF051598B09627F14BE995987...
                }
              }
            ]
          }

Это позволяет иметь несколько подписей над TBS-ом сертификата. Например
"выпустить" его как-бы несколькими CA, несколько якорей доверия иметь.
Совершенно нет уверенности что это может пригодиться и вообще здравая
идея, но возможность есть (никто же не мешает именно для сертификатов
сделать ограничение на кол-во подписей?).

Имя сертификата, его subject, это просто map со строчками. Map убирает
автоматом необходимость проверки дубляжа в записях. С ним удобнее
работать. Плюс позволяет всё же чуть более сложные чем ровно-одна-строчка
значения задавать, хоть какая-то простая структура.

Validity аналог вынесен за пределы TBS-а. Всё что CA-specific выносится
в аналог signerInfo подписи конкретной. Поэтому у меня в sigs, в tbs,
exp(iration) поле является тем самым validity. Это также позволяет
обновлять сертификат без смены его TBS-а, без затрагивания тела, в
котором, как минимум, могут идти только ключи и имя. Просто
добавить/обновить подпись от CA.

KeyUsage это ku поле, являющееся map-ом с NIL-значениями, что делает его
фактически set-ом строчек (ключей).

Сертификат может переносить несколько ключей. Но предполагается, что это
только и исключительно для случаев, когда надо их всегда для какой-то
задачи переносить вместе. Например в NNCP всегда вместе идут ключи DH,
ключи подписи, ключи для Noise-а. ku должен при этом содержать "nncp"
какой-нибудь в качестве контекста применения.

У каждого ключа есть идентификатор в виде UUIDv4. Рекомендуется его
генерировать детерминировано из хэша от структуры публичного ключа. Это
как-бы аналог subjectPublicKeyIdentifier.

Никаких серийных номеров. Никакой идентификации сертификата по
issuerAndSerialNumber. Даже в X.509 PKI это почти никогда не
требовалось, раз имелся SKID/AKID. Но всё же сам сертификат как-то надо
идентифицировать, а также иметь возможность переподписать, но чтобы
подпись была другой. Для этого в в подписе есть "cid" поле (certificate
identifier), тоже являющееся UUID-ом и контролируемое CA. Рекомендуется
использоваться UUIDv7 для него. Вот и идентификатор, и возможность его
обновить чтобы подпись поменялась, и ещё и дружелюбный к сортировке.

sid (signer identifier) в подписе является id публичного ключа
подписавшего сертификат. Аналог AKID.

Формат сертификатов у меня давно не менялся и им вроде все мы
удовлетворены. Используются сертификаты с ГОСТ Р 34.10 ключами (я
"стандартизовал" только 256A и 512C варианты, которые на скрученных
кривых Эдвардса).

Но для себя, в качестве proof-of-concept сделал и Ed25519-BLAKE2b
вариант. Обнаруживал (1be5aab3dae457709202ac4f0288b7953fe2fa93), что
правила валидации Ed25519 разнятся. Я просто сослался на zCach-овский
ZIP-0215. Долго не мог решиться: всё же использовать EdDSA/Ed25519 как
он описан в RFC всяких или же выпилить SHA2 из него и использовать
что-то более минималистичное и быстрое. SHA3, SHAKE? Skein мне так
нравящийся? BLAKE2b? Остановился на BLAKE2b. SHA3/SHAKE сами по себе
очень медленные в софте -- неприятно, но я считаю их лучше использовать
чем SHA2, особенно когда нужна NIST-approved совместимость. Skein всем
хорош. Как и BLAKE2. Я просто не смог найти хороших доводов/аргументов в
пользу того или иного. BLAKE2 всё же побыстрее будет. BLAKE3 например
уже, как по мне, слишком небольшой запас прочности имеет, из-за чего я
не хотел бы его для очень ответственных (для хэша) задач применять. В
итоге остановился на BLAKE2 и убедился что его заслуженно любят другие
криптографы. Но это добавляет немного геморроя: если в Ed25519
реализации сильно зашит SHA2 хэш, то придётся помучиться.

Правила формирования подписи в signed-data по сути идентичны SignedData
CMS. Не потому что они мне нравились, а просто потому что это вполне
себе адекватный и разумный несложный подход. Так же как и возможность не
переносить подписываемые данные внутри signed-data контейнера. Структура
подписи позволяет добавлять как и произвольные данные не защищаемые
подписью (например cer-loc поле в котором можно список URL-ов перенести,
которые чисто для информации), так и защищаемые.

А также есть prehashing режим, когда мы заранее указываем алгоритмы
хэширования и подписываем уже значение хэша в структуре. Но для
сертификатов этот режим не разрешён, что удовлетворяет EdDSA и его
предупреждениям о недостатках prehash режима подписи.

Хотел надолго отложить вопрос с продумыванием аналога для enveloped-data
контейнера. Ибо это всё сильно сложнее уже. Но что-то вот напрягает меня
(эстетически, так сказать) тот факт, что age не поддерживает
пост-квантовую криптографию, хотя его автор достаточно хорошо в ней
шарит и вообще реализовал crypto/mlkem и поддержку Kyber в Go TLS. А вот
GnuPG поддерживает всю эту тему.

И решил форсировать процесс продумывания enveloped-data и написать для
себя готовый инструмент на замену age. Меня тоже достаёт что это, в
очередной раз, как будто проявление NIH-синдрома. Но мне в age ещё и не
нравился его "128-бит ключ" (4adf9b82dc1c86d787ca0a56f0d37b924877277c).
Ну и то, что он не чешется касательно PQ.

К формату файлов age у меня нет претензий никаких, но раз уж я занялся
KEKS-ом и его реализации довольно компактны, то это будет конечно же
KEKS структуры. Я смотрел на OpenPGP, многое помню про EnvelopedData
CMS, ещё раз посмотрел на age, HPKE. И кроме того, что вполне себе пока
удовлетворён предложенным enveloped-data форматом, но и начал писать Go
реализацию утилиты для замены age.

И сегодня я начал использовать KEM/DEM терминологию. DEM -- data
encapsulation mechanism, мне действительно больше нравится чем
"encrypted", ибо encrypted ничего не говорит об аутентификации или
проверки целостности данных. Типа слишком низкоуровневое слово. А DEM и
короткое и уже известное в криптографических кругах. Так же как и KEM
(key encapsulation mechanism), который не намекает на детали
"инкапсуляции" ключа, ни на какие DH или прочее.

Данные шифруются CEK (content encryption/encapsulation key) -- термин из
EnvelopedData CMS. А дальше CEK "передаётся" одному или более
получателям. В age они названы получателями. Я же просто обозвал KEM-ами.
Ибо при использовании шифрования на пароле -- как бы никакого получателя
нет. Но при этом scrypt/bcrypt/Argon2/whatever может сформировать KEM.
Алгоритм шифрования данных (DEM) независим от используемых KEM.

Пока я реализовал только ChaCha20-Poly1305 шифрование. Бьём на кусочки,
каждый шифруем/аутентифицируем, в nonce не забываем сигнализировать о
последнем кусочке шифротекста, чтобы его нельзя было обрезать. Но не
забывал про возню (6529c5c19cb52f69f65fec3d17e718cc491d2c53) с key
commitment-ом. Для ряда KEM-ов, которые явно согласовывают/инкапсулируют
ключи, как и в age, отсутствие key commitment не несёт проблем. age не
даёт возможности использовать не ChaCha20-Poly1305, в отличии от моего
формата. И в теории может появится какой-нибудь KEM, которому бы key
commitment не помешал бы. Почитав всяких статей, решил добавить
простейший key commitment пригодный для ChaCha20-Poly1305: добавляю
128-бит нулей перед шифруемыми данными, которые я должен проверить после
расшифрования. Это overhead, но я считаю терпимым, плюс тривиальная
реализация.

Для шифрования на пароле я добавил balloon-blake2b KEM. scrypt из age я
считаю удовлетворительным для хороших парольных фраз, но не спроста же
начали Argon2 конкурс, чтобы иметь что-то более серьёзное. Argon2 меня
более чем удовлетворял бы, но мне он не нравится тем фактом, что это не
алгоритм используемый поверх произвольного хэша. Например у нас доверяют
Стрибогу, а Argon2 это Argon2. Я поклонник Balloon алгоритма, который
просто описывает какие действия надо над произвольным хэшом сделать,
дабы получить усиление пароля. Он появился позже Argon2, но его научные
статьи говорят о том, что всё равно в Argon2 нашлось что-то там не
ладное, а Balloon закрывает все проблемы. Нашей страны это не касается,
но в США (0ddca657ed629fa8458a471d7655d3bd63c6facc) Balloon вообще
NIST-ом рекомендован. В качестве хэша предлагается BLAKE2b, чтобы уж
везде по минимуму зоопарк хэшей был в проекте.

Для шифрования по публичному ключу добавил sntrup4591761-x25519-blake2b.
Собственно, чистый/голый Curve25519 не буду использовать, а только
гибридную версию с пост-квантовым алгоритмом. Почему не ML-KEM или
Kyber? Потому что, следя за рассылками по криптографии, читая DJB, у
меня мало доверия к NIST-у. Я думаю что ML-KEM достаточно безопасен, да,
но, как и в случае с SHA3 и AES, они выбрали алгоритм далеко не с самым
хорошим запасом прочности. А вот к алгоритмам от DJB (+компания) у меня
ни йоты претензий. К тому же, по факту, Streamlined NTRU Prime 761 у
меня используется уже не один год по много раз в ведь из-за OpenSSH. В
нём нет RSA, ECDSA, AES, но есть SNTRUP.

Почему sntrup4591761, а не sntrup761? Только по причине того, что я
нашёл одну реализацию (sntrup4591761) на Go. Разница между ними только в
чуть более компактном кодировании данных (экономия в десятки байт, на
фоне более чем килобайта), последний чуть компактнее. Во всём остальном
они полностью идентичны.

Как объединить результат работы SNTRUP и X25519? Вообще в PDF-ке SNTRUP
намекается на допустимость просто хэширования их секретов. OpenSSH так и
делает, как и TLS. Но даже мне очевидно, что не помешало бы, на всякий
пожарный, захэшировать бы и публичные ключи участников хотя бы. DJB в
рассылке это тоже рекомендует, дабы не заниматься доказыванием что и без
этого всё нормально. ML-KEM, кстати, в отличии от Kyber, отличается
отсутствием хэширования дополнительных данных, чем он мне тоже не
понравился. X-Wing (135afdcb923cd9463751d5766279c8426ee6ab00) тоже
делает хэширование ключей. Учитывая производительность современных
Kyber/X25519, а также килобайтные размеры PQ-ключей, стоимость
хэширования становится отнюдь не нулевой, но я бы не экономил на этом.

CEK ключ шифруется выработанным из KEM-а KEK-ом (key encryption key).
В моих случаях это, опять же, ChaCha20-Poly1305, с добавленным padding,
просто чтобы не думалось.

Принципиально это всё не отличается от того, что происходит в age. Но он
из file-key отдельно вырабатывает CEK и ключ для расчёта MAC-а над всем
заголовком. Пока я не увидел хороших аргументов зачем это надо. Да и я
бы и не хотел делал список KEM-ов immutable.

Откладывал я тему с enveloped-data по причине того, что его же грамотно
нужно бы ещё и совмещать с signed-data. То бишь иметь возможность делать
не просто encrypt и sign, а (55c0fea0eaa0b13b63e85c1a21afee4ed02f8ad9),
так называемый, signcrypt. Чего ни age, ни CMS, ни S/MIME, ни куча
других форматов не делают вовсе.

Пока достаточно хорошим решением вижу создание, так называемого,
binding-а в структуре enveloped-data, являющегося UUID-ом. И при
создании вложенного signed-data предполагается указывание
envelope-binding внутри подписываемой структуры. Таким образом мы явно
связываем подписываемый документ с конкретным будущим envelope. Плюс
binding участвует в вычислениях всех KEM-ов, явно привязывая их к
конкретной посылке.

Сам шифротекст можно вложить и в enveloped-data. И я решил сделать это
поле чисто BLOB-ом, размер кусочка которого будет специфичен для каждого
DEM-а. Для chacha20poly1305 с 64KiB кусочками это будет 64KiB+32 байта.
Однако мои текущие реализации библиотек не вернут мне управление, пока
полностью от и до не прочитают весь KEKS файл. А я хочу у себя
перешифровать age-файлы на много гигабайт. Никто же не мешает эти данные
предоставить отдельно (detached), независимо от структуры, как это можно
в EnvelopedData CMS и age? Поэтому ciphertext поле у меня опционально. И
мои текущие реализации KEKS библиотек просто декодируют KEKS структуру,
а дальше можно будет продолжать обрабатывать данные после неё из
io.Reader/файла.

На ГОСТовых алгоритмах ещё не делал спецификации, но с CMS на их основе
я много работал и не помню чтобы там были не вписывающиеся, во всё мной
придуманное, особенности.

3 months agoXWingLabel
Sergey Matveev [Fri, 17 Jan 2025 10:44:24 +0000 (13:44 +0300)]
XWingLabel

https://datatracker.ietf.org/doc/draft-connolly-cfrg-xwing-kem/
Есть такой алгоритм X-Wing, описывающий как использовать гибридный KEM.
А назван он так не просто так, ибо в 5.3 секции:

    XWingLabel = concat(
        "\./",
        "/^\",
    )

3 months agoEliminate the state! призыв в SPHICS
Sergey Matveev [Fri, 17 Jan 2025 10:31:25 +0000 (13:31 +0300)]
Eliminate the state! призыв в SPHICS

https://sphincs.cr.yp.to/eliminate.jpg
https://sphincs.cr.yp.to/
В алгоритме подписи SPHINCS прям разъясняется что же это за "state"
такой и что речь не про государства.

3 months agoЧто нужно для получения "современного" терминала
Sergey Matveev [Fri, 17 Jan 2025 07:38:16 +0000 (10:38 +0300)]
Что нужно для получения "современного" терминала

https://jvns.ca/blog/2025/01/11/getting-a-modern-terminal-setup/
Человек пишет о том, что такое в его понимании "modern terminal".

Ему важно, чтобы работали Ctrl+стрелочки. Судя по тексту, проблема в
macOS, в которой нет GNU Readline к которому он привык. В моём случае
проблемы с libedit vs readline vs whatever решились тривиально: просто
использую vi режим редактирования везде.

Не понимаю зачем 24-бит цвета. Но это на вкус и цвет, а так то ничего
против hicolour поддержки не имею.

Но в остальном у меня полностью удовлетворяет всем требованиям этого
человека. Ну и кроме "automatic terminal fixing" -- по мне так не ясно
как компьютер, со всеми этими Unicode и шрифтами, может понять что
что-то пошло не так.

Автор критикует oh-my-zsh. Солидарен с ним во всём. Я никогда его не
рекомендовал бы.

3 months agoУмер Дэвид Линч
Sergey Matveev [Thu, 16 Jan 2025 18:44:10 +0000 (21:44 +0300)]
Умер Дэвид Линч

https://lenta.ru/news/2025/01/16/umer-rezhisser-i-stsenarist-devid-linch/
https://ru.wikipedia.org/wiki/%D0%94%D1%8D%D0%B2%D0%B8%D0%B4_%D0%9B%D0%B8%D0%BD%D1%87
Запоминающимся режиссёром он был! Есть друг, который водил на первом
свидании девушку на "Маллхолланд драйв" -- в последствии стали супругами.
Его "Внутренняя империя" -- самый взрывающий мозг фильм из всех что видел.
Помню, что понравился и впечатлился "Головой-ластиком". Но все эти фильмы
не из тех, что хотелось бы пересматривать: ибо очередной взрыв головы.
Впрочем, он любит очень привлекательных женщин снимать ("Маллхолланд
драйв" например), на что можно переключиться с попыток понять сюжет.
"Синий бархат", "Шоссе в никуда" тоже помню что понравились.

Но вот "Твин Пикс" не любил, ибо это какая-то never ending story. Не
люблю такое. Это один из последних сериалов который смотрел, после чего
зарёкся тратить на них время.

3 months agoБарабанщики и VK Видео обошёл YouTube
Sergey Matveev [Thu, 16 Jan 2025 12:11:09 +0000 (15:11 +0300)]
Барабанщики и VK Видео обошёл YouTube

https://habr.com/ru/companies/sportmaster_lab/articles/874130/
https://lenta.ru/news/2025/01/16/vk-video-oboshel-youtube-po-chislu-ezhednevnyh-polzovateley/
Читая статью на Хабре про путь барабанщика, где есть несколько ссылок на
видео в VK Видео, посмотрел их с этого хостинга. Отметил необычность
ввода ссылок не на YouTube для yt-dlp. И сразу же появляется новость о
том, что он обошёл по числу пользователей YouTube.

И похоже что видео игры барабанщиков я смотрел гораздо больше и чаще чем
гитаристов или целых концертов. Завораживают они все своим мастерством.

3 months agoFreeBSD для самых маленьких
Sergey Matveev [Wed, 15 Jan 2025 18:33:20 +0000 (21:33 +0300)]
FreeBSD для самых маленьких

https://linkmeup.ru/podcasts/2734/
Вышел тут подкаст с рассказом про FreeBSD. Что любопытного для себя
услышал?

Почему Netflix использует для своих 400/800Gbps серверов раздачи видео
именно её, а не GNU/Linux-ы? Да потому что проще поправить её код, в том
месте где бутылочное горлышко, из-за простоты и даже академичности кода,
чем копошиться в ядре Linux.

Снова упомянули, что в Яндексе полно FreeBSD машин, никуда они не
пропадают, что и видно по тому, что они продолжают коммитить в ядро.

PostgreSQL собирается для FreeBSD даже раньше официального релиза и
именно FreeBSD у них используется как лакмусовая бумажка для нахождения
странностей и проблем: типа если что-то пошло при тестах не так, то это
уж наверняка проблема в самой СУБД, нежели чем в ОС, чего про GNU/Linux
нельзя сказать.

Jail-ы в FreeBSD приятны и хороши. Кто-то ставит Docker как пример того,
что есть в GNU/Linux, но только надо не забывать, что jail-ы появились
уже с 2000-го года.

ZFS, как известно, появился в Solaris. Потом портировали в FreeBSD.
GNU/Linux тоже захотел такое и начал пилить свой ZFS-on-Linux, где
паршивое качество кода, баги и всё плохо. Но много дополнительных фич,
да (вот правда зачем они, если это всё криво работает? только линуксоид
сможет понять наверное). Собрались умные дядьки и решили объединиться в
OpenZFS, где львиная доля ZFS общая для всех, а дальше только, так
сказать, разные API интеграции в ядра ОС. И только с вхождением
BSD-шников в OpenZFS, баги начали правится, всё начало стабилизироваться
и работать. Ну и сама FreeBSD тоже стала использовать уже OpenZFS.

3 months agoКриптография в Session IM
Sergey Matveev [Wed, 15 Jan 2025 09:49:29 +0000 (12:49 +0300)]
Криптография в Session IM

https://soatok.blog/2025/01/14/dont-use-session-signal-fork/
https://getsession.org/session-protocol-explained
Про свой первый взгляд на Session я уже писал в
089bf4d15b98749dc24ee1bb149c53e080e86837. Но на протокол и криптографию
не смотрел. А тут, оказывается, эти ребята вообще решили выпилить и PFS
и deniability свойства. По мне, для IM-а, так этого с лихвой достаточно
чтобы не рассматривать это решение и дальше, ибо ужас.

Но, судя по предоставленным кускам кода в статье, при генерировании
Ed25519 ключей, они используют всего 128-бит энтропию, вместо ~256 бит.
То есть понижая безопасность 25519 до уровня пригодного для brute force
(причём, видимо, даже сейчас на практике).

Думаете, так обосраться было мало? Session постарался. Подписи в
сообщениях проверяются напротив публичного ключа, приложенного к этим же
самым сообщениям. То бишь, они просто по сути проверяют их целостность.
Даже протокол Telegram уже кажется куда более безопасным чем это.

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

В общем, Session это просто лютейшее говно к которому ни в коем случае
нельзя прикасаться. Даже Tox, с его проблемой KCI во время рукопожатия,
просто непробиваем по сравнению с этим.

3 months agoДекодируя 802.11ah
Sergey Matveev [Wed, 15 Jan 2025 09:35:38 +0000 (12:35 +0300)]
Декодируя 802.11ah

https://destevez.net/2025/01/decoding-ieee-802-11ah/
Автор декодировал сабжевый трафик от "baby monitoring system" (не знаю
как это у нас называется) через SDR. Самое интересное для меня было в
конце, где трафик был зашифрован CCMP (WPA2), но с одним и тем же
вектором инициализации! В CCMP/CCM шифрование происходит в режиме
счётчика, для которого повторение IV фатально. То есть безопасность
такой передачи вообще никакая.

Именно поэтому я вообще не доверяю никоим образом WiFi шифрованию. Есть
места где там можно легко облажаться или же просто через задницу всё
реализовать, что неоднократно демонстрировали на практике всякие
китайские решения. Причём одинаковый IV то ещё можно в tcpdump увидеть,
но плохое качество PRNG уже не тривиально выяснить. Даже если вся
криптография происходит через программный стэк внутри встроенных в WiFi
Linux-ов, то доверия к качеству их разработчиков нет аналогично.
Поэтому, зачастую, нужен VPN поверх подобных беспроводных решений.

3 months agoНекоторому моему софту ведь уже не мало лет
Sergey Matveev [Tue, 14 Jan 2025 13:24:10 +0000 (16:24 +0300)]
Некоторому моему софту ведь уже не мало лет

http://www.stargrave.org/Software.html
Как-то переходя по всяким ссылкам в Geminispace, обнаружил, что куча
народу использует (или, как минимум, играется) с NNCP. И BBS-ки какие-то
делают и чисто для sneakernet-а и какие-то автоматизированные службы
поверх него. Размеры примеров, описаний и документации чуть ли не больше
чем у меня написано для него. А ведь я про NNCP проект вообще не
вспоминаю и даже в его TODO давным давно не заглядывал.

Использую я его каждый день и косвенно: через него ходит почта между
моим мобильным компьютером и сервером, и напрямую вызывая nncp-file для
сброса данных на домашний сервер. Его offline/sneakernet возможности не
помню когда в последний раз использовал, хотя изначально только для
этого проект и создавался, не имея TCP-демонов никаких. БОльшую часть
его возможностей/команд не использую вообще и, скорее всего, даже не
смогу их уже хотя бы перечислить. Но приятно видеть что у кого-то он
зажигает желание и тему флоппинетов. А существует проект с 2016-2017-ых
годов ведь уже. Вот, правда тестами, он покрыт слабо. Вообще никак не
покрыт интеграционными. Что стыдоба конечно, но... seems to work not
only for me :-)

Если спросить о самом моём любимом проекте, который больше всего
нарадовать не может, то с ходу хочется сразу же сказать про goredo,
созданном в 2020. Но это, видимо, потому что меня redo система так
впечатлила и я яростно презираю любые проявления Makefile-ов. А goredo и
в рабочих и вне рабочих и чисто сисадминских делах применяется не то что
ежедневно, а ежечасно, как минимум. И он хорошо покрыт тестами и в него
я чаще всего заглядываю за эталонным шаблоном то одного, то другого. Не
один рабочий проект redo тоже использует: причём некоторые коллеги
используют первый попавшийся им redo (apenwarr/redo который) и ещё ни
разу не возникло проблем с "совместимостью" написанных целей.

GoVPN, с которого началась моя страничка свободны проектов, давно не
поддерживается и официально заброшен. Вообще мне нужен был WireGuard, но
его не существовало на тот момент. А потом кроме функций чисто VPN-а я
надобавлял и всяких censorship-resistant вещей, неотличимости от шума и
прочих свистоперделок just-for-fun. Судя по новостям, именно их многим
пользователям не хватает в VPN решениях. Но мне настолько обрыгла вся
эта тема, что просто перестала был даже любопытной. Если бы прямо сейчас
мне надо бы было обернуть WG во что-то похожее на другое или неотличимое
от шума, то я бы вновь поднял udpobfs проект. Причём я его написал,
опять же just-for-fun, за один день что ли и уже забыл всё ли там
приемлемо или просто зашибись хорошо работает. И заворачивал WG через
него. Точно помню что proof-of-concept у меня работал. Но потребностей
не возникает в таких решениях.

Хотя до GoVPN я, как минимум, не один год участвовал в Inquisitor
проекте (65fe816f376f6e899232d66889f9cfb9cfe0c808) -- собственно, моей
первой полноценной профессиональной деятельностью. Да, я начал
зарабатывать деньги на исключительно свободном ПО :-). Но с
исчезновением компании, да и потери интереса к проекту, он заглох, даже
официальный сайт уже протух.

Только написав про GoVPN, я вспомнил, что вообще-то моя профдеятельность
началась с создания крипто-маршрутизатора. Звучит громко, но по факту
был взят m0n0wall и я люто много модифицировал его PHP-based framework
для того, чтобы каждый порт маршрутизатора можно бы было использовать
для любых целей, а не прибитыми гвоздями WAN/LAN/DMZ. Плюс был добавлен
netflow сборщик и визуализатор его журналов, CARP, что-то касательно
IPsec. И ведь где-то это даже было выложено в открытом доступе, но уже
забыл и саму площадку. Первые свои деньги я не то что на свободном ПО,
но на FreeBSD получал! И продавался он очень хорошо, насколько мне
говорили. Потому что just-works и имел хороший набор фич.

Увидел упоминание ETConf проекта: мои первые шаги в Django и вообще
Python. Эта система конфигурирования серверов при покупке, где
аппаратные компоненты между собой были взаимосвязаны как-то хитро. Умел
выгружать XML-ки в online-магазины и ещё что-то умел. Вроде его
использовали где-то и даже после закрытия компании.

Совсем недавно мне сообщали что до сих пор ещё имеются пользователи
OpenSAN. А ведь мы его закончили что-то типа в 2011-2012-ом годах. В это
проекте я был уже типа team lead-ом и имел подчинённых. Это
OpenWRT/LuCI-based SAN система. Год мы писали в основном на Lua. По сути
то просто WebUI для конфигурирования штатных Linux-овых LVM2, mdadm,
iSCSI-related вещей и всего подобного. После ухода из компании интереса
этот проект мне не представляет. Сам я и руками могу управлять
хранилками. Ну и тогда мы ещё не трогали ZFS. А в том OpenSAN, который
использовал mdadm, был write-hole вообще-то.

Часть написанного мною софта не используется из-за перехода на ZFS.
Часть из-за того, что я перестал писать на Python. Быстрый шифратор
файлов gohpenc теперь проще заменить age-ем.

До сих пор используются и применяются активно PyGOST и GoGOST на работе,
так как ГОСТовой криптографии у нас на каждом шагу, а реализаций на этих
удобных языках нема. Созданы они были ещё в 2015-ом. Но вне работы я бы
их и не использовал.

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

Особых чувств к *GOST у меня нет -- ну просто реализованные алгоритмы,
самый большой набор, с хорошим покрытием тестовыми векторами. Без
сильной оглядки на производительность.

PyDERASN для меня являлся эталоном скорости и качества моей работы. Это
наверное самая тщательно протестированная программа, самая вылизанная из
мною написанных. Две недели с утра до вечера с 9 утра до 9 вечера,
отвлекаясь только на обед и туалет, писал всё это. И к концу был готов
не только сам рабочий код, но и документация и 100% покрытие тестами, а
также перевод наших двух огромных многолетних проектов с pyasn1 на
PyDERASN. Вот это именно подобную работу я считаю за 100% своего КПД.

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

К сожалению, так как от Python я держусь как можно дальше, использую я
PyDERASN крайне редко, да и то в составе других утилит, типа
pretty-printing-а ASN.1 файлов. Да и желание держаться подальше от ASN.1
тоже держит этот проект от меня подальше. Написан в 2017-ом и
существенно, с момента своего двухнедельного написания, не
переделывался. Как и серьёзных багов там было найдено что-то типа
одного, да и тот, который бил по рукам только нас, а не тех кто
использовал бы библиотеку вместо pyasn1. Давно никаких изменений в него
не вносилось просто потому, что там нечего делать, всё закончено, фичи
не нужны.

GoCheese создан в 2019-ом, как злобный ответ всем Python-истам на тему
того, что у них ничерта не было работающего и достаточно простого
кэша/прокси для pip/PyPI пакетов. Проще было быстренько написать
подобное на Go. Кто-то мне писал что оно используется и не только в
нашей компании, делали bugreport-ы. У нас оно до сих пор применяется,
как и у меня дома, как минимум, при обновлении yt-dlp :-). Пока API PyPI
не меняется, то оно just-works, more than good enough. Совершенно ничего
сложного в проекте нет, но я до сих пор удивляюсь почему аналогичное, в
стократ большее кол-во Python-истов, не могло написать.

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

Не раз мне писали, что кто-то читает блог через его gemini:// версию,
которую я добавил just-for-fun, хотя Gemini протокол я прям не люблю.
Кто-то читает даже его gopher://.

go.cypherpunks.su/recfile библиотеку, как и recfile формат я полюбил в
2020-ом. И NNCP и goredo его в нескольких местах используют. Совместно с
linksexp утилитой, из него генерируется страница со всякими закладками:
http://www.stargrave.org/Links.html в разных форматах. Он же
используется и как формат хранения сообщений в моём самописном
Mattermost клиенте. Наверняка где-то и ещё его применю, но сам по себе
он не быстрый по скорости десериализации, хоть и простой. В goredo от
него избавился в пользу бинарного кодирования.

go.cypherpunks.su/tai64n появился в том же 2020-ом, ибо мне понравился
этот формат от DJB. Как и идея самого TAI, а не не-монотонного UTC.
TAI64 external формат за исключением вывода в журналах, по аналогии с
daemontools, применяется на работе в моих криптографических протоколах,
и в KEKS кодеке. И дальше будет только больше.

Про массу других проектов я вообще не вспоминаю, но на деле использую
чуть ли не каждый час. И в них почти не появляется изменений, так как
just works. paster регулярно на работе используется для обмена с
коллегами code snippet-ами или файлами (когда-то был у нас SSH/NFS
shared сервер, но после переездов исчез, а использовать JS-driven говно
-- пошли в жопу). linksexp запускается каждый раз при обновлении списка
RSS/Atom лент и ссылок, а это чуть ли не каждый день бывает. feeder
используется по несколько раз в день: через него я получаю и читаю все
RSS/Atom ленты. Ничего удобнее и гибче я не использовал. Все эти
Newsboat и подобное: забыл как неприятный сон. zeasypki используется для
управления всеми моими TLS сертификатами, которых у меня 330+. zdns-ом я
генерирую файлы с DNS-зонами, никаких ручных правок. galgen генерирует
альбом с "мясными" обложками: http://www.stargrave.org/images/meats/1.page.html
которые у меня собирались со времён института, а точнее появления
160Kbps ADSL Интернета. sgmon мониторит моит сайты и прочие службы,
сегодня вот громко показывая как, действительно, шатался web в рунете:
https://habr.com/ru/news/873606/. dmon-ом регулярно смотрю кто ест
трафик. dht-bootstrap у меня по умолчанию используется для DHT
bootstrap-а в моём BitTorrent клиенте btrtrc (никаких других клиентов, с
момента написания, не использую).

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

Когда-то казавшейся дикой, идею использования HTTP/HTTPS-proxy/terminator
перед броузером я реализовал в кратчайшие сроки в 2021-ом. С тех пор все
броузеры (и RSS/Atom feeder) ходят в web через него:
    % l ~w/tofuproxy/state/certs W
    31475
почти 32 тысячи сайтов я посетил за это время и сохранено ~78k
сертификатов. Из крупных изменений помню добавление поддержки просмотра
WARC файлов. В основном это был либо ни черта не работающий Python софт,
либо что-то слишком крутое на Java, либо ещё и JS-supported. Думал что
задача не из простых, но вышло вполне рабоче, хотя я даже не каждый
месяц .warc какой-нибудь подключаю, скорее создаю на всякий пожарный.
Ну и tofuproxy у меня ещё и для просмотра Geminispace служит: туда я
только через него ходил, ибо иногда какие-то ссылки ведут. Плюс он ещё и
всякие современные форматы изображений позволяет показывать любому
броузеру. Это и точка аутентификации, TLS клиент с кучей наворотов,
DANE, HTTP sanitiser, показыватель картинок, gemini-клиент, блокировщик
всяких нехороших сайтов. Тот ещё комбайн. Которым очень доволен, ибо его
хоть и вижу каждый день, но не замечаю.

И в том же 2021-ом я написал и собственный web-сервер. Используя конечно
массу готового функционала из родных Go библиотек. С того дня, с момента
написания и переезда, я жалел только о том, сколько времени я тратил на
возню с lighttpd. Нет, он мне нравился, в отличии от nginx, к которому
прям отвращение сравнимое с systemd испытываю. Но надо было куда раньше
делать web-сервер под свои нужды/удобства/желания. Документация lighttpd
зачастую паршива -- информация только в их wiki.

И ведь уже меньше месяца остаётся как BASS проекту исполнится год.
Возможно лет десять я думал о том, чтобы автоматизировать и упростить
возню с пакетами на моей системе. И так уж вышло, что и на работе задача
по детерминированной сборке возникла, и для кросс-платформенной CI
системе нужны пакеты/софт -- и всё это внезапно для меня превратилось в
систему сборки и (простым) управлением пакетами. И я всё равно не ожидал
что реально огромную часть софта я на своей системе переведу в BASS
(бывший zwoki). И что это более чем отличным рабочим решением окажется,
да ещё и столь минималистичным по коду. Проекту ещё и нет года, но мой
компьютер, как и некоторые проекты на работе, уже немыслимы без него.
Однако я не пытался его пиарить и громко где-то рассказывать. Хотя по
сути у меня нет ни TODO для его кода, ни known bugs. Так сказать,
никакого community (в отличии от NNCP) в нём нет.

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

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

А ещё есть много кода написанного в ivi. Не знаю как там сейчас, но
вроде в последний раз знакомые мне говорили что серьёзные пласты там мои
так и остались работать по сей день. Вроде бы, как и сервер
аутентификации/авторизации, так и написанные на Go прокси-серверы
раздачи самого контента. Последние точно менялись существенно, но,
говорят, что основа всё равно осталась прежней. Хотя ведь уже больше
десяти лет прошло и компания во много раз выросла. Если софт не
переписали с нуля, хотя он точно должен был требовать изменений и
поддержки, то, видимо, неплохо архитектурно устроен/написан был. И это
речь только про то, что голой попой в Интернет торчит. А ведь ещё массу
всего я писал во внутренней Django-based админке, в которой суммарно
наверное под две сотни тысяч строк было.

А с исчезновением Сирийской Арабской Республики, канет в небытие и
проект в котором я плотно участвовал не один год и помогал там с
внедрением в 2019-ом. Как быстро летит время!

3 months agoСходил на Carmina Burana Карла Орфа
Sergey Matveev [Mon, 13 Jan 2025 15:12:22 +0000 (18:12 +0300)]
Сходил на Carmina Burana Карла Орфа

https://ru.wikipedia.org/wiki/Carmina_Burana_(%D0%9E%D1%80%D1%84)
в консерватории им.Чайковского. Удивили две вещи. Как оказалось, я
совсем забыл, но я полностью прослушивал это произведение (не только его
"O, Fortuna" известную всем) и почти всё было сильно знакомо. Плюс
забыл, что вообще-то там вообще весёлые и заводные части имеются, не
только мрачняк типа Фортуны. Ожидал мрачного: получил лёгенькое такое
даже полу-попсовое произведение. Очень понравилось, но повторно уже
наверное только за компанию сходил бы. В отличии от Реквиема
(ec33ecd37983d8ad4ffeae49bf2408a0ce8ef62d), поднимавшего волосы на всех
частях тела и вгонявшего в такой мрак. На выступлении был ещё и очень
заводной дирижёр, который чуть ли не в пляс готов был пуститься.

3 months agoПогуляли в центре новогодней Москвы
Sergey Matveev [Mon, 13 Jan 2025 15:09:39 +0000 (18:09 +0300)]
Погуляли в центре новогодней Москвы

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

3 months agoПрохождение Quake 2 PSX MOD
Sergey Matveev [Sat, 11 Jan 2025 14:20:43 +0000 (17:20 +0300)]
Прохождение Quake 2 PSX MOD

https://www.youtube.com/watch?v=667FG4PDkIA
Это Quake 2 с сильно улучшенной графикой и немного переделанными
уровнями. Отличная музыка, идеальная под подобную игру и стиль. Автор
ролика очень хорошо играет. И как же здорово бы было прежде иметь
компас/навигатор! Но в этом mod-е нет уровней с фабрикой, которая мне
так нравилась.

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

3 months agogo.stargrave.org/pgpmaildecryptor
Sergey Matveev [Fri, 10 Jan 2025 11:17:18 +0000 (14:17 +0300)]
go.stargrave.org/pgpmaildecryptor

gopher://box.matto.nl/0/export-decrypted-messages-from-entire-mailbox.txt
https://datatracker.ietf.org/doc/id/draft-autocrypt-lamps-protected-headers-02.html
http://www.git.stargrave.org/?p=pgpmaildecryptor.git;a=summary
В 7f67390fdbb9f5c147c9d86d10299ed59f1b0850 писал про то, как можно
хранить дешифрованные PGP письма, чтобы по ним можно бы было искать (и
не забывать чтобы поисковый индекс, как и сами сообщения, были на
зашифрованных разделах). Тогда я использовал встроенные возможности Mutt
по расшифровыванию. Но защищённые заголовки письма им просто добавлялись
в конец текущих. Отображать такие письма он может нормально, но тот же
не единственный Subject будет источником проблем в других местах. В той
записи блога был скрипт на Python, потом был на Perl:
http://www.git.stargrave.org/?p=dotfiles.git;a=blob;f=bin/bin/mail_dup_hdrs_remove.pl;h=dcc78ca93b8ea54fa5ed1f43bc458f934909c14e;hb=HEAD

Коряво это всё выглядит: использование интерактивной программы, после
которой ещё и всё равно надо доправлять сообщения. Написал pgpmaildecryptor
утилиту на Go, которая на stdin принимает RFC822 сообщение, находит в
нём pgp-encrypted часть, дешифрует через внешний запускаемый gpg,
заменяет дешифрованным результатом заголовки и тело сообщения, с учётом
protected-headers. Вроде работает хорошо, пока проблем не встретил. Сам
Go то здесь по сути излишен: можно и Perl-ом бы было обойтись, но в Go
из коробки есть средства парсинга MIME. Вообще ожидал гораздо большую
боль со всем этим, но именно зашифрованные PGP MIME сообщения не сложно
устроены.

3 months agoПосмотрел пару частей "Третий лишний"
Sergey Matveev [Thu, 9 Jan 2025 10:03:51 +0000 (13:03 +0300)]
Посмотрел пару частей "Третий лишний"

https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B5%D1%82%D0%B8%D0%B9_%D0%BB%D0%B8%D1%88%D0%BD%D0%B8%D0%B9_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_2012)
https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B5%D1%82%D0%B8%D0%B9_%D0%BB%D0%B8%D1%88%D0%BD%D0%B8%D0%B9_2
Давно я не притрагивался к тупым американским комедиям с полу-сортирным
юмором. Но даже такое временами хочется.

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

3 months agoСнова про блокировки YouTube от Google
Sergey Matveev [Wed, 8 Jan 2025 15:04:31 +0000 (18:04 +0300)]
Снова про блокировки YouTube от Google

В 4edb83c6d379a94bcd3752642653d879289f1726 писал что YouTube не работает
из-за Google. После обновления yt-dlp клиента, заработал. Блокировки от
самого Google совпали по времени с РКНовскими (думаю что не спроста). А
сейчас вот снова ничего не работает, но уже потому что Google просит
предоставлять cookie, залогиниться. А ведь снова люди будут думать что
это с нашей стороны цензура идёт.

3 months agoСходил на рождественский black metal концерт
Sergey Matveev [Tue, 7 Jan 2025 12:41:10 +0000 (15:41 +0300)]
Сходил на рождественский black metal концерт

https://metalrace.bandcamp.com/album/--18
Уже который год (9cbaf26041622e6894f803fa7b85cf8a5ed043f6) в рождество
устраивают достойные black metal концерты. Явно как trolling, конечно же.

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

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

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

А вообще концерт был посвящён презентации нового альбома Night Abyss.
С ними я тоже уже знаком (d514b2e5d735d87fda4999367f4360aec273c82e), но
ничего выдающегося не запомнилось. Вот и в этот раз они добротно хорошо
бодро и активно играли, но не более. Однако, у них была и вторая часть
их выступления. Они поменяли барабанщика и теперь это стало чуть ли не
другой группой. Хотелось изначально сказать, что он у них явно балуется
грайндкором, но ту убойную скорость, что он выдавал, мало кто может из
грайнды. Группа просто ураганную мощь приобрела с ним! Где-то из
интервью музыкантов слышал, что всё же самым экстремальным и сложным
стилем в металле является именно black. Вот Night Abyss с обновлённым
ударником только подтверждает это!

Играли Night Abyss суммарно полтора часа. Полный концерт. Где-то под
конец у басиста оторвалась струна. Через пару песен он вообще забил на
игру и пошёл слеймиться с залом. Шквала энергии от барабанщика и двумя
гитаристами более чем достаточно было.

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

3 months agoСнова побывал в Главном Храме ВС РФ
Sergey Matveev [Tue, 7 Jan 2025 12:32:06 +0000 (15:32 +0300)]
Снова побывал в Главном Храме ВС РФ

https://ru.wikipedia.org/wiki/Главный_храм_Вооружённых_сил_Российской_Федерации
Упомянул про него другу, а тот сразу же решил и съездить в него на
каникулах. Вот и поехали вместе. Это единственный храм, в котором я
целенаправленно побывал дважды (b4bd21722bc26f48f9464cfe43c35fd0e0ccf323).
А вот в Храме Христа Спасителя я так и не побывал.

Жуть как же там красиво. Вот в мечетях мне нравится мозаика. И в ГХ ВС РФ
её как раз тоже полно, в отличии от других наших. Где-то видел фразу о том,
что он построен в стиле стимпанка. Что-то в этом есть. Может это ещё одна
причина почему он так нравится?

Прошлись, конечно же, и по "Дороге памяти".

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

3 months agoУвидел пару роботов-доставщиков
Sergey Matveev [Tue, 7 Jan 2025 12:27:52 +0000 (15:27 +0300)]
Увидел пару роботов-доставщиков

А то только на фотографиях в статьях, да в подкасте про них слышал
(b36f57cf549fd74426066a3688887b8df81c670a). Целая пара ожидала у
"Вкусно -- и точка", а через пару минут поехала по своим рабочим делам.
Если навстречу прямиком идут люди (уставившиеся в свои смартфоны), то
притормаживают. Упорно напоминают ВАЛЛ-И.

3 months agoNokia всё равно вылазит в Интернет
Sergey Matveev [Tue, 7 Jan 2025 12:12:42 +0000 (15:12 +0300)]
Nokia всё равно вылазит в Интернет

В 2204d9a275d0f1d7d5b70f7b8388b3cc86af3dbf писал как я провозился с тем,
чтобы сотовый не вылазил в "Интернет", но VoLTE работал бы. А то мне каждый
день приходила SMS о том, что я вышел в Сеть и с меня сняли 10₽ за это.

Думал, что поборол проблему. Но нет -- именно после выключения/включения
аппарат всё равно бывает выходит в Сеть. И мне показалось, что только
если я существенно меняю своё географическое положение. Дома выключения
и включения не приводят к выходу.

В 13f08416a67d55316986096563dc0345a01103e5 писалось про то, что
"кнопочным" телефонам доверия не особо должно быть -- на практике даже
они вовсю любят устраивать слежку, хотя и не в таком масштабе как
смартфоны. Вот и Nokia моя тоже ведёт себя не очень хорошо.

3 months agoСходили на оперу "Севильский цирюльник"
Sergey Matveev [Tue, 7 Jan 2025 12:04:21 +0000 (15:04 +0300)]
Сходили на оперу "Севильский цирюльник"

https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%B2%D0%B8%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B9_%D1%86%D0%B8%D1%80%D1%8E%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA_(%D0%BE%D0%BF%D0%B5%D1%80%D0%B0)
Весёлая, с хорошим концом -- из-за этого сложно назвать оперой :-)
Было бы чуть побольше просто разговоров, то стала бы опереттой.
Несколько раз актёры вставляли русские фразы, что вызывало взрыв
смеха у зала от неожиданности. Не спроста именно в новогодние
праздники её ставят.

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

3 months agoПосмотрел "Чунгкингский экспресс"
Sergey Matveev [Tue, 7 Jan 2025 11:52:06 +0000 (14:52 +0300)]
Посмотрел "Чунгкингский экспресс"

https://ru.wikipedia.org/wiki/Чунгкингский_экспресс
Хороший фильм. Снова (6d44820bd90047c1c2342ccc846336291c6b36ae) мелодрама.
Мне правда не понятна была связь двух историй в нём. Но, судя по Wikipedia,
связи между ними и нет, кроме места действия. Странно это было. Но после
второй истории я первую как-будто и забыл.

3 months agoProfanity XMPP клиент
Sergey Matveev [Sat, 4 Jan 2025 15:20:56 +0000 (18:20 +0300)]
Profanity XMPP клиент

https://profanity-im.github.io/
Указали тут на Profanity программку консольную. XMPP клиент с поддержкой
не только PGP/OTR, но и OMEMO (через libsignal-protocol-c). Собирается
без проблем, как и зависимости к нему. Вроде бы вполне себе работает.
С первого взгляда, вроде бы достойный клиент. MCabber например OMEMO не
держит.

3 months agoПосмотрел "Трудности перевода"
Sergey Matveev [Fri, 3 Jan 2025 23:59:37 +0000 (02:59 +0300)]
Посмотрел "Трудности перевода"

https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D1%83%D0%B4%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0
Офигенный! Игра Мюррея и Йоханссон впечатляют! Концовка очень понравилась.
Однозначно мог бы рекомендовать к просмотру.

3 months agoПосмотрели "Финиста" и "Волшебника Изумрудного города"
Sergey Matveev [Fri, 3 Jan 2025 18:39:09 +0000 (21:39 +0300)]
Посмотрели "Финиста" и "Волшебника Изумрудного города"

https://ru.wikipedia.org/wiki/Финист._Первый_богатырь
https://ru.wikipedia.org/wiki/%D0%92%D0%BE%D0%BB%D1%88%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA_%D0%98%D0%B7%D1%83%D0%BC%D1%80%D1%83%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%D0%B0._%D0%94%D0%BE%D1%80%D0%BE%D0%B3%D0%B0_%D0%B8%D0%B7_%D0%B6%D1%91%D0%BB%D1%82%D0%BE%D0%B3%D0%BE_%D0%BA%D0%B8%D1%80%D0%BF%D0%B8%D1%87%D0%B0
Особо нечего прокомментировать. На один раз -- неплохие фильмы. Но не
понравилось, что "Волшебник" оборвался на полуслове -- будет продолжение.
Ну надоели уже из фильмов делать сериалы. Зрелищные. Для детей вообще
самое то, особенно "Волшебник".

3 months agoСходил на метал-ёлку
Sergey Matveev [Thu, 2 Jan 2025 09:11:05 +0000 (12:11 +0300)]
Сходил на метал-ёлку

Как и прошлом году (ed379bf5da6e95028cf1ab5c3c8324edff7cc95a), сходил на
метал ёлку. Надо сделать традицией такое празднование первого числа.

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

Далее была Джоконда. Простенький незатейливый симфо-метал. Боюсь что
ничего в голове из их музыки не осталось. В отличии от вида симпатичной,
одетой в облегающую кожу, вокалистки.

Потом шёл "Дом ветров". Музыка уже поинтереснее, хотя и тоже ничего
выдающегося. Не моё, но удовольствие получил.

Как всегда, затем выступили Catharsis. Они же эту ёлку и организуют.
Тоже совсем не моя музыка, но рубили и заводили зал хорошо. Вот правда
мне очень не понравилось что они исполнили кавер на "Моя бабушка курит
трубку". Ну вот вообще, по моему, не в тему. Вроде бы ничего против
Сукачёва не имею, но это совершенно не вписывается. Хотя буквально через
пару песен они исполнили кавер на Cheri Cheri Lady... который, по мне,
уже был в тему :-). Как минимум новогоднюю. Вот такое мне уже по душе.

Заканчивали ёлку "Воля и разум". Мне кажется, что это было лучшее heavy
metal выступление которое я видел! Именно heavy metal, а не вообще metal.
Куча электрогитар, соло трушных, долбилова, и крутого вокалиста. Все на
сцене вели себя как полагает заводным хеви-металистам.

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

Плюс приобрёл новый альбом Мещеры.

3 months agogit.sesse.net теперь IPv6-only
Sergey Matveev [Wed, 1 Jan 2025 09:20:56 +0000 (12:20 +0300)]
git.sesse.net теперь IPv6-only

https://blog.sesse.net/blog/tech/2024-12-31-09-48_git_sesse_net_goes_ipv6_only
Всё больше и больше ресурсов становятся доступными только по IPv6.
Регулярно вижу в RSS/Atom новостях о подобных вещах.

4 months agoОтключил TLS на SMTP
Sergey Matveev [Sun, 29 Dec 2024 11:04:43 +0000 (14:04 +0300)]
Отключил TLS на SMTP

Во второй раз заметил, что одного облака моё письмо не отправилось,
так как наши сервера не могут подключиться по TLS. Причём, у меня
даже нет настроек/ограничений на версию TLS. Обычный штатный OpenSSL
и Postfix из портов FreeBSD. И политика TLS безопасности: may -- то
есть мои серверы даже не требуют его использование.

Я неоднократно видел, что люди отказываются поддерживать TLS на SMTP
серверах. Но я удивлялся: ведь с may политикой, без ограничений на шифры
и версии TLS, без обязательной проверки сертификатов, неужели что-то не
будет работать? Убедился что да -- не будет, по хз каким причинам.
Прежде я знал только gosuslugi.ru, который долгое время не поддерживал
TLS 1.2+, если ничего не путаю.

А ещё меня бесил gmail.com, который вроде бы и ML-KEM постквантовый
может в SMTP TLS 1.3 согласовать, но не поддерживает Ed25519
сертификаты. Отказывается общаться с сервером при их использовании,
никакого fallback-а не будет делать. ECDSA сертификаты я держал
исключительно только на SMTP серверах своих. И в Google явно политика
против Ed25519 сертификатов (слишком безопасны и хороши?).

Задолбали все эти кривые руки/софт из-за которых SMTP не работает.
Причём особенностью TLS в SMTP является полное отсутствие гарантий о
том, что сообщение где-то дальше по пути не будет передано в открытом
виде. Если мой web-обозреватель и web-сервер это как-бы (забываем про
CDN) точка-точка соединение, то SMTP это множество hop-ов, где TLS между
двумя не означает что весь будет был защищён TLS-ом.

Пока отключил TLS вообще. Знаю что есть несколько почтовых провайдеров
отказывающихся общаться не по TLS. Идут в жопу. Ибо это театр безопасности
в контексте SMTP. А скоро (или уже, просто не замечал?) наверняка особо
продвинутые админы будут требовать валидности сертификатов, очевидно
проверяемых напротив НАТОвских якорей доверия.

4 months agoУстроили на работе сыч-пати
Sergey Matveev [Sat, 28 Dec 2024 23:07:17 +0000 (02:07 +0300)]
Устроили на работе сыч-пати

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

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

4 months agoКалендари с нашими защитниками и криптографами
Sergey Matveev [Sat, 28 Dec 2024 22:58:52 +0000 (01:58 +0300)]
Календари с нашими защитниками и криптографами

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

А ещё мне отдали внезапно обнаруженный календарь со всякими значимыми
лицами из мира криптографии и вообще связанных с информацией.
Котельников, Шеннон, Диффи с Хельманом, Колмогоров, Тьюринг и ещё всякие
(под рукой нет, всех не вспомню, попутаю). Но он, к сожалению, за уже
проходящий год.

4 months agoСобрал деревянный пазл
Sergey Matveev [Sat, 28 Dec 2024 22:51:55 +0000 (01:51 +0300)]
Собрал деревянный пазл

Подарили на день рождения, но собрал под конец ноября. Не картонный, а
деревянный, толстый. Формы элементов самые разнообразные и, как мне
друзья сказали, что раз женщины нет, то хотя бы на их формы в пазле
можно полюбоваться будет. На картине мужик флиртует с дамой, но если
издалека посмотреть, то видно будет лицо Зигмунда Фрейда. Собирать
подобный, как мне показалось, проще чем классические, где только по
картинке ориентироваться можно.

4 months agoАрхитектура экосистемы интернета
Sergey Matveev [Sat, 28 Dec 2024 09:53:45 +0000 (12:53 +0300)]
Архитектура экосистемы интернета

https://ii.org.ru/magazine/internet-iznutri-arhitektura-ekosistemy-interneta/
https://ii.org.ru/wp-content/uploads/2024/08/ii_bookwebfix4-1.pdf
Как же я офигел от факта наличия подобной книги! Уйму времени пытался
найти что-то подобное, но всё лишь только по маленьким кусочкам то тут,
то там. А тут увидел упоминание журнала в одном блоге, пошёл его искать,
дальше пошёл глядеть на разделы, где упоминалась эта книга. Причём в
разделе "все номера" есть всё, кроме этой книги.

4 months agolinkmeup подкаст про спутниковую связь
Sergey Matveev [Fri, 27 Dec 2024 09:29:54 +0000 (12:29 +0300)]
linkmeup подкаст про спутниковую связь

https://linkmeup.ru/podcasts/2725/
https://ru.wikipedia.org/wiki/Орбита_«Молния»
Со школы тема спутников и космических кораблей у меня в жизни всегда
была, ибо и город этому посвящён и родители на космос работали. Затем в
институте учился строить эти самые корабли с разгонными блоками. И даже
на работе тема со спутниковой связью имеется.

И вот в этом выпуске linkmeup-а я не только почти ничего нового не
узнал, но и куда больше мог бы ещё рассказать, причём не только по теме
самой связи, но и тех же орбит или особенностей работы аппаратов. Блин,
ну как можно сказать что орбита "Молния" это нечто среднее между
геосинхронной и низкой (потому что ни то, ни другое)? Или то, что именно
в комментариях сказали про орбиты захоронения? Вроде ещё неточности или
даже ошибки были.

4 months agoГод прошедший
Sergey Matveev [Fri, 27 Dec 2024 09:24:10 +0000 (12:24 +0300)]
Год прошедший

Относительно насыщенный вышел у меня год.

* был на грани увольнения с работы. Как и куча дум об уходе из профессии
  в принципе. Но благодаря одному коллеге, пока повременил со всем этим
* в пух и в прах разосрался с коллегой, даже не здороваемся. Хотя прежде
  были дружеские отношения и тьма времени проведённая за разговорами не
  касающимися работы
* сделал предложение выйти замуж. Получил отказ. Потерял 5кг веса после
* понял, что мне надо брать отпуск в августе, ибо именно в этот месяц
  меня накрывает недовольство и раздражение всем и вся
* во второй раз стал крёстным отцом
* побывал в Новосибирске, очень доволен поездкой. Был рядом с местом
  появления первого фидошного узла в СССР. Основной целью было отмечание
  дня рождения музея вычислительной техники Дмитрия Бачило
* на работе ощущение, что толком ничего не делал в этом году. Хотя вроде
  бы и уйму кода писал постоянно, админил что-то, отлаживал, но неужели
  это всё за 12 месяцев происходило? При этом во внутренних документах
  меня успели сделать и "senior разработчиком", и "архитектором
  решений", недавно и "старшим разработчиком криптографических
  протоколов". Но чувство бесполезности как и на самой работе, так и
  вообще по жизни -- всё сильнее и сильнее за последние месяцы

* начал ходить на оперы, и с нетерпением жду очередных. Огромное
  удовольствие от некоторых получил
* а вот на рок/метал концертах совсем мало побывал. Зато был на
  выступлении Пахома, авангардного психоделического панка

* попробовал вернуться в FidoNet, но не нашёл работающего софта под
  современные UTF-8 терминалы. Похоронил для себя эту сеть, всё
* прослушал (прочитал) кучу подкастов linkmeup.ru, просмотрел курсы по
  построению ЦОДов, понял что в некоторых местах я уже знаю теорию куда
  больше чем преобладающее большинство курсов мне могли бы дать. Ещё
  больше навозился с BGP, стал ещё и на работе его применять
* перестал поддерживать .ru домены. cypherpunks.ru превратился в
  cypherpunks.su. cryptoparty.ru в следующем году протухнет (стал
  cryptoparty.cypherpunks.su). А других и не осталось. Также протух
  GoVPN.info. Надежда что Госуслуги не нужны будут для не .ru/.рф

* пересел за HiDPI монитор, очень доволен
* добавил ещё 40TiB сырого места в сервер основной
* сменил изнашивающийся Philips сотовый телефон на Nokia с поддержкой
  VoLTE. Заряд держит почти так же долго, VoLTE даёт отличный user
  experience. Но да, всё ещё не отказался от сотового телефона

* на Хабре написал три статьи: по *PGP vs age/ssh, про VoRS, про
  эффективное общение на работе
* сделал маленькую систему issue tracking-а на основе plain text файлов
  и директорий, называемую schwabrak
* сделал continuous integration систему, переросшую в систему сборки и
  управления пакетами. Изначально называемую zwoki, затем BASS. Перевёл
  200+ пакетов на своём компьютере в неё. На работе используется для
  боевого проекта. Доволен результатом, не ожидал что будет и просто и
  так отлично работать
* для неё написал детерминированный pax архиватор detpax, который и вне
  BASS-а использую. Запомнился тем, что его написать было не самым
  тривиальным делом
* написал своё VoIP client-server решение, VoRS. Вовсю использовали и
  используем с коллегами. Простота, хороший user experience,
  защищённость (причём никакого TLS, Noise вместо)
* сделал компактный, детерминированный, потоковый, простой формат
  сериализации данных. Изначально названный YAC, затем переименованный в
  KEKS. Плюс реализации на Си, Go, Python, Tcl. Си и Go на одном уровне
  с MessagePack по производительности. А также форматы сертификатов и
  аналогов CMS-ок на его основе

4 months agoПарсинг команд в Adventureland
Sergey Matveev [Fri, 27 Dec 2024 08:57:37 +0000 (11:57 +0300)]
Парсинг команд в Adventureland

https://monsterfeet.com/grue/notes/56
https://ifdb.org/viewgame?id=dy4ok8sdlut6ddj7&reviews
В игре очень примитивный парсер команд, ибо она вообще для TRS-80
создавалась изначально. В ней есть головоломка с медведем, на которого
надо накричать (scream), чтобы он так поразился этому, что упал бы в ущелье.

Один рецензент написал, что в детстве никак не мог пройти этот этап в
игре, не знал что надо делать. И написал "screw bear". Но парсер
вычитывает только первые символы каждого слова. "screw" и "scream" у
него совпали, поэтому "The bear is so startled it falls off the ledge".

4 months ago10GbE twinax DAC vs витая пара 8P8C
Sergey Matveev [Fri, 27 Dec 2024 08:00:24 +0000 (11:00 +0300)]
10GbE twinax DAC vs витая пара 8P8C

Дома у меня два сервера соединены twinax DAC-ом, а мой NUC через обычный
Ethernet по витой паре (5 или ниже категории) 8P8C соединением. ping-ом
можно увидеть что у витой пары и задержка больше и её колбасит и ошибки
приёма регулярные. Но 10Gbps вытягивает, без проблем.

Но я такие 10GbE соединения называю ненастоящим 10GbE. Ибо из-за
задержек user experience будет отличаться даже невооружённым глазом.
Делаю find . -exec stat {} + >/dev/null на сервере в директории с
музыкой, чтобы прогреть его ARC кэш. Делаю umount и mount (чтобы кэша не
было) этой директории по NFS на компьютерах подключённых DAC-ом и витой
парой. Ну и выполняю такой же find.

На DAC-е это занимает ~5сек. На витой паре ~10.5сек. На 1GbE, правда
идущем ещё и через WireGuard, занимает вообще 46сек. Ошибок передачи на
витой паре при этом не было (счётчики не вырастали). При этом, компьютер
с витой парой и мощнее и сетевуха в нём получше, понавороченнее.

4 months agoЗаценил "Мрьтвоземъ" альбом Всполоха
Sergey Matveev [Thu, 26 Dec 2024 08:45:31 +0000 (11:45 +0300)]
Заценил "Мрьтвоземъ" альбом Всполоха

https://vspolokh.bandcamp.com/album/mertvozem
Очень понравились их два имеющихся у меня альбома. Когда узнал что в
этом году должен был выйти ещё один -- то прям ждал его. Появился вот.
Однозначно прям лучший что у них слышал! Взяли всё самое лучшее что
умеют и отточили. Превосходный альбом, который слушал снова и снова!

4 months agoIPv6 vs IPv4 от Етайп провайдера
Sergey Matveev [Wed, 25 Dec 2024 12:41:10 +0000 (15:41 +0300)]
IPv6 vs IPv4 от Етайп провайдера

https://etype.ru/ipv6-vs-ipv4-chto-luchshe
https://lentel.ru/internet/services/internet2.0/
"В основе протокола IPv4 – технология NAT"
"IPv6 отошел от системы NAT, и каждый пользователь получил собственный IP-адрес"
"IPv6 представляет собой адрес в виде 8 чисел. Есть возможность создать
340 вариантов комбинаций"
"IPv6 протокол основан на шестнадцатеричном коде"
"Протокол применяет IPsec-шифрование, которое целиком скрывает трафик.
Из-за IPsec-шифрования его фактически невозможно расшифровать. В IPv6
она вшита по умолчанию"
"За применением IPv6 следит Google"
"Преодоление ограничений NAT дало расширить список адресов с 32 до 128 бит"

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

О чём тут вообще речь идёт?

Впрочем, некоторые вещи приятно отметили: быстрее обрабатывать
заголовки, отсутствие фрагментации, NAT-а, QoS потенциальный,
автоматическая настройка адресов.

Провайдер Лентел же называет IPv6 "Интернетом 2.0".

4 months agoEXPLAIN команда PostgreSQL и оптимизация запросов
Sergey Matveev [Wed, 25 Dec 2024 09:47:42 +0000 (12:47 +0300)]
EXPLAIN команда PostgreSQL и оптимизация запросов

https://habr.com/ru/companies/spectr/articles/869472/
Очень много статей на тему планировщика запросов в Postgres, упоминаний
важности EXPLAIN команды, но не вспомню были ли примеры того, как можно
использовать информацию из EXPLAIN-а. Типа всё очевидно и сами догадайтесь
что можно подкрутить для ускорения запроса? На моей практике то так и
было всегда, но с картинками и чёткими примерами с work_mem и индексами
куда приятнее читать.

4 months agoSierra On-Line Video Catalogue
Sergey Matveev [Tue, 24 Dec 2024 18:21:24 +0000 (21:21 +0300)]
Sierra On-Line Video Catalogue

https://archive.org/details/SierraOnLineVideoCatalogue1988
Посмотрел три видео-каталога игр от Sierra. Там так часто повторяют
"3D animated adventure", хотя даже prerendered 3D никакого нет. Чистый
2D, ничего кроме. Ещё забавно слышать "cinematic" качество, хотя кадры
из игры при этом возможно даже возможности простого VGA не вытягивают.
Но многие игры там хороши, спору нет.

4 months agoБарьеры и модели памяти
Sergey Matveev [Tue, 24 Dec 2024 08:44:20 +0000 (11:44 +0300)]
Барьеры и модели памяти

https://habr.com/ru/articles/869188/
https://www.puppetmastertrading.com/images/hwViewForSwHackers.pdf
Интересная вводная статья поясняющая что такое модель памяти и какие
проблемы возможны связанные с ними. Мне пока не приходилось с этим
сталкиваться. Точнее на практике все обращения к shared/concurrent
данным всё равно идут через, хотя бы, использование mutex-ов.

4 months agoВыручка компьютерных клубов 25+млрд₽
Sergey Matveev [Tue, 24 Dec 2024 08:21:51 +0000 (11:21 +0300)]
Выручка компьютерных клубов 25+млрд₽

https://habr.com/ru/news/869222/
В 2000-х у меня много одноклассников прогуливало уроки, чтобы провести
время за Counter Strike в Интернет-кафе. Интернет нафиг никому не нужен
был. Коллега, который постарше, говорит, что его одногруппники уже ради
Интернета туда ходили, ибо в общежитии он был слишком медленным. Потом я
вообще перестал видеть упоминание компьютерных клубов где-либо, ибо
Интернет у всех дома появился. И лишь несколько лет назад начал обращать
внимание на то тут, то там появляющиеся киберспортивные заведения.

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

4 months agoСнова YouTube не работает
Sergey Matveev [Tue, 24 Dec 2024 08:13:10 +0000 (11:13 +0300)]
Снова YouTube не работает

https://lenta.ru/news/2024/12/23/youtube/
Про замедление ничего не знаю -- у меня его ни разу не было. Просто
вообще не работает TCP/HTTPS до CDN серверов. Но сейчас нечто другое:
мне по HTTPS-у Google-овые CDN сервера отвечают 403. И вот как мне
поверить в то, что это не именно Google занимается блокировкой? Или я
настолько не понимаю устройство сетей? Чтобы "наши" смотри засунуть в
TLS-защищённое соединение 403, то это же надо сделать полноценный MitM.
А я проверял: там и домены и сертификаты от Google. Именно они выдают
403, чего прежде не было.

4 months agoСходил на рождественский концерт оркестра волынщиков "City Pipes"
Sergey Matveev [Sun, 22 Dec 2024 18:23:58 +0000 (21:23 +0300)]
Сходил на рождественский концерт оркестра волынщиков "City Pipes"

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

Среди всяких Beatles, Queen, AC/DC и другого рока, даже Prodigy был. Ну
и конечно и наша "В лесу родилась ёлочка", со всякими "Silent Night" и
прочими английскими рождественскими, по тематике.

4 months agoЯзык лёгкого поведения
Sergey Matveev [Sun, 22 Dec 2024 12:54:23 +0000 (15:54 +0300)]
Язык лёгкого поведения

https://habr.com/ru/articles/867002/
Очень понравились мысли автора, так как абсолютно точь-в-точь такие же
волнуют и меня. Жутко бесит, когда используют слова, аналог которых у
нас вовсю есть. Если и нет, то почему бы не придумать?

    Когда поклонялись Франции, у нас был фризёр. Поклонение Франции
    сменилось поклонением Германии, фризёра выкинули и заменили
    парикмахером. Сейчас, когда идолом стала Америка, уже почти родного
    "парикмахера" заменило слово "барбер".

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

4 months agoПосмотрел "Падение империи"
Sergey Matveev [Sat, 21 Dec 2024 22:13:18 +0000 (01:13 +0300)]
Посмотрел "Падение империи"

https://ru.wikipedia.org/wiki/Падение_империи
Ибо порекомендовали. Но... я не понял ради чего и что там было смотреть.
В крупнейшем террористическом государстве началась небольшая буча и
внутренние волнения.

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

Единственного персонажа показали, который по признаку "кто откуда?"
сразу же убивает. На весь фильм такой один нашёлся. Да у нас под боком
многомиллионная нацистская организация таких вот. Уж лучше посмотреть
"Солнцепёк" (3a378f33ce667972c1019caaa29732c80811f23c).

Ну и да, конечно же, президента в фильме должна кончить негритянка.

4 months agoСходил на Magic Cellos Band исполняющих мировые рок-хиты
Sergey Matveev [Sat, 21 Dec 2024 20:11:34 +0000 (23:11 +0300)]
Сходил на Magic Cellos Band исполняющих мировые рок-хиты

Три виолончелиста, басист, барабанщица, скрипачка исполняли хиты
AC/DC, Metallica, Rammstein, Nirvana, Queen, очевидную Deep Purple,
Cranberries, ещё что-то знакомое, но забыл названия. В целом то
понравилось, но виолончели не как у Apocalyptica с distortion-ом,
так что звук не сильно насыщен. Даже на волынках его было куда больше.

4 months ago100+Mbps 5G или 8Mbps ADSL?
Sergey Matveev [Sat, 21 Dec 2024 11:28:37 +0000 (14:28 +0300)]
100+Mbps 5G или 8Mbps ADSL?

Один знакомый из Голландии до сих пор использовал ADSL на несколько
мегабит. С месяц назад пересел на 5G провайдера. Скорости под
100-120Mbps.

Но никакого IPv6 ни в одном месте (а ведь в этой стране всё очень хорошо
с ним, насколько слышал, даже на ADSL). Никаких статических IP адресов.
Обнаружилось, что трафик между машинами в локальной сети через этот 5G
маршрутизатор не идёт вовсе. Действительно, кому нужно чтобы машины в
LAN общались между собой? Точно не известно, не понятно, но похоже что
также не работает всё корректно и если на одном MAC-адресе будет
несколько IPv4 адресов. Про такие особенности/ограничения вообще не
слышал прежде. А потом ещё обнаружилось, что банальный fetchmail
получающий по POP3/IMAP4 почту с VPS-ки отваливается регулярно, виснет
и, проще говоря, не работает.

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

4 months agoСходил на оперу "Фауст" Шарля Гуно
Sergey Matveev [Sat, 21 Dec 2024 11:14:28 +0000 (14:14 +0300)]
Сходил на оперу "Фауст" Шарля Гуно

https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D1%83%D1%81%D1%82_(%D0%BE%D0%BF%D0%B5%D1%80%D0%B0)
Боялся что французский язык всё испортит, но нормально, не сильно резал
слух. В целом понравилась, но не такой восторг чтобы я захотел снова на
подобное сходить, в отличии от "Летучего голландца" или "Реквиема". Но
лучше Аиды (411cc4cd20be6c375c0cbb101330d1aa2fd7fae8), как по мне. Очень
понравилась игра Мефистотеля.

4 months ago34 indie игр
Sergey Matveev [Sat, 21 Dec 2024 11:10:10 +0000 (14:10 +0300)]
34 indie игр

https://www.youtube.com/watch?v=OW22UW1rzS0
Не раз говорил, что всякие mainstream игры вот не тянуть в них поиграть.
Недавно видел Anger Foot (6abd846d0d5d7551aadee1c2e137232d090ff0a5), в
который бы не прочь поиграть. А в подборке по ссылке чуть ли не все
вызывают интерес (Anger Foot там тоже есть).

4 months agoМорковный кекс
Sergey Matveev [Wed, 18 Dec 2024 19:08:48 +0000 (22:08 +0300)]
Морковный кекс

Недавно я переименовал свой "YAC" кодек в "KEKS". На днях занимался
оптимизацией производительности этого кекса. А пару часов назад я
осознал, что по пути домой я взял морковный кекс. Даже не вспомню
когда я сам захотел именно кекса поесть.

4 months agoПоказали Go код написанный ChatGPT
Sergey Matveev [Wed, 18 Dec 2024 19:04:08 +0000 (22:04 +0300)]
Показали Go код написанный ChatGPT

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

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

А ещё ChatGPT любит в программах интерактивно считывать входные
значения, прямо как в школе учили "введите число n: ". Был у нас один
стажёр, который довольно быстро сдал задачу с такой вот интерактивщиной,
но после моего ревью ни одного куска кода мы больше не увидели. Теперь
уверен, что это ChatGPT написал.

4 months agoLet's Encrypt будет выпускать 6-ти дневные сертификаты
Sergey Matveev [Tue, 17 Dec 2024 08:57:40 +0000 (11:57 +0300)]
Let's Encrypt будет выпускать 6-ти дневные сертификаты

https://letsencrypt.org/2024/12/11/eoy-letter-2024/
https://dxdt.ru/2024/12/16/14387/
https://www.schneier.com/blog/archives/2024/12/short-lived-certificates-coming-to-lets-encrypt.html
Автор статьи на dxdt ещё считает что и броузеры вскоре перестанут
поддерживать сертификаты относительно продолжительной жизни. И да, для
подобных сертификатов уже подразумевается использование ACME/whatever,
ибо по два раза в неделю (с опережением же надо) вручную продлевать
сертификаты никто не станет. Даже неделю ваши ресурсы уже не смогут
проработать без третьего лица.

4 months agoНебольшая история появления CBOR, а также Binc формата
Sergey Matveev [Mon, 16 Dec 2024 20:17:52 +0000 (23:17 +0300)]
Небольшая история появления CBOR, а также Binc формата

http://ugorji.net/blog/go-codec-cbor
http://ugorji.net/blog/announcing-binc-data-interchange-format
http://ugorji.net/blog/update-on-binc-data-interchange-format
Один чувак пошёл в IETF стандартизовывать свой CBOR, а другой делать
быстрый и простой Binc формат. Про последний я поэтому и не слышал
прежде. Выглядит приятно, идея с символами (reusable строчками) мне
нравится и сам думал про что-то такое, но это усложнило бы для embedded
решений реализации. Оба были не удовлетворены тем, что в MessagePack нет
времени как типа данных, ну и дифференциации строчек.