404

Предупреждение

Я медленно переезжаю на dreamwidth. Мой новый журнал тут: https://amarao.dreamwidth.org/

Кросс-постинг я делаю, но жж периодически банит dw'шный IP, и я не особо хочу со всем этим разбираться, так что будут провалы.
Collapse )
404

О конечном автомате, который себя вообразил компьютером

Внезапно, я сейчас осознал интересный plot twist для self-reference systems. Допустим, у нас есть тьюринг-машина (обычный компьютер, для удобства обсуждения, без дисков и сети, только память). Допустим, этот компьютер задумался "о себе", и решил пересчитать все возможные свои состояния. Его память N бит, т.е. у него может быть не более чем 2^N состояний. Так вот, для хранения числа 2^N, нам надо N бит, и ничего, кроме числа возможных состояний компьютер хранить в себе не сможет.

Другими словами, self-referencing система не может проанализировать все свои действия. Более того, если код занимает ненулевое число бит, то даже пересчитать не может.
404

Проблемы от ipv6

Всех интересует, какие проблемы от него.

И вот я накопал. Ничего существенного, но то, что есть, раздражает и усложняет.

1. В половине софта обращение по ipv6 требует использования квадратных скобок. А в половине - нет. Т.е. если у вас server_fqdn был 192.168.0.1, то вам это прокатывало как для ping, так и для curl. А если server_fqdn fdcd:ba4a:a9b::2, то в ping оно должно быть as is, а в curl - [fdcd:ba4a:a9b::2]. И в ssh.

Да, если будете страдать, то ssh -L 127.0.0.1:5000:[fdcd:ba4a:a9b::2]:5000 user@fdcd:ba4a:a9b::2

2. leading zeroes. fdcd:ba4a:a9b::2 или fdcd:ba4a:0a9b::2? Оказывается, для testinfra это важно. А ещё в куче мест, где есть assert строковому равенству, или хранится и показывается "как записали", что в свою очередь приводит к строковому равенству.

Вся эта чехарда с leadning zeroes настолько неприятная, что я для себя сделал зарубку - никаких трёхзнаков в адресах. Проще будет.
404

А вот вам пост об исторической нелогичности

Вот есть у меня файл /etc/default/grub.d/unified.cfg для включения unified cgroups для systemd.

А вот вопрос (ответ на который я хорошо знаю, но существование которого всё равно показывает проблему): почему этот конфиг лежит в /etc/default, а не /etc/grub.d/?

И ведь на каждом шаге решение было логичным, вроде бы. Но что-то пошло не так.

Например, являются ли файлами конфигурации /etc/grub.d?

Я утверждаю, что нет. Потому что там (в 00_header) прямо написано

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.


А если это технический скрипт, то почему он не лежит в /usr/lib? Инерция сознания. Ведь это "конфиги граба". Хотя на самом деле истинные конфиги граба лежат в /boot/grub/grub.cfg, но это не истинное место для редактирования настроек.

А истинное - в /etc/default, которое, традиционно, было микропомоечкой для параметров sysv-init скриптов, которые админы могли изменить. ..Потому что /etc/rc* тоже не были конфигами, а были скриптами, к которым нужны были параметры.

Так что параметры grub'а лежат в /etc/default, потому что его скрипты лежат в /etc/grub. Логично? Логично. Не логично.

Сравните с это с волевым решением systemd, у которого _НЕ_ конфиги лежат в /lib/systemd/system. А вот _КОНФИГИ_ (практические такие же, как и не-конфиги) лежат в /etc/systemd.

Т.е. Поттеринга можно сильно не любить за его стиль общения, но оцените степень продуманности и волю к реализации. Сломать вот эту вот говнистую дуальность "конфиг-но-не-конфиг", которая десятилетиями обиталась в /etc, и заявить, что некоторые, формально, конфиги, это не конфиги, а куски софта. А конфиги - это то, что админы пишут руками или софтом для конфигурации.

А пока у людей такой воли нет, им приходится плодить .d (!!!!) в /etc/default.
404

(no subject)

Я тут, внезапно, обзавёлся ноутбуком. Я хотел было взять всякое разное свободное (purism/system76 и т.д.), но оказалось, что у них ничего нет (физически). out of stock, с ожидаемым delivery date куда-то во вторую половину лета.

Так что пришлось шоппить коммодити. Меня не впечатлил dell, и я купил странное - b-brand. Немецкий. Называется

Manufacturer: SchenkerTechnologiesGmbH
Product Name: SCHENKER WORK 15 (Early 2021)

Quadratisch Praktisch Gut. Невыразительный дизайн "a laptop", нормальная клавиатура без выкрутасов. Кнопка питания утопленная и сбоку. Ужасная веб-камера, средней паршивости звук (не за это покупал). Матовый FHD. Внутрях i5-1135G7 @ 2.40GHz (4 ядра), 32Гб одной планкой (с рассчётом на вторую в будущем), терабайт nvme.

