]> Sergey Matveev's repositories - stargrave-blog.git/log
stargrave-blog.git
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-а, ибо
у него и так колесо прокрутки родное имеется. В итоге и выродились
секции с устройствами ввода.

3 years agoГруппа Obscura была названа в честь Obscura альбома
Sergey Matveev [Sun, 9 Jan 2022 16:57:02 +0000 (19:57 +0300)]
Группа Obscura была названа в честь Obscura альбома

https://en.wikipedia.org/wiki/Obscura_(band)
https://en.wikipedia.org/wiki/Obscura_(album)
https://www.youtube.com/watch?v=RCT8-Yzkzbs
Для меня слово "Obscura" ассоциируется только с альбомом Gorguts.
Поэтому когда я видел название группы, то терялся -- ведь не на том
месте название то стоит в названии директорий.

    Since its release, Obscura has come to be regarded as one of the
    most important albums in the technical death metal genre, and as
    "one of the most complex and technical records in the genre...

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

3 years agoУзнаю гроулящих вокалистов
Sergey Matveev [Sun, 9 Jan 2022 16:28:57 +0000 (19:28 +0300)]
Узнаю гроулящих вокалистов

За последние годы заметил что узнаю приглашённых вокалистов на всяком
black и death метале. Я понятия не имею есть ли там кто в трэке, но
чувствую что кто-то знакомый появился. Захожу на Encyclopaedia Metallum
и оказываюсь прав. Вот у этого не сильно, вроде бы, выделяющийся гроул:
https://www.metal-archives.com/artists/Spiros_Antoniou/1630
(вокалист Septicflesh), но даже на трэке Aborted узнаётся. Да и не
только гроулящих, но и какого-нибудь Ihsahn-а ни с кем не спутаешь.

3 years agorirc IRC клиент
Sergey Matveev [Sun, 9 Jan 2022 07:50:30 +0000 (10:50 +0300)]
rirc IRC клиент

https://rcr.io/rirc/
http://www.git.stargrave.org/?p=rirc.git;a=commitdiff;h=85d77d07a201e6d712e06501494e6a7e3c633271
Попробовал rirc клиент IRC. Написан на Си, очень лёгок, полноэкранный
TUI, поддерживает всякие SASL, TLS и даже некоторые IRCv3 возможности.
Никаких конфигов. Связаться с Libera.Chat можно без проблем.

Как минимум не хватает перехода на "alerted" канал, да и просто список
каналов у меня не влезает по горизонтали (Mattermost на работе состоит
из не одного десятка каналов). Плюс нет сохранения журнала.

Из коробки оно правда не собралось у меня и пришлось сделать небольшой
патчик со всякими отсутствующими include-ами и define-ами.

3 years agoПропущенные запятые в Python
Sergey Matveev [Sat, 8 Jan 2022 17:48:53 +0000 (20:48 +0300)]
Пропущенные запятые в Python

https://www.opennet.ru/opennews/art.shtml?num=56470
Вечный источник проблем в этом языке! Пример того, как свобода
самовыражения куда больше бед приносит. Конечно, если бы всё было
покрыто тестами досконально, то и проблем бы не было, но зачем на
пустом месте давать такую простую возможность обосраться? Ведь все
эти запятые действительно плохо видны на экране. Настраивать
редактор на их яркую подсветку?

3 years agoСессии в Vim
Sergey Matveev [Sat, 8 Jan 2022 16:13:25 +0000 (19:13 +0300)]
Сессии в Vim

С прошлого года стал гораздо чаще использовать сессии. View у меня
автоматически сохраняются и загружаются через autocmd. Но view отвечает
только за одно окно. А если хочется сохранить и полностью всё их
расположение и открытые буферы, то тут только сессии помогут. Даже не
потому что компьютер хочется выключить, а например перезапустить vim
из-за обновления какого-нибудь LSP сервера или его конфигурации.

:mks -- и в текущей директории (у меня это, как правило, корень проекта)
будет создан Session.vim. vim -S -- его автоматом загрузит. Я не парюсь
со всеми этими именами файлов, ибо у меня бывает только одна сессия на
проект.

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

3 years agorecoll и индексация man-страниц
Sergey Matveev [Sat, 8 Jan 2022 12:22:04 +0000 (15:22 +0300)]
recoll и индексация man-страниц

