Top.Mail.Ru
? ?
Image
Image
bolk's Journal
20 most recent entries
Image
Image

Date:2025-12-03 22:35
Subject:«Виола» и моя мечта: как ИИ снова мне помог
Security:Public

Вступление

Я, как вы знаете, довольно давно уже реставрирую браузер «Виола» из недописанных исходников. И была у одна мечта, связанная с ним: увидеть как в нём работает вращение трёхмерной модели самолёта.

Узнал я об этом из статей о судебной тяжбе компаний «Микрософт» и «Иолас» (Eolas), начавшейся в 1999-м году.

Компания «Иолас» утверждала, что первой разработала и внедрила технологию «встроенных объектов и плагинов» для веб-браузеров, и «Микрософт», по их мнению, нарушала права, используя схожий механизм. В этой связи автора «Виолы» вызывали в суд, где рассказал, что придумал эту технологию ещё в начале 90-х годов, тогда как «Иолас» получила на неё патент только в 1998-м.

Тема широко освещалась в прессе и в некоторых из статей есть статичный скриншот того как это выглядело. Кроме того, сохранился код страницы с программой на языке «Виола». Казалось бы — почти всё что нужно!

Image
Скриншот того как это выглядело в первой половине 1990-х

Что мешало

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

Во-первых, на самом деле модель вращала утилита V-Plot, написанная Скоттом Силви, который учился вместе с автором «Виолы». Её исходники не сохранились.

Во-вторых, судя по сохранившимся исходникам веб-страницы, вращались две модели, которые назывались TomCat и x29.geom, которые ещё нужно было найти.

В-третьих, как оказалось, часть, которая должна взаимодейстовать с V-Plot не работала.

Вопрос №1: где взять V-Plot?

По всей видимости, в открытых источниках его не найти — сколько не запускал я невод глубокого поиска нейросетями, ничего не вышло. Тогда я решил пойти от обратного — у нас есть скрипт на «Виоле», который должен слать этой программе какие-то команды, так может нейросеть, отталкиваясь от них, мне её просто напишет?

Без особой надежды я дал нейросети такое задание и пошёл заниматься делами. Через какое-то время у меня был на руках исходник, в который я даже не заглядывал. Решил просто всё запустить и посмотреть что будет. Ожидаемо ничего не заработало сразу. Я пожаловался на этой нейросети и мы пошли смотреть в чём причина.

Оказалось, что специальный «объект» TTY «Виолы» для взаимодействия с программами, которые могут выводить графику в окно браузера, реализован только для «Линукса», а для «МакОСи» (в «Виоле» встречаются куски для очень старой версии этой операционной системы) код реализован не был.

Я как можно тщательнее, как зловредному джину, описал что именно хочу получить и опять переключился на свои дела. И вот тут, когда я без особой надежды вернулся через какое-то время посмотреть на то как нейросеть провалила задачу, меня ждало маленькое чудо: в окне, где должны выводиться модели, появилась жёлтая сетка — самодельный V-Plot делал что-то полезное!

Image
Сетка — признак того, что взаимодействие с V-Plot работает!

Здо́рово! Но где же мои самолётики?

Настал момент узнать откуда же брались самолёты. Оказалось, что «Виола» передаёт на вход V-Plot одну из моделей, которые выберет пользователь — там на выбор несколько графиков и две модели в формате OFF (Object File Format). Моделей в комплекте с исходниками браузера не оказалось.

Ориентируясь на приметное имя x29.geom, я решил поискать эту модель, вдруг это что-то известное. А параллельно зарядил ChatGPT глубоким поиском.

Модель действительно оказалось известной — её когда-то изготовила компания «Эванс энд Сазерлэнд», а потом использовали на европейской выставке 1987 года, электронные материалы которой каким-то чудом уцелели и доступны для скачивания.

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

Дальше нейросети меня опять удивили — посмотрев на мой найденный файл, сеть для программирования «Опус 4.5», не моргнув глазом, написала мне за каких-то несколько десятков секунд код для парсинга и отображения этого формата. И вот я уже вращал свой первый самолёт!

