vak: (Default)
[personal profile] vak
Чем отличается алгоритм Котлера от алгоритма Хекеля? Вот статья, которая всё объясняет.

https://github.com/sergev/ifcomp/blob/main/Theory.md

ifcomp

Nov. 1st, 2025 12:28 pm
vak: (Default)
[personal profile] vak
Приходится ли вам сравнивать файлы? Риторический вопрос: очевидно, приходится. Я лично команду "git diff" выдаю тысячу раз за день. Всем классический diff хорош, кроме одного: не различает перестановку фрагмента. Показывает только удаления и вставки. Если же часть текста переехала в другое место, diff учитывает его дважды: и как удаление, и как вставку.

Для некоторых применений такое не годится. Представьте, что вы хранитель коллекции ценных документов. И вдруг с одним файлом что-то случилось. Стандартный diff говорит, что всё пропало, документ полностью испорчен. А просто строки перемешались, ничего на самом деле не потеряно. Надо только порядок восстановить. В эпоху перфокарт такое сплошь и рядом происходило, когда колоду рассыпали и собрали впопыхах. Или кто-то решил навести порядок и переставил главы в тексте.

45 лет назад мой коллега Рид Котлер сделал утилиту сравнения файлов: "Text File Comparator". Трудился он тогда молодым студентом на компанию Intermetrics по контракту NASA. Сохранилось упоминание на странице 117 журнала NASA Tech Briefs Winter 1982 Vol. 7, No. 2: https://ntrs.nasa.gov/api/citations/20100028127/downloads/20100028127.pdf

Программа сравнивает два файла и выводит список их различий.

Программа сравнения файлов IFCOMP — это сравнение текстовых файлов для систем, совместимых с IBM OS/VS. IFCOMP принимает на вход два текстовых файла и выводит список их различий в форме псевдообновления. Все различия представлены в виде строк, которые следует удалить, заменить, вставить или переместить в первом входном файле для преобразования его во второй входной файл. Также выводится сводка с указанием количества строк, затронутых каждым типом изменений.

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

Программа IFCOMP написана на языке XPL (расширенный язык PLI, для которого поставляются исполняемые файлы компилятора) для пакетного выполнения и была реализована на компьютере IBM серии 370 с объёмом центральной памяти около 46 КБ 8-битных байт. IFCOMP была разработана в 1979 году.

Эта программа была написана Ридом С. Котлером из Intermetrics, Inc. для Космического центра имени Джонсона. Для получения дополнительной информации обведите кружком S на карточке запроса COSMIC.
Алгоритм подробно описан в статье: "A Technique for Isolating Differences Between Files", Paul Heckel 1978. 

Исходники на языке XPL утеряны, увы. Но сохранился вариант, переписанный Томом Пенелло на Си. Его я и решил поковырять. С ним Рид мне прислал четыре теста, и они работали. Но на некоторых других файлах программа выдавала внутреннюю ошибку или циклилась. Ошибка там неочевидная.

Я подумал: хороший случай применить ИИ для отладки. Интересно, как неестественный ум справится, скажем Cursor или Cline. Получился увлекательный сеанс. 😀

В целом программирование с помощью современного AI-агента напоминает походовую стратегическую игру. Если помните первую Empire, ещё в текстовом виде. Из неё потом выросла Civilization. Здесь нечто похожее, только без карты и в диалоге. Стратегически плодите и размещаете юнит тесты, и постепенно боретесь за расширение функционала и покрытия.

Благо, ИИ агент теперь удобно встроен в VS Code. Работает с файлами прямо в вашем локальном git-репозитории. Или даже прямо на Гитхабе, вам решать. Компилирует, запускает, пишет документацию, находит причины ошибок посредством юнит тестов, чинит, и по новому кругу. Вы внимательно наблюдаете за "сражением" и адресно вмешиваетесь в критические моменты.