http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=471b572cc7f6814bc8d37d0e5585ac67d9fe954a
Захотел документацию по одной из секций xorg.conf-а.
rcl man ServerLayout (86e4d33cf2ae7459838f041f534382a3ef23ee18): и
ничего не выдаёт! Какой же толк от всего этого если он не находит
банальщины?

Выяснилось что типы файлов он определяет корректно: text/troff, но они
не индексируются, так как неизвестно какой из процессоров roff-макросов
необходимо применять. В штатной поставке есть mimemap файл для явного
указания что файлы в /usr/share/man являются text/x-man, для которых уже
явно вызывается groff с man-процессором.

Добавив этот mapping для всех директорий man-ов (которых с десяток),
проблема решается, всё прекрасно начинается искаться. Прежде, при
проверке работоспособности, я, похоже, давал поиск по man-ам
оказывающимся в /usr/share/man.

3 years agoYggdrasil на FreeBSD
Sergey Matveev [Sat, 8 Jan 2022 12:10:50 +0000 (15:10 +0300)]
Yggdrasil на FreeBSD

В рассылке NNCP напомнили о существовании Yggdrasil. Решил посмотреть
работает ли эта штука и можно ли подключится к его глобальной сети.
Собирается на FreeBSD 12.0 без проблем, но совершенно отказывается
работать с TUN интерфейсами. Помню что когда игрался с Wireguard, то
тоже столкнулся с этим. Yggdrasil использует исходный код Wireguard для
работы с TUN-интерфейсами как-раз. Проблема в том, что они стали
использовать системные вызовы появившиеся как минимум в FreeBSD 12.1.

У меня есть директория с рабочим Wireguard-ом, стоящем на коммите до
несовместимых изменений работы с TUN-ом. Работоспособность Yggdrasil
в итоге восстанавливается простой командой:
    echo "replace golang.zx2c4.com/wireguard => /home/stargrave/work/wireguard-go"
        >> yggdrasil-go-0.4.2/go.mod

Взял какой-то российский публичный peer, подключился, разрешил firewall
на tun0 интерфейс, зашёл через эту overlay сеть на домашнюю страницу
проекта. Так что всё работает, не упало. cjdns при подключении к
Hyperboria редко выживал.

3 years agoКиану то прав о NFT
Sergey Matveev [Sat, 8 Jan 2022 09:50:22 +0000 (12:50 +0300)]
Киану то прав о NFT

Киану Ривз был прав (5203ade13973b991b29ea3a6b2b969be82c3c6a7) о том,
что NFT можно подменить/подделать, что Мокси и продемонстрировал и его
NFT даже удалили в 2a9b8bec6c707f0ec3b445056daa9807b1206a35.

3 years agoMoxie о Web3
Sergey Matveev [Sat, 8 Jan 2022 08:59:47 +0000 (11:59 +0300)]
Moxie о Web3

https://moxie.org/2022/01/07/web3-first-impressions.html
Спустя шесть лет простоя, у Мокси появилась запись в его блоге о Web3.

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

Он был удивлён что де-факто все клиенты blockchain-ов вообще то не
работают с этими blockchain-ами "напрямую" -- они не реплицируют
состояние, не делают криптографические проверки. Они просто общаются с
посредниками, всего с (де-факто) двумя посредниками-серверами, которые
отдают данные без какой-либо аутентификации или подписи. Какой смысл в
blockchain если, собственно, проверку никто не производит? Это вопрос к
последователям всей этой брехни.

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

Если что-то попало в blockchain, то его оттуда же уже не достать? Мокси
сделал NFT, но в итоге его оттуда "удалили". Как же так? Да потому что
никто из клиентов не делает никакой валидации ответов (от пары
централизованных платформ). И де-факто все смотрят не в blockchain, а в
централизованную платформу. Всякие правила отчислений вшиты не в
blockchain-ы с их умными контрактами, а в API и софт централизованных
платформ. Говоришь что у тебя есть NFT, он же зарегистрирован в
blockchain? А клиент платформы на смартфоне говорит что нету. И никуда
ты не денешься после этого, ведь у миллионов пользователей сказано что
нету у тебя ничего. Вот она децентрализация!

