Sergey Matveev [Thu, 28 Mar 2024 07:55:57 +0000 (10:55 +0300)]
Почта не ходила из-за VPS провайдера
Моя /48 сеть ходит через vpsville.ru VPS. В ней же IP адрес для моего
входящего почтового сервера. В c1e4bf6cc029ad338577718afcc9cd671ab70258
писал, что в последнее время с почтой неладное. Попристальнее посмотрел:
через n-ое время пакеты по 25-му TCP порту начинают исчезать, причём
только в одном направлении. TCP, EHLO устанавливаются, может дойти до
STARTTLS, но дальше tcpdump-ом я вижу что пакеты, которые должны бы были
прийти -- отсутствуют. И мой сервер через внушительное время говорит
что, мол, время ожидания исчерпано. Проверил также и просто netcat-ом, с
другой VPS, по этому порту -- без разницы что слать, но через n-секунд
трафик в одну сторону перестаёт ходить.
Написал в поддержку, говорят что у них никакой фильтрации нет. Я даже
просто nc|dd делал чтобы убедиться, что на 25-ом порту трафик (почти) не
ходит, а на соседних всё без проблем. Я что, единственный человек у них
что ли, кто почтовик на IPv6 за их сетями держит? Или где-то,
действительно, выше находится ТСПУ именно на мои адреса? Не вериться.
Решил пока прокинуть входящий SMTP через мою вторую VPS. Одна VPS у меня
исключительно для /48 сети, на которой нет ничего, кроме ndproxy
(5958e69e23f2519c6716ff689aa39a9b8c480837) и WireGuard туннеля от меня,
по которому идёт весь этот IPv6 трафик. Но vpsville.ru не даёт
прописывать PTR-ы для IPv6 (25ce76407710dc00ab7e4cbda272f32a83f54300),
поэтому мой предыдущий VPS в строю. На нём много чего: зеркала, DNS,
всякое, плюс исходящий SMTP сервер. Для входящего то PTR-ы не нужны. Но
на нём /64 сеть только, поэтому его в качестве IPv6 брокера не использую.
Поднял ndproxy на нём, чтобы он отвечал на NDP NS в /64 сети. Так как
BIRD с OSPFv3 поверх WireGuard уже стоит, то на моём домашнем сервере я
всего-лишь добавил к loopback-у один из адресов этой /64 сети. Через
OSPF VPS-ка узнаёт о нём и знает куда маршрутизировать приходящий
трафик для него. Но, так как исходящий маршрут по умолчанию у меня через
/48 туннельного брокера идёт, то исходящие пакеты этого адреса идут не в
тот интерфейс. Добавил новый FIB (884f5eb6a88411f947a0d6c3fecd37c612a51654),
firewall-ом помечаю трафик SMTP IP адреса этим FIB-ом, всё заработало.
Почта снова по IPv6 стала ходить.
Но vpsville.ru уже не первый раз разочаровывает. То не предупреждают о
том, что PTR для IPv6 они не дают. То проигнорировали мою просьбу
написать это в документации на сайте (ну да, понимают, что если бы было
написано, то я бы к ним не пошёл). Я бы сказал, что это обман, введение
в заблуждение. То вот почта по сути у них не ходит -- возможно,
действительно, кто-то выше режет трафик, но только у меня эта проблема
что ли и они не признаются что это known issue, can not do anything?
Рекомендовать его я уже не могу никому.
Но пока остаюсь на нём для всего остального IPv6 трафика -- это ж снова
надо искать очередных провайдеров, трахаться со всей этой настройкой.
Может я просто по дешёвкам всё бегаю, тогда как серьёзные дяди
используют какой-нибудь well-known не дешёвый хостинг (что это у нас
сейчас, MasterHost когда-то был, сейчас его сайт вообще не открывается у
меня)? Но я же заходил к подобным на сайт и не видел чтобы они
предоставляли нужный мне сервис. Возможно он просто не описан и при
личном разговоре с продавцами они всё смогут сделать, но это ж тоже
геморрой. Почему так сложно просто взять и получить хотя бы /56 сеть,
чтобы без всякого говна, без необходимости запуска NDP proxy, чтобы хотя
бы один PTR выставить?
Sergey Matveev [Tue, 26 Mar 2024 08:48:11 +0000 (11:48 +0300)]
Мой блог и репозитории сдублированы
Вообще-то Git репозитории у меня дублируются с ноября прошлого года.
git.* смотрит на две машины (мою домашнюю и VPS). Заведены master.git. и
slave.git. адреса для каждой из них по отдельности, чтобы в каждом
репозитории я указал два pushurl. git push при этом сразу без вопросов
пропихнёт коммиты в оба репозитория. Они не совсем одноранговы: например
добавление комментария в блог идёт на сервере только в master.git, а
дальше я уже руками при обновлении блога, подпихну в slave.git.
Исторически мой блог находился только на одной машине, ибо ему нужен был
Git-репозиторий локально. И только сегодня дошло, что ничто же теперь не
мешает его запустить и на VPS. SGBlog это один бинарник, плюс кучка
Hjson конфигурационных файлов.
Пришлось правда подправить его: ETag в нём вычислялся как хэш от кучи
всяких данных, среди которых был путь до репозитория, который на разных
машинах легко может отличаться. Плюс обнаружил, что godlighty в качестве
ETag-а для статичных файлов использует ctime, который, как правило,
вообще невозможно сделать одинаковым на разных ФС. Стал использовать
mtime и размер для этого.
Sergey Matveev [Tue, 26 Mar 2024 08:08:05 +0000 (11:08 +0300)]
Распознавание linkmeup подкастов
Начал в 0a1f29f947892a13635bec94abdabcd1e9c55179 превращать подкасты
linkmeup в текст. Вчера именно linkmeup-овские закончились (отдельно там
ещё есть LTE, sysadmins). Три компьютера (Xeon 6-ядер, Xeon 4-ядра, i9
8-ядер) всю неделю упорно жгли электричество. Треть прочитал уже.
Использование large-v2 модели (5ba6c084e4aaa13339e01b094cda718d9ff03a37)
почти (но не все) зацикливания убирает. В общем, полезной штукой этот
whisper.cpp оказался.
Sergey Matveev [Tue, 26 Mar 2024 07:48:54 +0000 (10:48 +0300)]
Неладное со связью
Оказалось, что со мной пытались связаться знакомые после теракта в
Крокусе. По сотовому телефону и по почте через @gmail.com. Я же часто на
подобные мероприятия хожу. На Пикнике три раза был.
На следующий следующий день пришло письмо, мол, чего я не отвечаю ни на
что? В письме по заголовкам было видно что оно дошло до меня только
через пару часов. В журналах почтового сервера не видел попыток
доставки. Первое письмо (или сколько их там было?) вообще не приходило.
Так вот и сообщения по сотовому тоже не проходили. Только через пару
дней, когда я отправил SMS на их номер -- всё стало работать. Впервые
сталкиваюсь с тем, чтобы SMS/звонки не проходили (если есть доступность
сотовой соты).
Смотрел tcpdump-ом что же могло идти не так. До сих пор так и не знаю,
но вижу что именно по IPv6, который у меня через VPS идёт, как-будто
убиваются пакеты TCP. Я вижу что TCP устанавливается без проблем, вижу
даже plaintext вывод начала SMTP сессии, где стороны говорят кто что
умеет, но когда от противоположной стороны должен приходить MAIL FROM,
RCP TO, то такого пакета не видно в трафике. И вскоре мой сервер
посылает ответ что 421 timeout, давай, до свидания. Если стороны
пытаются начать STARTTLS, то это сообщение тоже проходит, но самого
пакета с TLS handshake-ом уже нет. В любом случае это не объясняет
почему gmail.com не делает fallback до IPv4, по которому вроде бы
проблем не видно. Проверял это всё даже просто telnet-ом с другой своей
VPS, где опускал BIRD, чтобы маршрут шёл через глобальный IPv6 Интернет.
Вообще, за 1-2 дня до начала выборов я заметил резкое изменение в
качестве обслуживания Интернета. По ночам -- прям всё тип-топ как-будто,
а как начинается рабочий день, то мой мониторинг постоянно (сотни
событий за рабочий день) говорит о временной недоступности моих VPS. Но
выборы то давно прошли, а Интернет всё равно продолжает кто-то шатать.
Что внутри страны (до Московских серверов например), что за рубеж.
Ну и отдельная тема это директория спам в gmail.com. Годами по абсолютно
непонятным причинам у кого попадает корреспонденция в спам, то нет,
причём в разное время по разному. Кому-то попадает в inbox, хотя мы
раньше не связывались. С кем годами переписывались -- может легко
попасть друг за другом. Хотя годами у меня адреса/настройки/сервера
могут и не меняться при этом.
Sergey Matveev [Sun, 24 Mar 2024 14:27:03 +0000 (17:27 +0300)]
Зацикливание whisper.cpp
В 0a1f29f947892a13635bec94abdabcd1e9c55179 писал, что новая large-v3
модель может зацикливаться. Смена на large-v2 уменьшает вероятность, но
всё равно это вполне себе у меня может происходить. И large-v2 менее
точные результаты выдаёт.
Sergey Matveev [Sun, 24 Mar 2024 08:47:19 +0000 (11:47 +0300)]
Более-менее активная работа с schwabrak-ом
В bd94115b066472316ea03e85d611f732785f8b7c я упоминал о написании "issue
tracker"-а на основе директорий и файлов, пригодного для использования
без дополнительного софта, имея под рукой только Git.
С парой коллег вот попытались его вести для нескольких проектов.
Наверное ещё рано говорить об успехе или провале, но пока вроде
отторжения ни у кого не вызывает это всё. Используем все написанные
на Z shell утилиты мои.
Много коммитов наделал в него, которые то тут, то там что-то упрощают
при работе с ним. Разукрасил его вывод, обмазал цветами: всё же цвета
ощутимо позволяют облегчить навигацию по тексту глазами. Изначально
использовал supercat утилиту, но, оказалось, есть ещё компьютеры с
настолько старой версией, где нет множества используемых мною опций.
Написал свою версию supercat на zsh:
# Usage: colourise ColourSpec:RegExp [ColourSpec:RegExp ...]
# It is intended to be a drop-in replacement for supercat utility.
# ColourSpec is comma delimited list of ANSI codes for colour setting.
# Look for zsh'es Functions/Misc/colors documentation about possible
# colour values. For example to set bold red on green background you use
# "bold,fg-red,bg-green" as a ColourSpec.
# RegExp is POSIX extended regular expression of the text you want to
# colourise.
colourise() {
if [[ -n $NO_COLOR ]] || [[ $# -eq 0 ]] ; then
cat
return
fi
(( ${+colour} )) || { autoload -Uz colors ; colors ; }
local lc=$'\e[' rc=m colr=""
local spec=(${(s/:/)1})
shift
for c (${(s/,/)${spec[1]}}) colr="${col}${lc}${colour[$c]}${rc}"
local re=${(j/:/)spec[2,-1]}
sed -E "s/${re}/${colr}&${reset_color}/g" | colourise $@
}
Можно давать вот такие команды:
colourise bold,fg-green,bg-magenta:"\d+" blue:"whatever regexp"
перечисляя множество регулярок и опций для формирования ANSI разукрасок.
Понравилось что вышло без кучи кода, переиспользуя colors модуль zsh и
POSIX-совместимый sed с расширенными регулярками.
Раньше не было команды "comment", ибо что в неё засунуть, если нужно
всего-лишь открыть issues/.../comment файл и после редактирования
добавить в Git? Но теперь она есть и позволяет предыдущий комментарий
оставить в виде "#"-комментария, а после выхода из редактора удаляет
его, добавляя в Git index. А если ничего не было отредактировано, то
оставляет как было.
"list" команда позволяет фильтровать по тагам. Причём не нужно указывать
полное название тагов. "list star" покажет список задач у которых есть
таги "assignee:stargrave". Если перед тагом написать "!", то будут
показаны задачи у которых него его. "list starg \!done" -- все не
сделанные задачи (у которых нет status:done тага) повешенные на меня.
На работе используется сраный GitLab (сраный -- потому что не
поддерживает SHA256 Git-репозитории, как минимум). Но в нём парой
щелчков можно включить отсылку оповещений о коммитах с показом diff-а.
Поэтому любой push в репозиторий с задачами -- оповещает на email всех
участников.
Пока мне очень нравится как с ним удаётся работать и лично мне ощутимо
помогает уже с несколькими десятками задач. Кроме него, у меня ещё и
личный issue tracker был, по которому очень легко было делать отчёты об
удалённой работе (да, сдаём каждый месяц такое). С schwabrak-based
tracker-ом можно давать ссылки на GitLab и на нужную директорию задачи,
что было бы уже проблематично, если бы задачи находились в
SQL/Recutils/Org-mode СУБД какой-нибудь.
Sergey Matveev [Sun, 24 Mar 2024 07:34:33 +0000 (10:34 +0300)]
GNU/Linux дистрибутивы без elogind
https://sysdfree.wordpress.com/2023/09/25/363/
Оказывается, есть ещё отдельная боль с elogind. Slackware 15 его
использует, поэтому не может уже считаться systemd-free дистрибутивом.
В списке одобренных за 2023-ый код на этом сайте я слышал только об
antiX, Hyperbola, Kiss.
Решил вспомнить что такое antiX, зашёл на их сайт, и вижу что они громко
заявляют что это "анти-фашистский" дистр. Не, это здорово что на этом
Западе кто-то решился пойти против течения и заявить о неподдержке
фашизма, нацизма и подобного (Украину то Запад поддерживает вовсю, как и
террор), но... не надоело ли приплетать всё это к чисто техническим
вещам? Дело конечно автора, в лицензии ничего не написано про запрет
использования его, например, украинцами. Но в форуме всё равно народ
поднимает вопросы нафига это заявление:
https://www.antixforum.com/forums/topic/anti-fascist-antix/
Venom Linux, о котором в другом месте слышал, вообще на JS сайт имеет.
Сайт Kiss-а не открывается -- тоже только JS какой-то вижу в HTML.
Отдельно у них список дистров есть, где запущен DBus, который я у себя
тоже форсированно отрубаю. Тут есть знакомые названия типа Alpine,
Artix, TinyCore (хотя elogind там всё равно присутствует), Void.
В комментариях упоминают CRUX, о котором я тоже вспомнил, вроде бы
elogind там тоже нет по умолчанию.
Sergey Matveev [Sat, 23 Mar 2024 07:10:34 +0000 (10:10 +0300)]
Redis -> Redict
https://www.opennet.ru/opennews/art.shtml?num=60820
https://andrewkelley.me/post/redis-renamed-to-redict.html
https://notes.billmill.org/link_blog/2024/03/Redis_renamed_to_redict.html
https://www.opennet.ru/opennews/art.shtml?num=60823
Недавно Redis решил поменять свободную (но не copyleft!) лицензию на
несвободные. Я к этому как-то спокойно отнёсся: Redis той версии что
была -- работает, живёт, есть, сломается что ли? Его поддерживать
запрещено что ли становится? Кроме того, это как бы уже довольно давно
матёрое и стабильное ПО.
Я давно Redis не трогал, но крайне тёплые чувства к нему испытывал.
Хороший код, хорошая документация, отличный функционал и возможности,
понимание как и чего там работает и что от него ожидать и как
прооптимизировать.
Sergey Matveev [Tue, 19 Mar 2024 19:13:33 +0000 (22:13 +0300)]
Впервые столкнулся с OpenAPI
https://github.com/OAI/OpenAPI-Specification
Столкнулся сегодня с OpenAPI. Хотели чтобы я написал и реализовал схему
и свою программу по нему. Пошёл искать что на Go есть из валидаторов
онной. Куча существенно несовместимых версий (2.0, 3.0, 3.1) -- выбор
софт сужается.
Целый день разбирался почему же проверка уже существующих OpenAPI в
проекте не проходила. Не удивился бы, если их коммитили не проверяя. Не
удивился бы, если бы инструмент, которым проверяли -- был бы косячный
(ибо на Python) и глючный. Но нужно же было понять кто же всё же
виноват: или github.com/pb33f/libopenapi (мой выбор пал на него) или
Python софт.
Оказалось, что схема OpenAPI 3.1... вполне себе регулярно обновляется,
причём даже без изменения хотя бы дат внутри своего namespace. И на
сайте написано что в одном месте можно использовать $ref, но валидатор
упорно не пропускал это. Оказалось, что в нём не настолько современная
3.1 схема была. По сути, выходит, что нету никакого OpenAPI 3.1, а есть
множество версий этого 3.1. Что за уроды так делают?
Sergey Matveev [Mon, 18 Mar 2024 19:50:28 +0000 (22:50 +0300)]
Почему хранить музыку в HiRes формате глупо
https://habr.com/ru/articles/801159/
Доходчиво на примере показано что нафиг не нужно ничего более чем
обычный CD-DA. Для обработки -- да, безусловно, вне всяких сомнений.
Но для конечного результата -- комментарии излишни.
И мне очень понравилось, что автор всё же верно отмечает, что делать
копию музыки с SACD или вообще винили всё же может иметь смысл из-за
разного mastering. Он правда написал что это для вынуждения перехода
на эти форматы, но я склоняюсь к тому, что CD это типа чтобы с сильной
компрессией (как правило) для каждого проигрывателя паршивого подошло,
а SACD или винил уже вряд ли будут подключены к трахтящему мафону.
Приходилось качать варианты как и в виниле и в CD и оставлять винил rip,
даже с его более худшей передачей частот и потрескиваниями.
Но и в комментарии верно заметили, что чисто CD-DA это только стерео.
Да, тут уж никуда не деться. Но речь только про 44.1kHz/16-бит.
И да, разница возможно и будет слышна, но уже из-за искажений и
особенностей работы самих проигрывателей, что совершенно отдельная тема.
Sergey Matveev [Mon, 18 Mar 2024 07:09:35 +0000 (10:09 +0300)]
whisper.cpp то может и не работать
https://github.com/ggerganov/whisper.cpp/issues/1949
Поставил я тут распознаваться подкасты linkmeup-а
(46e4d23a23a10eb1c05e5a20f0ceeebd5ff31016). Наобум взял один
результирующий .txt файл и увидел:
[00:50:46.080 --> 00:50:47.080] Внутри нашего, например, дата-центра, 800-гига-модов.
[00:50:47.080 --> 00:50:48.080] То есть мы будем делать все, что угодно.
[00:50:48.080 --> 00:50:49.080] То есть, мы будем делать все, что угодно.
[00:50:49.080 --> 00:50:50.080] То есть, мы будем делать все, что угодно.
и на час понёсся повтор одной и той же строчки. Взял наобум другой файл:
[02:12:14.680 --> 02:12:17.580] очень активно развиваться.
[02:12:17.580 --> 02:12:19.580] Это будет очень активно развиваться.
[02:12:19.580 --> 02:12:21.580] И это будет очень активно развиваться.
[02:12:21.580 --> 02:12:24.580] И это будет очень активно развиваться.
[02:12:24.580 --> 02:12:27.580] И это будет очень активно развиваться.
[02:12:27.580 --> 02:12:29.580] Это будет очень активно развиваться.
[02:12:29.580 --> 02:12:31.580] Это будет очень активно развиваться.
[02:12:31.580 --> 02:12:33.580] Это будет очень активно развиваться.
[...]
Нашёл багу в трэкере GitHub, где народ жалуется на аналогичное, даже
использует тот же коммит.
Если начать распознавать с seek-ом, то loop не возникает на этих
участках. Короче глаз да глаз нужны.
Sergey Matveev [Sun, 17 Mar 2024 19:50:56 +0000 (22:50 +0300)]
Результаты exit-poll и опросы на улицах
https://lenta.ru/news/2024/03/17/opublikovany-rezultaty-ekzitpola-vtsiom-po-vyboram-prezidenta-rossii/
Я только на этих выборах увидел "независимых экспертов", которые при
выходе, на улице, спрашивают проголосовали ли и за кого. Прежде не
встречал такого у нас. Пишут, что почти 40% отказались от ответа. Я тоже
сказал что "нет, не скажу, это анонимно". Папа тоже впервые встретил
такие вопросы на этих выборах и ему тоже не понравился этот факт.
Как бы... выборы по идее для того и существуют, чтобы узнать мнение
(анонимно) и посчитать голоса. Если кто-то где-то независимо считает это
всё, то это типа недоверие к системе голосования? Читал где-то мельком,
что оппозиционеры советуют врать на этих опросах, чтобы оно как можно
сильнее расходилось с тем, что выдаст официальный результат. То бишь, по
сути это всё лишь только для того, чтобы всякое дерьмо (оппозиционное)
получило какую-то мудацкую причину для очередного поноса и грязи. Если
это всё не связано с этими уродами, то какой смысл то? За 1-2 дня
пораньше поточнее прикинуть результаты? И так всем ясно, кроме
сепаратистов, оппозиционеров, экстремистов и террористов -- что мы едины
и крепки в нашем выборе. А тратить силы на жалкие проценты остальных?
Заняться что ли нечем, тем более, что никак не проверишь достоверность?
Возможно статистика знает какой процент врёт? Если она так всё прекрасно
знает, то, опять же, какой смысл спрашивать?
Sergey Matveev [Sun, 17 Mar 2024 17:31:09 +0000 (20:31 +0300)]
Сходил на оркестр волынщиков "City Pipes"
После плотных масленичных явств (a701f4c31ec277f1ece630edf7c152a5d1161285),
как не пойти послушать волынки? Родители отказывались идти, но папу всё ж
уговорил, мол чего ему делать то в этот день ещё, когда концерт даже не
поздно, а в четыре часа дня начинается? Говорил ведь им, что они небось
непойми откуда понахватались предвзятости о волынках, о том что это какая-то
нудная и скучная штука.
Начинался концерт с приветственных слов. При этом, обратил внимание, что
свет не выключили, а только приглушили. Где-то издалека начинают раздаваться
барабаны, включаются волынки и с заднего входа в зал заходят City Pipes,
зигзагом проходясь между рядами, не переставая играть. Ну и так до сцены.
Классно придумали, плюс вблизи все поглядели и услышали.
Кроме двух волынок, ещё три барабанщика (бас, тенор и забыл-как-называется),
и пианист. Пианино и синтезатор на сцене были. Играли и чисто волыночные
композиции, но вообще концерт назывался "рок-хиты на волынках". ABBA,
Beatles, Metallica, System Of A Down, Deep Purple, Queen, Bon Jovi и ещё
всякие, знакомые мне, но не помню названия исполнителей. Что-то игралось
совместно с пианино. Кроме волынки, один из участников, всякие дудки
использовал. И медляки и боевики.
Когда две волынки играют, то, входя в резонанс, очень мощный и плотный
звук создают. Даже папе, это понравилось. Ну а с барабанами активными --
он аплодировал и хлопал, похоже, больше меня. Говорит, что очень
понравилось. И маме сказал что ей стоило бы сходить всё же было. Это
означает высшую похвалу. Ни капли скуки, всё очень бодро и весело.
Дымовая завеса, активно работающее освещение -- всё как полагается.
Головой главный волынщик кивал так, что, будь у него гитара, явно бы ею
тряс. Энергии куча во всём этом. Закончили представление неспешной
"Don't worry, be happy".
Я обожаю и звук одной волынки, в восторге от двух (в том же In Extremo
такого полно), но а с барабанами так вообще круче некуда. Очень доволен!
Sergey Matveev [Sun, 17 Mar 2024 17:24:05 +0000 (20:24 +0300)]
Масленичные гулянья в Королёве
С родителями мы каждую масленицу уже давным давно отмечаем вместе, с
кучей блинов самых разных начинок. Главное то это, конечно, с мясом
мамины. Со сгущёнкой, мёдом, сметаной, вареньем. Почти всегда есть с
икрой, иногда вместо или совместно ещё с красной рыбой. Плюс оладьи.
Пока ехал к родителям, то несколько чучел в городе видел, от которых
ничего не осталось через несколько часов. На площадях всякие сцены с
выступающими музыкантами. Даже столбы, как и полагается, имеются, по
которым можно попробовать долезть доверху. Конкурсы для детворы --
соответственно и куча семей вышло на улицы.
Как-будто по размаху оно сравнимо с новогодними праздниками.
Sergey Matveev [Sat, 16 Mar 2024 10:19:00 +0000 (13:19 +0300)]
Профессиональная порча компьютерных игр
https://www.youtube.com/watch?v=NWAl-s2clhQ
Ага, есть даже целые конторы, которые говорят что и как надо испортить в
игре, дабы следовать трендам всяким там "metoo", "blm" и прочему дерьму.
В этом видео тоже упоминается (9053f799dc6435fd7bb3c84af777b3dfedf9fc02)
Disney со своим мнением о провале фильмов.
Sergey Matveev [Sat, 16 Mar 2024 09:48:42 +0000 (12:48 +0300)]
Сборка современного mpv
https://www.opennet.ru/opennews/art.shtml?num=60788
Вышли тут кодеки SVT-AV1 и dav1d, где куча оптимизаций и улучшений. Я
ярый приверженец AV1 кодека. Обновил их -- mpv перестал запускаться
из-за другого имени библиотеки. Я почему-то подумал что это
FFmpeg-related вещь не запускается, поэтому пошёл и FFmpeg обновлять,
где тоже прилично изменений подъехало. mpv перестал собираться из-за
того, что то тут, то там (руками то одно, то другое попытался быстренько
поправить) mpv использовал deprecated API.
А сам mpv я давно не обновлял, ибо с какой-то версии что-то он начал
требовать касательно X11, чего в штатных X-ах из пакетов не было. У меня
поэтому он стоял на последнем коммите не требующим странность от X11. Но
это всё сильно устарело и не будет работать напротив современных FFmpeg.
Ладно, решил обновить таки mpv и посмотреть может чего исправилось.
Вместо WAF он стал использовать Meson. И обязательной зависимостью стала
libplacebo. Но, оказалось, что mpv предусмотрел возможность
использования её и её немалочисленных зависимостей через рекурсивную
инициализацию git модулей:
git clone --depth=1 --recursive subprojects/libplacebo \
https://code.videolan.org/videolan/libplacebo.git
Пришлось явно добавлять включение поддержки X11:
meson setup -Dgpl=true -Dx11=enabled -Dalsa=disabled build
Но после всего этого -- вполне себе собирается и работает. В принципе,
даже стало менее геморройно его собирать, ибо прежде ещё приходилось
после сборки добавлять __progname+environ в build/mpv.def и пересобирать
снова. Плюс требовались разные несовместимые версии WAF. Как
проигрыватель, mpv хорош. Но его сборка это всегда была какой-то
постоянной проблемой. Плюс какие-то пертурбации с поддержкой OSS были.
Sergey Matveev [Sat, 16 Mar 2024 07:31:40 +0000 (10:31 +0300)]
Сходил на оперу "Летучий голландец"
https://ru.wikipedia.org/wiki/%D0%9B%D0%B5%D1%82%D1%83%D1%87%D0%B8%D0%B9_%D0%B3%D0%BE%D0%BB%D0%BB%D0%B0%D0%BD%D0%B4%D0%B5%D1%86_(%D0%BE%D0%BF%D0%B5%D1%80%D0%B0)
Только недавно я сходил на оперу (411cc4cd20be6c375c0cbb101330d1aa2fd7fae8),
выразил желание услашть оперу на немецком, как на днях увидели, что
будет премьера "Летучего голландца" в Новой Опере. Взяли билеты, ибо
мало оставалось, но только на следующий день решили почитать про детали
этой премьеры. Как оказалось, режиссёром выступает Богомолов и это
премьера именно в Новой Опере, которая приехала к нам из Перми.
Если почитать рецензии, то сразу встаёт вопрос: ё моё, на что мы взяли
билеты то? Мама ещё добила тем, что этот режиссёр является мужем Собчак.
Знал бы -- не брал, конечно. Что значит Собчак? Говно, дерьмо, мерзость,
гниль и аморальность. И рецензии про его постановку "голландца" --
именно всё это и подтверждают. Да ещё и деньги ему платить за это?
Но, говорили, что в Новой Опере всё же есть ощутимые изменения в сторону
оригинальной постановки. Ну и лично я сотню раз убеждался, что никогда
не надо слушать всех этих критиков, да и вообще мнение людей касательно
темы искусства. Я обожаю "Бората", не жалел и доволен был просмотром
"Зелёного слоника". Родителям показывал "Реальных упырей", которые мне
очень понравились, а родителям очень не. Кому что, на вкус и цвет. Да и
сдавать билеты уже поздно -- полную стоимость, чтобы режиссёр
принципиально ничего не получил, уже не вернёшь. Поэтому решили уж
рискнуть. Хлопать же никто не заставляет или вообще оставаться в зале,
коль там непотребство сплошное будет.
И так какова же его постановка, учитывая что не стоит судить культуру?
Полное говно. Низкосортное дерьмо. Но! Огромнейшее но! Меняющее всё но.
Если читать гадость и дрянь, которая показывалась в субтитрах, и считать
что всё что там писалось это то, о чём они реально и поют на немецком, то
да -- это было бы полнейшим кощунством и глумлением над искусством. Но,
благо, я всё ж многие слова то разбираю, поэтому я слышал и понимал что
текст пения и субтитров *совершенно* не соотносятся друг с другом.
Музыка и текст оперы, пускай и чуть-чуть изменённые, остаются Вагнеровскими.
Можно было бы поступить куда проще: просто навсего закрыть глаза. Сделав
это, ничего кроме музыки и самой оперы Вагнера и не останется. Не видя
сцену -- не потеряешь ничего, декораций не много. Можно бы было вообще
просто убрать абсолютно всё, кроме артистов -- было бы лучше. Что хотел
показать, выразить режиссёр своим псевдо-юмором уровня недалёкого 15-ти
летнего пацана решившего пародировать сортирный юмор Гоблина? Не знаю.
Гоблина то я при этом очень уважаю и обожаю многие его переводы и
озвучки, но не те, что в Терминаторе 3 или Властелине Колец. Не мой это
юмор. Но это всё было не Гоблином, а как-будто жалкой попыткой его
пародии.
Где-то с трети оперы я просто догадался перестал читать субтитры --
благо у меня очки сидят на носу так, что мне надо задирать голову, чтобы
их увидеть, поэтому в состоянии "покоя", я буквально просто их и не
вижу. И сразу же после этого, почти ничего кроме Вагнера и не остаётся.
Мама тоже сказала, что с половины она перестала всё это читать и сразу
становится хорошо и приятно, без мерзости режиссёра.
Так что же сама опера? Мощнейшая музыка! Потряснейшая музыка и
исполнение оркестром. Мама сказала что её как-будто накачивали энергией
и при выходе из зала ты готов лопнуть от всей это неслыханной мощи.
Если в Аиде я говорил, что мне реально понравилось только хоровое пение,
ну и факт мощи голосов мужиков солистов. Но пение женщин, что одной, что
когда они дуэтом... не впечатляет (ну кроме мощи голосов), не трогает,
не пробирает. Здесь же: что один мужчина, что дуэт, что одна женщина --
КАЖДОЕ соло завораживает и является наслаждением. В Аиде был хор или из
только мужчин или из ещё и женщин. Здесь же и чисто женский был -- как
это круто звучит. Многое писалось про крутизну одной из финальных
хоровых песен команды корабля (в этой постановке -- типа деревни, но на
слова песен это толком не влияет, насколько я мог переводить немецкий) --
действительно, мощно! Мама у меня любит оперу, и, не смотря на то, что
Аида понравилась, говорит, что на ней её не пробирало до мурашек, тогда
как тут по несколько раз, и не только от хорового пения.
Отдельно было для меня круто то, что я очень много слов разбирал,
понимал, плюс я обожаю немецкую речь. Тут этого вдоволь! Не спорю,
итальянский, конечно, будет помелодичнее, но мне не нравится тот факт,
что я даже границы слов не слышу в нём, не говоря про то, что ни одного
и не пойму.
Резюмируя: постановка -- полное говно, но всё остальное (музыка, пения,
хор) вызывает полнейший восторг! И да, не смотря на то, что Аида была в
"Геликон опере" -- пафосное, большое, грандиозное помещение, с хорошей
(как говорят знатоки) акустикой, заслуженными артистами в труппе,
колоссальными декорациями, но "Летучему голландцу" в простецкой "Новой
опере", даже в постановке Богомолова -- по восторгу и вызываемой буре
эмоций и напряжении, полностью проигрывает. Такого же мнения и мама, у
которой нет ни пристрастного отношения к немецкому языку, ни к музыке Вагнера.
Sergey Matveev [Fri, 15 Mar 2024 07:17:37 +0000 (10:17 +0300)]
Теперь можно "слушать" подкасты linkmeup
https://linkmeup.ru/podcasts/
На сайте linkmeup есть ценнейшие ресурсы о компьютерных сетях
(2135e60903b761f4188c0cecb49bb96b95809ab7). А также есть подкасты.
Но слушать подкасты... это всё же не аудиокниги, где читают дикторы.
Моё время и удобство дороже, как бы там интересно не было бы.
Но AI, искин, нейросети и [подставить нужное модное слово] решают эту
проблему. whisper.cpp (94cf819e49d4e1f78279ef001bd2a9556b8004f3) можно
превращать это всё почти в real-time в текст. Уже несколько подкастов
так прослушал. yt-dlp без проблем качает MP3 файлы с их страниц.
А так как подкастов у них за многие годы накопилось уйму... процессор
мне жечь очень долгое время придётся. И вот тут то появляется желание
заиметь GPU или акселератор нейросетевых вычислений.
А вообще забавно: текстовые книги хочется преобразовать в звук, а
звуковые подкасты в текст.
Sergey Matveev [Thu, 14 Mar 2024 19:42:33 +0000 (22:42 +0300)]
Энергетика большой страны
https://habr.com/ru/articles/800317/
Не знаю насколько всё грамотно разложено по полочкам, но было очень
интересно почитать и посмотреть на массу цифр о мощностях и потреблении
электро- и тепловой- энергиях. Побольше бы подобных статей на Хабре!
Sergey Matveev [Sun, 10 Mar 2024 10:43:39 +0000 (13:43 +0300)]
Сходили на оперу "Аида"
https://www.helikon.ru/ru/performances/aida.html-0
По сути, это моё первое посещение оперы. Был я один раз на премьере
"Царской невесты", но слишком маленьким, чтобы хоть что-то оттуда
запомнить, кроме первой минуты начала, жутко мрачной.
В общем и целом понравилось. Но не скажу что в восторге. Не знал чего
ожидать, боялся что будет скучно. Но нет, ни на йоту. Но и для меня
восторга как от крутого концерта, какого-нибудь black metal, всё же не
было. Но первая половина, до антракта, прошла так быстро, что я даже
удивился "как, уже половина прошла?".
Больше всего нравилось когда пели хором -- я б с удовольствием только
эти части и слушал, а не сольные или дуэты. Ибо куча потрясающей мощи.
Голоса оперных певцов, конечно, жуть какие мощные. Одно дело это в
наушниках слушать, а другое -- видеть как на такой огромный зал один
человек выдаёт кучу мощного звука. Впечатляет. Поверишь что и голосом
посуду можно бить.
В этой Аиде была сцена, где по периметру зала расходились артисты и со
всех сторон пели, споря друг с другом: с одной стороны призывая кончать
пленных, а с другой -- пощадить их. И когда хором куча человек это
делает -- незабываемо! Египетский полководец, Рамадес -- сразу мне
понравился своим голосом. Аида была с мощным, но партий у неё не много.
А вот дочь царя Египта, которая типа чуть ли не больше всех пела --
ну... даже я понимал что разница с той же Аидой ощутимая по мощи голоса.
Имело ли это колоссальное значение? Наверное нет, но всё же мощь голосов
впечатляет -- а без этого остаётся как бы просто красивый вокал и
артистизм. Но я, понятное дело, дилетант в подобном искусстве.
Была она на итальянском языке. Кроме имён собственных и "mori" (смерть?
что-то с нею связанное, "memento mori") я не знал ни одного слова.
Слышал я оперы у Therion (симфо-метал) и Вагнера на немецком -- а вот
там я прилично слов разбираю. Слышать какие-нибудь "шмерцены" в оперном
исполнении -- люто нравится. В живую надо бы.
Интересные костюмы (с каких это пор я вообще стал на них обращать
внимание? но ведь уже второй раз я эстетическое удовольствие только от
одежды на сцене получаю -- cbe661c1b9849a4592a86eac6f6184b951f21a90),
крутые масштабные декорации. Да и само оформление зала Стравинского в
Геликон Опере -- загляденье! С подобным не сталкивался прежде.
Читал, что Джузеппе Верди хотел изобразить главного жреца в опере плохим
дядькой. Типа жестоким и всё в таком духе. Блин, а я наоборот его уважал
всё выступление. Он сразу сказал царю что кончать пленников надобно, ибо
пойдут мстить. Только их отпустили -- сразу же о планах мести и реванша
пошли разговоры. Рамадес же погиб -- и поделом, ибо предатель! Пускай
даже по неаккуратности типа, но он главком и выдал серьёзную военную
тайну -- никаких поблажек за это быть не должно. Жрец всё делал и
советовал как надо, не придерёшься.
В общем... пока это всё писал, пока вспоминал, пока переспал со всеми
этими воспоминаниями об опере -- понимаю что понравилась она всё же куда
сильнее чем я ожидал. Уже на афише посмотрел когда будут другие
рекомендованные мне коллегой оперы в Геликоне. Круто всё же, здорово!
Хм, никоим образом не упомянул симфонический оркестр. Да даже не знаю
что сказать. Вроде и не придерёшься, всё в тему играет. Для оперы,
театра -- великолепно. А отдельно я просто как музыку я такое всё же не
поставлю послушать, не моё.
Sergey Matveev [Sun, 10 Mar 2024 10:27:32 +0000 (13:27 +0300)]
ГОСТ в LibreSSL
https://dxdt.ru/2024/03/10/12501/
https://www.mail-archive.com/announce@openbsd.org/msg00517.html
LibreSSL был приятен ещё тем, что в нём были ГОСТ алгоритмы.
А вот в новой версии их убрали, из-за низкого качества кода.
Вот видел я хороший и быстрый ГОСТ код, но... не свободный.
Sergey Matveev [Sat, 9 Mar 2024 10:36:09 +0000 (13:36 +0300)]
cURL в macOS
https://daniel.haxx.se/blog/2024/03/08/the-apple-curl-security-incident-12604/
Думаете что указав --cacert опцию в curl вы форсируете использование
чётко заданного списка CA сертификатов для проверки? Так документировано
в самом cURL, так всегда было. Apple же считает иначе и штатный curl в
системе на самом деле всё равно делает проверку напротив встроенных в ОС
сертификатов! И, конечно же, это недокументированное поведение.
Вы не управляете ОС, поэтому не управляете якорями доверия (за вас США
решает чему можно доверять), и вы не можете в банальном curl форсировать
проверку напротив своих якорей. Я реально просто охереваю от людей
которые считают эту ОС вообще чем-то допустимым для использования.
Только и только если на задаваться вопросами безопасности.
Sergey Matveev [Sat, 9 Mar 2024 10:17:40 +0000 (13:17 +0300)]
Z Shell-based Web-сервер
http://www.git.stargrave.org/?p=zws.git;a=blob;f=zws
Какой минималистичный web-сервер для раздачи статических файлов есть?
Да ещё чтобы с dirlisting-ом? Я знал только про python -m SimpleHTTPServer.
Но Python мало где водится из коробки, ибо громоздкий. Поэтому написал
на zsh такую штуку, которая даже знает про MIME (пока в коде только .txt
и .html понимаются) и чуть-чуть про GET параметры, где можно указать
использование tai64nlocal. Мой Go сервер godlighty нужно
перекомпилировать и заранее собирать. А zsh это интерпретируемый скрипт.
За TCP сокеты он не отвечает -- для этого предполагается запуск например
под tcpserver UCSPI-TCP.
Вообще это писалось под (7e1dbd0539c7ea5c6bd5e8831abeea4796da693e)
BASS/zwoki CI проект, где на серверах априори есть и zsh и ucspi-tcp.
Хотя на данный момент zsh уже выпилен почти отовсюду -- после кучи
всякого рефакторинга вышло так, что zsh уже избыточен и не даёт никакой
помощи в скриптах, сильно всё проще стало.
Sergey Matveev [Sat, 9 Mar 2024 09:46:00 +0000 (12:46 +0300)]
Доработки meta4ra
http://www.meta4ra.stargrave.org/
Я стал что-то типа .meta4 fanboy-ем. В системе сборки BASS (прежде это
называлось zwoki, 7e1dbd0539c7ea5c6bd5e8831abeea4796da693e, а теперь
Build Automation Simple System) всё качается через Metalink4 файлы. Ибо
и контрольные суммы и несколько ссылок и подписи удобно лежат в одном
файле.
В пакетах я хранил только BLAKE3 контрольную сумму. Но для РФ зачастую
любой хэш отличный от Стрибога -- будет как-бы несуществующим.
Использовать его вместо BLAKE3 -- слишком медленно. Снова получается,
что нужно хранить несколько хэшей для файлов внутри пакетов.
Есть у меня места, где нужны хэши, но пофиг какие -- просто например для
сравнения файлов между собой. Был hardcode b3sum, но, опять же, в той же
Astra Linux, из коробки этой утилиты нет, а дополнительные зависимости
это всегда когнитивная нагрузка на человека. b3sum можно собрать в
пределах системы сборки и установить этот пакет. Но проблема курицы и
яйца: для создания пакета, уже нужен b3sum хэш, а чтобы его получить --
надо собрать пакет.
Такое уже было с ZStandard сжатием, но там я просто для некоторых
пакетов форсировал использование "gzip"-а. libarchive-based bsdtar
автоматически может понимать какой декомпрессор надо запускать. Вот
такое же хотелось бы и для хэшей. meta4ra-check утилита на самом деле
уже так и делает: находит первый общий хэш и его и проверяет. Нет b3sum
-- будет fallback до чего-то другого имеющегося. Когда появится после
установки пакета -- будет использован в приоритете.
Пришлось в meta4ra-check добавить -stdin опцию, чтобы можно было данные
единичного файла проверять через stdin. Добавил -all-hashes опцию,
которая форсирует проверку всех хэшей .meta4 файла, просто чтобы
убедиться что всё в нём корректно рассчитано и не бито. Добавил
meta4ra-hash утилиту, которая через stdin/stdout считает первый хэш
указанный в -hashes -- как-раз тот самый случай, когда нужен любой хэш,
желательно более приоритетный.
meta4ra использовала внешние утилиты для расчёта хэшей. Сама Go
программа использовалась только для работы с XML и распараллеленным
запуском команд хэшей. Список команд задаётся через -hashes, где через
запятую перечисляются "name:cmdline" пары, указывающие название хэша
(которое будет в XML) и командную строку для запуска. Точнее прежде был
запуск только единичной команды, а теперь это строчка передающаяся в
"/bin/sh -e -c", поэтому можно использовать и конвейеры. Но на разных ОС
доступны разные команды. Заставлять человека тщательно формировать
довольно длинную строчку описывающую что надо запускать -- геморройно.
Написал поэтому meta4ra-hashes-detect утилитку, которая просто
перебирает hard-coded известные (мне) команды для расчёта того или иного
хэша, проверяя их работу напротив hard-coded хэша от "hello world".
Теперь можно любую команду запускать типа:
meta4ra-check -hashes "`meta4ra-hashes-detect`" ...
Когда-то сам meta4ra считал хэши. Но реализации в Go не всегда
удовлетворительно быстрые. Поэтому я и стал использовать внешние
команды. Однако, если на скорость пофиг и хочется хоть как-то посчитать,
например при создании установочных пакетов? А потом уже использовать
появившуюся быструю b3sum/Skein/Стрибог/whatever? Решил поэтому вернуть
возможность использования, так называемых, builtin хэшей, но компилируя
их опционально. Если просто собрать meta4ra "go build"-ом, то будут
использованы только родные библиотеки, где только sha256/sha512. Если
указать "tags thirdparty", то будет использована масса дополнительных
библиотек для кучи остальных хэшей. vendor-ized tarball все их содержит.
Для использования builtin реализации надо указать "builtin" в качестве
cmdline строчки.
Ради Python пакетов, которые теперь на PyPI по умолчанию хэшируются
BLAKE2b, добавил BLAKE2b. Всё же он очень распространён. А BLAKE2s
только внутри протоколах, как правило, используется. Его не стал.
Однако, PyPI использует не просто BLAKE2b, а BLAKE2b-256, хэш которого
не просто обрезанный полный 512-бит. Поэтому добавил ещё и BLAKE2b-256.
Оказалось, что b2sum утилита также входит и в GNU Coreutils (но это не
та, что официально поставляется авторами BLAKE2, но "-l" аргумент
работает одинаково у них обеих). BLAKE2b-256 на PyPI встречается в URL-е
для скачивания пакета.
Убрал Skein-256, смысла в котором и нет. Авторы Skein рекомендуют
ориентироваться на Skein-512. Ну и github.com/dchest/skein библиотека
только его и поддерживает (реализации dchest-а доверяю). Ну и Skein-512
на 64-бит системах ощутимо быстрее работает.
Добавил XXH3-128 (dffa894abeab4eaec509b95af9d23b51e4e0f844). Ну
just-for-fun. С другой стороны, для проверки целостности его 128-бит
значение вполне себе годно, если модель угроз не включает в себя
злоумышленника, а только ошибки канала связи. Go реализация XXH3 тоже
очень быстра.
Sergey Matveev [Sat, 9 Mar 2024 08:17:36 +0000 (11:17 +0300)]
Игры, ломающие 4-ую стену
https://www.youtube.com/watch?v=a6Ctt8h5Koo
Не слышал о том, что некоторые игры просят:
* нажать reset на приставке прямо во время игры, и реально после
перезапуска игра продолжится как и задуманно
* влажным пальцем потереть порт для контроллера
* переподключить контроллер в другой порт, чтобы противник не мог
телепатически читать ваши действия
* поменять CD во время игры на любой другой, чтобы использовать его в
качестве источника энтропии
А ещё в Monkey Island 2, в джунглях, был телефон, позвонив по которому,
персонаж игры попросит поддержку на горячей линии LucasArts для помощи в
игре. Ведь не раз проходил MI2, но не знал о такой штуке. Обожаю юмор в
этих играх!
Sergey Matveev [Thu, 7 Mar 2024 16:30:28 +0000 (19:30 +0300)]
SHAKE в OpenSSL
https://github.com/openssl/openssl/issues/18586
В OpenSSL есть возможно использования SHAKE128 или SHAKE256 хэшей из
командной строки. openssl shakeX. Ага, как же! Неужели можно поверить
что оно реально у них сделано? "shake128" выдаёт... 128-бит выхлопа.
"shake256", соответственно, 256-бит. В баге на GitHub им написали, что
как-бы при этом они урезали в два раза все заявленные этими функциями
ожидаемые уровни безопасности. Что же поделать? Обновить документацию,
написать там об этом косяке, но исправлять уже поздно, софт от этого
уже зависит.
Вот именно из-за подобных вещей я поливаю говном этот дерьмовый проект.
Если кто-то считал, что проблемы только в legacy коде, написанном давным
давно, то вот яркий пример и нового кода.
Sergey Matveev [Thu, 7 Mar 2024 08:36:56 +0000 (11:36 +0300)]
Сообщения от Госуслуг -- не спам
https://habr.com/ru/news/798651/
Всех деталей, конечно, не знаю, но когда-то очень давно я был
зарегистрирован на них. Позже, уже уйму лет ни через один броузер,
который оказывался под рукой, войти туда уже не выходило. Хотел удалить
учётную запись (чёрт его знает возможно ли это?). Но спама от них всегда
было настолько достаточно, то я вообще своему MTA сказал что со всего их
домена ничего не принимать. Отписаться же я уже не могу -- войти то не
выходит. И это всё, похоже, не считается спамом. Приехали...
Sergey Matveev [Wed, 6 Mar 2024 20:58:57 +0000 (23:58 +0300)]
Сюжет Bioshock Infinite
https://www.youtube.com/watch?v=DiNsCa7QX-I
https://en.wikipedia.org/wiki/Immersive_sim
https://www.youtube.com/watch?v=NWm_EPs9Mv4
https://www.youtube.com/watch?v=9jTvRWZoEoM
Среди того, что называют и причисляют к immersive sim игр, я был знаком
только с System Shock 2. Очень хотел сыграть в Deus Ex в своё время, но
он не шёл на компьютере -- слишком тот был слаб или ещё какая-то
проблема, уж не помню. Помню что Bioshock выглядел чем-то революционным,
жутко интересным, но железа для его запуска даже близко не было. Про
Thief читал в книгах, но не встречал знакомых которые бы в него играли и
у кого можно бы было скопировать его. Про более новые игры вообще речь
не веду.
Смотрел всякие обзоры на Bioshock [12] -- дичайшее удовольствие получаю
от его атмосферы, мира и всего что происходит на экране. Многое
напоминает о Fallout. Весь этот стимпанк. Вообще всё.
А вот про Infinite почти ничего толком и не знал, кроме того, что всё
действие на небесах, всё очень яркое и цветное, без мрака, с кучей
людей. Почти отталкивало даже и мало я слышал хвалебных отзывов об игре
от знакомых. Правда мы все уже, к выходу игры, достаточно выросли чтобы
обзавестись кучей других забот и нехваткой времени :-)
И вот посмотрел двухчасовой разбор игры, где и историю и даже введение в
квантовую физику рассказывают, плюс тьма записей того, что происходит в
игре. Сам не играл, но вообще, похоже, что просто крутейшая игра, с
крутейшим сюжетом, идеей и красивейшей атмосферой. Отличной от
предыдущих подводных частей, но тоже привлекательнейшей.
Sergey Matveev [Mon, 4 Mar 2024 20:13:19 +0000 (23:13 +0300)]
Retro Games Mechanics Explained
https://www.youtube.com/channel/UCwRqWnW5ZkVaP_lZF7caZ-g
Много видео поясняющего различные механики и баги в ретро игрушках,
которые на игровых приставках.
Sergey Matveev [Thu, 29 Feb 2024 17:32:31 +0000 (20:32 +0300)]
Cloudinary снова про JPEG XL
https://cloudinary.com/blog/jpeg-xl-and-the-pareto-front
Куча графиков сравнений с JPEG, AVIF, WebP. Короче говоря:
This consolidates JPEG XL’s position as the best image codec
currently available, for both lossless and lossy compression, across
the quality range but in particular for high quality to visually
lossless quality. It is Pareto-optimal across a wide range of speed
settings.
Sergey Matveev [Thu, 29 Feb 2024 09:22:24 +0000 (12:22 +0300)]
GNU tar и автоматическое определение декомпрессора
Его нет. Я уже даже не помню сколько лет я просто отправлял данные в
"tar x" и декомпрессор находился сам, на основе данных на входе. А в
GNU tar, при подаче через stdin, он так не умеет. Более того, он сам
прекрасно при этом понимает что ему подаётся Zstandard и предлагает
использовать --zstd опцию, но автоматом сам её не подставит.
Sergey Matveev [Wed, 28 Feb 2024 07:49:50 +0000 (10:49 +0300)]
Статистика внедрения IPv6, преимущества и перспективы
https://www.etsi.org/images/files/ETSIWhitePapers/etsi_WP35_IPv6_Best_Practices_Benefits_Transition_Challenges_and_the_Way_Forward.pdf
https://www.rfc-editor.org/rfc/rfc9386.html
RFC и ETSI документы на эту тему есть. Про SRv6 не раз упоминают в
последнем. Только в прошлом году впервые видел его упоминание.
Sergey Matveev [Tue, 27 Feb 2024 06:49:12 +0000 (09:49 +0300)]
Небезопасности в PDF
https://web-in-security.blogspot.com/2021/01/insecure-features-in-pdfs.html
Я предполагал что можно бесконечные циклы делать например, для DoS, как
и сам факт запуска JavaScript тоже путь не хороший. Авторы проанализировали
кучу программ. MuPDF, среди standalone реализаций, оказался почти ничему
не подвержен. Его (f5ac4628c014cc4c9fb43f7f15c6bd5cc211d24d) я стал
использовать уже давно.
Sergey Matveev [Sun, 25 Feb 2024 15:15:53 +0000 (18:15 +0300)]
Чем ChaCha20 лучше AES-256
https://mailarchive.ietf.org/arch/msg/cfrg/YVVjUaDCCaBndfaokO2m-zNpQRA/
AES-256 использует в 1.5 раза больше операций чем AES-128. Между тем,
замечает DJB, ChaCha20:
* использует в 1.4 раза меньше операций чем AES-128
* не имеет никаких накладных расходов во время подготовки ключа к работе
* имеет бОльшую безопасность PRF чем AES-256
* имеет гораздо больший порог безопасности чем AES-256
Программная реализация ChaCha20 использует "fast addition circuits in
CPUs", сглаживая какие бы то ни было timing утечки как это было в
https://eprint.iacr.org/2019/996, не говоря про кучу утечек у самого AES
из-за применения таблиц поиска.
Sergey Matveev [Sun, 25 Feb 2024 12:09:25 +0000 (15:09 +0300)]
Анализ PQ3 в стиле Хабра
https://habr.com/ru/articles/796065/
Просто позорнейшая и постыднейшая статья. Не, я сам недавно упоминал PQ3
алгоритм от Apple (f3f761c7479fc29876ee97502684fd06b74867b8), но только
в том плане, что бросаются громкими словами, но без какой-либо критики в
криптографическом и техническом плане. Это просто некий state-of-art
протокол с постквантовыми алгоритмами, ratcheting и постоянным
добавлением энтропии в ключевой материал эфемерными ключами. Ничего
революционного, но и ничего плохого -- наоборот хорошо что современный и
учитывающий современные реалии, молодцы.
Автор пишет, что подробностей на каком-то ресурсе о деталях протокола не
дали. Пошёл искать дальше на ещё один какой-то сайт. А в чём проблема
зайти на сам Apple? Там не то что полное описание протокола в деталях,
но и криптоанализы есть.
Это так назвали шифрование поверх обычного RSA, с временными
ключами? Да его в чистом виде то никогда и не было, всегда совместно
использовались обычные симметричные ключи и алгоритм Диффи Хеллмана,
ибо есть свои уязвимости.
Причём тут RSA? Его там и в помине нет.
Почему чистого RSA никогда и не было? Как-раз таки его полным полно
везде и всюду было. Лишь относительно недавно его официально стали
выпиливать из таких протоколов как TLS 1.3.
Какие уязвимости даже при использовании "обычного" RSA? Сложности -- да.
Уязвимости? Нет, не поэтому стараются сейчас DH использовать.
HTTPS и MTPROTO (Telegram) самые популярные примеры, у Signal
(Signal и Whatsapp) вроде похожий принцип.
Не HTTPS, а TLS. MTProto лучше бы не позориться, даже его упоминанием.
У Signal похожий принцип? Да именно в нём впервые как-раз и было
популяризованы идеи ratcheting и полной замены подписей для
аутентификации тройным (а дальше и больше) DH.
Постквантовые ключи? Это тот же RSA, только генерация ключей на
эллиптических кривых, которые не так просто даются алгоритму Шора и
выдают ту же стойкость при меньшем размере.
Какой, @#$%, RSA то опять? Его там даже близко нет. Автор считает что
постквантовые ключи это нечто основанное на эллиптических кривых (ECC)?
Что за бред? Конкретно в PQ3 используется Kyber, не имеющий никакого
отношения к ECC, принципиально иной алгоритм
(cc0b820a5564d3ad136183951b882bf31c5ab606). Но он используется гибридно
совместно с ECC -- если один из них поломается, то вся система не летит
к чертям. Кроме того, ECC тривиально ломается на (гипотетическом)
квантовом компьютере, ничуть не сложнее чем RSA.
В общем, автор написал полнейшую х@йню и ждёт комментариев, чтобы ему
рассказали азы прикладной криптографии, и тыкнули в его бред сивой кобылы.
Sergey Matveev [Sun, 25 Feb 2024 08:52:14 +0000 (11:52 +0300)]
Заценил Borknagar -- 2024 -- Fall
https://en.wikipedia.org/wiki/Fall_(Borknagar_album)
https://www.youtube.com/watch?v=Dujno_ftAMk
Обожаю эту группу, ждал её нового альбома. Смесь black, progressive и
folk металов. Альбом продолжает идеи и в духе предыдущего потрясающего
True North. Прям скучал по вокалу Lars A. Nedland
(b21bc97300719af31e38a3cacab42d566d1231c3, a1f1290c205c48fe52158cc58c03ee3470d20904). Отличнейший альбом!
Sergey Matveev [Sat, 24 Feb 2024 21:05:03 +0000 (00:05 +0300)]
Оптимизация поиска в libalias
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=253912
У меня было много проблем с нагрузкой на CPU в моём ipfw: f8e2e4dfc6870c4dad7e62be9bb02ae9dd73d180. Всё жутко сильно
упиралось в NAT, а точнее libalias реализацию, используемую
в ipfw. Сегодня снова разбирался во всём этом, ибо у меня
Xeon современный, а у него половина ресурсов занята сетью,
а точнее libalias-ом.
Увереннее, уже рефлекторно стал вводил "netstat -Q" (просмотр очередей
netisr (kernel network dispatch service)), "top -aSH" (где видны
конкретные ядерные модули отнимающие ресурсы), "vmstat -m" (размер
памяти отведённой для libalias там виден), "vmstat -i" (видеть
распределения прерываний по ядрам).
Отчаялся уже, ибо выходило так, что вот ну ни может FreeBSD выжать NAT
для 100Mbps интерфейса, за которым всего 1.5 машины по сути (одна с
BitTorrent активным, а вторая это мой компьютер, иногда часами ничего не
дёргающего из IPv4 Интернета).
Но нашёлся bug по ссылке, с патчем, созданный ещё пару лет назад. И
никто его не мёржит никуда. Прошло пара часов -- полёт отличнейший. На
процессоре смехотворные несколько процентов одного ядра максимум теперь
(и это firewall, NAT и AQM).
While lookup of outgoing packets uses hash based on both source and
destination address, for incoming packets only alias address and
port is used. So when multiple connections from different addresses
target the same port of redirected address (using redirect_addr or
redirect_port in IPFW), the link table must be searched sequentially
- tens of thousand of items for every incoming packet. To make it
worse, the search is under a lock, so it is forced to run on a
single core. Consequently just 1000pps from different addresses are
enough to bring down a server with the fastest CPU available in
under a minute.
Прям вот ситуация именно как у меня, точь-в-точь. И ведь самая обычная
банальная домашняя. Как-будто крайне редко и мало кто с ней встречается.
Вот тут то и можно бы было сказать что FreeBSD не для дома. Но нет,
всего то маленький патчик нужен.
Sergey Matveev [Sat, 24 Feb 2024 20:55:14 +0000 (23:55 +0300)]
Фрагментация пакетов gif-туннеля
При использовании gif/gre/stf туннелей в FreeBSD, отправляемые пакеты
форсированно фрагментируются если размером больше минимального MTU IPv6
(1280 байт). sys/netinet6/in6_gif.c:
[...]
/*
* force fragmentation to minimum MTU, to avoid path MTU discovery.
* it is too painful to ask for resend of inner packet, to achieve
* path MTU discovery for encapsulated packets.
*/
return (ip6_output(m, 0, NULL, IPV6_MINMTU, 0, NULL, NULL));
Так как у меня gif-туннель используется для инкапсуляции IPv4 трафика
поверх динамически маршрутизируемого IPv6, который поверх слонокадров
идёт, а MTU gif-туннеля = 1500, то куча пакетов фрагментируется без
какой-либо необходимости. Всё же на пустом месте чуть ли не удваивать
количество пакетов не очень приятно, поэтому можно просто поменять этот
IPV6_MINMTU на ноль.
Sergey Matveev [Thu, 22 Feb 2024 19:30:29 +0000 (22:30 +0300)]
Почему используются ECDH вместо традиционного DH?
https://mailarchive.ietf.org/arch/msg/cfrg/bGiT7BHITzP6Ir0coceGaeyIROE/
Отвечает DJB. Потому что сильно проще безопасную реализацию делать
именно на эллиптической криптографии. Классический DH или там RSA
могут быть безопасно сделаны и использованы -- просто это сильно
сложнее достичь. И это если не обсуждать производительность и
размеры ключей.
Sergey Matveev [Thu, 22 Feb 2024 16:09:02 +0000 (19:09 +0300)]
Поздравительная открытка к 23 февраля на работе
Коллеги для каждого приготовили QR-коды распечатанные для каждого,
приклеили к дверям. Прилагаю какая картинка досталась мне. Меня
удивляет удивления людей, которые считают что CLI и терминалы это
что-то архаичное и якобы менее удобное. Молодые ещё...
Её я правда не самостоятельно получил, а мне прислали как удалёнщику
типа, так как у меня нет всех этих смартфонов чтобы можно было
декодировать QR-код. Ну точнее я мог бы притащить фотоаппарат, сделать
снимок, дальше на ПК загрузить в QR-декодер. Но это ж сколько времени
надо потратить.
Sergey Matveev [Wed, 21 Feb 2024 17:56:35 +0000 (20:56 +0300)]
eXoScummVM 2.8.0
https://www.retro-exo.com/scummvm.html
https://scummvm.org/
Вышла обновлённая версия колоссального сборника всех игр что
поддерживает ScummVM. Этот эмулятор не требует много зависимостей,
работает на большом парке платформ и операционных систем. Не нужны
DOSBox, WineHQ и прочие штуки. За последнее время в ScummVM много
каких игр появилось -- почти все добавились в этот торрент.
Sergey Matveev [Wed, 21 Feb 2024 17:37:10 +0000 (20:37 +0300)]
iMessage PQ3
https://security.apple.com/blog/imessage-pq3/
Как понять что статья написана явно в Apple?
...we are announcing the most significant...
...a groundbreaking post-quantum cryptographic protocol that
advances the state of the art...
...extensive defenses against even highly sophisticated quantum
attacks...
...has the strongest security properties of any at-scale messaging
protocol in the world...
и это только первый абзац. Читал про сам протокол по диагонали, но
вроде ничего существенно нового нету. Просто применяются относительно
современные алгоритмы и идеи (тьма которых популяризована Signal-ом).
Но 256-бит ECDSA, NIST P... не вяжется с strongest, coolest, greatest.
Sergey Matveev [Tue, 20 Feb 2024 13:52:33 +0000 (16:52 +0300)]
Disney о провале своих фильмов
https://icdn.lenta.ru/images/2024/02/20/16/20240220163234935/owl_detail_620_b02930b05e48c43ee30d8d1a5399e8f7.jpg
https://lenta.ru/news/2024/02/20/disney-ob-yasnil-proval-svoih-filmov-v-prokate-seksizmom-zriteley/
Disney считает, что провал его фильмов в прокате связан со зрителями. Да
достаточно только на кадр из их очередного фильма посмотреть: чисто
белокурая девица, чисто негритянка, чисто азиатка (?) в одном кадре, ну
и конечно же, небось все они лесбиянки... ой, а кто-то наверняка на
самом деле мужчина. Может это они там совсем с ума посходили уже со всей
этой дебильной политикой и маразмом? Хотя их *люто* страшную негритянку
русалочку уже сложно переплюнуть. Адекватность совсем потеряли.
Sergey Matveev [Tue, 20 Feb 2024 07:45:42 +0000 (10:45 +0300)]
"Тайны Блэквуда" и "Проект Послеловие"
http://www.stargrave.org/LinksCatAudiobook.html
https://rutracker.org/forum/viewtopic.php?t=6071812
https://rutracker.org/forum/viewtopic.php?t=5325369
Puffin Cafe весь прослушан (79a334426baf1cf9139784c6c721be7891893386),
обновлений на Рутрекере не видно больше. Механиков точно не хочу
продолжать слушать (ab3db371c107c2d582b31e879e82472479227a2f) -- снова,
снова и снова автор будет описывать и разукрашивать автомобили.
Но обнаружил от уже известных мне авторов (озвучки) ещё пару проектов.
Полдюжины книг из "Тайн Блэквуда" уже прослушал -- тема всяких ужастиков,
не sci-fi. Но нравится, тоже такое люблю.
Sergey Matveev [Mon, 19 Feb 2024 21:26:07 +0000 (00:26 +0300)]
Про читерство в играх
https://www.youtube.com/watch?v=wPSxXwchiU8
Смотря на ролик рассказывающий про то, какие читерства бывают, понял что
я застрял где-то на 30 лет назад. Если про штатные читы и ArtMoney (даже
пару раз использовал) я ещё был в курсе, то дальше совершенно не в теме.
Вот только не очень понимаю зачем в сетевых играх, где против других
людей или ботов, это всё использовать? Разве играешь не ради интереса,
не ради того, чтобы и свои силы проверить и прокачаться? Просто в играх
(single player) я не раз применял читы -- ибо не хочется например все
эти стрельбы и драки, а хочется глядеть на мир, продвигаться по сюжету,
расслабиться. Посмотреть на все виды оружия -- всегда охота.
Но это если про FPS говорить. А про RPG, MMORPG, где ещё и валюта есть,
grind... ну да, это ещё могу понять. Если соревнования и деньги... там
где деньги, то сразу всё становится понятно.
Забавным для меня стал факт, что нешифрованный трафик между игрой и
сервером может выдавать местоположение (и другую инфу) о противниках.
Даже в таких делах без криптографии никуда.
Бывают даже HvsH сервера: где читеры против читеров. Прямо как в Core
War игре, где вредоносные программы между собой воюют.
Да и я вообще-то ни разу в жизни не играл с кем-то по Интернету. По
COM-порту с нуль-модемным кабелем -- да. По настоящему модему, напрямую
звонив второму человеку -- тоже. По локальной сети конечно же, но вроде
уже только по TCP/IP, IPX не застал. LAN появился у нас дома когда я в
Unix системах уже жил.
Sergey Matveev [Mon, 19 Feb 2024 18:01:21 +0000 (21:01 +0300)]
Первый релиз goredo прогнанный в zwoki
Пишу я тут CI систему (7e1dbd0539c7ea5c6bd5e8831abeea4796da693e).
Полностью перевёл сборку пакетов на использование redo. Мало того, что
это сократило код за счёт того, что всякими вопросами атомарной записи
файлов не приходится заниматься, что появились честные зависимости между
пакетами при сборке, что из-за lock-ов на выполняемые цели теперь нет
конкурентных попыток установки собранных пакетов, так ещё и внезапно (об
этом вообще не думал) это всё прекрасно начало распараллеливаться. Пока
одна из зависимостей собирается, для другой качается distfile например.
Плюс я почти избавился от zsh кода. Оставил его только в паре скриптов.
Сами .do цели на POSIX shell написаны. Прежде всё было на нём в системе
сборки. С redo вышло неожиданно всё здорово, а то я было вообще сомневался
будет ли от него польза в данном проекте.
Ну и в качестве первого проекта, для которого я на коммиты выполнял бы
тесты, с его сборкой из исходников, стал goredo. Обнаружилось что тесты
в нём зависят и от Python (ибо это тесты apenwarr/redo, без Python не
работающего) и от Git. Сделал коммиты избавляющие от них, запушил, git
hook создал события, task-maker насоздавал $task-ов, task-taker начал их
забирать и выполнять. Часть коммитов упали, из-за недостатка в
зависимостях, оставив tmux-ы со всем окружением упавшим. Последний
коммит успешно прошёл, подчистив за собой. zwoki выполнил задачу для
которой и был создан. redo очень кстати был. Ну и появился goredo 2.6.1
релиз минорный, о котором даже в рассылку не буду оповещать.
Sergey Matveev [Sun, 18 Feb 2024 12:25:01 +0000 (15:25 +0300)]
GitLab и SHA256 репозитории
До сих пор GitLab (73555bc7b599082947d066015b3010be9a3e9c5f) не
поддерживает SHA256 репозитории. А мне новый создавать как изволите?
Продолжать новые проекты создавать с SHA1 форматом? На работе у нас
в качестве Git-репозитория как-раз GitLab используется. Я за это не
отвечал, конечно же.
Что-то мне в голову приходит пока только одно решение как бы хранить в
SHA1 репозитории SHA256 данные. Коммитить туда git-bundle (+сжатие) файл
с полным содержимым репозитория. Он будет каждый раз перезаписываться,
но на старые копии уже ссылок не будет и git-gc будет подчищать
неактуальные копии. Ну и где-то в стороне держать нормальный SHA256
репозиторий в качестве remote.
Sergey Matveev [Sun, 18 Feb 2024 07:41:48 +0000 (10:41 +0300)]
Новый проект: zwoki
Целую неделю ни одной записи в блоге. Точнее была одна несколько дней
назад об исправлении одной баги, но удалил, так как ничего не исправилось.
А всё потому что полностью погружён в написание новой программы на
работе, больше вообще ни на что не отвлекаясь.
У нас работе нет devops-ов, нет достаточного кол-ва админов, вообще
народу не шибко много. Поэтому если хочешь какую-то систему CI для
сборок -- ну бери и делай. Виртуальные машины или железо тебе выделят, а
вот дальше возись сам. И у нас было n-ое кол-во BuildBot установок.
Часть из них уже никем не поддерживается и из-за изменений
инфраструктуры и не в рабочем состоянии. Что-то на них подправить никто
не знает как. На некоторых, к тому же, всё установлено через Nix, к
которому мало у кого есть охота изучения. Даже те, кто прежде его
использовал активно -- плюнули, из-за постоянных изменений в upstream-е,
требующим постоянное обновление правил сборки (либо сидеть на версиях
годовалых давностей и обновлять только собственные пакеты).
Какие CI системы я знаю? В живую имел дело с Jenkins и BuildBot. Первый
-- на Java и монструозен. Просто воспоминания о том как возиться с его
правилами сборки -- отталкивают от одной мысли его использовать. Второй
написан на Python. А это означает: ee3156341baf276877e601325bb9555ce5743fb1
что хрен его поставишь, не скачивая руками все его зависимости и вручную
подсовывая в virtualenv. Если авторы не предоставили vendored
зависимости (чего конечно же из Python разработчиков штатно никогда не
делает (а вот в моём PyDERASN, кстати, все зависимости приложены в
tarball)), то это просто неуважение к своему времени и силам в попытках
это всё развернуть. Кроме того, современные версии BuildBot имеют WebUI
требующий JavaScript -- поэтому если и ставить, то старьё.
И задался вопросом: насколько это сложная задача (CI) и нельзя ли
написать своё, раз нету готового, достаточно простого и удобного?
Честно, то, что я постоянно за последние годы пишу какой-то софт как
(sane) альтернативу имеющемуся -- самого бесит и раздражает. Но что
поделать, если много софта не удовлетворяет, а переписывать выходит?
По большей части новый CI framework уже написан, как и правила сборки
нескольких проектов. К сожалению, делаю это полностью в рабочее время
(благо, срочных задач пока нет, поэтому могу позволить), не обсуждал
можно ли это выложить в виде свободного ПО. Поэтому пока это закрытая
разработка внутри компании. На следующей неделе уже буду разворачивать
на настоящем железе.
Я хотел было сделать что-то похожее на BuildBot. Раздаются задачи,
выполняются, отчитываются о каждом шаге, логируют, показывают кто там
упал. И всё это проецируется в некий HTML dashboard со сводкой. Но сразу
и требования родились:
* оно должно работать на разных платформах: как минимум GNU/Linux
(Astra, Debian) и FreeBSD
* в идеале, slave выполняющий задачи, должен быть как можно более
минималистичной ОС из коробки. Вот поставили голую FreeBSD или Astra
-- и вот она уже должна мочь выполнять задачи раздаваемые. Чтобы можно
было быстро вводить в строй новые машины для сборок
BuildBot никоим образом не поможет с последним требованием. Если для
сборки нужен PostgreSQL например -- ну или добавляй его сборку/установку
в шаги сборки проекта, или ставь прямо в саму систему slave-а. Последним
админы BuildBot-ов и занимались. Если появляется новый проект с совсем
иными требованиями (например для сборки многого моего софта нужен redo),
то это ставится в slave-ы вручную. Ну или через Nix, Ansible, Puppet,
whatever. Но не средствами BuildBot.
Нужно что-то, что позволяет собирать и устанавливать "пакеты". Хотелось
бы, чтобы сборка проекта на первом шаге просто сказала что мне нужен
"python", "postgres" и это как-то в эту сборку подсунулось. Да, примерно
таким и Docker может заниматься. Nix тот же. Но Nix поддерживает только
GNU/Linux (хотя когда-то давно была поддержка и BSD систем). Docker...
спасибо, но нет, плюс его вроде бы и нет на FreeBSD (лень проверять, как
и возиться с ним).
Поэтому первым шагом я начал писать свой пакетный менеджер по сути.
Правила сборки описываются в shell скрипте, который устанавливает
программу в /well/known/permanent/path/hash-progname. А установка
пакета, которая на практике будет происходить в некой $tmp директории
сборки -- это просто вызов stow для создания symlink-ов из /well/known
пути до программы в $tmp/local поддиректорию. Добавив $tmp/local/bin в
$PATH, директории до библиотек и прочего -- можно удобно заиметь в своём
окружении нужный софт. Всё это очень сильно напоминает то, что делает
Nix. Так и есть. Так вышло, что я самостоятельно к этому пришёл. Но
напомню, что Nix не кроссплатформенный и в нём уродский собственный
функциональный язык для описания сборок. У меня же буквально shell
скрипты выполняющие всё нужное по шагам. Можно ли сторонней программе
легко и точно сказать от кого зависит тот, или иной пакет при сборке? В
Nix можно, а у меня нельзя. Ну и где это создаст проблем? В том то и
дело, что нигде. Как в redo: не запустив .do файлов -- никто не знает от
чего они зависят. Здесь аналогично. Зато никакого нового языка, нового
формата -- пиши как и на чём хочешь.
Установка в /well/known/... путь на любой ОС (GNU, BSD) и создание
$tmp/local stowed директории -- работает одинаково. Если есть
особенности сборки для заданной архитектуры, то внутри правил сборки
всегда есть $ARCH переменная и поэтому можно писать if [ $ARCH = ... ].
Пакет устанавливаться должен из единичного файла. Так я захотел, для
удобства. Думал что можно обойтись просто созданием .tar-а с
hash-progname-version директорией, которую распаковывать в
/well/known/..., но понадобилась возможность хранить run-dependencies
(для работы stow нужен perl, для tmux нужен libevent, и т.д.), точное
имя пакета (чтобы сам пакет имел имя progname-version.tar), информация о
сборке (из какого коммита взяты правила, как минимум).
Поэтому начал рождаться и собственный формат пакетов. Я сначала подумал
и придумал, а только потом пошёл смотреть что из себя представляют
пакеты в Debian, RedHat, Gentoo, и т.д.. Оказалось, что я полностью
схожим образом пришёл к точно такому же решению как и в Gentoo:
https://www.gentoo.org/glep/glep-0078.html
Архив с собранным пакетом находится внутри другого архива, в котором
метаинформационные файлы: name, rundeps, buildinfo, и т.д.. К каждому
файлу можно приложить .blake3 какой-нибудь, .sig/.asc подпись. Очень
просто и удобно. Главное следить за тем, чтобы метаинформационные файлы
находились в начале архива, чтобы до них можно бы было быстро
достучаться при потоковой работе:
curl http://pkg/progname-version | tar xfO - name | read name_with_hash
Архив с программой, конечно же, может быть (и должен быть!) пожат.
curl http://pkg/progname-version | tar xfO - bin |
tar xfC - /well/known/$name_with_hash
Ну а через tee и заранее вычитанные .blake3 файлы можно проверить и
целостность на лету. Внешний архив не стоит сжимать, чтобы можно было бы
быстрее производить поиск по нему.
Машина для сборки пакетов из исходников не должна быть подключена к
Интернету. Может, но не обязана. Поэтому я давно за практику взял
разделение шагов скачивания исходного кода и его сборки. Для скачивания
нужны git, wget и всякое такое. Для сборки они, как правило, не нужны.
На одной машине можно запустить скрипты для скачивания, а на другой уже
использовать результат сформированный в distfiles.
Я не раз писал скрипты скачивания, в которых указывается URL до
tarball-а и криптографический хэш для его "аутентификации". Плюс
скачивал и добавлял в репозиторий и файлы с PGP подписями. Но я
использовал единственный хэш -- SHA512. Было бы здорово указывать хэши,
которые перечислены зачастую на страницах скачивания у проектов. Чаще
всего это SHA256. А вот например для Go 1.4, который нужен для сборок
более новых версий -- вообще только SHA1. Начал добавлять возможность
указывать несколько хэшей... и меня осенило: ведь именно всем этим и
занимается Metalink формат! c3ba3d2f29655d06dffe1ec836c9f0b98daec0c9, 2374b93f88e7a3222c0e91999306b259bd9e276c. Я же сам его уже давно создаю
и выкладываю для всех tarball-ов своего софта. В нём можно указывать
URL-ы для скачивания, разные хэши, встраивать подписи. Плюс он
поддерживается и GNU Wget-ом и Aria2. В итоге для скачивания софта я
просто добавляю в репозиторий .meta4 файлы и натравливаю на них
wget/aria2c. Часть софта есть только в виде VCS репозиториев -- ну тут
просто руками выполняются git fetch/clone/whatever и git-archive для
создания tarball. Для формирования .meta4 я использовать свою
meta4ra/meta4-create утилиту, но всё это можно без проблем проделать и
вручную, ведь это же текстовый XML.
Начал писать это всё на POSIX shell, чтобы на любой ОС можно было
запустить. Я сделал всё что мог, но всё же дошёл до того, что пришлось
для существенного облегчения жизни перейти на Z Shell. У меня много
pipe-ов используется -- поэтому нужен pipefail включённый. Я думал что
он де-факто есть в любом shell (e3a3ccff5507dd83913a0809b9525e3adabd64d2).
Но как оказалось, POSIX ещё не вышел с ним, поэтому и dash (Debian shell
по умолчанию) pipefail не добавляет! Да и если и добавит, на руках же
куча старых версий дистрибутивов. Переписывать pipe-ы на всякие вызовы с
FIFO файлами и прочими неудобствами я не собираюсь. Только из-за этого
dash я вынужден был плюнуть на POSIX shell. А какая альтернатива? GNU
Bash не имеет права на существование. *ksh? rc? fish? Наиболее разумным
и требующим меньшего порога вхождения я считаю только zsh. Либо писать
вообще не на shell, а на Perl, Tcl, whatever. С zsh хотя бы ещё
существенно всё упрощается в плане экранирования аргументов (чего нет в
bash: 30670475d5bc7b8601a555d33fad188602f96712).
А вот скрипты для создания, раздачи, взятия, запуска задач -- всё это
пока вышло написать на POSIX shell. Сами шаги сборки/проверки
конкретного проекта -- можно писать на чём хочешь, как например и .do
redo файлы. Шаги сборки -- просто исполняемые файлы, а значит и shebang
будет прочтён. Если кто-то захочет написать на zsh их, то заранее в
первых шагах достаточно выполнить pkg-install zsh и он появился в
$tmp/local окружении, став доступным для следующего шага сборки
написанного на zsh.
Скрипт запуска задачи занимает примерно экран POSIX shell. А в нём и
создание окружения, и установка stow+perl+zstd через tar xfO вызовы,
чтобы дальнейшие пакеты уже можно устанавливать через pkg-install
скрипт, учитывающий rundeps. Всё это запускается внутри tmux-а, дабы к
упавшей сборке можно было бы подключиться и попасть буквально в её
окружение где все падения и происходили. На самой системе slave-а иметь
tmux не нужно -- он ставится тут же сразу же из самосборных пакетов.
Скрипт запуска шагов сборки тоже занимает один экран. А это и
перенаправления выводов, демон touch alive файла, проверка не слишком ли
долго выполняется шаг (как в BuildBot -- если нет вывода в течении
часа), убийство зависшей задачи, подчистка всего мусора, и т.д.. Скрипт
создания задачи -- полэкрана.
Задача это директория с $TASK_NUM:$PROJNAME:$REVISION:$ARCH[:$HOST]
именем. Внутри есть code.tar и steps.tar. slave-ы не лазят
самостоятельно в git-ы для получения кода который надо проверять. Всё
это, ради разграничения полномочий, делается на абстрактном master.
Результаты выполняющейся задачи это директория с таким же именем, с:
alive
01step/
stderr.txt
stdout.txt
exitcode.txt
...
и всё в таком духе. Вывод std* конечно же пропущен через tai64n. Если
нужно сохранить какие-то артефакты сборки, то просто кладём файлы в
эту директорию. Jenkins умел понимать особый XML формат с результатами
прогона unittest-ов и умел анализировать эти XML между соседствующими
сборками и показывать diff (стало падать на пять тестов меньше, и т.д.).
Тривиально положить шагам XML-ку, а сторонними утилитами, пробегаясь по
директориям с результатами, выполнять нужные вычисления.
У меня нет ни одного демона (ну кроме shell скриптов крутящихся в while
true аналоге). Абсолютно всё взаимодействие между master и slave
происходит через операции на файловой системе. Соответственно, между
ними поднимается NFS. Создание задачи: наполнение директории
$TASKS/tmp/$task:, а дальше создание $TASKS/tmp/$task:$arch и жёсткие
ссылки в каждую из этих директорий. Атомарное появление задач для
slave-ов: mv $TASKS/tmp/$task:* $TASKS/cur/. Только один slave должен
мочь взять задачу? mkdir $JOBS/$task:$arch -- только одной из машин это
удастся сделать. Никаких RPC/API демонов, никаких curl вызовов -- только
NFS, ФС и mkdir для атомарных операций.
task-maker-ы -- программы срабатывающие на появление событий от git
hook-ов, не обязаны запускаться на одной и той же машине (на master). По
сути, нет такой роли как центральный master сервер. Должен быть общий
NFS куда разные машины могут выкладывать свои разные $task-и. NFS с
$JOBS-ами или с $PKGS -- могут быть и другими машинами, другими
mountpoint-ами. Для удобства я для всех новых задач постоянно
инкрементирую $TASK_NUM счётчик -- что-то типа уникального
идентификатора задачи. Как это сделать атомарно, если всё что у нас есть
это NFS? Проблема в том, что на нём из коробки не работают lock-и:
https://serverfault.com/questions/66919/file-locks-on-an-nfs
Ну точнее из коробки в FreeBSD на NFSv4 у меня они не сработали. Дальше
не стал разбираться. Поэтому задачу с взятием значения счётчика я решаю
через бесконечный цикл с mkdir-ом инкрементированного значения счётчика
-- если это удалось сделать, то значит значение "наше", а другие пускай
снова пробуют mkdir-ить его инкрементирующееся значение.
Я сразу же условился не бояться copy-paste. Если что-то делается shell
скриптами, то очень многое можно выносить, DRYить в разные маленькие
скрипты. Помню, что берёшь какой-нибудь suckless проект, видишь пару
дюжин скриптов -- и как то вот сразу отпадает желание разбираться в нём,
даже просто прочитать названия этой кучи скриптов. Если во всех скриптах
сборки проекта есть общая часть с созданием временной директории,
trap-ом для её очистки, и всяким таким подобным -- я считаю ничего
страшного чтобы это копировать между всеми скриптами. А то откроешь
такой DRY файл: и видишь с десяток вызовов неизвестных тебе скриптов и
функций и начинаешь прыгать по файлам чтобы понять что они делают. А без
DRY ты просто видишь все шаги as-is. Надо стараться соблюдать некий
баланс между удобочитаемостью и минимальным порогом вхождения и
адекватностью объёма copy-paste. Это же касается и большого кол-ва
переменных окружения неявно приходящих в скрипты и функции: ничего
страшного чтобы постоянно писать $SKELBINS/$ARCH/$hsh-$name/bin -- всё
равно за человека это делает текстовый редактор.
Всё готово на 80-90%. Вышло значительнее меньше по коду чем я
предполагал. Нужно конечно ещё делать и делать описания всяких пакетов и
правил сборки того или иного проекта, но это уже рутина не влияющая на
код самого framework-а.
Проект, кстати, называется zwoki. Я начал отталкиваться от "2nd
continuous integration" фразы, в итоге вышла "zwo" (zwei, два), "ki"
(Kontinuierliche Integration, чтобы вышел не "zwoci", который фиг знает
как правильно прочитать). Должно бы быть конечно "zweiteki" (zweite --
второй, 2nd), но уже длинновато. А так получился "цвоки".
К сожалению, только почти через неделю, вчера перед сном, меня осенило
другое: я даже не задумывался о применении redo. А ведь она
обеспечивает и слежение за зависимостями между собираемыми целями и
атомарно сохраняет результат работы. Надо посмотреть насколько это всё
упрощает и возможно переделать сборку пакетов на использование redo. Не
знаю почему мне сразу это в голову не пришло, ведь у меня уже нет
проектов которые бы не использовали redo (или же в них просто shell
скрипты и нет никаких зависимостей между целями сборки).
Sergey Matveev [Sun, 11 Feb 2024 20:21:12 +0000 (23:21 +0300)]
Сходили в цирк "Корона"
https://цирк.рус/
Со вчерашнего дня открылся приехавший на месяц в наш город цирк шапито.
Акробаты, воздушная гимнастка, жонглёр, силач (которого ещё и машина
переезжает), иллюзионист (который ещё и из арбалета стрелял метко). Было
весело, здорово, захватывающе. Очень всем понравилось!
И это вроде бы вообще третий раз когда я бывал в цирке. Один раз в
большой какой-то меня водили, когда был маленький, но мало чего я оттуда
помню. Другой раз я ходил в цирк шапито Дурова. Приезжал вместе с
аттракционами к нам в Королёв (или ещё Калининград?). Так хотел я на
животных посмотреть, что родители дали деньги и отпустили в одиночку
туда. Запомнился мне оттуда заяц барабанщик -- ему подносят барабан, и
он со зверской скоростью по нему молотил (грайндкор ударники позавидуют).
Sergey Matveev [Sun, 11 Feb 2024 20:17:49 +0000 (23:17 +0300)]
Впервые использовал Tesseract OCR
https://en.wikipedia.org/wiki/Tesseract_(software)
В девятом классе (20+ лет назад) я на подработке использовал FineReader
для распознавания текста. С тех пор ни разу не трогал подобный софт. А
тут надо один документ заново "набрать". Установил из портов Tesseract,
сделал на цифровую мыльницу фотографию документа, просто указал путь к
JPEG файлу и .txt файлу, подождал несколько секунд -- получил текст. Не
абсолютно всё распозналось, но почти всё. Существенно сэкономило время,
нежели пришлось бы набирать всё с нуля. Полностью свободное ПО, не много
зависимостей. Приятная штука оказалась, ожидал куда большего геморроя.
Sergey Matveev [Sat, 10 Feb 2024 19:53:00 +0000 (22:53 +0300)]
Показал "Большой куш" родителям
Причём в переводе Гоблина. Наверное впервые с ними посмотрел фильм где
не то чтобы мало мата. Фильм им понравился. Оказалось что оба не видели
его прежде, в отличии от "Карты, деньги, два ствола".
Sergey Matveev [Sat, 10 Feb 2024 19:39:20 +0000 (22:39 +0300)]
AV1 и материал с BitTorrent
Иногда я нахожу и качаю фильмы с BitTorrent-а. 2-3 гигабайтные с AVC
кодеком дают отличное качество, где, как правило, ни разу не увидишь, ни
одного квадратика, артефакта. Но многие выкладываются только в MPEG4 AVI.
Уже 2024-ый код, но на кой чёрт продолжать кодировать в это? Не, надо
сказать спасибо, что хоть в таком виде можно достать фильм, но всё же.
Или же часто выкладывают просто копию с DVD или BluRay, просто remux.
Занимают они дофига и я поэтому почти никогда не качал подобные
варианты, ибо жалко и каналы нагружать этим и на диске мне как-то жалко
на какой-то обычный фильм по 5-10 гигабайт. Очень немного фильмов, где
хочется сохранять качество картинки/звука на максимуме.
Но уже не раз сталкивался с тем, что или будет очень паршивый AVI или
DVD/BD-remux. Качал последние и перекодировал в AV1+Opus. И в 700-800
мегабайт вполне себе умещается 720p фильм с двумя звуковыми дорожками и
качеством изображения таким, что ни одного артефакта не увидишь. Прям
хоть только так и делай сейчас... а то ведь даже в HEVC кодеке редко
чего выкладывают.
И параметры кодирования FFmpeg для AV1 (SVT-AV1 кодек) у меня:
CRF=32 если перекодирую видео podcast-ов. Ну и "-g" зависит от
количества кадров. Всё остальное вообще не трогаю. Кодируется это где-то
со скорость 0.2x для <=720p.
Sergey Matveev [Sat, 10 Feb 2024 19:37:02 +0000 (22:37 +0300)]
Винил папе в подарок
Скоро 23-е февраля. Папе ездил приобретать пластинки для его нового
проигрывателя (50aef4f17e5e3f8f90cb40a4b69e930643d83c64). А то из новых,
не со времён СССР, пластинок у него только одна Kiss. Теперь появился
альбом Pink Floyd и сборник живых выступлений всяких рок звёзд. Качество
звучания на них очень здоровское.
Sergey Matveev [Sat, 10 Feb 2024 19:33:32 +0000 (22:33 +0300)]
Дела домашние
С момента заселения в квартиру, когда только только сделан был ремонт,
затирка в туалете и ванной между полом и стенками растрескалась. Вот
заделал эти швы.
А прям в самом конце обнаружилось что умывальник в туалете протекает.
Видимо из-за вибраций или ещё чего, но просто надо было подтянуть одну
штуку с прокладкой.
Sergey Matveev [Mon, 5 Feb 2024 12:54:52 +0000 (15:54 +0300)]
Marketing bullshit о WireGuard
https://vpnmag.ru/wireguard-protocol/
Не перестаю удивляться какую же неграмотную фигню умудряются писать.
WireGuard использует семейство асимметричных ключей Curve25519,
обеспечивающие более высокий уровень безопасности, чем ключи RSA и
AES, используемые в других протоколах VPN. Благодаря асимметричной
криптографии, WireGuard не требует ресурсоемких операций,
используемых в других протоколах.
Что за семейство ключей? Как можно сравнивать асимметричный *25519 и
симметричный AES? В асимметричной криптографии, как-раз таки самые
тяжёлые операции всегда и делаются. Асимметричная -- значит ресурсоёмкая.
Плюс никто не запрещает использовать *25519 в IKEv2 для IPsec.
Протокол WireGuard обеспечивает быстрое VPN-соединение благодаря
режиму работы ядра, который работает намного быстрее, чем
пользовательский режим, в котором работают другие протоколы.
Как-будто машинный перевод. Плюс IPsec, с которым сравнивают WG, в ядре
уже давно жил и живёт. Да и вся статья в таком же духе написана, как и
все подобные на "сервисах VPN". Вот как обычному пользователю сделать
грамотный выбор? Чёрт его знает, никак. Так же как и мне, например, при
выборе автомобиля или чего-то подобного.
Sergey Matveev [Mon, 5 Feb 2024 08:34:46 +0000 (11:34 +0300)]
GitHub думает таки добавить IPv6
https://news.ycombinator.com/item?id=39257841
https://news.ycombinator.com/item?id=39099065
https://supabase.com/blog/ipv6
Не прошло и кучи лет, но GitHub намекает на то, что собирается
использовать IPv6. Я думал что уж когда он перешёл к Microsoft,
то это точно должно было свершиться, ибо вроде бы MS давно
агитирует за IPv6, вроде бы и поддержку рабочую давным давно
имеют, а значит и специалистов.
HackerNews я перестал читать давно (сплошная политика, плюс всякое
дерьмо в топе, вместо крутых статей), но иногда на них ведут ссылки.
Увидел что и они, в кой да веки, тоже добавили IPv6. Из сайтов которые я
посещал и посещаю, наверное только Хабр остаётся в числе технологически
позорно отсталых.
Sergey Matveev [Sun, 4 Feb 2024 18:47:57 +0000 (21:47 +0300)]
Посмотрел "Конец славы"
https://www.kino-teatr.ru/kino/movie/ros/170525/annot/
Сходили в кино на этот фильм. Неплохой. Даже если бы он закончился и на
несколько минут раньше, без happy end -- тоже был бы хорошим, намекающим
на то, что второго шанса мало кому в жизни дают, надо голову включать
раньше и задумываться о своём поведении и отношении к окружающим.
И в наше время почтовый голубь используется по своему прямому
назначению. В Голландии, например, голуби доставляют по назначению
донорскую кровь в пробирках. Это выгоднее и быстрее, чем автомобилем
из-за перегруженности магистралей. В Бельгии на небольшие расстояния
голуби служат для доставки почты, особенно секретной – переносят
маленькие магнитные пластинки (5x5 мм), которые вмещают информацию,
равную по объему Библии. В Великобритании голубей используют биржи.
Японские и немецкие журналисты во время Олимпиады с помощью голубей
моментально получали сведения о результатах соревнований.
Sergey Matveev [Sat, 3 Feb 2024 08:20:59 +0000 (11:20 +0300)]
AWS может получать более 1млрд$ за IPv4
https://www.tomshardware.com/networking/amazons-aws-new-charge-for-using-ipv4-is-expected-to-rake-in-up-to-dollar1b-per-year-change-should-speed-ipv6-adoption
Вот, собственно, одна из причин почему не так торопливо внедряют (ну а
точнее стараются предоставлять на последней миле) IPv4 -- это огромные
деньги. А IPv6 так много, что за даром отдают и бизнеса из воздуха не
сделаешь.
Sergey Matveev [Fri, 2 Feb 2024 20:22:20 +0000 (23:22 +0300)]
В паспортах место рождения должно совпадать со свидетельством
https://lenta.ru/news/2024/02/02/rossiyane-edva-ne-lishilis-otpuska-v-egipte-posle-proverki-pasportov/
Женщина родилась в Свердловске, а в паспорте стоит Екатеринбург. Благо,
таможня пропустила. У меня всю жизнь было всё в порядке по паспорту:
родился в Калининграде, а проживаю в Королёве. До середины 90-х город
был закрытым, а после того как стали всех впускать, то и название поменяли.
Но из-за "Калининграда" приходится не забывать указывать область, а то
многие думают что это далеко от Москвы.
Sergey Matveev [Fri, 2 Feb 2024 17:21:15 +0000 (20:21 +0300)]
Одноразовые вспышки для фотоаппарата
https://www.youtube.com/watch?v=AEm-2giH_zw
Никогда не видел таких устройств в живую, даже в музеях (или не обращал
внимания?). Только почему-то в Симпсонах вспоминаю серию, где Лиза и
Барт нашли древний фотоаппарат и после вспышки они выстреливали горячей
лампочкой. Я не знал что это действительно прям одноразовые лампы.
У родителей во времена СССР была Смена, но уже с электрической вспышкой.
Вообще она вроде бы чуть ли не до начала (и вроде и после) 2000-х нам
прослужила. Потом был куплен Olympus C3050W (точную модель не вспомню,
вроде бы как-то так называлась) цифровой, пишущий на CompactFlash. Вроде
до сих пор должен быть жив. На нём делали фотографии в Иране например.
Дальше родители купили цифровую компактную Sony мыльницу, но она толком
почти не использовалась, в отличии от Olympus. Ну а спустя ещё время у
них хорошие (с неплохими фотоаппаратами) смартфоны появились.
Sony мыльницу я забрал себе. Заряда почти не держит. Как-то на
Савёловском покупал аккумулятор к ней, но он тоже, как оказалось, был по
сути дохлым ещё больше. Но дома что-то щёлкнуть -- годится.
По сути, среди всех цифровых фотоаппаратов, только Olympus, который и
при покупке не был дорогим, ничего около-профессионального, делал лучшие
снимки. Да, не то чтобы высокого разрешения, но зато каждый пиксель нёс
настоящую информацию. Sony, как и смартфоны, делают сильно большего
разрешения фотографии, но только там 10x10 квадрат можно считать за
единичный пиксель полезной нагрузки -- как-будто они просто upscaling
применили. Да и просто качество, вспышка и всё такое -- были более чем
полностью достаточны для наших нужд.
А плёнку они проявляли очень много сами. Огромный чемодан со всей этой
увеличительной техникой был, красные лампы. Реагенты постоянно покупали
и плёнку в туалете без света и под шубой вставляли в коробочку для
проявления. Времени уйма уходила на это конечно. А когда на каждом шагу
уже были будки для проявки, то стали и их использовать. Возможно не
использовали прежде, просто потому что денег не было (а на реагенты с
бумагой хватало).
Sergey Matveev [Fri, 2 Feb 2024 13:56:35 +0000 (16:56 +0300)]
Качество курсов и книг по программированию
https://habr.com/ru/articles/790758/
За последний месяц мне знакомые скидывали примеры вопросов и ответов на
курсах всяких (бывают открытые/пробные части). На курсе стоимостью в 40k₽
спрашивают какие права доступа будут на файле если сделать umask и сами
же совершенно некорректно высчитывают значение, хотя ведь можно просто
взять и руками выполнить umask+touch например. Показывали книгу, в
которой названы преимущества Go перед Python почти уровня "в нём
фигурные скобочки вместо отступов".
А тут вот статья на Хабре. Знаю что кто-то приемлет, но меня как бесило
использование "golang", так и продолжает, особенно когда люди причисляют
себя к Go-программистам -- при этом не знают официальное название языка
и инструмента (ведь даже сайт официальный уже не "golang.org"). Но это
мелочи, ладно.
С самого начала идёт "лучше избегать defer". Когда-то это точно было так
-- стоимость defer ощутима. Только и прежде нельзя это воспринимать как
мантру и аксиому: если функция редко вызывается, то не стоит вредить
удобочитаемости и простоте кода в угоду мизерной экономии. Но с какой-то
версии Go, defer стал крайне дешёвым и где-то я видел что официально
рекомендуют забыть про его стоимость, не париться, ибо он частенько
помогает человеку избегать ошибок и делать код проще.
Нужно правильно использовать make. Нужно изначально создавать структуру
нужного размера, чтобы не требовалось потом выделять для неё место в
runtime, задерживая тем самым остальные процессы.
"Нужно"? "Нужно" и "желательно" это две большие разницы. В комментариях
статьи сразу же отметили что из-за этого нужно можно сложнее код
написать. Плюс каким процессам make будет мешать? Может горутинам,
нитям? Причём тут runtime? make в любом случае тоже в runtime
выполняется. И я не считаю что придираюсь к словам -- по моему тут
грубейшие ошибки в использовании терминов.
Лучше использовать буферизированные каналы. Как всем известно, когда мы
пишем в небуферизированный канал, пишущая горутина блокируется до того
момента, пока другая горутина не прочитает из этого канала. Чтобы
избежать этой блокировки, можно использовать буферизированный канал на 1
элемент.
Тут меня просто бомбит. "Лучше" использовать буферизованные, говорят.
Чтобы избежать блокировок. А... а если канал именно для блокировки и
синхронизации и используется? Буферизованный и небуферизированный канал
это просто тупо две совершенно разные сущности, для разных задач. Это
как "лучше" использовать автомобиль вместо велосипеда?
for i, v := range slice
в переменную v попадает копия слайса
Копия slice в переменную? Может быть всё же значение элемента slice?
Чтобы опровергнуть миф о производительности при передачи аргумента в
функцию по значению или по ссылке, они решили просто посмотреть как
меняется производительность передавая один жалкий int. Видят что в этом
случае разницы почти нет и делают вывод это миф. Далее решили
протестировать анонимную функцию для инкремента этого же int-а. Вот
только они в цикле делают функу... но не запускают её вообще. Вот именно
здесь я бы захотел уволить человека за такое. За то как он решил
проверить и какие выводы сделал, а также просто за вообще нерабочий код.
Далее тестируют производительность switch и... map. Я прям вот реально
впервые вообще вижу что сравнивалась структура данных и код для
генерирования if-ов (грубо говоря). Вроде бы можно и вообще не
разбираться в сложности алгоритмов, но чтобы додуматься до тестирования
скорости switch и map...
То ли прежде люди (включая меня) просто не особо интересовались курсами
и книгами и всегда так плохо всё было. То ли на фоне бума тренда и hype
на ИТ сферу, на фоне развития телекоммуникаций особенно после COVID, на
фоне дефицита ИТ-кадров стали учить полнейшей безграмотнейшей дичи. Одно
дело давать мало, немного, поверхностно, а другое дело давать ошибочные,
некорректные и безграмотные вещи.
Sergey Matveev [Fri, 2 Feb 2024 10:52:28 +0000 (13:52 +0300)]
Настройки безопасности Chromium
Чтобы опубликовать статью "Libre/OpenPGP vs OpenSSH/age"
(6df5bfb70dfc25de3344c4a28b307dc6fe4f1807, 1e117f483724c190b2d1cefb20355b910719b07d), пришлось с LiveCD загружать
KNOPPIX, так как в нём Chromium есть из коробки, тогда как под Firefox
не работает даже CAPTCHA для входа на Хабр. Всё это на отдельном старом
ноутбуке.
Прошло более двух недель как мне написали о неправильном окончаним в
одном слове. Достал ноутбук, снова загрузил KNOPPIX, но чтобы исправить
окончание -- нужно мочь вводить на русском языке. И через всякие штатные
меню я не нашёл способа как добавить язык и переключатель ввода на него.
Просто ужас, насколько же современный Web стал неюзабельнейшим говном и
всякие LiveCD GNU/Linux дистрибутивы чёрта с два помогают и позволяют в
нём работать. Стоит конечно окончательно забыть про Хабр для публикации
статей, но раз в год могу и достать ноутбук, хотя теряю прилично времени
на попытку разместить на нём статью.
Сильно позже я понял что можно бы было сделать так: на флешку (или на
статическом сайте выложить .txt) записать изменённое слово и через буфер
обмена скопировать/вставить его в статью. Но одна только мысль о том,
сколько по времени всё это запускать, угнетает ещё как.
Сегодня вот появилась виртуальная машина, где можно было "apt install"-ом
установить Chromium и добавить выбор русского языка. Ради интереса полез
в настройки броузера. Возможно я вообще никогда в жизни не видел как это
делается в этом броузере. Пользовательские интерфейсы, конечно, уже
давно просто убивают: совершенно разные стили оформления на двух
соседних страницах, вообще не видно и не понятно что является элементом
управления/выбора, а что нет. Как тупая макака (или игрок в
point-and-click adventure) должен долбить курсором во всё что кажется
подозрительным на экране.
По умолчанию во вкладке "safe browsing" стоит "standard protection". А
рядом с "enhanced protection" стоит пометка о том, что при этом вся
"browsing data" отсылается в Google. Хм, интересное у них понимание
"enhanced protection". По умолчанию, действительно, у них используется
зашифрованный DNS (то бишь DoH/DoT/хз), конечно же, тоже сливающий это
третьим лицам. По умолчанию включена галочка о том, что периодически
Chrome будет проверять мои пароли напротив списков скомпрометированных
(то есть, снова сливать ещё и пароли (пускай даже и производные от них
-- это тоже ценная информация, чай не zero-knowledge же у них)).
Sergey Matveev [Thu, 1 Feb 2024 18:01:15 +0000 (21:01 +0300)]
setuptools-rust
Надо было проверить работоспособность GoCheese для загрузки в него
Python пакетов. Обычная утилита для этого в Python -- twine, которую
только и использовал для загрузки. Делаем "pip install twine" и через
несколько минут падаем с тем, что на моей системе нет Rust. Кто-то,
где-то тянет setuptools-rust.
По сути, уже даже самые простейшие пакеты, начали зависеть от Rust-а.
Можно считать что PyPI, как и в целом система пакетов Python, если она
только не полностью под своим контролем -- стала нерабочей и бесполезной.
Никаких аргументов и рекомендаций в сторону Python уже быть не может.
Sergey Matveev [Tue, 30 Jan 2024 08:05:17 +0000 (11:05 +0300)]
Защищая наши секреты от компьютеров
https://dl.acm.org/doi/10.1145/3623614
Многие работы связанные с криптографией регулярно упоминают Alice и Bob.
Эта же работа начинается с интригующего:
Bob is in prison and Alice is dead; they trusted computers with secrets.
Sergey Matveev [Sun, 28 Jan 2024 14:04:01 +0000 (17:04 +0300)]
Поиграл в маджонг у друзей
https://ru.wikipedia.org/wiki/Маджонг
https://ru.wikipedia.org/wiki/Пасьянс_Маджонг
Как оказалось, на компьютерах я видел не маджонг, а пасьянс-маджонг.
Настоящий же маджонг, как Wikipedia пишет, это штука сродни покеру.
По началу были проблемы с тем, что, уж извините, но я ни одного
иероглифа не знаю, с трудом их отличаю, и даже не знал как цифры то
у них обозначаются. Но дальше полегче пошло. Вообще в целом очень и
очень понравилась игра, хотя полностью честно, не показывая свои кости,
не обсуждая у кого что и что можно сделать -- не успели сыграть. Всё же
порог вхождения не нулевой. Но однозначно хотелось бы повторения!
Sergey Matveev [Sun, 28 Jan 2024 11:52:23 +0000 (14:52 +0300)]
Бурк Бурук -- По образу своему
https://author.today/work/129269
Забавная (и не очень) история про троллиху. Описывают её жизнь, быт, как
пришли их убивать и порабощать люди.
История о том, как стать человеком. И без всякой магии.
Вспомнились "Дикие истории" (1bf88b8b0e5b1e80b1d68700c632e3658c10f7a8) и
слоган книги должен бы быть:
В каждом тролле есть человек. Не буди его.
Sergey Matveev [Sun, 28 Jan 2024 11:44:16 +0000 (14:44 +0300)]
Apple решила уничтожить квадратные checkbox-ы
https://tonsky.me/blog/checkbox/
Действительно, по форме элементов можно понять чем они являются. А
теперь, видимо пользователи смартфонов и macOS настолько отупели, что и
это уже не в состоянии воспринимать и дифференцировать -- поэтому Apple
решила сделать checkbox и radio button неотличимыми. Насколько ж нужно
себя не любить, чтобы использовать всё это дерьмо?
Sergey Matveev [Fri, 26 Jan 2024 18:06:28 +0000 (21:06 +0300)]
Больше про ArVid
https://jacobfilipp.com/arvid-vhs/
В ad67e5a0dfca5056d07a782b99250e2c0db31024 я упоминал Арвид: стример,
который использовал обычный видеомагнитофон и видеокассеты для хранения
внушительного объёма данных. В статье ещё и куча снимков экрана есть.
Sergey Matveev [Thu, 25 Jan 2024 20:23:48 +0000 (23:23 +0300)]
{line,character,block}wise, inclusive/exclusive действия
Более двадцати лет я каждый день провожу часами в Vim. А сегодня заметил
что удаление "d%" блока текста занимающего несколько строк и начинающегося
с начала строки, при вставке вставляется как блок из нескольких строк, а
не как многострочный текст сразу после/до места где я нажимаю "p"/"P"
команды. Если же "d%" я делаю не в начале строки (до этого места хотя бы
один не indent символ есть), то при вставке оно ведёт себя уже иначе.
Не одна страница в help-е Vim-а написана про все эти *wise действия и
про *clusive. Но как-будто вообще впервые вижу. Впервые обратил внимание
на колонку с типом текста находящегося в регистрах. И документация прямо
явно намекает как бы делать форсированные character/line-wise действия.
Вот не перестаёт Vim удивлять и даже 20+ летней давности функционал
продолжает открываться.
Sergey Matveev [Thu, 25 Jan 2024 18:58:54 +0000 (21:58 +0300)]
PKCS#12 проблема в OpenSSL
https://www.openssl.org/news/secadv/20240125.txt
В очередной раз, на уровне парсинга структуры ASN.1, OpenSSL может упасть.
Вот люто ненавижу этот проект из-за ничтожного качества. Да и PKCS#12 это
одно из самых переусложнённых и монструозных что придумано.
Я уже много лет принципиально ни при каких обстоятельствах не даю ни
примеров, ни намёков на то, как то или иное сделать в OpenSSL. И себе не
позволяю использовать из него ничего, разве что кроме быстрой реализации
хэша через командную строку.
Sergey Matveev [Thu, 25 Jan 2024 12:02:40 +0000 (15:02 +0300)]
Yahoogle. Доверие к Gmail "show original"
https://wordtothewise.com/2024/01/dont-trust-gmails-show-original/
В Gmail есть возможность показать оригинальное письмо полностью, со
всеми заголовками. Пишут что они всё же некоторые данные вполне себе
меняют и не отображают оригинал.
А ещё услышал про "yahoogle". Прежде только о "faceboogle".
Sergey Matveev [Tue, 23 Jan 2024 20:48:58 +0000 (23:48 +0300)]
FFV1+Matroska в библиотеке конгресса
https://blogs.loc.gov/thesignal/2023/12/embracing-ffv1-matroska-container-preferred/
Библиотека конгресса США теперь считает .mkv с FFV1 кодеком
(c2327fd8617a2a200ea75dbd3ab1bb30001891fb, 94d581df931a13bce7f419069466d52a81b45e78)
предпочтительным для хранения. Это конечно не то чтобы весомым
аргументом где-либо должно быть, ибо среди предпочтительных форматов у
них и проприетарные .xls, .xlsx есть, а среди допустимым даже RAR есть.
Sergey Matveev [Tue, 23 Jan 2024 08:00:15 +0000 (11:00 +0300)]
IPv6 город в Китае. IPv6 в Чехии
https://blog.apnic.net/2024/01/23/the-ipv6-city-xiongan-china/
https://konecipv4.cz/en/
Упоминают о городе, в котором только IPv6 сетевая инфраструктура
(хотя всё же до сих пор остаются шлюзы в устаревший Интернет). А
к 2032-ому госучреждения Чехии должны прекратить предоставлять
доступ через IPv4. 2032... вообще это чуть ли не десять лет. Но
на уровне государств (Белоруссия a641dcab42a75c5de321740567c63c9b4e48f015,
США 2e24ed164b9fc1d8b0c0d5e852245e3fb3c65edc, вся Азия в целом, особенно
Китай) форсирование не только внедрения IPv6, но и выпила IPv4 дело идёт.
Sergey Matveev [Tue, 23 Jan 2024 07:54:23 +0000 (10:54 +0300)]
OpenBSD и UTF-8
В рассылке FreeBSD вот такое письмо прилетело:
> Which I think leads to one of my big reasons for supporting Rust and
> something else that needs to be moved to its own thread, Text encoding
> issues. I think the project needs to follow OpenBSD's lead and
> deprecate non UTF-8 locales. While I personally can't read or write
> anything other than English and a few dozen words in Spanish,
> Portuguese, and French, I can find or create test input data that isn't
> in basic ASCII and test my string handling against such input. Assuming
> allowing things like French column names make sense.
First this is already deprecated, only utf-8 locales and encoding are being
updated on regular basis! Second, no we will not follow the path of OpenBSD here
because locales are not only for interactive, but text processing, like
for example databases (collation, comparison etc) and there are plenty of data
stored that cannot be converted to unicode for many valid reason, dropping non
unicode locales will just make sure those data and databases cannot be served
on FreeBSD anymore! (btw note that OpenBSD, while having deprecated all non UTF-8
encoding support, do not support unicode collation).
Вот верно заметили, что локализации используются не только для
интерактивных программ (9a7015f648c3b55e1c1ff22f8bfd2958dcf2e255).
И в очередной раз неприятно удивила меня OpenBSD тем, что там нет
Unicode collation. Не, понятное дело что никто не мешает использовать
внешние библиотеки, но если уж вы за Unicode, то без collation многие
web-задачи не выполнимы. Странные эти OpenBSD-шники всё же.
Sergey Matveev [Mon, 22 Jan 2024 07:59:16 +0000 (10:59 +0300)]
Теория игр за 15мин
https://habr.com/ru/companies/raft/articles/787906/
Я только научно-популярные статьи на тему теории игр читал. Как минимум,
дилемма заключённых упоминается частенько в книгах по криптографии.
Интересная штука. Впрочем, как и по экономике чего научно-популярное
читать, то тоже интересно, особенно про всякие парадоксы (типа
поднимаешь цену на гречку, и её сметают с полок).
Sergey Matveev [Sun, 21 Jan 2024 14:44:01 +0000 (17:44 +0300)]
Обсуждают внедрение Rust в FreeBSD
https://lists.freebsd.org/archives/freebsd-hackers/2024-January/002845.html
Пока никто не видит смысла, зато тьму недостатков экосистемы Rust,
не забывая отмечать, что его bootstrap -- тёмная лошадка.
Sergey Matveev [Sun, 21 Jan 2024 13:52:11 +0000 (16:52 +0300)]
Побывал на выставке-форуме "Россия"
https://vdnh.ru/russia/
Хоть он идёт уже и не первый месяц, но вот только сейчас выбрались с
родителями на него. Очень понравилось там! Страна то огромна и
разнообразна как нигде и ни у кого. Сколько всяких республик а народов.
И на них можно посмотреть, ознакомиться с их миром. БОльшая часть
информации подаётся в интерактивном виде через сенсорные экраны. Время
от времени там выступают и культурный досуг устраивают то одни, то
другие. Мама вот наконец-то в живую горловое пение услышала (я то не раз
на концертах подобных был). Если разглядывать и читать всё -- то нужно
много часов, информации очень прилично.
После этого родители подустали и поехали домой, а я продолжил просто
гулять по ВДНХ, по морозному воздуху (хотя бы безветренного) при ярком
солнце. Народу просто тьма сколько! Я вообще люблю ВДНХ, но тут его всё
больше и больше украшают, строят новых павильонов и ремонтируют тех, кто
со времён СССР ещё. Очень нравится мне тамошняя атмосфера.
Sergey Matveev [Sun, 21 Jan 2024 13:49:34 +0000 (16:49 +0300)]
Прочитал "Игра головой" Павла Виноградова
http://samlib.ru/w/winogradow_p_w/igra_golovoy.shtml
Короткий рассказ, где повествование идёт от лица комментатора
благородной игры в мяч. Но только во времена майа. Очень весело,
хотя и кроваво дико. Люблю подобный чёрный юмор и нормальное
отношение тех народов к нему.
Sergey Matveev [Fri, 19 Jan 2024 20:25:26 +0000 (23:25 +0300)]
Прочитал "Курс выживания для подростков" Ди Снайдера
https://www.livelib.ru/book/1000318539-kurs-vyzhivaniya-dlya-podrostkov-di-snajder
Отец тут написал о том, что вспомнил как хотел было её мне обязательно
порекомендовать, но мне тогда ещё было всего два года, а потом у него
вылетело из головы.
С один сегодняшний вечер её всю осилил. Сам Ди Снайдер то написал её в
30-летнем возрасте. Я то уже на одну пятую старше.
Хорошая книга! И написана так, как-будто прямо с тобой автор и говорит.
Вот в подростковом возрасте я прям с массой всего не согласился бы или
бы не очень то поверил в книге. Точно такие же заблуждения и мысли как в
книге и были. Сейчас то ничего для себя нового не увидел, не открыл,
разве что подтверждения того, насколько всё же в голове у меня всё по
другому стало устроено и точно по более взрослому.
Собственно, прям вот ни с одной рекомендацией или заявлением не
возникало диссонанса (ну кроме раздела про гомосексуализм, где, пишет,
что 60% парней имели гомопыт... видимо это в США у них так). Прям да --
всё говорит как есть, подправлять нечего. Хотя мой опыт с женщинами
существенно отличался (первый поцелуй только в 20 лет был, а не забыть
свою бывшую я не мог 8 лет), но абсолютно точно к таким же выводам и
мыслям всё равно пришёл.
Название Twisted Sister (плюс их хиты) и имя Снайдера и слышал, но не
более. Не моя музыка. Но Снайдера, хоть он и весь из себя такая
рок-звезда, зауважал, видя и его отношение к сексу и неупотребление ни
курева, ни выпивки, ни наркоты, только дофига кофе (а у меня чая).
Я правда ожидал чего-то гораздо более взрослого, более философских
вопросов и тем, а потом понял, что уж подростку то точно не до них, ибо
голова забита сексом и, действительно, не дай бог свяжется с наркотой
разного рода.
В отличии от Снайдера, я в школе не был никогда изгоем и у нас не
припомню чтобы были деления по группам не общающимся между собой. И
никогда никаких проблем не было с хулиганами какими-нибудь, хоть я и был
тощим дрыщом, да ещё и очкариком -- на меня задираться было бесполезно,
сдачи ещё как мог дать. Да и я всегда заступался за "своих" (если тёрки
между классами или между школами), как и они за меня, если бы чего.
Фингал ровный красивый вокруг глаза, разбитая губа была, но на следующий
день мы, смеясь и похлопывая друг друга, вспоминали все эти наши стычки,
никаких обид или злобы.
Снайдер отмечает, что в его юности (60-е) он мало чего знал о сексе и
его заботами было смазывание бейсбольной перчатки и пополнение коллекции
пластинок. А сейчас (то бишь в 80-е) у подростков проблемы ранней
беременности, наркотики, самоубийства возрастающие в геометрической
прогрессии. Вот и в моей юности: не было Интернета, не было смартфонов
(ну у меня то была FreeBSD и FidoNet, но таких не много встречалось). О
сексе физиология безусловно заставляла думать, но я могу припомнить
только две пары среди трёх старших классов -- вроде бы больше никто ни с
кем не встречался. В лагере (5162408ec89dda8c83b6fa446ff2921abe327264)
вожатые о теме секса не заикались. А от одного знакомого, который всего
на ~3 года помладше, уже слышал что и секс у старшеклассников случался
не редко и, будучи вожатым, они напоминали о важности презервативов
школьникам в лагере (если память не сильно изменяет, то речь была про
7-8 классы).
Пишет, что в свои 30 он ощущает себя подростком всё ещё. Я точно помню
что в 30 говорил что ощущаю себя студентом -- вот как-будто только
совсем недавно закончил институт. Но последние 2-3 года я совершенно
перестал так говорить, ибо видя и общаясь с кучей молодых (10+ лет
разницы) коллег, всё же разница мне становится ощутимой, уже не чувствую
что из одной песочницы с ними. Я реально по своим собственным внутренним
ощущениям чувствую что куда ближе к коллегам 40+.
Sergey Matveev [Fri, 19 Jan 2024 20:22:19 +0000 (23:22 +0300)]
Рассказал про redo, daemontools, UCSPI
Три часа на работе рассказывал с проектором и практической демонстрацией
про redo, недостатки Make, daemontools, UCSPI и вообще DJB-way. Оказалось,
что вовсю уже были проекты (не мои) которые использовали redo. А то я
думал что загорелся так сильно DJB-way-ем только я один.
Sergey Matveev [Thu, 18 Jan 2024 07:58:40 +0000 (10:58 +0300)]
Проблемы Linux с дровами
https://habr.com/ru/news/787162/
Пять суток Торвальдс не имел доступа к Интернету из-за упавшего дерева
на линии электропередач. И поэтому добавить в Git ничего не мог.
Sergey Matveev [Tue, 16 Jan 2024 07:21:21 +0000 (10:21 +0300)]
Работоспособность Рувики
https://habr.com/ru/news/786634/
https://ru.ruwiki.ru/wiki/Cryptoparty
Пишут что вышли из стадии тестирования.
Зашёл первым делом на страницу про криптопати, чтобы понять перенесены
ли данные по всяким мелочам из ru.wikipedia.org. Страница есть, текст
есть, а вот ссылок на внешние ресурсы по сути нет, ибо они все выглядят
как URL до страницы с прикреплённым через # Base64. Внутри него
URL-encoded URL плюс ещё бинарщина какая-то. То есть, чтобы мне куда-то
перейти, то надо вручную вызывать внешнюю программу для декодирования
этого безобразия? Ах да, они ожидают что я буду использовать ПО, которое
автоматически с их серверов каждый раз будет скачивать их программы для
выполнения на моём компьютере, чтобы мне было, видимо, удобнее.
Никаких IPv6 адресов. Да, давайте ещё и MD5 по старинке и по привычке
использовать. Условия лицензирования по CC или GNU FDL хотя бы
сохранены. Вовсю предупреждения что все персональные данные отправляются
на сторонние ресурсы.
При регистрации ссылка на "Согласия о распространении и обработке
персональных данных" не работает, никуда не ведёт мой броузер. Ну и
конечно же при попытке зарегистрироваться мне показывают "возникли
проблемы с отправленными данными", без объяснения деталей.
Как там говорят? Хотели как лучше, получилось как всегда.
Sergey Matveev [Mon, 15 Jan 2024 19:46:22 +0000 (22:46 +0300)]
Красивая графика в играх
https://www.youtube.com/watch?v=RDs-heejPdY
Очень не нравится как говорит автор, но можно смело просто вообще
выключить звук, ибо никакой полезной информации. Я раз в пару лет да
введу в поисковике что-нибудь чтобы мне показали как современные то
дорогущие игрухи могут выглядеть и вау-эффекта не получаю. А тут прям
впечатляюсь тем, что вижу на мониторе (на котором и никаких HDR/WCG
нет). Но нисколько не охота во что либо из этого поиграть.
Sergey Matveev [Mon, 15 Jan 2024 08:46:51 +0000 (11:46 +0300)]
NomadBSD
https://www.youtube.com/watch?v=t51UZTEYnSQ
https://nomadbsd.org/
Из одной рассылки просто увидел ссылку на рассказ про NomadBSD
дистрибутив, основанный на FreeBSD. Видео промотал за 10сек, ибо
неперевариваю подобный способ подачи информации. Но помню своё
знакомство с ним в feaf6a9f904302434e3963f885d5be999049f3d2, где
просто хотелось что-то загружаемое с LiveCD и что могло бы фильмы
показывать через HDMI. Ubuntu и ещё какие-то дистры с этим не
справились.
Вчера публиковал (6df5bfb70dfc25de3344c4a28b307dc6fe4f1807) статью на
Хабре, который конечно же не работает даже с включённым JavaScript в
surf-е. Есть у меня ноутбук на котором установлен для Unreal-а Ubuntu
Ultimate Edition (dd8df75e5426bd556026c16cdb5f46412f299627). В нём
Mozilla Firefox далеко не самый старый. Под ним даже CAPTCHA для входа в
Хабр не работала. Пришлось KNOPPIX запускать, в котором далеко не самый
новый Chromium, но под ним всё заработало. Но статью удалось скопировать
только если использовать "старый" редактор Хабра.
Sergey Matveev [Sun, 14 Jan 2024 09:30:35 +0000 (12:30 +0300)]
Посмотрел Крепкого Орешка 3
https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B5%D0%BF%D0%BA%D0%B8%D0%B9_%D0%BE%D1%80%D0%B5%D1%88%D0%B5%D0%BA_3:_%D0%92%D0%BE%D0%B7%D0%BC%D0%B5%D0%B7%D0%B4%D0%B8%D0%B5
Какой-то из Die Hard-ов я конечно видел, но уже не вспомню какой. А вот
третью часть точно не видел. Два часа постоянного action-а с приличной
массой ржачных моментов. Давно не видел такого прикольного боевичка!
Последние лет десять очень не люблю негров в американских фильмах, чаще
всего просто отказываясь их смотреть (ну от нечего делать иногда же
что-нибудь охота поставить). Ибо задолбали их сувать просто потому что
так надо. Они прям делают всё, что они начали отталкивать. И обязательно
любой негр теперь должен быть хорошим, с узкоглазым другом. Впрочем
новые западные фильмы то я вообще редко стал смотреть, ещё до СВО.
Но среди всех негров актёров невероятно крут для меня Сэмюэл Джексон,
который как-раз вторую главную роль в этом Орешке сыграл. Не даром его
постоянно Тарантино у себя снимал. Читал тут, что в Джанго-освобождённом
некоторые сцены с ним даже вырезали, ибо он и так настолько
отталкивающим и ненавистным делается, что Тарантино не хотел бы чтобы
его и в реальной жизни порвали как тряпку от неприязни.
Регулярно немецкую речь в фильме можно услышать -- любо ухо. Плюс очень
симпатичная деваха у антагониста. Да и сам он не просто классический
такой плохиш с высокими манерами, как в первом Орешке.
Sergey Matveev [Fri, 12 Jan 2024 18:51:10 +0000 (21:51 +0300)]
Splinternet
https://en.wikipedia.org/wiki/Splinternet
https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%BB%D0%BA%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82%D0%B0
Увидел тут недавно новый термин для современного Internet,
который вовсю split-ится уже не первый год, балканизируется.
Sergey Matveev [Thu, 11 Jan 2024 18:20:58 +0000 (21:20 +0300)]
Про Wayland и портирование на него
https://blog.tenstral.net/2024/01/wayland-really-breaks-things-just-for-now.html
Мало чего понимаю во всей этой теме и не очень то представляю как всё
работает, но всё равно интересно почитать. Мнение по поводу X11 vs Wayland
у меня сильного никакого нет. Не ломайте мои программы (пускай через
слой совместимости -- пофиг), пускай графика мне отображается и никаких
проблем. Но чую, что Wayland будет поддерживать только Windows мира Unix
(GNU/Linux то бишь), а драйверов будущего железа для X11 не будет. Хотя
бы чтобы UEFI framebuffer бы работал и тоже никаких проблем.
Sergey Matveev [Thu, 11 Jan 2024 15:03:04 +0000 (18:03 +0300)]
Смена OpenDKIM на go-msgauth/cmd/dkim-milter
https://habr.com/ru/news/785486/
https://datatracker.ietf.org/doc/html/rfc8463
https://github.com/emersion/go-msgauth
Gmail и Yahoo скоро будут в обязательном порядке требовать наличие DKIM,
SPF и DMARC. Это всё у меня уже давно настроено, но решил посмотреть снова
так ли это. Увидел, что ещё в 2018-ом стандартизовали (RFC) ed25519
алгоритм для всего этого DKIM дела. Но OpenDKIM не поддерживает этот
алгоритм.
Нашёлся вот на Go go-msgauth, поддерживающий ed25519, в котором утилиты
и для генерирования ключей и для работы в качестве почтового milter-а.
Без проблем подружился с Postfix, где я просто адрес milter указал на
Unix-сокет. Чтобы сокет был с нужными правами, то проще всего было
запустить его под setuidgid утилитой, сразу же сделав daemontools
службой. И перезапуск сразу будет при падении и ловля логов. Сам milter
и проверять сообщения умеет, вставляя Authentication-Results заголовок
с результатами проверки каждой DKIM подписи. Куда приятнее его
использовать чем OpenDKIM ещё и с отдельным конфигом.
В курсе что ed25519 Gmail проверять не умеет. Но они и TLS сертификаты с
ним не принимают. Идут в жопу. Как внедрять очередную корпоративную
херню ради "блага, experience, приватности и безопасности пользователей
о которых заботимся", то мигом с следующей минорной версии любого их
софта, а как добавить поддержку вменяемых (относительно RSA) алгоритмов,
то тормозят, хотя *25519 куда проще реализовывать чем любые RSA или
ECDSA (и давно реализации на любых языках имеются).
Sergey Matveev [Thu, 11 Jan 2024 12:26:56 +0000 (15:26 +0300)]
schwabrak -- простой issue tracker
http://www.git.stargrave.org/?p=schwabrak.git;a=blob;f=README
https://github.com/driusan/PoormanIssueTracker
Чем заняться после новогодних каникул? Работой. Но для этого надо
завести задачу. А это значит идти в броузер и пользоваться чем-то,
что не будет доступно в offline, что нельзя просто так склонировать
локально. Само собой я всю профессиональную жизнь работал за разными
issue tracker-ами: Trac (моим любимым был, администрировал его),
Redmine, да вот собственно и всё. Где-то был проприетарный закрытый не
работающий без JavaScript YouTrack -- но от него, благо, удалось
держаться подальше. ivi, слышал, переходил на Jira, и там коллега писал
TUI инструменты к нему.
А есть ли чего попроще? Ну чтобы пять минут потратить и иметь простую
штуку, которую хотя бы клонировать локально бы было легко. Trac вроде бы
мог с SQLite3 БД жить например, но... он на Python, что сейчас уже
неприемлемо для меня выглядит. Redmine довольно здоровое полноценный
такой Ruby+СУБД сервер. Против Ruby я меньше против чего имею, хотя я
очень давно с ним и не сталкивался. Но точно помню что поднимать Redmine
это не два клика.
Fossil попробовал -- очень понравилась штука, особенно после того, как я
с Tcl всё же уже поимел знакомства положительного. Один бинарь, один
файл SQLite3 и в нём и issue/bug tracker полностью имеется, работающий
без JavaScript. Но Tcl запросто будет других отталкивать так же, как
меня Python.
А можно ли ещё как попроще? Что такое issue/bug tracker? По сути же это
просто какие-то текстовые задачки, к которым нехитрая метаинформация
прикрепляется, где ещё можно зачастую добавлять комментарии с файлами.
Не, ещё 100500 других фич можно понапридумывать конечно же, ибо даже в
Fossil имеется ещё и кроме встроенной Wiki -- чат, что уж точно
совершенное излишество опциональное.
Одной из крайностей issue tracker-а является просто текстовый файл, куда
записываются все задачи и их состояния. Его можно/нужно коммитить в DVCS
и вот появляется возможность простого удобного клонирования и
возможности обновления в offline-е асинхронно. Но автоматизировать
какие-либо действия с ним уже проблематично. Ибо уже нужно делать его
машиночитаемым, превращать в более строгий формат. Как-то на работе
начальник пробовал использовать Org-mode закоммиченный файл, но только
он, с Emacs-ом, мог с ним работать как-то более сложно, чем просто
смотреть и редактировать.
Можно вообще было бы коммитить SQL-dump базы данных со всеми этими
задачами. SQL же в общем-то никто не запрещает использовать без
дополнительного инструментария. SELECT-ить задачи по статусу, датам и
всё такое прочее. Но выглядит не то чтобы очень уж удобно.
А что если один файл с кучей pure-plain-text-only задач разбить на
поддиректории (по директории на задачу?), внутри которых будут текстовые
файлы? По сути у каждой задачи, есть как минимум два поля на практике:
описание и итог/решение/чем закончилась задача. Плюс метаинформация в
виде enumeration значений: по сути просто прикреплённые чётко заданные
метки/тэги. Туда же можно приложить и любые дополнительные файлы, хоть
бинарные. А если это всё положить в Git, то автоматом появляется история
всех изменений связанных с задачей, просто делая "git log -p dir". Там
же можно точно так же хранить комментарии, где вместе с коммитом
автоматом будет добавляться метаинформация кто и когда его добавил.
В suckless рассылке когда-то было обсуждение suckless трэкеров, но кроме
просто текстового файла для очень простых случаев (у меня тоже в каждом
личном проекте по TODO файлу лежит, как правило не добавленному в
репозиторий), они так ни до чего и не дошли. Многим нравилась идея
взаимодействия с bug трэкером через почту, где номер баги в теме письма
идентифицирует задачу, а дальше все сообщения для баги просто хранятся в
одном mbox/maildir файле. Так устроена работа в Debian. mbox-ы можно
скачать и локально, просто натравив MUA, смотреть всё общение в рамках
задачи. Но для этого нужен вменяемый MUA, плюс это не то чтобы легко
автоматизировать можно (работать из командной строки с MIME сообщениями
то ещё удовольствие) и оно всё же именно про bug tracking, когда
анонимные люди могут взаимодействовать, а не чётко заданные разработчики
у которых есть взаимосвязи между задачами, сроки, всякие там возможно
строящиеся диаграммы Ганта и тому подобное. Всё же bug tracker и issue
tracker ощутимо отличаются. И для bug tracker я бы тоже наверное смотрел
в сторону почтовых сообщений и каких-то hook-ов на стороне принимающего
сервера. Возможно debbugs вполне себе не так сложен для администрирования.
Но это всё для bug tracking, а для issue tracking излишне.
Git выглядит как сразу готовая распределённая СУБД где "git log -p"
покажет всю историю изменений связанную с задачей. После всего этого я
нашёл PoormanIssueTracker предложение, даже с презентацией онного на
какой-то конференции. Где все идеи полностью схожи и с тем до чего я
дошёл.
Ну а для упрощения работы с этой простой иерархией задач написал
несколько zsh-скриптов (почему zsh? потому что в нём проще работать не
заботясь об экранировании и подобных штуках, хотелось по быстрому
написать что-то работающее) в schwabrak репозитории. Попытаюсь
поработать в таком духе. Никаких там генераторов отчётов, сводных таблиц
или чего-то подобного -- когда понадобятся, то за пару часов можно всё
что угодно будет написать. Если же zsh нет, то всё настолько тривиально,
что можно и просто руками возиться с файлами. Ведь всё это по сути
просто договорённость об именовании нескольких файлов и директорий,
ничего более. Но зато с этим куда проще проводить автоматизацию и вообще
машинно обрабатывать всё. Всё описано в README.
В отличии от PoormanIssueTracker у меня есть "поддержка" иерархических
проектов, а не просто одного большого списка задач. Конечно, название
проекта может просто входить в часть названия. У меня это часть
поддиректории. Задачи могут зависеть от других. Всякие статусы,
приоритеты, assignment-ы и подобное -- считаю что просто может являться
частью enumeration-ов, которые можно сгруппировать по части названия
("status:open", "status:done", "severity:high", "assigned:stargrave"
(всё равно список людей на которые можно повесить задачу -- относительно
небольшое множество), и т.д.). Комментарии добавляются коммитом меняющим
"comment" файл, поэтому их все можно проглядеть просто сделав "git log"
на него, увидев и даты, и авторов, и добавленные/изменённые связанные
файлы. В ivi например всё рецензирование кода делалось через комментарии
к задаче, никаких отдельных Gerrit или Phabricator. Пробовали, но не
понравилось. С Gerrit я дело имел годами, и так и остался при своём
мнении что не нужен он, комментарии с рецензированием кода более чем
достаточны. Так же как и Gitlab. Просто надо иметь утилиту для удобного
комментирования кода (как я когда-то написал CodeComm и GerrVim). Так
что и тема с рецензированием/review тоже закрывается.
Откуда такое имя? Искал как будет по немецки bug, жук, таракан
(Schwabe). Добавлял "trac", "trak". В итоге и вышел этот "швабрак",
где ещё и "швабра" и "брак".
Sergey Matveev [Wed, 10 Jan 2024 14:23:39 +0000 (17:23 +0300)]
Урок про кирпичики криптографии в Дмитрове
В прошлом посте упомянул, что были люди обзывающие Base64 шифрованием. А
было это ещё в 2013-2014-ом, где я с одним знакомым провели факультативные
уроки по теме криптографии десятитиклассникам в одной школе Дмитрова.
Знакомый больше рассказывал про некоторый инструментарий криптографический,
упоминал про засветившихся тогда Сноуденов и Ассанжов. А я про кирпичики
криптографии рассказывал, написал на Python программку визуализирующую
колоду игральных карт на каждой итерации алгоритма Пасьянс
(http://www.cypherpunks.ru/Solitaire.html), чтобы было видно как всё
перемешивается несложным образом даже без ЭВМ. Показывали как выглядит
письмо в Gmail web-интерфейсе зашифрованное при помощи GnuPG, где
как-раз сплошной Base64 и виден.
Для учеников это всё было во внеурочное время и на добровольной основе.
Абсолютно никто из девочек не оставался -- только пацаны были
заинтересованы. И как вот относится к женщинам на равных после этого,
если оно и сами вовсю демонстрируют что совершенно не на равных смотрят
на мир и имеют другие интересы?
И очень запомнилось то, что уже тогда (10+ лет назад!) из 20+ человек
только ровно у одного вообще был email адрес как таковой. Смартфонами
люди уже вовсю пользовались, но ни у кого из учеников не было почтового
ящика (хотя на следующий год им уже в институт отправляться). Всё
общение только через ВКонтакте. Только у этого одного парня с email-ом
был ещё и Facebook. Этот факт был удивителен не только мне.
Sergey Matveev [Wed, 10 Jan 2024 14:03:04 +0000 (17:03 +0300)]
MD5 до сих пор используется у юристов
https://habr.com/ru/companies/ruvds/articles/785444/
https://web.archive.org/web/20081208024210/https://www.forensicmag.com/articles.asp?pid=238
Да что там юристы... даже на работе иногда от кого-нибудь можно в
разговоре услышать "сравни там например md5". Если когда-то, когда
MD5 уже был поломан, но ещё не было BLAKE2/BLAKE3, то его ещё всё
равно применяли из-за скорости, то сейчас то уж давным давно есть
куда более быстрые и безопасные криптографические хэши. Почему до
сих пор в головах людей всё ещё остаётся сам факт памяти об MD5?
Ни в Git, ни в BitTorrent его нет. Просто упоминаний о нём сложно
найти в современном ПО, а в головах людей всё ещё имеется.
Но в статье, а точнее у этих юристов, я совершенно не понимаю фразы:
да, MD5 поломан в случае шифрования
Какого ещё шифрования? MD5 вообще никоим образом к шифрованию не
относится. В статье Льюиса аналогичный бред из диалога:
There are multiple uses for hash algorithms. One is cryptography
(encryption), another is identification, and another is
authentication.
Я думал что юристы это люди очень придирчивые к терминам и чёткости их
применения. А тут непонятным образом мешаются и authentication и
encryption и cryptography. Вообще не могу понять что у них там в головах
о хэшах. Пугает что по сути они и не используют криптографические
хэш-функции.
Помню что на допросе в ОБЭП (c59c0cb1a2c232978e75e2e81c519dd975e8f6ea) я
употребил "шифрование" и меня сразу спросили что я имею в виду под этим.
"Обеспечение конфиденциальности передаваемых данных" -- "ok, теперь
понятно". Видимо кардинально разное подразумевают под "шифрованием" люди.
Кто прячется по подвалам -- тоже шифруется. И Base64-кодирование обзывали
шифрованием.
Sergey Matveev [Tue, 9 Jan 2024 05:20:33 +0000 (08:20 +0300)]
Прошедшие каникулы
За полторы недели новогодних праздников я в Vim не открыл не только ни
одного файла с исходным кодом, но даже ни одного конфигурационного.
Только заметки, .texi домашней страницы, .rec с URL закладками и
множество почтовых сообщений. О работе вообще не думал. Давно я так не
отвлекался на такое время. Концерты, встречи с друзьями и родственниками,
настольные и компьютерные игры, книги и музыка. Вчера даже фильм умудрился
посмотреть: расширенную версию "Омерзительной восьмёрки", где несколько
сцен добавлено.
Sergey Matveev [Mon, 8 Jan 2024 19:16:27 +0000 (22:16 +0300)]
Прочитал журнал Ornament о Квентине Тарантино
Подарили такой movie mag на Новый Год. Масса историй и любопытных фактах
как о самом Тарантино, так и, конечно же, о всех его фильмах. Крайне
любопытно почитать. Я то ведь точно его поклонником являюсь, хоть и не
каждого фильма.