]> Sergey Matveev's repositories - stargrave-blog.git/log
stargrave-blog.git
2 years agoБеги, Лола, беги
Sergey Matveev [Sun, 17 Jul 2022 16:39:44 +0000 (19:39 +0300)]
Беги, Лола, беги

https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%B3%D0%B8,_%D0%9B%D0%BE%D0%BB%D0%B0,_%D0%B1%D0%B5%D0%B3%D0%B8
Фильм получил аж 25 наград всяческих. Реально клёвый и один из моих
любимейших. Однако как-то не многие его смотрели среди моих знакомых.
Если мне надо представить чисто немецкое женское лицо, то это всегда
Лола. Что она делает в фильме? Ну... весь фильм, действительно, бежит.

2 years agoВызов калькулятора в Vim
Sergey Matveev [Sun, 17 Jul 2022 07:49:14 +0000 (10:49 +0300)]
Вызов калькулятора в Vim

https://old.reddit.com/r/vim/comments/9421bm/whats_your_favourite_equalprg_hack/
http://www.git.stargrave.org/?p=dotfiles.git;a=blob;f=dc/.dc
Пишу тут код, где нужно прикинуть всякие простые вычисления, типа
offset-ов, длин и тому подобного. В самом же коде я делаю наброски и
вычисления, но нужно и что-то посчитать. Не видя никаких статей, я
самостоятельно додумался до вызова калькулятора внешнего:

    пишу на отдельной строке: 6 304 13 45 72 36 lSx 18 12+ 5*+p
    выделяю ("V") и вызываю калькулятор ":!zc"

Это я всякие размеры полей пакета считал, строчка оставшаяся в истории
редактора. Про ссылку на reddit вспомнил просто потому что недавно,
когда что-то искал по Vim, напоролся на неё. Но из неё узнал что вместо
визуального выделения параграфа, можно делать "!}zc" -- куда короче и не
загрязняет "историю" визуальных выделений. Всё равно, даже в простых
вещах, Vim не перестаёт удивлять маленькими полезностями.

В качестве калькулятора уже который год использую обёртку над dc RPN
калькулятором (d65882c3c5decb9e2216d7a8de98c1d422c2c42d).

    $ cat =zc
    #!/bin/sh
    exec rlwrap \
        --history-filename /tmp/.dc_history \
        --substitute-prompt "> " \
        --prompt-colour=red \
        dc -f ~/.dc -f /dev/stdin

Где ~/.dc содержит настройку точности и пока только пару скриптов:

* загруженный в "S" регистр суммирует всё что есть в стэке.
  Это я использую постоянно, без надобности писать кучу "+"
* загруженный в "L" регистр вычисляет натуральный логарифм. А для
  преобразования в другие основания применять формулу из школы, типа:
  1000lLx 10lLx /p

Вызов zc у меня есть и в tmux по быстрому нажатию prefix+t+c, но когда
чисел много, и их надо брать из кучи других мест, то уже не
попереключаешься между сессиями tmux удобно.

2 years agoLSP поддержка в Vim9
Sergey Matveev [Sat, 16 Jul 2022 14:48:48 +0000 (17:48 +0300)]
LSP поддержка в Vim9

:help language-server-protocol
LSP поддержка, возможность удобного взаимодействия с сервером в Vim9
имеется из коробки. Это конечно только вопрос про IPC, но всё же это
упростит плагины, с которыми всё очень не очень
(c89a9164128730eb856b89e4f99970a6bfb7b7f4).

2 years agoСнова про форматирование кода в Vim
Sergey Matveev [Sat, 16 Jul 2022 12:01:50 +0000 (15:01 +0300)]
Снова про форматирование кода в Vim

http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=1e761ea8af276caa2ff605cb4d7d0a63fac51a36
http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=f0f5d759e21858dc6a50f88ce80cdec24493a52c
В 3a417a68fd72f8b882dfc760b7dd6fa3a3940cd4 писал про то, что можно
существенно упростить вызов форматировалки кода. Но был не прав: оно не
учитывает что команда может упасть и выдать ошибки. И в моём случае
полностью перетирает содержимое выводом об ошибке.

Оказалось, что Go-шный родной плагин не делает ничего лишнего: проверяет
код ошибки, парсит вывод с ошибками из текущего буфера, заполняя quickfix,
дальше выполняет undo. Использование самого буфера как временное хранилище
мне нравится. Плагин был сделан отлично. Но я его портировал на vim9script.

Но есть другая проблема: если были ошибки, то из-за перетирания всего
буфера, его changelist становится полностью невалидным. Я делаю :Fmt,
получаю ошибку, но уже ни одна команда перемещения по изменениями у меня
не отработает. Можно вызвать команду через system(), получить её вывод и
код возврата, ничего не делая с буфером. Но я не нашёл способа как бы
обновить весь буфер не инвалидировав changelist, тогда как equalprg
вызов оставляет его почти полностью неизменным.

Поэтому в фоне (если вызывать system() или systemlist(), то они
скармливают данные не через pipe, а через временный файл) запускаю
equalprg, агрегирую её строчки, и при плохом коде возврата заполняю
ими quickfix. В противном случае вызываю =-форматирование.

2 years agoZFS дедупликация учитывает весь pool
Sergey Matveev [Fri, 15 Jul 2022 15:01:33 +0000 (18:01 +0300)]
ZFS дедупликация учитывает весь pool

https://unix.stackexchange.com/questions/382303/does-zfs-deduplicates-across-datasets-or-only-inside-a-single-dataset
Внезапно и неожиданно для себя увидел что дедупликация учитывает данные
всего pool-а. Выстапление dedup параметра для dataset-а просто означает
что они не будут избыточно копироваться, если оно уже есть в pool. А я
думал что и данные учитываются только per-dataset. Matthew Ahrens на
Stack Exchange подтверждает это. Теперь логично стало почему dedupratio
смотрится именно у pool-а. Эх... в целом это конечно всё портит: нельзя
красиво ограничить контекст дедупликации, только отдельным pool-ом.

2 years agoФорсированный sync данных на ZFS
Sergey Matveev [Fri, 15 Jul 2022 14:50:42 +0000 (17:50 +0300)]
Форсированный sync данных на ZFS

Команда sync не заставляет накопившиеся данные в кэше записываться на
диск. Ну, по крайней мере, в моей версии FreeBSD. Когда смотрел код
zfs-diff (22b9eb13c837497c09b0d17e11cffac8aa655999), то заметил что он
для своей операции создаёт временный эфемерный snapshot (что логично).
А это, в свою очередь, заставляет всё записаться на диск. А то у меня на
моём основном компьютере выставлено что в памяти может накапливаться до
32GB dirty данных, начиная выгружать их при 95% заполнении. Или же
делать транзакцию раз в две минуты.

Вот надо мне проверить наследуется ли dedup параметр о дочерних
dataset-ов. Точнее будет ли дедупликация общей для разных dataset-ов.
Для уверенности надо проверить, но ждать две минуты, пока оно реально
окажется на диске и zpool get dedupratio обновится -- долго. Достаточно
вот вызвать zfs diff, даже на другие dataset-ы, и всё мигом обновится.

2 years agoЗамена режима шифрования в PGP бесполезна и вредна
Sergey Matveev [Fri, 15 Jul 2022 11:33:32 +0000 (14:33 +0300)]
Замена режима шифрования в PGP бесполезна и вредна

https://articles.59.ca/doku.php?id=pgpfan:no_new_ae
Видел эту статью в RSS, но решил не комментировать. Но он её продолжает
сувать ещё и в официальные рассылки OpenPGP. Задолбал.

В своей статье он рассматривает нападки на OCFB-MDC и парирует их. Одной
из нападок является факт расчёта MDC до шифрования, что даёт возможность,
за счёт специально подобранных сообщений, атаковать систему. Но так как
там что-то ещё шифруется, именно в OpenPGP, то это не создаёт проблем.
То есть: есть, действительно, не самый безопасный режим шифрования и
аутентификации, но к которому сбоку добавили костыль-подпорку. Этот
режим и так не самый простой, но ещё и с костылём. Нет, я согласен, что
это не означает что нужно бежать сломя голову и менять это всё, ибо оно
на практике is good enough. Но это не значит что оно good.

Где-то, вроде бы Moxie Marlinspike, говорил что даже 3DES+HMAC-MD5,
казалось бы -- архаичные алгоритмы, но всё равно на практике more than
secure enough. Вот и автор демонстрирует аналогичное и призывает
оставаться на архаичных решениях.

У меня на самом деле тоже есть похожая позиция касательно OpenPGP и
например age (4674ad351dcb1f018d2392bc03fb0692e101e229). Но там
призывают полностью выбросить и отказаться от OpenPGP, в чём я сильного
смысла не вижу. А тут автор призывает вообще-превообще ничего не трогать
в OpenPGP. Я вот нарадоваться не могу OCB AEAD-режиму его: он прост,
надёжен и жутко быстр. Да, OpenPGP придётся поддерживать и legacy с
OCFB-MDC какое-то время, но новые реализации будут state of start.

А дальше он критикует новую хотелку в OpenPGP: о том что OpenPGP не
должен выдавать наружу не аутентифицированные (подозрительные) данные.
По моему это очевидно что не может быть чем-то плохим. Но автор считает
что это проблемы конечных приложений. Собственно, в этом то и наезд на
EFAIL: OpenPGP имеет такую особенность что он выдаёт подозрительные
данные. Тот кто его использует -- должен знать о ней и корректно
использовать, а кто не смог, тот заEFAILился. Но желание сделать
формат/решение таким, чтобы убрать подобные неприятные особенности:
разумно. Криптография это про простоту. И OpenPGP с AEAD-ами именно
упрощают, а не подпирают костылями, как это делали прежде.

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

2 years agoУстройство атомных часов
Sergey Matveev [Fri, 15 Jul 2022 11:27:21 +0000 (14:27 +0300)]
Устройство атомных часов

https://habr.com/ru/post/677064/
Давно я не чувствовал себя таким ничего не понимающим. Чем дальше по
статье, тем всё более запутаннее становится -- мозгов не хватает точно
понять о чём речь. Но дьявольски интересно! Сделал вывод: цезиевые часы
уже, мол, прошлый век. Ну а NTP, коммерческие часы и подобная фигня это
прям каменный век.

2 years agoHTTP авторизация как защита от роботов
Sergey Matveev [Fri, 15 Jul 2022 06:37:30 +0000 (09:37 +0300)]
HTTP авторизация как защита от роботов

https://lists.sdaoden.eu/pipermail/s-announce/2022-July/000058.html
Разработчик решил добавить HTTP basic авторизацию для страниц типа
git-репозитория, но в realm запроса явно написан login/пароль, который
увидит человек. Мне кажется идея неплохая и ничего не должна поломать,
ибо весь софт вроде бы умеет делать хотя бы такую авторизацию.

Но, он говорит, что Firefox этот realm не показывает. Я просто офигеваю:
ну как так можно? Firefox уже который год не перестаёт удивлять во что
он превратился.

2 years agoНаписал glocate утилиту
Sergey Matveev [Thu, 14 Jul 2022 21:15:38 +0000 (00:15 +0300)]
Написал glocate утилиту

http://www.git.stargrave.org/?p=glocate.git;a=summary
На фоне медленности поиска на HDD с 17.5M файлов и отсутствия быстрых
средств инкрементального обновления locate БД
(22b9eb13c837497c09b0d17e11cffac8aa655999), написал свою утилиту для
индексации файлов и их обновления. Пока жутко прежутко черновая версия,
но вроде работает как задумывал.

Сначала она пробегает по всей иерархии в текущей директории и составляет
отсортированные списки файлов с размерами и mtime-ом. Это хранит в виде
gob-файла (сериализация родная в Go) сжатого zstd. Для любого вывода
полностью загружает и декомпрессирует его в памяти.

Умеет выводить красивый вывод для человека (замена tree), типа:

    ├ music/HARTE/  №0 [283 GiB] 2022-05-10
    │ ├ 324-Boutoku_No_Taiyo/       №1 [33 MiB] 2020-12-10
    │ │ ├ 01.Silence_Before_Silver_Screen.mp3       №1 [3.7 MiB] 2016-10-13
    │ │ ├ 02.Quarter_Moon.mp3       №2 [1.6 MiB] 2016-10-13
    │ │ ├ 03.Red_Origin_Still_Streaming.mp3 №3 [2.0 MiB] 2016-10-13
    │ │ ├ 04.Plastic_Dream.mp3      №4 [2.9 MiB] 2016-10-13
    │ │ ├ 05.Japanese_Title.mp3     №5 [1.6 MiB] 2016-10-13
    │ │ ├ 06.Disgusting_Flower.mp3  №6 [2.4 MiB] 2016-10-13
    │ │ ├ 07.Swinging_Skull.mp3     №7 [1.3 MiB] 2016-10-13
    │ │ ├ 08.Broken_Clock.mp3       №8 [2.1 MiB] 2016-10-13
    │ │ ├ 09.Crawl_In_The_Transparency.mp3  №9 [1.6 MiB] 2016-10-13
    │ │ ├ 10.New_Demention.mp3      №10 [2.2 MiB] 2016-10-13
    │ │ ├ 11.Cobalt.mp3     №11 [1.9 MiB] 2016-10-13
    │ │ ├ 12.Flash_Rings_Link.mp3   №12 [2.6 MiB] 2016-10-13
    │ │ ├ 13.Moc.mp3        №13 [2.9 MiB] 2016-10-13
    │ │ └ 14.Glenghost.mp3  №14 [4.1 MiB] 2016-10-13
    │ ├ 7_H.Target-2011-Fast-Slow_Demolition/       №2 [293 MiB] 2020-09-06
    │ │ ├ 01.Transmutation_Energy_Machine.wv        №1 [17 MiB] 2020-09-06
    │ │ ├ 02.Technosex.wv   №2 [17 MiB] 2020-09-06
    │ │ ├ 03.Metal+Flesh.wv №3 [25 MiB] 2020-09-06
    │ │ ├ 04.Drill_Penis.wv №4 [18 MiB] 2020-09-06

вывод дружелюбный к парсингу компьютером:

    303730496828 2022-05-10 music/HARTE/
    34290985 2020-12-10 music/HARTE/324-Boutoku_No_Taiyo/
    3875800 2016-10-13 music/HARTE/324-Boutoku_No_Taiyo/01.Silence_Before_Silver_Screen.mp3
    [...]
    4292087 2016-10-13 music/HARTE/324-Boutoku_No_Taiyo/14.Glenghost.mp3
    306921714 2020-09-06 music/HARTE/7_H.Target-2011-Fast-Slow_Demolition/
    17598286 2020-09-06 music/HARTE/7_H.Target-2011-Fast-Slow_Demolition/01.Transmutation_Energy_Machine.wv
    18076892 2020-09-06 music/HARTE/7_H.Target-2011-Fast-Slow_Demolition/02.Technosex.wv

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

Собственно, сам поиск утилита не делает: или суй в grep или fzf
какой-нибудь. Загружается этот файл в течении нескольких секунд.

Скорость создания БД -- упирается исключительно в IO у меня. Почти
столько же времени занимает что и просто сделать find по ФС. Вот правда
для 16TB раздела процесс под конец занимал почти 3.5GB. Загруженный в
память, при "штатном" использовании: отнимает 2GB. В общем то совсем не
мало, но я и не заморачивался экономией ресурсов и мне даже и так будет
удовлетворительно. БД для 17.5M файлов у меня заняла 128MB, что по моему
вполне себе терпимо. С ходу пришла мысль о том, что можно не хранить
размеры директорий: сжаться должно лучше, в надежде что это ни капли не
затормозит загрузку файла.

