]> Sergey Matveev's repositories - stargrave-blog.git/log
stargrave-blog.git
3 years agoРазные степени сжатия WavPack
Sergey Matveev [Wed, 6 Oct 2021 09:00:15 +0000 (12:00 +0300)]
Разные степени сжатия WavPack

Увидел что у wavpack-а есть ещё более ресурсоёмкие опции кодирования: -x3.
* без параметров: 35сек кодирование, 31сек декодирование
* -hh (что я использовал всегда): 61сек кодирование, 50сек декодирование
* -hh -x3: 401сек кодирование, 50сек декодирование
При этом -hh делает ~1.1% лучше сжатие, а -x3 лучше всего на 0.2% ещё.
Так что -x3 точно не стоит затрат. Да и в принципе то и -hh наверное
тоже, особенно если думать про энергоэффективность (декодирование
существенно дороже).

3 years agoХостинг в России
Sergey Matveev [Tue, 5 Oct 2021 11:35:26 +0000 (14:35 +0300)]
Хостинг в России

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

А я не забуду как Gandi.net заблокировал все мои домены (буквально
перестали резольвиться, в whois были отключены) и просил сканы документов.
c31f6098d68cde8ca765e916fb58e4cb7ce93a69. Ну их нафиг -- ещё и
приватные, касающиеся только гражданина РФ, данные отправлять всяким
козлам, которые даже не могут предупреждать вменяемо о вопросах
возникших.

3 years agoВремя сборки LLVM на NUC
Sergey Matveev [Tue, 5 Oct 2021 11:18:50 +0000 (14:18 +0300)]
Время сборки LLVM на NUC

https://www.opennet.ru/opennews/art.shtml?num=55898
Прежде на ноутбуке у меня вроде что-то типа шести часов собирался LLVM 11.
Сегодня собрал LLVM 13 уже на новом NUC-е. Заняло менее часа! Для меня это
качественная разница. Ещё больше доволен железом.

3 years agoFarbfeld не тру
Sergey Matveev [Tue, 5 Oct 2021 10:04:29 +0000 (13:04 +0300)]
Farbfeld не тру

https://news.ycombinator.com/item?id=10890873
В 71870b1510dfc2727093f2767b994b8596f9b163 упоминал про farbfeld
suckless формат для изображений. Просто банально 16-ти битные
4-канальные sRGB пиксели. Но недавно читал много про HDR и WGC
(bf85087926d91f2bc3de3cd5e16ec835d63acca1) и теперь понимаю почему одним
из первых комментариев, критикующих farbfeld, является его sRGB-only
(хотя это жёстко нигде не вшито) цветовая палитра. Всё же сейчас уже
реально пора думать про WGC. И 16-бит отнюдь может быть недостаточно, не
даром в JPEG2000 и JPEG-XL 32+-бит на канал!

3 years agoLet's Encrypt протухание CA сертификата
Sergey Matveev [Tue, 5 Oct 2021 09:52:09 +0000 (12:52 +0300)]
Let's Encrypt протухание CA сертификата

https://www.opennet.ru/opennews/art.shtml?num=55875
В 0cf376851fe0d97b3f8101676c05fa0541b1b27f уже была новость про то, что
один из сертификатов для Let's Encrypt протухнет. На свой основной
компьютер я какие-то новые LE CA добавлял -- поэтому никакой
работоспособности не заметил у себя. Но вчера приметил, что многие
репозитории на http://www.git.mirror.cypherpunks.ru/ не обновлялись
очень давно, в том числе всякие порты.

На серверах сертификаты касающиеся LE не были обновлены (должным
образом). Добавил какие-то -- всё заработало.

А сегодня irssi не подключался к Libera.Chat. s_client, gnutls-cli --
все подключаются, а irssi не может найти issuer-а. Слинкован напротив
OpenSSL. Вижу что вроде бы все корневые сертификаты имеются, не протухли.

На работе участвовал в написании X.509 валидатора цепочек. Решил
заиспользовать его. И он мне чётко выдал что зацикленный поиск корневого
сертификата идёт. Удалил и протухший CA (вроде где-то это что-то ломало)
и один из корней с одинаковым subject-ом.

Приятно когда своя же утилита реально помогает :-). Но существование
Let's Encrypt-а конечно заставило меня потратить время из-за всех его
кроссов и прочего короткоживущего говна.

3 years agoБинарные патчи
Sergey Matveev [Mon, 4 Oct 2021 18:00:52 +0000 (21:00 +0300)]
Бинарные патчи

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

Впервые в жизни делал бинарный diff. Даже не знал вообще с каких утилит
то начинать. Оказалось, что их коробки в FreeBSD есть bsdiff и bspatch.
Обновление конфигурации или даже добавление кода типа аутентификации
клиента по TLS сертификату -- порождает diff размером в килобайты.
Работает не шустро, но маленький файл приятен, так что стоит того.

3 years agoДень злости
Sergey Matveev [Mon, 4 Oct 2021 17:50:52 +0000 (20:50 +0300)]
День злости

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

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

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

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

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

3 years agoПосмотрел пятый сезон Рика и Морти
Sergey Matveev [Mon, 4 Oct 2021 17:49:43 +0000 (20:49 +0300)]
Посмотрел пятый сезон Рика и Морти

Уже давно. Но сегодня окончательно осознал что всё же это худший сезон.
Некоторые серии прошлых поставил -- ни в какое сравнение! Прям можно
5-ый полностью выкинуть.

3 years agoЕщё статья про вред динамической линковки
Sergey Matveev [Mon, 4 Oct 2021 08:04:57 +0000 (11:04 +0300)]
Ещё статья про вред динамической линковки

https://gavinhoward.com/2021/10/static-linking-considered-harmful-considered-harmful/
Ничего нового для себя не открыл, со всем согласен. Читая "Static
Linking Considered Harmful" аналогичные парирования в голове рождались.

3 years agogodlighty заменил lighttpd
Sergey Matveev [Sun, 3 Oct 2021 17:02:46 +0000 (20:02 +0300)]
godlighty заменил lighttpd

http://www.godlighty.stargrave.org/
В 6f81b22ce2138552e3258cac5a04f6221f21cd7f брякнул про то, что вообще
написать свой web-сервер, а не трахаться с nginx/lighttpd, которые ещё и
зависят от мерзкого OpenSSL.

Сказано -- сделано! Полтора дня и web-сервер *моей* мечты готов. Я
всегда говорил что Go это не только для Web-а, но, похоже, фактом того
что я полностью заменил свои web-серверы и даже HTTP/HTTPS-клиенты/прокси
(4d83a1e341b4ef615a0e9c5cfd6db75b757ef22e) на Go реализации, которые по
максимуму используют родные возможности библиотек, только подтвердил это.

TLS, TLS 1.3, session resumption, ГОСТ криптография (с моим gostls13),
SNI, HTTP/1.1, HTTP/2, ETag, Last-Modified, If-* preconditions, Range,
gzip -- всё это из коробки или работает или имеет помощников. Directory
listing наверное самое здоровое что пришлось дописать. Из внешних
зависимостей использовал одну для Zstandard сжатия (проверил напротив
Wget2), одну для human-readable отображения размеров файлов,
golang.org/x зависимости для ограничения соединений, узнавания ctime и
WebDAV.

Но конфигурация вшита в сам сервер. Она представляет исходный код. Но
это не один здоровый handler, а вполне себе аккуратные небольшие
функции, которые по сути только специфику обрабатывают (redirect, CGI),
а в остальном, так как статические файлы, то просто задают словарики с
несколькими ключами настройки. Например добавление знания о сайте
godlighty, включая TLS сертификаты, заняло ровно одну строчку. Только
файлы с описанием расширения и MIME типов у меня сделаны в виде
файликов, а не Go-кода, просто чтобы их, если что, было бы проще
переиспользовать в других местах, ибо корректность типов я там дотошно
корректно старался делать.

Вообще я думал что будет всё *гораздо* геморройнее сделать и тем более
конфигурировать. Но оказалось и проще и красивее, сам удивлён. А ведь
всё началось с того, что я хотел проверять наличие .meta4 файла и
вставлять Link заголовок к нему :-)

3 years agoКрутые порты используют goredo
Sergey Matveev [Thu, 30 Sep 2021 09:59:24 +0000 (12:59 +0300)]
Крутые порты используют goredo

https://github.com/andrewchambers/coolports
Coolports использует (в том числе) goredo для сборки портов. Круто!
Сам не использовал, а узнал только из-за bugreport-а в рассылку goredo.

3 years agoДокументация к nginx, lighttpd
Sergey Matveev [Thu, 30 Sep 2021 08:13:55 +0000 (11:13 +0300)]
Документация к nginx, lighttpd

https://nginx.org/en/download.html
Много я какахами поливал nginx за то, что документацию в tarball-ы
не включают и не предоставляют её никак, кроме как просто на сайте
последней версии. Но тут вчера увидел что есть репозиторий с этим
самым сайтом, со всей документацией. Да, это не так удобно, немного
геморроя (хотя, если дока вся из себя типа append-only, обратно
совместимый API, то нормально), но всё же можно одной командой
получить всю доку по нему. Зеркалирование сайта хоть и делается
одной командной, но это нечестный хак, который не будет работать
если кто-то догадается это разместить на "всеми любимых" Cloudflare
или подобных CDN-ах.

Между тем, документация lighttpd в tarball-е, и жутко не полна и даже не
подходит, outdated, о чём они честно предупреждают. Где-то репозиториев
с актуальной документацией -- не нашёл. Зеркалировать wiki Redmine-а --
тоже не очень приятно, всё же не статический сайт как у nginx. В общем в
моём мире (в голове) всё перевернулось: теперь у lighttpd довольно всё
убого, а nginx дока это решаемая проблема.

И альтернатив то нет толком. Apache -- вообще не рассматриваю. Что-то
сильно минималистичное типа minihttpd, thttpd и прочих -- пристально не
вглядывался, но вот точно и наверняка их возможностей не хватит. А кроме
lighttpd и nginx как-то больше ничего и не остаётся. Но уж жутко мне не
нравится формат конфигов nginx-а (хотя Apache ещё больше).

Но сейчас вообще ещё мысли просто использовать самописный сервер на Go и
прямо внутрь него вшивать все мои хотелки и желания. Производительности
для преобладающего большинства задач (даже не домашних) -- в нём хватит
точно. Реализовать всякие rewrite, SNI, CGI без проблем можно: грубо
говоря, не намного больше строк кода будет чем строк в конфиге. Аналог
mod_compress тоже не проблема, ETag-и и прочее. И на каждый чих просто
перекомпилировать, что в Go делается стремглав. А то сейчас думаю про
Metalink/HTTP решение и тут или писать на Си свой модуль или на Lua
попробовать всю эту логику.

3 years agoУстановка Windows
Sergey Matveev [Thu, 30 Sep 2021 08:05:30 +0000 (11:05 +0300)]
Установка Windows

https://vitus-wagner.dreamwidth.org/2276736.html
Опытнейший умнейший человек, но всё равно не справился с установкой
Windows на новом современном ноутбуке. Я уже много лет искренне не
понимаю как люди вообще имеют совесть говорить про дружелюбность
Windows к пользователю -- такое только с сарказмом можно. Уже у
родителей видел что супер-пупер популярные ThinkPad-ы всё равно не
заводятся из коробки и нужно тьму всяких бинарей качать.

3 years agoLet's Encrypt теперь отвечает за доступ к Интернету
Sergey Matveev [Wed, 29 Sep 2021 20:04:53 +0000 (23:04 +0300)]
Let's Encrypt теперь отвечает за доступ к Интернету

