]> Sergey Matveev's repositories - stargrave-blog.git/log
stargrave-blog.git
16 hours agoDrum check russian
Sergey Matveev [Tue, 7 May 2024 15:47:40 +0000 (18:47 +0300)]
Drum check

https://www.youtube.com/watch?v=zbPSR7rAdxI
https://www.youtube.com/watch?v=iiWAS8cu2S0
https://www.last.fm/music/Ahumado+Granujo/_/Sandokal
У Morbid Angel на одном из альбомов есть забавный drum check.
А у Ahumado Granujo, с которыми я раньше познакомился, кавер
на него, на альбоме "Splatter Tekk" в трэке Sandokal.

16 hours agoПро TunnelVision жгут
Sergey Matveev [Tue, 7 May 2024 12:13:22 +0000 (15:13 +0300)]
Про TunnelVision жгут

https://www.securitylab.ru/news/548033.php
https://www.opennet.ru/opennews/art.shtml?num=61130
https://dxdt.ru/2024/05/07/13000/
https://habr.com/ru/news/812867/
https://www.schneier.com/blog/archives/2024/05/new-attack-on-vpns.html
Полдня в ленте новостей попадаются заголовки об "атаке" TunnelVision.
И вот на одном ресурсе вообще написали "ни один VPN-сервис больше не
является безопасным". Обычно подобным коверканьем смысла занимаются
журналисты, но теперь, видимо, и писаки на сайтах.

Хорошо всё объяснено на dxdt.ru сайте.
* это и не атака, не уязвимость, а штатная функция DHCP
* к VPN, как таковым, оно вообще отношения не имеет
Но нет, напишут же что все "VPN-сервисы более не безопасны".

23 hours agoHDR в X.org
Sergey Matveev [Tue, 7 May 2024 08:39:49 +0000 (11:39 +0300)]
HDR в X.org

https://wiki.archlinux.org/title/HDR_monitor_support
Мой новый монитор (447cdfbb145f6597c7df2be1bec8d15a5d36237c) умеет 10bpc
и HDR (+WCG?). HDR, правда, по сути то не настоящий, ибо яркость монитора
всё равно только 300nit. Как, собственно, и поддержка цветов тоже не
настоящие 10бит, а 8bit+FRC. Но это всё мне и не надо.

X.org достаточно запустить с startx -depth 30, чтобы он начал
использовать 10bpc (судя по /var/log/Xorg. mpv, терминал работают без
проблем. А вот Links в графическом режиме -- говорит что не нашёл
supported depths. Действительно, в исходном коде обрабатываются только
вплоть до 24-бит глубины. OpenArena в segfault падает.

А HDR в X.org вообще не планируется добавлять. Даже в Wayland это всё
ещё work-in-progress. А работает ли WCG (когда вне sRGB диапазона надо)
в нём в принципе -- не понял.

2 days agoСанта-Барбара в NixOS
Sergey Matveev [Sun, 5 May 2024 22:03:30 +0000 (01:03 +0300)]
Санта-Барбара в NixOS

https://www.opennet.ru/opennews/art.shtml?num=61122
https://save-nix-together.org/
Судя по тексту, всё началось с того, что спонсором на одной из
конференций была компания выполняющая военные заказы. И лидер проекта,
ничего плохого не увидел в этом. Как бы компьютеры, Интернет, да и чуть
ли не всё на свете -- всегда для военных целей рассматривалось. Но куча
не очень мне понятных людей из NixOS-а воспротивились этому и начали
бухтеть. Короче, судя по беглому чтению, нормальный был мужик, но
понабежали всякие @#$% и всё давай поганить. Не удивительно что среди
моих знакомых почти никого не осталось на Nix-е, ибо задрало его
постоянная эволюция ради эволюции, с поломкой обратной совместимости.
В одном комментарии увидел верное замечание: сначала в современных
программерских проектах пишут code of conduct, а уж только потом код.

2 days agoКоротко о разработке ПО сейчас
Sergey Matveev [Sun, 5 May 2024 17:28:05 +0000 (20:28 +0300)]
Коротко о разработке ПО сейчас

https://dc09.ru/posts/fff/
Как разрабатывается ПО, на примере создания полочки для специй?
Понравилась аналогия и статья. Было бы даже забавно, коли не было бы так
грустно от правды. Недавно знакомый проходил курс по Go и их там, в
простой задаче, очень и очень натаскивали и хотели чтобы всё было
обмазано ООП вот прям по сути как в этой статье. На Go. ООП. На пустом
месте, чтобы было. Прям вот учат насильно этому. Ну это, фабрики строить.

3 days agoПрекращаю использовать DuckDuckGo
Sergey Matveev [Sun, 5 May 2024 07:16:42 +0000 (10:16 +0300)]
Прекращаю использовать DuckDuckGo

С поисковиками огромная беда и проблема: их считанные единицы. А то что
есть: зачастую не работает без загрузки проприетарного ПО. Яндекс давно
не работает без JS и cookie. Google когда как, но на него я уже годами
не захожу, ибо почти всегда он хочет CAPTCHA. Rambler.ru -- не ищет даже
банальные запросы (то бишь, не выдаёт никаких результатов), связанные с
моими сайтами. Как и Bing. Когда-то работал StartPage.com -- теперь
говорит, что я робот и иду нафиг. Yahoo просто ничего не отдаёт: HTTP
запрос при отправке формы поиска умирает по timeout.

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

YaCy на практике (5557435836a7e048e91493f44b00dcad7f748583) никогда не
работали у меня. Возможно из-за свободной реализации JVM или сочетания с
ОС, но годами я время от времени, с разными версиями софта, пытался их
использовать (безусловно понимая, что это не может быть полноценной
заменой централизованных поисковиков гигантов), но через несколько дней,
после забивания определённого места на диске, оно так тормозит, что
просто не юзабельно. Слышал и видел Searx проект. Опять же, локально,
уже не помню почему, но не выходило запустить подобное.

Но тут увидел поиск от Brave. Могу только с DDG сравнить: есть IPv6
адреса, несколько серверов, никакой политики в выдаче. Всё, само собой,
работает под Lynx без проблем. Так что пока на нём. К сожалению, службы
типа каталогов в мире не прижились.

3 days agoTk и HiDPI
Sergey Matveev [Sat, 4 May 2024 16:41:08 +0000 (19:41 +0300)]
Tk и HiDPI

Современный Tk из коробки так себе выглядит на HiDPI -- всё маленькое.
Есть команда "tk scaling", но она не применяется к шрифтам. Не шибко
разбирался как всё лучше организовать, но пока добавил такое в ~/.wishrc:

    font create myDefaultFont -family Go -size 14
    option add *font myDefaultFont
    tk scaling [expr {163 / 72.0}]
    tk_setPalette grey

и использую тот факт, что wish интерпретатор его считывает, если
исходный код подаётся через stdin. У меня Tk приложение по сути то
только одно: tofuproxy, который как-раз вызывает wish с передачей кода
через stdin.

3 days agoОбновил монитор. Теперь HiDPI
Sergey Matveev [Sat, 4 May 2024 14:24:18 +0000 (17:24 +0300)]
Обновил монитор. Теперь HiDPI

https://wiki.archlinux.org/title/HiDPI
На моём прошлом мониторе, дешёвом AOC 27" FullHD, по середине уже стала
появляться полоска выцветшая. Прямо в том месте, где разделительная
яркая белая линия в Vim между окнами проходит. Прям выгорело и намекает
на то, как много я нахожусь в Vim.

Я уже прежде пробовал на работе 4K (d154bb0f1f7d36997a293728311427d549ed7e66)
мониторы. Точнее тут важна речь не про разрешение, а про DPI, точнее HiDPI.
И, действительно, текст реально лучше и приятнее выглядит. Да, во всех этих
наших "линуксах" куча геморроя с DPI≠96 и, судя по Arch Wiki, чуть ли не
для каждого GUI toolkit/framework/DE нужно собственные настройки для
всего этого дела задавать. И там например нет ни слова про Links2, в котором
свой движок рендеринга.

Но так как я всё же почти все время провожу в консоли, то о HiDPI я
подумывал. Ну и взял Samsung S27A800NMI монитор. Хотел бы я 24", но
вообще нигде нет, и толком не выпускают. Этот же 26.9", почти 27".

4 days agoЖизнь BBS сисопа
Sergey Matveev [Sat, 4 May 2024 08:04:47 +0000 (11:04 +0300)]
Жизнь BBS сисопа

https://arstechnica.com/information-technology/2022/12/my-secret-life-as-an-11-year-old-bbs-sysop/
Немножко снимков экрана есть обо всей этой теме, и рассказ какого это
всё было. У меня тоже был распечатанный в ASCII табличке листочек со
списком московских BBS-ок, где я делал пометки об особенностях работы
и всяком подобном. Но с появлением FidoNet-а, на BBS-ки перестал ходить.

4 days agoGoVPN.info домен скоро протухнет
Sergey Matveev [Fri, 3 May 2024 08:49:31 +0000 (11:49 +0300)]
GoVPN.info домен скоро протухнет

Я давно официально забросил GoVPN проект, но домен всё продолжал
оплачивать. Через пару недель он протухнет. Копия сайта есть на
http://www.govpn.cypherpunks.ru/ теперь. Не вижу смысла платить
за него, ибо нет планов возрождать.

5 days agoОбновил уличные наушники
Sergey Matveev [Thu, 2 May 2024 14:06:21 +0000 (17:06 +0300)]
Обновил уличные наушники

Уже говорил (c2f2a088cd088b7d290de4fb40921897c74e8d7e), что я не хочу в
ухо вставлять что-то глубоко -- я хочу вкладыш! А их ничерта нету. Ну
точнее надо поискать. Вот уже вторые за 100₽ износились -- прям провод
ломается, одно ухо перед этим тоже перестаёт почти что-либо воспроизводить.
И сломались они как-раз, когда я ехал в Глобус, слушал аудиокнигу. Нашёл
в нём не вкладыши, но и без резиновых уплотнителей. Выглядят почти как и
все остальные внутриканальные, но всё же просто пластик такой формы и
глубоко не вставляются. Рискнул и взял.

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

5 days agoОбновил аккумулятор во втором ИБП
Sergey Matveev [Thu, 2 May 2024 14:04:40 +0000 (17:04 +0300)]
Обновил аккумулятор во втором ИБП

2+ месяца назад менял уже (26ce9b18e282ced0e15a4eb02348b99ffd659828),
а теперь руки дошли до второго ИБП.

6 days agoПользователей Tor из РФ вдвое меньше
Sergey Matveev [Thu, 2 May 2024 08:24:43 +0000 (11:24 +0300)]
Пользователей Tor из РФ вдвое меньше

https://habr.com/ru/news/811687/
Пишут что "активная аудитория" понауехала и много кто переместился в
Telegram. Первое -- ну понятно, ибо всякие сепаратисты и враги страны.
Второе -- да потому что на всю эту анонимность плевать там многие хотели,
и вся риторика всего проекта о свободе слова, безопасности журналистов и
всему подобному, чушь собачья, используемая для прикрытия.

7 days agoНастройка маршрутизатора требует Интернет
Sergey Matveev [Tue, 30 Apr 2024 19:01:54 +0000 (22:01 +0300)]
Настройка маршрутизатора требует Интернет

https://brainbaking.com/post/2024/04/isp-router-design-mistakes/
В Бельгии провайдеры настолько суровы, что в их маршрутизаторах для
дома, нет возможности локальной настройки. Надо через Интернет зайти на
какой-то их сайт, чтобы через него отослать настройки маршрутизатору. Я
конечно слышал о лютом маразме, но компании не перестают удивлять.

9 days agoГде здесь кнопки?
Sergey Matveev [Sun, 28 Apr 2024 18:19:20 +0000 (21:19 +0300)]
Где здесь кнопки?

https://grumpy.website/media/2024/1522.jpeg
Со стороны вижу как современные web/mobile приложения выглядят и поэтому
я отвратительно отношусь ко всему что касается современных UI. Я не
встречал хороших примеров. Если кто-то считает что оно просто стало
другим: нет, не соглашусь, оно стало неюзабельным дерьмом. Просто
неуважение к самому себе подобное пытаться использовать.

9 days agoМоя должность на работе
Sergey Matveev [Sun, 28 Apr 2024 09:47:36 +0000 (12:47 +0300)]
Моя должность на работе

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

Нас заранее предупреждали о том, что расписание будет изменено. Я
смотрел (просто по случайным ссылкам в поисковике) а какие вообще
бывают должности, чем отличается senior/middle/junior программист
(ибо уж частенько употребляют эти термины) и что ещё вообще бывает.
И это какая-то жесть: везде чуть ли не противоречащая информация
попадается. Или отсутствие деталей. Или... или я вообще толком не
понимаю кем я являюсь.

На днях меня и спросили как я бы хотел чтобы меня обзывали в "штатке". Я
честно ответил что не знаю. "Разнорабочий" -- самое точное слово :-).

