]> Sergey Matveev's repositories - stargrave-blog.git/log
stargrave-blog.git
2 years agogodiana frontend для Aria2
Sergey Matveev [Wed, 9 Nov 2022 17:50:57 +0000 (20:50 +0300)]
godiana frontend для Aria2

http://www.git.stargrave.org/?p=godiana.git;a=blob;f=README
Годами использовал diana (https://github.com/baskerville/diana) frontend
для Aria2. Но как-то пришлось добавить команду для показа информации о
peer-ах. Но фатальная проблема с ним в том, что нельзя передать
дополнительные опции при добавлении торрента. А мне частенько надо
переопределять директорию для скачивания. В итоге я редактирую seed-файл
и перезапускаю aria2, что геморрой и останов всех торрентов. Плюс diana
вывод не показывает seed ratio. Что я делаю в этом случае? Стыдно
признаться: проматываю вывод aria2 в tmux-е. Но ratio он показывает
только когда ты seeder.

Открыл код diana и прям всё противит править Python код. Решил
переписать на Go. Кроме решения всех вышеназванных проблем, теперь ещё
можно удалить Python3 пакет с сервера с BitTorrent-ом, который аж больше
сотни мегабайт весит.

2 years agodht-bootstrap fork
Sergey Matveev [Wed, 9 Nov 2022 17:40:12 +0000 (20:40 +0300)]
dht-bootstrap fork

http://www.git.stargrave.org/?p=dht-bootstrap.git;a=commitdiff;h=5ce75cf1b18f93fc109bf860b7ad900f7a42542d
В прошлом посте упоминал что пришлось подправить dht-bootstrap.
Выложил fork где добавил возможность явно указывать адреса для bind-а.
Плюс заменил select на poll. Всё это заметно упростило код.

2 years agoКак не тривиально настроить BitTorrent оказалось
Sergey Matveev [Tue, 8 Nov 2022 18:45:03 +0000 (21:45 +0300)]
Как не тривиально настроить BitTorrent оказалось

BitTorrent-ом я пользуюсь с момента появления у меня Интернета. Уже не
первый год использую aria2 в качестве клиента. Много лет у меня поднят
локальный трэкер (opentracker). Но похоже я вообще толком не проверял
всё ли работает как надо.

opentracker заставляешь слушать на "::" адресе и sockstat показывает что
он слушает и отвечает везде. Но проверка показала что он нифига не
показывает всех peer-ов для моих трэкеров. Явно же в его README написано
что WANT_IPV6 опция только для IPv6-only версии трэкера. Я подумал что
без неё -- он будет dual-stack. Посмотрел код: либо он только IPv4, либо
только IPv6. Нашёл что в дистрибутивах по два пакета opentracker не
брезгуют делать из-за этого: один для IPv4, другой для IPv6. Пришлось
поднимать две версии этого трэкера.

Пошёл дальше проверять работает ли это всё. Сможет ли один aria2 клиент
скачать с другого, используя только этот трэкер? Приятно что в aria2
можно явно отключить и указать только чётко заданные трэкеры. Вижу в
debug выводе leecher-а, что он получает IPv4 адрес seeder-а, но, так как
он за NAT-ом этого же адреса, то качать с него не сможет. Не проблема,
всё понимаю, но где же IPv6 адрес seeder-а?

Предполагаю что aria2 почему то стукнулся по IPv4 адресу трэкера и
поэтому передал ему только IPv4. Жёстко задал IPv6 адрес в /etc/hosts.
Не помогло, потому что aria2 использует c-ares и самостоятельно
асинхронно опрашивает DNS серверы. Ладно, указываю адрес трэкера не по
доменному имени. Вижу что seeder подключается по IPv6 адресу трэкера, но
передаёт он IPv4, который я указал в --bt-external-ip опции к aria2.
Почему я понадеялся что он только IPv4 адрес переопределит или что он
просто добавит этот адрес к анонсируемым?

Оказалось, что указать несколько адресов этой опцией нельзя. Что
укажешь -- то он и будет анонсировать трэкерам. Указывать несколько
адресов можно только косвенно через multiple-interface опцию. Но
BitTorrent seeder у меня запущен на отдельной машине, которая ничего не
знает про свой внешний настоящий IPv4 адрес. В общем, никак нельзя
указать чётко заданный IPv4 и IPv6 адреса.

Благо, оказалось что можно передавать доменное имя. И BitTorrent
протокол это явно разрешает (BEP3). И aria2 leecher это прекрасно
понимает тоже. Так что проблема решилась созданием доменного имени с
нужными мне IPv4+IPv6 адресами.

Я также поднял и DHT bootstrap сервер github.com/jech/dht-bootstrap.
Очень минималистичный, поддерживающий и IPv4 и IPv6, слушающий спокойно
на всех адресах. Когда поднимал, то тестировал локально утилитой
github.com/jeanralphaviles/dhtcli чтобы хотя бы просто PING-ануть его.

Начал проверять работу уже через aria2 seeder/leecher и вообще не видно
в выводе чтобы что-либо на DHT сервере происходило. Запрос сервер видит,
пишет на экране что посылает и ответ, но клиент (dhtcli) ничего не
получает. tcpdump показывает что ответ, действительно, отсылается назад.
Вот только не с того IPv6 адреса на который запрос приходил.

Потому что, в отличии от TCP, UDP отправляется as-is и какой уж будет
выбран исходящий адрес, такой и будет. FIB-ом вроде бы тут делу не
поможешь (в отличии от 884f5eb6a88411f947a0d6c3fecd37c612a51654). А
dht-bootstrap настолько минималистичен, что даже не предлагает выбрать
явный адрес для bind-а. Не нашёл решений как можно явно указать
preferred source address или адрес для bind-а. Но просто взял и сделал
явный hardcode адреса для bind-а в dht-bootstrap демоне. DHT вроде бы
заработал после этого.

И вновь чувство того, что я похоже жутко что-то всё переусложняю или
что-то не то делаю. Неужели запуск dual-stack BitTorrent клиента за
NAT-ом это такое не тривиальное дело оказалось? Как и запуск DHT
сервера. Понимаю, что это вообще не часто кем-либо поднимается, да и то
это наверняка официальная BitTorrent реализация. Да и на IPv6, который
вообще в отдельных BEP-ах описан как для BitTorrent, так и для DHT --
многие плевать хотели. Ну а доку по opentracker я просто плохо читал.

2 years agoengge2 движок для Thimbleweed Park игры
Sergey Matveev [Tue, 8 Nov 2022 10:30:40 +0000 (13:30 +0300)]
engge2 движок для Thimbleweed Park игры

https://www.opennet.ru/opennews/art.shtml?num=58068
https://github.com/scemino/engge2
Написан на Nim и Lua. Вообще ничего про Nim не знаю, кроме названия. Но
появляется возможность, как и с SCUMMVM, ResidualVM, играть в квесты на
свободном ПО.

Почему engge2 был вообще написан? Автор пишет, что последние баги в
оригинальном engge проекте на C++, который его задолбал, он решил
профиксить переписыванием на другом языке.

Но Nim у меня собрался из tarball-а их без проблем.

2 years agoFreeBSD будет использовать Dragonfly Mail Agent
Sergey Matveev [Tue, 8 Nov 2022 10:12:56 +0000 (13:12 +0300)]
FreeBSD будет использовать Dragonfly Mail Agent

https://cgit.freebsd.org/src/commit/?id=a67b925ff3e58b072a60b633e442ee1d33e47f7f
Всецело одобряю! Понятия не имею как устроен DMA, но временами что-то
вижу из конфигов в рассылках. Что что, но sendmail у меня вызывает самые
крайне удручающие воспоминания. И это первый компонент который я заменяю
в любой FreeBSD установке, и что бы заменял в OpenBSD (когда они тоже не
начали делать свой MTA).

2 years agoВышел Texinfo 7.0
Sergey Matveev [Tue, 8 Nov 2022 09:40:35 +0000 (12:40 +0300)]
Вышел Texinfo 7.0

В нём исправлена бага о пропаже элемента из индекса, о которой сообщал
(ab93c94e50820da24ba107002f5cb0c1091cef2d), а также теперь HTML5 вывод
по умолчанию и желанная мною ASCII_PUNCTUATION опция (ибо бесит когда в
текстовом выводе, как минимум, не ASCII кавычки).

2 years agoaria2 не имеет DHT bootstrap серверов по умолчанию
Sergey Matveev [Tue, 8 Nov 2022 09:20:07 +0000 (12:20 +0300)]
aria2 не имеет DHT bootstrap серверов по умолчанию

https://github.com/aria2/aria2/issues/362
Задался я тут вопросом: какие сервера для BitTorrent DHT bootstrap-а
использует aria2. Полазил в исходном коде и не нашёл ответа. Точнее не
видел чтобы были какие-то вшитые по умолчанию. Даже мысли не было что
они честно просто дают это полностью на откуп пользователю. Что верное
решение. Просто видя, как в десятках других клиентах обязательно это всё
вшивается, то не подумал о трушности aria2.

Люди в задаче на Github тоже пишут что годами имели проблемы с aria2 и
DHT, который типа просто не работал толком. Мне тоже казалось что как-то
он не очень хорошо работает (но что поделать, если у тебя на руках есть
только магнитная ссылка?). И у меня на практике всё, выходит, хоть
как-то но работало только за счёт peer exchange между клиентами,
которых обнаруживал через трэкер. --dht-entry-point[6] надо использовать.

2 years agoПро top-posting
Sergey Matveev [Tue, 8 Nov 2022 09:12:14 +0000 (12:12 +0300)]
Про top-posting

В рассылке questions@freebsd.org кто-то вновь вбросил про сабжевую тему.
Понравился ответ старожила:

    > The place where top posting makes most sense is the corporate
    > environment where an email thread starts with two (or more) people and as
    > discussion goes on more people are added to weigh in with their thoughts.
    > Done right it looks a bit like this when it arrives in the unsuspecting
    > Fiona's inbox, complete with all the context she needs to see what's going
    > on. She just has to read it message by message from bottom to top.

    No, that's complete utter nonsense because now poor Fiona
    is also forced by others into wasting her brain cycles trying to
    read reverse hodgepodge from bottom to top, gearshifting reading
    direction with every included snippet (which are in top-down form),
    to get the "full context" necessary anyways for her to not make
    professional error or negligience in whatever her duly considered
    reply ends up being. All those wasted burnt brain cycles add up
    across the enterprise.

    > She just has to read it message by message from bottom to top.

    And this here exactly admits that that is indeed the actual
    horrible situation... she "has to read it" all in backwards fashion,
    where "just has to" is a trick phrase to get her to do something
    different, extra burn, unnatural.

    Nothing is read from bottom to top, not books, not newspapers,
    not flyers, not signs, not computer terminals, not spreadsheets,
    nothing. There is no way for bottom-up "done right" because it is
    fundamentally wrong opposite against how humans run language.

    All the "corporate environment" top-post apologists are doing is
    making invalid excuses for their sorry lazy writing behaviours
    random junk tools and random contracts instead of teaching
    their staff to do standard top to bottom like everything else.
    These "environments" also waste endless cycles futzing their
    source code because they don't follow codequette there either.

    It's garbage netiquette perpetuated by the uninitiated,
    the lazy careless, and the impetulent flippants upon others.
    Allow garbage, get garbage, and it's getting worse because of that.
    Computing writing is a responsibility, teach your children.
    Quit top-posting, html'ing, whole msg quoting, etc.
    And get a real MUA that lets you actually see what your
    disgustingly torrid mess of an email looks like for real in
    real 80x25 plaintext... if that doesn't wake you up and tell you
    what's wrong and make you fix your emails, nothing will.

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

Ну и оправдываются за неумение настраивать своё говёное ПО, типа
Microsoft/Apple поделий. Где-то читал что в Outlook была банально бага,
когда метки цитирования (">" всякие) просто пропадали и поэтому люди
даже не могли понять где ответ, а где цитата и поэтому вынуждены были
писать свой ответ сверху, чтобы хоть как-то можно было разделить
информацию из-за этого бага. А это были времена когда обновление софта
означало заказ/распространений версий через дискеты, поэтому подобное ПО
использовалось годами. А так как закрытое, то и самостоятельно исправить
не было возможности.

И ещё заметил что куча людей вообще не разделяет (почему то) такие
use-case-ы как ответ на дискуссионное сообщение и forward писем, мешая
всё в одну кучу.

2 years agoКому нужны скрытые сети? Заметка без романтических небылиц о даркнете
Sergey Matveev [Mon, 7 Nov 2022 13:55:35 +0000 (16:55 +0300)]
Кому нужны скрытые сети? Заметка без романтических небылиц о даркнете

https://habr.com/ru/post/570128/
Статья о том, что в darknet-ах на самом деле крайне скучно и нет никакой
выдуманной "романтики". Подписываюсь под каждым словом автора на этот
счёт! В darknet-ах я не был уже уйму лет, но когда то держал и выходную
ноду Tor, и все свои ресурсы зеркалировал в виде hidden service, и ещё в
I2P, и всё в таком духе. Конечно же из любопытства и смотрел чего ж там
такое есть в этих тёмных сетях. Да ничего такого, чего не найти бы в
Интернете. И тоже как-то ради любопытства на YouTube несколько роликов
видел на тему "ужасов пршедших из darknet". Это было настолько уныло,
настолько позорно что я на это вообще потратил время, что стыдно было
даже отмечать это в блоге.

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

Сейчас мне в целом это всё просто наскучило уже. Реальной практической
пользы о приватности не получить из-за малых размеров anonymity set.
Увеличивать их? Впадлу и не интересно. Практическую пользу от увеличения
доступности стоит и можно получить банально VPN-ом или Yggdrasil-ом.
Сейчас у меня среди всех технологий на эту тему только Yggdrasil и стоит.
Это мне сильно больше нравится, так как Yggdrasil хотя бы эффективно
работает из-за отсутствия какого-либо overhead на попытки анонимизации
участников.

И в одном из комментариев, автор корректно отметил что в Tor большущей
проблемой (фатальной я бы сказал) являются централизованные bootstrap
сервера, о чём умалчивают почти все.

2 years agoРеализация простейшего BitTorrent клиента на Go
Sergey Matveev [Sun, 6 Nov 2022 18:00:22 +0000 (21:00 +0300)]
Реализация простейшего BitTorrent клиента на Go

https://blog.jse.li/posts/torrent/
Интересная статья об основах BitTorrent протокола и как его не сложно
написать с нуля на Go.

2 years agoРостелеком отстойный
Sergey Matveev [Sun, 6 Nov 2022 17:03:33 +0000 (20:03 +0300)]
Ростелеком отстойный

https://habr.com/ru/post/697678/
Сам на практике (cb6bff728abd8e296dd4d10648c3a2b31b7c8343) столкнулся с
тем, что без уведомления и разрешения подключают платные услуги. Любая
монополия превращается в подобное.

2 years agoPuffin Cafe
Sergey Matveev [Sun, 6 Nov 2022 13:21:38 +0000 (16:21 +0300)]
Puffin Cafe

https://www.patreon.com/puffincafe
Рассказы (серия аудиокниг) Роберта Шекли подошли к концу, "Модель Для
Сборки" давно прослушена (3144d39f1903349286e1e81e3d4ca114bf420349).
Обнаружил вот проект Puffin Cafe. Чтеца я уже знаю и он тоже нравится.

2 years agoglocate считаю достаточно стабильным
Sergey Matveev [Sun, 6 Nov 2022 11:27:20 +0000 (14:27 +0300)]
glocate считаю достаточно стабильным

После кучи улучшений в glocate утилите (adca349bb86d9ed357051d2452c1a4f9dff24f7c),
находилось и куча серьёзных багов, когда и база данных портилась и когда
оно ломалось со всякими серьёзными падениями и расчёт размеров косячил.
Но после месяцев постоянного обновления через zfs-diff, где самые разные
случаи и варианты изменений были, сегодня проверил насколько БД
расходится с той, что создана полностью с нуля. Абсолютно никаких
изменений. Теперь я уже абсолютно спокойно могу считать эту утилиту
вполне себе на практике стабильной и без лишней боязни/осторожности
(тесты то лень писать) продолжать использовать.

2 years agoСходил на stoner metal концерт
Sergey Matveev [Sat, 5 Nov 2022 22:56:01 +0000 (01:56 +0300)]
Сходил на stoner metal концерт

https://www.youtube.com/watch?v=Zo4lrjgLbM8
https://www.youtube.com/watch?v=xvh-7AW_xkw
https://www.youtube.com/watch?v=dqKkUi97gPo
Вновь поразился местом проведения. "Клешни" (Clawbar) это буквально
двухэтажный гараж. Среди кучи других гаражей. Концертная "площадка" это
второй этаж, размер которого наверное даже меньше чем моя большая комната
в квартире. При этом шестая часть площади занята дыркой под лестницу на
первый этаж, где бар и туалет. Половина занята музыкантами. Остальное уж
сколько влезет народу. То бишь не больше человек наверное 20, если
выдохнуть и втиснуться между микрофонами. На первой ссылке один из
концертов оттуда.

Stoner и sludge для меня только совсем недавно познаваемое направление в
музыке. И оно мне люто нравится! Выступали сегодня: Clarity Vision,
heXenblatt и Aether. Первые в целом понравились, не прочь ещё что-нибудь
подобное услышать. Последние, честно говоря, на один раз, ибо повторно
уже не хочется довольно нудный пилёж слышать. А вот heXenblatt прям
очень понравились! С удовольствием сходил бы ещё на их выступление. Судя
по всему, они далеко не первый раз живьём играют. Причём на видео
вокалистка без гроула нормального, а сегодня была другая и с отличным,
как на их альбоме в третьей ссылке.

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

И опять я заметил, что вроде только несколько человек наверное сравнимы
или старше меня. Старею...

2 years agoОбзор Skyrim
Sergey Matveev [Sat, 5 Nov 2022 10:51:37 +0000 (13:51 +0300)]
Обзор Skyrim

https://www.youtube.com/watch?v=6-K661MjWcU
Название игры знал, но особо ничего не знал про эту игру, кроме того,
что она типа RPG и вид от первого лица. Слышал что это культовая игра.
Но я и не подозревал насколько она красива! За играми я немного слежу
до сих пор, но меня крайне редко что-то задевает и трогает и почти
никогда меня не тянет во что-то поиграть из увиденного. Но вот Skyrim
хочется запустить просто чтобы порассматривать все эти разнообразные и
богатые красоты.

2 years agoNetflix с оптимизациями для FreeBSD для отдачи 800Gbps с сервера
Sergey Matveev [Thu, 3 Nov 2022 17:41:21 +0000 (20:41 +0300)]
Netflix с оптимизациями для FreeBSD для отдачи 800Gbps с сервера

https://people.freebsd.org/~gallatin/talks/euro2022.pdf
https://news.ycombinator.com/item?id=33449297
Автор статьи в комментариях пишет что почти всё что они сделали отдано в
upstream и уже внедрено в ядро. Он заверяет что, в общем то, можно взять
аналогичное железо нехитрое и у себя получить аналогичные скорости. Для
корневой ФС используют ZFS. Для хранения самого видео, ZFS тут с sendfile-ом
будет не дружна, да и просто избыточна.

2 years agoZFS на OpenBSD
Sergey Matveev [Wed, 2 Nov 2022 18:07:58 +0000 (21:07 +0300)]
ZFS на OpenBSD

https://flak.tedunangst.com/post/ZFS-on-OpenBSD
Разработчик OpenBSD уже начал делать первые шаги в сторону портирования
ZFS на OpenBSD. А то FreeBSD и NetBSD уже поддерживают её.

2 years agoGit алиасы
Sergey Matveev [Wed, 2 Nov 2022 14:10:12 +0000 (17:10 +0300)]
Git алиасы

Прежде я считал что у меня довольно минималистичный git, ибо у коллег и
в блогах вижу кучу всяких алиасов у людей для команд типа "git commit"
или "git fetch". Но, после того как немного порефакторил свои dotfiles
(по другому просто растасовал их в GNU Stow иерархии), увидел что вообще
у меня прилично алиасов стало. И причём все из них вполне себе часто
используются -- ничего не могу удалить за ненадобностью.

* Ga: git add
* Gam: git commit --amend
* Gb: git branch
* Gbr: git branch --remote
* Gc: git checkout
* Gd: git diff
* Gdc: git diff --cached
* Gg: git log -i --grep=$1
* gg: git grep
* ggj: GIT_EDITOR="vim -c copen" git jump grep
* Gl: git log --oneline --graph --decorate=short
* Gld: git log --format=format:'%ai %Cgreen%h%Creset %s'
* Gm: git diff --name-only --diff-filter=M --relative
* Gp: git log --patch
* Gr: git remote -v
* Gs: git show --show-signature
* bindkey на F3 в zsh: git status --short

Плюс alias-ы ну уровне git-а:

    wt = worktree
    unchanged = update-index --assume-unchanged

Плюс три tmux-меню вызывающие fzf для:

    * множественного выбора файлов под управлением git
    * выбора ветки, включая --remote
    * выбора коммита из текущей ветки, подставляя его как @~XXX

И ещё fugitive плагин для Vim, с парой собственных команд.
И ~/.gitconfig на полсотни строк.

2 years agoQUIC vs TCP
Sergey Matveev [Wed, 2 Nov 2022 08:07:10 +0000 (11:07 +0300)]
QUIC vs TCP

https://www.potaroo.net/ispcol/2022-11/quicvtcp.html
Хорошо и интересно написанная статья про сравнение протоколов. Не знал
что в нём максимальное ограничение на размер датаграммы в 1200 байт, что
вроде бы и неприятно, но для задач на которые нацелен этот протокол --
вполне себе сойдёт конечно же.

2 years agoМоё мнение по поводу privacyguides.org
Sergey Matveev [Tue, 1 Nov 2022 13:07:41 +0000 (16:07 +0300)]
Моё мнение по поводу privacyguides.org

Написал тут письмо одному человеку, решил опубликовать ответ:
441c4b64eb0ecffb78ed6429e9a78db7b92880e1

2 years agoСтатья про настройку почтового сервера
Sergey Matveev [Tue, 1 Nov 2022 09:49:33 +0000 (12:49 +0300)]
Статья про настройку почтового сервера

https://habr.com/ru/company/intervolga/blog/696726/
В целом всё нормально описано и нужное упомянуто, но совершенно
некорректно применяется термин MDA. Автор показывает на картинках то,
что MDA это типа штука которая принимает входящую корреспонденцию. Нет,
MTA по сети общается с MTA, а дальше уже опционально MTA может вызвать
MDA для последующей обработки писем. MDA -- действительно, тот кто
положит письма в ящик, но по сети между собой общаются только MTA. Ну от
клиента ещё MRA задействуется опционально. Плюс MDA может быть
несколько: и на стороне сервера, после приёма от MTA, и у пользователя,
после приёма от MRA.

2 years agoОфис Авито
Sergey Matveev [Mon, 31 Oct 2022 19:30:04 +0000 (22:30 +0300)]
Офис Авито

https://habr.com/ru/post/696630/
Был я в Яндексе, в Mail.ru, в ivi -- и по сути вроде бы у всех
всё плюс-минус одинаково как и в этой статье. В Mail.ru правда
ещё вспоминается спортивная площадка, если не путаю.

2 years agoSourceHut банит криптовалютные и blockchain проекты
Sergey Matveev [Mon, 31 Oct 2022 15:31:03 +0000 (18:31 +0300)]
SourceHut банит криптовалютные и blockchain проекты

https://jlelse.blog/micro/2022/10/2022-10-31-kckdc
https://sourcehut.org/blog/2022-10-31-tos-update-cryptocurrency/
Ещё прежде (8ca9d645649e3f7820d28719518be3bcf0e2cfd5) мне SourceHut со
стороны нравился. Теперь нравится ещё больше, ибо хорошее объяснение дали:

    These domains are strongly associated with fraudulent activities and
    high-risk investments which take advantage of people who are
    suffering from economic hardship and growing global wealth
    inequality. Few to no legitimate use-cases for this technology have
    been found; instead it is mostly used for fraudulent “get rich
    quick” schemes and to facilitate criminal activity, such as
    ransomware, illicit trade, and sanctions evasion. These projects
    often encourage large-scale energy waste and electronics waste,
    which contributes to the declining health of Earth’s environment.
    The presence of these projects on SourceHut exposes new victims to
    these scams and is harmful to the reputation of SourceHut and its
    community.

    We recognize that the basic idea of a blockchain, as it were, may be
    generally useful. However, most projects which market themselves
    with blockchain technology are subject to the same social ills as
    cryptocurrency. Consequently, we have chosen to include “blockchain”
    related projects in this ban for the time being.

2 years agogit.includeIf
Sergey Matveev [Mon, 31 Oct 2022 10:10:30 +0000 (13:10 +0300)]
git.includeIf

Наконец-то заиспользовал сабжевый функционал в git-е. Все мои
репозитории касающиеся работы находятся в одной иерархии директорий,
а значит легко глобально к ним применить override своего email-а:

    ~/.gitconfig:
        [includeIf "gitdir:~/work/foo/"]
            path = ~/work/foo/.gitconfig

    ~/work/foo/.gitconfig:
        [user]
            email = stargrave@foo.ru

А то сколько раз уже было, что делаешь рабочий новый коммит, а там
личный email адрес.

2 years agoНавигация по git diff выводу
Sergey Matveev [Mon, 31 Oct 2022 09:13:30 +0000 (12:13 +0300)]
Навигация по git diff выводу

http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=fda0a4182a7d56f57dc128642dc51c0ee3d16131
Почему до меня только сейчас дошло желание упростить навигацию по git
diff выводу? Ведь годами я частенько ищу по "^commit" или "^diff". Пара
строчек в ~/.lesskey и "c" с "f" позволят прыгать до ближайшего коммита
или файла в нём:

    c forw-search \^commit\r
    f forw-search \^diff --git\r

Где-то встречал что люди делают целые интерактивные task-specific
программы в этом less-е, навешивая кучу binding-ов на клавиши его.

2 years agoМноготочие
Sergey Matveev [Sun, 30 Oct 2022 11:24:40 +0000 (14:24 +0300)]
Многоточие

Я, Матвеев С.А., находясь в здравом уме и твёрдой памяти, не являясь
заложником, не подвергаясь шантажу, *за компанию* сходил на рэп-концерт.
20 лет назад на курсах немецкого мне дали альбом сабжевой рэп-группы как
некий эталон рэпа, наказывая чтобы я бережно относился к их диску (дали
на время оригинальный CD). А я на тот момент слушал Nightwish в основном.
Тут предложили в Королёве сходить в кафе-клуб на их выступление. Ну хотя
бы раз в жизни и можно попробовать что это такое.

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

В общем, вообще никак. Музыка -- да её нет, как всем известно, это же
рэп, просто ритм. Слова -- мне совершенно пофиг на слова. Я их не слушаю,
не воспринимаю и не хочу слушать почти нигде. Исключением является
Сектор Газа, ну и Ashen Light с недавних пор
(e4a09572c117d8bc3c9f00a71cdd750f339a35a1). И вновь отметил кардинально
и совершенно иной лексикон у рэперов
(ca23bc85781a099a3f61719c1714957ac20c8e6c) -- уже убеждён что это
основная причина чуждости всей их культуры и мировоззрения. Со сцены
исполнитель Многоточия хвалит собравшийся народ словом "красавы". Не,
нормальное слово, понятное, но в моей голове оно *никогда* не возникнет,
также как я и не могу представить чтобы оно прозвучали на "моих" рок или
метал концертах. Это read-only слово: можем интерпретировать, но чтобы
его где-то употребить -- немыслимо для меня. Ну и масса других выражений
из этой же серии.

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

Впервые был в заведении где на ночь начиналась дискотека. Один раз мы
(грайндкорщики) пересеклись из-за задержки на выходе с толпой молодых
людей на входе в клуб (b4a0fa335945e013e8fc0eaa3982665dc6c316bf,
2eedb3e478f21a190ac4124f420e9626336811d1), но что там внутри происходило
для меня неведомо (кроме как из новостей/статей). Увидел кучу женщин в
вечерних нарядах, которых друг называл "пантерами". Увидел кучу женщин с
накачанными губами -- эх, совершенно мне не понятно что в этом красивого
может быть.

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

Интересный опыт был, не пожалел, но чувствовал себя совершенно не в
своей тарелке.

2 years agoVimL название
Sergey Matveev [Sat, 29 Oct 2022 14:20:57 +0000 (17:20 +0300)]
VimL название

https://stackoverflow.com/questions/4398312/vimscript-or-viml
Оказывается много где люди называют "Vim script", "vimscript" словом
"VimL". Откуда это пошло? Поискал хоть какое-либо упоминание в исходном
коде Vim, но даже близко ничего подобного нет. Бесящий меня "golang"
хотя бы понятно откуда растёт -- как минимум, из доменного имени. А тут
чертовщина какая-то.

2 years agoРегистро-чувствительные адреса IPv6
Sergey Matveev [Fri, 28 Oct 2022 22:48:09 +0000 (01:48 +0300)]
Регистро-чувствительные адреса IPv6

https://weberblog.net/using-case-sensitive-ipv6-addressing-on-a-palo-alto/
Предлагают использовать case-sensitive IPv6 адреса, дабы увеличить их
пространство с 128 до 142 бит. Кроме "a..f" ещё использовать "A..F".
Я подумал что люди там совсем свихнулись, а публикация была 1-го апреля.

2 years agoГлупость в инфобезе
Sergey Matveev [Fri, 28 Oct 2022 12:47:01 +0000 (15:47 +0300)]
Глупость в инфобезе

https://habr.com/ru/company/cloud4y/blog/696078/
И ведь удручает в первую очередь то, что они (админы, программисты
подобных сайтов) искренне убеждены в своей дурной правоте.
"Использование email адреса в качестве пароля является достаточной
защитой, как выяснилось по опросам пользователей". А ещё антивирусная
защита в HDMI кабелях.

2 years agoВывод звука через DisplayPort на NUC
Sergey Matveev [Fri, 28 Oct 2022 11:04:05 +0000 (14:04 +0300)]
Вывод звука через DisplayPort на NUC

В c61de0e6608159911180022d79d1814b00e9809d упоминал что у меня появился
USB-C↔DisplayPort переходник, но я продолжал использовать HDMI, так как
DP (монитор/whatever) не всегда просыпался после энергосберегающего режима.
Но я не проверял выводится ли звук через него. Через HDMI, на NUC, в
отличии от Dell ноутбука -- не выводился, но это связано с драйверами
под мою не самую свежую FreeBSD. И внезапно мой монитор снова стал
колонками! Полтора года у меня не было совершенно никакой возможности
вывода звука не в наушники: даже CD/FM-проигрыватель не имеет линейного
входа.

2 years agoВпервые заметил ECN в выводе tcpdump-а
Sergey Matveev [Thu, 27 Oct 2022 09:28:28 +0000 (12:28 +0300)]
Впервые заметил ECN в выводе tcpdump-а

https://en.wikipedia.org/wiki/Explicit_Congestion_Notification
Случайно обратил внимание на флаги в tcpdump выводе относящиеся к TCP
соединению:

    FOO.XXX > BAR.YYY: Flags [SEW], seq 4222826038, ...
    BAR.YYY > FOO.XXX: Flags [S.E], seq 1754511647, ...

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

2 years agoВзяли интервью короткое на улице
Sergey Matveev [Thu, 27 Oct 2022 07:13:39 +0000 (10:13 +0300)]
Взяли интервью короткое на улице

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

2 years agoТорвальдс о BSD лицензии
Sergey Matveev [Wed, 26 Oct 2022 14:00:24 +0000 (17:00 +0300)]
Торвальдс о BSD лицензии

https://en.wikipedia.org/wiki/BSD_licenses#Reception_and_usage

    Over the years I've become convinced that the BSD license is great
    for code you don't care about. I'll use it myself.
    -- Linus Torvalds at LinuxCon 2016

Если насрать на код, то BSD лицензия замечательна для него.

2 years agoHacktivismo Enhanced-Source Software License Agreement
Sergey Matveev [Wed, 26 Oct 2022 13:43:25 +0000 (16:43 +0300)]
Hacktivismo Enhanced-Source Software License Agreement

https://www.gnu.org/licenses/hessla.html
https://www.gnu.org/philosophy/programs-must-not-limit-freedom-to-run.ru.html
Не является лицензией свободного ПО, ибо содержит условия касающиеся
прав человека и запрета шпионажа/слежки. Статья ещё говорит о том, что
GNU GPL вполне себе тоже защищает от шпионажа, так как доступный для
чтения, изменения и распространения код достаточен для этого.

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

2 years agoВнедряй! Поддерживай! Не ссы!
Sergey Matveev [Wed, 26 Oct 2022 10:47:58 +0000 (13:47 +0300)]
Внедряй! Поддерживай! Не ссы!

https://www.youtube.com/watch?v=-uGdaKFboHo
Основы менеджмента проектов, которые не могу забыть.

2 years agoВыбор ОС unixsheikh-а
Sergey Matveev [Wed, 26 Oct 2022 07:20:10 +0000 (10:20 +0300)]
Выбор ОС unixsheikh-а

https://unixsheikh.com/articles/my-choice-of-operating-system.html
OpenBSD, если речь про безопасность (с чем я не очень согласен, если
только не специально под эту ОС писать ПО для своей задачи), FreeBSD
для остального, особенно когда хочется производительности и гибкость
настройки. GNU/Linux-ы в целом не использует из-за зоопарка в котором
постоянно из-за несогласованности между разными группами что-то да
ломается. Но до момента внедрения systemd, ему нравился Debian. Теперь
Devuan является более Debian-ом чем сам Debian. Как и я, автор напрочь
отказывается иметь дело с RPM-based дистрибутивами. systemd не может
остановится добавлять всё новые и новые фичи, имея сумасшедшие проблемы
со стабильностью и надёжностью и, по мнению автора, он не подходит для
production систем (что и для меня очевидно). У Arch-а лучшая
документация в виде wiki -- с чем тоже согласен. Автор особо отмечает
Artix (в котором штатно можно использовать runit/s6/OpenRC), Void
(который и мне выглядит интересным).

2 years agoMechanized Assault and eXploration
Sergey Matveev [Wed, 26 Oct 2022 07:16:00 +0000 (10:16 +0300)]
Mechanized Assault and eXploration

http://tv-games.ru/news/read/m.html
https://www.youtube.com/embed/ra1bde0p4AM
Упоминал в 5648578d297f9e69a6e9b3da5a9e9885abcc8488 про M.A.X. игру,
которая в детстве имела для меня непреодолимый порог входа. Я вообще
не понимал что происходит и что и как делать. И тут вот автор видео
тоже говорит о пороге вхождения, но стоящей потрясающе хорошей
стратегии. Плюс рассказывает основы игры.

2 years agoСнова увидел солнечное затмение
Sergey Matveev [Tue, 25 Oct 2022 10:49:52 +0000 (13:49 +0300)]
Снова увидел солнечное затмение

Когда работал в ivi, то через мой блокнот, обложкой которого выступает
5.25" дискета, увидел впервые в жизни затмение. Ну и сегодня видел как
половина солнца была закрыта.

2 years agoПоявилась Sofle клавиатура
Sergey Matveev [Tue, 25 Oct 2022 10:26:32 +0000 (13:26 +0300)]
Появилась Sofle клавиатура

https://josefadamcik.github.io/SofleKeyboard/
Подарили мне тут сабжевую клавиатуру. Тоже с полностью чёрными клавишами.
Пока, честно говоря, не очень ещё понимаю может ли она полноценно заменить
текущую клавиатуру. Для кириллической раскладки там буквально просто нет
места, нет целого ряда справа. В принципе мне недостаёт где-то 24 клавиши
на ней. Хорошо 12 это функциональные: я не все использую, оставляю про
запас, но неприятно без них. Четыре стрелочки: вроде бы можно и без них,
но у меня Shift+Up в zsh есть для поиска по истории, который очень
удобен и привык к нему. Так что пока надо думать над раскладкой, ещё не
углублялся в эту тему.

2 years agoauthn/authz
Sergey Matveev [Tue, 25 Oct 2022 08:49:14 +0000 (11:49 +0300)]
authn/authz

https://xeiaso.net/talks/surreal-horror-pam-2021-11-09
Впервые увидел использование сокращения "authn" для "authentication",
"authz", для "authorization". Мне нравится.

    This is Linux and macOS. Those exist but we can't use them because
    we are cursed into using PAM.

2 years agoВремя в macOS
Sergey Matveev [Tue, 25 Oct 2022 08:45:56 +0000 (11:45 +0300)]
Время в macOS

https://www.netmeister.org/blog/epoch.html
Ну конечно же Apple не может просто так использовать Unix эпоху.
Внутри себя для монотонных часов использует отсчёт 2001-01-01.

2 years agoComedy Wildlife Photo
Sergey Matveev [Sat, 22 Oct 2022 09:29:19 +0000 (12:29 +0300)]
Comedy Wildlife Photo

https://naked-science.ru/community/511810
Как же интересно смотреть на животных всех видов!

2 years agoЧистота в доме
Sergey Matveev [Fri, 21 Oct 2022 17:51:23 +0000 (20:51 +0300)]
Чистота в доме

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

2 years ago"Последнее испытание" Роберта Шекли
Sergey Matveev [Fri, 21 Oct 2022 12:49:54 +0000 (15:49 +0300)]
"Последнее испытание" Роберта Шекли

https://fantlab.ru/work200634
Рассказ на 90% состоит из истории о том, что день за днём пропадают
звёзды с неба. Вскоре, когда погасла Альфа Центавра, голос с небес
огласил судный день через пять дней. Люди начали друг другу раздавать
деньги, делать всякие хорошие вещи, помогать друг другу и всё подобное.
Слушая всё это (аудиокнига), даже был разочарован: неужели на всём этом
книга и закончится? Ну не могут быть люди хорошими. Разве что перед
кончиной временно лицемеря. А в день суда, сообщили что решение
откладывается на десять лет. И тут понеслось: никто не хотел уже
продолжать работать, деньги потеряли ценность, начались бомбардировки
США Европы, Китаем США и вообще всеобщая резня и истребление, ведь всё
равно оставались считанные годы до точного конца. И книга как-то сразу
мне очень понравилась, ибо показывает гнусную суть большинства людей,
которые вчера только ходили в церковь помолиться, раздать бедным все
свои сбережения, а завтра готовы убивать любого кто косо посмотрит.

2 years agoБолее легковесный Mark плагин
Sergey Matveev [Wed, 19 Oct 2022 13:57:04 +0000 (16:57 +0300)]
Более легковесный Mark плагин

http://www.git.stargrave.org/?p=dotfiles.git;a=blob;f=vim/.vim/pack/stargrave/start/mark/autoload/mark.vim
http://www.git.stargrave.org/?p=dotfiles.git;a=blob;f=vim/.vim/pack/stargrave/start/mark/plugin/mark.vim
https://www.vim.org/scripts/script.php?script_id=1238
https://www.vim.org/scripts/script.php?script_id=2666
https://github.com/inkarkat/vim-mark
Уже скоро как десять лет использую Mark плагин для Vim. Простое нажатие
\m (leader+m) подсветит слово под курсором. Нажав на другом слове: будет
подсветка другим цветом. Помню что в SQL-е, где полно очень похожих слов
(в единственном и множественном числе например) это очень помогало. Раз
в неделю но обязательно использую этот функционал.

Пока тут обновлял свои плагины, то заметил что у меня очень старая
версия Mark-а. Которая делается Ingo Karkat-ом и является fork-ом от
оригинального написанного Yuheng Xie. Современная версия Mark куда более
фичастая и требует ещё и установки библиотеки вспомогательных функций.
Что мне не нравится. Я ничего не хочу кроме подсветки слова под курсором.
Но современный Mark это тысячи строк vimscript-а.

Оказалось что оригинальный автор вернулся к своему плагину и продолжает
его развитие, явно написав что он в курсе наработок Karkat-а, но в своём
стиле будет продолжать его пилить. И его версия занимает несколько сот
строк всего, умея не только подсвечивать слова. То есть функционала мне
за глаза, существенно более маленькая, единственный файл в plugin
директории, и мне очень нравится его vimscript код компактный.

Понравилась идея того, что :Mark просто прячет все выставленные метки,
но повторное выполнение этой команды их снова покажет. Явного удаления
меток нет, но логично что если начать выставлять метки когда предыдущие
скрыты -- то старые будут удалены.

Пока писал этот пост, то внезапно обнаружил что он не подсвечивает
русские слова. Моментально нашёл место где это не отрабатывает как
ожидалось. Исправил. Дальше захотел портировать на vim9script. Увидел
что много мест с дубляжом кода, плюс проверок на наличие функций,
которые в современных версиях Vim можно бы было убрать. Короче говоря,
глядя на всё это, полностью написал свою реализацию с нуля. Которая
ничего не делает кроме подсветки слов под курсором. С одной стороны оно
есть и написано, только надо причесать. Но я ни разу никогда не
использовал ни подсветку по regexp-у, а поиск по подсвеченным словам
меня даже раздражал.

Моя реализация вышла в 55 строк, не считая объявление цветовой схемы.
autoload (231afdef7064d9a180de16f4ad8b285f85bb6e79) для ленивой загрузки
скрипта. vim9script (1663d9d463041807b70067497fe45249e45b7755) везде.
Использование списка вместо кучи переменных с автогенерированным именем.
Никаких глобальных переменных. Более простое и лёгкое обновление всех окон.

2 years agoBUGS в man locking
Sergey Matveev [Wed, 19 Oct 2022 11:45:52 +0000 (14:45 +0300)]
BUGS в man locking

Единственная ошибка упомянутая в man locking FreeBSD:
    There are too many locking primitives to choose from.

2 years agoСоветские языки программирования
Sergey Matveev [Wed, 19 Oct 2022 10:10:15 +0000 (13:10 +0300)]
Советские языки программирования

https://habr.com/ru/company/ruvds/blog/692594/
Язык Робик:

    ВКЛЮЧИТЬ ОБХОДЧИК;
    ЗАПОМНИТЬ ПРОЦЕДУРУ ПРОВЕРКА_СТЫКА;
        ЕСЛИ ОБХОДЧИК.СТЫК = "НЕИСПРАВЕН" ТО ОТМЕНИТЬ СТЫК;
        ВПЕРЕД 24М;
    ЗАКОНЧИТЬ;
    ПОКА ОБХОДЧИК.ВПЕРЕДИ = "СВОБОДНО" ПОВТОРЯТЬ ПРОВЕРКА_СТЫКА;
    ПОКА ОБХОДЧИК.СЗАДИ = "СВОБОДНО" ПОВТОРЯТЬ НАЗАД 24М;
    ВЫКЛЮЧИТЬ ОБХОДЧИК;

РАПИРА:

    ПРОЦ СТАРТ();
        ВЫВОД: "ЗДРАВСТВУЙ, МИР!";
    КНЦ;

    ЕСЛИ А > В ТО
    1 -> А; ВЫВОД: В;
    ИНАЧЕ
    1 -> В; ВЫВОД: А;
    ВСЕ;

РАЯ (Русский Алгоритмический Язык). Ага, как же, поверим что это не
ответ на язык "Ада":

    алг Сумма квадратов (арг цел n, рез цел S)
       дано | n > 0
       надо | S = 1*1 + 2*2 + 3*3 + … + n*n
    нач цел i
    |  ввод n; S:=0
    |  нц для i от 1 до n
    |  |  S := S + i * i
    |  кц
    |  вывод "S = ", S
    кон

2 years agoНовый жаргон программистов
Sergey Matveev [Wed, 19 Oct 2022 09:59:55 +0000 (12:59 +0300)]
Новый жаргон программистов

https://blog.codinghorror.com/new-programming-jargon/
Как дополнение к старому доброму https://www.catb.org/jargon/
Yoda conditions, egyptian brackets, stringly types, heisenbug,
Higgs-Bugson, nopping, hindenbug, hydra code, Loch Ness monster bug,
protoduction, bicrement, jenga code...

2 years agoПешеходы и водители Королёва
Sergey Matveev [Tue, 18 Oct 2022 07:17:43 +0000 (10:17 +0300)]
Пешеходы и водители Королёва

https://lenta.ru/news/2022/10/18/art_kosm/
Водитель сбил пешехода. Но раз это Королёв, то это не просто случайные
люди, а водителем оказался космонавта, пешеходом глава одного из проектов
Звёздного городка.

2 years agoРассказы Шекли. Брачные игры Вселенной
Sergey Matveev [Tue, 18 Oct 2022 07:06:51 +0000 (10:06 +0300)]
Рассказы Шекли. Брачные игры Вселенной

https://ru.wikipedia.org/wiki/%D0%A8%D0%B5%D0%BA%D0%BB%D0%B8,_%D0%A0%D0%BE%D0%B1%D0%B5%D1%80%D1%82
https://fantlab.ru/work30640
Сейчас читаю одну здоровую фантастическую книгу, довольно интересную, но
большую. Параллельно с ней прочитал фэнтезийную "Первое правило
волшебника" (77fc50ace832f87bb83690f3e88a0bee5b415e2e). А теперь достал
сборник различных коротких рассказов Шекли, с которым я конечно же и
прежде был знаком. Как же мне неописуемо нравятся его рассказы! И как же
мне это всё больше нравится чем yet another fantasy story!

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

Хотя пишут что не факт что это рассказ самого Шекли. Но в его духе!
Просто он в начале сборника находится, поэтому его и выделил уже.

2 years agoЯ делал это, когда ещё не было модным и обязательным
Sergey Matveev [Tue, 18 Oct 2022 06:51:47 +0000 (09:51 +0300)]
Я делал это, когда ещё не было модным и обязательным

На работе за последние года много указов и распоряжений о том что
запрещено использовать WhatsApp, открывать всякие почтовые вложения
непойми от кого, иметь в виду какие страны выдают людей США по запросу,
какие недружественны и имеют санкции на РФ. В армию можно взять обычный
сотовый, не смартфон.

А я ведь подобному всему следовал когда ещё не было никаких подобных
рекомендаций и указов. И так было очевидно что любая поездка в страну
НАТО например, даже до того как РФ начала себя активно защищать, всегда
могла оказаться билетом в один конец. Отец аналогично считал и говорил
что на кой чёрт рисковать поездками к пособникам США?

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

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

2 years agoПодпись Git коммитов/тэгов SSH-ключами
Sergey Matveev [Mon, 17 Oct 2022 10:46:12 +0000 (13:46 +0300)]
Подпись Git коммитов/тэгов SSH-ключами

https://calebhearth.com/sign-git-with-ssh
https://blog.dbrgn.ch/2021/11/16/git-ssh-signatures/
Как альтернатива OpenPGP, можно подписывать SSH-ключами.
Подписывать ими произвольные данные можно также через ssh-keygen
(e6184094fc1f16c6d0648dfb62b02e95c15b4136).

Только сейчас обратил внимание на allowed signers файлик, требуемый для
этого. Вот именно таким должно быть управление доверием: просто на
каждой строке указывается публичный ключ (ed25519 то компактные) и
identity. Опционально можно и время жизни задать или третье доверенное
лицо. Гибко, не форсирует PKI или бизнес решения типа validity.

2 years agoASN.1 парсинг в libKSBA
Sergey Matveev [Mon, 17 Oct 2022 08:19:25 +0000 (11:19 +0300)]
ASN.1 парсинг в libKSBA

https://lists.gnupg.org/pipermail/gnupg-users/2022-October/066273.html
Серьёзная уязвимость в библиотеке при парсинге ASN.1. Эх, какой десяток
лет ASN.1 используется и всё равно продолжают находится серьёзные баги
при его парсинге. Брюс Шнайер в своей "Прикладной криптографии" уже
давно писал что при возможности лучше ASN.1 не использовать, так как
будут атаки на библиотеки работы с ним.

2 years agoПро endianness работу в Си
Sergey Matveev [Sun, 16 Oct 2022 10:17:41 +0000 (13:17 +0300)]
Про endianness работу в Си

https://commandcenter.blogspot.com/2012/04/byte-order-fallacy.html
В b45f896af5ca60802cbae0a00d8223857a771eba я давал ссылки на тему про
endianness конвертацию в Си. Но на днях на работе мне прислали вопрос
уверен ли я что с endianness нет проблем в таком куске кода тривиальном:
    size_t len = (size_t)(data[2] << 8) | data[3];
Отвечаю что возможно я какой-то очередной подвох в Си не знаю, но что в
нём не так? Мне кидают информацией об endian.h и be16toh(). Отвечаю что
в курсе их существования, но:

* конкретно у be16toh менее удобный API (указатели все эти)
be16dec, который удобен для использования, не факт что есть в glibc,
  как например в нём, как оказалось, не было be64dec
* endian.h include не портабельный: в BSD системах это sys/endian.h
* плюсом будет только отсутствие *нескольких* арифметических операций
  при запуске на BE-архитектуре. Если бы речь шла про миллионы пакетов в
  секунду, то возможно можно было бы начать задумываться об этом, но
  речь про один пакет за нескольких секунд (это просто парсинг его размера)

Коллега никакого ответа на это так и не дал, только повторив что в одном
случае порядок меняется, а в другом нет. Но до сих пор не знаю к чему
этот ответ.

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

Позже вспомнил про статью Роба Пайка, в которой он тоже считает всё это
фигнёй. Мол, если в коде есть #ifdef BIG_ENDIAN, то это не порядок.
Вместо того, чтобы написать:

    i = (data[0]<<0) | (data[1]<<8) | (data[2]<<16) | (data[3]<<24);

такие люди будут писать что-то типа:

    i = *((int*)data);
    #ifdef BIG_ENDIAN
    i = ((i&0xFF)<<24) | (((i>>8)&0xFF)<<16) | (((i>>16)&0xFF)<<8) | (((i>>24)&0xFF)<<0);
    #endif

или, для случая с моим 16-бит кодом:

    #include <stdint.h>
    #ifdef __FreeBSD__ || ...
    #include <sys/endian.h>
    #elif __linux__
    #include <endian.h>
    #endif
    [...]
    uint16_t *lenp = (uint16_t *)(&data[2]);
    size_t len = (be16toh(*rtcplen);

Что, очевидно, гораздо больше года. Плюс не везде возможно целые числа
адресовать по любому адресу (выравнивания).

    In fact, byte-swapping is the surest indicator the programmer
    doesn't understand how byte order works. Why do people make the byte
    order mistake so often? I think it's because they've seen a lot of
    bad code that has convinced them byte order matters.

Plan 9 вообще без единого, как говорит Пайк, platform-specific #ifdef-а
был написан.

2 years agoСтатья про WebRTC
Sergey Matveev [Sun, 16 Oct 2022 10:00:06 +0000 (13:00 +0300)]
Статья про WebRTC

https://habr.com/ru/company/oleg-bunin/blog/660693/
Эх, количество абсолютно безграмотных и неверных утверждений зашкаливает
настолько, что рекомендовать статью невозможно.

* "Именно поэтому высокоскоростные транспорты часто реализуют поверх UDP
  протокола". Как же часто я стал, после стандартизации QUIC и HTTP/3
  видеть подобные бредни. Люди видят что UDP более лёгкий и поэтому
  передавать данные по нему можно эффективнее и типа именно поэтому
  появился HTTP/3 который так лучше работает на смартфонах в условиях
  WiFi и сотовой связи. Хочется и написать чем оно не верно, но понимаю
  что смысла нет, ибо любые базовые прочтения даже Wikipedia на тему UDP
  и TCP у вменяемого человека должны всё поставить на свои места. А RTC,
  как и весь VoIP, использует UDP только по причине низкой задержки и
  ненужности гарантированной доставки, что вроде бы очевидно должно быть
* "Вообще, NAT еще обеспечивает приватность и делает всякие хорошие штуки."
  Ну как мне после этого хоть что-то положительное можно сказать про автора?
* "При установке WebRTC-соединения вы сначала пробуете TURN, потом
  STUN." -- наверное зависит от конкретного WebRTC, но вообще-то
  официальный от Google делает как-раз наоборот. Делать TURN изначально
  -- даже нелогично, ибо это очень ресурсоёмкая операция, да и TURN
  сервер в общем случае не обязан присутствовать
* "Чтобы решить эту проблему, используют лайтовую версию TLS" -- это вот
  в каком месте DTLS "лайтовее" чем TLS??? Я больше осведомлён только
  про DTLS 1.3, но это вообще то самый пресамый обычный TLS, к которому
  наоборот добавлены дополнительные поля и более сложная машина
  состояний, плюс с дополнительными ACK-пакетами. Что что, но DTLS это
  более усложнённая версия TLS со всех точек зрения
* Ничего не сказано про то, что SRTP/SRTCP трафик отправляется ВНЕ DTLS
  соединения. Точнее всё сказано так, что RTP/RTCP как-будто работают
  аналогично SCTP внутри DTLS
* "Напомню, что WebRTC data channels работают поверх UDP. Это более
  легковесный протокол, чем TCP, и скорее всего используя его, вы
  получите выигрыш по скорости." -- рехнуться можно от такого заявления.
  Data channels это SCTP поверх DTLS UDP датаграм. SCTP существенно
  более громоздкий, сложный и навороченный протокол чем TCP. И это я
  закрываю глаза на то, что оно поверх DTLS ещё.
* "Возникает вопрос, а чем это лучше Websocket? Ответ: WebSockets
  работает поверх TCP, поэтому может быть медленнее" -- окончательное
  понимание того, что автор абсолютно не сведущ в причинах использования
  UDP. Просто ужас
* Про работу с кодеками уже почти ничего не читал

2 years agoПочему TCP/IP, а не просто IP?
Sergey Matveev [Sun, 16 Oct 2022 09:53:20 +0000 (12:53 +0300)]
Почему TCP/IP, а не просто IP?

https://stackoverflow.com/questions/24337177/why-tcp-ip-are-mentioned-together
https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Historical_origin
Всегда бесило когда говорят "TCP/IP", так как сразу же рождается вопрос
"а без TCP нельзя что ли?". Интернет это только про IP вообще-то. Но,
это просто исторически так сложилось, так как при разработке Internet
Protocol Suite центральной вещью в ней был именно TCP, ведь именно он
обеспечивает гарантированную доставку в сетях, а тема пакетной передачи
уже не столь важна для конечного пользователя. Так что логика есть.

2 years agoОткрытая государственная лицензия
Sergey Matveev [Sat, 15 Oct 2022 17:29:45 +0000 (20:29 +0300)]
Открытая государственная лицензия

http://publication.pravo.gov.ru/Document/View/0001202210120022?index=10&rangeSize=1
https://spbit.ru/news/n216164/
В 2fcded0750f1250134c7df3638b22b807f4717d0 уже вёл речь про гос лицензию.
Но тут какая-то другая версия теперь. Решил повнимательнее почитать её.

- Используется терминология бизнесменов ("открытое" ПО, хотя по сути там
  речь вполне про свободное, насколько вижу)
+ По моему, грамотное определение и исходного и объектного кода. Это
  хорошо, ибо обфусцированный JavaScript явно не может быть "исходным кодом"
+ Должна поставляться копия лицензии и полный attribution без изменений
+ Лицензиат не получает никаких дополнительных прав на программу
- Пункт 2.6 говорит что "право использования Программы по настоящей
  Лицензии предоставляется безвозмездно". Я далёк от юридических вещей и
  языка, но я это интерпретирую как "программа предоставляется бесплатно".
+ Явно сказано что исходный должен должен прилагаться к программе, или
  должна быть указана возможность его получения без проблем. В GPLv3
  аналогичные пункты есть
+ 4-ые пункты являются почти калькой 4-х свобод свободного ПО
? В конце явно упоминается что используется право РФ

Вот вроде бы всё удовлетворяет критериям СПО, но напрягает пункт про
безвозмездное использование. Вроде бы написано что оно относится только
к "Программе", что вроде бы не включает "Модифицированную программу".
Так что если я хочу за деньги доработать Программу, то вроде бы могу. Но
зачем этот пункт тогда? Для того чтобы на *уже* написанных за бюджетные
средства Программы не стричь снова денег? Но мне кажется я просто не
понимаю что тут хотели сказать.

Требование обязательного предоставления исходного кода мне нравится.
Это не BSD-like и не Expat-like permissive лицензии.

Но также в самом документе явно говорится о том что лицензия совершенно
не copyleft-ная. Что, конечно же плохо, ибо оно не заботится о том,
чтобы и основанное на нём ПО было свободным.

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

2 years agoНациональный репозиторий открытого кода
Sergey Matveev [Sat, 15 Oct 2022 17:17:10 +0000 (20:17 +0300)]
Национальный репозиторий открытого кода

https://www.opennet.ru/opennews/art.shtml?num=57909
Планируют сделать репозиторий открытого кода у нас. Насколько понимаю,
целью тут является обмен кодом созданным на бюджетные средства. Это
хорошо конечно.

А если целью является создание местного аналога GitHub, то я не понимал
и до сих пор не понимаю, хотя мне аргументы и приводили какие-то, зачем
это надо. Я считаю что вполне себе хватило бы просто аналога wiki
страничек типа Free Software Directory: https://directory.fsf.org/wiki/Main_Page

Поднять свою инфраструктуру для разработки ПО можно легко, быстро и без
особых затрат, так как компьютеры дешёвые, Интернет у нас почти
бесплатный, можно и дома *достаточно* надёжно хоститься. Ну или на VPS,
которые тоже крайне дёшевы. Тьма проектов вообще ничего не требует кроме
git-репозитория. На полном серьёзе мало кому нужны монструозные огромные
CI/CD-ready решения. А кому нужны: всегда найдёт время и специалистов
для поднятия локально, чтобы не зависеть от дурости, идиотизма и
безответственности сторонних организаций.

Централизованное решение могло бы быть интересно только как источник
знаний о вообще существовании того или иного ПО. Возможно как архив, yet
another зеркало для него, ведь домашний сервер в любой момент может
пропасть.

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

2 years agoSuckless решения для screencasting и VoIP
Sergey Matveev [Sat, 15 Oct 2022 14:30:33 +0000 (17:30 +0300)]
Suckless решения для screencasting и VoIP

https://lists.suckless.org/dev/2210/34986.html
https://lists.suckless.org/dev/2210/34987.html
Искал я тоже прежде какие решения по VoIP вообще бывают, а также по
показу экрана и видеоконференции. Suckless ничего не нашёл. Точнее был
baresip, который даже CLI, но вроде так и не вышло у меня соединить два
компьютера видеосвязью. Возможно потому что на тот момент я не очень ещё
знал устройство SIP/RTP-экосистем и поэтому что-то упустил в firewall и
NAT настройках.

По сути, у меня всё свелось к тому, что ничего лучше, проще и надёжнее
чем Mumble нету. Напрягало что его murmur сервер требует Qt, но есть
реализация на Go, которую я на практике так и не смог проверить ещё, так
как нужны сторонние люди для этого. (X11)VNC штука рабочая, проблем не
помню. А вот решений ещё и для видеосвязи я не нашёл толком. Можно
сваять отправку мультимедиа траффика через ffmpeg, но для real-time оно
не шибко подходит из-за буфферизации.

WebRTC экосистема -- полный ужас в плане сложности. Стэк протоколов
просто огромен! Но для GNU/Linux можно использовать его example
клиент/сервер: вроде бы работает, но даже одна сборка всего этого WebRTC
стэка -- полностью анти-suckless решение. И как это собрать про FreeBSD
понятия не имею, ибо сплошной OS-related hardcode в сборочной системе.

Почему за столько нет так и не написали ничего простого и работающего,
типа Mumble но с видео передачей? Видимо нафиг никому не надо было. У
меня ни разу в жизни *серьёзной* надобности именно в видео связи не
возникало. Если надо что-то обсудить по коду, то можно по ssh+tmux, vnc,
asciicast-у показывать свой терминал.

2 years agoНовое блюдо в моём домашнем меню
Sergey Matveev [Fri, 14 Oct 2022 17:38:57 +0000 (20:38 +0300)]
Новое блюдо в моём домашнем меню

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

2 years agoInquisitor
Sergey Matveev [Fri, 14 Oct 2022 06:43:13 +0000 (09:43 +0300)]
Inquisitor

https://www.youtube.com/watch?v=mD_ch49vDtw
https://sourceforge.net/projects/inq/
LTT рассказал о том, что они начали писать программу для автоматизации
тестирования железа. Сразу вспомнил про проект Inquisitor, которым я
занимался много лет на своей первой работе. Уже десять лет толком его
никто не трогал, но SourceForge говорит что до сих пор кто-то его образы
ещё скачивает.

Не я был его архитектором, но в целом то всё грамотно было сделано.
Задача проста: максимально автоматизировать процесс проверки собранного
сервера (тогда в компании ETegro Technologies). Нужно убедиться что всё
установленное в него железо соответствует заказу (собирают же это всё
люди, так что можно перепутать компонент или недовставить его). Нужно
убедиться что каждый компонент работает. Причём под работой
подразумевается реальная жизнеспособность под нагрузкой. Нужно убедиться
что, хоть железо и работает, но не выходит при этом за пределы
допустимых температур например. Нужно возможно предустановить какую-то ОС.

Все серверы после сборки клались в стойки и подключались всеми своими
Ethernet-ами к коммутаторам и KVM. Тестировщик должен включить машину и
настроить автоматическую загрузку по сети. Все коммутаторы подключены к
одному единственному серверу Inquisitor, на котором запущены DHCP, TFTP,
NFS для PXE загрузки. Компьютер загружался в GNU/Linux, init-ом в
котором был скрипт от Inquisitor экосистемы. Ядро конечно же было
самосборное, чтобы работало на огромном разнообразии железа. Если
возникала необходимость загрузки какого-то особенного, то в PXE/TFTP
меню была возможность выбора других образов, которые уже готовили
программисты (в том числе я).

Клиентская часть Inquisitor была почти полностью написана на POSIX
shell. На сервере был Ruby On Rails, с которым клиент мог
взаимодействовать через HTTP API, дёргаемый curl-ом из скриптов.

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

После запуска ОС и Inquisitor клиента, тестировщик берёт сканер
штрих-кодов и сканирует свой badge с идентификатором тестировщика,
сканирует наклейку с серийным номером на сервере и наклейку полки в
стойке. Сканер по радиоинтерфейсу подключён через COM-порт с Inquisitor
сервером. Каждый штрих-код, кроме номера, содержит и обозначение класса
(тестировщик ли это, полка или сервер). Демон, написанный на Ruby,
получив триаду из таких номеров, знает кто тестирует какой сервер и где
он находится (в стойке).

Каждая полка в стойке имеет несколько Ethernet кабелей. Уже не помню
сколько. То ли четыре, то ли больше. Чтобы ими можно было заткнуть все
сетевые карты большинства серверов. И все эти кабели для каждой
отдельной полки находятся в выделенном VLAN-е. Зная местоположение
полки, можно детерминировано (просто hardcode) понять к какому VLAN-у
они относятся.

Клиент, проведя self-id процедуру, если когда-то уже тестировался
прежде, то узнает свой id от сервера по данным из БД. Если же он не
тестировался, то запускается скрипт, слушающий на Ethernet адресах
пакета с данными от сервера. Когда тестировщик всё отсканировал, то
сервер по broadcast (не помню уже так ли это) адресам посылает сообщение
клиенту с серийным номером сервера.

Дальше шёл процесс detect-ов. Нужно было понять что за компоненты
установлены в железе. Это всякие shell-скрипты, запускающие сторонние
утилиты, парсящие их вывод, формирующие XML-ки с информацией о железе.
Класс железа (CPU/HDD/etc), vendor, серийный номер (самое главное) и
версия прошивки (опционально конечно же). lshw утилита была основной что
выдавала кучу информации. Einarc утилита выдавала знание о наличии BBU
(battery backup unit) у RAID контроллеров. impitool выдавала информацию
о BMC и шасси, материнке, платформе, источнике питания и SCSI backplane.
Банальный /proc/cpuinfo что-то говорил о CPU (не помню уже чем
отличается от вывода lshw). Что-то определялось через HAL (его же вроде
уже нет в современных GNU/Linux?). Информация о памяти бралась из IPMI,
DMI, SPD, в худшем случае /proc. USB устройства узнавались гуляя по /sys.

Всё это то ли формировало XML-ники, то ли каждый раз дёргало серверные
методы добавления компонентов. Компьютер уже мог представиться своим
серийным номером при этом. Во время работы компьютер регулярно делал
(curl-ом) heartbeat на сервер.

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

После первоначальных детектов, от тестировщика ожидается подтверждение
того, что процесс тестирования можно запустить. Он идёт на страницу
компьютера, уже зарегистрированного в БД (MySQL был) под своим серийным
номером. Тестировщику показывается страница с результатами детектов
(очень человекочитаемый формат, похожий на то, как описывается железо в
Интернет-магазинах) и с информацией из 1С БД (которая пересасывалась
скриптом) из заказа. И человек сравнивал и оценивал всё ли соответствует
ожиданиям. Ведь формат полей заказа 1С относительно произвольным мог
быть. Если что-то не так, например что-то не установлено, или перепутано
или возможно просто не работает и поэтому не определилось, то обычно
надо сервер достать с полки и корёжиться с ним дальше. Снова установить
на полку и включить. Если сетевые карты, материнская плата не менялись,
то self-id уже пройдёт без участия человека. Тестировщик поменяв
компонент, просто ставит в стойку, включает и идёт за своё рабочее
место, ожидая жёлтого цвета полки, и снова оценивая результаты детектов.

Позже были добавлены и software-detect-ы. Это, в первую очередь, нужно
только архивного хранения знаний под чем именно тестировался компьютер.
Версия Linux, его командная строка, версия bonnie, ФС по умолчанию,
flac, GNU ассемблера, GCC, gzip, iozone, mencoder, oggenc, openssl,
p7zip, speexenc, tar, x264 и наверное ещё чего-нибудь.

Когда детекты подтверждены тестировщиком, то запускается, собственно,
сам процесс тестирования. У сервера есть свой индивидуальный план
тестирования, так называемый профиль (profile). Это просто навсего
XML-ка в которой указаны какие тесты надо запустить и с какими опциями.
Есть профили по умолчанию. Профили можно массово применить к целой
партии компьютеров. Можно индивидуально (всё через web-интерфейс)
выставить в любое время. Профиль по сути просто говорит какие
shell-скрипты надо запустить и с какими параметрами.

Каждый тест это shell-скрипт, в комментариях которого указана
метаинформация, объясняющая какие параметры тестирования можно задать.
Тестов написано с полсотни. Например тесту bonnie можно передать
используемую ФС, кол-во файлов, размеры min/max файлов, и т.д.. Тесту
dhrystone можно передать только время тестирования. Какие-то тесты
вообще не принимают аргументов/опций. "Настоящие" тесты: bonnie,
BYTEmark какой-то, burnK7/burnP6, dhrystone, whetstone, smart тест,
hdparm, dd, iozone, linpack (тот самый, которым суперкомпьютеры все
тестируют), memtester, mencoder в память или HDD, STREAM,
stressapptest от Google, stress-compress (параллельное создание архивов
больших на дисках), unixbench, и т.д..

Какие-то тесты загружают только один или несколько компонентов. Какие-то
нагружают только целочисленные АЛУ процессора, не трогая кучу других. В
идеале надо нагрузить всё всё всё под завязку и максимум, что не
тривиально. Помню что linpack являлся лучшим по нагрузке CPU с памятью
одновременно. badblocks тест не сказать что является нагрузкой для
дисков, но он хотя бы пройдёт полностью по всей поверхности диска,
затронет блоки. Поэтому тест HDD это несколько тестов.

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

Есть тесты сетевых карт, где на каждой сетевой карте настраивается
IP-адрес и скачивается что-то большое и что-то загружается, затем
сравнивая MD5. Для меня было удивительным, но действительно бывает так,
что пакеты могут сетевухой биться и портиться. Типа вроде бы всё и
работает, но данные портятся.

Есть тесты FDD и ODD (optical disk drive). Причём тесты могут требовать
вмешательства тестировщика. Такой тест curl-ом сообщает серверу о том,
что надо позвать человека. На экране он показывает сообщение типа
"insert FDD/ODD/whatever disk и нажмите enter". Оптические диски обычно
заранее вставлялись. Тест на чтение заключается в чтении заранее
известного диска и сравнивании с указанным в профиле MD5. Тест на запись
диска была тоже.

badblocks команда работает только с одним диском. Поэтому была написана
обёртка которая визуализировала прогресс и процесс тестирования всех
этих дисков. Вроде бы даже тесты умели вызывать SAS/SES команды мигания
лампочки рядом с неисправным диском.

Но badblocks это про тестирование отдельного диска. А как быть с
RAID контроллерами-ами? Для них была написана Einarc утилита. Это и
"einarc is not a raid controller" и "ein arc" (единственный/один arc).
Это обёртка над существующими разнообразными проприетарными утилитами
vendor-ов для управления своими контроллерами. Она за своим единым API
прятала весь разный интерфейс этих утилит. Einarc утилите можно было
сказать: покажи мне список дисков, из вот этих выбранных сделай мне
RAID1. И одним из тестов является просто запуск einarc-а с указанными
параметрами. Можно было просто сказать: сделай "оптимальный" массив и, в
зависимости от кол-ва дисков, будет создан тот или иной уровень RAID-а.
А следующим тестом уже будет запущен процесс работающий с созданным
массивом. В конце профиль мог вызвать einarc с разрушением всех
созданных массивов, чтобы клиенту не подсовывать что-то настроенное. Или
наоборот можно было заранее это сконфигурировать, ведь процесс rebuild
длительным может быть и имеет смысл его заранее запустить.

Почти всегда также требовалось и обновление прошивок железа на что-то
посвежее. Это отдельные тесты. Для прошивки BIOS тест сообщал серверу
что при следующей загрузки сервера по сети надо подсунуть заранее
приготовленный тестировщиком образ дискеты. Сервер для заданных
MAC-адресов создаёт одноразовые файлы для PXE загрузки. Удалял их вроде
подправленный TFTP сервер. То есть: загрузка по сети, детекты, получение
профиля тестирования, которое уже пропускало успешно прошедшие тесты,
запуск "теста" прошивки, которая curl-ом сообщала серверу о PXE
загрузке, перезапуск, загрузка с one-time образа дискеты, в которой
autoexec запускал процесс перепрошивки, снова перезагрузка, загрузка PXE
и снова Inquisitor клиента, получение профиля, запуск теста прошивки,
сверка что детекты определили обновлённую версию ПО, сообщение серверу
что тест прошёл успешно. Перепрошивка RAID/HBA-контроллеров делалась
через einarc утилиту тоже и перезагрузка не нужна.

Через перезагрузку запускался и memtest86. Уже не помню как он сообщал
что что-то пошло не так. Предполагаю что если была ошибка, то он не
перезагружал компьютер и тестировщик уже просто по времени/timeout-у
проверял что там на экране сервера. А если всё успешно, то memtest86
просто перезагружал компьютер.

Тесты могли сообщать (curl запрос) серверу о прогрессе тестирования.
Тоже парся вывод команд или просто сообщая что тест займёт 300сек, если
так было указано в профиле. И уже сам сервер, видя что 300сек уже давно
прошли -- мог окрасить в красный цвет полку.

Часть тестов была benchmark-ами. Тесты по кодированию видео mencoder-ом
(помню что это было перекодирование Big Buck Bunny) и нагружали CPU/RAM,
но и отдельными curl API вызовами публиковали результаты benchmark-ов.
Во-первых это и просто интересно: увидеть насколько такой-то AMD
Bulldozer мощнее такого-то Xeon, но и позволяет выявить аномалии, типа
работоспособности железа, но почему-то очень низких показателей
benchmark-ов. Возможно проблемы с CPU или теплоотводом и он постоянно в
перегретом режиме, что можно считать неисправностью. Хочется прогнать
только benchmark-и? Просто надо указать профиль с benchmark-ами.

Кроме тестов, параллельно ещё запускались мониторинги. Это тоже
shell-скрипты которые просто регулярно отправляли температуру процессора
(через sensors, IPMI), обороты вентиляторов, loadavg, SMART информацию
дисков, скорость чтения ODD. И web-интерфейс на основе этого строил
графики. Какие-то тесты отправляли собственные мониторинги тоже.
Тестировщик глазами должен был пробежаться по этим графикам (просто
Gnuplot-ом построенные из данных MySQL). Тут можно или высокие
температуры увидеть, или неожиданно низкие скорости или аномальное
поведение какого-то одного сервера из целой партии (при его прочей
работоспособности).

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

Позже был сделан вариант Inquisitor в LiveCD исполнении. Типа когда надо
провести какие-то работы по поддержке у клиента, не имея возможности
привезти сервер и подключить к стойке. По сути это была просто
client-only версия, загружаемая с диска, где на лету, на основе
метаинформации из shell-скриптов тестов/мониторингов/прочего
генерировались dialog-овые полноэкранные TUI окна, где можно было
задавать параметры тестирования. Командую строку можно было не
использовать: всё через менюшки. Точно уже не помню, но вроде бы можно
и, как минимум, детекты было выгрузить на подмонтированный накопитель.
А экран показывал GNU Screen, в котором вроде бы и мониторинги
показывались пользователю сразу же. Про tmux я тогда не знал, но Screen
уже невзлюбил. И вообще, учитывая что ядро имело много патчей и
драйверов, и что из коробки сразу много всяких полезных утилит, в том
числе сетевых -- диск был полезен и сам по себе, как админский
инструмент.

Особняком ещё стояли тесты которые могли просто накатить dd или
partimage образ системы на диски. Хочется на массив? Просто в профиль
надо добавить соответствующий "тест" с нужными параметрами. Образы,
соответственно, брались по NFS. Но как-то возникла проблема: когда стоят
несколько десятков серверов, на которые надо залить несколько сотен
гигабайт данных, то бутылочным горлышком становится сам NFS сервер
Inquisitor. Коммутаторы стояли на 100Mbps, но всё равно такое количество
параллельных клиентов заставляло трудится дисковый массив сервера. И я
помню как общаясь с техдиром, я просто бросил фразу о том, что надо как
порнографию по BitTorrent-у распространять эти образы. Секунды тишины,
пока оба мы переваривали это в голове, и осознание того, что ведь
действительно для этой задачи BitTorrent подходил бы как никогда лучше.
В итоге, просто навсего был поднят BitTorrent сервер, с патчем, который
не игнорировал 10/8 адреса локальной сети (да, на тот момент всё было на
IPv4, древние времена) и самый обычный ctorrent "скачивал" образ прямо
поверх блочного устройства (патч к ctorrent). Серверы друг другу
помогали всё это скачать. Стоечная сеть максимально утилизировалась.

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

Тогда я воочию увидел каким же лютым говнищем стали Seagate диски. С
той работы я вообще не допускаю использование Seagate-ов где бы то ни
было. Компания которая не рассматривается как вариант.

2 years agoПрочитал "Первое правило волшебника" Терри Гудкайнда
Sergey Matveev [Thu, 13 Oct 2022 07:58:31 +0000 (10:58 +0300)]
Прочитал "Первое правило волшебника" Терри Гудкайнда

https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B2%D0%BE%D0%B5_%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BE_%D0%B2%D0%BE%D0%BB%D1%88%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B0
Чем ближе к концу, тем меньше мне нравилась книга. Оооочень всё затянуто!
Точнее то, вроде бы, вполне себе шустро идёт действо и сюжет, а потом на
многие часы (аудиокниги) идёт описание каких-нибудь пыток. И чем дальше,
тем больше я понимаю что проходит тьму времени, а персонажи типа топчутся
на месте. Не удивительно что это всё можно растянуть на множество книг.
Не моё, совсем.

2 years agoЗнакомлюсь с Bathory
Sergey Matveev [Wed, 12 Oct 2022 18:29:20 +0000 (21:29 +0300)]
Знакомлюсь с Bathory

https://en.wikipedia.org/wiki/The_Return%E2%80%A6%E2%80%A6
https://en.wikipedia.org/wiki/Under_the_Sign_of_the_Black_Mark
https://en.wikipedia.org/wiki/Blood_Fire_Death
https://www.youtube.com/watch?v=lHbqvJoD_C0
https://www.youtube.com/watch?v=DCXVpj7uRes
https://www.youtube.com/watch?v=6sf53EYdAyg
https://www.youtube.com/watch?v=RkMeOOt6B2s
https://www.youtube.com/watch?v=C38McphHU5c
https://music.youtube.com/watch?v=GpWgR8KBSVg
Три альбома Bathory, которые типа все из себя прародители шведского
black metal, давшие и начало норвежского -- очень круты. Хочется в
цикле слушать снова и снова. Впечатляет качество записи, качество
сведения. Обычно альбомы ранее 2000-х, тем более 1990-х, не очень
тянет слушать из-за качеств записей.

А на "Blood Fire Death" альбоме есть трэк "For All Those Who Died",
вызвавший сильнейшее дежавю. Я точно где-то прежде уже слышал эту
мелодию, но точно не вокал. Оказалось что Peccatum исполняли
(daf9652584f32e8620a0d4c10da25462fbbe2a79). Переслушиваю их исполнение
и вот никогда невозможно спутать вокал Ihsahn-а с кем-либо ещё.

В одноимённом трэке "Blood Fire Death", как и на всём альбоме, круто
выделяется вокал где половина времени типа он "чистый", но срывается в
экстремальный. Очень здорово выходит!

2 years agoНадёжность использования IPv6 расширенных заголовков в Интернете
Sergey Matveev [Wed, 12 Oct 2022 07:48:20 +0000 (10:48 +0300)]
Надёжность использования IPv6 расширенных заголовков в Интернете

https://www.potaroo.net/ispcol/2022-10/v6eh.html
Всегда вот про себя любопытствовал много ли эти заголовки кто использует
и насколько это вообще работоспособно в контексте Интернета (а не локальных
сетях). Как и ожидал -- не шибко оно работает, большие шансы что пакет
не пройдёт через маршрутизаторы. Но зависит от конкретных заголовков.

2 years agoОценка эффективности работы программиста по кол-ву строк кода
Sergey Matveev [Tue, 11 Oct 2022 20:14:11 +0000 (23:14 +0300)]
Оценка эффективности работы программиста по кол-ву строк кода

https://www.tuhs.org/mailman3/hyperkitty/list/tuhs@tuhs.org/thread/CCLCN66K5BOXNH72WK5RRI6EEY7MABC4/
Рассказывают истории про то, как 130k строк было убрано из FreeBSD,
убирая поддержку MIPS. И про то, как надо было профиксить многочисленные
баги или отозвать их в 500k строк на ассемблере. Парень просто переписал
это всё в в 20k в новом компиляторе (-480k!), просто автоматом исправив
кучу ошибок.

2 years agoНеужто так сложно передать зашифрованный файл? Эволюция формата пакетов NNCP
Sergey Matveev [Sun, 9 Oct 2022 11:49:09 +0000 (14:49 +0300)]
Неужто так сложно передать зашифрованный файл? Эволюция формата пакетов NNCP

https://habr.com/ru/post/692254/
Довольно давно у меня лежал черновик статьи про описание эволюции
формата пакетов NNCP. Выложил. Довольно краткая получилась, ибо
если вдаваться в детали и описания необходимости каждого поля, то
многовато получается.

2 years agoСтатья про zmv
Sergey Matveev [Fri, 7 Oct 2022 17:41:02 +0000 (20:41 +0300)]
Статья про zmv

https://filipe.kiss.ink/zmv-zsh-rename/
zmv я использую довольно регулярно. Не уверен что это можно назвать
killer-feature zsh, ведь её можно было бы написать и вне него, но она
очень здорово его дополняет.

Не могу я, конечно же, без критики статьи. Автор пишет что zmv вон
насколько укорачивает переименование по сравнению с циклом:

    zmv -n -W '**/*.js' '**/*.ts' # 29 chars
    for file in **/*.js; do mv $file ${file/.js/.ts}; done; # 56 chars

Не соглашусь с ним, так как цикл можно написать ещё короче:

    for i (**.js) mv $i $i:r.ts

Но в любом случае -n опция zmv очень удобна остаётся, так как в цикле
придётся писать test-условие чтобы проверить не перезаписали ли мы файл
какой лишний.

2 years agoТелефонный спам
Sergey Matveev [Fri, 7 Oct 2022 10:12:34 +0000 (13:12 +0300)]
Телефонный спам

https://habr.com/ru/post/691990/
Я регулярно, примерно раз в два года, меняю себе номер сотового
телефона. Так как всё равно каким-нибудь курьерам из магазинов оставлял
(даже мне не всегда удобно куда-то переться в другой конец Москвы).

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

Почти всю жизнь использовал Мегафон. Изначально это был мой первый
доступ в Интернет, через GPRS 10-го класса с Motorola C350L, который
работал так хорошо в режиме модема, что мог перегреваться. Но позже
рекламы от Мегафона стало просто уйма. Разбирался с ними голосом, но они
только заверяют что всё отключили (спам от них), но ни на йоту ничего не
поменялось. Перешёл на Билайн.

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

За последние недели я уже начал применять тактику много кем
исповедуемую: не отвечать на незнакомые номера. SMS-спам, кроме как от
сотового оператора, я почти не встречал. Человек, будь не дурак, напишет
SMS. Каждый номер, на который не отвечаю, я сразу записываю с именем
"spam-maybe", так как если перезвонит с него ещё раз, то высока
вероятность что это уже действительно какой-то человек (спаммеры тоже
ими бывают, но разве их можно назвать порядочными людьми?). Так мне
казалось. Но ни разу с maybe номера не было повторного звонка.

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

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

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

2 years agoCV-сертификаты
Sergey Matveev [Thu, 6 Oct 2022 17:13:22 +0000 (20:13 +0300)]
CV-сертификаты

https://habr.com/ru/post/691812/
Вот этот формат сертификатов, да и экосистема в целом -- единственное
что не вызывало бурного отвращения, как это делает всё что касается X.509.
Очень приятный минималистичный формат. PyDERASN по сути может парсить и
создавать CV-объекты без каких-либо правок в библиотеку. CV можно
считать небольшим subset-ом ASN.1 DER.

2 years agoНатриевые лампы, LED, дневное/ночное/сумеречное зрение
Sergey Matveev [Tue, 4 Oct 2022 17:38:40 +0000 (20:38 +0300)]
Натриевые лампы, LED, дневное/ночное/сумеречное зрение

https://www.youtube.com/watch?v=wIC-iGDTU40
Клёвый рассказ об особенностях нашего зрения и ламп уличного освещения.
И мне теперь понятно какого чёрта так плохо видно во время сумерек. Не
ночью, а именно во время сумерек -- время когда я *ощутимо* хуже вообще
всё вижу и различаю. Когда за рулём автомобиля, то появляется желание
просто встать и дождаться нормальной темноты. И, действительно, когда
стали "тёплые" натриевые лампы на дорогах заменять на холодные LED-ы,
то это значительно лучше увеличивает видимость ночью.

2 years agoLTT о Technology Connections
Sergey Matveev [Mon, 3 Oct 2022 17:45:21 +0000 (20:45 +0300)]
LTT о Technology Connections

https://www.youtube.com/watch?v=foLPX4YTwHk
https://www.youtube.com/channel/UCy0tKL1T7wFoYcxCe0xjN6Q
В выпуске Linus Tech Tips упоминается Technology Connections канал.
Линус говорит что обожает его. Это всего два канала на которые я
подписан в YouTube (на их RSS). Да и то, LTT я посматриваю наверное
только как некое технопорно, где показывают всякие сервера временами.

2 years agoВышел Linux 6.0
Sergey Matveev [Mon, 3 Oct 2022 08:44:19 +0000 (11:44 +0300)]
Вышел Linux 6.0

https://habr.com/ru/news/t/691182/
Почему не 5.20? Потому что у Торвальдса закончились пальцы рук и ног.
Потому что он, как программист, начинает счёт с нуля.

2 years agoDebian решил поставлять проприетарные прошивки по умолчанию
Sergey Matveev [Sun, 2 Oct 2022 14:12:29 +0000 (17:12 +0300)]
Debian решил поставлять проприетарные прошивки по умолчанию

https://www.opennet.ru/opennews/art.shtml?num=57859
А у меня и не было сомнений что они такое решение и примут, раз перешли
же на systemd. Столлман то давно их не котировал из-за non-free репозитория.
Но его содержимое всё же было просто где-то там в стороне, просто ссылка
на него присутствовала. А тут прям на установочном диске сразу будет
проприетарщина.

2 years agoUSB меняет обозначения поддерживаемых протоколов
Sergey Matveev [Sun, 2 Oct 2022 09:44:37 +0000 (12:44 +0300)]
USB меняет обозначения поддерживаемых протоколов

https://www.theverge.com/2022/9/30/23378231/usb-rebranding-2022-logos-gbps-wattage-charging-transfer-speeds-simplification-usb4-superspeed
Не исследовал решает ли эту проблему понимания что может передавать
"кабель"/устройство, но с ходу нравится это изменение. Всегда невероятно
бесили все эти "super" speed, "high", "super+", да и просто минорные
циферки рядом с USB. USB "1" -- медленно. "2" -- достаточно для флешек и
периферии. "3" уже достаточно для внешних жёстких дисков. А дальше
начинаются "3.1", "3.2". Я прям принципиально не старался запоминать все
эти обозначения и что именно умеет "3.2" какой-нибудь. Задолбали. Тут
хоть как-то более человечно стало. Хотя всё равно это не отменяет
неизвестности о поддержке alternate mode, плюс USB-C может же и
Thunderbolt с PCIe нести.

2 years agoБобины катушечных магнитофонов
Sergey Matveev [Sun, 2 Oct 2022 09:32:29 +0000 (12:32 +0300)]
Бобины катушечных магнитофонов

https://habr.com/ru/company/timeweb/blog/681458/
Вот кстати никогда в жизни нигде и ни у кого не держал в руках бобину и
не слышал подобного магнитофона. Только видел стоячим на столах. У нас
был только на компакт кассетах, на которых, в том числе, и игры для
Спектрума хранились. Ящик с сотнями кассет, кстати, до сих пор у
родителей имеется.

2 years agoautoconf vs redo
Sergey Matveev [Thu, 29 Sep 2022 19:59:47 +0000 (22:59 +0300)]
autoconf vs redo

Количество проектов на Си на работе плодится. И в них я использую redo
вместо Make и autoconf. Вообще конечно абсолютно некорректно сравнивать
redo и autoconf, ибо у них по сути не пересекающиеся задачи, но autoconf
это же ведь множество задач/целей, результат выполнения которых
используется, по сути, как зависимость для команд сборки. И кучу всяких
детектов как-раз можно описывать в виде redo целей. Но об этом уже писал
в 401c0f635a1cdfb01068a48a4cdf40791d3db458. Если в autoconf нужно знать
как этот сам framework, так ещё и основы M4, то в redo ничего не нужно
дополнительно: что хочешь, то и используй. Нужно Си программу
проверяющую работоспособность чего то? Делаешь цель, которая может
зависеть от уже имеющихся детектов флагов, компиляторов, других команд,
которая соберёт что нужно. Распараллеливание всех этих детектов из
коробки (ведь известно, что ./configure может выполняться существенно
дольше чем вообще вся сборка программы после него).

Сегодня понял про другой плюс: redo-log команда может показать вывод
связанный только и только с заданной целью. Если ./configure падает, то
это очень не тривиально найти место даже самого последнего падения в
config.log, ибо в конце там вывод далеко не последнего детекта.

Пока просматривал свою старую запись про замену autoconf, то удивился
что ещё проще у меня многое стало. Я полностью избавился от redo-stamp.
Я приводил пример с conf/cmd/cc.do целью, где основное содержание было:

    echo "${CC:-`command -v cc`}" > $3
    command -v redo-stamp > /dev/null || exit 0
    redo-stamp < $3

а теперь это conf/cmd/default.do:

    envname=`echo "$1" | tr a-z A-Z | tr - _`
    eval echo '${'$envname':-`command -v '$1'`}'

который применим к любой команде (это default цель), которую и через или
переменные окружения или config-файл в корне можно переопределить.

В моём прошлом примере было упоминание pkg-config-based цели. Но на
практике регулярно pkg-config нужен не только для определения одной
библиотеки и все эти цели идентичны и похожи, поэтому вместо
conf/flags/libcrypto.do:

    redo-ifchange ../../config ../cmd/pkg-config
    . ../../config
    read PKG_CONFIG < ../cmd/pkg-config
    cat <<EOF
    ${SSL_CFLAGS:-`$PKG_CONFIG --cflags libcrypto`}
    ${SSL_LDFLAGS:-`$PKG_CONFIG --libs-only-L libcrypto`}
    ${SSL_LDLIBS:-`$PKG_CONFIG --libs-only-l libcrypto`}
    EOF

результат которого мне надо читать чётко понимая что там три строчки
флагов, я делаю conf/flags/default.pc.rc.do:

    redo-ifchange ../../config
    . ../../config
    libname=$2
    prefix=`echo $libname | tr a-z A-Z | tr - _`
    eval cflags=\$${prefix}_CFLAGS
    eval ldflags=\$${prefix}_LDFLAGS
    eval ldlibs=\$${prefix}_LDLIBS
    eval pkgconf=\$${prefix}_PKGCONF
    cat <<EOF
    {
        read ${prefix}_CFLAGS
        read ${prefix}_LDFLAGS
        read ${prefix}_LDLIBS
        read ${prefix}_PKGCONF
    } <<EOF
    EOF
    export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}
    if [ -z "$cflags" -a -z "$ldflags" -a -z "$ldlibs" ] ; then
        redo-ifchange ../cmd/pkgconf
        read PKGCONF < ../cmd/pkgconf
        $PKGCONF --cflags $libname
        $PKGCONF --libs-only-L $libname
        $PKGCONF --libs-only-l $libname
        echo $libname
    else
        cat <<EOF
    $cflags
    $ldflags
    $ldlibs
    $pkgconf
    EOF
    fi
    echo EOF

Если мне нужно получить флаги для сборки whatever библиотеки, то
достаточно выполнить redo conf/flags/whatever.pc.rc. whatever станет
вторым аргументом при выполнении этого скрипта, и будет подставлятся по
все эти команды, создавая .rc-файл, который если за-source-ить, то на
руках получим WHATEVER_CFLAGS, WHATEVER_LDFLAGS, и т.д..

Подобные цели я таскаю из проекта в проект без изменений: они just
works. Как в autoconf есть свои библиотеки детектов, так и здесь
подобные цели аналогичную функцию выполняют.

Но зная о default цели, мы же не знаем какие именно команды
предполагается вызывать в проекте? Раньше я делал что-то-там.list файлы
со списком возможных сгенерированных команд. Вот только их приходилось
дублировать в .gitignore файле. Теперь я подобные списки храню в
.gitignore полностью, ведь чем он хуже остальных файлов? А clean.do цель
в директории может подчистить файлы просто делая:
rm -f `sed "s#/##" < .gitignore`

./configure может выдать полный список опций/флагов который пользователь
может задать и переопределить. Если цели для определения команд и флагов
написаны аккуратно, то это и в redo-based проектах выполняется очень
просто, например в conf/vars.list.do:

    redo-ifchange fn2env.sh cmd/.gitignore flags/.gitignore
    fn2env() { tr a-z A-Z | tr - _ }
    {
        sed "s#^/##" cmd/.gitignore | ./fn2env.sh
        sed -n 's#^/\(.*\)\.pc\.rc$#\1_CFLAGS \1_LDFLAGS \1_LDLIBS \1_PKGCONF#p' \
            flags/.gitignore | ./fn2env.sh
        perl -ne 'print "$1\n" if /\$\{(\w+):?.*\}/' *.do flags/*.do | ./fn2env.sh
    } | tr " " "\n" | sort | uniq | fmt

и сделав redo conf/vars.list && cat conf/vars.list можно получить
красивый список типа:

    AR CC CFLAGS CLANG_FORMAT CLANG_TIDY DTRACE XXX_CFLAGS XXX_LDFLAGS
    XXX_LDLIBS XXX_PKGCONF INCDIR INCLUDE_WHAT_YOU_USE INFODIR LDFLAGS
    LDLIBS LIBDIR LIBTAP_CFLAGS LIBTAP_LDFLAGS LIBTAP_LDLIBS MAKEINFO
    PKG_CONFIG_DIR PKG_CONFIG_PATH PKGCONF PLANTUML PREFIX

Детектирование glibc например делаю так:

    redo-ifchange ../../config ../cmd/cc
    . ../../config
    GLIBC_CFLAGS="-D_POSIX_C_SOURCE=200112L"
    GLIBC_CFLAGS="$GLIBC_CFLAGS -D_DEFAULT_SOURCE"
    read CC < ../cmd/cc
    src=`mktemp`
    trap "rm -f $src $src.c" HUP PIPE INT QUIT TERM EXIT
    cat > $src.c <<EOF
    #include <features.h>
    int main(int argc, char **argv) { return 0; }
    EOF
    $CC -o /dev/null $src.c > /dev/null 2>&1 && printf "%s\n" "$GLIBC_CFLAGS" || echo

где факт компилирования с features.h вполне годится. А в других целях я
из этого файла возьму опциональные флаги нужные для ОС с glibc.
Аналогично я делаю Си программы которые уже что-то выводят (xxx.rc.do):

    redo-ifchange ../../config ../cmd/cc common.rc xxx.pc.rc
    read CC < ../cmd/cc
    . ./common.rc
    . ./xxx.pc.rc
    src=`mktemp`
    trap "rm -f $src $src.c" HUP PIPE INT QUIT TERM EXIT
    cat > $src.c <<EOF
    #include <stdio.h>
    #include <xxx.h>
    int main(int argc, char **argv) {
        puts("{\\nread XXX_FOO_CTX_SIZE\\nread XXX_BAR_CTX_SIZE\\n} <<EOF");
        printf("%zu\\n%zu\\nEOF\\n", XXX_FOO_CTX_SIZE, XXX_BAR_CTX_SIZE);
        return 0;
    }
    EOF
    $CC $XXX_CFLAGS $CFLAGS -o $src $src.c $LDFLAGS $XXX_LDFLAGS $LDLIBS $XXX_LDLIBS
    $src

И этот детект зависит и от default.pc.rc и cmd/default.do целей.

2 years agoage -- только про (аутентифицированное) шифрование
Sergey Matveev [Thu, 29 Sep 2022 19:52:17 +0000 (22:52 +0300)]
age -- только про (аутентифицированное) шифрование

https://words.filippo.io/dispatches/age-authentication/
Когда смотрел на age (4674ad351dcb1f018d2392bc03fb0692e101e229), то
как-то не обратил внимание на то, что age занимается только шифрованием
указанному получателю, явно не аутентифицируя отправителя. Можно бы было
поверх этого использовать signify какой-нибудь, но тогда не выйдет это
потоково сразу же параллельно обработать. Плюс, как верно заметил автор,
подпись можно отрезать, или наоборот перешифровать на другом ключе
подписанное сообщение. Делать формат, который бы связывал отправителя и
получателя -- вот мы почти и переизобретём OpenPGP. age штука не плохая,
но даже такую задачу как отправку бы зашифрованного и подписанного письма
он не может выполнить в одиночку.

2 years agoПриватная сумка
Sergey Matveev [Thu, 29 Sep 2022 11:16:42 +0000 (14:16 +0300)]
Приватная сумка

https://www.amazon.com/transparent-bag/s?k=transparent+bag
https://beautymag.com/best-transparent-bags/
Сегодня на остановке увидел девушку с полностью прозрачной сумкой. Не
пакетом, а именно сумкой с ручками. И там было что-то крупно написано
про "privacy", но я так и не смог разглядеть надпись полностью. Если
человек рядом открывает сумку/рюкзак/кошелёк, то я рефлекторно
отворачиваюсь, ибо это смущает (ведь всё же приватное пространство и
действие). А тут прям всё содержимое открыто взору. Привлекает ли это
внимание? Безусловно, как и выглядывающие трусики из под юбки. И с тем и
с другим не понятно как девушка не стесняется.

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

2 years agoДоступность наших государственных сайтов
Sergey Matveev [Tue, 27 Sep 2022 09:12:10 +0000 (12:12 +0300)]
Доступность наших государственных сайтов

На днях Сбербанк переехал на CA от Минцифры. И единственный официальный
источник знания об этом сертификате CA есть на сайте Госуслуг "/tls".
Ни один броузер, даже Firefox с включённым JavaScript-ом у меня это не
открывает. В комментариях пишут, что даже и после установки их
сертификата, Сбербанк всё равно в Firefox не откроется. Говорят что по
сути нужно только с Яндекс Броузером его использовать. Сегодня вот
опубликованы документы Минцифры с перечнем специальностей которые не
призывают: тоже их сайт и даже прямая ссылка на PDF нигде у меня не
отдаётся, forbidden-ом мне в рожу тычут. Хотел из любопытства посмотреть
являюсь ли я ценным по специальности, которая у меня никоим образом с ИТ
вообще не связана. Вот, казалось бы, столько всего в правильном
направлении в нашей стране делают, но обязательно что-то да через полную
жопу, никак иначе. И я ведь уверен что всё из-за сисадминов, которые
могут и ICMP пакеты перекрыть, ибо так же безопаснее наверняка.

2 years agoЦифровой манифест
Sergey Matveev [Tue, 27 Sep 2022 07:48:32 +0000 (10:48 +0300)]
Цифровой манифест

https://habr.com/ru/post/689636/
Вижу "блокчейн" -- можно сразу закрывать статью. Ни слова про
анонимность людей, про анонимное/тайное голосование. Ни слова
при их приватность. Спасибо, но предпочту оставаться в текущем
мире.

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

2 years agoДень рождения Ларри Уолла
Sergey Matveev [Tue, 27 Sep 2022 07:35:12 +0000 (10:35 +0300)]
День рождения Ларри Уолла

https://habr.com/ru/company/timeweb/blog/689804/
Все комментарии, на момент написания, о том, что это первый язык
программирования у людей. У меня тоже. Когда писал dmon.pl
(569cee2631ad9139e0f4d48d28f9ca9553a1f0b5), то всё же массу удовольствия
от писанины на нём получаю до сих пор.

    Еще в студенческие годы Ларри Уолл женился, и у них с супругой
    появилась одна мечта на двоих: найти где-нибудь на просторах Африки
    бесписьменный язык, и создать для него систему письма, над которой
    он тогда трудился.

и вот он создал Perl для этого.

Pathologically Eclectic Rubbish Lister. Хотя, как говорит Уолл, название
не было акронимом, а является, действительно, "жемчужиной" и отсылкой к
библии.

    Символом созданного им языка Уолл сделал верблюда -- удивительное
    животное, которое в отличие от программистов на Perl может не пить
    до 30 дней отличается силой и необычайной выносливостью.

(вроде бы, но поверю) Работающая программа на Perl 3:

    BEFOREHAND: close door, each window & exit; wait until time.
        open spellbook, study, read (scan, select, tell us);
    write it, print the hex while each watches,
        reverse its length, write again;
        kill spiders, pop them, chop, split, kill them.
            unlink arms, shift, wait & listen (listening, wait),
    sort the flock (then, warn the "goats" & kill the "sheep");
        kill them, dump qualms, shift moralities,
        values aside, each one;
            die sheep! die to reverse the system
            you accept (reject, respect);
    next step,
        kill the next sacrifice, each sacrifice,
        wait, redo ritual until "all the spirits are pleased";
        do it ("as they say").
    do it(*everyone***must***participate***in***forbidden**s*e*x*).
    return last victim; package body;
        exit crypt (time, times & "half a time") & close it,
        select (quickly) & warn your next victim;
    AFTERWORDS: tell nobody.
        wait, wait until time;
        wait until next year, next decade;
            sleep, sleep, die yourself,
            die at last

2 years agoМнение немца о политике США и Германии
Sergey Matveev [Sun, 25 Sep 2022 18:28:46 +0000 (21:28 +0300)]
Мнение немца о политике США и Германии

http://lists.busybox.net/pipermail/busybox/2022-September/089860.html
http://lists.busybox.net/pipermail/busybox/2022-September/089861.html
Высказанное в рассылке BusyBox. Не сдержался человек. Но в целом всё
понимает куда лучше многих россиян.

2 years agoБанька и PS4
Sergey Matveev [Sun, 25 Sep 2022 18:24:56 +0000 (21:24 +0300)]
Банька и PS4

Снова у друга попарился в баньке. Какая же это всё же клёвая штука!
Как хорошо после 110 градусов, ~100% влажности, когда уже нечем дышать,
когда тебя отхлестали веником, выйти на улицу под дождь. А когда уже
дрожишь от холода, то снова хорошо назад в парилку.

А ещё поиграл на PlayStation 4. У меня игровых приставок никогда не
было. Знаком с ними был только в гостях у одноклассников. И мне кажется,
что последняя приставка в которую я играл, была PlayStation 1. Ни с чем
более новым никогда не сталкивался более. И ещё вроде бы я первый раз в
жизни в руках держал BluRay диск.

2 years agoOpenBSD сборочная система
Sergey Matveev [Fri, 23 Sep 2022 09:31:07 +0000 (12:31 +0300)]
OpenBSD сборочная система

https://www.openbsd.org/images/rack.jpg
https://www.openbsd.org/images/rack2009.jpg
https://www.openbsd.org/images/newrack.jpg
https://marc.info/?l=openbsd-misc&m=139024400731106
Недавно (f84cd7894bd51b0702488a395b0deda547abc857) шла речь про стойки в
домашних условиях. А тут стойки для сборки всего что касается OpenBSD.
А также ведь была история о том, что они могли их вообще прикрыть из-за
нехватки средств на оплату электричества. Выглядит почти возбуждающе!
Когда всё такое гетерогенное, совершенно разных архитектур, а не просто
стойка набитая сплошными ровными однотипными серверами одного бренда.

2 years agoЖенский вокал в "Сокровищах богов" Изморози
Sergey Matveev [Fri, 23 Sep 2022 08:25:24 +0000 (11:25 +0300)]
Женский вокал в "Сокровищах богов" Изморози

https://www.realrocks.ru/izmoroz/music/1146971/
https://www.youtube.com/watch?v=tAzqzXup3uI
На концерте Ashen Light (e4a09572c117d8bc3c9f00a71cdd750f339a35a1)
прикупил альбомов Изморози. В целом не моя музыка конечно, но вот на
одном их трэке есть женский вокал, который меня просто безумно зацепил!
Я наверное раз пять подряд его проиграл от начала до конца. А суммарно
уже минимум с полсотни раз его проиграл. Не знаю что в её голосе или
манере исполнения такого, но тащусь. Причём на живом выступлении
вокалистка уже с более оперным (не знаю как это корректно называется)
пением: ничего против не могу сказать, но и не цепляет вовсе.

У меня, как правило, женский вокал или очень цепляет и я только им и
наслаждаюсь (плевать на музыку)
(f9d5ae66c2a5300c83811b746aaab5c48b2c908e -- причём тут то понятно что
банально исключительно просто частота/тембр может нравится,
766b14156e4157c79d546f167ac4fbaf3b6fa51d) или же мне просто на него
пофиг. На прошлых выходных в новостях увидел упоминание Юлии Савичевой.
Помню такое имя, помню что певица молодая попсовая какая-то. Нашёл на
YouTube чтобы просто вспомнить что это, вдруг у меня вкус вообще к
женскому вокалу поменялся? Не, вообще никак: для меня таких десятки
тысячи ничем не примечательных и не отличимых.

2 years agoКак бы выглядели Фредди Меркури, Курт Кобейн, Джимми Хендрикс, будь живы?
Sergey Matveev [Fri, 23 Sep 2022 07:54:47 +0000 (10:54 +0300)]
Как бы выглядели Фредди Меркури, Курт Кобейн, Джимми Хендрикс, будь живы?

http://www.hitkiller.com/esli-b-vse-byli-zhivy-kak-by-segodnya-vyglyadeli-kurt-kobejn-i-freddi-merkyuri.html
Честно говоря, Кобейна я не узнал. А Меркури и Хендрикс превосходны!

2 years agoНачало мобилизации
Sergey Matveev [Fri, 23 Sep 2022 06:03:13 +0000 (09:03 +0300)]
Начало мобилизации

Начался сабж в стране. Так что в любой момент могу пропасть из сети. Для
кого-то это всё вызывает удивление или какой-то ужас. Не понимаю я этого,
ибо уже более восьми лет как НАТО планомерно готовилось к войне с нами,
натаскивало крупнейшую армию в Европе нацисткого государства к этому,
обучая и поставляя вооружение, взращивая поколения нациков. Не понимаю я
также тех, кто считает это ложью о том, что на Украине их мол нет. Да
все знакомые кто там родились, у кого там родственники -- все это
признают и подтверждают. Нацики то есть и у нас, но они не героизируются
и вне закона. Можно ли у нас представить ежегодные факельные шествия в
память о фашистах и коллаборационистах? А на Украине слуга США открыто
поддерживает людей, у которых всюду эмблемы СС и свастика. Вассерман
правильно сказал: нельзя договориться с теми, кто восторгается Бандерой.

Что мы видим после, более чем полугодовалой, СВО? Независимые от США
(достойные самостоятельностью) страны открыто и полностью поддерживают
РФ. Явно не поддерживает только небольшая доля населения Земли.
Остальные подтверждают (очевидное) право РФ на самооборону. Даже недруг,
но сильный и умный политик, Эрдоган. Поддержка нациков есть только со
стороны стран Запада, по сути подконтрольных полностью США, давно
известная своим мировым террором и подобной тактикой ведения войн.

К украинцам у меня вроде бы нет неприязни, хотя и прискорбно, что они
нормально могут смотреть на то, как их власти пытались устроить геноцид
крымчан, перекрыв им пресную воду (факт (я ж в Крыму каждые два года всё
же бываю), который фиг можно найти в зарубежных СМИ), как терроризируют
несогласных с нацистским режимом, как живут рядом с теми, кто неприкрыто
восторгается фашистами. Украине мы почти за бесценок десятилетия
(насколько помню) поставляли газ, что можно считать как нехилым
вливанием денежных средств. За Севастополь, что-то типа под 200M$,
платили ежегодно. И при этом они приглашают строить базы НАТО на своей
территории, прекрасно осознавая что РФ будет обороняться. Хотя террор
штука эффективная: вся история человечества показывают что при нём можно
жить долго, ничего не предпринимая (я никого не трогаю -- меня никто не
трогает). А США умеет устраивать террор, особенно чужими руками и
промытыми мозгами (e04b9f15fa11b60e6e434e589fba6af2d5cf9489). Вот ДНР и
ЛНР, где по сути русские (но граждане Украины (скоро уже нет)), выбрали
путь борьбы против такой гнусной марионеточной власти, разрешающей даже
геноцид. Честь им и хвала!

Какого-то сильного переживания касательно того, что заберут на войну у
меня нет. А тут разве может быть выбор? И почему у меня должны быть хоть
какие-либо сомнения в этом правом деле? Я не обязан защищать свою
Родину? Не должен отдавать долг, как минимум, за достойную и беззаботную
жизнь прошедшую? Не должен быть частью общества и совместно
предпринимать усилия чтобы у нас *было* будущее? Есть люди идущие на
путь предательства и коллаборационизма (собственно, например работая на
страны НАТО), но, благо, родители смогли меня вырастить без подобных
зёрен нечисти. С детства я прекрасно знал, что Запад это не друзья: с
ними можно работать вместе, много чего вместе делать, но при любой
возможности они не прочь будут если и не убить тебя, как представителя
непокорного государства, то, как минимум, изгадить твою жизнь, лишь бы
тебе было хуже чем им. Факт даже подачи заявки на членство в НАТО, со
школы знаю, означает буквально "мы хотим сделать что угодно, лишь бы
навредить (СССР прежде) РФ, сделать их покорными рабами". И я не понимал
ИТшников, соглашающихся работать на них, ведь преобладающая их часть
ценна не своими весомыми познаниями и умениями, а просто тем, что они
более дешёвая рабочая сила, гастарбайтеры обычные. Где самоуважение?
Бывают безусловно исключения: есть уникумы и монстры своего дела,
которым плевать на всё, ибо жизнь у них всецело посвящена только и
только своему делу, которое отлично выходит.

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

К нахлебникам то я отношу и армии бухгалтеров с юристами, которые можно
бы было сократить в разы или порядки. Если бы человек изучил Visual
Basic с макросами для своего Word/Excel, то штат сотрудников уже
сократился бы в разы. Страна достаточно богата и лояльна к подобным
людям с низким КПД, может их содержать, но это всё равно не правильно и
так быть не должно.

2 years agoЗабавные высказывания в ИТ
Sergey Matveev [Thu, 22 Sep 2022 06:39:09 +0000 (09:39 +0300)]
Забавные высказывания в ИТ

https://www.datagubbe.se/short/

    Programming is one of the few crafts that will only make you dirty
    on the inside.

    Hypocrisy is taking pride in Unix shell scripts kept since the
    1990:s while scoffing at banks running Cobol.

    Programming and angling are alike: fun and rewarding as pastimes,
    less so when your life depends on them.

    You can't work with your passion unless working is your passion.

    The mouse is a much faster input device than the keyboard: the
    latter is almost always stationary.

    Continuing a legacy is an honorable task, except in programming.

    It's important to consider ergonomics in sedentary jobs: every now
    and then, programmers should shift a bit.

    Affordances are so called because many contemporary UI designers
    have deemed them too expensive.

    Never changing the defaults is like living in a motel your whole
    life.

    Given enough time, every operating system will turn into Unix.

    In the future, when computers are at long last voice controlled,
    open office floor plans will finally disappear.

    The future was better in the past.

2 years agoБюрократий
Sergey Matveev [Tue, 20 Sep 2022 18:11:31 +0000 (21:11 +0300)]
Бюрократий

http://www.svpvril.com/Jokes/New%20Element%20Discovered,%20Bureaucratium.html
Новый элемент с отрицательным периодом полураспада: со временем он
становится тяжелее.

    A new ultra-heavy element was recently accidently synthesized by
    political scientists. The new element, now known officially as
    Bureaucratium, is electrically neutral, having neither protons nor
    electrons, and thus has an atomic number of zero. However, it does
    have:

    1   bossion
    75  vice-bossions
    111 assistant vice-bossions
    125 associate assistant vice-bossions

    It thus has an atomic mass of -312. The 312 mostly empty particles
    are held together by a strong, cohesive bonding force which involves
    the continuous exchange of clingon-like elementary particles called
    brownoseons.

    Since it is electrically neutral, Bureacratium is chemically inert.
    However, it can be detected indirectly by its ability to impede
    nearly every action with which it comes in contact. In fact it was
    precisely this characteristic (and its unexpected appearance) which
    led the research team to its serendipitous discovery, when it found
    that a certain reaction which is normally exothermic and occurs in
    under one millisecond was observed to be endothermic, with an energy
    input 3500 times greater than normal, and took four days to
    complete.

    Bureacratium is a man-made element and does not occur naturally. It
    apparently is formed as a by-product of necrotic organizational
    processes. It is found in greatest abundance in government agencies,
    large corporations, large non-profit organizations and academia. In
    extremely minute amounts it may actually serve a useful purpose in
    normal reactions by catalyzing the full release and exchange of
    energy among the reactive particles. However, in the typical growth
    process, Bureacratium seems to self-replicate at an alarming rate,
    eventually repelling, although occasionally absorbing, reactive
    particles. If left unchecked Bureaucratium will experience runaway
    growth and literally feed upon itself and absorb nearby organisms.

    Unlike both naturally occurring and man-made radioactive substances
    which decay continuously due to their nuclear instability,
    Bureaucratium, although also unstable, undergoes self-replication
    with a normal doubling time of about nine years. This replication
    appears to occur as a discrete process rather than continuously, and
    is associated with periodic reorganizations which occur at
    more-or-less regular time intervals of approximately three years. At
    these times, vice bossions, assistant vice-bossions, and associate
    assistant vice-bossions exchange places, and roughly 1/6 of them
    generate additional Half-Secretarium particles, which soon quietly
    and mysteriously mutate to become Full-Secretarium particles.

    Bureaucratium undergoes spontaneous chain reactions once it attains
    critical mass, at which point it is no longer controllable and
    consumes its host system along with itself. However, unlike nuclear
    fission and fusion reactions which are exothermic and release vast
    amounts of energy at criticality, Bureaucratium induces an
    endothermic process of fractionation and energy diffusion in which
    the system spins about itself in ever diminishing circles as it
    implodes, consuming vast amounts of energy. At this point, all
    productive reactions among non-Bureaucratium particles, as well as
    replication and mutation of Bureaucratium itself, cease as the
    system slowly disintegrates. Indeed, it has been found that
    Bureaucratium apparently cannot exist alone, having been found only
    in the presence of active particles from which it absorbs energy not
    unlike a parasite.

    Research is currently underway to determine how Bureaucratium can be
    harnessed or controlled to prevent irreversible damage to productive
    host systems.

2 years agoСтатья про собственный VPN
Sergey Matveev [Mon, 19 Sep 2022 18:28:11 +0000 (21:28 +0300)]
Статья про собственный VPN

https://dmitrysnotes.ru/sobstvennyj-vpn-server-za-10-minut
Автор говорит что IPsec лучше чем всё остальное, потому что "IPSec и
IKEv2" поддерживаются всеми ОС и не требуют дополнительного ПО. Я вот не
встречал GNU/Linux дистрибутивов чтобы в них из коробки был хоть
какой-то IKE. С ходу я знаю только OpenBSD, где это, действительно, из
коробки есть. Возможно что-то и поменялось сейчас, но в FreeBSD точно
нету и вроде бы нет планов на это. Кстати, корректное написание это
"IPsec", никак иначе. Более того, как-раз таки WireGuard в FreeBSD
(последних версий) и OpenBSD есть в ядре из коробки. Именно он, выходит,
из коробки единственный кто не потребует ничего дополнительно ставить.
Наверняка и в GNU/Linux-ах каких-нибудь он тоже из коробки будет идти.

И при том, что я очень люблю IPsec экосистему, но в IPv4 мире
использовать бы не порекомендовал, если нормальной прямой связанности
между IP (нет NAT-а). Это вообще не факт что будет всё работать. Сделать
VPN доступный до дома с работы (где я за NAT-ом) -- я не смог. И
возможно я что-то не то настроил в firewall, возможно что-то ещё -- но
даже банально я не могу ответить на вопрос как мне поднять то IP-in-IP
туннель, чтобы при этом его пакеты IPsec-ом защищались. Тогда я плюнул
на это дело и сейчас не хочу возвращаться. В IPv4 мире, с его NAT-ами:
мой выбор это однозначно WireGuard.

2 years agoiSCSI в FreeBSD
Sergey Matveev [Sun, 18 Sep 2022 12:03:56 +0000 (15:03 +0300)]
iSCSI в FreeBSD

https://docs.freebsd.org/en/books/handbook/network-servers/
Есть тут большой образ виртуальной машины, который на моих NVMe не
умещается. Подключал внешний жёсткий диск по USB. И так делал не один
месяц. Почему до меня не дошло то, что раз у меня есть ZFS массивы, на
которых достаточно места, то с них можно прокинуть блочное устройство по
iSCSI? С iSCSI работал на GNU/Linux прежде. Но на FreeBSD, где и target
и initiator реализации есть из коробки в системе, это делается прямо по
примерам из man или handbook. Just works, приятно. Хотя конечно и
медленнее и из-за пропускной способности и из-за задержек, но мне не
критично.

2 years agoTristania всё
Sergey Matveev [Sat, 17 Sep 2022 22:20:58 +0000 (01:20 +0300)]
Tristania всё

http://www.hitkiller.com/tristania-vse.html
https://ru.wikipedia.org/wiki/Tristania
Группа объявила официально о распаде. В общем то это было ожидаемо
конечно, ибо никакой активности уже давно. Их альбомы всегда были в моих
playlist-ах! Особенно мне нравился их период с вокалисткой Vibeke Stene
(e832d12d8e39d42ed3cc17a321f105dd47d908b3)

2 years agoБлокирование web-шрифтов
Sergey Matveev [Sat, 17 Sep 2022 06:47:00 +0000 (09:47 +0300)]
Блокирование web-шрифтов

https://collinmbarrett.com/block-web-fonts/
Сама идея возможности использования подгружаемых шрифтов мне с самого
начала казалась безумной. И трафик нехилый, и вопрос безопасности (всё
же движки для шрифтов, насколько помню, являются полными по Тьюрингу), и
вопрос приватности (когда качаем шрифты с CDN, то сливаем факт посещения).

WebKit движок, используемом в моём Xombrero GUI броузере, я менял чтобы
он не скачивал все эти шрифты. В tofuproxy я тоже приделал запрет на них.
Всё равно сайты, без регулярного обновления броузеров каждые полгода,
выглядят ужасно, так что неподгрузившиеся шрифты погоды не меняют.

2 years agoCLI игры
Sergey Matveev [Sat, 17 Sep 2022 06:42:29 +0000 (09:42 +0300)]
CLI игры

https://www.linuxjournal.com/content/best-command-line-only-video-games
Бесит когда люди мешают понятия "командной строки" и терминала/консоли.
В статье нет ни одной CLI/shell игры, разве что Frotz (запускался
interactive fiction игрушек), но даже он полноэкранные вещи умеет делать.

2 years agoКомментарии к NNCP новости
Sergey Matveev [Fri, 16 Sep 2022 10:44:48 +0000 (13:44 +0300)]
Комментарии к NNCP новости

https://www.opennet.ru/opennews/art.shtml?num=57771
Вспомнил я тут про OpenNet и что не мешало бы на нём публиковать новости
о своих релизах. Комментарии к своим статьям я давно уже не читаю, но
тут зашёл на страницу с ними. И вот почему не стоит читать комментарии в
Интернетах этих? Да потому что соотношение сигнал/шум к чему-то
полезному или шуму там крайне низкое почти во всех ИТ статьях.

Часть людей дальше заголовка явно ничего не пытается прочитать. И в
комментариях задают вопросы которые в документации явно отвечены. И речь
не про мой NNCP, а вообще про любое ПО. Блин, ведь время потраченное на
написание вопроса зачастую будет сравнимо с переходом по ссылке на
документацию и быструю навигацию по меню/TOC с нахождением ответа.

Конкретно в комментариях про NNCP: кто-то упорно пишет про scp, мол
вместо NNCP. Как-будто человек увидел что это что-то про передачу файлов
и на этом всё: scp же умеет передавать файлы, вот и заладил с ним.
Кто-то вообще задаётся вопросом "зачем шифровать, если передача между
F2F?". Ответ краток и полностью ёмок (дан кем-то): MitM. Очевидно. Но
оказывается кому-то это не очевидно. Как так?

Кто-то начал чушь про TCP и UDP писать. Да, человек понимает что TCP
может себя вести не очень на не очень хороших, колбасящихся по некоторым
характеристикам каналам связи. UDP то здесь чем поможет? Аналогично
придётся всё равно поверх UDP придумывать тему про доставку битых или
потерянных пакетов. В комментарии здраво отвечают что TCP используется
именно чтобы не заниматься этим. Может ли быть ситуация когда
самопальный транспорт поверх UDP будет эффективнее TCP? Безусловно!
Будет ли он эффективнее всегда? Очевидно что нет. Всё упирается в
алгоритм congestion control. Именно поэтому для TCP и дают возможность
его выбора и управления. В случае с UDP никто не отменяет что необходимо
всё равно управлять congestion-ом будет. Просто вместо того, чтобы это
делало ядро ОС, это перекладывается на плечи прикладного ПО. Это не есть
что-то плохое, ибо в каких-то задачах это может дать огромный profit,
как например при использовании QUIC и HTTP/3, где множество параллельных
потоков отправляются. Но когда речь про передачу единственного потока,
одного файла, то QUIC не даёт никакого профита (кроме возможно быстрого
установления, а точнее продолжения, TLS сессии). Переключение TCP CC на
какой-нибудь BBR алгоритм может дать колоссальный прирост "скорости".
Поэтому человек пишет лютый бред, игнорируя тот факт, что использование
UDP не отменяет необходимость congestion control, просто перенося его в
прикладное ПО. Если этот CC будет эффективнее на конкретных каналах
связи: будет эффективнее. Но предложения же нет о конкретике. Да и,
более того, не бывает алгоритмов CC которые работают лучше всех
остальных везде. Настройку/управление CC вместо ОС придётся делать
внутри программы. Если бы NNCP параллельно передавал зашифрованные
пакеты, то можно было бы о чём-то таком задумываться.

Кто-то пишет про то, что NNCP на плохих каналах не работает. Неправда,
ибо я на COM-порту его многократно использовал, и в Ethernet
искусственно ограничивая traffic shaper-ом его до десятков Kbps. Есть
только одна загвоздка: его online протокол оперирует 64KiB пакетами, и,
соответственно, все внутренние счётчики тикают и учитывают факты
передачи пакета. Если за 10сек он не успевает передастся, то ПО
посчитает что за 10сек (по умолчанию) timeout ничего не было передано и
значит надо делать disconnect. Тут всё как с TCP CC: не бывает алгоритма
удовлетворяющего все требования и контексты применения транспортного
протокола. TCP Reno алгоритм создавали во времена десятков Kbps каналов
связи в лучшем случае. На канале с 10-100Gbps он не может себя вести
достаточно хорошо. Но в NNCP "проблему" с 64KiB, которая требует, грубо
говоря, ~53Kbps канала как минимум, можно решить одной переменной
окружения, выставив большее время 10сек timeout-а.

И, опять же, NNCP вообще не имел средств online передачи данных
изначально. Это в первую очередь про store-and-forward и переносные
накопители.

Один человек упорно придирался к слову "простота" в описании NNCP. Мол,
настройка TCP CC это не про простоту. Меня это позабавило тем, что я
писал про простоту самой программы, про её "архитектуру", про код. Про
простоту для пользователя в этой части документации не было
предположений. Но согласен что это не очевидно. Например DJB софт
(daemontools, UCSPI) является очень простым, но имеет больший порог
входа для конечного пользователя.

2 years agoДомашний дата-центр
Sergey Matveev [Fri, 16 Sep 2022 10:03:08 +0000 (13:03 +0300)]
Домашний дата-центр

https://habr.com/ru/company/selectel/blog/688162/
Вот очень мне нравятся серверные железки, стойки и вся эта тема! Хочу и
дома иметь что-то подобное, но всё останавливается на вопросе "а зачем?".
Заиметь отказоустойчивые коммутаторы, маршрутизаторы -- неплохо однозначно.
Но за уйму лет хостинга всего и вся дома: у меня никогда не было проблем
с отказоустойчивостью и надёжностью. Два моих сервера: очень маленького
форм-фактора железки, но с серверными компонентами внутри. Работают без
нареканий. И только с появлением Intel NUC они перестали быть самыми
производительными железками.

В одном комментарии перечислили для чего нужна своя серверная:

    1. Поднять свой сервер мессенджера, того же джаббера
    2. Свой почтовик
    3. Хранилка бэкапов
    4. Медиабиблиотека: храним в одном месте, пользуемся с любого устройства
    5. Сервис синхронизации
    6. Локальный гит
    7. Сидбокс
    8. Домашняя автоматика
    9. Домашний VPN, чтобы туда-сюда не передергивать VPN на устройстве

IM, почта, локальный Git: всё это не требует ресурсов вообще. Просто
ноутбук может это всё хостить. Хранение резервных копий, медиа
библиотеки, seedbox -- всё это требует только достаточного места на
дисках. Ну и не совсем дохлое железо (речь про одноядерные процессоры
i386, и пару гигабайт RAM (хотя и с ней будет работать)) чтобы ZFS
хорошо работал. И вот всё просто упирается в кол-во дисков которое можно
подключить. В обычный большой корпус обычного компьютера можно вставить
с дюжину дисков без проблем (возможно докупая корзины 5.25"). Если я
приобрету ещё пару 16TB HDD (для зеркалирования, поэтому и два), то у
меня вообще всё что есть на лентах влезет на диски. И в одном сервере у
меня даже как-раз два слота для них есть свободных.

Многие говорят про запуск виртуальных машин -- для этого нужны мощные
железки. Не поспоришь. Но вот у меня, кроме совсем дохлых ВМ в которых
NetBSD, OpenBSD, какие-нибудь GNU/Linux, где я просто проверяю сборку и
работу некоторого своего софта, в этом году появилась только одна ВМ,
которой я отдаю много ресурсов, где я вожусь с одним огромным C++
проектом. Но он даже не каждую неделю включается и мощность ему нужна
только для ускорения процесса сборки.

У меня до сих пор дома все компьютеры соединяет один единственный 1Gbps
коммутатор на пять портов. И прямо сейчас подключены только три порта.
Just for fun, just proof of concept я бы мог задействовать по два
Ethernet порта для того, что в GNU/Linux называют bond-ом. Но на
практике мне это не требуется вовсе. MPTCP нету в FreeBSD, поэтому и
скорость в 2Gbps я просто так не получу из коробки.

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

Ну и полноценная, пускай и маленькая, стойка это здорово, но rack
mountable сервера жутко громкие. Для тишины нужные большие вентиляторы:
а это только пъедестальники, значит и никакой стойки (не брать же её
только для пары коммутаторов?). Или размещать на балконе. Но это значит
его надо утеплять, ибо зимой на нём как на улице у меня.

Плюс лично я ещё совершенно не хотел бы связываться с маршрутизаторами,
которые сделаны не на базе обычной ОС, которую ты сам поставил. Просто
угнетает психологически сама мысль о том, что ты полностью ограничен
функционалом встроенного ПО. Я спокоен если это тупой коммутатор. Или
если это коммутатор, который максимум управление VLAN-ами умеет делать,
но не более -- там как бы или он умеет/делает или нет, особо вариантов
больше нет. А вот маршрутизацию я бы хотел уже делать в полноценной ОС.
Или если речь ещё и про firewall. Поэтому у меня никогда не было
маршрутизаторов типа WiFi+ADSL+router+NAT+firewall: это всегда какой-то
обычный ПК с GNU/Linux или FreeBSD внутри. Точнее железки были, но
работавшие в режиме моста. Хотя маршрутизатор, по идее, штука тоже не
хитрая: приходит пакет, смотришь в таблицу куда его дальше отослать,
отсылаешь. Против таких тоже ничего не имею. Но дома такой не нужен,
ведь ещё же и firewall и NAT (к сожалению, пока legacy IPv4 ещё
распространён) понадобятся. Поэтому вместо специализированных
маршрутизаторов у меня бы был yet another сервер, пускай и достаточно
дохленький.

Возможно для всяких Syncthing, NextCloud и подобных штук нужны и
существенные мощности. Но я живу в Unix-friendly мире компьютеров: нужно
получить доступ к NAS, так монтируй его по NFS, который из коробки
встроен в ОС и вообще с ZFS (в FreeBSD) интегрирован. Нужна безопасная
связь для этого? Ну так поднимай WireGuard (в IPv6 мире -- IPsec). Чего
чего, но какого-то дополнительного софта для этого не надо мне.

Ну и я не сисадмин, не сетевик, не devops -- для локальных экспериментов
мне хватает и что имею. Даже 10Gbps сетевые карты я так и не заимел, ибо
мне и 1Gbps хватает, так как я при этом всё равно упрусь в скорость HDD.

2 years agoЛавкрафт мне очень нравится
Sergey Matveev [Mon, 12 Sep 2022 19:50:14 +0000 (22:50 +0300)]
Лавкрафт мне очень нравится

https://ru.wikipedia.org/wiki/%D0%9B%D0%B0%D0%B2%D0%BA%D1%80%D0%B0%D1%84%D1%82%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B5_%D1%83%D0%B6%D0%B0%D1%81%D1%8B
С полдюжины рассказов Лавкрафта прослушал
(81b54ddca2c8b87000e557252080c6be628f2eeb). Его манера подачи явно не
каждому понравится. И в основном то только описание мест и чувств
действующих лиц происходит. Но так детально и чётко! Может показаться
нудно и скучно -- но это только ярче создаёт всё происходящее в голове.

Пока это писал, то обратил внимание что в наушниках играет "Умереть --
значит жить вечно!", затем "Простая мелодия безумия" и "Мир пустоты" с
альбома "Кровь апокалипсиса" Ashen Light-а
(e4a09572c117d8bc3c9f00a71cdd750f339a35a1).
В тему, так как некоторые рассказы Лавкрафта уж угнетают фактом
ограниченности человеческого разума.

2 years agoПолно у нас музыки крутой
Sergey Matveev [Mon, 12 Sep 2022 19:43:29 +0000 (22:43 +0300)]
Полно у нас музыки крутой

Приобретя кучу всяких музыкальных альбомов с прошедших концертов, всё
слушаю и слушаю их. И чем дальше, тем больше нравятся они в целом все!
Есть у некоторых проблемы с качеством записи, особенно когда речь про
90-е или начало 2000-х. Но вообще прям нарадоваться не могу как много
у нас талантливых музыкантов. Есть и новые неведомые мне доселе чувства:
из-за русских текстов ещё и слова, хочешь не хочешь, слушаю. И мне они
тоже очень заходят! А то слушать слова всякого нашего популярного
рока (с советских времён начинающийся ещё)... нет уж, извините.

2 years agoCompaq LTE 5000
Sergey Matveev [Mon, 12 Sep 2022 17:25:45 +0000 (20:25 +0300)]
Compaq LTE 5000

https://www.youtube.com/watch?v=tUdUCHrttkc
Вот очень мне нравятся, чисто эстетически, подобные ноутбуки и
компьютеры как этот. Один из самых классных для меня ПК является
Acer Veriton FP (e40dbd8cc3fcbe0134dbd6c00ff855e99fc73213). Вот
современная техника совершенно не трогает ничем и не манит.

2 years agoКниги "Эврика"
Sergey Matveev [Mon, 12 Sep 2022 09:41:41 +0000 (12:41 +0300)]
Книги "Эврика"

https://ru.wikipedia.org/wiki/%D0%AD%D0%B2%D1%80%D0%B8%D0%BA%D0%B0_(%D1%81%D0%B5%D1%80%D0%B8%D1%8F_%D0%BA%D0%BD%D0%B8%D0%B3)
https://ru.wikipedia.org/wiki/%D0%A5%D0%BB%D0%BE%D1%80%D0%B5%D0%BB%D0%BB%D0%B0
https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE%D0%B8%D0%B7%D0%BE%D1%82%D0%BE%D0%BF%D0%BD%D1%8B%D0%B9_%D1%82%D0%B5%D1%80%D0%BC%D0%BE%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80
В деревне, в которой я проводил регулярно каждое лето своего детства и
подросткового возраста, на чердаке я нашёл несколько книжек "Эврика".
Это такие толстые сборники научно-популярных статей, где про всякие
новинки (ну на тот момент) писалось многое. И какие там только темы не
поднимались! Зачитывал эти книги до дыр, ибо давало тьму пищи для
размышлений. Почему то, в первую очередь, вспоминаю статьи про чудесные
свойства хлореллы (водоросли), которая могла бы стать отличной дешёвой и
богатой веществами едой. И про РИТЭГ я узнал из этих книг.

Оцифрованные архивы есть тут:
https://rutracker.org/forum/viewtopic.php?t=4508487
https://rutracker.org/forum/viewtopic.php?t=4533108