]> Sergey Matveev's repositories - stargrave-blog.git/log
stargrave-blog.git
12 days agoУчаствовал в кино-викторине
Sergey Matveev [Fri, 18 Apr 2025 06:46:25 +0000 (09:46 +0300)]
Участвовал в кино-викторине

На работе провели сабж между службами. На 90% всё сплошные фильмы времён
СССР, где я не силён, как и более молодые коллеги. Я где-то 1/3 или 1/2
вопросов мог бы ответить. Коллеги бы справились и без меня, но кроме
одного вопроса, где я дал правильный и уверенный ответ на тему фильма
"Убить дракона" (afef111c5fedb37d00145abaedc2ff3feed28418). Заняли
второе место с отрывом в одно очко.

13 days agoНасколько много сливают информацию web-обозреватели?
Sergey Matveev [Thu, 17 Apr 2025 05:37:29 +0000 (08:37 +0300)]
Насколько много сливают информацию web-обозреватели?

https://sizeof.cat/post/web-browser-telemetry-2025-edition/
Вот человек заморочился и отследил, в том числе, куда именно делаются
подключения.

2 weeks agoОбновление ПК в 2025
Sergey Matveev [Tue, 15 Apr 2025 06:43:02 +0000 (09:43 +0300)]
Обновление ПК в 2025

https://habr.com/ru/articles/900778/
Какие критерии успешного обновления ПК? Как гласит статья:
* "Веб-браузер больше не тормозит" -- вот да, теперь surf-ить просторы
  Паутины это уже как Crysis запустить по ресурсам. Безумие, которое не
  останавливается
* "Однако "мгновенной загрузки любой программы" о чем я мечтал нету.
  Софт хоть и стартует пошустрее, но ждать приходится все равно ощутимое
  время" -- я поэтому и люблю адекватное ПО и не переношу ожидания или
  задержки при интерактивное работе

2 weeks agoCA/B форум решил сократить срок действия сертификатов до 47 дней
Sergey Matveev [Mon, 14 Apr 2025 12:06:40 +0000 (15:06 +0300)]
CA/B форум решил сократить срок действия сертификатов до 47 дней

https://dxdt.ru/2025/04/14/15371/
https://www.opennet.ru/opennews/art.shtml?num=63069
Как верно заметил автор:

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

А так как WWW рулится де-факто всего одним CA, под юрисдикцией США, то у
них (ещё более) офигенный инструмент цензуры.

2 weeks agoНе показывать emoji
Sergey Matveev [Mon, 14 Apr 2025 09:40:43 +0000 (12:40 +0300)]
Не показывать emoji

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

Графический Links у меня не рендерит их, как и многое из Unicode тоже.
Не проблема. А вот терминал прекрасно отображает. Не нравится мне это.
Надо пропатчить терминал.

К сожалению, emoji не расположены в одном диапазоне значений Unicode.
Поэтому пришлось написать Perl программку, которая парсит emoji-data.txt
из Unicode стандарта, интерпретирует диапазоны, выводит готовый Си код с
полным списков всего что касается emoji. А сам терминал bsearch-ем
напротив этого списка проверяет выводимые руны и заменяет на невалидную,
если нашёл emoji. Благо, код в suckless terminal мало и место для
вставки находится моментально.

2 weeks agoНеработающий git stash под Ubuntu
Sergey Matveev [Sun, 13 Apr 2025 08:04:01 +0000 (11:04 +0300)]
Неработающий git stash под Ubuntu

Как-то на работе во время парного программирования, у человека git stash
выдавал ошибку: мол, обломались, ничего не смог сделать. Эмпирически
выяснили, что если git stash делать в SHA256 репозитории, то всё плохо.
Версия Git 2.43.0. Не разбирались до конца в чём же дело, но понадеялись,
что это просто бага в самой 2.43 версии. Собрал сегодня её и никаких
проблем не обнаружил. А так как у человека самая обычная vanilla Ubuntu,
почти голая, без настроек персональных, то, судя по всему, это именно
они умудрились как-то собрать Git таким образом, что поломали stash. Ну
и как под этим разработчику работать?

2 weeks agoМнение о наших собеседованиях
Sergey Matveev [Sat, 12 Apr 2025 14:54:42 +0000 (17:54 +0300)]
Мнение о наших собеседованиях

Услышал тут мнение от человека, который когда-то проходил наши
собеседования на начинающего разработчика. Он был на собеседованиях в
Сбере, в Яндексе, обсуждал со своими знакомыми, тоже куда-то
устраивавшимися.

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

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

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

2 weeks agoПоздравление с днём космонавтики от наших собак
Sergey Matveev [Sat, 12 Apr 2025 11:59:31 +0000 (14:59 +0300)]
Поздравление с днём космонавтики от наших собак

2 weeks agoРеконструкция полёта Гагарина
Sergey Matveev [Sat, 12 Apr 2025 07:14:05 +0000 (10:14 +0300)]
Реконструкция полёта Гагарина

https://lozga.livejournal.com/291448.html
https://yandex.ru/video/touch/preview/2332735619554566510

2 weeks agogzip на 40% быстрее из-за ускоренного CRC32
Sergey Matveev [Fri, 11 Apr 2025 07:24:31 +0000 (10:24 +0300)]
gzip на 40% быстрее из-за ускоренного CRC32

https://habr.com/ru/news/899812/
Типа он отъедает половину всего времени работы декомпрессора. А я по
статьям из dffa894abeab4eaec509b95af9d23b51e4e0f844 уже наслышан, что
автору LZ4/Zstandard пришлось изобретать более быстрый алгоритм контроля
целостности, ибо CRC32 слишком медленным оказался.

3 weeks agoРетро GNU/Linux на ретро-ноутбуке
Sergey Matveev [Wed, 9 Apr 2025 06:40:27 +0000 (09:40 +0300)]
Ретро GNU/Linux на ретро-ноутбуке

https://habr.com/ru/articles/898958/
Ох, насколько же у меня всё было похоже на описанное в статье! Правда,
Mandrake был 7.x, на двух дисках. Запомнилось, что там применялся EGCS,
вместо чистого GNU GCC. Ну и у меня AMD K6-2 III был, никогда никаких
Pentium-ов.

3 weeks agoNNCPNET
Sergey Matveev [Sun, 6 Apr 2025 07:35:25 +0000 (10:35 +0300)]
NNCPNET

http://lists.cypherpunks.su/archive/nncp-devel/87ecy76f5v.fsf@complete.org/T/
https://lobste.rs/s/gzuzyp/email_over_nncp_via_exim
Тут люди чего-то изобретают, создают какие-то сети почтовые поверх NNCP.
Вот только ни одна ссылка с salsa.debian.org у меня не открывается.
Поэтому вообще никаких деталей не знаю.

3 weeks agoСнова Реквием
Sergey Matveev [Sun, 6 Apr 2025 07:33:43 +0000 (10:33 +0300)]
Снова Реквием

Во второй раз (ec33ecd37983d8ad4ffeae49bf2408a0ce8ef62d) сходил на
Реквием Верде. Ну и, похоже, что это и конец походов по театрам для меня
(68a408984376417d3ab2a343c31330068b5860f6)

3 weeks agoВалидация структур данных напротив схем
Sergey Matveev [Fri, 4 Apr 2025 18:58:30 +0000 (21:58 +0300)]
Валидация структур данных напротив схем

http://www.keks.cypherpunks.su/Schemas.html
С самого начала появления YAC/KEKS проекта я откладывал такую тему как
валидация структур данных. Сам по себе кодек должен быть schemaless: для
декодирования ничего дополнительного не нужно. Но схема всё же нужна для
задания какие поля, какого типа, какой длины, каких значений должны же
быть. Для JSON есть JSON Schema как пример.

Соответственно, нужно и понять как задавать схемы, а потом понять как их
применять и валидировать данные напротив них. JSON Schema или CDDL,
конечно, не вариант для Си -- слишком тяжеловесно. Генерировать код
декодирования или проверки из этих схем -- я не потяну такую задачу,
уверен что не простая, особенно когда, в отличии от ASN.1/protobuf,
порядок следования элементов не всегда априори известен.

Более чем полгода откладывал, но менее чем за неделю всё придумал и
реализовал. 90% всех проверок -- очень однообразны и просты. Можно
значит написать какие-то простые правила описывающие как проводить
проверки. Так сказать, сделать некую validation (virtual) machine,
которой управлять через подаваемые команды валидации. Предполагая, что
сама реализации такой верификации по командам/правилам/спецификациям
должна быть очень простой для реализации даже для Си.

В итоге реализовал подобное для Си и для Go. В Си это, если убрать
огромный код связанный с проверкой точности TAI полей и всякие
красивости поясняющие где и какая валидация не прошли -- это займёт
где-то 200-300 строк кода.

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

Некоторые команды принимают n-ое кол-во аргументов, какие-то без них
вообще. Команды реализовал: ". k" -- "взять" элемент словаря или списка;
"E" -- проверить что взятый элементы существует; "!E" -- не существует;
"*" -- применить последующую команду для каждого элемента выбранного
словаря/списка; "T t0 [t1 ...]" -- проверить что тип выбранного элемента
находится в множестве (t0[, t1 ...]); "> n" -- проверить что значение
int или длина списка/словаря больше указанного числа; "< n" -- меньше;
"S s" -- проверить выбранный элемент напротив схемы s; "TMP p" -- time
maximal precision, проверить что точность выбранного поля со временем не
превышает указанную; "= v" -- проверить что выбранная строка равна v.

Например проверка такой CDDL схемы:

    ai = text .gt 0
    fpr = bytes .size 32
    our = {a: ai, v: bytes/text, fpr: fpr, ?comment: text}

будет выражаться таким набором команд:

    {"our": [
        [".", "a"],
        ["E"],
        [".", "a"],
        ["T", "STR"],
        [".", "a"],
        [">", 0],

        [".", "v"],
        ["E"],
        [".", "v"],
        ["T", "BIN", "STR"],

        [".", "fpr"],
        ["E"],
        [".", "fpr"],
        ["T", "BIN"],
        [".", "fpr"],
        [">", 31],
        [".", "fpr"],
        ["<", 33],

        [".", "comment"],
        ["T", "STR"],
    ]}

    latitude = -90..90
    longitude = -180..180
    where = [latitude, longitude]
    wheres = [+ where]

    {
        "where": [
            [".", "."],
            ["T", "LIST"],
            [".", "."],
            [">", 1],
            [".", "."],
            ["<", 3],
            [".", "."],
            ["*"],
            [".", "INT"],
            [".", 0],
            [">", -91],
            [".", 0],
            ["<", 91],
            [".", 1],
            [">", -181],
            [".", 1],
            ["<", 181],
        ],
        "wheres": [
            [".", "."],
            ["T", "LIST"],
            [".", "."],
            [">", 0],
            [".", "."],
            ["*"],
            ["S", "where"],
        ],
    }

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

Как их генерировать? Я написал реализацию на Tcl, в которой множество
вспомогательных коммандочек имеется. В итоге содержимое файла с полным
описанием правил валидации публичного ключа (который может быть
подписан, который является и cm/signed структурой):
    SCHEMAS {
        av {
            {HAS a}
            {TYPE= a {STR}}
            {!EMPTY a}
            {HAS v}
            {TYPE= v {BIN}}
        }

        pub {
            {HAS load}
            {SCHEMA= load load}
            {TYPE= sigs {LIST}}
            {SCHEMA* sigs sig}

            {TYPE= pubs {LIST}}
            {!EMPTY pubs}
            {SCHEMA* pubs pub}
        }

        load {
            {HAS t}
            {STR= t pub}
            {HAS v}
            {SCHEMA= v pub-load}
        }

        sig {
            {HAS tbs}
            {HAS sign}
            {SCHEMA= tbs tbs}
            {SCHEMA= sign av}
        }

        exp {
            {TYPE= . {LIST}}
            {LEN= . 2}
            {TYPE* . {TAI64}}
            {TAKE .}
            {EACH}
            {TIMEMAXPREC 0}
        }

        fpr {
            {TYPE= . {BIN}}
            {LEN= . 32}
        }

        tbs {
            {HAS sid}
            {SCHEMA= sid fpr}

            {HAS cid}
            {TYPE= cid {HEXLET}}

            {HAS exp}
            {SCHEMA= exp exp}

            {TYPE= nonce {BIN}}
            {!EMPTY nonce}

            {TYPE= when {TAI64}}
        }

        pub-load {
            {HAS id}
            {SCHEMA= id fpr}

            {!HAS crit}

            {IS-SET ku}

            {HAS pub}
            {TYPE= pub {LIST}}
            {!EMPTY pub}
            {SCHEMA* pub av}

            {HAS sub}
            {TYPE= sub {MAP}}
            {!EMPTY sub}
            {TYPE* sub {STR}}
        }
    }

Что, с моей точки зрения, не сильно и не существенно отличается от
описаний ASN.1 или CDDL. Я их писал просто с ходу, без запинок, без
особых раздумий. В самой Tcl утилитке, например STR= (убедиться что k
является строкой со значением v) описан вот так:

    proc STR= {k v} {
        evals [subst {
            {TAKE $k}
            {TYPE {STR}}
            {TAKE $k}
            {EQ $v}
        }]
    }

где более низкоуровневые TAKE, TAKE, EQ команды описаны так:

    proc TAKE {v} {
        if {[string is digit $v]} {set v [list INT $v]} {set v [list STR $v]}
        subst {{LIST {{STR .} {$v}}}}
    }
    proc EQ {v} {subst {{LIST {{STR =} {STR $v}}}}}
    proc TYPE {vs} {
        set l {{STR T}}
        foreach v $vs {lappend l "STR $v"}
        subst {{LIST {$l}}}
    }

а какой-нибудь IS-SET:

    proc IS-SET {k} {
        evals [subst {
            {TAKE $k}
            {TYPE {MAP}}
            {TAKE $k}
            {GT 0}
            {TAKE $k}
            {EACH}
            {TYPE {NIL}}
        }]
    }

что затем уже через LIST/STR/INT команды кодируется в KEKS.
Соответственно, пишем на Tcl подобные схемы, преобразуем их в KEKS
файлы, через go:embed встраиваем во время компиляции в Go код, где
декодируем и передаём в функции валидации. Аналогично и для Си. А так
как схемы, в общем то, являются самыми обычными Tcl программами, то там
всякого можно понапридумывать для сокращения писанины.

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

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

4 weeks agoБанковская карта без сотового
Sergey Matveev [Tue, 1 Apr 2025 17:47:27 +0000 (20:47 +0300)]
Банковская карта без сотового