Меня смущает то, что я встречал не раз людей которые обзывают себя
громкими словами и в резюме пишут "и senior, и team lead и architect
могу быть", но зная этих людей я понимаю что они на задачи junior-а то
еле годятся, слабо представляя как происходит разработка ПО в целом.

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

Я видел über-программистов, но которые не могут спланировать задачи,
разбить "бизнес"-задачу на части, спроектировать архитектуру, вести
кроме кода и документацию, и тесты, и CI, и отчёты и всё подобное что
сопутствует разработке. Но программировать они умеют здорово. Я же
считаю, что я не только программить умею. И вот если в должностях моя
будет одинакова с ихними -- ну как-то обидно типа что ли.

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

Блин, да куча людей, как оказалось, даже не представляют как вообще
вести командную разработку надо. Куча людей даже не задумывается о том,
чтобы использовать issue tracker. Их коммиты максимально не атомарны и
хаотичны -- делая их просто некими ZFS snapshot-ами рабочей директории.
Хотя код они могут написать, спору нет. Коллега заметил что многие эти
умения или хотя бы понимания зачем это всё нужно -- даются если бы
человек занимался также и участием в разработке свободного ПО. Сильно
согласен с этим, чем дальше, тем больше убеждаюсь.

Мне с ходу предложили например прописать "ведущий системный программист".
Я пошёл искать что же означает "системный программист", ибо мне казалось
это всё же сильнее упор на ОС, на связь с железом. Где-то (случайные
статьи из поисковика) я встречал определения где даже ОС не упоминается,
а просто типа детальные знания каких-нибудь ФС, как устроено то или сё.
Где-то только про ОС. Что считать общесистемным ПО? Компилятор, отладчик?
Похоже что да. Они не для конкретной прикладной задачи, но без них
прикладные не выполнишь. Но почему я не могу придумать чёткого ответа
чем же тут текстовый редактор не будет является общесистемным ПО? Типа
выхлоп редактора уже может быть законченной задачей, а выхлоп
компилятора или возможность запуска программы под ОС -- сами по себе не
несут конечной прикладной пользы? BASS package manager может ли
называться общесистемным ПО? По сути, насколько понимаю -- да. Ведь сам
по себе он только помогает прикладное собрать/установить. Или redo? Если
так, то системные вещи я типа пишу. В сетях как-то разбираюсь, про ФС
детали глубже многих тоже. Но например на ассемблере никогда не писал
ничего. Приходилось читать ассемблерный выхлоп, но не более.

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

Эх, сложно что-то со всем этим. И я не вижу чёткого flat списка
возможных "choice"-ов из чего выбирать. С одной стороны упоминаются
"junior" и "senior", с другой стороны слова типа "ведущий" -- я даже не
понимаю можно ли map-ить друг на друга или это два разных мира точек
зрения? Понапридумывают... попробуй разберись что вообще бывает. Ещё же
есть "архитектор", "эксперт", какие-то там аналитики...

9 days agoШатание Интернета по вечерам
Sergey Matveev [Sun, 28 Apr 2024 09:40:30 +0000 (12:40 +0300)]
Шатание Интернета по вечерам

Последние недели, прям как по расписанию, Интернет начинает работать
существенно хуже. Ну то есть потери пакетов, большие задержки, и т.д..
В c1e4bf6cc029ad338577718afcc9cd671ab70258 я упоминал про такое
"шатание", но тут как по расписанию. Со времён ivi я знаю что люди
приходят с работы и начинают смотреть всякое -- нагрузка на каналы круто
возрастает. Собственно, все графики трафика это и показывают всегда. И
вот любопытно: это из-за перебитых кабелей хуситами куча трафика начала
идти через нас (где-то читал об этом факте и о том, что РФ это как бы на
руку даже оказалось) и запаса прочности для вечеров уже не хватает. Или
это ТСПУ какие понаставили и они являются бутылочным горлышком.
Ухудшение связи не только у меня, но и у коллег наблюдается.

