ucode

Oct. 24th, 2026 07:58 am
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Попробовал тут переписать один свой скрипт для openwrt с lua на ucode.

Ucode это такой ECMAscript с полноценной стандартной библиотекой. Там есть нормальные модули для работы с вводом-выводом - причем два - эквивалент stdio и низкоуровневый, есть куча модулей для работы с сетью, а работа с json, функции printf и sprintf (которые заодно и сериализаторами json работают) и регулярные выражения (правда таки, какие есть в нижележащей libc) - вообще в ядре языка.

Размер скрипта при переписывании немножко возрос. Точки с запятой в конце операторов, отсутствие перевода строки по умолчанию при выводе и прочие мелочи C-подобного синтаксиса место всё же жрут. Скорость выполнения замерить трудно, даже на медленном процессоре роутера оба скрипта запускаются примерно за минимальный квант времени, измеримый командой time, но вроде чуть уменьшилась. Это я еще скрипт держу в виде текста, а можно в байткод откомпилировать и хранить на диске в виде байткода.

Подозреваю, что второй скрипт, который для работы с sms, выиграет существенно больше. Потому что в ucode есть и нормальные строковые операции, и то, что в lua делается регекспами, можно будет делать substr и split (хотя стоп, split там как в перле - тоже с регекспами) и нормальные битовые операции, так что превращать целое число в последовательность байт utf-8 будет явно быстрее, чем через вещественную арифметику lua.

Немножко напрягает необходимость использования ключевого слова let в операторах присваивания. Тот, кто давно забыл про ранние диалекты бейсика, но зато помнит Lisp и Rust, от let ждет подвоха, особенно при общей C-подобности синтаксиса.

Но в общем, возникло желание собрать ucode для нормального linux-а. Чтобы можно было отладкой скриптов заниматься не на роутере. А то и писать на этом что-нибудь, для чего perl с python-ом кажутся тяжеловатыми. Почему-то в debian пакета ucode пока нет. Даже в sid. Хотя в README.md утверждается что сборка для linux с glibc вполне поддерживается.

Upd если читать мануал, а не примеры, выясняется что подвох с let действительно есть, причем тот самый, которого ожидаешь. Просто тот скрипт который я писал был короткий и каждая из используемых переменных присваивалась ровно один раз (ну кроме тех, которые переменные цикла, но там let все равно нужен).

Upd А функцию для получения последовательности байт utf-8 из числового значения unicode codepoint на ucode писать не надо. Она там в ядре готовая есть. uchr() называется.

Веб-сервер в openwrt

Oct. 22nd, 2026 05:07 pm
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Наконец собрался и прикрутил к своему роутеру TL MR-150 веб-интерфейс для просмотра SMS-ок. А то тамошний встроенный модем в openwrt управляется утилитой командной строки uqmi, и модуля в LuCI для работы с таким модемом нет.

Но, как выяснилось, uhttpd в openwrt расчитан на то, что туда будут подкладывать пользовательские статические странички и пользовательские CGI-скрипты. Странички можно класть прямо в /www, а скрипты в /www/cgi-bin.

А я-то всегда недоумевал почему при заходе на корневую страничку openwrt-шного роутера показывается пустая страничка с единственной ссылкой на LuCI. Оказывается именно поэтому - это дефолтный /www/index.html, который можно и нужно на свой заменять.

Когда-то давно, сразу после того как я перепрошил этот роутер на openwrt, я написал командно-строчный скрипт для просмотра SMS-ок (основной смысл которого в том, что uqmi не дружит с юникодом и если SMS-ка юникодная выдает вместо текста его 16-ричный дамп, а скрипт его расшифровывает и превращает в utf-8). Как оказалось, этот скрипт тривиально переделывается в CGI. Только оформление html-ное нарисовать. Аналогично - скрипт который показывает силу сотового сигнала, извлеченную из модема тем же uqmi.

Правда, эти скрипты получились без LuCI-шной авторизации. Но мне и не надо. Чужие здесь не ходят, это деревня. Так что если кто-то подключился к моему роутеру то смотреть и статус сигнала, и сообщения от оператора, что пора бы денег заплатить, ему можно. В принципе, пожалуй, стоит даже удаление SMS-ок сделать без авторизации.

Или уж извернуться и сделать модуль для LuCI? Заодно и понять как их делают. Впрочем, пожалуй если делать модуль для LuCi, нужно сначала на openwrt 25.12 сапгрейдиться. А то там с LUA на ucode перешли для серверной части. И если уж учиться, то учиться актуальной технологии.

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

