]> Sergey Matveev's repositories - stargrave-blog.git/log
stargrave-blog.git
2 years agohonnef.co/go/tools/cmd/staticcheck
Sergey Matveev [Wed, 22 Mar 2023 18:39:23 +0000 (21:39 +0300)]
honnef.co/go/tools/cmd/staticcheck

Понравилась эта утилитка: быстро работает, шума не выдаёт, показывает
всякие deprecated вещи, неиспользуемые или ненужные функции, переменные,
поля в структурах, "_"-переменные излишние.

2 years agoРаспознавание QR-кодов
Sergey Matveev [Wed, 22 Mar 2023 14:50:18 +0000 (17:50 +0300)]
Распознавание QR-кодов

https://zbar.sourceforge.net/
Если надо из фотографии распознать QR-код, то вот одна из первых мне
попавшихся утилит вполне с этим справилась. Из больших зависимостей
только ImageMagick.

2 years agocmake скачивающий из Интернета
Sergey Matveev [Tue, 21 Mar 2023 09:05:17 +0000 (12:05 +0300)]
cmake скачивающий из Интернета

https://github.com/AcademySoftwareFoundation/openexr
В README к OpenEXR честно написано что cmake потянет из Интернета
автоматически Imake репозиторий, если он не найдётся. И, действительно,
прямо во время выполнения cmake, он запускает git clone. Не, то что
сейчас безумство не знает границ с автоматическим вытягиванием -- это я
знал. Но чтобы уже в момент конфигурирования софта -- нечто новенькое.

    -- Imath was not found, installing from https://github.com/AcademySoftwareFoundation/Imath.git (main)
    [ 11%] Creating directories for 'imath-populate'
    [ 22%] Performing download step (git clone) for 'imath-populate'
    Klone nach 'imath-src'...

2 years agoЕщё сравнение JPEG XL
Sergey Matveev [Mon, 20 Mar 2023 10:20:46 +0000 (13:20 +0300)]
Ещё сравнение JPEG XL

https://giannirosato.com/blog/post/image-comparison/
Ещё одна статья со сравнением JPEG XL с другими форматами. Конечно же он
на коне. AVIF рулит только на плохих качествах, типа всяких изображений
для предпросмотра.

2 years agoOnly Fetish Fest. Нойз, харш-нойз, power violence. Доволен!
Sergey Matveev [Sun, 19 Mar 2023 08:50:15 +0000 (11:50 +0300)]
Only Fetish Fest. Нойз, харш-нойз, power violence. Доволен!

Яркое солнце, плюсовая температура, тьма девушек в коротких юбках --
весна! Флаги РФ и муниципалитетов на зданиях развешены -- праздник
возвращения Крыма домой. Президент в этот день побывал не только в
Севастополе, но уже и в Мариуполе, посмотрев как он отстраивается.

Как же мне провести этот день, разделить праздничное настроение? Конечно
же сходить на концерт. И вот впервые побывал на чисто нойзовом мероприятии.
Сразу скажу что не остался в таком восторге как от выступления barkal x
wiiu wiiu на noisecore/gorenoise (a524670c7ff381f29e725cc81982dae5b6dddc6e),
но остался всё равно доволен, однозначно снова посещу этот фестиваль.
Слоган фестиваля: women are darker, men are stronger.

В очередной раз, добирался на БКЛ (00c6d37a608b1506b2aa9f5b1653d11c961c09fe).
Очень удобно с ним. Увидел больше станций метро на нём -- есть и
огромные, просторные, с красивой отделкой и рисунками, прям как в СССР
бы делали. Очень красиво!

Народу не знаю много ли для подобного мероприятия или нет. Несколько
десятков человек. В разы меньше чем тот же black metal собирает, но
толпа есть, зал не пустует. В отличии от рок/метал направлений, все
"инструменты" выступающих заранее расставлены на полдюжине столах, ведь
это тьмища коробочек, розеток, кабелей и микшерных пультов. Душевная
атмосфера. Фоновую музыку (или антимузыку?) не ставили -- видимо, потому
что количество звука (суммарной энергии всех этих механических колебаний)
будет предостаточно.

Первым был Ryr из Ярославля. Один мужик с ноутбуком. Некий industrial,
атмосферный. На фоне такое можно поставить, но на концерте я не понимаю
чего слушать просто записанный трэк. Может быть мужик что-то и делал в
real-time, но не уверен остался. Просто послушать трэк в колонках, когда
нет ни действия, ни какой-либо "работы" человека -- не моё, не чувствую
я никакой передачи энергии, так сказать.

Далее была "Radio Lyric Irina", прежде известная как Artemida. Вот тут я
скорее сказал бы что потерял время. Хотя... просто убедился что обычный
нойзовый ambient без плотного звука -- совершенно не моё. Девушка очень
много говорила между своими композициями, мало играла. Да и вся её игра
это время от времени что-то выдать на саксофоне, пока проигрывается
незатейливый фон электронной музыки. Много слов о том, что она хотела
передать. Хочешь передать -- передавай, а не говори как будешь это
делать. Музыка (или антимузыка, как многие бы сказали) и нужна для того
чтобы без лишних слов передавать всё это. Не скажу что это было плохо
или отстойно -- просто я не тот кто может подобное судить. Как в
фигурном катании -- всё что я могу оценить это внешность фигуристок
(02ccb4f1b14a43abb9dbd4e1948201f3404103b5). А ещё хотелось раза в два
ускорить речь выступающей (0bce904d3fdae71b5b9ab05ee04c92ce6f4fa996).

Потом выступали barkal x wiiu wiiu. Собственно, из-за них я вообще и
попёрся и узнал о концерте этом. Очень понравилось их выступление прежде
(a524670c7ff381f29e725cc81982dae5b6dddc6e). Много ожидал. Играли они уже
нечто другое, не такой плотный harsh noise, но мне ооооочень понравилось.
Весь этот фестиваль стоил посещения ради них. В группе парень и девушка.
В публично-доступном Интернете прежде можно было найти только одну
запись их выступления, где эта девчонка в нижнем белье и чулках сидит на
столе с аппаратурой. В этот раз она была одета как Лилу из "Пятого
элемента" в начале фильма: только в этих "бинтах", только-только
прикрывающий срам. Тоже сидела на столе, пока парень с гитарой и кучей
других инструментов что-то выделывал и активно двигался. В общем, была
даже очень очень приятно и для глаз, хотя я не сказал бы что они нагло
решили эксплуатировать сексуальные чувства. Короче, ожидания оправдались!
Оказалось, группа то вообще из Хабаровска, поэтому часто в Москве их не
увидеть. Судя по реакции зала, они больше всех (ну, за исключением DOR)
тоже понравились залу. Искренний восторг у всех. Один только облом:
очень быстро их выступление закончилось. Это означает, что совершенно не
устаёшь, совершенно не нудно, весь погружён в их выступление.

Потом был "Самопожертвование EIHWAZ" из Ярославля. Тоже один мужик, но
уже хотя бы крутивший что-то на микшерных пультах, с непонятно чем
происходящем на видео проецируемом за ним. Пишут что это "power
electronics" стиль. Ну я бы сказал что там прям много и harsh noise.
Могу сказать что ещё раз бы в живую готов был послушать. Плотная стена
звука, этих power electronics -- мне просто приятно моим ушам. Здорово!
Но, конечно же, на любителя.

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

Заканчивали DOR -- power electronics мужик из Ярославля. Который и на
прошлых Only Fetish Fest-ов был постоянным участником. Лютая мощь!
Плотный звук, на грани harsh noise, высокая скорость, куча энергичных
криков и высказываний, хождение вокалиста по всему залу. Вот, вот что
значит огромный поток энергии! Народ, собственно, и пошёл слеймиться
неплохо! Слова типа "остросоциальные" (как где-то увидел это выражение),
но вообще даже улыбку многие вызывают, как и названия всяких goregrind
или brutal death композиций. Неприязни у меня не вызывали. Мощно, сильно!
Однозначно, вместе с barkal x wiiu wiiu, это конечно лучшее выступление
на фестивале.