10 days agoМиллионы пакетов через VoRS
Sergey Matveev [Sun, 28 Apr 2024 08:33:58 +0000 (11:33 +0300)]
Миллионы пакетов через VoRS

Мой VoIP клиент/сервер (4a521b9d638a8d23487ff6c36ac3be97c8c464b3,
48584050c661df42c76a1026b3aebe16da078b52,
2cccf7ddd72756431263b6c3e96dfd710f2931ee) уже десятки часов успешно
проработал. С момента его создания чуть ли не каждый день проводили
сессии парного программирования/администрирования, и это чуть ли не на
целый день. У меня FreeBSD клиент, сервер VoRS на FreeBSD VPS-ке поднят,
у коллег Ubuntu. Всё работало замечательно. И за одну сессию по
полмиллиона пакетов от меня проходило.

Я беспокоился за то, что Opus же ведь stateful кодек, а у нас бывали
большие потери пакетов. Вот недавно аж по несколько сотен за минуту --
кто-то сильно Интернет шатал. И я думал что мало ли, может там какие
ошибки будут накапливаться или ещё чего подобное или там отсутствие echo
cancellation или вообще хоть какой-либо обработки аудио будет мешать. Но
нет, всё без нареканий с нашей стороны.

В его v2 версии я заменил Poly1305, который и так уже был урезан до
64-бит, на SipHash24. Последний всё же является криптографически сильным
MAC-ом, поэтому на безопасность это не должно негативно влиять. SipHash
заточен под аутентификацию коротких сообщений, которыми 20мс Opus кадры
и являются. И SipHash24 быстрее более чем на порядок, ведь ключ для
Poly1305 генерируется из 512-бит (размер блока ChaCha20, где 256-бит
к тому же отбрасываются за ненадобностью) выхлопа ChaCha20, чтобы после
этого ещё один 512-бит блок сгенерировать уже для шифрования. Дороговато
выглядит.

10 days agoBASS будет свободным
Sergey Matveev [Sun, 28 Apr 2024 08:21:17 +0000 (11:21 +0300)]
BASS будет свободным

В 7e1dbd0539c7ea5c6bd5e8831abeea4796da693e,
3a1f5e5f8e1280737b635fd50e3a30e501963a7f,
d0d24e9b8d061de7f630ef5bf0de3a6bec29fb2b,
89b5da9451fd2295ad59b2d5a75061c11ad2583a я упоминал что написал систему
сборки пакетов и пакетный менеджер. Изначально вообще-то делался CI, но
для него вот проще было написать и свои пакеты. Так вот начальство
одобрило его публикацию как свободное ПО, чему я очень рад, ибо были
сомнения.

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

Но BASS уже вовсю начал использоваться как пакетный менеджер (десятки
пакетов с зависимостями), через который разворачивается одна система.
Для поднятия десятков демонов используются отдельные XXX-service пакеты,
в которых подготовленные daemontools'es supervise run-файлы. То есть
сама программа и её запускался -- независимы, что очень удобно и гибко.

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

Изначально почти всё на Z shell было, а дальше то тут, то там чуть его
повыпиливал и от него ничего и не осталось.

10 days agoGroup в slog
Sergey Matveev [Sun, 28 Apr 2024 08:13:36 +0000 (11:13 +0300)]
Group в slog

Недавно начал активно использовать log/slog.Group в программах. Очень
клёво с ним выходит создавать иерархичные логи. Например есть какой-то
handshake, внутри которого нужно бы и ключи с сертификатами распечатать,
и показать каждый шаг каждого шифрования (входные данные, результат) и
всяких там HKDF и прочего. Нижестоящие функи могут возвращать или список
slog.Attr или slog.Attr созданный через Group, а дальше эти кусочки
логов можно подставлять в другие Attr. Если для простоты по умолчанию
использовать родной JSON handler, то выплёвывается очень детальная и
машиночитаемая JSON-ина. Минимум телодвижений, зато какой
детализированный и удобный результат.

10 days agoДЦ Яндекса к Мянтсяля
Sergey Matveev [Sun, 28 Apr 2024 08:06:10 +0000 (11:06 +0300)]
ДЦ Яндекса к Мянтсяля

https://www.dp.ru/a/2024/02/05/data-centr-jandeksa-v-finljandii
https://www.youtube.com/watch?v=-hE8jkyfqMw
После поддержки нациков всякими западными странами, видел новость о том,
что ДЦ отключили от электричества. А дальше в новостях не встречал что с
ним после то происходило. Так как он отапливал на 70% близлежащий город,
то подключили снова, насколько вижу.

В видео от Яндекса очень хвалятся эффективностью его охлаждения, которое
сложно делать и только Amazon, Facebook и Microsoft в мире подобным ещё
занимаются. Именно вентиляцию/охлаждение мой отец разрабатывал для них,
как и для нескольких других их ДЦ.

2 weeks agoПро Гагарина из энциклопедии в США
Sergey Matveev [Tue, 23 Apr 2024 20:02:23 +0000 (23:02 +0300)]
Про Гагарина из энциклопедии в США

Советский тоталитарный режим запустил в 1961 году в космос смертника,
которому однако, удалось вернуться назад живым. Ракета была сделана на
основе немецких разработок Вернера фон Брауна, отца американской лунной
программы.

2 weeks agoEd25519 сертификаты и macOS
Sergey Matveev [Mon, 22 Apr 2024 07:04:49 +0000 (10:04 +0300)]
Ed25519 сертификаты и macOS

https://stackoverflow.com/questions/77717713/how-to-import-ed25519-root-ca-into-keychain-access-macos
Снова из-за VoRS (2cccf7ddd72756431263b6c3e96dfd710f2931ee) мне написали
что мои ed25519 X.509 сертификаты не добавляются в macOS хранилище. Типа
не поддерживаемый формат. Ну так а что они хотели то, ведь проприетарная
ОС, разработчик которой уже как-то засветился на применении Dual_EC_DRBG.
ed25519 алгоритм не требует наличия хорошего PRNG, в отличии от ECDSA.
Если PRNG будет поломан, с backdoor-ом, то ECDSA ключ можно будет "слить".
А с ed25519 такого не выйдет. Поэтому и не включают его поддержку.

2 weeks agoОтносительный URL в Gemini
Sergey Matveev [Sun, 21 Apr 2024 13:13:59 +0000 (16:13 +0300)]
Относительный URL в Gemini

Спецификация Gemini говорит:

    URL may be absolute or relative. If relative, it should be resolved
    against the URL used in the original request.

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

Я в Gemini редко бываю, но бывает посещаю время от времени их ресурсы.
Заметил, что у некоторых относительные ссылки не работают. Текущий URL
"host.name/foo", относительная ссылка "bar/baz", и они ожидают
"host.name/bar/baz", а не "host.name/foo/bar/baz".

Решил выяснить кто же всё таки прав, хоть спецификация и не читается
двояко. Так вот первый (reference) клиент для Gemini был написан на
Python. И в нём используется urljoin (dcd9193595c262f96f29e4984ca0304106634fbc),
который вот так вот коряво объединяет ссылки. То есть, некоторые
gem-сайты ожидают bug-compatible поведения как у дурацкого Python
клиента, хоть это и не по спецификации, которую сам же автор клиента и
написал.

2 weeks agoVoRS под macOS
Sergey Matveev [Fri, 19 Apr 2024 18:04:52 +0000 (21:04 +0300)]
VoRS под macOS

https://news.ycombinator.com/item?id=40083641
https://forum.crystal-lang.org/t/cannot-compile-statically-ld-library-not-found-for-lcrt0-o/4070
https://developer.apple.com/library/archive/qa/qa1118/_index.html
Опубликовал новость о VoRS на Hacker News. Многие пишут что с
совместимостью между разными броузерами у WebRTC нету сейчас проблем.
Ну... может быть, но пару лет назад сам воочию видел. Да и это не
отменяет что современный броузер для задачи VoIP это безумием всё равно
остаётся.

