]> Sergey Matveev's repositories - stargrave-blog.git/log
stargrave-blog.git
3 years agoBIG TCP
Sergey Matveev [Wed, 16 Feb 2022 13:42:44 +0000 (16:42 +0300)]
BIG TCP

https://lwn.net/SubscriberLink/884104/89d8ccf8f52ad9dc/
Если хочется передавать данные поверх 100GbE, привычными ~1500 байт
пакетами, то это более 8 миллионов пакетов в секунду. Процессору
остаётся 120нс для обработки каждого пакета.

В IPv6 давным давно в 90-х предусмотрели возможность передачи пакетов
большого размера (>64KiB), добавлением расширенного заголовка с 32-бит
размером.

Ну а в статье просто рассказ про набор патчей для Linux для поддержки
этих больших пакетов.

3 years agoПосмотрел "Новейший завет"
Sergey Matveev [Mon, 14 Feb 2022 20:22:43 +0000 (23:22 +0300)]
Посмотрел "Новейший завет"

https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D0%B2%D0%B5%D0%B9%D1%88%D0%B8%D0%B9_%D0%B7%D0%B0%D0%B2%D0%B5%D1%82
Как я могу относится к фильму, в котором визуализирован главный (для меня)
фидошный мем про холодильник (f5b1ebddf811eb35d626d63e80a8c7830c9c097c)!?
В фильме он буквально выпал с самолёта и приземлился на человека. Чего
не ожидал, того не ожидал.

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

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

Эпизод про озабоченного мне жутко понравился! Прям местами показывают
всё через мою призму восприятия, очень понимаю этого "апостола".

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

Хотя последние эпизоды (последний апостол и дальше) уже как-то как-будто
высосаны из пальца, скучны.

3 years agoDæmonarch -- Hermeticum
Sergey Matveev [Mon, 14 Feb 2022 17:21:15 +0000 (20:21 +0300)]
Dæmonarch -- Hermeticum

https://www.metal-archives.com/albums/D%C3%A6monarch/Hermeticum/2695
https://en.wikipedia.org/wiki/Daemonarch#Experimenting_(1998%E2%80%932000)
У Dæmonarch был только один альбом, но который я не знаю откуда но имею
на CD ещё со школьных времён. Наверное продавец порекомендовал из Irond
(закупался дисками у них на Горбушке). К Moonspell я равнодушен (ну
кроме того что вокалист имеет запоминающийся голос), но этот Dæmonarch
очень нравился и до сих пор продолжаю ставить!

Только сейчас увидел на Encyclopaedia Metallum что там использовалась
драм-машинка: а я то с самого начала удивлялся звуку и такой чёткой
монотонной долбёжке! Сразу почувствовал что что-то не так с их
барабанами.

А на Moonspell я был в живую и даже отец со мной ходил в 2015-ом.
Headliner-ами правда там были Dream Theater.

3 years agoЧереда поломок с zsh 5.8.1 продолжается
Sergey Matveev [Mon, 14 Feb 2022 16:48:24 +0000 (19:48 +0300)]
Череда поломок с zsh 5.8.1 продолжается

https://github.com/zsh-users/zsh-autosuggestions/issues/603
https://github.com/zsh-users/zsh-autosuggestions/issues/660
В 398f6985b90366c4fc0c2cc536922f681020109f много чего поломалось,
казалось бы, не взаимосвязанного. Но сейчас увидел что (лень проверять,
но с отключением асинхронной работы что ли?) autosuggestions всё равно
не делает подсветку своего предложения. Bugreport-ы уже завели. И...
дело не в autosuggestions, а в необходимости ещё обновить и
syntax-highlighting плагин. Но это всё чинит, действительно.

3 years agoДобронравов пожаловался на зрителей со смартфонами
Sergey Matveev [Mon, 14 Feb 2022 16:27:33 +0000 (19:27 +0300)]
Добронравов пожаловался на зрителей со смартфонами

https://lenta.ru/news/2022/02/14/dobonravov/
Всецело согласен со всеми его словами. Это просто лютое неуважение к
окружающим, ибо реально этот яркий светящийся экран жутко отвлекает.
Хорошо сказано что это разрушает магию театра которую пытаются создать.

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

3 years agozsh 5.8.1, zsh-autosuggestions и history-incremental-pattern
Sergey Matveev [Mon, 14 Feb 2022 11:33:19 +0000 (14:33 +0300)]
zsh 5.8.1, zsh-autosuggestions и history-incremental-pattern