https://lenta.ru/news/2021/09/29/connection/
Ох уж эти журналисты. И ведь они любую информацию подают в таком вот виде.

    Сертификат (Let's Encrypt) отвечает за шифрование соединений между
    конечными устройствами и интернетом. Его основная задача — защита от
    перехвата данных, которые обмениваются гаджеты и компьютеры с
    глобальной сетью.

    ... станет истекающий срок действия цифрового сертификата для
    шифрования соединений смартфонов и компьютеров с глобальной сетью.

И ведь за такой лютый бред никому ни наказания, ни вообще ничего не будет.

А ещё я застал время когда Интернетом был "Internet Explorer". Сейчас
ещё нахожусь (вроде бы) во времени где рождение Интернета было в начале
90-х (любопытный факт, ага: Internet Protocol, при этом, появился лет на
15 раньше, как минимум). Через год Интернетом видимо будет Facebook?

3 years agoMetalink
Sergey Matveev [Wed, 29 Sep 2021 15:43:31 +0000 (18:43 +0300)]
Metalink

https://ru.wikipedia.org/wiki/Metalink
https://dpb587.me/post/2017/10/09/documenting-blobs-with-metalink-files/
https://www.opennet.ru/opennews/art.shtml?num=55873
Сегодня попробовал использовать GNU Wget2 для зеркалирования сайта. На
глаз работает существенно быстрее первой версии, как минимум из-за
видимого pipeline, keepalive и распараллеленных обработчиков. Однозначно
именно вторую версию буду использовать для зеркалирования, а может быть
и вообще всего остального.

В Wget2 появилась поддержка Metalink. В curl я видел её тоже. А в Aria2
это я воочию видел как работает даже через HTTP заголовки. Но пристально
в Metalink я не вглядывался, до сегодняшнего дня. А штука мне
понравилась: список файлов, с хэшами, описаниями, возможно подписями,
разными URL-ами, возможно даже ссылками на torrent файлы. Metalink много
кто использует: http://www.metalinker.org/implementation.html
И вот думаю что и для своих проектов заиспользовать и подкладывать в
директории для скачивания. Как это засунуть в HTTP заголовки через
lighttpd пока не представляю.

А у меня как-раз и контрольные суммы и подписи везде нужны. Тут
унифицированный контейнер для этого. Более того, например в NNCP проекте
есть одно зеркало, и поэтому все URL-ы для скачивания было бы неплохо
указывать на два этих разных домена. aria2, wget2, curl натравить на
.meta4 файл и будет и скачивание с разных источников и проверка
целостности. А Wget2 ещё и подписи PGP умеет проверять (но сам я это не
проверял ещё, тем более для Metalink скачанных вещей).

3 years agoСимпатичная переводчица Путина
Sergey Matveev [Wed, 29 Sep 2021 08:01:43 +0000 (11:01 +0300)]
Симпатичная переводчица Путина

https://lenta.ru/news/2021/09/29/translator/
Ответ нашего МИД мне понравился: "их можно понять, учитывая десятилетия
экспериментов феминизмом и гендером в США". Тоже, ещё не прочтя это,
возникла мысль что они видимо уже совсем потеряли красивых женщин то у
себя или просто не могут взять их на работу, ибо остальные засудят.

3 years agoNetflix и JPEG2000 для HDR изображений
Sergey Matveev [Tue, 28 Sep 2021 15:06:03 +0000 (18:06 +0300)]
Netflix и JPEG2000 для HDR изображений

https://netflixtechblog.com/enhancing-the-netflix-ui-experience-with-hdr-1e7506ad3e8
Для HDR изображений они выбрали (это, правда, статья несколько летней
давности) JPEG2000, ибо либо остальное не подходит из-за ограничений,
либо здоровое lossless (PNG), либо плохо поддерживается (HEIC, JPEG-XR).
Конечно, сейчас появился и AVIF и JPEG-XL уже.
https://netflixtechblog.com/avif-for-next-generation-image-coding-b1d75675fe4?source=rss----2615bd06b42e---4&gi=f014d6e9ec98

3 years agoКак Интернет приходит в датацентр
Sergey Matveev [Tue, 28 Sep 2021 13:10:40 +0000 (16:10 +0300)]
Как Интернет приходит в датацентр

https://habr.com/ru/company/ruvds/blog/580168/
Ничего себе, не подозревал что в нескольких километрах от меня, проходят
магистрали оптоволоконные до Москвы, до MSK-IX. Не ожидал что Королёв
хоть каким-то боком с этим связан оказался, как и Ивантеевка с Щёлково,
видимые из окон моей квартиры.

3 years agoКак собака позвала на помощь
Sergey Matveev [Tue, 28 Sep 2021 10:41:41 +0000 (13:41 +0300)]
Как собака позвала на помощь

https://habr.com/ru/company/megafon/blog/579780/
Собака оказалась в коллекторе. Перегрызла оптоволокно Мегафона, чтобы
вызвать бригаду для починки и своего вызволения. Хорошо что история
так хорошо закончилась!

3 years agoОбфускация трафика Wireguard
Sergey Matveev [Mon, 27 Sep 2021 19:42:54 +0000 (22:42 +0300)]
Обфускация трафика Wireguard

https://lists.zx2c4.com/pipermail/wireguard/2021-September/007155.html
https://lists.zx2c4.com/pipermail/wireguard/2018-September/003292.html
Автор не раз повторяет что проблема DPI/цензуры и проблема простого и
эффективного VPN-а -- разные задачи. Поэтому нефиг пытаться встраивать
DPI-resistance в протокол. Солидарен и согласен. Я это называю "гонкой
вооружений", а он "игрой в кошки мышки" -- что вообще более корректно,
действительно.

3 years agoZFS logbias=throughput для SSD
Sergey Matveev [Mon, 27 Sep 2021 09:27:41 +0000 (12:27 +0300)]
ZFS logbias=throughput для SSD

Для SSD имеет смысл выставлять logbias=throughput для всех dataset-ов.
Это дошло до меня только когда стал использовать NVMe. С logbias=latency,
который по умолчанию, данные fsync-ов будут писаться по два раза. Это
всё сделано было для жёстких дисков, чтобы они могли линейно записывать
ZIL область, без random seek-ов. Для SSD random seek-и имеют такую же
стоимость, что и линейные.

3 years agoЧто не так с нашим ИТ-образованием
Sergey Matveev [Mon, 27 Sep 2021 09:08:40 +0000 (12:08 +0300)]
Что не так с нашим ИТ-образованием

https://habr.com/ru/post/579998/
Пишет статью первокурсник. В корне с ним не согласен. То что им дают
алгоритмы и математику -- могу только позавидовать. Хочешь
программировать? Так какого чёрта ты не сидишь и *самостоятельно* не
изучаешь свой инструмент, свой язык программирования? По моему, должно
подразумеваться что студент сам это обязан уметь делать, чтобы не
тратить на это попусту времени. В МФТИ я слышал что просто ставят перед
фактом, что надо использовать LaTeX -- никто не тратит учебного времени
на его изучение и хотя бы введение. Программист самостоятельно должен
уметь познавать инструменты.

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

Убивает заключение: "... и у нас появится больше способных
junior-разработчиков". Вот именно: появятся juniour-ы, которые дальше
уже не вырастут, ибо нет никакой "научной" базы, а есть только
практический опыт по несложным инструментам, плюс неумение
самостоятельно разбираться с инструментами. Автор упоминает что в
индустрии есть "frontend, есть backend, есть DS, есть DevOps" -- но их
учат не на frontend-разраба, не на data science, не на devops, а на
программистов-разработчиков, нормальных. Зачем мешать всё в одну
корзину? Ещё и системных администраторов может сюда приплести?

Решил прочитать комментарии. И первым же идёт именно то, что я и хотел
сказать:

    Беда, с первого курса не учат говнокодить на джаваскрипте чтобы
    можно было идти мидл-фронтендером.
    Математика и прочая база полезна всем, кто идет в программирование.
    Это дает возможности дальнейшего роста, учит абстрактному мышлению.
    Кто-то в это умеет из-коробки, а кому-то нужно учиться.
    Универ - это не школа, где все разжоввывают. Это просто список
    литературы и критерии дальнейшего прохождения. Так и должно быть.
    Учиться нужно самому.
    Не хватает знаний английского, чтобы пользоваться инструментами?
    Сюрприз, его тоже нужно учить. Как и все остальное.

ответ на него с которым полностью не согласен, ибо человек вряд ли
понимает суть ВУЗов и что они дают:

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

ну и хороший ответ на него:

    Вы путаете высшее образование и профессиональное образование.

Но учитывая количество комментариев, тут много несогласных и много
разносторонних мнений.

3 years agoТелеграфные ключи
Sergey Matveev [Mon, 27 Sep 2021 09:04:23 +0000 (12:04 +0300)]
Телеграфные ключи

https://eax.me/ew4idp-cw-key/
http://keyby.narod.ru/produkt.html#1
Стоят тоже вполне себе нехило. Но и требований к ним, конечно,
поболее чем к клавиатурам.

3 years agoКак FFT убирает муар
Sergey Matveev [Mon, 27 Sep 2021 08:09:53 +0000 (11:09 +0300)]
Как FFT убирает муар

https://www.getrevue.co/profile/shift-happens/issues/moire-no-more-688319
https://ru.wikipedia.org/wiki/%D0%9C%D1%83%D0%B0%D1%80%D0%BE%D0%B2%D1%8B%D0%B9_%D1%83%D0%B7%D0%BE%D1%80
Интересное чтиво с кучей картинок про возникающий муар при сканировании
и фотографировании. Обратное FFT преобразование может его убрать. Ссылка
на странице Wikipedia ведёт на https://www.publish.ru/articles/200603_4055495
-- статью 2006-го года где аналогичное делается в Photoshop.

3 years agoВспомнил про Quake3
Sergey Matveev [Mon, 27 Sep 2021 07:10:25 +0000 (10:10 +0300)]
Вспомнил про Quake3

На выходных решил вспомнить про старые добрые FPS и поставил OpenArena.
Был удивлён что я сносно делаю ботов на hardcore уровне сложности.
Nightmare не пробовал, но наверное всё же уж точно реакция будет не та.
Но в остальном без проблем играю, хотя 15+ лет назад мне и hardcore
давался с трудом.

Даже вспомнил какие настройки мне необходимо делать:

* инвертирование мышки -- это я со времён наверное первого Quake имею во
  всех FPS. Где-то прочитал (и согласен с этим), что чаще приходится
  *резко* смотреть наверх (пролетающий противник, этажи выше), а
  движение рукой к себе сделать проще
* cg_fov 110 -- с FOV-ом в 90 градусов... я просто чувствую что ничего
  не вижу, мало информации. К 110-ти привык. Помню что 120 уже вроде
  неприятно искажало всё
* через меню отключение всей динамической подсветки, качественных
  текстур, 3D моделей вещей. Форсирование использования модели одного
  персонажа. Хорошо видимый курсор
* cg_shadows=1, cg_marks=1 -- это полезно для лучшего обнаружения
  противника. cg_drawGun=, cg_gibs=0, com_blood=0 -- наоборот убирает
  бесполезную информацию с экрана
* cg_autoswitch=0 отключает автосмену оружия -- должен быть чёткий контроль
* m_pitch=0.022 -- чувствительность мышки. К этому значению по умолчанию
  для простых дешёвых Genius-like мышек я привык. Большая
  чувствительность не позволит аккуратно и плавно вести цель, а
  маленькая не позволит сделать резкие движения
* когда-то на клавиатуре я отдолбал "W" у WASD и поэтому сместился
  направо -- после этого я так делал по всех FPS, ибо вокруг должно быть
  достаточно клавиш для всяких hotkey-ев. Q -- автомат, W -- дробовик,
  R -- ракетница, G -- рельса, A -- шафт, V -- плазма. А дальше уже и не
  помню что было, но чувствую что кастет тоже куда-то надо навесить
* прыжок на правой кнопке мышки. Считаю полным идиотизмом вешать на
  пробел, как это сделано по умолчанию. Ибо прыгаешь... буквально
  всегда. Постоянно месить пробел, большим пальцем, не самым быстрым по
  реакции -- идиотизм
* а вот приседание в Q3 вполне себе очень и очень полезно, ибо и
  уменьшает площадь попадания от дробовика и очень увеличивает
  вероятность что рельсой противник промажет. Использовать Ctrl, как это
  предлагают -- тоже идиотизм, ибо это жутко неудобная клавиша и реакция
  и ребра и мизинца будет отвратительна. Поэтому приседание на пробеле

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

Так как я играл в OpenArena, то родных Q3 карт в ней из коробки нет и
всё было незнакомо. Очень понравилась карта
https://openarena.fandom.com/wiki/Maps/pul1ctf
и отсутствие текстур приятно -- максимально сосредотачиваешься на самой
игре и вообще выглядит всё очень продуманным: и спрятаться и распрыжку
сделать и спрятаться то тут, то там.

3 years agoZFS права dataset-а
Sergey Matveev [Sun, 26 Sep 2021 11:21:47 +0000 (14:21 +0300)]
ZFS права dataset-а

Есть dataset zroot/foo, mountpoint=/home/stargrave/foo. Перехожу в
/home/stargrave/foo, выполняю ls .. -- говорят permission denied. cd ..
-- могу выполнить. ls -ld /home/stargrave/foo показывает что я владелец
и все права есть. Наверное через zdb бы я увидел куда реально ссылается
этот "..", но эмпирически выяснил, что dataset монтируется в возможно
уже существующую директорию, которой я мог быть не владельцем. Так как
zfs create делается из под root-а, то /home/stargrave/foo директория
принадлежит root-у. Починил так: zfs unmount zroot/foo, chown stargrave
/home/stargrave/foo, zfs mount zroot/foo.

3 years agoДанные в символических ссылках на ZFS
Sergey Matveev [Sun, 26 Sep 2021 11:01:18 +0000 (14:01 +0300)]
Данные в символических ссылках на ZFS

Для GoCheese решил попробовать хранить контрольные суммы не в виде
содержимого файлов, а в виде символических ссылок, где будет например
Base64 (494ba450b1c38f4008afdef83dd7043ea5f1ef95). Сконвертировал весь
PyPI state, увидел что размер dataset-а стал только больше. Пошёл
ковыряться в zdb -- впервые его использовал для настоящей задачи
выяснения что же реально сохранилось на диске (прежде им только смотрел
ashift). В общем, небольшого размера данные и так умещаются внутрь
dnode-ы в виде EMBEDDED indirect блока. А содержимое символической
ссылки в ZAP структуре. Но 32-байта займут меньше места чем их
кодированное представление, поэтому и размеры dnode, судя по всему (или
ZAP overhead? не думаю) меньше и данные в символических ссылках тут
только вредят.

Где-то мельком видел что до 60 байт символические ссылки на ext4
хранятся прямо в inode. В UFS тоже встраиваются, если небольшого
размера, в inode. Но на ZFS во всём этом смысла нет.

3 years agoПрочитал "Вошедшие в ковчег"
Sergey Matveev [Sat, 25 Sep 2021 22:20:44 +0000 (01:20 +0300)]
Прочитал "Вошедшие в ковчег"

https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B1%D0%BE_%D0%90%D0%B1%D1%8D
http://trounin.ru/abe84/
Клёвая книга о том, как ненормальный сделал себе убежище на случай
ядерной войны, но в него пробрались посторонние и начались всякие
разборки. Треть книги главный герой провёл с застрявшей в унитазе ногой.
И ещё не в первый раз отмечаю, что японцы иначе смотрят на секс и всё
что с ним связано. Регулярные описания женщины в обтягивающей юбке очень
мне близки!

3 years agoGoCheese 3.0.0
Sergey Matveev [Sat, 25 Sep 2021 16:55:50 +0000 (19:55 +0300)]
GoCheese 3.0.0

http://www.gocheese.cypherpunks.ru/
Сделал большой пребольшой релиз GoCheese. Самое приятное в Python --
писать для него на Go.

Пароли теперь управляются не через текстовый файл, читаемый при запуске
и при получения SIGHUP, а полностью динамически через FIFO файл. Плюс
теперь он может работать как UCSPI-TCP демон. Это всё сделано "чтобы было".
Плюс явно включается поддержка HTTP/2, keepalive-ов и TLS session
resumption -- реально заметно как пошустрее он работает при большом
количестве запросов с PyPI.

А из серьёзных изменений это поддержка метаданных. Теперь используется
ещё и (в довесок к Simple API) JSON API, из которого получаются
метаданные (автор, описание, и всё в таком духе) и они сохраняются в
recfile-е пакета. Из них берётся и created время и оно форсированно
используется для выставления mtime файлов на диске. Этот же mtime честно
отдаётся и в HTTP заголовках. При загрузке пакета, все метаданные тоже
аналогично сохраняются. Сам GoCheese тоже теперь отвечает по JSON API,
отдавая аналогичный ответ как и PyPI. Скрипт конвертирования БД PyShop-а
тоже учитывает время создания пакетов и его корректно выставляет при
миграции.

Прежде я уже себе делал полный слепок состояния пакетов с PyPI. Просто
curl-ом дёргал /simple/, получал полный список пакетов, а дальше через
GNU parallel запускал curl-ы к GoCheese, чтобы он выполнял refresh
пакетов: контрольные суммы для каждого пакета сохранялись на диске.
Очень нравится --bar опция, которая показывает progress bar с кол-вом
выполненных/всего задач, текущей и примерно сколько времени ещё ждать:
    69% 227891:101285=1h23m59s pykirara
Сейчас вот уже несколько часов снова идёт обновление состояния, дабы
обновить mtime-ы и metadata для всех пакетов. GOCHEESE_NO_SYNC=1
переменная окружения отключает fsync, что сильно всё ускоряет.

Есть пара моментов которые где-нибудь когда-нибудь могут да выстрелить.
Понять версию пакета по его имени -- нетривиальная задача: 1.5.1,
1.5.2b2, 161, 3.10a, 8.02, 3.4j, 1996.07.12, 3.2.pl0, 3.1.1.6, 2g6, 11g,
0.960923, 2.2beta29, 1.13++, 5.5.kw, 2.0b1pl0 -- это всё валидные версии.
Плюс названия имён файлов далеко не всегда совпадают с каноничным
названием пакета на диске. Фиг с ходу поймёшь где начинается/кончается
версия пакета. Я поэтому сделал очень простой парсер, где-то точно
наверное не сработающий. Ну и в a251453c84f341e535bfabbce4ed4031cc791854
я увидел что формат JSON API нигде не описан и не стандартизирован, плюс
идёт в разрез с некоторыми PEP. Поэтому у меня нормальная
PEP-совместимая (вру, одно поле я не обрабатываю из-за противоречивости
PEP) схема и урезанная. Нормальная версия отдаётся самим GoCheese по
JSON API. Если GoCheese стучится в GoCheese -- то потерь информации не
происходит. А если стучится в боевой PyPI, то парсинг упадёт и будет
использоваться урезанная версия, с небольшой потерей метаинформации.

3 years agoРазработка экосистемы Python просто ужасна
Sergey Matveev [Sat, 25 Sep 2021 10:47:30 +0000 (13:47 +0300)]
Разработка экосистемы Python просто ужасна

https://warehouse.pypa.io/api-reference/xml-rpc.html
https://warehouse.pypa.io/api-reference/json.html
https://github.com/cooperlees/peps/blob/warehouse_json_api/pep-9999.rst
https://www.python.org/dev/peps/pep-0566/
https://packaging.python.org/specifications/core-metadata/
PyPI XML-RPC отключил и сделал его deprecated. Ok, стоит использовать
JSON API. Но... к нему есть только черновики его спецификации, которые,
мягко говоря, почти ничего не описывают детально. Хочу сделать парсинг
хотя бы info поля JSON ответа, где находится куча Core Metadata. Есть
даже PEP 0566, описывающий преобразование метаданных в JSON. Вот только
сейчас боевой PyPI формат совершенно не такой -- парсинг по PEP невозможен.
Даже название поля "classifiers" нигде не зафиксировано. PEP 0566
говорит что Keywords надо разбивать по whitespace символам, но Core
Metadata спецификация говорит что эти keyword-ы разбиты в строке по
запятым. В итоге: один API отключили, а для другого банально нет никакой
спецификации и масса противоречивостей.

3 years agoТелефонная реклама Ростелекома
Sergey Matveev [Fri, 24 Sep 2021 11:41:51 +0000 (14:41 +0300)]
Телефонная реклама Ростелекома

Позвонили тут:
- Здравствуйте, это компания Ростелеком, вы согласны выслушать нас минуту?
- Здравствуйте. Нет, не согласен.
- Вы знаете, это действительно займёт не больше пары минут.
[кладу трубку]

За пять секунд их минута превратилась в пару минут :-).