Добровольно-принудительно на работе нам выдают банковские карты одного
банка. Говорю что не использую сотовый телефон, могу дать городской.
Обращаются к старшей: мол, тут человек без сотового. На меня оборачиваются
пять человек, вся комната. "Как же так, ни один банк без сотового не
выдаст карту". Отвечаю, что "со Сбером проблем не было". После этого
сказали, что пускай напишу городской, выдали карту. Хотя там в анкете
явно есть пункт "нет мобильного телефона".

4 weeks agoЯ с чёлкой
Sergey Matveev [Tue, 1 Apr 2025 15:03:53 +0000 (18:03 +0300)]
Я с чёлкой

Пару недель назад я криво подстригся. Сделал одну глупость и у меня
что-то типа чёлки появилась. Конечно же временно, пока волосы на
несколько сантиметров не дорастут. Был тут на дне рождения у друзей и
мне сказали что с ней я похож на Винсента (Траволта) из Криминального
Чтива (действительно так и есть) и помолодел лет на пять.

4 weeks ago16-bits.ru только на картриджах Game Boy
Sergey Matveev [Tue, 1 Apr 2025 06:48:18 +0000 (09:48 +0300)]
16-bits.ru только на картриджах Game Boy

https://16-bits.ru/%d0%b0%d0%bd%d0%be%d0%bd%d1%81-01-04-25/
Из-за блокировок со стороны РКН и Google, а также недостатков других
альтернатив, 16-bits.ru будет делать выпуски на картриджах для Game Boy,
что крайне удобно и просто.

4 weeks agoЗаблокировано -- и точка
Sergey Matveev [Tue, 1 Apr 2025 06:43:38 +0000 (09:43 +0300)]
Заблокировано -- и точка

https://habr.com/ru/news/896300/
Новый долгожданный сервис от Роскомнадзора.

4 weeks agoЭдуард Лимонов участвовал в написании Си
Sergey Matveev [Tue, 1 Apr 2025 06:41:14 +0000 (09:41 +0300)]
Эдуард Лимонов участвовал в написании Си

https://habr.com/ru/articles/895882/

4 weeks agoКлоны рядом с Арбатом
Sergey Matveev [Mon, 31 Mar 2025 18:59:00 +0000 (21:59 +0300)]
Клоны рядом с Арбатом

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

4 weeks agoКонец театров
Sergey Matveev [Mon, 31 Mar 2025 18:35:37 +0000 (21:35 +0300)]
Конец театров

https://www.m24.ru/articles/kultura/22112024/745667
Пару недель назад вступили новые правила: в театры и на концерты теперь
билеты приобретаются только с вбиванием паспортных данных и предъявлением
оных при входе. У нас билеты пока были приобретены заранее и без этих
правил, но в выходные вот видели как на входе в оперу сверяли паспорта.

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

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

4 weeks agoСходил на оперу "Иоланта"
Sergey Matveev [Mon, 31 Mar 2025 18:31:01 +0000 (21:31 +0300)]
Сходил на оперу "Иоланта"

https://ru.wikipedia.org/wiki/Иоланта_(опера)
После пятичасовой Вагнеровской "Тристан и Изольда", Иоланта на полтора
часа с антрактом -- пролетела вмиг. По началу было скучно, но когда
пошли мужские арии, то уже начало нравится. Были в Геликон-опере, где
все костюмы были под современные переделаны. Когда показывают гламурных
девочек, но поют про что-то типа пряжи -- это вызывает диссонанс. Нам с
мамой эта современность костюмов/декораций не понравилась. Например в
Новой Опере на Лоэнгрине -- рыцарь был в костюме-тройка, но это не
бросалось в глаза, не вызывало диссонанса, не сбивало. Музыка -- ну типа
нормально, но не более. Мама сделала окончательный вывод: с Вагнером
пока ничто не сравниться.

4 weeks agoSHA-256, RSA в Симпсонах
Sergey Matveev [Sat, 29 Mar 2025 09:59:14 +0000 (12:59 +0300)]
SHA-256, RSA в Симпсонах

В Симпсонах, 31-ый сезон, 13-ая серия, есть тема про Frinkcoin.
С упоминаниями настоящих хэшей и RSA.

4 weeks agoПочинил скорость на VPS для IPv6
Sergey Matveev [Fri, 28 Mar 2025 13:34:27 +0000 (16:34 +0300)]
Починил скорость на VPS для IPv6

Перейдя на другой VPS провайдер для IPv6 Интернета, с самого начала у
меня с ним только одна проблема: низкая скорость ко мне, всего десятки
килобайт в секунду, или пару сотен если несколько потоков параллельно.
Отдача трафика на мегабайтах в секунду, проблем нет.

Время от времени пытался выяснять в чём проблема, почти всё время про
себя ругаясь на ТСПУ, который мне наверное всё и урезает, чтобы VPN не
использовал.

Я пробовал WireGuard. Пробовал просто IP-in-IP туннель. Пробовал всё это
пропускать уже поверх IPv6 через вторую VPS-ку. Все автономные системы
российские, все адреса тоже, сети тоже, никаких зарубежных. fetch ISO
образа с mirror.yandex.ru на VPS-ке идёт быстро, а через неё медленно.
iperf3 показывает, что скорость внутри VPN-а между мной и самой VPS-кой
хорошая. Но как только "выхожу" куда-то наружу, то на вход проседает.

Думал, что это DPI так shape-ит трафик. Не нашёл ни одного готового
решения чтобы UDP трафик пускать через TCP-прокси. Ну или плохо искал
или что-то сложное попадалось. Хотел завернуть UDP пакеты WireGuard-а в
него. Написал на Go свой, на пару экранов кода. Просто перед содержимым
UDP пакета 16-бит длины добавляется. Не помогло. Решил шифровать первые
8-байт Blowfish (он реально вполне быстрый), а в начале делать простой
challenge-response authentication на основе хэша. Ну чтобы скрыть явные
инкапсулированные длины UDP пакетов проксируемых. Не помогло. Решил
ChaCha20 шифровать полностью весь пакет, так что TCP трафик полностью
становится неотличимым от шума. Не помогло. Решил дополнять каждый пакет
до большого фиксированного размера, чтобы было меньше корреляций с
размерами проксируемых пакетов. Не помогло. Стал генерировать
константный по кол-ву пакетов трафик: или у меня срабатывает таймер и
отправляется пустой (но фиксированный по размеру всё равно) пакет, либо
у меня есть UDP для отправки. Вижу что 1.5MBps трафик в обе стороны
идёт, iperf3 показывает симметричную скорость ограниченную туннелем. Ну
вот уж полностью стала отсутствовать корреляция между этим трафиком и
входящими пакетами, которые через туннель выйдут наружу. Тоже не помогло.
Благо, что каждая подобная правка это вопрос получаса работы at most,
ибо на Go, который даже в top не особо будет заметен.

Подумал что может быть hop count в IP пакетах как-то влияет? Поменял в
разные стороны на VPS -- не помогло, на её скорость (fetch .iso на ней)
никак не отражается.

Ну не может DPI как-то находить корреляции между входящим plaintext
трафиком и константным шумом. Кто ещё может как-то "вредить"? Начал
грешить на саму VPS-ку. Пошёл даже ядро пересобирать, подумав, что может
быть они какие-то патчи наложили мешающие делать VPN? До установки
нового ядра не успел дойти.

Вот где можно/нужно вставить sleep, чтобы VPN тормозит? По сути просто
навсего в forwarding plane. Никаких проблем если IP пакеты не
затрагиваются forwarding-ом. Уже почти сдавшись, решил поискать банально
"freebsd slow forwarding" и среди первых ссылок есть задача с темой тип
"медленный forwarding в xen". У меня, правда, KVM. И там рекомендуют
отключить аппаратную проверку контрольных сумм на виртуальном сетевом
адаптере. Я всю жизнь сплошь и рядом видел обсуждения и порицания
аппаратных ускорений. TSO и LRO обязательно надо отключать для
маршрутизатора -- это у меня с самого начала было. А вот из своих
рекомендаций я убрал отключение проверки контрольных сумм, ибо давно не
находил на них ругательств, вроде бы они не проблема. Поэтому забыл.

ifconfig vtnet0 -rxcsum -txcsum и скорость скачивания через VPN более
чем в сотню раз повышается, проблема решена. И стыдно, что забыл про
такую банальную штуку, но зато сколько софта понаписал, плюс очередной
неотличимый от шума протокол, даже квантовоустойчивый (ибо PSK :-)). Но
ни на одной VPS у меня не было такой проблемы. Какой-то не такой KVM у них.

5 weeks agoCarcass "Reek Of Putrefaction" -- рождение goregrind
Sergey Matveev [Mon, 24 Mar 2025 15:26:28 +0000 (18:26 +0300)]
Carcass "Reek Of Putrefaction" -- рождение goregrind

https://en.wikipedia.org/wiki/Reek_of_Putrefaction
С альбомом знаком давно. Так давно, что ещё не очень был наслушан
всякого горграйнда. Прослушал сейчас -- понимаю почему Carcass считают
прародителями этого жанра. Уже в 88-ом году всё было придумано ими. И
огромное количество каверов на всё их творчество исполняют.

5 weeks agoРаспараллеленный BLAKE3
Sergey Matveev [Mon, 24 Mar 2025 08:42:23 +0000 (11:42 +0300)]
Распараллеленный BLAKE3

https://github.com/BLAKE3-team/BLAKE3/releases/tag/1.7.0
https://www.linux.org.ru/news/opensource/17918577
В новой reference версии BLAKE3 на Си появилась возможность сборки с
oneTBB, позволяя распараллеливать вычисления. 4-х гигабайтный файл за
доли секунды у меня хэшируется теперь. Но их example программа tbb
версию использует только для mmap-нутых данных.

5 weeks agoGreylisting работает, вновь убедился
Sergey Matveev [Mon, 24 Mar 2025 07:19:39 +0000 (10:19 +0300)]
Greylisting работает, вновь убедился

Пока я общался с VPS провайдерами (f52906a5e4067b2bfc45c054c1cd222dae4d223a),
то отключил greylisting для ускорения переписки с раннее незнакомых адресов.
Больше недели был без него, затем больше недели как включил обратно. Разница
очень ощутима! В разы кол-во просачиваемого спама сокращается. И заметил, что
без greylisting спам сообщения очень большого размера (1-2 мегабайта) могут
прилетать.

5 weeks agoПодстановка мусора на www-сайтах, недоступность ресурсов
Sergey Matveev [Mon, 24 Mar 2025 06:09:05 +0000 (09:09 +0300)]
Подстановка мусора на www-сайтах, недоступность ресурсов

https://www.opennet.ru/opennews/art.shtml?num=62925
На прошлой неделе заметил, что пара блогов перестала обновляться.
Увидел, что они начали отдавать непонятную тарабарщину со случайными
значениями в заголовках. Не псевдослучайный шум, а наборы бессвязных
слов. А также видел обсуждения/предложения в других блогах о том, чтобы
подсовывать паукам зацикленные перенаправления или, вот, мусор. Плюс вот
новость о том, что всякие свободные проекты на серверах своих инфраструктур
вводят всякие ограничения и проверки, блокирующие целые сети, если есть
подозрения на то, что это пауки от ИИ. В рассылке Debian видел жалобы на
невозможность открыть какие-то ранее доступные их ресурсы. GNOME, судя
по новости, так вообще у себя решили заставлять пользователя (а точнее
его обозревателя) скачивать программу для вычисления proof-of-work.

Ну и вот пара блогов решила, что я тоже робот, хотя я не понимаю на
каком основании. Качается Atom-лента вызовом cURL, с честным
User-Agent-ом, говорящим что это feeder-качалка. Может быть, там
поменялась ссылка на блог, которая должна находится в robots.txt? Но я
же хочу штатно зайти на сайт обычным обозревателем, чтобы увидеть эту
новую ссылку, но уже главная выдаёт бредятину. Вынужден удалить эти
блоги и забыть о них.

Мой новый VPS провайдер работает сильно иначе чем предыдущий. Скорость
скачивания через него, как отмечал ранее, десятки килобайт в секунду.
Если это BitTorrent UDP трафик, то может превышать мегабайт. Плюс то ли
он весь Cloudflare блокирует, то ли Cloudflare блокирует его сеть, то ли
это блокировка ИИ-like адресов с их стороны и мой переезд на VPS совпал
со всеми этими пертурбациями. То ли он блокирует некоторые BitTorrent
сайты, находящиеся за Cloudflare, которые вроде бы у нас типа запрещены.
Но я уже и прежде писал, что всё что размещается за ними, почти
наверняка не будет доступно (9ec8af5c6c0a3d586e33640842652801f20d6f53,
5b16fb4fccf7e8062956aa169aec927ae4349a6d,
3377284e1f2e5c1db69e100ec32f8f5a92a08cb4,
6bbbada632a3727fa74995fa8e1700d389688ac9).

В комментариях на OpenNet понравилось: сайты, чтобы их не парсили
автоматизированно, добавляют уродскую разметку. Затем добавляют CAPTCHA,
которую распознают. Затем помещают за Cloudflare. Теперь вот уже
применяют PoW. Смотрят напротив GeoIP базы данных. DNSBL. Абсолютно
точно внедрят обязательную авторизацию через ЕСИА. Что дальше?
Использовать квалифицированную ЭЦП? Ввести OTP из SMS, двухфакторно же.
Или, как мне уже один VPS писал, с web-камерой связаться с ними для
идентификации. А ещё "Beat the DarkSouls boss on 512x512 window on WASM".
Хотя ведь уже была новость о том, что CAPTCHA придумали со встроенной
мини-игрой. И я наслышан про сложность Dark Souls-like игр.

5 weeks agoСходил на Only Fetish Fest: Black Metal Time
Sergey Matveev [Sun, 23 Mar 2025 13:02:49 +0000 (16:02 +0300)]
Сходил на Only Fetish Fest: Black Metal Time

Всё же для меня человечество ещё не придумало в музыке ничего лучше чем
black metal. Много я куда ходил, но не сравнится оно с интересным и
добротным блэком.

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

Продолжили Cage Of Creation из Суздаля. Два года назад в
91bf686031eb868a0d3b0f5dddcb2db9bf977c9d уже писал о них и ничего нового
не добавлю: интересное и мелодичное. Но к black сложно причислить, лишь
моментами.

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

Заканчивали сие мероприятие Passéisme. Полная противоположность
умиротворяющему спокойствию Olshanoe. Сплошное сверхскоростное рубилово
похлеще чем в грайндкоре. С кучей риффов напоминающих русские народные.
Под них активный слэм и шёл. Такой, что буквально ботинки слетали с людей.
Между своими песнями они вставляют спокойные французские медляки
старенькие, под которые брутальные слэмоводы мигом образовывали пары и
вальсировали, заставляя ржать вокалиста.