Даже если забыть про броузеры и поглядеть в сторону Pion, где на чистом
Go реализован весь его стэк -- это не отменяет колоссальную монструозность
всей этой экосистемы, заточенной под пробивание и работы за NAT-ом.

Некоторые хотят клиента вообще без TUI. Ну да, надо бы сделать подобный
режим. Оказывается, есть какой-то не-QT Murmur сервер для Mumble.
Здорово. Не знал о нём прежде. А то тащить Qt ради GUI-less сервера...
так себе охота.

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

2 weeks agoOpenBSD по-умолчанию начинает использовать pax формат
Sergey Matveev [Wed, 17 Apr 2024 08:57:09 +0000 (11:57 +0300)]
OpenBSD по-умолчанию начинает использовать pax формат

https://www.opennet.ru/opennews/art.shtml?num=61011
Давно пора! Впрочем мне то нравится поведение libarchive по-умолчанию:
если можно обойтись ustar-ом, то используется он, в противном случае pax.
d5670fc7a83b5161ebbb4f7b9cdaf34f3edf3a94
a3f2621a4986184923161e2e1c65778f61a98086
3292f9367343832b03ecc52e17437333d136cab6
b4b36a45ec721be274a4b6c0f9f243d5672f3a48
c13068dff5ce5219180a26327a0e0a8bafa20f6f
63d54cebf28a23d793e211edd65aed6a1eded1cb

3 weeks agoСходил на оперу "Риголетто"
Sergey Matveev [Mon, 15 Apr 2024 08:04:00 +0000 (11:04 +0300)]
Сходил на оперу "Риголетто"

https://ru.wikipedia.org/wiki/%D0%A0%D0%B8%D0%B3%D0%BE%D0%BB%D0%B5%D1%82%D1%82%D0%BE
Вместе с мамой, которая на нём уже была. Ей было интересно насколько мне
зайдёт не Вагнеровская опера. Очень понравилось! Точно уяснил что мне не
только из-за немецкого Вагнеровские нравились. На "Аиде"
(411cc4cd20be6c375c0cbb101330d1aa2fd7fae8) я вообще не разбирал границы
слов: речь просто лилась и лилась, где толком даже не понимал на каком
языке пелось. Тут же: каждое слово я чётко слышу. Итальянский я хоть и
не знаю, но чётко слышу что это именно на нём поётся, со всеми границами
между слов. Так что это именно в Геликон-опере, даже на отличных, почти
самых дорогих местах, это было всё так себе (по сравнению с тем, что мы
слышим в Новой Опере).

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

В общем, здоровская опера! И без немецкого языка тоже крута.

3 weeks agoНа чём играет современная молодёжь?
Sergey Matveev [Sun, 14 Apr 2024 20:55:43 +0000 (23:55 +0300)]
На чём играет современная молодёжь?

https://www.youtube.com/watch?v=6CV0D9OO4EE
Бачило говорит, что современные старшеклассники поголовно не играли
никогда в игровые консоли (приставки). Я про себя думаю: да ладно,
неужто на ПК реально все переезжают с них? Оказалось поспешил, ибо,
как он говорит, у них только смартфоны для игр, больше ничего. О
дивный новый мир.

3 weeks agoЗа что мы любим Python? urljoin!
Sergey Matveev [Sat, 13 Apr 2024 14:45:32 +0000 (17:45 +0300)]
За что мы любим Python? urljoin!

Python 3.10:
    >>> from urllib.parse import urljoin
    >>> urljoin('http://1.2.3.4:9010', '1.2.3.4:9010')
    '1.2.3.4:9010'

Python 3.7:
    >>> from urllib.parse import urljoin
    >>> urljoin('http://1.2.3.4:9010', '1.2.3.4:9010')
    'http://1.2.3.4:9010/1.2.3.4:9010'

И в документации к 3.10 нет никаких пометок об особенностях или
изменении поведения. По моему это лютая недопустимая дичь что творится.

3 weeks agoОтпраздновал день космонавтики Грай-ем
Sergey Matveev [Fri, 12 Apr 2024 22:15:12 +0000 (01:15 +0300)]
Отпраздновал день космонавтики Грай-ем

Более трёх месяцев не посещал метал-концерты. Всё работа, работа.
А сегодня сходил на Грай (262934d9e7bbabd2aca4ffb0958a615308797580).
Жара, духота, потные люди в округ беснуются, сам в поту, в грудине
отдают бас-бочки, плотный сочный звук электрогитар -- короче эталонный
метал-концерт. Сплошные мощные боевики и хиты. Пару их песен не слышал
прежде. Куча кача и бошкотряса. Зыбина отлично общается с толпой. Плюс
у неё вполне выходит гроулить, чего на альбомах нет вообще. 3-ей уже
понёсся "Пир Мертвецов" (3c041cdba9698d43330552d88a0688abd223edc3),
с настоящей волынкой. Отличная отдача от пришедшего народа, активно
подпевали в том числе. И мне кажется что громче толпы я ещё не слышал
прежде -- очень уж всем нравится Грай.

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

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

3 weeks agoДоработки VoRS
Sergey Matveev [Thu, 11 Apr 2024 19:17:05 +0000 (22:17 +0300)]
Доработки VoRS

В прошлой записи упоминал об относительно простом VoIP клиент/сервере.
До четырёх утра не спал, но решил ещё красивее сделать: заменить TLS на
Noise. Кода конечно потребовало больше, ведь не готовый же протокол
используется, но зато в целом куда более простая система.

Выбрал Noise-NK шаблон, где всего ровно за один round-trip производится
рукопожатие. При этом, уже в первое сообщение от клиента и сервера можно
вложить полезную нагрузку (которая тоже будет зашифрована). В итоге, уже
с первым сообщением от клиента он предоставляет свой username. А сервер
в своём сообщении может сразу объяснить причину отказа например.

Кроме того, вместо того, чтобы заставлять клиента использовать такой же
номер UDP порта с которого он пришёл на TCP сервера (что не всегда может
быть доступно), клиент отправляет пакеты с произвольного порта. Во время
рукопожатия, сервер выдаёт ему 128-бит cookie, которую клиент должен в
UDP пакете послать ему. Ведь проходя через NAT-ы, он в общем случае
может и не знать какой порт увидит сервер. Только приняв cookie, сервер
выдаёт клиенту SID и оповещает остальных о его подключении. И проверка
связи по UDP, и дружелюбность к NAT-ам и stateful firewall-ам.

От пароля избавился. Так как публичный ключ сервера во время рукопожатия
не передаётся, то его нужно знать клиенту заранее. А чем заранее выданный
публичный ключ не идентичен паролю? Shared секрет для аутентификации.

Включил в Opus-е DTX (discontinuous transmission), где кодек может
вообще не отправлять пакеты если в них тишина. Действительно, при
ней ничего не отправляет. А также всё же снизил bitrate до 24Kbps, ибо
это вполне себе потолок достаточности для VoIP.

Урезал Poly1305 до 64-бит. Overhead от VoRS выходит 12-байтным (и это с
шифрованием и аутентификацией). Ну и сервер начали проверять Poly1305,
ибо это штука очень быстрая.

Плюс попробовал использовать ML/нейросети из Opus 1.5
(78018e649ab66c7a1f45b793ba7c3c8c7f0a24e4). Для этого нужно повысить
настройку сложности декодера. Go обёртка не позволяет это сделать, ибо
раньше в декодере этого просто нельзя было указывать. Сделал fork в
git://git.stargrave.org/go-opus.git, где оно появилось. Действительно,
особенно при потерях пакетов, разница на слух есть заметная, если
libopus собран с --enable-deep-plc --enable-osce и complexity=10. Но это
всё опционально.

4 weeks agoМоё новое поделие: VoRS
Sergey Matveev [Tue, 9 Apr 2024 21:47:05 +0000 (00:47 +0300)]
Моё новое поделие: VoRS

http://www.vors.stargrave.org/
Как-то я бросался словами что надо написать свой собственный VoIP клиент
(+сервер). А то из всего VoIP есть только Mumble, который хоть как-то
ещё можно собрать и который хоть как-то но работает. Хоть как-то -- это
значит что всё равно со сторонними реализациями всё плохо (Mumble на Go):
7dac01b0761a750312eef3765d3131e36fac95aa
6bf8ec6fda4ba9a2ee54819e4a6613ff33d8effe
ecf0bbd8f4f25d6039438e1c6756c518e6979cfb
Отдельная боль в Mumble -- его Murmur сервер, который хоть и не GUI, но
требует Qt.