Ну и главная фишка: утилите можно скормить выхлоп zfs diff | sort -r и
все его действия (добавление, удаление, переименования, изменение) будут
применяться к загруженному состоянию, а дальше атомарно обновлено на
диске. Узнать какие изменения были произведены быстрее zfs diff-а всё
равно никто не сможет. zfs diff приятен тем, что его вывод,
отсортированный в обратном направлении, буквально говорит что и как надо
поочерёдно удалить и что обновить касательно mtime-а.

2 years agoБыстрый locate и инкрементальное обновление его БД
Sergey Matveev [Thu, 14 Jul 2022 11:06:26 +0000 (14:06 +0300)]
Быстрый locate и инкрементальное обновление его БД

С появлением дополнительного большого раздела
(324ba83a7eba5331bd93e0360fd181657dddf3d0) и переноса на него всяких
всячин, которые время от времени обновляются, выяснилось что суммарно
уже на диске находится более 17.5M файлов и директорий. Просто
выполнение find-а на нём занимает 51мин. Я редко ищу что-то совершенно
не зная где оно примерно может находится, поэтому find натравливался на
поддиректории. Но всё же может понадобится поиск и по всему диску.

51 минута это ни в какие ворота конечно же. Можно сделать дамп вывода
find, использовать locate команду. Но мне не нравится тот факт, что
пересоздание этих state-ов всё равно займёт час времени постоянной
трескотни дисков. Пускай это у меня и так штатно происходило каждую
ночь, но чтение с HDD всё же является для них нагрузкой и износов,
учитывая большое количество random IO. Чай не SSD.

Хочется инкрементального обновления этой БД. Но как понять что у меня
изменилось? mtime на директориях меняется только если изменился, грубо
говоря, список файлов в ней. У вышестоящих директорий уже ничего не
будет затронуто. Штатные средства POSIX-а тут бессильны.

Видел что есть реализации locate следящие за событиями связанными с ФС.
Какой-нибудь kqueue тут тоже не подойдёт, как мне кажется, ибо он может
наблюдать только за одним объектом (одной директорией), без рекурсии.
Придётся создавать колоссальное количество kqueue объектов, что вряд ли
будет приятно ядру.

Но я знаю в общих чертах устройство ZFS, которое само по себе идеально
подходит для того, чтобы быстро понимать где что и как изменилось
относительно какого-то предыдущего состояния. Полез смотреть все данные
связанные с объектом в ZFS через zdb. В нём есть поле "gen", несущее
номер транзакции при которой был создан данный объект. Но нигде нет
информации о текущем txg. Насколько понимаю, эта информация находится не
в dnode-е, а в block pointer-е несущем эту dnode-у, до которого я не
нашёл как бы можно было вменяемо достучаться. Полез в исходный код
zfs-diff команды, а она просто бегает про объектам и сравнивает по сути
эти же самые поля что я видел и в zdb выводе, никакой магии. Вот только
это требует особых привилегий для запуска.

В общем, судя по всему, быстро найти что изменилось на ФС, можно только
через zfs diff, сравнивая snapshot-ы. И проще всего это буквально
вызывать эту команду и парсить её вывод. Готового решения для этого не
видел, так что придётся, видимо, писать самому. Ведь мне ещё и размеры
файлов хотелось бы знать, чтобы на основе этого можно было красивый
tree-like вывод делать.

В ZFS, с какой-то версии, появился special VDEV allocation class:
https://en.wikipedia.org/wiki/ZFS#Special_VDEV_Class
при котором можно метаданные сохранять например на SSD отдельные,
существенно ускоряя с ними работу. Мне бы точно помогло такое. Даже
есть две неиспользуемые SSD. Но у меня достаточно старая FreeBSD где
такого функционала нет. Да и сильного желания всё же тоже: кроме зеркала
из двух HDD, ещё придётся иметь зеркало из двух SSD, которые у меня и
так полудохлые.

2 years agoОбзор защищённых транспортных протоколов
Sergey Matveev [Wed, 13 Jul 2022 08:29:24 +0000 (11:29 +0300)]
Обзор защищённых транспортных протоколов

https://datatracker.ietf.org/doc/html/rfc8922
Есть вот целый RFC, где упоминаются и DJB-шный CurveCP с MinimaLT
(6e30e1c9e0cf17d773f9238d0d164175c28924fc) и WireGuard.

Summary of Interfaces Exposed by Protocols:
+===========+===+====+=====+==+==+======+==+=====+==+==+======+==+==+
| Protocol  |IPK|ALG | EXT |CM|AD| PSKI |IV| SAV |CT|KU| SSKE |KE|ME|
+===========+===+====+=====+==+==+======+==+=====+==+==+======+==+==+
| TLS       | x | x  |  x  |x |  |  x   |x |     |x |x |  x   |  |  |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| DTLS      | x | x  |  x  |x |  |  x   |x |  x  |x |x |  x   |  |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| ZRTP      | x | x  |     |x |  |  x   |x |     |x |  |      |  |  |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| QUIC      | x | x  |  x  |x |  |  x   |x |  x  |x |x |      |  |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| tcpcrypt  |   | x  |     |x |x |  x   |  |     |x |x |  x   |  |  |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| MinimaLT  | x | x  |     |x |  |  x   |x |     |x |x |  x   |  |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| CurveCP   | x |    |     |  |  |      |x |     |  |  |      |  |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| IPsec     | x | x  |     |  |x |  x   |x |  x  |x |x |  x   |x |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| WireGuard | x |    |     |  |  |  x   |x |  x  |  |  |      |  |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| OpenVPN   | x | x  |     |  |  |  x   |x |     |x |  |  x   |  |  |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+

IPK  : Identities and Private Keys
ALG  : Supported Algorithms (Key Exchange, Signatures, and Ciphersuites)
EXT  : Extensions
CM   : Session Cache Management
AD   : Authentication Delegation
PSKI : Pre-Shared Key Import
IV   : Identity Validation
SAV  : Source Address Validation
CT   : Connection Termination
KU   : Key Update
SSKE : Shared Secret Key Export
KE   : Key Expiration
ME   : Mobility Events

2 years agoПогулял в Коломенском парке
Sergey Matveev [Wed, 13 Jul 2022 07:18:37 +0000 (10:18 +0300)]
Погулял в Коломенском парке

https://kolomenskoe.su/park/
Был я там в последний раз наверное лет десять назад. А вообще частенько
с одногруппниками туда захаживали, хоть институт наш находится и на
другом конце Москвы. Тогда ещё не было никаких дорожек с плиткой. И то
ли я был меньше, то ли дорожки визуально так влияют, но сейчас все эти
просторы парка кажутся в разы меньше чем были прежде. Мне казалось что
там пару огромных таких полей, где можно и поваляться и никого в радиусе
сотни метров не будет. Но в этот раз я не забредал ни в яблоневые сады,
ни в лес.

2 years agoСнова прошёл чемпионат мира по heavy metal вязанию
Sergey Matveev [Wed, 13 Jul 2022 07:10:24 +0000 (10:10 +0300)]
Снова прошёл чемпионат мира по heavy metal вязанию

http://www.hitkiller.com/smotrim-strim-chempionata-mira-po-xevi-metal-vyazaniyu.html
Ну в этом году что-то так себе по моему, в отличии от предыдущих
(9aeaaac840d37696a5cc9a5874fc39b0c302ea75), но любую подобную
движуху яростно одобряю!

2 years agoПрочитал "Огнепад" Питера Уоттса
Sergey Matveev [Tue, 12 Jul 2022 19:24:34 +0000 (22:24 +0300)]
Прочитал "Огнепад" Питера Уоттса

https://www.livelib.ru/book/1006964947-ognepad-sbornik-piter-uotts
https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%B6%D0%BD%D0%B0%D1%8F_%D1%81%D0%BB%D0%B5%D0%BF%D0%BE%D1%82%D0%B0_(%D1%80%D0%BE%D0%BC%D0%B0%D0%BD)
https://ru.wikipedia.org/wiki/%D0%AD%D1%85%D0%BE%D0%BF%D1%80%D0%B0%D0%BA%D1%81%D0%B8%D1%8F_(%D1%80%D0%BE%D0%BC%D0%B0%D0%BD)
Это сборник из двух книг: "Ложная слепота" и "Эхопраксия". Подарил его
друг и вот сейчас только осилил, ибо параллельно ещё были незаконченные
книги в очереди. Он же мне прежде дарил "Семиевие" Нила Стивенсона
(ad1e55aca359fd071aea257aaee50fa59d5b3d3e), "Благие знамения"
(26a407a9617967991d03effa9b58d8eb7dfda294) и его вкус мне точно по вкусу!

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

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

2 years agoMinimaLT протокол
Sergey Matveev [Tue, 12 Jul 2022 15:36:46 +0000 (18:36 +0300)]
MinimaLT протокол

http://cr.yp.to/tcpip/minimalt-20131031.pdf
Зашифрованный транспортный протокол, с PFS, защитой IP заголовков,
возможностью аутентификации как только сервера, так и клиента.
Напоминает и TLS и IPsec. Но этот протокол делает handshake с PFS-ом
за один roundtrip, быстрее чем TCP. Возможность продолжать работу
даже при смене IP адресов. Возможность защиты от DoS-а вставкой паззлов
требуемых для подключения. А также он может туннелировать несколько
независимых соединений.

Работает это даже с меньшими задержками чем TCP, но не как-то магически,
а за счёт того, что используется directory сервер, с которого получают
короткоживущие эфемерные публичные ключи сервера. Это может быть и DNS
например, к которому всё равно запрос должен пойти для узнавания IP
адреса. Так что, действительно, round-trip штатно будет только один,
если в целом смотреть на всю эту экосистему.

А вообще транспортный host-to-host режим IPsec-а много в чём близок к
этому решению. TLS в статье обосрали конечно полностью. MinimaLT
заменяет собой TCP+IPsec/TLS обязательно интегрируясь с directory
сервером (например DNS-ом), поэтому и получается такой profit и
простота. Как например ZFS заменяет собой RAID+LVM+кучу-всего.

2 years agoJPEG XL в очередной статье/тестах всех уделывает
Sergey Matveev [Mon, 11 Jul 2022 11:51:44 +0000 (14:51 +0300)]
JPEG XL в очередной статье/тестах всех уделывает

https://habr.com/ru/company/first/blog/674878/
Что меня не удивляет. А вот комментарии типа:

    от Discrete Cosine Transform они вроде не отказались, а значит в
    любом случае будут потери в наименее значащих битах

разочаровывают. Автор не в курсе что уже даже в JPEG2000 для lossy и
lossless сжатия использовались два совершенно разных wavelet-а? В том
же WebP lossless сжатие на самом деле, по сути, совершенно другой
алгоритм, ничего общего с VP8 не имеющим (насколько помню). Ну и в общем
случае, если сделать точность достаточную чтобы покрыть ошибки
округления, то и в DCT без квантования нет проблем сделать lossless.

2 years agoMicrosoft препятствует распространению свободного ПО
Sergey Matveev [Sun, 10 Jul 2022 08:54:27 +0000 (11:54 +0300)]
Microsoft препятствует распространению свободного ПО

https://www.opennet.ru/opennews/art.shtml?num=57473
В статье правда речь про открытое ПО. Но одна из основополагающих свобод
в свободном ПО это право продавать, получать деньги. То есть, я, как
автор, мог бы загрузить туда свою свободную программу, брать мзду, но
кто-то после первой покупки вправе выложить бесплатно и поэтому Microsoft
запретит мне распространять впредь своё творение? Ничего удивительного,
ведь это же Microsoft. Это всё идёт вразрез с принципами СПО.

2 years agoДвухфакторная аутентификация PyPI привела к удалению популярного пакета
Sergey Matveev [Sun, 10 Jul 2022 06:48:03 +0000 (09:48 +0300)]
Двухфакторная аутентификация PyPI привела к удалению популярного пакета

https://www.opennet.ru/opennews/art.shtml?num=57481
Понимаю автора -- я бы принципиально не стал страдать этой хернёй с
двухфакторной аутентификацией. Я сам в праве решать как мне обеспечивать
безопасность. Кто-то считает что нужно вводить пароль со всякими цифрами
и знаками препинания. Кто-то считает что даже парольные фразы являются
злом и нужно только криптоключи или что-то подобное использовать. А
кто-то вообще считает что SMS-ки достаточно. Тут не может быть всех
удовлетворяющего решения. А если компрометация учётной записи даже с
парольной фразой возможна, чего вроде бы нет -- тогда и OTP и подобные
решения тут не помогли бы. Всё таки есть разница между секретаршей,
априори вешающей свой цифровой шестизначный пароль на монитор и
разработчиком ПО. Понимаю, понимаю, что современные разработчики в массе
своей не далеко ушли от этих секретарш в вопросах безопасности, но это
просто унизительно бы было для нормальных и адекватных чтобы к ним
принимали схожие меры.

2 years agoПоявился 16TB жёсткий диск
Sergey Matveev [Sat, 9 Jul 2022 18:26:40 +0000 (21:26 +0300)]
Появился 16TB жёсткий диск

Уже давно присматривался к тому, чтобы взять себе большие жёсткие диски.
Но надо брать парочку, а это стоило более 100k₽ ещё до начала СВО. А
сейчас даже пару 18TB дисков для серверов (правда SATA) можно найти за
эту цену новеньких. К сожалению, в наличии был только один диск, так что
жду доставки второго, ибо в зеркало я даже NVMe помещаю в NUC-е. Вроде
бы данных у меня и не сказать чтобы много: никаких 4K фильмов или там
современных тяжеловесных игр, но один только раздел для сборки Android
занимает 360GB, и даже одна его резервная копия это ощутимый вес. Да и
фильмы перестали умещаться -- уже давно выгружены на ленты, что не
позволяет быстренько взять и посмотреть их. Или вот как-то надо было мне
Worms игру достать, DOS-овскую -- вряд ли бы ожидал что такое появится в
планах, но на дисках у меня такое не лежит. Хотя горячий доступ к ним и
не горит, но почему бы и не сделать поудобнее.

2 years agoКак в LTT охлаждают ПК
Sergey Matveev [Sat, 9 Jul 2022 18:20:34 +0000 (21:20 +0300)]
Как в LTT охлаждают ПК

https://www.youtube.com/watch?v=T1ZnAwUg9CU
Получившаяся бандура и вообще комната мне жутко напоминают сцены из
фильма Бразилия (82654d517d6b2d97bbc6ccd7fc65ff19cc713dc9), где мне
казалось это такой глупостью что можно ожидать подобное в будущем.
Но лично я бы не отказался от подобной штуки, ибо с точки зрения
теплопереноса всё грамотно и корректно.

Но труба у меня уже имеется: мобильный кондиционер спасает в эти жаркие
дни (f0b195faac59a95ceab92b423dfaceba137e52f6).

2 years agoBLAKE3 в ZFS
Sergey Matveev [Sat, 9 Jul 2022 18:07:01 +0000 (21:07 +0300)]
BLAKE3 в ZFS

В рассылке FreeBSD вижу что тестируют возможность использования BLAKE3 в
качестве checksum в ZFS. Круто, мой выбор бы пал на него. Быстрее всяких
MD5, при этом оставаясь надёжным криптографическим хэшом.