Первый "подход к штанге" мы с Курсором продули. 😀 Для начала насоздавали несколько десятков юнит тестов, из которых больше половины не проходили. Хорошо, значит покрытие приемлемое. После этого несколько часов бились все эти тесты пройти. Курсор кромсал код без жалости. Объём Си-шных текстов увеличился вдвое, но справиться с глюками не удавалось. Стало понятно, что зашли в тупик.

Второй подход я распланировал иначе. Сначала переписываем всё с Си на Си++, чтобы уменьшить базовую сложность кода. Вместо доморощенных строк и примитивного выделения памяти переходим на стандартные строки и контейнеры из библиотеки Си++. После этого начинаем покрывать юнит тестами и отлаживать размеренно, по стадиям. Благо алгоритм имеет чёткое разделение на восемь проходов: от pass1() до pass8().

Главная бага обнаружилась на стадии pass6(). При слиянии двух блоков криво обновлялось дерево. Но проявлялся глюк только на уровне pass8(). Тесты уровней pass6 и pass7 багу не ловили. Курсор пытался "чинить" сначала уровень pass8, потом догадывался вернуться и сделать что-то с pass7, и даже заглядывал с сомнением в pass6, но тут его чутья не хватало. Как только я догадался скомандовать создать юнит тест, воспроизводящий нужную багу на уровне pass6, дело пошло на лад. Починка остального была уже делом техники.

Все исходники здесь: github.com/sergev/ifcomp
vak: (Кризис так себе)
[personal profile] vak
Затеяли Трамп и Си крутизной меряться.

«Сколько у тебя ядрёных бомб?» - спрашивает Си.

«Да я! Да у меня! Еще с холодной войны столько запасено!» - Трамп называет цифру.

«И сколько из них взорвутся? Всё протухло давно.»

Трамп срочно побежал проводить подземные испытания.

https://www.dw.com/ru/tramp-prikazal-nemedlenno-vozobnovit-ispytania-adernogo-oruzia/a-74549506

v-edit фунциклирует

Oct. 30th, 2025 08:53 pm
vak: (Default)
[personal profile] vak
Дополировал я текстовый редактор, теперь уже и показать не жалко. Получился красивый код на Си++, и даже кое-как покрытый тестами. Не стыдно людям показать. Не знаю зачем оно может пригодиться, но ещё одна ностальгическая тема закрыта. 😀

github.com/sergev/v-edit

Внутри всё устроено ровно как в древнем Rand Editor. Редактируемые файлы не зачитываются целиком в память. Вместо этого строится компактный список сегментов, облегчающих подчитывание строк файлов по мере необходимости. Изменения в изначальные файлы не вносятся. Модифицированные строки записываются в отдельный временный файл. И только по команде записи в файл происходят перемены. Изначальный редактируемый файл foo переименовывается в бэкап foo~, а в новый foo записываются все строки по порядку, как изменённые (из временного файла), так и прежние (из старого файла). Таким образом обеспечивается устойчивость к сбоям: в любой момент, что бы ни случилось с компьютером, на диске имеется как минимум одна правильная копия файла.

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

Cursor в прошлые выходные глючил нещадно. Я даже разочаровался и переключился на Cline с горя. Это такой плагин для VS Code, от claude.ai. Он тоже приемлемо работает. Но вчера Cursor выкатил новую версию 2.0, я поставил и порадовался. Ничего не глючит, и кодит заметно умнее, чем Cline. Отличный инструмент.

Trident TVGA8900C

Oct. 28th, 2025 11:33 pm
vak: (Аристипп)
[personal profile] vak
Не так много есть VGA адаптеров, работающих в 8-битной шине ISA. Обычно они желают как минимум 16-битную шину. Но вот нашёлся один, слава богу. К нему даже драйверы имеются. Документация: TVGA-8900c-Users-manual.pdf



При включении появляется сообщение:



Что просто офигительно! Значит писишка живая. Значит всё остальное в ней тоже небезнадёжно. Постепенно оживим. Судя по цветным полосам на мониторе, с качеством питания проблемы. Вероятно, следует перешерстить на тему высохших электролитов в блоке питания.

И ещё ждём переходник для клавиатуры PC/XT. 
vak: (Аристипп)
[personal profile] vak
Вот такой видео адаптер стоит в древней писишке. Тайваньская фирма Diamond Flower Inc производила Cpg-400 и другие видео контроллеры с 1981 года, а с 1992 переключилась на материнские платы.



Описание джамперов: theretroweb.com/expansioncard/documentation/50632.pdf

Чтобы сконвертировать этот видеосигнал в VGA, я заказал хитрый конвертер новозеландской фирмы. Приедет - будем пробовать.
vak: (Кризис так себе)
[personal profile] vak
В 2019 году в Нёноксе, небольшом посёлке в Архангельской области России на побережье Белого моря, произошёл серьёзный инцидент. 8 августа на расположенном неподалёку военно-морском полигоне произошёл взрыв, который, по словам российских официальных лиц, был охарактеризован как испытание жидкостного ракетного двигателя. В результате взрыва погибли пять инженеров-атомщиков и трое получили ранения, среди пострадавших были сотрудники российского государственного атомного агентства «Росатом». В соседнем городе Северодвинске был зафиксирован кратковременный всплеск уровня радиации, который достиг 20 раз выше фонового уровня, после чего быстро спал.

Американская разведка и независимые эксперты подозревали, что авария была связана с испытанием прототипа крылатой ракеты с ядерной силовой установкой, известной как 9М730 «Буревестник» (обозначение НАТО: SSC-X-9 Skyfall), которую Россия разрабатывала в рамках своей программы перспективных вооружений. Сообщается, что взрыв произошёл на морской платформе или барже, где небольшой ядерный реактор мог выйти из строя, что привело к выбросу радиоактивных материалов в море и гибели испытательной группы.

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

План по валу

Oct. 27th, 2025 05:28 pm
vak: (Бодхидхарма)
[personal profile] vak
- Пароль?
- План по валу!
- Вал по плану. Проходи.



Покажу, как выглядит программирование с ИИ помощником. В данном случае на примере допиливания текстового редактора v-edit. Для конкретики: используется Cline, такой плагин к VS Code, подключенный к модели grok-code-fast-1.

Ставлю задачу... )

v-edit

Oct. 27th, 2025 05:13 pm
vak: (Default)
[personal profile] vak
За выходные удалось переписать рудневский текстовый редактор re с Си на Си++ и ncurses. Курсор хороший инструмент, хотя потрудиться пришлось изрядно. Вот что вышло:

github.com/sergev/v-edit

Пользоваться этим как редактором пока рано, показываю чисто для демонстрации. Глючит и валится на каждом шагу. Но все существенные функции присутствуют, хоть и не оттестированные как положено.

Под конец Курсор стал нещадно тормозить. Не знаю, то ли у них проблемы, то ли какой лимит я превысил. Буду переходить на Cline c Гроком.

Редактор re это наследник исторического Rand Editor. Прикольно будет довести его до ума на новом уровне программизма.

vak: (Путиномедвед)
[personal profile] vak
Вот всё что осталось.

Kryptos

Oct. 25th, 2025 01:17 pm
vak: (U.S.A.)
[personal profile] vak
Один чувак нашифровал, другие мучаются расшифровывают.



Первую часть расшифровали: BETWEEN SUBTLE SHADING AND THE ABSENCE OF LIGHT LIES THE NUANCE OF IQLUSION