За три последних дня, не забывая про работу, я осилил написать своё
решение. Когда-то я думал что это вообще на Си стоило бы, но увидел, что
Go-шная wrapper библиотека для libopus существует, в ней почти нет кода
(буквально просто обёртки), замечательно работает. В итоге Си как то сам
собою отпал.

Около экрана кода достаточно чтобы P2P Opus закодированный трафик по UDP
передавать. Я было обрадовался как оказалось всё просто. Но вот если
захочется больше чем два человека, то тогда что делать? Всем
перезапускаться и указывать ещё один дополнительный IP адрес? Геморрой.
Да и я не планировал и яростно против любых NAT-traversal технологий, но
отдельный сервер всё же вполне себе был бы и решением до сих пор
остающихся неподключёнными к Интернету людей (которые за NAT).

И с его появлением всё сразу как-то сразу усложнилось. Но я постарался
сделать так, чтобы всё же проще было некуда. VoRS: Vo(IP) Really Simple.

* каждый клиент подключается по TCP к серверу
* на нём заранее генерируется X.509 сертификат самоподписанный, ed25519
  алгоритм, хэш от SPKI выдаётся клиентам
* инициируется TLS 1.3 с curve25519 DH. Проверяется SPKI хэш сервера
* далее внутри TLS следует текстовый построчный протокол: сервер
  отсылает 128-бит challenge; мы отвечаем BLAKE2s(пароль, challenge) и
  username-ом. Серверу и клиентам заранее указываются пароли подключения.
  Факт успешного расчёта MAC-а над challenge означает что клиент
  аутентифицирован и авторизован к подключению
* если с паролем всё ok, если username не сдублирован, то сервер или
  отвечает "OK <SID>" или сообщением с ошибкой. SID это stream
  identifier -- 8-бит число, по сути просто идентификатор подключённого
  клиента
* далее по этому TLS-у раз в 10сек бегают PING/PONG, с отключением если
  долго от противоположной стороны ничего не было

X.509 -- потому что из коробки в Go есть. X.509+пароль -- точно так же
это устроено и в Mumble. То бишь для Mumble-пользователей привычно.

После успешной авторизации, сервер и клиент вырабатывают симметричный
ключ шифрования UDP трафика, используя встроенную возможность TLS 1.3 в
виде Export Keying Material.

Аудио читается кусками по 20мс -- рекомендованное значение Opus-а.
48kHz, 1 канал, 16-бит S-LE. Натравливается функция кодирования Opus,
получается несколько десятков байт пакет. К нему добавляется 32-бит
заголовок: 8-бит SID и 24-бита счётчик пакетов. 24-бита достаточно для
многодневной беседы без остановки, учитывая что отсылается 50pps.
Счётчик используется для обнаружения переупорядочивания и потерь
пакетов. Используются PLC (Packet Loss Concealment) возможности libopus
для сглаживания потерь.

Bitrate выставлен в 32Kbps. Изначально выставлял 24Kbps, как
рекомендовано. Но... 4-байт заголовок VoRS, 40-байт заголовок IPv6,
16-байт на MAC, 8-байт на UDP... выходит что размер payload-а меньше чем
overhead на передачу! Поэтому пускай будет 32Kbps, чтобы всё же чуть
больше чем overhead быть, и суммарно получить 64Kbps трафика.

Раз в секунду отправляется пакет с 1-им байтом SID-а, чисто для UDP hole
punching-а stateful firewall-а.

Собственно, ключ EKM используется для ChaCha20-Poly1305. В качестве
nonce которого используется счётчик пакетов. Пока используются все
128-бит Poly1305, но я думаю что имеет смысл сократить в два раза.

UDP трафик от клиента отправляется на сервер, который только смотрит на
первый байт SID-а и UDP IP:порт. Клиент шлёт UDP трафик с такого же
номера порта по которому он подключился для TCP. А дальше сервер просто
буквально рассылает копии пакета всем остальным. Да -- это пока самое
неприятное место, ибо микшированием аудиопотоков сервер не занимается и
поэтому объём трафика растёт пропорционально кол-ву участников. Но на
моей практике, людей в Mumble буквально не больше 4-5, и это речь про
64Kbps поток от каждого.

Как же дешифровать то трафик могут другие, ведь у них же свои TLS
соединения со своим state-ом. Сервер по TLS-у просто сообщает текстовой
строкой о факте подключения нового участника: ADD SID USERNAME KEY. Если
кто отключается, то: DEL SID. Безусловно пока есть race между тем как
дойдёт ADD/DEL по TCP до клиентов и параллельно с этим идущим UDP
трафик. Но да и фиг с ним: речь про доли секунды возможно ещё не
дешифрующегося трафика.

Когда сервер научится микшировать аудиопотоки, то от него будет идти
ровно один stream с audio. Можно будет избавиться от SID-а в принципе.
Если дойдут до этого руки, ибо задача вроде бы отнюдь не тривиальна.
Сервер сейчас даже не работает с криптографией UDP пакетов, хотя мог бы
проверять MAC например (ключ же он знает).

Самая жопа это ввод и вывод аудио. Ничего портабельного, кроме говна
типа PulseAudio или очередных его заменителей -- нет. OSS4 это мир BSD.
ALSA это Linux. JACK из коробки не стоит, да и я не знаю адекватно ли с
ним работать. Видел и даже трогал софт с OpenAL -- но на Go как-то оно
всё не то чтобы стабильно работало (может быть это софт был говно, а не
с OpenAL дело).

Пока решил поступить по тупому: SoX-овый rec для того, чтобы из него
просто забирать поток PCM байт. Его же play для воспроизведения. Приятно
то, что он не требует чтобы я поток постоянно выдавал. Если мне не
приходят UDP/Opus пакеты, то в play я байты никакие не подаю и это не
проблема. Для каждого клиента/stream-а я запускаю ещё один "play".
Насколько знаю, возможности микшировать потоки с разных приложений
зависят от драйверов и вообще звуковой подсистемы. Но вроде бы и ALSA и
OSS давно без проблем это всё из коробки умеют уже давно. У меня play
прекрасно запускается в большом количестве и асинхронно к ним подаются
кусочки звуковых данных -- всё тип-топ работает.

Вместо play/rec можно использовать всё что угодно другое. Это просто
команда которая или с stdout или на stdin должна принимать PCM данные.
Хоть ffmpeg засунуть -- должно быть пофиг. И по идее это нигде не должно
создавать проблем. Проверял на какой-то Ubuntu не самой свежей (с
LiveCD), ну и на своих FreeBSD, как со встроенными Intel HDA
звуковухами, так и подключёнными через USB или даже virtual_oss. Если я
доберусь до микширования звука на сервере, то этот же код можно будет
использовать и на клиенте, для того чтобы ровно один "play"/whatever
запускать, если будет в этом смысл.

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

Решил сразу сбацать TUI интерфейс. Экран для произвольных логов (ошибки,
события подключения), и для каждого участника по окошечку, где
перечисляются кол-во принятых/переданных пакетов (на сервере, а на
клиенте только принятых от остальных, или переданных от себя), размеры в
байтах (только payload конечно же), потерянные или переупорядоченные
пакеты,

Если последний UDP пакет был принят более секунды назад -- считается что
пользователь молчит. В противном случае показывается "TALK" зелёным
цветом. Как на сервере, так и на клиентах. Нажатием Enter можно
включать/выключать mute локальный -- UDP просто не будет отсылаться.

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

В планах не было делать Voice Activity Detection, но раз я уже умею
вычислять RMS, то что мешает добавить VAD? Я не очень понял про его
значения, не вдавался в подробности, но просто написал утилитку, которая
выводит RMS значение для звука из rec-а. На глаз можно оценить какой
порог надо задать и передать его в клиента -- тихий звук до него будет
считаться тишиной и никакой UDP передаваться не будет. Вроде работает
отлично.

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

Нет разделения по "комнатам". Конечно можно и добавить, но думаю что
проще поднять ещё один сервер на соседнем порту. У него из аргументов то
пути только bind, путь-к-pem и пароль. Плюс он не требует libopus или
чего-то подобного: обычная статически собранная Go программа.