3 years agoВ почтовых рассылках стали отвечать на украинском
Sergey Matveev [Thu, 23 Sep 2021 07:31:04 +0000 (10:31 +0300)]
В почтовых рассылках стали отвечать на украинском

В freebsd@uafug.org.ua рассылке на сплошные русскоязычные сообщения в
треде появилось на украинском. Я конечно понимаю что домен .ua и вообще
это UAFUG, но раз видно что участники, как минимум этого треда, пишут на
другом (потому что там не только украинцы), то сильные сомнения что
автор явно хотел поучаствовать конструктивно. Обязательно кто-нибудь да
появится с политикой, эх.

3 years agoВ РФ не хватает миллиона ИТ-спецов
Sergey Matveev [Thu, 23 Sep 2021 07:21:26 +0000 (10:21 +0300)]
В РФ не хватает миллиона ИТ-спецов

https://nag.ru/news/41914
А сегодня на остановке видел рекламу hh.ru, где написано что там более
миллиона вакансий. Какая волшебная цифра.

3 years agoОгромная коллекция сайтов с /now страницей
Sergey Matveev [Wed, 22 Sep 2021 20:20:35 +0000 (23:20 +0300)]
Огромная коллекция сайтов с /now страницей

https://nownownow.com/
Чего только не придумают! Но да, согласен что "about" и "contact" это
как бы нечто де-факто обязательное.

3 years agoА кому-то Дюна нравится
Sergey Matveev [Wed, 22 Sep 2021 05:12:43 +0000 (08:12 +0300)]
А кому-то Дюна нравится

https://lozga.livejournal.com/250676.html
А вот кому-то этот новый фильм (508fdfb05db44271b0ec2b679cbc5f34948d567c)
понравился и его даже могут рекомендовать. Очередной раз когда понимаешь
что о вкусах не спорят и нефига слушать мнение людей о них. Кому-то и
"Сильмариллион" заходит, кому-то и "Хроники Амбера" с "Войной и миром".

3 years agoБлокчейн и голосование
Sergey Matveev [Tue, 21 Sep 2021 19:44:15 +0000 (22:44 +0300)]
Блокчейн и голосование

https://vgiv.livejournal.com/91914.html?nojs=1
Всё так автор написал, именно, куда не попади, бездумно и пихают слово
"блокчейн" в самые несуразные места. Что для меня сразу резко понижает
мнение о компетентности автора который бы применял этот блокчейн к
своему творению.

3 years agoDebian пакетирование NNCP
Sergey Matveev [Mon, 20 Sep 2021 20:31:51 +0000 (23:31 +0300)]
Debian пакетирование NNCP

http://lists.cypherpunks.ru/archive/nncp-devel/2109/0366.html
Пишут что использовать зависимости из tarball-а не гоже. Нужно их
оформлять в виде внешних пакетов. Я бы тут что-то матерное написал,
но сдержусь. Я понимаю местами откуда корни этого могли бы расти,
но по моему идиотизм это требовать для Go, где вообще буквально
коммиты прибиваются. И ещё и статически собираются. Ещё и в tarball
в vendor директории всё предоставлено и даже Интернета не требует для
сборки. Я бы точно не стал заниматься опакечиванием своих проектов для
Debian -- мягко говоря, чересчур много геморроя, возрастающая сложность
понимания что же конкретно запускается/собирается у пользователя.

3 years agoNNCP появился в Debian unstable
Sergey Matveev [Mon, 20 Sep 2021 19:04:24 +0000 (22:04 +0300)]
NNCP появился в Debian unstable

https://tracker.debian.org/pkg/nncp
Его maintainer обещает что и через несколько недель может прососаться в
testing и в Ubuntu.

3 years agoПремия ФСБ России Миронову за "В августе 44-го…"
Sergey Matveev [Sun, 19 Sep 2021 13:40:38 +0000 (16:40 +0300)]
Премия ФСБ России Миронову за "В августе 44-го…"

https://ru.wikipedia.org/wiki/%D0%92_%D0%B0%D0%B2%D0%B3%D1%83%D1%81%D1%82%D0%B5_44-%D0%B3%D0%BE%E2%80%A6
https://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D1%80%D0%BE%D0%BD%D0%BE%D0%B2,_%D0%95%D0%B2%D0%B3%D0%B5%D0%BD%D0%B8%D0%B9_%D0%92%D0%B8%D1%82%D0%B0%D0%BB%D1%8C%D0%B5%D0%B2%D0%B8%D1%87#%D0%9D%D0%B0%D0%B3%D1%80%D0%B0%D0%B4%D1%8B
Евгению Миронову за фильм "В августе 44-го" дали премию ФСБ (я и не знал
что такая есть). Актёр он великолепнейший! И именно в этом фильме его
игра просто незабываема. В самой главной сцене фильма, апогее развития
истории, я наверное с открытым ртом сидел, скованный напряжённым моментом.

3 years agoRMS в Киеве
Sergey Matveev [Sun, 19 Sep 2021 10:43:21 +0000 (13:43 +0300)]
RMS в Киеве

https://youtu.be/b2MzYWmnqgQ
На четырёх часах начинается почти трёх часовое выступление Столлмана.
Прослушал полностью на фоне. На мой взгляд отличное и актуальное: ибо
мало кто, насколько вижу, понимает важность лицензий. На кучу вопросов
с листочков ответил.

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

3 years agoПосмотрел "Дюну" (новую)
Sergey Matveev [Sun, 19 Sep 2021 10:36:46 +0000 (13:36 +0300)]
Посмотрел "Дюну" (новую)

https://ru.wikipedia.org/wiki/%D0%94%D1%8E%D0%BD%D0%B0_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_2021)
С родителями после выборов решили пойти в кинотеатр и это был
единственный фильм удобный по времени и не детский. Редкостная унылая
скучная затянутая фигня. Которая ничем не заканчивается. Я готовился к
тому что это будет очередная скука как и фильм 1984-го года, но не
ожидал что настолько.

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

3 years agoПереход улицы с односторонним движением
Sergey Matveev [Sat, 18 Sep 2021 09:42:10 +0000 (12:42 +0300)]
Переход улицы с односторонним движением

Увидел тут фразу, намекающую на то, что я хороший программист:

    A good programmer is someone who always looks both ways before
    crossing a one-way street. -- Doug Linder

Я действительно отмечал про себя, переходя такие улицы, что рефлекторно
всё равно смотрю в обе стороны. И отмечал что многие другие смотрят
только в одну сторону (бывают и те, кто вообще не смотрят, но таких не
жалко). Ну как так можно? Мало ли что там написано, мало ли какие
правила, мало ли кто тут прав, а кто виноват, мало ли что и как должно
быть: всегда обязательно найдётся мудак которому или насрать или он
просто проявляет человеческую природу регулярно ошибаться. Лучше
перебдеть, ведь речь о жизни.

3 years agoИдеальный workflow с goredo патчем
Sergey Matveev [Sat, 18 Sep 2021 08:29:56 +0000 (11:29 +0300)]
Идеальный workflow с goredo патчем

http://lists.cypherpunks.ru/archive/goredo-devel/2109/0038.html
Написал мне тут человек про явно некорректное поведение с зависимостями
goredo при определённых действиях. Ничего серьёзного, но выходило что
цель всегда была OOD. Отличный минимальный пример мне прям привёл. После
работы я не вдумываясь и не разбираясь сразу пошёл оформлять его в виде
теста: http://www.git.cypherpunks.ru/?p=goredo.git;a=blob;f=t/goredo-rel-ifcreate.t
test_pause-ом провалился в shell, чтобы воочию посмотреть на содержимое
recfile-а зависимости и убедиться что действительно там некорректно
относительные ссылки вычислялись. Пошёл править код goredo, запустил
тесты: другие упали. Пошёл снова править уже там где реально нужно: все
тесты прошли. Увеличиваю версию, обновляю NEWS, делаю релиз, благодарю
человека в рассылке. Очень приятно когда люди хороший (по удобству)
feedback приводят, практически вырождающийся в готовый тест.

3 years agoSGBlog теперь поддерживает и Gemini протокол
Sergey Matveev [Sat, 18 Sep 2021 08:22:31 +0000 (11:22 +0300)]
SGBlog теперь поддерживает и Gemini протокол

gemini://gemlog.stargrave.org/
http://www.sgblog.stargrave.org/
Gemini мне не нравится (559781a8756ad1b6362a8228970cec7f5ac901a2), но
just-for-fun решил добавить поддержку выдачи на нём в свой движок для
блога. Точнее теперь это движок для: blogging (HTTP), phlogging (Gopher),
gemlogging (Gemini).

3 years agoУмер Клайв Синклер
Sergey Matveev [Fri, 17 Sep 2021 07:50:54 +0000 (10:50 +0300)]
Умер Клайв Синклер

https://habr.com/ru/news/t/578450/
http://zxnext.narod.ru/
https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D0%BA%D0%BB%D0%B5%D1%80,_%D1%81%D1%8D%D1%80_%D0%9A%D0%BB%D0%B0%D0%B9%D0%B2
http://www.if.mirror.cypherpunks.ru/spectrum_games.djvu
Не исключено что без этого человека я бы не стал компьютерщиком вовсе.
Без него бы не было доступного дешёвого домашнего компьютера ZX Spectrum.

Я им пользовался ещё до школы, даже какие-то циклы на BASIC писал. У нас
была самосборная: отец самостоятельно паял и монтировал чипы к печатной
плате. Разъёмы для клавиатуры были космическими (буквально):
https://kit-e.ru/commut/elektricheskie-soediniteli-ot-kosmicheskih-tehnologij-do-zemnoj-perspektivy/
Огромный алюминиевый радиатор ещё запомнился. Всё это совершенно не
походило на аккуратный корпус all-in-one:
https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:ZXSpectrum48k.jpg
https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:ZX_Spectrum_Plus2_(retouched).jpg

До сих пор у меня осталась книжка с распечатками описания кучи игр для
него (ссылка на if.mirror.cypherpunks.ru). Была точно ещё и по BASIC, но
не знаю когда и где пропала.

Сам Спектрум сгорел вместе с дачей. Телевизор был в качестве монитора, а
магнитофон Весна в качестве накопителя. Несколько минут надо было ждать
когда хоть что-то могло с него загрузиться неспешно. Причём было полезно
сидеть рядом и слушать когда появится пауза, чтобы остановить
воспроизведение. Must-have было иметь магнитофон с счётчиком расхода
ленты -- тогда можно было по нему ориентироваться чтобы промотать до
нужного места где будет находится очередная программа. Ну и на вкладышах
записывалось название игры/софта и значение счётчика. Я помню насчитал
113 программ у нас на кассетах. Если соседи (или тем более мы) включали
пылесос, то Спектрум любил сбрасываться -- потом сидишь и снова ждёшь
минут десять чтобы загрузить игру по новой. Был ещё джойстик: 2 оси и
две кнопки.

Я вообще не слышал чтобы в СССР/РФ было что-то ещё такое же относительно
доступное. Дальше шли уже персоналки, существенно более дорогие и вообще
начавшие входить в домашнюю жизнь спустя уже лет десять наверное. Нам
очень повезло что знакомые смогли нам отдавать списываемые компьютеры (с
Intel 80286) -- большинство бы даже и не знало бы просто что с ними
делать. Это не считая игровых видеоприставок, на которых хотя бы BASIC
уже не было никакого из коробки.

3 years agoДоброе время суток в IRC
Sergey Matveev [Fri, 17 Sep 2021 07:45:59 +0000 (10:45 +0300)]
Доброе время суток в IRC

Уже писал в 3260fdb2b1f29236fc703587d32d1160d58d8563 о диссонансе когда
в письмах читаешь "доброе whatever", хотя регулярно оно не соответствует
тому что я вижу за окном. Не понимаю зачем это писать, неужели люди сами
письма не читают? Или изворачиваются "временем суток", одинаково подходящим
всегда? Зачем такое приветствие вообще применять?

Хотел было сказать что это можно применять в real-time общении, типа чатов.
Но вот увидел в одном IRC "good evening" -- а всё потому что чувак из США.
Так что и не в каждом real-time упоминание времени суток было бы разумно.

3 years agoРоб Пайк про Docker и динамическую линковку
Sergey Matveev [Fri, 17 Sep 2021 07:42:50 +0000 (10:42 +0300)]
Роб Пайк про Docker и динамическую линковку

https://minnie.tuhs.org/pipermail/tuhs/2021-September/024417.html
Если бы не популяризация динамической линковки, то Docker бы не взлетел.
Звучит логично и правдоподобно: со статической линковкой нету ада
библиотечных зависимостей. Ещё один камень в сторону динамической линковки!
К Docker у меня исключительно негативное отношение.

3 years agoNVMe поддержка в FreeBSD 12.0
Sergey Matveev [Fri, 17 Sep 2021 07:36:11 +0000 (10:36 +0300)]
NVMe поддержка в FreeBSD 12.0

У меня была стойкая уверенность что NVMe то в самой ОС поддерживается,
но наверняка будут проблемы с загрузкой с ZFS с этих устройств. После dd
с SATA-шки, действительно, я увидел ошибки загрузчика, неведомые прежде.
Но с нормальной "установкой":
    gpart create -s GPT ...
    gpart add -t efi -a 4K -s ... ...
    gpart bootcode -p /boot/boot1.efifat -i 1 ...
    gpart add -t freebsd-swap -s 2G -l ...-SWAP ...
    gpart add -t freebsd-zfs -l ...-ROOT ...
    zpool attach zroot ... gpt/...-ROOT
всё взлетело без проблем.

У меня реально вспомнился момент из Большого Куша: "не понимаю, почему
все так не любят цыган?" -- вот только я про себя не понимал почему все
так не любят FreeBSD и говорят про плохую поддержку железа :-)

3 years agoПрочитал "Конкурентов"
Sergey Matveev [Thu, 16 Sep 2021 20:35:15 +0000 (23:35 +0300)]
Прочитал "Конкурентов"

https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%BA%D1%83%D1%80%D0%B5%D0%BD%D1%82%D1%8B
Понравился в целом. В очередной раз Лукьяненко показывает как человек
попадает в мир компьютерной игры. Лёгкое приключенческое чтиво.

3 years agoПерешёл на NVMe
Sergey Matveev [Thu, 16 Sep 2021 19:47:20 +0000 (22:47 +0300)]
Перешёл на NVMe

Обновил SATA M.2 120GB SSD-шки на зеркало из NVMe M.2 1TB. Моя старая
FreeBSD без проблем со всем этим заработала, как и её EFI загрузчик. Во
время resilvering-а ZFS отъела 80% от всех моих CPU. Нехило! Зато всё
заняло десятки секунд. Кроме стремительных ZFS/dd скоростей на глаз
больше ничего не заметил в плане useability -- видимо у меня и так всё
было настолько шустро (не даром же я за сотни миллисекунд при запуске
команд бился не раз) что уже глаз разницу не видит. Ну или, само собой,
всё уже упирается в CPU.