Перед Passéisme ко мне подошёл какой-то человек и спросил кто для меня
является headliner-ом. Сам он пришёл на Passéisme. Olshanoe ему вообще
не понравилась. Сзади меня я слышал разговоры, что кто-то только ради
Cage Of Creation посетил. Этим мне black (и его смежные направления) и
нравится: он очень разнообразен. Ну и на вкус и цвет -- товарища нет. Я
то точно в восторге от Olshanoe, а на Passéisme, если не поколбаситься,
то не пошёл бы снова.

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

5 weeks agoНовичку про vi(m), shell и tmux
Sergey Matveev [Sat, 22 Mar 2025 06:43:48 +0000 (09:43 +0300)]
Новичку про vi(m), shell и tmux

В этом году я как-то несколько писем одному новичку отправил с
рекомендациями инструментов для программиста. Почему бы не сдублировать сюда?

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

Я думаю, что Vim многих отпугивает тем по началу, что если его
запустить, то увидишь голое окно. И типа... и это всё? В отличии от
приборной панели шаттла как в GUI IDE всяких. Конечно же причина тут
одна: минимум ненужной и явно не запрашиваемой информации. В современных
Microsoft Office же даже делают снимки экрана, показывая чуть ли не с
полдюжины панелей с кнопочками, которые занимают почти четверть экрана
рабочего. Но под капотом Vim скрывается практически самый мощный
редактор текста, инструмент для работы с текстом, коим являются все наши
программы, письма, документация.

Вначале все познают базовые команды по передвижению по тексту и
редактированию. Я уже тебе на словах говорил, что это, как правило,
команда (yank, delete, change, follow, и т.д.), после которой идёт
motion (слово, СЛОВО, внутри слова, предложение, абзац, внутри кавычек,
внутри скобок, и т.д.). Перед этим может идти указание кол-ва повторов
команды. "Удали ка мне три слова с окружающими их знаками препинания".
Если суммарно команд в каком-нибудь Блокноте или IDE от силы 2-3 десятка
наверное наберётся, то в Vim их сотни.

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

Сколько буферов обмена в Windows? Я им конечно пользовался в последний
раз четверть века назад, но вроде бы больше одного у них не стало. В X11
(графическая система в UNIX-ах) их два. А в Vim их больше трёх десятков.
Найди мне среди строк начинающихся с описания вот такого вот класса,
заканчивающихся на docstring в конце класса, строки описываемые такой то
регуляркой, и примени к каждой строке макрос который мы только что
написали в предыдущем абзаце, но при этом оригинальные версии строк
добавляй ка в регистр "m". Всё это делается одной командой в командной
строке Vim. Зачем всё сохраняли в регистр m? Чтобы из него удобно
сформировать changelog для нашего log message коммита, чтобы потом не
выуживать вручную их git diff-а.

Нашли запоминающиеся места в нашем исходном коде, о которых не надо
забывать и быстро между ними перемещаться? В Vim есть метки, по которым
можно как в Wikipedia моментально перемещаться. Вернутся на последнее
изменение? Вернутся на последнее место с которого мы сделали jump из
другого файла? Всё это пара нажатий клавиш. Посмотреть список последних
сделанных высокоуровневых изменений и среди них выбрать вот то 20-е, где
я правил странный метод в другом проекте? Пожалуйста, пара команд.

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

Про повтор действий/команд многие пишут, но многие умалчивают что в Vim
есть, очевидно, и отмена действий, но организованная в виде дерева
изменений. Такого вроде нет ни в одном редакторе. У всех история
изменений по которой можно туда-сюда перемещаться линейна.

Искать текст по всякому, подсвечивать, перемещаться по меткам, в том
числе среди множества файлов -- это всё банально. Vim умеет перемещаться
по тэгам. Тэги это по сути аналог индекса из СУБД. Это отдельные заранее
сгенерированные файлы. Хочешь прыгнуть на определение функи под
курсором, или по названию -- два нажатия клавиш. Название фунок
совпадают/похожи с названиями переменных или констант? Два нажатие и
тебе меню с выбором куда ты хочешь перейти. Это возможно единственное
что умеют IDE в отличии от тупых редакторов (Nano, Блокнот, и подобных).
Но более того: поддержка навигации по тэгам появилась не в Vim, а в Vi,
который был задолго до него (просто любопытный факт насколько старая эта
фича (вовсю в 1980х), которой так любят хвастаться современные IDE из
2020-х :-)). Причём я вот как-то себе делал Zettelkästen систему, где
проще простого было написать скрипт, который бы генерировал бы файл с
тэгами для моего формата заметок, чтобы я в Vim мог как в броузере
прыгать по заметкам как по ссылкам.

В Vim есть jump-list и quickfix-list. Это отдельные окошки в которых
зачастую выводят результат работы поиска типа grep или git grep. Или там
выводят список ошибок во время компиляции или linter-а. По которым можно
удобно перемещаться и прыгать. А можно одной командой выкинуть ошибки
связанные с PEP8. А второй командой для каждой ошибки linter-а во всём
проекте применить команду комментирующую проблемную строку или например
сразу исправляющую вызов os.exit на os_exit например. Выставить пометки
рядом со словами или строками о проблемах -- тоже пожалуйста.

Подключить LSP плагин для работы с LSP сервером и получить по сути весь
per-language функционал для рефакторинга и linting-а? Без проблем. Иметь
автодополнение методов или аргументов? Показывать сигнатуры функций во
время набора кода и сразу же lint-ить? Все эти свистоперделки и полезные
вещи (опять же, которыми любят хвастать IDE) включаются на раз два.

Конечно же в Vim есть возможность показывать множество окон и как угодно
тасовать/изменять их. Есть и табы, хотя лично я не вижу в них смысла,
особенно при использовании мультиплексора терминала. Хочется сохранить
полностью от и до всё размещение окон, табов, курсора, содержимого
регистров и jump/change-списков? Одной командной Vim может сохранить
файл с сессией и одной командной продолжить эту сессию. А можно
сохранить только расположение окон/файлов, для часто используемого
проекта.

Отредактировать кусок кода изолированно в отдельном буфере/окне? Без
проблем. Скрывать часть текста, чтобы глаза не мозолил? Скрывать
определённые символы (ну например URL при редактировании Markdown, чтобы
только название ссылки оставалось)? Выводить всплывающие окна рядом с
курсором или словами? Все есть из коробки.

Молчу про многие сотни опций и настроек. Даже такой мелочи как добавлять
ли пробел после объединения строк или нет? Оставлять ли отступ после
ввода перевода строки? Но я молчу про это, молчу ибо слишком много.

Мы вроде с тобой использовали не просто вставку из файла, а вставку
вывода команды -- это частое действие.

Возможность проверки орфографии? Из коробки, встроена. Ну только словари
подложить надо.

Vim может быть запущен в режиме сервера и из командной строки в него
можно посылать команды. Например ты в терминале видишь вывод Python
traceback-а и можешь послать команду на открытие уже запущенного Vim-а
заданного файла на данном месте с подсветкой проблемного слова. А можно
редактировать файлы по прозрачно запущенному SSH на удалённой машине. А
можно и прямо в Vim запустить терминал и в нём работать, прямо на месте
выуживая или редактируя вывод программ.

Открывать и искать файлы как в эффективном shell-е, не задалбывая Tab
для автодополнения? Всё можно. Но ты наверное ещё тут не в теме, так как
и в shell ещё не использовал эффективное перемещение по директориям и
поиск/выбор файлов. В Vim я себе делал fuzzy-matching файлов как в zsh,
всё возможно. А может быть для поиска или выбора файлов хочется
буквально использовать fzf (https://github.com/junegunn/fzf) -- легко.
Интегрироваться с tmux мультиплексором терминала и общаться с его
встроенными буферами обмена? Плагин на пару экранов кода, без проблем.

Автоматическое форматирование текста, перенос строк, соблюдение отступов
в многоуровневых списках? Всё из коробки, настраиваемое. Зависимое от
языка комментирование строк и снятие комментариев? Пара нажатий. Ведь не
везде же достаточно добавить "#" в начало строки, а надо обрамлять и с
начала и с конца "/*" какими-нибудь.

Запустить компилятор/сборку, отловить ошибки в выводе, заполнить ими
quickfix окно -- при должной настройке из пары команд это можно сделать
вызовом :make. Из коробки, всё заточено под дружелюбность к разработчику.

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

И я ещё даже не упомянул про чуть ли не самую важнейшую часть Vim: его
встроенный язык программирования. Конечно, обязательно многие про свои
Atom, PyCharm, VSC могут начать говорить что там тоже можно писать на
JS/whatever и добавлять/изменять функционал. А теперь покажите мне хоть
одного человека кто это бы делал на практике. На этом "а у нас так тоже
можно делать" можно закрывать. Если бы было РЕАЛЬНО удобно и легко это
делать, то делали бы. А вот в Vim его язык очень интегрирован с самим
редактором и на vimscript регулярно и постоянно пишутся какие-нибудь
плагины многими людьми под свои нужды.

Разбить длинную сигнатуру функи на много строчек с корректным indent,
соблюдением нетривиального формата Python "foo: [bar, baz]", с
добавлением всех нужных запятых в конце? Написал плагин. Добавить все
недостающие import-ы о которых нам сказал linter из quickfix окна,
основываясь на статистике их применений через банальный git grep вызов?
Написал плагин. Открывать файлы которые указаны как
путь/к/файлу:строка:столбец? Что часто выдаётся компиляторами. Написал
плагин. Добавить дополнительные интерактивные команды для навигации по
indent-ам в тексте, что часто нужно в Python коде? Написал плагин.
Подсвечивать не человековводимые Unicode символы, которые могут
представлять опасность? Написал плагин. Выравнивать удобно по всяким
вертикальным разделителям? Написал плагин. Находясь в произвольном месте
unittest метода Python, нажать пару клавиш, чтобы в буфере обмена
оказался полный python-path вида path/to/file:TestCaseName.test_method?
Снова плагин. Тоже самое делать для Си кода, чтобы в буфере обмена
оказывалась строчка пригодная для вставки в отладчик, чтобы он
останавливался на строке где курсор? Плагин. И почти все вышеназванные
плагины написаны что-то типа за десятки минут или пару часов. Это не
очередной долбанный framework с которым нужно хорошенько пострадать
чтобы от него добиться того, что ты хочешь, а это инструмент сделанный
программистами для программистов, чтобы делать новые инструменты и
программы :-)

Когда-то можно было услышать критику vimscript: мол он странно выглядит
и не удобен. Не спорю: даже перенос строк в нём выполнялся добавлением
слэша в начале строки. И нельзя было в конце списков/словарей оставлять
запятую. Эти времена в прошлом, так как уже не мало времени существует
vim9script, который уже полностью похож на современный и привычный нам
язык программирования. Почти все мои плагины были написаны ещё на старом
vimscript, но я всё полностью перевёл на vim9 -- он хорош.

А кроме самого языка, Vim может и запускать асинхронные задачи. Есть как
в Go и каналы для коммуникации между асинхронными процессами. Сделать
instant messenger внутри Vim? Да я десятки видел и пробовал, не проблема
уже 20 лет назад была.

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

И из коробки в Vim есть инструмент для сравнения, создания, отображения
и вообще работы с diff-ами. Видел в блогах что не редко Emacs
пользователи используют именно vimdiff для визуализации и правки
diff-ов, а не свой родной Emacs. Может что-то уже и поменялось и у них
появились свои достойные решения.

Как минимум vi, есть на любом уважающем себя UNIX. Поэтому, зная хотя бы
vi ты сможешь эффективно править конфиги на серверах во время
администрирования. Работая в командной строке, в zsh, в bash, whatever,
ты всегда одним нажатием можешь вызвать vi/vim для редактирования
многострочной строки в вызванном редакторе. Работая в PostgreSQL, введя
\e в его psql клиенте, ты будешь редактировать SQL запрос в Vim. Я
наверное лет 20 в самом окне web-обозревателя уже ничего не редактировал
и одним нажатием у меня вызывался Vim чтобы отредактировать textarea,
которая вставится назад в web после выхода из редактора. Мало кто из
опытных пользователей набирает/отвечает на почту в окне почтового
клиента: для этого де-факто всё равно будет вызываться внешний редактор
(типа Vim или Emacs). *Любой* POSIX совместимый shell по стандарту
обязан иметь два режима редактирования командной строки: либо vi, либо
emacs. Других вариантов нет. Огромная часть интерактивных CLI программ
реализует свой интерфейс через libedit или GNU readline, оба из которых
имеют возможность использования vi режима. Это не полноценный vi(m)
редактор, но базовые команды там будут одинаковы. То есть, почти всё в
UNIX мире, на котором строятся все современные серьёзные решения, ЦОДы,
сети, backend-ы и HPC -- имеет только два режима работы с пользователем:
или vi или emacs. Другого не дано, ибо за ~35 лет никто не изобрёл
ничего хотя бы отдалённо лучшего.

Если что, то в Vim одна из самых лучших документаций что я встречал. С
введением безумно дружелюбным к пользователю, даже с графическими
объяснениями (чего не было в документации в моё время когда я начинал им
пользоваться).

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

От меня есть важнейший (как я считаю) совет: не усердствовать с
визуальным режимом выделения текста ("v" команда), не злоупотреблять ею.
Для начала вообще забыть про её существование. Ибо я со стороны видел,
что именно из-за неё люди убивают почти все возможности редактора типа
повторение действия, создания макросов или выполнения команд в ":g".
Визуальное выделение это уже не высокоуровневое действие, а буквально
"выдели вот ровно вот именно такой длины строки/символы". Но тянуть к
нему будет, так как в Microsoft Windows программах стрелочки с зажатым
shift-ом используются крайне часто.

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

Есть большущий миф о том, что Vim нельзя использовать без массы
плагинов. Как человек с 20+ летним стажем работы в нём, знакомый с
другими опытными его пользователями с не меньшим стажем, однозначно
заявляю что это миф/бред/враньё. Чаще всего люди обвешиваются плагинами
только для того (иногда и сами того не понимая), чтобы из Vim сделать
другой редактор. Людям дают болид Формулы-1, а они сразу начинают
модифицировать его, чтобы сделать знакомый им Жигуль. Многие, включая
меня, проходили этот этап, когда 20-30 плагинов стояло. Но с годами об
этом только жалели, ибо многие из них только скрывают настоящую мощь
Vim, препятствуют гибкому использованию. Сейчас у меня 15 моих
собственных самописных плагинов: но они связаны или уже с выработанными
привычками или же для узкоспециализированных задач (особых языков,
форматов и прочего) -- тут я не вижу проблем в установке task-specific
помощников. Вот только для языков программирования есть LSP, поэтому
Python/Go/C/whatever-specific плагины вряд ли могут потребоваться, ибо
достаточно одного LSP клиента, ну и LSP-сервера для языка, который от
редактора уже никак не зависит.

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

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