На Хельмуте нет такого разнообразия религий как на Земле. И в Артене, и в Алаисе, и в Мотсанге верят в одних и тех же шесть богов. Какая-то разница между традициями, конечно, есть, но это не разница между христианством и исламом, и даже не между православием и католичеством, а примерно между лютеранством и англиканством.

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

С ведущей стороной тоже вопросы. Потому что постулировано, что у всадников равноправие полов гораздо выше чем у остальных людей. Причем не только в Артене, но и во всей из себя демократической и либеральной Интере. (кстати. а может в Алаисе как раз наоборот, и заморочки что выйдя замуж за алаисского наследного принца Кйрина будет вынуждена ему подяиняться как жена мужу - это как раз артенские предрассудки?). Правда принц тот раза в полтора старше. Ему наверное хельмутских лет под 60, то есть земных 30. Поэтому подозрения что он сумеет заставить слушаться примерно 40 (земных 20) летнюю жену вполне логичны для тех кто Кйрину лично не знает.

Ну то есть, конечно Кйрине этот Шйраз нафиг не нужен. У неё Пемар есть. Хотя и в космической экспедиции (Вот думаю стоит ли включать в текст эпизод, где Кйрина провожает отлёт экспедиции на Лотту и при этом обещает Пемару дождаться его). Но вот королева-мать сама происходит из Алаиса. Более того, отрицательного отношения артенских не-всаднических кругов к династической унии она не замечает. Она всю жизнь прожила во дворцах - сначала алаисском, потом артенском. И с её точки зрения уния Артене выгодна. И пойди её убеди, если она в три раза старше Кйрины, а Шйраз ей внучатый племянник. С другой стороны тут на Кйрину может давить ее драконица, Ламешь. Эмоциональная связь между драконом и всадником весьма тесная, а Ламешь вполне может понравиться дракон Шйраза. Ей-то что - сплестись хвостами разок и кладку отложить. Драконы, в отличие от людей длительных пар не образуют. И ответственность за страну на драконице не висит. Домашнее животное она, умное, но животное, а вовсе не разумное существо.

Еще интересный вопрос - а кому в сюжете нужен расположенный на территории Алаиса заброшенный город Андивер. Ну то есть понятно, что он нужен Фиэлу Артроэ и его команде. На предмет археологических раскопок. Но вот в Артене он кому нужен? Не самой Кйрине, у нее образование примерно кадетский корпус, и заниматься воспроизведением технологий Древних она лично не будет. Скорее всего она даже не знает что эти технологии ей нужны для того, чтобы найти всадникам место в высокотехнологичном обществе. Это ей должен объяснить Фиэл после того как технологии будут откопаны. Пемару они тоже не нужны. У него с образованием получше, конечно, но он пилот. Он бы с удовольствием полетал на чём-то вроде "Лары", но воспроизвести технологию по ископаемым остаткам - явно не его. Соответственно нужна некая команда технарей, с которой на момент прибытия экспедиции Артроэ Кйрина уже как-то связана, и которой этот город будет безумно интересен, особенно после того как выяснится, что межзвездные перелёты в принципе возможны, и легенды о прибытии предков хельмутцев из-под иной звезды - правда.

И самое главное, из всего этото никак не следует, каким образом в результате коготь дракона Шйраза оказался в коллекции Фиэла Артроэ. Что такое там в итоге совершил Шйраз, что пришлось его вместе с его драконом убивать. Дракон-то явно ни в чём не виноват - он честно служил своему хозяину.

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

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

Однако общество роботов защищает. Вот тут как раз пробежала на слэшдоте новость, что тётку, которая попыталась помешать роботу делать свою работу, в Филадельфии арестовали. Насколько я понимаю, disorderly conduct это по нашем меркам примерно мелкое хулиганство. Но с другой стороны физического ущерба она роботу не нанесла, и его грузу тоже. Хотя у нас, пожалуй, бы приписали в такой ситуации "сопротивление законным требованиям полиции".

Natasha Mueller

Oct. 17th, 2026 10:17 am
hozar: (Default)
[personal profile] hozar
Развівающа гра, в яку можна грати з нашими Європейськими партнерами.
Роздруковується в яскравому подарунковому варіанті для дипломатичної роботи, але онлайн-варіант оновлюється динамічно, щомісяця.
Українське БІНГО "А ми ж казали". Ану дивіться, шо я пропустила.

