поговорил с навальнисткой
Nov. 20th, 2025 07:47 amВчера на твитере напоролся на жалобу (на отмену мультивиз), мол, а российские коррупционеры ездиют и ездиют, воруют и воруют; вот каб они не воровали, всё бы по-хорошему и было бы.
А я такой возьми да ляпни: пусть воруют, меньше вам на бомбы останется.
И мне она такая: "дурачок, бомбы же не коррупционеры оплачивают, а простой народ; деньги на бомбы у народа отнимают, а у коррупционеров не отнимают."
Для меня это в переводе означает, что войну оплачивает российский народ (что хоть и неожиданно, но, может быть, так и есть) - так и претензии же надо предъявлять народу (что, наверно, так и есть), а не коварным коррупционерам, которые лишают народ возможности купить ещё больше бомб и разнести весь мир вообще, ну или хотя бы Европу (не Китай же).
Но как-то стало ещё понятнее, что навальнизм - это не гуманизм, а русский империализм. И, наверно, их единственная претензия насчёт войны - это что слишком дорого война обходится российскому народу, надо награбить награбленное коррупционерами, и вот на эти деньги и победить всех.
Унификация по Робинсону
Nov. 19th, 2025 01:46 pmВ исходной статье Робинсона алгоритм звучит не особо ясно.
The following process, applicable to any finite nonempty set A of well-formed expressions, is called the Unification Algorithm:Переведём на современный язык.
- Step 1. Set σ₀ = ε and k = 0, and go to step 2.
- Step 2. If Aσₖ is not a singleton, go to step 3. Otherwise, set σ_A = σₖ, and terminate.
- Step 3. Let Vₖ be the earliest, and Uₖ the next earliest, in the lexical ordering of the disagreement set Bₖ of Aσₖ. If Vₖ is a variable, and does not occur in Uₖ, set σₖ₊₁ = σₖ {Uₖ / Vₖ}, add 1 to k, and return to step 2. Otherwise, terminate.
Step 1. InitializationБегая глазами по исходникам unify.gisp и по описанию, вроде всё однозначно соответствует, разве нет? Дело же не в количестве строк, а в лёгкости понимания.Step 2. Check Whether Unification Is Complete
- Start with a substitution σ₀ = ∅.
- Let k = 0.
- Continue to Step 2.
Step 3. Find a Disagreement
- Apply the current substitution σₖ to the entire set A, producing Aσₖ.
- If all resulting expressions in Aσₖ are identical, the algorithm stops and returns σₖ as the most general unifier.
- Otherwise proceed to Step 3.
Step 4. Process the Disagreement
- Identify the first position (in a left-to-right, top-down scan) where two expressions in Aσₖ differ.
- Let the disagreeing subexpressions be p and q.
Depending on the form of p and q:
1. If one is a variable and it does not occur inside the other term (occurs-check in modern terminology):
2. If both are variables but different:
- Construct a substitution that maps that variable to the other term.
- Compose this substitution with the current one to produce Aσk+1.
- Increment k; return to Step 2.
3. If both are compound expressions with different functors or different arity:
- Substitute one variable with the other, compose as above, and repeat Step 2.
4. If both are compound expressions with the same functor and arity:
- Unification fails; the set has no unifier, and the algorithm terminates unsuccessfully.
- Add their corresponding arguments to the set of expressions being unified.
- Return to Step 2.
Унификацию помните?
Nov. 19th, 2025 01:12 amТакой алгоритм сопоставления назвали унификацией. Когда-то на нём строили экспертные системы: помните язык Пролог? Алгоритм унификации пытается сделать два символических выражения равными, вычисляя объединяющую подстановку для этих выражений. Подстановка — это функция, заменяющая переменные другими выражениями. Очень важно, что она действует одинаково на все вхождения одной и той же переменной: если подстановка меняет одно вхождение переменной x на a, она должна заменить все вхождения x на a.
Объединяющая подстановка (или унификатор) для двух выражений e1 и e2 — это подстановка σ, такая что применение σ делает e1 и e2 структурно одинаковыми. Рассмотрим на примерах.
Пример 1: простая унификация. Выражения f(x) и f(y) можно унифицировать, заменив y на x (или наоборот).
Тогда унификатор σ действует так:
σ(y) = xσ оставляет остальные переменные без изменений.
Пример 2: неудачная унификация. Выражения x + 1 и y + 2 нельзя унифицировать. Не стоит пытаться подставить 3 вместо x и 2 вместо y, чтобы оба выражения стали равны 4. Унификация требует символического равенства, а 1 не сопоставляется с 2.
Пример 3: несколько возможных унификаторов. Для выражений f(x, y) и f(1, y) возможны разные унификаторы:
σ₁ = { x ↦ 1 } даёт результат f(1, y).Оснований менять y нет, поэтому σ₁ предпочтительнее.
σ₂ = { x ↦ 1, y ↦ 5 } даёт f(1, 5).
Алгоритмы унификации обычно стремятся получить наиболее общий унификатор (most general unifier, MGU). Это когда делаются только необходимые подстановки. Все остальные унификаторы получаются из MGU путём добавления новых замен. В примере выше σ₁ — MGU, а σ₂ — его частный случай.
Красивая реализация унификации приведена как пример в книжке The Scheme Programming Language: Section 12.10. A Unification Algorithm. Меньше сотни строчек с комментариями, но понять непросто: unify.ss.
А давайте перепишем на смешной язык Gisp. Который внутри тот же Scheme, но с синтаксисом Go. Мне кажется, гораздо яснее выходит.
( исходный код )
Текстовый редактор Zed не безнадёжен
Nov. 17th, 2025 11:11 pmЛегкими пинками мне удалось привести Zed в приемлемое состояние. Переделать клавиши PageUp и PageDown как предписано богом. Чтобы при перелистывании текущая строка (курсор) сохраняла своё относительное положение на экране. Когда вы уже находитесь на последней странице, клавиша PageDown ничего не делает. Верхняя строка остаётся на месте, а курсор не перемещается. В emacs такой режим включается установкой:
(setq scroll-preserve-screen-position t)Настройки такой в редакторе нет. Надеялся найти плагин - благо, к Zed уже понаделано много extensions. Однако увы, не могут extensions обрабатывать клавиши и влиять на позицию текста в окне. Пришлось править исходник самого Zed.
Сам бы я в исходниках долго ковырялся. Но теперь в помощниках имеем Cursor. Он за пару минут разобрался и передеалал функции move_page_up() и move_page_down(). С первого раза это дело крашанулось, но я показал Курсору дамп стека и он шустро исправил проблему. Правку можно видеть вот тут:
https://github.com/sergev/ved/commit/e1896e99aeaa76b18944e8c0277647366aabe5a2
Чтобы получить такую версию Zed, вам придётся собрать его из исходников. Это нетрудно, по сути одна простая команда "cargo build --release".
MS-DOS 3.31 стартует c 1.2 мегабайтной дискеты
Nov. 16th, 2025 12:05 am
Провозившись пару часов, удалось собрать из имеющихся в гараже причандалов работающий флоповод, пересобрать линуксный драйвер, чтобы умел форматировать, и записать загрузочный флопик с MS-DOS.