3 years agoУдарные в 1349
Sergey Matveev [Wed, 15 Sep 2021 20:37:27 +0000 (23:37 +0300)]
Ударные в 1349

Увидел тут барабанный кавер на одну из композиций black metal группы
1349: https://www.youtube.com/watch?v=KOhw0oGIJOs
Но перед этим мне выдача поисковика всунула кавер на "Bring Me To Life"
Evanescence: https://www.youtube.com/watch?v=LYe1394r3A8
Насколько же отличается игра между этими жанрами. Evanescence то песенка
мне тоже нравится, ещё со школьных времён.
https://www.youtube.com/watch?v=dFWI7CIf_FU

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

3 years agoОплата carsharing-а только безналом незаконна
Sergey Matveev [Wed, 15 Sep 2021 11:09:18 +0000 (14:09 +0300)]
Оплата carsharing-а только безналом незаконна

https://habr.com/ru/news/t/578062/
И меня радует решение суда! Задолбали ограничивать людей по способу оплаты.
Ну а прикрывания "рисками распространения коронавирусной инфекции" я уже
знал что будут использовать.

3 years agoWireGuard, BitTorrent уже начинали блокировать
Sergey Matveev [Wed, 15 Sep 2021 07:45:15 +0000 (10:45 +0300)]
WireGuard, BitTorrent уже начинали блокировать

https://lists.zx2c4.com/pipermail/wireguard/2021-September/007050.html
Это плюс к 75b9e20d001866c8535b06e6a5cb01322fa7252e. Всё же неожиданно
быстро (с моей точки зрения) Интернет уничтожают. Причём то не только у
нас. Людям он не нужен -- компании и гос-ва просто удовлетворяют желания
людей. Но демократия штука ужасная, как минимум вот за счёт того что
уничтожаются чудеса света, за счёт мнения большинства.

Я вот всерьёз задумывался не раз, что если VPN/BitTorrent (ну и DNS
"родной") заблокируют, то вот что мне делать то в этом Интернете? Кроме
тем связанных с программированием (Github, который @#$ даже по IPv6 не
пашет) у меня вроде бы остаётся только переписка по email, почтовые
рассылки (почти полностью в read-only режиме, мало где пишу чего). Пока
не могу осознать сильно ли я на нём (Интернете) завязан. Так то у меня
стойкое ощущение что 99.99% людей используют его только в смартфонах,
мобильных устройствах, SmartTV каких-нибудь -- в общем так, как я ни на
йоту не затрагиваю весь этот проприетарный софт, цензурируемые
централизованные облака и всё такое прочее. Даже BitTorrent,
действительно, удел малого количества людей -- наслышан что многие даже
безлимитный кабельный Интернет дома не ставят, мол n-гигабайтного
мобильного тарифа хватает за глаза.

3 years agoРостелеком предложил блокировать публичные DNS серверы
Sergey Matveev [Tue, 14 Sep 2021 08:45:45 +0000 (11:45 +0300)]
Ростелеком предложил блокировать публичные DNS серверы

https://lenta.ru/news/2021/09/14/google_block/
Что-то у меня никак не укладывается как "устойчивый доступ" вообще может
коррелировать с "запретом доступа". Вроде бы любой запрет это в любом
случае какая-то потеря, лишение связанности. "Лишние" серверы могут "наш
Интернет шатать"? Или у них речь про то, что Google/Cloudflare это более
дальние hop-ы, не подконтрольные напрямую нам, поэтому их использование
может навредить? Может. А блокировка для того чтобы форсированно
заставить использовать близлежащие hop-ы Ростелекома? Где ничего не
зашифровано и цензуры тьма?

Ну и как всегда, журналисты такое понапишут!:

    [...] реализован протокол DoH, который позволяет зашифровать вэб-трафик
    так, что операторы не видят, к какому ресурсу обращался абонент [...]

что просто являются ложью, ибо ни HTTPS, ни DNS-over-HTTPS не отменяют
факта слива доменного имени через SNI (ни намекают на то, что будет
использован ESNI или ECI).

3 years agoЛучшее объяснение почему функциональные языки -- отстой
Sergey Matveev [Tue, 14 Sep 2021 05:04:14 +0000 (08:04 +0300)]
Лучшее объяснение почему функциональные языки -- отстой

https://probablydance.com/2016/02/27/functional-programming-is-not-popular-because-it-is-weird/
Буквально именно так и ощущаю себя когда программирую на функциональном языке:

    Writing functional code is often backwards and can feel more like
    solving puzzles than like explaining a process to the computer. In
    functional languages I often know what I want to say, but it feels
    like I have to solve a puzzle in order to express it to the
    language.

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

    1. Preheat oven to 175 degrees C. Grease and flour 2 – 8 inch round
       pans. In a small bowl, whisk together flour, baking soda and salt;
       set aside.
    2. In a large bowl, cream butter, white sugar and brown sugar until
       light and fluffy. Beat in eggs, one at a time. Mix in the bananas.
       Add flour mixture alternately with the buttermilk to the creamed
       mixture. Stir in chopped walnuts. Pour batter into the prepared
       pans.
    3. Bake in the preheated oven for 30 minutes. Remove from oven, and
       place on a damp tea towel to cool.

и функциональный:

    1. A cake is a hot cake that has been cooled on a damp tea towel,
       where a hot cake is a prepared cake that has been baked in a
       preheated oven for 30 minutes.
    2. A preheated oven is an oven that has been heated to 175 degrees C.
    3. A prepared cake is batter that has been poured into prepared
       pans, where batter is mixture that has chopped walnuts stirred in.
       Where mixture is butter, white sugar and brown sugar that has been
       creamed in a large bowl until light and fluffy…

Именно вот про это я и говорю что для функциональщины нужно по другому
мыслить. Не как yet another ordinary human, а как математик с абстракциями.

3 years agoРазмер пакетов PyPI
Sergey Matveev [Mon, 13 Sep 2021 18:51:06 +0000 (21:51 +0300)]
Размер пакетов PyPI

https://pypi.org/stats/
У меня вроде бы полный срез PyPI был 2018-го года, занимавший 943 GB.
Или bandersnatch (что меня бы не удивило) паршиво отработал, или за
последние пару лет, как минимум из-за одного только TensorFlow,
занимающего более терабайта, оно выросло на порядок. Впечатляет и ужасает.

3 years agoИнвертирование цвета в zathura
Sergey Matveev [Mon, 13 Sep 2021 14:24:09 +0000 (17:24 +0300)]
Инвертирование цвета в zathura

Оказывается в этом просмотрщике можно инвертировать цвета просто нажав
Ctrl-R (ну или выставив recolor в конфиге). Явно überfeature. Можно не
ломая глаз о белый фон читать документы. В Xombrero из коробки можно "s"
командой применить CSS-ку которая тоже всё делает тёмным. Выходит что
вообще всё у меня можно иметь в dark-mode.

На работе коллеги не раз говорили про усталость глаз. И это люди много
работающие с Word-ом. Ужасался что нельзя там просто так взять и сделать
тёмные цвета.

3 years agozsh особый matcher-list для man-а
Sergey Matveev [Mon, 13 Sep 2021 14:12:30 +0000 (17:12 +0300)]
zsh особый matcher-list для man-а

http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=4df1077fbb366de5fd8a73e366a59f5f47d23d39
Видимо жизнь с zsh-ем означает постоянное неудовлетворение :-). Рано или
поздно что-то хочется ещё поменять и улучшить. Сейчас не нравилось что
completion для man-а слишком много всего выдаёт: man switch выдаст даже
xcb_sync_await_checked, что точно вряд ли ожидается. Хочется чтобы без
учёта регистра, в любом положении, но слово было цельным. Я плохо
понимаю что творю, но вроде хак с ":man" в имени completer-а выставляет
нужный контекст и zstyle для него срабатывает как и ожидается. Вроде
ничего не поломал, но man/info теперь используют другой matcher-list.

3 years agoTcl нравится
Sergey Matveev [Sun, 12 Sep 2021 18:11:37 +0000 (21:11 +0300)]
Tcl нравится

https://en.wikipedia.org/wiki/Tcl
Сегодня написал хоть немного, но уже похожий на настоящую программу Tcl
код для tofuproxy. А то всё просто вызовы Tk-widget-ов для отображения.
Пробежался по tutorial языка. Очень мне в нём всё нравится! Ожидал что
обнаружится какая-нибудь бяка неприятная или в целом всё сложнее. Пока
всё в нём понимаю, диссонанса не возникает, всё логично и приятно даже
просто по синтаксису и названию функций.

В 82badc3e6648eef0e3c839c80035c18ab24f36de RMS говорил что в Tcl нету
списков и поэтому это вовсе не настоящий язык. Судя по тому, как в нём
созданы массивы (array, который на самом деле ассоциативный массив, хэш
в понятии Perl) и словари (dict, типа тоже самое что и array, только
является честным значением которое можно передавать в процедуры), то и
списки в языке, видимо, появились позже. Лень изучать его историю. Но
всё имеется. Не хуже Perl. Печально что не он в GNU мире занял нишу. Мне
он гораздо ближе и понятнее чем Scheme/Guile и вообще вся эта функциональщина.

3 years agoSatyricon ничего так метал
Sergey Matveev [Sun, 12 Sep 2021 18:09:20 +0000 (21:09 +0300)]
Satyricon ничего так метал

https://en.wikipedia.org/wiki/Satyricon_(band)
Во время 7b773fe4abd3d613cf6165b48f237281a49e980a обнаружил что у меня
вообще на диске нету Satyricon-а. Ознакомился за последние два дня с
ними. Один из самых попсовых блэк металов что слышал, но заводной, можно
и родителям поставить. А башкой под него самое обо бы было потрясти!

3 years agoАрвид стример
Sergey Matveev [Sat, 11 Sep 2021 21:09:21 +0000 (00:09 +0300)]
Арвид стример

https://ru.wikipedia.org/wiki/%D0%90%D1%80%D0%B2%D0%B8%D0%B4
В 90-х где-то видел упоминание этого замечательного устройства:
ISA-плата, соединяющаяся с видеомагнитофоном, использующая его
как ленточный накопитель. Несколько гигабайт на кассету могло
влезть -- это очень много и очень дёшево было. Не знал что там
был и инфракрасный порт, через который Арвид мог управлять
магнитофоном (запуск/останов, перемотка).

В одном из текстовых файлов к нему обнаружил CP866-закодированную
схему проезда (не то что сейчас -- JavaScript-driven карта, чёрт где
заработает, плюс съест мегабайты трафика, будет тормозить, жрать
процессор и память):

     вокзал   │           │      │
    ──────────┘           │      │
    ──────────────────────┘      │
    ──────────────────────┐______│ ┌───────┐
    ┌───┐                 │■■■■■■│ │кассы  │
    │ M ╞■■■■■■■■■■■■■■■■■│______│■│пpедв  │              │ Л│
    └───┘         ■       │      │■│пpодажи│              │ я│
      │      ┌────╨─────┐ │ С  у │■│билетов│              │ л│
      │      │    M     │ │ а  л │■└───────┘              │ и│
      │      └──────┐   │ │ д    │■                       │ н│
      │ м.Куpская │ │   │ │ о  З │■                       │  │
      └─кольцевая │ │   │ │ в  е └■───────────────────────┘ п│
       pадиальная─┘ │   │ │ о  м  ■ Яково-Апостольский пеp  е│
                    └───┘ │ е  л ┌■───────────────────────┐ p│
                          │    я │■┌───┐                  │ е│
                          │ к  н │■│   │                  │ у│
                          │ о  о │■│   │                  │ л│
                          │ л  й │■├┐  │             ┌────┤ о│
                          │ ь    │■└┴──┘             │дом2│ к│
                          │ ц  В └■──────────────────┴───*┘  └────
                          │ о  а  ■■Большой■Казенный■пеp■■
                          │    л ┌────────────────────────┐  ┌────

3 years agoКавер "Day Everything Became Nothing" на "Fuel For Hatred"
Sergey Matveev [Sat, 11 Sep 2021 14:32:33 +0000 (17:32 +0300)]
Кавер "Day Everything Became Nothing" на "Fuel For Hatred"

https://www.youtube.com/watch?v=X1coXvftIGU
https://www.youtube.com/watch?v=pRK3jjeF2zI
Любопытно послушать как чисто black metal (в плане звука) композиция
звучит в чисто грайндовом исполнении.

3 years agoПочитал "Тринадцать загадочных случаев" Агаты Кристи про мисс Марпл
Sergey Matveev [Sat, 11 Sep 2021 08:21:56 +0000 (11:21 +0300)]
Почитал "Тринадцать загадочных случаев" Агаты Кристи про мисс Марпл

https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B8%D0%BD%D0%B0%D0%B4%D1%86%D0%B0%D1%82%D1%8C_%D0%B7%D0%B0%D0%B3%D0%B0%D0%B4%D0%BE%D1%87%D0%BD%D1%8B%D1%85_%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B5%D0%B2
https://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D1%81%D1%81_%D0%9C%D0%B0%D1%80%D0%BF%D0%BB
У меня возникают ассоциации только с МакГайвером, который может
выбраться откуда угодно, имея только контактную линзу и сломанную
спичку. Вот и в книге Агаты: просто невозможно ничего самостоятельно
понять или прикинуть -- всё равно всё останется загадкой, а дальше уж
только на что воображения хватит. Очень легко читается и я понимаю что
идеально для сценариев к сериалам (Марпл, Пуаро, Гастингс) с короткими
сериями. Или же к сценариям для головоломных игр. Но продолжать чтение
меня не тянет вовсе. Так и хочется сказать что вот Шерлок Холмс
(0790022d6dd3a609f0f6a724c5f7fc375fd2a40c) -- вот это детектив, так
детектив (да и другие книги Дойля).

3 years agoWhy I am switching back to *BSD
Sergey Matveev [Thu, 9 Sep 2021 19:17:00 +0000 (22:17 +0300)]
Why I am switching back to *BSD