Image
Браузер «Виола», вращающий модель самолёта Grumman X-29 в трёх измерениях

Отлично! А что со второй моделью?

Со второй моделью так гладко не вышло — как я ни старался, ничего путного по слову TomCat на нашёл. Решил смириться и найти хоть какую-нибудь модель того же самолёта — ChatGPT определила, что на картинке нарисован Grumman F-14 Tomcat.

Тут наконец пригодился глубокий поиск — нашёлся архив внутри которого лежала модель самолёта F-14, но, вот неприятность, в формате IOB (Imagine object). Формат давно мёртвый и единственный конвертор, который я нашёл — бинарный файл под операционную систему «Амига».

Я, было загрустил, но тут решил попробовать уже совсем безумную штуку — натурально попросить нейросеть написать мне конвертор из формата IOB в OFF, причём без описания самих форматов. Самое смешное, что это сработало, причём с первого раза! Получившаяся модель сразу появилась в окне и заработала!

Image
Модель Grumman F-14 Tomcat, сконвертированная из формата IOB

Выводы, или Что меня удивило

Лёгкость к которой нейросеть провела обратную разработку команд, написала интерпретатор команд для V-Plot и конвертор, просто поражает! Честно сказать, я на такое совсем не надеялся. Максимум, который я ожидал — полуживой прототип, который придётся отлаживать не один день.

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

Тем не менее, та работа, которую я проделал над браузером при помощи нейросетей, совершенно неподъёмна для человека в такие короткие сроки.



Ссылка на оригинал.

post a comment



Date:2025-12-02 21:30
Subject:Звуки в «Виоле»
Security:Public

Как я уже писал, анимацию в «Виоле» можно получить, задействовав скриптовый язык, а что же со звуком?

Из скриптового языка доступны только две функции — bell() издаёт системный «бип» и bellVolume(), позволяющая задавать или получать громкость этого «бипа» в процентах. Это немного, но и их пришлось чинить — они обе используют вызов XBell(), который на «МакОСи» не работает испокон веков.

Пришлось примотать небольшой код на Objective-C, который вызывает фреймворк AVFoundation, через который я теперь проигрываю системный звук Tink.aiff с заданной громкостью.

В HTML отдельного тега нет, но небольшими ухищрениями можно заставить проиграть браузер любой файл, имя которого кончается на .au — этот файл передаётся маковской утилите afplay, а она умеет играть файл в целой куче аудиоформатов.

Каноничнее, конечно, использовать именно формат au, тем более, что в него аудио можно преобразовать большинством современных утилит, той же ffmpeg, например.

Так как же проиграть звук из HTML?

Самый простой способ — поставить на аудиофайл ссылку. При переходе на неё файл проигрывается, а не скачивается. Способ позанятнее — использование тега INSERT, аналога современного IFRAME. Он проиграет файл при открытии страницы, а если использовать атрибут AFTER, то ещё и зациклит его с указанной в миллисекундах задержкой.

Image

Так как звук играется асинхронно, в теории, можно было писать игры или делать сайты с фоновой музыкой, для этого уже всё было готово. А если учесть, что скриптовый язык позволяет запускать что угодно (с безопасностью у этого браузера явные проблемы), то можно, запуская ту же утилиту afplay, организовать звуковые эффекты.



Ссылка на оригинал.

post a comment



Date:2025-12-02 15:29
Subject:«Виола» и организация закладок
Security:Public

«Виола», конечно, глубже любой кроличьей норы — со временем всё больше и больше похороненных идей удаётся находить в её внутренностях. Вчера ночью, просматривая код незавершённых и закомментированных пунктов меню, я заметил интересное место — недописанный интерфейс каталога закладок.

Степень готовности там оказалась очень высокой, поэтому я решил оживить этот фрагмент. В «Виоле» уже есть его конкурент — «Hot List», позволяющий хранить закладки плоским списком. Но «Hot List» куда проще и примитивнее. В отличие от него, каталог позволяет создавать папки и перетаскивать закладки, визуально организуя их так, как больше нравится пользователю.