Прикупил пару футболок и дюжину black metal дисков, в том числе от Der
Schwarze Tod лейбла (https://derschwarzetod.bandcamp.com/). Продавал это
всё Knyaz (Николай Гончаров), из группы Небокрай, Agasfer, Темнозорь,
давшим свою визитку и пригласившим на концерт Небокрая летом. Чуть с ним
обсудили войну давно идущую войну... нет, не СВО, а войну громкости,
remastering дисков и подобное.

2 years agoЛекция про ФС и ZFS на работе
Sergey Matveev [Sun, 19 Mar 2023 08:05:09 +0000 (11:05 +0300)]
Лекция про ФС и ZFS на работе

Прочитал трёхчасовую лекцию про небольшую историю файловых систем,
принципов их создания, разницы между накопителями (IOPS/bandwidth, LTO
vs HDD vs SSD), FAT-ы, Unix FS-ы, B-tree, журналирование, soft-updates,
LVM, RAID, write hole, особенности флэш памяти, TRIM, и подобное. Ну а
затем устройство ZFS, его плюсы, минусы и всё в таком духе.

Сделали даже запись. Лекции свои я хоты бы раз но стараюсь прослушивать
на фоне. И ставлю двухкратную скорость проигрывания. Почти все подкасты
(LTT, Technology Connections, 16-bits.ru), какие-нибудь обзоры
компьютерных игр которые скачиваю -- прослушиваются тоже на 40%-100%
большей скорости. И вот моя речь быстрее остальных настолько, что я даже
примерно не успеваю и не могу понять что я говорю на таком ускорении.

2 years agoЗагрузка файлов из/в Seafile
Sergey Matveev [Sat, 18 Mar 2023 09:44:23 +0000 (12:44 +0300)]
Загрузка файлов из/в Seafile

http://www.git.stargrave.org/?p=sfloader.git;a=tree
https://github.com/seafile-data/seafile-web-api-manual
На работе почему-то выбрали Seafile (https://en.wikipedia.org/wiki/Seafile)
для обмена файлами внутри сети. Никаких WebDAV, NFS или чего-то подобного.
В броузере он у меня не открывается -- требует какой-то модный JavaScript
(JS я, бывает, разрешаю запускать для служб внутри локальной сети, без
доступа к Интернету). Есть специальный клиент на C++, но для которого
только экспериментальная поддержка FreeBSD имеется. И действительно,
собрать его не удалось.

Но оказалось, что у Seafile есть REST-like API, который можно и через
curl дёргать. А URL для скачивания зашит в JavaScript коде страницы shared
ссылки. В общем, пара shell-скриптов и можно загружать файл, а также
получать прямую ссылку для его получения. --progress-bar curl-а впервые
использовал -- прям красиво показывает насколько он загрузил файл в форме.

2 years agoUbuntu вновь умеет удивлять
Sergey Matveev [Fri, 17 Mar 2023 18:28:47 +0000 (21:28 +0300)]
Ubuntu вновь умеет удивлять

https://askubuntu.com/questions/1435918/terminal-not-opening-on-ubuntu-22-04-on-virtual-box-7-0-0
https://www.youtube.com/watch?v=NvTMQBxGqDw
Мне кажется что отвратным качеством этого дистрибутива меня уже не
удивить. Но нет. Коллега поставил самую последнюю LTS версию в
виртуальной машине и... в ней запускаются все приложения из меню, всякие
там LibreOffice, но не запускается терминал. Дистрибутив GNU/Linux,
после установки (ну и обновления штатного), в котором просто не
запускается терминал! И на эту тему даже есть отдельный ролик и тема на
форуме как это починить. А надо просто навсего... поменять локаль.

2 years agoТорвальдс о ситуации с отказом патчей от российской компании
Sergey Matveev [Fri, 17 Mar 2023 13:08:41 +0000 (16:08 +0300)]
Торвальдс о ситуации с отказом патчей от российской компании

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

2 years agoТелеметрия в Go
Sergey Matveev [Fri, 17 Mar 2023 08:26:54 +0000 (11:26 +0300)]
Телеметрия в Go

https://github.com/golang/go/discussions/58409
https://research.swtch.com/telemetry-intro
https://research.swtch.com/telemetry-design
https://research.swtch.com/telemetry-uses
https://research.swtch.com/telemetry-opt-in
Хотели в Go внедрить телеметрию по умолчанию. Но одумались всё же.
Впрочем по умолчанию у них и скачивание модулей сейчас идёт через Google
серверы, так что уже приходилось это превентивно отключать
(2957c2ffc83a99cda6c862963aeb38d8dcac8202).

2 years ago79 лет Таненбауму
Sergey Matveev [Thu, 16 Mar 2023 10:33:17 +0000 (13:33 +0300)]
79 лет Таненбауму

https://habr.com/ru/company/timeweb/blog/722130/
Его книги, как уже писал (7ed8fae8ba93ee71c80dbe6378876977cb67b0a1,
5107d84e32fd92c1ac2670e628737c7593dabc89), вложили колоссальный пласт
знаний в меня. Неизвестно был бы я в ИТ сфере без них. По моему, то,
как там преподносится информация -- идеал для обучения.

2 years agoОтказ принимать патчи в Linux ядро из-за политики
Sergey Matveev [Thu, 16 Mar 2023 10:20:04 +0000 (13:20 +0300)]
Отказ принимать патчи в Linux ядро из-за политики

https://lore.kernel.org/all/20230314103316.313e5f61@kernel.org/
https://www.opennet.ru/opennews/art.shtml?num=58804
Политика, к сожалению, всюду и везде. Вот в Linux отказываются принимать
патчи намекая на политические причины. Патчи кстати затрагивают нечто
касающееся ещё и Loongson-а. Вообще это всё не ново: ту же ГОСТ
криптографию тоже не принимают в разных библиотеках, хотя никаких
технических/криптографических объективных причин этого не делать конечно
же нет, как правило. Вот и делают fork-и, что геморройно, но люди
вынуждены подчиняться законам своей страны (или получать по шее).

2 years agoПро МЦСТ и Эльбрусы у Бачило
Sergey Matveev [Tue, 14 Mar 2023 17:43:03 +0000 (20:43 +0300)]
Про МЦСТ и Эльбрусы у Бачило

https://16-bits.ru/%d0%b2%d1%81%d1%91-%d0%bf%d0%bb%d0%be%d1%85%d0%be/
https://16-bits.ru/%d0%b0-%d0%bc%d0%be%d0%b6%d0%b5%d1%82-%d0%b8-%d0%bd%d0%b5-%d0%b2%d1%81%d1%91/
Два выпуска Дмитрия Бачило с приглашёнными гостями о том как всё плохо у
Эльбруса и МЦСТ (в первом) и что на самом деле не всё так плохо. Мне как
технарю понравилась первая часть, где отмечается закрытость. Да, здорово
что у нас есть кадры, здорово что, в отличии от преобладающего
большинства стран, может подобное делать и разрабатывать, но я вот ну
никак не могу поддержать закрытое и скрываемое от меня, не совместимое с
понятиями свободного ПО. В первой части честно сказали что показанный
ассемблер нисколько недостаточен для написания ОС -- только прикладной
части программ (ускорить числодробилку).

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

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

А также мнение Бачило касательно компьютерных игр очень понравилось.

Но очень не согласен с лозунгами "вот у них RISC-V, почему бы нам не
сделать своё", подразумеваю что речь про API/ABI/спецификации конечно, а
не конкретные "нарисованные" ядра. Это прям явно NIH-синдром (not
invented here). Наоборот СССР был молодцом что делал совместимые
компьютеры. Хотя и сделанные нередко полностью с нуля. Бачило и
заканчивает выпуск тем, что архитектура Эльбруса уникальна, ни с чем не
совместима, это проблема. Хотя... если геморрой и уникальность,
упираются в его продвинутые 128-битные указатели, которые при
портировании как-то стараются использовать, то это плюс. Но VLIW... нет
уж, ради чего?

2 years agoPyPI, двухфакторная авторизация и критические проекты
Sergey Matveev [Tue, 14 Mar 2023 16:19:40 +0000 (19:19 +0300)]
PyPI, двухфакторная авторизация и критические проекты

https://github.com/CheetahTemplate3/cheetah3/issues/49
https://github.blog/2023-03-09-raising-the-bar-for-software-security-github-2fa-begins-march-13/
Разработчик CheetahTemplate3 переименовал свой проект, выкатив как новый
пакет на PyPI, потому что потерял доступ к учётной записи из-за требования
использовать двухфакторную авторизацию (2c608b64a39de6d149f5807e8c56da30793a57af).
Там ему ещё написали что "критичность" пакета (что потребует 2FA) не
зависит от его "успешности" и популярности.

Мне нравятся его аргументы: или всё это требует смартфон, или аппаратные
ключи, что жутко геморройно. А если я забыл устройство/ключ? А если
потерял/сломал? Делать и привязывать несколько ключей! Верно ещё
заметил, что чёрт его знает что заработает на свободных ОС. Например
Рутокены и ESmart-ы (понятия не имею дружат ли они с TOTP или нет)
работают только со своими закрытыми бинарными .so. Можно конечно и
программные реализации использовать, но как бы какой тогда смысл, а
геморрой всё равно добавляется. И PyPI просто молча выставляет битик о
том, что проект теперь критичный, дуй использовать 2FA.

GitHub сказал что будет требовать 2FA для всех. Но это то меня мало
волнует, ибо давным давно перестал его использовать и никому не
советовал бы.

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

2 years agoЗаменил matterircd на самописный mmc
Sergey Matveev [Sat, 11 Mar 2023 16:49:56 +0000 (19:49 +0300)]
Заменил matterircd на самописный mmc

http://www.mmc.stargrave.org/
На работе для IM-а используется Mattermost. Это у которого в РФ даже
сайте нельзя открыть. И клиентов для него никаких нет толковых для
терминала. По сути только один официально есть, но написанный на
Haskell. Я честно искал как этот Haskell можно бы было собрать без
бинарников из Интернета. Штатно разработчики GHC ничего не предлагают.

Штатные клиенты это сплошной GUI или мобильные приложения или нечто
запускаемое в броузере. Когда-то MM у меня в jail-е с Firefox-ом
отображался. Но после очередного обновления сервера -- перестал
полностью. Короче ничего адекватного.

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

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

В общем, решил рискнуть и попробовать написать свой клиент, ведь MM
написан на Go и весь его API доступен через библиотечные вызовы.
Скептически был настроен: наверняка будет много подвохов, затык в UI
обязательно небось случится, да и вообще я сам не знаю какой IM-клиент я
бы хотел видеть. Но в итоге, потратив день, удалось в общем и целом
довести его до конца. Сейчас у меня по сути нет никаких TODO которые бы
я хотел сделать.

Была идея сделать мост между XMPP клиентом и MM-сервером. Ибо уже не
будет ограничений на размеры сообщений, да и вообще даже можно было бы и
файлы передавать через этот протокол. А XMPP клиентов не мало написано.
Но когда вновь посмотрел на MCabber, который много лет когда-то
использовал, то понял что например кусок кода уже не выделить легко и
удобно из-за roster-панельки.

Иметь все сообщения сливаемые на одном экране, как это было в GNU
Freetalk, (вроде бы) mICQ, Go-шном xmpp-client или как некоторые
прадлагают для suckless IRC клиентов сливать все выводы FIFO в один
multitail -- мне точно не нравится. Вообще не шибко то много на работе
общения происходит, тем более параллельно, но не забуду как ужасно
бывает отправить сообщение не в тот чат. Я убеждён что на экране должен
быть только один чат и ввод сообщений только в него должен идти.

Suckless подход к чатикам, когда для каждого канала создаётся директория
с текстовыми файлами информационными и парой in/out FIFO файлов, из
которых можно читать приходящие сообщения и отправлять -- мне не
нравилась. Конечно же она очень проста и красива для backend-а. Но вот
frontend то удобный поверх всех этих FIFO файлов то кто будет писать?

Всегда конечно есть вариант написания просто TUI интерфейса используя
curses-like библиотеки (для Go есть раздолье). Обнаружил что для
Multitail нигде нет документации о его keybinding-ах, которые вообще
чуть ли не на каждой клавише что-то делают. Крайне разочаровал он меня
этим. Ибо были мысли о попытке его использовать для отображения нужных
мне окон.

Ещё не понимая как пойдёт написание frontend-а, я реализовал suckless
подход. Только кроме FIFO файла для входящих сообщений, я сделал просто
append-only файл. Мне в любом случае нужно сохранять
сообщения на диске, поэтому зачем заставлять делал некий tee над ним,
чтобы просто копию данных лить в файл? Но сообщения из MM могут быть
многострочными и имеют метаинформацию (как минимум postId, кроме времени
и отправителя). Сохранять его одной строкой, а потом болезненно парсить,
не охота. Поэтому делаю .rec-файл, прекрасно для этой задачи подходящий.

Приятная бага нашлась в rlwrap утилите. Читать сообщения построчно (и
отправлять построчно) -- не вариант, ибо это будет не многострочное
сообщение, а много однострочных. Сигналом завершения сообщения можно
считать закрытие FIFO файла. В rlwrap есть --one-shot опция, которая,
судя по документации, завершает выполнения после чтения первой строчки
ввода. Но если ввод был произведён --multi-line-ом, то он успешно
съедает весь введённый текст, что логично и мне понятно как
программисту. Просто это бага в документации. Бесконечный цикл с
rlwrap -o -m cat > chans/foobar/in отлично выполняет задачу. Теперь ввод
можно делать и в vi-режиме и вообще вызывать внешний редактор.

Для отображения .rec-файлов написал утилитку которая выводит одно
сообщение одной строкой (не считая многострочных), без метаинформации.
При запуске она парсит весь файл и выводить только n-последних
сообщений, эмулируя показ истории. А дальше она не закрывает файл, а
ведёт себя как tail -f, отображая появляющиеся новые сообщения. Пока
правда просто циклом со sleep-ом и проверкой размера. И выводит с каждым
сообщением и bell, чтобы оповестить tmux и терминал.

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

В общем, запускается tmux, внутри mmc, который при запуске у сервера
запрашивает и всех пользователей и каналов и у каждого канала ещё
запрашивает историю с последнего нам известного postId. Если появляются
сообщения, то он дёргает утилиту которая открывает окно в tmux, где и
утилита для чтения .rec-а и утилита для записи сообщения сразу же
запущены. Отдельный keybinding есть чтобы запустить fzf с выбором
пользователя/канала и открыть окно.

Прикреплённые файлы показываются в виде "[FILE] FileId (FileName)"
сообщения. Скачать можно послав FileId в file/get FIFO и читая его из
file/out при этом. Решил засовывать его в pax архив, где заданы поля с
FileId и MIME-типом присланным из сервера. Архив приятен тем, что в нём
имя файла чётко сохраняется. Чтобы не делать это совсем уж руками, есть
cmd/download утилитка, которой надо указать state-директорию и FileId
просто навсего. Отправку файлов думал делать через тоже посылку
сообщения в FIFO файл соответствующей users/chans директории, но пока
остановился на посылке просто сообщения "/FILE /path/to/file" прямо в
чатике.

Узнать email/имя пользователя можно прочитав users/USER/{email,name}.
Узнать его актуальный статус (online/away/offline) прочитав "status"
FIFO в нём. Аналогично информация и в каналах записывается. "users" FIFO
показывает актуальный (честно делается запрос без кэширования) список
пользователей канала. Это всё не интегрировано в tmux или какие-то
keybinding-и, ибо крайне редко требуется -- можно и руками. А оповещения
о том что пользователь что-то вводит выводятся просто делая
display-message в tmux-е, который, как этого и хотелось бы, показывается
небольшое время только.

Пока более чем доволен результатом. Оно стало значительно удобнее чем
было с irssi+matterircd. Плюс ещё и с нормальной machine-readable БД
сообщений. И возможностью отправки файлов и более удобного приёма.

2 years agoРассказал про историю Unix
Sergey Matveev [Thu, 9 Mar 2023 19:15:37 +0000 (22:15 +0300)]
Рассказал про историю Unix

На работе впервые рассказал про историю Unix. Можно сказать что до
начала 2000-х, где коммерческие Unix-ы то толком уже роли не играли,
кроме Sun-а пока их не купила Oracle. Wikipedia, Narrative History of
BSD МакКузика, несколько других видео про историю BSD и SCO, чтение
истории из The Art Of Unix Programming Реймонда, история на сайте самого
Unix-а, интервью с Ритчи и Томпсоном -- всё это брал в качестве
материалов. День на сбор данных, день на структуризацию, пара дней на
просмотр и внимательное чтение всего этого, а дальше чтение с часами
всего этого дома. Пришлось сократить речь где-то на треть, чтобы
уложиться хотя бы в полтора часа. На работе правда вышло на два, но
потому что были и вопросы с комментариями, да и про NeXT я что-то не
запланировал изначально говорить.

2 years agoПотеря сигнала
Sergey Matveev [Thu, 9 Mar 2023 18:40:12 +0000 (21:40 +0300)]
Потеря сигнала

https://ploum.net/2023-03-09-losing-signal.html
Человек использовал Android без Google Play и Signal на нём. Решил
попробовать другой клиент Signal, сделал бэкап и удалил. А после не
смог восстановить свою учётную запись, при которой от него требовали
кучу нерешаемых CAPTCHA, задержки в несколько часов из-за иссякания
количества попыток входа, и никакой информации было ли решение CAPTCHA
успешном или его не пускали из-за отсутствия Google Play. Криптография
криптографией, в ней Мокси Марлинспайк разбирается, но на остальное,
типа федерации ему уже пофиг, просто не интересно. В итоге любые
преимущества Signal-а всё равно нивелируются его централизацией и
отсутствием выбора.

2 years agoTox задумывается об исправлении небезопасности в своём протоколе
Sergey Matveev [Tue, 7 Mar 2023 10:41:10 +0000 (13:41 +0300)]
Tox задумывается об исправлении небезопасности в своём протоколе

https://blog.tox.chat/2023/03/redesign-of-toxs-cryptographic-handshake/
https://github.com/TokTok/c-toxcore/issues/426
Более шести лет назад Jason Jason A. Donenfeld указал Tox-у что его
протокол рукопожатия небезопасен (при потере вашего долгоживущего ключа
возможна имперсонализация любого другого человека для вас). И только
сейчас они задумываются в своём блоге об исправлениях.

2 years agoВ неюзабельности почты (для многих) виновата Microsoft
Sergey Matveev [Tue, 7 Mar 2023 09:54:43 +0000 (12:54 +0300)]
В неюзабельности почты (для многих) виновата Microsoft

https://bsdly.blogspot.com/2011/02/problem-isnt-email-its-microsoft.html
Это, конечно же, и top-posting, из-за которого время на дешифровку
(интерпретации и нахождения нужной информации) сообщения стремительно
выросло. И отсутствие тредов с начала, а потом и использования
стандартизованного способа для передачи метаинформации. Плюс
невозможность вменяемо в offline скопировать и хранить сообщения. В
Outlook даже нельзя было посмотреть какой же будет From: на выходе.

2 years agoВсё есть файл в Plan9
Sergey Matveev [Mon, 6 Mar 2023 10:42:43 +0000 (13:42 +0300)]
Всё есть файл в Plan9

http://fqa.9front.org/fqa0.html
Когда люди как мантру повторяют что Unix упорно следует идее "всё есть
-- файл", то я не понимаю как они при этом умудряются закрывать глаза на
то, что всё что касается сети в нём никак не представлено в виде файлов.
За некоторым исключением конечно же. Файлы блочных устройств, символьных
-- действительно файлы, с которыми, правда, всё равно fcntl вызовы делают.
Но сеть то рулится просто вызовами не связанными с файловыми устройствами.

Unix никогда не создавался как нечто "with networking in mind". TCP/IP в
нём появился более чем через дюжину лет с момента появления. А прежде
всё "сетевое" взаимодействие было в виде UUCP.

А вот в Plan9 реально всё сделано в виде файлов, как упоминает Russ Cox:

* рисование графики: просто отправка текстовых строчек с командами в
  локальный для процесса device file
* в Unix-ах появился per-process /dev/tty, но в Plan9 и множество других
  устройств per-process (/dev/cons, /dev/mouse, /dev/text (содержимое
  текущего окна, и т.д.)
* работа с FTP, через /n/ftp ftpfs (хотя это через FUSE реализации тоже
  многие делают)
* /mail/fs/mbox через upas/fs представляет почтовые ящики в виде
  иерархии на ФС, в том числе позволяя "ходить" и по MIME таким же образом
* cdfs позволяет слушать аудио CD через файлы в /mnt/cd. Записывать
  аудио или данные можно просто скидывая файлы в /mnt/cd/wa или /mnt/cd/wd.
  Хотим зафиксировать CD? Просто удаляем эти директории. По моему очень
  красиво

Так как вся работа с файлами идёт поверх 9P протокола, который без
проблем ложится на сетевые протоколы, то что мешает импортировать
файловые системы на удалённых машинах? Хотим использовать звуковую карту
сторонней машины? Импортируем (гоняем 9P не по localhost, а через сеть)
её /dev/audio. Отладить процесс другой машины? Импортируем /proc.
Использовать сетевой интерфейс удалённой машины? Импортируем /net.

2 years agoСходил на концерт Мельницы
Sergey Matveev [Sun, 5 Mar 2023 19:49:11 +0000 (22:49 +0300)]
Сходил на концерт Мельницы

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

2 years agoMourning Dawn -- Waste
Sergey Matveev [Sat, 4 Mar 2023 10:14:05 +0000 (13:14 +0300)]
Mourning Dawn -- Waste

https://www.youtube.com/watch?v=T8p3RtIH6J0
https://www.metal-archives.com/albums/Mourning_Dawn/Waste/629721
Порекомендовали на Winter Metal Over Russia этот альбом, сказав что не
пожалею. Вот только недавно дошёл до его прослушивания. Действительно,
одно из лучших что слышал из последнего приобретённого материала. Круто
мрачно, но не уныло, не устаёшь.

2 years agounits
Sergey Matveev [Sat, 4 Mar 2023 09:27:28 +0000 (12:27 +0300)]
units

https://www.unix.com/man-page/bsd/1/units/
Из коробки в Unix-ах, оказывается, имеется такая вот утилитка по
преобразованию разных единиц измерения друг в друга.

2 years agoПосмотрел "Солнцепёк" и "Лучшие в аду"
Sergey Matveev [Fri, 3 Mar 2023 21:03:10 +0000 (00:03 +0300)]
Посмотрел "Солнцепёк" и "Лучшие в аду"

Солнцепёк -- так сказать, документальный фильмы про то, что начало
происходить в 2014-ом, что за нацистская террористическая власть пришла,
как устроили геноцид русскоговорящих. Кто не верит снятому или
сомневается, думая что это пропаганда выдуманная -- ну пусть пообщается
с теми у кого там родственники или кто жил до присоединения к РФ. Без
сомнений, коих у меня и не было прежде -- возмездие они заслужили, их
выбор. Собственно, в чём с нами и солидарна большая часть мира, правда
боится помогать делом из-за давления США. Говорят, что то, что сейчас
творится в Донбассе -- фигня по сравнению с тем, что было до начала СВО.

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

Правда со стороны РФ там показана только ЧВК "Вагнер". Но они
продюссировали фильмы, их право. Так то кроме ВС РФ ещё и Ахмат же есть.

2 years agoСколько времени процесс проводит в poll()?
Sergey Matveev [Thu, 2 Mar 2023 21:01:34 +0000 (00:01 +0300)]
Сколько времени процесс проводит в poll()?

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

    syscall::poll:entry
    {
        self->ts = timestamp;
    }

    syscall::poll:return
    /self->ts/
    {
        @[execname, "ns"] = sum(timestamp - self->ts);
        self->ts = 0;
    }

2 years agoПриобрёл пару ковриков для мыши
Sergey Matveev [Thu, 2 Mar 2023 19:22:47 +0000 (22:22 +0300)]
Приобрёл пару ковриков для мыши

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

2 years agoПересел на БКЛ
Sergey Matveev [Thu, 2 Mar 2023 09:44:19 +0000 (12:44 +0300)]
Пересел на БКЛ

Пару дней назад открыли Большую Кольцевую Линию Московского метро. И мои
две станции вплотную на ней расположены оказались. В разы стало быстрее
добираться.

2 years agoШаверма на Октябрьской
Sergey Matveev [Thu, 2 Mar 2023 06:33:48 +0000 (09:33 +0300)]
Шаверма на Октябрьской

О божественной и самой вкусной шаурмичной я упоминал в
1797921de9106a956894085ca997ff2ae80ffec4. Правда, как таковую шаурму я
там брать перестал, перейдя на кебаб в лаваше. Уж не знаю самый ли он
вкусный у них или нет, ибо нигде такого прежде не пробовал, но мне он
больше по нраву оказался. Коллегу тоже пересадил на кебаб.

Пару дней назад они выпустили свои фирменные обёртки картонные с
"Шаверма на Октябрьской" надписью и QR-кодом. Дали в подарок бутылку
лимонада, с просьбой написать о них в соцсетях.

2 years agoЗакон о запрете забугорных IM-ов
Sergey Matveev [Thu, 2 Mar 2023 06:21:10 +0000 (09:21 +0300)]
Закон о запрете забугорных IM-ов

https://tvspb.ru/news/2023/03/1/telegram-whatsapp-i-skype-roskomnadzor-vvel-na-nih-zapret-s-1-marta
https://www.securitylab.ru/news/536698.php
Очень рад этой мере! Запрещают использовать "WhatsApp, Telegram, Viber,
Discord, Microsoft Teams, Skype for Business, Snapchat, Threema, WeChat"
в госучреждениях и банках. В условиях войны Запада с нами, я бы вообще
приравнивал факт использования подобных технологий как шпионаж, со всеми
отсюда вытекающими последствиями. В США ведь тоже догадались на высшем
уровне запретить TikTok.

2 years agoЗакон о запрете иностранных слов
Sergey Matveev [Thu, 2 Mar 2023 06:11:39 +0000 (09:11 +0300)]
Закон о запрете иностранных слов

https://www.rbc.ru/politics/16/02/2023/63ee24679a7947fa27d022b0
Одобряю подобный закон, ибо уже реально достало, что имея на 100%
пригодные русские слова, всё равно используют английский, при этом
написанный кириллицей. Особенно когда речь про каналы связи с массами
людей.

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

2 years agoСлонограммы в моей локальной сети
Sergey Matveev [Wed, 1 Mar 2023 18:27:10 +0000 (21:27 +0300)]
Слонограммы в моей локальной сети

Помню что я пробовал раньше использовать jumbo frame-ы (MTU=1900) в
локальной сети, но точно не помню почему забил на эту идею. Ну наверное
потому что оно постоянно форсировало использование PMTUD, который в IPv4
мире не всегда работает из-за админов необразованных (запрещающих ICMP).

Сегодня снова решил это попробовать. Увеличил MTU на Ethernet
интерфейсе, на gif-туннеле, но ping/TCP всё равно не используют
увеличенное значение MTU. И только тут до меня дошло почему и отчего
route get команда показывает MTU значение для запрошенного хоста: MTU
же может быть per route! Не понимаю почему такая очевидная вещь для меня
была совсем не очевидна и я в голове MTU всегда имел привязанным только
к интерфейсу. От него конечно значение для MTU per route отталкивается,
но ничто не мешает же мне для default route задать маленькое, но в целом
для интерфейса (IPsec туннель) оставить большое. А так как по OSPF явно
знание и о соседних локальных машинах просасывается, то и для них будет
использоваться большой MTU. Прям то что мне нужно!

    % route -6 get dns.google
       route to: dns.google
    destination: default
           mask: default
            fib: 0
      interface: gif0
          flags: <UP,DONE,STATIC,FIXEDMTU>
     recvpipe  sendpipe  ssthresh  rtt,msec    mtu        weight    expire
           0         0         0         0      1420         1         0

    % route -6 get beta.stargrave.org
       route to: beta.stargrave.org
    destination: beta.stargrave.org
        gateway: fe80::be5f:f4ff:fedd:2752%gif0
            fib: 0
      interface: gif0
          flags: <UP,GATEWAY,HOST,DONE,PROTO1>
     recvpipe  sendpipe  ssthresh  rtt,msec    mtu        weight    expire
           0         0         0         0      8192         1         0

2 years agoДружелюбный Message-ID в Mutt
Sergey Matveev [Wed, 1 Mar 2023 18:10:31 +0000 (21:10 +0300)]
Дружелюбный Message-ID в Mutt

https://people.kernel.org/monsieuricon/fix-your-mutt
http://www.git.stargrave.org/?p=godlighty.git;a=commitdiff;h=8730f9415046a1cc1242870c9443b34491d81d9d
Недавно я задался вопросом почему у меня не все ссылки в архивах
почтовых рассылок открываются, пока не удалить в конце "/T". Пошёл в
исходные коды public-inbox-а и подумал что у них кривой regexp для
Message-ID, который не учитывает что могут быть слэши. Сделал патч,
пошёл уже было смотреть как его отправить разработчикам, но там как-раз
в их рассылке обсуждение этих Message-ID велось. На самом деле они
аккуратно с ними работают и передают в экранированном виде везде в URL.
Откуда же у меня они берутся, если URL-ы корректны? А это уже мой
godlighty автоматически разэкранирует один слой и передаёт его as-is
процессу public-inbox-а. В рассылке дали рекомендацию по настройке
Apache чтобы он пропускал as-is экранированные слэши.

А тут запись в блоге появилась о том, что Mutt, действительно, просто
суёт Base64 в качестве Message-ID, где появляются слэши и это немного
усложняет жизнь при подстановке в URL. Я не согласен что Mutt надо
"fix"-ить -- он ничего необычного или нештатного не делает и с какой
стати должен думать об URL-friendliness? Почта это почта, Web это Web.
Лично я вообще-то стараюсь всё же использовать Base64 URL-safe версию,
как-раз чтобы с точки зрения usability чуть было попроще, но это же не
fix, не бага. Но я свой Mutt и его штатные правила генерирования
Message-ID трогать не буду.

2 years agoОчередная лекция про IPv6 на работе
Sergey Matveev [Wed, 1 Mar 2023 08:26:21 +0000 (11:26 +0300)]
Очередная лекция про IPv6 на работе

Провёл тут недавно, в очередной раз. Плюс ещё пара человек в курсе про
замечательность протокола.

2 years agoGrumble проблематичен
Sergey Matveev [Mon, 27 Feb 2023 09:19:53 +0000 (12:19 +0300)]
Grumble проблематичен

В 6bf8ec6fda4ba9a2ee54819e4a6613ff33d8effe писал о Go реализации Mumble.
Коллега с мобильным каким-то мобильным клиентом подключился и у всех всё
перестало ходить и вообще сервер оборвал соединения. В логах есть только
упоминание о том, что у клиента нет CELT кодека. В общем, полной заменой
Grumble пока быть не может.

2 years agoРазгребая днями скачанную музыку
Sergey Matveev [Sun, 26 Feb 2023 20:12:33 +0000 (23:12 +0300)]
Разгребая днями скачанную музыку

Все выходные, кроме встречи с родными, потратил на разгребание скачанных
терабайт музыки (b95a8b8a33ff5fc50956510618dfc413fab71ac6,
0e39e6d1b75b764057dc33f1d35d924bcb4ed5ea). Куча скриптов, тьмища zmv
вызовов, дофига запусков Midnight Commander, сплошное сжигание
процессора автодополнениями zsh-а. Невероятно (вообще чуть ли не большую
часть работы) выполнял tornm (9dc73622854227df4a31a4c0a57adfc72a52ecd6).

Сейчас это уже 2200+ обработанных альбомов. Ещё несколько вечеров и всё
будет доделано до конца. 90% похоже что проделано уже. Дьявольски много
ручного труда. По сути всё время уходит на ручной труд. Посмотреть и
оценить каждую директорию и понять что с ней надо сделать. Много
приходится редактировать исходные CUE файлы, ибо в них то в название
трэка вшивают его номер, то непойми какая кодировка (ага, UTF-8 крайне
редко встречается), то ещё какие косяки. Я думал что вообще на всё уйдёт
гораздо больше времени, но аккуратно написанные скрипты (посмотреть и
оценить директорию/файлы/.cue, попробовать разделить файл на трэки и
переименовать, и т.д.) львиную долю ручного труда убрали. Не представляю
что делал бы без zsh.

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

2 years agoЭпидемия в Королёве
Sergey Matveev [Thu, 23 Feb 2023 19:08:11 +0000 (22:08 +0300)]
Эпидемия в Королёве

https://ru.wikipedia.org/wiki/%D0%AD%D0%BF%D0%B8%D0%B4%D0%B5%D0%BC%D0%B8%D1%8F_(%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B0)
Сходил на концерт Эпидемии в Королёве, вместе с родственниками.
Удовольствие получил конечно, но музыка не моя. Но играли и пели
на отлично. Сами они у нас выступают впервые, но вроде очень довольны.

2 years agoFacebook тоже выбирает AV1, SVT-AV1, dav1d
Sergey Matveev [Tue, 21 Feb 2023 13:18:26 +0000 (16:18 +0300)]
Facebook тоже выбирает AV1, SVT-AV1, dav1d

https://engineering.fb.com/2023/02/21/video-engineering/av1-codec-facebook-instagram-reels/
Среди всех современных кодеков, считают, именно AV1 лучше всех на многие
годы. Ну и такие же кодеры/декодеры используют что и я
(07bddb0ed6a5d2276a10cf77b81e22da2d7c69e6). Всё же, как минимум,
двухкратное сокращение трафика по сравнению с AVC -- уже качественный
прогресс.

2 years agoУровень курсов/практикума по Python
Sergey Matveev [Tue, 21 Feb 2023 10:36:31 +0000 (13:36 +0300)]
Уровень курсов/практикума по Python

Один знакомый just-for-fun решил поучаствовать в одном курсе по Python.
Дали задание: написать скрипт по переливке данных из нескольких таблиц
из SQLite3 БД в таблицы в PostgreSQL. Названия полей не совпадают, но
количество и суть остаётся прежней. Типа должно быть так, как условие:

    data = load_from_sqlite3(...)
    save_to_pgsql(data)
    # и нужно использовать dataclass для данных

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

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

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

    def load_from_sqlite3():
        for klass, table in self.dataclasses2tables.items()
            yield [klass(**converter(obj)) for obj in load_table(table)]

    def load_table(table):
        self.conn.prepare_data = prepare_data
        self.conn.execute("SELECT * FROM %s" % table)
        while True:
            objs = self.conn.fetchmany(batch_size)
            if objs is None:
                break
            yield from objs

    def prepare_data(conn, row):
        data = {}
        for idx, name in conn.cols_description():
            data[name] = row[idx]

    def converter(obj):
        if "foo" in obj:
            obj["Foo"] = obj["foo"]
            del obj["foo"]
        if "bar_id" in obj:
            obj["BarId"] = obj["bar_id"]
            del obj["bar_id"]
        ...

Сохранение выглядело как-то так:

    def save_to_pgsql(data):
        for rows in data:
            table = klass2table[row[0].__class__]
            self.conn.executemany(
                "INSERT INTO %s ..." % (...),
                [astuple(row) for row in rows]
            )

"Наш" вариант:

    def load_from_sqlite3():
        for klass, (table, colnames) in self.tables2dataclasses.items()
            yield klass, load_table(klass, table, colnames)

    def load_table(table, klass):
        self.conn.prepare_data = lambda (conn, row): klass(*row)
        self.conn.execute("SELECT %s FROM %s" % (",".join(colnames), table))
        while True:
            objs = self.conn.fetchmany(batch_size)
            if objs is None:
                break
            yield from objs

    def save_to_pgsql(data):
        for klass, rows in data:
            table = klass2table[klass.__class__]
            stmt = "INSERT INTO %s ..." % (...)
            batch = []
            for row in rows:
                batch.append(astuple(row))
                if len(batch) == BatchSize:
                    self.conn.executemany(stmt, batch)
                    batch = []
            if len(batch) > 0:
                self.conn.executemany(stmt, batch)

Собственно, главная проблема "эталонного" кода: полная загрузка всех
данных каждой таблицы в память. Ибо и в load_from_sqlite3 и в
save_to_pgsql используются list comprehension-ы. Чем этот вариант
отличался бы от кода где не было бы генераторов вовсе? Который бы просто
разом загружал все данные в память списком и его передавал в save_to_pgsql?
Да ничем! Это полнейший fail. Мог ли рецензент ошибиться и не заметить
двойных квадратных скобок? Отнюдь, ведь они аж в двух местах присутствуют!
Это полностью нивелирует вообще всё что написано касательно генераторов
и обработкой пачками, раз всё равно всё загружается в память.

Отдельное безумие это сложность кода который конвертирует данные в
dataclass представление. Для *КАЖДОЙ* строки полученной из БД, он в
цикле идёт по описанию схемы таблицы чтобы переложить элементы кортежа в
именованные ключи словаря. А затем, переименовывает поля, внутри словаря.
А затем ещё и удаляет del-ом старое оставшееся название. Лютое безумие с
точки зрения процессора. Python -- ОЧЕНЬ медленный язык. Каждая строчка,
каждое действие, каждое обращение к методу это ощутимый overhead. Раз
речь про переливание данных, возможно миллиардов строчек, то миллиард
небольших операций превращается в воочию осязаемое время.

Например сделать
    d["x"] = d.pop("y")
быстрее чем
    d["x"] = d["y"]
    del d["y"]
Сделать полностью в памяти второй словарик и только заполнять его, не
модифицируя исходный -- ещё быстрее.

Но зачем это всё? Мы можем чётко сопоставить порядок полей таблицы БД и
порядок полей dataclass-а. Почему бы просто не делать:

    @dataclass
    class Foo:
        bar: int
        baz: int

    row = conn.execute("SELECT bar, baz ...")
    Foo(*row)

Никаких словарей, никаких преобразований, дорогих. Просто сопоставить
порядок полей, один раз в запрос передав вместо "*" чёткое условие
выборки. Знание о связи полей dataclass и полями таблицы что одной, что
другой БД -- всё равно зашивается в коде. В "нашем" случаев это просто
кортежи/словарики лежащие в klass2table.

И тут нет совсем уж хаков типа: appender = data.append ; appender(row)
Также как и все мы понимаем что если нам реально нужно ещё быстрее
скопировать данные, то тогда вообще стоит использовать COPY конструкцию,
вместо *many вызовов.

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

2 years agoПиринговые войны в России
Sergey Matveev [Mon, 20 Feb 2023 14:18:42 +0000 (17:18 +0300)]
Пиринговые войны в России

https://www.comnews.ru/content/29020
https://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D1%80%D0%B8%D0%BD%D0%B3%D0%BE%D0%B2%D1%8B%D0%B5_%D0%B2%D0%BE%D0%B9%D0%BD%D1%8B
https://habr.com/ru/post/186282/
https://nag.ru/material/18680
https://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D1%81%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC#%D0%A1%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D1%8F_%D0%B8_%D0%BF%D0%BE%D0%B3%D0%BB%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D1%8F
"Большая тройка" (БТ) организовала ОПГ. Нет, не организованную
преступную группировку, а "отдельную пиринговую группу". Вообще страшно
конечно как всякие Ростелекомы и БТ поглощают всех остальных.

2 years agoКойот о прошедшем CBF17
Sergey Matveev [Sun, 19 Feb 2023 20:36:16 +0000 (23:36 +0300)]
Койот о прошедшем CBF17

https://vk.com/video-211108867_456239051
https://sun1-55.userapi.com/impg/mjWNOiW2OIC48w0oYK1qja9xBrVUBpQrXGEmDA/ftoS3UtWqgA.jpg?size=1280x961&quality=95&sign=35800a93610c7b168c13208817699505&type=album
https://sun1-98.userapi.com/impg/GNm-L7DNDg8Viu5cMdvMaLFBqUg7qCfsQYt31w/ucO42U6EzqI.jpg?size=520x0&quality=95&sign=969a59cf43ff41b9dc333364df61978d
https://www.youtube.com/watch?v=zvp2_46mJV8
https://www.youtube.com/watch?v=iamtJRlWs58
https://www.youtube.com/watch?v=4wro89bguxQ
https://www.youtube.com/watch?v=I0ervPQUq7w
Плюс фотография после выступления Swamp. Сплошные довольные рожи, на
протяжении кучи часов. Мою рожу не видно, но я руку с напульсником
узнаю, единственную.

Есть видео полного выступления Sadistic Demise, которые мне понравились
больше всего. Хотя зал конечно уничтожили на Swamp, что видно по другому
видео.

Отцу приобрёл футболку CBF с "Ну погоди" -- он сам сказал что надел бы.

Ещё чьё-то впечатление:
    Наконец-то я прикоснулся к прекрасному. Первый раз попал на
    знаменитый и культовый Coyote Brutal Fest. Почти 12 часов тяжелейшей
    и брутальнейшей музыки и оголтелого движа. Абсолютно все выступавшие
    в этот день группы разрывали пространство высекая мощнейшие рифы,
    выдавая пулеметные барабанные партии и демонстрируя всю мощь своих
    вокальных данных, за что им всем огромное человеческое спасибо.
    Движняк в яме и саппорт по периметру были на высоте. Народ плясал,
    слэммился, мошил и одобрительно тряс головами. Это был настоящий
    праздник для любителей тяжелой музыки, который для нас всех
    организовал небезызвестный Дмитрий Койот Праскилевич

2 years agoCBF17: слэм единорогов с динозавром, снегурочка-баянистка играет Prodigy
Sergey Matveev [Sun, 19 Feb 2023 08:34:41 +0000 (11:34 +0300)]
CBF17: слэм единорогов с динозавром, снегурочка-баянистка играет Prodigy

Простыл, болит шея, тяжёлая голова, гул в ушах, зверски уставшие ноги.
Утро после Coyote Brutal Fest началось как положено! Вся одежда
пропитана запахом курева, пролитого (проходящими мимо слэма людей со
стаканами) пива, чужого пота голых торсов. Количество улыбок во время
концерта больше чем можно увидеть за весь год. Ради всего этого ведь и
ходят на CBF!

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

В этом году концерт шёл с 13:00 до 00:00. Я пришёл не совсем к началу --
одну группу пропустил. И ушёл, не услышав последнюю, ибо до дома
хотелось добраться поудобнее, а headliner-ы уже выступили.

* Indecency (качёвый слэм из Костромы)
* Fuck Your Depression (кач из Пензы)
* Visceral Disorder (brutal death из Тольятти)
* Megalodont (дет из Донецка, где гитарист это сын гитариста Datura)
* Flatulence (группа из Москвы, о которой я что-то забыл что они играли)
* Sadistic Demise (brutal death из Костромы)
* Swamp (качёвый слэм из Москвы)
* Infiltration (old-school дет из Санкт-Петербурга/США)
* Feraliminal Lycanthropizer (Ярославский порнограйнд)
* Datura (дет из Донецка)

Зал в клочья разнесли Swamp. Как можно было выступать остальным после
этих ребят, ожидая слэм -- сложно понять. Но зал был на высоте на
протяжении всего фестиваля. Я пришёл где-то к 13:30 -- зал был вполне
себе забит, слэм на каждой группе. Регулярные лодочки, перманентный
circle pit, wall of death временами. Количество энергии затрачиваемой
людьми во время всего этого, наверное может питать небольшой посёлок.
Но лично мне вот этот 100% качёвый слэм, из которого состоял Swamp --
уже не заходит. Не, круто конечно, но тут надо участвовать или хотя бы
трясти башкой.

А больше всего мне понравились Sadistic Demise и Datura. Первые были
единственными кому Дмитрий Койот разрешил выступить на бис, ибо уж очень
зал просил этого. Datura просто самые дьявольски техничные и тяжёлые.

Swamp предложили считать CBF как отечественный Obscene Extreme Festival.
Действительно, это единственный фестиваль на который я когда-то думал
съездить в Чехию. В начале фестиваля слеймиться вышел 2.5м динозавр с
длинным хвостом. А на протяжении всего концерта в зале плясали, мне уже
известные, два единорога розовых.

Feraliminal Lycanthropizer это танцевальный порнограйнд типа Sordid Clot.
Все переодеты забавно. На сцене была девочка переодетая снегурочкой с
баяном настоящим. На нём они исполнили кавер на Prodigy "Breath".
Порнограйнд, с growl inhale-ом, баяном и это Prodigy. Было очень
неожиданно и заводно! И особенно радуют названия песен, которые всех
заставляли ржать:

    Angry Appeal of Puny Masochists
    Carnal Embrace of Malodorous Cattle Mortuary
    Ceremonial Exhumation of Female Remains in Order to
        Produce Visual AIDS for Professional Cunnilingus
    Collective Pacification of an Aggressive Masochist
    Deadly Equilibrium of an Elastic Womanizer
    Faecal Kleptomaniac Family Troubles
    Fatal Equilibre of Elastic Womanizer
    Fatal Somersault of a Lustful Disabled
    Innocent Pranks of a Hallway Scat Terrorist
    Karmic Punishment of an Imposing Voyeur
    Methodology for Detecting Latent Homosexuality
    Obscene Teachings of an Elderly Pedophile
    Oral Execution of a Compassionate Sadist
    Ritual Abstinence from Senile Incontinence
    Sexual Fantasies of a Foolish Young Naturalist
    Sexual Mutation of Miserable Gerontophile
    Sudden Petrifaction of Intestinal Wastes
    Tragic Consequences of Rectal Pollution
    Unbearable Suffering of a Homophobic Makeup Artist
    Агрессивная мастурбация безабидного импотента
    Анальное зачатие доминирующей самки
    Апокалиптическое торжество вагинальной инфернальности
    Внезапное окаменение каловых масс
    Вселенская эпидемия эректильной дисфункции
    Грозное ноу-хау циничного проктолога
    Карнальные объятия зловонных скотомогильников
    Критическая концентрация гомосексуальной энергии
    Половая мутация ничтожного герантофила
    Радикальные последователи апологетов вагонопластики
    Рассечение вагинального нерва посредством анальной спазмостимуляции
    Турборокер, пафосно въезжающий в последний гран-батман дискошлюхи

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

2 years agoМузей ретрокомпьютеров открылся
Sergey Matveev [Sat, 18 Feb 2023 07:20:05 +0000 (10:20 +0300)]
Музей ретрокомпьютеров открылся

https://16-bits.ru/%d0%be%d1%82%d0%ba%d1%80%d1%8b%d0%bb%d0%b8-%d0%bc%d1%83%d0%b7%d0%b5%d0%b9/
В этом году, ближе к лету, надо бы будет съездить в Новосибирск для
этого. На открытии был Михаил Шигорин, с которым и пересекался лично
и даже немного поработал вместе. Мир тесен.

2 years agoСеть виновата
Sergey Matveev [Fri, 17 Feb 2023 19:49:57 +0000 (22:49 +0300)]
Сеть виновата

https://habr.com/ru/company/southbridge/blog/717634/
https://linkmeup.ru/blog/1188/
Автор статьи также является и автором "Сетей для самых маленьких".
Офигенно интересное чтиво. Причём начиная с самых азов и заканчивая
технологиями уровня ДЦ/Интернетов. И эту статья на Хабре интересно
написана.

Очень понравилось что не только мне кажется дичью создание огромные
L2-доменов, вместо использования L3. Про это намекали в "идеальном мире
для IPv6": d47aedcfff82c1bd58d4fde4a067b688a0dda78a -- но там всё же
идеальная крайность описана была. Но нет -- действительно Ethernet
должен в идеале только в маленьких доменах использоваться, как это
подтверждает и сетевик профессиональный. Приятно что у меня диссонанс от
любви людей к "всё засунуть в один L2 домен" не на пустом месте возникает.

Ну и автор говорит:
    Любите IPv6, переходите на IPv6, рассказывайте всем про IPv6.
Ибо с ним куда проще и удобнее работать!

2 years agoApple прогнулась и начала поддерживать AV1 кодек
Sergey Matveev [Fri, 17 Feb 2023 11:07:00 +0000 (14:07 +0300)]
Apple прогнулась и начала поддерживать AV1 кодек

https://www.opennet.ru/opennews/art.shtml?num=58665
Компания которая упорно десятилетиями принципиально не поддерживает
свободные и открытые кодеки (±) всё же добавили поддержку AV1 в один
из своих броузеров. Вот насколько, видимо, хорош кодек.

2 years agoVERP не позволяет множеству пользователей отправить сообщение разом
Sergey Matveev [Fri, 17 Feb 2023 10:55:59 +0000 (13:55 +0300)]
VERP не позволяет множеству пользователей отправить сообщение разом

https://en.wikipedia.org/wiki/Variable_envelope_return_path#Disadvantages
Я про себя не понимал почему при отправке сообщений из почтовой рассылки,
он для каждого получателя шлёт отдельное сообщение, хотя несколько могут
быть на одном домене. Ведь SMTP же может нескольким людям сразу отправить
одно письмо на сервере, экономя трафик. А всё из-за VERP-а, который для
каждого получается делает уникального sender-а. В SMTP можно указать
несколько recipient-ов, но не sender-ов.

2 years agoСтранные и необычные клавиатуры
Sergey Matveev [Fri, 17 Feb 2023 08:59:49 +0000 (11:59 +0300)]
Странные и необычные клавиатуры

https://habr.com/ru/company/cloud4y/blog/716934/
Большая подборка всяких клавиатур. Какие-то даже хочется попробовать. Но
я с Sofle (cb49d8505b928c638facd6aec3ca34e33444c9da) всё же не могу работать.
Отличные переключатели, отличное качество, нравится внешний вид и вообще всё.
Но я всё же не могу с таким малым количеством клавиш работать. Просто у меня
полностью прямо противоположный подход, которые намертво въелся, на уменьшение
количества сочетаний. А тут наоборот нужно ещё больше через сочетания делать.
Не могу даже за уши притянутую выгоду для себя придумать от этого. По сложности
это наверное как переучиваться на полностью другую раскладку (Дворака там).

2 years agoМедленный Интернет на Кубе
Sergey Matveev [Thu, 16 Feb 2023 15:21:02 +0000 (18:21 +0300)]
Медленный Интернет на Кубе

https://habr.com/ru/news/t/717446/
    "для скачивания фильма объёмом 5 Гб, который в США загружается примерно
    за 5 минут, кубинцу нужно потратить около 3,5 часов"
5 гигабайт за 3.5 часа это мало? По моему кто-то зажрался. Понимаю что
всё относительно, но для обычного человека с вменяемыми запросами, по
моему, этого более чем достаточно.

2 years agoGo реализации Mumble
Sergey Matveev [Wed, 15 Feb 2023 14:27:13 +0000 (17:27 +0300)]
Go реализации Mumble

https://en.wikipedia.org/wiki/Mumble_(software)
http://www.git.stargrave.org/?p=grumble.git;a=summary
http://www.git.stargrave.org/?p=barnard.git;a=summary
Mumble это единственная мне известная программа/протокол VoIP который
just works без проблем (ecf0bbd8f4f25d6039438e1c6756c518e6979cfb). На
работе его используем не первый год для голосового общения. Недавно один
сервер отвалился и надо было быстренько поднять где-нибудь ещё один.

Попробовал github.com/mumble-voip/grumble реализацию на Go. Пришлось
добавить руками поддержку пароля, но в остальном всё заработало отлично.

А сегодня попробовал реализацию на Go клиента github.com/layeh/barnard.
Почти никаких настроек, никакого voice activity detection, jitter buffer.
Грузит на 100% целое ядро. Голосовой трафик отправляет только по TCP
(что для VoIP конечно не очень приятно). Да и проект вроде бы заброшен.
Но с grumble сервером и родными Mumble клиентами это всё вполне работает.
Так что, видимо, сейчас это будет моим основным клиентом. Уж очень мне
не нравится что Mumble и его murmur сервер используют Qt, который
огромный монстр и держать одного его только ради изредка запускаемых
mumble/murmurd не хотелось бы.

И внезапно приятный факт: grumble и barnard у меня собираются моим
fork-ом Go с поддержкой ГОСТового TLS 1.3. И значит они автоматом
используют отечественную криптографию при связи друг с другом.

2 years agoOSPFv3 вместо BGP
Sergey Matveev [Tue, 14 Feb 2023 13:33:23 +0000 (16:33 +0300)]
OSPFv3 вместо BGP

В 982b29ed90d9c1e8e39ebb4398e0a4b0f26ad927 писал что использую BGP
поверх всяких VPN. После обновления FreeBSD
(d18cc33db12bc96b17f08e8afd82a493b50bbec9) решил ещё раз посмотреть на
bird и протоколы маршрутизации.

Multicast в WireGuard как-то но поддерживается. Так как у меня не самая
новая FreeBSD, то штатный последний код WG не собирается (или не
работает -- уже не помню) из-за разницы в системных вызовах. Для работы
с TUN интерфейсами просто использую старую версию файла кода. Но в новой
вижу что выставляется IFF_MULTICAST режим. Поправил свой код, флаг
выставляется, интерфейс типа становится multicast capable и это даже
как-то работает.

Раз заработало, то решил переехать на Babel, который выглядит куда более
простым чем BGP/OSPF, как мне уже писали в комментарии. Но какая-то
фигня творится с работоспособностью. То работает, то нет. tcpdump
показывает что трафик отправляется демонами. Но противоположная сторона
почему-то не всегда "слышит" его. Думаю что multicast поддержка в WG
какая-то не очень. Попробовал OSPF при этом -- аналогичное странное
поведение, полурабочее, как повезёт.

Но пока с этим возился, то увидел что OSPF то можно использовать и
поверх точка-точка соединений. И это уже отлично заработало. Какой
profit получил от такого OSPFv3 PtP по сравнению с BGP? В конфигурационном
файле теперь не нужно задавать AS-ы, пускай даже приватные. BIRD2 для
Babel не позволяет указать PtP адреса, хотя, при беглой оценке, вроде бы
сам протокол может работать без multicast-а.

2 years agoРазлад в GnuPG и OpenPGP workgroup
Sergey Matveev [Tue, 14 Feb 2023 09:06:16 +0000 (12:06 +0300)]
Разлад в GnuPG и OpenPGP workgroup

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

    Using new OIDs will eventually make keys and signatures created since 8
    years invalid.  Further deployed software won't be able to handle any
    newly created signature or key.  This is crazy, folks.

    Sometimes I can't but fear the goal of the WG is to harm the repudiation
    of OpenPGP.

Они долго обсуждают уже тот факт, что OID-ы для *25519 алгоритмов не
соответствуют всяким позже появившимся RFC, мол поэтому давайте их
поменяем. Очевидно, поломав совместимость. Действительно, безумие.

И у Коха прям решительный отказ возможности использовать GCM в OpenPGP.
Он сделал EAX deprecated (ff984ae8de23837f0c650097b779807e10f2ebaf), так
как патенты на OCB иссякли и поэтому только OCB остаётся. Я на его
стороне: ибо зачем GCM, если есть OCB, который ну абсолютно всем лучше?

В рассылке уже даже поднимают вопрос о будущем OpenPGP, ведь то, что
делает GnuPG команда, на что она ориентируется (черновики RFC, которым
уйму лет), расходится с тем, что творит WG. Как бы не появилось две
ветки развития этого стандарта. Что, похоже, запросто будет, ибо WG
творит дичь, полностью игнорируя то, что на практике уже много лет
применяется.

Тут на ум уже приходит и ssh-keygen возможности подписывания
произвольных данных (e6184094fc1f16c6d0648dfb62b02e95c15b4136) и age
утилита шифрования, как нечто до тривиальности простое, если появится
череда несовместимых между собой PGP-related инструментов.

2 years agoОбновил FreeBSD на VPS
Sergey Matveev [Tue, 14 Feb 2023 08:23:43 +0000 (11:23 +0300)]
Обновил FreeBSD на VPS

Почему бы не обновить ОС на моей VPS-ке, где древнейшая FreeBSD 11.0?
А то Go-шная golang.org/x/sys библиотека там уже имеет несовместимые
изменения и не работает по сути. Никакой автоматизации для этого не
делал -- всё руками поднимал. Но вообще наверное менее пары часов ушло
чтобы поднять postfix, firewall, unbound, bird, chrony, curvedns,
dqcache, godlighty, nsd, wireguard, ну и базовые настройки ОС сделать.
Это кстати первая 13.x версия что я трогаю. Дома везде до сих пор 12.

Больше времени потратил на поднимание IPv6. ОС я не обновлял на самом
деле, а просто в виртуальную машину полностью переустановил
предоставленный хостером образ. Он не то что не поднялся, а вообще даже
данные о ВМ показать не мог. Пришлось писать в техподдержку. Починили.
После этого упорно не подхватывался ни SLAAC, ни даже руками прописанный
default маршрут не позволял ходить трафику. Снова ожидание техподдержки,
которая кстати отвечала на некоторые письма менее чем за минуту даже.

2 years agoПечальная история i740
Sergey Matveev [Tue, 14 Feb 2023 05:18:44 +0000 (08:18 +0300)]
Печальная история i740

https://habr.com/ru/post/716732/
А у нас на AMD K6 компьютерах долгое время была как-раз эта видеокарта.
Откуда взялась уже никто не вспомнит. Возможно по дешёвке отдавали или
вообще просто так. Но на ней я в тьму игрушек трёхмерных поиграл.

2 years agoТретий день Зимнего МОРа
Sergey Matveev [Mon, 13 Feb 2023 09:17:06 +0000 (12:17 +0300)]
Третий день Зимнего МОРа

Восхитительно и великолепно! Был на doom-сцене, опять на "Бумажной
фабрике". В этот раз организаторы явно куда более нормально подошли к
набору групп и их сортировке по сценам. А то в прошлый раз на death
сцене был power metal, doom, thrash, но только одна группа death.
Сейчас, судя по афише, на death действительно, тот же Rigor Mortis, уже
death команды имеются. Разрывался пойти ли на doom, где я три группы и
так уже слышал, на death, где тоже половина мне известна в живую, либо
на outsider сцену. На последней пара grindcore банд, одна harsh
noise-овая и... пара вообще непонятно кого, точно outsider-ов. Но решил
сходить в понравившуюся Фабрику, не пожалел.

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

Затем были Nosłeep, которые мне как не понравились на прошлом МОРе, так
и сейчас тоже. Вот вообще никак не ложится к ним душа. Очень не нравится
тембр голоса вокалистки когда они и чисто поёт и screaming делает. Но
многим вроде бы заходит, ok.

Затем пошли Pale Keeper, как всегда превосходные. Народ подтянулся к
сцене подошёл чтобы получше их послушать. Много шутили и смеялись между
песнями. Даже устроили конкурс на знание названия песен группы и
девчонка выиграла их футболочку. Появились аж целых три новые песни, к
тому же и на русском языке. "Водяной" понравился очень, даже по текстам.

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

Потом пошли уже мне не знакомые группы. Halter играл нормальный такой,
мрачненький (а какой же ещё он может быть?) doom. Неплохо было.

Затем одну композицию отыграли "Шишкин лес". Ну что сказать? Если их
музыка это то, что творится в шишкином лесу, то это было бы самое
страшное и мрачное место на Земле. Крайне мрачная, тёмная, угнетающая
атмосфера создавалась музыкантами. Гитары создавали перманентный низкий
distortion звук, барабанщик раз в 5-10 секунд по удару делал по барабану.
В целом понравилось, но это на один раз. Повторно уже не будет
интересно, да и всё же занудно и под конец скучновато.

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

И раскошелился ещё на 15 дисков, среди которых полно deluxe edition-ов.
За все эти три дня я понабрал black, folk black, sludge и всяких смежных
и схожих вещей, но ещё не слушал толком. И отдал за всё это не менее 30k₽.

2 years agoВторой день Зимнего МОРа
Sergey Matveev [Sat, 11 Feb 2023 21:08:56 +0000 (00:08 +0300)]
Второй день Зимнего МОРа

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

Народу было в несколько раз больше чем вчера. Будь побольше, то уже бы
было тесновато и неуютно. Начали прям вовремя, по расписанию. Но одной
группы не было, так что подольше поиграли последние. Последними были
Бѣсъ, но я с них ушёл: не потому что не нравятся, а потому что уже
слышал на первом МОРе, не так в восторге от них был чтобы жаждать
повтора, время как-раз было ещё удобное чтобы домой вернутся.

Первыми были Khlad. Неплохой black metal незатейливый. В конце даже
исполнили кавер на Satyricon. Отлично для разогрева.

Далее шли Sinful. Которых, опять же, уже видел на первом МОРе. И они
стоят чтобы именно на них сходить. Убедился в этом. Отлично сыграли!

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

Затем долго играли Night Abyss, под который народ добротно послеймился.
Неплохой бодренький классический такой black. Всё отлично, не придерёшься.

Затем играли Frostlagte Måne, которые развесили, так сказать, весёлые
стрёмные плакаты, куча черепов на синтезаторе, разукрашенные все по
полной. Играли тоже неплохой быстренький black.

Вообще не планировал, но прикупил ещё 16 альбомов.

2 years agoПервый день Зимнего МОРа
Sergey Matveev [Fri, 10 Feb 2023 22:11:44 +0000 (01:11 +0300)]
Первый день Зимнего МОРа

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

Был на post-сцене. В очередной раз для меня доселе неслыханное в живую.
Да и в целом то с пост-рок и похожими вещами я только в общих чертах
знаком. И я думал что будет конечно много хорошей музыки, но более
атмосферной, нудной. Фиг там!

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

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

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

Но их всё же, не то чтобы затмили, но чуть потеснили Sterbefall. Опять
же, не знаю что это -- post-black что ли какой-то. Но смешение и
сочетание стилей просто отпадное. Вокалист понравился. Он же играл и на
12-ти (?) струнной гитаре. Один из лучших black-ов что слышал в живую.
В голову приходил при этом Deathspell Omega.

Ну уж переплюнуть их нельзя было. Ошибался. L'Homme Absurde были
сногсшибательны и умопомрачительны. Местами их барабанщик фигачил так,
что многие грайндкорщики трушные позавидовали бы. Красивые медленные
проигрыши. Мощнейшие бластбитные почти нойзовые убийственные вставки.
Необычный, но очень подходящий для такой музыки вокал. Позавчера
(498e3224020a30fcdf1f1820166f77cce67c18fa) писал как мне понравился
Crust. Так вот эти очень много чем на него похожи были. По тяжёлой
мрачности местами они заставят покуривать в сторонке большинство
doom-еров.

Приобрёл 11 альбомов, но завтра ещё доберу некоторых. Плюс футболку Moon
Far Away, которые вообще к металлу никакого отношения не имеют, но label
знает толк.

2 years agoDatura на Coyote Brutal Fest
Sergey Matveev [Fri, 10 Feb 2023 11:57:01 +0000 (14:57 +0300)]
Datura на Coyote Brutal Fest

https://rockgig.net/event/573828
https://vk.com/cbf17
Увидел что на очередном CFB будут Datura. Давно с ними знаком и слышал
на многих концертах. Единственная группа, которая мне известна (которую
припоминаю) с Украины в тяжёлой музыке. Оказывается, они из Донецка. Так
что всё в порядке у них, даже вот приезжают выступать.

2 years ago.iso.wv
Sergey Matveev [Thu, 9 Feb 2023 20:23:08 +0000 (23:23 +0300)]
.iso.wv

Некоторая музыка с BitTorrent трэкера раздаётся в виде ISO CD-образа...
на котором записаны CUE, JPEG обложки и WavPack файл. Не могу придумать
причину использования .iso. Зачем??? Если хочется объединить файл в один
файл, то не лучше ли ZIP? Но ведь и torrent файлы позволяют несколько
файлов "отправлять". Загадка.

2 years agoМТС предлагает заниматься FreeBSD системами
Sergey Matveev [Thu, 9 Feb 2023 14:48:04 +0000 (17:48 +0300)]
МТС предлагает заниматься FreeBSD системами

Прислали тут предложение о сотрудничестве. С нуля набираемая команда,
которая будет делать системы на основе этой замечательной ОС. Приятно
слышать что столь крупная компания делает такой технический выбор!
Встречал МТС представителей на ТК26 собрании на тему шифрования в
сотовых сетях -- других операторов там не было.

2 years agoCrust -- Stoic
Sergey Matveev [Thu, 9 Feb 2023 13:56:59 +0000 (16:56 +0300)]
Crust -- Stoic

https://crustband.bandcamp.com/album/stoic
https://www.youtube.com/watch?v=q4znvwHX77o
https://crustband.bandcamp.com/album/and-a-dirge-becomes-an-anthem
https://www.youtube.com/watch?v=MIYapGQ1zJg
Заслушиваю этот альбом, приобретённый на Born Again Fest
(c437dce08c9acc568f6c8d898d47ec9dac0f2a08), до дыр уже который день.
Вообще не понятно что за стиль: то ли black, то ли doom какой-то, то ли
sludge, то ли death. Помесь всего. Ну мрачный, очень. Однако хочется
продолжать слушать. А группа то вообще из Великого Новгорода.

2 years agoПриобрёл USB-гарнитуру
Sergey Matveev [Thu, 9 Feb 2023 09:58:19 +0000 (12:58 +0300)]
Приобрёл USB-гарнитуру

Какую-то китайскую Xamien VBet. А то у меня есть только на работе
Koss-овские наушники с микрофоном и приходилось их таскать домой, чтобы
можно было с коллегами пообщаться. Когда я записывался в подкасте
Пиратской Партии (7b340b4f66be802aee6021251087029e306c2368)
(https://www.youtube.com/watch?v=_aiYf_SVb7g), то Антон меня даже
спрашивал что у меня за микрофон, ибо больно уж хорошо звучит. Но и с
новой китайской гарнитурой коллеги говорят что всё тип-топ. А я боялся
что будет так себе качества.

2 years agoКоличество цифр в десятичном числе
Sergey Matveev [Wed, 8 Feb 2023 09:17:18 +0000 (12:17 +0300)]
Количество цифр в десятичном числе

https://lemire.me/blog/2023/02/07/bit-hacking-with-go-code/
Я знаю формулу для узнавания количества цифр в десятичном числе:
    1 + floor(log10(...))
Знаю что это медленно конечно же. Можно просто вереницей if-ов
рассчитать -- гораздо эффективнее, но более длинный код.
А в статье про игры с битами на Go увидел вот такое, отъедающее всего
несколько инструкций на современном процессоре:

    func Log2Up(x uint32) int {
        return 31 - bits.LeadingZeros32(x|1)
    }

    func DigitCount(x uint32) uint32 {
        var table = []uint64{
            429496729685899345828589934582,
            85899345821288490178812884901788,
            128849017881717986818417179868184,
            171798681842147482648021474826480,
            214748264802147482648025769703776,
            257697037762576970377630063771072,
            300637710723006377107234349738368,
            343497383683434973836834349738368,
            385547056643855470566438554705664,
            419496729604194967296041949672960,
            4294967296042949672960}
        return uint32((uint64(x) + table[Log2Up(x)]) >> 32)
    }

2 years agoWireGuard подвис
Sergey Matveev [Tue, 7 Feb 2023 14:36:50 +0000 (17:36 +0300)]
WireGuard подвис

Поднимал у себя на домашнем сервере один демон. 95% времени потратил на
заведение доменного имени под stargrave.org доменом. Что может быть
проще? Одной командой zeasypki (47b11bfd222d9f3f03664035e4fb4ca32cfa75de)
создал X.509 ключевую пару для него. Ещё одной командой экспортировал
ключ и сертификат. Добавил новую запись о домене в stargrave.org.tcl
(d4eadab571bf5e8ea00d19598f129a708a322d15), запустил redo чтобы получить
новый .zone файл с отпечатками сертификата для новой записи. Скопировать
на сервер, svc -t /var/service/nsd и должно быть всё готово.

Журнал второго DNS сервера говорит о невозможности подключиться к
master-у. Действительно, правила firewall-а запрещают трафик между DNS
серверами моими через "обычный" (просто подключённый к Интернету)
сетевой интерфейс. Он должен ходить через WireGuard
(aa04778f64d88a498158e9e361908a32ca2dc7df). А для этого должен быть
маршрут. А для этого работающий BGP. А для этого работающий WG-туннель.
Туннели у меня подняты, с одной стороны tcpdump показывает что трафик
отправляется на другую сторону, но на ней ничего не происходит. Ни
сообщений, ни дешифрованного пакета не видно. И только после перезапуска
WireGuard демона, всё начало работать, обмениваться маршрутами,
реплицировать DNS-ы.

В общем, по какой-то причине демон на VPS-ке вроде бы и работал, но стал
игнорировать пакеты. Возможно потому что это всё запускается на древней
FreeBSD 11.0 и это её баги. Пока неизвестно, но подвох имеется.

2 years agoСъездил в нижегородскую область на Ласточке
Sergey Matveev [Mon, 6 Feb 2023 15:49:37 +0000 (18:49 +0300)]
Съездил в нижегородскую область на Ласточке

Впервые прокатился туда и обратно на Ласточке: скоростной электричке до
Нижнего Новгорода. Всего четыре часа путь занимает.

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

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

2 years agoФорум компьютерных старых пердунов
Sergey Matveev [Fri, 3 Feb 2023 00:58:44 +0000 (03:58 +0300)]
Форум компьютерных старых пердунов

https://tuhs.org/mailman3/postorius/lists/coff.tuhs.org/
Недавно кроме TUHS (The Unix Heritage Society) рассылки появилась там же
и "Computer Old Farts Forum". Обе славны тем, что там реально тусят
хакеры Unix систем, много которых застали 70-80-е года.

2 years agoКаверы на Rectal Bowel Inquisition
Sergey Matveev [Thu, 2 Feb 2023 10:13:06 +0000 (13:13 +0300)]
Каверы на Rectal Bowel Inquisition

https://www.youtube.com/watch?v=T324DKurpEI
https://www.youtube.com/watch?v=d9UwttsVWsA
https://www.youtube.com/watch?v=cnWEv1LkKqw
Познакомился с нашей грайндкорной группой Necrotic Liquefaction.
На альбоме есть кавер на Last Days Of Humanity-овский трэк.
С первых же секунд узнал его, вспомнил что это LDOH. А ведь когда-то
не мог отличить одну горграйд композицию от другой.

2 years agoСнова про conflictStyle=zdiff3 в git
Sergey Matveev [Thu, 2 Feb 2023 08:02:34 +0000 (11:02 +0300)]
Снова про conflictStyle=zdiff3 в git

Упоминал в 65a3b600389ccee4d013251555f5f8a260f2e49e об использовании
этого варианта показа конфликтов в git-е. Сейчас переношу поддержку ГОСТ
TLS 1.3 в Go 1.20 и там прилично конфликтов, которые не накладываются
друг на друга. Невероятно помогает diff3! Ни разу не пришлось
подсматривать отдельным git show (или чем-то подобном) предыдущий код.

2 years agoGo 1.20 теперь собирается 1.17.3+
Sergey Matveev [Thu, 2 Feb 2023 07:12:18 +0000 (10:12 +0300)]
Go 1.20 теперь собирается 1.17.3+

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

2 years agokeys.openpgp.org
Sergey Matveev [Wed, 1 Feb 2023 12:34:07 +0000 (15:34 +0300)]
keys.openpgp.org

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

2 years agoСколько времени занимает вся музыка?
Sergey Matveev [Wed, 1 Feb 2023 11:12:59 +0000 (14:12 +0300)]
Сколько времени занимает вся музыка?

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

    % for i (**.wv(.) **.mp3(.) **.ogg(.)) {
        ffprobe -v error
            -show_entries format=duration
            -of default=noprint_wrappers=1:nokey=1 $i
    } > /tmp/times
    % perl -ne '$s += $_ ; END { print $s / 3600}' /tmp/times
    3273.62875339331%

Так что у меня сейчас чуть более 136 дней музыки всего.

2 years agoTcl на паузе
Sergey Matveev [Tue, 31 Jan 2023 17:23:07 +0000 (20:23 +0300)]
Tcl на паузе

Недавно писал что начал проект на Tcl (e228f38a55fb5888a6bf304f7a189ebe671ba86b).
Но когда столкнулся с необходимостью парсить и работать с огромным
количеством бинарных данных и структур, то пока поставил Tcl на паузу.
Пока просто откладываю его в сторону. Но отсутствие структур пока
немного угнетает. Зато некоторые вещи, типа вот функи чтения из сокета
netstring-а выглядят довольно элегантно, просто, минималистично, при
этом строго валидируя. Например на wiki Tcl-а не было строгих
валидаторов в качестве примера.

    proc ::netstring::get sock {
        set len ""
        while {![eof $sock]} {
            set b [read $sock 1]
            if {$b eq ":"} break
            if {![string match {[0-9]} $b]} {error "bad digit"}
            if {($b eq 0) && ($len eq "")} {error "leading zero"}
            set len "$len$b"
        }
        if {$len eq ""} {error "no digits found"}
        set data [read $sock $len]
        if {[string length $data] != $len} {error "not enough data"}
        if {[read $sock 1] ne ","} {error "no terminator"}
        return $data
    }

    proc ::netstring::put {sock data} {
        set len [string length $data]
        puts -nonewline $sock "$len:$data,"
        flush $sock
    }

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

2 years agoInopexia -- наш ответ на Last Days Of Humanity
Sergey Matveev [Tue, 31 Jan 2023 16:36:47 +0000 (19:36 +0300)]
Inopexia -- наш ответ на Last Days Of Humanity

https://www.youtube.com/watch?v=mFTWmHp96KE
Прослушал тут сборник "песен" отечественных грайндкорщиков. В 2000-х я
тусил вместе с их барабанщиком в зале, когда он ещё не играл в группе.
Некоторые трэки вообще заставили бы нервно курить в сторонке голландцев
LDOH. А ведь Inopexia, Hydrocele и Purulent Jacuzzi в живую я слышал не
раз -- дубасить в живую он также круто может.

2 years agoСерия статей про redo и goredo
Sergey Matveev [Tue, 31 Jan 2023 16:19:27 +0000 (19:19 +0300)]
Серия статей про redo и goredo

gemini://ew.srht.site/en/2022/20221218-redo-0.gmi
Один человек тут написал целую серию статей с введением в redo, кучей
примеров и всё это на примере goredo, с использованием кучи его
опциональных утилит (типа redo-dot).

2 years agoСмена LSP плагина для Vim
Sergey Matveev [Tue, 31 Jan 2023 14:35:26 +0000 (17:35 +0300)]
Смена LSP плагина для Vim

https://github.com/yegappan/lsp
http://www.git.stargrave.org/?p=vim-lsp.git;a=commitdiff;h=a682ee9b6215c9155f170f6b35a972aa14a2999f
Больше года использую vim-lsc плагин (c89a9164128730eb856b89e4f99970a6bfb7b7f4).
И полностью им доволен. Пока не увидел что в обновлённом Vim появилась
встроенная поддержка LSP протокола. По сути то это просто помощник
отправляющий самостоятельно HTTP заголовки и парсящий/создающий JSON-RPC
ответы с идентификаторами.

Посмотрел можно ли с нуля мне самостоятельно написать LSP плагин
используя всё это. Первые шаги взаимодействия получились. Спецификация
LSP от Microsoft прекрасно читается и под Lynx-ом. Но вообще протокол
умеет довольно много всего, как и серверы типа clangd и gopls. Писать
всё с нуля я бы смог, но это не мало.

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

Впервые увидел "virtual text" в действии: LSP/плагин дописывают названия
аргументов из сигнатуры функции, хотя на этот текст нельзя встать или
отредактировать. Не понял ещё мешает ли это или нет, но пока пусть будет.

Работает это всё ощутимо быстрее. Хотя я думал что всё упираться уже
должно в сам LSP-сервер. Но нет -- тут и подсветка и goto definition и
вывод ошибок работают почти стремглав.

Но... конечно же нашлась неприятность. А точнее отсутствующая фича. Для
Python у меня в vim-lsc конфиге явно передавалась такая штука как
workspace_config, в котором указывались настройки для LSP сервера
(отключить mccabe и смотреть только на flake8 конфиг). Пошёл смотреть
vim-lsc код, чтобы понять что же такое (с точки зрения LSP протокола)
workspace_config и как он передаётся. Оказалось что это прям отдельное
событие отправляемое на сервер. Чего yegappan/lsp плагин не делает.
Благо код на vim9script, понятный, компактный и топорный. Добавил
возможность указания этого конфига и его отправку на сервер.

2 years agoДобавление surround без пробела
Sergey Matveev [Tue, 31 Jan 2023 12:08:06 +0000 (15:08 +0300)]
Добавление surround без пробела

https://github.com/tpope/vim-surround/commit/3d188ed2113431cf8dac77be61b842acb64433d9
Tim Pope пишет, что добавил пояснение как сделать surrounding без
добавление пробела и в README intro и в help файлы, но всё равно куча
issue на тему как это сделать. Теперь он добавил аж целый FAQ на эту тему.
Люди реально просто выбешивают тем, что ни секунды не хотят потратить на
чтение хотя бы введения какого-нибудь, отвлекая разработчиков и тратя
своё же время и нервы.

2 years agoСтрогая проверка ASN.1 OID в encoding/asn1
Sergey Matveev [Tue, 31 Jan 2023 11:34:43 +0000 (14:34 +0300)]
Строгая проверка ASN.1 OID в encoding/asn1

Много лет назад в рассылку Go я отправил патч с более строгой проверкой
DER кодирования ASN.1 OID-ов. У них можно было успешно отпарсить не
нормализованные числа. Патч проигнорирован, хотя я написал что просто
нет возможности им отправить правки как они хотят без JavaScript. Увидел
что в мае 2020-го эту строгую проверку в parseBase128Int() всё же добавили.

2 years agoSeafile на FreeBSD
Sergey Matveev [Tue, 31 Jan 2023 09:28:54 +0000 (12:28 +0300)]
Seafile на FreeBSD

https://en.wikipedia.org/wiki/Seafile
Есть одно место где установлен Seafile для обмена файлами. Ни один
броузер у меня не позволяет в него войти, даже с включённым JavaScript.
Сказали что есть CLI клиент для него. Попытался собрать. Кроме кучи
зависимостей, кроме того что в autogen.sh с какого-то фига прописан bash
(хотя и под просто /bin/sh BSD-шным работает), упал на том, что где-то
не хватало заголовочного файла для ntohs-like функций. Затем упал на
строчке с sizeof(struct in6_addr), ибо, опять же, не хватало заголовков.
Затем упал на том, что нет inotify для сборки wt-monitor. Конечно нет,
это ж GNU/Linux-specific. А как отключить его сборку? Нет указаний. А
seafile-cli оказался Python скриптом ещё. В общем, даже filesharing
backend приложения умудряются сделать не кроссплатформенными.

2 years agoVidcast-ы в AV1
Sergey Matveev [Mon, 30 Jan 2023 22:56:05 +0000 (01:56 +0300)]
Vidcast-ы в AV1

AV1 кодек настолько понравился (точнее его SVT-AV1 реализация)
(07bddb0ed6a5d2276a10cf77b81e22da2d7c69e6), что решил перекачать и
перекодировать имеющиеся у меня с YouTube-а подкасты. В 2K я их не
качал, ибо много места занимает, да и нафиг нужны такие разрешения.
А в более плохом качестве YouTube использует уж или маленький bitrate
или плохие настройки качества (чтобы быстро кодировалось).

Скачал самые качественные версии роликов, смотря на вывод -F-опции
yt-dlp и задавая по отдельности видео и аудио, и перекодирую в AV1,
но с downscaling-ом до 720p. Такое разрешение достаточно, качество в нём
отличное, ибо исходник хорош, а занимает меньше места в разы. Хотя это у
меня не одну неделю займёт процессорного времени, но прерывать это
легко, ибо выпуски vidcast-ов относительно коротки. Коробит меня, даже
имея терабайты свободного места, тратить по полгигабайта на 20-30мин
видео vidcast-а (ладно бы фильма).

2 years agoТысячи торрентов
Sergey Matveev [Mon, 30 Jan 2023 22:51:40 +0000 (01:51 +0300)]
Тысячи торрентов

Глядя на свою коллекцию музыки (0e39e6d1b75b764057dc33f1d35d924bcb4ed5ea),
решил через BitTorrent заменить всё что у меня в lossy формате из
всякого грайндкора и метала, на что-то нормальное. Более 2200 торрентов.
Это оказалось испытанием для btrtrc клиента, где даже с резко
сокращённым количеством потребляемых тредов
(80defeaa4b493f6d954d0895fdf8fc89409ac875), их всё равно тысячи
создаются, ибо уж очень много файлов параллельно открываются. Пришлось
вообще запускать несколько instance-ов клиента на разных портах. Но
очень многого не найти всё равно.

2 years agoКремниевые титаны: ZyXEL
Sergey Matveev [Wed, 25 Jan 2023 16:47:14 +0000 (19:47 +0300)]
Кремниевые титаны: ZyXEL

https://16-bits.ru/%d0%ba%d1%80%d0%b5%d0%bc%d0%bd%d0%b8%d0%b5%d0%b2%d1%8b%d0%b5-%d1%82%d0%b8%d1%82%d0%b0%d0%bd%d1%8b-%e2%84%9642/
Этот выпуск заканчивается подчёркиванием того факта, что многие и не
знают и не видят как много где всяких ZyXEL-ей, а они есть. Вот и я: для
меня это брэнд модемов был, не более. А оказывается живёт и поживает и
поставляет в колоссальных количествах всякое.

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

2 years agoУже две комнаты
Sergey Matveev [Tue, 24 Jan 2023 21:38:38 +0000 (00:38 +0300)]
Уже две комнаты

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

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

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

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

Маме на концерте (6dfb34781bc52cf88db6db7a4c08c4fb176afcc4) рассказал об
этом сне (она у меня любила сонники читать). Она говорит что эти комнаты
-- небось проекция того что у меня творится в голове. Ну что ж, если
так, то тогда приятно: был огромный объём с кучей ненужного хлама, но от
которого жалко избавиться, а теперь ещё больше места, где уже всё очень
чистенько, ни пылинки, хлама меньше (мониторов я уже не видел), но он
аккуратно сложен в стороночке. И сильное желание всё причесать, выбросить
вот точно лишнее. Целая спальня-комната у меня полностью свободна,
стерильна и ни одного предмета в ней лишнего не было.

Может быть обнаружение такого количества свободного пространства это
реакция моего мозга на то, что я на днях внезапно добавил себе +17TB
свободного места? Просто когда показывал что-то на сервере связанное с
ZFS-ом, я увидел что там как-то на массиве из 20TB дисков маловато
места. Оказывается, со момента переезда на эти диски
(289a1c8a9aa5e98936203d48c6079903aaf3550b) я забыл сделать expand для
pool-а и всё появившееся место просто не пыталось быть задействованым.

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

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

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

2 years agoСходил на "Виртуозов Москвы" с Владимиром Спиваковым
Sergey Matveev [Tue, 24 Jan 2023 20:40:55 +0000 (23:40 +0300)]
Сходил на "Виртуозов Москвы" с Владимиром Спиваковым

Впервые побывал на чисто симфоническом концерте, на государственном
камерном оркестре со Спиваковым в качестве дирижёра и скрипача. Аж
усилителей никаких не было -- только сами инструменты. В целом
понравилось, сходил бы ещё, но уже на что-то более конкретное типа
Баха, Бетховена или Вагнера. Сегодня исполняли как и что-то старенькое
(Гайдн там, Моцарт), так и что-то современное. И мне "старенькое" было
куда интереснее слушать.

Хотя ушам и не хватало напряжения. Подключить бы их виолончели к
электричеству, как это сделали Apocalyptica...

2 years agoЗапятая в конце netstring-а
Sergey Matveev [Mon, 23 Jan 2023 17:28:05 +0000 (20:28 +0300)]
Запятая в конце netstring-а

http://cr.yp.to/proto/netstrings.txt
В netstring формате ([len]":"[string]",") передаваемые строки
заканчиваются символом запятой. Это и удобно для человеческого глаза,
если приходится смотреть что-то не совсем бинарное, и будет неким
сигналом хоть как-то успешного приёма строчки. Но сегодня обнаружил
другой приятнейший эффект: запятую можно изменить на нулевой байт и это
превратит содержимое переданного netstring в строчку пригодную в Си для
работы с родными строковыми функциями. Эта запятая прям резервирует
место для подобного действия.

2 years agoVacuum и Tarja Turunen
Sergey Matveev [Sun, 22 Jan 2023 20:29:47 +0000 (23:29 +0300)]
Vacuum и Tarja Turunen

https://ru.wikipedia.org/wiki/Vacuum
https://en.wikipedia.org/wiki/Mattias_Lindblom
Первый аудио диск который у нас появился после покупки CD-ROM привода --
альбом "Seance At The Chaebol" шведской Vacuum группы, которая у нас и
на новогодних огоньках выступала и по ТВ их "I Breathe" клип крутили
постоянно. Обнаружил что у меня его не было в "оцифрованном" виде.
Спустя четверть века без проблем его прочитал на дешёвом USB приводе.
Оказалось, что Маттиас Линдблум (вокалист Vacuum) написал полно песен
для Тарьи. При деле всё ещё!

Слышать хорошо мне знакомый Vacuum альбом на кардинально совершенно иной
по качеству аудиотехнике... очень необычно! Как-будто впервые слышу.

2 years agoЮбилейный выпуск подкаста old-games.ru
Sergey Matveev [Sun, 22 Jan 2023 20:03:17 +0000 (23:03 +0300)]
Юбилейный выпуск подкаста old-games.ru

https://www.youtube.com/watch?v=spm_t8VVwUs
В этом выпуске просто множество ответов на вопросы от слушателей. Авторы
считают что золотой век компьютерных игр это либо 1990-2000 (один автор),
либо 1995-2005. Приятно осознавать что я застал как-раз именно этот
золотой век. Хотя авторы признают, что и сейчас любой может найти для себя
из новых игр что-то по вкусу. Но придётся поискать, ибо средняя планка
качества и интересности игр понизилась.

2 years agoМоя база данных музыки
Sergey Matveev [Sun, 22 Jan 2023 17:00:24 +0000 (20:00 +0300)]
Моя база данных музыки

http://www.git.stargrave.org/?p=dotfiles.git;a=blob;f=bin/bin/music-indexer
Впервые со времён школы, я хоть как-то решил чуть подразобраться с
коллекцией музыки своей.

Когда-то я хранил альбомы в виде "Artist/Year-Album". Позже перешёл на
Artist-Year-Album, так как просто нет смысла в иерархии, плюс бывают же
сборники с несколькими группами. Если присутствует несколько artist-ов,
то прописываю их в виде "ARTIST_and_ARTIST[_and_...]". Штатно все
названия групп используют заглавные буквы и поэтому "_and_" тут будет
выделяться своим особенными регистром.

Не у всех альбомов имеется год. В основном это очень старые директории,
которые появились у меня неизвестно откуда. Что делать если artist
содержит дефисы? Просто искать слово похожее на год между дефисами.
Может ли быть такое что в artist влезет и что-то похожее на год через
дефисы? Не исключено, но вроде бы пока не встретилось такое.

Я храню все трэки раздельно. Никаких контейнеров или одиночных файлов с
CUE. Во-первых, это потребует специального проигрывателя, который бы их
понимал. Во-вторых, gapless playback должен уметь этот самый
проигрыватель. Если не умеет, то объединить файлы в один продолжительный
аудиофайл легче, чем разделять его. Просто не вижу смысла в
неразделённых аудиофайлах. Файлы называются "XX.NAME.EXT", где "XX" это
номер трэка. Хотя для noisecore альбомов двухзначного числа не хватит
для всех трэков -- там, конечно, это поле шире.

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

Самый старый из использованным мною скриптов -- это torn, который
недавно переписался с Perl на zsh: 9dc73622854227df4a31a4c0a57adfc72a52ecd6
Его я использовал для транслитерации всего что на кириллице. Сейчас же я
перестал это делать, так как под Unix-ом с UTF-8 именами проблем нет,
как и с exFAT (хотя в нём например ":" символ, встречающийся в альбомах,
нельзя использовать).

Основной помощник в переименовании файлов это zsh и его zmv.
Сегодня вот проделывал к примеру:

    zmv '(*).cock_and_ball_torture-(*)-ify.mp3' '$1-$2.mp3'
    for i (*) mv $i Cock_And_Ball_Torture-${${(s/./)i}[-1]}-${${(s/./)i}[2,-2]}

Для разбивание lossless файлов по меткам из CUE файлов, использую
cuebreakpoints ....cue | shnsplit ....wav. А для того, чтобы трэки
переименовать в нормальные названия, то используется самописный
cueparser скрипт, выплёвывающий команды для переименования файлов. Ну а
GNU parallel-ом распараллеливаю процесс сжатия или разжатия. cdparanoia
используется для "оцифровки" аудио CD. Если где-то попадаются
проприетарные lossless форматы, типа ALAC/Monkey's Audio, то прежде
mplayer -aodump, а сейчас ffmpeg используются для получения .wav.

Весь lossless у меня в WavPack формате. Lossy... ну в чём получил его
изначально, в том и будет. Но вся метаинформация по возможности
(ID3-тэги, APE-тэги) выпилена. По факту lossy альбомов у меня больше
половины, но это всё полученные ещё в 2000-х годах, в основном грайндкор
который я не слушаю (а тот что слушаю, у меня есть в lossless). Lossy
записи у меня крайне редко звучат дома. А вот на работе, где нет
качественных наушников, нет смысла и таскать с собой lossless -- для
работы у меня в Opus перекодированные файлы валяются.

Собственно всё это было у меня без изменений более десяти лет. И в конце
2000-х у меня были несколько директорий: FATHERS, FOLK, HARTE, LEICHT,
NOISE. Альбомы папы, всякий рок, из которого я только AC/DC и Led
Zeppelin ставлю. Немного фольклорной музыки. Noisecore, harsh noise.
Что-то "тяжёлое" -- в основном грайндкор, black, death и подобное. А
лёгкое это всякий симфо метал и всё что не тяжёлое.

И так получилось, что HARTE у меня стал неким аналогом помойки
грайндкора который не слушаю, даже Gorguts со всем black metal
перекочевал в LEICHT. В LEICHT директории у меня музыка которую я
"знаю": помню что за исполнитель, что за альбомы. А после ряда последних
концертов у меня не один десяток новых альбомов появился, которые я
далеко не все ещё прослушал. Как я знакомлюсь с ними? Выдаю список
файлов с сортировкой по mtime и смотрю кто из них недавно был получен.
А LEICHT превратился в директори с мешаниной из Мадонны и сурового блэка
Funeral Mist и Napalm Death. В общем просто помойка с "актуальной"
lossless музыкой.

Решил свалить все альбомы в одну большую директорию, а дальше
символическими ссылками наделать, так называемых коллекций. Надо
поместить ряд альбомов в коллекцию black-а?:

    for i (Hate-* Immortal-* Ihsahn-20* Illt-2022-Mercy_Of_The_World)
        ln -s ../../$i cols/black/

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

Работы тут ещё надолго, ведь то, что раньше было HARTE -- та ещё
мешанина. Да и всё не тривиально: ведь многие группы в процессе своей
жизни кардинально меняли своё музыкальное направление. Ладно бы Napalm
Death, у которого несколько brutal death альбомов, но остальные, в
общем-то, grindcore. Но вот Carcass относится к goregrind-у только
первым альбомом. Bathory для меня это, в первую очередь, black metal
альбомы первые, но ведь дальше то у него были viking metal, которым не
особо то место в cols/black. Но тут я уж так не заморачиваюсь сильно.
Bathory у меня попадает в black.

А чтобы себе помочь с тем, чтобы получить список не категоризированной
музыки, начал писать zsh скриптики, которые превратились в один скрипт
создающий .rec базу данных с отпарсенными названиями альбомов,
исполнителей и годом выхода. Массу косяков обнаружил в названиях, что не
удивительно. Но теперь даже альбомы 1349-группы без проблем парсятся,
как и полностью кириллические:

    Artist: 1349
    Year: 2004
    Album: Beyond The Apocalypse
    Lossless: yes
    Collection: black

    Artist: Взрыв Кабачка В Коляске С Поносом
    Year: 2008
    Album: Меня не берут на работу, я нигде не учусь и я некрофил
    Collection: noise

* моментально получить список не-lossless или lossless альбомов:
    recsel -e '!Lossless'
    recsel -e '#Lossless'
* получить black метал альбомы 2010-го года:
    Collection = 'black' && Year = 2010
* альбомы группы Spasm, возможно сборники:
    Artist ~ 'Spasm'

Хотя сейчас мне этот файл будет помогать с категоризацией, ведь это
более 4700 альбомов.

2 years agoПосмотрел "Мисс Поттер"
Sergey Matveev [Sun, 22 Jan 2023 10:42:16 +0000 (13:42 +0300)]
Посмотрел "Мисс Поттер"

https://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D1%81%D1%81_%D0%9F%D0%BE%D1%82%D1%82%D0%B5%D1%80
Фильм про детскую писательницу Беатрис Поттер. Понравились мне как её
рисунки, так и полностью раскрываемая тематика зверюшек всяких (кролики
ж милые!), так и игра Рене Зеллвегер!

2 years agoСисадмин компании использовал компьютеры организации для SETI@home
Sergey Matveev [Sun, 22 Jan 2023 09:27:09 +0000 (12:27 +0300)]
Сисадмин компании использовал компьютеры организации для SETI@home

https://habr.com/ru/news/t/712020/
https://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BA%D0%B0_%D0%93%D0%BE%D0%BB%D0%BE%D0%BC%D0%B1%D0%B0
Мне нравится идея таких распределённых вычислений, ведь это же
колоссальная потенциальная мощность. А электроэнергия много где крайне
дешёва.

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

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

А distributed.net с его поиском оптимальных линеек Голомба выглядит как
реально на практике полезная штука, с настоящей возможностью перебора
всего пространства значений. В итоге я на нём был где-то восемь лет,
запуская на всех не дохлых компьютерах под моим управлением. Хотя их
официальный клиент имеет закрытую часть сетевого взаимодействия, но сам
код алгоритмов доступен в открытом виде. В отличии от других, они хотя
бы предоставляли сборки под FreeBSD. Поэтому даже при закрытии глаз на
закрытость ПО, всё равное мне просто нечего бы было, как правило,
запускать на BOINC-е.

Но с началом СВО, прям через несколько дней, все его серверы
отказывались от меня принимать результаты вычислений. Посмотрел
упоминает ли кто-нибудь о downtime -- ничего не нашёл. Видимо, им
важнее показать что они солидарны с нацистким государством, чем
действительно заниматься совместными вычислениями. Но в ноябре они
завершили об окончании OGR-28 проекта. Так что я всё равно почти всё
время был с ними и находился в top 100 стабильно.

2 years agoПарсинг X.509 сертификатов в Си
Sergey Matveev [Sat, 21 Jan 2023 18:57:29 +0000 (21:57 +0300)]
Парсинг X.509 сертификатов в Си

https://www.sstic.org/media/SSTIC2019/SSTIC-actes/journey-to-a-rte-free-x509-parser/SSTIC2019-Article-journey-to-a-rte-free-x509-parser-ebalard_mouy_benadjila_3cUxSCv.pdf
Статья рассматривает проблемы парсинга сертификатов на Си. Это, само
собой, жопа, из-за сложности как структур, так и самого ASN.1.

Понравился раздел про developer constraints, которые они хотят
использовать.

* C99, без VLA -- вот и я тоже пишу на C99, но чтобы никаких эти VLA,
  ибо это открывает врата в ад. Полностью отказываться от C99 из-за
  этого VLA я не хочу
* Отсутствие динамического выделения памяти. В моих программах malloc
  вообще редко когда встречается. Чаще всего я просто выделяю буферы
  достаточного размера (речь про работу с данными по сети). Пускай часть
  памяти и не будет использована полностью, но зато куда более простой
  код, наверняка и эффективный, плюс меньше возможных ошибок связанных с
  памятью кучи
* Ограниченное использование указателей на функции
* Отсутствие внешних зависимостей
* Использование const и static квалификаторов. Про static компилятор
  подсказывает всегда, как и про const, но про него и так не забываю
* Использование беззнаковых целых чисел ограниченной длины (uint*_t).
  Тоже предпочитаю их, когда явно есть возможность использования
* Строгие опции компиляции. Тут они используют -Weverything, который
  даже в самой документации к Clang не рекомендуется. А я все свои
  проекты всё равно с ним собираю. Лишь считанное количество
  игнорирований есть в коде
* Нет рекурсиям

2 years agoОчистка памяти в Linux
Sergey Matveev [Thu, 19 Jan 2023 21:45:49 +0000 (00:45 +0300)]
Очистка памяти в Linux

https://habr.com/ru/post/711186/
Могу только ужасаться тому что творит автор. Он хочет удалять кэш
файловой системы из оперативной памяти. Если он говорит про то, что у
него типа слабый компьютер, то значит ему важна производительность. Но
при этом он делает прямо противоположные вещи: уничтожает кэш,
уничтожает попытки ОС ускорить работу его и так не быстрого ПК. Я даже
просто не знаю как не делать face palm от этого. Почему то это хочется
сравнить с тем, как люди используют NAT для безопасности LAN.

А ещё он абсолютно непонятно на кой чёрт, но использует Go программы для
того, что можно сделать и просто в shell. А ещё он из Go вызывает bash
(!!!) чтобы выполнить две команды. Просто не понимаю... зачем???

Да и... если не хочется чтобы что-то swap-илось или кэшировалось, то не
проще ли настроить это в ОС/ядре? Убрать причину, а не бороться с
последствиями? Наверное это всё мышление после мира Windows, когда там
только бороться и можно.

2 years agoНачал проект на Tcl
Sergey Matveev [Thu, 19 Jan 2023 19:00:17 +0000 (22:00 +0300)]
Начал проект на Tcl

https://en.wikipedia.org/wiki/Tcl
На работе дали одну задачу, которую реализуй как хочешь. Аналог на
Python или Go занимает несколько тысяч строк кода. Решил использовать
Tcl. Tcl ради Tcl, уж очень хочется. Пока целый день перечитывал
документацию, вспоминал язык, уже что-то работающее написал. Пока
мне всё ещё очень нравится язык чисто эстетически. Подвохов пока
особо никаких не встретил. Задача связана с I/O, работе с байтами,
криптографией.

2 years agoThe Moon Mistress
Sergey Matveev [Wed, 18 Jan 2023 18:31:06 +0000 (21:31 +0300)]
The Moon Mistress

https://www.metal-archives.com/albums/The_Moon_Mistress/Silent_Voice_Inside/329857
https://www.youtube.com/watch?v=_k3xZwz-bNc
https://www.metal-archives.com/images/3/5/4/0/3540326905_logo.jpg
Послушал их приобретённый альбом "Silent Voice Inside". Вот теперь я
понимаю что такое stoner metal, его фишки. И на концертах и на других
альбомах. Sludge, судя по всему, всё же ощутимо быстрее, как минимум, не
такой doom-овый, но и понятно почему многие группы/альбомы и к stoner и
к sludge причисляют (граница размыта).

Обожаю подобное звучание! Много distortion не бывает, много
перегруженного баса не бывает, много тарелок не бывает, заводные
грувовые мотивчики не повредят -- ребята из этого жанра понимают всё это
как никто.

Особо проблем мне доставил их логотип на альбоме. Он шёл в составе пачки
без коробочек -- мол пачка за 666₽ для знакомства с продукцией label. На
диске нет ничего кроме логотипа группы. Что это? Фиг знает. Беру диск,
вижу "s", ещё "s" вроде бы, "w" на конце. Открываю noname666.bandcamp.com
страницу с полным списком альбомов. Сохраняю в файл. Разными регулярными
выражениями, задавая "s" и "w" буквы, пытаюсь найти альбом/группу.
Безуспешно. Потратил наверное минут десять. И только потом решил на 180
градусов повернуть диск в руке, чтобы увидеть что это не "w", а "m", а
также увидеть и другие буквы. Понапишут этими шрифтами... даже не
понятно где верх, а где низ. Я кстати ношу футболку с чёртом каким-то,
где тоже есть надпись, но до сих пор не знаю что там написано, что за
группа.

2 years agoAIX больше не будет разрабатываться, как и Solaris
Sergey Matveev [Wed, 18 Jan 2023 09:53:38 +0000 (12:53 +0300)]
AIX больше не будет разрабатываться, как и Solaris

https://www.theregister.com/2023/01/17/unix_is_dead/
Хотя после поглощения Oracle-ом Sun-а и так было понятно что Solaris-у
конец. А AIX ведь оставался одним из немногих Unix-ов. А HP-UX вообще,
как оказалось, не работал на чём либо кроме PA-RISC и IA-64 процессорах.
SCO OpenServer последних версий это, по сути, FreeBSD.

2 years agoЗлурад
Sergey Matveev [Mon, 16 Jan 2023 09:17:49 +0000 (12:17 +0300)]
Злурад

https://www.youtube.com/watch?v=qaWE7uHKz4g
Из пачки новых приобретённых дисков, совершенно незнакомого направления
по большей части, незнакомого label-а, первым поставил альбом Злурада
"Во благо злу". Как сказал мне глава label-а, это чуваки типа десять
часов импровизировали, и вот что-то из записанного нарезали на трэки,
получился альбом. Получилось здорово, забавно и задорно!

2 years agoИнтерактивная девочка
Sergey Matveev [Mon, 16 Jan 2023 09:14:49 +0000 (12:14 +0300)]
Интерактивная девочка

На концерте (c437dce08c9acc568f6c8d898d47ec9dac0f2a08) услышал разговор
двух парней, сравнивавших вокалисток из Clarity Vision и heXenblatt. Про
первую парень сказал что она "была более интерактивной", а вторая
"стеснялась похоже". И речь тут просто про то, что первая чуть больше
двигалась, подтанцовывала. Но фраза про "интерактивность" повеселила.

2 years agoBorn Again Festival
Sergey Matveev [Sun, 15 Jan 2023 08:17:34 +0000 (11:17 +0300)]
Born Again Festival

Вчера была куча концертов-фестивалей: и всякий pornogrind, и death
metal, и doom metal, и stoner/sludge. На всё хотелось бы сходить. Но мой
выбор на stoner/sludge в Peak Sound-е, в котором я уже стал не редким
гостем.

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

Пришёл не к началу, засиделся в гостях у родителей, поэтому пропустил
Aether, но, честно говоря, его мне и не особо то хотелось слушать
(aee4f0c9572c18251dd8e10d712f0a2465bd19d4).

Затем вышли мне известные Clarity Vision. В отличии от гаража где я на
них был, в Peak Sound звук конечно на порядок мощнее и чище. Куча песен,
хоть я и только один раз их слышал, уже были знакомы, в голове
отложилось. Играли от души, у всех (музыканты, слушатели) улыбки,
отличный звук, отличный кач -- я уже был очень доволен и счастлив. Вроде
бы на них уже и слэм устроили, если не ошибаюсь.

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

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

Я подумал что чумовое выступление heXenblatt сейчас мне вообще всё
испортит, ибо последними должны выступать Pale Keeper
(3d70a9949cba9d5fbfa8a1f5084e405d7e891cc6), которых ждал, которые очень
медленные и не шибко то танцевальные. Но их мощь, крутая игра гитариста,
заставили снова бесноваться весь зал. Звук был такой атасный, что я
лично отдельно поблагодарил звукача за это. В перерыве между песнями
барабанщик что-то там простоватенькое сыграл, из зала вылетела фраза
"прям как Bloodhound Gang", после чего всем залом через пару секунд
начали все напевать вместе "the roof, the roof, the roof is on fire".
Поржали от души с музыкантами. Одну песню гитарист с барабанщиком
закончили такой молотиловкой и скоростью (что было прямой
противоположностью их музыке довольно медленной), что даже грайндкорщики
могли бы позавидывать -- но это они от избытка чувств, от хорошего
настроения. И тоже их позвали на бис, где они по сути вообще все свои
имеющиеся песни отыграли. Тоже поблагодарили за офигеннейшую атмосферу,
за потрясающую поддержку.

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

2 years agoYAML из ада
Sergey Matveev [Sat, 14 Jan 2023 09:12:22 +0000 (12:12 +0300)]
YAML из ада

https://habr.com/ru/post/710414/
YAML ужасно сложен и вообще я убеждён что формат не имеющий право на
существование, ибо лучше не станет. Документ в статье представлен где
можно изрешетить себе ноги. Шестнадцатеричные значения; вызовы тэгов;
проблема Норвегии (8976383f8feb44fca9cf0b8f4e614b853d671214); ключи
становящиеся не строками, а потом строками; числа становящиеся строками.
А я люблю Hjson.

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

server_config:
  port_mapping:
    # Expose only ssh and http to the public internet.
    - 22:22
    - 80:80
    - 443:443

  serve:
    - /robots.txt
    - /favicon.ico
    - *.html
    - *.png
    - !.git  # Do not expose our Git repository to the entire world.

  geoblock_regions:
    # The legal team has not approved distribution in the Nordics yet.
    - dk
    - fi
    - is
    - no
    - se

  flush_cache:
    on: [push, memory_pressure]
    priority: background

  allow_postgres_versions:
    - 9.5.25
    - 9.6.24
    - 10.23
    - 12.13

2 years agoЗимний МОР
Sergey Matveev [Fri, 13 Jan 2023 15:05:14 +0000 (18:05 +0300)]
Зимний МОР

https://metaloverrussia.ru/winter-mor-2023
Внезапно увидел что будет Metal Over Russia в зимнем варианте. Тоже три
дня, но уже даже по четыре площадки параллельно каждый день. Тут уже
прям перебор: я на многое хотел бы сходить, но не выйдет. В общем, буду
смотреть как это всё выйдет. Очень рад что у нас так с металом активничают!

2 years ago10bpp при кодировании в AV1
Sergey Matveev [Fri, 13 Jan 2023 09:45:16 +0000 (12:45 +0300)]
10bpp при кодировании в AV1

Увидел тут мнение о том, что в AV1 лучше кодировать в 10 бит-на-пиксель,
даже если исходный материал в 8bpp. Действительно, особо не влияя на
производительность, оно заметно снизило количество блочных артефактов в
Рике и Морти, где много равномерных градиентов.

2 years agoПоигрался с AV1 видеокодеком
Sergey Matveev [Fri, 13 Jan 2023 05:11:36 +0000 (08:11 +0300)]
Поигрался с AV1 видеокодеком

https://netflixtechblog.com/svt-av1-an-open-source-av1-encoder-and-decoder-ad295d9b5ca2
https://gitlab.com/AOMediaCodec/SVT-AV1
https://code.videolan.org/videolan/dav1d
Ибо говорили что конкретно этот кодировщик настолько быстр, что
сопоставим с HEVC-ом становится. Ну что ж, попробовал. Сразу же упал, на
попытке кодирования screencast-а, на том, что кодировщик поддерживает
только 4:2:0, никаких 4:4:4. Дальше прямо в примере запуска --help
указывается что CRF режим можно использовать в несколько проходов, но...
меня тоже сразу же послали что они только для VBR режима.

Сравнил с VP9 закодированным эпизодом Рика и Морти (960x540 8bpp),
который делался в жирных медленных настройках, в два прохода с CRF=24, а
это где-то полтора-два часа на 22мин эпизод. В AV1 указал такой же CRF
(шкала у них одинаковая) и по умолчанию preset=10, который кодировал со
скоростью на порядок выше чем real-time проигрывание. Плюс
распараллелился на все ядра. Размер файла вышел побольше, качество
чуть-чуть похуже, но это если всматриваться, не кардинально.

Попробовал закодировать с preset=2. Это уже не всегда параллелилось на
все ядра, скорость была где-то 3.5 FPS, но это всё равно существенно
быстрее чем я пробовал с libaom, в котором у меня фильм бы месяц
кодировался. Жрёт под два гигабайта памяти.

В итоге: примерно за то же время кодирования, с куда большими
возможностями по распараллеливанию, я получаю на 8% меньшего размера
файл с ощутимо лучшим качеством картинки (почти не увидел ни одного
артефакта вглядывась). В принципе, наверное несколько десятков процентов
лучшего качества (или меньшего bitrate) действительно есть. SVT-AV1 прям
делает этот кодек полностью юзабельным даже для real-time кодирования с
отличным качеством. Прежде я думал что AV1 годен только с аппаратным
ускорением.

Декодирую я его используя VideoLAN-овский dav1d. Ни в SVT-AV1, ни в
dav1d никаких Rust-ов, всё без проблем собирается, интегрируется с
FFmpeg-ом.

Пока не вижу причин не переходить на него. Весь последний сезон Рика и
Морти вот как-раз надо будет перекодировать и там как-раз всем этим
кодекам очень не сладко приходилось с этой почти синтетической графикой.

2 years agoСборник мифов о HPC
Sergey Matveev [Wed, 11 Jan 2023 19:05:14 +0000 (22:05 +0300)]
Сборник мифов о HPC

https://arxiv.org/pdf/2301.02432.pdf