2 years agoСистемный блок из 2003-го
Sergey Matveev [Sat, 9 Jul 2022 07:43:24 +0000 (10:43 +0300)]
Системный блок из 2003-го

https://www.linux.org.ru/gallery/workplaces/16910635
Очень похоже на мой системник тех времён: насчёт 5.25" дисковода не
уверен что ещё был, но без 3.5" безусловно никуда. Два CD-привода
конечно же: один крутой хороший Teac (и у автора и у меня) для записи, а
дальше какой-нибудь дешёвый для чтения, чтобы первый не изнашивать по
пустякам. Модем точно так же стоял, но на тот момент у меня уже был
USRobotic Courier V.Everything. И тоже, чего у меня там только не было,
тоже включая QNX какой-нибудь.

Сбоку ещё виден Epson принтер -- небось матричный. И у меня аналогично.
Шумные конечно, но лента стоила как пару CD-болванок (почти ничего не
стоила), а хватало её на годы (!) даже при вполне себе активной печати.

2 years agoСамые смешные фильмы всех времён
Sergey Matveev [Thu, 7 Jul 2022 17:07:23 +0000 (20:07 +0300)]
Самые смешные фильмы всех времён

https://lenta.ru/news/2022/07/07/funny/
Если в современной музыке я совершенно ни капли не в теме, даже названий
лучших групп десятилетия не слышал (bf94be562853f113de684137e053a04a9db4da9a),
то в фильмах я полностью в теме и очень солидарен с мнениями.

* Борат -- честно говоря, не особо вспоминаю где там моменты чтобы прям
  надрываясь можно смеяться, но положительное настроение мне всегда с
  ним гарантировано, не раз пересматривал, обожаю его!
* Реальные упыри -- 8b6513e68a8e2f1900a2c2ae3de986f329a26ee6. Мне ОЧЕНЬ
  понравились, готов с удовольствием снова пересмотреть. А вот моим
  родителям совершенно не зашло, мол даже пожалели потраченного времени.
  Думаю что и Борат им тоже бы не понравился
* Типа крутые легавые -- ещё один фильм, который я готов пересматривать
  неоднократно. Всё же, действительно, лучший из трилогии "Кровь и
  мороженое" (0f456f8e5252351ca8e4028cebebdf4c4605e9ba), хотя "Зомби по
  имени Шон" тоже очень и очень мне люб, пересмотрю запросто!

Также в новости упоминаются:

* Офисное пространство -- не слышал
* Похождения императора -- не слышал
* Аэроплан -- ff6d4e82b314d1ce8af0d8e3d70f1b862e6dec4e, ну просто
  неплохая комедия, но для меня и ничего выдающегося
* В поисках галактики -- не слышал
* Монти Пайтон: Житие Брайана -- 45218d4a135a57f1cfce4ee55b73469eb37fd062,
  без комментариев, ибо это крутейший фильм Монти Пайтона, как и их
  "Смысл жизни"
* Клетка для пташек -- не слышал
* Мой кузен Винни -- не слышал
* Улика -- не слышал
* Космические яйца -- не слышал
* Рыбка по имени Ванда -- посмотрел совсем недавно, отличная комедия,
  тоже кстати с участниками Монти Пайтона (9408b1f48f8029aecb495aba2649031c5fb22472)
* Самолётом, поездом, машиной -- хм, ведь вроде бы в прошлом году его
  смотрел, а в блоге ничего не написал. Просто неплохая добрая комедия,
  но и ничего выдающегося
* SuperПерцы -- смотрел в этом году, неплохо, но и недостаточно достойно
  было для упоминания в этом блоге
* Победители шоу -- 9148834b07e64d342e98c8e148c4cf982657d66e уже писал
  что оно забавное конечно, но не более, ничего выдающегося

Фильмы явно составлены западным зрителем, ибо подборка, кроме первой
троицы, чисто средненькая, кроме Монти Пайтонов.

2 years agoПоттеринг ушёл в Microsoft
Sergey Matveev [Thu, 7 Jul 2022 07:02:07 +0000 (10:02 +0300)]
Поттеринг ушёл в Microsoft

https://www.opennet.ru/opennews/art.shtml?num=57464
https://www.phoronix.com/scan.php?page=news_item&px=Systemd-Creator-Microsoft
С одной стороны это конечно новость, а с другой вряд ли это кого-либо бы
могло удивить, ибо он многие годы только и занимался тем, что превращал
GNU/Linux экосистему в этот самый Windows, с соответствующей неюзабельностью,
корявостью, небезопасностью и ненадёжностью.

2 years agotshark и termshark
Sergey Matveev [Wed, 6 Jul 2022 19:40:38 +0000 (22:40 +0300)]
tshark и termshark

https://tshark.dev/
https://github.com/gcla/termshark
Как-то не многие знают про tshark, в отличии от (сильно) простого
tcpdump и сильно тяжёлого GUI Wireshark. tshark входит в состав
последнего, но работает в консоли.

Wireshark/tshark конечно огромные монстры по размерам, по сравнению с
tcpdump, но зато умеют очень глубоко и детально разбирать пакеты. tshark
очень помогает мне.

И вот ещё познакомился с termshark: TUI программа на Go, создающая
полноэкранный интерфейс для tshark-а. Собирается без проблем. И
действительно, есть случаи когда подобный интерфейс (отдельно детали
пакета, отдельно его шестнадцатеричное содержимое, отдельно списки
пакетов) ощутимо тоже помогает.

2 years agoGentle introduction to elliptic-curve cryptography
Sergey Matveev [Wed, 6 Jul 2022 06:50:55 +0000 (09:50 +0300)]
Gentle introduction to elliptic-curve cryptography

http://ecchacks.cr.yp.to/
https://media.ccc.de/v/31c3_-_6369_-_en_-_saal_1_-_201412272145_-_ecchacks_-_djb_-_tanja_lange
https://cdn.media.ccc.de/congress/2014/webm-sd/31c3-6369-en-ECCHacks_webm-sd.webm
Помню что в YouTube это видео выступления Бернштейна с Таней было не
тривиально найти. Не замечал что у них есть отдельный ecchacks. сайт
для всего этого.

2 years agoОдна консоль на устройство в Linux и удаление coredump-ов
Sergey Matveev [Wed, 6 Jul 2022 06:26:24 +0000 (09:26 +0300)]
Одна консоль на устройство в Linux и удаление coredump-ов

https://utcc.utoronto.ca/~cks/space/blog/
https://unix.stackexchange.com/questions/220420/cleaning-up-coredumpctl-list
Человек пишет что Linux поддерживает только одну консоль per device type.
Не перестаю удивляться во что превратилось то, что раньше пыталось быть
Unix-ом. Точно отчётливо помню что в прошлом году игрался с COM-портами
на своём сервере и без проблем имел несколько консолей в нём.