Хотели 30 евро за отсутствие своего логотипа на крышке. Сделали в срок, довезли.

Главное, что меня удивляет, что остались производители ноутбуков в Европе. Linux'ы (Debian) поднялись с небольшими ударами в firmware-non-free бубен, всё работает, кроме подсветки клавиатуры (которая умирает после первого suspend'а). После загрузки обещают 10 часов работы; с перерывами с часу до 11, съел батарейки, достаточно, чтобы обещать, что осталось 3.5 часа. Т.е. реальных часов 8-9 будет держать.

Но пост не совсем об этом. Почему он ... медленее? Он по скорости напоминает мой ноутбук на работе и всё остальное с чем я работал.

А медленее он по сравнению с моим домашним компьютером, который на базе Ryzen 5 5600X (3700Mhz).

И знаете, где это заметно? На коде удаления виртуалок (когда их нет). У меня на домашней машине ансибл летает подозрительно быстро - 2.5с на всю плейбуку. На ноуте тот же код отрабатывает за обычные 9с.

Вы знаете, 2.5с vs 9с - это же очень, очень, много. Этого даже нельзя объяснить разницей 3.7ГГц и 2.4Ггц.

Что-то тут не так. Весь код - чистый localhost, и почему-то на райзене анисбл весьма и весьма быстрее шуршит.

userbenchmark говорит - 26% быстрее, 31% меньше latency памяти (Ryzen vs intel). Но у меня в Ryzen ECC'шная память, вовсе не top speed. Эти никак трёхкратное ускорение не объяснить. NVME? У меня и там и там. Я не думаю, что io критично для помойки от ansible (всё в файловый кеш).

Может быть, это расплата за одну планку (вместо двух)?
404

телеметрия и прочая фигня для codium

Меня задолбали 7 мегабайт телеметрии и необходимость за каждым расширением бегать отдельно.

https://github.com/amarao/home/blob/master/codium.yaml
   - name: Create firejail link
     become: true
     copy:
       content: |
         firejail --net=none --noprofile codium
       dest: /usr/local/bin/codium
       owner: root
       group: root
       mode: 755

И всё. Трафика от codium нет. Ставить расширения - отдельный вопрос, с которым я ещё буду разбираться. Но 7 Мб - ИМХО перебор. Особенно на мобильном интернете с мобильной же батарейкой.
404

Назревает большая революция

Многие вещи в шелле хороши и создают ощущение, что в этой области всё хорошо и правильно. Условный binutils. Маленькие программы с простыми ясными идеями, которыми удобно пользоваться.

Но... Стоит только на секунду задуматься об их изменении, как архаичный autotools ждёт вас. Причём, он ждёт вас почти всюду. От binutils до cpython.

Моё чувство прекрасного страдает при виде m4. При виде поддержки достандартного С (и макросов вокруг этого). При виде невероятного объёма хаков, написанных с софте, у которого модель garbage in - garbage out, и поверх которого пытаются "сохранить инварианты" в более приличном софте.

У меня ощущение, что это революционная ситуация.

Если раньше у нас не было критической массы софта, который бы решал те, низкоуровневые проблемы, которые раньше решал C (т.е. хочешь системно - вот тебе, падаван, m4, automake, и шуруй воевать с ./configure), и особо вариантов не было, то теперь я вижу альтернативы с более адекватным lore. Это и go, и rust, и (может быть?) swift. Хотя ладно, кого я обманываю. Rust. Его красота - не в "borrow-checker'е", как любят описывать неофиты. Его красота в разумности базовых предположений до самого низа. Спускаясь с красот "асинхронного веб-сервера с job-stealing многозадачностью" до скучных вопросов "каким образом бинарник знает какой номер у сисколла для записи в fd" (если вы этот путь проделаете на условной node, вам будет очень печально), так вот, проделав этот путь, не ощущаешь острого диссонанса от "ненадлежащих средств". (Если что, там снизу libc, так что финальный слой у Rust такой же как у всех, но всё над ним - весьма добротно).

Так вот, революция начнёт происходить из-за awk-дисфории при соприкосновении с внутренностями существующих программ.

Я не знаю, сможет ли сообщество выдержать высочайший уровень инженерной продуманности Rust, но пока что от знакомства с его потрошками (и потрошками всего, что рядом) нет того же ощущения, как от доисторического Си.
404

mac @ python

У меня тут случайно состоялся сеанс показа величия питона (testinfra) рубисту. На маке.

Как с этим вообще живут? Т.е. простого virtualenv нет. gcc появляется на свет в каких-то адских мучениях (xcode?) Какая-то ядрёная смесь компиляции и бинарников, причём с совершенно непонятным поведением, затрагивающим как систему, так и среду пользователя.

На фоне этого обычное линуксовое
apt install python3-virtualenv
virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt

выглядит детским лепетом.

(Я утрирую, конечно, но -dev пакеты в линуксе всё равно проще образуются, чем в маке, более того, хорошо понятно, где именно).

https://xkcd.com/1987/