4 weeks agofind -mtime в GNU и BSD
Sergey Matveev [Sat, 6 Apr 2024 17:31:41 +0000 (20:31 +0300)]
find -mtime в GNU и BSD

Эх, снова буду бурчать на GNU ОС. Вот мне надо удалять файлы которые
старше n часов. В FreeBSD можно указать find-у: -mtime +4h. Под GNU, как
оказалось, никаких часов нельзя указать. Только 24-часовыми единицами
оперировать.

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

4 weeks agoВстретил чувака с Only Fetish Fest
Sergey Matveev [Fri, 5 Apr 2024 09:44:20 +0000 (12:44 +0300)]
Встретил чувака с Only Fetish Fest

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

4 weeks agoСходил на оперу "Лоэнгрин"
Sergey Matveev [Thu, 4 Apr 2024 20:14:46 +0000 (23:14 +0300)]
Сходил на оперу "Лоэнгрин"

https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D1%8D%D0%BD%D0%B3%D1%80%D0%B8%D0%BD_(%D0%BE%D0%BF%D0%B5%D1%80%D0%B0)
Снова в "Новой опере", где были на "Летучем голландце"
(e53fa95d1df289c3c6fc5ebcd142bf1f9f64a576). Особо расписывать нечего.
Лучшая музыка что я слышал среди всех опер. Само пение не так впечатлило
как на "голландце", но возможно потому что уже не в первый раз на
немецком слушаю. В любом случае, это сильно больше понравилось чем Аида
(411cc4cd20be6c375c0cbb101330d1aa2fd7fae8). Вагнер -- очень крут! Причём
то ли я какие отрывки (не считая свадебную тему, известную всем) слышал
и прежде, то ли я прям стал понимать и слышать фишек именно Вагнера.

5 weeks agoОщутимо иначе стал воспринимать death метал
Sergey Matveev [Tue, 2 Apr 2024 14:56:41 +0000 (17:56 +0300)]
Ощутимо иначе стал воспринимать death метал

Помню что меня не то чтобы впечатляли многие death metal группы. Больше
любил грайндкорчик и горграйндчик. И когда говорили про приезжающих
монстров death metal, то я конечно на многих из них ходил, но не то
чтобы это запоминалось. А тут за последние дни много альбомов Avulsed,
Decapitated, Deicide, Deranged, Devourment, Dying Fetus, Morbid Angel,
Mortician, Putrid Pile, Wormrot прослушал и прям тащусь от большинства
из них. Сейчас мне именно подобного хочется поставить, чем грайнду. Да
кардинальное изменение с (b1131e9ec315c349c3d299b9cdd4fbbca598dda6)
Cryptopsy не забуду. А black-а прежде я слушал ещё меньше чем death.
Сейчас же совсем наоборот.

5 weeks agoMagic Security Dust
Sergey Matveev [Mon, 1 Apr 2024 18:18:04 +0000 (21:18 +0300)]
Magic Security Dust

https://shostack.org/magic-security-dust
https://www.schneier.com/blog/archives/2024/04/magic-security-dust.html
Революционное решение для того, чтобы делать вещи безопасными by design.
В ролике снялся сам Брюс Шнайер, заявляя что там где он использовал эту
пыль, то security theatre пропал. Продаётся там же, где и snake oil.

5 weeks agoFLIP протокол
Sergey Matveev [Mon, 1 Apr 2024 17:52:46 +0000 (20:52 +0300)]
FLIP протокол

https://www.rfc-editor.org/rfc/rfc9564.html
Faster than LIght speed Protocol, использующий ChatGPT, может
предсказывать какие пакеты должны прибыть, делая канал связи
быстрее чем скорость света.

5 weeks agoДальнейшие приключения с gmail.com
Sergey Matveev [Mon, 1 Apr 2024 08:26:54 +0000 (11:26 +0300)]
Дальнейшие приключения с gmail.com

В 67c58801e7f5cd763f98639317494484493e4774 писал, что IPv6 SMTP трафик
после какого-то времени установления (кол-ва пакетов?) TCP соединения
перестаёт ходить со стороны подключающегося. На выходных убрал IPv6
адрес из DNS-а для входящего почтового сервера, оставив только IPv4. И
почта с gmail.com стала ходить. То есть, как минимум, это говорит о том,
что SMTP трафик по IPv4 никто не режет и это Google даже не пытается по
нему подключаться.

Добавил ещё один MX сервер, у которого только IPv4 есть адрес, надеясь,
что Google хотя бы будет пытаться ротировать список MX серверов для
попыток доставки. Но нет -- вижу что никаких попыток достучаться до IPv4
снова нет.

В голову ничего не приходит, кроме как: 1) забить и считать что
gmail.com связь невозможна, из-за кого на магистралях режущих IPv6
трафик. 2) убрать возможность доставки по IPv6. 3) drop-ать
самостоятельно трафик от gmail.com, чтобы он считал что этот IPv6 точно
так же как и mailfake[01].stargrave.org недоступны. 1) -- не очень
приятно, ибо люди на gmail.com имеются, хоть и не большинство. 2) точно
нет, регресс снова в каменный век?

3) сработал как и ожидалось:

    drill _spf.google.com TXT
    "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com ... ~all"
    drill _netblocks2.google.com TXT
    "v=spf1 ip6:2001:4860:4000::/36 ip6:2404:6800:4000::/36 ... ~all"

    ipfw table google-mail create type addr
    tableadd google-mail 2001:4860:4000::/36
    tableadd google-mail 2404:6800:4000::/36
    tableadd google-mail 2607:f8b0:4000::/36
    tableadd google-mail 2800:3f0:4000::/36
    tableadd google-mail 2a00:1450:4000::/36
    tableadd google-mail 2c0f:fb50:4000::/36
    $add deny tcp from "table(google-mail)" to "table(mein)" smtp

Увидел drop пакетов, а дальше увидел попытку соединения по IPv4, по
которой почта прошла.

5 weeks agoBackdoor в XZ
Sergey Matveev [Sat, 30 Mar 2024 06:21:08 +0000 (09:21 +0300)]
Backdoor в XZ

https://dataswamp.org/~solene/2024-03-30-lessons-learned-xz-vuln.html
https://www.opennet.ru/opennews/art.shtml?num=60877
https://www.openwall.com/lists/oss-security/2024/03/29/4
https://www.linux.org.ru/news/security/17567724
https://lwn.net/Articles/967180/
В tarball-ах новых версий XZ был сделан backdoor. Касается это правда
только систем с systemd, где OpenSSH собран с патчем для systemd.

5 weeks agogmail.com перестал до меня ходить
Sergey Matveev [Fri, 29 Mar 2024 20:47:19 +0000 (23:47 +0300)]
gmail.com перестал до меня ходить

Пару недель назад обнаружилось, что почта по IPv6 не ходила до меня.
Дело было в VPS (db38f36c737212f4ec8e82a82acf96586b56ea3b). Ну точнее он
говорил что он ничего не делает, так что били/резали трафик где-то и вне
него возможно. Перенёс приём писем через другой VPS, с другой IP сетью.
И всё начало ходить без проблем.

Пока мне сегодня даже не позвонили и не сообщили что сегодняшние письма
с @gmail.com не дошли, нет от меня ответа. Увидел в логе, что точно так
же как и на прошлом VPS, связь рвётся после STARTTLS. Но ни с кем больше
такого не происходит, хотя у меня преобладающая часть почты через IPv6
принимается (всякие рассылки).

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

Проблема точно не у меня, ибо я проверял просто и на самой VPS-ке с
голой ОС просто netcat-ом. И удивляет то, что нигде не слышу чтобы
кто-то говорил о проблемах. Целенаправленно у меня что ли кто-то что-то
режет? Сложно в это поверить.

И что удивительно, но от меня то по IPv6 (судя по логам) письмо на
gmail.com отправилось. Снова односторонняя связанность какая-то.

В общем... gmail.com до меня по каким-то там сетевым ТСПУ/whatever,
больше не ходит. Я знал что проблемы с почтой начнутся с Google, но
думал что именно с их стороны.

5 weeks agoОтлично работается под Jungle Rot
Sergey Matveev [Thu, 28 Mar 2024 19:44:35 +0000 (22:44 +0300)]
Отлично работается под Jungle Rot