А вчера я искал как бы мне удалить накопившиеся coredump-ы созданные
coredumpctl-ем (763addc2e593a89a365040923567746f948155a9). Я конечно
нашёл где лежат сами дампы, но их удаление приводит к тому, что просто
показывается в списке coredumpctl, что они не доступны, но где-то в
state знание о них сохранилось. И... как говорит stackexchange, такой
возможности нет вообще. Предложения очистить журнал не помогают.
systemd-tmpfiles не помогает. В общем-то, абсолютно ничего не
отрабатывает. Удалил их сделав rm /var/log/journal/*/*.
Это немыслимо во что вся эта экосистема превратилась.

2 years agoОсвоил не развязывающийся узел шнурков ботинок
Sergey Matveev [Tue, 5 Jul 2022 18:31:51 +0000 (21:31 +0300)]
Освоил не развязывающийся узел шнурков ботинок

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

2 years agoСтоляров о JavaScript
Sergey Matveev [Mon, 4 Jul 2022 19:50:21 +0000 (22:50 +0300)]
Столяров о JavaScript

http://stolyarov.info/faq.html
Обратили мне тут внимание что у Столярова есть FAQ с ответами на тему JS.

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

    Я вот тут подумываю насчёт расширения объёма памяти в моей основной
    рабочей машине, при этом единственное, что тут тормозит - это браузер.

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

    Смешно, да. Ну давайте посмотрим, как реально обстоят дела с этой
    вашей юзабилити. Лично я обычно просто не хожу на сайты, которые не
    работают без JS, то есть вообще не хожу — точно так же, как не хожу,
    например, в такие магазины, где продавцы хамят и матерят
    покупателей. Но, увы, есть парочка сайтов (буквально: два), которые
    мне использовать приходится, несмотря на наличие там JS и
    невозможности работы без него. Так вот, чтобы зайти на такой сайт,
    мне приходится на рабочей машине держать специально для этого пустой
    аккаунт, на котором периодически сносится всё, что там успел
    нагвоздить браузер; перед заходом на JS-нутые сайты я делаю ssh -X
    bolvan@localhost и уже там запускаю браузер. Это вы называете
    "повышением юзабилити"?!

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

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

    >код на JS полностью абстрагирован от реального железа и не зависит
    от среды выполнения
    То же самое можно сказать про любой интерпретируемый язык, а равно и
    про язык, который компилируется в байткод. И это никоим образом не
    повод иметь в браузере интерпретатор любого алгоритмически полного
    языка, неважно, JS это или что-то ещё. Кстати, от среды выполнения
    JS очень даже зависит — если статический HTML ещё более-менее
    реально заставить выглядеть одинаково в разных браузерах, то
    заставить JS вести себя всегда одинаково — невозможно в принципе,
    это превышает возможности человека.

    >Какие возможны альтернативы JavaScript в плане снижения нагрузки на
    сервер со стороны клиентов и экономии трафика?
    Вопрос был бы корректен, если бы «решение» в виде JavaScript можно
    было бы считать хоть сколько-нибудь допустимым; но это не так,
    применение JS на сайтах по сути своей преступно. С тем же успехом
    подсудимый, которого отправляют в тюрьму за серию квартирных краж и
    разбойных нападений, мог бы требовать от судей указать ему
    «альтернативу кражам в плане быстрого получения большого количества
    денег, что особенно актуально, когда не хочется работать».

2 years agoТип переменной индекса массива в Си
Sergey Matveev [Mon, 4 Jul 2022 11:41:07 +0000 (14:41 +0300)]
Тип переменной индекса массива в Си

https://stackoverflow.com/questions/3174850/what-is-the-correct-type-for-array-indexes-in-c
https://sergvasiliev.medium.com/about-size-t-and-ptrdiff-t-a1654234d842
Вот размеры и длины я привык (и считаю корректным) указывать в size_t.
Но если хочется итерироваться по массиву, указывать элемент в нём, то
какой тип применять для переменной содержащей индекс? size_t плох тем,
что он беззнаковый, так что при логической ошибке или переполнении его
значение может стать огромным из-за переполнения и оно уйдёт в
бесконечный цикл например. Подобное отлаживать не очень приятно. А я уже
не раз напарывался на подобную ошибку.

Хочется использовать число со знаком. int может быть слишком маленьким.
ssize_t определён только в POSIX и гарантирует только [-1, SSIZE_MAX].
Куча людей указывается на ptrdiff_t. Но и он может, очевидно, быть
меньше size_t.

Посмотрел код всяких других проектов серьёзных, типа Redis. Они все
size_t используют. И пока я тоже остаюсь на нём, не забывая про косяки
неприятные во время разработки.

2 years agoНовое приятное поведение прокрутки в Vim
Sergey Matveev [Mon, 4 Jul 2022 11:36:46 +0000 (14:36 +0300)]
Новое приятное поведение прокрутки в Vim

Перед Vim 9.0 я использовал какую-то его версию из репозитория, не
сильно более старую. Но только сейчас заметил изменение поведения:
если я сделаю :vsplit и в одной половинке буду вставлять/удалять всякие
строки находящиеся выше/ниже видимой области того что в другой половинке
окна, то ничего в этой второй половинке не будет двигаться. Прежде
изменение количества строк напрямую сразу же двигало текст в других
split-ах, из-за чего приходилось временами туда возвращаться и
подкручивать видимость. Сейчас же изменения в неактивном split-е будут
видны только если правки напрямую затрагивают видимую область. Если
переключиться в прежде неактивный split, то обновится только текущий
номер строки, но местоположение останется прежним. Очень удобно и очень
приятно что подобное сделали по умолчанию!

2 years agovim9script vs Neovim
Sergey Matveev [Sun, 3 Jul 2022 18:06:33 +0000 (21:06 +0300)]
vim9script vs Neovim

Спросили меня тут про vim9script:

    Мне кажется, что это сложный и отчасти тупиковый путь. В таком
    контексте Lisp (и конкретно ELisp) в Emacs выглядит как изначально
    более рациональное решение. Смотрел ли ты в сторону neovim с его упором
    на поддержку Lua?

И вот мои мысли на этот счёт:

    Меня тоже посещали аналогичные мысли, когда я впервые услышал про то,
    что в Vim пилят новый язык. Поддержка других языков, кроме vimscript,
    была давным давно: видел/использовал плагины на Perl и Python. Но их
    использование было связано в первую очередь, насколько мне запомнилось,
    банально отсутствием асинхронных задач в Vim. С их появлением в Vim8, я
    больше плагинов не на vimscript уже не встречал. Я писал когда-то их на
    Python, так как он был и основным рабочим языком у меня, но позже как-то
    само собой всё переписалось на vimscript.

    Мне кажется что неявная killer-feature программирования на vimscript это
    то, что ты постоянно находится в экосистеме редактора. У тебя идёт не
    кусок кода на Perl/Python/Lua/Tcl/whatever, а потом внезапный вызов
    vim.run("kj$R$3lrk4r") абракадабры интерактивного ввода, а ты пишешь на
    языке в котором прямо в его скрипте можно написать "normal gg:%d"
    какой-нибудь. Когда пишешь "mark '", "@/ = 'pattern'", "execute smth",
    то все его задействованные переменные, метки и регистры являются родными
    объектами редактора. Вместо программирования на чём-то в интерпретаторе,
    делая API вызовы к редактору, ты находишься в контексте редактора
    постоянно. Всё это позволяет прямо мгновенно на коленке взять и писать
    себе скрипт для какой-нибудь автоматизации. Не полноценную программу на
    настоящем большом языке, делая API вызовы к редактору, а именно писать
    внутри редактора. Не знаю как корректнее выразиться, но это всё прям на
    ощущениях.

    И поэтому у меня давным давно не возникает применять что-то кроме
    vimscript для скриптования Vim-а. Vimscript пускай и странен, и некрасив
    и уродлив местами (всякие странные переносы, "call"-ы например), но по
    возможностям он вполне себе предоставляет кучу всего (словари, списки,
    лямбды, даже методы -- не существенно отличаясь от всяких более
    привычных Python/JavaScript/Lua). Для знакомых с Py/JS -- в vimscript
    очень небольшой порог входа и куда более тесная интеграция с редактором.
    Я думаю поэтому и не приживаются его плагины на сторонних языках,
    особенно после появления асинхронных задач в Vim8. Я писал на Python,
    думал что это точно будет удобнее, ведь я и вне редактора его
    использовал, но положительных воспоминаний у меня не осталось, хотя по
    сути там точно такие же "normal ..." вызовы можно было делать например,
    но не чувствовался profit от неиспользования vimscript-а.

    Касательно Neovim: я пробовал его использовать с разницей в года. Каждый
    раз у него было другое поведение, какая-то несовместимость. Это выбивает
    из колеи и раздражает -- ведь ожидал я прозрачной незаметной смены
    редактора.

    Что он мне дал бы дополнительного, как пользователю редактора? Я знаю
    только про встроенный LSP клиент. В Vim-е это был бы вопрос одного
    плагина. More sane defaults -- слишком субъективно, да и какая разница
    будет ли на пару строк больше/меньше в .vimrc? Всё равно без
    персонифицированного .vimrc не обойтись.

    То есть, Neovim должен иметь какую-то крутую killer-feature чтобы
    переход на него (прозрачно у меня не вышло ни разу -- он не полностью
    обратно совместим) стоил того. LSP не является такой feature. Может быть
    Lua как альтернатива vimscript? Просто Lua можно было и прежде
    использовать в Vim. Причины того, что сторонние языки не приживаются я
    описал (как мне они видятся). В Neovim это мог бы быть luajit с
    увеличенной производительностью. Пока это единственная возможная
    killer-feature.

    Которая теперь полностью нивелируется vim9script. В случае с Neovim мне
    надо бы было полностью на другом языке переписать свои плагины. Это не
    малая работа. И изучать этот новый язык Lua (лично я на нём год писал,
    мне он нравится, но многие никогда с ним не пересекались). В случае с
    vim9script, "конвертация" vimscript в vim9script -- небольшая работа.
    Этот новый язык не отличается кардинально от старого. Плюс ещё более
    дружелюбен к тем, кто писал на Py/Lua/JS/whatever. Переделать vimscript
    на vim9script -- существенно менее трудозатратно, при этом, как заверяет
    Брэм (ну и другие люди в рассылке), можешь получить ускорение на
    порядки.

    В итоге: трудозатрат на порядки меньше, профит в производительности
    получишь. И опять у Neovim не выходит ни одной killer-feature стоящей
    рассмотрению перехода на него. Ну и я не забуду что Vim собирался на
    старом ноутбуке за пару минут, а Neovim -- пару часов, что не очень
    приятно (хотя я и понимаю что не каждый день этим занимаешься). Меня не
    очень привлекают решения разработчиков Neovim: если Lua это вполне себе
    хорошее решение (в вакууме для произвольного редактора), то MessagePack
    совершенно не ясен, как будто это какой-то highload проект.

    От vimscript в Neovim не избавиться: так как написаны тысячи плагинов на
    нём. Смысла переписывать хотя бы часто используемые (surround, fugitive
    какие-нибудь) -- никто не нашёл. Сейчас их переделать под vim9script и
    они ещё и быстрее станут. А как язык, vim9script ещё ближе стал к
    привычным современным Py/JS.

    Не исключено что я просто так сильно привык к vimscript что мне он
    заходит и мне с ним легко. Но вот Neovim сколько не существует, но не
    смог заинтересовать ничем, что не требовало бы приличных трудозатрат без
    ясного понимания нафига это надо. А Брэм (и команда) придумали нечто,
    благодаря чему можно без существенных затрат всё ещё сделать красивее и
    удобнее (с точки зрения программирования) и без тормозов. Почти бесплатно.

    Помнится что у Neovim изначально была killer-feature в виде асинхронных
    задач. На нём можно было писать любую асинхронщину на Lua. Но Брэм
    сделал асинхронные задачи в Vim8, которые оказались гораздо удобнее для
    использования и очень простые.

    Vim на протяжении всей своей истории демонстрировал что Брэму нужен
    пинок под зад. Регулярно nvi что-то вкусное изобретал, становился неким
    конкурентном с killer-feature, но в Vim впиливали похожу штуку которая
    была зачастую лучше/проще/яснее. Огромная ценность Neovim в том, что он
    был пинком для создания асинхронных задач в Vim8, ещё какого-то
    функционала (типа balloon-ов и popup-ов, lambda, packages, если не
    придумываю). И вот он был пинком для создания очень простой (с точки
    зрения порога входа) vim9script, который, такие как я, сразу же рвутся
    попробовать и быть им довольным.

    Колоссальная ценность Vim-а же ещё в его плагинах. Если потеряется с
    ними совместимость, то задаёшься вопросом "а нафига мне это тогда
    надо?". Редактор в котором не будет аналога surround/repeat/abolish мне
    не нужно. Писать это с нуля? Даже не могу представить какая killer
    feature в редакторе могла бы появится чтобы заставила меня пойти на это.
    А Брэм даёт возможность развивать и улучшать свой experience новыми
    фичами, не ломая уже рабочие мощнейшие отлаженные инструменты (плагины).

    Neovim говорит ещё о более чистом API, возможности использования разных
    GUI, встраивания в броузеры и IDE. Возможно разрабатывать сам Neovim
    существенно удобнее и проще. Возможно (легко поверю!) Lua внутри него
    существенно помогает. Но конечного profit-а для меня, как пользователя
    это не даёт никакого. Был бы разработчиком инструмента (редактора), то
    наверное бы это играло роль. А как конечный пользователь меня не
    интересует насколько там красивее и проще внутри Neovim-а всё, если я
    при этом не вижу чтобы на всём этом появлялись полезные мне killer
    feature. Это как бы внутренняя кухня, меня не затрагивающая.

2 years agoПобывал на свадьбе
Sergey Matveev [Sun, 3 Jul 2022 13:26:24 +0000 (16:26 +0300)]
Побывал на свадьбе

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

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

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

2 years agoАрхив почтовых рассылок через NNTP
Sergey Matveev [Sat, 2 Jul 2022 08:23:36 +0000 (11:23 +0300)]
Архив почтовых рассылок через NNTP

Пока писал про Web 2.0 (2c74dfed17ed87b9a2600d6f725a976b07fbfde5), то
как раз вчера посетил меня вопрос: а почему архив почтовых рассылок не
делать доступным через NNTP? Я никогда в жизни не пользовался этой
технологией (news-ами), поэтому этот вопрос бредовый, но, насколько
знаю, это протокол для online доступа к mail-like сообщениям.

Я несколько раз вводил URL с news/nntp схемой в lynx и он мне вполне
себе открывал и показывал какие-то сообщения. А HTML-сгенерированный
архив это просто rendered выхлоп получается. Плюс NNTP точно
поддерживается и некоторыми броузерами (Lynx например) и почтовыми
клиентами (Thunderbird точно умел). Если домашние странички,
документация к проектам это всё же вполне себе ложится нормально в WWW,
то вот почтовые архивы уже нет -- задевает моё чувство прекрасного.

Вспомнил что был же Gmake, который как-раз агрегировал рассылки и
хвалился доступом к ним через NNTP. Зашёл на их сайт и вижу что они
оставили только NNTP-интерфейс. Делаю "lynx news.gmane.io" (помню что
lynx, видя "news.", сразу попробует соответствующий протокол) и вижу
список рассылок (не знаю как это в терминах news-ов называется
корректно), заходя в которые видны сообщения. То что надо!

Надо будет попробовать всё это. И попробовать найти NNTP↔WWW gateway
какой-нибудь: так можно бы было оставить и fallback для людей не имущих
соответствующее ПО.

2 years agoНе врите мне о Web 2.0
Sergey Matveev [Sat, 2 Jul 2022 08:05:48 +0000 (11:05 +0300)]
Не врите мне о Web 2.0

https://accordion-druid.tumblr.com/post/685175656750972928/dont-lie-to-me-about-web-20
Автор пишет, что Web 2.0 (W2) называют нечто совершенно к нему не
относящееся. Собственно, social media это не W2, а то что его убило. А я
в 4fda8b5403fa562d8dc9a6944f20fc4dce1392ee писал про W2 как-раз то, что
тут и критикуется. Говорят, что W2 это: блоги с комментариями, wiki,
форумы, bookmark sharing, RSS. В общем, всё это наверное точно не
относилось и не существовало в середине 90-х по сути, так что,
действительно это точно не W1. Но Wikipedia говорит, что social media
это приложения W2 -- видимо именно поэтому я приравнивал эти два
понятия, точно так же, как приравнивают WWW к Интернету. В общем, тут я
тоже плаваю в определениях. Да и чёрт с этим WWW и его descendants :-)

2 years agoФорматирование Go кода в Vim
Sergey Matveev [Fri, 1 Jul 2022 09:44:49 +0000 (12:44 +0300)]
Форматирование Go кода в Vim

http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=68ef15d382d0b6f10c6ad30a7370db57ed8318e9
С самого начала знакомства с Go я использовал их плагин для Vim для
вызова :Fmt команды форматирования кода, которую никогда не трогал, ибо
работает -- не трожь. Для Си кода я использовал set equalprg опцию, и
команду "command! -buffer Fmt normal mtgg=G'tz.", которая ставит метку,
переходит в начало файла, вызывает equal программу, возвращается на
метку. Ведь то же самое можно было бы применить и к Go коду, ведь
goimports и go fmt умеют работать в качестве фильтра текста. Родной Vim
плагин умеет заполнять quickfix, что мне не нужно при форматировании.
Поэтому вместо тьмы строчек можно бы обойтись двумя.

Но в его родном плагине увидел красивый хак с тем, чтобы не портить
метки и чтобы не скакал экран при вызове :Fmt: они создают view
(winsaveview()) и просто его восстанавливают в конце (winrestview()).
Просто, красиво и эффективно. :Fmt команда у меня теперь одинакова и для
Си и для Go, только equalprg у них отличается.

2 years agoGive up GitHub
Sergey Matveev [Fri, 1 Jul 2022 09:29:25 +0000 (12:29 +0300)]
Give up GitHub

https://giveupgithub.org/
https://sfconservancy.org/blog/2022/jun/30/give-up-github-launch/
https://dianne.skoll.ca/pipermail/remind-fans/2022/004157.html
Вчера увидел большую бучу против GitHub-а. Проекты, типа remind, уже
начинают переезжать на что-то другое.

Я не особо понимаю смысл этой акции. Какие есть причины которые бы не
были известны прежде? Было какое-то внезапное событие с GitHub-ом?
Увидел только два наезда основных:

* их AI-trained бот который будет тырить код из проектов, возможно (а
  так и будет, конечно же) нарушая copyright-ы
* то, что сам GitHub сервер полностью закрыт

Как уезд с него помешает Microsoft собирать код с любого другого
Git-репозитория? Никак. Сейчас она удобно все данные для своего AI
собирает из одного места. Что мешает ей сканировать пакеты/порты чтобы
узнавать адреса репозиториев других проектов? Одну только разницу вижу:
сейчас Microsoft может "смотреть" и в приватные проекты.

Ну а то, что GitHub использует закрытое ПО: как мешает его использовать
то? Если человеку нужен просто бесплатный Git-хостинг, то открытие кода
сервера не поможет ему никоим образом, если он всё равно будет требовать
JavaScript загрузки. Если человеку надо запустить свой собственный
GitHub, то этих решений полно и так.

Если человек зависит от функционала wiki, ticket tracker-а и подобного,
то, мне казалось, история с SourceForge показала что в любой момент всё
может закончится. Я помню времена когда SF.net был де-факто хостингом
для софта (все мои проекты там были), а потом за считанные месяцы/годы
все оттуда свалили, когда те начали всякую дичь творить. И так понятно
на что ты шёл и что всё это возможно временно только удовлетворяет.

А разработчики кто не против использовать Copilot для "кражи" кода: так
и останутся на GitHub, которому ничто не мешает тащить код из публичных
репозиториев.

Я то против GitHub потому что он не работает без JavaScript и потому что
он банально ещё и блокирует всяких россиян и представителей других
неугодных США стран.

2 years agoDeath metal хор
Sergey Matveev [Fri, 1 Jul 2022 08:35:18 +0000 (11:35 +0300)]
Death metal хор

http://www.hitkiller.com/edinstvennyj-dez-metal-xor-v-mire-porval-konkurs-americas-got-talent.html
Пару человек одновременно я ещё слышал, но чтобы целый хор -- ещё нет.
Один раз услышать прикольно.

2 years agoНачал познавать vim9script
Sergey Matveev [Thu, 30 Jun 2022 16:02:49 +0000 (19:02 +0300)]
Начал познавать vim9script

https://www.vim.org/vim90.php
http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=9cbfa59ca421fac5422cbf0c2c52f48f8f2adb4c
Вышел Vim 9.0, в котором основное изменение это появление vim9script
языка. Перевёл почти все свои скрипты для Vim-а на него.

Думал что будет сложнее или бесполезнее. Но нет -- vim9script куда
приятнее и удобнее в использовании, уже действительно походя на любой
современный язык в плане синтаксиса и странностей. Не нужны больше call,
комментарии не в виде ", по умолчанию не глобальная видимость переменных
и функций, типизированные переменные, нет возможной путаницы с "->" и
"." при конкатенации строк, не нужны let-ы. Кроме проверки на типы,
вполне себе работающей, он ещё и к стилю даже будет придираться. Сильно
меньше нужны переносы длинных строк -- можно списки или словари писать
удобно, да ещё и опускать кавычки у ключей. Есть Python-like возможность
опциональных kwarg-ов. Индекс в строке указывает не на байт, а на
символ. Появилась возможность делать import сторонних скриптов и
используя его прямо как в Go.

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

2 years agoGit fsmonitor
Sergey Matveev [Tue, 28 Jun 2022 11:31:50 +0000 (14:31 +0300)]
Git fsmonitor

https://github.blog/2022-06-27-highlights-from-git-2-37/
Дожили... фича в git-е, не самая бесполезная, поддерживается только в
Windows и macOS. Чего-чего, а я то уж мог бы ожидать поддержки только
GNU/Linux-а например.

2 years agoСайт посвящённый Elligator-у
Sergey Matveev [Tue, 28 Jun 2022 10:31:47 +0000 (13:31 +0300)]
Сайт посвящённый Elligator-у

https://elligator.org/
Важный алгоритм превращения точки публичного ключа в псевдослучайную
последовательность (с какой-то вероятностью). Он например использовался
в GoVPN для создания zero-knowledge аутентификации.

2 years agoКак мне доверять этому репозиторию?
Sergey Matveev [Tue, 28 Jun 2022 08:13:08 +0000 (11:13 +0300)]
Как мне доверять этому репозиторию?

https://anarc.at/blog/2020-03-17-git-gpg-verification/
https://lwn.net/SubscriberLink/898522/9cf50ee3f96f90c1/
https://stackoverflow.com/questions/23584990/what-data-is-being-signed-when-you-git-commit-gpg-sign-key-id
https://github.com/cgwalters/git-evtag
В Git до сих пор используется SHA1, что в общем то не очень хорошо чтобы
можно было спокойно доверять этому хэшу.

Поддержка SHA256 в Git пока плачевна, никакого interoperability между
репозиториями не будет. Хотя можно уже создавать репозиторий с SHA256.

Подписывать каждый коммит: по моему безумная трата ресурсов. Да и,
собственно, подписывает он всё равно те же самые SHA1 хэши.

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

Задался вопросом: а что есть штатного и стандартного чтобы можно было в
иерархии пройти по всем файлам и посчитать/проверить их хэши? Вообще
конечно и банальным shell-скриптом не сложно, но не очень эффективно.
Вспомнил про mtree и выглядит как то что надо:

    $ fields="type size sha512"
    $ mtree -p /my/dir -c -k "$fields" |
        mtree -F mtree -C -S -k "$fields" > checksum

Ну и выводит нечто что легко отпарсить и автоматизированно проверить:

    $ head checksum
    ./GPL type=file size=17987 sha512=5b3...49c
    ./INSTALL type=file size=1443 sha512=965...fbe
    ./.git/HEAD type=file size=23 sha512=76b...6cf
    $ mtree -p /my/dir < checksum

Если всё сошлось, то будет хороший return code без вывода. В противном
случае покажет что изменилось и вернёт ошибку.

Порты mtree для GNU/Linux существуют, должны прожевать такое.

Утилиты типа sha512sum судя по man могут проверить иерархию, но sha512 в
BSD не может, поэтому тоже это решение не совместимо между платформами.

2 years agoСовет по использованию криптографических хэшей в man FreeBSD
Sergey Matveev [Tue, 28 Jun 2022 07:56:29 +0000 (10:56 +0300)]
Совет по использованию криптографических хэшей в man FreeBSD

https://www.unix.com/man-page/freebsd/1/md5/
https://www.freebsd.org/cgi/man.cgi?query=md5&apropos=0&sektion=0&format=ascii
В старой версии man-а по командам расчёта хэшей даётся рекомендация по SHA256:

    It is recommended that all new applications use SHA-256 instead of
    one of the other hash functions.

Но в новой уже:

    It is recommended that all new applications use SHA-512 or SKEIN-512
    instead of one of the other hash functions.

2 years agoПродолжение подборки книжек Созвездия льва
Sergey Matveev [Mon, 27 Jun 2022 19:19:17 +0000 (22:19 +0300)]
Продолжение подборки книжек Созвездия льва

https://fantlab.ru/work57659
https://fantlab.ru/work63361
https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%B6%D0%B8%D0%B2%D1%88%D0%B8%D0%B9_%D1%87%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE
https://fantlab.ru/work2106
https://fantlab.ru/work54856
https://fantlab.ru/work209483
https://fantlab.ru/work78809
А серия жутиков (e4fc3fd701d22e9e0731b19e62b898a4aa961d39) не кончается:

* "Армагеддон" Фредерика Брауна -- уже читал этот рассказ когда-то. Про
  то, как маленький мальчик устроил Армагеддон, заправив свой водяной
  пистолет святой водой в церкви, ну и выстрелив куда не стоило
* "Купол" Фредерика Брауна -- тоже уже читал. Про то, как мужик
  испугался того, что вот-вот начнётся ядерная война и спрятался на 30
  лет за купол, ничего не пропускающий извне и во вне. Просил одну
  девушку выйти за него замуж, но она посчитала что лучше быть со всеми.
  Отключил купол через 30 лет, а оказывается никакой войны то и не было,
  а он был просто чудиком, профукавшим в одиночестве всё это время
* "Переживший человечество" Говарда Лавкрафта и Роберта Барлоу -- больше
  всего запомнились мрачные описания Лавкрафта. Солнце увеличилось, всё
  высохло, полный упадок и кабздец, все люди вымирают, почти никого не
  осталось, переехали на полюса, а последний человек просто срывается и
  падает в колодец с мизерным количеством воды в ведре
* "Ведро воздуха" Фрица Лейбера -- про то, как чёрная звезда пронеслась
  мимо солнечной системы, прихватив за собой Землю, которая перестала
  получать свет и даже атмосфера просто замёрзла, превратившись в
  слоёный лёд. Семья сделала себе из одеял и фольги некое подобие дома,
  где поддерживает огонь, выходя в скафандрах наружу чтобы в ведро
  загрузить кристаллизированного кислорода, который огнём растапливается
  и поддерживает горение и дыхание
* "Девушки и Наджент Миллер" Роберта Шекли -- про то, как (наверное
  снова Китай) возникла ядерная война, почти никого в живых не осталось,
  лишь считанные единицы разбросанные по миру. Миллер шёл шёл и
  наткнулся на группу из пяти 20-25 летних симпатичных девиц, с не очень
  симпатичной учительницей, объясняющей что объединять усилия они не
  будут, и вообще мужчины устроили всё это безобразие и войны. Прогнали
  его камнями. От обиды, несуразной нелогичности и желания (таких девиц
  то!) он взял нож с палкой и:
      ... на Земле исчез последний цивилизованный человек. Вместе с ним
      погибли: последний пацифист, последний отказник по этическим
      убеждениям, последний ценитель произведений искусства, последний
      библиофил. На месте этих достойных восхищения фигур, стоял Миллер
      в ножом в руке, диким взглядом...
* "Закованный разум" Майкла Коуни -- про то, как в Китае поднялась
  какая-то буча, он напал на Индию, её стала защищать Европа, и началась
  третья мировая, продлившаяся всего пять минут. Создали fallout shelter
  и жили под землёй из-за радиации. А спустя сотню лет выяснилось что
  никто никаких замеров её уровня не делал, мол и так правителям было
  хорошо. Воздух считали чрезвычайно ядовитым и боялись любого его
  проникновения в эти убежища
* "Часовые Феникса" Эрика Брауна -- про то, как очередная ядерная война
  (не помню, но наверное опять из-за Китая) и глобальное потепление
  высушили моря и океаны и главные герои колесили на грузовике с буровой
  установкой для добычи хоть какого-то количества еды. Выяснилось что
  есть место, где готовили космический корабль с переселенцами к полёту,
  но не успели запустить -- началась война. А в корабле то том должны
  быть тысячи замороженных людей, которыми можно было бы полакомиться,
  ням-ням...
* "Звуки речи" Октавии Батлер -- про то, как какая-то неведомая болезнь
  убила кучу народу, а у выживших теряется речь, а то и возможность
  понимать чужую речь, максимум только выдавая нечленораздельные звуки.
  Кто-то разучивается читать и забывает что прежде в книгах читал.
  Полная анархия, почти все при оружии. Но некоторые ещё могут говорить,
  или хотя бы читать -- вот только из-за зависти и ненависти их грохнут,
  поэтому это тщательно скрывают

2 years agoCoredump в современном GNU/Linux
Sergey Matveev [Mon, 27 Jun 2022 18:43:17 +0000 (21:43 +0300)]
Coredump в современном GNU/Linux

У меня падает программа под Ubuntu (работает она только под GNU/Linux).
Segfault. Нужно засунуть в отладчик. А где .core? В отличии от *BSD
систем, тут эти файлы не создаются. ulimit -c unlimited не помог --
файлы всё равно не появляются. Во время быстрого поиска в Интернете
видело упоминание coredumpctl, которого не нашёл в своей установке.
Спросил коллег на работе: оказывается эту штуку надо ставить отдельно,
штатно в системе не идёт. Дожили... ставить что-то дополнительно в
систему чтобы получить coredump-ы. А ведь прежде они просто так,
бесплатно, без регистрации и SMS предоставлялись.

2 years agoУжасы японской письменности
Sergey Matveev [Mon, 27 Jun 2022 08:02:50 +0000 (11:02 +0300)]
Ужасы японской письменности

https://habr.com/ru/post/673446/
Я почему-то думал что особенно в XX веке они в основном используют
только слоговую азбуку (пускай и две), а на иероглифы забивают.
Оказалось что там всё очень не очень.

2 years agoПопробовал безопасный консервный нож
Sergey Matveev [Sat, 25 Jun 2022 19:59:02 +0000 (22:59 +0300)]
Попробовал безопасный консервный нож

https://www.amazon.com/Good-Cook-Opener-Manual-Sharp/dp/B000AX13US
Увидел про него в 8211a3e9e1430dbb54449febc8cacd629303ec56 и мама на
Wildberries заказала такую штуку, ибо в магазинах не нашёл. Уж больно
захотелось проверить действительно ли он такой весь из себя волшебный?
Сегодня попробовал в действии. *Вообще* усилий не прилагал -- можно
одним пальцем, грубо говоря, крутить. Вообще ничего не нажимал, не
резал, не прорезал и не втыкал. Честно говоря, когда я прокрутил банку
по кругу, то подумал что на самом деле ничего не было сделано, кроме
вмятин от колёсиков по краям. Легонько попробовал приподнять крышку --
не поддаётся. Оказалось что всё открылось. Просто крышка так плотно
сидит, что усилий больше понадобилось для её поднятия с банки.
И ни капли на самом "ноже", никакой грязи. Плюс бока банки остаются
ровные и вытрясти содержимое можно без их задевания.

Я считаю что подобный инструмент надо сделать символом всего прекрасного
и гениально простого. Если ёршик или вантуз это символ копрограйндкора,
коза это символ металлистов, то safe can opener должен быть символом
того, что человечество никогда не выбирает лучшие варианты. Символом
идиотизма, хочется сказать. У меня в голове возникает ассоциация с Make
и redo: ибо я не понимаю как можно продолжать использовать первый, когда
познал redo. Вот и здесь: думаю будет больно брать снова обычные
консервные ножи, когда я притронулся к этому чуду инженерной мысли. Хотя
ещё недостаточно опыта использования накопилось.

Не то чтобы я часто пользуюсь консервами, но, будучи холостяком, который
совершенно не любит готовить, не редко. Посмотрим долго ли проживёт этот
нож. На упаковке не нашлось ни одного намёка на модель или даже название
производителя, кроме "made in China". 100% pure noname. Выглядит почти
аналогично тому что в ссылке на Amazon. Стоил ~600₽. В два раза дороже
"советской" открывалки. Понимаю что спектр применения у него куда более
ограничен, но он как unix-tool: делает одно дело, но очень хорошо.

2 years agoНачал использовать pv
Sergey Matveev [Sat, 25 Jun 2022 19:11:13 +0000 (22:11 +0300)]
Начал использовать pv

https://linux.die.net/man/1/pv
http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=370a8149d970135915f34b03c1732eef6aaf95e5
Про утилиту отображающую прогресс просасываемых через неё объёмов данных
я слышал, но на практике не использовал. А сегодня что то вспомнил,
попробовал и вот надо перенести на сервер 77GB директорию и уже рефлекторно
добавляю под конец дня "| PV -s 77G |" для красивого прогресса.

2 years agoФорсированное размонтирование NFS
Sergey Matveev [Sat, 25 Jun 2022 15:45:20 +0000 (18:45 +0300)]
Форсированное размонтирование NFS

Если NFS сервер недоступен/завис, то я годами не знал как форсированно
под FreeBSD можно бы было отмонтировать неработающий NFS. Стыдно
признаться, но не раз перезагружал компьютер из-за этого, ибо в man-ах
ничего не находил. Ибо смотрел man-ы касающиеся самого NFS.

Оказывается, umount содержит опцию "-N" которая форсированно позволяет
отключить NFS как-раз. Даже мысли не было что "man umount" будет
содержать что то специфичное для ФС, а не общее для всех. Хотя с NFS оно
чем-то и логично, ибо он же тесно интегрирован в ядро.

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

2 years agovirtual_oss автоматический запуск в devd
Sergey Matveev [Sat, 25 Jun 2022 11:48:24 +0000 (14:48 +0300)]
virtual_oss автоматический запуск в devd

В c96b75bef630f7166ba49e0265d4f87843e81490 и
acbd6a153fbb4fb375be43d87a2ad055b80681e3 добавил hook-и на включение и
отключение USB звуковых карт, которые прибивают процессы занимающие
устройства при отключении и включающие bitperfect режим. Но с началом
использования virtual_oss, теперь надо ещё и этот демон поднимать когда
карта подключена. Плюс указывать разные настройки для разных звуковух
(разные битности, разное качество resampling-а). Просто добавил это в те
же самые скрипты запускаемые devd подсистемой. Демон уже автоматом будет
прибиваться при отключении.

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

2 years agoИменование MIT лицензии
Sergey Matveev [Fri, 24 Jun 2022 13:08:57 +0000 (16:08 +0300)]
Именование MIT лицензии

https://www.gnu.org/licenses/license-list.html#Expat
https://directory.fsf.org/wiki/License:Expat
https://en.wikipedia.org/wiki/MIT_License#Ambiguity_and_variants
В GNU и FSF считают что нет такой лицензии как MIT, ибо в MIT много
каких лицензий было создано, как минимум, из популярных permissive,
это Expat и X11. Звучит абсолютно логично и убедительно. Буду
стараться употреблять это корректнее.

2 years agoШнайер о криптовалютах
Sergey Matveev [Fri, 24 Jun 2022 12:12:47 +0000 (15:12 +0300)]
Шнайер о криптовалютах

https://www.schneier.com/blog/archives/2022/06/on-the-dangers-of-cryptocurrencies-and-the-uselessness-of-blockchain.html
* Proof-of-work схемы ужасны для окружающей среды
* Blockchain системы или не имеют вообще или мало приватности
* Шнайер скептичен на тему proof-of-stake, когда правила задают те, кто
  богаче. Да и это отменяет саму суть децентрализации
* Главная проблема blockchain-ов в том, что они не выполняют
  поставленных, ими же самими, задач. Они не являются улучшением чего бы
  то ни было и зачастую делают всё только хуже
* Зачастую они и не безопасны, не заменяют доверие на "код". Они не
  децентрализованы -- имеют доверенных посредников, зачастую обладающих
  большей властью чем в других не-децентрализованных системах
* Шнайер ни разу не слышал чтобы кто-то сказал "у меня есть проблема.
  смотрите, blockchain это хорошее решение". Он видел только "у меня
  есть blockchain. смотрите, вот проблема к которой я могу его
  применить", но нигде оно действительно не помогает
* В blockchain технологиях есть много интересного, много клёвого
  изобретено, но он не видел ни одного примера когда именно без
  blockchain его нельзя бы было сделать более безопасным, более надёжным
  и просто лучшим
* Blockchain не помогает решать ни одной задачи с финансовыми системами,
  где проблемы исключительно экономические и политические, не имеющие
  ничего общего с технологиями. Технологии не могут решить экономические
  и политические проблемы

Для себя не узнал ничего нового, а только получил подтверждения
корректности кучи своих суждений на тему blockchain-ов. Приятно.

2 years agoРаздувание кода стало астрономическим
Sergey Matveev [Fri, 24 Jun 2022 12:08:02 +0000 (15:08 +0300)]
Раздувание кода стало астрономическим

https://habr.com/ru/post/673236/
Полностью согласен с тем, что раздувание не больших масштабов, не
огромных, а именно астрономических.

2 years agoАпокалипсисы в "Созвездии льва"
Sergey Matveev [Fri, 24 Jun 2022 09:35:17 +0000 (12:35 +0300)]
Апокалипсисы в "Созвездии льва"

https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D0%B0%D0%B2%D0%BB%D0%B8%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F
https://www.livelib.ru/book/1001538360-eriks-robert-shekli
https://modernlib.net/books/pol_frederik/fermi_i_stuzha/read/
http://www.lib.ru/RYBAKOW/winter.txt
https://fantlab.ru/work22447

Во второй части сборника "льва" (5aa0db5e31fd076698f65055f8a97bd89d3ec56b)
идёт один конец света за другим:

* "Машина останавливается" Эдварда Моргана Форстера -- про то, как
  человечество полностью отдалось под заботу машиной. Люди не выходят из
  своих комнат, ибо не видят в этом надобности, ведь пообщаться можно и
  по видеофонам. Сама мысль о том, чтобы к кому-то прикоснуться
  шокирует. Но машина под конец ломается и почти никто не может уже
  выжить без её заботы
* "Конец всей этой мерзости" -- d2a99f7b4c27dfa5529e724dd700bce914c120d2
  Про то, как распылили пацифистскую гадость, от которой закончились
  войны, но за счёт того, что люди стали дебилами отсталыми
* "Эрикс" Роберта Шекли -- про то, что нашли инопланетный артефакт,
  который даже исцелял людей, а потом выяснилось что он яростно
  ненавидел эту форму жизни, в последствии уничтожая её. А на артефакте
  были написаны предупреждения о том, что вам хана, если вы это нашли
* "Последний день" Ричарда Матесона -- 30ff8e56e0fef573c92cb017a34d722d366cfe65
  Про то, что астероид вот-вот влетит в Землю, поэтому люди устроили
  яростную содомию, ибо о последствиях уже думать не приходится
* "Ферми и стужа" Фредерика Пола -- про то, что на Земле случилась
  ядерная зима, перед которой главный герой выжил в Исландии, до которой
  многое не долетело, хотя что-то и попало. Плохо всем жилось, в конце
  все погибли, хотя уже началось потепление
* "Зима" Вячеслава Рыбакова -- про то, как из-за зимы главный герой
  решил сжечь свою семью вместе с домом
* "Дорога на закат" Роберта Сильверберга -- про то, как после ядерной
  войны в США наступает голод. Но вполне себе можно полакомиться и
  другими людьми. Его жена даёт другому за кусочек человечинки. Людей
  потрошат на мясо прямо на улицах. Под конец главный герой сам начинает
  отбивать труп у целой истощённой семьи
* "Спячка" Аластера Рейнольдса -- про то, как изобрели настолько
  неглупый ИИ, что он не признался что обладает разумом. А обнаружилось
  что он стал воевать с другими искинами в параллельных мирах, на что
  требуется много вычислительных ресурсов, которые отжираются каждым
  существующим потворствующим человеком. На кону или жизнь искинов с
  людьми (так как человеки могут снова их создать), или всех людей
  погрузить в сон на плавучих морских платформах, оставляя считанные
  тысячи бодрствующих, достаточных для починки обслуживающих роботов

Это только половина сборника, где дальше есть книги с названиями типа
"Армагеддон", "Улыбка" (наверное что-то очень стрёмное будет) и авторами
типа Лавкрафта (2852649c4e182ae873a38104210f79de25f495b9).

Хотя до сих пор для меня самой страшной картинкой конца света остаётся
"Первый день весны" (7484970c26afbfee143e95d090d3ae1963efd73e,
da7fc085eee25f089ddd0bd6af5bca38afdd63cd).

2 years agogit.jordan.im/crawl/cmd/crawl
Sergey Matveev [Fri, 24 Jun 2022 09:25:53 +0000 (12:25 +0300)]
git.jordan.im/crawl/cmd/crawl

https://git.jordan.im/crawl/tree/README.md
Приятная простая утилита для скачивая всего сайта. Проще не встречал:
crawl URL -- а дальше просто подождать когда появится готовый .warc.gz.
Его конечно же надо будет переделать в .warc.zst
(cace83e27a1acafe57f32cc5eee4bb1078f20e74). tofuproxy без проблем всё
это открывает.

2 years agoЕщё одна причина почему сайт не за HTTPS
Sergey Matveev [Fri, 24 Jun 2022 08:32:55 +0000 (11:32 +0300)]
Ещё одна причина почему сайт не за HTTPS

http://xahlee.info/comp/blog.html

    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.

    Enabling cancel culture starts with the “undesirables” of the day
    and ends with authoritarian regime that oppresses everyone that
    isn’t in line with the elite.

2 years agoXah Lee против неподписанных клавиш на клавиатуре
Sergey Matveev [Fri, 24 Jun 2022 08:23:14 +0000 (11:23 +0300)]
Xah Lee против неподписанных клавиш на клавиатуре

http://xahlee.info/kbd/blank_keycaps_vs_labeled_keys.html
Потому что это просто выпендрёж. Так и есть, подтверждаю.
Более объективные причины:

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

2 years agoDoom 2016 speedrun с разъяснениями, а также Half-Life
Sergey Matveev [Thu, 23 Jun 2022 20:24:44 +0000 (23:24 +0300)]
Doom 2016 speedrun с разъяснениями, а также Half-Life

https://www.youtube.com/watch?v=ALUkiInHuZU
https://habr.com/ru/news/t/673016/
https://www.youtube.com/watch?v=QqwyhZLj69w
Интересно конечно посмотреть и послушать, но мне не нравятся такие
speedrun-ы, которые по сути полностью завязаны на багах. Вот rocket jump
или там хождение по стенам, как в Doom, распрыжка -- это я считаю честное
применение особенностей физики. Но выход на границы стен и уровней уже нет.
Типа весь challenge то и дело сводится просто к тому, чтобы умудриться
создать какую-то коллизию, чтобы потом в noclip режиме дойти до конца.
А в этом speedrun одну штуку вообще можно делать только при FPS≥200.
Или если выстрелить из BFG и зайти в меню, то луч от его выстрела будет
продолжать наносить урон врагам -- это уж совсем нечестная победа. Но я
в курсе что бывают разные категории speedrun-ов.

А фишка с приобретением ускорения от выстрела из оружия вовсю вот
используется в Half-Life speedrun-е.

2 years agoДиграф рубля
Sergey Matveev [Thu, 23 Jun 2022 18:33:16 +0000 (21:33 +0300)]
Диграф рубля

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

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

Для евро валюты использую €, ибо доллар же имеется. До некоторого
времени всегда писал "руб" для рубля, но ведь для него же есть
официальный значок, присутствующий в Unicode. Добавил диграф в Vim:

    execute "digraphs Ru" .. 0x20BD

execute применяю только по совету из man-а чтобы можно было набрать
значение руны в шестнадцатеричном формате.

2 years agoНашёл наушники-вкладыши
Sergey Matveev [Thu, 23 Jun 2022 18:29:48 +0000 (21:29 +0300)]
Нашёл наушники-вкладыши

Прошёл по большому торговому центру, где чего только нет! Кроме
наушников вкладышей (8d8949aab7c195b4abb8795116f901e7d085db63).
Путь домой пролегал через магазин НИКС. Решил посмотреть в нём.
Заходишь, поворачиваешь к их киоску, подходишь, и на тебя сразу
же смотрят нужные тебе наушники.

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

2 years agoЗвук одновременно выключающихся 60 жёстких дисков
Sergey Matveev [Thu, 23 Jun 2022 18:28:12 +0000 (21:28 +0300)]
Звук одновременно выключающихся 60 жёстких дисков

https://v.redd.it/b8riccbyy9791
Устрашающе!

2 years agoOpenSSL в macOS
Sergey Matveev [Thu, 23 Jun 2022 09:00:45 +0000 (12:00 +0300)]
OpenSSL в macOS

https://hynek.me/articles/apple-openssl-verification-surprises/
Пишем тривиальную программу использующую OpenSSL API, с штатно
выставленным callback-ом проверки X.509 сертификатов, всегда
возвращающим неуспех. Никакого успешного соединения быть не
должно, так как ничего не валидно. Но для Apple это не проблема,
так как срать оно хотела на твои решения о валидности. Нет
официальной возможности сделать certificate pinning самому.

2 years agoИстория однострочных исправлений
Sergey Matveev [Thu, 23 Jun 2022 07:37:45 +0000 (10:37 +0300)]
История однострочных исправлений

https://flak.tedunangst.com/post/a-brief-history-of-one-line-fixes
https://www.imperialviolet.org/2014/02/22/applebug.html
Моё сердебиение участилось, глядя на всё это. И это одна из причин
почему я программистам не бегу доверять в критичных вещах, особенно
когда это что-то закрытое и ты беспомощная тварь. Программисты, к
сожалению, являются людьми.

Я точно так же когда-то сделал фатальнейшую ошибку в GoVPN и именно
поэтому на сайте нельзя скачать версию 2.1. Вместо nonce+=2 я сделал
nonce++. А если бы слепо следовал совету использовать два отдельных
ключа для двух направлений, то ничего фатального бы не произошло.
Захотел соптимизировать.

И ещё тут есть пример почему я люто ненавижу когда люди используют фишку
по автоматическому приведению int-ов к bool-ам (хотя конечно наоборот) и
пишут "if (!whatever())", где whatever() не возвращает bool. В Go
молодцы: логические условия возможны только и только с bool-ами.

И ещё есть старая бага от Apple в самом низу списка, где демонстрируется
очередная ненавистная мне штука в Си: возможность писать if (...) action;
И, опять же, в Go можно написать только if (...) { action }.

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

--- hw/xfree86/common/xf86Init.c
+++ hw/xfree86/common/xf86Init.c
@@ -1677,7 +1677,7 @@
   }
   if (!strcmp(argv[i], "-configure"))
   {
-    if (getuid() != 0 && geteuid == 0) {
+    if (getuid() != 0 && geteuid() == 0) {
        ErrorF("The '-configure' option can only be used by root.\n");
        exit(1);
     }

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

--- openssl-a/md_rand.c
+++ openssl-b/md_rand.c
@@ -271,10 +271,7 @@
                else
                        MD_Update(&m,&(state[st_idx]),j);

-/*
- * Don't add uninitialised data.
                MD_Update(&m,buf,j);
-*/
                MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c));
                MD_Final(&m,local_md);
                md_c[1]++;

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