https://blogs.fsfe.org/stargrave/archives/93
Набрёл тут на свою же статью восьмилетней давности. Уже тогда я вернулся
на BSD, не было больше сил терпеть переход Debian на systemd. Любопытно
было прочитать это самому, ибо сейчас я точно по другому выражаюсь. Я
правда не понял почему я написал что юзал FreeBSD с 5.0-ой версии, ведь
у меня ж до сих пор живы четыре CD-диска с 4.5, в которой я выходил из
vi кнопкой reset.

    I was FreeBSD user for six years and worked with it’s versions from
    5.0 to 7.0. There appeared too much work with GNU/Linux related
    subsystems exclusively and it was easier for me to switch yet
    another UNIX-like operating system temporarily.

    I tried several distributions but stayed exactly on Debian. My
    requirements were:

    * mature, stable and reliable system without any bleeding edge
      software. I do not worry that there is no latest version of
      Firefox for example. Included in stable Debian’s distribution one
      fully satisfies me. Maybe it is not so fast as can be, but it is
      mature and working.
    * less or more permanent distributions overall architecture without
      any sudden surprises after yet another packages upgrade. Of course
      sometimes it can not be skipped, but serious changes are always
      must be in a major software/distribution version that is rather
      seldom event.
    * big collection and wide availability of various software. Debian
      has one of the biggest packages collection. And all of their
      binary compiled versions can be easily installed using single
      command. Of course you must trust it’s maintainers. I trust and
      rely on them.
    * it’s basic installation should not have anything that I am going
      to remove as a first step. Just minimal bunch of tools and
      daemons. Ubuntu for example does not provide that: I have to
      remove huge piles of GNOME-related things and only then install my
      preferred ones.

    Debian even now is the single distribution that can fit in those
    requirements. But several weeks ago I was very disappointed hearing
    that most part of it’s developers support integration with systemd.

    You see, modern GNU/Linux-es are not a UNIX-like OS with UNIX-way
    hackerish concepts anymore. UNIX-es in my opinion always were very
    beautiful and smart programmers creations with really very elegant
    tasks solving. Most GNU/Linux-es lost that property.

    Several decades there were quite few interprocess communication
    choices. Most time it is either plain text or, unfortunately, binary
    data floating between conveyors, pipes, domain or network sockets.
    Each daemon representing any subsystem can be less or more uniquely
    determined by socket path of pair of network address and port. In
    nearly all cases it can satisfy anybody.

    Even at the very early days of UNIX systems hackers preferred plain
    text and similar driven protocols and file formats. Though rather
    relatively big SMTP responses are not as good as binary ones could
    be, exceptionally on that time slow links, hackers preferred human
    readable choices anyway, because they are simple, easy to debug,
    easy to maintain and easy to use.

    But GNU/Linux does not like idea of beauty clever decisions and long
    time proven software. It’s developers (I can not call them hackers
    in most cases anymore) have to invent the wheel again and create yet
    another incompatible solution like several IPCs before and DBus
    itself. It requires heavy dependencies, it does not use well known
    socket-like paths and addresses, it uses unreadable binary protocol,
    it is slow and does neither guarantee any delivery nor has any
    buffering queue.

    Access to various low level hardware devices used simple device node
    filesystem-like access. Of course many of them dictate standards
    existence and audio has one: Open Sound System, represented by
    entries inside /dev. Easy to use, easy to implement proven and
    mature system. If you want to stream audio data other the network
    you can easily use UNIX power to connect it for example with either
    pipe or network socket.

    GNU/Linux folks do not understand that elegant solution and invent
    ALSA, aRts, ESD, NAS and PulseAudio at last. So many reinvented
    creations for rather simple thing. Of course OSS is not the right
    solution if you have to mix various sound inputs and outputs of both
    hardware and software modules. But JACK does this job pretty well.
    GNU/Linux developers do not think so again.

    What about operating system’s initialization part? You have various
    daemons that should be started and controlled. You have to do
    various file system related steps, manage process execution somehow.
    All that tasks are done for a long time using shell interpreter,
    intended to solve them. As a fact each daemon has small shell script
    used to control server’s behaviour. Hackers need to glue those
    daemons together. For me, it seems to be very elegant solution to
    include trivial plain-text metainformation as script’s comments and
    to create symbolic links dependent on that metainfo with number
    included to force sorting done right, as in System V.

    UNIX-way is to have many small tools, where each of them does single
    job, but does it well. Simple separate initialization system, simple
    separate logging system, simple separate shell interpreters, simple
    IPC socket-oriented libraries, simple daemons, cron, inetd and so
    on. Looks simple, clear and nice.

    You are wrong! Modern GNU/Linux-es can not accept that, because they
    are missing written on compiled language (does not depend on already
    existing software for controlling process flows (shells)) program,
    with own IPC dependency, with own declarative language bloated
    combine of initialization, logging, cron/at-ing, inetd-ing and
    DBus/socket listening systems at once. Wait, systemd is pretty
    modular: several dozens of separate executable. Hackerish SysV is
    just a shell interpreter with several shell-scripts. Thirty years
    ago logs have been written on rather small hard drives in plain
    text, but today seems that hard drives became much smaller and more
    expensive and systemd decided to write human unreadable and
    unprocessable with any kind of sed/awk/shell/perl tools binary logs.

    I still do not understand why GNOME and derivative distributions (I
    am sure that udev, systemd, dbus and GNOME are single aggregate)
    does not use very simple mailcap-files to decide what to do with
    various kinds of data. mailcap contains plain text lines with data
    content type and shell script code saying what program you need to
    run and apply to data. Just find the line by it’s content type and
    execute related command line. This can be done with single sed call.
    Just simple plain text file to rule all user’s software preferences.
    GNOME has to prerun software that will register itself on DBus
    (should be already running), then another software must create
    proper message, send it over DBus hoping that someone with catch it
    doing probably what user wants. It is awful.

    And at last I see in Debian maillists that they are going to remove
    local sendmail server. I see what is happening: when systems are
    created by very clever hackers — they are very cool for educated
    technicians and other hackers. When ordinary labour crowd is falling
    in this world: it will be ruined. Usenet was destroyed like that.
    Email etiquette has mostly disappeared and replaced by top-posted
    huge quoted HTML messages, after user-friendly email clients born.

    Security is not compatible with user-friendliness. Simple clever
    hacks are not compatible with classical user’s world of view.
    Developers never speaks users on the same language. There is always
    separation of developer-friendly and user-friendly. They can not
    coexists together, as like servers are pretty different from
    desktops.

    Current Debian is very developer and server friendly system, while
    Ubuntu is aimed to be user-friendly. Systemd is great for desktop
    requirements, so let’s integrate it to desktop system. Why one is
    going to replace cron/at, SysV/rc, inetd, sockets, syslog, devnodes
    with single all-in-one bloated monolithic combine and remove
    sendmail? What will stay from UNIX itself? Arch Linux is going to
    mess /bin and /sbin with /usr/bin. So I won’t even find /bin/sh in
    that OS. It is not UNIX-like system anymore. It is yet another
    unmaintainable crap of compiled monolithic POSIX-compatible (hope
    so) code.

    Of course there are really true hackerish UNIX-like GNU/Linux
    distributions, but all known ones require much manual work with
    them. Free software *BSD does not, as it has cool port collections
    and well maintained high quality overall system’s design (not a pile
    of absolutely different software pieces).

3 years agoНет иноагентов, есть журналисты
Sergey Matveev [Wed, 8 Sep 2021 18:50:48 +0000 (21:50 +0300)]
Нет иноагентов, есть журналисты

https://roskomsvoboda.org/post/smi-ne-agenty/

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

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

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

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

3 years agotofuproxy: HTTP авторизация, TLS сертификаты клиента, AVIF
Sergey Matveev [Wed, 8 Sep 2021 18:39:41 +0000 (21:39 +0300)]
tofuproxy: HTTP авторизация, TLS сертификаты клиента, AVIF

Добавил ещё пару Tk окон для ввода данных HTTP Basic авторизации, для
выбора клиентских TLS сертификатов. AVIF транскодирование (одно название
команды всего-то поменять надо было). Хоть опыта с Tcl не было совсем,
но мне нравится всё что я вижу в tutorial-ах, понимаю я этот язык. Давно
его хотел пристальнее поизучать, но всё откладывал, да и задач даже на
Tk не было. А тут под руку.

3 years agoПрочитал "Штирлиц, или Как размножаются ёжики"
Sergey Matveev [Wed, 8 Sep 2021 18:28:10 +0000 (21:28 +0300)]
Прочитал "Штирлиц, или Как размножаются ёжики"

https://ru.wikipedia.org/wiki/%D0%A8%D1%82%D0%B8%D1%80%D0%BB%D0%B8%D1%86,_%D0%B8%D0%BB%D0%B8_%D0%9A%D0%B0%D0%BA_%D1%80%D0%B0%D0%B7%D0%BC%D0%BD%D0%BE%D0%B6%D0%B0%D1%8E%D1%82%D1%81%D1%8F_%D1%91%D0%B6%D0%B8%D0%BA%D0%B8
С одной стороны, есть масса забавных моментов. С другой стороны, или на
грани, или переходя грани, показываются и убийцы миллионов, да и наши
вожди. К концу так вообще у меня ощутимая неприязнь из-за сортирного
юмора. В целом не понравилось, неприятное впечатление, хотя первые части
книги ещё ничего вроде бы.

3 years agoЛиндеманн на Красной площади по русски спел
Sergey Matveev [Mon, 6 Sep 2021 19:07:15 +0000 (22:07 +0300)]
Линдеманн на Красной площади по русски спел

https://darkside.ru/news/134919/
Всё ту же песню что и прежде: 1becbfd0ee535af25e577343635ad7dc41d4d33f

3 years agoС tofuproxy web-surfing быстрее
Sergey Matveev [Mon, 6 Sep 2021 18:33:12 +0000 (21:33 +0300)]
С tofuproxy web-surfing быстрее

Включил везде поддержку keep-alive-ов, TLS session resumption кэш,
HTTP/2 с согласованием через ALPN. Загрузка многих вещей визуально стала
заметно быстрее, чем просто напрямую используя броузеры мои имеющиеся.
Сокращение round-trip-ов, удивительно для меня, делает погоду даже с
Ethernet-ом и desktop-ом. Понятно почему за это так бьются всякие CDN-ы
для мобильных клиентов.

3 years agoУмер Жан-Поль Бельмондо
Sergey Matveev [Mon, 6 Sep 2021 17:11:11 +0000 (20:11 +0300)]
Умер Жан-Поль Бельмондо

https://lenta.ru/news/2021/09/06/belmondo/
https://www.youtube.com/watch?v=ajI2OPRfTps
Классные с ним фильмы были! В детстве помню что видел по телевизору
"Профессионала". И меня жутко впечатлила последняя сцена фильма и музыка
к ней. Chi Mai Эннио Морриконе вообще ни с чем больше не ассоциируется
кроме как с предательским убийством и грустью. А так почти нет фильмов к
которым бы у меня запоминалась музыка и вообще вызывала сильные чувства.

3 years agoВаша криптовалюта не работает
Sergey Matveev [Mon, 6 Sep 2021 13:02:58 +0000 (16:02 +0300)]
Ваша криптовалюта не работает

https://gist.github.com/joepie91/daa93b9686f554ac7097158383b97838
Много раз я повторял точно такие же слова и аргументы как и автор.
Но он ещё короче всё привёл к тому, что текущие подходы с proof-of-X
всегда будут скатываться в централизацию в руки богатых, как по
определению происходит в proof-of-stake и по факту в proof-of-work.

3 years agoТранскодирование изображений в tofuproxy
Sergey Matveev [Sun, 5 Sep 2021 15:34:29 +0000 (18:34 +0300)]
Транскодирование изображений в tofuproxy

Со времён открытия мною JPEG XL формата (f9d5375199b7b81df899f55d1216d4278aab8fc3),
я начал страдать от его отсутствия в Xombrero/WebKit. Смотрел я было в
сторону других графических броузеров типа Links2, NetSurf, но для меня
не тривиально в них добавить JPEG XL поддержку или хотя бы WebP. Нету
нигде ничего похожего на "вот по этому media type запускай такую
программу, от неё лови PNM/Farbfeld/whatever картинку".

Теперь проблемы нет совсем. В tofuproxy я добавил прозрачное
преобразование WebP (если User-Agent не Xombrero) и JPEG XL в PNG прямо
на лету, тупо через временные файлы вызывая dwebp и djxl утилиты.
Работать будет, конечно же, если сервер честно будет отдавать
Content-Type корректный. На практике работает отлично. Теперь в Links2 я
могу видеть все современности.

Кстати, проверял JPEG XL работу на одном из первых попавшихся файлов с
жёсткого диска: и это фотография грайндкор-козы
(d1e254f860c0e8678a8acb5d1bf7fa18b7be3cbb).

3 years agotofuproxy домашняя страница
Sergey Matveev [Sun, 5 Sep 2021 14:28:38 +0000 (17:28 +0300)]
tofuproxy домашняя страница

http://www.tofuproxy.stargrave.org/
Сделал и сайтик для недавно написанного 432f7635faed298751cef04f0102deee68ea942f
с парой снимков экрана. Перестал использовать xmessage и написал впервые
за 15 лет Tk программу для показа диалогового окна с двумя независимыми
scrollable текстовыми полями. Tk я очень очень давно трогал -- совсем
уже всё забыл. Да и сейчас просто copy-paste-ил с tutorial-ов. Но в
xmessage не работает прокрутка мышкой, да и искать надо глазами где там
начинается выдача "нашего" сертификата.

3 years agotofuproxy
Sergey Matveev [Sat, 4 Sep 2021 20:40:40 +0000 (23:40 +0300)]
tofuproxy

http://www.git.stargrave.org/?p=tofuproxy.git;a=tree
Уже не первый год у меня была идея сделать прокси-сервер который бы
полностью брал на себя всё что касается TLS-а как минимум.

Вот какой-нибудь Xombrero броузер, на старом WebKit движке, как броузер
может быть неплох, но вот TLS в нём уныл. В других возможно даже TLS 1.3
поддерживается, но нету certificate pinning-а, нету TOFU и прочих
технологий, присутствующих в Xombrero.

В Xombrero/WebKit мне не нравится что я не вижу и не управляю
redirect-ом -- он просто автоматически происходит, тогда как в Firefox
был плагин показывающий промежуточную HTML страницу. Например именно так
я сегодня увидел что lite.duckduckgo.com уже не работает и он делается
redirect на html.duckduckgo.com.

В этом же Xombrero были какие-то проблемы с HTTP авторизацией на не
стандартных портах. Плюс мне хочется автоматически перебрасывать с
www.reddit.com на old.reddit.com. Плюс запретить качать всякие
Web-шрифты (это я правкой WebKit исходного кода реализовал). Плюс делать
certificate pinning не на сам сертификат, а на его SPKI. А ещё бы DANE
использовать. Плюс блокировать всякие рекламные домены (Google Analytics
и прочее).

В Lynx вообще с TLS всё плачевно с детализацией информации и никакого
pinning конечно же.

Править древний движок -- нет ни желания, ни времени. Зато Go-шную
crypto/tls я излазил вдоль и поперёк когда-то. Плюс имею и ГОСТ TLS 1.3
поддержку в ней. И в ней есть все современные быстрые протоколы (*25519,
ChaCha20-Poly1305). Прокси на Go мог бы решить все проблемы. Вот только
к нему нужен какой-то интерактивный интерфейс или какой-то способ
взаимодействия: ведь увидев не сходящийся pinning, он же должен будет
меня спросить что делать.

Не раз я начинал его делать, но почему-то каждый раз довольно быстро
забивал, ибо не просто было почему то. Сегодня без причины снова
вспомнил о таком прокси, задумался в чём же могут быть подвохи, не
придумал, за несколько часов написал. Я искренне не понимаю почему у
меня прежде с ним возникали трудности. Обожаю Go!

Это HTTP прокси демон. HTTPS соединения он терминирует на себе, выступаю
в роли клиента для HTTPS серверов. На лету генерирует сертификаты для
хостов, выступая в качестве TLS-сервера, с поддержкой DANE.

* Запрещаю HEAD методы (405 возвращаю). Потому что Xombrero упорно любит
  слать и GET и HEAD -- достал
* Если хост www.reddit.com -- возвращаю redirect на old.reddit.com
* Если хост является поддоменом hardcoded списка шпионящих доменов
  (google-analytics.com, fbcdn., mc.yandex.ru и прочие), то 404
* Ошибки на уровне Go библиотеки возвращаются в виде текстовой страницы
* Если ответом является redirect, то он преобразуется в HTML страницу с
  ссылкой, чтобы явно это перенаправление было видно. Если это temporary
  redirect, а User-Agent это newsboat, то HTML страница не отдаётся.
  Многие RSS/Atom имеют официальные URL-ы которые всегда делают
  перенаправление
* В противном случае ответ проксируется как есть, с честным копированием
  тела из клиента в ответ сервера
* Для TLS на диск сохраняются присланные сертификаты для данного домена
  (TOFU). Если штатные проверки Go не прошли или SPKI сохранённого
  сертификата отличается (SPKI pinning), то показывается xmessage окно с
  Accept/Once/Reject кнопками и выводом certtool сертификатов "наших" и
  "ихних". То есть, можно разрешить и совершенно штатно не валидные
  сертификаты (например выданные для других доменов)