Несмотря на то, что кажется логичным перетаскивать закладку в папку, чтобы туда её перенести, такого автор, к сожалению, не задумывал — в комментариях к незавершённым кускам достаточно подробно описана логика перетаскивания. Чтобы не нарушать аутентичность, я тоже это не реализовывал.

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

Image

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

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



Ссылка на оригинал.

post a comment



Date:2025-12-01 13:24
Subject:«Редачить»
Security:Public

А ещё мне слово «редачить» не нравится. Это усечённое «редактировать», если вдруг не сталкивались. Появилось не так давно, но уже прочно сидит в речи многих.

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

Кажется, что таких слов немного, но если порыться в памяти, оказывается, что их очень прилично и становится всё больше: «редактировать» → «редачить», «блокировать» → «блочить», «комментировать» → «комментить», «регистрировать» → «регать», «администрировать» → «админить», «фотографировать» → «фоткать», «компилировать» → «компилить», «тестировать» → «тестить», «сканировать» → «сканить», «генерировать» → «генерить» ну и так далее.



Ссылка на оригинал.

post a comment



Date:2025-11-30 15:20
Subject:Как ломается спагетти
Security:Public

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

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

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

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

Пойду собирать с пола улетевшие куски.

Image


Ссылка на оригинал.

post a comment



Date:2025-11-30 13:19
Subject:Цвет и трёхмерная печать
Security:Public

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

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

Но вообще это отчасти правда — в основном то, что печатается у нас дома, печатается в одном цвете. Почему? Причины две.

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

Во-вторых, печатать несколькими цветами немного лень — это занимает больше времени и требует больше усилий. Одноцветные детали часто помещаются на столе принтера сразу все, можно напечатать их одним проходом. Если печатать отдельно, то чаще всего катушки с пластиком приходится менять вручную — у нас многие катушки не лезут в автоматическую систему управления материалами (AMS), потому что такой пластик сильно дешевле, а место для нестандартных катушек только одно.

Честно сказать, платить за «стандартный» пластик в три раза дороже меня немного душит жаба, но недавно я с ней договорился и купил две катушки фирменного пластика от того же производителя, что и принтер. На фотографии жёлтый пластик — как раз из этой катушки. Может в будущем буду печатать с большим количеством цветов чаще.

Image
Многоцветная конюшня для дочки (и «деревья» поддержки, которые позволяют печатать горизонтальные части на весу)


Ссылка на оригинал.

1 comment | post a comment



Date:2025-11-29 19:16
Subject:Походы и кофе
Security:Public

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

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

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

Но рассказ про кофеварку.

Единственный её минус — коробка, в которой я её таскал. При покупке я сделал глупость — взял комплект попроще. Оказалось, что это очень неудобно — таскать в поход что-либо в картонной коробке, которая может размокнуть.

В общем, после очередного «надо бы как-нибудь докупить к ней чемоданчик», я не стал откладывать это на потом и теперь, спустя почти месяц, могу выкинуть изрядно размякшую коробку и таскать кофемашинку с бо́льшим комфортом.

Image


Ссылка на оригинал.

post a comment



Date:2025-11-26 22:03
Subject:Противные словосочетания
Security:Public

Бывает ли у вас такое, что какие-то сочетания слов вызывают отвращение? Настолько сильное, что в речи сложно поставить эти слова рядом?

У меня так, например, с сочетаниями «писать картину» и «слышать парфюм». Не знаю, есть ли тут что-то от синестезии, но мне становится неприятно, когда приходится произносить какую-либо из этих двух пар, например, при чтении книги. Наверное, есть ещё какие-то, но я их не помню — видимо, реже с ними сталкиваюсь.

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

Я почему это вспомнил, мне сейчас кабинет оформляет художница, которая когда-то работала в Эрмитаже и мы с ней решили перерисовать маслянными красками фотографию усадьбы Шулешкиных в сельце Новое Исаково Бугульминского района.

На одной из стен будут висеть фотографии моих предков, и среди них — эта картина. Она будет напоминать мне о тех, кто там жил — не в усадьбе, а в этом сельце, — раз уж ни их фотографий, ни их портретов у меня нет.