--- lib/libssl/src/ssl/s3_srvr.c
+++ lib/libssl/src/ssl/s3_srvr.c
@@ -2009,7 +2009,7 @@ static int ssl3_get_client_certificate(S
        else
                {
                i=ssl_verify_cert_chain(s,sk);
-               if (!i)
+               if (i <= 0)
                        {
                        al=ssl_verify_alarm_type(s->verify_result);
                        SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_NO_CERTIFICATE_RETURNED);

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

--- libc-a/memset.c
+++ libc-b/memset.c
@@ -1,6 +1,6 @@
 void *memset(void *_p, unsigned v, unsigned count)
 {
     unsigned char *p = _p;
-    while(count-- > 0) *p++ = 0;
+    while(count-- > 0) *p++ = v;
     return _p;
 }

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

--- tarsnap-autoconf-1.0.27/lib/crypto/crypto_file.c
+++ tarsnap-autoconf-1.0.28/lib/crypto/crypto_file.c
@@ -108,7 +108,7 @@

        /* Encrypt the data. */
        if ((stream =
-           crypto_aesctr_init(&encr_aes->key, encr_aes->nonce)) == NULL)
+           crypto_aesctr_init(&encr_aes->key, encr_aes->nonce++)) == NULL)
                goto err0;
        crypto_aesctr_stream(stream, buf, filebuf + CRYPTO_FILE_HLEN, len);
        crypto_aesctr_free(stream);

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