Всё что я написал касательно Vim также наверняка полностью относится и к
Emacs -- второму из "профессиональных" редакторов. Хотя многие и не
считают Emacs редактором, а скорее чуть ли не операционной системой,
неким desktop environment.

Самое большое отличие между ними в том, что Emacs с самого начала был по
сути интерпретатором и окружением для работы с Lisp (свой диалект),
поверх которого как бы реализован редактор. Vim, в котором не сразу
появился vimscript, же это развитие Vi -- а Vi это просто редактор, без
какого либо встроенного языка программирования (VI VI VI -- editor of
the Beast :-)). Vim это редактор в который добавили возможность
программирования/расширения, а Emacs это наоборот штука для
программирования на Lisp, поверх которой, на которой сделали редактор.
Реализовать внутри Emacs-а почтовые и новостные клиенты, IM-ы и всякое
такое: это абсолютно штатное его использование.

Плюс главнейшая разность Emacs и Vi(m) как редакторов: в Vi используется
несколько переключаемых режимов работы (вставка, выделение, командный,
командная строка), тогда как в Emacs сплошные сочетания и комбинации
клавиш (Ctrl+то, Ctrl+сё). Физиологически за ними работается по разному.
И есть известный статистический факт: частота проблем с запястьями у
Emacs-еров существенно выше чем у пользователей другого редактора.

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

Коротко упомяну про shell-ы. Я видел как большинство новичков работают в
терминале. Собственно, как и все мы когда-то начинали. Постоянный cd
туда, cd сюда, ls и всякое подобное. Наверное возникает вопрос: и чем же
это удобнее чем тыкать мышкой в GUI проводнике или IDE? Ничем.

А удобнее это становится тогда, когда начинает использоваться эффективно :-)
Пока работа в режиме cd/cd/cd/ls/cd/cd/ls ничем не отличается от DOS, в
котором просто было мало ресурсов для чего-то более серьёзного.

Надо сразу понимать: есть shell который используется для исполнения
скриптов, а есть интерактивный shell, в котором ты, человек,
интерактивно с ним взаимодействуешь. Иногда эти две задачи может
выполнять один и тот же shell. Не редко два совершенно разных и
несовместимых. shell скрипты де-факто пишутся на POSIX shell, который
/bin/sh. Но например в FreeBSD по умолчанию для интерактивного
использования выставляется tcsh, который вообще не совместим с /bin/sh.
Многие писаются от FISH shell-а, который тоже никоим образом не
совместим с POSIX/bin/sh -- и это не страшно, ибо интерактивная работа и
скрипты это зачастую не пересекающиеся задачи.

Первое что узнают люди для хоть какой-то эффективной работы с
интерактивным shell-ом это автодополнение имён файлов и названий команд.
Никто не пишет "main.go", все напишут "ma" и нажмут TAB, который
дополнит имя файла (если нет коллизий) до "main.go". Это всё научились
делать shell-ы ещё в 1980-е, насколько знаю.

Второе что узнают: наличие истории команд. Хотя бы нажимать стрелочками
вверх/вниз. А затем узнают про Ctrl+r, в котором можно написать часть
команды и будет произведён поиск только по этой части. Например ты
помнишь что что-то вводил касательно "build". Ctrl+r, "bui" а дальше
тебе предлагают команду "go build", нажимаешь enter.

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

Исторически как бы существовало два больших семейства shell-ов: Bourne
shell и C shell (1978 появился). "sh" и "csh". POSIX shell это Bourne
shell. BASH это Bourne Again Shell (что читается как "born again", игра
слов). Не то чтобы Bourne shell чем-то был сильно удобнее и выделялся,
но просто так исторически сложилось, что именно он стал стандартом для
написания скриптов, так как появился первым.
https://en.wikipedia.org/wiki/Comparison_of_command_shells

Одним из самых продвинутых shell-ов (и для интерактивной работы и для
скриптоваяния) долгое время был Korn shell, появившийся аж в 1983.
Однако он был проприетарным (закрытым). Сейчас появились свободные
версии, но по сути после появления Z shell это уже не так актуально.
Хотя некоторые BSD системы используют ksh по умолчанию, который я очень
уважаю.

В tcsh (TENEX C shell) впервые появилась возможность дополнения имён
команд и файлов. В csh появилась впервые история команд,
дополнение/подстановка из истории, алиасы, стэк директорий посещённых,
~-нотация (~/ это домашняя директория например) которая сверх часто
используется. В tcsh это всё развилось ещё сильнее. Job control в csh
был почти с самого начала, тогда как в том же GNU Bash оно появилось
только в 1989.

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

Сложно описать насколько более продвинут ksh/zsh/bash относительно POSIX
shell. Простейший пример: у тебя "foo | bar" команда в скрипте. Если у
тебя foo упадёт и вернёт плохой код возврата, то для POSIX/bin/sh кодом
возврата всей этой конструкции pipeline-а будет результат только bar.
Например bar это "grep". Если у тебя упал "foo", то с точки зрения
"grep" ему просто подали на вход пустоту, ничего ошибочного, всё
валидно, мы успешно выходим. Тогда как более продвинутые для
скриптования shell-ы имеют возможность "выкинуть" плохой код возврата
pipeline-а любой команды. Это делает скриптовании и куда безопаснее и
куда компактнее/короче без тьмы костылей.

Вот например табличка с сравнением некоторых возможностей разных
shell-ов, довольно старая уже, древняя можно сказать:
                                     sh   csh  ksh  bash tcsh zsh  rc   es
Job control                          N    Y    Y    Y    Y    Y    N    N
Aliases                              N    Y    Y    Y    Y    Y    N    N
Shell functions                      Y(1) N    Y    Y    N    Y    Y    Y
"Sensible" Input/Output redirection  Y    N    Y    Y    N    Y    Y    Y
Directory stack                      N    Y    Y    Y    Y    Y    F    F
Command history                      N    Y    Y    Y    Y    Y    L    L
Command line editing                 N    N    Y    Y    Y    Y    L    L
Vi Command line editing              N    N    Y    Y    Y(3) Y    L    L
Emacs Command line editing           N    N    Y    Y    Y    Y    L    L
Rebindable Command line editing      N    N    N    Y    Y    Y    L    L
User name look up                    N    Y    Y    Y    Y    Y    L    L
Login/Logout watching                N    N    N    N    Y    Y    F    F
Filename completion                  N    Y(1) Y    Y    Y    Y    L    L
Username completion                  N    Y(2) Y    Y    Y    Y    L    L
Hostname completion                  N    Y(2) Y    Y    Y    Y    L    L
History completion                   N    N    N    Y    Y    Y    L    L
Fully programmable Completion        N    N    N    N    Y    Y    N    N
Mh Mailbox completion                N    N    N    N(4) N(6) N(6) N    N
Co Processes                         N    N    Y    N    N    Y    N    N
Builtin artithmetic evaluation       N    Y    Y    Y    Y    Y    N    N
Can follow symbolic links invisibly  N    N    Y    Y    Y    Y    N    N
Periodic command execution           N    N    N    N    Y    Y    N    N
Custom Prompt (easily)               N    N    Y    Y    Y    Y    Y    Y
Sun Keyboard Hack                    N    N    N    N    N    Y    N    N
Spelling Correction                  N    N    N    N    Y    Y    N    N
Process Substitution                 N    N    N    Y(2) N    Y    Y    Y
Underlying Syntax                    sh   csh  sh   sh   csh  sh   rc   rc
Freely Available                     N    N    N(5) Y    Y    Y    Y    Y
Checks Mailbox                       N    Y    Y    Y    Y    Y    F    F
Tty Sanity Checking                  N    N    N    N    Y    Y    N    N
Can cope with large argument lists   Y    N    Y    Y    Y    Y    Y    Y
Has non-interactive startup file     N    Y    Y(7) Y(7) Y    Y    N    N
Has non-login startup file           N    Y    Y(7) Y    Y    Y    N    N
Can avoid user startup files         N    Y    N    Y    N    Y    Y    Y
Can specify startup file             N    N    Y    Y    N    N    N    N
Low level command redefinition       N    N    N    N    N    N    N    Y
Has anonymous functions              N    N    N    N    N    N    Y    Y
List Variables                       N    Y    Y    N    Y    Y    Y    Y
Full signal trap handling            Y    N    Y    Y    N    Y    Y    Y
File no clobber ability              N    Y    Y    Y    Y    Y    N    F
Local variables                      N    N    Y    Y    N    Y    Y    Y
Lexically scoped variables           N    N    N    N    N    N    N    Y
Exceptions                           N    N    N    N    N    Y    N    Y

Не так часто делают просто переход cd, cd, cd. Или имеют алиасы для
директорий (например "cd ~pyg" у меня перейдёт в /home/stargrave/work/pygost),
или имеют стэк директорий и при перемещении добавляют директори в стэк,
позволяя одной командой (у меня это буквально одно нажатие клавиши)
перейти назад по стэку. "cd -" вернёт в предыдущее место.

tcsh (как и zsh) имел встроенный spellchecker и он мог исправлять
опечатки в командах или названиях файлов (но лично я не рекомендовал бы
такое, ибо у меня не раз случались губительные исправления).

Если пользователь набирает полностью снова целые слова или команды, то
скорее всего делает что-то не так и не эффективно. "!$" подставит
последний аргумент из последней команды -- эту штуку даже наши
технические писатели, которые сидят под Астрой и в Word, вовсю
используют. !:1 подставит первый аргумент из прошлой команды.
!!:gs/foo/bar выполнит заново предыдущую команду, но заменив в ней все
foo на bar.

Иногда ты точно не помнишь с чего начиналась команда, но помнишь что это
было связано с ffmpeg и blablabla фильмом. А тебе надо повторить команду
связанную с перекодированием видео. У себя я могу просто набрать "ffm
blabla", нажать кнопку "вверх" и у меня по сути будет выведен список
команд с поиском по ".*ffm.*blabla" регулярке без учёта регистра букв.
Набрав "s/2/r2s/auth/init" и нажав TAB у меня этот путь раскроется до
"src/rik2utils/rik2s/request_auther/__init__.py". Причём между слэшами
можно даже опускать написание букв вообще (зависит от наличия коллизий с
другими файлами/директорий, конечно же).

"**.mod" в ksh/zsh подставит все go.mod файлы проекта.
"**.php(.om[1]:h)" у тебя возьмёт все .php файлы рекурсивно из всех
поддиректорий, отсортирует по времени изменения и возьмёт самый свежий и
подставит директорию где он находится.
"**.{js,php,css}~(libs|temp|tmp|test)/*" подставит рекурсивно всей .js,
.php, .css файлы, но за исключением директорий libs, temp, tmp, test.
"!#$:t:r" -- подставит у *текущей* команды последний аргумент, но только
с отрезанной директорией из пути и без расширения. "**(#ia2)readme"
подставить все "readme" файлы где допустимо до двух опечаток в названии.

Ничто с подобным мощным раскрытием wildcard-ов и работой с историей не
сравнится по эффективности. Именно подобными вещами и мощны командные
интерпретаторы, чего невозможно сделать в графических приложениях.

GNU Bash по умолчанию во многих дистрибутивах GNU/Linux используется по
сути исключительно из-за политических причин. Многое мною написанное
выше в bash не работает и невозможно сделать. Да и для скриптования он
не сильно лучше голого POSIX shell. Самая частая проблема при
скриптовании shell-а это возня с пробелами. Например у тебя в переменной
foo есть имя файла с пробелами: foo="hello world.txt". И сделав cat $foo
ты получишь ошибку, так как $foo раскроется в два слова, которые станут
двумя аргументами, что означает что ты хочешь вывести файл hello и файл
world.txt. В zsh почти во всех случаях с этим нет проблем, за счёт чего
на нём на порядок проще писать скрипты, надёжнее их писать.

В zsh есть возможность иметь объединённую историю команд между разными
instance-ами, чего тоже нет в bash. Сидишь в двух разных окнах, и у тебя
у каждого запущенного bash будет своя история. Для многих именно эта
фича zsh является главной для перехода на него. Для меня главной фичей
являлось autopushd: когда у тебя каждый "cd" начинает работать как
"pushd" -- добавляет директорию автоматически в стэк. Дальше я бы
выделил инкрементальный поиск истории по шаблону. Дальше бы выделил
fuzzy раскрытие wildcard-ов в путях. И только потом уже наверное
вспомнил бы про shared history. http://strcat.de/zsh/
https://www.arp242.net/why-zsh.html

Но чаще всего про zsh упомянут его мега-гипер-убер-мощнейшую систему
дополнений и https://ohmyz.sh/
https://adam-drake-frontend-developer.medium.com/supercharge-your-terminal-with-oh-my-zsh-4fb102ca5005
https://old.reddit.com/r/zsh/comments/1iu8bz8/is_ohmyzsh_worth_it/
Да, в zsh сверх крутая-как-нигде гибкая система completion-а. Которую я
активно использую и написал свои completer-ы. Но рекомендовать oh-my-zsh,
как и все пользователи с опытом -- однозначно не могу. Типа да,
прикольно что на каждой позиции кучи команд ты можешь нажать tab и у
тебя разукрашенные свистопердящие менюшки показывающие опции команд,
дополняющие имена хостов на основе данных из ~/.ssh/known_hosts,
дополняющие пути до файлов на других хостах (прозрачно логинясь через
ssh на них), но это всё жутко тормозит на практике и не даёт заметного
profit. Время не сильно экономит. Часто только вредит тем, что не
показывает все возможные опции/аргумент для команд и пользователь будет
думать что их и нет. А также это скрывает много деталей которые бы нужно
было знать. Вот человек знает как подставить PID процесса через
автодополнение zsh-а, но этом без наличия свистопердящего zsh он вообще
не в курсе как вывести хотя бы список процессов ("ps" команда). Всех
кого я знаю -- отключают oh-my-zsh и полный спектр completer-ов со
временем, ибо оно не даёт profit-а. Я не к тому что система completion
не нужна, а к тому, что нужно включать только то что нужно, осознанно и
с пониманием дела.

Не редко слышал фразы о том, что zsh медленный. Это, опять же, с чистой
совестью заявляю, что произносят только некомпетентные и не понимающие
люди. В 100% случаях они говорят про обвешанный плагинами свистопердящий
oh-my-zsh. Сам по себе zsh гораздо компактнее, проще, меньше по размеру
и существенно более быстрый чем тот же bash. И не смотря на меньшее
кол-во кода, zsh при этом умеет в десятки раз больше всего.

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