Флопик приятно в руках подержать.

Вот из чего состоял тогда MS-DOS.

Чиним VS Code
Nov. 15th, 2025 03:28 amНо сегодня решил разобраться. Как выяснилось, проблема имеет решение. Я сваял расширение, которое обрабатывает кнопки PageUp/PageDown классическим образом, как принято в старых добрых Vim, Emacs и прочих редакторах. Пользуйтесь на здоровье:
github.com/sergev/vscode-classic-paging
Хотите Windows 95 на микроконтроллере
Nov. 14th, 2025 12:22 amhackaday.io/project/204408-tiny386
белый дыбр
Nov. 13th, 2025 08:47 pmВ начале пятого дико завыл детектор дыма. Мы бегали по дому, искали, где тот, который пищит. Нашли один, потом другой. Нет. дыма-то не было. Батарейка закончилась. Самое время.
Ну что, мы заодно поели, посмотрели кино, и снова спать.
Утром ходили по магазинам. Примеряли мне кепочку, чтоб под француза косить - а ни одна не налезла. Ну зато еды купили два, э, мешка. Ну в смысле два пакета. Как мы всё это съедаем - бог весть. Ну там овощи и фрукты, в-основном.
Сидел редактировал книжку (у Билла вопросы были). К двум пошли в класс. Даже не к двум, а пораньше, чтоб места занять, а то народу много, особенно у Кристины.
Сначала какую-то чушь из грамматики проходили, а потом вернулись к той теме, образование во Франции, и чего народ хочет. Народ понятно чего хочет - чтобы их детушки на халяву и не особо прилагая усилия приобрели самые современные знания, нужные в промышленности именно сегодня, и при этом чтобы у них была возможность выбора и много свободного времени для песен и плясок. Здесь вам не Китай и не Эстония.
После этой темы в учебнике стали обсуждать, в каких странах у кого чо. Четверо британцев рассказали, что у них в Британии та же фигня; Кристиан, рассказав про свой взгляд на вещи, попросил затем других британцев рассказать свой. Вот хороший пример политической культуры в действии. Кстати, в Шотландии немножко по-другому, там учат лучше, и полезному.
В Германии те же проблемы - никто не учится, и каждая земля по-своему с ума сходит. И в Дании. И в Нидерландах. В Марокко и в Турции хорошие частные школы и плохие остальные; ну и что тут сделаешь? Да ничего. Дошло до Америки. Сначала подёргали Кристофера, как коренного американца - но Кристофер в школе учился в Германии, потом жил в Британии, потом немножко в Америке... короче, теоретик. Сказал только, что белых лучше учат, чем чёрных, но всё равно, в целом в Америке больше возможностей получить образование. Мы это тоже как бы подтвердили. Короче, к своему изумлению, пришли к выводу, что в Америке образование лучше. И я тут ещё понял, что и к советскому образованию у нас претензий нет, кроме разве что училки попадаются сволочи - но где они такие не попадаются?
Потом пошли домой, попили чайку, да пошли гулять... ну там чо гулять, нам много не надо. Так. Погода - ветрюга, но тепло.
А, пока я в классе был, набросал "ответ Биллу" - "почему не все множества натуральных чисел можно перечислить". Ну в смысле, в сноску в книжку. Развлечь гипотетических читателей. Вообще сколько можно-то! Напечатал бы уже как есть, продавал бы на Амазоне. Одну копию купили бы в Китае, одну на Тайване, 10 тысяч в Японии...
Ладно. Вечером сидел редактировал книжку, пока не устал. Завтра... Ну или завтра на хайк надо, а то чо.
Рынок сегодня опять в жопе. Прикупил на мизере.
Роботы это весело
Nov. 13th, 2025 11:49 am"Ничего, ничего, закройся от ветра и потихоньку иди. И дыши так редко, редко. Так дыши, чтобы ноги за коленки не задевали. И куда-нибудь да иди. Все равно куда. Если даже ты пойдешь налево попадешь на Курский вокзал; если прямо - все равно на Курский вокзал; если направо - все равно на Курский вокзал. Поэтому иди направо, чтобы уж наверняка туда попасть. - О тщета!"
Моя дипломная специальность называлась «Системы автоматического управления роботами и космическими летательными аппаратами». База - институт прикладной математики Келдыша. Математика прикладывалась качественная, спутники неплохо летали, а вот с роботами был полный швах. Изготовить точную механику советские заводы были неспособны. Шарниры и шестерёнки выходили говённые. В результате суставы у роботов расшатывались как у прокажённых.
Микропроцессоров для управления роботами не было. Мой шеф мечтательно рассказывал, что ему обещали привезти в кармане из-за бугра микроконтроллер Motorola 68000. Теоретически существовали советские 8080, но и их было не достать в конце 80-х. Клятые буржуи ставят по 32-битному процессору на каждую степень свободы, а нам хоть бы один 8-битный на всего робота.
Звали в аспирантуру, но я поглядел на это убожество, и сказал: спасибо, лучше буду юниксом в курчатнике заниматься. Удачно проинтуичил.
ИИ отжигает
Nov. 13th, 2025 12:15 amBeen beat down, but I don′t stay low
Got mud on my jeans, still ready to go
Every scar's a story that I survived
I′ve been through hell, but I'm still alive
They say, "Slow down, boy, don't go too fast"
But I ain′t never been one to live in the past
I keep moving forward, never looking back
With a worn-out hat and a six-string strap
You can kick rocks if you don′t like how I talk
I'ma keep on talking and walk my walk
Ain′t changing my tone, ain't changing my song
I was born this way, been loud too long
You can hate my style, you can roll your eyes
But I ain′t slowing down, I was born to rise
So kick them rocks if you don't like how I talk
I′ma keep on talking and walk my walk
I've lost some friends, made a few new foes
But that's just life, that′s how it goes
I ain′t bending over just to please a crowd
If I fall down, I'll fall down proud
I talk my truth, I live my way
Ain′t nobody gonna take my say
This road's been rough, but I learned the trade
It′s sweat, soul, and dues I paid
You can kick rocks if you don't like how I talk
I′ma keep on talking and walk my walk
Ain't changing my tone, ain't changing my song
I was born this way, been loud too long
You can hate my style, you can roll your eyes
But I ain′t slowing down, I was born to rise
So kick them rocks if you don′t like how I talk
I'm gon′ keep on talking and walk my walk (mm, mm)
Let the haters talk, let the rumors fly
I ain't got time to wonder why
The good Lord knows the man I am
And I′ll die standing tall with a mic in my hand
You can kick rocks if you don't like how I talk
I′m gon' keep on talking and walk my walk
Ain't selling my soul for a seat at your table
I′m rough, I′m raw, I'm wild, I′m able
You can hate my fire, but you can't kill my spark
I′m a midnight flame burning through the dark
So kick them rocks if you don't like how I talk
I′ma keep on talking and walk my walk
You can kick rocks (mm-mm)
You can kick rocks (mm-mm)
You can kick rocks (mm-mm)
I'ma keep on talking and walk my walk
Двое из трёх сошли с дистанции
Nov. 12th, 2025 11:21 am"Отсеквенирован геном раннего денисовца"
На рисунке: филогенетические деревья, основанные на ядерном геноме (A), митохондриальной ДНК (B) и Y-хромосоме (С). Розовым цветом обозначена линия денисовцев, голубым — неандертальцев, серым — сапиенсов. Стрелками показаны эпизоды гибридизации; те из них, что были выявлены или уточнены в обсуждаемой статье, нарисованы более яркими цветами. Хотя неандертальцы в действительности ближе к денисовцам, чем к сапиенсам (А), по мтДНК и Y-хромосоме они, наоборот, ближе к сапиенсам, чем к денисовцам (B, C). Это может быть связано с распространением у неандертальцев сапиентных вариантов мтДНК и Y-хромосомы в результате древней гибридизации (тонкая серая стрелка на рис. А).