--- sql/password.c      2011-07-03 15:47:37 +0000
+++ sql/password.c      2012-04-06 09:04:07 +0000
@@ -531,7 +531,7 @@
   mysql_sha1_reset(&sha1_context);
   mysql_sha1_input(&sha1_context, buf, SHA1_HASH_SIZE);
   mysql_sha1_result(&sha1_context, hash_stage2_reassured);
-  return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE);
+  return test(memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE));
 }

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

--- gnu/usr.sbin/sendmail/sendmail/conf.c       12 Jun 2013 21:27:22 -0000      1.35
+++ gnu/usr.sbin/sendmail/sendmail/conf.c       5 Jun 2014 10:16:18 -0000
@@ -5267,8 +5267,8 @@ closefd_walk(lowest, fd)
 */

 void
-sm_close_on_exec(highest, lowest)
-       int highest, lowest;
+sm_close_on_exec(lowest, highest)
+       int lowest, highest;
 {
 #if HASFDWALK
        (void) fdwalk(closefd_walk, &lowest);

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

static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,
                                 uint8_t *signature, UInt16 signatureLen)
{
    OSStatus        err;
    ...

    if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
        goto fail;
    if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
        goto fail;
        goto fail;
    if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
        goto fail;
    ...

fail:
    SSLFreeBuffer(&signedHashes);
    SSLFreeBuffer(&hashCtx);
    return err;
}

2 years agoАлгоритмы scaling-а в mpv
Sergey Matveev [Wed, 22 Jun 2022 19:43:59 +0000 (22:43 +0300)]
Алгоритмы scaling-а в mpv

Когда игрался с 4K монитором (d154bb0f1f7d36997a293728311427d549ed7e66),
то заметил ощутимое дёрганье картинки. При этом CPU, при аппаратном
декодировании, почти не нагружен, но картинка дёргается как-будто не
хватает ресурсов.

Методом тыка, понял что дело в scaler-е. Если его не указывать, то всё
плавно как никогда. Использовал scale=ewa_lanczossharp. И для него
написано что он дорогой. Для downscaling-а, который мне как-раз нужен
для 4K->2K преобразования, советуют scale=mitchell. Решил пока указывать
профиль для mpv, переключающий scaler, в зависимости от того, что я
собираюсь смотреть.

А ещё mpv документация советует не использовать аппаратное декодирование
видео по возможности, ибо они могут лажать и например терять точность.
С декодированием HDR 4K видео и mitchell scaler-ом мой NUC без проблем
справляется, так что буду следовать совету mpv.

2 years agoИспользую virtual_oss
Sergey Matveev [Wed, 22 Jun 2022 19:26:11 +0000 (22:26 +0300)]
Использую virtual_oss

После обновления FFmpeg-а, mpv перестал собираться. Видимо API первого
сильно поменялся без обратной совместимости. А я использую очень старый
mpv, так как возвращение OSS4 поддержки в нём у меня выдавало сплошные
шумы (adbf57283a55d771f4647a1f00e9b6ef336c9bf2).

Снова взял последнюю версию mpv из git-а. Обломался из-за того, что оно
теперь требует Xpresent, которого у меня нет в Xorg-е. Но, благо, это
всего лишь несколько последних коммитов. Откатился чуть назад и... звук
в USB наушниках на работе появился!

Вернулся домой и снова шумы. А разница в том, что моя домашняя звуковуха
переводится в bitperfect режим (acbd6a153fbb4fb375be43d87a2ad055b80681e3).
Я вру: там всё же не шумы, а жуткие искажения, что очевидно говорит о
разных форматах кодирования звука. Но это я обнаружил не сразу, так как
когда поставил WavPack файл, то всё ok, а когда поставил видео файл, то
всё стало плохо. Поставил MP3 -- тоже плохо. В выводе mpv заметил что в
первом случае он выводит в 16-бит формате, а в двух других в 32-бит,
который выдаёт декодер MP3.

Добавление --af=format=s16, форсируя выдачу в 16-бит формате, помогло.
Но у меня всё равно применяется не совсем 100% bitperfect, а с
включёнными vchan-ами OSS-а, которые в идеале бы надо отключать чтобы
полностью убрать возможность resampling-а и прочего.

Добиться вывода звука без vchan-ов у меня с mpv не вышло. Уверен, что
причина в том, что звуковуха, судя по dmesg-у, умеет только 24-bit S-LE,
а mpv 24-бит не поддерживает формат. Помню что уже встречался с этим
прежде.

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

В общем с его помощью я сделал отдельное виртуальное OSS DSP устройство,
в которое выводит звук mpv и другие программы, а оно уже выводит это в
звуковую карту, опционально делая resampling:

    virtual_oss -S -Q 0 -C 2 -c 2 -r 48000 -b 24 -s 8ms \
        -R /dev/null -P /dev/dsp4.0 -d dsp10

2 years agoWeb 3.0 управляемый пользователями
Sergey Matveev [Wed, 22 Jun 2022 13:38:30 +0000 (16:38 +0300)]
Web 3.0 управляемый пользователями

https://habr.com/ru/post/672692/
Детская фигня какая-то, а не статья. Откуда автор взял вообще идею что
Web 2.0 это типа для общения пользователей? Наслушался корпораций? Web
2.0 это про то, чтобы вместо распределённой системы связанных документов,
была распределённая система программ запускаемых на компьютерах
пользователей. Корпорации делают Web 2.0 и все эти технологии для взятия
контроля над людьми и их компьютерами, уничтожая доступность информации.
Web 2.0 это мир изолированных экосистем, островов, non-interoperable
между собой.