И каждый раз, когда я потом перечитываю наш с этой художницей последний диалог (есть у меня такая привычка), спотыкаюсь об своё «нарисовать картину». Спросить как-то не решаюсь, но всё время думаю — не обижаю ли я её тем, что вместо «написать» пишу «нарисовать»? Всё-таки профессиональный художник.

Говорят капитаны дальнего плавания очень обижаются, если об их судне не сказать «ходит». Я был знаком с одним, но как-то не догадался спросить насколько это для него важно.

В общем, надо бы всё-таки у неё спросить и больше не переживать! Когда-нибудь…



Ссылка на оригинал.

post a comment



Date:2025-11-25 20:57
Subject:Искусство рисования графиков
Security:Public

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

К чему я это вспомнил? Компания «Антропик» выпустила релиз новой пишущей код модели «Опус 4.5». На графике, по которому я утром за завтраком мазнул глазами, мне померещился очень заметный рост точности, отчего я провёл в предвкушении весь день: планировал засесть вместе с нейросетью за задачку посложнее и посмотреть, как она справится.

Когда я ближе к вечеру рассмотрел график внимательнее, обнаружил, что точность повысилась менее чем на 4%. Всякий рост — это хорошо, но 4% — это, конечно, не вау.

Image


Ссылка на оригинал.

3 comments | post a comment



Date:2025-11-24 21:53
Subject:Пластик «НИТ»
Security:Public

Надо взять себе на заметку никогда не покупать пластик «НИТ». Рейтинг на «Озоне» — 4,8, куча довольных клиентов, а я не доволен.

За всю историю владения трёхмерным принтером мне пришлось единственный раз его разбирать — после печати синим пластиком PLA этой компании. На днях попробовали печатать голубым пластиком, тестовая полоса (на фото) неравной толщины, рваная. Модель в двух местах расплылась. В общем, плохой пластик, не рекомендую.

Я у соседа по дому PETG покупаю, у него собственное производство, он его продаёт на бумажных втулках, выглядит неприглядно, но я потратил уже не один килограмм, никаких нареканий.

Image


Ссылка на оригинал.

post a comment



Date:2025-11-23 13:47
Subject:«Нана-банана» и Мурзик
Security:Public

Продолжаю смотреть на что годится «Нана-банана». Я вчера оплатил там аккаунт на 250 генераций, так что надо тратить.

В качестве следующего теста я попросил нейросеть нарисовать Мурзика — кота, который был у меня в детстве. Набор опорных изображений я сформировал из нарезки мутноватого видео сорокалетия папы, где Мурзика видно пару секунд и своего детского рисунка.

Долго я не экспериментировал, сделал две генерации, да и промпт написал довольно простенький:

На этом рисунке и кадрах из видео есть кот. Надо посмотреть его особенности и сделать фоторелистичного кота. В точности повтори окрас кота, позу на рисунке и всем особенности, которые можно рассмотреть.

Но что я могу сказать.

Во-первых, если бы мне сказали, что это фото Мурзика, я бы мог поверить. То как я его помню вполне совпадает с тем, что я вижу. Разве что квартира не наша — обои и ковёр похожи, но такого ракурса у нас дома быть не могло.

Во-вторых, все детали на мой взгляд выглядят очень естественно — анатомия, интерьер советской квартиры, всякие мелочи — даже есть ворсинки по краю пледа.

Минусы — поза немного другая, не как на рисунке, но самое главное — немного отличается окрас. На моём рисунке пятно на спинке соединено с хвостом, а у «Наны-бананы» видение другое — пятна разделены.

При этом, учитывая с какой лёгкостью «Нана-банана» нарисовала изображение, которое меня почти устроило, я уверен, если потратить полчаса, чтобы описать всё то, что мне не понравилось, можно нарисовать что-то близкое к идеалу. У меня просто нет такой цели, я-то знаю, что это не подлинное фото Мурзика и ничего этого факта не изменит.

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

Image
Image


Ссылка на оригинал.

post a comment



Date:2025-11-22 18:42
Subject:«Нана-банана»
Security:Public