Goulder Dash
Nov. 12th, 2025 10:13 amЯ подумал: а как бы игра смотрелась в текстовом режиме, но со всякими современными эмоджи. Нашёл исходники на Scala и на скорую руку переделал на Go. Заодно посмотреть, как выглядит в Go библиотека tcell, заменяющая традиционный ncurses.
Проект на Гитхабе: sergev/godash
Вот видео первого уровня игры. Вполне узнаваемо.

Там ещё физику поведения камней можно улучшать. Добавлять прочие приколы типа бабочек и раздвигающихся стен. Организовать переходы с уровня на уровень. В целом Go и библиотека tcell смотрятся неплохо.
CЯУ
Nov. 12th, 2025 01:32 pm Что за кюлоты в слове "санкюлоты". Это в "старые времена" (при 14-м царе) носили "от де шос" (hautes-de-chausses, кюлоты) - широкие шорты, и "ба де шос" - считай, чулки (bas-de-chausses). Я имею в виду мужскую одежду; нынче кюлоты - это просто трусы, а ба-де-шос - дамские чулки.
"Шос" (chausses) - это длинные чулки, что носили наружу важные господа в средневековые времена.
Вот такая революция.
Было такое мнение, что французская революция произошла из-за того, что благородные мужчины стали длинные брюки носить.
Вообще интересные были объяснения. Валили ещё на "Женитьбу Фигаро", Бомарше, где автор покрыл дворянство несмываемым позором, и, с точки зрения Луи 16-го, спровоцировал разрушение Бастилии, а с точки зрения Наполеона, вообще эта "Женитьба" и вызвала Французскую Революцию. Так Пушкина непонятно даже как опубликовали в 1830м, когда он помянул.
Текстовая игра Empire
Nov. 11th, 2025 05:44 pm
Рисовалась двумерная карта в текстовом виде, на ней материки и моря, на материках города и армии, в морях корабли. Классическая стратегия, где вы воюете против компьютера за овладение всем миром.
Оказывается, не так давно Эрик Рэймонд эту игру откопал и оживил под названием vms-empire. Легко скачивается, собирается и запускается. Можно вспомнить молодость. Есть двухчасовое видео, где некий упорный чувак проходит Империю.
По России отключают интернет
Nov. 11th, 2025 11:19 am“Мобильный интернет отключают по решению именно федеральных властей. Причем не только в Ульяновске - по всей России вблизи объектов специального назначения.”
“Это постоянно действующие ограничения, а не временные меры на период атаки.”
“По соображениям государственной тайны точные карты зон отключения не публикуются. Срок действия новых ограничений не установлен - если не будет иных решений федерального центра, они будут действовать до конца СВО.”
То-то я гляжу, в последние месяцы доля читателей моего блога из России упала ниже 8%. Им низзя. Что-то одно: или война, или интернет.