Что для меня было открытием, так это то, что оказывается NFT не делает
hash commitment. Я был полностью уверен что в blockchain помещается хэш.
Везде написано что помещается URL, но я не ожидал что без хэша.

В итоге, пишет Мокси, люди, имеющие дела со всеми этими NFT, совершенно
не заботятся о распределённом доверии, а только о том, где их деньги. В
итоге, уже сейчас на практике, всё это превратилось просто банально в
web-сайт для покупки и продажи JPEG-ов, используя дебетовую карточку. Не
больше, ни меньше. Это просто сайт магазин, использующий обычные
банковские карты для оплаты. Ничего де-факто из web3, blockchain не
остаётся на практике. Но запустить такой магазин они просто не могли,
так как рынок требует чтобы было модно, ново, молодёжно, с блокчейном
внутри (хотя он там просто лишен).

3 years agoМигающий курсор
Sergey Matveev [Fri, 7 Jan 2022 08:36:06 +0000 (11:36 +0300)]
Мигающий курсор

https://habr.com/ru/company/skillfactory/blog/599535/
https://st.suckless.org/patches/blinking_cursor/
В этом году я стал использовать патч с мигающим курсором в терминале.
И тоже по причине описанное в статье -- понимать где он находится.

3 years agoWeb3
Sergey Matveev [Thu, 6 Jan 2022 19:20:42 +0000 (22:20 +0300)]
Web3

https://thedorkweb.substack.com/p/the-weirdness-beyond-web3-bullshit
https://jlelse.blog/links/2021/12/web0
https://elliott.computer/pages/web0.html
https://ar.al/2022/01/06/the-web0-manifesto-a-technical-review/
https://blog.wesleyac.com/posts/web3-centralized
https://jlelse.blog/micro/2021/11/brave-web3
https://invisibleup.com//articles/38/
https://soatok.blog/2021/10/19/against-web3-and-faux-decentralization/
В ленте новостей замечаю много статьей замечающих об огромной куче
статей про Web3.

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

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

Поражает насколько часто используют они слово "децентрализованный". Прям
как какой-нибудь Дуров лепечущий про безопасность своего Telegram.

3 years agoapcupsd
Sergey Matveev [Thu, 6 Jan 2022 16:22:05 +0000 (19:22 +0300)]
apcupsd

Впервые решил использовать демона для мониторинга ИБП. Хотя может быть
раньше и пробовал, но ничего не вышло из-за какой-нибудь проприетарщины.
Сейчас у меня APC ИБП появился. Установил apcupsd из портов, указал в
конфиге что нужно использовать USB -- бесперебойник видит, все параметры
показывает, из коробки делает и wall и выключение системы. Всё оказалось
тривиальным.

3 years agoПокатушки
Sergey Matveev [Thu, 6 Jan 2022 15:19:03 +0000 (18:19 +0300)]
Покатушки

На днях с родителями ездил в Сергиев-Посад. Погуляли там по Лавре,
съездили в Радонеж. Выбирались ещё в центр Москвы, на Красную площадь.
Народу тьма, всякие ярмарки. Сегодня ездил на ИБП и на ВДНХ народу
как-будто ещё больше чем в центре. Выбирались специально вечером, чтобы
кучу подсветки красивой лицезреть.

3 years agoTurboBoost и ИБП
Sergey Matveev [Wed, 5 Jan 2022 20:04:38 +0000 (23:04 +0300)]
TurboBoost и ИБП

В 69e98cc610789604ae6a02ae38586135a803d38c начал использовать TurboBoost.
Но даже банальный startx заставит процессор разогнаться настолько, что ИБП
сразу вырубается. Не проверял хватает ли ИБП одного на NUC, но совместно
с ненагруженными серверами -- вообще не тянет. Так что в любом случае
придётся приобретать ещё один бесперебойник.

3 years agoministat
Sergey Matveev [Tue, 4 Jan 2022 12:36:12 +0000 (15:36 +0300)]
ministat

https://klarasystems.com/articles/freebsd-tcp-performance-system-controls/
В FreeBSD много где встречал красивых ASCII графиков наподобие:

    $ ministat -s -w 60 iguana chameleon
    x iguana
    + chameleon
    +------------------------------------------------------------+
    |x      *  x            *      +              + x           +|
    | |________M______A_______________|                          |
    |             |________________M__A___________________|      |
    +------------------------------------------------------------+
        N        Min        Max     Median        Avg       Stddev
    x   7         50        750        200        300    238.04761
    +   5        150        930        500        540    299.08193
    No difference proven at 95.0% confidence