Вторую часть расшифровали: IT WAS TOTALLY INVISIBLE HOWS THAT POSSIBLE ? THEY USED THE EARTHS MAGNETIC FIELD X THE INFORMATION WAS GATHERED AND TRANSMITTED UNDERGRUUND TO AN UNKNOWN LOCATION X DOES LANGLEY KNOW ABOUT THIS ? THEY SHOULD ITS BURIED OUT THERE SOMEWHERE X WHO KNOWS THE EXACT LOCATION ? ONLY WW THIS WAS HIS LAST MESSAGE X THIRTY EIGHT DEGREES FIFTY SEVEN MINUTES SIX POINT FIVE SECONDS NORTH SEVENTY SEVEN DEGREES EIGHT MINUTES FORTY FOUR SECONDS WEST X LAYER TWO

Третью часть расшифровали: SLOWLY DESPARATLY SLOWLY THE REMAINS OF PASSAGE DEBRIS THAT ENCUMBERED THE LOWER PART OF THE DOORWAY WAS REMOVED WITH TREMBLING HANDS I MADE A TINY BREACH IN THE UPPER LEFT HAND CORNER AND THEN WIDENING THE HOLE A LITTLE I INSERTED THE CANDLE AND PEERED IN THE HOT AIR ESCAPING FROM THE CHAMBER CAUSED THE FLAME TO FLICKER BUT PRESENTLY DETAILS OF THE ROOM WITHIN EMERGED FROM THE MIST X CAN YOU SEE ANYTHING Q ?

Над четвёртой частью ломают голову, а пятая даже ещё не показалась.

Database maintenance

Oct. 25th, 2025 08:42 am
mark: A photo of Mark kneeling on top of the Taal Volcano in the Philippines. It was a long hike. (Default)
[staff profile] mark posting in [site community profile] dw_maintenance

Good morning, afternoon, and evening!

We're doing some database and other light server maintenance this weekend (upgrading the version of MySQL we use in particular, but also probably doing some CDN work.)

I expect all of this to be pretty invisible except for some small "couple of minute" blips as we switch between machines, but there's a chance you will notice something untoward. I'll keep an eye on comments as per usual.

Ta for now!

vak: (Знайка)
[personal profile] vak
Раньше все карточки Kingston, что мне попадались, были жутко тормозные. Но вот у них неплохая серия появилась. По скорости записи даже Самсунг с Сандиском затмевает.



Чтение 93.2 Мбайт/сек, запись 85.7 Мбайт/сек - SanDisk Extreme Pro 128Gb - цена $17


Что было с Амазоном

Oct. 24th, 2025 12:05 pm
vak: (U.S.A.)
[personal profile] vak
Summary of the Amazon DynamoDB Service Disruption in Northern Virginia (US-EAST-1) Region

19–20 октября 2025 года в регионе Северная Вирджиния (US-EAST-1) произошел значительный сбой в работе сервисов AWS, вызванный, главным образом, скрытым состоянием гонки в автоматизированной системе управления DNS Amazon DynamoDB. Это привело к сбоям в разрешении DNS для региональной конечной точки DynamoDB, что привело к масштабным последствиям для нескольких сервисов AWS. Событие развивалось в три основных этапа: учащение ошибок API DynamoDB (с 23:48 по тихоокеанскому времени 19 октября до 2:40 по тихоокеанскому времени 20 октября), ошибки подключения к NLB (с 5:30 до 14:09 по тихоокеанскому времени 20 октября) и сбои запуска экземпляров EC2 из-за проблем с подключением (с 2:25 до 13:50 по тихоокеанскому времени 20 октября).

Проблема была связана с архитектурой DNS DynamoDB, которая использует DNS Planner для генерации планов конечных точек и избыточные DNS Enactors (в трёх зонах доступности) для их применения через Amazon Route 53. Редкое состояние гонки возникло, когда один Enactor столкнулся с задержками, позволив другому применить новый план и удалить старый в процессе. Это привело к пустой записи DNS для публичной конечной точки, что привело к блокировке подключений. Восстановление потребовало ручного вмешательства для восстановления DNS к 2:25 утра по тихоокеанскому летнему времени, а полное подключение было восстановлено к 2:40 утра по истечении срока действия кэшей. Глобальные таблицы испытывали задержки репликации, но оставались доступными в других регионах.