А ми ж казали:
Анексія Криму стане початком великої війни та руйнування світового порядку. Якщо світ дозволить ядерній державі силою змінювати кордони сусідів, це зруйнує систему міжнародної безпеки, створену після Другої світової війни, під загрозою будуть принципи безпеки всієї Європи.
Ви назвали це локальною суперечкою через спірну територію.

А ми ж казали:
Диктатори світу сприймуть це як заклик розширювати кордони своїх країн за рахунок слабших сусідів. Канада, Гренландія, Панама, може Мексика, тримайтеся.

А ми ж казали - Початок руйнування світового порядку. Xто тепер дуже дуже дорого збільшує оборонні бюджети, замість будувати соціальне житло, фінансувати систему охорони здоровя чи вкладатись в освіту?

А ми ж казали:
Nordstream дозволить Росії розпочати велику війну проти України.

( А ми ж казали )
___
Кожна картка бінго має джерело і документацію
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

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

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

И почему-то вспомниласт детская страшилка: "Девочка-девочка, гроб на шести колесиках уже выехал на твою улицу... Девочка-девочка, гроб на шести колесиках ищет твой дом..." ну и так далее.

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Подумал, что на Хельмуте должно существовать два разных термина для таких понятий как "перевал", "долина" и так далее.

Одно дело перевал в обитаемом поясе высот, на который надо взбираться, чтобы преодолеть хребет. Это "перевал", такой же как у нас. А вот седловина между двумя горами одного хребта, которая опускается ниже обитаемой зоны и которую надо перелетать, чтобы попасть с одной горы на другую (а может и мост можно построить), это что-то другое. больше похожее на наш "пролив" (может быть "продув"?).

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

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

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Сегодня предъявил на кассе в суперманкете виртуальную скидочную карточку с экрана кнопкофона, на котором невозможна установка каких бы то ни было приложений и нет даже браузера.

Дома на компьютере зашел на сайт этой сети супермаркетов, там мне на экране показали штрих-код этой карточки. Я его сохранил (правой кнопкой и Save Image As), слегка подредактировал (добавил белый фон вместо прозрачного и с помощью белой рамки увеличил размер до 320x240) и записал в телефон через usb-кабель.

И показанную на экране картинку магазинные сканеры штрихкодов прекрасно прочитали.

Дух осени

Oct. 15th, 2026 08:31 am
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Представился такой дух осени: лис Топад. Рыжий-рыжий с пушистым хвостом, гуляет по паркам и по улицам и оставляет свои следы в виде кленовых листьев.

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

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

Еще пару лет назад было немыслимо представить себе что эта функцональность может быть ограничена. Но тут они придумали запретить установку приложений не подписанных подписью владельца девелоперского аккаунта. Любым способом, в том числе и через ADB. Эффективно убив таким способом свободное ПО на Андроиде. Потому что отобрали как минимум две из четырех свобод перечиленных в манифесте ГНУ.

Пока они в мировом масштабе эту систему развернули. Но вот теперь "пошли на попятный"

Правда, разрешение теперь касается только приложений, созданных с помощью гугловского ИИ.

Вот что бы этоо значило? Вместо жесткой диктатуры корпоративных правил появляется мягкая диктатура ИИ? Они уверены что их ИИ не на вайбкодит вредоносных приложений?

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Встретил в одной книжке утверждение: "Океаны же (дирижабли) пересекали без дозаправки в штатном рейсе со штатным грузом, когда самолеты о таком и мечтать не могли".

Усомнился, полез проверять. И выяснил что первый трансатлантический перелет дирижабля R34 состоялся буквально на две недели позже, чем трансатлантический перелет Алкока и Брауна на серийном самолете-бомбардировщике. 15 июня вылетели с Ньюфаундленда Алкок и Браун, 2 июля из Шотландии - R34. Год один и тот же - 1919.

Правда самолет Алкока и Брауна был серьехно поврежден при посадке, а дирижаболь с экипажем из 30 человек и одного кота через несколько дней вылетел в обратный рейс, и благополучно вернулся в Англию.

При этом время в пути у Алкока и Брауна было 16 часов, а у R34 - четверо суток в один конец.

Конечно, еще был полет LZ104 над Африкой. в 1917 году. Но он до цели не долетел.

kiwix.service

Oct. 14th, 2026 12:24 pm
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Написал для своего десткопа вот такой serivce файл для kiwix