Что-то я уже давно не смотрел какие годные нейросети появились для редактирования изображений. Пользуюсь только встроенной в «ЧатГПТ» и всё. Для большинства моих задач этого хватает, но, признаться, я всё чаще стал упираться в ограничения, когда приходится признавать, что сколько не промпть, а выше головы не прыгнешь.

Особенно у «ЧатаГПТ» плохо с деталями, добиться стабильности которых между задачами, — какая-то невероятно сложная задача. Особенно это заметно на лицах. Если дать одну фотографию с человеком и три разных задания, получишь три разных лица.

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

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

Image
Попытка колоризации фото бабушки жены в среднем возрасте — Марии Ивановны Андриановой (1933—2024)


Ссылка на оригинал.

post a comment



Date:2025-11-21 20:38
Subject:Внешний вид браузера «Виола»
Security:Public

Если вы приглядывались к браузеру «Виола» на моих многочисленных скриншотах, могли заметить, что он выглядит каким-то недоделанным — адресная строка и заголовок страницы небрежно брошены в интерфейс.

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

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

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

Image

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

Посмотри на out.png, справа внизу светлый угол, за который тянуть надо, не совпадающий по цвету с остальным окном. надо бы поправить цвет, сделать в цвет остального окна.

Вот иллюстрация того как это ещё недавно выглядело:

Image
Неприятный уголок и технические кнопки, которые я потом убрал

Нейронка, так сказать «взяла под козырек» и начала что-то бодро писать на «Пайтоне». Что странно, кстати, — программа-то на Си. Через какое-то время я вернулся посмотреть что получилось.

Оказалось, она написала мне программу, которая покрасила краешек моего скриншота в правильный цвет!

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



Ссылка на оригинал.

post a comment



Date:2025-11-21 09:36
Subject:Как мы видим старый веб
Security:Public

Я часто пишу, что считаю проект «Веб-архива» самым важным в интернете. Пользуюсь им постоянно и большинство ссылок за четверть века ведения своего сайта во временем стали вести туда. Особенно интересно на «Веб-архиве» смотреть на то, как начинался веб, времени прошло немного, но изменилось всё самым радикальным образом.

И вот интересная штука, я ведь начал заниматься вебом в 90-е, свой первый в жизни сайт сделал в начале 1998-го, отлично помню, что браузеры того времени имели много нестандартных тегов, которые сейчас не отображаются — тот же мегапопулярный в те времена «Нетскейп» имел теги LAYER и ILAYER, вместо современных DIV и IFRAME.

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

Мало беды, если не видно какого-то оформления, типа мигания (BLINK) или бегущей строки (MARQUEE), неприятно, если поедет оформление из-за отсутствия поддержки многоколоночности (MULTICOL) или тех же тегов-контейнеров (LAYER), но по-настоящему плохо, если не видна часть важного контента.

В максимальной степени это видно на страницах сайта браузера «Виолы», там в современных браузера вообще мало что показывается — поддержка слишком многого канула в Лету, а заметку я решил написать, потому что обнаружил, что презентация, которую я смотрел вчера, должна быть оформлена иначе.

Часть картинок, которые там использованы в оформлении, в ничем сейчас не поддерживаемом формате XPM, а другая часть вставлена при помощи тега FIG, поддержки которого сейчас тоже нигде нет.

На скриншоте — слайд про виртуальную среду, про который я писал вчера вечером, со всеми картинками, которые должны там отображаться. Тут, конечно, можно и без них обойтись, в этом смысле более показательный пример, как я уже упоминал выше, — сайт «Виолы».

Image


Ссылка на оригинал.

post a comment



Date:2025-11-20 23:33
Subject:HTML 3.0 и VR
Security:Public

Пока искал в интернете информацию по тегу FIGURE, набрёл на какую-то недоделанную, но очень интересную презентацию «A Quick Review of HTML 3.0». Судя по версии HTML, это должно быть в районе 1995 года.

Под подзаголовком «Figures with local event processing» скрывается видение того как в будущем будет выглядеть веб в виртуальной реальности. Причём автор считал, что это будет ближайшее будущее:

К концу этого десятилетия дальнейший рост соотношения цена/производительность позволит доступным настольным системам запускать высокореалистичные модели виртуальной реальности. […] сейчас самое подходящее время для разработки механизмов, позволяющих людям делиться VR-моделями в глобальном масштабе.