В EC2 наблюдались ошибки API, задержки и сбои запуска из-за зависимостей от DynamoDB. Менеджер рабочих процессов дроплетов (DWFM) не смог поддерживать аренду на физических серверах («дроплетах»), что привело к ошибкам, связанным с нехваткой ёмкости. После восстановления DynamoDB DWFM столкнулся с перегрузкой из-за накопившихся данных, что потребовало ограничения пропускной способности и перезапуска. Network Manager столкнулся с задержками распространения сетевых данных для новых экземпляров, которые были устранены к 10:36 PDT. Полное восстановление EC2, включая снятие ограничений пропускной способности, произошло в 13:50 PDT. Существующие экземпляры не пострадали.

В NLB возникали ошибки подключения из-за сбоев проверки работоспособности, усугублявшиеся задержкой распространения сетевых данных для новых экземпляров EC2. Это приводило к чередованию работоспособных и неработоспособных состояний, вызывая ненужные отказоустойчивости AZ и снижение производительности. Инженеры отключили автоматические отказоустойчивости в 9:36 PDT, восстановив работу к 14:09 PDT после стабилизации EC2.

Влияние на другие сервисы:
- Lambda: Ошибки и задержки API до 14:15 PDT, с задержками из-за сбоев опроса SQS и недостаточного масштабирования из-за проблем с NLB/EC2.
- ECS/EKS/Fargate: Сбои запуска и масштабирования контейнеров до 14:20 PDT.
- Amazon Connect: Повышенное количество ошибок вызовов/чатов до 13:20 PDT, с обратным заполнением данных до 28 октября.
- STS: Ошибки API до 09:59 PDT.
- AWS Management Console: Сбои аутентификации до 01:25 PDT.
- Redshift: Ошибки запросов и кластеров до 02:21 PDT, некоторые кластеры недоступны до 21 октября из-за заблокированных замен EC2; проблемы с запросами IAM временно затронули все регионы.
- Другие сервисы, такие как Airflow, Outposts и Support Center, столкнулись с аналогичными сбоями.

AWS извинилась за последствия и предложила решения: отключение/пересмотр автоматизации DNS DynamoDB для устранения состояния гонки; добавление контроля скорости NLB; улучшение тестирования и регулирования EC2; а также текущие проверки для повышения устойчивости и времени восстановления во всех сервисах.
vak: (Абориген)
[personal profile] vak
За качеством вторичного продукта теперь можно следить с помощью интеллектуальной камеры.

"AI in toilet: Kohler Dekoda, launched at Rs 52,700, puts a camera and sensors in your toilet bowl"

Norovirus

Oct. 23rd, 2025 03:20 pm
vak: (U.S.A.)
[personal profile] vak
Если вам кажется, что вы съели что-то не то и отравились - вероятно это норовирус. Нынче вспышка идет по америке. И не первый раз:

"Norovirus Outbreak Sickens 28 at Calif. Shelter Housing L.A. Fire Evacuees".

Злободневное

Oct. 23rd, 2025 11:01 am
spamsink: (Default)
[personal profile] spamsink
Кстати о Народицком, если бы стандарты масс-медиа в 1954 году были примерно такие же, как сейчас, мы бы до сих пор гадали, от чего умер Тьюринг - от скоротечного рака или от инфаркта.
spamsink: (Default)
[personal profile] spamsink



"Что написано пером, не вырубишь топором" значит )
vak: (Робот 1)
[personal profile] vak
Ничо так наш чип отвечает, живенько. И всё это с потреблением 10 ватт.

uiua

Oct. 22nd, 2025 03:34 pm
vak: (Житель планеты Узм)
[personal profile] vak
Ну очень странный язык программирования.

uiua.org/tour

Page generated Nov. 2nd, 2025 06:28 pm
Powered by Dreamwidth Studios