[Unit]
Description=Offline achive service
Documentation=man:kiwix-serve(1)
After=network.target
[Service]
Type=exec
User=www-data
Restart=on-failure
RestartSec=15
ExecStart=sh -c "exec /usr/bin/kiwix-serve --address=127.0.0.1 --port=8078 \
       --urlRootLocation=kiwix /srv/transmission/downloads/*.zim"
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target

Ну и пару строчек ProxyPass/ProxyPassReverse в конфиге апача. Чтобы по https://имя локального компьютера/kiwix туда ходить. Конечно чтобы быть гуманными до конца, надо бы туда EnvironmentFile=/etc/default/kiwix написать, где задать путь к файлам, порт и префикс. Но мне и так сойдет.

Шелл в Exec понадобился для раскрытьия wildcard *.zim.

Теперь вот думаю - что с ноутбуком делать. То ли поднять там kiwix на 80-м порту, то ли поставить туда маленкьий веб-сервер, который кроме zim-файлов будет еще кое-какой контент, имеющийся на диске, раздавать. Чтобы всякие пользователи макбуков и андроидных планшетов, имеющиеся в деревне, могли тоже это скачивать. А то передать что-то на катин макбук - это всегда из серии "проще веб-сервер поднять". Так может его сразу и поднять раз и навсегда? Тем более на роутере там openwrt, а значит в локальном dns все подключенные ноутбуки есть.

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Тут пишут что LetsEncrypt c выдачи трехмесячных сертификатов переходит на двухмесячные. Ну двухмесячные ещё не страшно, тем более там 64 дня. У меня кроновское задание ежесуточно проверяет, не осталось ли какому-нибудь сертификату жизни меньше недели, и если такой находится, начинает пытаться его перевыпустить. Если они там и правда на недельные перейдут, придется ставить это кроновское задание 4 раза в сутки и начинать пытаться перевыпустить не ранее, чем за два дня. Начинать за сутки как-то боязно. Кто сказал что сайт (не важно - мой или lets encrypt) не может упасть и сутки пролежать.

А еще я обнаружил что, видимо, при очередном апгрейде дистрибутива у меня что-то сломалось в моем собственном CA, который сейчас используется только для openvpn, и он вместо 10-летних стал выпускать годичные сертификаты. Обнаружил я это, естественно, когда при попытке подлючить ноутбук Ирины к VPN оно сказало, что сертификат того-с.

Теперь вот думаю что надо к своему CA прикруить почтовую напоминалку об устаревании сертификатов. В принципе у меня есть скрипт certexpired который начинает писать письма когда близится срок перевыпуска тех сертификатов, которые обновляются не через acme. (а таких ещё бывает довольно много, особенно в корпоративной среде). Дописал туда обработку сертификатов, встроенных в конфиг openvpn. Но этот скрипт предназначен для тех CA где я клиент, а не владелец. Чем гонять его на каждом ноутбуке (а пойди еще запусти его под windows на ноутбуке Ирины - это ж целый msys нужно туда ставить), удобнее гонять его там, где у моего CA лежит база выпущенных сертификатов. Все равно там есть такой замечательный файлик index.txt, и даже не надо по самим сертифкатам лазить. Есть, правда тонкость, что некоторые сертификаты я выписывал пользуясь бэкапным диском, а не рабочей копией на десктопе (Потому что я был в деревне, а десктоп в Москве был выключен). И скорее всего бэкапный index.txt с тех пор перезаписался. Так что надо бы однократно провести работу по поиску на ноутбуках несохраненных где надо сертификатов и туда их подложить, не забыв соответсвующие записи в index.txt. Придумать на будущее механизм синхронизации index.txt тоже, конечно, интересно.

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

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

Мне это как-то сомнительно. Как известно, даже при сгорании углеводородного топилва с воздухом в качестве окислителя, окислы азота в той или иной степени образуются. С другой стороны основным способом получения азотной кислоты в промышленности является именно окисление аммиака, полученного с помощью габеровского процесса из воздуха. Правда там нужны катализаторы.

Но вообще интересная мысль, до чего может дойти борьба с "углеродом". Конечно жидкий аммиак куда приятнее в обращении чем жидкий водород. Требует всего -34⁰C, а не -252⁰C как водород. И в литре бака помещается куда больше энергии. Но сильно ядовит и коррозионно-активен. А в смеси с водой еще и специфическим ароматом обладает.

Page generated Oct. 26th, 2026 08:05 pm
Powered by Dreamwidth Studios