Я и не знал, что первый коммерческий наголовный дисплей был выпущен в 1994-м году, думал в 90-е такое только в фантастических фильмах встречалось:

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

Автор соврешенно справедливо полагал, что звук тоже важен, не только изображение:

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

Можно подумать что тут написано про какие-то приспособления, которые позволяют почувствовать виртуальную гравитацию:

Виртуальная среда может накладывать те же ограничения, что и реальный мир, например силу тяжести или ограничение движения ходьбой, подъёмом/спуском по лестнице, поднятием и опусканием предметов. Либо, наоборот, пользователи могут «обзавестись суперсилами» и с лёгкостью летать по воздуху или даже проходить сквозь стены!

…но на деле речь просто реализацию физики на экране:

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

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

Возможно, мы сможем опереться на опыт конвертации документов и SGML и задавать VR-среды на логическом уровне, предоставив браузерам заполнять детали в соответствии с возможностями каждой платформы.

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

Я немного сократил статью, она чуть больше, но, к сожалению, не дописана, кончается в неожиданном месте:

Хранение таких подробностей в отдельных файлах даёт несколько преимуществ:



Ссылка на оригинал.

post a comment



Date:2025-11-20 21:33
Subject:«Виола»: ИИ и отображение PostScript
Security:Public

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

Случайно, изучая заголовки, которые отправляет «Виола», я обнаружил, что этот браузер каким-то образом работать с «ПостСкриптом» — это язык описания страниц, который используется, например, принтерами. Для этого, как оказалось, нужно использовать отдельный тег FIGURE.

Непонятно для этого понадобился отдельный тег, ну вот так сделано. Для наглядности вот пример его использования:

<FIGURE TYPE="application/postscript" SRC="test_figure_ps.ps"
WIDTH="100" HEIGHT="100" MAYDELAY="2000" ISMAP></FIGURE>

У него больше атрибутов, чем я использовал в примере, в минимуме ему нужен только TYPE и SRC, а остальные атрибуты у меня тут используются как ненужные подробности в моём рассказе, но так уж мне захотелось.

Когда я сделал тестовую страничку с этим тегом, оказалось, что ISMAP и MAYDELAY с «ПостСкриптом» не работали, как и, собственно, само отображение «ПостСкрипта».

С отображением я справился быстро. Секрет в том, что «Виола» на самом деле этот язык сама по себе не понимала, до моего вмешательства она использовала довольно неряшливый код, который использовал кучу временных файлов и две утилиты, — gs и ppmtogif, при помощи которых она получала GIF, который на самом деле и отображался.

Я весь этот код просто выкинул и заменил на вызов утилиты magick, которая умеет конвертировать «ПостСкрипт» в GIF напрямую безо всяких посредников. Пришлось только учесть, что по-умолчанию она создаёт GIF с прозрачностью, тогда как предыдущий набор использовал белый фон.

Довольно быстро я починил и реализацию атрибута ISMAP — просто скопировал его из обработчика формата XBM, где он работал, а починку MAYDELAY отдал нейросети.

Вроде ничего сложного, опять же — этот атрибут работал у XBM, я предполагал, что сеть быстро разберётся в чём там дело, передрав рабочий код и наложив его на особенность — XBM отображается напрямую внутренней библиотекой браузера, а «ПостСкрипт» конвертируется.

Примерно спустя час я сдался. Ни ChatGPT 5.1 Codex, ни Gemini 3 Pro, ни моя любимая Sonnet 4.5 с задачей не справились — каждая из них писала мне огромную простыню кода, которая задачу не решала.

Кусок кода, который надо было поправить, выглядел следующим образом. Если атрибут MAYDELAY не указывался, то вызывалась конвертация «ПостСкрипта» в GIF и он показывался, в противном случае запускался таймер, который вызывал loadData — другой… э… метод, назовём это так, программы на внутреннем языке «Виолы», в котором конвертации не было.