https://en.wikipedia.org/wiki/Jungle_Rot
В США в целом не то чтобы густо с стоящим металлом (его много, но крутых
стоящих не шибко), а про Jungle Rot я знаю давно. Сегодня почти целый день
он в наушниках. Простая, незатейливая, ритмичная музыка отлична для работы.

5 weeks agoВ чём проблема работать с файлами?
Sergey Matveev [Thu, 28 Mar 2024 09:54:09 +0000 (12:54 +0300)]
В чём проблема работать с файлами?

https://habr.com/ru/articles/803347/
https://lwn.net/Articles/752093/
https://research.cs.wisc.edu/wind/Publications/sfa-dsn05.pdf
https://pages.cs.wisc.edu/~laksh/research/Bairavasundaram-ThesisWithFront.pdf
https://elinux.org/images/b/b6/EMMC-SSD_File_System_Tuning_Methodology_v1.0.pdf
https://www.cs.utexas.edu/~bornholt/papers/ferrite-asplos16.pdf
https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-pillai.pdf
Много интересной информации об особенностях работы с файлами. В основном
речь про целостность и консистентность данных на ФС. Упоминаются различия
между fdatasync и fsync. Факт (1e91d63fac9882e2c226ceb360916d802c96e9be)
отсутствия работающего POSIX fsync на macOS. То что надо бы fsync-ать и
директории (я много где в своём софте подобное делаю). Есть статья с
анализом выживаемости ext3, ReiserFS и JFS -- всё очень плохо со всеми
ними, хотя, как говорят авторы, ReiserFS типа меньшее из зол. Про JFS
мне всегда было любопытно, но о ней почти ничего из практики не
известно: типа никто не использует её, судя по всему. То что NTFS говно
и так можно было не гадать. Есть статья, демонстрирующая то, что btrfs
после спонтанных выключений питания -- приходит в полную негодность и
невозможность восстановления. Вопросы износа/ошибок на HDD, SSD,
контроллеров, ECC RAM. Ну и куча примеров как надо работать с файлами.
Полезная статья!

Ничего явно не сказано про ZFS, хотя, учитывая наличие btrfs, статьи
вполне себе современные и в курсе про эту ФС. Видимо, кроме редких
косяков в самом коде (кои везде бывают), она вне "конкуренции". Ведь она
именно в условиях сбоящих контроллеров, протухающих секторов должна же
выживать и гарантировать обнаружение потери консистентности/целостности.
Нет ничего и про UFS2, в которой вообще soft-updates вместо журналов.

5 weeks agoСвободный доступ провайдеров к домам
Sergey Matveev [Thu, 28 Mar 2024 08:41:00 +0000 (11:41 +0300)]
Свободный доступ провайдеров к домам

https://www.securitylab.ru/news/547086.php
Давно пора! А то ведь это ж реально полная жопа: куда ни плюнь, но типа
только пара провайдеров имеется, один хуже другого, типа Ростелекомов
или МГТС. Это если Москва. В Королёве где-то есть WiFire, бывший
NetByNet, который теперь Мегафон вроде -- не знаю как сейчас, но они
даже PTR без проблем прописывали. В моём доме только Ростелеком и
мытищинский Индиком. Ростелеком я принципиально не стану использовать,
ибо уроды. Я готов и в десять раз больше платить за Интернет, если бы он
выдавал /56+ IPv6 вменяемо статичный, придите кто-нибудь то уж.

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

5 weeks agoПочта не ходила из-за VPS провайдера
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 выставить?

6 weeks agoМой блог и репозитории сдублированы
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 и размер для этого.

6 weeks agoРаспознавание linkmeup подкастов
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 оказался.

6 weeks agoНеладное со связью
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, хотя мы
раньше не связывались. С кем годами переписывались -- может легко
попасть друг за другом. Хотя годами у меня адреса/настройки/сервера
могут и не меняться при этом.

6 weeks agoЗацикливание whisper.cpp
Sergey Matveev [Sun, 24 Mar 2024 14:27:03 +0000 (17:27 +0300)]
Зацикливание whisper.cpp

В 0a1f29f947892a13635bec94abdabcd1e9c55179 писал, что новая large-v3
модель может зацикливаться. Смена на large-v2 уменьшает вероятность, но
всё равно это вполне себе у меня может происходить. И large-v2 менее
точные результаты выдаёт.

6 weeks agoБолее-менее активная работа с schwabrak-ом
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 СУБД какой-нибудь.

6 weeks agoGNU/Linux дистрибутивы без elogind
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/

Hyperbola помню что (fea55f774b79e9648a8c6dd30dc0e42747bf7e60) не шибко
адекватный дистрибутив, где я так и не смог найти что же не так с
Zstandard например.

Venom Linux, о котором в другом месте слышал, вообще на JS сайт имеет.
Сайт Kiss-а не открывается -- тоже только JS какой-то вижу в HTML.

Отдельно у них список дистров есть, где запущен DBus, который я у себя
тоже форсированно отрубаю. Тут есть знакомые названия типа Alpine,
Artix, TinyCore (хотя elogind там всё равно присутствует), Void.
В комментариях упоминают CRUX, о котором я тоже вспомнил, вроде бы
elogind там тоже нет по умолчанию.

6 weeks agoRedis -> Redict
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 не трогал, но крайне тёплые чувства к нему испытывал.
Хороший код, хорошая документация, отличный функционал и возможности,
понимание как и чего там работает и что от него ожидать и как
прооптимизировать.

7 weeks agoВпервые столкнулся с OpenAPI
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. Что за уроды так делают?

7 weeks agoРасходы и доходы в шаурмичном бизнесе
Sergey Matveev [Tue, 19 Mar 2024 08:41:16 +0000 (11:41 +0300)]
Расходы и доходы в шаурмичном бизнесе

https://habr.com/ru/articles/800963/
Всегда было интересно сколько это всё стоит, сколько получают.

7 weeks agoПочему хранить музыку в HiRes формате глупо
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-бит.

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

7 weeks agowhisper.cpp то может и не работать
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 не возникает на этих
участках. Короче глаз да глаз нужны.

7 weeks agoРезультаты exit-poll и опросы на улицах
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 дня
пораньше поточнее прикинуть результаты? И так всем ясно, кроме
сепаратистов, оппозиционеров, экстремистов и террористов -- что мы едины
и крепки в нашем выборе. А тратить силы на жалкие проценты остальных?
Заняться что ли нечем, тем более, что никак не проверишь достоверность?
Возможно статистика знает какой процент врёт? Если она так всё прекрасно
знает, то, опять же, какой смысл спрашивать?

7 weeks agoСходил на оркестр волынщиков "City Pipes"
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
такого полно), но а с барабанами так вообще круче некуда. Очень доволен!

7 weeks agoМасленичные гулянья в Королёве
Sergey Matveev [Sun, 17 Mar 2024 17:24:05 +0000 (20:24 +0300)]
Масленичные гулянья в Королёве

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

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

Как-будто по размаху оно сравнимо с новогодними праздниками.

7 weeks agoПрофессиональная порча компьютерных игр
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 со своим мнением о провале фильмов.

7 weeks agoСборка современного mpv
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 были.

7 weeks agoСходил на оперу "Летучий голландец"
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 или Властелине Колец. Не мой это
юмор. Но это всё было не Гоблином, а как-будто жалкой попыткой его
пародии.

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

Так что же сама опера? Мощнейшая музыка! Потряснейшая музыка и
исполнение оркестром. Мама сказала что её как-будто накачивали энергией
и при выходе из зала ты готов лопнуть от всей это неслыханной мощи.

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

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

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

7 weeks agoТеперь можно "слушать" подкасты linkmeup
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 или акселератор нейросетевых вычислений.

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

7 weeks agoЭнергетика большой страны
Sergey Matveev [Thu, 14 Mar 2024 19:42:33 +0000 (22:42 +0300)]
Энергетика большой страны

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

8 weeks agoСходили на оперу "Аида"
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),
крутые масштабные декорации. Да и само оформление зала Стравинского в
Геликон Опере -- загляденье! С подобным не сталкивался прежде.

