Sergey Matveev [Mon, 18 Oct 2021 19:07:08 +0000 (22:07 +0300)]
LSP code action в Vim
Сегодня не раз использовал :LspCodeAction функционал LSP плагина Vim.
Пишешь printf в котором ошибаешься (точнее меняешь тип переменных) с
форматом. sign показывает что на строке что-то неладное и подсказывает
что "fix available". Code action показывает меню с предложением заменить
%-форматирование на что-то другое. Я не помню все эти флаги форматирования
и не приходится смотреть в документацию.
Sergey Matveev [Mon, 18 Oct 2021 12:24:51 +0000 (15:24 +0300)]
Защита от OOM killer в FreeBSD
https://klarasystems.com/articles/exploring-swap-on-freebsd/
Есть утилита protect, которая выставит флаги для процесса
предотвращающие его убийство OOM-ом. А в rc.conf можно выставить
${name}_oomprotect для запуска демона с этой настройкой.
Sergey Matveev [Sun, 17 Oct 2021 14:37:04 +0000 (17:37 +0300)]
Композитный выход CGA
http://feedproxy.google.com/~r/Old-games-ru-news/~3/Ii5ClqhI9rE/
https://www.youtube.com/watch?v=Hys-wzLcRT8
Вот CGA я вроде бы нигде не застал уже. Изначально (вроде бы) был уже
EGA сразу в 286-ом, ну а позже уже и VGA или сразу SVGA. А у одноклассника
видел MGA (монохромный), на котором я ему смог поднять FidoNet софт.
Sergey Matveev [Sun, 17 Oct 2021 07:57:03 +0000 (10:57 +0300)]
Норвежский лучник убил Andrea "Nebel" Meyer
http://www.hitkiller.com/v-kongsberge-norvezhskim-luchnikom-ubita-andrea-nebel-meyer.html
Мир тесен, никогда не знаешь что окажется среди даже пяти человек.
Sergey Matveev [Sat, 16 Oct 2021 21:10:57 +0000 (00:10 +0300)]
Сходил в театр на "Настоящий Zapad"
https://newteatr.ru/performance/nastojashij-zapad/
https://newteatr.ru/truppa/artists/kalinichev-mikhail
Родителям подарили билет, ну а я за компанию. В целом понравился
спектакль. Впервые вот видел что со сцены в конце раздавали
приготовленные во время представления тосты.
Чаще всего на спектаклях я бывал именно в Новом Драматическом Театре --
всей семье нравится: совершенно не дорого, не далеко, большой репертуар,
а самое главное: маленький зал, в котором, где бы ни находился, всегда
всё будешь видеть хорошо. Ну как с концертами: чем меньше зал, тем лучше.
И я хоть ни капли не разбираюсь в актёрском искусстве, но уже давным
давно понял что самый важный и главный актёр во всём театре это Михаил
Клиничев. Если спектакль с ним, то будет очень круто. Впервые я его
наверное на "12 разгневанных мужчин" увидел -- был очень впечатлён!
Sergey Matveev [Sat, 16 Oct 2021 21:07:12 +0000 (00:07 +0300)]
Лариса Удовиченко -- идеал
https://ru.wikipedia.org/wiki/%D0%A3%D0%B4%D0%BE%D0%B2%D0%B8%D1%87%D0%B5%D0%BD%D0%BA%D0%BE%2C_%D0%9B%D0%B0%D1%80%D0%B8%D1%81%D0%B0_%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%BD%D0%B0
Посмотрел тут в последнее время всякие старые фильмы. И много в которых
снималась Удовиченко. Для меня прям идеал женщины, с точки зрения красоты,
как минимум. И голос и манеры (хотя в фильмах конечно оно разнообразно).
Если Самойлова в "Летят журавли" (3d5048e7f94f04a89cf3a9156d179f83d46ec6c7)
завораживала, то в Удовиченку влюбляюсь.
Sergey Matveev [Fri, 15 Oct 2021 09:25:58 +0000 (12:25 +0300)]
Firefox больше нет в i386 OpenBSD
https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/www/mozilla-firefox/Makefile?rev=1.460&content-type=text/x-cvsweb-markup
Ибо оно требует Rust, а он не может быть собран на этой архитектуре.
Sergey Matveev [Fri, 15 Oct 2021 08:43:34 +0000 (11:43 +0300)]
timeout утилита
https://webzine.puffy.cafe/issue-2.html
Чисто случайно увидел что в OpenBSD появилась простая утилита, которая
грохнет процесс через заданное время. Совсем недавно именно такая мне бы
пригодилась в контексте применения с UCSPI утилитами. Но не догадался
самостоятельно написать.
А минуту назад обнаружил что она из коробки имеется в FreeBSD 10.3. Как
же приятно внезапно обнаружить такие вещи в ОС. В GNU/Linux обычно
регулярно неприятно удивляешься отсутствию то одного, то другого, что
прежде из коробки поставлялось в дистрибутивах.
А ещё недавно услышал про eatmydata утилите, тоже из жанра DJB/Unix-way,
которая на уровне предзагрузки библиотеки (поэтому мне не интересна),
отключает fsync: https://launchpad.net/libeatmydata
Sergey Matveev [Fri, 15 Oct 2021 08:13:55 +0000 (11:13 +0300)]
Hate -- Rugia
https://www.darkside.ru/news/135979/
Новый альбом польской клёвой банды. Не знаю что в них такого особого,
вроде бы просто death/black метал, но нравятся. Да и в живую ведь два
раза был на их концерте.
Sergey Matveev [Fri, 15 Oct 2021 08:05:01 +0000 (11:05 +0300)]
Пользователи NNCP и goredo
В последние месяцы поток информации от пользователей NNCP и goredo вырос
и явно все эти люди используют эти утилиты куда активнее и более
разнообразно чем я. И то и то у меня работает, грубо говоря, ежеминутно,
но с унылыми и скучными use-case-ами и не в таком объёме. Круто, что
творения созданные в общем-то для удовлетворения моих нужд кому то и ещё
пригождаются. Например PyDERASN (или всякие PyGOST/GoGOST) -- лично мне
то нафиг не нужны, ибо вне работы с ASN.1 не встречаюсь совсем.
Sergey Matveev [Thu, 14 Oct 2021 10:38:10 +0000 (13:38 +0300)]
Перепрочитал "Думай медленно, решай быстро"
d34f7a527ac495af1f6a0363b18b8f1041240a89 -- хотелось вспомнить и
освежить кучу интересного в памяти из неё. Не много книг я перечитывал,
но эта точно достойна такой участи.
Sergey Matveev [Wed, 13 Oct 2021 19:32:27 +0000 (22:32 +0300)]
Наручные электронные часы Breadboard
http://www.e-basteln.de/other/watch/watch/
Вот у меня бинарные часы:
https://www.amazon.co.uk/Kerala-Trance-Watch-KTL102B1-Leather/dp/B000P297PC
и они как какой-нибудь Windows/macOS. А эти Breadboard отражают суть
какого-нибудь suckless проекта: ничего лишнего (фи, аккуратный красивый
корпус?).
Sergey Matveev [Wed, 13 Oct 2021 19:02:09 +0000 (22:02 +0300)]
tofuproxy теперь ещё и WARC броузер
http://www.tofuproxy.stargrave.org/WARCs.html
Ещё одна давняя многолетняя хотелка воплотилась в жизнь! tofuproxy
теперь ещё поддерживает загрузку WARC файлов. Идея и формат WARC-ов мне
нравятся, особенно учитывая что их даже GNU Wget умеет создавать. Но вот
смотреть их -- боль. Потому что почти весь инструментарий написан на
Python (ну ещё на Java, но в её сторону не смотрю, ибо тёмный это для
меня мир) и паршивого качества, который ещё и не поставить
(587711a01f7226bc45fa1a59177e5dccb3f61310).
Раз tofuproxy может выступать в роли и HTTPS сервера/прокси, то и
никаких проблем с ссылками на HTTPS ресурсы. Не нужно париться с
переконвертацией ссылок в документах, чтобы броузер долбился по HTTP и
WARC-capable прокси сервер мог бы нормально отвечать.
Посмотрел на несколько WARC библиотек на Go, пару даже использовал, но в
итоге написал полностью свою реализацию по чтению этих WARC-ов.
Некоторые реализации отмечаю потому что они полностью считывают хотя бы
одну запись в память -- если это WARC coursera.org, то в одной записи
легко может содержаться многосотмегабайтное видео. Не гоже. Некоторые
отмёл просто потому что не нравится как написаны, плохой код, где автор
не всё до конца в Go понимает (создавалось такое впечатление). А
некоторые наоборот слишком монструозны. Ну и главное: не все
поддерживают WARC-и в которых записи разделены на сегменты: часть ответа
может быть в одном WARC, а часть уже в другом. И не во всех можно узнать
хоть какой-нибудь offset по которому можно было бы быстро прыгнуть на
нужную запись в файле.
Вот и родилась собственная реализация. Которая поддерживает и .gz/.zst
сжатые файлы, но без возможности перемещаться по потокам этого gzip-а.
Чтобы достать запись из WARC-а, придётся с самого начала его
декомпрессировать. Поэтому лучше конечно иметь голый .warc, пускай и на
сжатом ZFS dataset-е. Но возможно и добавлю возможность перемещаться
оптимальнее.
Через FIFO файлы можно указывать какие WARC-и надо загрузить. Можно
удалить. Можно зайти на http://warc/ и посмотреть список всех известных
URL-ов загруженных из них. Суть работы тривиальна: просто ищем по URL-у
нет ли такого в WARC-ах и, если нашли, то отдавать ответ из WARC-а.
Вполне себе работает отлично на практике.
Конечно же можно индексы, после парсинга WARC-ов, сохранить на диск,
повторно их уже быстро загружая сразу в память. Думал приделать
поддержку CDX индексов (https://archive.org/web/researcher/cdx_legend.php),
но в них нельзя выразить знание о сегментированных записях. По идее не
проблема, но такой индекс уже не универсален, поэтому я просто сбрасываю
в gob формате.
Sergey Matveev [Wed, 13 Oct 2021 18:35:51 +0000 (21:35 +0300)]
Python система пакетов -- неработающее дерьмо
Вчера хотел установить какую-то утилиту для работы с WARC файлами.
Собранным из исходников Py36, создаю virtualenv, и в нём делаю pip
install. Всё "заканчивается" тем, что процесс установки уходит в
полубесконечный цикл: по несколько десятков раз качаются (в логе
GoCheese вижу) всякие пакеты типа setuptools, wheel, tomli, затем,
видимо что-то падает, понижается минорная версия одного из пакета и
снова процесс многократного скачивания пакета.
Час убил на установку некоторых зависимостей чисто в ручном режиме.
Что-то куда-то скопировать, подправить setup.py/pyproject, но дальше
терпение лопнуло. В Py36+PyPI+самые свежие pip/setuptools просто
*невозможно* установить cdxj-indexer, который на момент "Downloading ...
tldextract-3.1.2.tar.gz" делает вот такое с PyPI репозиторием:
[...]
main.go:82: [::1]:10294 get setuptools_scm-6.3.2.tar.gz
main.go:82: [::1]:44433 get setuptools-58.2.0.tar.gz
main.go:82: [::1]:34279 get wheel-0.37.0.tar.gz
main.go:82: [::1]:44433 get wheel-0.37.0.tar.gz
main.go:82: [::1]:44433 get tomli-1.2.1.tar.gz
main.go:82: [::1]:16311 get flit_core-3.4.0.tar.gz
main.go:82: [::1]:16311 get tomli-1.2.1.tar.gz
main.go:82: [::1]:44433 get tomli-1.2.0.tar.gz
main.go:82: [::1]:21041 get flit_core-3.4.0.tar.gz
main.go:82: [::1]:21041 get tomli-1.2.1.tar.gz
main.go:82: [::1]:44433 get tomli-1.1.0.tar.gz
main.go:82: [::1]:60575 get flit_core-3.4.0.tar.gz
main.go:82: [::1]:60575 get tomli-1.2.1.tar.gz
main.go:82: [::1]:44433 get tomli-1.0.4.tar.gz
main.go:82: [::1]:48698 get flit_core-3.4.0.tar.gz
main.go:82: [::1]:48698 get tomli-1.2.1.tar.gz
main.go:82: [::1]:44433 get tomli-1.0.3.tar.gz
main.go:82: [::1]:52645 get flit_core-3.4.0.tar.gz
main.go:82: [::1]:52645 get tomli-1.2.1.tar.gz
main.go:82: [::1]:44433 get tomli-1.0.2.tar.gz
main.go:82: [::1]:36476 get flit_core-3.4.0.tar.gz
main.go:82: [::1]:36476 get tomli-1.2.1.tar.gz
main.go:82: [::1]:44433 get tomli-1.0.1.tar.gz
main.go:82: [::1]:32461 get poetry-core-1.0.7.tar.gz
main.go:82: [::1]:32461 get importlib_metadata-1.7.0.tar.gz
main.go:82: [::1]:25283 get setuptools-58.2.0.tar.gz
main.go:82: [::1]:21853 get wheel-0.37.0.tar.gz
main.go:82: [::1]:25283 get wheel-0.37.0.tar.gz
main.go:82: [::1]:25283 get setuptools_scm-6.3.2.tar.gz
main.go:82: [::1]:32461 get poetry-core-1.0.6.tar.gz
main.go:82: [::1]:32461 get poetry-core-1.0.5.tar.gz
main.go:82: [::1]:32461 get poetry-core-1.0.4.tar.gz
main.go:82: [::1]:32461 get poetry-core-1.0.3.tar.gz
main.go:82: [::1]:32461 get poetry-core-1.0.2.tar.gz
main.go:82: [::1]:32461 get poetry-core-1.0.1.tar.gz
main.go:82: [::1]:32461 get poetry-core-1.0.0.tar.gz
main.go:82: [::1]:44433 get tomli-1.0.0.tar.gz
[...]
Детали уже забыл, но вроде всё сводилось к тому, что tomli не может
поставить (зависимость) какой-то пакет, который требует этот tomli.
Легко установить tomli тоже по старинке уже нельзя, ибо в нём нет
setup.py. В общем, это кирдык. За последние месяцы, 7 из 10 попыток
что-то установить через pip заканчиваются падениями и невозможностями
продолжить (3f45e46b68805f7ae14bfde0032603dda8b79538).
Хотя год назад всякие WARC-related утилиты ставились точно. Единственное
что у меня точно может влиять из настроек: no-binary = :all:. Уже как-то
был случай что пакет в этом режиме вообще не имел никаких альтернатив
для установки. Выходит сейчас без бинарей нельзя использовать всю эту
экосистему? Вовремя ж я всё таки избавился от Python
(b708ac5077078a699b14fcb86a8c2413266a903f).
С момента начала использования tofuproxy уже три раза, заходя и на
заграничные и на российские ресурсы (как крупные, так и простые домашние
странички) на работе и дома, мне выдавали предупреждение о том что по
TLS-у пытаются использовать сертификат совершенно не касающийся хоста.
Чисто технически это MitM. Но я бы понимал что это повторяется на
определённых CDN или доменах, но речь про совершенно разносторонние хосты.
Sergey Matveev [Wed, 13 Oct 2021 18:12:34 +0000 (21:12 +0300)]
Звук в FreeBSD
https://meka.rs/blog/2021/10/12/freebsd-audio/
Ёмкая статья про ситуацию со звуком в FreeBSD. Если коротко, то FreeBSD
давным давно была куда более пригодной для работы со звуком, ибо
маленькие задержки и jitter -- Linux какаха (по собственному опыту помню).
А всякие современные средства типа virtual_oss позволяют очень гибко
самовыражаться. FreeBSD, как и прежде, рулит во многих областях.
Sergey Matveev [Tue, 12 Oct 2021 08:53:49 +0000 (11:53 +0300)]
Redis vs Memcache
https://engineering.kablamo.com.au/posts/2021/memcached-vs-redis-whats-the-difference/
Отличное сравнение этих двух решений используемых в качестве кэша. Вот
так нужно сравнивать ПО, а не по критериям, верно подмеченным в статье,
типа: оно новее, там больше коммитов и всё из этой серии.
И очень важно что подметили медленность кэшей доступных через сеть. Это
жутко медленно. Помню что в ivi поднимали Redis-и на localhost-ах, в
которые реплицировались обновляемые данные -- суммарно памяти, конечно
же, потреблялось сильно больше, зато исчезали огромные задержки.
Memcache я недолюбливал почти всегда. С Redis работал гораздо больше и чаще,
но и использовал регулярно его более широкий функционал и типы данных.
Sergey Matveev [Tue, 12 Oct 2021 07:50:16 +0000 (10:50 +0300)]
AdvanceCOMP пересжатие PNG
http://www.advancemame.it/comp-readme
Эта штука позволила уже прооптимизированную/пересжатую PNG-шку сократить
ещё на треть. Конечно ценой CPU. Screenshot из-за этого у меня получился
меньше по размеру чем JPEG XL, который прежде выигрывал. Но WebP (VP8L)
всё равно ещё на треть меньше. AdvanceCOMP ещё и ZIP-ы может пересжать.
Sergey Matveev [Mon, 11 Oct 2021 19:41:39 +0000 (22:41 +0300)]
Прочитал "Бегство Земли"
https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%B3%D1%81%D1%82%D0%B2%D0%BE_%D0%97%D0%B5%D0%BC%D0%BB%D0%B8
Вот такие научно-фантастические книги готов читать бесконечно! Солнце
спустя много ледниковых периодов превращается в чёрного карлика, поэтому
Землю с Венерой отбуксировали к паре звёздных систем, где придётся
бороться с телепатами трёхглазами. А всё это известно стало после
перемещения тамошнего учёного-правителя во времени в наш XX век.
Не знал, но оказывается действительно существуют чёрные карлики (в теории):
https://ru.wikipedia.org/wiki/%D0%A7%D1%91%D1%80%D0%BD%D1%8B%D0%B9_%D0%BA%D0%B0%D1%80%D0%BB%D0%B8%D0%BA
Sergey Matveev [Mon, 11 Oct 2021 11:41:18 +0000 (14:41 +0300)]
Nergal невиновен в оскорблении религиозных чувств
https://www.darkside.ru/news/135107/
Потому что его посты размещены не публично, а за плашкой с предупреждением:
Содержание, представленное в этом профиле, может оскорбить ваши
религиозные и другие чувства. Если вы не хотите, чтобы это
произошло, перестаньте быть моим подписчиком
Считаю хорошей новостью, ибо так можно большинство рокеров и металистов
понаказывать и пересажать, ибо они обязательно да регулярно много кого
задевают.
А я типа тоже предусмотрительный и с самого начала создания блога
написал что:
I am rather harsh and rude person, so some posts could be unpleasant
for reading, be warned!
Sergey Matveev [Sun, 10 Oct 2021 13:51:43 +0000 (16:51 +0300)]
Воспоминания сотрудника IBM про OS/2
https://habr.com/en/post/188202/
https://habr.com/ru/post/192126/
https://habr.com/ru/post/5397/
К сожалению я с OS/2 мало успел поиграться. Она была, возможно где-то
полгода, на 486-ом, а дальше появился AMD K6-2 и Windows 98 с FreeBSD.
На ней я по сути успел только поработать с FidoNet софтом. Помню что
ни разу не было проблем, зависаний, нестабильностей или чего-то
подобного. Вроде HPFS ощутимо большую производительность выдавала ещё,
плюс никаких потерь при внезапной перезагрузке. Думаю, что это
объективно существенно лучшая ОС, если сравнивать с Windows-ами. HPFS
впечатляет современностью на тот момент.
Sergey Matveev [Sun, 10 Oct 2021 10:32:22 +0000 (13:32 +0300)]
Создание частей в Matroska из DVD
Давно я не играл ничего с DVD образов, но за последние недели аж
несколько появилось -- в BitTorrent это единственное что удавалось
найти. И вроде бы впервые использовал mpv для dvd:// проигрывания.
Сделать MPEG2 дамп через ffmpeg можно так:
ffmpeg -i concat:VTS_01_1.VOB|VTS_01_2.VOB|..." -c copy out.mpg
Получить список частей (chapters) можно через:
lsdvd -x VIDEO_TS > chapters.txt
А дальше сконвертировать этот файл в формат пригодный для mkvtoolnix,
которым их можно добавить к уже имеющемуся Matroska контейнеру:
mkvpropedit --chapters chapters.txt out.mkv
Sergey Matveev [Sat, 9 Oct 2021 18:19:36 +0000 (21:19 +0300)]
Посмотрел "Убить дракона"
https://ru.wikipedia.org/wiki/%D0%A3%D0%B1%D0%B8%D1%82%D1%8C_%D0%B4%D1%80%D0%B0%D0%BA%D0%BE%D0%BD%D0%B0
Очень ржачный фильм! Но и хорошо показывающий чем заканчиваются
большинство всяких потуг и попыток свергнуть текущую власть --
будет только хуже. Ну и людям свобода, как правило (не всегда),
нафиг сдалась (это по смартфонам, соцсетям и проприетарному ПО
и так видно).
Леонов потрясающ! Почти каждая его фраза в этом фильме -- огонь! Он же
и в роли короля в "Обыкновенном чуде" -- единственное что запомнилось.
Sergey Matveev [Fri, 8 Oct 2021 21:06:59 +0000 (00:06 +0300)]
Тестирование Си кода через FFI
https://bronevichok.ru/posts/ffi.html
Надо будет попробовать эту идею. А то, действительно, написание тестов в
Си это тот ещё геморрой в план количества строк кода. Да и в кой да веки
начать пробовать вызывать Си код из Go, где хотя бы даже testing/quick
имеется.
Sergey Matveev [Fri, 8 Oct 2021 19:32:34 +0000 (22:32 +0300)]
Новый GoGOST и gostls13
В прежних версиях gostls13 tls.LoadX509KeyPair не загружал ГОСТовые
ключи и сертификаты: crypto/x509 модуль то их парсил, но уже в самом tls
helper-е switch/if-ы ничего не знали про ГОСТ. Исправил и теперь ГОСТ
вообще без трудностей можно использовать самыми штатными средствами.
Ну и занялся оптимизацией Кузнечика-MGM. А главным образом MGM:
переделав его работу на кручение/верчение пары 64-битных чисел. Если
чистая Си-шная реализация Кузнечик-MGM выдаёт чуть более 5MiB/sec, то
GoGOST показывает более 3MiB. Как-раз чаще всего я видел что на Go
аналогичные программы где-то на треть медленнее, что тут и получилось,
означая что я почти всё выжал что можно было.
3-5 MiB/sec выглядит как-то медленно. Ну... и AES не шибко быстр, если
реализовать его без многих лет научных изысканий по оптимизации. И если
забыть про SIMD и ассемблер. Плюс MGM два раза шифрует (и GF^128 делает
соответственно), что в два раза сбавляет скорости. Но конечно штатно мы
все уже привыкли или к быстрым Salsa20-like шифрам, или SIMD или
аппаратному ускорению.
Sergey Matveev [Fri, 8 Oct 2021 19:11:02 +0000 (22:11 +0300)]
Нобелевская премия мира
https://lenta.ru/news/2021/10/08/dokatilis/
https://lenta.ru/news/2021/10/08/komment/
Солидарен с мнением что премию дали за антироссийскую пропаганду
и (очевидно, это ж "Новая газета") кучу подлой лжи. Но ещё это и
показатель что в РФ со свободой слова всё в порядке, ибо дают
высказываться подобным типам, пресекая только когда переходят
все границы разумного.
Ну а то, что нобелевка мира является просто стыдобищем (как минимум, в
последнее время), для меня лет 10 назад было очевидным, когда её вручали
Манделле (уничтожившим крутейшую страну) или Обаме.
Sergey Matveev [Fri, 8 Oct 2021 11:34:53 +0000 (14:34 +0300)]
Прочитал "Пролетая над гнездом кукушки"
https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%BB%D0%B5%D1%82%D0%B0%D1%8F_%D0%BD%D0%B0%D0%B4_%D0%B3%D0%BD%D0%B5%D0%B7%D0%B4%D0%BE%D0%BC_%D0%BA%D1%83%D0%BA%D1%83%D1%88%D0%BA%D0%B8
Очень понравилась книга! Сюжет фильма, который смотрел не раз, с Джеком
Николсоном который, не сильно отличается и отходил от того что в книге.
Просто многие сценки вырезаны. Полностью вырезано всё что касается
индейца: в книге то повествование ведётся именно от него, с огромным
количеством воспоминаний из его жизни. Во время чтения, Макмёрфи
представляется только Николсоном -- идеально, по моему, играющим
подобные роли.
Sergey Matveev [Thu, 7 Oct 2021 11:02:30 +0000 (14:02 +0300)]
Внешность девушек
https://s00.yaplakal.com/pics/pics_original/6/4/9/16012946.jpg
https://s00.yaplakal.com/pics/pics_original/3/7/2/16013273.jpg
И в реальной жизни в общественном транспорте встречаешь, как говорят
на работе, "тюнингованных" женщин и поражаешься насколько же они все
одинаково выглядят. Причём ни один нейрон бы не сказал что хоть
насколько симпатично -- видно что это такие синтетические существа.
Sergey Matveev [Thu, 7 Oct 2021 09:46:10 +0000 (12:46 +0300)]
Дни рождения
https://habr.com/ru/company/timeweb/blog/581310/
Не ранее 4-го октября родился Айзек Азимов. Не знал что в Теслу,
запущенную в космос, кроме полотенца и "don't panic", положили и
книгу Азимова. Скорее всего самый крутейший и интереснейший фантаст из
всех что я читал. "Большая тройка" из него, Хайнлайна и Кларка --
действительно достойна такого объединения.
Ну и у Путина сегодня днюха. Здоровья ему! Хотя сегодня нашлось что
сказать про него плохое: с ним жизнь стала настолько лучше (после 90-х
то!), что масса людей (молодёжи) массово перестала хотеть обучаться
специальностям, мол и так ведь нормально жить можно. Вот и страдаем от
нехватки специалистов, как минимум, во всех инженерных областях.
Sergey Matveev [Thu, 7 Oct 2021 04:46:19 +0000 (07:46 +0300)]
Сбой "Интернета"
https://habr.com/ru/post/582056/
Недавно увидел что Let's Encrypt шифрует соединения к Интернету
(0cf376851fe0d97b3f8101676c05fa0541b1b27f), а теперь статья про сбой
Интернета 4-го числа... где только на третьем абзаце упоминает что речь
про Facebook. Facebook *уже* Интернет. А я наивно полагал:
Через год Интернетом видимо будет Facebook?
Причём когда в (поза?)прошлом году из-за ошибок BGP ложился Cloudflare
(если не путаю, или ещё какой-то CDN), то это реально было мне заметно:
многие ресурсы были недоступны (речь даже про простые блоги людей). А
вот то, что Facebook, оказывается, лежал, как и WhatsApp и прочее --
узнал постфактум.
Sergey Matveev [Wed, 6 Oct 2021 19:07:28 +0000 (22:07 +0300)]
Изготовление и инструкция по использованию плюмбуса
https://www.youtube.com/watch?v=RkfN5fdiNOA
https://i.stack.imgur.com/b76Y7.jpg
Прежде ещё не читал инструкцию по нему.
Хотя и так ведь понятно как пользоваться.
Sergey Matveev [Wed, 6 Oct 2021 14:15:00 +0000 (17:15 +0300)]
Мой ГОСТ CA и поддержка его сертификатов в godlighty
http://www.cagost.cypherpunks.ru/
В godlighty добавил возможность задания ГОСТ X.509 сертификатов и их
выдачу вместо ECDSA онных, если клиент в ClientHello пришлёт знание о
ГОСТах. То есть, на основе ClientHello будет решаться какой вид
сертификатов отдавать. TLS 1.3 ГОСТ поддерживается и так, если
используется gostls13 Go версия (http://www.gostls13.cypherpunks.ru/).
А мой tofuproxy из коробки тоже сразу говорил на Кузнечике-MGM с
godlighty серверами, теперь ещё и ГОСТ сертификаты сможет получать.
Добавил и CAA и DANE записи дополнительные. Но, конечно, странно иметь
DANE с не-ГОСТ алгоритмом для проверки.
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 наверное
тоже, особенно если думать про энергоэффективность (декодирование
существенно дороже).
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. Ну их нафиг -- ещё и
приватные, касающиеся только гражданина РФ, данные отправлять всяким
козлам, которые даже не могут предупреждать вменяемо о вопросах
возникших.
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-е. Заняло менее часа! Для меня это
качественная разница. Ещё больше доволен железом.
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+-бит на канал!
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-а конечно заставило меня потратить время из-за всех его
кроссов и прочего короткоживущего говна.
Sergey Matveev [Mon, 4 Oct 2021 18:00:52 +0000 (21:00 +0300)]
Бинарные патчи
Так как конфигурация godlighty (bc087ee7e3be4177e83bc39ae3b1497e336ec5da)
вшита в код, а его результатом является статически бинарь под десять
мегабайт, то как-то негоже обновлять это всё прокачиванием кучи трафика.
Впервые в жизни делал бинарный diff. Даже не знал вообще с каких утилит
то начинать. Оказалось, что их коробки в FreeBSD есть bsdiff и bspatch.
Обновление конфигурации или даже добавление кода типа аутентификации
клиента по TLS сертификату -- порождает diff размером в килобайты.
Работает не шустро, но маленький файл приятен, так что стоит того.
Sergey Matveev [Mon, 4 Oct 2021 17:50:52 +0000 (20:50 +0300)]
День злости
На днях приснилось что я гулял со своей первой любовью, которая была
рада мне и всё такое, хотя в реальности была совсем безответная. Жуткое
разочарование когда проснулся, что это не явь. И уже несколько дней
гнетёт что всё же любви то хочется, как ни крути.
Сегодня хотелось побыть с мыслями наедине и полтора часа побродил после
работы по улице. Потом в маршрутке домой ехал. И всё это время без
аудиокниг -- совсем хотелось отдыха.
В самой маршрутке уступил место женщине, но она наотрез отказалась.
Вспомнил старые "добрые" времена, когда женщины от меня как от
прокажённого шарахаются -- вот и сегодня аналогично.
А потом сходил в магазин, где меня попытались обсчитать. Суки. И опять
же, воспоминания о том, что женщины видят во мне лоха конченного и
кинуть меня -- благое дело.
Но во всему этому то привык уже давно, но не нравится что все эти
мысли снова родились и терзают.
Sergey Matveev [Mon, 4 Oct 2021 17:49:43 +0000 (20:49 +0300)]
Посмотрел пятый сезон Рика и Морти
Уже давно. Но сегодня окончательно осознал что всё же это худший сезон.
Некоторые серии прошлых поставил -- ни в какое сравнение! Прям можно
5-ый полностью выкинуть.
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" аналогичные парирования в голове рождались.
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 заголовок к нему :-)
https://github.com/andrewchambers/coolports
Coolports использует (в том числе) goredo для сборки портов. Круто!
Сам не использовал, а узнал только из-за bugreport-а в рассылку goredo.
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
попробовать всю эту логику.
https://vitus-wagner.dreamwidth.org/2276736.html
Опытнейший умнейший человек, но всё равно не справился с установкой
Windows на новом современном ноутбуке. Я уже много лет искренне не
понимаю как люди вообще имеют совесть говорить про дружелюбность
Windows к пользователю -- такое только с сарказмом можно. Уже у
родителей видел что супер-пупер популярные ThinkPad-ы всё равно не
заводятся из коробки и нужно тьму всяких бинарей качать.
Let's Encrypt теперь отвечает за доступ к Интернету
https://lenta.ru/news/2021/09/29/connection/
Ох уж эти журналисты. И ведь они любую информацию подают в таком вот виде.
Сертификат (Let's Encrypt) отвечает за шифрование соединений между
конечными устройствами и интернетом. Его основная задача — защита от
перехвата данных, которые обмениваются гаджеты и компьютеры с
глобальной сетью.
... станет истекающий срок действия цифрового сертификата для
шифрования соединений смартфонов и компьютеров с глобальной сетью.
И ведь за такой лютый бред никому ни наказания, ни вообще ничего не будет.
А ещё я застал время когда Интернетом был "Internet Explorer". Сейчас
ещё нахожусь (вроде бы) во времени где рождение Интернета было в начале
90-х (любопытный факт, ага: Internet Protocol, при этом, появился лет на
15 раньше, как минимум). Через год Интернетом видимо будет Facebook?
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 скачанных вещей).
https://lenta.ru/news/2021/09/29/translator/
Ответ нашего МИД мне понравился: "их можно понять, учитывая десятилетия
экспериментов феминизмом и гендером в США". Тоже, ещё не прочтя это,
возникла мысль что они видимо уже совсем потеряли красивых женщин то у
себя или просто не могут взять их на работу, ибо остальные засудят.
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
https://habr.com/ru/company/ruvds/blog/580168/
Ничего себе, не подозревал что в нескольких километрах от меня, проходят
магистрали оптоволоконные до Москвы, до MSK-IX. Не ожидал что Королёв
хоть каким-то боком с этим связан оказался, как и Ивантеевка с Щёлково,
видимые из окон моей квартиры.
https://habr.com/ru/company/megafon/blog/579780/
Собака оказалась в коллекторе. Перегрызла оптоволокно Мегафона, чтобы
вызвать бригаду для починки и своего вызволения. Хорошо что история
так хорошо закончилась!
https://lists.zx2c4.com/pipermail/wireguard/2021-September/007155.html
https://lists.zx2c4.com/pipermail/wireguard/2018-September/003292.html
Автор не раз повторяет что проблема DPI/цензуры и проблема простого и
эффективного VPN-а -- разные задачи. Поэтому нефиг пытаться встраивать
DPI-resistance в протокол. Солидарен и согласен. Я это называю "гонкой
вооружений", а он "игрой в кошки мышки" -- что вообще более корректно,
действительно.
Для SSD имеет смысл выставлять logbias=throughput для всех dataset-ов.
Это дошло до меня только когда стал использовать NVMe. С logbias=latency,
который по умолчанию, данные fsync-ов будут писаться по два раза. Это
всё сделано было для жёстких дисков, чтобы они могли линейно записывать
ZIL область, без random seek-ов. Для SSD random seek-и имеют такую же
стоимость, что и линейные.
https://habr.com/ru/post/579998/
Пишет статью первокурсник. В корне с ним не согласен. То что им дают
алгоритмы и математику -- могу только позавидовать. Хочешь
программировать? Так какого чёрта ты не сидишь и *самостоятельно* не
изучаешь свой инструмент, свой язык программирования? По моему, должно
подразумеваться что студент сам это обязан уметь делать, чтобы не
тратить на это попусту времени. В МФТИ я слышал что просто ставят перед
фактом, что надо использовать LaTeX -- никто не тратит учебного времени
на его изучение и хотя бы введение. Программист самостоятельно должен
уметь познавать инструменты.
Про английский язык ничего не могу сказать -- ничего не поделаешь, но
без него в ИТ сфере никуда. Должен ли ИТ-институт тратить на него время?
У меня большие сомнения. Хотя наверное странно требовать от студента его
знания. Тут не знаю что делать.
Убивает заключение: "... и у нас появится больше способных
junior-разработчиков". Вот именно: появятся juniour-ы, которые дальше
уже не вырастут, ибо нет никакой "научной" базы, а есть только
практический опыт по несложным инструментам, плюс неумение
самостоятельно разбираться с инструментами. Автор упоминает что в
индустрии есть "frontend, есть backend, есть DS, есть DevOps" -- но их
учат не на frontend-разраба, не на data science, не на devops, а на
программистов-разработчиков, нормальных. Зачем мешать всё в одну
корзину? Ещё и системных администраторов может сюда приплести?
Решил прочитать комментарии. И первым же идёт именно то, что я и хотел
сказать:
Беда, с первого курса не учат говнокодить на джаваскрипте чтобы
можно было идти мидл-фронтендером.
Математика и прочая база полезна всем, кто идет в программирование.
Это дает возможности дальнейшего роста, учит абстрактному мышлению.
Кто-то в это умеет из-коробки, а кому-то нужно учиться.
Универ - это не школа, где все разжоввывают. Это просто список
литературы и критерии дальнейшего прохождения. Так и должно быть.
Учиться нужно самому.
Не хватает знаний английского, чтобы пользоваться инструментами?
Сюрприз, его тоже нужно учить. Как и все остальное.
ответ на него с которым полностью не согласен, ибо человек вряд ли
понимает суть ВУЗов и что они дают:
Простите, а зачем он тогда вообще нужен, если можно самому по
видеокурсам на ютубе и книге в жёлтой обложке учиться?
ну и хороший ответ на него:
Вы путаете высшее образование и профессиональное образование.
Но учитывая количество комментариев, тут много несогласных и много
разносторонних мнений.
https://eax.me/ew4idp-cw-key/
http://keyby.narod.ru/produkt.html#1
Стоят тоже вполне себе нехило. Но и требований к ним, конечно,
поболее чем к клавиатурам.
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.
На выходных решил вспомнить про старые добрые 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
и отсутствие текстур приятно -- максимально сосредотачиваешься на самой
игре и вообще выглядит всё очень продуманным: и спрятаться и распрыжку
сделать и спрятаться то тут, то там.
Есть 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.
Для GoCheese решил попробовать хранить контрольные суммы не в виде
содержимого файлов, а в виде символических ссылок, где будет например
Base64 (494ba450b1c38f4008afdef83dd7043ea5f1ef95). Сконвертировал весь
PyPI state, увидел что размер dataset-а стал только больше. Пошёл
ковыряться в zdb -- впервые его использовал для настоящей задачи
выяснения что же реально сохранилось на диске (прежде им только смотрел
ashift). В общем, небольшого размера данные и так умещаются внутрь
dnode-ы в виде EMBEDDED indirect блока. А содержимое символической
ссылки в ZAP структуре. Но 32-байта займут меньше места чем их
кодированное представление, поэтому и размеры dnode, судя по всему (или
ZAP overhead? не думаю) меньше и данные в символических ссылках тут
только вредят.
Где-то мельком видел что до 60 байт символические ссылки на ext4
хранятся прямо в inode. В UFS тоже встраиваются, если небольшого
размера, в inode. Но на ZFS во всём этом смысла нет.
https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B1%D0%BE_%D0%90%D0%B1%D1%8D
http://trounin.ru/abe84/
Клёвая книга о том, как ненормальный сделал себе убежище на случай
ядерной войны, но в него пробрались посторонние и начались всякие
разборки. Треть книги главный герой провёл с застрявшей в унитазе ногой.
И ещё не в первый раз отмечаю, что японцы иначе смотрят на секс и всё
что с ним связано. Регулярные описания женщины в обтягивающей юбке очень
мне близки!
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, то парсинг упадёт и будет
использоваться урезанная версия, с небольшой потерей метаинформации.
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 отключили, а для другого банально нет никакой
спецификации и масса противоречивостей.
Позвонили тут:
- Здравствуйте, это компания Ростелеком, вы согласны выслушать нас минуту?
- Здравствуйте. Нет, не согласен.
- Вы знаете, это действительно займёт не больше пары минут.
[кладу трубку]
За пять секунд их минута превратилась в пару минут :-).
В freebsd@uafug.org.ua рассылке на сплошные русскоязычные сообщения в
треде появилось на украинском. Я конечно понимаю что домен .ua и вообще
это UAFUG, но раз видно что участники, как минимум этого треда, пишут на
другом (потому что там не только украинцы), то сильные сомнения что
автор явно хотел поучаствовать конструктивно. Обязательно кто-нибудь да
появится с политикой, эх.
https://lozga.livejournal.com/250676.html
А вот кому-то этот новый фильм (508fdfb05db44271b0ec2b679cbc5f34948d567c)
понравился и его даже могут рекомендовать. Очередной раз когда понимаешь
что о вкусах не спорят и нефига слушать мнение людей о них. Кому-то и
"Сильмариллион" заходит, кому-то и "Хроники Амбера" с "Войной и миром".
https://vgiv.livejournal.com/91914.html?nojs=1
Всё так автор написал, именно, куда не попади, бездумно и пихают слово
"блокчейн" в самые несуразные места. Что для меня сразу резко понижает
мнение о компетентности автора который бы применял этот блокчейн к
своему творению.
http://lists.cypherpunks.ru/archive/nncp-devel/2109/0366.html
Пишут что использовать зависимости из tarball-а не гоже. Нужно их
оформлять в виде внешних пакетов. Я бы тут что-то матерное написал,
но сдержусь. Я понимаю местами откуда корни этого могли бы расти,
но по моему идиотизм это требовать для Go, где вообще буквально
коммиты прибиваются. И ещё и статически собираются. Ещё и в tarball
в vendor директории всё предоставлено и даже Интернета не требует для
сборки. Я бы точно не стал заниматься опакечиванием своих проектов для
Debian -- мягко говоря, чересчур много геморроя, возрастающая сложность
понимания что же конкретно запускается/собирается у пользователя.
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-го" дали премию ФСБ (я и не знал
что такая есть). Актёр он великолепнейший! И именно в этом фильме его
игра просто незабываема. В самой главной сцене фильма, апогее развития
истории, я наверное с открытым ртом сидел, скованный напряжённым моментом.
https://youtu.be/b2MzYWmnqgQ
На четырёх часах начинается почти трёх часовое выступление Столлмана.
Прослушал полностью на фоне. На мой взгляд отличное и актуальное: ибо
мало кто, насколько вижу, понимает важность лицензий. На кучу вопросов
с листочков ответил.
Где-то он там сказал что ему проще забить на просмотр фильма вообще,
насколько бы он хорош не был, если это потребует использовать что-то
несвободное. Несколько минут назад написал про фильм Дюну и мне тоже
проще вообще пожертвовать кинематографом бы было -- не настолько это
важная часть жизни (в отличии от книг). Ну и сериалы идут нафиг, если
это не законченные части.
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-го года, но не
ожидал что настолько.
Вообще кинематограф уже достал двигаться в сторону сериалов и
многосерийных фильмов. Всё делается чтобы наше время удерживать как
можно дольше. Для меня сериалы это почти некое табу -- мне пофиг
насколько он хорош или нет, но я хочу чтобы моё время тоже уважали. Я
ничего против не имею какого-нибудь "Назад в будущего", где каждая часть
это законченный фильм в целом.
Увидел тут фразу, намекающую на то, что я хороший программист:
A good programmer is someone who always looks both ways before
crossing a one-way street. -- Doug Linder
Я действительно отмечал про себя, переходя такие улицы, что рефлекторно
всё равно смотрю в обе стороны. И отмечал что многие другие смотрят
только в одну сторону (бывают и те, кто вообще не смотрят, но таких не
жалко). Ну как так можно? Мало ли что там написано, мало ли какие
правила, мало ли кто тут прав, а кто виноват, мало ли что и как должно
быть: всегда обязательно найдётся мудак которому или насрать или он
просто проявляет человеческую природу регулярно ошибаться. Лучше
перебдеть, ведь речь о жизни.
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 приводят, практически вырождающийся в готовый тест.
gemini://gemlog.stargrave.org/
http://www.sgblog.stargrave.org/
Gemini мне не нравится (559781a8756ad1b6362a8228970cec7f5ac901a2), но
just-for-fun решил добавить поддержку выдачи на нём в свой движок для
блога. Точнее теперь это движок для: blogging (HTTP), phlogging (Gopher),
gemlogging (Gemini).
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
уже не было никакого из коробки.
Уже писал в 3260fdb2b1f29236fc703587d32d1160d58d8563 о диссонансе когда
в письмах читаешь "доброе whatever", хотя регулярно оно не соответствует
тому что я вижу за окном. Не понимаю зачем это писать, неужели люди сами
письма не читают? Или изворачиваются "временем суток", одинаково подходящим
всегда? Зачем такое приветствие вообще применять?
Хотел было сказать что это можно применять в real-time общении, типа чатов.
Но вот увидел в одном IRC "good evening" -- а всё потому что чувак из США.
Так что и не в каждом real-time упоминание времени суток было бы разумно.
https://minnie.tuhs.org/pipermail/tuhs/2021-September/024417.html
Если бы не популяризация динамической линковки, то Docker бы не взлетел.
Звучит логично и правдоподобно: со статической линковкой нету ада
библиотечных зависимостей. Ещё один камень в сторону динамической линковки!
К Docker у меня исключительно негативное отношение.
У меня была стойкая уверенность что 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 и говорят про плохую поддержку железа :-)
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
Понравился в целом. В очередной раз Лукьяненко показывает как человек
попадает в мир компьютерной игры. Лёгкое приключенческое чтиво.
Обновил SATA M.2 120GB SSD-шки на зеркало из NVMe M.2 1TB. Моя старая
FreeBSD без проблем со всем этим заработала, как и её EFI загрузчик. Во
время resilvering-а ZFS отъела 80% от всех моих CPU. Нехило! Зато всё
заняло десятки секунд. Кроме стремительных ZFS/dd скоростей на глаз
больше ничего не заметил в плане useability -- видимо у меня и так всё
было настолько шустро (не даром же я за сотни миллисекунд при запуске
команд бился не раз) что уже глаз разницу не видит. Ну или, само собой,
всё уже упирается в CPU.
Увидел тут барабанный кавер на одну из композиций 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, где довольно однообразно). А то куда
ни посмотришь, то везде отмечаешь что раньше так просто не играли на них.
https://habr.com/ru/news/t/578062/
И меня радует решение суда! Задолбали ограничивать людей по способу оплаты.
Ну а прикрывания "рисками распространения коронавирусной инфекции" я уже
знал что будут использовать.
https://lists.zx2c4.com/pipermail/wireguard/2021-September/007050.html
Это плюс к 75b9e20d001866c8535b06e6a5cb01322fa7252e. Всё же неожиданно
быстро (с моей точки зрения) Интернет уничтожают. Причём то не только у
нас. Людям он не нужен -- компании и гос-ва просто удовлетворяют желания
людей. Но демократия штука ужасная, как минимум вот за счёт того что
уничтожаются чудеса света, за счёт мнения большинства.
Я вот всерьёз задумывался не раз, что если VPN/BitTorrent (ну и DNS
"родной") заблокируют, то вот что мне делать то в этом Интернете? Кроме
тем связанных с программированием (Github, который @#$ даже по IPv6 не
пашет) у меня вроде бы остаётся только переписка по email, почтовые
рассылки (почти полностью в read-only режиме, мало где пишу чего). Пока
не могу осознать сильно ли я на нём (Интернете) завязан. Так то у меня
стойкое ощущение что 99.99% людей используют его только в смартфонах,
мобильных устройствах, SmartTV каких-нибудь -- в общем так, как я ни на
йоту не затрагиваю весь этот проприетарный софт, цензурируемые
централизованные облака и всё такое прочее. Даже BitTorrent,
действительно, удел малого количества людей -- наслышан что многие даже
безлимитный кабельный Интернет дома не ставят, мол n-гигабайтного
мобильного тарифа хватает за глаза.
Ростелеком предложил блокировать публичные DNS серверы
https://lenta.ru/news/2021/09/14/google_block/
Что-то у меня никак не укладывается как "устойчивый доступ" вообще может
коррелировать с "запретом доступа". Вроде бы любой запрет это в любом
случае какая-то потеря, лишение связанности. "Лишние" серверы могут "наш
Интернет шатать"? Или у них речь про то, что Google/Cloudflare это более
дальние hop-ы, не подконтрольные напрямую нам, поэтому их использование
может навредить? Может. А блокировка для того чтобы форсированно
заставить использовать близлежащие hop-ы Ростелекома? Где ничего не
зашифровано и цензуры тьма?
Ну и как всегда, журналисты такое понапишут!:
[...] реализован протокол DoH, который позволяет зашифровать вэб-трафик
так, что операторы не видят, к какому ресурсу обращался абонент [...]
что просто являются ложью, ибо ни HTTPS, ни DNS-over-HTTPS не отменяют
факта слива доменного имени через SNI (ни намекают на то, что будет
использован ESNI или ECI).
Лучшее объяснение почему функциональные языки -- отстой
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, а как математик с абстракциями.
https://pypi.org/stats/
У меня вроде бы полный срез PyPI был 2018-го года, занимавший 943 GB.
Или bandersnatch (что меня бы не удивило) паршиво отработал, или за
последние пару лет, как минимум из-за одного только TensorFlow,
занимающего более терабайта, оно выросло на порядок. Впечатляет и ужасает.
Оказывается в этом просмотрщике можно инвертировать цвета просто нажав
Ctrl-R (ну или выставив recolor в конфиге). Явно überfeature. Можно не
ломая глаз о белый фон читать документы. В Xombrero из коробки можно "s"
командой применить CSS-ку которая тоже всё делает тёмным. Выходит что
вообще всё у меня можно иметь в dark-mode.
На работе коллеги не раз говорили про усталость глаз. И это люди много
работающие с Word-ом. Ужасался что нельзя там просто так взять и сделать
тёмные цвета.
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.
https://en.wikipedia.org/wiki/Tcl
Сегодня написал хоть немного, но уже похожий на настоящую программу Tcl
код для tofuproxy. А то всё просто вызовы Tk-widget-ов для отображения.
Пробежался по tutorial языка. Очень мне в нём всё нравится! Ожидал что
обнаружится какая-нибудь бяка неприятная или в целом всё сложнее. Пока
всё в нём понимаю, диссонанса не возникает, всё логично и приятно даже
просто по синтаксису и названию функций.
В 82badc3e6648eef0e3c839c80035c18ab24f36de RMS говорил что в Tcl нету
списков и поэтому это вовсе не настоящий язык. Судя по тому, как в нём
созданы массивы (array, который на самом деле ассоциативный массив, хэш
в понятии Perl) и словари (dict, типа тоже самое что и array, только
является честным значением которое можно передавать в процедуры), то и
списки в языке, видимо, появились позже. Лень изучать его историю. Но
всё имеется. Не хуже Perl. Печально что не он в GNU мире занял нишу. Мне
он гораздо ближе и понятнее чем Scheme/Guile и вообще вся эта функциональщина.
https://en.wikipedia.org/wiki/Satyricon_(band)
Во время 7b773fe4abd3d613cf6165b48f237281a49e980a обнаружил что у меня
вообще на диске нету Satyricon-а. Ознакомился за последние два дня с
ними. Один из самых попсовых блэк металов что слышал, но заводной, можно
и родителям поставить. А башкой под него самое обо бы было потрясти!
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■■
│ л ┌────────────────────────┐ ┌────
Кавер "Day Everything Became Nothing" на "Fuel For Hatred"
https://www.youtube.com/watch?v=X1coXvftIGU
https://www.youtube.com/watch?v=pRK3jjeF2zI
Любопытно послушать как чисто black metal (в плане звука) композиция
звучит в чисто грайндовом исполнении.
Почитал "Тринадцать загадочных случаев" Агаты Кристи про мисс Марпл
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) -- вот это детектив, так
детектив (да и другие книги Дойля).
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).
Журналисты, честно и качественно выполняющие свою работу, не могут
являться чьими-то агентами, потому что в их профессии по определению
заложены принципы объективности и всестороннего освещения проблем, а
значит, они действуют исключительно в интересах своей аудитории.
Видимо, получается, почти нет журналистов "честно и качественно"
выполняющих свою работу, ибо уж чего чего, но об объективности и
всесторонности у журналистов речи и быть не может. А бессовестную и
бесстыдную ложь могут только журналисты плести, как правило.
Хотел было сказать, что врать могут только иноагенты (их то задача это
вливать кучу дезинфы и лапши на уши), а не настоящие нормальные
журналисты, но... когда я вижу статьи на технические темы, где я хоть
что-то бывает понимаю, то ужасаюсь.
Но закон об иноагентах я поддерживаю: все, кого он причисляет к ним,
очевидно являются компаниями с только одной задачей -- дестабилизировать
страну, буквально сделать мою (и миллионов других граждан) жизнь хуже.
Типа такие преступники, но которые пока формально ничего не преступили и
не нарушили, ручки чисты.
Добавил ещё пару Tk окон для ввода данных HTTP Basic авторизации, для
выбора клиентских TLS сертификатов. AVIF транскодирование (одно название
команды всего-то поменять надо было). Хоть опыта с Tcl не было совсем,
но мне нравится всё что я вижу в tutorial-ах, понимаю я этот язык. Давно
его хотел пристальнее поизучать, но всё откладывал, да и задач даже на
Tk не было. А тут под руку.
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
С одной стороны, есть масса забавных моментов. С другой стороны, или на
грани, или переходя грани, показываются и убийцы миллионов, да и наши
вожди. К концу так вообще у меня ощутимая неприязнь из-за сортирного
юмора. В целом не понравилось, неприятное впечатление, хотя первые части
книги ещё ничего вроде бы.