http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=5e2205df9515fe28781e91896733a26d3441722f
Пока игрался с PS1 (6ea149598ae74304104b558b8e0024acf2c3b01a), то перед
сном обнаружил, что инкрементальный поиск по истории не работает. Точнее
не работает моя быстрая инициализация онного:

    beginning-history-incremental-pattern-search-backward() {
        zle history-incremental-pattern-search-backward ${BUFFER:gs/ /*/}
    }
    zle -N beginning-history-incremental-pattern-search-backward
    bindkey "^[[1;2A" beginning-history-incremental-pattern-search-backward

Когда я набрал "mu suck", нажал Shift-Up, то ожидаю что включится
инкрементальный поиск с уже вставленным "mu*suck" текстом. Вот последнее
действие упорно не выполняется.

Подумал что сломал PS1 как-то. Откатил. Не помогло. Вспомнил что обновил
zsh как-раз заодно с 5.8 до 5.8.1. Откатил до 5.8 -- помогло. Ну
очевидно что бага в zsh. Полез в их репозиторий смотреть diff между
релизами. Ничего подозрительного или странного, никаких обратно
несовместимых изменений.

Пока возился с этим, заметил что autosuggestions не всегда отображают
suggestion текст разукрашенным -- текст есть, но без применения стиля.
Явно и autosuggestions как будто сломался. Полез смотреть -- а у меня
явный checkout его предыдущей версии сделан. Хотя в более новой явно
сказано о поддержке zsh 5.8. Обновил autosuggestions, хотя и не помню
почему откатывал. Подсветка починилась, но инкрементальная история нет.
Вставляю print $BUFFER в функе -- всё имеется, всё на месте, явно беда с
zle вызовом.

Отключаю autosuggestions -- поиск по истории работает. Хотя бы понял что
беда именно с этим плагином. Пошёл смотреть его исходный код на тему
особенностей с поиском по истории, смутно понимая как он вообще устроен.
Благо что в начале плагина есть массивы с перечислениями всяких widget-ов
и что с ними надо как-то особо обходится. И в некоторых как-раз
перечислены widget-ы связанные с поиском по истории, но не инкрементальной.
Добавил их в ZSH_AUTOSUGGEST_IGNORE_WIDGETS -- всё заработало!

Сегодня заметил что как-будто пропускаются некоторые нажатия up/down при
поиске по истории. Действительно, чуть ли не каждый раз по два раза
приходится нажимать. Когда я смотрел README autosuggestions плагина, то
мне сразу не понравились фразы про асинхронную работу плагина. И оно
включено по умолчанию. Отключил -- решило проблему.

Обновление одного софта на минорнейшую версию, повлекло то, что другой
софт ломает третий :-). Позже смотрел на bugtracker autosuggestions и
там похожие проблемы наблюдались регулярно с widget-ами. Но, не смотря
на его странное качество (или по другому просто без хаков не выйдет его
сделать?), он über-полезнейший и must-have в моём арсенале!

3 years agoВокал Сакиса Толиса
Sergey Matveev [Mon, 14 Feb 2022 09:43:16 +0000 (12:43 +0300)]
Вокал Сакиса Толиса

https://ru.wikipedia.org/wiki/%D0%A2%D0%BE%D0%BB%D0%B8%D1%81,_%D0%A1%D0%B0%D0%BA%D0%B8%D1%81
https://www.youtube.com/watch?v=hwxd2JIqBQ0
https://www.youtube.com/watch?v=ua1sV0iheWU
Пишут про уникальный вокал вокалиста Rotting Christ. Действительно,
такую манеру пения не встречал. Да и в целом они конечно однообразны, но
заводны и легко слушаются. Хотя я пока только с поздним творчеством
ознакомился. Клёвая группа!

3 years agosfeed RSS/Atom reader
Sergey Matveev [Mon, 14 Feb 2022 09:23:43 +0000 (12:23 +0300)]
sfeed RSS/Atom reader

https://sgauthier.fr/blog/minimalism_3_sfeed.html
Автор пишет, что пришлось искать замену Newsboat, который стали писаться
на Rust. В общем-то я Newsboat-ом доволен, но использую его последнюю не
Rust версию. Пока проблем не вижу с этим. Если понадобится какое-то
хитрое скачивание статей, то он может читать feed-ы из файлов сторонних,
которые можно качать как пожелаешь. Я часто не понимаю людей которые
перестают пользоваться ПО, если оно перестало поддерживаться. Вопросы
безопасности -- тут всё понятно. Но если это какой-нибудь newsreader, то
он что, перестаёт работать что ли с прекращением поддержки? Я вот GoVPN
вообще не трогал сколько лет, но на 95% уверен что он (а сборочница
портов FreeBSD это доказывали) и собирается и работает точно так же как
и прежде. Но если от Newsboat придётся избавляться, то буду смотреть в
сторону sfeed. Хотя я как-то бегло уже глядел и awk мне не понравился.
Но это чисто субъективная вкусовщина (лишь бы под BSD awk работала).

3 years agoreleases.atom.zsh
Sergey Matveev [Sun, 13 Feb 2022 18:31:26 +0000 (21:31 +0300)]
releases.atom.zsh

http://www.git.stargrave.org/?p=releases-feed.git;a=blob;f=releases.atom.zsh
После 35be2372fa3caa2b73a24eca45c1333159519ba8 замучила совесть за то,
что у моего софта нет никаких средств оповещения о выходе новых релизов,
кроме иногда (например я это редко делаю для GoGOST того же) публикуемых
писем в рассылки. Причём отдельных рассылок только для announcement-ов нет.
latest-version.txt это конечно интересно, но всё же уже имеется Atom
формат для задач оповещения об изменениях.

Добавил в своих проектах генерирование releases.atom и
"<link rel="alternate" title="Releases" href="releases.atom" type="application/atom+xml">.
Atom генерируется на основе *.meta4 файлов, ссылаясь на них, используя
их mtime в качестве времени у записи в feed-е.

3 years agoPaster поддерживает asciicast-ы
Sergey Matveev [Sun, 13 Feb 2022 17:52:45 +0000 (20:52 +0300)]
Paster поддерживает asciicast-ы

http://www.paster.stargrave.org/
http://www.paster.stargrave.org/Asciicast.html
Для своего демона заметок (24cd89da8ad2d37061f2fd9867ed7e0472fc2900)
добавил возможность автоматической генерации .html-ек для asciicast-ов
(2d4333e8dc6ac239a490ad940255025414702449). Заранее надо подложить
asciinema-player на сервер, указать его имя для paster демона, а дальше
все ".cast" файлы будут сопровождаться ".cast.html" версией с
подключением JavaScript проигрывателя этого asciicast-а. Конечно же
возможность скачать ".cast" остаётся, чтобы это локально без JS
проигрывать по человечески.

Использую при этом старую версию player, которая ещё не была переписана
на Rust/WASM, ибо она работает даже в Xombrero броузере, ну и Firefox
последнем независящем от Rust. В курсе что есть более новая версия,
более быстрая, в несколько раз более компактная, но она даже в Firefox
не работает у меня.

3 years agoСнова играюсь с изменением PS1
Sergey Matveev [Sun, 13 Feb 2022 17:36:54 +0000 (20:36 +0300)]
Снова играюсь с изменением PS1

http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=9e0a9b2f9d90cf0846f4719b03bde806c301543c
http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=356830a520698605c70154fa2750189b0273566b
http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=6a00c557dd831561223801b4ed93b9ac48d61d89
Решил что надо бы показывать нахожусь ли я сейчас в Python virtualenv,
нахожусь ли во включённом autoenv. Плюс показывать нахожусь ли в git-е.

Для последнего решил использовать родной zsh функционал для работы с
VCS. Посмотрел на код -- идёт вызов git rev-parse, но хотя бы никаких
"git status" тяжёлых не вызывается при всём этом (что тормозило).
Показываю только 8 символов от хэша коммита, плюс особый режим типа того
что мы сейчас находимся в "rebase".

Для отображения virtualenv/autoenv показываю однобуквенные флаги,
которые храню в уже имеющимся PSVAR массиве.

Прежде у меня PS1 каждый раз, при каждой инициализации строки
приглашения или смене vi-режима, создавалась с нуля, проверяя что и как
надо выводить, динамически её изменяя. Теперь использую родные
возможности %(X.Y.Z) if/then/else условий и PROMPT_SUBST, который
предварительно делает раскрытие переменных. PS1 устанавливается только
один раз при запуске, а дальше динамически меняются только _VIMODE и
PSVAR переменные, плюс vcs_info сообщение.

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

Почти всё показывается только опционально. Минимально строка приглашения
показывает только: путь до текущей директории (два последних элемента) и
vi-режим. Максиально строка может показывать (разделяя элементы разными
цветами и стилями): путь, "V" флаг virtualenv, "A" флаг autoenv, кол-во
фоновых задач, режим git-а (rebase, amend, и т.д.), часть хэша git-а,
не успешный код возврата команды, время выполнения команды (если больше
секунды), vi-режим. Насчёт информации о Git-е я не уверен в её пользе,
буду смотреть.

3 years agoПрямоугольное выделение в tmux
Sergey Matveev [Sun, 13 Feb 2022 17:34:41 +0000 (20:34 +0300)]
Прямоугольное выделение в tmux

Узнал что в tmux (ну да, кто ж читает manual-ы!) можно делать
прямоугольные выделения текста, просто нажимая "v" для переключения
режимов "построчного"/"прямоугольного".

3 years agoiWatch будут искать "партнёра"
Sergey Matveev [Sun, 13 Feb 2022 16:53:27 +0000 (19:53 +0300)]
iWatch будут искать "партнёра"

https://habr.com/ru/post/651079/
https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B2%D0%B5%D1%81%D1%8C_%D0%B4%D0%B8%D0%B4%D0%B6%D0%B5%D1%8F
Часы будут выбрировать если рядом окажется подходящая "пара". Сразу
напоминает серию "Чёрного зеркала", когда компьютер говорил кому, с кем,
сколько нужно пробыть в интимных отношениях. Такое впечатление, что
"Чёрное зеркало" это прям вестник того что ждёт всех нас в будущем.

3 years agoMegadeth отказался играть с Rotting Christ
Sergey Matveev [Sun, 13 Feb 2022 13:50:25 +0000 (16:50 +0300)]
Megadeth отказался играть с Rotting Christ

https://en.wikipedia.org/wiki/Rotting_Christ#Publicity
Лидер Megadeth отказывался играть с Rotting Christ в Греции. Абсолютно,
по моему, недостойное поведение металиста, тем более, будучи гостем в их
стране.

3 years agoПоиграл в Манчкина
Sergey Matveev [Sun, 13 Feb 2022 10:01:48 +0000 (13:01 +0300)]
Поиграл в Манчкина

https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%BD%D1%87%D0%BA%D0%B8%D0%BD_(%D0%B8%D0%B3%D1%80%D0%B0)
Слышал название игры много раз, но не знал про технику и принцип игры
совсем. Очень понравилась! Все говорили что чем больше людей в ней, тем
лучше -- понял почему, явно будет заметно веселее. Так как знаком с
Magic The Gathering, то многое про себя map-ил на термины из неё. Эдакая
ultra-lightweight/simplified версия MtG.

3 years agoВы можете объяснить этот пропуск в вашем резюме?
Sergey Matveev [Fri, 11 Feb 2022 19:33:24 +0000 (22:33 +0300)]
Вы можете объяснить этот пропуск в вашем резюме?

https://irreal.org/blog/?p=10316
... я пытался сделать сложный TikZ рисунок и потерял счёт времени.
Очень хорошо понимаю автора этого, сам терял его когда рисовал в TikZ.

За свою жизнь я ни разу не делал ни одной презентации в PowerPoint и
аналогичных программах (даже не знаю название в Open/LibreOffice).
Всегда это был либо Beamer, либо скрипты внутри Vim или что-то подобное.
Чертежи делал в QCad. И вот схемки не помню делали ли когда-нибудь в
чём-то кроме TikZ, ибо очень уж напрягает меня тот факт, что они не
детерминированны, так сказать: всё делается же типа на глаз и как
выйдет, так и выйдет. Наверняка в каком-нибудь Inkscape/Xfig можно и
плясать от узлов сетки какой-нибудь, но небось геморройно и проще будет
взять настоящий CAD для этого. Всё это конечно я брал только если в
Gnuplot или Graphviz нельзя сделать.

3 years agoЗаценил The 3rd and the Mortal
Sergey Matveev [Thu, 10 Feb 2022 18:33:14 +0000 (21:33 +0300)]
Заценил The 3rd and the Mortal

https://ru.wikipedia.org/wiki/The_3rd_and_the_Mortal
Сегодня познакомился с творчеством этой норвежской группы. Слушал их с
конца, а на альбоме 1994-го года появилось дежавю от женского вокала.
Полез в wikipedia, оказалось что это Kari Rueslåtten, сольные альбомы
которой у меня на дисках есть, но которые не ставил лет десять.

Сегодня коллега верно заметил что с возрастом восприятие и вкусы ощутимо
меняются. Многие мои знакомые слушали в подростковом возрасте всякие
Limp Bizkit и Korn, а сейчас даже на концерты не пойдут. Отец у меня
совсем перестал ставить AC/DC, хотя в детстве я буквально рос под них.

Я бы лет десять назад покрутил пальцем у виска, не поверив что буду
слушать что-то типа этих 3rd and the Mortal, Peccatum, Starofash, Major
Parkinson, Diablo Swing Orchestra, Trail Of Tears, Ihsahn и, теперь
любимейших, Solefald. Кривил рожу когда люди предлагали сходить на
концерт Мельницы, а в этом году снова планирую на них в Королёве
побывать. Я даже сказал бы что Мельница -- это лучшее что я в городе из
концертов слышал. Я стал раз в двадцать больше слушать всякого black
metal, но раз в десять меньше goregrind-а заводного. Бывает поставлю, но
скорее для вспоминания молодости. У меня в playlist-е чаще появляется
Madonna, Lenka и Dolores O'Riordan.

Nightwish, с которых я начинал слушать метал, мне как-то параллелен.
После ухода Тарьи то я их вообще не слушаю, но и их первые альбомы раз в
год наверное только поставлю. Но их Once мне крышу просто сносил! Зато
вот какой-нибудь Rammstein как ставил, так и ставлю. Только теперь ещё и
с Lindemann альбомами. Ранний Theatre Of Tragedy мне был слишком уныл, а
их "экспериментальные" альбомы 2000-2002-го годов настолько постыдны,
что даже удалял с жёсткого диска -- сейчас же ставлю регулярно, как и
ранние doom-ные.

Отчётливо помню, что со всякими Rammstein, Megaherz и прочим neue
deutsche härte, думал что самая крутая (для меня) музыка идёт из
Германии. Со всякими Nightwish появилась тьмища исключительно финских
исполнителей, на худой конец из Швеции. С грайндкором и горграйндом
горизонты расширились, люто захватывая Скандинавию. А теперь в playlist-е
сплошные норвежцы и шведы.

3 years agoГос-ая открытая лицензия
Sergey Matveev [Thu, 10 Feb 2022 18:04:09 +0000 (21:04 +0300)]
Гос-ая открытая лицензия

https://www.opennet.ru/opennews/art.shtml?num=55960
https://g.info.gov.ru/datamart/nsud-datamarts.git
https://www.opennet.ru/opennews/art.shtml?num=32632
https://standartgost.ru/g/%D0%93%D0%9E%D0%A1%D0%A2_%D0%A0_54593-2011
Что-то мимо меня как будто прошла новость о "Государственной открытой
лицензии, версии 1.1". Хрен прочтёшь её в броузере -- JavaScript врубай.
Придётся клонировать git-репозиторий.

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

Исходный код коммитится и обновляется в репозитории одним бинарным Zip
архивом. Я даже не знаю как это прокомментировать. Люди впервые
пользуются VCS? Или, опять же, "на отвали" делают? Всякий IntelliJ мусор
закоммичен при этом. И бинари всяких зависимостей.

В "открытой лицензии" с ходу бросается в глаза что явно отмечено что ты
не можешь нарушать законы РФ и чего-то Евразийского. Выглядит как
нарушение нулевой свободы (свободного ПО), но вроде бы юридически это и
так автоматом будет следовать что закон выше в любом случае и ты его и
так обязан соблюдать.

И, опять таки, почему то мимо меня прошёл тот факт, что у нас есть ГОСТ Р
с определением "свободного ПО". Причём в нём действительно речь про СПО,
а не open source. Упоминают FreeBSD и даже правильно пишут "GNU/Linux",
не забывая добавлять что это только развивающая ОС, видимо, в противовес
законченной FreeBSD :-). Приятный ГОСТ, в котором первым делом ссылаются
на GNU GPLv3.

3 years agoУстановка софта DJB-way
Sergey Matveev [Thu, 10 Feb 2022 17:34:31 +0000 (20:34 +0300)]
Установка софта DJB-way

https://sorting.cr.yp.to/install.html
https://libpqcrypto.org/install.html
https://news.ycombinator.com/item?id=17505357
Бернштайн предлагает качать tarball-ы так:

    wget -m https://whatever/whatever-latest-version.txt
    version=$(cat whatever/whatever-latest-version.txt)
    wget -m https://whatever/whatever-$version.tar.gz
    tar -xzf whatever/whatever-$version.tar.gz
    cd whatever-$version

при этом намекает и на создание отдельного пользователя под которым оно
будет собираться, с chmod 755 $HOME и umask 022.

Идея с latest-version.txt мне понравилась. Надо бы и у себя наверное так
сделать. А то как понять появилась ли какая новая версия? Atom feed-ы я
не делаю для своего софта.

Хак с wget -m, создающим директорию, внутри которой будут помещаться все
tarball-ы программы, тоже понравился.

3 years agoКак понять, что перед вами плохой разработчик
Sergey Matveev [Thu, 10 Feb 2022 07:43:07 +0000 (10:43 +0300)]
Как понять, что перед вами плохой разработчик

https://habr.com/ru/company/hexlet/blog/650603/
Уже наверное с год я стал замечать как люди говорят. Видя всяких
блоггеров время от времени, видя интервью с молодняком и Брайанами
Керниганами (89c4d5373d535a0b04b499a583d6f69312f302ea), стал
отмечать насколько же отличается речь. И действительно заметна
корреляция между уровнем разработчика и тем, как он говорит. Это
замечаю и в жизни у коллег. Отличный список критериев в статье:

    * Насколько объёмный у него словарный запас;
    * Как часто он поправляет себя;
    * Как начинает и как заканчивает фразы;
    * Насколько целостны и непротиворечивы его мысли;
    * Насколько плавна его речь;
    * Много ли он использует слов-паразитов и заполняющего паузы "мычания";
    * Насколько обширный контекст он способен удерживать в диалоге;
    * Насколько лаконично и ёмко он способен донести информацию.

Злоупотребление жаргонизмами, buzzwords, новояз -- аналогично тоже
замечал что крутые профи ничем подобным не балуются никогда.

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

Переусложнение или оверинженеринг -- самое первое что бросается в глаза
у не очень опытных разрабов! Но тут всё очевидно.

    * Желание учесть абсолютно все пограничные случаи работы приложения,
      независимо от их вероятности и степени рисков, которые они несут
    * Трата ресурсов и времени на разные аспекты задачи
      непропорционально их фактической значимости
    * Инновации ради инноваций
    * Преждевременная оптимизация

Самоуверенность, велосипедизм, эффект Даннинга-Крюгера -- ни с чем не
поспоришь, корреляция всего этого с уровнем разраба ещё какая.

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

3 years agoСимпатичные doom-ерши
Sergey Matveev [Thu, 10 Feb 2022 07:36:27 +0000 (10:36 +0300)]
Симпатичные doom-ерши

http://www.hitkiller.com/moshhnye-dumershi-smotrim-novyj-klip-zhenskoj-death-doom-komandy-konvent.html
Датская Konvent группа состоит только из девок, как и греческая Astarte
(fe96e0512ef8d053d102d868df0627e791f05509), но играют doom metal.
Простой, незатейливый, но приятно слушается. Такого женского гроула ещё
не слышал.

3 years agoСколько кубит нужно для взлома 256-бит ECC ключа
Sergey Matveev [Wed, 9 Feb 2022 12:42:12 +0000 (15:42 +0300)]
Сколько кубит нужно для взлома 256-бит ECC ключа

https://www.schneier.com/blog/archives/2022/02/breaking-245-bit-elliptic-curve-encryption-with-a-quantum-computer.html
13 миллионов чтобы взломать его за день. На сегодняшний день самый
большой и крутой квантовый компьютер IBM имеет всего 127 кубит.

3 years agoGNU Guix переходит на Zstandard сжатие пакетов
Sergey Matveev [Wed, 9 Feb 2022 09:30:58 +0000 (12:30 +0300)]
GNU Guix переходит на Zstandard сжатие пакетов

https://guix.gnu.org/blog/2022/sunsetting-gzip-substitutes-availability/
Ибо оно у них экономнее lzip получается. Только у zstd умопомрачительная
скорость декомпрессии ещё.

3 years agoРасширение RAIDZ в ZFS
Sergey Matveev [Wed, 9 Feb 2022 07:42:13 +0000 (10:42 +0300)]
Расширение RAIDZ в ZFS

https://freebsdfoundation.org/blog/raid-z-expansion-feature-for-zfs-goes-live/
В fd06c1c180f30fb802075a3a4a48ef0197576a85 упоминалась статья, где одним
из недостатков ZFS является невозможность увеличивать RAIDZ vdev.
Известно что работа над этом велась, а теперь она уже, можно сказать,
завершена.

3 years agoПосмотрел "Один прекрасный день"
Sergey Matveev [Tue, 8 Feb 2022 20:39:26 +0000 (23:39 +0300)]
Посмотрел "Один прекрасный день"

https://www.kino-teatr.ru/kino/movie/euro/19174/annot/
Под этим именем всякие другие фильмы и сериалы прячутся -- фиг найдёшь
где французский фильм с Пульвордом. Фильм про то, как то всё наперекосяк
у главного героя идёт, а потом внезапно вдруг все его любят, женщины
дают просто так, на работе хорошо как и не мечтал, жена возвращается и
всё в таком духе. Но почти весь фильм я был очень напряжён, ибо если бы
в жизни такое произошло, то обязательно что-то плохое всё это
компенсирует -- не бывает просто так и резко хорошо. Кто-то слишком
хорошо к тебе внезапно относится -- жди подвоха (хотя в фильме их не
было). Вот и герой фильма попадает в психушку из-за этого -- нервы не
выдержали.

3 years agoПосмотрел "Не послушник"
Sergey Matveev [Tue, 8 Feb 2022 20:35:19 +0000 (23:35 +0300)]
Посмотрел "Не послушник"

https://www.afisha.ru/movie/266138/
На выходных за компанию с родителями ходили в кинотеатр. В целом мне
наверное не понравился, из-за слишком православной пропаганды в конце.
Родителям основная идея понравилась, но вот то, что, мол, нельзя без
соцсетей ничего сделать -- нет. Ну тут понятное дело что меня это тоже
удручает.

3 years agoУ кентавров тоже бывают кольца
Sergey Matveev [Tue, 8 Feb 2022 16:40:50 +0000 (19:40 +0300)]
У кентавров тоже бывают кольца

https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D1%8C%D1%86%D0%B0_%D0%A5%D0%B0%D1%80%D0%B8%D0%BA%D0%BB%D0%BE
https://ru.wikipedia.org/wiki/(10199)_%D0%A5%D0%B0%D1%80%D0%B8%D0%BA%D0%BB%D0%BE
https://ru.wikipedia.org/wiki/(2060)_%D0%A5%D0%B8%D1%80%D0%BE%D0%BD
https://ru.wikipedia.org/wiki/%D0%9A%D0%B5%D0%BD%D1%82%D0%B0%D0%B2%D1%80%D1%8B_(%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%BE%D0%B8%D0%B4%D1%8B)

3 years agoHackerNews сервер
Sergey Matveev [Tue, 8 Feb 2022 16:27:25 +0000 (19:27 +0300)]
HackerNews сервер

https://news.ycombinator.com/item?id=16076041
https://news.ycombinator.com/item?id=28478379
https://news.ycombinator.com/item?id=30257487
Весь HackerNews работает на двух серверах (master и запасной) с FreeBSD:
    CPU: Intel(R) Xeon(R) CPU E5-2637 v4 @ 3.50GHz
    FreeBSD/SMP: 2 package(s) x 4 core(s) x 2 hardware threads
    Mirrored SSDs for data, mirrored magnetic for logs (UFS)
К сожалению, многие даже не подозревают насколько вообще то современное
железо мощное и как много на нём можно делать. Чуть что, так сразу
бросаются за решениями с облаками и десятками машин.

3 years agoEaten By a Grue будет играть в победителей IFComp
Sergey Matveev [Mon, 7 Feb 2022 20:50:56 +0000 (23:50 +0300)]
Eaten By a Grue будет играть в победителей IFComp

https://monsterfeet.com/grue/notes/44
"Eaten By A Grue" -- первый подкаст который я начал слушать. Более пяти
лет я с ними, практически с самого начала. Они проиграли во все Infocom
IF-ы. Затем решили проиграть в оставшиеся четыре графические Infocom
игры. А затем настал волнующий выбор:

* либо завершить подкаст, мол как полностью законченный проект
* либо поиграть в квесты от LucasArts, типа Maniac Manson и Monkey Island
* либо поиграть в другие игры с Zork-ом в названии, уже графические, не Infocom
* либо поиграть в победителей ежегодного соревнования IFComp

Выбрали последний вариант. Во-первых, это всё же IF, а не графические
квесты. Во-вторых, там априори победители -- значит явно не плохие игры.
Я с нетерпением буду ждать их выпусков снова, которые под конец выходили
раз в несколько месяцев (на Zork Zero они потратили семь месяцев). Тем
более что в некоторых победителей IFComp я уже играл и именно на них и
ориентировался. Плюс среди них большая часть это относительно короткие
игры, которые можно за пару часов пройти, в противовес нескольких
месяцев легко затрачиваемых на Infocom-овские творения.

3 years agoNNCP и goredo пакеты в разных ОС и дистрибутивах
Sergey Matveev [Mon, 7 Feb 2022 17:41:24 +0000 (20:41 +0300)]
NNCP и goredo пакеты в разных ОС и дистрибутивах

http://www.nncpgo.org/Installation.html
http://www.goredo.cypherpunks.ru/Install.html
https://github.com/NixOS/nixpkgs/pull/141769
Почти никто из maintaner-ов пакетов не сообщает что пакет для софта был
добавлен куда-то. Понасиловал поисковик и обнаружил что софт мой много
где добавлен:
goredo: ALT Linux, Arch Linux AUR, Fedora, FreeBSD, macOS Homebrew, NetBSD
NNCP: Arch Linux AUR, Debian, Dragonfly BSD, FreeBSD, GNU Guix, NetBSD,
      NixOS, Void Linux

Ну и возможно в NixOS появится goredo, в котором народ поругался на
отсутствие HTTPS с "валидными сертификатами". Причём мне не понятно для
чего? Они же там SHA256 хэш от файла вшивают в само описание пакета!

Сам я maintain-ил только GoVPN (уже мёртв) и NNCP в FreeBSD.

3 years agoЗапись terminal screencast
Sergey Matveev [Mon, 7 Feb 2022 10:22:10 +0000 (13:22 +0300)]
Запись terminal screencast

https://habr.com/ru/company/first/blog/648773/
https://pypi.org/project/asciinema/
https://blog.asciinema.org/post/two-point-o/
Делал я наверное только с десяток записей экрана терминала. Делал
записывая видео, конвертируя его потом в lossless VP9. Это требует и
места на диске прилично и много времени занимает кодирование. Но
lossless сжатие довольно компактно выходит, относительно фильмов.

В FreeBSD можно использовать "script -r" для записи вывода в файл с
временными штампами. И проигрывать его позже через "script -p". Но это
явно несовместимое с GNU/Linux реализацией решение, где у script свои
опции и отдельная scriptreplay команда.

Про asciinema я слышал, но считал что для этого обязательно что-то на
JavaScript надо запускать. Оказалось что нет. Есть asciinema Python
пакет, без зависимостей -- поэтому установить не проблема. Он и
записывать и проигрывать может, прямо в терминале, без дополнительных
программ. Решение куда более портируемое чем script.

В блоге для 2.0 версии показали что rec/play можно использовать и через
pipe для показа своего терминала удалённому пользователю, без всяких
ssh/tmux (5f98503b78f5aa80bd48f4633ce82e9a219ed7e6). Не пробовал, но
надо взять на заметку.

3 years agoЭпитафия ноутбукам
Sergey Matveev [Mon, 7 Feb 2022 08:36:56 +0000 (11:36 +0300)]
Эпитафия ноутбукам

https://vermaden.wordpress.com/2022/02/07/epitaph-to-laptops/
https://drewdevault.com/2020/02/18/Fucking-laptops.html
Автор ругается на постоянную деградацию клавиатур ноутбуков. Как по
качеству, так и по количеству важных клавиш. Полностью с ним солидарен!
Уже давно я ноутбуки использую только с внешней клавиатурой, ну и
монитором заодно. А в этом году то и вообще перестал как класс их
использовать.

Верно заметил что сейчас огромное количество людей выросло вообще без
полноценных клавиатур и не знают как использовать PgUp/Down, Home/End,
Ins/Del блок клавиш.

3 years agoСпам чёрные списки совсем оборзели
Sergey Matveev [Sun, 6 Feb 2022 09:58:20 +0000 (12:58 +0300)]
Спам чёрные списки совсем оборзели

https://blog.roastidio.us/posts/spam_blacklists_are_out_of_control/
Человек пишет что его IP адрес в чёрном списке, только потому, что он
соседствует с какими-то другими нехорошими из этой же организации. И это
официальное объяснение, даже с пометкой что "мы понимаем, что конкретно
ваш адрес ничего плохого и не делает". Это действительно совершенно
бессовестно уже. Автор не использует эти сервисы, как и я. Их поведение
неприемлемо и выходит за все разумные рамки.

3 years agoПочему не ZFS?
Sergey Matveev [Fri, 4 Feb 2022 13:58:40 +0000 (16:58 +0300)]
Почему не ZFS?

https://storytime.ivysaur.me/posts/why-not-zfs/
* ZFS не будет в ядре Linux
  Да и пофиг. Это их проблемы. У них и так оно плохо интегрировано и ARC
  не дружит с остальной системой кэширования.
* Низкая производительность шифрования.
  Ну тут нечего мне сказать. Как в Linux не знаю. В FreeBSD используется
  родная crypto подсистема. Само по себе родное шифрование ZFS не всем
  подойдёт, потому что там много чего не зашифровано на самом деле и
  полнодисковое может быть предпочтительнее.
* Не гибкий.
  Примеры надуманные. Даже если не хватает гибкости, то это не означает
  что для превалирующего большинства оно подходит без проблем.
* Нельзя добавлять/удалять диски из RAIDZ.
  Да, всё так. Как и делать shrink массивов. Есть ограничения. Волнуют
  ли оно большинство? Вряд ли. Ибо shrink я считаю глупостью считать
  недостатком.
* RAIDZ медленный
  Куча статей на эту тему. Нет, не медленный. И не быстрый. Много от
  чего зависит его производительность. RAIDZ с 4-8 KiB блоками вообще
  будет иметь overhead потерянного места больший чем было бы в зеркале.
* mdadm RAID6 даст больше IOPS
  Ага, только с возможностью потерять данные при аварии. Write-hole
  никто не отменял. Даст ли mdadm с диском для хранения промежуточного
  state для write-hole safety больше IOPS? Все молчат.
* Файло-ориентированный RAID медленный. Для операций типа resilvering,
  scrub, rebuild последовательное чтение/запись быстрее
  Нет. Зависит от степени заполненности массива. Если у меня вылетел
  диск из pool-а с 1 GiB полезных данных, то resilver потребует
  чтение/запись (пускай и с random IO) только гигабайта данных. В
  обычном же RAID из-за кратковременного сбоя контакта -- потребуется
  чтение/запись всех 2 TB данных для 2 TB диска. Кроме того, алгоритмы
  scrub/resilver улучшаются со временем и scrub уже вроде бы не первый
  год старается всё делать последовательно. Это почти полностью лживый
  аргумент.
* Real-world performance is slow
  У меня зачастую наоборот. А phoronix умудряется чисто CPU bound задачи
  сделать так, что на одном и том же процессоре может отличаться в разы
  время работы компрессора (6d986bf15a3e11ffd3d82f0f7b74b9f7af566ab0).
  Ну и как бы какой смысл сравнивать ext4 и ZFS, у которых кардинально
  разные возможности и гарантии целостности/консистентности. Кого
  волнует производительность, если данные/ФС можно потерять незаметно?
* Производительность падает при отсутствии свободного места
  Верно. У всего своя цена. ZFS -- дорогая штука. И всё зависит от
  режимов работы с массивом -- линейно записать для хранения фильмы и их
  потом линейно читать, редко удаляя или перезаписывая -- тут никаких
  проблем с производительностью не будет. Это CoW система -- у неё есть
  своя цена.
* Layering violation of volume management
  Violation это когда что-то явно подразумевалось, но оно нарушается. Не
  нужно делать ложных непойми откуда взявшихся ожиданий от ZFS. Поверх
  LVM/whatever ZFS можно использовать. Использовать менеджеры томов
  поверх ZFS ZVOL-ов -- тоже. Отсутствие разделения знаний о блочном
  устройстве и файлов/объектов на нём -- даёт колоссальные преимущества,
  невозможные иначе.
* Не поддерживает reflink?
  И?
* Много памяти нужно для дедупликации
  Я не понимаю: много относительно чего? Очевидно что для дедупликации
  нужно иметь какую-то табличку с хэшами всех блоков и ходить по ней
  постоянно чтобы проверять нет ли такого блока на диске уже. ZFS
  неэкономно расходует место под эту табличку? Нет, overhead
  незначительный, почти всё отдаётся под настоящий payload всех этих
  хэшей и ссылок. Если не хватает RAM и можно потерпеть просадку по IO,
  то без проблем можно использовать L2ARC для выгрузки таблицы
  дедупликации. Совершенно бредовый аргумент. Сжатие использует больше
  CPU. Очевидно! Не нравится -- отключи сжатие. Дедупликация использует
  больше памяти. Очевидно! Не нравится -- отключи. Хранит таблицы ZFS
  достаточно экономно с маленьким overhead-ом
* Дедупликация синхронна
  Да. Это просто, надёжно и имеет предсказуемое поведение. Асинхронный
  фоновый процесс btrfs... означает что не понятно когда как и что у
  меня будет дедуплицировано. Если я делаю nncp-reass сборку файла, то я
  не хочу чтобы на диск что-то вообще было записано, ибо я знаю что это
  полностью дуплицированные блоки, которые в btrfs могли бы означать
  запись на диск и дикую просадку по производительности.
* ARC жрёт много памяти
  Ну тут проблемы только Linux. В нём page cache и ARC живут
  параллельной жизнью. Если кроме ZFS на хосте ничего нет, то проблем не
  будет -- всё так. В противном случае можно ждать неприятного (или
  памяти не на ARC будет не хватать, либо ARC не будет использовать все
  возможности памяти). Двойной mmap -- да, это проявится не только на
  Linux. Наверняка mmap-heavy задачи заранее известны и серверу можно
  сделать соответствующий tuning.
* Buggy + ссылка на сотни задач в трэкере
  Ну я бы тут приводил подобное в пример, ибо даже для ext*fs, UFS*
  файловых систем, которые на порядки проще, порядки меньше всего умеют,
  до сих пор есть баги и находятся критично важные проблемы. Вот btrfs
  до сих пор не стабильна достаточно чтобы не ссать и использовать её не
  боясь всё потерять. ZFS давно стабильна. Ошибки находят в любом софте,
  даже очень старом и проверенном временем, даже очень простом.
* Нет fsck
  Так и не понял что он должен делать то, кроме того что ZFS и так
  делает при импорте pool-а или при scrub. Автор считает что
  журналируемая ext4 точно так же консистентна должна быть, как и
  copy-on-write системы. Я точно не знаю про ext4, но чую что там не
  сильно всё отличается от UFS/FFS подходов с журналами и soft-updates,
  где журнал спасает/помогает только для ряда транзакций действий.
  Например soft-updates не позволит жутко испортить иноды, но место при
  этом может спокойно "утечь" -- таблица/bitmap свободных блоков это
  отдельная тема. Поэтому там всё равно есть отдельно fsck. Хочется
  проверить все хэши -- делай scrub или zfs send, в чём проблема?

Автор предлагает альтернативы?

* RAID, LVM -- спасибо, но write-hole и жуткая неэффективность из-за
  незнания что за объекты обслуживаются в блоках.
* Шифрование делать на блочном уровне -- тут ничего не могу сказать
  против, ибо где-то это разумнее может быть, точно безопаснее.
* Снимки автор предлагает делать через LVM snapshot-ы... умалчивая как
  при этом сделать для любой ФС консистентную выгрузку состояния. И
  overhead от количества передаваемых данных на которые никто не
  ссылается (пустое место). И умалчивает про инкрементальные снимки. И
  как бы их сделать эффективно.
* Scrub предлагает делать просто чтением данных. Что-то я не пойму: а
  чем проверять то их целостность? Он говорит про URE (Unrecoverable
  Read Error), то есть когда диск не может отдать данные. Автор, scrub
  делается в первую очередь и для проверки bit-rot-а! Не для того чтобы
  понять что диск выходит из строя/сбоит, а для проверки целостности!
* Дедупликация не стоит того. В целом тут я согласен, что задач где она
  имеет смысл -- мало. Речь про то что лучше для VM -- не согласен, ибо
  для них надо использовать zfs clone. Но даже у меня на моей рабочей
  системе: zroot  dedupratio  1.12x -- очень ощутимая дедупликация
  $GOPATH-а
* Компрессия не стоит того. Ну это вообще бред сивой кобылы. Нет,
  конечно есть много задач где она не поможет безусловно. Только одно из
  первых от чего почти все пользователи ZFS тащатся -- как много места
  сжалось и какой профит для производительности (данных то с диском
  теперь меньше передавать!) оно даёт. Заявление про sparse databases
  говорит о полном непонимании copy-on-write природы. Sparse файлы на
  CoW не работают просто по природе CoW. Точнее работают, но profit не
  имеют никакого. Причём тут сжатие? Речь про то, что с выключенным
  сжатием sparse блоки могут оказаться на диске, а с сжатием даже не
  будут записаны? Автор явно не учитывает что при любом обновлении
  блока, sparse блок будет записан в другом месте диска, нивелируя
  *любые* sparse оптимизации.
* Контрольные суммы не стоят того, ибо мол SATA/диск и так имеют CRC.
  Про bit-rot автор как-будто не слышал. "Вы можете использовать
  dm-integrity" -- согласен. "или btrfs, которая автоматически это
  делает". Ага... как и ZFS, тоже автоматически из коробки!

Если сложить предложения: RAID, LVM2, cryptsetup, lvmsync, cron-ed cat,
lvmvdo/kvdo/dduper, dm-integrity, cron-ed cksfv... то станет понятно
настолько администратор задолбается это всё поддерживать. Это без учёта
того, что тут не решается куча других проблем (типа write-hole, компрессии
файлов, инкрементальных снимков). И даже эти то проблемы не решены до
конца, ибо .sfv файлы не будут в real-time проверятся. Кроме того ZFS
делает self-healing, восстанавливая побитые данные (проверено!), тогда
как в предложениях автора ничего для этого случая нет.

3 years agoВсё о моём опыте с лентами и стримером
Sergey Matveev [Thu, 3 Feb 2022 07:39:40 +0000 (10:39 +0300)]
Всё о моём опыте с лентами и стримером

Пять лет ещё не прошло с начала игр с ними, но скоро будет.

* Использую я LTO4, которые на 800GB или ~745GiB (то что показала бы ОС)
* Есть 1 LTO5, шедшая в комплекте со стримером, которую я для временной
  записи чего-то большого, что не умещается разом на LTO4, использовал
* LTFS не пробовал, хотя видел FUSE драйвер. Пишу я простым обычным BSD
  tar-ом. Он не поддерживает multi-volume архивы, когда если стример
  сообщает о том что место кончилось, то он позволил бы вставить
  следующую ленту и продолжить на ней. Заранее просто через split
  команду создают .tar00, .tar01 архивы
* Пишу я tar-ом ещё и потому, что он блюдёт размер блока фиксированного,
  что стример очень любит и работает на максимальной скорости без проблем
  при этом
* Сжатие (mt comp on) не использую. Разве оно может сравнится с offline
  сделанным zstd например?
* Сжимаю я всё что сжимается. Шифрую (GnuPG) всё что не стоит всем
  показывать, в случае попадания лент в чужие руки. Да, это всё означает
  что если файл будет бит, то я ничего из него не восстановлю. И я не
  использую никаких par2. Я просто слепо верю в то, что на ленте и так,
  как пишут, своей избыточности достаточно много
* По умолчанию у меня в настройках было выставлено использование Twofish
  алгоритма шифрования. Для шифрования лент у меня отдельный offline
  ключ, который по умолчанию тоже стал иметь это предпочтение. Он, как и
  не ускоренный AES -- медленный и я всегда упираюсь в CPU. Теперь стал
  использовать AES, но без OCB режима, так как лень обновлять GnuPG на
  сервере к которому подключён стример. Всё же считывание данных с лент
  это очень редкое действие у меня на практике, поэтому не так к спеху
* Практически все ленты пишутся в двух экземплярах, идентичных копиях.
  Вторая копия относится в географически другое место
* Из всех лент, которых более 80 штук, которые почти все я купил у
  одного человека, которые были списаны по причине upgrade-а их
  библиотеки, только две были неисправны. Они видятся, даже немного
  пишутся, но возникают ошибки. Но при этом мне две ленты он давал
  просто так в подарок как постоянному оптовому покупателю
* Ни разу не было чтобы я что-то не смог прочитать с них, хотя конечно и
  не проходит так много времени чтобы убедиться в действительно их
  долговечной надёжности
* Но я стараюсь их хранить вне сквозняков. При перетаскивании на холоде,
  помещаю в теплоизолированные сумки, не оставляя например в холодной
  машине
* Даже без LTFS на них можно дозаписывать данные и прыгать по меткам
  между ними. Но для этого надо вести какой-то учёт, индекс того, что
  где размещено. Мне лень. Поэтому все они записываются в виде одного
  tar-а одной записью
* Из-за этого нельзя с произвольного места, произвольный файл прочитать
  с ней. Поэтому любое чтение это всегда tar xf /dev/esa0 -- полное
  чтение всей ленты. Так проще
* Прежде я агрегировал недельные бэкапы всех своих систем на жёстких
  дисках. Когда их объём становился достаточно большим, то скидывал на
  очередную свободную пару лент. Сейчас забил. По сути мне ни разу не
  требовались старые резервные копии. Или то что имеется в пределах
  snapshot-а ZFS недельного, или то, что вообще отсутствует на диске но
  выгружено отдельным файлом на ленты (типа "резервная копия какой-то
  там CentOS на которой я проверял такую-то софтину, где остался
  исходный код, сборочная система и я не знаю вообще нужно ли это мне
  ещё когда-нибудь будет, но мало ли")
* Прежде я старался по полной забивать каждую ленту до отказа. Осталось
  200 GB свободных? Ещё одну копию фотографий туда забацать! Сейчас
  перестал. Во-первых это не уменьшает износ: наполовину заполненная
  лента служит в два раза дольше. То есть, износ делает не загрузка
  ленты, а её проматывание. Во-вторых, просто удобнее иметь более
  "короткие" ленты с чётко заданными данными, чем постоянную мешанину
  которую дольше считывать
* Когда-то у меня были всякие копии wikipedia (очень правда старых
  срезов), но сейчас от них избавился. Или нужно иметь свежий срез, но
  на него у меня нет места или нафиг. Если отключат Интернет, то
  какие-то БД и сборники всякой всячины у меня конечно есть, но они не
  существенно помогут. Есть срезы wikipedia в виде ZIM файлов -- просто
  лучше чем ничего
* Кол-во лент для моих нужд небольших мне хватает. Для wikipedia полной
  или какого-нибудь scimag -- нет. Но и покупать новые я уже как-то и не
  горю желанием из-за цены. Стоимость самого стримера такова, что он
  окупается только при объёмах в сотни терабайт. Даже для scimag или
  wikipedia... дешевле купить современные очень ёмкие жёсткие диски и
  держать в массивах регулярно делая scrub. Если не дешевле, то конечно
  и удобнее. Ленты это всё же для очень больших данных (чтобы окупалось)
  и для архивов
* Единственный софт для ведения базы данных этих лент это... tapes.txt
  файлик под Vim-ом. Каждый параграф в нём состоит из пары строчек с
  серийными номерами лент (оно наклеено на сам картридж и сбоку видно),
  а дальше просто из "ls -1" вывода файлов на них содержащихся, которых
  не много как правило: если мне надо записать архив со всеми моими
  подкастами, то я создаю podcast-DATE.tar и его помещаю в архив на
  самой ленте: tar cf /dev/*sa0 podcast-DATE.tar
* Раз в полтора года я перезаписывал многие ленты оставляя только самые
  свежие и актуальные архивы, снова освобождая много из них. В этом году
  решил просто перезаписывать поверх старых, учитывая что "мешанины" у
  меня будет меньше. Не должно быть лент с "музыка+фильмики+фотографии",
  а должно быть три со всеми этими архивами отдельно, позволяя просто
  обновить только нужную коллекцию
* У меня сильные подозрения что мой опыт по ведению всего этого
  хозяйства просто смехотворен и зелен. Наверняка. Но меня не сильно это
  парит, ибо это just-for-fun главным образом. Ибо это всё не отменяет
  что фотографии, музыка (а это две самых ценных вещи что у меня есть,
  ибо моё собрание музыки хрен откуда скачаешь и добудешь) всё равно
  находятся на ZFS массиве тоже
* Один жёсткий диск с ZFS не пригоден для работы с лентами. ZFS всё же
  имеет кой какой но overhead и скорость последовательного чтения чуть
  пониже чем максимальная что может выдать сам диск. Речь про диски не
  самые свежие и современные, но всё равно 2-3-х терабайтные. Они сами
  по себе могут выдать 140MiB/sec зачастую, что требуется и при записи
  ленты, но чуть проседающий overhead от ZFS уже недостаточен для
  "насыщения" канала стримера и он вынужден время от времени
  останавливаться, чуть отматывать ленту назад, продолжать запись, что и
  изнашивает её и сильно замедляет весь процесс записи. Чтение с ленты
  на ZFS на один диск делается без проблем, overhead тут не мешает
* Поэтому приходится или с массива читать или с UFS2 файловой системы. У
  меня есть отдельная не всегда включённая SAS корзина с 4-мя 450GiB
  дисками в RAIDZ1, которую я часто и использую для работы с лентами.
  Ибо держать её постоянно включённой тоже не охота для раздачи торрентов
* Скорость LTO5/LTO6 чуть повыше, но одного современного диска всё же
  должно быть достаточно. А вот LTO7 уже имеет скорость в 300MiB/sec и
  там без массивов не обойтись. Ну или без SSD, но я в живую SSD на 6TB
  не видел, чтобы можно было бы разом записать на ленту всё что хочется
* Упоминал про LTFS, но только сейчас вспомнил что его можно
  использовать только начиная с LTO5, которых у меня одна штука. Так что
  можно не переживать по поводу того, что возможно с ним тьма проблем бы
  в плане удобства решалась сразу
* Безумно удобна возможность отправки SIGINFO сигнала в BSD tar через
  Ctrl-T, который покажет нечто типа:
    In: 7 files, 356068175872 bytes; Out: 356068175872 bytes, compression 0%
    Current: photoes.tar (75536662528/139850764800 bytes)
* Стример жрёт под 90W энергии. Если внутренний, то нужно реально думать
  об охлаждении. У меня сейчас внешний с собственным вентилятором --
  проблем нет, лента при вынимании не горячая
* Он громкий. Он буквально визжит. При этом не монотонно, а
  останавливаясь каждые несколько десятков секунд, меняя направление
  головки (серпантинная дорожка), далее снова разгоняясь до визга. Спать
  рядом с таким не выйдет без берушей. У меня он в другой комнате, в
  которую приходится закрывать дверь или две двери
* Идея с тремя разными device node-ами просто гениальна по удобству! При
  прекращении чтения/записи из/в nsaX -- он оставит головку на том же
  самом месте где и остановились.
    tar cf /dev/nsa0 file1 ; tar cf /dev/nsa0 file2
  создаст две записи на ленте. В первой будет архив с file1, во второй с
  file2. mt fsf позволяет прыгнуть на следующие записи. saX перемотает в
  начало ленты после закрытия файла devnode-ы. Равносильно использованию
  nsaX с mt rewind после. esaX используется мною чаще всего -- оно eject
  ленту после обработки. Так как прочитать с ленты и сразу же на неё
  что-то записать требуется редко, то это удобно. Вынутая лента видна
  визуально -- сигнал о том что процесс завершился. Плюс я часто же
  оставляю писаться/читать на ночь и не хотел бы чтобы оставшиеся кучу
  часов оно в раскрытом состоянии находилось внутри стримера
* Хоть лента и по последовательным скоростям сравнима с жёстким диском,
  но из-за объёма весь процесс чтения/записи занимает часы! Как и с
  жёстким диском конечно же. Но если на последнем, при наличии файловой
  системы, мы можем один из тысяч произвольных файлов прочитать, то на
  ленте (без LTFS, без индекса и файлов побитых по записям) доставание
  нужного файла стоит оценивать как полное её чтение на жёсткий диск, а
  дальше уже вынимание нужного с его файловой системы
* С совместимостью у стримеров, насколько понимаю, проблем нет никаких.
  SAS/SCSI tape drive -- везде должен без проблем работать. Но нужен SAS
  контроллер. Знаю что есть home-grade решения подключаемые по
  Thunderbolt, где наверное SAS контроллер просто встроен в сам стример,
  но и цена у них будет ещё выше
* Пользоваться tar-ом совершенно не обязательно! Ничто к этому не
  принуждает. Я делал и zfs send запись прямо на ленту. Единственное о
  чём нужно помнить -- размер блока для записи, к которому стример
  чувствителен. Детали уже не помню, но вроде это 10240 байт. На других
  он то ли откажется работать, то ли будет на ещё каком-то одном
  работать, но в два раза меньшей скоростью. Лень искать в блоге, но об
  опыте этом всём писал. То есть, просто не забывать делать не
  "> /dev/esaX", а через "dd bs=XXX" соответствующий

3 years agoПочему и как автор получил свой ASN
Sergey Matveev [Wed, 2 Feb 2022 15:34:55 +0000 (18:34 +0300)]
Почему и как автор получил свой ASN

https://chown.me/blog/getting-my-own-asn
Интересно было почитать, ведь мысли о приобретении собственной AS меня
посещали не раз и читал про LIR-ы и уже тоже.

3 years agoGoatCounter для Lynx пользователей
Sergey Matveev [Tue, 1 Feb 2022 19:02:31 +0000 (22:02 +0300)]
GoatCounter для Lynx пользователей

https://github.com/arp242/goatcounter/issues/560
После общения с d0f03297a63566332bd9a840b8268c0910715c75, автор того
сайта предложил GoatCounter указывать alt атрибут в tracking пикселях.
Я ничего не предлагал вообще -- это автор загорелся идеей посмотреть
как это всё выглядит в Lynx :-). И про его tracking я ни словом не
обмолвился. Авторы этого счётчика послали с предложением, ибо в 2022-ом
нет причины использовать что-то, что не уважает современные стандарты
web-а. В ответе он конечно верно заметил, что под современными
стандартами явно подразумеваются "Google + Chrome". И что вообще нет
причин не указывать описание изображения (alt в img -- помню что во
всех книжках про HTML за его отсутствие ругали сильно!).

3 years agoWhy I won't use Let's Encrypt
Sergey Matveev [Mon, 31 Jan 2022 20:03:58 +0000 (23:03 +0300)]
Why I won't use Let's Encrypt

http://www.stargrave.org/WhyNotLE.html
https://lobste.rs/s/m6hkl1/why_i_won_t_use_let_s_encrypt
https://news.ycombinator.com/item?id=30141646
https://news.ycombinator.com/item?id=30145482
Вбросил я сегодня статью про то, почему я не буду использовать LE. Об
этом разрозненно писал и в блоге и в рассылках, но вопрос касательно
HTTPS на моих сайтах поднимается всюду и везде -- поэтому написал статью
чтобы просто ссылку можно было бы вкинуть. Ничего нового в ней нет.

Почитал комментарии которые люди пишут. В IRC NNCP верно заметили что у
большинства вообще создалось впечатление что я против TLS и не использую
его. Ну тут мне нечего сказать, ведь в самом начале я начинаю с того что
он у меня используется.

Другая часть обращает внимание исключительно только на моё заявление о
том что LE это NOBUS. Конечно у меня нет доказательств этого, но
репутации CA, software vendor-ов, вообще американцев и их спецслужб,
плюс того факта что всех остальных бесплатных убрали предварительно --
мне достаточно.

Некоторые упорно тычут в Certificate Transparency, мол как средство
аудита добропорядочности власть имущих. В последний раз когда я проверял
на какие CT публикуются данные некоторых крупных CA (детали уже не помню
кого именно), то все они полностью в одной юрисдикции находились. Я и
одной то third-party из этой страны не могу доверять серьёзно, а мне
предлагают ещё дополнительно нескольких других. Вбросили и что VPS
hoster-у тоже надо доверять всецело. Короче везде только "отдай это на
попечение другим". Шикарно! И это разве не NOBUS, в том числе?

Кол-во голосов (?) за комментарий о том что человека бы больше напрягали
ГОСТ-алгоритмы, нежели чем NOBUS LE, ставит всё на свои места.

Длинные разъяснения о рисках того, когда применяется CAA+DNSSEC+LE+CT,
сводятся самими же авторами к тому, что поверхность атаки уменьшается до
всяких атак на конечные реализации ПО, конечные endpoint-ы и до тех, кто
имеет доступ к ключу подписи LE. Всё верно, поверхность уменьшена, но за
счёт участника из США в вопросах безопасности? Это не может быть
вариантом. Лично для меня по очевидным причинам, но для граждан США
наверное нет, они же искренне верят что террор который они устраивают в
куче стран по всей Земле -- на благо остальных. В комментариях даже явно
пишут, что даже если LE это вообще проект АНБ, то это всё равно лучше
для безопасности. Умалчивают чьей.

Есть предложения использовать другие бесплатные CA, которые тоже с ACME
протоколом. Посмотрел на них. Все (потому что ЕС, НАТО?) аналогично
упоминают подсанкционные страны и районы и возможные последствия
взаимодействия с ними. Ибо я должен "дружить" with nobody, but us, ага.

3 years agoЖёлтая собачка Фаворского
Sergey Matveev [Mon, 31 Jan 2022 08:38:51 +0000 (11:38 +0300)]
Жёлтая собачка Фаворского

https://masterkrasok.ru/posts/kak-sobachka-mozhet-pomoch-v-prodazhe-kartin
Из серии вредных советов:

    Выполнив очередной заказ, Фаворский непременно пририсовывал в
    уголке… маленькую желтую собачку. Такую яркую и нахальную, что не
    обратить на нее внимание было невозможно. Когда клиент получал
    работу, он непременно начинал требовать собачку убрать, ведь она
    портит весь вид. Ну представьте, право: на холсте возвышенный
    портрет вашей благопристойной тети в голубоватых тонах, и вдруг
    сбоку какая-то нелепая канареечная собачка выскакивает прямо вам в
    лицо – ужасно ведь раздражает! (Правда, Фаворский теть не рисовал,
    но это уже другая история).

    Художник на требование заказчика начинал протестовать, убеждая его,
    что собачка – это ценнейший элемент, можно сказать, основа
    композиции, и картина без собачки станет намного хуже.
    Обескураженный клиент настаивал, Фаворский нажимал, но в итоге
    неизменно сдавался и закрашивал несчастное животное, а заказчик
    облегченно отирал пот со лба.

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

3 years agoLinus Tech Tips потерял все свои данные. Снова
Sergey Matveev [Sat, 29 Jan 2022 17:48:16 +0000 (20:48 +0300)]
Linus Tech Tips потерял все свои данные. Снова

https://www.youtube.com/watch?v=Npu7jkJk5nM
https://www.youtube.com/watch?v=gSrnXgAmK8k
Не смотря на то, что у них ZFS, RAIDZ2 и всё такое, они потеряли массивы.
И всё из-за людей, из-за того что не делают scrub и всё такое прочее. Они
это всё прекрасно понимаю конечно же. Но то они, а то куча других людей,
которые и с UFS2 умудряются терять всё на свете и не делать резервные
копии (LTT понимает что всё же у них не супер-пупер mission critical
данные и как бы YouTube тоже является некой их резервной копией) и с чем
угодно другим, виня при этом технические инструменты, а не собственную
криворукость.

3 years agoУжасы, интриги, иски и цензура компьютерных игр
Sergey Matveev [Sat, 29 Jan 2022 17:03:16 +0000 (20:03 +0300)]
Ужасы, интриги, иски и цензура компьютерных игр

https://www.youtube.com/watch?v=__X0ehi5uGg
https://www.youtube.com/watch?v=iHvXBNWz4IM
https://www.youtube.com/watch?v=jlZMB0KS0DM
Вроде не слышал прежде, но не один раз были случаи когда на диске с
релизом игры находились вирусы. Были баги, когда при удалении игры
(uninstall) она грохала много чего лишнего, в том числе системные файлы.

И отдельная тема подскаста old-games.ru это про цензуру игр в странах.
Где-то всякие свастики меняют просто на кресты -- перерисовывают
текстуры. Если где-то была зигующая статуя, то в версии с цензурой она
стоит с согнутой рукой. В некоторых странах всякую кровь меняют на
зелёную и меняют людей на зомби. А в других странах меняют на роботов.
Прям два основных шаблона для цензуры.

3 years agoИстория Сида Мейера до его Цивилизации
Sergey Matveev [Sat, 29 Jan 2022 12:51:38 +0000 (15:51 +0300)]
История Сида Мейера до его Цивилизации

https://www.youtube.com/watch?v=jS_v-20nhfU
https://en.wikipedia.org/wiki/Civilization_(video_game)
http://www.freeciv.org/
Играл во много игр в названии которых было "Sid Meier's"
(ab09781d390fd55cebed3baa649bd08e003ad8e0). Но цивилизация,
как уже писал, феноменальна. Даже когда я был маленьким,
далеко не всё понимал в этой игре, но всё равно играл и
играл в неё. Жутко засасывает. И до сих пор не отпускает:
время от времени запускаю FreeCiv. Помню что где-то Столлман
говорил, что его Lemote YeeLoong имел единственный недостаток:
слишком маленький экран для его FreeCiv. Причём FreeCiv не шибко
сильно навороченнее чем самая первая часть Civ. То бишь, спустя
30+ лет в неё всё равно интересно играть.

3 years agoАктёры дубляжа в Longest Journey
Sergey Matveev [Sat, 29 Jan 2022 10:16:06 +0000 (13:16 +0300)]
Актёры дубляжа в Longest Journey

https://tlj.fandom.com/ru/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%B0_%D0%A9%D0%B5%D1%80%D0%B1%D0%B0%D0%BA%D0%BE%D0%B2%D0%B0
76fdc62fc5a8e629fa941d972ae74d53791e05b4
Оказывается русский дубляж (которого я не слышал) Longest Journey делала
Полина Щербакова (April Ryan озвучивала, которой больше всего в игре) --
её голос хорошо знаком. И оказывается она замужем на Владом Коппом --
голосом "Модели для сборки". Как тесен мир!

3 years agoПосетители на сайте anarc.at
Sergey Matveev [Sat, 29 Jan 2022 08:52:23 +0000 (11:52 +0300)]
Посетители на сайте anarc.at

https://anarc.at/blog/2022-01-28-one-year-visitors/
Просто рассматривает всякую статистику, среди которой отмечает одного
посетителя с Lynx-ом:

    I also salute that "Lynx" visitor who managed to come up on those
    stats. Knowing that Lynx doesn't run Javascript or display images,
    you must find yourself pretty clever with that user agent string
    hacking. Or did I miss something?

Напишу ему, что это не шутка, что никто агента не подменял.

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

Greetings!

I saw your https://anarc.at/blog/2022-01-28-one-year-visitors/ post and
just want to note, that I am the visitor with the Lynx :-) (on FreeBSD
from Russian Federation). I do not alter User-Agent, I really use it as
my main browser most of time. Sometimes I use Links2 to see pages with
much of images. Sometimes I use Xombrero browser -- the best GUI browser
I have seen so far, but unfortunately its development and support is
over for many years.

If there is small number of images (not photo album), then lynx is ok,
because it shows links to the images, that I just follow -- it downloads
them and shows through the external program. It is completely ok for me.
I turn of automatic images downloading/showing even in GUI browser,
because so many sites have them completely useless.

Those browsers do not support many modern features like HTTP/2, possibly
modern TLS 1.3 implementation and no JPEG XL, AVIF, WebP (in Links2).
Moreover Xombrero very often segfaults when trying to display some
images. Possibly because of unsupported old WebKit. Only Xombrero gives
ability to monitor and manage trust-of-first-use X.509 certificates, do
certificate pinning. Also that Xombrero often does not work properly (at
all) with basic HTTP authentication. But I still want to use all of them!

All of that is not a problem anymore when I wrote tofuproxy:
http://www.tofuproxy.stargrave.org/
That HTTP/HTTPS proxy acts as TLS-terminator, taking all certificate
management issues. When some browsers visits the site those certificate
is changed (for example), then it shows Tk-written dialog with
certificate chain, saved certificate chain and waits for user
interaction (accept, accept ones, reject). Because it is written on Go,
it also acts as HTTP-terminator, supporting keep-alives, HTTP/2 (through
ALPN) and TLS resumption tickets. Also it does DANE-EE validation check,
that hardly anyone other does at all. It also takes TLS client
authentication and HTTP basic authorization through Tk-dialogs too. It
transcodes JPEG XL/AVIF/WebP (if user-agent != Xombrero) to PNG
transparently in background and has other various content
checking/altering things (like replacing HTTP redirects with explicit
HTML page to aware of redirection happening), forbidding of
analytics/spying/advertisement requests. Also I added WARC browsing
support to it -- through FIFO files you can load/index .warc.(gz|zst)
and browse them (Python-based viewers do not install for me anymore in
many cases because of broken Python's packaging ecosystem, and other
WARC-browsers requires various external databases like Redis, that is
too burdensome for only local usage). Just for fun I also added Gemini
protocol support, however I do not like its idea at all.

I forbid anyone trying to execute some untrusted code without my clear
explicit permission. So I do not use websites with JavaScript at all.
With other ones (and with tofuproxy) -- all of that is pretty modern
(TLS 1.3, session resumption) solution.

3 years agoСнова XPath
Sergey Matveev [Fri, 28 Jan 2022 14:52:36 +0000 (17:52 +0300)]
Снова XPath

Спустя полтора года (ea4df0193304d55ad1961be8ecd9b98f6131f54c) снова
понадобился XPath. Хочется из RSS-а подкаста old-games.ru вырезать все
названия и URL-ы:

    xml sel -T -t \
        -m "rss/channel/item" \
        -v "./enclosure/@url" -o " " \
        -v "./title" -n \
        index.rss

Делает for-each для каждого item, в каждом из которых выводит содержимое
url атрибута enclosure, добавляет пробел, а дальше выводит значение
title, добавляя перевод строки. Единственное что мне пришлось
подсмотреть, так это как сослаться на атрибут.

3 years agoИстория Sony
Sergey Matveev [Fri, 28 Jan 2022 11:55:25 +0000 (14:55 +0300)]
История Sony

https://16-bits.ru/%d0%ba%d1%80%d0%b5%d0%bc%d0%bd%d0%b8%d0%b5%d0%b2%d1%8b%d0%b5-%d1%82%d0%b8%d1%82%d0%b0%d0%bd%d1%8b-%e2%84%9636/
Люблю я "Кремниевые титаны"! И не слишком поверхностно, и не слишком
детально и с 2x скоростью отличный темп подачи. Sony я ещё с
подросткового возраста недолюбливаю, ибо куда ни плюнь, но везде они
делают всё несовместимым между собой (аккумуляторы, карты памяти). Но
качество неплохое. Недолюбливать я продолжал и продолжаю и сейчас, ибо
если Sony, то vendor-lockin и DRM. Но они действительно очень много чего
принесли в этот мир, что наверняка коснулось каждого человека.

Чего только они не делают, как и LG с Samsung-ом! Верно замечено, что
могли бы быть отдельным государством, так сказать.
f4fff272447c28c99e13e44668ec6533ab26589f

3 years agoПоиск по регулярке, исключая определённое слово
Sergey Matveev [Fri, 28 Jan 2022 09:13:36 +0000 (12:13 +0300)]
Поиск по регулярке, исключая определённое слово

В 02c6419d4f1a424aa24f78cdf9d75e52681780f1 хотел найти все "/bin/", но
исключая "/bin/sh". В Perl регулярках (кто бы сомневался!) это можно
сделать: /bin/(?!sh). Для GNU Grep-а можно указать -P опцию, чтобы он
интерпретировал регулярку как Perl-овую -- будет работать. Для git grep
аналогично, вот только оказалось что он у меня без PCRE собран и поэтому
не работал из коробки.

3 years agogit jump и Vim
Sergey Matveev [Fri, 28 Jan 2022 08:12:27 +0000 (11:12 +0300)]
git jump и Vim

Уже начинают вырабатываться рефлексы на использование всяких новшеств
(e555e45817d00286d76c6bd1df49f30c67389aa0768d6d9661c699595043d0a129d51df29343ddcb):
В goredo проекте хочу найти все места с hardcode-ом /bin/ путей:
    ggj /bin/
(ggj это алиас на GIT_EDITOR="$EDITOR -c copen" git grep jump).
Открывается Vim с заполненным quickfix-ом. Вижу что много /bin/sh
которые меня не интересуют. Хочется удалить их из quickfix:
    :packadd cfilter
    :Cfilter! /bin/sh
Можно указать регулярку которая бы убрала /bin/sh, но, стыдно
признаться, я с ходу не помню как это сделать. Конкретно в git-grep
можно сделать:
    gg -e /bin/ --and --not -e /bin/sh

3 years agoPostgres разрабатывался на рабочей станции Alpha
Sergey Matveev [Thu, 27 Jan 2022 19:41:24 +0000 (22:41 +0300)]
Postgres разрабатывался на рабочей станции Alpha

https://retrocomputing.stackexchange.com/questions/13611/how-much-better-was-dec-alpha-than-contemporaneous-x86
Говорят, что эта БД создавалась на машине с Alpha процессором и 64MB RAM.
Просто ещё один любопытный факт из серии тех, что Doom с Quake создавались
на NeXT. Как и Hexen с Heretic.

3 years agoМетаинформация PDF-файлов
Sergey Matveev [Thu, 27 Jan 2022 18:05:41 +0000 (21:05 +0300)]
Метаинформация PDF-файлов

http://www.git.stargrave.org/?p=dotfiles.git;a=blob;f=bin/bin/ps2pdf.zsh
Оригинальная ps2pdf команда на самом деле является просто shell обёрткой
над Ghostscript-ом, передавая пару опций, типа желаемой версии
создаваемого PDF. Я давно уже использую самописный ps2pdf.sh, который
старается делать PDF/A документы: типа более надёжные на то что будут
везде открыты. Как минимум я хочу чтобы он встраивал шрифты в них, а то
уже насмотрелся когда пользователи Windows/Word отправляют PDF-ки, в
которых ссылки на отсутствующие шрифты.

PDFSETTINGS=/default на удивление делает почти всё что мне надо и не
делает того что мне не надо. Дополнительно я указываю чтобы "фильтрация"
изображений не применялась -- насколько понимаю, он не будет пытаться
что-то пересжимать/перекодировать.

Этот же скрипт я использую для "пересжатия" уже имеющихся на руках
PDF-ок. На самом деле оно зачастую может увеличить документ, как минимум
из-за добавленных шрифтов.

Обратил внимание что Ghostscript создаёт свою собственную метаинформацию
в файле, хотя и старается брать некоторые поля из оригинального файла.
Всякое имя автора, заголовок pdflatext при использовании
    \usepackage[pdfusetitle]{hyperref}
пропишет в результрующий файл. В ps2pdf добавил вызов exiftool для
удаления всяких пустых полей, полей содержащих UUID-ы (ну не нравится
мне такой род информации), плюс копирую информацию о программе создавшей
изначальный PDF. В итоге получается:

    PDF Version                     : 1.4
    Linearized                      : No
    Page Count                      : 1
    XMP Toolkit                     : Image::ExifTool 12.30
    Creator                         : pdfTeX-1.40.22
    Title                           : Мой титульный лист
    Producer                        : GPL Ghostscript 9.25
    Conformance                     : B
    Part                            : 1
    Create Date                     : 2022:01:27 21:30:56+03:00
    Creator Tool                    : LaTeX with hyperref
    Modify Date                     : 2022:01:27 21:30:56+03:00
    Author                          : Сергей Матвеев

Изначально это всё было на pure POSIX shell с вставками Perl-а для
выдирания названий полей. Но затем этот скрипт стал ещё одной жертвой
моей любви к zsh, с которым внешние утилиты (ну кроме, собственно, gs и
exiftool) полностью исчезли и код стал существенно проще. Всё же мне
очень нравится zsh уже и как язык скриптования. Знаю что можно написать
нечто менее понятное чем на Perl-е, но... так можно везде.

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

3 years agoRedo и LaTeX
Sergey Matveev [Thu, 27 Jan 2022 17:58:15 +0000 (20:58 +0300)]
Redo и LaTeX

В d0ffbdd295c1583abde17388553038f39747b0cc упоминал о redo цели которая
смотрит на .log файл результата работы TeX и повторяет сборку пока там
не исчезнет сообщение о том что хватит. Доработал эту default.pdf.do
цель, которая ещё и BibTeX запускает:

    redo-ifchange $2.tex db.bib
    exec >&2
    jobname=${3#.}
    trap "rm -f ${jobname}*" HUP PIPE INT QUIT TERM EXIT
    pdflatex --draftmode --jobname=$jobname $2.tex
    bibtex $jobname
    while grep -q "Rerun to get" $jobname.log ; do
        pdflatex --jobname=$jobname $2.tex
    done
    mv $jobname.pdf $3

В отличии от первой версии скрипта, эта использует честный jobname для
создания всего вывода полностью во временных файлах, подчищая за собой
при ошибке или выходе. Прежде, если я запустил redo, то первое
исполнение pdflatex команды уже перезатрёт report.pdf, но может выйти с
ошибкой при этом (или на bibtex упадёт) -- с точки зрения redo файл $1
был затронут, но в его базу данных знаний о нём не занесено. Поэтому при
следующем запуске после упавшего, redo сообщит о том что .pdf уже был
externally modified. Плюс оставался всякий мусор после сборки. С этой
новой версией default.pdf.do все эти проблемы решены. Эмпирически
обнаружил что jobname не может начинаться с точки, поэтому отрезаю её,
используя в качестве имени уже имеющееся временное название $3.

3 years agoGorgoroth живые выступления
Sergey Matveev [Thu, 27 Jan 2022 17:38:03 +0000 (20:38 +0300)]
Gorgoroth живые выступления

https://www.youtube.com/watch?v=hjr74CNzArM
https://www.youtube.com/watch?v=9m8BkcIzG7M
Да у них не только в Кракове (c5bc373f82e2f9703d9810e3c7e0c55a221dd71a)
распятия, овечьи головы и факелы. Позёрство не знает границ!

3 years agoPFX -- как не надо разрабатывать крипто стандарт
Sergey Matveev [Thu, 27 Jan 2022 10:27:04 +0000 (13:27 +0300)]
PFX -- как не надо разрабатывать крипто стандарт

https://www.cs.auckland.ac.nz/~pgut001/pubs/pfx.html
Полностью согласен со всем написанным! PFX это самое отвратительное что
я видел среди всей тематики ASN.1 структур связанных с криптографией.
Хотя многие другие стандарты явно как-будто опираются на эти
рекомендации (как не надо делать), но всё же переплюнуть PKCS#12 не вышло.

3 years agoПро похожие по звучанию ругательные слова английского
Sergey Matveev [Thu, 27 Jan 2022 09:22:41 +0000 (12:22 +0300)]
Про похожие по звучанию ругательные слова английского

https://habr.com/ru/post/648051/
Похожие по произношению слова но с разным смыслом:
    There is shit on the sheets.
    Playing the bagpipes is a piece of piss.
    This is our beach, you bitch!
    We still steal other people's steel.
    I can't stand that old cunt.
    Put your cock away, all I want is a coke.
    This crepe tastes like crap.
    We need to deal with the third turd.
Ну и русские похожи на всякие английский:
    Книга -> nigga
    Факт -> fucked
    Щит, шит, шитьё -> shit
    День, деньги -> dang, damn

3 years agoЖёсткие диски с 520-байт секторами
Sergey Matveev [Thu, 27 Jan 2022 09:08:21 +0000 (12:08 +0300)]
Жёсткие диски с 520-байт секторами

https://jrs-s.net/2022/01/26/520-byte-sectors-and-ubuntu/?pk_campaign=feed&pk_kwd=520-byte-sectors-and-ubuntu
https://pissedoffadmins.com/general/unsupported-sector-size-520.html
https://old.reddit.com/r/homelab/comments/97se1p/512520_byte_sector_sizes/
https://bjartolini.wordpress.com/2014/11/06/108/
https://forums.freebsd.org/threads/deciding-what-to-do-with-520byte-sector-size-ssd.79361/
https://justinschmitt.com/2019/01/16/unsupported-sector-size-520.html
https://en.wikipedia.org/wiki/Data_Integrity_Field
Даже не слышал прежде о существовании подобного. Точнее я слышал про
Data Integrity Field, но думал что оно автомагически за командами SCSI
скрыто и в ОС сектор всё равно видится как 512-байт.

3 years agoПро Семёрку и немного Илона Маска
Sergey Matveev [Thu, 27 Jan 2022 09:01:02 +0000 (12:01 +0300)]
Про Семёрку и немного Илона Маска

https://habr.com/ru/post/647825/
Хорошая статья про развитие Р-7. Я насмотрелся кучи чертежей этой ракеты
в институте, хотя больше имел дело с Прогрессом (создавалось впечатление
что я знаю про каждый болт в нём). Интересно было всё это вспомнить. Ну
и касательно Маска вроде всё корректно.

3 years agoФотография нехилой по размерам BBS установки
Sergey Matveev [Thu, 27 Jan 2022 08:47:47 +0000 (11:47 +0300)]
Фотография нехилой по размерам BBS установки

https://rachelbythebay.com/w/2022/01/26/swcbbs/
Никогда не видел фотографии с таким количеством компьютеров. Прикольно
наверное молодым людям объяснять что: вот эта железка, это типа одного
TCP соединения.

3 years agoНоски с сандалиями
Sergey Matveev [Wed, 26 Jan 2022 21:46:04 +0000 (00:46 +0300)]
Носки с сандалиями

https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%81%D0%BA%D0%B8_%D1%81_%D1%81%D0%B0%D0%BD%D0%B4%D0%B0%D0%BB%D0%B8%D1%8F%D0%BC%D0%B8
https://en.wikipedia.org/wiki/Socks_and_sandals
На Wikipedia есть даже отдельные страницы на эту (вечную) тему. В блоге
уже не раз затрагивал эту тему, ибо она реально нервирует кучу женщин :-)
Но а я носил, ношу и буду носить, ибо с натираниями ноги я мириться не
готов. Удобство превыше всего. Хотя в целом я уже наверное года два их
ни разу не надевал. Брюс Уиллис, пишут, ярый приверженец такого ношения,
а я чем хуже?

3 years agoПро name service в Ethereum
Sergey Matveev [Wed, 26 Jan 2022 20:01:13 +0000 (23:01 +0300)]
Про name service в Ethereum

https://yanmaani.github.io/no-ethereum-name-service-is-still-a-clown-show/
Демонстрация того, как вовсю разбрасываются словами "децентрализация" и
"цензуроустойчивость". Доменом вы владеть можете, а вот "продлять" его:
персонально вам могут влепить пошлину нехилую за него.
Ничто технически не запрещает же.

3 years agoNNCP community, TCP/IP стэк
Sergey Matveev [Wed, 26 Jan 2022 14:06:58 +0000 (17:06 +0300)]
NNCP community, TCP/IP стэк

irc://irc.oftc.net/nncp
Один из активнейших популяризаторов NNCP, создал Matrix канал и IRC мост
к нему: #nncp:matrix.org. С Matrix у меня ничего не вышло
(ec98bff598791d031b0625174b87bd4bd54c188b), но к OFTC подключился.
Обнаружил, что некоторые каналы в нём требуют чтобы пользователь был
"verified", что требует перехода по ссылке на которой какой-то JS.
Поэтому к какому-нибудь suckless каналу не подключиться.

Народ там активничает, что-то обсуждает, спрашивает, дают ответы. Оттуда
же мне пришли патчи для поддержки сборки на OpenBSD, которую я с
сегодняшнего дня буду чмырить (c42a501865e4a91b8fa172840f9a0d35935fde90).
Всякие люди написали лично что вовсю используют моё поделие.

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

Добавление Yggdrasil-а где-то взбудоражило людей и только за один день у
меня добавилось несколько подписчиков рассылки. Matrix канал, говорят,
ещё как-то там соединён с другим обществами на тему более безопасного и
децентрализованного Интернета.

3 years agoOpenBSD и firmware
Sergey Matveev [Wed, 26 Jan 2022 10:10:46 +0000 (13:10 +0300)]
OpenBSD и firmware

Установил тут OpenBSD для проверки работоспособности NNCP под ним. После
установки, без предупреждений заранее, он полез в firmware.openbsd.org
чтобы скачать и установить Intel-related firmware. И вот как-то сразу
прям всё уважение к этой ОС пропало, полностью и наотрез. Совсем охренели
все эти разработчики, считая нормой просто так слазить в Интернет.

apenwarr/do (redo на POSIX shell) не находит .do файлы, не работает. Но
хотя бы goredo без проблем собирается.

А ещё в ней из коробки нет ни xz, ни zstd. И tar не умеет
декомпрессировать на лету при разархивировании (это мне скорее
даже нравится).

3 years agogit jump
Sergey Matveev [Tue, 25 Jan 2022 08:27:22 +0000 (11:27 +0300)]
git jump

https://github.com/git/git/tree/v2.35.0/contrib/git-jump
В составе git-а есть такая вот утилита, которая позволяет результат
diff-ов, git-grep-ов превращать в quickfix и открывать в редакторе.
Когда-то для подобного я писал qq утилиту:
5d2d9f386d547b8e436829db5c6533b17feffe8e.
Посмотрим какого это с jump-ом.

3 years agoКуча TUI/CLI утилит
Sergey Matveev [Tue, 25 Jan 2022 07:41:17 +0000 (10:41 +0300)]
Куча TUI/CLI утилит

https://xn--gckvb8fzb.com/command-line/
Просто сборник тьмы всяких утилит с screenshot-ами. Правда довольно
много написанных на Rust.

3 years agoНенужность Gemini протокола
Sergey Matveev [Tue, 25 Jan 2022 07:07:00 +0000 (10:07 +0300)]
Ненужность Gemini протокола

https://xn--gckvb8fzb.com/gemini-is-solutionism-at-its-worst/
Полностью согласен и считаю аналогично всё что написано в статье про
Gemini. Писал об этом не так размашисто просто. Gemini не решает ни
одной проблемы, которую нельзя бы было решить HTTP. Не нравится CSS?
Не используй, отключи, заблокируй CSS. А не изобретай отличающийся
протокол просто чтобы у нас существовал отличающийся протокол.

3 years agoFSF и сертификация железа уважающего свободу пользователя
Sergey Matveev [Mon, 24 Jan 2022 18:03:01 +0000 (21:03 +0300)]
FSF и сертификация железа уважающего свободу пользователя

https://www.opennet.ru/opennews/art.shtml?num=56568
Все эти наезды вижу в рассылках. И в целом не согласен с ними. Поражает
как спокойно на это реагирует Столлман -- явно опытный и мудрый человек.
Они чётко говорят что их оценке касается то что проходит через ОС, через
general purpose компьютер. Железка с прошивкой, которая не загружается
извне -- это чёрный ящик. И физическое отключение WiFi/GPU я тоже считаю
нормальной штукой. WiFi я в двух ноутбуках отключал физически.

3 years agoОчередная попытка запустить Matrix
Sergey Matveev [Mon, 24 Jan 2022 17:53:10 +0000 (20:53 +0300)]
Очередная попытка запустить Matrix

http://lists.cypherpunks.ru/archive/nncp-devel/2201/0469.html
Попробовал всякие Matrix клиенты -- ничего не вышло. Смог запустить
Dendrite сервер, но понятия не имею успешно ли или нет, ибо ни одного
рабочего клиента который бы мог подключаться к каналам. Создалось
впечатление что программисты заинтересованы только web-ом, мобильными
устройствам, ну и возможно GUI на desktop-е. Хотя JSON+HTTP -- уж
насколько просты должны быть в обращении, но софта нет.

Может я совсем криворукий стал? Но блин, ведь десятки XMPP или IRC
клиентов собираются без проблем. С полдюжины всяких XMPP серверов на
самых разных языках я собирал и запускал, с работающей федерацией. А по
мне так XMPP реализовать посложнее чем JSON-ы по HTTP транспорту гонять.

3 years agoПочему переехали с GNU/Linux на FreeBSD
Sergey Matveev [Mon, 24 Jan 2022 13:36:35 +0000 (16:36 +0300)]
Почему переехали с GNU/Linux на FreeBSD

https://it-notes.dragas.net/2022/01/24/why-were-migrating-many-of-our-servers-from-linux-to-freebsd/
* Консистентность всей системы. Нет необходимости устраивать революции
  во всей ОС/дистрибутивах раз в несколько лет
* Разработка FreeBSD до сих пор движется не только коммерческими интересами
* В GNU/Linux есть Docker, Podman, lxc, lxd... а в FreeBSD есть Jail-ы
* В GNU/Linux есть ext4/xfs/btrfs... а в FreeBSD UFS2 и ZFS
* Процесс загрузки гораздо проще и понятнее
* Сетевой стэк FreeBSD до сих пор лучше и часто быстрее
* Большой инструментарий из коробки
* Bhyve хоть и не так фичаст как KVM, но часто быстрее

3 years agoSkullhog фотография в Encyclopedia Metallum
Sergey Matveev [Sun, 23 Jan 2022 18:40:22 +0000 (21:40 +0300)]
Skullhog фотография в Encyclopedia Metallum

https://www.metal-archives.com/images/1/2/5/9/125971_photo.jpg
https://www.metal-archives.com/bands/Skullhog/125971
Основная фотография голландской Skullhog группы -- на нашей Красной
площади. Это небось сделано в 2007-ом когда я на них в живую был.

3 years agozsh autoquoter
Sergey Matveev [Sun, 23 Jan 2022 11:33:32 +0000 (14:33 +0300)]
zsh autoquoter

https://github.com/ianthehenry/zsh-autoquoter
http://www.git.stargrave.org/?p=dotfiles.git;a=blob;f=zsh/.zsh/rc/025zaq.zsh
Мизерный плагин (на два экрана кода) который автоматически экранирует
написанный текст для команд. Не знаю насколько будет полезен, но попробую.

3 years agoБрайн Керниган о ранней истории Unix
Sergey Matveev [Sun, 23 Jan 2022 11:13:45 +0000 (14:13 +0300)]
Брайн Керниган о ранней истории Unix

https://www.youtube.com/watch?v=ECCr_KFl41E
Понравилась программа проверки орфографии:
    cat files | tr ... | sort | uniq | comm -1 - dict
просто поиск слов в некоем, каноничном представлении, которые
отсутствуют в файле словаря.
А ещё Microsoft какое-то время была крупнейшим поставщиком Unix систем в
мире, со своим Xenix. Первая версия Word была написана именно для него.

3 years agoЯзык молодёжи
Sergey Matveev [Fri, 21 Jan 2022 06:42:01 +0000 (09:42 +0300)]
Язык молодёжи

С молодым коллегой попереписывался, а он использовал слова "магарыч",
"банкуй". Только из контекста предположил их значения. Никогда прежде ни
в устной, ни в письменной речи не встречал. Хотя одна из ссылок в
поисковой выдаче вывела на статью начинающуюся с:
    Наверняка каждый слышал фразу «С меня магарыч».
Вот ни разу и нигде не слышал доселе.
Понимаю что слова то старые, не слэнг недавно образовавшийся. Другой
коллега скинул отрывок из литературной классики с ними. Но в живую не слышал.

3 years agoYes Hello
Sergey Matveev [Thu, 20 Jan 2022 20:31:01 +0000 (23:31 +0300)]
Yes Hello

https://yeshello.org/
Не могу не продублировать этот явно троллинговый сайт:

    2018-07-19 12:32:12 you: Hello.
    2018-07-19 13:17:15 coworker: Hello.
    2018-07-19 17:40:31 you: I have a question, if you have time.
    2018-07-20 10:02:24 coworker: Sure, what is it?
    2018-07-20 16:33:58 you: I'm working on [something] and I'm trying to do [etc]
    2018-07-21 12:33:21 coworker: Oh, that's [answer]

А я даже коллекцию ссылок на эту тему имею:
http://www.stargrave.org/LinksCatNoHello.html

Это убийственно раздражает когда человек отправляет привет в IM,
ты переключаешь контекст свой, пишешь тоже приветствие и... ждёшь.

3 years agoПришло время обновить Vim
Sergey Matveev [Tue, 18 Jan 2022 18:13:05 +0000 (21:13 +0300)]
Пришло время обновить Vim

Ибо с включённым LSP плагином пару раз в день да вылетает в coredump.
Отладчик показывает что в strcmp в функции самого Vim, а дальше не
разбирался. Собрал из master ветки -- ни разу падений больше не было.

3 years agoFirefox остался один?
Sergey Matveev [Tue, 18 Jan 2022 08:05:16 +0000 (11:05 +0300)]
Firefox остался один?

https://habr.com/ru/company/mvideo/blog/646137/
Firefox, пишут, теряет много пользователей. Среди причин нет одной
постоянно нарастающей: всё больше сайтов в нём не работают (корректно),
будут только в Chrom*. Например вся из себя free software web-версия
Jitsi под Firefox не работала (точнее наполовину как-то).

Но Firefox уже много много лет откровенно плюёт на пользователей: с
какой стати его считать чем-то вообще положительным?
d91cacbfc66b1c0e01160af74a32ac59255e2362
8081858bb50754fe1fb985672f0f5c180a793d03
9ecf9331987a62db1d012bef94c39406a1d6af60
85ce6798fba20680414297893ffd58465db01d6b
Рекламу там встраивали, слив в поисковике. Чуть ли не каждая новость о
Firefox говорит что они становятся очередным Chrome или IE.

3 years agoReview приложения для Google Play через Google Translate
Sergey Matveev [Mon, 17 Jan 2022 18:53:12 +0000 (21:53 +0300)]
Review приложения для Google Play через Google Translate

https://sylviavanos.nl/blog/2021/12/24/google_play_hell.html
Долго приложения не подтверждалось, потому что использовался какой-то
Google Translate, превращающий слова "свобода" в "free", которое в
английском уже могло означать "gratis". И приложение отклонялось.

Для меня использование всех подобных платформ/компаний это как-раз
зависимость от мнения всяких идиотов. Возможно целый бизнес от этого
будет зависеть. И ведь таких историй или история про цензуру -- тьма.

Как с Google Captcha -- якобы каждый должен знать как выглядят гидранты
или что такси обязательно жёлтые. Я всё не забуду как приходилось
французам объяснять что такое прописка и что да, это не шутка что мне на
почту (не электронную) ничего не приходит из посылок вообще, ибо я
ничего не заказываю. С местными хотя бы не будет культурных, так
сказать, различий.

3 years agoAIO в GNU/Linux
Sergey Matveev [Mon, 17 Jan 2022 18:06:01 +0000 (21:06 +0300)]
AIO в GNU/Linux

https://habr.com/ru/post/646073/
https://wiki.postgresql.org/wiki/FreeBSD/AIO

    В 2019 году произошло великое событие: инженеры из Facebook написали
    новый механизм асинхронной работы с дисковым IO, который получил
    название io_uring. Он был добавлен в ядро версии 5.1. Вполне неплохо
    -- Linux 2019 года уже может полноценно работать с файлами.

Тогда как в FreeBSD AIO появился в 5.0 в 2003-ем году. Facebook молодцы!

Ну а в macOS, как и с сетевым стэком (f19e0f25f0bf0c1563602d922e9cdf0c1f5ff00b):

    MacOS в скобках, потому что это не серверная ОС. aio там
    присутствует, но вместе с aio идет огромное количество граблей.

3 years agoApple похоронила свой последний компьютер с дисководом
Sergey Matveev [Mon, 17 Jan 2022 11:16:58 +0000 (14:16 +0300)]
Apple похоронила свой последний компьютер с дисководом

https://lenta.ru/news/2022/01/17/cd/
Очень удивился новости о том что у них ещё что-то было с дисководом.
И только открыв эту новость и прочитав что речь про CD-ROM, понял что
ошибся. Я вот никогда в жизни не называл CD-ROM приводы дисководами,
хотя вроде это действительно тоже корректное слово. Как-то так по жизни
повелось что дисковод это 5.25" или 3.5" штуки для дискет, а оптические
диски это уже CD/DVD/whatever-приводы.

3 years agoPGPdisk в Windows XP
Sergey Matveev [Mon, 17 Jan 2022 06:44:29 +0000 (09:44 +0300)]
PGPdisk в Windows XP

https://lists.gnupg.org/pipermail/gnupg-users/2022-January/065776.html
История о том, что PGPdisk может быть отлично написан и безопасен, когда
применяется там, на что и был рассчитан. Но под Windows XP, когда появилась
такая штука как засыпание компьютера, с сохранением данных на диск, он
становится полностью небезопасен. Хотя журналисты бы написали заголовки
из серии "PGPdisk с AES-256 бит шифрованием взломан".

3 years agoПосмотрел "Мизери"
Sergey Matveev [Sun, 16 Jan 2022 19:12:17 +0000 (22:12 +0300)]
Посмотрел "Мизери"

https://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%B7%D0%B5%D1%80%D0%B8_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC)
Клёвый триллер, понравился. Так как теперь более дюжины книг и рассказов
Кинга прочитал, то уже вижу что это прям его стихия, особенно заканчивать
свои рассказы вот так. Кэти Бейтс в кошмарах после этого только будет
приходить.

3 years agoNNCP в Yggdrasil сети
Sergey Matveev [Sun, 16 Jan 2022 13:14:55 +0000 (16:14 +0300)]
NNCP в Yggdrasil сети

http://www.nncpgo.org/Yggdrasil.html
https://yggdrasil-network.github.io/
https://github.com/neilalexander/yggmail
NNCP теперь может выступать в качестве клиента сети Yggdrasil! Не
используя никакого стороннего софта, не настраивая сторонних демонов.
Идея, как и зачатки кода, полностью взяты из yggmail.

nncp-daemon может работать в качестве listener ноды принимающей
соединения от других участников, осуществляющей всю маршрутизацию и
вообще работу. nncp-call* могут подключаться к любой Yggdrasil ноде и
связываться с NNCP адресами. Из Yggdrasil используется только
возможность отправки/приёма пакетов: никаких сетевых интерфейсов или
вообще знаний об адресах иметь не нужно. Публичный ключ хоста,
магическим образом становится IPv6 адресом для пакетов μTP транспортного
протокола, достигая целевой ноды без вопросов туннелирования и прочего.
Что приятно тем, что никакой возни с TUN интерфейсами не нужно вообще,
где есть проблемы с не самыми свежими версиями ОС
(883b33f7085a9dfd04fca75b056d0e0b4c3fdf73).

Почему μTP? Я взял из yggmail-а. Видимо, проще на Go нет ничего другого
для реализации транспортного протокола поверх пакетного сокета.
Реализации TCP на pure Go я не видел.

    $ nncp-cfgnew -yggdrasl
    Public: c7274667c6...
    Private: a87d6f98d...

    $ cat >> $NNCPCFG <<EOF
    yggdrasil-aliases: {
      prv: a87d6f98d...
      dst: 3915039ac...
      entrypoint: "tcp://example.org:5400?key=2cd18819...
      bind: tcp://[::]:5400
    EOF

    $ nncp-call dst-node-name "yggdrasil:dst;prv;entrypoint"
    $ nncp-daemon -yggdrasil "prv;bind;;"

3 years agoage утилита шифрования
Sergey Matveev [Sat, 15 Jan 2022 11:12:29 +0000 (14:12 +0300)]
age утилита шифрования

https://github.com/FiloSottile/age
За сутки меня пара человек спрашивала что я думаю об age утилите. Пошёл
смотреть что это такое. Во-первых, мне очень жутко и невообразимо не
нравится то, что спецификация формата находится на GoogleDocs сайте: как
они предполагают ею люди будут читать?

Но в остальном у меня претензий больше то особо и нет. Весь исходный код
я просмотрел: его совсем немного, прост и топорен, как и сам формат.
Потоковое шифрование, как и я в NNCP
(9dbbfb48af71d290a67a389117411ded7ecc11a6), использует сигнал при
шифровании последнего блока: используется nonce с выставленным битом
особым. ChaCha20-Poly1305, HKDF, простые заголовки -- всё это одобряю.

Вижу эту утилиту как некий аналог signify (https://man.openbsd.org/signify).
Один делает подписи в очень простом формате и ed25519. А второй
предлагает шифрование. Причём преобразование ed25519->curve25519 делает,
вроде бы, корректно, всё как полагается.

Похоже что людям нравится тот факт что они могут использовать уже
имеющиеся ключи в их .ssh. В принципе то я доверяю стойкости *25519
достаточно чтобы не переживать по поводу переиспользования одного ключа
для разных целей. Но, на рефлекторном уровне предпочитаю стараться
разделять ключи по целям использования. Это просто не может не быть
плохой практикой. А раз так, то я и смысла в отдельной age утилите не
вижу. У неё конечно есть большое преимущество: очень мало кода, за 15мин
можно просмотреть, а криптография из родных Go библиотек берётся.
OpenPGP и GnuPG безусловно монстры по размерам. Но зато GnuPG можно
ожидать что есть на любой Unix-like системе из коробки, грубо говоря.
Раз всё равно будет отдельный ключ для шифрования, то на практике от age
мало каких-то плюсов: кол-во команд (age vs gpg) не изменится, но зато
есть целая инфраструктура и инструментарий OpenPGP, который может да
пригодится.

Единственная ощутимая разница это то, что в GnuPG нет ChaCha20-Poly1305.
Быстрее всего зашифровать можно в AES-OCB режиме в нём, что у меня вроде
выдавал больше гигабайта в секунду. Где-то наверное это может быть
недостаточно, но для моих применений более чем. Да и если хочется
максимальнейшей производительности, то вместо "age" я бы использовал
свой gohpenc, который распараллеливаться умеет.

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

3 years agoSICP в Texinfo/Info формате
Sergey Matveev [Sat, 15 Jan 2022 10:38:20 +0000 (13:38 +0300)]
SICP в Texinfo/Info формате

https://www.neilvandyke.org/sicp-texi/
https://mitpress.mit.edu/sites/default/files/sicp/index.html
https://en.wikipedia.org/wiki/SICP
Ещё в школе или институте я смотрел видео-лекции SICP из 1980-ых. Так
впечатляло там всё, что думал что ни на чём не буду программировать
кроме Lisp(-like) языков. Потом со временем и использованием Freetalk
(на GNU Guile написанном) понял что моя голова не для функциональщины.
Но очень впечатлял этот курс! А тут в удобном Info формате ещё.

3 years agoFacebook firewall
Sergey Matveev [Fri, 14 Jan 2022 10:21:15 +0000 (13:21 +0300)]
Facebook firewall

Услышал тут:

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

3 years agoВ Москве открылся музей криптографии
Sergey Matveev [Fri, 14 Jan 2022 07:54:14 +0000 (10:54 +0300)]
В Москве открылся музей криптографии

https://habr.com/ru/news/t/645469/
Очень хочется сходить! Вопросы с QR-кодами конечно останавливают сейчас.

3 years agoСтатьи-ответы на опыт Мокси с Web3
Sergey Matveev [Fri, 14 Jan 2022 07:51:58 +0000 (10:51 +0300)]
Статьи-ответы на опыт Мокси с Web3

https://blog.plan99.net/re-moxie-on-web3-b0cfccd68067
https://staltz.com/some-people-want-to-run-their-own-servers.html
https://www.cryptologie.net/article/548/in-response-to-moxies-doubts-on-web3-and-about-ultra-light-clients/
Мокси раз в несколько лет напишет в своём блоге что-то, а дальше на это
годами будут ссылаться и комментировать. Крутой чувак конечно, хотя я и
далеко не со всем с ним солидарен. Как и люди отвечающие на его статью
про Web3 (2a9b8bec6c707f0ec3b445056daa9807b1206a35).

3 years agoMatthew Green делает review MetaMask Web3 решения
Sergey Matveev [Fri, 14 Jan 2022 07:45:20 +0000 (10:45 +0300)]
Matthew Green делает review MetaMask Web3 решения

https://blog.cryptographyengineering.com/2022/01/14/an-extremely-casual-code-review-of-metamasks-crypto/
По сути он просто рассказал как куда полез и на что смотрел, чтобы хотя
бы в общих чертах прикинуть годность криптографической части проекта. А
буквально именно вчера я по сути тоже самое делал про
https://github.com/FiloSottile/age проект. Приятно было читать это всё и
понимать что я иду тем же самым путём и смотрю на точно такие же вещи.
Ну и можно увидеть какой же JavaScript мир это ад, даже для попыток
нахождения реально используемой версии кода.

3 years agoBeginner Vim
Sergey Matveev [Thu, 13 Jan 2022 08:35:22 +0000 (11:35 +0300)]
Beginner Vim

https://www.youtube.com/watch?v=R2pBWDnfJY8
Чувак в начале долго поясняет как он удаляет абзац. Показал несколько
вариантов, но не было, собственно главного, собственно, motion-а
удаления параграфа. И таких tutorial-ов преобладающее большинство. Я
называю его способ работы "блокнот-mode"
(0cb96230ef06269430291f13f206f4ccac86e926). С ними не понять и не
познать нафига Vi/Vim то нужны и чем они мощны. Плюс он
продемонстрировал насколько ужасно жить без relativenumber
(5ff1b3c8c76be6e7691defe34a7e18c4d753f4f2).

3 years agoУязвимость в eBPF
Sergey Matveev [Wed, 12 Jan 2022 20:24:25 +0000 (23:24 +0300)]
Уязвимость в eBPF

https://www.opennet.ru/opennews/art.shtml?num=56497
Заголовок статьи звучит "Уязвимость в подсистеме eBPF, позволяющая
выполнить код на уровне ядра Linux" -- мне казалось что eBPF это как-раз
именно и есть штука которая позволяет выполнять код на уровне ядра Linux.
По определению :-)

3 years agoPCIe 6.0
Sergey Matveev [Wed, 12 Jan 2022 09:34:53 +0000 (12:34 +0300)]
PCIe 6.0

https://habr.com/ru/company/dcmiran/news/t/645149/
Теперь там применяют PAM4 модуляцию и FEC кодирование. Вспомнил про
старые добрые модемы. Сотнигигабитные Ethernet-ы PAM вовсю применяют,
но пишут что это ощутимо дороже. А про FLIT-ы я впервые услышал.

3 years agotroff vs TeX
Sergey Matveev [Wed, 12 Jan 2022 08:59:01 +0000 (11:59 +0300)]
troff vs TeX

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

На troff я написал свою первую курсовую в институте. Просто потому что
во всех книгах по Unix у меня рассматривался с примерами только он,
включая и макросы для математики и для рисования (я кстати вполне себе и
рисовал в нём какие-то схемки). Выглядело неплохо, но что-то потом у
меня как-то не возникло желания снова на нём продолжать делать работы.
Точную причину уж не помню. Да и как оформляется математика в нём я
смутно помню -- возможно TeX/LaTeX были существенно удобнее, а сроки
сдачи поджимали, поэтому на них выбор и пал.

Но вот смотрю я на troff/nroff и прочее. Смотрел я на mandoc. И вот ну
не нравятся мне они все, чисто субъективно и визуально. Да, код для
работы с ними наверное прост и эффективен. Задачу выполняют. Но вот мне
не приятно смотреть и пытаться интерпретировать все эти команды на
отдельных строчках. Сложно читать. Честно говоря, я бы предпочёл уж даже
какой-нибудь DocBook с его XML-ем, чем *roff. Видимо, поэтому мне так
хорошо заходит и Texinfo в том числе.

3 years agoGunicorn и gevent в Python
Sergey Matveev [Tue, 11 Jan 2022 15:09:46 +0000 (18:09 +0300)]
Gunicorn и gevent в Python

https://news.ycombinator.com/item?id=29874106
Первым комментарием к этой новости идёт:

    I wish Gunicorn with Gevent had won the “async vs. coroutine Python”
    battle. The Developer UX is so much better with coroutines and just
    as scalable as asyncio (async/await).

Полностью солидарен с этим! async код это грёбаный ад в Python. Как
минимум потому что по сути не выйдет мешать sync и async код вместе.
Или делать по две реализации или всё только с async-ом. Но вот только
зачем? sync код гораздо проще и удобнее писать, удобно отлаживать. В
обоих случаях придётся I/O библиотеки затачивать либо под дружелюбность
к gevent-у, либо к async. Плюс это всё очень хорошо работало ещё и на
Py27, позволяя вполне себе high-load решения делать для web-а.

    I cannot be the only one disappointed by the lack of unicorns with guns.

3 years agoЗадолбал vim-lsp, переехал на vim-lsc
Sergey Matveev [Tue, 11 Jan 2022 13:14:37 +0000 (16:14 +0300)]
Задолбал vim-lsp, переехал на vim-lsc

http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=53366c99f4b3952a830993dac79e002b0dd381a8
https://github.com/natebosch/vim-lsc
Год назад я писал что vim-lsp препаршивнейшего качества:
3d12e5e1768d806eed09e90f07fecd6549dbeb6e. За последний месяц-пару
обновлял его. Changelist как портился, так и портится.

Если показать hover из описания объекта ("K" клавиша), то перестают
работать стрелочки -- вместо них появляется <plug>что-то-там. Если при
этом создать сессию (:mks) и восстановить её, то после входа в режим
ввода, перестаёт работать Esc и куча других клавиш, вставляя <plug>текст
всякий. В итоге я вынужден был убить редактор, ибо не могу из него
выйти. В репозитории есть коммит, который якобы чинит эту проблему с
ломающим hover-ом. Возможно где-то и чинит, но не в моём случае.

Откатился на сколько-то коммитов назад, где не было рефакторинга
hover-а. Но вскоре, переключив tab tmux-а, заметил что имя pane-а
поменялось на какую-то lsp-related кухню! Тут моё терпение уже
окончательно лопнуло. Задолбал! Как же меня этот плагин задолбал! Мне
кажется за всё время он НИ РАЗУ не работал без косяков, не портя позиции
курсора, changelist, не падая, не сбивая keymap-ов и всё в этом духе.

Из всех оставшихся плагинов для Vim нашёл (бегло) только vim-lsc. Всякие
ALE -- это как Nerd*. Какие-то требуют NodeJS или Rust.

vim-lsc я похоже не пробовал прежде вовсе. И об этом надо бы было
пожалеть. На фоне vim-lsp мне всё в нём нравится! Дока на порядок меньше
по размеру. Устанавливается и настраивается на работу с серверами на раз
два. Передать workspace_config -- без проблем. Из коробки ВСЕ настройки
меня полностью удовлетворяют и нравятся, ничего не надо менять или
переопределять. Кроме одной: отключение автоматического completion,
который мог тормозить на огромных проектах. Code action работает.
Подсветка текущего слова работает. Подсветка ошибок linter-а, пояснение
если курсор стоит на строке с ошибкой -- всё работает из коробки.

А главное: авторы vim-lsc упорно хотят засовывать всё на свете в
quickfix. И лично мне это очень нравится, ибо для vim-lsp писал
собственный плагин который бы это делал. В итоге мой плагин для
автодополнения импортов снова работает просто с quickfix окном!

С hover-ом, показывающим сигнатуру объекта, никаких проблем. Ничего
нигде не портится. Даже goto definition команды заточены на
дружелюбность к "vertical" префиксам команды. Проверил и на Python,
на Go и на Си коде.

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

Не скрою, пришлось повозиться с ним чтобы заработал ручной вызов
completion-а. Автоматически включённый -- работает. Как выключаю и
переопределяю omnifunc, так ничего не выходит. Излазил вдоль и поперёк
его код completion-а, но не нашёл проблемы. Зато понравился его качество
кода. Под конец догадался сделать :set omnifunc? чтобы увидеть что там
совершенно левое значение выставлено. vim-lsp после запуска LSP демона
выполнял hook, в котором выполнялся setlocal omnifunc. vim-lsc такого
hook-а не имеет и поэтому в приоритете оказывается ftplugin/python из
родной поставки Vim, переопределяющий omnifunc. В общем, это первое что
я должен был бы проверить, но обосрался, к vim-lsc никаких претензий.

PS: Ещё в vim-lsp есть больные на голову касательно whitelist/blacklist:
9a174ec74ffb0a499b5415c8c8238d2584b749ed.

3 years agoОкончательно избавился от medium.com блогов в новостной ленте
Sergey Matveev [Tue, 11 Jan 2022 09:21:03 +0000 (12:21 +0300)]
Окончательно избавился от medium.com блогов в новостной ленте

Часть убралась из-за JavaScript в 5ac1445beb210c012fcc37e1b3940a9c031a2a7d.
А теперь medium стал за Cloudflare (3377284e1f2e5c1db69e100ec32f8f5a92a08cb4),
поэтому в принципе уже ничего не загружается, кроме заглушки этого CDN.

3 years agoProof-of-stake это мошенничество
Sergey Matveev [Tue, 11 Jan 2022 09:05:57 +0000 (12:05 +0300)]
Proof-of-stake это мошенничество

https://yanmaani.github.io/proof-of-stake-is-a-scam-and-the-people-promoting-it-are-scammers/
https://habr.com/ru/post/600113/
Статья о том, что PoS это полная фигня. В том плане, что она опирается
только на решения людей, не делая самостоятельно никакого консенсуса.

3 years agoСобрание красивостей сделанных в TeX
Sergey Matveev [Mon, 10 Jan 2022 21:33:14 +0000 (00:33 +0300)]
Собрание красивостей сделанных в TeX

https://tex.stackexchange.com/questions/1319/showcase-of-beautiful-typography-done-in-tex-friends
Впечатляет чего только люди в нём не сделают и как не оформят!

3 years agoИдиотизм lock-ов SysV/POSIX
Sergey Matveev [Mon, 10 Jan 2022 14:35:09 +0000 (17:35 +0300)]
Идиотизм lock-ов SysV/POSIX

https://gavv.github.io/articles/file-locks/
https://www.freebsd.org/cgi/man.cgi?query=fcntl&sektion=2
https://lwn.net/Articles/586904/
https://go.dev/src/cmd/go/internal/lockedfile/internal/filelock/filelock_fcntl.go
https://www.samba.org/samba/news/articles/low_point/tale_two_stds_os2.html
https://apenwarr.ca/log/20101213
http://0pointer.net/blog/projects/locking.html
Есть BSD-style lock-и для файлов, есть SysV/POSIX fcntl/flock.
С первыми всё просто, тривиально, надёжно, легко и понятно.
Со вторыми написано хорошо в FreeBSD man-е для fcntl:

    This interface follows the completely stupid semantics of System V and
    IEEE Std 1003.1-1988 (“POSIX.1”) that require that all locks associated
    with a file for a given process are removed when any file descriptor for
    that file is closed by that process.  This semantic means that
    applications must be aware of any files that a subroutine library may
    access.  For example if an application for updating the password file
    locks the password file database while making the update, and then calls
    getpwnam(3) to retrieve a record, the lock will be lost because
    getpwnam(3) opens, reads, and closes the password database.  The database
    close will release all locks that the process has associated with the
    database, even if the library routine never requested a lock on the
    database.  Another minor semantic problem with this interface is that
    locks are not inherited by a child process created using the fork(2)
    system call.  The flock(2) interface has much more rational last close
    semantics and allows locks to be inherited by child processes.  The
    flock(2) system call is recommended for applications that want to ensure
    the integrity of their locks when using library routines or wish to pass
    locks to their children.

В статье с LWN-а:

    More troublingly, the standard states that all locks held by a
    process are dropped any time the process closes any file descriptor
    that corresponds to the locked file, even if those locks were made
    using a still-open file descriptor. It is this detail that catches
    most programmers by surprise as it requires that a program take
    extra care not to close a file descriptor until it is certain that
    locks held on that file are able to be dropped.

Похоже что в AIX и Solaris (но не Illumos) BSD flock-ов нет, поэтому в
Go для работы с ними написана обёртка над POSIX lock-ами, занимающая
несколько экранов кода, как раз для отслеживания всех этих привязок к
инодам.

Кирк МакКузик говорит что во время стандартизации lock-ов всем было
просто плевать, поэтому добавили как уже было в SysV.

Даже Поттеринг пишет что всё ужасно.

3 years agoGithub ответ на изменения в colors и faker NPM пакетах
Sergey Matveev [Mon, 10 Jan 2022 13:56:11 +0000 (16:56 +0300)]
Github ответ на изменения в colors и faker NPM пакетах

https://www.opennet.ru/opennews/art.shtml?num=56479
Автор волен делать что угодно, ничего против не скажу. Но вот то, что
Github при этом заблокировала ему доступ -- это свинство конченое. Ты
не в праве творить в своих же репозиториях угодные тебе изменения?

3 years agosnap_line_delimiters патч для st терминала
Sergey Matveev [Mon, 10 Jan 2022 11:33:44 +0000 (14:33 +0300)]
snap_line_delimiters патч для st терминала

http://git.suckless.org/sites/commit/b697350f15956135914068eff6262ae1c1b202c8.html
Позволяет тройным кликом выделять всю строку, но в пределах указанных
символов разделителя, например вертикальной полоски в tmux или vim.
Выглядит удобно, хотя выделить набор строчек всё равно не выдет.

3 years agobaredo redo
Sergey Matveev [Mon, 10 Jan 2022 11:16:08 +0000 (14:16 +0300)]
baredo redo

https://github.com/gotroyb127/baredo
Автор этого проекта прислал мне его на ревью, узнать моё мнение.
Реализация redo на Си, только с тремя основными командами
(redo/-ifchange/-ifcreate). Кроме неатомарного обновления файла
зависимостей в целом мне всё понравилось. Даже мои большие проекты
с полусотней не-только-shell целей собираются. Нет распараллеливания.
Проверка только ctime-а для определения свежести целей. Но этот проект
выглядит куда вменяемее чем redo-c, в котором сломали "пустые" цели:
https://github.com/leahneukirchen/redo-c/pull/2
https://github.com/leahneukirchen/redo-c/issues/22 (без объяснения
причин не собираются восстанавливать).

3 years agoМинималистичный xorg.conf
Sergey Matveev [Sun, 9 Jan 2022 20:01:28 +0000 (23:01 +0300)]
Минималистичный xorg.conf

Решил поубирать всё что можно из xorg.conf, который я наверное уже лет
десять таскаю с собой сквозь всевозможные дистрибутивы. Оказалось что
оно даже и пустое будет работать, ничего лишнего, судя по журналу, не
подгружая. Единственное что я оставил:

    Section "Device"
            Identifier "Card0"
            Driver "intel"
    EndSection

так как переключение драйвера точно требовалось. Ещё помню что
обязательно нужно было указать Option "AutoAddDevices" "false" в
ServerLayout, но... я забыл для чего, в блоге нет, без этой опции
пока проблем никаких не наблюдаю. Может быть это связано с Logitech
трэкболом было, где задавался mapping некоторых его клавиш в moused
демоне и Xorg не должен был самостоятельно чего-то лишнего делать?
Но переключение языков делается теперь через setxkbmap (прежде в
xorg.conf задавалось). Для трэкбола не нужно никакого mapping-а, ибо
у него и так колесо прокрутки родное имеется. В итоге и выродились
секции с устройствами ввода.