Читал, что Джузеппе Верди хотел изобразить главного жреца в опере плохим
дядькой. Типа жестоким и всё в таком духе. Блин, а я наоборот его уважал
всё выступление. Он сразу сказал царю что кончать пленников надобно, ибо
пойдут мстить. Только их отпустили -- сразу же о планах мести и реванша
пошли разговоры. Рамадес же погиб -- и поделом, ибо предатель! Пускай
даже по неаккуратности типа, но он главком и выдал серьёзную военную
тайну -- никаких поблажек за это быть не должно. Жрец всё делал и
советовал как надо, не придерёшься.

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

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

8 weeks agoГОСТ в LibreSSL
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 был приятен ещё тем, что в нём были ГОСТ алгоритмы.
А вот в новой версии их убрали, из-за низкого качества кода.
Вот видел я хороший и быстрый ГОСТ код, но... не свободный.

8 weeks agocURL в macOS
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 форсировать
проверку напротив своих якорей. Я реально просто охереваю от людей
которые считают эту ОС вообще чем-то допустимым для использования.
Только и только если на задаваться вопросами безопасности.

8 weeks agoZ Shell-based Web-сервер
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 уже избыточен и не даёт никакой
помощи в скриптах, сильно всё проще стало.

8 weeks agoДоработки meta4ra
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 тоже
очень быстра.

8 weeks agoИгры, ломающие 4-ую стену
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, но не знал о такой штуке. Обожаю юмор в
этих играх!

2 months agoSHAKE в OpenSSL
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 коде, написанном давным
давно, то вот яркий пример и нового кода.

2 months agoСообщения от Госуслуг -- не спам
Sergey Matveev [Thu, 7 Mar 2024 08:36:56 +0000 (11:36 +0300)]
Сообщения от Госуслуг -- не спам

https://habr.com/ru/news/798651/
Всех деталей, конечно, не знаю, но когда-то очень давно я был
зарегистрирован на них. Позже, уже уйму лет ни через один броузер,
который оказывался под рукой, войти туда уже не выходило. Хотел удалить
учётную запись (чёрт его знает возможно ли это?). Но спама от них всегда
было настолько достаточно, то я вообще своему MTA сказал что со всего их
домена ничего не принимать. Отписаться же я уже не могу -- войти то не
выходит. И это всё, похоже, не считается спамом. Приехали...

2 months agoСюжет Bioshock Infinite
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 почти ничего толком и не знал, кроме того, что всё
действие на небесах, всё очень яркое и цветное, без мрака, с кучей
людей. Почти отталкивало даже и мало я слышал хвалебных отзывов об игре
от знакомых. Правда мы все уже, к выходу игры, достаточно выросли чтобы
обзавестись кучей других забот и нехваткой времени :-)

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

2 months agoRetro Games Mechanics Explained
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
Много видео поясняющего различные механики и баги в ретро игрушках,
которые на игровых приставках.

2 months agoOpus 1.5
Sergey Matveev [Mon, 4 Mar 2024 19:30:21 +0000 (22:30 +0300)]
Opus 1.5

https://opus-codec.org/demo/opus-1.5/
В новой версии Opus всякие ML-related улучшения и нейросети.
В основном всё качается VoIP.

2 months agoCloudinary снова про JPEG XL
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.

2 months agoGNU tar и автоматическое определение декомпрессора
Sergey Matveev [Thu, 29 Feb 2024 09:22:24 +0000 (12:22 +0300)]
GNU tar и автоматическое определение декомпрессора

Его нет. Я уже даже не помню сколько лет я просто отправлял данные в
"tar x" и декомпрессор находился сам, на основе данных на входе. А в
GNU tar, при подаче через stdin, он так не умеет. Более того, он сам
прекрасно при этом понимает что ему подаётся Zstandard и предлагает
использовать --zstd опцию, но автоматом сам её не подставит.

2 months agoСтатистика внедрения IPv6, преимущества и перспективы
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 не раз упоминают в
последнем. Только в прошлом году впервые видел его упоминание.

2 months agoНебезопасности в PDF
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) я стал
использовать уже давно.

2 months agoЧем ChaCha20 лучше AES-256
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
из-за применения таблиц поиска.

2 months agoАнализ PQ3 в стиле Хабра
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.

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

2 months agoЗаценил Borknagar -- 2024 -- Fall
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). Отличнейший альбом!

2 months agoОптимизация поиска в libalias
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 не для дома. Но нет,
всего то маленький патчик нужен.

2 months agoФрагментация пакетов gif-туннеля
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 на ноль.

2 months agoПочему используются ECDH вместо традиционного DH?
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
могут быть безопасно сделаны и использованы -- просто это сильно
сложнее достичь. И это если не обсуждать производительность и
размеры ключей.

2 months agoОбновил аккумулятор в ИБП
Sergey Matveev [Thu, 22 Feb 2024 16:38:13 +0000 (19:38 +0300)]
Обновил аккумулятор в ИБП

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

2 months agoПоздравительная открытка к 23 февраля на работе
Sergey Matveev [Thu, 22 Feb 2024 16:09:02 +0000 (19:09 +0300)]
Поздравительная открытка к 23 февраля на работе

Коллеги для каждого приготовили QR-коды распечатанные для каждого,
приклеили к дверям. Прилагаю какая картинка досталась мне. Меня
удивляет удивления людей, которые считают что CLI и терминалы это
что-то архаичное и якобы менее удобное. Молодые ещё...

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

2 months agoСнова долго без Интернета
Sergey Matveev [Thu, 22 Feb 2024 15:15:45 +0000 (18:15 +0300)]
Снова долго без Интернета

4-6 часов не было link-а от провайдера. Сказали что пожарные
всякое проверяли и вырубали электричество у их оборудования.

2 months agoeXoScummVM 2.8.0
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 много
каких игр появилось -- почти все добавились в этот торрент.

2 months agoiMessage PQ3
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.

2 months agoDisney о провале своих фильмов
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 считает, что провал его фильмов в прокате связан со зрителями. Да
достаточно только на кадр из их очередного фильма посмотреть: чисто
белокурая девица, чисто негритянка, чисто азиатка (?) в одном кадре, ну
и конечно же, небось все они лесбиянки... ой, а кто-то наверняка на
самом деле мужчина. Может это они там совсем с ума посходили уже со всей
этой дебильной политикой и маразмом? Хотя их *люто* страшную негритянку
русалочку уже сложно переплюнуть. Адекватность совсем потеряли.

2 months ago"Тайны Блэквуда" и "Проект Послеловие"
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. Но нравится, тоже такое люблю.

2 months agoПро читерство в играх
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 системах уже жил.

2 months agoПервый релиз goredo прогнанный в zwoki
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
релиз минорный, о котором даже в рассылку не буду оповещать.

2 months agoGitLab и SHA256 репозитории
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.

2 months agoНовый проект: zwoki
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
скрипты и нет никаких зависимостей между целями сборки).

2 months agoСходили в цирк "Корона"
Sergey Matveev [Sun, 11 Feb 2024 20:21:12 +0000 (23:21 +0300)]
Сходили в цирк "Корона"

https://цирк.рус/
Со вчерашнего дня открылся приехавший на месяц в наш город цирк шапито.
Акробаты, воздушная гимнастка, жонглёр, силач (которого ещё и машина
переезжает), иллюзионист (который ещё и из арбалета стрелял метко). Было
весело, здорово, захватывающе. Очень всем понравилось!

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

2 months agoВпервые использовал Tesseract OCR
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 файлу, подождал несколько секунд -- получил текст. Не
абсолютно всё распозналось, но почти всё. Существенно сэкономило время,
нежели пришлось бы набирать всё с нуля. Полностью свободное ПО, не много
зависимостей. Приятная штука оказалась, ожидал куда большего геморроя.

2 months agoПоказал "Большой куш" родителям
Sergey Matveev [Sat, 10 Feb 2024 19:53:00 +0000 (22:53 +0300)]
Показал "Большой куш" родителям

Причём в переводе Гоблина. Наверное впервые с ними посмотрел фильм где
не то чтобы мало мата. Фильм им понравился. Оказалось что оба не видели
его прежде, в отличии от "Карты, деньги, два ствола".

2 months agoAV1 и материал с BitTorrent
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 кодек) у меня:

    -codec:v libsvtav1 -crf 24 -preset 3 -pix_fmt yuv420p10le -svtav1-params tune=0 -g 120

CRF=32 если перекодирую видео podcast-ов. Ну и "-g" зависит от
количества кадров. Всё остальное вообще не трогаю. Кодируется это где-то
со скорость 0.2x для <=720p.