* Accept обновляет сертификаты на диске. Если SPKI pinning отрабатывает,
  но сертификат был обновлён, то оно автоматически обновляется
* Кроме того, можно делать DANE-EE проверку напротив TLSA записи из DNS.
  Результат DANE показывается в xmessage тоже

В разные FIFO файлы пишутся TSV сообщения с TAI64N префиксом о:
запросах, ошибках, успешных ответах, "других" ответах (redirect, 404),
заменённых на HTML redirect-ах, событиях TLS подключений (плюс версия
TLS, ciphersuite, SPKI хэш сертификата), события связанные с
сертификатами (DANE, обновления, reject-ы). multitail скриптом я собираю
их все воедино и разукрашиваю.

Единственное что не делал ещё: перехват HTTP авторизации, видимо тоже
через показ xmessage-like окон. Я уже на самом деле забыл где именно с
ней у меня возникали проблемы. Сейчас и Lynx и Xombrero и Newsboat
работают через этот прокси -- всё тип топ.

3 years agoПрочитал "Суер-Выер"
Sergey Matveev [Sat, 4 Sep 2021 18:33:54 +0000 (21:33 +0300)]
Прочитал "Суер-Выер"

https://ru.wikipedia.org/wiki/%D0%A1%D1%83%D0%B5%D1%80-%D0%92%D1%8B%D0%B5%D1%80
https://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D1%8E%D0%BA%D0%B2%D0%B8%D0%BD,_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_%D0%92%D0%BB%D0%B0%D0%B4%D0%B8%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B8%D1%87
Я в неописуемом восторге от этой книги! Как мне понравилась вся эта игра
слов и необычное их применение! Прям сразу же хочется с самого начала
перечитать/переслушать. И цитировать каждое второе предложение оттуда.

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

3 years agoКак танцевать под djent
Sergey Matveev [Fri, 3 Sep 2021 08:17:28 +0000 (11:17 +0300)]
Как танцевать под djent

http://www.hitkiller.com/klip-nedeli-animals-as-leaders-pokazyvayut-kak-tancevat-pod-dzhent.html
Animals As Leaders в клипе показали как надо танцевать под djent. Был на
их концерте, но все какие-то необразованные там были, старые металлисты.

3 years agoЗащитники твоей конфиденциальности
Sergey Matveev [Fri, 3 Sep 2021 07:02:02 +0000 (10:02 +0300)]
Защитники твоей конфиденциальности

https://www.youtube.com/watch?v=9j1RpPeu3Rs
Какое же лживое говно могут создавать! Сотню раз упоминают про
правительства и государства -- что мол они враги и шифропанки борются с
ними. Вот только достаточно просто открыть манифест шифропанка:
http://www.cypherpunks.ru/Manifesto-cypherpunk.html и посмотреть заходит
ли об этом хоть какая-то речь. Только ровно один раз упоминается что на
гос-ва, как и корпорации нам рассчитывать не приходится. А в этом ролике
бессовестно лапша на уши вешается.

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

Опять же, если хотя бы раз прочитать манифест шифропанка, то там чётко и
доходчиво говорится об анонимности платежей. Так какого чёрта кто-то
додумывается приплетать всякие современные blockchain-ы к шифропанкам,
когда они даже по определению называются *public* ledger-ами, то есть
прямо противоположной сущностью!?

Плюс в ролике путаются слова "регистр" и "реестр" -- автор не понимает о
чём несёт чушь. Придумываются слова "криптопанк" и "шифер".

Ну и забавное: упоминается какая-то платформа где собирается "мудрость
толпы", мол, большинство не может ошибаться. По моему я уже в
подростковом возрасте знал что "миллионы не могут ошибаться" это
саркастическое выражение аналогичное "миллионы мух не могут ошибаться".
На кой чёрт мне слушать что-либо про шифропанков, если я могу нормально
сидеть под Windows/macOS, ведь Microsoft/Apple/Google/Facebook/whatever
заботятся о моей приватности и безопасности, плюс мне нечего скрывать.

3 years agoMTA/MDA/MRA/MUA
Sergey Matveev [Thu, 2 Sep 2021 11:20:19 +0000 (14:20 +0300)]
MTA/MDA/MRA/MUA

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

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

Если бы наша компания была сейчас в 70-х, то у нас бы был один большой
мейнфрейм, а у нас у каждого бы просто обычный терминал (не эмулятор, а
настоящий, физический :-), типа VT100). Чисто физически он буквально бы
был соединён типа длинным кабелем до COM-порта. Как в Unix-like системах
в терминале есть Alt-F1/F2/... терминалы, то вот их было бы просто с
сотню, до каждого рабочего места.

Почта уже существовала и тогда и она просто лежала в виде
сконкатенированных сообщений в /var/mail/$USERNAME файле. Набираешь:
    mail -s "my subject" colleague <<EOF
    тут всякий текст для отправки
    EOF
и соответствующий mailbox файл lock-ается и в него append-ится
сообщение. Набираешь просто mail[x] и попадаешь в программу
чтения/работы с почтой. Сами почтовые сообщения состоят из заголовка
(key-value строчки) и дальше тела. Позже, из-за того что не только на
английском люди пишут, не только текст, но и вложения могут делать, то
появилось расширение в виде MIME (multipurpose internet mail extensions),
которое добавляет дополнительные заголовки указывающие на какие части
разбито сообщение, как каждая часть закодирована и всё такое прочее. Но
это тут не суть совсем.

Но у компании есть филиал в Владивостоке. Со своим мейнфреймом. Быстро
сделали такую штуку как UUCP: Unix-to-Unix CoPy. Относительно простая
система в которой ты можешь набрать что-то типа:
    uucp my-file vladivostok!matveev
Эта команда на "vladivostok" систему добавит в очередь отправку "my-file"
файла пользователю "matveev". UUCP демон время от времени соединяется по
модему с другой Unix системой и обменивается накопившимися пакетами.
Кроме "uucp" (cp файлов) есть команда "uux" (unix-to-unix execute)
которая позволяет выполнить удалённые команды. И через эту команду
происходила отправка почты буквально просто вызовом на удалённой системе
"rmail" команды подавая ей на вход сообщение. Буквально просто
запускалась программа удалённо, а не локально. Но почта точно так же
просто клалась в /var/mail/matveev там.

Кроме Unix систем была масса других со своими протоколами, форматами и
прочим. IBM PC ещё не появился, как и Apple. Да и даже с их появлением у
них долго не было никакой почты или чего-то подобного, кроме
коммерческих проприетарных enterprise систем типа Lotus Notes каких-нибудь.

А потом ещё появился Интернет, для которого только в середине 80-х был
вообще изобретён BSD TCP/IP стэк (BSD сокеты). И вот начиная с этого
времени начали Unix системы "дружить" с Интернетом и вообще задумываться
об унификации и стандартизации всего и вся (тут и RFC появились, как
сущность). Был изобретён довольно простой SMTP протокол (simple mail
transfer protocol). В ОС добавлялся MTA (mail transfer agent) который
общался с другими MTA (на других системах) по SMTP протоколу. В общем
случае, SMTP сессия выглядит так:

    S: 220 smtp.example.com ESMTP Postfix
    C: HELO relay.example.com
    S: 250 smtp.example.com, I am glad to meet you
    C: MAIL FROM:<bob@example.com>
    S: 250 Ok
    C: RCPT TO:<alice@example.com>
    S: 250 Ok
    C: RCPT TO:<theboss@example.com>
    S: 250 Ok
    C: DATA
    S: 354 End data with <CR><LF>.<CR><LF>
    C: From: "Bob Example" <bob@example.com>
    C: To: Alice Example <alice@example.com>
    C: Cc: theboss@example.com
    C: Date: Tue, 15 Jan 2008 16:02:43 -0500
    C: Subject: Test message
    C:
    C: Hello Alice.
    C: This is a test message with 5 header fields and 4 lines in the message body.
    C: Your friend,
    C: Bob
    C: .
    S: 250 Ok: queued as 12345
    C: QUIT
    S: 221 Bye

То есть, буквально просто сообщается от кого, кому надо отправить
сообщение, DATA, после которой идёт тело сообщения. Теперь, когда ты
набираешь mail/mailx/whatever и отсылаешь сообщение, то оно не
перекладывается в /var/mail, а отправляется локальному MTA серверу. Это
может происходить просто вызовом команды "sendmail RECIPIENT" и
скармливанию почтового сообщения в stdin ей. Это может происходить
подключением к localhost:25 и использованию SMTP протокола. Кроме того,
есть ещё и LMTP протокол (lightweight MTP), который является просто
подмножеством SMTP исключительно для работы в пределах localhost. Это
всё удобно тем (с точки зрения программиста/администратора), что MTA
достаточно уметь общаться по одному протоколу и просто перекладывать
сообщения в /var/mail файлы соответствующие.

На полном серьёзе, до сих пор так всё и осталось, даже вчера на твоей
системе, но когда ты сделал git-send-email, то он по умолчанию запустил
sendmail команду которая (конкретика MTA-специфична) в локальный MTA
отправило сообщение. Локальный MTA сохранил на диск в очередь исходящих
сообщений. Твой MTA видит что сообщения для stargrave@stargrave.org. Он
делает запрос в DNS с вопросом о том, кто отвечает за доставку почты для
данного домена:

    % drill stargrave.org MX
    stargrave.org.  21600   IN      MX      10 mailfake0.stargrave.org.
    stargrave.org.  21600   IN      MX      20 mailfake1.stargrave.org.
    stargrave.org.  21600   IN      MX      30 mail2.stargrave.org.
    stargrave.org.  21600   IN      MX      40 mailfake2.stargrave.org.

и видит что четыре "сервера" (адреса) за это ответственны. В итоге он
подключится к mail2.stargrave.org по SMTP протоколу и как в примере выше
отправит письмо, указав что оно для stargrave@stargrave.org пользователя.
Если бы за почту для домена stargrave.org отвечал какой-нибудь Google,
то в MX записях DNS-а были бы серверы GMail указаны.

То есть, это буквально децентрализованная система очередей. Ты локально
в очередь добавил -- из DNS-а взяли данные о целевой системе,
соединились, по довольно простому текстовому протоколу отправили
сообщение, которое на целевой системе будет положено в очередь
доставленных сообщений (mailbox пользователя).

Всем известные популярные MTA это:

* Sendmail (не стоит путать команду "sendmail" и систему Sendmail)).
  sendmail команда это просто некий API. А Sendmail система была
  де-факто очень долго за счёт того, что она могла общаться и связывать
  воедино не только Интернет-почту (SMTP), но и UUCP старый и ещё с
  десяток других совершенно разных сетей. Но она сложно конфигурируется,
  славна дырами и сейчас просто бессмысленна, хотя и стоит из коробки в
  BSD системах
* Exim -- по умолчанию стоит в большинстве GNU/Linux систем. Одна из
  самых простых, но при этом не самых производительных систем, ибо
  только один процесс за всё отвечает. Но для 99% организаций и людей
  это не проблема. Хорошая штука
* Postfix -- MTA состоящий из кучи privilege separated процессов и
  славен как пример очень безопасного подхода к написанию софту. Очень
  производительный. Я всю жизнь использовал только его. Он тоже просто в
  настройке. Например дома я установил себе новый сервер/компьютер,
  поставил Postfix: чтобы мне сделать так, чтобы он мог отправлять почту
  в Интернет, то мне достаточно добавить *ровно* одну строчку с
  указанием где находится мой почтовый relay -- на этом всё, почтовая
  система полностью готова к работе
* qmail -- творение Бернштейна, но уже вроде бы мёртвое, ибо он его
  давно забросил. Когда-то это был вроде лучший MTA из существующих,
  пока не появился Postfix (Exim, кстати, самый "молодой")
* OpenBSD пилят свой OpenSMTP, но он год назад даже мои задачи бы не
  удовлетворил

В MTA дьявольское количество настроек -- и всё только из-за колоссальной
гибкости на любой вкус и на любое пожелание. Простому Unix пользователю
достаточно 0.01% от всего что эти MTA умеют. Вот когда ты отправил
письмо на stargrave.org, предполагая прям буквально мою систему, мой
компьютер (хотел было написать "мой ноутбук" :-)), то, так как мы в РФ,
то с IPv6 у нас пока не очень хорошо и мой компьютер не находится в
Интернете постоянно. Поэтому используется relay в виде mail2.stargrave.org,
который у себя забуферизирует корреспонденцию. Но мой компьютер и мой
сервер общаются для отправки/получения почты не по SMTP, а по NNCP моему
-- в Postfix можно использовать кучу разных транспортов и методов
доставки (совершенно не обязательно иметь TCP/IP связанность). Некоторым
доменам я вообще всегда даю отлуп (vk.com, mosreg.ru, и т.д.). За
некоторые домены, типа lists.cypherpunks.ru, отвечает не мой компьютер,
а прям сам mail2.stargrave.org сервер, а другие домены он должен
отправлять (relay) в очередь на мой компьютер. Какие-то особые адреса
(типа адреса папы и мамы) отправляются на gmail.com сразу, делая
forward. Доставка почты для lists.cypherpunks.ru идёт не в почтовый
ящик, а вызывая программу менеджера почтовых рассылок, скармливая ей
сообщения. Сообщения на comment@blog.stargrave.org адрес отправляются в
мою Go-программу добавления комментариев в блог. У меня есть проверка
заголовков входящий сообщений, посылающая в жопу всех у кого не указана
тема письма. Есть настройка в отдельном файле заставляющая хранить
абсолютно всю проходящую корреспонденцию (архив всей почты)... кроме
определённых адресов (типа мониторингов сервера). Сам
mail2.stargrave.org только принимает почту, но отправляет через
mail3.stargrave.org MTA. Кроме того, он ещё и пропускает почту через
фильтры добавляющие DKIM подпись в заголовки писем. Входящую почту
пропускает через greylisting системы и системы проверки SPF. А на моём
локальном компьютере есть маршрутизация вида: если почта идёт от
@arbeit.ru, то использовать наш рабочий relay по SMTP, а в противном
случае по NNCP использовать мой mail2.stargrave.org relay. И ещё есть
всякие фишки и настройки для почтовых рассылок. И я один единственный
простой Unix-guy -- но вот даже для меня MTA довольно много чего должен
уметь делать, поэтому они такие богатые настройками и возможностями.

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

Но задачи у людей при приёме писем немного усложнились, с появлением
Интернета. Теперь мне не достаточно складывать всю корреспонденцию в
один ящик. Мне хочется для определённых почтовых рассылок положить в
другие ящики, какие-то письма (например явный спам) сразу удалять или
класть в "spam" почтовый ящик. Я хочу ещё и копии сохранять в архиве. Но
при этом игнорируя сообщения мониторинга и рабочую почту (её в отдельный
архив). И так далее и тому подобное. Можно конечно было бы усложнять MTA
добавляя возможности по подобным настройкам и хотелкам, зачастую
динамическим (например когда я в отпуске, то работал бы автоответчик
предупреждающий о том что я только через неделю посмотрю ваше входящее
письмо), но народ придумал отдельный компонент в виде MDA (mail delivery
agent). Из известных есть procmail, maildrop, Dovecot, Cyrus, Courier и
много других. MTA просто говорится в конфиге как надо и какой MDA
вызвать для приходящей корреспонденции. MDA не всегда явно присутствует:
часто его задачи выполняет и MTA (ведь положить в /var/mail это тоже
вполне себе уже такой маленький минималистичный MDA) и MRA программы (о
них ниже).