Причём тут какой-бы-то-ни-было Web и Ассанж??? Технологии Web 2.0
как-раз таки направлены только на то, чтобы усложнять свободу слова,
приватность и безопасность. Wikileaks сделан по Web (1.0) технологиям.

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

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

https://u.is/ru/faq.html#faq4
Ну а после всей этой фигни идёт куда ещё большая реклама... несвободной
закрытой системы. Которая прямо официально в FAQ-е даже и не планирует
быть открытой. Открытие кода может повлиять на стабильность их сети, как
они же сами говорят. Даже не знаю как это прокомментировать. А дальше
фраза о том, что они стремятся к сплочённому обществу людей, а не
дроблению аудитории... по моему именно этим всем и занимаются Facebook-и
и прочие. Добавляют что большое количество ПО имеет закрытый код и это
ему никак не вредит -- не поспоришь, ибо им многие именно по этой же
причине и не пользуются вовсе (нафиг он такой кому сдался).

Вообще всё это выглядит или как полнейшая наивнейшая тупость или как
тонкий троллинг.

    Все сетевые коммуникации шифруются с помощью супербезопасной
    высокоскоростной криптографии на элиптических кривых Curve25519

Вот только Curve25519 не умеет шифровать.

Пароль должен быть:

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

Не, ну это точно троллинг. Плюс нет *вообще* никаких деталей технологий
всей системы.

2 years agoЗаценил Origins альбом Saor-а
Sergey Matveev [Wed, 22 Jun 2022 13:11:02 +0000 (16:11 +0300)]
Заценил Origins альбом Saor-а

https://darkside.ru/news/144491/
Где-то я видел комментарий что Saor необычен тем, что абсолютно все его
альбомы отличны. Это редко бывает. Чаще всего они не привносят у многих
ничего нового и ты не можешь объективно сказать что в них не так, но
просто нет новизны. И заценил я тут MP3 запись нового альбома Saor. И
подтверждаю, что действительно его альбом прям хорош, хотя и не сказать
что кардинально чем-то выделяется, кроме меньшего количества экстремального
вокала, компенсирующегося хором. Ну и есть вполне себе очень агрессивные
элементы.

2 years agoПрочитал "Последний день" Ричарда Матесона
Sergey Matveev [Wed, 22 Jun 2022 13:03:34 +0000 (16:03 +0300)]
Прочитал "Последний день" Ричарда Матесона

https://www.livelib.ru/book/1001528679-poslednij-den-richard-mateson
Рассказ о том, что какая-то фиговина летит в Землю и, очевидно, её
уничтожит. Остался один день и идёт описание того, что творят при этом
люди: оргии, разбой и подобные вещи. По началу рассказ прям люто
нравился. Но под конец, жутко разочаровался, ибо хотелось сказать: "и...
и это всё? на этом повествование и закончилось!?!?!?". Жуткая банальщина
вышла о том, что человек предавался лютым оргиям, а потом решил провести
остаток дня со своей, просто мирно лежа у неё на коленях.

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

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

2 years agoНе всё так безболезненно с OpenSSH новым
Sergey Matveev [Wed, 22 Jun 2022 12:38:47 +0000 (15:38 +0300)]
Не всё так безболезненно с OpenSSH новым

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

Позже обнаружил что у меня не печатается ничего на кириллице на
удалённых серверах. Судя по changelog-у OpenSSH я не увидел что именно
поменялось в поведении, но LANG переменная не выставляется после
login-а и наверное дело в этом. Помню что если .login_conf пуст, то
добиться работы UTF-8 проблематично. Не понял почему прежде работало, но
в итоге в ~/.ssh/environment добавил нужный LANG и всё заработало.

А дальше я обломался с копированием файла через scp. В курсе что оно
стало использовать SFTP, но в логах появляется:
    fatal: unable to make the process untraceable: No such process
и соединение обрывается. Судя по
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=259174 оно никогда и
не работало. Не стал заморачиваться и поэтому просто добавил strict=0
в функцию. Даже с первого раза написал корректный ed скриптик для
добавления этой строчки, (внезапно захотелось тряхнуть стариной без patch-а):
    40a
    strict = 0;
    .
    wq

2 years agoБезналичка в общественном транспорте отменена во всём Подмосковье
Sergey Matveev [Wed, 22 Jun 2022 10:04:34 +0000 (13:04 +0300)]
Безналичка в общественном транспорте отменена во всём Подмосковье

http://www.korolev.ru/main/anews/news/23/13879.html
Вот только из-за этих уродских мер всё станет ещё дольше чем было после
внедрения карточек, ибо каждый третий норовит оплачивать переводом через
смартфон -- и иногда по полминуты надо ждать человека когда он вобьёт и
проверит номер для перевода. До этой меры зачастую опускались когда нет
налички, а теперь она станет нормой. Куча карточек у людей не
срабатывает по каким-то причинам... наличка была fallback-ом быстрым, а
теперь это снова будет перевод через смартфон с ручным вбиванием номера.

2 years agoБаги в OpenZFS, Linux и Rust
Sergey Matveev [Wed, 22 Jun 2022 08:56:24 +0000 (11:56 +0300)]
Баги в OpenZFS, Linux и Rust

https://changelog.complete.org/archives/10388-pipes-deadlocks-and-strace-annoyingly-fixing-them
https://changelog.complete.org/archives/10390-pipe-issue-likely-a-kernel-bug
https://github.com/rust-lang/rust/issues/98209
https://github.com/rust-lang/rust/issues/98338
https://github.com/openzfs/zfs/issues/13571
https://github.com/openzfs/zfs/issues/13232
https://github.com/openzfs/zfs/pull/13309
https://github.com/zrepl/zrepl/issues/424
https://bugzilla.kernel.org/show_bug.cgi?id=212295
Эпопея главного пользователя и популяризатора NNCP, John Goerzen-а, о
том, что gpg | zstdcat | zfs recv у него временами deadlock-ится. При
этом он создал два bugreport-а для Rust, не связанные с основной
проблемой. Один для ZFS, хотя подобные там уже были. Позже выяснилось
что это бага в Linux, которую нафиг никто не хочет исправлять.

    But briefly, Linux has a bug, they ignored a patch to fix it, and
    nobody particularly cares enough to try again because LKML tends to
    vomit fire and worse things at anyone who mentions ZFS around them,
    so nobody can have larger pipe sizes on Linux.

А вообще ZFS вон запускают на 440MHz SPARC-е.

2 years agoКонец удобного общественного транспорта в Королёве
Sergey Matveev [Wed, 22 Jun 2022 07:33:13 +0000 (10:33 +0300)]
Конец удобного общественного транспорта в Королёве

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

2 years agoTiming attacks сайт
Sergey Matveev [Tue, 21 Jun 2022 15:48:14 +0000 (18:48 +0300)]
Timing attacks сайт

https://timing.attacks.cr.yp.to/
cr.yp.to сайт рассказывающий об атаках на криптографический софт по
времени. Делается серьёзными людьми.

2 years agoОбновил OpenSSH
Sergey Matveev [Tue, 21 Jun 2022 12:14:14 +0000 (15:14 +0300)]
Обновил OpenSSH

А то всё stock-овый 7.8 из ОС использовал. Появился гибридный
постквантовый алгоритм согласования ключей. А ещё есть опция
--without-openssl позволяющая собрать его без использования
ненавистного мне OpenSSL. Но при этом остаются только некоторые
алгоритмы: aes*-ctr, chacha20-poly1305, ssh-ed25519, curve25519-sha256,
sntrup761x25519-sha512 и всякие MAC-и, которые для AEAD режима всё равно
не используются. Никаких RSA или ECDSA не будет. Ещё не знаю будет ли
это где-то проблемой, ибо уж давно, мне кажется, все штатно должны
поддерживать и использовать *25519 алгоритмы с ChaCha20-Poly1305.

Уже существующий ed25519 ключ агент не смог себе добавить при этом, ибо
он зашифрован неподдерживаемым алгоритмом. Пришлось старой версией
перешифровать (назначить парольную фразу).

2 years agoПосмотрел "Рыбку по имени Ванда"
Sergey Matveev [Mon, 20 Jun 2022 15:37:35 +0000 (18:37 +0300)]
Посмотрел "Рыбку по имени Ванда"

https://ru.wikipedia.org/wiki/%D0%A0%D1%8B%D0%B1%D0%BA%D0%B0_%D0%BF%D0%BE_%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8_%D0%92%D0%B0%D0%BD%D0%B4%D0%B0
Конечно же фильм, сценаристом которого был один из членов Монти-Пайтона,
а также двух актёров из него, очень понравился. Куча абсурдного и
неожиданного юмора! Аж снова захотелось пересмотреть "Житие Брайна" и
"Смысл жизни по Монти-Пайтону".

2 years agoПосмотрел "Убийцу"
Sergey Matveev [Mon, 20 Jun 2022 15:26:58 +0000 (18:26 +0300)]
Посмотрел "Убийцу"

https://ru.wikipedia.org/wiki/%D0%A3%D0%B1%D0%B8%D0%B9%D1%86%D0%B0_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_2015,_%D0%A1%D0%A8%D0%90)
В целом понравился, как некая жвачка для глаз и ушей. Сама тема о том
что творят беспредел все эти наркокартели -- по моему уже заезжена и
не интересна. В очередной раз, мол, очередная сотрудница ФБР поняла
что живёт не в мире пони.

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

2 years agoПрочитал "Конец всей этой мерзости" Стивена Кинга
Sergey Matveev [Mon, 20 Jun 2022 15:21:49 +0000 (18:21 +0300)]
Прочитал "Конец всей этой мерзости" Стивена Кинга

https://fantlab.ru/work372
Жутко понравился этот рассказ! Уж не знаю почему это так трогает, но
этот приём что повествующий деградирует на глазах по мере прочтения --
очень задел за живое. Ну и сама тема того, что пацифизм до добра не
доведёт тоже нравится.

2 years agoКамень-ножницы-бумага в Голландии
Sergey Matveev [Mon, 20 Jun 2022 15:19:53 +0000 (18:19 +0300)]
Камень-ножницы-бумага в Голландии

https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BC%D0%B5%D0%BD%D1%8C%2C_%D0%BD%D0%BE%D0%B6%D0%BD%D0%B8%D1%86%D1%8B%2C_%D0%B1%D1%83%D0%BC%D0%B0%D0%B3%D0%B0
Услышал тут от 60+ летнего голландца, что он никогда не играл в сабжевую
игру, да и дети у них в стране с ней не знакомы. Лишь только недавно эта
штука из США к ним стала проникать, как пишет. А я думал что ± оно везде
детьми играется. Даже на работе некоторые решения принимаются через неё.

2 years agoВкус Вуба
Sergey Matveev [Fri, 17 Jun 2022 20:57:00 +0000 (23:57 +0300)]
Вкус Вуба

https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%BC_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%B8%D1%80%D0%B0%D0%B5%D1%82%D1%81%D1%8F_%D0%B2%D1%83%D0%B1
Филип Дик всё же мастер рассказов! Одно последнее предложение полностью
меняет всё что ты строил и представлял в голове. Сочувствие к милому Уабу
меняется на ужас и страх, если бы там оказался. Я и так знаю что Дик
дико крут, но он не перестаёт подтверждать это.

2 years agoПочтовые домены postfix.org
Sergey Matveev [Fri, 17 Jun 2022 14:30:21 +0000 (17:30 +0300)]
Почтовые домены postfix.org

За почту postfix.org отвечает mail.cloud9.net, у которого адреса
camomile., english-breakfast. и russian-caravan..

2 years agoDisplayPort <-> USB Type-C
Sergey Matveev [Fri, 17 Jun 2022 09:32:33 +0000 (12:32 +0300)]
DisplayPort <-> USB Type-C

Приобрёл сабжевый переходник, который заявляет что может и 8K
поддерживать. Но на нём 60Hz для 4K всё равно не выдаёт.
Поиск в Интернете показывает что у огромного количества людей
на Intel UHD 630 это частая проблема. DisplayPort в любом
случае пригодится, но про 4K не думаю пока. Всё же очень много
геморроя под Unix-ами с ним: маленький курсор мышки, низкая
скорость его перемещения, маленькие элементы интерфейса. Всякие
Arch Linux wiki содержат инструкции как то GTK2, то GTK3 под
это поднастраивать, но я profit-а не вижу со всем этим геморроем.
Даже запустил 4K фильм, но разницы совершенно не увидел никакой.

2 years agoMellanox Infiniband под FreeBSD
Sergey Matveev [Fri, 17 Jun 2022 05:20:22 +0000 (08:20 +0300)]
Mellanox Infiniband под FreeBSD

https://lists.freebsd.org/archives/freebsd-net/2022-June/002068.html
У человека были проблемы с производительностью на одной из их карт.
После подсказки о том, чтобы прибить процесс к процессору, скорость
стала даже выше чем под Linux.

2 years agoПопробовал 4K монитор
Sergey Matveev [Thu, 16 Jun 2022 14:49:21 +0000 (17:49 +0300)]
Попробовал 4K монитор

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

Но конечно проблемы с кучей сайтов сразу (мой кстати отлично
показывается). И большие тормоза. Монитор показывает только на 30Hz.
Возможно не в этом проблема, не в этой частоте, а в драйверах допустим.
А проверить Display Port выход не могу, так как нигде ни у кого нет
Type-C переходника на него. Надо покупать, но про это же всё время
забываешь.

2 years agoBurn all GIFs
Sergey Matveev [Thu, 16 Jun 2022 14:47:02 +0000 (17:47 +0300)]
Burn all GIFs

https://burnallgifs.org/archives/
Я настолько молодой, что уже и не застал кампанию по бану GIF-ок, из-за
патентных проблем с ними. Про проблемы то я в курсе, особенно когда
застал отсутствие работающих MPEG Layer 3 файлов в Ubuntu и других
дистрибутивах. Но GIF в любом случае уже просто слишком архаичный формат
без хорошего сжатия.

2 years agoИнфографика на M2 процессор и... 6502
Sergey Matveev [Thu, 16 Jun 2022 12:34:24 +0000 (15:34 +0300)]
Инфографика на M2 процессор и... 6502

https://imapenguin.com/content/images/2022/06/image-6.png
https://imapenguin.com/content/images/size/w2000/2022/06/20d09557-8311-4239-91ec-6232d07102bd-1.png

2 years agolog действие в maildrop
Sergey Matveev [Thu, 16 Jun 2022 12:10:09 +0000 (15:10 +0300)]
log действие в maildrop

Нередко непонятно почему мои правила maildrop-а бросают почту в спам или
вообще /dev/null. Снабдил поэтому почти все подобные правила log-ом:

    [...]
    if ( /^To: .*(undisclosed|unlisted)-recipients/ )
    {
        log "Undisclosed Recipients"
        to /dev/null
    }
    [...]
    if ( /^Received-SPF:.*fail/ )
    {
        log "Failed SPF"
        to $SPAM
    }
    [...]

2 years agoseccomp не юзабелен при любом раскладе
Sergey Matveev [Wed, 15 Jun 2022 08:23:52 +0000 (11:23 +0300)]
seccomp не юзабелен при любом раскладе

https://blog.habets.se/2022/03/seccomp-unsafe-at-any-speed.html
Также упоминается что возможно Landlock станет чем-то используемым
(8b1b3db9e82b8d2ea18e8a26f1530799586828a4). Думал тут в одну рабочую
программу встроить seccomp (d045feee660377eb59074eefd680d8ce98c3c66f),
который уже давно не трогал, но передумал, ибо поддерживать это будет
нереально.