Ещё рекомендую начать посматривать на https://github.com/tmux/tmux/
https://en.wikipedia.org/wiki/Tmux
Это такая штука, которая притворяется обычным терминалом для запущенных
под ним программ. Но при этом он позволяет иметь множество вкладок,
множество окон, жонглировать ими по всякому, всякие там менюшки и popup
окна делать для автоматизации, иметь scrollback буфер и путешествовать
по нему или редактировать, иметь буфер обмена в котором менюшкой можно
выбирать что хочется вставить (штатные же буферы обмена это стэк из
одного элемента как бы).

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

Многое из вышеназванного умеют делать эмуляторы терминалов: scrollback
буфер, разбиение на окна и их жонглирование, множество вкладок. Но
эмуляторы запускаются только под GUI, а значит на сервере их не будет.
Плюс у каждого второго обязательно да будет какой-то незнакомый тебе
эмулятор, поэтому будет неудобно за чужим компьютером. С другой стороны,
конечно, и нечего делать за чужим :-). Но изучив tmux ты будешь в своей
тарелке на любой системе где он установлен (да и собрать его не
проблема, ибо зависимостей почти нет).

Плюс ты сможешь скриптовать своё рабочее окружение. Я то как-раз именно
поэтому начал пробовать tmux. Когда я работал с одним проектом, то хотел
чтобы мне сразу создалось несколько вкладок, сразу в нужной директории,
в других вкладках всякие просмотрщики журналов сразу были запущены, в
третьих сразу подготовленные строчки с командами запуска. Даже если и
какие-то GUI эмуляторы терминалов и позволяют себя как-то
автоматизировать, то я не встречал кто бы это реально использовал, плюс
это зависимость от чётко заданного конкретного GUI эмулятора терминалов
(тогда как tmux под голой консолью можно запустить без проблем).

