Sergey Matveev [Sat, 14 Nov 2020 20:50:44 +0000 (23:50 +0300)]
Mike Fraser
http://mikefrasermix.com/credits/
Этот человек создал наверное четверть вообще всех альбомов что у меня на
жёстком диске! Только одних AC/DC пять штук! У некоторых и звук свой
неповторимый -- например группа Septicopyemia обращалась к чешскому
чуваку что сводил альбомы Jig-Ai и звук у них получился именно таким же,
чешским горграйндовым, как и должен быть!
Sergey Matveev [Sat, 14 Nov 2020 20:34:08 +0000 (23:34 +0300)]
Сборка redo проекта в отдельной build директории
В 401c0f635a1cdfb01068a48a4cdf40791d3db458 писал про полную нормальную
замену autotools redo целями. apenwarr/redoconf по многим причинам мне
не нравится, но он умеет делать (даже заставляет) отдельные, независимые
от кода build-директории. Я у себя нашёл как это реализовать: банальный
и простой shell-скрипт который просто делает иерархию директорий и
жёсткие ссылки на файлы исходного кода. Полностью воссоздаются
директории (find+mkdir, find+ln): conf doc examples src tests, а также
копируется эталонный config файл (с -i опцией, чтобы не перезатереть
ненароком) и базовые {all,install,clean}.do цели. Отрабатывает быстро,
место в общем-то не занимает весь этот исходный код. Ни одного .do файла
не правил. Можно сказать что просто весь проект я жёсткими ссылками
переношу, ну и ладно. Зато теперь я с разными опциями (точнее конфигами)
могу параллельно напересобираться для проверок.
Sergey Matveev [Sat, 14 Nov 2020 13:17:10 +0000 (16:17 +0300)]
Замена autoutils redo системой
https://redo.readthedocs.io/en/latest/cookbook/redoconf-simple/
В моей C программе всё усложняется конфигурация сборки: есть
опциональные библиотеки, есть выбор методов/библиотек, появилась
зависимость между некоторыми переменными конфигурации. Если выбран метод
использования криптографии из библиотеки YYY, а не XXX, то всякие
XXX_CFLAGS=${XXX_CFLAGS:-`$PKG_CONFIG --cflags xxx`} исполняться не
должны. Их можно просто закомментировать, но это ручной труд. Добавлять
массу if-ов в сам конфиг (который обычный shell файл) -- тоже плохо,
хотя в нём уже есть hardcoded вещи типа добавления -pthread если
включено использование pthread mutex-ов. Плюс пользователю нужно явно
задавать pkgconf/pkg-config команду например, хотя она может быть
определена сама. Некоторые команды (plantuml, dmalloc) опциональны. В
общем или существенно усложнять простой config, который выглядит просто
как какой-то .ini файл, либо... что-то придумывать.
Определение команд, определение наличия библиотек (у меня опциональные
libtai, dmalloc, libtap например) -- всё это отдельные изолированные
друг от друга задачи. Между ними могут быть зависимости, как например
$CRYPTO_CFLAGS зависит от флагов конкретно выбранной криптобиблиотеки.
Раньше config содержал вереницу переменных внутри которых были вызовы
pkgconf, которые запускались все последовательно. Всё это (отдельные
задачи, зависимости между ними) явно задача для системы сборки!
Я помнил что в apenwarr/redo реализации есть redoconf -- штука которая
как-раз для замены ./configure ада, в которой можно набросать отдельными
файлами всякие детекторы. Я по сути взял из неё идеи, но саму
использовать не стал. Во-первых, там намёки на GNU Make. Во-вторых, она
банально просто где-то падала и не работала у меня -- что-то не так в
shell-скриптах. В-третьих, это полноценный такой framework, с кучей
библиотечных shell функций и обёрток -- требующий и изучения и уже не
такой и прекрасный как redo, не привязанный к языкам или чему-то
подобному. В-четвёртых, там очень много делается через создание shell
файлов с соответствующими костылями для всякого escape-а данных.
В-пятых, там подход заточен чтобы делать один большой и жирный compile
скрипт, содержащий все CFLAGS/LDFLAGS/LDLIBS для сборки целей. Я же у
себя для каждой конкретной .o-цели явно задаю и управляю какие конкретно
опции и флаги передаются -- чтобы лучше понимать что от чего зависит.
Но основную идею я заимствовал. Если программа использует $CC, то можно
сделать вот такой детектор, который учитывает и переменные окружения:
можно добавить зависимость от цели учитывающей изменение переменных
окружения (0676a1348e8ffe14a7840c8699d3afdc6857e24c) и учитывать не
поменялось ли значение самой цели:
проверка наличия redo-stamp чтобы работало под реализациями без этой
команды -- всё будет работать, просто изменение переменных окружения не
заставит пересобираться (если системы не основаны на хэшах, конечно же).
Программа которой нужна cc команда:
redo-ifchange ../conf/cmd/cc
read CC < ../conf/cmd/cc
$CC ...
Сделать более сложные цели для определения команд, возможно с выводом в
stderr о том что команда не найдена и будет использоваться пустышка --
тривиально. Раньше у меня всё глобально зависело в целом от конфига и
переменных окружения (его касающиеся). Теперь команды сборки
документации зависят только от cmd/makeinfo, cmd/plantuml (который
подставит пустышку, с предупреждением, если настоящий не найден) и
изменение cmd/cc не повлияет на пересборку документации. Плюс для сборки
некоторые .o файлов нужны знания о PCSC библиотеке, добываемые через
pkgconf. Для других .o файлов нужен LibreSSL, тоже через pkgconf. Обе .o
зависят от разных conf/flags/{crypto,pcsc} флагов и поэтому вызовы
pkgconf-а могут быть распараллелены. Определение наличия и
работоспособности libtai библиотеки делается через сборку (прямо внутри
conf/flags/tai) временного файла с C кодом, но знание о $TAI_*FLAGS
нужно только при сборке log.o файла -- пока он дожидается сборки и
проверки наличия libtai, множество других целей уже успеет собраться,
так как они не зависят от conf/flags/tai.
Многие .o зависят от криптографических библиотек. Но им без разницы
какая именно библиотека будет использована. Поэтому я использую общие
$CRYPTO_*FLAGS, значение которых зависит от выбранного метода
криптографии:
тут и зависимость от конкретной pkg-config реализации и возможность
переопределения SSL_* и выхлоп просто в виде трёх строчек в файл.
Библиотеке которой надо использовать CRYPTO_*:
redo-ifchange ../conf/flags/crypto
read CRYPTO_CFLAGS < ../conf/flags/crypto
# или
{ read X ; read X ; read CRYPTO_LDLIBS ; } < ../conf/flags/crypto
Подход с read-ом мне люб тем, что не надо париться с экранированием и
генерированием валидного shell-кода. Изначально у меня был lib.rc с
библиотечными shell функциями, но под конец полностью исчез.
В итоге, что я получил?
* возможность лёгкого добавления детекторов как и в autoconf. Сейчас у
меня в проекте 14 conf/cmd и 19 conf/flags (всякие флаги сборки кода).
Плюс с зависимостями между ними
* полное распараллеливание работы этих детекторов
* зависимость конкретных целей сборок совершенно разнородных вещей
(документация, .o файлы, исполняемые, .a) от только нужным им командам
и флагам/настройкам
* при изменении переменных окружения (хочу быстро всё пересобрать с
CC=clang-NEW redo clean install) будут пересобраны только зависящие от
CC цели (например сгенерированный asn1Parser-ом файл .c из .asn1
спецификации не будет затронут). Зависимость только от конкретики
Это всё просто офигенно! Есть небольшой недостаток моего подхода: вместо
"redo-ifchange ../vars ; . ../vars" у меня большее количество
зависимостей и из-за read-а каждое чтение каждой команды/флага занимает
строчку. Но зато чистейший pure POSIX shell, никаких shell фунок
самопальных, отсутствие хаков и возни с экранированием строк, которая
присутствовала раньше (а у apenwarr/redoconf так вообще там целые экраны
кода для этого).
Для того чтобы узнать какие вообще опции можно изменить/настроить в
apenwarr/redoconf -- вызывают отдельные функи "регистрирующие" что у нас
есть на руках. У меня в каждом "детекторе" команд/флагов/настроек есть
возможность влияния на него через переменные окружения или тем что
прописано в config-файле. Де-факто это всегда запись/использование
переменных в виде ${WHATEVER}. Что мешает мне просто из всех .do
навыдёргивать эти переменные?
Почему в одном месте perl, а в другом sed? Так исторически сложилось,
лень переделывать :-). После выполнения, я получу красивый полный
список:
AR ARM_CFLAGS ARM_LDFLAGS ARM_LDLIBS ASN1PARSER CC CFLAGS CLANG_FORMAT
[...]
TAI_LDFLAGS TAI_LDLIBS TAP_CFLAGS TAP_LDFLAGS TAP_LDLIBS TASN1_CFLAGS
TASN1_LDFLAGS TASN1_LDLIBS VERSION
Без описания переменных правда. Но пока все они говорят сами за себя и
должны быть понятны. Для их описания уже понадобится конечно куда-то
зашивать эту метаинформацию, например просто в виде комментария рядом с
переменной оставлять и чуть-чуть усложнённым perl скриптом выдёргивать.
Когда я начал всю эту переделку, то совершенно полностью не был уверен в
результате и вообще будет ли оно того стоить. Превзошло все ожидания!
Единственное чего у меня совершенно нет, в отличии от apenwarr/redoconf
-- возможности работы в отдельной изолированной build директории, что
вообще конечно хорошим тоном является. Пока даже не думал как это сделать.
Можно просто наворотить себе git worktree в отдельных директориях, как хак.
Sergey Matveev [Sat, 14 Nov 2020 08:21:25 +0000 (11:21 +0300)]
Скорость работы LLVM 11 и его инструментарий
Обновился с LLVM 6 до 11. LSP демон стал работать значительно быстрее,
меньше каких-то непонятных warning-ов выдаёт. В 543ea92f9b81c1c8adead550e7ce0cf3cc665240 писал про то, что скорость
прежних задач не должна падать -- тут они справились! А вот всякие
clang-tidy стали работать медленнее... но при этом находят больше
серьёзных недочётов и в (ещё не протестированном) коде нашли утечки
памяти (отсутствие free) и кое где отсутствующие break. За это можно
простить, тем более что оно не интерактивное.
Вообще LLVM/Clang инструментарий очень нравится и насколько понимаю в
GNU GCC нифига подобного ничего нет. И clang-format, который 100%
форматирует весь мой код. scan-build ПОТРЯСАЮЩЕ находящий серьёзные
ошибки, которые и во время ревью человек то нифига не заметит (хитрые
goto/if из-за которых потеряется значение переменной). clang-tidy
выдающий и false positive, но также и полезные вещи типа утечек памяти
или неинициализированные значения. clangd LSP -- как linter отличен!
Куча -Weverything проверок (которые даже в doxygen docstring-и умеют
залезать) и sanitizer-ов, которые в 99% случаев находили некорректности
работы с памятью, переполнения чисел или ошибок из-за их знаковости.
Вовсю моё программирование на C опирается на эти инструменты.
Единственное что я ставил дополнительно это: https://include-what-you-use.org/
С помощью которой я легко корректно и правильно организую include-ы,
ведь задача очень не приятна для человека.
Sergey Matveev [Sat, 14 Nov 2020 08:12:50 +0000 (11:12 +0300)]
Иерархия файловой системы в Unix-like системах
https://cr.yp.to/slashpackage.html
https://jdebp.eu/FGA/slashpackage.html
https://sta.li/filesystem/
Коллега скинул ссылки на очередной предложение от DJB касательно
управления "пакетами". Точнее того, как их можно было бы устанавливать и
размещать. jdebp.eu продолжает идею ещё дальше. Такой подход мне
нравится, безусловно. Плюс /var/service где daemontools смотрит за
демонами. У sta.li тоже видел предложение по куда более простой
иерархии:
/ - the root home
/bin - all executables
/sbin -> /bin # softlink pointing to /bin
/boot - all boot files
/etc - system configuration
/home - user directories
/var - spool, run, log, cache
/share - man pages, locales, dependencies
/include - include/headers
/lib - static libraries for building stuff
/mnt - mount points
/usr -> / # softlink pointing to /
/sucks - stuff that sucks, like ugly gnu library dependencies,
or systemd fake handlers
Которое мне тоже нравится. Но вот менять это в уже готовой ОС, типа
FreeBSD, не стал бы. Оно красивее, правильнее, но стоит ли оно того?
Если делать дистрибутив/ОС с нуля, то стоит обо всём это задумываться. А
так овчинка выделки не стоит -- уж больно много геморроя.
Хотя это ужасно что мы стали жить в /usr и /usr/local директориях, ведь
история говорит что просто у хакера не хватило места в / ФС и было много
свободного на /usr и поэтому он туда начал всякое устанавливать.
Sergey Matveev [Sat, 14 Nov 2020 08:00:02 +0000 (11:00 +0300)]
glibc и memset_s
https://en.cppreference.com/w/c/string/byte/memset
Компилировал недавно свою программу на последней LTS Ubuntu, GCC10.
Отругала меня что ничего не знает про memset_s функцию (безопасная
очистка памяти). Действительно grep вообще ничего не показал. Как же
так? А вот так, действительно, glibc положил на опциональные C11 функции
связанные с security. Даже не самая свежая FreeBSD имеет их у себя в libc.
Я то думал что наконец-то в 2011-ом году догадались стандартизировать
наличие функции безопасной очистки памяти. Сделать то сделали, вот
только в GNU/Linux мире это не реализовано. Когда-то я считал что GNU
софт и библиотеки монструозны по размерам, но при этом чего только не
содержат и богаты функционалам. Теперь вижу что они просто монструозны!
Sergey Matveev [Sat, 14 Nov 2020 07:56:37 +0000 (10:56 +0300)]
Power Up!
https://en.wikipedia.org/wiki/Power_Up_(album)
Вышел новый альбом AC/DC и даже нашёл где его скачать! Хорош ли он?
Слушал перед сном. Когда проснулся сегодня -- до сих пор что-то из него
играло в голове и хотелось его переслушать. В отличии от трёх предыдущих
(20 лет времени) -- в нём уже рок-н-ролльчик, а не блюз, который после
прослушивания у меня ничего не оставлял в памяти. Альбом хорош!
Вот правда сразу же бросилось в уши что он жутко скомпрессирован! Очень
громкий. Но всё же слушать можно, в отличии от Metallica "Death Magnetic".
Sergey Matveev [Sat, 14 Nov 2020 07:46:52 +0000 (10:46 +0300)]
Рекомендации к просмотру xkcd
Сегодня заметил что на сайте xkcd.com есть рекомендации просмотра:
xkcd.com is best viewed with Netscape Navigator 4.0 or below on a
Pentium 3±1 emulated in Javascript on an Apple IIGS at a screen
resolution of 1024x1. Please enable your ad blockers, disable
high-heat drying, and remove your device from Airplane Mode and set
it to Boat Mode. For security reasons, please leave caps lock on
while browsing.
Sergey Matveev [Sat, 14 Nov 2020 07:45:14 +0000 (10:45 +0300)]
musl то требует Linux
http://www.musl-libc.org/faq.html
Я про musl упоминал что штука выглядит хорошей, но ни в коем случае даже
мысли не было чтобы его использовать у себя на FreeBSD. У нас и так
хороший BSD libc. А даже если бы и захотелось, то musl всё равно требует
Linux ядро.
Sergey Matveev [Fri, 13 Nov 2020 09:29:08 +0000 (12:29 +0300)]
Прочитал "Пиратов Карибских морей"
https://www.livelib.ru/book/1000250586-piraty-karibskih-morej-v-riva
С одной стороны получил удовольствие, а с другой как-будто какой-то
бабских роман прочитал, где сплошные интриги и козни на теме любви.
Запомнилось что очень тяжело даётся идентификация героев романа: имена
всюду и везде есть, но вот тяжело мне они запоминаются и я часто только
по контексту понимал кто к кому пришёл. Ну как в некоторых просмотренных
корейских фильмах все на одно лицо.
Sergey Matveev [Fri, 13 Nov 2020 07:54:06 +0000 (10:54 +0300)]
Железо на шаг впереди, софт делает два шага назад
https://fabiensanglard.net/silicone/index.html
Автор пишет что, не смотря на возрастающую производительность
процессоров и железа в целом, на каждую сохранённую железячниками
инструкцию, софт умудрится сделать на две инструкции больше. Меня
впечатлило что автор говорит что раньше Photoshop на SSD грузился
за секунду, XCode запускался мгновенно. А теперь на Ryzen 5 2600 с
M.2 NVMe он уже просто не в состоянии использовать XCode и Photoshop
грузится на 13сек!
Это нормально что raytracer-ы требуют больше ресурсов потому что они
делают более качественную и лучшую картинку. Компиляторы получили всякие
LTO оптимизации, которые тоже ресурсоёмки. Но вот не нормально что
прежние такие же задачи на новом железе выполняются так же долго.
Именно в этом году я конкретно начал замечать и париться об отзывчивости
системы. Я делал это и прежде, но в этом году у меня обострение какое-то.
* Давным давно я выкинул bash, в первую очередь потому что он медленный.
Я уже не вспомню где и как именно, но он тупо просто некоторые чисто
shell вещи умудряется делать так, что я на глаз замечаю задержку.
* Для калькулятора я часто запускал python -- и даже на современных
мощных Mac системах (коллега проверял) "не прогретый" запуск занимает
более секунды! Если мне надо посчитать в калькуляторе что-то, то я,
очевидно, хочу его моментальный запуск! Это происходит не часто,
поэтому к долгому времени запуска я привыкнуть не могу. Я перешёл на
zcalc, а теперь вот на dc в rlwrap в tmux с кучей shell-скриптов
обёртки -- и это работает стремглав, по сравнению с запуском python.
* За последний год я больше работал с Go и не переставал удивляться что
он способен откомпилировать с нуля mumble-сервер, жирный irc-сервер с
кучей зависимостей за считанные секунды!
* Когда я что-то рассматриваю и пробую из плагинов для Vim-а, то
скорость работы (или я замечу задержку или нет) практически на первом
месте. Возясь с LSP увидел что скорость работы Python LSP сервера
такая, что я полностью отключил его, ибо мне проще и удобнее руками
вызывать pylint/pyflake/whatever, а не получать с дичайшей
асинхронностью по времени warning-и, которые уже не актуальны могут
быть. Linting clangd для C работает вполне вполне с достаточной
скоростью и помогает, но вот дополнение методов/функций работает очень
медленно -- автоматику во время набора поэтому отключил. А вот в Go
LSP работает практически со скоростью моего набора!
* Когда я стал использовать redo со всякими pkg-config-ами, то весь
процесс конфигурирования+сборки+установки стал таким быстрым (для моих
проектов, конечно же), что мне почти физически становится плохо когда
я вижу что на моём ноутбуке ./configure выполняется дольше чем сама
сборка. Это проблема configure, но всё же!
* Когда я стал программировать на C, то вижу с какой скоростью всё
способно компилироваться. C++ -- адовейший ад. У коллеги с мощным
компьютером видел сколько собирает Rust программу типа PyDERASN-а --
ещё большее время ожидания, при котором можно прочитать новости успеть
* Недавняя эпопея с статической/динамической линковкой показала
насколько много впустую тратится время *человека* ожидающего запуск
программы
* Texinfo собирает мою домашнюю страницу всё равно секунды, но это на
порядок быстрее чем Python Sphinx. Не то чтобы это критично, но к
быстрой работе команд/задач очень привыкаешь и офигеваешь как в
некоторых проектах дока собирается по несколько минут. Давным давно
для вырезания docstring-ов и их вставки в .texi/.rst файлы у меня был
Python скрипт и при частой сборке программ я бОльшую часть времени мог
ждать только факта самого его запуска. Сейчас у меня быстро написанная
программка на Perl -- работающая просто моментально для глаза (Perl
вообще очень и очень шустрый)
* Буквально ведь всего несколько лет назад, когда в FreeBSD был GCC,
сборка полностью всей ОС занимала меньше (на в разы более слабом
железе) чем сборка сейчас LLVM-а. CMake собирается дольше чем GCC (не
самый последний GCC, конечно же, где вроде как тьма C++ появилось). А
скорость сборки всей системы важна, если бы мы максимально старались
делать статическую линковку (c0de9bbf633b421a57a10db70d6d76b5f195546e).
Сборка Go, начиная с 1.4, занимает суммарно (без тестов) наверное пару
минут на ноутбуке
Отзывчивость системы это life-changing! Это не просто "ну, приятно что
быстрее запускаются", а это именно в корне меняет привычки и работу за
компьютером. Огромное количество людей уходит с жирных IDE на Emacs/Vim
только потому что на их 16GB RAM системах оно всё равно всё тормозит (с
моей точки зрения -- до неюзабельного состояния).
Буквально позавчера я устанавливал Ubuntu последнюю LTS на флешку
(обычную такую дешёвую флешку), чтобы на отдельном ноутбуке поработать с
железом и с ней. В ней так много всего позапущено (без GUI! это server
вариант), что когда мне показали приглашение для логина, то логин занял
более чем минуту, прежде чем я увидел строку shell-а! Каждая, *КАЖДАЯ*
команда имеет видимый и ощутимый lag. На этой же флешке я помню как
запускал FreeBSD с GUI и Firefox-ом -- это была юзабельная система.
Большие лаги я наблюдают когда соединяюсь с удалённым VPS-ками по IPv6,
который идёт через третьи страны -- вот на современных Ubuntu,
запущенных на локальном железе, ощущения похожие.
Я, как программист, часто понимаю, конечно же, откуда растут ноги всего
этого, но нужно же иметь совесть! Отдельная тема это смартфоны и
броузеры (штатные, где ничего не отключено из JS-а) -- где всё медленно
и неспешно, в slow-mode-е. У папы на смартфоне я вижу задержку наверное
чуть ли не на каждый клик (не в броузере, а просто в системе), хотя
другие этого не замечают уже, ибо привыкли. Мне в фильмах всегда
бросалось что любое нажатие по любой кнопочке обязательно должно
открывать окошко/менюшку с анимированным визуальным эффектом. В Mac по
умолчанию когда показываются все текущие окна, тоже анимация их
размещения по экране. В фильмах это ладно и простительно. Но нормальный
человек рехнулся что ли за каждым частым действием ждать десятки/сотни
миллисекунд на свистоперделку, вместо того чтобы от компьютера сразу
получить ответ на свою команду? Знаю что в проприетарных системах этими
анимациями часто скрывают, на самом деле, долгое время запуска/работы,
но ведь не всегда же так.
Насколько мог бы "динамический" IPsec между host-to-host системами
(когда одна из сторон "анонимна" например) помочь с хранением
handshake/state и сократить до минимума лишние round-trip-ы до сервера,
дьявольски увеличив отзывчивость системы (HTTP/2 со всякими TLS session
resumption-ами это и пытаются добиться как-раз). Когда люди хотят чтобы
в каждой сетевой программке была поддержка TLS, то меня это бесит! IPsec
надо развивать, а не эти изолированные TLS сессии. Ведь нет же ничего
чтобы хранило state при запуске lynx, curl, wget, whatever -- наверное
только броузер одна из немногих программ которая долго живёт и может
блюсти уже установленные handshake-и. Life-changing когда я стал
использовать OpenSSH долгоживущие сессии и моментально логиниться на
сервер, а не ждать пока TCP/SSH handshake отработает и вся эта не
шустрая асимметричная криптография (пускай даже и *25519!).
Или вот на работе у нас используется OpenVPN. Под пять секунд приходится
ждать пока он подключится! А ведь ping до сервера вообще показывает чуть
больше 2мс!
На глаз видно насколько медленнее работает SSH или IKEv2 с RSA ключами.
Но это уже ладно -- это тема ни программистов, ни компьютеров. Но пора
активнее начать использовать эллиптические кривые.
Я бы на месте пользователей компьютеров и ресурсов Интернетов люто
ненавидел любого программиста, бессовестного и обнаглевшего!
Sergey Matveev [Thu, 12 Nov 2020 09:35:55 +0000 (12:35 +0300)]
Мужик два года заходил в квартиру через окно
https://lenta.ru/news/2020/11/12/man_seeking_woman/
И всё было удобно и прекрасно, пока к нему не пришла женщина и пришлось
тратиться и ломать замок двери. Жил, не тужил и тут на тебе!
Sergey Matveev [Wed, 11 Nov 2020 17:30:51 +0000 (20:30 +0300)]
Overhead от динамической линковки
http://harmful.cat-v.org/software/dynamic-linking/
http://harmful.cat-v.org/software/dynamic-linking/versioned-symbols
https://sta.li/faq/
В комментарии http://blog.stargrave.org/russian/71870b1510dfc2727093f2767b994b8596f9b163#comment1
я запускал convert, в котором ldd на полэкрана, в течении 165мс. Когда
руками собрал с нуля, то у меня на полтора экрана вывод ldd и утилита
запускается более чем в два раза дольше. Всё таки 200мс это очень и
очень заметное на глаз время, тем более для long-live утилиты.
Когда я только начал в этом году программировать на C, то задавался
вопросом какие библиотеки мне делать (static vs shared). И все хакеры
говорят в один голос о статической линковке. Есть даже целый "stali"
(static linux) дистрибутив, целью которого является только статическая
линковка, musl и всякое такое. В котором много ссылок на конкретные
примеры всяких размеров программ, времени их запуска и тому подобного.
Plan9 и Go -- имеют только такую линковку.
И вот, судя по ImageMagick, я однозачно теперь тоже за статическую.
Во-первых, если использовать всякие -ffunction-sections+-Wl,--gc-sections,
то в итоговом исполняемом файле не останется лишнего кода в виде
неиспользуемых функций. Во-вторых, даже если размер будет и больше, то
он всё равно при этом будет быстро (быстрее) загружаться, что куда
важнее чем место на диске.
Основной аргумент за динамическую линковку у людей: типа если нужно
обновить OpenSSL, то можно только его обновить, не трогая остального. Но
даже я на своей практике с чистой совестью могу заявить что это брехня
только изредка работающая, ибо регулярно *на практике* несовместимости в
версиях библиотеки, которые препятствуют обновлению и по факту
приходится всё равно пересобирать зависимый от неё софт. Да и в чём
проблема пересборки всего что зависит от неё, пускай это даже и libc?
Отсутствие исходников? Не аргумент, ибо они должны быть в свободном ПО.
Проприетарное -- идёт нафиг. Время сборки/пересборки -- а вот это повод
задумываться над скоростью компилирования. C-компиляторы вполне себе
шустрые например. Go -- аналогично, пересобрать ВЕСЬ Go софт, сколько бы
его не было -- вопросы нескольких минут, как мне представляется на
практике. C++/Rust/etc -- теперь я ещё больше понимаю насколько важно
время сборки. А в идеальной и прекрасной системе со свободным ПО (значит
и исходники будут) на C/Go проблем нет никаких. Скорость,
производительность, простота, безопасность (куча ссылок касающаяся
недостатков динамической линковки про безопасность как-раз),
эффективность! Плюс никаких проблем с тем чтобы иметь софт с самыми
разносторонними по версиям зависимостями, ибо они всё равно вшиваются.
Sergey Matveev [Wed, 11 Nov 2020 16:39:59 +0000 (19:39 +0300)]
Линковка ld и порядок -l аргументов
https://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking
Работал я со своей C программой в LLVM/Clang/FreeBSD, работал в
GNU/Linux, GCC 4.x, glibc. А сегодня в современной Ubuntu с GCC10 не мог
собрать её. Упорно ругается что не может найти символы всякие, которые
из библиотек берутся. Беглый поиск "а не бага ли это GCC?" не дал
результатов. Начал тупо перебирать и менять местами все эти -l
аргументы чтобы заработало, ибо надо успеть это сделать довольно срочно.
Но позже нашёл вот статью в которой объясняет как именно обрабатываются
-l, что магии там нет, всё довольно просто. А я просто совершенно не
понимал (точнее подозревал, но в корне не верно) как линковщик работает.
А всё так "сложно" не просто так -- а чтобы быстро работал ld. Можно
указать пару аргументов (--{start,end}-group) и будет работать всегда и
везде, грубо говоря, но с соответствующим performance overhead.
Sergey Matveev [Wed, 11 Nov 2020 11:54:48 +0000 (14:54 +0300)]
Соскучился по Ubuntu
Давно я что-то про неё ничего не писал. Нужно тут собрать одну
библиотеку под неё. Скачал самый последний LTS. После установки, первым
же делом сделал apt install build-essential. Ну разве могло оно пройти
успешно?
[...]
Err:8 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 linux-libc-dev amd64 5.4.0-42.46
404 Not Found [IP: 2001:67c:1562::18 80]
Fetched 38.8 MB in 9s (4,546 kB/s)
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_5.4.0-42.46_amd64.deb 404 Not Found [IP: 2001:67c:1562::18 80]
Ладно, apt-get update починил, ещё и GCC10 стал стягиваться.
Хочу установить libtap, libtai -- apt search по ним ничего не показывает.
Хотя в портах FreeBSD, например, обе имеются.
Sergey Matveev [Wed, 11 Nov 2020 11:45:16 +0000 (14:45 +0300)]
Python Concurrency From the Ground Up
https://www.youtube.com/watch?v=MCs5OvhV9S4
Очень понравилось выступление с живым показом как написать корутину на
Python, без asyncio, from the ground up.
Хоть у мужика и Emacs, но совсем не использует никакого автодополнения
(типа Ctrl-P из Vim), даже в bash всё любит набирать руками.
Sergey Matveev [Wed, 11 Nov 2020 09:31:30 +0000 (12:31 +0300)]
wpa_supplicant оказывается deprecated, как и ifconfig
https://losst.ru/top-5-prichin-ispolzovat-linux-v-2020
Чисто случайно из статьи вот узнал что wpa_supplicant оказывается тоже
уже устарел и вместо него используется wicd. Про него я не помню чтобы
слышал. Насколько ж давно я с WiFi последний раз работал под GNU/Linux!
Sergey Matveev [Wed, 11 Nov 2020 09:27:42 +0000 (12:27 +0300)]
HP почти переплёвывает Apple
https://www.linux.org.ru/news/hardware/15995352
HP удалённо блокирует принтеры, чтобы те не печатали. А ещё даже может
достучаться до них и через особые документы, отправляемые на печать
(чтобы и без Интернета мочь поднасрать). Скупердяйство не знает границ,
как верно заметили. До Apple конечно далеко, но всё равно удивляет эта
черта проприетарщиков.
Sergey Matveev [Tue, 10 Nov 2020 18:28:54 +0000 (21:28 +0300)]
В самолёте попоили собаку
https://lenta.ru/news/2020/11/10/dogplane/
... ну девушка начала оттуда же пить сама. Меня возмущают возмущения
людей :-). Да я сотни раз (тысячи?) так делал со всеми своими собаками,
давая и ложки облизывать, которыми сам же продолжаю есть, и из тарелки
или чашки чего полакать или там мороженое полизать.
Мерзкие пёсоненавистники!
Не забуду как хороша их слюна для заживления порезов/царапин! Был случай
когда я в детстве конкретно ободрал запястье, пришла собака наша, и
давай просто лизать это место. А я на компьютере вроде что-то смотрел.
Потом через несколько минут смотрю на руку -- а там и следа нет!
Sergey Matveev [Tue, 10 Nov 2020 18:15:07 +0000 (21:15 +0300)]
Конкурс красоты в Новой Зеландии
https://lenta.ru/news/2020/11/10/missnewzealand/
... выиграл мужик. Оказывается аналогично было и в Испании.
https://lenta.ru/news/2018/07/03/transmiss/
Там настолько всё плохо с женщинами, что на их конкурсах побеждают мужчины?
Или просто нормальным уже вход запрещён?
Sergey Matveev [Tue, 10 Nov 2020 11:32:57 +0000 (14:32 +0300)]
Тупость в статьях про качественный звук
В одном журнале вот увидел:
Однако теорема Котельникова не дает ясных критериев, какая частота
дискретизации нужна для КАЧЕСТВЕННОГО восстановления звукового
сигнала из цифровых отсчетов. Ведь при частоте дискретизации 44 кГц
на один период сигнала с частотой 22 кГц придется лишь 2 отсчета!
Замените период синусоиды всего двумя прямоугольными импульсами –
вот как искажаются высшие гармоники звукового сиг‐ нала в
аудиозаписях стандарта CD. И лишь низ‐ кочастотные гармоники
воспроизводятся довольно точно, так как на один их период приходятся
десятки‐сотни отсчетов. Отсюда следует, что для качественного
воспроизведения и за‐ писи аудио (например, в профессиональных
целях) нужна повышенная частота дискретизации (96, 192 кГц...) Для
решения этих задач по‐ явились «профессиональные» звуковые платы.
При этом возрос поток передаваемых данных, что потребовало
использовать более быструю шину PCI вместо ISA. Некоторые из этих
плат мы рассмотрим далее.
Автор явно и конкретно не понимает что говорит теорема Котельникова. Он
считает что раз на экране увидел два прямоугольничка (два отсчёта для
22kHz) и они не похожи на красивые синусоиды, то вот так вот всё адски
искажается. В 200bf7ba55111f981e69e8e89b7cfcbf9d539379 я публиковал
ссылку на короткие видеоуроки от Xiph.org, а также там есть отдельное
видео как-раз про прямоугольнички и синусоиды. Прямоугольнички -- по
сути это просто другой способ представления данных, а не тот
электрический сигнал который подаётся (да и нельзя такой сформировать).
И там на осциллографах в видео показывают что эти два отсчёта идеально
передадут оригинальную синусоиду. Теорема Котельникова как-раз и говорит
что этих отсчётов достаточно. Буквально достаточно чтобы передать
информацию.
А большие частоты дискретизации нужны для обработки звука, чтобы при его
изменении терялось из-за округления как можно меньше информации. Особенно
важна глубина квантования. Но для конечного результата, CD более чем за
глаза достаточно.
Sergey Matveev [Tue, 10 Nov 2020 08:27:43 +0000 (11:27 +0300)]
Ctrl-F в режиме поиска
В ced719937ead049475dc5fbb5cb6d51dc5df98f8 писал про Ctrl-F (или q:) для
редактирования истории и текущей командной строки. Но забыл про то, что
аналогично оно работает и для строк поиска ("/", "?"): или Ctrl-F или
"q?" с "q/".
Sergey Matveev [Mon, 9 Nov 2020 19:32:27 +0000 (22:32 +0300)]
Закон Годвина
https://beldmit.livejournal.com/629418.html
https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%93%D0%BE%D0%B4%D0%B2%D0%B8%D0%BD%D0%B0
Не слышал о таком "законе" раньше. С автором (beldmit) полностью
солидарен что если собеседник переходит на мемы, то разговор можно
считать законченным, ибо это мерзкий сарказм. А он в беседе уже не несёт
ни смысловую нагрузку, ни, зачастую, уважение к собеседнику и
используется когда сказать уже нечего. Хотя, я наверное и сам часто
перехожу на него, но я никогда и не был хоть сколько-то приятным в
беседах.
А в Wikipedia есть ссылка на письмо Линуса в GNOME:
https://mail.gnome.org/archives/usability/2005-December/msg00022.html
где он (этим UI нацистам) припоминает что (форсированный) выбор файла
через иконки в миллион раз медленнее чем возможность ввести к нему путь
(особенно автодополняемый). Сегодня я долго боролся с тем, чтобы
грёбаный GDK заткнулся о том что он не может найти иконки для zathura,
ибо она у меня установлена в отдельной иерархии директорий, победив это
выставлением XDG_что-то-там. Яростно ненавидел и ненавижу подходы GNOME.
Sergey Matveev [Mon, 9 Nov 2020 16:36:27 +0000 (19:36 +0300)]
PDF просмотр в табах. XEmbed
https://tools.suckless.org/tabbed/
http://git.stargrave.org/cgit.cgi/dotfiles.git/commit/?id=006a3bcc53de2435426073730ca2de002e93b635
https://specifications.freedesktop.org/xembed-spec/xembed-spec-latest.html
Сегодня меня осенило что ведь можно zathura помещать в табы. Точнее
стоило бы, вроде бы видел что её запускают внутри tabbed. Ибо когда надо
открыть много PDF (потому что надо быстро просмотреть/найти в них что-то,
но не знаешь где именно), то, делая zathura *.pdf, в dwm порождается
много окон, который регулярно помещаются из стэка в главную область экрана.
Вообще это не проблема на самом деле. Тут всё ok. Но у меня давняя
проблема с zathura что при изменении геометрии окна она бывает
"залипает". Или ни на что не реагирует или не реагирует система
рендеринга у неё. И когда окно перемещается из стэка в главную область
dwm, то resize происходит и PDF-ку уже возможно не получится прочитать
из-за глюков zathura. Поэтому я делал for p (*.pdf) zathura $p и
открывая по одной PDF-ке у меня получалось что все окна в главной
области сразу же.
Подумал что одно окно с табами упростит жизнь. До suckless проекта я и
не слышал о XEmbed протоколе X-ов, который позволяет делать
таб-менеджеры и включать в него "детей". Не нужно делать табы в
терминалах или броузерах -- нужно чтобы они поддерживали XEmbed протокол
и за табы будет отвечать внешняя программа, типа tabbed. tabbed имеет
всякие сочетания клавиш для переключения, перемещения, создания
(запуском внешней команды), удаления табов. tabbed можно указать команду
для запуска и ей он сможет передать id своего окна для embedding-а.
Раньше не использовал ничего из этого, так как табы в терминале у меня
tmux-овые, а GUI броузер xombrero сам ими рулит (uzbl, surf не
использую). С zathura это получилось. Вот только... теперь она вообще в
перманентном состоянии "замороженности" внутри tabbed и ничего не
рендерит. Проблема zathura тут стала проявляться 100% времени.
Я смог найти упоминание этой проблемы, но нигде нет намёков на решение.
Но у меня и родная zathura из портов, далеко не самая свежая. А она ещё
и от girara зависит. Пошёл обновлять всё это. Понадобилось ещё и MuPDF
ставить тоже не из портов, ибо этот был не достаточно свежий. Всё это
отдельный квест, ибо никаких привычных configure+make+make install или
redo (:-)!) тут нет. ninja, meson и чисто голые Makefile-ы. В этом году
ещё и не раз видел CMake сборки. Вот зоопарк то развёлся!
Но в итоге всё поставил, и написал скрипт обёртку над zathura который
запускает tabbed если его не нашёл или суёт в уже имеющийся эту zathura.
А на самом деле то мне надо было просто её (+зависимости) обновить чтобы
исчезла бага при resize окон.
Sergey Matveev [Mon, 9 Nov 2020 13:19:33 +0000 (16:19 +0300)]
Ускорение git clone в 100 раз
https://habr.com/ru/post/527116/
Ожидал что вся статья будет посвящена --depth. Почти так, плюс ещё
упомянули стягивание только нужного ref-а. Стыдоба об этом писать целые
статьи (это тема для небольших блогов/twitter-ов). А вот (единственный,
пока) комментарий куда полезнее, намекающий на --reference, который
учтёт наличие локального репозитория.
Sergey Matveev [Mon, 9 Nov 2020 12:33:18 +0000 (15:33 +0300)]
Почему IPsec вместо WireGuard?
В 1d5bc1731a1e8f77fed6e7c60bbdeb9db421a87d написал что всё равно
использую IPsec по возможности. Если забыть про то, что IPsec тесно
интегрирован в ОС/ядро и позволяет делать далеко не только VPN туннели,
то всё равно остаётся вопрос эффективности.
IPsec ESP это отдельный тип IP-пакета, в котором (для AES-GCM) : SPI
(4B) + SEQ (4B) + IV (8B) + padLen (1B) + PAD (0-3B) + NextHdr (1B) = 18
+ 0-3 байта overhead. Причём от IV (вместо него использовать ESN) или
SEQ можно было бы для AEAD-ов где это всё счётчики и избавиться уж, но
стандарты гласят вот так.
WireGuard (из его whitepaper): type+reserved (4B) + counter (8B) + I_m
(4B) + UDP заголовок (8B) = 24 байта. В любом случае чуть больше ESP.
Но, при этом ещё и CRC надо считать в UDP заголовке! Хотя он и не нужен,
ибо и так данные аутентифицируются. Так что даже в теории он любом
случае чуть менее эффективен. На практике парсинг ESP возможно отъедает
и больше CPU из-за if-ов всяких, но это уже вопрос конкретной
реализации, которую можно и упростить/ускорить.
Ну а ChaCha20+Poly1305 для ESP уже есть: https://tools.ietf.org/html/rfc7634
И если мне нужно обеспечить защиту только между двумя IP-адресами, двумя
хостями, то в WireGuard-е пришлось бы шифровать IP-пакеты -- это же VPN,
а в IPsec использовать транспортный режим где внутри ESP будет лежать
сразу же TCP/UDP/SCTP/whatever. Но это конечно вопрос решаемых задач. Но
вот у меня по факту нигде нет туннельного режима IPsec, хотя есть пара
туннелей gif-туннелей между двумя хостами, а в остальном только
транспортные между хостами, чтобы не городить между ними никаких
костылей в виде TLS.
Sergey Matveev [Mon, 9 Nov 2020 10:27:27 +0000 (13:27 +0300)]
Время-вперёд Свиридова
https://ru.wikipedia.org/wiki/%D0%92%D1%80%D0%B5%D0%BC%D1%8F,_%D0%B2%D0%BF%D0%B5%D1%80%D1%91%D0%B4!_(%D1%81%D1%8E%D0%B8%D1%82%D0%B0)
А ещё, когда вспоминал про "трэки vs альбомы" (d0f0adae0afb2d1690b93a924f032582fb19900d)
не упомянул что совершенно не знал про "Время-вперёд" Свиридова. Я до
Олимпиады-2014 считал что мотивчик с трубами это просто такая здоровская
заставка к телепередаче Время. Впервые услышал (почти) дальнейшую тему
этой композиции только при просмотре открытия в Сочи. Офигеннейшая! Да и
только эту "красную" часть открытия я лучшего всего и запомнил,
наверняка из-за музыки.
Sergey Matveev [Mon, 9 Nov 2020 09:25:40 +0000 (12:25 +0300)]
Как автор curl работает с git-ом
https://daniel.haxx.se/blog/2020/11/09/this-is-how-i-git/
Всё банально и ничего особо интересного. Но вот обратил внимание что он
не использует git stash, потому что проще сделать отдельную ветку и в
ней коммит. В принципе то оно конечно верно, без stash жить можно. Но...
как я писал в 3605f863a029ba28f8258bc023f94ef1045b20dc -- огромная куча
команд git-а это сахар просто упрощающий жизнь. Лично у меня stash
использует супер часто. Даже не смотря на то, что у меня алиасы на git
branch (Gb) и git checkout (Gc), я всё равно не смогу делать всё так же
быстро и удобно как с git stash-ом. В котором я кстати только в это году
научился (точнее наконец то задумался) делать git stash push
определённых файлов.
Ну тут у каждого свои вкусы и предпочтения. Коллеги любили делать git
remote update, а я никогда, ибо только git fetch. Многие любят делать
git checkout -b, а я только отдельно git branch и git checkout команды
по отдельности (точнее их алиасы). Опять же, куча команд которые чего
только не умеют делать. git pull делаю только если уверен в результате
(мой remote, состояние которого я знаю) или добавляя какой-нибудь --rebase.
Sergey Matveev [Mon, 9 Nov 2020 07:39:12 +0000 (10:39 +0300)]
Маски-шоу
https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%81%D0%BA%D0%B8-%D1%88%D0%BE%D1%83
https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%81%D0%BA%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B8%D0%BA-%D1%82%D1%80%D1%83%D0%BF%D0%BF%D0%B0)
Глядя на фильмы Чаплина, постоянно про себя вспоминал про сериал
Маски-шоу, который обожал смотреть по ТВ, когда попадал на него.
До сих пор в голове кучу сценок оттуда помню. А озвучка... по ней
сразу передача узнавалась и существенный вклад в забаву именно она
и вносила.
Sergey Matveev [Mon, 9 Nov 2020 07:29:58 +0000 (10:29 +0300)]
Посмотрел "Золотую лихорадку" Чаплина
https://ru.wikipedia.org/wiki/%D0%97%D0%BE%D0%BB%D0%BE%D1%82%D0%B0%D1%8F_%D0%BB%D0%B8%D1%85%D0%BE%D1%80%D0%B0%D0%B4%D0%BA%D0%B0_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC)
Конечно же понравилась! Очень впечатлён сценой с домом на краю пропасти.
Так классно сделано, без каких-либо этих компьютеров! Ну и вот фильму
будет почти скоро как сотня лет, а женщины как играли ради забавы с
чувствами мужчин, так и продолжают в своём духе.
Sergey Matveev [Sun, 8 Nov 2020 16:58:58 +0000 (19:58 +0300)]
Попробовал WireGuard
Я его одобрял, но на деле ни разу не пробовал использовать. Использовал
wireguard-go реализацию и wireguard-tools. Всё собралосб без проблем. С
первого раза всё настроил -- всё заработало, как по маслу. iperf3
показал сильно скачущую скорость, но достигающую 800 Mbps между IPv6
адресами поверх туннеля тоже по IPv6. Для userspace Go реализации я
считаю это отлично. В своём GoVPN я достигал вроде только 700 с чем-то
Mbps. Продолжаю и дальше одобрять этот VPN! Я всё равно по технической
возможности стал бы использовать IPsec (собственно, он у меня везде и
используется), но когда надо пробиться VPN-ом за NAT-ом, то IPsec не
подходит.
Sergey Matveev [Sun, 8 Nov 2020 15:48:27 +0000 (18:48 +0300)]
Посмотрел "Удар головой"
https://ru.wikipedia.org/wiki/%D0%A3%D0%B4%D0%B0%D1%80_%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC)
Ещё один хороший французский фильм. В котором Франсуа Перрена играет не
Пьер Ришар, что непривычно. Показывает что не надо опускаться до уровня
всяких уродов и вести и отвечать им также как и они бы поступали. В
фильме типа они сами себя наказывают. Но то фильм, а в жизни даже с
судами фиг добьёшься справедливости.
Sergey Matveev [Sun, 8 Nov 2020 15:29:20 +0000 (18:29 +0300)]
Посмотрел "Огни большого города"
https://ru.wikipedia.org/wiki/%D0%9E%D0%B3%D0%BD%D0%B8_%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B3%D0%BE_%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%D0%B0
Очень понравился! Оторвать от Чаплина глаз сложно, да как и от красавицы
главной героини. Всё что видел с ним по телевизору нравилось всегда!
Sergey Matveev [Sun, 8 Nov 2020 12:52:10 +0000 (15:52 +0300)]
Ctrl-F в режиме редактирования строки
Пару недель назад коллега поделился обнаруженной в Vim командой Ctrl-F в
режиме командной строки: оно вызывает "q:" окно, в котором и текущая
строка есть, которую можно отредактировать обычным модальным способом.
Часто хотелось отредактировать строку в Vim-е в ":" через Vim :-). Но
явно плохо искал в документации или забивал на это, или вообще
редактировал строку просто в файле, а дальше копировать в регистр и
выполнял его. А Ctrl-F офигенная штука, нужно не забывать про неё, хоть
и не часто требуется!
Sergey Matveev [Sun, 8 Nov 2020 11:21:23 +0000 (14:21 +0300)]
10 простых шагов захождения на сайты в 2018 году
Нашёл в одном журнале:
1. Открываешь сайт.
2. Отказываешься от пуш-уведомлений.
3. Закрываешь уведомление о кукисах.
4. Закрываешь попап с предложением подписки.
5. Закрываешь онлайн-чат.
6. Закрываешь окошко «Ваш город....?».
7. Закрываешь окошко «Не нашли что искали? Оставьте телефон, мы сразу перезвоним».
8. Закрываешь попап «Подпишитесь на наши соц. сети».
9. Извиняешься перед окружающими за свои громкие маты
10.Вспоминаешь, зачем открыл сайт
Sergey Matveev [Sat, 7 Nov 2020 20:13:57 +0000 (23:13 +0300)]
Спешка людей, качество работы, музыка
Недавно критиковал мысль друга, который считает что темп жизни стал
быстрее и времени у людей мало на что стало хватать, поэтому всё нужно
здесь и сейчас.
Не спорю что очень многие стали всюду и везде спешить. Вот только...
кому это надо и кому от этого лучше? Если бы они успевали делать больше
чем "не спешащие" -- ok. Вот только беда в том, что это не так. Людям
нужно узнать ответ на вопрос "почему мой nginx вот тут не работает"
здесь и сейчас в stackexchange/google -- на этот вопрос они, допустим,
получат ответ, вот только ни знаний, ни понимания он не добавит. У них
будут снова и снова возникать аналогичные вопросы, тогда как один раз,
посидев подольше с документацией, пошевелив мозгами, можно впредь все
эти вопросы закрыть. Но о гугл-программистах уже писал: 7cdc4d886c28ff3b454a20f3328c9b6f5ff69036
Почему то очень хочется вставить цитату Пратчетта (хотя может и не к месту):
Дай человеку огонь, и ему будет тепло до конца дня. Подожги
человека, и ему будет тепло до конца его жизни.
Побыстрее пройти курсы, побыстрее пройти tutorial -- всё ведёт к
непониманию и дорогой цене такого сотрудника, который и обманывает
надеждами и ожиданиями, и за которым или переделывать всё надо или
доделывать или помогать постоянно.
С одним коллегой мы лучше других знаем Vim только потому, что когда
понимаем что сейчас что-то явно можно лучше в нём сделать для какого-то
редактирования, то мы остановимся и пойдём искать нужное в документации.
Иногда просто так читаем документацию, какие-то её разделы, ибо
информации много, но каждый раз что-нибудь от отложится в голове.
Встречал людей которые годами пользуются Vim, но, с моей точки зрения,
не намного дальше vimtutor ушли. Оно конечно уже всё равно эффективнее
чем блокнот/nano/whatever, но чем больше познаёшь инструмент, тем больше
понимаешь и ценишь как он экономит наше время. Можно сразу после школы,
а то и недоучившись пойти работать, а можно ещё несколько лет потратить
на обучение и получить базу знаний которая будет фундаментом до конца
жизни, стоящего этих лет.
Во всем конечно нужно знать меру -- постоянно обучаться и
совершенствоваться и читать всё на свете, готовиться ко всему что
придумается -- так можно и до конца жизни ничего и не начать уж делать.
Делом тоже нужно успеть заняться. Кто-то долго проектирует, потом не
успевает реализацию сделать. Кто-то слишком мало проектировал и плохо
продумал то, что уже успел реализовать, а потом будет расхлёбывать и
мучиться с этим поделием.
Недавно с отцом говорили о гитарах и музыкантах и есть известный факт
что многие хотят и мечтают стать рок-звёздами (ok, мечтали, раньше --
теперь мечтают рэп-звёздами или это уже тоже вышло из моды?), особенно
гитаристами, но только мало кто, особенно будучи подростком, понимает
что знание трёх аккордов и умение фигачить как Ангус Янг -- разделяет
гигантская пропасть. Все эти наши великие гитаристы всю жизнь, грубо
говоря, каждый день часами пилят и пилят, пилят и пилят одно и то же.
Это колоссальное дрочево, колоссальный труд. У большинства людей
терпения на это не хватит. А видят люди только получившиеся сливки их
работы -- концерты и выступления. Запись альбома может длиться
относительно недолго, типа арендовали сколько-то раз студию, записались,
потом отдельно где-то это всё сводится. Но перед этим годами пилят и
пилят одно и то же. Папа то у меня играл в ансамбле на гитаре и до сих
пор дома её в руки берёт. А я пробовал научиться, даже ноты научился
читать (сейчас то конечно уже забыл), но понял что я не настолько хочу
играть, ибо это чёртова прорва времени нужна и терпения.
Но профессиональная ИТ тема уже обмуслёкана много раз. Для меня это
факт: спешащая молодёжь, контролируемая ответами гугла -- дороже
обходится всем, сколько бы она не пыталась побольше и побыстрее сделать,
ибо качество плачевное, зачастую труд вообще не стоящий начинания. Но и
по жизни у них, как мне представляется по рекламе/фильмам, вдалбывающим
спешку -- быстрая еда, быстрый секс, быстрые решения. А быстрые решения,
чаще всего, необдуманные. Предварительные ласки и ухаживания, всё равно
закончатся тем же сексом, с тем же результатом, вот только эмоций и их
сила не в сравнение больше.
Идёшь куда-нибудь, пересёкся на улице со старым знакомым. Ты рад ему,
многое хотел бы расспросить, но зная что у вас около полуминуты времени,
ибо вы оба имеете дела, ты не будешь задавать вопросы о жизни и прочем,
кроме чисто для галочки. Ты бы мог за полминуты узнать как и где живёт,
где работает, женат ли, есть ли дети, всё такое прочее, но вот так вот
шустро полученная информация будет сродни допросу. По хорошему можно
договориться о встрече в обстановке без ощутимых временных ограничений.
Тут можно было бы как-раз и сказать: вот, все всюду спешат и свободное
время -- роскошь. А я скажу что это люди себе (точнее СМИ) вбивают что
они как-будто такие занятые. По хорошему можно прям сейчас на улице было
бы оторваться от похода в магазин или какому-то запланированному
посещению инстанций, но они никуда не убегут, а вот с другом/знакомым ты
уже возможно не пересечёшься. Уверен что мало кто когда пожалел бы о
таком спонтанном забивании на дела, ради разговора с другим человеком.
Нам вбивают эти ценности спешки, которые не дают ничего полезного в
жизни, разве что чуть более скоростное перемалывание дел в обществе
потребления, где выгода будет только производителям, где спешащие люди
ими не являются.
А вообще хотел написать про музыку. Сегодня вот упомянул про Peccatum и
Starofash группы. И особенно у Starofash есть много длинных композиций.
Пять минут может идти медленная полу-унылая мелодия, а потом что-то
забойное. Даже в black метале типа Funeral Mist есть трэки за 10мин. И
вот я подумал что ведь все эти спешащие люди в принципе не стали бы
слушать такую музыку. Её не поставят по радио, ибо можно было бы
проиграть в три раза больше трэков, между которыми вставить рекламу. На
работе с коллегой выяснили что в целом (в основной массе) люди перестали
слушать альбомы. Они слушают единичные трэки. Этот же коллега тоже
альбомы не слушает. Почему то в блоге об этом не писал, но что несколько
лет назад, что сейчас я считаю что половина рок-музыки которая у меня
есть: по настоящему воспринимается только прослушивая целым альбомом.
Когда-то я был просто шокирован прослушиванием альбома Pink Floyd "The
Wall". Все знают и все слышали основной трэк с детским хором из него. И
я лет 20 его знал и слышал. Но как-то дома, вроде папа, поставил
полностью этот альбом. К этому трэку очень долго всё подходит, но оно
настолько хорошо с ним сочетается, что у меня точно были мурашки по коже
от ощущений! Можно сказать, что я за 20лет слушания -- впервые его
услышал и прочувствовал!
Gorguts "Colored Sands" (fc345478530d9a9161fa81f9ecabdec6aa876d40) --
если с него поставить сразу "Enemies Of Compassion", где сразу бойкое
рубилово, то... не, удовольствие конечно получишь, бесспорно, но не
такое как если бы перед этим играл симфонический "Battle Of Chamdo"
трэк. И тем более не такое как если перед ним все остальные четыре
трэка. Это совершенно разные уровни впечатлений!
Есть много альбомов (какой-то от Flying Colors, какой-то от Fredrik
Thordendal, да тот же Pleiades' Dust от Gorguts) которые можно считать
одним большим трэком. Да, какие-то части нравятся больше, их можно
переслушать, но они не могут восприниматься отдельно от всего
остального. Если бы на альбомах Starofash вырезать унылые пианино,
оставив вокал Ihsahn-а с электрогитарами... это уже совершенно не то.
Тоже имеет ценность, но не такую, не с такими сильными ощущениями.
Ещё в школе один друг спросил почему на "Secret Of The Runes" Therion-а
два последних трэка на альбоме (кавер на "Summernight City" ABBA и
Crying Days) помечены как "бонус", разве на других релизах альбомов их
нет? Блин, да ведь там все они объединены одной общей тематикой,
(Ginnungagap, Midgård, Asgård, Jotunheim, Schwarzalbenheim, Ljusalfheim,
Muspelheim, Nifelheim, Vanaheim, Helheim), а тут внезапно появится ABBA?
Наборы медленных и быстрых композиций создают общую атмосферу. На
переходах сильнее всё чувствуется.
На концертах стараются давать разогрев! Бывают концерты без него, и
вроде бы и группа которую годами ждал, и играют здорово, но ты не
накачан энергией. На концерте люди как конденсаторы -- без заряда
колбаситься сложно начать. А ещё в самом начале концерта нужно тупо и
привыкнуть ушами к звуку. А ещё когда выступление группы начинается, то
куча людей передислоцируется кто подальше от сцены, кто поближе и это
отвлекает. Поэтому я считаю ОЧЕНЬ круто что Rammstein в прошлом году
(смотрел только видео) вышли с каким-то вообще медлячком заупокойным.
Я к тому, что больше ощущений, эмоций от жизни получается когда есть
ожидание (там где надо), когда есть с чем сравнивать, когда есть время
на "накачку" энергией, когда есть время на длительные ласки, вместо
быстрого пятиминутного секса, когда есть время на обдумывание решений.
Здесь и сейчас это синоним -- не думай о последствиях, оторвись. А
отсюда и наркоманы, оторвавшиеся в своё время. Залётные дети от
родителей у которых и чувств то друг к другу не было никаких, кроме
быстро удовлетворённой похоти. Это общество потребления -- где думают за
тебя рекомендательные системы и "гуглы". Где тебе не дают времени на
принятие решений, потому что вот прям здесь и сейчас могут что-то
оформить или сразу же дать товар (ещё и со скидкой).
Повторюсь что во всём нужен баланс и мера. Быть нерасторопным и
медлительным тоже наверное плохо. Шустрая молодёжь наверное побольше
успевает попробовать... что можно быстро попробовать. Но вот например
как минимум половины рок музыки люди уже не в состоянии воспринять и
получить непередаваемые эмоции, ибо альбомы люди не слушают (а я с
трудом вспоминаю когда я отдельно трэк то себе ставил, не говоря про
shuffled проигрывание). Безусловно отдельным трэкам и сборникам есть ещё
какое место в жизни! Много мест где музыкальный фон бы не помешал, но
времени всего 15мин например. Или я вот поставлю далеко не каждый
альбом, если знаю что меня могут прервать (куда-нибудь пойти), отвлечь и
всё такое (лучше не слушать, чем оторваться от прослушивания, пускай
даже в фоне пока пишешь код -- это как не кончить: лучше даже и не
начинать тогда).
Пускай у меня относительно редко появляются новые альбомы или знакомства
с группами, но, я считаю, зато получаю больше эмоций и впечатлений.
Доступность, частота -- обесценивают общение, секс, да и всё что угодно.
Я вот в прошлом/этом году смотрел сериалы разные и у меня возникала
пустота когда он (или его сезон) заканчивался. Сильное желание
продолжить второй сезон или ещё чего начать смотреть. А если потерпеть и
подождать, то желание и пустота пропадают и ты рад что не стал убивать
время этой сериальной жвачкой. Лучше редко, да метко. Реже что-то
посмотреть, но качественнее. Ведь в целом достойные фильмы ой как не
часто появляются.
И по жизни у меня как-то двояко получается: с одной стороны я против
спешки именно в жизни. Если я весь в работе, но мне позвонила мама
предложив пойти с ними погулять по нашему королёвскому парку, а я
разозлён от того что я только начал, только вошёл в раж и работа идёт
как по маслу -- но с годами я понимаю что общение с людьми (близкими)
сильно ценнее. Именно с близкими, друзьями, родственниками, возможно
коллегами. В этом году я понял что (@#$%!) без отдыха, но не выходит
работать, можно выгореть. И это будет дороже чем... если бы не выгорать
и своевременно например отдыхать (по ivi я помню, что доходил до такого
состояния что или разосрусь так что меня обязаны будут уволить, или...
меня директор просто насильно, похоже очень хорошо понимая людей,
выгонял в отпуск, после которого всё нормализовывалось). С другой
стороны я всегда быстро хожу, ненавидя неспешное передвижение людей,
ведь какой-то толк тратить время на перемещение? Мне доставляют почти
физические страдания наблюдения за тем, как люди медленно редактируют
текст (плохо зная редактор или не используя эффективный редактор
(+возможно клавиатуру, променивая эстетику на эффективность)). В меня
вселяется бес когда я вижу как на смартфонах людей или в броузерах с
JS-ом еле-еле неспешно загружаются и подгружаются с крутилками и
свистоперделками анимированными их сайты. Сейчас меня вообще много что
бесит, особенно когда вот юзаешь go, C, redo, Ethernet (вместо WiFi,
который вижу у других людей). Возможно я просто всё смешал: работа
работой, а общение/развлечения это уже другое, а обучение так вообще
третье.
Но если брать эффективность клавиатур/редакторов, то некоторые говорят
что они много думают, но мало набирают. Ok, допустим, и моя специфика
работы другая. То что надумал -- надо ещё в сотнях и тысячах строк кода
оформить. Мне не раз говорили что я много пишу текста (письма там)
потому что могу, потому что клавиатура тактильная. И любой большой
текста значит написан "ещё одним с тактильной клавой". Тоже возможно
верно и возможно мне не стоит изливать мысли потому что могу, а лучше бы
пошёл спать в час ночи (сейчас) и было бы больше проку :-). Но в целом,
считаю, спешка мало чего хорошего даёт. "Поспешишь -- людей насмешишь!"
Есть места где стоило бы (не ждать например полдня другого самолёта,
потому что пару минут кто-нибудь не удосужился поднапрячься и поспешить,
раз проспал), но в целом в жизни спешка полезна только изредка.
Постоянная -- приводит к гугл-программистам и отсутствию кучи эмоций,
переживаний и ощущений.
Есть правда и действительно нагруженные по работе люди, на которых всё
взвалено, всё от них зависит, и т.д.. Но это же тоже проблема, что нет
больше никого, что ни на кого нельзя передать нагрузку. Вообще мне бы
было приятно что от меня что-то важное бы зависело (значит я чего-то да
стою), но всему нужна мера и рано или поздно ноги человека подкосятся
под тяжестью и всем будет дороже его потеря работоспособности. Но это
скорее речь про заменяемость людей: незаменяемым быть лестно и приятно,
но в целом всем окружающим это очень дорого. Поэтому хорошие
руководители должны избавляться от незаменяемых людей (в том плане, что
они должны передавать опыт/знания/умения, делать всё чтобы
минимизировать фатальность их ухода/потери/наглости). Вот только где
найти им замену/подмену...
Sergey Matveev [Sat, 7 Nov 2020 13:17:18 +0000 (16:17 +0300)]
RPi400 как старый добрый Спектрум
https://martinpeck.com/blog/2020/11/06/Raspberry-Pi-400/
Тоже в детстве подключал Спектрум к телевизору и магнитофону. Вот только
у нас был не красивенький встроенный в клавиатуру, а отдельная коробка с
разъёмами от космических аппаратов, к которой отдельно клавиатура
подключалась.
Sergey Matveev [Sat, 7 Nov 2020 09:56:52 +0000 (12:56 +0300)]
Заценил Peccatum и Starofash
https://en.wikipedia.org/wiki/Peccatum
https://en.wikipedia.org/wiki/Starofash
https://www.youtube.com/watch?v=xkYQXS4_R-E
На одном альбоме Ihsahn-а заинтересовался что за женщина поёт. Оказалось
что его жена, с которой у него даже совместный проект Peccatum. А потом
у неё свой Starofash.
В целом оба проекта понравились. Много правда есть унылого и неспешного,
особенно у Starofash, где даже по пять минут нет ни одной электрогитары.
Но я успел даже по два раза все альбомы прослушать. Ибо есть пять минут
уныния, а потом что-то клёвое и забойное.
Ну а Ihsahn вообще офигенный! Всё что с ним не слышал -- всё очень
здоровское и достойное! Emperor, сама его группа Ihsahn (выступление
которой в живьём не забуду, особенно мрачнейший The Grave впечатлил) и
вот эти ещё две. Плюс в скольких он проектах не подпевал как гость --
всегда голос узнаётся. Альбомы самого Ihsahn я за последние дни
переслушал по несколько раз. Причём у него же вот и совсем спокойные
есть (с выступления в Москве): https://www.youtube.com/watch?v=zuS_bj3N2mc
но и тот же Grave: https://www.youtube.com/watch?v=1Mrc9za28Ck
Sergey Matveev [Sat, 7 Nov 2020 09:08:18 +0000 (12:08 +0300)]
Команды git-а: worktree, subtree
https://blog.meain.io/2020/bunch-of-git-stuff/
Показаны примеры применения относительно новых команд worktree/subtree.
Первую я на практике использовал несколько раз -- есть случаи когда
реально полезно и удобно с ней. Но запросто у человека может и не
возникнуть надобности в ней. subtree не использовал, и вот с ходу пока
даже не могу представить когда бы понадобилась лично мне (так то в
статье есть примеры).
Вообще если бы я не знал git, то судя по статьям/рассылкам/блогам вряд
ли бы к нему подступался, ибо только ленивый не говорит что он дико
сложный и не понятный. Это также подтверждалось постоянно и на работах,
где люди с трудом въезжают в него. Да и если объективно прикинуть, то
достаточно посмотреть на git reset: что делает эта команда? Чего только
не делает! git checkout? Аналогично! Ну или я (до сих пор), как минимум,
не в состоянии коротко и ясно сказать для чего они. Они много для чего и
это увеличивает порог входа.
В ivi из-за плохих пониманий git-а (точнее применимости и допустимости
некоторых практик) некоторым командам запрещалось делать git cherry-pick
или rebase-ы, особенно интерактивные. git -- мощный инструмент, но
который в "плохих" руках может и вредить. Защиты от дурака в нём не много.
У меня никогда не возникало проблем с git-ом. Во-первых, мне никто
никогда с ним не помогал -- весь путь его "познания" проходил сам (с
коллегами). Во-вторых, мне кажется я использовал его фичи только после
их познания/узнавания и у меня не возникало потребностей в том что не
знал. Возможно просто везло, а не как новичкам приходящим в команду и
которых сразу бросают в пучины git rebase. Плюс мне кажется что на меня
снизошло какое-то озарение после прочтения:
http://www.ftp.newartisans.com/pub/git.from.bottom.up.pdf
после которого git выглядит чрезвычайно простой штукой.
git в целом и есть простая нехитрая и незатейливая штука. В нём немного
примитивов и действий как таковых. Просто десятки команд это помощники
для разных ситуаций. Это сплошной сахар. Одно и то же действие в git
можно выполнить, зачастую, тьмой разных способов (наборов команд). У
людей даже разные привычки как и что выполнять, хотя результат будет
один. А возможно и не один, но в одном случае будет какой-нибудь
конфликт в файлах, а в другом уже нет. И всё это создаёт сложности
(видимость), но на самом деле никакой магии нет.
Я не использовал ни Mercurial (только hg pull/clone), ни Bazaar, ни Arch
(на который вроде как и забили), ни Darcs. Читал про них. Mercurial
выглядит чище и проще, не является нагромождением всего и вся
раскиданным и пересекающимся в разных командах. Но про него от очень
опытных пользователей, которые и хорошо умеют git, наслышан про его
негибкость и сложности делать относительно сложные вещи. Для новичков
Mercurial, насколько понимаю, хорош, но для людей которые чётко понимают
что хотят сотворить с историей коммитов -- он будет занозой. Просто
наслышан о таком мнении от самых разных опытных людей, которые в итоге
переходят на git.
А ещё отдельная боль с git-ом это Github. Точнее проблема с людьми,
упорото считающих что git и Github это синонимы. Github закрывает
репозитории? А, нам всем конец, всё пропало, как жить дальше!? Только
ленивый не напоминает в комментариях всяких ресурсов что git как бы
децентрализованная система.
В общем, git штука с большим порогом входа, в том числе из-за неряшливых
команд, но очень мощный инструмент. И из-за своей мощности (возможностей
тасовки и вообще работы с коммитами) он стоит изучения/использования.
Можно не знать и 90% всех его имеющихся команд и их опций и отлично жить
с ним.
Sergey Matveev [Fri, 6 Nov 2020 15:45:16 +0000 (18:45 +0300)]
Синхронные и асинхронные коммуникации на работе
https://habr.com/ru/post/526754/
Во-во-во! Все точно и по делу сказано! И БЕЗУМНО печально что многие
люди не понимают всего написанного. И крайне удручает когда на работе
вместо асинхронных методов становятся популярны синхронные, ведь это же
(@#$%!) так удобно, так быстро и шустро все стали отвечать красотке Оле!
А ещё удручает когда молодёжь, по жизни не пользуясь асинхронными
методами общения, и не умеет, и не понимает и не знает как использовать
тот же email/tracker. Или использует tracker "на отвали" чтобы там
надоедливому менеджеру завести всё же тикет, вот только при этом он ещё
и сразу напишет в синхронном общении о том что он сделал тикет. И
полностью поддерживаю основную мысль:
Самая важная мысль. Асинхронная коммуникация -- это прежде всего
уважение ко времени и планам, а также ко вниманию и сосредоточенности
коллег.
Хотя конечно есть и крайности этого подхода, когда можно неделями по
неспешной, уважающей окружающих, почте ни к чему не приходить и долго
мусолить. Иногда бывает надо и полезно собраться синхронно всем
пообщаться. И тут тоже крайность часто бывает: регулярные собрания с
кучей воды и болтовни не по делу или когда есть много людей которых не
касается обсуждаемый вопрос. И ладно бы потерпеть 5мин, если бы они
длились столько.
Sergey Matveev [Fri, 6 Nov 2020 08:34:24 +0000 (11:34 +0300)]
Посмотрел "Чапаева"
https://ru.wikipedia.org/wiki/%D0%A7%D0%B0%D0%BF%D0%B0%D0%B5%D0%B2_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC)
Кроме фильмов Чаплина, даже не вспомню что я ещё настолько старого смотрел.
Фильм очень понравился! Очень необычно сейчас такое смотреть -- совсем
по другому постановка сделана. В начале то так вообще просто небольшие
сценки, как бы не связанные между собой. Треть фильма я как-будто уже
знал, ибо столько фраз узнавал! А развязка фильма, с концом Чапаева,
сделана так коротко и быстро! И если в этом фильме она занимала,
допустим 30-40% (ну так, на память/на глаз) фильма, а всё остальное это
набор очень смешных сцен, то в современных фильмах бы на смешное
оставили 20%, дальше 60% времени медленно и угрюмо бы показывали
неспешную нагнетающуюся развязку, немного action-а, а дальше ещё минут
15 все бы горевали и грустили под унылую музыку. А тут -- пострекотали
по плывущему Чапаю и сразу титры. Но очень много смешного и забавного в
нём -- это запоминается!
Sergey Matveev [Fri, 6 Nov 2020 08:28:57 +0000 (11:28 +0300)]
gu в Xombrero
В Xombrero броузере есть "gu" команда, которая переходит на URL на
"ступень выше" -- отрезает слово до следующего слэша. Очень часто
хочется отрезать больше чем один слэш, например когда я в каком-то блоге
на "://.../whatever/2020/01/02" и gu меня бросит на "://.../whatever/2020/01",
потом на "://.../whatever/2020", и т.д.. А часто бывает так, что перейдя
по уровень выше, тебе сделают редирект снова на низлежащий уровень. И
мне приходится уже "O" командой редактировать ссылку, backspace-ом
удаляя нужный кусок URL-а.
А вчера у меня какой-то нейрон сказал голове "а что если добавить
число перед gu, как в vi можно же для кучи команд добавить число". И
действительно "3gu" сразу откидывают до трёх уровней. Почему мне эта
идея в голове не приходила столько лет и сколько времени я терял на
ручное удаление?! Ну или почему я так плохо читаю доки?
Sergey Matveev [Fri, 6 Nov 2020 08:22:01 +0000 (11:22 +0300)]
Обновление matterircd
Обновил локальный matterircd: мост между Mattermost (который у нас на
работе используется) и IRC клиентом.
Пока возился с обновлением, смотрением как какие опции конфига влияют на
поведение, заметил что MM в целом очень не прочь потерять сообщения. Раз
в несколько месяцев но выясняется что какие-то сообщения я не видел и их
реально нету в логах irssi. А выясняется когда точно известно что что-то
посылали или точно на что-то ждёшь ответа. Причём matterircd использует
прям буквально ту же самую кодовую базу что и сам сервер MM. Так что MM
вообще не гарантирует доставки.
Но обновлённый мост добавляет трёхбуквенные hex-префиксы (XXX) к
сообщениям и пишет какое именно сообщение было отредактировано, удалено
или на какой тред это ответ. Прежде он писал в скобочках полностью всё
цитируемое сообщения треда, которое могло быть огромным и частенько
глазами просто было не понять где находится само сообщение написанное
пользователем. Плюс если добавить "@@XXX", то можно явно сказать что это
идёт ответ на определённое сообщение.
s/XXX/ позволяет удалить своё сообщение, а s/XXX/new text --
отредактировать. Но там нужно самостоятельно высчитывать номер *своего*
сообщения и у меня это плохо выходит и мне логика не всегда понятна их
нумерации (как-будто даже какой-то баг).
Sergey Matveev [Fri, 6 Nov 2020 07:04:04 +0000 (10:04 +0300)]
Почему я считаю man-ы плохим форматом документации?
Мне казалось что об этом писал в блоге, но что-то с ходу не нашёл.
man-ы мне в первую очередь не нравятся тем, что в них нет ссылок и
возможности перехода по ним. Напишут "смотрите EXAMPLES", и вводи
"/EXAMPLES", а ещё лучше с не забывать "/^EXAMPLES". Напишут смотреть
другой man, и снова делать это всё руками. А как открыть man сразу на
нужной секции? Штатного способа не предлагают. Хотя можно и сделать хак
в виде: man -P "less +/^EXAMPLES" ...
Другое дело info! То самое, что является единственным и основным
форматом документации в GNU. Оно уже структурировано, имеет ссылки. По
сути это уже гипертекстовый документ/формат, куда раньше появившийся чем
HTML. Можно одним вызовом (-n опция) прыгнуть на нужные ссылки/ноды.
man для простых и коротких команд, чисто классических по идеологии Unix,
ещё терпимо, так как зачем им ссылаться на что-то, ведь команда
выполняет свою чётко заданную работу. Но огромных программ тоже не мало.
Один GnuPG чего стоит (но у него и info есть (собственно, man-ы в нём из
него делаются)). А вот когда речь про документацию на библиотеку (C), то
без ссылок жизнь не мила. Один man perl содержит *только* ссылки на
несколько десятков других man-ов, как и man zsh содержит ссылки или иди
в zshall.
info ещё приятен тем, что он сам по себе human-readable формат, который
можно и без дополнительного ПО прочитать. man не читабельный, но его
формат всё же достаточно прост для простых утилит -- да и кто когда-либо
жаловался на то, что он не может прочитать man? Идеология вызова
каких-нибудь eqn и tbl процессоров (в дополнении к troff) мне нравится
даже больше чем жёстко отрендеренный info. Но, так как на практике это
всё равно всё смотрится в терминале, то желания перерендерить не
возникает -- is good enough.
Как альтернатива info мог бы выступать HTML, который тоже из терминала
можно смотреть текстовыми броузерами. Но, если каждую ноду выносить в
отдельный .html, то нельзя будет искать по всей документации к
программе/библиотеке! А в .info можно по всей. Делать одну большую
.html-ку решает проблему, но её будет неудобно читать, но это уж можно и
потерпеть.
А если документация просто огромна? .info позволяет разделять её на
отдельные файлы:
где в головном .info есть ссылки на -[12], динамически подгружаемые
файлы по мере надобности. С .html такой возможности нет (если только не
терять возможность поиска). .info же делает это просто автоматически.
В общем случае .info позволяет и картинки встраивать (точнее ссылаться
на них, в отдельных файлах), но я видел работоспособность этого только в
Emacs графическом.
По мне так это прям чуть ли не идеальный формат для документации. Ok, на
самом деле Microsoft CHM тоже выглядит как в теории хорошая
альтернатива, если бы конечно не была проприетарной. Это и HTML, который
может быть перерендерен как надо (или в терминале смотришь, или в GUI на
4k мониторе), и ещё и сжат в одном bundle-е, и ещё и поиск по нему
возможен. С обычным .html, в принципе, тоже никто не запрещает
использовать grep по файлам, но удобно ли это? Но готовых решений для
.chm просмотра (с поиском) мне не известно чтобы написали, тогда как
.info существует уже больше тридцати лет (судя по Wikipedia, ссылающейся
на ITS Emacs, почти 40 лет).
Но .info ещё нужно и чем-то создать. Штатно предлагаемый GNU Texinfo это
отдельный формат мне так нравящийся!
* Писать руками .man -- небольшого размера ещё терпимо, но в целом
увольте этим заниматься!
* Писать HTML от руки можно, хотя и не очень удобно читать его исходный
код. Но терпимо, но всё же не даром не многие на нём пишут напрямую.
* Markdown -- полностью не признаю этот формат. Ибо НЕТ такого формата!
Есть только с десяток (больше?) разрозненных малосовместимых между
собой диалектов. И я уже десятки раз видел как кто-то даёт "markdown",
но именно моим процессором оно не обрабатывается. ОЧЕНЬ небольшое
подмножество будет работать гарантированно везде. Настолько небольшое,
что мне в принципе оно не интересно, ибо это несерьёзно. А писать на
"github markdown", "XXX markdown", "whatever markdown"... серьёзно?
* reStructured Text -- так как его реализаций не много (не одна ли
docutils?), то он будет работать, в отличии от Markdown, везде. Именно
reST, а не Sphinx надмножество. Мне он нравился и хоть он и зависит от
Python, но я на reST/Sphinx писал всё на свете. Даже web-сайты были
когда-то все на нём сделаны, ибо HTML выхлоп у него вполне себе
хороший. Но... его возможностей форматирования мне не хватало
частенько. Сделать жирную ссылку -- проблема (собственно, я даже не
помню можно ли это в принципе сделать). Делать сложные структуры с
многоуровневыми списками и табличками внутри -- ± можно, но уже очень
сложно читается и требует большой аккуратности из-за отступов.
Генерировать reST тоже становится проблематично
* AsciiDoc -- использовал его на первой работе (не мой выбор). Мало чего
по нему помню, но, хотя бы, это вроде бы действительно отдельный
нормальный формат, а не куча диалектов под одним именем (ненавижу
сраный Markdown!). git документация написана на нём. Выглядит как
хорошая альтернатива reST, но всё равно зависит от Python, в котором
де-факто reST
* Texinfo -- на этот формат я возможно не смотрел потому что он ещё с
80-х годов. Возможно потому что есть "tex" и кажется что имеется связь
с TeX. Но это лучший формат что я видел для создания .html (и конечно
же .info)! Некая золотая середина между гибкостью и свободой
самовыражения HTML и лёгкостью чтения/написания reST! Плюс написал на
C/Perl, поэтому работает очень быстро, не требует тяжёлых Python-ов.
Удобен для машинного генерирования. Удобен для работы в редакторе.
Имеет множество плюшек и сахара для создания документации по исходному
коду (reST не имеет, но Sphinx через директивы поддерживает).
Texinfo явно сильно заточен для создания доки по программам. Может
мешать местами его древовидная работа с нодами, однако такая же
древовидная требуется и в Sphinx например. Всё же Texinfo/Sphinx это не
general purpose средства, а для определённых задач. Но это всё равно
перекрывается простотой, гибкостью, удобством работы с ним. Вообще
Texinfo создавался сразу же и для того, чтобы из доки можно было сделать
.tex файлы и сразу из них отрендерить печатный вариант (книгу). Это
никогда не проверял как работает и априори полагаю что с кириллицей
возникнут проблемы. Sphinx тоже умеет генерировать .tex (LaTeX? не помню
уже), который с кириллицей не работал из коробки. .info файлы вроде
Sphinx-ом плохо генерировались.
А ещё, что скорее является anti-feature, но Texinfo это единственное
через что я смог сделать максимально работоспособный Word-compatible
выхлоп. Texinfo создаёт Docbook, который можно открыть в LibreOffice и
он его отлично отрендерит, даже со всеми таблицами и *почти* не
потерянным форматированием (насколько помню, только заголовки почему-то
были не нужного размера -- но они были всё же заголовками). Сделать
что-то из Sphinx-а, чтобы было так же похоже на ожидание, что через
*Office-ы можно было бы сконвертировать -- не выходило.
Когда я восхищаюсь огромному количеству документации в man-ах
OpenBSD/FreeBSD, то я восхищаюсь и аплодирую именно наличию
документацию, а не её формату. Но GNU выбор Texinfo/Info я считаю лучшим
что есть.
Sergey Matveev [Thu, 5 Nov 2020 15:08:33 +0000 (18:08 +0300)]
Почему федеративные системы не взлетают?
https://beldmit.livejournal.com/628814.html?nojs=1
Человек пишет что с 1994-го года был и в Фидо и где только не был и
всегда существовали централизованные системы, которые на порядки были
популярнее федеративных (автор пишет про распределённые, но я всё же
разделяю их с федеративными). И с причиной их популярности я полностью
согласен:
Причина провала скорее всего предельно проста. Порог вхождения в
централизованные системы низок, потому что коммерсанты это в
состоянии сделать.
Говорит что взлетели только электронная почта ("которая сейчас скорее
умирает, а коммерчески безнадёжна уже давно") и BitTorrent. В целом
согласен. Я бы ещё добавил news/NNTP (которые умерли). Ну и мне не
понятно в каком месте email умирает. Чтобы умереть -- нужно чтобы
появилась замена хоть какая-то. Для email-а её нет даже отдалённо.
Я бы ещё наверное добавил всё же RSS/Atom с домашними страничками и
блогами. У меня уже более 300+ feed-ов, и их количество только растёт,
ведь каждый год всё больше и больше людей слезает с соцсетей.
Sergey Matveev [Thu, 5 Nov 2020 09:28:32 +0000 (12:28 +0300)]
netpbm формат и генерирование картинки в 5LoC bash
https://www.vidarholen.net/contents/blog/?p=904
Я давний "поклонник" netpbm утилит и форматов. Мне кажется что уже
наверное лет 15 я для работы с изображениями только его и использую.
#!/bin/bash
exec > my_image.ppm # All echo statements will write here
echo "P3 250 250 255" # magic, width, height, max component value
for ((y=0; y<250; y++)) {
for ((x=0; x<250; x++)) {
echo "$((x^y)) $((x^y)) $((x|y))" # r, g, b
}
}
netpbm это набор утилит для работы с PNM файлами. PNM-ы бывают: PBM
(bitmap, монохромный), PGM (graymap, серый), PPM (pixmap, цветной), PAM
(цветной, ещё и с альфа-каналом). Каждый из них может быть представлен
в ASCII текстовом формате (как в примере выше), где задаётся формат,
размеры изображения и глубина на канал. Или в аналогичном, но бинарном
формате. Например когда я недавно занимался сканированием фотографий, то
мне надо было и обрезать, и scale-ить, и менять глубину цвета, и кучу
других подобных вещей. Изображение перегоняется в PNM, дальше через
pipe-ы применяются фильтры, дальше PNM преобразуется в нужный формат
(JPEG2000, WebP, и т.д.).
Ещё вот позже появился suckless проект: https://tools.suckless.org/farbfeld/
где формат тоже предельно прост:
8 -- "farbfeld" magic value
4 -- 32-Bit BE unsigned integer (width)
4 -- 32-Bit BE unsigned integer (height)
[2222] -- 4x16-Bit BE unsigned integers [RGBA] / pixel, row-major
В принципе мне он нравится больше, так как наборы PNM форматов это
только ведь об эффективности. Хотя... в том числе и про удобство для
генерирования/обработки наверное тоже, но преобразовать в RGBA и обратно
совсем не проблема. Из коробки farbfeld, конечно же, имеет и конвертеры
в PAM/PPM.
Sergey Matveev [Wed, 4 Nov 2020 11:58:46 +0000 (14:58 +0300)]
Закат useability
https://datagubbe.se/decusab/
Понравилась статья с примерами современных графических интерфейсов.
Аналогичное касается ведь и web-страничек. Почему у меня прям сразу же
рвотные позывы когда кто-либо предлагает через страничку в броузере
юзать какой-нибудь Mattermost? Да потому что рехнёшься пытаться понять
где там вообще элементы управления, не говоря об их использовании. Один
только факт когда убираются/исчезают полосы прокрутки... сколько же
ненависти это вызывает и непонимания как это используют, ведь автор
подобного интерфейса явно садист.
Sergey Matveev [Wed, 4 Nov 2020 11:18:15 +0000 (14:18 +0300)]
Впервые заюзал redo-stamp, хоть что-то кроме redo-ifchange
Хочется вшивать версию библиотеки в исходный код/документацию. Для
получения версии библиотеки я использую информацию о текущем git
коммите. Если сделать цель типа:
то она конечно сработает, но только один раз, так как у неё нет
зависимостей. Делать зависимости на .git/* объекты -- ну как-то не
хорошо, но (не проверял) наверное что-то типа (само собой, вместо cat,
надо использовать git команды для получения соответствующей информации):
redo-ifchange .git/`cat .git/HEAD | cut -d\ -f2`
Хочется сделать зависимость от вывода команды -- именно от вывода, а не
факта изменения файла с содержимым git-describe. apenwarr/redo, как и
redo-c смотрят на метаинформацию файла, а не на хэш от содержимого.
Поэтому задачу, без постоянной пересборки всего что зависит от версии,
не знаю как выполнить через redo-ifchange/ifcreate.
Но многие redo реализации имеют redo-stamp команду, которая позволяет в
зависимости добавить хэш от произвольных входных данных. Цель будет
выполняться/проверяться всегда, но считаться "обновлённой" только если
хэш поменяется:
Работает на ура! При пересборке проекта цель VERSION высвечивается, но
если её содержимое не меняется, то и зависимости не пересобираются. А
чтобы оно работало с redo-c, в котором нет redo-stamp, то я решил просто
проверять наличие этой команды, но уже конечно без пересборки если
версия изменится.
$ cat VERSION.do
[ -n "$VERSION" ] || VERSION=`git describe --tags @ 2>/dev/null || git describe --always @`
echo $VERSION > $3
if command -v redo-stamp >/dev/null ; then
redo-always
redo-stamp < $3
else
echo No redo-stamp command found: VERSION is built only once >&2
fi
Sergey Matveev [Wed, 4 Nov 2020 09:21:14 +0000 (12:21 +0300)]
Узнать размер файла в "Linux"
https://losst.ru/razmer-fajla-v-linux
Ох ох ох! Перемешаны намешаны ls/stat команды и du. Нельзя же так. du
показывает именно disk usage, который может *существенно* отличаться от
значения ls/stat из-за сжатия и sparse областей как минимум. Посмотрев
на du, может быть потом очень неприятно видеть что при копировании на
какой-нибудь FAT оно не уместится там.
Sergey Matveev [Wed, 4 Nov 2020 08:34:57 +0000 (11:34 +0300)]
Бойкотирование Wayland
https://www.opennet.ru/opennews/art.shtml?num=54022
https://gist.github.com/probonopd/9feb7c20257af5dd915e3a9f2d1f2277
https://refi64.com/posts/dont-boycott-wayland.html
Меня терзают смутные сомнения и воспоминания о том, что вот подобные
высказывания мы все где-то уже слышали, о том что всё ломается, все
заботятся только о GNOME, ничего не даёт действительно полезного и
нового:
В сообщении говорится: "Wayland не решает никаких проблем, которые у
меня есть, но ломает почти все, что мне нужно. И обычно оно остаётся
сломанным, потому что связанные с Wayland люди, похоже, заботятся
только о GNOME и отдаляют всех остальных в этом процессе. НЕ
УСТАНАВЛИВАЙТЕ WAYLAND! Пусть Wayland не уничтожит все, чтобы потом
другим людям не пришлось устранять ущерб, который он нанесёт. Или
сделайте больше Red Hat/GNOME-специфичных компонентов (glib, Portals,
Pipe wire) обязательными зависимостями!"
Ах да, всё это было уже про systemd :-)! Учитывая что творилось с
systemd и что всё завязывалось на GNOME -- поверю высказыванию Симона
Петера, ибо сложно поверить что GNOME-people могут достойно делать
достойные замены. Список того, что ломает Wayland, очень похож на
аналогичные списки того что творил/ломал systemd. История повторяется.
Хотя лично у меня особо никакого мнения нет. Я и X.org плохо знаю. Читал
про то, как работа с графикой идёт в Plan 9 -- вот это мне однозначно
нравилось своей незатейливой простотой. X.org выглядит монстром. Просто
Mir/Wayland не знаю. Если это сильно более простые штуки чем X-ы, то
одобряю. Но... боюсь что в "простоту" могут вкладывать совершенно другие
значения чем я представляю. Ведь кто-то умудряется говорить и про
простоту systemd, его модульность и прочее прочее. Но всё говорит про
то, что Wayland это классический продукт GNOME/Freedesktop.org, поэтому
мало чего хорошего (для Unix-like) системы ждать не приходится, ведь под
ними и DBus, PulseAudio, XDG_* -- то, чей подход в принципе мне чужд.
Хотя что-то из их https://www.freedesktop.org/wiki/Software/ использую.
Sergey Matveev [Tue, 3 Nov 2020 15:08:58 +0000 (18:08 +0300)]
Использую очередную библиотеку от DJB: libtai
https://cr.yp.to/libtai.html
https://cr.yp.to/proto/tai64.txt
https://cr.yp.to/y2k.html
https://cr.yp.to/proto/utctai.html
В одной C-шной библиотеке сделал возможность выбора между обычным POSIX
gettimeofday+localtime и libtai. libtai работает значительно быстрее
(ну, как минимум, потому что сама библиотека не занимается
форматированием вывода для человека), имеет простой интерфейс, всё что
нужно для сериализации/десериализации. Хочется наносекунды, хочется
аттосекунды -- отрезай сколько надо байт, делов то! А преобразовать в
человекочитаемый формат можно tai64nlocal утилитой из состава
daemontools, но уже асинхронно по времени.
Sergey Matveev [Tue, 3 Nov 2020 08:19:42 +0000 (11:19 +0300)]
Конец жёсткой воде
Все годы что я живу в своей квартире -- вода была очень жёсткой. Пару
раз вскипятишь воду в чайнике -- покроется дно известью, даже после
фильтра настольного. Но последние несколько месяцев дно чайника, как и
известковые разводы в ванне исчезли напрочь! Явно в доме что-то
установили/поменяли. Здорово стало, хотя меня особо и не напрягало.
Sergey Matveev [Mon, 2 Nov 2020 18:36:01 +0000 (21:36 +0300)]
Широковещательные поэмы от ISP и bad.horse
https://gist.github.com/riobard/c7eb86aa3586c36ffaa75f7be3b57d66
Китайский модем каждые десять секунд широковещательно рассылает поэму. А
по ссылкам есть ещё bad.horse, который если traceroute-нуть, то у меня
получится:
[...]
10 * * *
11 * * bad.horse (162.252.205.131) 156.364 ms
12 bad.horse (162.252.205.132) 161.045 ms 161.285 ms 158.751 ms
13 bad.horse (162.252.205.133) 164.067 ms 165.241 ms 165.877 ms
14 he.rides.across.the.nation (162.252.205.134) 169.005 ms 170.896 ms 171.162 ms
15 the.thoroughbred.of.sin (162.252.205.135) 176.320 ms 176.025 ms 175.966 ms
16 he.got.the.application (162.252.205.136) 179.019 ms 180.848 ms 179.054 ms
17 that.you.just.sent.in (162.252.205.137) 186.400 ms 185.948 ms 184.481 ms
18 it.needs.evaluation (162.252.205.138) 191.208 ms 191.067 ms 189.537 ms
19 so.let.the.games.begin (162.252.205.139) 193.995 ms 193.859 ms 196.915 ms
20 a.heinous.crime (162.252.205.140) 201.016 ms 201.346 ms 202.818 ms
21 a.show.of.force (162.252.205.141) 205.960 ms 203.942 ms 204.386 ms
22 a.murder.would.be.nice.of.course (162.252.205.142) 209.347 ms 210.882 ms 209.746 ms
23 bad.horse (162.252.205.143) 214.974 ms 214.106 ms 214.396 ms
24 bad.horse (162.252.205.144) 221.163 ms 219.148 ms 217.232 ms
25 bad.horse (162.252.205.145) 225.919 ms 224.980 ms 226.189 ms
26 he-s.bad (162.252.205.146) 231.045 ms 229.682 ms 230.705 ms
27 the.evil.league.of.evil (162.252.205.147) 236.238 ms 236.093 ms 234.376 ms
28 is.watching.so.beware (162.252.205.148) 239.283 ms 238.992 ms 238.420 ms
29 the.grade.that.you.receive (162.252.205.149) 246.061 ms 246.389 ms 246.176 ms
30 will.be.your.last.we.swear (162.252.205.150) 249.103 ms 249.161 ms 248.959 ms
31 so.make.the.bad.horse.gleeful (162.252.205.151) 255.942 ms 256.241 ms 268.024 ms
32 or.he-ll.make.you.his.mare (162.252.205.152) 261.295 ms 261.495 ms 261.173 ms
33 o_o (162.252.205.153) 268.452 ms 266.378 ms 264.068 ms
34 you-re.saddled.up (162.252.205.154) 271.004 ms 268.978 ms 270.934 ms
35 there-s.no.recourse (162.252.205.155) 276.492 ms 274.559 ms 274.304 ms
36 it-s.hi-ho.silver (162.252.205.156) 280.985 ms 279.162 ms 279.430 ms
37 signed.bad.horse (162.252.205.157) 279.259 ms 278.678 ms 282.138 ms
Sergey Matveev [Mon, 2 Nov 2020 18:30:36 +0000 (21:30 +0300)]
Chrome собирается сделать свою собственную БД CA
https://www.opennet.ru/opennews/art.shtml?num=54008
Честно говоря, я думал что там уже давно оно имеется своё, как и Firefox.
Понравился комментарий что теперь чтобы добавить сертификат предприятия
(ну или там свой личный), то:
Sergey Matveev [Mon, 2 Nov 2020 15:23:14 +0000 (18:23 +0300)]
Как аниме создало и убило киберпанк
https://www.youtube.com/watch?v=-wmxo9zrXy0
История аниме и киберпанк жанра. Киберпанк жанр я люблю, но чисто
эстетически, а не потому что считаю и хочу чтобы всё везде было в цифре,
на каждом шагу были бы технологии и тому прочее. Сейчас в аниме
киберпанк умер и заменён на то, что люди наоборот отходят от всех этих
технологий. Из всего что в фильме перечисляется, я смотрел только
"Эксперименты Лейн" да "Ghost in the shell". Ergo Proxy название слышал,
но всех остальных -- вообще нет. В общем интересная передача, лично для
меня, о чём то неведомом.
Открытием было то, что Уильям Гиббсон написал Нейромантика после
"Бегущего по лезвию"! Что в общем-то очевидно если посмотреть на года,
но как-то не задумывался.
Sergey Matveev [Mon, 2 Nov 2020 09:02:17 +0000 (12:02 +0300)]
Indikom работает ощутимо субъективно лучше
С новым провайдером (cb6bff728abd8e296dd4d10648c3a2b31b7c8343) у меня на
глаз значительно лучше стали работать торренты на раздачу. С Ростелекомом
то они работали, но через какое-то время seeding затухал. Не прекращался,
но опускался до 1-2 MBps. Перезапускаешь клиент -- вновь начинает на 5-6
MBps. С новым же ISP у меня регулярно и все 100 Mbps на выход забиты.
Может совпадения. Я запросто мог бы и грешить на aria2 клиент -- ну мало
ли чего в нём. Хотя ещё есть мысли что может быть MTU в 1500 байт,
вместо 1480 из-за PPPoE играют роль? Я у себя firewall-ом режу все
фрагментированные пакеты, ибо нефиг -- PMTUD должен работать. А если кто
блокирует ICMP -- ну и фиг с ним, у него сломанная и неработающая связь
значит. Может сейчас я просто могу достучаться до людей с неработающим PMTUD?
Sergey Matveev [Sat, 31 Oct 2020 20:35:48 +0000 (23:35 +0300)]
Журнал Downgrade
http://dgmag.in/
http://www.old-hard.ru/
Когда-то был (есть?) журнал Upgrade. А тут вот есть журнал Downgrade.
Много всяких интересных коротких статей уже нашёл в нём, поностальгировать.
А ещё old-hard.ru с трушным DOS-like дизайном!
Sergey Matveev [Sat, 31 Oct 2020 20:09:04 +0000 (23:09 +0300)]
Acer Veriton FP
http://old-stuff.ru/ACER-Veriton-FP/
https://www.yaplakal.com/forum2/topic1376143.html
Я давно уже хотел вспомнить и найти один моноблок который мне люто
понравился. Давным давно, в конце в 90-х годов, в каком-то журнале в
новостях я увидел фотографию моноблока, которую не могу забыть и по
сей день. Вроде бы ничего особого -- простота и ничего лишнего, но
видимо это мне и запомнилось. В голове этот моноблок всегда рядом с
какими-нибудь Sun и SGI корпусами рядом стоит, как эталон дизайна
который мне нравится. Но... я совершенно не мог найти и вспомнить
хоть что-либо по нему. А сегодня совершенно чисто случайно увидел
таки! Помню что в журнале на нём в качестве benchmark-а запускали
Daikatana.
Sergey Matveev [Fri, 30 Oct 2020 09:06:31 +0000 (12:06 +0300)]
Как понимая работу TCP, можно убрать дикие задержки на сотни мс
https://jvns.ca/blog/2015/11/21/why-you-should-understand-a-little-about-tcp/
Ruby Net::HTTP посылает заголовок HTTP запроса в одном пакете, а тело в
следующем, плюс не выставляет TCP_NODELAY. А HAProxy, более того, ещё
делает и delayed TCP acknowledgement. Вот так вот можно получить
огромные задержки при HTTP запросе.
Sergey Matveev [Thu, 29 Oct 2020 09:48:52 +0000 (12:48 +0300)]
RocknMob Moscow -- Metallica "Sad But True"
https://www.youtube.com/watch?v=FmMo9CNYnm4
Даже не слышал о таких мероприятиях. Во там круто то!
С этим карантином и отсутствием концертов, я как никогда понял что
*только* на них я чувствую себя расслабленным и в своей тарелке, на
одной волне с остальными. Дай мне сейчас выбор оказаться в постели с
девушкой или пойти на трушный метал концерт... даже не знаю что и
выбрать, не лёгкий вопрос. Да и мой первый поцелуй в жизни произошёл
именно на метал концерте.
Sergey Matveev [Wed, 28 Oct 2020 21:17:34 +0000 (00:17 +0300)]
История BSD и как я засветился в видеоролике
https://youtu.be/CMfveo_I0YI
В комментариях к новости на OpenNet увидел ссылку на получасовое видео
про историю BSD систем. Чуть не упал со стула, внезапно увидев старую
фотографию своего домашнего рабочего места на 18:55! Но и без этого,
рассказ достаточно глубокий и содержащий кучу роликов и фотографий!
Sergey Matveev [Wed, 28 Oct 2020 16:39:09 +0000 (19:39 +0300)]
Локальный unbound для особых DNS зон
На работе многое стало работать через DNS доступный только изнутри через
VPN. Использовать его для всех запросов я по понятным причинам не хочу.
То есть, для одних зон надо использовать один DNS resolver, а для
остальных -- свой локальный. Знаю что это можно сделать unbound-ом,
поэтому и заюзал его:
Sergey Matveev [Wed, 28 Oct 2020 16:06:50 +0000 (19:06 +0300)]
Снова про цвета в фильмах
https://habr.com/ru/post/525252/
В догонку к b41b585f902490ba9a180e3530f075cb8f256381 вышла ещё одна
статья, в противовес. Очень понравился комментарий, ибо забавно отражает
реальность (всё так и есть!):
* Режиссёр и/или сценарист: придумывают уникальную гамму,
соответствующую атмосфере фильма
* Художник: Рисует концепты, предлагает их режиссёру
* Куча народу: делает тестовые снимки и съёмки
* Команда, ответственная за реквизит: подбирает и создаёт декорации и
костюмы, чтобы они не сильно выбивались из общей палитры после
постпроцессинга
* Команда VFX: пишут сложные фильтры, настраивают их для каждой снятой
сцены по отдельности
...
* Программист: Тенденция к обеднению цветов!
...
* Bonus track: среднестатистический российский зритель смотрит всё это
на пережатой вхлам пиратке, с разрешением из середины 2000-х на
экранчике китайского телефона. Или на мониторе/телевизоре с
вырвиглазными «улучшайзерами»
Очень часто там упоминают фильм Амели. Незабываемый своими красками!
Хотя, по идее, он тоже не богат цветами, просто они там более тёплые что ли.
Sergey Matveev [Wed, 28 Oct 2020 07:27:22 +0000 (10:27 +0300)]
OpenVPN с ChaCha20-Poly1305 и IPv6
https://www.opennet.ru/opennews/art.shtml?num=53981
Сам я OpenVPN не использую (ну кроме доступа по этому архаичному
рудименту до работы) и вообще сторонюсь его. Но удивляет их неспешность
добавления ChaCha20-Poly1305, и удручает то, что прежде, судя по
новости, без IPv4 туннель всё равно нельзя было юзать. Какое же у них
всё древнее!
Sergey Matveev [Wed, 28 Oct 2020 07:19:29 +0000 (10:19 +0300)]
FreeBSD в jail может запускать Linux
https://www.freebsd.org/releases/12.2R/relnotes.html
https://forums.freebsd.org/threads/setting-up-a-debian-linux-jail-on-freebsd.68434/
Судя по форуму, похоже это и раньше вполне себе было возможно. Сам не
пробовал, да и наверное нафиг мне надо, но выглядит интересно. FreeBSD
уже давно по сути позволяет запускать больше софта чем GNU/Linux, ибо и
свой и Linux-овый позволяет запускать. Помню что Linux-версия Quake3 на
FreeBSD шла быстрее на 10% (по FPS-ам).
Sergey Matveev [Wed, 28 Oct 2020 07:03:19 +0000 (10:03 +0300)]
Facebook цензура по музыкальным вкусам
http://www.hitkiller.com/satanath-records-za-publikaciyu-pesni-burzum-udalili-stranicu-nashego-lejbla.html
Упомянул Burzum? Бан тебе в жбан! Мне кажется уже и недели не проходит о
новостях о полнейшей цензуре в этих централизованных соцсетях на всё что
ни попади. И ведь верно заметили в комментариях что политика политикой
(взгляды), но Burzum в музыку её не тащил.
Sergey Matveev [Mon, 26 Oct 2020 19:23:05 +0000 (22:23 +0300)]
Дизайн ноутбучной клавиатуры
https://mdex-nn.ru/page/ugadaete-model-noutbuka.html
И у них в рекламе ещё и говорится про "великолепную эргономику"!
Bullshitest marketing во всей своей красе, переплюнули Apple.
Вот искренне любопытно чем же думают эти дизайнеры, которые сами
небось даже не пробовали поработать за сие творением.
Sergey Matveev [Mon, 26 Oct 2020 18:20:03 +0000 (21:20 +0300)]
Посмотрел "Борат 2"
https://ru.wikipedia.org/wiki/%D0%91%D0%BE%D1%80%D0%B0%D1%82_2
В целом фильм понравился. Было 2-3 момента с совсем сортирным юмором, но
многое другое меня очень и очень позабавило! Хотя с одной стороны
скользких тем полно: антисемитизма, расизма и... какое там слово
используется когда женщинам указывают своё место? Но с другой: наоборот
показывают (даже посвящают фильм одной из женщин пережившей холокост)
глупость всего этого, что все люди -- люди... ну возможно кроме
демократов. В отличии от прошлого фильма, тут сплошной политический
контекст. Но, как я вижу, фильм показывает насколько плохи политика,
промыв мозгов СМИ, антисемитизм и прочее подобное. Главное это семья,
дружба и подобные человеческие ценности. Саша Барон Коэн заметно
постарел. Понятно почему Трамп так невзлюбил этот фильм. А ещё в фильме
засветился Том Хэнкс и музыка Little Big.
https://www.vulture.com/article/whos-who-in-borat-2-a-guide-to-every-notable-cameo.html
а тут много информации о том, кто есть кто и как. Где вот пара сортирных
моментов особо не оставила плохого в памяти участвовавших там людей. В
общем, мне нравится, хотя на половине или даже до 2/3 фильма не мог
понять. Но первая часть, мне кажется, лучше -- там больше житейских тем
затрагивается, нет политики, меньше сортирного юмора (хотя и тут его
почти нет, в отличии от кучи голливудщины где его 100% на весь фильм),
ну и наверное потому что оно впечатляет как первое подобное. Но я
остался доволен просмотром, очень!
Sergey Matveev [Mon, 26 Oct 2020 15:54:22 +0000 (18:54 +0300)]
Сыграл в настольную игру "Паранормальный детектив"
http://boardgamer.ru/paranormalnyj-detektiv-obzor-igry
Собрались играть вчетвером в неё. Впервые видим. Суть: кто-то умер, его
призрак (один из игроков) жив и может общаться через разные
"паранормальные" средства связи с группой детективов. Они (остальные
игроки) могут задавать вопросы чтобы воссоздать картину произошедшего.
И прилагается множество историй. Историю знает только призрак. Исходные
данные для детективов только: где и какие повреждения на человеке, ну и
например голый ли он, плюс пол. Не знаю как у других, но у меня точно
были сомнения вообще в возможности на основе этих данных и ответов
призрака (ответы в виде карт таро (символы), в виде чего-то сделанного
верёвочками, или указателем на всякие холодно/горячо, и т.д. -- нигде
нет возможности просто словами сказать) можно ли воссоздать картину.
Сыграли всего один раз, но почти почти полностью приблизились/воссоздали
историю. История такая:
Мужчина с любовницей в номере отеля. Он -- лунатик, но любовница
этого не знает. После выпитого и проведённого в постели времени и
жаркой погоды ночью стало жарко и любовница открыла дверь на балкон.
А мужчина лунатик встал, вышел туда, ну и перекувыркнулся через
перила, разбившись о скалы.
Наша окончательная версия (играли сообща) отличилась только тем, что они
поссорились между собой и, зная что он лунатик, любовница его
направила/вывела на балкон. Вообще это конечно важнейший вопрос:
умышленно ли она его грохнула так хитро или это был такой несчастный
случай, но уж мелочи. И после такого близкого совпадения с историей,
игра однозначно сильно понравилась! А призраку, с одной стороны, и
сложно объяснять это всё через каналы связи типа пальцем на спине
нарисовать, а с другой и очень забавно слушать куда заходят
предположения детективов.
Sergey Matveev [Mon, 26 Oct 2020 11:27:53 +0000 (14:27 +0300)]
Дефицит цветов в современных фильмах
https://habr.com/ru/post/524978/
https://habr.com/ru/post/366071/
После подобных статей -- невозможно не замечать бледность оранжево-синих
фильмов. Никогда об этом самостоятельно не задумывался, но замечал что
всякие современные голливудские фильмы уж очень какие-то не сочные и не
яркие. Вроде картинка суперская, но какая-то холодная. Когда про себя
вспоминаешь фильмы, то, действительно, Форрест Гамп это широчайшая
палитра в голове! Но и удивляться бледности в Джокер не стоит -- мы же
видим рассказ про больного на голову человека, так что можно считать что
мы через его призму видим мир. То что куча зелёного в Матрице -- ну тоже
в тему, тоже трушно. Трансформеров я когда-то смотрел и мне реально
запомнилось безжизненность цветов! А больше всего впечатляют плакаты,
прям под один шаблон все сделанные:
https://habrastorage.org/getpro/geektimes/comment_images/458/cc8/80b/458cc880bfd0382211ea6cd517b6327e.jpg
https://pbs.twimg.com/media/DgscG-sXUAElnJQ?format=jpg&name=small
Но всё же далеко не все фильмы делаются такими, не всё так плачевно. Это
как война громкости: mainstream всякий, как голливуд, не брезгует
дичайшей компрессии, но есть и полно "не громких" альбомов.
Sergey Matveev [Sun, 25 Oct 2020 10:07:30 +0000 (13:07 +0300)]
Настройщик от провайдера оценил игрушки и картины
Когда прокладывали/тянули кабель от провайдера, то монтажник одобрил,
оценил игрушки: Масяню (хотя я ничуть не её поклонник и даже не помню
откуда эта игрушка), Beastie, Гомера Симпсона. А потом впечатлился
картиной коллажем на тему "Криминального чтива". А знакомый папы, когда
был в гостях (смотрел квартиру), очень впечатлился обоями, даже просил
наделать фотографий чтобы жене показать. Обои -- одно из немногих что я
самостоятельно выбирал. Ещё у меня картины Сальвадора Дали висят --
охранник/дежурный местный именно их одобрил в первую очередь. Вот мужики
замечают и ценят все эти фишки и мелочи приятные. Девушек же, уверен,
ничем таким не проймёшь. В "О чём говорят мужчины" упоминали про
коллекцию лютневой музыки -- ну у меня вот есть коллекция порно- и
горграйнд альбомов, с соответствующими обложками!
Sergey Matveev [Sun, 25 Oct 2020 10:04:42 +0000 (13:04 +0300)]
Хорошие новости от Нурмагомедова
https://lenta.ru/news/2020/10/24/khabib_nakonets/
Вчера несколько часов занимался перенастройкой своего оборудования под
новый Интернет провайдер (cb6bff728abd8e296dd4d10648c3a2b31b7c8343).
Потом, когда всё закончил, зашёл на новости и вижу что в это время Хабиб
снова защитил свой титул! Не то, чтобы я вообще интересовался спортом,
но драчки люблю, не прочь посмотреть чего-нибудь, если попадается под
руку. Вот например на футбол полностью параллельно и не интересно никак.
А за наших бойцов/боксёров переживания есть.
Sergey Matveev [Sun, 25 Oct 2020 08:27:40 +0000 (11:27 +0300)]
Прочитал "Дневник мага" Пауло Коэльо
https://ru.wikipedia.org/wiki/%D0%94%D0%BD%D0%B5%D0%B2%D0%BD%D0%B8%D0%BA_%D0%BC%D0%B0%D0%B3%D0%B0
Интересная книга про прохождении в конце XX века по паломническому пути
Сантьяго. Куча конечно всякой мистики и необычных встреч. Очень уж полно
христианской религиозной болтовни, но тоже чисто ради интереса послушать
можно, для саморазвития.
Sergey Matveev [Sat, 24 Oct 2020 10:00:22 +0000 (13:00 +0300)]
FreeBSD и Gentoo зеркала youtube-dl
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=250571
https://www.opennet.ru/opennews/art.shtml?num=53952
Уже патчик отправили для порта youtube-dl чтобы использовать Gentoo
зеркала. Верно заметили что у youtube-dl куда больше применений чем
только YouTube. Мне кажется что я даже чаще его запускаю чтобы скачать
видео вне YouTube. Там же десятки (сотни?) парсеров других ресурсов!
Sergey Matveev [Sat, 24 Oct 2020 09:36:12 +0000 (12:36 +0300)]
Palemoon сваливает с GitHub
https://forum.palemoon.org/viewtopic.php?f=1&t=25473
Тоже заметил что несколько дней назад GitHub визуально снова поменялся
(a56709d61da427dda4202a99c59c2a587afa9837) и стал выглядеть ещё более
убого и не юзабельно. Куча белых экранов, где изредка какие-то ссылки
присутствуют, без каких-либо границ.
Ну что ж, с Microsoft GitHub стал, как и полагается:
* преклоняться перед неграми
* блокировать, как минимум, Иран и Сирию
* блокировать часть РФ и людей оттуда (Крым)
* делать ToS, судя по всему, не очень совместимый с понятиями свободного ПО
* не работать без JS, да и просто убого неюзабельно выглядеть
А теперь ещё и в приватных репозиториях будут следить чтобы себя вели
хорошо и не инакомыслили: https://www.opennet.ru/opennews/art.shtml?num=53953
Sergey Matveev [Fri, 23 Oct 2020 17:08:12 +0000 (20:08 +0300)]
Подключился к провайдеру Indikom
После подключения Ростелекомом платного недешёвого антивируса
(4774fb51f1965787e4eefdd43791e3453fa3047f), ждал будут ли они мне
возвращать за него деньги. Факты открытия тикетов мне на почту сразу же
упали, а дальше ждал две недели будет ли от них какая-либо реакция. Её
не было. Ну и договорился с Indikom провайдером о подключении к нему.
Годами РТ работал на отлично стабильно. Но, именно в этом месяце, у меня
каждый 2-3 день днём, в буднее рабочее время, Интернет пропадает. Пару
раз даже на целый час. Это переполнило чашу терпения.
Уже позже, ради интереса, я решил посмотреть сколько денег у меня
остаётся в РТ -- обнаружил что за антивирус мне деньги то вернули назад,
уже на третий день после обращения! Только никак об этом не оповещали. А
я уже успел договориться с новым провайдером о подключении. Какое-то
время РТ ещё будет подключён, пока все домены/сайты не обновят свои
адреса и всё не будет готово к переезду, но с ним распрощаюсь. Ещё
небось будет приключением возврат оставшихся у них на счету денег.
Если бы меня оповестили о возврате денег за "антивирус", то я скорее
всего закрыл бы глаза на стабильность связи и остался бы с ними. Но...
сами виноваты -- или сразу бы говорили что нужно мониторить личный
кабинет и ничего не слали бы (о создании тикетов) в email, или бы
оповещали нормально.
И ещё в добавок, контрольное от РТ: пока я писал эту запись, мне от него
пришёл какой-то email спам с онлайн-игрой. Я за все годы не припомню
чтобы они слали спам, ну кроме включённого в PDF-ку с состоянием счёта.
А теперь, начали. Знак что точно надо с них валить.
У Indikom, насколько вижу, всякие IPv6-in-IPv4, IPsec, SMTP и всё такое
прочее работает. 100Mbps есть. Даже личный кабинет без JS работает, в
отличии от РТ, где мне полминуты наверное приходится ждать пока всё это
JS-дерьмо отработает.
Sergey Matveev [Thu, 22 Oct 2020 08:33:38 +0000 (11:33 +0300)]
NVMM поддерживает кучу ОС
https://m00nbsd.net/4e0798b7f2620c965d0dd9d6a7a2f296.html
https://blog.netbsd.org/tnf/entry/from_zero_to_nvmm
Родная система виртуализации в NetBSD без проблем вон запускает Windows
(от 32-бит WinXP, до современных), HaikuOS, OmniOS, GNU/Linux-ы и другие
BSD системы в qemu. По сути -- ещё большая поддержка разнообразия чем в
bhyve из FreeBSD. Начал следить за NetBSD, подписался на их рассылки,
после выхода её версий с хорошей ZFS поддержкой.
Sergey Matveev [Wed, 21 Oct 2020 10:40:35 +0000 (13:40 +0300)]
Кощей Бессмертный то оказывается лич
https://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%87_(%D0%BD%D0%B5%D0%B6%D0%B8%D1%82%D1%8C)
"Сам Кощей Бессмертный при этом является ярчайшим мифологическим примером лича".
А lich-gate это "вход на кладбище".
Sergey Matveev [Mon, 19 Oct 2020 22:35:22 +0000 (01:35 +0300)]
Прочитал "Ярость" Юрия Никитина
https://ru.wikipedia.org/wiki/%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B5_%D0%B8%D0%B4%D1%83%D1%82_(%D1%86%D0%B8%D0%BA%D0%BB)#%C2%AB%D0%AF%D1%80%D0%BE%D1%81%D1%82%D1%8C%C2%BB
Почти вся книга это сплошные диалоги в кабинете новоизбранного
президента конца наших 1990-х. Потом немного action-а. В целом
очень понравилась книга! Много показывает и подчёркивает гнилые
стороны Запада. Понравилась тем, что особенно в последние годы,
также как и в ней начал мыслить и смотреть на мир. Очень такая
патриотичная!
Sergey Matveev [Mon, 19 Oct 2020 11:23:37 +0000 (14:23 +0300)]
Автор cURL получил награду из рук самого короля Швеции
https://daniel.haxx.se/blog/2020/10/19/three-years-since-the-polhem-prize/
Три года назад Daniel Stenberg получил награду за свой cURL из рук
самого короля. Круто!
Sergey Matveev [Mon, 19 Oct 2020 07:53:54 +0000 (10:53 +0300)]
На почтовом сервере жёсткий отказ обслуживать некоторых
Когда-то я был на некоторых ресурсах зарегистрирован и получал штатно
ожидаемую почту, типа vk.com и некоторых правительственных. Потом я или
уходил с них (удалял регистрацию) или не мог на них попасть (в случае с
vk.com, чтобы удалиться, нужно предоставить сотовый для "регистрации").
Некоторые продолжают после этого рассылать рекламу, оповещения и прочее.
Ссылки на "отписку" не работают. Вынужден подобные ресурсы добавлять в
жёсткие правила REJECT-а по домену прямо в SMTP сервере, ибо никто из их
админов не реагирует на просьбы прекратить спам (ибо я не помню чтобы
где-то предоставлял свой email некоторым правительственным). Сегодня
обратил внимание что все ресурсы только российские среди правил сервера.
Наверное эффективные менеджеры решили что эффективнее ссылки
"отписаться" делать нерабочими.
Sergey Matveev [Sat, 17 Oct 2020 07:38:48 +0000 (10:38 +0300)]
Убийство за свободу слова
В новостях говорят, что во Франции убили учителя, который показывал
непотребство на пророка Мухаммеда. Типа это был урок свободы слова,
свободы веры и прочего. Как когда-то кучу людей перебили в Charlie Hebdo.
Я не знаю ни подробностей, ни контекста, но любая из этих двух сторон
умеет перегибать палку ещё как.
Но вот во что я точно поверю больше всего: на всём этом Западе свободой
слова называют свободу оскорблять и унижать людей (чужих, конечно же,
ибо это уже не тот сорт людей). А свобода вероисповедания -- это свобода
от уважения к другим культурам и верованиям, позволяющая всем этим
христианам разрушать культурные, исторические наследия и храмы чужих по
вере. Ну или просто гадить в них, как у нас Pussy Riot.
Нравилась мне цитата одного иранца:
Когда они тебя оскорбляют: это "свобода слова".
Пытаешься возразить: это "отсутствие культуры"!
Если они задают вопросы: это "свободомыслие",
Если ты пытаешься задавать им вопросы: это "допрос"!
Они тебя в чем-то обвиняют: это "поиски правды",
Ты пытаешься оправдаться: значит, ты -- "лжец"!
Они смеются над тобой: это "конструктивная критика",
Пытаешься ответить: это "нетерпимость"!
Они тебе угрожают: значит, "защищают себя",
Когда сам пытаешься защищать свои убеждения:
ты -- "разжигатель ненависти и насилия"!
Хотя, судя по новостям, и про чеченцев мы постоянно слышим об их (само
собой таких меньшинство, просто оно очень громкое) тоже выходящей за
границы терпимости неразумной. Типа посмотришь не так (ему так
покажется), так начнёт "давай, слышь ты, извиняйся, чё так смотришь то?".
Правда потом за таких и Кадыров вынужден приносить извинения.
Фанатики и больные люди везде найдутся. И те, в чью сторону даже
посмотреть нельзя, и те, кто не знает меры уважения и оскорбления других
людей. А границы Западного лицемерия и умения стравливать людей --
вообще бескрайни!
Sergey Matveev [Thu, 15 Oct 2020 17:58:56 +0000 (20:58 +0300)]
30 лет со дня выхода Curse of Monkey Island
https://www.youtube.com/watch?v=xgqEneDNQto
Фильм к 30-ти летию создания игры Curse of Monkey Island. С
удовольствием посмотрел! Вначале, правда, из-за музыкальной темы игры,
пришлось проверять не звонят ли мне (тема CoMI у меня в качестве
ringtone). Его принципы "не умирать", "давать разумные логичные пазлы"
-- огромная ценность! Среди комментариев от обычных игроков выделяется
тот, кто был поражён юмором и качеством игры, будучи раньше никогда в
неё не играя и поэтому не имея ностальгического предвзятого отношения.
Sergey Matveev [Thu, 15 Oct 2020 16:31:33 +0000 (19:31 +0300)]
SGBlog стал использовать recfiles для хранения комментариев
Быстренько переделал сконкатенированные nestring-сериализованные строки
на recfiles формат (GNU recutils) (8249370437018ad186c7946f22242731fba52035).
По сути я просто чуть-чуть поменял форматирование хранимых notes. Но
зато теперь комментарии можно обрабатывать recutils-ами. Зачем? Не знаю,
у меня надобности не было. Но потому что могу! Для парсинга написал
go.cypherpunks.ru/recfile библиотеку, которая читает записи и их поля.
Всякие строки типа "From:" и "Date:" по сути уже были полностью валидны
для recfile-ов, как и формат времени.
Sergey Matveev [Wed, 14 Oct 2020 20:38:10 +0000 (23:38 +0300)]
Гид по знакомству с женщинами от Das Keyboard
https://www.daskeyboard.com/blog/das-keyboards-guide-to-meeting-women/
О как, в официальном блоге Das Keyboard подтверждают что если у тебя DK,
то женщины твои. Хотя есть и ремарка: только если у вас Ultimate версия
без надписей. Хм, надо было мне раньше эту клаву приобретать!
Sergey Matveev [Wed, 14 Oct 2020 20:01:42 +0000 (23:01 +0300)]
Наткнулся на обзор почти моей клавиатуры
https://habr.com/ru/post/376335/
Совершенно по другим темам и ссылкам был на Хабре, но увидел обзор Das
Keyboard 4 Professional Clicky клавиатуры. А у меня DK 4 Ultimate.
Визуально вроде идентичны (ну кроме того, что на моей вообще нет никаких
надписей). Свою я не раскручивал и не разбирал, поэтому ничего не могу
сказать про разницу по внутренностях. Но вот многое автор пишет
негативного про линейку и показывает фотографию с настоящими заусенцами:
я прям, читая её, достал свою чтобы посмотреть -- у меня идеально
ровная. Ну или Pro версия такая лажовая, или у него что-то типа брака.
Ну и в целом подход автора мне не понятен: много задаётся вопросом
почему не полностью все поверхности сделали шероховатыми. Да потому что
какой смысл, раз они не видны в принципе? Просто на пустом месте
удорожить ради абсолютно бесполезной эстетики? Как там внутри приклеены
магниты -- ну это уж точно перебор оценивать. Держатся, надёжно, в
нужных местах? И очень странная фраза о боязни наличия магнитов рядом с
электроникой. Рядом с вещами боящимися магнитных полей (дискеты, жёсткие
диски, ленты) -- понятны опасения. А в остальном то? Да и там совсем не
сильные магниты. Хотя я тоже когда-то удивлялся что магниты есть в
крышках ноутбуках, чтобы понимать закрыты ли они, регулярно используются
в крышках чехлов для сотовых -- и вот это меня кстати уже действительно
напрягает, ведь у сотовых же уже динамики и микрофоны, которые не любят
магнитные поля.
И только что ещё обратил внимание что у него на линейке нету резиновых
вставок! А у меня есть. Получается действительно не очень приятно: на
его Pro версии резина только в нижней части клавиатуры соприкасается со
столом (если с линейкой), что, чую, может быть недостаточно для
надёжного сцепления. У меня же, в Ultimate, линейка с резиной, которая
очень хорошо цепляется.
А ещё, ради интереса зашёл у них на сайте в DK 4 Pro for Mac:
https://www.daskeyboard.com/daskeyboard-4-professional-for-mac/
и так забавно выглядит ровно один светодиод, против трёх ПКшных.
А ещё на месте insert-а находится eject... то есть, штатный
Shift-Insert в UNIX-ах работать не будет. И ещё присутствует Fn
клавиша, отсеивая даже теоретическую возможность использования
для меня (ce26cf8f2f53a1baf11d0cf7c58c9a6b5d0b7fab). Ох уж эти Mac-и...
Sergey Matveev [Wed, 14 Oct 2020 14:19:04 +0000 (17:19 +0300)]
Неожиданно Тьюринг-полный
https://www.gwern.net/Turing-complete
Статья о том, что тьюринг-полных языков внезапно достаточно много:
sendmail, sed, XSLT, C++ templates, Java generics, TrueType шрифты,
PostScript, TeX, какие-то музыкальные форматы, CSS, SVG, SQL
Magic: The Gathering (вот почему его любят программисты!). И всё это
опасность, с точки зрения безопасности (RowHammer, Spectre, и т.д.).
Даже BGP: http://vanbever.eu/pdfs/vanbever_turing_icnp_2013.pdf
Сейчас даже приходится доказывать что что-то *не* является Тьюринг-полным.
Я не много чего тут понимаю, ибо каждый второй комментарий на HackerNews
говорит что CSS не Тьюринг-полный. А я не понимаю все эти критерии, при
беглом чтении.
Могу ли я выразить свои критерии и опасения вещей которые "контролируют
мой компьютер" (как я это называю)? sed скрипты меня не парят, ибо
штатно я их не качаю постоянно запуская, даже внутри исходного кода
других программ. Шрифты, предустановленные в системе тоже не парят. А
вот шрифты скачиваемые броузером волнуют -- я поэтому даже возился в
кишках webkit чтобы отрубить их получение. Но это мне не нравится ещё
тем, что задолбали пытаться преподносить информацию ещё вот именно и вот
так выглядящую -- КАЖДОМУ по своему удобно её воспринимать, нефига ещё и
шрифты подсовывать свои. По сути меня волнует хаотично скачиваемые
программы на компьютер (JS, шрифты, пакеты npm/Python (если что, то npm
я запускал один раз в жизни) которые никак не прибиты гвоздями версиями,
которые никак не контролируются разрабами и уже сколько новостей было
что делали зловред через npm пакеты), ну и недоверие к такому каналу
получения программ -- первому что будут пытаться использовать не для
благих целей. Не нужно добавлять излишней гибкости, которая обеспечит
Тьюринг-полноту, куда не надо.
Sergey Matveev [Wed, 14 Oct 2020 08:51:57 +0000 (11:51 +0300)]
Zathura MuPDF vs Poppler, скорость рендеринга
После вчерашней темы про PDF (04391b1ba45ef2d64c059afec495be3704019f7a)
решил посмотреть будет ли разница в рендеринге PDF-ок MuPDF-ом для
Zathura. MuPDF плагин просто даёт ещё и возможность смотреть EPUB, плюс
XPS (хотя я о нём только услышал то недавно, поэтому нафиг сдался). И в
комментариях написали про тормознутость и медленность PDF-ок некоторых.
Для проверки я открыл буквально первый попавшийся на диске документ:
IA64 reference manual, в котором на первой странице большая жирная
high-res картинка. Так вот с Poppler-ом она показывается у меня явно
более чем за 5+ секунд, может даже 10 (на глаз). А с MuPDF отображается
за секунду! Так что, вот смена движка рендеринга может сильно помочь. С
ходу наткнулся на вот такое сравнение скорости этих двух библиотек:
http://hzqtc.github.io/2012/04/poppler-vs-mupdf.html
Когда-то я помню что пробовал и MuPDF просмотрщик родной использовать,
и Xpdf и ещё наверное какие-то, но Zathura среди всех оказывалась
лучшей. Нужны фичи поиска (кто-то точно не умел кириллицу искать),
копирования текста в буфер, возможность открыть full screen, приятно бы
иметь hotkey для открытия по ширине или высоте страницы. В Zathura и
vi-like клавиши работают. Для меня это однозначно просто лучший
просмотрщик! И PDF, и DjVu и теперь вот ещё и EPUB, хотя формат я этот
не одобряю, но есть несколько книг в нём. А в MuPDF 1.15 версии
добавили, судя по CHANGES, ещё и поддержку FB2. Пока ещё не собрал, но
если соберётся, то получается что Zathura полностью покрывает все
форматы для чтения!
Sergey Matveev [Tue, 13 Oct 2020 19:49:07 +0000 (22:49 +0300)]
Очень понравился мем
https://www.reddit.com/r/MemriTVmemes/comments/j97r6m/may_allah_swt_grant_that_rover_paradise/
В голос смеялся. А потому что я помню себя при просмотре Титаника: один
из самых сопливых (чисто по женски) фильмов, и даже моя любовь к Ди
Каприо никак не может вывести фильм на хоть какую-то достойную позицию.
Что-то снова у себя в блоге не нахожу чтобы я про него написал, а ведь в
течении 2-3 лет его посмотрел в первый и последний раз. Если начало
фильма, когда они не тонут, я ещё смотрел нормально, то почти всё
последующее действо (а это бОльшая часть фильма), я и проматывал и
ускорял. И я помнил что у меня реально именно какие-то космические
аппараты/экспедиции выбивали слезу. С одной стороны глупо, а с другой
это творения уймы людей, огромного количества человекочасов, ну и
аппараты типа старались, многие годы работали на наше благо. Помню что
пару лет назад когда мы продавали автомобиль, который я привёз для
показа, готовил его, стоял и смотрел как его всего обследуют, то была
тяжесть какая-то -- штука верой и правдой исправно служившая всей нашей
семье десять лет! С которой много чего пережили. А тут аппараты для
всего человечества, брошенные на других планетах, астероидах, спутниках
планет, кометах, выброшенные за пределы Солнечной системы!
Sergey Matveev [Tue, 13 Oct 2020 16:51:04 +0000 (19:51 +0300)]
PDF формат с точки зрения программиста
https://habr.com/ru/post/523288/
https://habr.com/ru/company/abbyy/blog/108459/
Я не силён в деталях PDF, ни PostScript, ни DVI, ни других, но если о
PDF что и можно услышать от понимающих людей, то только сильно не лестное.
В основном, в качестве более suckless решения предлагают PostScript. А
ещё очень много пишут о недостатках PDF как формата для возможного
редактирования. Ну это сразу я считаю глупостью -- он никогда и не
предназначался для редактирования или чего-то такого, поэтому не нужно
от него хотеть странного. Он для конечного представления, для печати и
отображения, точка.
С одной стороны, очевидно, читая хотя бы просто даже Wikipedia, что PDF
это дико сложный и переусложнённый формат. PostScript явно лучше.
Хочется сразу PDF в топку выбросить. С другой стороны: PS является
полноценным языком программирования и это означает что добавляет вектор
атаки на компьютер, ибо PS это просто программа. Хочется сразу PS в
топку. Тогда как ограниченность PDF делает его, как бы, более
безопасным.
DVI не умеет хранить в себе изображения и шрифты -- поэтому не может
являться portable форматом, который бы открывался везде одинаково. Хотя,
а если сделать tarball с шрифтами, DVI и EPS?
Некоторые почему то упорно хотят сравнивать PDF с DjVu. Опять же, я не
сведущ, но... первый поддерживает полностью векторные примитивы, а
второй это чисто растровый -- как их вообще можно сравнивать? Они для
совершенно разных задач. Сравнивать их можно только если вопрос хранения
сканированных документов -- DjVu безусловно лучше (для lossy). Или
сторонники DjVu считают что вообще документы должны быть
сканированными/отрендеренными -- мол простота и эффективность? Что-то в
этом есть, но high-quality то вектор тоже хочется, особенно когда речь
про просто текст.
В комментариях в первые увидел упоминание XPS формата от Microsoft.
Вообще не слышал о нём. Но... раз Microsoft, то наверное гиблое дело, не
стоящее рассмотрения. Буквально на днях секретариат отправлял Word файл,
который надо распечатать и заполнить. Пошёл к ним, чтобы они же мне его
и распечатали -- в итоге на Windows/Microsoft Office он открылся как-то
криво и при мне его руками чуть переформатировали. То есть, даже в своей
экосистеме Microsoft не в состоянии сделать формат который бы одинаково
везде отобразился (речь только про отображение).
Во всяких сравнениях, если я вижу что PDF is more advanced, more
powerful и всякое такое прочее чем PostScript, то сразу закрываю этот
бред. Как можно говорить о более продвинутом формате, когда на другой
чаше весов буквально язык программирования?
Насколько понимаю, изначально первые версии PDF были типа урезанной
версией PostScript -- где нет полноценного языка, но достаточно
возможностей для текста, картинок, разбиения на страницы (с нужными
размерами). В PDF первой версии (1993!) сразу же была даже поддержка
гиперссылок и закладок. Все последующие нафиг уже нужны.
В итоге, среди всего разнообразия форматов для гарантированного
отображения/чтения/печати есть только PostScript и PDF. И оба всё равно
зависят от того, есть ли встроенные шрифты, как минимум. Первый ужасен с
точки зрения безопасности. Второй с точки зрения сложности, но тут я не
силён и не знаю -- может быть речь идёт о всех последующих модификациях
формата? PostScript на всяких проприетарных системах не откроется, ибо
из коробки ничего нет. PDF всё же поддерживается для отображения везде
(из коробки в Windows, насколько помню, конечно же, не было). Пусть он и
кака, но пока это вроде меньшее из зол. Ну и я бегло посмотрел на
объяснения и примеры PDF документов (только базовый функционал, 1.0) --
не тривиальный, но вроде и не архисложный формат, с точки зрения
программиста (если считать что рендеринг шрифтов это отдельная и не
связанная задача).
Sergey Matveev [Tue, 13 Oct 2020 11:31:59 +0000 (14:31 +0300)]
NetHack и redo
https://nethackwiki.com/wiki/Curses_interface
До последнего дня игры в NetHack я использовал в нём обычный tty
интерфейс. Потом обратил внимание что есть curses вариант. Пытался
собрать с ним, но в NetHack поддержка такого количества платформ (далеко
не только POSIX), что пришлось помучиться. И недобрыми словами я крыл
Makefile-ы эти: изменяю я какой-нибудь из make-ов, а изменённые
команды/опции всё равно не применяются, так как *часть* makefile-ов
генерируемая. В итоге делал классику: clean, а дальше сборку с нуля. В
своих проектах я уже конкретно привык что зависимость от правил сборки и
конфигов всегда есть, честно пересобирая только нужное. То есть, даже
качественный старейший проект, всё равно не может на Makefile-ах сделать
нормальную инкрементальную сборку. Make-аллергия у меня.
Но curses интерфейс стоит того! Сама карта толком то не меняется, хотя
на ней немного больше информации видно из-за разных цветов фона и самого
символа, плюс возможностей жирных цветов. Но главное это то, что лог
сообщений хорошо становится виден, что очень помогает!
Sergey Matveev [Tue, 13 Oct 2020 08:55:35 +0000 (11:55 +0300)]
Про разный API доступа к файлам в Linux
https://www.evanjones.ca/durability-filesystem.html
Интересное краткое рассмотрение различных API вызовов. Не знал что ext3
при вызове fsync-а сбрасывает вообще полностью все грязные страницы
связанные с файловой системой, а не только с текущим файлом. Правда вот
рекомендация делать fallocate, потом заполнить нулями, чтобы не
вовлекать обновление метаданных при дозаписывании данных -- будет
бесполезна на ZFS, где достаточно только fallocate-а, ибо всё равно
будет copy-on-write. Ещё много ссылок на другие интересные по этой теме
статьи.
Sergey Matveev [Mon, 12 Oct 2020 15:12:15 +0000 (18:12 +0300)]
Очередное предложение налога на бездетность
https://lenta.ru/news/2020/10/12/nalog/
Какая-то из "Совета матерей" предлагает ввести налог на бездетность, ибо:
Мы говорим о тех, кто сознательно отказывается от решения родить
ребенка. Не любят, пусть платят налог и не любят дальше. Либо любит
детей и рожает, либо не любит и платит за то, что не любит
Сколько ненависти вызывает (но наверное на это и упор)! Причём тут
любит/не любит детей? Или хочет/не хочет детей? Мало хотеть -- нужно
чтобы тебе ещё кто-то согласился дать. Это же не клик в Госуслугах.
Дура какая-то тупая, ибо должна понимать что этот процесс требует двух
кооперирующих людей. Женщины готовы что ли работать и кооперировать с
кем попало? Пф, этим зажравшимся подавай кого получше, только и успевают
нос воротить. Безусловно ничего плохого в том чтобы желать лучшего, the
best of, нету. Вот только при этом они ещё хотят и деньги стричь. Она
будет отшивать и кидать направо и налево, потом всё же залетит от
очередного "бойфренда", в мужья нафиг никого не будет брать (все не
подходят), но зато все холостяки отшитые будут отстёгивать дань в казну,
которая пособия/поощрения матерям будет платить.
Сейчас другие, куда лучшие времена -- женщина в одиночку способа и
работать, и накопить на квартиру, и вырастить ребёнка. Мужик становится
нужен только для любовных утех и возможно для дополнительного
материального дохода. При мужике то она всегда, при желании, будет,
меняя одного неугодного на очередного.
Цель налога: заставить бороться c этим наглым грабежом и измываться над
собой, пытаясь стать мужем, показав что "хрен вам, но налог платить не
буду!"? Не сработает. Как и с Михалковым -- всенародным грабителем. Но с
ним то всё понятно -- большая жирная шишка, кои у нас постоянно
водились. А тут просто окончательно потерявшие совесть женщины. Или цель
налога: подстегнуть быстрее залетать женщин, чтобы самим не пришлось
налог платить, да и поскорее получать из казны пособия? Что ж, в этом
случае дети будут появляться, не поспоришь. Все способы, для достижения
такой важной цели, хороши?
"бороться с низкой рождаемостью в стране и миграцией", "мы не рожаем
детей, значит ее будут заселять те, кто сюда приедет"... ну я уже писал
что россиянин для россиянок -- априори кусок говна, по сравнению с
*любым* иностранцем (a88a1485c923d643a22117da7524e5cc90d42625), даже
мигрирующим из ближнего зарубежья. Как бы... мигранты дураки что ли
отказываться от легкодоступных русских?
Конечно, любая женщина мне бы ответила: а что ты, кусок говна, сделал
чтобы завоевать кого-нибудь? Уже писал что на полном серьёзе почти все
мои действия и решения уже с средней школы были направлены на то, чтобы
иметь больший вес в обществе и, соответственно, больший шанс понравится
женщине, чтобы с ней создать семью. И чуть ли не всё сопровождалось (про
себя) вопросом "а сделает ли это меня весомее/привлекательнее (как
потенциального мужа) в глазах женщины?". Ну и, соответственно, попытки
подружиться, сходить куда-нибудь вместе, найти совместное увлечение
чем-то, темы для разговора, и т.п.. Всё то, что обычно вроде бы все и
делают для попыток сблизиться. С годами уже даже просто чисто
человеческого уважения от них хрен получишь, поэтому послал в жопу эти
попытки, а то себя не уважать. А должен был бы продолжать и продолжать,
спонсируя к тому же ещё и цветочных дел мастеров, кафе/рестораны всякие,
ювелиров? Боюсь что упрёки и намёки в никчёмности и несостоятельности,
тонны сожжённых нервов меня быстро в могилу сведут и пользы для общества
будет меньше, чем ещё имеющиеся шансы приносить пользу на работе.
Sergey Matveev [Mon, 12 Oct 2020 03:19:12 +0000 (06:19 +0300)]
А оно может показывать nytimes.com?
https://fabiensanglard.net/carbon/index.html
В статье человек поменял свой MacBook на ThinkPad Carbon X1. Пишет, что
если раньше люди задавались вопросом "может ли оно запустить Doom?",
потом задавались "может ли оно запустить Crysis?", то теперь "может ли
оно запускать nytimes.com?". Наслышан об ужасах их сайта уже не в первый раз.
Sergey Matveev [Sun, 11 Oct 2020 08:04:43 +0000 (11:04 +0300)]
NetHack
https://en.wikipedia.org/wiki/NetHack
Что-то в блоге у меня вообще отсутствует упоминание того, что я играю
иногда в NetHack. Иногда появляется, раз в год, сильное желание поиграть
в эту RPG. Вчера я как засел с самого утра, так до ночи и проходил его в
wizard mode (также известный как debug mode). И ещё раз убеждаюсь что
мир подобных RPG -- как будто параллельный для mainstream-овых. Такое
невероятное количество всякого разнообразия всего и вся, придумок и
задумок, мелочей и тонкостей! Может я и ошибаюсь конечно, но всё же
иногда смотрю всякие рецензии, новости и walkthrough про игры, но
"mainstream"-овые RPG невероятно просты и скучны кажутся на фоне
NetHack. А ведь есть ещё и куча его fork-ов, более навороченных и
продвинутых.
В игре так много всяких нюансов, что я постоянно сижу в NetHack Wikia.
По идее я, конечно же, сам должен догадываться и пробовать всякое, ибо я
теряю наверное 70-80% всего удовольствия от познавания приёмов и мира
NetHack-а. Но, я хочу потратить день, а не месяцы на неё, ибо
нетерпелив. И про каждую мелочь в этой wiki отдельная страница с кучей
интереснейших фактов применения.
* Например полотенце: я знал что им можно вытереть жирные руки, из
которых выпадает оружие. Знал что его можно надеть на голову чтобы
"активировать" телепатию. Но вот догадаться намочить его, чтобы
использовать как оружие -- не смог бы. А ведь мы в американских
фильмах сколько раз видели как лупят друг друга мокрыми полотенцами:
https://nethackwiki.com/wiki/Towel
* Тролли -- один из сотен самых разнообразнейших монстров. Неприятен
тем, что может восстать после смерти. Как это предотвратить:
https://nethackwiki.com/wiki/Troll
* Съесть его труп. Хотя он может и ожить, пока его поедаешь
* Дать своему питомцу его съесть
* Сделать из него консервы (буквально)
* Закрыть в контейнере (сундуке). Но не факт что поможет, поэтому
стоит сундук в сундуке делать
* Продолжать его просто убивать, ибо 25% что он больше не оживёт
* Поместить в ice box, но это просто оттянет время оживления
* С помощью трупа василиска окаменеть тролля. А можно надеть кольцо
конфликта и наблюдать как тролль будет драться с василиском до
окаменения
* Полиморфировать его труп во что-то другое (отдельная магия)
* Сбросить труп в лаву или воду. Только бывают и водяные тролли,
поэтому есть шанс что не поможет
* Принести труп в жертву в храме
* Найти яму, скинуть в неё труп, а сверху сбросить в неё валун
* Заманить тролля в уровни Rogue (особые уровни в игре), где не
остаются трупы и там его замочить
* Обрушить на тролля разводной мост (у замка)
* Дезинтегрировать тролля -- "поместить" его между собой и чёрным
драконом, пускающим дезинтегрирующие лучи
* Полиморфироваться в чёрного дракона самому и пустить в него
дезинтегрирующий луч
* Переварить его. Для этого или оставить его рядом с пурпурным червем,
или с trapper-ом или с lurker above-ом, которые проглатывают жертву,
неспешно переваривая. В них можно полиморфироваться для этого
* Превратить в зелёную слизь, стравив с слизнем
* Устроить им геноцид. Буквально в игре есть заклинание геноцида,
которому можно сказать целый класс существ для уничтожения
* Поместить тролля в магический bag of holding, но чтобы мешок был
прОклятым и регулярно проверять его содержимое. Из-за прОклятого
статуса есть шанс что сумка уничтожит без следа труп
* Полностью заполнить комнату/уровень монстрами так, чтобы троллю
просто негде было восстать
* Уничтожить контейнер в котором его труп. Положить магический bag of
holding в другой bag of holding, вызвав магический взрыв. Или
полиморфировать контейнер
* Оставить труп рядом с желатиновым кубом, который его неспешно
поглотит
И это наверняка не полный список того как его можно убить.
* Если ослепили, то есть тоже не один десяток способов восстановить
зрение. Но, быстро пробежав по диагонали глазами, заметил очень
знакомый способ из жизни. Что полезно есть для глаз? Морковку! Вот и в
игре, съев морковку, зрение восстанавливается. И таких мелочей в игре
тысячи!
* Как можно применить масло? https://nethackwiki.com/wiki/Oil
* Выпить и навредить своей wisdom
* Смазывать скрипящие плиты, предотвращая срабатывание ловушек
* Перезаправлять лампы. При этом, если заправлять уже зажжённую лампу,
то всё у вас взорвётся/загорится в руках
* Можно удалять ржавчину с оружия или брони
* Можно поджечь и использовать для освещения
* Можно поджечь и бросить во врага, как коктейль Молотова
Чуть ли не на каждой странице wiki можно надолго засесть офигевая от
разнообразия всего что можно делать и творить и как хитро использовать
ту или иную вещь.
В игре очень много юмора! С одной стороны это чисто толкиеновский мир. С
другой есть и скандинавская мифология, вампиры/оборотни всякие, Всадники
Апокалипсиса, монстры типа "квантовой механики", суккубы (ага,
совращающие и раздевающие), лепреконы (тырящие деньги), десятки видов
собак/шакалов/волков/котов/тигров/пантер/леопардов и прочих обычных
животных, горгульи, орки/хоббиты/dwarf-ы/гномы/люди, мозгососы с
щупальцами выпивающие мозги, гомункулусы и гремлины плодящиеся, мимики,
нимфы, каких только зомби/дъяволов/привидений нет. Дальше я увидел что я
всего-лишь 20% списка монстров проглядел и решил что я за сегодня не
смогу их всех перечислить. А ещё и монахи, самураи всякие (с шурикенами,
вакизаши, катанами), рыцари. И ещё десятки монстров которых я не знаю
перевода и даже не представляю кто они. Чую что тут и всякая китайская
мифология тоже есть. Ага, а ещё реально есть кот Шрёдингера.
Но тут и отсылки к Zork-у, так как деньги тут zorkmid-ы! Отсылка к
Толкиену -- Всадник Апокалипсиса Смерть говорит ВОТ ТАК. А ещё есть
много вещей современного мира (скальпели, стетоскопы) -- но это я тоже
отношу к миру Zork-а. Среди персонажей можно играть за археолога,
имеющего бумеранги (из динамика полёта реально соблюдается, и она
анимирована), хлыст (тоже с особой своей динамикой, которым можно
выбивать оружие из рук противника, в том числе) и шляпа федора (отсылка
к Индиане Джонсу). За туриста, который самый слабый и не обладающий
способностями... но который, после прохождения Квеста, получается
золотую кредитную карту (ими кстати можно открывать замки), которая
может заряжать вещи. С такой картой и кучей всяких волшебных палочек, у
которых теряется заряд, он превращается в очень опасного персонажа. А
его фотоаппарат со вспышкой может отпугивать монстров. А монах получает
penalty за использование оружия, а не своих голых рук для борьбы.
Кажется что он слаб? Лишь по началу. Ибо он единственный у кого есть
возможность прокачать своё умение голых рук до Grand Master-а.
Я играл в wizard/debug mode. Это когда я могу пожелать ЛЮБУЮ вещь. Могу
идентифицировать всё что угодно, раскрыть любую карту. В общем, иметь
полный cheat god mode. Но даже с ним, это очень не просто пройти игру.
Вчера я например вообще не проходил Квест и не убивал Влада Вампира,
хотя они нужны для получения квестовых вещей для совершения Обряда
(прочитать Книгу Мёртвых, зажечь Канделябр с 7-ю свечами) чтобы попасть
в последние уровни Гегенномы. Я:
* не занимался проблемами идентификации вещей. А ведь есть сотни способов
чтобы понять что у вас за зелье, палочка, свиток
* не занимался проблемой определения BUC статуса вещей (проклято,
освещено или "обычно). А ведь проклятая вещь может принести самосвал
проблем. Это дичайшая задача и проблема по определению BUC-а
* не занимался особыми подходами с кучи монстров. Например disenchanter
буквально занимается ухудшением показателей вашего оружия. Другие
могут проклинать ваши вещи. Например проклянут вашу сумку, она станет
в несколько раз тяжелее и под её ношей вы не сможете даже поднять
руку -- вас на месте и убьют
* в начале игры я наелся всех видов драконьего мяса и других существ,
чтобы сразу же получить защиту от огня, ядов, сна, и т.д.. Сразу же в
начале я обвешался кучей крутейшей брони со всякими магическими
отражательными способностями. Поэтому 95% всех атак я просто
игнорировал и не имел с ними проблем
* я вообще не занимался своим питомцем, оставляя его на первом уровне. Я
не высиживал яйца монстров, которые могли бы стать ещё одними
помощниками. Я не укрощал ни одного монстра, чтобы он мне помогал или
хотя бы не был бы против меня. Я ни разу не ездил верхом, хотя в игре
прям есть седло
* я ни разу не использовал двуручный метод борьбы. Не использовал такие
оружия типа Мьольнира, который можно кинуть, он нанесёт пушечный урон,
а потом ещё и вернётся назад, рискуя, если я не в кондиции, врезать и
мне, а то и разбить склянки в инвентаре и поломать палочки волшебные
* я не парился с материалом вещей и не имел с ним проблем. Деревянные
вещи могут сгореть. Железные заржаветь. Медные/железные от
электричества уничтожится. Кожа от кислот всяких. Я делал себе особые
fireproof/rustproof вещи
* я не особо торговал чем-либо в магазинах
* я ни разу не молился богам, никогда не парился о своём поведении и
умалении этих богов, не приносил им жертвы. Хотя, судя по wiki,
общение/действия с богами -- невероятно много профита может приносить.
Я не парился что, будучи человеком/эльфом, ел себе подобных. Хотя в
игре на любой чих есть реально понятия канибализма и кучи других
характеристик
* я не испытывал проблем с забыванием заклинаний или амнезией. Я просто
перечитывал в очках, при свете, blessed магические книги для освежения
памяти
* я только вчера узнал что в игре можно заниматься самой настоящей
алхимией, мешая всякие зелья и получая очень и очень нехилые
результаты
* я не парился с зарядом волшебных палочек или других приспособлений
(много у кого есть понятие заряда). Я просто желал себе новую. Хотя
тема заряда, после которого может палочка взрорваться, очень сложна
* я не занимался улучшением своего оружия или брони (enchantment),
просто желая себе сразу же супер прокачанное
* я никогда не отгонял монстров от себя, написанием Elbereth или стуком
в какие-нибудь громкие барабаны. Я не призывал к себе питомца свистком
* возможность написания чего-нибудь на полу или других предметах --
важна тем, что позволяет многое понять о неидентифицированном
предмете. Я ничего этого не делал ни разу
* я не имел проблем с видимостью. Чаще я играю за гнома или эльфа, у
которых есть инфракрасное зрение. А так как я ем мясо floating eye, то
получаю врождённую способность к телепатии, благодаря которой
чувствую, знаю где есть монстры и какого они типа. А для путешествия
по карте я просто её рисовал в голове или магией или wizard mode-ом
* я не занимался долблением туннелей не магией или не wand of dig, а
ведь можно и оружием же землю рыть, или специальными приспособлениями
для этого
* чтобы не иметь проблем с монстрами которые могут схватить в объятия, я
сразу себе вызываю плащ покрытый жиром. Также жиром покрываю шлем,
чтобы mind sucker своё щупальце не мог применить. Жир изнашивается,
особенно после водных процедур, поэтому я просто желаю себе can of
grease и снова всё им покрываю, вытирая полотенцем руки, если
испачкал.
* я никогда не занимался написанием магических свитков или книг. А ведь
в игре есть и волшебный маркер и чистая бумага (которая также
получается если исписанный свиток побывал в воде) и чистые книги.
Можно самостоятельно делать себе свитки. Например свитки заряда,
которыми заряжать палочки. А ещё можно написать роман (novel), читая
который, будут выдаваться цитаты из книг Терри Пратчетта
* у меня мало было проблем с нехваткой места или большим весом, так как
я себе сразу желал освещённые магические bag of holding. А вообще надо
заботиться о своём снаряжении, делать схроны, заботиться чтобы их не
растащили монстры
В общем, я наверное только 10% от всех возможностей игры видел и трогал.
И это всё равно не так просто её пройти до конца, "честно" сбегав в
Квест, к Владу, к Молоху, потом вернутся назад, учитывая что Амулет
Йендора всячески вредит, мешает перемещаться между уровнями, регулярно
может появляться Волшебник Йендора и этот амулет тырить (а ещё оставлять
подделку амулета, ничем визуально не отличающуюся).
Игру я полностью прошёл только два раза за всё время. И оба раза самое
самое впечатляющее для меня это самый конец игры. Когда нужно пройти
через элементальные и астральные миры. Я с трудом представляю как их
штатно можно пройти. Только если иметь с собой телегу из аптечек и
всякой защиты и кучей атакующих штук. Я с трудом прохожу, учитывая что я
прокачан как никто, всякими wizard желаниями. Plane of Earth -- жопа,
кажется что сложнее быть не может. Попадаешь на Plane of Air -- вот
теперь понимаешь что такое точно кирдык. Plane of Fire разбивает эти
мысли вдребезги. А потом контрольный Plane of Water, где телепорт в
астральный мир вообще ещё и перемещается, не стоит на месте. Я его
только с помощью debug mode-а находил. А если штатно, то это дико много
ходов и сил надо потратить, особенно учитывая мощнейших врагов постоянно
нападающих. Не подготовился к заклинаниями копания земли? Тогда будешь
сотни ходов пытаться выдалбливать землю своим оружием, под постоянным
натиском врагов. Не подготовился к возможности летать в воздухе? Ну
например можно стрелять из луков, кидать что-нибудь -- чтобы по закону
сохранению импульса улетать в противоположном направлении, опять же, под
натиском мощнейших врагов. А ещё можно угодить в молнию, которая взорвёт
всё что есть металлического в инвентаре. А в мире воды, если нет ничего
чем можно было бы дышать под водой, то остаётся только перемещаться
между абсолютно рандомно перемещающимися водяными пузырями. Вот в мире
огня у меня вообще проблем не было ни разу, но возможно потому что куча
защиты от огня имеется, плюс левитация, с которой я пролетаю над
потоками лавы.
Но, снова, это всё полностью меркнет на фоне астрального мира,
последнего уровня игры. Очевидно, я в принципе не знаю кучу приёмов.
Вчера прочитал что палочкой телепортации можно и врагов куда подальше от
себя отправлять. Но в астральном мире, мощь всех врагов просто
невероятна! И я молчу о наличии Всадников Апокалипсиса, которые и
возрождаются и могут очень очень быстро тебя убить. Смерть уменьшает
максимальные HP. Голод -- дьявольски сильно уменьшает насыщенность и
буквально можно только несколько шагов успеть сделать и откинуть концы
от истощения. Причём, вот карта астрального мира: https://nethackwiki.com/wiki/Astral_Plane
Я появляюсь в самой нижней его части. Задача: добраться до одного из
трёх алтарей и даровать своему богу Амулет. Я почти погиб, будучи
прокачанным, уже только просто добравшись до середины карты по
горизонталли. Просто шагу нельзя сделать, ибо сплошные монстры окружают.
А в какой именно алтарь? Он должен соответствовать твоему alignment
(lawful, neutral, chaotic), но заранее не известно где какой алтарь!
Поэтому, с 1/3 вероятности можно попасть в нужный, в котором хотя бы
священник не будет тебя атаковать и мешать. А в остальных случаях ещё и
он нападёт, а тебе придётся выбираться из помещения с узкой дверью и
валить через армии врагов к другому алтарю. И не забывать что у каждого
алтаря есть свой Всадник Апокалипсиса (Смерть, Болезнь, Голод) --
наверное самые мощные враги в игре. Пока идёшь к одному алтарю, то есть
шанс что тебя настигнет только один Всадник, а другие не успеют дойти.
Но, попав не туда, отправляясь к другому алтарю, гарантированно и ещё
один добавится к списку врагов. Ах да, на всех этих мирах нельзя
сохраняться, нет возможности оставлять bones files для продолжения игры.
Поэтому "штатные" подходы типа save scumming-а не прокатят.
В общем, NetHack это просто величайшая RPG! Это прям буквально отдельный
мир от mainstream-овых. Но, первое как её хочется охарактеризовать:
сложная. В ней нет уровней сложности. В ней сплошной рандом и есть
преспокойная вероятность что уже на первом уровне окажется какой-нибудь
дракон, возможно от которого удастся убежать. Возможностей умереть:
тысячи. Начиная с первого уровня. А возможностей сделать YASD (yet
another stupid death) ещё больше:
* в рукопашной сразиться с летающим глазом, он вас парализует, а в это
время маленький тритон, пока вы парализованы, вас неспешно обладает.
От паралича есть куча защиты, но о ней надо помнить, носить с собой,
не терять. А перед этим ведь кто-нибудь может кинуть склянку с
какой-нибудь гадостью и ваш свиток с защитой/избавления от паралича
сгорит, или зелье взорвётся или у вас просто украдут это
* при попытке попить из фонтана (в надежде получить возможность
желания), может (редко, но может) появится водяной демон
* умереть от голода, потому что откладывали надолго трапезу, а когда её
начали, то на вас напала орава монстров, не давая перекусить
* умереть от того что подавились и задохнулись от обжорства
* моё любимое, так как я на это сам попал уже на уровнях Гегенномы:
свалиться в яму, которую не заметил, держа в руках василиска, в этой
же яме окаменев от соприкосновения с ним голой частью тела. Я его труп
при этом использовал как оружие: направо и налево им размахивая,
окаменевая монстров, пока просто не споткнулся и упал в яму с ним
* если много вещей, большая тяжесть, то легко утонуть в воде, не сумев
выбраться на берег
* вызвав заклинание геноцида, уничтожив всех, к кому ты сам относишься.
Забыл что ты эльф и решил устроить им геноцид
* получив по репе кинутым яйцом василиска
* съев тухлую еду после молитвы (тут я не в теме что будет)
* заглянув в логово к Медузе, окаменев через один ход, забыв взять с
собой зеркало или надеть полотенце на глаза
* съев ещё после этого труп Медузы
* стрельнув wand of death, луч которой отразится от стен так, что
попадёт в тебя
* околачиваясь рядом с водоёмом, из которого тебя может схватить кракен,
моментально утопив (вчера с кракенами встречался, но покрытый жиром
плащ спас)
* устав что-то ожидать, зажав кнопку передвижения, не заметить как у вас
какая-нибудь нимфа упрёт супер пупер Stormbringer/Grayswandir и вас
порвёт от беспомощности простой тритон. Или же ваш питомец
проголодается, а это может быть и дракоша, и он уж будет вынужден
полакомиться вами
* ударив ногой по сундуку, чтобы сломать его замок (и открыть), забыв
что у вас мало жизней и считанные потерянные от удара единицы будут
фатальны
* упав с вашего пони когда он скачет (потеряв немного жизней, которые
тоже могут быть фатальными), будучи не
опытным наездником
* пожелав артефакт, не относящийся к вашему alignment, который будет
делать вспышки, отнимающие жизни, которые сразу могут унести вас на
тот свет
* забыв о возможности написать Elbereth (это есть в guidebook-е к игре),
отпугивающих монстров
* умерев от того, что забыл надеть amulet of live saving
* стоя рядом с разводным мостом Замка, играя на свистульке чтобы его
открыть (получив им по балде)
* забыв о защите головы и умерев от того, что у вас не останется мозгов
(mind flayer их постепенно высасывает, понижая intelligence)
* уронив (споткнувшись, или получив по рукам хлыстом/лассом) артефактный
меч, который имеет хороший шанс на обезглавливание, который поднимет
монстр и вас же им с первого удара и обезглавит
Плюс ещё тысячи забавнейших сочетаний событий. Типа разгневать своего
бога (я с этим не сталкивался, ибо в игре являюсь атеистом и эту тему
вообще не трогаю), который пульнёт молнию или дезинтегрирующий луч, а у
вас нет от них защиты.
Порог вхождения с одной стороны не очень то большой: узнали из короткого
help-а про команды и начали ходить по изначально относительно скучным
подземельям, как-то расправляясь с встречающимися монстрами. С другой
стороны он очень большой, из-за массы тонкостей и нюансов. Вместе с
игрой идёт большой и ёмкий guidebook, который бы стоило прочитать, но
который очень не хилых размеров. Дойти до Гегеннома -- вполне себе
можно, нормально, но это только половина уровней. В нём уже резкий
скачок по сложности (лично для меня). Но зато появляется уже куда
большее разнообразие всяких интересных мест и противников. Дойти в итоге
до Молоха -- вообще дичайшая сложность (учитывая что надо пройти ещё и
Квест и Влада, да и просто суметь добраться через Вельзевулов всяких).
Но потом куда более сложный путь назад с этим Амулетом. Кто прошёл
NetHack честно, без wizard/debug и explore mode -- в моих глазах герой.
Хотя, в wiki пишут что с валькирией это значительно проще чем с
археологом или туристом (последний так вообще nightmare nightmare
уровень сложности).
А кому и этой сложности мало, то в игре есть conduct-ы: нарушив какие-то
принципы/правила, conduct исчезает. Один раз помолившись ты перестаёшь
быть атеистом. Один раз отведав мяса, перестаёшь быть вегетарианцем. В
игре есть conduct-ы: прошёл без еды, был атеистом, никогда не бил
оружием в руках (монах например штатно в общем то должен только
рукопашной бить), был пацифистом (не понимаю как такое возможно), был
неучем (ничего не читал (книги, свитки)), всякая мелочь, типа никогда не
менял форму, был веганом, был вегетарианцем, был слепым (вообще в игре
абсолютно штатно можно самостоятельно себя ослеплять (закрыв глаза),
чтобы "включить" телепатию на полную катушку, и это частенько даже лучше
помогает чем наличие зрения), был нудистом.
Причём, это всё штатно заложено в игре не по приколу. Например, будучи
слепым, на алтаре нельзя увидеть какие вспышки возникают (и возникают
ли) если положить проклятую вещь на него. Но, а как же прочитать Книгу
Мёртвых, которая необходима для прохождения игры, пускай и ровно один
раз? Вот её то можно прочитать -- разработчики это всё предусмотрели. А
есть ещё не официальные conduct-ы: никогда не использовал Elbereth (это
я), никогда не имел питомца (технически это я, если отключу появление на
первом уровне питомца из конфига -- но один раз я с собой долго носил
какое-то яйцо и у меня в инвентаре оно в итоге не стухло, а из него
кто-то родился, кто стал моим питомцем (уже забыл кто, но это могут быть
и даже драконы)), выживальщик (никогда не умирал и не использовал амулет
of life saving), полиморфированный (прошёл всю игру в другом обличии),
extinctionism (когда уничтожая n-ое кол-во определённого типа монстров,
они больше не появятся), целибат (не имея отношений с суккубами и
инкубами), toolless (не использовал сумки, рога единорога (без них
вообще сложно), свистки и поводки для питомцев, всякие там свечки и
лампы, полотенца, и десятки ещё полезных приспособлений), jewelryless (а
кольца и амулеты ценны!), invisibleless, conflictless, reflectionless,
teetotal (не употреблял алкоголь ни разу), permahallu (всю игру
галлюцинировал -- галлюцинации в игре кстати выглядят забавно),
permadeaf (не слышал всю игру, но это вроде не большая проблема) и ещё
тьма других.
Я мало чего знаю про fork-и и другие похожие игры. Возможно NetHack это
простейшая по возможностям игра. Знаю что Dwarf's Fortress вообще
совершенно другой жанр, но и там можно бесконечно рассказывать про
продуманность, возможности и интересности. ADOM, судя по описаниям,
имеет куда более сложную систему skill-ов. Я так и не понял разницу
между ADOM и NetHack -- в одном одно лучше, в другом другое. Возможно
это всё уже старпёрское и есть что-то ещё. Но меня впечатляет и текущий
NetHack! И очень много уважение к куче юмора в нём и отсылок.