2 years agoПользовательское соглашение перед использованием будильника
Sergey Matveev [Mon, 13 Jun 2022 14:12:41 +0000 (17:12 +0300)]
Пользовательское соглашение перед использованием будильника

https://grumpy.website/post/0XdmtHxz2
А ведь дальше всё будет только хуже в этом мире.

2 years agoAES-1024 military grade шифрование в SanDisk Secure Access
Sergey Matveev [Mon, 13 Jun 2022 14:09:49 +0000 (17:09 +0300)]
AES-1024 military grade шифрование в SanDisk Secure Access

https://research.kudelskisecurity.com/2022/05/11/practical-bruteforce-of-aes-1024-military-grade-encryption/
https://www.schneier.com/blog/archives/2022/06/cryptanalysis-of-encsecuritys-encryption-implementation.html
Вот так вот они паршиво реализуют свою криптографическую защиту. Я давно
не доверяю компаниям делающим подобные вещи. Что ни WiFi шифрованию, что
ни полнодисковому.

2 years agoНачал знакомиться с Valgrind-ом
Sergey Matveev [Sun, 12 Jun 2022 20:51:54 +0000 (23:51 +0300)]
Начал знакомиться с Valgrind-ом

https://en.wikipedia.org/wiki/Valgrind
Прежде его не мог использовать, так как оно не поддерживало FreeBSD. А
вышел на него потому что надо было как-то попрофилировать программу на Си.
Последняя его версия собралась у меня без проблем, и сразу же callgrind
annotate отобразил всё что мне нужно.

2 years agoNomadBSD vs Ubuntu
Sergey Matveev [Sun, 12 Jun 2022 11:45:06 +0000 (14:45 +0300)]
NomadBSD vs Ubuntu

https://nomadbsd.org/index.html
Понадобилось тут посмотреть фильм, но чтобы работали аудио колонки
какие-нибудь. А у меня дома они есть только в мониторе. И звук можно
вывести только через HDMI. В NUC-е моя старенькая FreeBSD не умеет это.
Достал Dell-овский ноутбук, позабыв что на нём вообще на диске стоит.
KNOPPIX. Который аудиовыход через HDMI не видит. Уже забыл, но возможно
и видеопроигрывателя там не было из коробки.

Загрузил LiveCD Ubuntu. Ну и как всегда, любая загрузка Ubuntu это куча
поноса в её сторону. Как мне проверить работает ли звук? Когда-то я
точно помню что на её диске были примерные документы: какой-нибудь
аудиофайл, какой-нибудь OpenDocument файлик, и т.д.. А сейчас ничего.
Ладно, записал на флешку фильм. И... кодеки не поддерживаются! А это
AVC+AAC. Я помню что прежде там не было и MP3, но я думал что патенты на
всё это уже истекли, да и в целом Ubuntu плевать хотела на чистоту от
несвободных форматов и прочего. Подключившись к Интернету, установив
впервые в жизни VLC (я никогда его прежде не использовал, ибо зачем,
если был MPlayer), всё же добился запуска. Но регулярно картинка
превращалась в месиво, пока не попадётся следующий опорный кадр. У меня
на моей системе конечно же всё нормально. VLC оказался таким глючным?
Или ещё что-то? Но по факту: одна из последних Ubuntu, только что
установленный VLC -- видео показывается коряво.

Ради интереса решил попробовать NomadBSD, образ которого валяется рядом.
Это штука типа KNOPPIX: записываешь на флешку, и он продолжает с неё и
работать дальше. После запуска меня спросили только о локали и раскладки
клавиатуры. Автоопределение видео отработало без проблем. Вставка флешки
автоматически монтирует её, через GUI позволяет и вытащить безопасно.
Начинающим пользователям это точно будет удобно. Был ещё вопрос о
предпочитаемой командной оболочки: и после установки zsh у меня везде.
Очень эта мелочь понравилась. Настройка мониторов и звука делается без
проблем в GUI интерфейсе. Собственно, мне нужно было добиться только
чтобы он мог и изображение и звук выводить на монитор: без проблем. Из
коробки стоит mpv, которым всё это и проигрывал. Один dd и готовый
медиапроигрыватель работает.

2 years agoСозвездие Льва
Sergey Matveev [Sat, 11 Jun 2022 16:34:41 +0000 (19:34 +0300)]
Созвездие Льва

https://electrolib.ru/xfsearch/%D0%A1%D0%BE%D0%B7%D0%B2%D0%B5%D0%B7%D0%B4%D0%B8%D0%B5%20%D0%9B%D1%8C%D0%B2%D0%B0
Начал слушать сабжевый цикл аудиокниг. Достаточно просто посмотреть на
список авторов присутствующих в этих сборниках. Всё же Стругацкие это
совсем не моё, кроме нескольких их книг. А тут я прослушал уже восемь
книжек и прям чувство что я как-будто вернулся домой -- вот это моя
литература, которую я так обожаю. Круто осознавать что почти всех этих
авторов я знаю. Всё благодаря "Модели для сборки"
dfd3f97312f239ed59581cb9a115ce369e0e45d6! Олег Булдаков мне нравится как
читает. Плюс есть музыкальный фон, который must-have для комфортного
прослушивания в шумной атмосфере.

Айзек Азимов, Альфред ван Вогт, Андре Нортон, Артур Кларк, Гарри
Гаррисон, Герберт Уэллс, Говард Филлипс Лавкрафт, Гордон Диксон, Грег
Бир, Грег Иган, Грегори Бенфорд, Джефф Вандермеер, Джеффри Томас, Джо
Хилл, Джон Райт, Джон Уиндэм, Джордж Мартин, Дэн Симмонс, Жерар Клейн,
Иэн Бэнкс, Клиффорд Саймак, Майк Резник, Майкл Суэнвик, Марго Лэнеган,
Марек Хуберат, Нил Гейман, Нил Шустерман, Питер Уоттс, Пол Андерсон,
Ричард Мэтисон, Роберт Блох, Роберт Рид, Роберт Силверберг, Роберт
Хайнлайн, Роберт Шекли, Роберт Янг, Роджер Желязны, Рэй Брэдбери, Сергей
Лукьяненко, Станислав Лем, Стивен Кинг, Тед Чан, Уильям Тенн, Урсула Ле
Гуин, Филип Дик, Филлис Эйзенштейн, Фредерик Браун, Фрэнк Герберт,
Харлан Эллисон, Эрик Браун, Эрик Фрэнк Рассел.

2 years agoПрочитал "У меня нет рта, но я должен кричать"
Sergey Matveev [Sat, 11 Jun 2022 16:30:43 +0000 (19:30 +0300)]
Прочитал "У меня нет рта, но я должен кричать"

https://ru.wikipedia.org/wiki/%D0%A3_%D0%BC%D0%B5%D0%BD%D1%8F_%D0%BD%D0%B5%D1%82_%D1%80%D1%82%D0%B0,_%D0%BD%D0%BE_%D1%8F_%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD_%D0%BA%D1%80%D0%B8%D1%87%D0%B0%D1%82%D1%8C
https://ru.wikipedia.org/wiki/I_Have_No_Mouth,_and_I_Must_Scream
Знаком с игрой под этим же названием, но никогда не читал этот рассказ.
Ну... клёвый, постапокалиптический. Понравился. Хотя и ничего сильно
впечатляющего. Но перед игрой её стоило бы прочитать.

2 years agoНаушники в Глобусе
Sergey Matveev [Sat, 11 Jun 2022 16:18:29 +0000 (19:18 +0300)]
Наушники в Глобусе

Мои наушники за 300руб прослужили мне много лет, переживая самое
наплевательское отношение к ним. Использую чтобы слушать аудиокниги.
Сегодня потерялся контакт у одного из ух. Зашёл в Глобус чтобы
аналогичные дешёвые себе найти. Я тщательно обыскал все полки, но не
нашёл ни одной модели "вкладышей"! Только внутриканальные или только
Bluetooth (возможно среди них "вкладышей" тоже нет). Я понимаю что
качество звука вкладышей ещё хуже, но мне эстетически, физически и
психологически всё противит чтобы вставлять себе в ухо что-то глубоко.
А большие наушники, которые покрывают всё ухо -- не компактны. В итоге
ничего и не взял. Но обнаружил дома что вместе с 300руб MP3 плеером от
Digma шли 3.5мм наушники вкладыши. Я привык что регулярно мои хотелки
отличаются от общепринятых, но тут уж никак не ожидал подвоха.

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

2 years agoЗдзислав Бексиньский, Мунк и Satyricon
Sergey Matveev [Sat, 11 Jun 2022 08:49:12 +0000 (11:49 +0300)]
Здзислав Бексиньский, Мунк и Satyricon

http://www.hitkiller.com/xudozhnik-zdzislav-beksinskij-korol-prizrak.html
http://www.hitkiller.com/slushaem-neformatnyj-albom-satyricon-satyricon-munch.html
Клёвые картины польского художника. Обожаю подобные ибо интересно
рассматривать. А параллельно с этим, Satyricon "озвучил" картины
Мунка: да, оно вполне себе годится для их сопровождения. Его Крик
я в одном из рабочих проектов использую: c6d3e752e2c4305bc1c645eb928ebeab85574efe

2 years agoСнова man libev-а
Sergey Matveev [Thu, 9 Jun 2022 06:29:11 +0000 (09:29 +0300)]
Снова man libev-а

В 4983422a00a5cc0fdc461342c8f641e043c784f0 упоминал комментарии автора
касательно разных подсистем ОС. Но это был мой локальный man, далеко не
первой свежести. В новом есть речь про Linux AIO:

    This is another Linux train wreck of an event interface.

    If this backend works for you (as of this writing, it was very
    experimental), it is the best event interface available on
    Linux and might be well worth enabling it - if it isn't
    available in your kernel this will be detected and this backend
    will be skipped.

    This backend can batch oneshot requests and supports a user-
    space ring buffer to receive events. It also doesn't suffer
    from most of the design problems of epoll (such as not being
    able to remove event sources from the epoll set), and generally
    sounds too good to be true. Because, this being the Linux
    kernel, of course it suffers from a whole new set of
    limitations, forcing you to fall back to epoll, inheriting all
    its design issues.

    [...]

    Overall, it seems the Linux developers just don't want it to
    have a generic event handling mechanism other than "select" or
    "poll".

Про kqueue теперь написано не то, что на момент написания всё было
сломано, а то, что оно было сломано на момент создания этого backend:

    Kqueue deserves special mention, as at the time this backend
    was implemented, it was broken on all BSDs except NetBSD [...]

То бишь, всё стало ok теперь в BSD системах. А раздел посвящённый багам
GNU/Linux, Darwin и другим ОС так и остался, намекая что только в *BSD
всё более менее.

2 years agoПоследний вопрос
Sergey Matveev [Thu, 9 Jun 2022 05:55:41 +0000 (08:55 +0300)]
Последний вопрос

https://news.ycombinator.com/item?id=31675727
https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%B9_%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81
На Hacker News появилась запись о рассказе Азимова сабжевом. А я его
ведь прочитал прям буквально вчера вечером. Вот так совпадение. Очень
он такой воодушевляющий и успокаивающий, ведь можно не беспокоится о
тепловой смерти Вселенной, зная чем это закончится.

2 years agoman libev-а
Sergey Matveev [Wed, 8 Jun 2022 14:56:51 +0000 (17:56 +0300)]
man libev-а

Читать его -- особое развлечение. Куда не поглядишь, то обязательно в
кого-то автор кинет камень:

    The epoll mechanism deserves honorable mention as the most
    misdesigned of the more advanced event mechanisms: mere
    annoyances include silently dropping file descriptors,
    requiring a system call per change per file descriptor (and
    unnecessary guessing of parameters), problems with dup,
    returning before the timeout value, resulting in additional
    iterations (and only giving 5ms accuracy while select on the
    same platform gives 0.1ms) and so on. The biggest issue is fork
    races, however - if a program forks then both parent and child
    process have to recreate the epoll set, which can take
    considerable time (one syscall per file descriptor) and is of
    course hard to detect.

    Epoll is also notoriously buggy - embedding epoll fds should
    work, but of course doesn't, and epoll just loves to report
    events for totally different file descriptors (even already
    closed ones, so one cannot even remove them from the set) than
    registered in the set (especially on SMP systems). Libev tries
    to counter these spurious notifications by employing an
    additional generation counter and comparing that against the
    events to filter out spurious ones, recreating the set when
    required. Epoll also erroneously rounds down timeouts, but
    gives you no way to know when and by how much, so sometimes you
    have to busy-wait because epoll returns immediately despite a
    nonzero timeout. And last not least, it also refuses to work
    with some file descriptors which work perfectly fine with
    "select" (files, many character devices...).

    Epoll is truly the train wreck among event poll mechanisms, a
    frankenpoll, cobbled together in a hurry, no thought to design
    or interaction with others. Oh, the pain, will it ever stop...

    [...]

    While nominally embeddable in other event loops, this feature
    is broken in all kernel versions tested so far.

Но и kqueue не отделался:

    Kqueue deserves special mention, as at the time of this
    writing, it was broken on all BSDs except NetBSD (usually it
    doesn't work reliably with anything but sockets and pipes,
    except on Darwin, where of course it's completely useless).
    Unlike epoll, however, whose brokenness is by design, these
    kqueue bugs can (and eventually will) be fixed without API
    changes to existing programs. For this reason it's not being
    "auto-detected" unless you explicitly specify it in the flags
    (i.e. using "EVBACKEND_KQUEUE") or libev was compiled on a
    known-to-be-good (-enough) system like NetBSD.

    [...]

    This backend usually performs well under most conditions.

Про Solaris:

    This uses the Solaris 10 event port mechanism. As with
    everything on Solaris, it's really slow, but it still scales
    very well (O(active_fds)).

    While this backend scales well, it requires one system call per
    active file descriptor per loop iteration. For small and medium
    numbers of file descriptors a "slow" "EVBACKEND_SELECT" or
    "EVBACKEND_POLL" backend might perform better.

    On the positive side, this backend actually performed fully to
    specification in all tests and is fully embeddable, which is a
    rare feat among the OS-specific backends (I vastly prefer
    correctness over speed hacks).

    On the negative side, the interface is bizarre - so bizarre
    that even sun itself gets it wrong in their code examples: The
    event polling function sometimes returns events to the caller
    even though an error occurred, but with no indication whether
    it has done so or not (yes, it's even documented that way) -
    deadly for edge-triggered interfaces where you absolutely have
    to know whether an event occurred or not because you have to
    re-arm the watcher.

    Fortunately libev seems to be able to work around these
    idiocies.

2 years agoСлишком строгий encoding/asn1
Sergey Matveev [Wed, 8 Jun 2022 09:40:17 +0000 (12:40 +0300)]
Слишком строгий encoding/asn1

https://forum.golangbridge.org/t/x509-certificate-parse-error-with-iot-device/27622/2
В рассылке Go жалуются на то, что их кодек, мол, слишком строгий. Они
не могут отпарсить X.509 сертификаты закодированные в BER. И спрашивают
можно ли сделать так, чтобы их принимать в Go? Идиотизм людей поражает.
Как и тех, кто создаёт подобные сертификаты, так и тех, кто предлагает
их принимать. Я тоже не люблю encoding/asn1... но потому что он
недостаточно строг на самом деле.