Делаются штатной ministat утилитой из коробки.

    #/bin/sh
    for size in 65k 1m ; do
      for x in 3 10 20 40 ; do
        sudo sysctl net.inet.tcp.initcwnd_segments=${x};
        for y in $(jot 20) ; do do
          /usr/bin/time -a -o iperf3-iw${x}-${size}.out iperf3 -c iperf3.example.com -n ${size}
          sudo -v
        done
      done
    done

    $ ministat iperf3-iw3.out iperf3-iw10.out iperf3-iw20.out iperf3-iw40.out
    x iperf3-iw3.out
    + iperf3-iw10.out
    * iperf3-iw20.out
    % iperf3-iw40.out
    +--------------------------------------------------------------------------+
    |       *       +             %                     x                      |
    |       *       +             %                     x                      |
    |       *       +             %              x      x                      |
    |       *       +             %      %       x      x                      |
    |       *       +             %      %       x      x                      |
    |       *       +             %      %       x      x                      |
    |       *       *             %      %       x      x                      |
    |       *       *             %      %       x      x                      |
    |       *       *      @      %      %       x      x                      |
    |*      *       *      @      %      %       #      x      x              x|
    |     |_MA__||__A__|       |__M__A____|     |______AM_____|                |
    +--------------------------------------------------------------------------+
        N           Min           Max        Median           Avg        Stddev
    x  20          0.86           0.9          0.87         0.868  0.0095145318
    +  20          0.81          0.83          0.82          0.82  0.0045883147
    Difference at 95.0% confidence
        -0.048 +/- 0.00478065
        -5.52995% +/- 0.52619%
        (Student's t, pooled s = 0.00746924)
    *  20           0.8          0.82          0.81        0.8115  0.0048936048
    Difference at 95.0% confidence
        -0.0565 +/- 0.00484226
        -6.50922% +/- 0.529354%
        (Student's t, pooled s = 0.0075655)
    %  20          0.83          0.86          0.84        0.8435  0.0074515982
    Difference at 95.0% confidence
        -0.0245 +/- 0.00546953
        -2.82258% +/- 0.619167%
        (Student's t, pooled s = 0.00854554)

3 years agoСнова увеличил производительность NUC-а почти в два раза
Sergey Matveev [Tue, 4 Jan 2022 11:32:20 +0000 (14:32 +0300)]
Снова увеличил производительность NUC-а почти в два раза

Я похоже какой-то мазохист. Сначала я работал на жутко медленных NVMe в
b206cedbbc0f50e43c40349e4baa62bf9db3a7e2, потом "ускорил". Теперь я
что-то вспомнил про TurboBoost и снова задался вопросом как оно
поддерживается в FreeBSD.

В общем, не знаю что я делал в прошлый раз не так, но то ли в UEFI забыл
включить TurboBoost (хотя навряд ли ж), то ли powerd не включал. Наспех
проверял. На каком-то ресурсе увидел что факт наличия TB возможности
намекается +1MHz частотой в:
    dev.cpu.0.freq_levels: 2401/45000 2400/45000 ...
Включив TB в UEFI увидел этот новый 2401. Запустил: powerd -a max
и вижу: load 800%, current freq 2401 MHz ( 0), wanted freq 4802 MHz.
И через пару секунд услышал вентиляторы как никогда громкие.

Запустил benchmark distributed.net. В прошлый раз
(2c464d080b6f570068ca633909de2bef0969ed9a) он показывал 50 Gnodes/sec,
тогда как старенький Xeon -- 70. Сейчас выдаёт 85-86 Gnodes/sec,
что уже значительно шустрее Xeon-а.

3 years agoПро strict aliasing в Си
Sergey Matveev [Tue, 4 Jan 2022 10:24:08 +0000 (13:24 +0300)]
Про strict aliasing в Си

https://lkml.org/lkml/2009/1/12/369
https://lkml.org/lkml/2018/6/5/769
https://danso.ca/blog/strict-aliasing/
https://habr.com/ru/post/114117/
https://bugzilla.kernel.org/show_bug.cgi?id=12597
https://bugzilla.mozilla.org/show_bug.cgi?id=1031653
https://stackoverflow.com/questions/47232954/what-does-fwrapv-do
В 153271e2a5ebe0450329c630e19ab92022d9966f упоминал про strict aliasing
и корректность использования char-ов. Торвальдс критикует в своём духе
всю эту идею aliasing-а.

А ещё они используют -fwrapv, предполагая что все архитектуры где они
собираются используют 2's complement signed числа, иначе переполнение
будет считаться UB и компилятор волен творить любую неожиданную дичь.
Только в будущих стандартах 2's complement будет стандартом и
переполнение в нём уже штатным поведением.

3 years agoЭкранирование переменных в zsh
Sergey Matveev [Tue, 4 Jan 2022 10:07:17 +0000 (13:07 +0300)]
Экранирование переменных в zsh

Нарадоваться не могу тому, что в zsh можно без боязни выполнять,
казалось бы, простые вещи типа:
    for i (**.7z) { mkdir $i:r && pushd $i:r && 7z x ../$i:t && popd && rm $i }
где по иерархии директорий и файлов, в которых возможно есть пробелы, он
будет спокойно идти и работать. Чувствуешь себя человеком в shell-е в
кой да веки!

Отдельно лучи ненависти к 7z: я уже забыл что значит упираться в CPU при
декомпрессии! Со скачанными 7z я даже 100Mbps насытить не могу.

3 years agoSigned vs unsigned integer
Sergey Matveev [Mon, 3 Jan 2022 11:26:11 +0000 (14:26 +0300)]
Signed vs unsigned integer

https://graphitemaster.github.io/aau/
https://news.ycombinator.com/item?id=29766658
Интересные аргументы за и против использования знака с целыми числами в
программах в общих случаях. Я изначально использовал unsigned когда мне
точно не нужен был знак. Позже самостоятельно пришёл к тому, что со
знаком безопаснее из-за всяких ошибок и косяков: unsigned число при
переполнении (точнее при underflow) всё равно останется положительным и
очень большим. Было что напарывался на эти проблемы, которые бы с signed
было проще отловить. Однако и с проверками для signed я помню что код
становился куда более громоздким, как в начале статьи.

3 years agoПосмотрел третью часть "Последнего богатыря"
Sergey Matveev [Sun, 2 Jan 2022 17:05:40 +0000 (20:05 +0300)]
Посмотрел третью часть "Последнего богатыря"

https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%B9_%D0%B1%D0%BE%D0%B3%D0%B0%D1%82%D1%8B%D1%80%D1%8C:_%D0%9F%D0%BE%D1%81%D0%BB%D0%B0%D0%BD%D0%BD%D0%B8%D0%BA_%D1%82%D1%8C%D0%BC%D1%8B
Вроде бы забавный и неплохой фильм, но, как и с первой частью, боюсь что
напрочь забуду о чём он после непродолжительного времени.

3 years agoМуха
Sergey Matveev [Sun, 2 Jan 2022 16:49:45 +0000 (19:49 +0300)]
Муха

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

3 years agoОбновление /dev/random в Linux
Sergey Matveev [Sun, 2 Jan 2022 15:02:03 +0000 (18:02 +0300)]
Обновление /dev/random в Linux

https://www.opennet.ru/opennews/art.shtml?num=56445
Кхм, в Linux до сих пор был SHA1-based PRNG? 20+ лет назад, когда
организация где я работаю взяла GNU/Linux на вооружение, первым делом
производилась замена его PRNG. Fortuna до сих пор там не применяется.
По мне так это просто позорное ядро с криптографической точки зрения.
Такое впечатление, что если речь про криптографию, то в GNU/Linux или
пилят своё или его просто не используют.

3 years agoНовый год с Терминатором
Sergey Matveev [Sat, 1 Jan 2022 19:27:08 +0000 (22:27 +0300)]
Новый год с Терминатором

У родителей по какому-то каналу целых пять частей Терминатора показывали:
три части до полуночи, две после. Все и посмотрели. На следующий день
пересмотрели Бриллиантовую руку, Кавказскую пленницу, Ивана Васильевича,
Джентльменов удачи, Служебный роман -- куда ж без них, с удовольствием
их смотрю снова и снова.