Модели это видели и просто копировали конвертацию в этот метод, но к моменту срабатывания таймера файл, с которым нужно было работать, уже пропадал. Думаю, его удалял сборщик временных файлов, встроенный в «Виолу». В итоге ничего толком не работало: модели ходили по кругу и, пытаясь исправить ситуацию, писали всё больше кода.

Исправление, которое сделал я, работает очень просто: я сначала делаю конвертацию, потом смотрю, есть ли параметр MAYDELAY, если нет, отдаю сконвертированную в GIF картинку в отрисовку, если есть, откладываю отрисовку, передавая в метод loadData уже сконвертированную картинку.

По сути, я передвинул несколько строк кода чуть ниже, это всё моё исправление. Я как-то очень разочарован, что умнейшие из нейросетей до этого не додумались. Можно посмотреть в моём коммите, но там сразу несколько вещей исправляются.

Image
Пример изображения PostScript взят из чужого репозитория


Ссылка на оригинал.

post a comment



Date:2025-11-19 19:27
Subject:Какой у вас GPU
Security:Public

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

Технически берётся параметр UNMASKED_RENDERER_WEBGL у контекста объекта WebGL.

GPU checker

_

×

У меня тут сейчас написано следующее:
ANGLE (Apple, ANGLE Metal Renderer: Apple M3 Max, Unspecified Version)

У братишки на рабочем компьютере (там «Виндоуз»):
ANGLE (Intel, Intel(R) UHD Graphics 770 (0x0000A780) Direct3D11 vs_5_0 ps_5_0, D3D11)

На моём смартфоне «Сяоми 14 Ультра»:
Adreno (TM) 750



Ссылка на оригинал.

4 comments | post a comment



Date:2025-11-19 08:26
Subject:«Виола», математика и скобки
Security:Public

Два дня занимался математическим модулем в «Виоле».

Поручил нейросети посмотреть, есть ли что-то, что автор начинал делать, но не доделал. Оказалось — есть! В коде есть недоделанная реализация пропорциональных скобок: сделаны токены и логика, но код не соединён с парсером, и некоторые сложные случаи не обрабатываются.

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

Звучит, вроде, несложно, но на деле коммит оказался очень объёмным. Зато сейчас всё работает очень хорошо.

Ещё в комментариях к коду есть указание на то, что ширина скобки должна, по задумке автора, меняться динамически в зависимости от её высоты. Но я попробовал — смотрится плохо, фиксированная выглядит намного лучше, поэтому реализовывать это не стал.

Image


Ссылка на оригинал.

post a comment



Date:2025-11-17 09:17
Subject:«Виола»: математический модуль
Security:Public

Наверное, можно подумать, что я забросил заниматься браузером «Виола» — первым графическим браузером с потрясающими для своего времени возможностями. На самом деле — ничего подобного: почти каждый день, с редкими пропусками, я что-то в нём правлю.

Тот исходный код, который мне достался, был в статусе беты, но даже для беты тут очень много вполне очевидных багов, которые нужно исправить. А ещё — много впечатляющих вещей, которые автор, по всей видимости, не успел доделать. Часть из них я нашёл чисто случайно, как, например, модуль для отображения математических формул.

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

Image

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

Вот как выглядят формулы:

<math>&integral;<sup>&infin;</sup><sub>0</sub> e<sup>-x</sup> = <box>&sigma;<over>2</box></math>

Это третья формула на моём скриншоте, можно посмотреть чему соответствуют отдельные элементы. Как можно убедиться, реализованное в «Виоле» почти в точности совпадает со стандартом HTML Math, разрабатываемым когда-то Консорциумом Всемирной паутины, который так и остался в стадии черновика. Правда в браузере реализована только малая часть.

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



Ссылка на оригинал.

post a comment



Date:2025-11-16 15:13
Subject:Мышастик: немного статистики
Security:Public

Отрисовал небольшую иллюстрацию на тему казанского мышастика. Делал из списка известных нод, всего там на настоящий момент 174 устройства. Вот как выглядит распределение самых популярных в сообществе устройств:

Image


Ссылка на оригинал.

post a comment


Image
Image
browse
Image
Image
my journal
Image
Image
Image Image
Image
Image