А вообще даже есть целый язык для скриптования MDA:
https://en.wikipedia.org/wiki/Sieve_(mail_filtering_language)
который в некоторых системах можно использовать удалённо загружая на
сервер: то есть ты прям типа из почтовой программы можешь написать это
Sieve скрипты и загрузить на почтовый сервер чтобы там всякая
автоматизация происходила.

А в 90-х до всяких дешёвых простых не-Unix компьютеров (IBM PC, Apple и
прочее) дошли модемы и дошёл софт позволяющий работать с почтой. Но так
как они не были подключены постоянно к Интернету, да и иметь свой домен
не много кто мог себе позволить, или иметь где-то доступ на Unix систему,
то появился сервис по хранению почты на сторонних серверах. Вместо
предоставления удалённого доступа до этих Unix-ов и использования "mail"
программы прямо на них, придумали отдельные примитивные протоколы
скачивания почты: POP3 и IMAP4 позже. По сути это протоколы доступа к
/var/mail/$USERNAME почтовому ящику. POP3 буквально позволял просто
получить кол-во сообщений, их список, получить сообщение по номеру,
удалить его. IMAP4 много чего умеет делать, типа получения только
заголовков (ведь тело может быть большим), типа хранения в разных
"директориях" (создание под-ящиков) и всего такого прочего. Программы
получающие корреспонденцию с подобных систем по этим протоколам
называются MRA (mail retrieval agent). Это например fetchmail и fdm.

Подчеркну, что из коробки MRA в Unix системах не ставится. Это тема для
бедных, у кого нет под рукой вообще никакой полноценной доступной в
Интернете Unix системы. Я понимаю что таких большинство, но это уже
костыли. Теперь, если используются подобные третьи лица для хранения
почты, то запускается MRA, который получает корреспонденцию и отправляет
в локальный MTA, который, в свою очередь, отправляет в MDA для
раскладывания всего по полочкам как тебе надо. Можно сказать что вместо
прямой SMTP↔SMTP связи между твоей системой и удалённой, происходит
polling-связь по MRA-протоколу копирующего всё в локальный MTA.

Почтовая программа с которой работает пользователь называется MUA: mail
user agent. Штатно она умеет только работать буквально только с
сообщениями и почтовыми ящиками. Отправка, приём -- всё это задачи MTA,
MRA, MDA. Но многие популярные MUA заимели и собственные SMTP-клиенты,
MRA-клиенты и даже MDA. Ведь пользователь под DOS/Apple (речь про
классическую MacOS, а не современную Unix-like) просто не могли
технически запускать у себя демонов разношёрстных -- там приходилось всё
засовывать в одну программу. И какой-нибудь Thunderbird самостоятельно
может (зависит от настроек) связаться по SMTP с relay сервером для
отправки, самостоятельно связаться с IMAP4 для скачивания почты,
самостоятельно иметь собственные правила разбора и обработки писем и
раскладывания по почтовым ящикам. Mutt аналогично. Как правило они менее
гибкие чем full featured MTA+MDA+MRA, но в 99% случаев достаточны для
использования конечным единственным пользователем.

git-send-email в последних версиях тоже заимел возможность связываться
напрямую по SMTP с указанным тобой MTA. Во всяких Windows же нет
локального MTA в принципе, как возможно и в macOS по умолчанию, поэтому
локально просто некуда ничего отправлять и нужно или поднимать что-то
простое типа ssmtp (MTA который просто играет роль прокси) или
связываться по SMTP с удалённым relay-ем (личный GMail.com, рабочий
почтовый сервер, и т.д.). https://wiki.archlinux.org/title/SSMTP

Судя по всему, в macOS из коробки поставляется Postfix MTA. В принципе
это вопрос 5-6 строчек в его конфиге на рабочем компьютере чтобы этот
Postfix связывался с нашим mail.arbeit.ru почтовиком для отправки
корреспонденции под твоей учётной записью.

Почему ты не можешь отправить напрямую, как вчера твой домашний
компьютер это пытался делать? Всё исключительно из-за спаммеров. И
возможно из-за вирусописателей, которые заражали Windows-ы и с каждой
машины отправляли тонны писем. Ты возможно обратил внимание в SMTP
протоколе что никакой аутентификации, никакой авторизации или чего-то
подобного в нём не было. Поэтому MTA серверы стали требовать чтобы IP
адрес с которого ты соединяешься, совпадал с доменом о котором ты
сообщаешь в HELO SMTP приветствии и чтобы DNS PTR запись для этого
IP-адреса совпадала тоже с этим доменом. Далеко не все провайдеры
позволяют прописать DNS PTR запись для IP адреса простым домашним
пользователям. Ростелеком -- пидоры например. NetByNet -- лапочки, без
проблем это делающие. Конечно если речь про статический IP адрес. Для
динамических это невозможно. Но если бы у тебя была статика с нужной
PTR-записью, то без проблем твой компьютер мог бы отправить на мой
mail2.stargrave.org почту. Точнее он то отправлял, но мой mail2. из-за
отсутствия PTR-записи должен был послать в жопу.

Вот как-то так всё устроено. Выглядит сложно. Софт сложный. Но всё из-за
колоссальнейшей гибкости, широчайшего круга задач и настоящей
децентрализации. Но вообще у тех кто использует Git (не через
web-интерфейс Github-а, грубо говоря), кто сидит под Unix-like системой,
предполагается что имеется работающая почтовая система (локальный MTA,
хотя бы просто отправляющий почту в relay вышестоящий).

3 years agoLet's Encrypt то подсанкционным может отказать в сертификатах
Sergey Matveev [Thu, 2 Sep 2021 08:25:55 +0000 (11:25 +0300)]
Let's Encrypt то подсанкционным может отказать в сертификатах

https://community.letsencrypt.org/t/certificates-for-us-sanctioned-countries/1223
https://community.letsencrypt.org/t/issuance-criteria-for-ir-domains/81812
https://community.letsencrypt.org/t/lets-encrypt-and-u-s-laws/3251
Правительствам Ирана, Сирии, Северной Кория, Судана они откажут в
выпуске. Собственно, как и любая компания в США обязана подчиняться их
законам. А ведь под это могут попадать и люди просто побывавшие в Крыму.
Ну а я вообще помогал работой Минсвязи Сирии. Так что блокировка меня
была просто вопросом времени. Да и РФ небось скоро попадёт аналогично в
этот же список "неугодных".

3 years agoПрочитал "Князя света"
Sergey Matveev [Thu, 2 Sep 2021 08:18:46 +0000 (11:18 +0300)]
Прочитал "Князя света"

https://ru.wikipedia.org/wiki/%D0%9A%D0%BD%D1%8F%D0%B7%D1%8C_%D0%A1%D0%B2%D0%B5%D1%82%D0%B0
В целом понравилась книга, но всё же длинные повести Желязны читаются
мне тяжело -- путаюсь среди всех этих персонажей.

3 years agoSimply explained: big-endian vs little-endian
Sergey Matveev [Wed, 1 Sep 2021 14:02:40 +0000 (17:02 +0300)]
Simply explained: big-endian vs little-endian

https://geekandpoke.typepad.com/geekandpoke/2011/09/simply-explained-1.html
Хотя там скорее middle-endian показан.

3 years agoHello World на Rust
Sergey Matveev [Wed, 1 Sep 2021 13:34:34 +0000 (16:34 +0300)]
Hello World на Rust

https://github.com/mTvare6/hello-world.rs
Модный современный, блюдущий все тенденции и хайпы, Hello World на Rust!
И исходный код забавен и вся обвязка вокруг. Docker, Nix (хотя Nix я и
уважаю), 1061 crate-ов, 33GB сборочная директория, 2.5ч сборки.

3 years agoedbrowse вполне себе серьёзный броузер
Sergey Matveev [Wed, 1 Sep 2021 10:46:28 +0000 (13:46 +0300)]
edbrowse вполне себе серьёзный броузер

Подольше поигрался я с этим броузером (b808c84c797a82f570dcf478fbb83ab3b9d2efb0)
и очень впечатлили подходы в нём. А точнее не в самом броузере, а этом
ed редактора на стероидах. В отличии от стандартного ed-а, тут есть
параллельные независимые сессии. Аналог буферов vi. Каждая сессия имеет
свою "историю" переходов между буферами (файлами). Открывая новую
страницу, у меня в текущей сессии появляется новый буфер, но до старого
можно дойти через "^" команду. Если мне хочется открыть несколько ссылок
в отдельных табах, то в eb (edbrowse) я сделаю:

    > b www.stargrave.org/Links.html
    < 6757
    < 941
    > /Aerospace/g
    < *http://www.stargrave.org/LinksCatAerospace.html
    < 3512
    < 430
    > M
    < moved to session 2
    < • {Aerospace (4 items)}:| |
    > /DNS/g
    < *http://www.stargrave.org/LinksCatDNS.html
    < 4936
    < 786
    > M
    < moved to session 3
    < • {DNS (10 items)}:| |
    > bflist
    < 1: Interesting links (Sergey Matveev’s homepage)
    < 2: Links category: Aerospace (Sergey Matveev’s homepage)
    < 3: Links category: DNS (Sergey Matveev’s homepage)

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

    < 1g
    < M2
    < 2g
    < M3
    < 3g
    < M4

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

    > b www.stargrave.org/Links.html
    < 6757
    < 941
    > /XBEL/
    < All of these are also exported in {recfile}, {XBEL} and {OPML} formats.
    > g?
    < multiple links present, please use g1 through g3
    > g2?
    < http://www.stargrave.org/links.xbel
    > A
    185
    > ,n
    < 1 <br><a href='http://www.stargrave.org/links.rec'>
    < 2 recfile
    < 3 </a>
    < 4 <br><a href='http://www.stargrave.org/links.xbel'>
    < 5 XBEL
    < 6 </a>
    < 7 <br><a href='http://www.stargrave.org/links.opml'>
    < 8 OPML
    < 9 </a>
    > /xbel/iJ
    > /xbel/iJ
    > v/xbel/d
    > w+ $books
    < 61
    > ^
    < All of these are also exported in {recfile}, {XBEL} and {OPML} formats.

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

    % mkdir src dst
    % touch src/gotcha
    % eb src
    < directory mode
    < 54
    > ,n
    < 1 ../ 1472 Sep  1 2021 13:58
    < 2 gotcha 0 Sep  1 2021 13:54
    > e dst
    < directory mode
    < 27
    > M
    < moved to session 2
    < gotcha 0 Sep  1 2021 13:54
    > /gotcha/m2
    < ?
    > h
    < directories are readonly, type dw to enable directory changes
    > dw
    > /gotcha/m2
    < gotcha → dst
    > e2
    < dst
    > /got/t1
    < gotcha ≡ src
    > q
    % bfs -type f src dst
    src/gotcha
    dst/gotcha

Небольшие скриптовые способности достаточны чтобы реализовать jump-list
как в Lynx:

    function+S{
        b https://lite.duckduckgo.com/lite/?q=~0
        /Next Page/+1
        z20
    }

    > <S "hello world program"
    [выдача 20 строчек DuckDuckGo игнорируя ненужный заголовок]

    function+Spy{
        b https://pypi.org/project/~0/
        /^h1/
        z20
    }

    > <Spy pygost
    < 69245
    < 7662
    <
    < h1 pygost 5.6
    <
    < pip install pygost < Copy PIP instructions>
    < {Latest version}
    <
    < Released: Apr 22, 2021
    [...]

Мне всё равно ещё непривычно сидеть и не видеть весь вывод, весь текст.
Нажимать ,n каждый раз -- геморройно, да и надо проматывать будет. Так
как я использую rlwrap с eb-ом (чтобы получить vi редактирование строки,
историю и автодополнение путей к файлам), то добавил в нём mapping на
F1, вводящий "<Scroll\n", который в свою очередь запускает вот такую функу:

    function+Scroll{
        +,+20n
        if(?) {
            +,$n
            if(?) {
                0<Scroll
            }
        }
    }

Весь этот геморрой с if-ами только для того чтобы он мог проматывать по
20 строчек находясь и в конце файла. Долбя F1 я буду видеть chunk-и
текста. Но думаю что вообще сделать сохранение во временный файл и
натравливание на него less, нажав какой-нибудь F2. Но это наверное
совершенно не ed-way.

Видя как можно получить текст web-страницы или директории (или FTP
директории), что можно её всю из себя исковеркать всякими g// и v//
командами удаляющими ненужный мусор типа рекламы, а потом применяя
очередные команды -- понимаешь что в Plan9 Acme редактора ведь именно
подобная идея тоже исповедуется. Очень необычно и впечатляюще. Насколько
разными могут быть подходы к работе с текстом и манипуляциями с почтой,
web-ом, файлами и СУБД (ни почту, ни СУБД я в edbrowse не пробовал,
только читал в документации про них).

3 years agoed мастурбация
Sergey Matveev [Wed, 1 Sep 2021 10:43:22 +0000 (13:43 +0300)]
ed мастурбация

Задал тут вопрос в поисковике касательно ed-редактора. Четверть ссылок
про мастурбацию. Я подумал что это искусственный интеллект мне намекает
что использование ed это сродни онанизму, но оказалось что речь про
erectile dysfunction.

3 years agoВокалист Napalm Death о веганстве
Sergey Matveev [Wed, 1 Sep 2021 09:26:03 +0000 (12:26 +0300)]
Вокалист Napalm Death о веганстве

https://www.darkside.ru/news/134673/
Вот потому что он мясо не ест, поэтому такой агрессивный на сцене,
конечно будешь вряд ли добрячком жуя всякую траву:
https://www.youtube.com/watch?v=wpvYUa9p4MU
https://www.youtube.com/watch?v=Aw5T8KO_lMY

3 years agoВремя hibernate в OpenBSD сокращено
Sergey Matveev [Wed, 1 Sep 2021 08:11:16 +0000 (11:11 +0300)]
Время hibernate в OpenBSD сокращено

https://www.undeadly.org/cgi?action=article;sid=20210831050932
Для 40GB машины с 325 до 28 секунд. Более пяти минут она делала
hibernate! А у меня сейчас машина с 64GB памяти -- там я бы успел
дойти до магазина и обратно и всё равно бы ещё ничего не уснуло.

3 years agoНаписал Gemini клиент
Sergey Matveev [Tue, 31 Aug 2021 20:11:05 +0000 (23:11 +0300)]
Написал Gemini клиент