Я активно использую его popup окна для следующего: хочу вставить путь до
файла, но даже с возможностями zsh не всегда быстро можно указать путь
до нужного (много коллизий в именах), поэтому парой клавиш у меня
появляется popup окно, где запускается bfind (breadth-first штука типа
find-а, https://github.com/tavianator/bfs), которая на лету в real-time
подаёт данные в "fzf" fuzzy matcher (https://github.com/junegunn/fzf) и
fuzzy поиском позволяет выбрать мне нужный файл частенько за доли
секунды. Выбрав, нажав enter, он подставится в основное рабочее окно, а
popup закроется. Никакого дополнительного места на экране не будет
отъедено во время поиска.

Ну и с коллегами все его используем для парного программирования или
администрирования. Настраиваем специальную SSH учётную запись, при
логине в которую автоматически форсированно будет запускаться tmux
клиент, подключённый к твоему tmux серверу, но в read-only режиме. И мы
видим рабочие экраны друг друга. Но под своим графическим терминалом, со
своими удобными нам шрифтами. Если бы это была передача графической
информации (как удалённый доступ к Windows рабочему столу), то на
мониторах с разными DPI это было бы неюзабельно, либо дико неудобно тому
кому придётся перевести свою рабочую сессию на HiDPI мониторе в "low"
DPI, плюс шрифты регулярно многим не нравятся (на вкус и цвет товарища
никогда нет). Плюс GUI требовал бы очень неплохое Интернет соединение,
тогда как tmux это реально просто просасывание видимой текстовой
информации -- мизер.

Кроме Emacs пользователей, у нас вроде все коллеги с кем мы работали и
работаем, даже когда не идёт речь про связь по сети или удалённого
доступа, используют tmux локально запускаемый. Собственно, прям
настраиваются эмуляторы терминалов так, что после их запуска там сразу
же оказывается tmux. Ничего не отжирающая штука, но добавляющая
офигенное кросс-платформенное удобство, можно сказать сетевую
прозрачность и по сути window manager в терминале. Но штука
опциональная -- она уже не настолько значимую роль играет в отличии от
shell и текстового редактора.

5 weeks agoPopup-ы на сайтах и других местах
Sergey Matveev [Fri, 21 Mar 2025 08:18:29 +0000 (11:18 +0300)]
Popup-ы на сайтах и других местах

https://yurichev.com/nr/popups/
На все 100% солидарен с автором, со всем написанным. Помню как в
Футураме (20+ лет назад!) показывался их Интернет будущего, в котором им
приходилось отбиваться от назойливых popup окон, не дающих нигде проходу.
В "Очень страшном кино" или каком-то подобном фильме тоже показывали
монитор человека зашедшего в Интернет, где десятки всплывашек то тут, то
там. Недавно я много часов убил сидя в "современном" Интернете, в
обозревателе с включённым JS. Помню что два хостинга сразу же, мгновенно
отмёл, вычеркнул и забыл про них, даже не интересуясь что у них там по
поводу IPv6: просто потому, что после захода на главную они сразу же
суют в лицо какие-то выгодные предложения, которые я вынужден буду
закрыть, тыкнув на крестик. Сразу закрыл. Это полное неуважение к людям.

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

Понравилось, что он даже дошёл до темы с IDE и редакторами, сказав что
не встречал спецов, которые бы сидели под IDE. И предполагает, что
связано с возможностью сосредоточиться в нормальных редакторах. Типа
может быть где-то и бывают крутые профи за Word или IDE, но только как
редкое исключение из правил.

5 weeks agoБойкот собрания IETF 127
Sergey Matveev [Fri, 21 Mar 2025 07:46:30 +0000 (10:46 +0300)]
Бойкот собрания IETF 127

https://boycott-ietf127.org/
Так как США являются очень опасной страной для въезда, то предлагают
бойкотировать данное собрание. Мол, даже будучи белым европейцем, всё
равно показывают примеры как их сажают, например если находят критику
президента в смартфонах.

5 weeks agoВроде переехал на другую /48 сеть
Sergey Matveev [Thu, 20 Mar 2025 14:13:52 +0000 (17:13 +0300)]
Вроде переехал на другую /48 сеть

Сегодня (0b605fb62d37ba546eb3ad5340938cd8e379a088) писал, что всё ожидаю
нового VPS hoster, но вот он предоставил всё в рабочем видел. Уже
поменял адреса в DNS, но ещё ждать пока и glue record обновятся. Вроде
бы пока всё работает. И, в отличии от предыдущего hoster, никаких NDP
proxy не нужно использовать: через выделенную /125 сеть мне на отдельный
IP адрес трафик приходит для всей /48 сети, а дальше я уж сам занимаюсь
маршрутизацией через WireGuard туннель. Насколько более грамотное решение.
Но вот, правда, скорость у них как-то не очень. И на самой VPS с того же
mirror.yandex.ru не более 10MBps (в отличии от 45+ на прошлой) и через
WireGuard с ней как-то не шустро, но это уже мелочи.

5 weeks agoВторая версия schwabrak
Sergey Matveev [Thu, 20 Mar 2025 08:59:42 +0000 (11:59 +0300)]
Вторая версия schwabrak

Год назад (42b3d1b739b5f0cef40f349cdc7044a785dc604a) писал о том, что
schwabrak (bd94115b066472316ea03e85d611f732785f8b7c) более менее активно
использовался мною и немного коллегами. Сейчас в одном репозитории с
задачами надо было причесать и поприводить их в порядок. Переименование
задач или смена иерархии директорий приводит к довольно муторному и
аккуратному исправлению символических ссылок. Получать информацию,
фильтровать её, без использования вспомогательных скриптов -- ну так
себе по простоте дело. Да, информация есть, можно всё сделать, но это не
тривиальные запросы в shell-е, почти всегда скрипты.

Вспомнил одну презентацию, но которую не могу найти в блоге (или не
упоминал о ней), где показывалось как "просто и легко" можно работать с
Bluetooth или чем-то подобным в GNU/Linux. Мол, вот у вас есть sysfs,
где в ряде директорий вы можете узнать о существовании тех или иных
устройств. Сделав echo такого-то значения в такой sysfs файл, вы сможете
сделать то или иное действие. И там относительно простая задача
превращалась в дюжину команд на shell, со сплошными циклами и хаками.
Тогда как эта же задача под Windows решалась единственным API вызовом
функи с несколькими аргументами.

Или вот распространённый suckless подход к IM-ам: делать per-user
директории, внутри них FIFO файлы in/out и ещё метаинформационные. Можно
ли это скриптовать? Конечно, да. Но работать без кучи дополнительных
обвязок уже проблематично. А хотелось бы иметь нечто, с чем более менее
можно бы было и вообще без дополнительного софта работать. В противном
случае это уже будет именно решение под конкретный framework/toolset.

Вторая итерация schwabrak у меня, как мне кажется, стала более
дружелюбной к пользователю и машине. Но она уже потребует recutils
утилиты. Вместо директории tags/ с символическими ссылками на файлы
меток, вместо deps/ с ссылками на зависимые задачи, вместо единичных
файлов на каждое key-value значение, я решил всё это сложить в один
"meta" файл в recfile формате.

    created: 2025-02-13 11:45:56
    ass: stargrave
    status: done
    milestone: v2
    dep: another-issue
    dep: yet-another-issue

По идее я захотел вообще всё сложить в одну базу данных в recfile. Но
разделить её на множество .rec-ов точно нужно: тогда на каждую задачу
git log-ом можно будет смотреть историю только чётко заданной одной, не
иметь конфликтов с другими. Плюс поля about/result я так и оставил в
отдельных файлах, чтобы удобнее было с ними работать в редакторе (внутри
recfile каждая строчка должна была бы иметь "+ " префикс). И написано
несколько утилит, которые просто генерируют большой recfile с
about/result полями на выходе. И предполагается что дальше нужно
использовать recutils. В них и производить фильтрацию, выборку, создание
отчётов, без дополнительных не тривиальных (z)shell скриптов.

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

5 weeks agoВсё в ожидании IPv6 сети
Sergey Matveev [Thu, 20 Mar 2025 07:22:37 +0000 (10:22 +0300)]
Всё в ожидании IPv6 сети

Больше недели я написал (f52906a5e4067b2bfc45c054c1cd222dae4d223a)
всяким VPS провайдерам вопрос по возможности предоставления /48 (или
хотя бы /56) сети, SMTP/PTR, SSH и всякого такого. Только один провайдер
у меня остался не спрошенным, но как-то я наверное даже и не буду
пытаться, ибо его собственная родная главная страница находится на
Cloudflare, что уж больно не серьёзно. Ответил удовлетворительно только
deephost.pw.

Я задал вопрос как именно будет предоставляться сеть: по нормальному
через маршрутизацию, как это делает Hurricane Electric или IPv4Market
тот же, или придётся костылять и поднимать NDP proxy. Они сказали, что
по идее NDP прокси, но попробуют сделать по уму, но нужна настройка с их
стороны. Вот уже прошла неделя с момента как я начал с ними общаться. За
это время мне смогли выделить /48 сеть, даже трафик маршрутизируется на
указанный мною IP адрес из отдельной /125 сети. Однако... исходящий
трафик теряется. Пока только в одну сторону есть работоспособность, что
смысла практического не имеет.

Ещё мне необычным показалось то, что vtnet0 интерфейс смотрит в их /32
сеть. Выходит, что все VPS-ки напрямую подключаются к их /32 сети. Как и
широковещательные ARP по полтысячи пакетов в секунду льются. А ещё,
когда я только завёл VPS-ку, то tcpdump показывал полное отсутствие IPv6
пакетов в сети. Как пообщались со мной, то сразу внезапно появился
мультивещательный NDP трафик. Такое впечатление, что IPv6 в принципе был
выключен полностью. А если так долго возятся с моим банальным запросом
на /48 сеть, услуга которая у них вообще на главной странице сайта
показана, то такое впечатление, что я чуть ли не первый клиент у них,
или в их ДЦ в Москве, который запросил IPv6. Грустно это всё.

Если с этим VPS ничего не получится, то я даже не знаю... похоже я
просто буду делить /64 сеть другой VPS на маленькие части и их через NDP
proxy раздавать. Бесит. Где-то в РФ (в вопросах телекоммуникаций) всё
делают state-of-art грамотно и без проблем, но просто так физическому
лицу никто, даже за хорошие деньги, не готов предоставлять услуги,
которые вообще как рекомендуемые (то есть штатные, что должно быть по
умолчанию) в RFC прописаны.

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

6 weeks agoСходил снова на оркестр волынщиков и ирландские танцы
Sergey Matveev [Wed, 19 Mar 2025 07:07:43 +0000 (10:07 +0300)]
Сходил снова на оркестр волынщиков и ирландские танцы

Вот настолько круто слушать и смотреть на City Pipes волынщиков, что уже
третий раз на них не раздумывая пошёл. Но уже в Москве, в большом КЗ
Измайлово. А так как за день до этого был день святого Патрика, до
вместе с шотландской тематикой была группа ирландских танцоров "Celtic Wind".

Когда-то папу уговорил через силу пойти за компанию на City Pipes. Ему
так понравилось, что вообще ни на что больше не ходил из концертов или
опер, кроме как на них. Тётю затащил в прошлом году и в этот раз она,
тоже не долго думая, захотела пойти. Слышны были разговоры других людей
выходящих с концерта "теперь то понял почему мне так нравятся волынки?".

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

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

В общем, офигенные концерты они устраивают! Ну и симбиоз с танцорами
тоже отлично вышел!

6 weeks agoAV1 не перестаёт радовать
Sergey Matveev [Tue, 18 Mar 2025 08:18:45 +0000 (11:18 +0300)]
AV1 не перестаёт радовать

С одной стороны, AV1, судя по всему, очень и очень сложный, ничего
эстетически красивого в нём нем, плюс вроде бы непонятки с патентами
(впрочем, как и с JPEG XL что ли?).

Но зато на практике без всяких GPU и ускорителей, чисто на CPU, он за
более чем вменяемое время (в отличии от VP9) способен с отличнейшим
качеством и битрейтом пожать видео. За ночь у меня два DVD
перекодировалось в таком же разрешении с -crf 24 и -preset 2 (почти
самый медленный режим), делая 500-600 мегабайтные файлы, в которых я
вообще на глаз даже при ближайшем рассмотрении не могу заметить разницы
с оригиналом (хотя это и так DVD, с относительно мыльной картинкой). А с
YouTube (когда он ещё пускал) я и 20+ Mbps 4K видео в real-time без
проблем проигрывал на нескольких ядрах.

VP8/VP9 или по качеству/bitrate не могут сравнится или по скорости
кодирования. Пока AV1 реально лучший на практике. Всякие H.2xx не хочу
рассматривать.

6 weeks agoПосмотрел "Зеркало для героя"
Sergey Matveev [Mon, 17 Mar 2025 08:14:10 +0000 (11:14 +0300)]
Посмотрел "Зеркало для героя"

https://ru.wikipedia.org/wiki/Зеркало_для_героя
Советский фильм 1987-го о том, как двое людей попадают на 40 лет назад
во времени и каждый день у них повторяется снова и снова. Как "День Сурка",
вот только получаемые ими увечья остаются. Начинается с того, как сын с
отцом поругался, прям конфликт поколений. Но затем он увидел жизнь
своего молодого отца, по другому на неё начал смотреть. Хороший фильм.

6 weeks agoПосмотрел "Крупный план"
Sergey Matveev [Mon, 17 Mar 2025 08:10:47 +0000 (11:10 +0300)]
Посмотрел "Крупный план"

https://ru.wikipedia.org/wiki/Крупный_план_(фильм)
Иранский фильм от их известнейшего режиссёра. Основан на реальных
событиях и в нём снялись сами участники этих событий. Очень необычный.
Куча Тарантино-like крупных планов говорящих людей. Жуть как понравился!
Ну и плюс любо посмотреть как на быт и людей Ирина, так и на их суд.

6 weeks agoИгрушечные серверные стойки
Sergey Matveev [Mon, 17 Mar 2025 08:06:05 +0000 (11:06 +0300)]
Игрушечные серверные стойки

https://habr.com/ru/news/891350/
Кто этот гений, что придумал такую классную штуку! Ну офигеть же как
здорово хотя бы такую стоечку заиметь то!

6 weeks agoЛабиринт Фотопии
Sergey Matveev [Sun, 16 Mar 2025 13:36:46 +0000 (16:36 +0300)]
Лабиринт Фотопии

https://ifhub.club/2025/03/15/photopia-as-a-tutorial.html
https://en.wikipedia.org/wiki/Photopia
Photopia очень часто рекомендуется как первая IF игра. И у меня она тоже
была первой, если не изменяет память. Но её реально сложно отнести к
настоящим IF играм, ибо почти никакой интерактивности (просто постоянно
ждёшь продолжения развития сюжета).

6 weeks agoХотят избавиться от .su
Sergey Matveev [Thu, 13 Mar 2025 09:19:39 +0000 (12:19 +0300)]
Хотят избавиться от .su

https://habr.com/ru/news/890452/
https://habr.com/ru/news/890606/
https://dxdt.ru/2024/10/10/14047/
https://ripn.su/news/razyasnenie-o-statuse-domena-su/
Ну блин, приехали. Только я перевёл свои домены с .ru на .su, так вот
новость о том, что хотят от него избавиться. pos.su→pos.ru

6 weeks agoПрочитал "Последние дни" Типа Пауэрса
Sergey Matveev [Wed, 12 Mar 2025 18:35:55 +0000 (21:35 +0300)]
Прочитал "Последние дни" Типа Пауэрса

https://ru.wikipedia.org/wiki/Пауэрс,_Тим
https://fantlab.ru/work7487
Да, начал читать не первую книгу из "Трилогии сдвигов", но... понял что
это точно не моё. Слишком много непонятной мистики. Через силу дочитывал
только первый том, второй даже не собираюсь.

6 weeks agoПрочитал "Королеву ангелов"
Sergey Matveev [Wed, 12 Mar 2025 18:15:39 +0000 (21:15 +0300)]
Прочитал "Королеву ангелов"

https://ru.wikipedia.org/wiki/Королева_ангелов_(роман)
Номинирован научно-фантастический роман был на множество премий.
И Грег Бир мне нравится как автор, уже знаком с его творчеством.
Интересное произведение, в котором как в "Криминальном чтиве"
несколько историй параллельно идут, а потом встречаются вместе.
Удивительно что это только в 1990 было написано, ибо уж очень
современно выглядят описания.

7 weeks agoПоиск IPv6-capable хостинга
Sergey Matveev [Wed, 12 Mar 2025 17:29:50 +0000 (20:29 +0300)]
Поиск IPv6-capable хостинга

Не один час сегодня потратил на прочёсывание на разных сайтах информации
о хостерах всяких. На каждом дальше нужно индивидуально искать у них
информацию о том как (не)поддерживается IPv6. В десяток компаний написал
email с вопросами о PTR, ограничениях трафика и возможности /56 или /48
сетей. Не раз слышал рекомендацию спрашивать об этом, ибо на самом сайте
могут не написать.

Вообще хостеров с поддержкой /64 IPv6 прям не мало. И речь только про
тех, кто есть в РФ. Зарубежные не рассматриваю в принципе. Есть,
конечно, и много кто не поддерживает IPv6, но, похоже, их всё меньше и
меньше. Попадаются такие, кто выдаёт единичные IPv6 адреса и просят
деньги за каждый дополнительный адрес. Бежать надо от таких, бежать, ибо
это это вне всяких норм этики.

Не мало видел примеров настройки IPv6 сети с полноценной маршрутизацией
через fe80::1 link-local адреса. Лично я бы именно так и делал.

Но поиск тех, кто выдавал бы >/64 -- удручает. Среди всех найденных мною
компаний только, среди тех кому написал письма, только с одной завтра
попробую уже на практике что-то сделать, и есть ровно одна про запас,
кто явно говорит про предоставление /48 сети. Возможно кто-то ещё не
ответил из адресатов, но у других или нет IPv6 (хотя по их сайту, где не
мало информации о преимуществах протокола, сразу и не скажешь) или нет
больших сетей.

Ещё есть возможность с собственной AS и сетью прийти, но это пока не моя
весовая категория, так сказать.

7 weeks agoНикому не порекомендую vpsville.ru
Sergey Matveev [Wed, 12 Mar 2025 07:16:26 +0000 (10:16 +0300)]
Никому не порекомендую vpsville.ru

Ну что ж, вот и подходит конец моего использования сабжевого VPS
провайдера. Вчера аж два человека сообщили о недоступности SSH-а
по IPv6 до моего основного компьютера. В комментарии к
(3136e07d90bf973abaf9fda3bad7e343a58c0be6) и ещё один у меня многие
годы хостил jail с сайтом, до которого SSH доступ всегда был только
по IPv6.

tcpdump-ом выяснил, что трафик по TCP 22-му порту полностью резался в
обе стороны на VPS-ке с которой я получаю /48 сеть. Техподдержка только
посоветовала своего демона на другой порт повесить. Извините, а
исходящие SSH соединения, как им это поможет?

* Блокируется SSH трафик в обе стороны
* Нигде не было написано, но PTR запись можно назначить только для IPv4
  адреса (25ce76407710dc00ab7e4cbda272f32a83f54300). Сегодня мне
  написали, что можно назначить на IPv6 адрес внутри /64 сети, но где ж
  вы раньше то были с этой информацией? Или на момент моих настроек даже
  для /64 нельзя было прописать. В общем, поднять SMTP сервер для
  отправки не выйдет
* Были серьёзные (db38f36c737212f4ec8e82a82acf96586b56ea3b) проблемы и с
  входящей SMTP почтой, особенно от gmail.com. Меня уверяют, что они
  ничего не режут, так что возможно тут беда в вышестоящих магистралях.
  Но весь входящий SMTP трафик я в итоге заруливал через мою старую VPS
* Безграмотное решение для /48 сети. Вся эта сеть просто навешивалась
  ими на виртуальный Ethernet интерфейс, а не маршрутизировалась через
  какой-то адрес (f1dc900ba79ee0d1f87977c16bfbf61c574bbcdf). Из-за этого
  пришлось использовать ndproxy, да ещё патчить, так как на Ethernet-е у
  них не только я, но и куча других VPS-ок, которым тоже рассылаются NDP
  запросы, на которые мне отвечать не надо

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

Я то, кстати, неработоспособность SSH не замечал, так как у меня до моей
VPS-ки с почтовым сервером проложен WireGuard туннель, через который по
BGP маршрут меняется. Я до своих IPv6 сетей через туннель ходил, минуя
блокировки провайдеров.

7 weeks agoSFTP-only учётная запись и медленность протокола
Sergey Matveev [Wed, 12 Mar 2025 07:03:38 +0000 (10:03 +0300)]
SFTP-only учётная запись и медленность протокола

https://stackoverflow.com/questions/8849240/why-when-i-transfer-a-file-through-sftp-it-takes-longer-than-ftp
У меня давно есть учётная запись выделенная исключительно под SFTP. Но
раз я в последнее время в блоге про SSH пишу, то просто заметка как
сделать сабж: достаточно прописать в authorized_keys:

    restrict,command="internal-sftp [...]" ssh-ed25519 ...

А если правильно рулить правами доступа и сделать анонимного
(3136e07d90bf973abaf9fda3bad7e343a58c0be6) SSH пользователя, прописать
аналог restrict,command=internal-sftp в sshd_config, то будет анонимный
read-only SFTP.

Но с ним (SFTP) есть серьёзная проблема производительности. По ссылке к
этой записи автор HPN-SSH патчей объясняет почему с ним всё так плохо.
По сути из-за того, что он самостоятельно делает TCP flow control. Он
также отмечает, что эти HPN патчи применяют:

    Google, Yahoo, Apple, most ever large research data center, NASA,
    NOAA, the government, the military, and most financial institutions.

Слышал где-то и про Яндекс. А я никогда не пробовал с ними. Да и не
охота: всё равно NFS буду использовать для чего-то серьёзного/крупного.

7 weeks agoАнонимный SSH+Git
Sergey Matveev [Tue, 11 Mar 2025 11:36:52 +0000 (14:36 +0300)]
Анонимный SSH+Git

https://gameoftrees.org/code.html
https://gameoftrees.org/gotsh.1.html
https://git-scm.com/docs/git-shell
Как-то я заметил, что в Game Of Trees (реализация Git от OpenBSD
разработчиков) весь исходный код доступен через ssh://-протокол,
анонимно, без регистрации (и SMS), никаких https://. Особо я никогда
не задавался вопросом можно ли "анонимный" SSH предоставить как либо?

Но в их документации на всё это есть намёки. Для "анонимного"
пользователя достаточно выставить в sshd_config (OpenSSH):

    Match User anongit
        PasswordAuthentication yes
        PermitEmptyPasswords yes
        DisableForwarding yes
        PermitTTY no

ну и убрать пароль у этого пользователя. В качестве shell-а выставить
git-shell, чтобы ограничить его возможности только работой с git-ом.
Создать git-shell-commands/no-interactive-login чтобы явно вообще
запретить интерактивную работу в git-shell.

Я не использую got, но в его gotd можно указать read-only права доступа.
А вот для обычного git-а git-shell-у ничего такого не указать. В
исходном коде git-shell можно закомментировать строчку в командой
разрешающей загрузку патчей, Но я пока решил задачу с read-only доступом
просто помещением anongit в группу git, для которой не даются права на
запись в репозитории.

И я убрал HTTP/HTTPS протокол для Git репозиториев у себя. Это не
связано с моим недавним (3342002daf11a729fc4591577a72b81d8cfda5df)
очередным постом про HTTPS, а просто так совпало по времени. Git и так
есть, OpenSSH и так есть: почему бы их и не использовать для случаев,
когда нужна криптографическая защита протокола? HTTPS излишен. Плюс
никакого PKI не надо, на который намекает TLS.

7 weeks agoПопробовал всяких азиатских дошираков
Sergey Matveev [Tue, 11 Mar 2025 10:29:50 +0000 (13:29 +0300)]
Попробовал всяких азиатских дошираков

Уже множество знакомых, при упоминании Ханой-Москва на Ярославском
шоссе, обязательно посоветуют попробовать их лапшу быстрого приготовления.
Недавно оказался там совсем рядом и попросил знакомого сводить и
посоветовать чего-нибудь эдакого. Похоже там сотни видов всякой лапши, но
почти нигде нет никаких английских подписей. Судя по всему, сложнее
всего найти не острые варианты. Взяли каких-то видов. Попробовал. Ну или
что-то не настолько сногсшибательное взяли, как это описывают другие,
либо я не в состоянии оценить. Вкусно, но не более. Восторга или чего-то
необычного не почувствовал. Хотя и не был прежде знаком с рисовыми
клёцками. Ну и от одной лапши всё-равно рот потом горел. Не нашёл
кардинальных отличий от Доширак/Роллтон. Но часть лапши вроде бы
корейская, не вьетнамская.

7 weeks agoFirefox форсирует HTTPS использование
Sergey Matveev [Tue, 11 Mar 2025 08:14:49 +0000 (11:14 +0300)]
Firefox форсирует HTTPS использование

http://xahlee.info/w/Firefox_Forces_HTTPS.html
http://xahlee.info/w/why_no_https.html
Не только я недоволен форсированным криптобесием касательно HTTPS.

* you now get a error for sites not sponsored by big corps such as Let's Encrypt.
* this means, billions of small sites are now unreadable. You only get
  to read big corp sites.
* forcing https, began by google, is a way to censor the masses and control info.
* in the beginning, google empire mildly suggested it, for so called security.
* then, mysteriously, at the same time some org spring up offering https for free.
* then it gets gradually worse. sites without https shows as insecure
  warning sign. scare tactics.
* vast majority of sites are not shopping sites.
* also, vast majority, even coders, making a cert is too much hassle, even free.
* then u get the expire issue, which occurs very often.
* requiring cert, basically force sites to be centralized by a few giant
  orgs. (and there is lots war n scam within cert orgs, there's
  incident...)
* and, oddly, for so called security of non-credit card sites, they no
  sanction self cert.
* and now, basically, firefox begin simply prevent reading of non ngo
  sanctioned sites. that's basically billions of sites.
* firefox says it's experimental. of course, they r trying to see how
  deep it can go, how coders receives it.

Letsencrypt is a tool of capture to make it easier to censor people by
revoking their access to CAs.

HTTPS and more specifically Let's Encrypt is a power play to control the
internet and prevent counter-culture from forming. By browsers using
scare tactics for enforcing https it puts the control of the internet
into a handful of CAs making you vulnerable to cancelling.

7 weeks agoУслышал Чеботину
Sergey Matveev [Sun, 9 Mar 2025 17:54:21 +0000 (20:54 +0300)]
Услышал Чеботину

https://ru.wikipedia.org/wiki/Чеботина,_Люся
Были на даче, готовили шашлыки, в колонках был playlist со всякой
нашей современной попсой российской. На одной песне мне прям почти
физиологическое отвращение и неприязнь вызывало что я слышу. Пошёл
посмотреть на экран смартфона, чтобы понять кто это. Я не припомню
чтобы настолько мерзкой и неприятной, раздражающей манерой пения
кто-либо обладал. Хотя я за последние лет десять вроде бы совершенно
спокоен стал ко многому в музыке, даже рэп в целом не вызывает негатива.

7 weeks agoYondr на концерте Ghost
Sergey Matveev [Fri, 7 Mar 2025 10:08:58 +0000 (13:08 +0300)]
Yondr на концерте Ghost

https://www.darkside.ru/news/171495/
Снова (6a30d3693577f42c01ed7e5bdf73328a5eb30dfa) новость о концерте, где
запрещены смартфоны. Люто поддерживаю подобное. Я совершенно не понимаю
людей, которые потратили деньги, припёрлись, но смотрят не на сцену с
действом, а в свои смартфоны, ещё и частенько вытягивая их на руках
загораживая обзор сзади стоящим. У меня только один вопрос возникает:
х*ли ты припёрся то вообще? Ты на концерте или где? Тебе надо просто
сделать check-in о том что ты побывал на нём, засветиться?

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

7 weeks agoАльтернатива GPS
Sergey Matveev [Fri, 7 Mar 2025 08:48:41 +0000 (11:48 +0300)]
Альтернатива GPS

https://lenta.ru/news/2025/03/07/gps-alt/
https://ru.wikipedia.org/wiki/Чайка_(навигационная_система)
https://ru.wikipedia.org/wiki/РСДН-20
США беспокоится о том, что GPS-у то у них нет запасных альтернатив.
В d5354336306e39e53086e7f171b5dc5ad9347ea1 я узнал про "гиперболическое"
позиционирование. И что у нас, кроме ГЛОНАССа, до сих пор функционируют
и наземные системы. А вот космические системы (Парус, Сфера, Цикада,
Циклон) тоже выведены из оборота.

7 weeks agoYou can tune a file system, but you cannot tune a fish
Sergey Matveev [Fri, 7 Mar 2025 08:35:19 +0000 (11:35 +0300)]
You can tune a file system, but you cannot tune a fish

https://man.freebsd.org/cgi/man.cgi?query=tunefs
https://unixhistory.livejournal.com/1808.html
Взято из man-а по tunefs.

    .\" Take this out and a Unix Demon will dog your steps from now until
    .\" the time_t's wrap around.
    .sp
    You can tune a file system, but you can't tune a fish.

7 weeks agoИдеальный рабочий компьютер и домашний сервер
Sergey Matveev [Fri, 7 Mar 2025 07:38:32 +0000 (10:38 +0300)]
Идеальный рабочий компьютер и домашний сервер

https://ounapuu.ee/posts/2025/03/07/perfect-home-server/
https://ounapuu.ee/posts/2023/10/25/the-optimization-treadmill/
https://www.apple.com/newsroom/2025/03/apple-unveils-new-mac-studio-the-most-powerful-mac-ever/
Свалились ссылки из одного блога о рассуждениях об идеальном домашнем
сервере. Плюс на днях посмотрел на новое железо от Apple.

Когда-то я тоже любил делать "подкроватный хостинг" на отживших своё
ноутбуках. Зачастую у них ломается "мобильность", но системный блок ещё
может продолжать жить. Какое-то время у меня работал GuruPlug: маленькая
коробочка размером с RPi втыкаемая напрямую в розетку, имеющая два
Ethernet-а и eSATA порт. Подобные решения я вообще не рассматриваю как
вариант, даже для маршрутизатора/шлюза и/или NAS.

Нужно, как минимум, 2 или более Ethernet порта. Или, если форм-фактор
позволяет, то несколько PCIe слотов. Собственно, в них можно сколько
надо вставить сетевых карт, это не дорого.

Нужна возможность подключения множества HDD, чтобы это было сразу же и
NAS-ом. Хотя в теории ничто же не мешает разделить NAS от сетевого
шлюза/моста, но зачем? И опять же это намёк на необходимость
использования PCIe для установки SAS/SATA HBA. Не всегда на материнской
плате будет достаточное количество портов.

В нём должен быть всё же более менее приемлемый по мощности процессор и
вменяемое количество оперативной памяти. Когда я был выходной Tor нодой,
хостил Freenet, I2P и всякое такое -- всё это вполне себе требовало
относительно не мало ресурсов. А раз там будет NAS, то это однозначно
ZFS файловая система, которой CPU/RAM не помешают. Одновременный scrub
моих зеркал из 16, 20 и 22 TB дисков отъедает ощутимую часть 6-ти
ядерного Xeon процессора.

Только серверное железо, не consumer grade -- за 25+ лет я убедился, что
надёжность и стабильность работы (без нежданчиков) это не пустой звук и
слова на бумаге, поэтому только серверные процессоры и материнские платы.
Почти всю жизнь в нашей семье были только AMD процессоры: i386 (возможно
i286 тоже), i486, K6-2, K6-3, Athlon -- потому что дешевле. С
приобретением ноутбука появился Intel. Не считая MIPS-ового netbook-а,
дальше у меня только Intel был. Судя по сторонним наблюдениям,
обсуждениям в рассылках: AMD не всегда полностью и до конца
поддерживается в современных ядрах, если речь про виртуализацию и прочие
штуки. Видел в новостях как яростно глючили и были чуть-ли не
работоспособны Ryzen первые, если ничего не путаю. Возможно и с Intel
такие же проблемы всегда были, но вот почему-то в памяти оседает чётко
только про AMD. Плюс Intel chipset-ы и сетевые карты это максимальный
шанс что оно без проблем будет работать не под Windows/Linux, в отличии
от чипсетов для AMD решений. Поэтому я слепо только Intel CPU и chipset
выбираю.

Совсем нет опыта с ARM процессорами. Не прочь бы это использовать и
попробовать, но серверные решения на ARM что я видел -- дорогие, дороже
amd64 based. Либо относительно слабые. Это правда означает низкое
энергопотребление, что тоже хотелось бы, но если оно не может вытягивать
resilver/scrub с полдюжины HDD, параллельно раздавать BitTorrent и всё в
таком духе -- то значит оно уже не выполняет возложенные на него задачи.
Ну и вопрос с совместимостью с ОС: будет ли на случайной ARM64-based
штуке работать FreeBSD из коробки?

Сейчас я уже не хотел бы отказывать от 10GbE сети. И чтобы была
возможность подключения нормальных кабелей (хотя бы DAC), то есть был бы
SFP, а не намертво встроенная витая пара. А это снова означает, как
правило, необходимость ещё свободного PCIe слота.

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

Решения из ноутбуков или дешёвых одноплатников -- нет, не рассматриваю.
Больше нервов и геморроя и ограничений будет, чем экономии хотя бы
просто на обычном desktop компьютере, куда вставили HDD и NIC
дополнительные.

А каким я вижу идеальный рабочий (мобильный!) компьютер? Да по сути мой
текущий Intel NUC всем устраивает. Ну точнее, да: я хотел бы чтобы там
было server grade железо, но такого или никто не предложит в компактном
форм-факторе или будет дорого (хотя и NUC-то отнюдь не дешёвая штука).
Тут уж без вариантов и надо смириться. Обязательно два M.2 NVMe (можно и
только SATA) порта должно быть (или свободный PCIe слот для этого),
чтобы иметь зеркало, а не единичный диск. Мой NUC этому удовлетворяет.
Было бы полезно иметь SATA кабель, для того чтобы произвольный диск во
время каких-нибудь rescue работ иметь, но для rescue бывает достаточно и
USB enclosure, не страшно. Два сетевых порта: мой NUC из коробки их
имеет, killer-feature. Плюс в свободном PCIe ещё и 10GbE карта
вставлена. DisplayPort вывод должен быть -- HDMI то ещё говно по
вероятности иметь проблемы. Помощнее процессор и памяти побольше
(минимум 64GB) -- это очень хочется на рабочей машине.

Но Intel отдала производство NUC-ов Asus, к которым у меня не такое
доверие к качеству, но с ходу я не могу вспомнить точно моменты где Asus
плохо бы себя показывать. Они делают, насколько помню, насколько
показалось, и ширпотреб и качественные server-grade решения -- широкий
спектр. Вижу что NUC похожего форм-фактора всё же продолжают делать,
хотя в рюкзаке оно уже не уместится, судя по фотографиям:
https://www.asus.com/displays-desktops/nucs/nuc-kits/nuc-13-extreme-kit/

7 weeks agoКолоссальная коллекция CD-ROM игр типа Фаргуса
Sergey Matveev [Thu, 6 Mar 2025 06:55:48 +0000 (09:55 +0300)]
Колоссальная коллекция CD-ROM игр типа Фаргуса

https://rutracker.org/forum/viewtopic.php?t=6560175
https://my.abandonware.ru/
Подборка на 3.5TiB образов дисков с играми от уже не существующих
компаний типа Фаргуса, Седьмого Волка и подобных. Фаргус -- это прям
моя молодость. Именно эти диски были на прилавках всех магазинов и в
основном только подобные и приобретались.

8 weeks agoTutorial по git-send-email
Sergey Matveev [Tue, 4 Mar 2025 09:50:26 +0000 (12:50 +0300)]
Tutorial по git-send-email

https://git-send-email.io/
https://git-am.io/
Там даже есть пометки относительно Proton Mail:

    Protonmail does not support the open, industry-standard protocols
    necessary for git send-email to work out-of-the-box.

    Be advised that Protonmail is generally known to be a pretty bad
    email host. They will munge up your outgoing emails and your patches
    may fail to apply when received by the other end. Not to mention
    their mistreatment of open source and false promises of security!
    You should consider a different mail provider.

8 weeks agoКратчайшая история появления IP протокола
Sergey Matveev [Tue, 4 Mar 2025 05:40:18 +0000 (08:40 +0300)]
Кратчайшая история появления IP протокола

https://linkmeup.ru/podcasts/2761/
Понравилось:
[00:14:36.140 --> 00:14:38.520]   Сегодня IPv6 поддерживается большинством крупнейших
[00:14:38.520 --> 00:14:41.080]   интернет-компаний, хотя, конечно, есть и ретрограды,
[00:14:41.080 --> 00:14:42.780]   которым милее работать через коктейли из костыли
[00:14:42.780 --> 00:14:45.400]   и синей изоленты, образовавшиеся в результате эксперимента
[00:14:45.400 --> 00:14:49.160]   50-летней давности.

2 months agoЕщё разные способы шифрования файлов. Kryptor, Saltpack
Sergey Matveev [Fri, 28 Feb 2025 14:03:46 +0000 (17:03 +0300)]
Ещё разные способы шифрования файлов. Kryptor, Saltpack

https://www.kryptor.co.uk/specification
https://samuellucas.com/2021/01/28/kryptor-v3.html
https://saltpack.org/
https://blog.cloudflare.com/hybrid-public-key-encryption/
https://datatracker.ietf.org/doc/rfc9180/
За последнее время я узнал о существовании всяких разных стандартов и
инструментов для всякого шифрования.

* Kryptor. Сравнивает себя с age и minisign. Хвалится поддержкой PSK,
  аутентифицированного шифрования на публичных ключах, key commitment
  (6529c5c19cb52f69f65fec3d17e718cc491d2c53), в противовес age. Есть не
  prehashed версия подписи, в отличии от minisign. Квантовоустойчивость
  только за счёт PSK. Неотличимость от шума.
* Saltpack. Основан на MessagePack кодировании.
  * Описывает проблемы PGP: нет настоящего signcryption, выводит ещё не
    аутентифицированные данные, нет анонимных получателей, много старого
    legacy.
  * Подписи поддерживает потоково, однако подписывает каждый мегабайт
    отдельно, что я не очень одобряю (нагрузка на ключ). Не prehashed
    версии нет. Использует SHA512, что не одобряю ибо медленно.
  * В зашифрованных сообщениях есть repudiability, anonymity и сокрытие
    получателей. Поддержка нескольких получателей, с защитой от того,
    что кто-либо из них может изменить шифротекст (ведь ключ же есть у
    группы людей уже). Всё заточено на дружелюбность к потоковой
    обработке. И это тоже аутентифицированное шифрование на основе
    публичных ключей, в противовес age.

Оба творения (хотя я больше присматривался к Saltpack) выглядят достойно
и хорошо с криптографической точки зрения. В моём текущем KEKS/CM, где
реализация на Go имеется, тоже сплошное дружелюбие к потоковой
обработке, не выдаются неаутентифицированные данные, есть key
commitment, есть не prehashed версия подписи, есть настоящие PQ
алгоритмы для шифрования, есть key ratcheting (serial external key
rekeying, как в других местах это ещё называют). И шифрование и подпись
(только для prehashed версии) распараллеливаются (что у меня и делается,
выдавая GiB/sec).

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

Вообще, чем больше погружаешься в десятки всяких статей с IACR, то
офигеваешь от того же PGP (даже современного LibrePGP) и CMS, JOSE и
многим другим популярным вещам. Такое впечатление, что никто не
приглашает криптографов для разработки всего этого.

2 months agoСлепой метод печати: стоит ли переучиваться?
Sergey Matveev [Fri, 28 Feb 2025 13:59:41 +0000 (16:59 +0300)]
Слепой метод печати: стоит ли переучиваться?

https://habr.com/ru/articles/886758/comments/
Статью не дочитал, но осуждаю.
    [...]
    слепой метод печати. Освоить его сложнее, придется целенаправленно
    его изучать
    [...]
Категорически не согласен с этим утверждением, ибо я вот не учился.
Оно само со временем приходит. Если не приходит, то могу предположить,
что слишком мало времени проводится за набором текста. Соответственно и
доверия к дальнейшему тексту у меня нет. ~300 символов в минуту я делал
на ThinkPad. Но после подключения тактильной клавиатуры скорость сразу
же стала >400.

2 months agoChempat KEM combiner
Sergey Matveev [Fri, 28 Feb 2025 08:02:02 +0000 (11:02 +0300)]
Chempat KEM combiner

https://datatracker.ietf.org/doc/draft-josefsson-chempat/
Вот есть множество вариантов как скомбинировать результат работы разных
KEM-ов (объединить полученный секрет от пост-квантового и традиционного
DH, грубо говоря). X-Wing (135afdcb923cd9463751d5766279c8426ee6ab00),
XYBERTLS, HPKE,
https://datatracker.ietf.org/doc/html/draft-ounsworth-cfrg-kem-combiners-05,
да и ещё всякие. По сути нужно просто захэшировать результат. По
хорошему ещё и учесть отосланный шифротекст, а ещё лучше и публичные
ключи участников, чтобы весь контекст учесть в результате. Плюс и
возможность бы задать сам контекст применения.

Кто-то не учитывает публичные ключи, но доказывает что это излишне, для
чётко заданных двух конкретных комбинируемых алгоритмов. Кто-то хэширует
в таком порядке, что не удобно делать потоково это всё. Кто-то полностью
суёт в хэш публичные ключи (как это я делал в KEKS/CM), которые в случае
Classic McEliece могут быть более мегабайта.

Но вот смотришь на предложение от DJB. Всё учитывает. Вместо полных
публичных ключей использует хэш от них, как и хэш от шифротекстов. Это
позволяет заранее захэшировать эти огромные значения. Публичный ключ
получателя наверняка будет один и тот же, если использовать для PGP/CMS
подобных применений. Шифротекст (эфемерные ключи) тоже зачастую можно
переиспользовать -- поэтому и хэш от него вычислить и переиспользовать.
То есть, получаем возможность дорогие вычисления сделать заранее и
переиспользовать (например если отправляем сообщение нескольким
получателям).

Ну вот почему именно DJB (и команда) предлагает такие простые, но
продуманные решения? Даже вот в таких мелочах.

2 months agoFirefox с условиями использования
Sergey Matveev [Thu, 27 Feb 2025 07:28:58 +0000 (10:28 +0300)]
Firefox с условиями использования

https://www.opennet.ru/opennews/art.shtml?num=62799
Я вот не понимаю людей, которые умудряются считать Mozilla какой-то
положительной компанией, а Firefox чем-то хорошим. По моему уже чуть ли
не лет десять, но как ни новость про Firefox, то жесть на жести в плане
ужаса со сбором данных, рекламой, слежкой. Забавно, но я те же самые
эпитеты из года в год к Firefox применяю:
84f4c26aab49c2b1665ab961e264b2f6d3e45b89
a3a49eccb47ca5b67ff9c52fca12c08121a130e1

2 months agoКачество Debian документации, NTP
Sergey Matveev [Wed, 26 Feb 2025 09:01:02 +0000 (12:01 +0300)]
Качество Debian документации, NTP

https://www.debian.org/doc/manuals/debian-handbook/sect.config-misc.en.html
https://docs.freebsd.org/en/books/handbook/network-servers/#network-ntp
Вчера видел как коллега устанавливал себе Debian современный. По
неаккуратности у него так вышло, что оставшаяся какая-то резервная
область с Windows установила этот самый Windows поверх его Ubuntu.
Но это я знаю со времён Windows 9x -- она без спросу перезатирает
всё стороннее.

Коллега задался вопросом как настроить NTP в нём. Быстрый поиск приводил
к systemd-timesyncd, но вот только по умолчанию эта штука не установлена.
Ok, уже даже мне стало интересно есть ли что-то в штатной документации
этого старейшего дистрибутива. Идём с сайта в "Debian Administrator's
Handbook", видим секцию "Time Synchronization".

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

Во-вторых, нет никакой конкретики и примеров настройки. Есть упоминание
"ntp" пакета и в какой его конфиг смотреть. А теперь сравним с разделом
документации из FreeBSD, где и сам "ntp" стоит из коробки (хотя лично я
всегда везде chrony использую) и примеры конфигов приведены все, даже с
командами по перезапуску демона.

В-третьих, почему, будучи systemd ОС, Debian не упоминает даже
systemd-timesyncd? Это не Gentoo какая-нибудь, которая одновременно
несколько систем запуска. А timesyncd как-раз для чисто клиентских
устройств решение.

А ещё в этом Debian, в котором XFCE был выбран в качестве DE, есть
LibreOffice, но нет... ssh! Дистрибутив для секретарш, дожили. Хотя,
может оно и к лучшему -- наконец-то для них появился рабочий GNU/Linux? :-)

2 months agoСнова Linux, снова Rust, очередной профессионал уходит оттуда
Sergey Matveev [Wed, 26 Feb 2025 08:00:44 +0000 (11:00 +0300)]
Снова Linux, снова Rust, очередной профессионал уходит оттуда

https://www.opennet.ru/opennews/art.shtml?num=62797
Дядька участвовавший в разработке "XFS, KVM, Trace events, SCSI и Slab
Allocator" ушёл из Linux сопровождающих. Такое ощущение, что как будто
из ядра уходит по мощному профи чуть ли не каждую неделю. И всё из-за
безумия с Rust-ом, а точнее переусложнением и так дико сложного ядра.

2 months agoКак core Git разработчики настраивают Git
Sergey Matveev [Tue, 25 Feb 2025 08:16:48 +0000 (11:16 +0300)]
Как core Git разработчики настраивают Git

https://blog.gitbutler.com/how-git-core-devs-configure-git/
https://lore.kernel.org/git/60b5d281552d6_e359f20828@natae.notmuch/
Люблю статьи про то, как рассказывают про настройки и фишки с трюками.
Как мне показалось, преобладающая часть людей вообще ничего под себя не
настраивает и просто использует как им сказала Microsoft/Caninical/whatever.
Не удивительно, но настройки zdiff3 (6fdfee2b7de4a86ea405cf16859bd7fead4a9323)
упоминаются. diff.colorMoved=true и diff.algorithm=histogram тоже.
(3fb22b3e62e2a20eebbe6f1a175d1d6740346b267f9c1fcd8da46f67cbdb4dc97eb7a26e53be4856)
diff.colorMoved (3fb22b3e62e2a20eebbe6f1a175d1d6740346b26).

Всякие fetch.prune и fetch.all не одобряю чтобы были по умолчанию, ибо
человек должен решать как и что будет обновляться. Про всякую сортировку
ничего не могу сказать, ибо у меня нет проектов с большим количеством
веток. Заявление что column.ui clearly makes better у меня под вопросом,
ибо мне совершенно не нравится вывод в колонках.

2 months agoТрафик сайта cURL
Sergey Matveev [Tue, 25 Feb 2025 07:56:45 +0000 (10:56 +0300)]
Трафик сайта cURL

https://daniel.haxx.se/blog/2025/02/22/curl-website-traffic-feb-2025/
Около 2TB/день. Причём, преобладающая часть трафика это не скачивание
самого cURL, а их пачки CA сертификатов.

2 months agoМуха и солёные огурцы
Sergey Matveev [Tue, 25 Feb 2025 07:42:51 +0000 (10:42 +0300)]
Муха и солёные огурцы

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

2 months agoАлгоритмы ломают наше мышление
Sergey Matveev [Mon, 24 Feb 2025 18:02:32 +0000 (21:02 +0300)]
Алгоритмы ломают наше мышление

https://www.youtube.com/watch?v=QEJpZjg8GuA
Очень необычное для Technology Connections канала видео про
рекомендательные системы и их роль в нашей жизни. Автор предупреждает
об этом и советует переключиться на другие его творения, если идея не
нравится.

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

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

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

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

Причём у меня всё совершенно полностью от и до абсолютно на 100%
наоборот. Буквально вчера я пару писем отправил двум неизвестным мне
людям, имеющих опечатки и битые ссылки в своих статьях попавших мне
через Atom ленты. Я массу писем писал людям напрямую, но мне сложно
вспомнить когда бы я в последний раз писал комментарий. Наверное все
комментарии у меня были разве что только на Хабре (и то, потому что я
там статьи выкладываю), парочка на ЛОРе. Если у автора есть возможность
оставлять комментарии, но нет контактной информации как ему почту
отправить, то я вообще ничего не напишу.

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

Где-то в geminispace я даже видел фразу типа "хочется пообщаться с
автором, но у него нет комментариев в его gemlog". Совершенно мне не
ясно и не понятно это мышление. Причём сталкивался с таким не только у
молодёжи, но и у тех кто ощутимо старше меня.

2 months agoGoogle ALTS
Sergey Matveev [Mon, 24 Feb 2025 14:41:58 +0000 (17:41 +0300)]
Google ALTS

https://cloud.google.com/docs/security/encryption-in-transit/application-layer-transport-security
Вообще никогда не слышал прежде, но в Google свой собственный "TLS"
используется. Я был в курсе про IPsec на стыках из ЦОДов, но не более.
Вообще я скорее был бы удивлён если бы TLS использовался внутри. Судя по
описанию ALTS, то это протокол в котором Protocol Buffers вместо X.509
ASN.1 используются -- одобряю, разумно. У них многочисленные tradeoff-ы
явно отмечены, типа отсутствия PFS, сокрытия идентификаторов участников,
возможность KCI. Но я прекрасно понимаю, что для их внутреннего
использования и очень частого обновления сертификатов участников, всё
это разумные компромиссы. Они не поддерживают Ed25519 сертификаты в
Web/почте (только из-за них я ещё держал ECDSA сертификаты), но при
этом, внутри конечно же активно используют X25519.
Плюс моношифр в виде AES-GCM.

2 months agoОтваливался активный USB удлинитель
Sergey Matveev [Sun, 23 Feb 2025 07:18:56 +0000 (10:18 +0300)]
Отваливался активный USB удлинитель

В e83e818e20c039c6fc8a035154e3c732d98a9352 писал о том, что регулярно
отваливалось USB устройство. Но позже эмпирически было выяснено, что во
всём виноват активный удлинитель, вскоре вообще переставший работать.
Заменил на два соединённых 5м обычных кабеля. Не особо надеялся что
заработает, ибо везде же пишут про 3-5м максимальную дальностью. Но если
есть, как у инженеров, двухкратный запас прочности, то попытка не пытка.
GNSS приёмник заработал и вот уже почти неделю ни одного отвала. Демон
следящий за подключённостью устройства всё равно остаётся, но хоть тут
USB показывает себя приятно.

В блоге не писал, но USB хаб в, прошлом году приобретённом, мониторе
работал тоже паршиво -- время от времени отваливаясь со всеми
устройствами (клавиатура, мышь, звуковая карта).

2 months agoWayland вроде стал уметь WCG и HDR
Sergey Matveev [Sat, 22 Feb 2025 21:50:06 +0000 (00:50 +0300)]
Wayland вроде стал уметь WCG и HDR

https://www.opennet.ru/opennews/art.shtml?num=62737
В 826d90cc2ea12e59239d965728d9ec099e8d43c8 я писал о том, что
неожиданностью для меня стало отсутствие поддержки WCG/HDR и в
X.org и в Wayland. Ну про X.org ещё могу понять, но на дворе
2024-ый год, а модный современный так всеми популяризириуемый
Wayland всё это не мог. А тут новость, что в этом направлении
есть активное движение.

2 months agoFreeBSD sysctl и дополнения для zsh
Sergey Matveev [Sat, 22 Feb 2025 11:50:02 +0000 (14:50 +0300)]
FreeBSD sysctl и дополнения для zsh

man sysctl имеет примеры для дополнения значений sysctl-а для zsh:

     -N      Show only variable names, not their values.  This is particularly
             useful with shells that offer programmable completion.  To enable
             completion of variable names in zsh(1) (ports/shells/zsh), use
             the following code:

                   listsysctls () { set -A reply $(sysctl -AN ${1%.*}) }
                   compctl -K listsysctls sysctl

             To enable completion of variable names in tcsh(1), use:

                   complete sysctl 'n/*/`sysctl -Na`/'

Эта ОС не перестаёт приятно удивлять и радовать такими мелочами и
дружелюбностью к пользователю.

2 months agoMantar -- Post Apocalyptic Depression
Sergey Matveev [Fri, 21 Feb 2025 08:43:37 +0000 (11:43 +0300)]
Mantar -- Post Apocalyptic Depression

https://mantar.bandcamp.com/album/post-apocalyptic-depression
Клёвый у них вышел альбом! Прям чуть ли не эталонный по своему
фирменному звучанию и мотивчикам. Предыдущий, 2022-го года, прям...
скучный, совсем не запоминающийся, сразу забывается.

2 months agoMatrix это творение Моссада?
Sergey Matveev [Fri, 21 Feb 2025 08:26:01 +0000 (11:26 +0300)]
Matrix это творение Моссада?

https://web.archive.org/web/20201219014215/https://samba.noblogs.org/post/2018/08/27/matrix-org-a-federated-app-funded-by-a-mossad-company/
https://web.archive.org/web/20201104154843/https://github.com/matrix-org/matrix-doc/issues/979
https://0x19.org/posts/2023-06-09.php
Как тут пишут (но я не проверял, да и не хочу), Matrix с момента
создания годами спонсировался Amdocs компанией, которая засветилась
много раз на сборе (развед)данных для Израиля. Китай (и другие страны)
их вышибли отовсюду у себя из-за этого.

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

Автор статьи также пишет:
    functionally centralized (I have a suspicion that the devs
    intentionally made it as difficult as possible to self host in order
    to scrape more metadata and to sell more SAAS solutions)
Вот тут полностью соглашусь с тем, что разработчики как-будто специально
всё усложнили, дабы ты не поднимал своего решения. Я не смог поднять
работающую связку из своего Matrix сервера, клиента и чтобы с федерацией
к matrix.org. Пробовал и Python версию и Go. Уже не помню детали, но при
каждой попытке то так, то сяк попробовать, но какой-то из компонентов
(клиент, сервер, федерация) не работал. И очень много я слышал
рекомендаций из серии "забейте поднимать свой Matrix сервер, просто
используйте matrix.org".

2 months agoМинимализм ПО это максимализм UNIX
Sergey Matveev [Fri, 21 Feb 2025 08:07:59 +0000 (11:07 +0300)]
Минимализм ПО это максимализм UNIX

https://0x19.org/posts/2023-05-21.php
Верно замечает автор, что software minimalism это: to "reduce code
complexity", avoid "bloat", что "increases the maintainability", что, в
свою очередь, "decreases the total number of bugs". "Programmer
sacrifices cleverness for readability" -- что прямо противоположно
(3cd3d587c3909ae8da1f6bdde9ecaaf3bbcf87b9) Rust-у в моём понимании.
"Unused features are unaudited attack vectors"

"Any free UNIX that is not Linux is sufficiently minimal" -- похоже на
правду :-). "Any Linux without {systemd, freedesktop, pulseaudio, dbus,
wayland, GTK, KDE, anything GNU whatsoever} is sufficiently minimal".

Впрочем, в UNIX мире тоже полно так себе продуманных вещей, типа Make,
Autotools (хотя, возможно для своего времени оно стоило того), SysV
систем инициализации как пример.

2 months agoБоязнь IPv6
Sergey Matveev [Fri, 21 Feb 2025 07:58:10 +0000 (10:58 +0300)]
Боязнь IPv6

https://techlog.jenslink.net/posts/ipv6-is-hard/
Как написал источник откуда я получил ссылку:

    If it doesn't work it doesn't mean it's hard, fix it instead.

Полностью согласен с этим. IPv6 я считаю более простым и куда более
продуманным чем IPv4. Если не работает, то чини, исправляй, делай
грамотно, включай голову, забывай про подходы использованные в
obsolete legacy мире IPv4.

    If you do IPv6 take it seriously. If you don't take it seriously,
    don't do IPv6. That leaves to people thinking that IPv6 is hard and
    can not be done.

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) и альтернатив
не останется. Почти полностью уже так и произошло.