Который может скачать страницу с gemini://:

    #!/bin/sh
    h=${1#*//}
    h=${h%%/*}
    tcpclient -DHR -l 0 $h 1965 tlsc -name "" sh -c "printf \"$1\r\n\" >&7 ; cat <&6"

3 years agoedbrowse
Sergey Matveev [Tue, 31 Aug 2021 11:21:24 +0000 (14:21 +0300)]
edbrowse

http://www.edbrowse.org/
https://tildes.net/~comp/hc9/unearthed_arcana_edbrowse
http://www.edbrowse.org/usersguide.html
Полноценный ed-редактор со встроенным файловым менеджером, почтовым
клиентом, SQL СУБД клиентом и web-броузером. Причём поддерживающим
JavaScript. Звучит забавно несерьёзно, но... оно реально вполне себе
работает и покрывает вроде бы даже всё что я делаю в Lynx!

По-настоящему рендерит HTML, делая вполне себе сносный и удобный вывод
для человека. Умеет ходить по ссылкам, перемещаться назад. Умеет
работать в нескольких сессиях, в каждой из которой будет своя история
перемещений. Поддерживает TLS и HTTP-прокси. Поддерживает HTTP
авторизацию. Умеет даже Gopher протокол и frame-ы.

Поддерживает ввод в формах и cookie. Для ввода в textarea создаётся
отдельный буфер редактора, что логично. В Redmine без проблем можно
залогиниться.

Можно навешивать hook-и на разные типы скачиваемых файлов и решать что с
ними делать: передавать URL-ы внешним программам, рендерить через
внешние программы в HTML или plain-text, открывая его в том же edbrowse,
или просто запускать что-то в фоне.

Функционал jump-ов из Lynx-а в edbrowse тривиально выполняется его
возможностями программирования. Можно даже скриптовать перемещения по
страницам и заполнение форм.
    /Login/ i=stargrave
    /Password/ i=mypass
    /Proceed/ i*
Ищем строчки на странице с "Login"/"Password"/"Proceed" -- будем
находится на них в ed-е. Вводим соответствующие значения в поля ввода.
i* "кликает" на кнопку. Можно делать выборку и из меню, пользоваться
select или checkbox-ами.

По умолчанию показывается очень вылизанный для человека вывод. Но
допустим хочется посмотреть полностью всю ссылку с текстом и URL-ом. "A"
команда в отдельном буфере покажет HTML выдержку для ссылки. Этот буфер
можно отредактировать и тут же на месте "w+ $bookmarks" добавить к
закладкам.

Слишком длинные строки в таблице и на экране плохо умещаются? "ur"
команда транспонирует строку(и) отображая колонки в виде строк.

Поддержка JavaScript конечно же без DOM, так что всякие YouTube и
Twitter не будут работать. Но например IACR
(df1c43f2ddf898d4cac7150761c4511d5e7ff192) уже не видит у меня красивую
шапочку из фольги. Можно конечно же для определённых сайтов отключать JS
за ненадобностью.

Вообще очень впечатляет! В Lynx нет никакого скриптования, хотя бы
отдалённого, а тут вполне себе можно было бы даже делать интеграционные
тесты напротив Web-сайтов (не Application-сайтов, конечно же).

3 years agoИерархия Unix пользователей
Sergey Matveev [Fri, 27 Aug 2021 13:36:12 +0000 (16:36 +0300)]
Иерархия Unix пользователей

https://www.levenez.com/unix/guru.html
People who come into contact with the UNIX system are often told : "If
you have trouble, see so-and-so, he's a guru", or "Bob there is a real
Unix hacker". Often they are baffled by these appellations, and do not
pursue the matter further. What is a "Unix Hacker ?". How does he differ
from a "guru" ? To answer these and other questions, here is the UNIX
HIERARCHY:

beginner

     * insecure with the concept of a terminal
     * has yet to learn the basics of vi
     * has not figured out how to get a directory
     * still has trouble with typing <RETURN> after each line of input

novice

     * knows that ls will produce a directory
     * use the editor, but calls it vye.
     * has heard of C but never used it
     * has had his first bad experience with rm
     * is wondering how to read his mail
     * is wondering why the person next to him seems to like Unix so very much

user

     * uses vi and nroff, but inexpertly
     * had heard of regular-expr's but never seen one
     * uses egrep to search for fixed strings
     * has figured out that '-' precedes options
     * is wondering how to move a directory
     * has attempted to write C program and has decided to stick with pascal
     * thinks that sdb is a brand of stereo component
     * knows how to read his mail and is wondering how to read the news

knowledgeable user

     * uses nroff with no trouble, and is beginning to learn tbl and eqn
     * thinks that fgrep is fast grep
     * has figured out that mv will move directories
     * has learned that learn doesn't help
     * somebody has shown him how to write C programs
     * once used sed to do some text substitution
     * has seen sdb used but does not use it himself
     * thinks that make is only for wimps

expert

     * uses sed when necessary
     * uses macro's in vi, uses ex when necessary
     * posts news at every possible opportunity
     * writes csh scripts occasionally
     * writes C programs using vi and compiles with cc
     * has figured out what && and || are for
     * thinks that human history started with !h

hacker

     * uses sed and awk with comfort
     * uses undocumented features of vi
     * writes C code with cat > and compiles with !cc
     * uses adb because he doesn't trust source debuggers
     * can answer questions about the user environment
     * writes his own 'nroff' macros to supplement standard ones
     * writes scripts for Bourne shell (/bin/sh)

guru

     * uses m4 and lex with comfort
     * writes assembly code with cat >
     * uses adb on the kernel while system is loaded
     * customizes utilities by patching the source
     * reads device driver source with his breakfast
     * can answer any Unix question after a little thought
     * uses make for anything that requires two or more distinct commands to archive
     * has learned how to breach security, but no longer needs to try

wizard

     * writes device drivers with cat >
     * fixes bugs by patching the binaries
     * can answer any question before ask
     * writes his own troff macro packages
     * is on first-name basis with Dennis, Bill and Ken

3 years agoБилеты на концерты возвращены
Sergey Matveev [Fri, 27 Aug 2021 12:19:28 +0000 (15:19 +0300)]
Билеты на концерты возвращены

Сегодня выяснилось что в марте, оказывается, все отменённые концертные
билеты были мне возвращены (их стоимость). Честно говоря, удивлён, ибо
ожидал подвоха и того, что фиг кто просто так их вернёт. Что ж, приятно.

3 years agoМем с cancel culture и RMS
Sergey Matveev [Fri, 27 Aug 2021 06:51:41 +0000 (09:51 +0300)]
Мем с cancel culture и RMS

https://stallmansupport.org/images/cancel-culture.jpg
Несколько месяцев назад я бы его не понял, ибо это же кадр из "Житие
Брайана по Монти Пайтону"! (45218d4a135a57f1cfce4ee55b73469eb37fd062)

3 years agoПодъём враждебного-к-пользователю ПО
Sergey Matveev [Fri, 27 Aug 2021 06:35:59 +0000 (09:35 +0300)]
Подъём враждебного-к-пользователю ПО

https://den.dev/blog/user-hostile-software/
https://news.ycombinator.com/item?id=28291478
Статья про то, что на каждый чих нужно установить новую программу,
неизвестно как аутентифицированную. Хочешь, грубо говоря, чтобы новая
мышка работала, то сделай учётную запись в какой-то соцсети/сайте.
Хочешь что-то купить? Неа -- только подписка теперь. Думаешь что сможешь
использовать устройство после покупки? Только пока живы в Интернете
серверы компании.

    * Want to use a dashcam for your car and sync the data to your local
      computer? You need to create an account and connect an app, even
      though you just want to do local sync.
    * Bought a keyboard and want to change the lights on it? Better be
      ready to install some custom-built apps for that vendor and that
      vendor only.
    * Want to monitor the state of your video card and closed-loop
      cooler, all made by the same vendor? There are two apps for that.
      One is digitally signed, another one is authored by Unknown.
    * Update your BIOS? Another app, by another vendor, that for some
      reason requires permissions to access machines on your local
      network.
    * Controlling a number of buttons through a HID device? Another app,
      that always keeps refreshing the list of running processes, and no
      way to disable that functionality.
    * Change the lights on a mouse that is not made by the same vendor
      that the keyboard is made by? Install another app, and while at it
      - you won’t be able to change the colors until you make an online
      account.
    * Disable telemetry? Not a chance - you better be ready to have
      seven layers of defense in /etc/hosts, Pi-Hole, and a custom-built
      DNS + firewall + URL filter + deep packet inspector inside a
      server rack in the basement. I am exaggerating, of course. You
      only need six layers of defense to make this all work.
    * Want to install just one piece of software, and that’s it? You
      have to install an Electron-based “launcher” that will run a local
      outdated Node.js server and open up a bunch of ports for who knows
      what. No reason to just launch the executable - it has to be done
      through a launcher.
    * Want to get data from inside a device onto your computer? Nope,
      it’s not a mass storage device. You need to install another app,
      that will be used just for this one device, to sync things. The
      app inconspicuously asks for location access while at it, and eats
      85% of your CPU at all times, even when idle.
    * If you just installed a new fan in your computer and want to
      control the lights, another software installation for you that is
      completely different from what you use to control the lights for
      the mouse and keyboard, since they’re obviously not made by the
      same vendor.
    * Video driver? No problem - here you go, along with a piece of
      software that is basically one giant ad that sits in your tray.
    * Before you can use a USB device, you need to install a custom app,
      that talks to some obscure remote server to confirm… something?
      And only then the device is functional. Good luck using it in two
      years when this company goes out of business and the servers are
      shut down.
    * Browsing a site through the browser and not the app? Half of the
      functionality is not available, just to force the user into the
      app for no good reason. I just want to read a comment.
    * Want to buy a cooking library tool? It’s a subscription now! So
      instead of paying $40 and using the same version of software for
      10 years, you will spend $9.99/mo, totaling $1,198.80 over the
      same time span, even if you couldn’t care less about whatever new
      hyped blockchain functionality was added to it.
    * Downloaded a calculator on your brand new tablet that comes
      without one built in? Surprise - for it to work you need to give
      it access to your contacts, location collected in the background,
      access to your text messages, full access to the photo library,
      and the rights to name your firstborn.

Автор, правда, обзывает всё это нуждами разработчиков, а не
пользователей. Тут я с ним не согласен -- не разработчик решает что и
как будет делать в программах, а marketing, sales, product менеджеры.
Бизнесмены одним словом -- а для них никакой этики нет. Если есть
возможность устроить слежку -- значит они её устроят, без вопросов.

Буквально вчера видел как у коллеги на Lenovo ноутбуке с Windows
внезапно появилось окошечко от Lenovo-софта о том что его надо
перезагрузить для завершения обновления BIOS. Хотя вроде бы пользователь
старался поотключать все эти обновления в системе.

3 years agoПервые недочёты cjxl JPEG XL кодера
Sergey Matveev [Thu, 26 Aug 2021 09:45:08 +0000 (12:45 +0300)]
Первые недочёты cjxl JPEG XL кодера

Не знаю почему, наверное что-то на самом низком уровне кодирования JPEG,
но он не в состоянии транскодировать JPEG-и созданные нашим Olympus
фотоаппаратом. Никаких ошибок, успешные сообщения, хороший код возврата,
но итоговый файл не создаётся. Пока обошёл эту проблему перекодировав
JPEG через jpegtran, который тоже не имеет потерь, но, видимо, делает
"пригодную" для cjxl структуру.

3 years agoGNU Parallel SIGHUP
Sergey Matveev [Thu, 26 Aug 2021 07:38:27 +0000 (10:38 +0300)]
GNU Parallel SIGHUP

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

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

3 years agoЗапуск Ubuntu на Байкале
Sergey Matveev [Thu, 26 Aug 2021 07:30:36 +0000 (10:30 +0300)]
Запуск Ubuntu на Байкале

https://16-bits.ru/%d0%bf%d0%be%d0%bf%d1%80%d0%be%d0%b1%d1%83%d0%b5%d0%bc-%d1%87%d1%82%d0%be-%d0%bd%d0%b8%d0%b1%d1%83%d0%b4%d1%8c-%d0%bf%d0%be%d1%81%d1%82%d0%b0%d0%b2%d0%b8%d1%82%d1%8c/
На Байкале из (47c5f938c14d5484ea4f69130374d33a269a87c8) запустили из
коробки Ubuntu, которая официально его и не поддерживает. После этого я
уверен в светлом будущем AArch64 систем с UEFI, что они сильно поколебят
IBM PC.

3 years agoDJB то не святой, косячит в своём Python коде
Sergey Matveev [Tue, 24 Aug 2021 14:56:19 +0000 (17:56 +0300)]
DJB то не святой, косячит в своём Python коде

http://ed25519.cr.yp.to/python/sign.py
В нём есть вот такая строчка, которая должна чуть-чуть изменить изменить
сообщение и убедиться что функция проверки упадёт:

    try:
        forgedm = ''.join([chr(ord(m[i])+(i==forgedmlen-1)) for i in range(len(m))])
        ed25519.checkvalid(s,forgedm,pk)
        forgedsuccess = 1
    except:
        pass
    assert not forgedsuccess

вот только проблема в том, что если значение последнего байта будет
0xFF, то... при переполнении Python будет ругаться на range(256). При
этом возникнет exception и тест посчитает что мы штатно упали, как и
ожидали. Вот не надо делать checkvalid выбрасывающим исключения, ну вот
зачем, DJB, ты это сделал?

3 years agogodwmstat
Sergey Matveev [Tue, 24 Aug 2021 10:52:47 +0000 (13:52 +0300)]
godwmstat

http://www.git.stargrave.org/?p=godwmstat.git;a=blob;f=main.go
Раз лампочек о дисковой активности нету, то придётся выносить
самостоятельно в status bar dwm-а. Прежде у меня был shell скрипт с
бесконечным циклом и sleep-ом, который вызывал всякие внешние утилиты,
парся их вывод. Но для дисковой и сетевой активности мне хочется
обновления куда более частого, чем 20-30сек. В итоге, взял и вообще
полностью всю эту статистику написал на Go. Python я уже не беру в руки
даже для таких вещей. Вызываются один раз iostat, netstat, top с
указанием что они должны раз в n-секунд обновлять статистику.
Существенно более лёгкая штука должна быть, ибо единственный процесс
который вызывается регулярно, это xsetroot для выставления значения
status bar-а. Выводит (в одну строчку):

    [IO 0/70 0/72]
    [Net 11/6]
    [CPU 53.9 0.8 0.2]
    [29M Mem 38G Active 969M Inact 247M Laundry 10G Wired 13G Free ARC 8866M]
    [FM WG] 2021-08-24 13:55:42

* Кол-во read/write транзакций на диск
* Кол-во входящих/исходящих пакетов по сети
* User, system и interrupt CPU нагрузка в процентах.
  idle и nice проигнорированы
* Данные о памяти, swap (у меня аж 29MB в нём оказалось), размере ARC
* Флаговые файлы (FM, WG)
* Время

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

3 years agoMulticast на Apple устройствах? Только с их разрешения
Sergey Matveev [Tue, 24 Aug 2021 10:35:51 +0000 (13:35 +0300)]
Multicast на Apple устройствах? Только с их разрешения

https://thomask.sdf.org/blog/2021/08/24/apples-bizarre-crackdown-on-multicast.html
Получи разрешение от Apple чтобы отсылать multicast или broadcast. Но я
и прежде слышал что для работы (программирования) со своим собственным
устройством нужно платить ежегодно за разрешение от Apple.

3 years agoКогда сжатие изображений меняет суть
Sergey Matveev [Mon, 23 Aug 2021 21:02:06 +0000 (00:02 +0300)]
Когда сжатие изображений меняет суть

http://www.dkriesel.com/en/blog/2013/0802_xerox-workcentres_are_switching_written_numbers_when_scanning
https://cloudinary.com/blog/what_to_focus_on_in_image_compression_fidelity_or_appeal
https://en.wikipedia.org/wiki/JBIG2#Disadvantages
Из-за косяков софта JBIG2 сжатия, в числах менялись цифры.
И ведь на первый взгляд то даже и не заметишь этого!

3 years agoJPEG XL просмотрщик
Sergey Matveev [Mon, 23 Aug 2021 20:39:31 +0000 (23:39 +0300)]
JPEG XL просмотрщик

https://github.com/alistair7/imlib2-jxl
https://jpegxl.info/
Похоже что я всерьёз буду переходить на JPEG XL. И жмёт хорошо, и
декодирует безумно быстро, и разумно жрёт ресурсов, в отличии от AVIF.
Умеет без потерь конвертировать JPEG (и обратно). И wavelet-ы применяет
для lossless сжатия, которые мне так нравятся. И ограничений виртуально
нет никаких на цвета, разрешения и альфа-каналы. И прогрессивное
декодирование есть. Вообще и JPEG2000 прям хорош и крут по возможностям,
но его поезд точно ушёл, нефиг было жадничать своими отчислениями. А JXL
существенно быстрее декодирует.

А imlib2-jxl добавляет поддержку формата в Imlib2, автоматом и в sxiv
просмотрщик, который я использую. А я страдал от того, что JPEG2000 так
никто и не приделал к нему.