Евгений Степанищев

Этот сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Блики на стёклах

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

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

Арсенал одной из казанских банд в казанском музее МВД за стеклянной витриной

Обратная разработка GIFLITE.EXE

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

Когда-то давно, когда я активно верстал, формат GIF был одним из самых ходовых, для анимации так вообще альтернатив не было. И мы в то время в обязательном порядке занимались оптимизацией графики.

В случае GIF очень хорошо помогала известная утилита GIFLITE.EXE — коммерческая разработка компании «Вайт Ривер Софтвейр» (White River Software), которая, по всей видимости, давно исчезла, так как я про неё ни в какой другой связи никогда ничего не слышал.

Утилита была под DOS, но я тогда работал под «Виндой» и проблем это не создавало, но позже, когда я пересел на «Мак», пользоваться ей стало неудобно. Тем не менее я всё равно ей ещё долго пользовался через всякие эмуляторы.

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

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

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

А теперь, немного подробностей.

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

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

GPT-5.1 Codex Max показался немного медлительным и чуть туповатым парнем, таким неповоротливым увальнем сибирских размеров, старательным, но звёзд с неба не хватающим.

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

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

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

Потом я установил radare2 с плагином r2ghidra и нарезал бинарный файл на сишные функции. Код восстановился плохо, с лакунами, поэтому я запустил отдельную сетку, которой буквально по шагам объяснял что делать. Основная идея — довести сишный код до читаемого состояния, разбираясь с функциями от самых коротких к более длинным.

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

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

В полным соответствии с принципом Парето, 20% кода отняло у меня 80% времени. Тут очень хорошо показал себя Opus 4.5, — поскольку в коде разобраться было сложно, там 40 тысяч строк на ассемблере, он ставил очень много эксприментов, сравнивая два набора файлов между собой — тот, который получался при запуске оригинального GIFLITE.EXE с нашим.

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

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

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

JOPA: Javac One Patch Away

Пока я тут использую нейросети для развлечения, некоторые ребята пробуют их для чего-то более полезного — например, один наш соотечественник (о чём можно догадаться по неймингу) за две недели дописал форк старого джава-компилятора Jikes, написанный на Си++. Теперь компилятор называется JOPA и поддерживает Джаву версий 5, 6 и 7.

Это может быть нужно, например, для «бутстрапинга» — когда нужно с «нуля», из исходников собрать джава-компилятор + рантайм + инструменты, без использования проприетарных бинарников.

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

Правда, на моём тестовом примере JOPA упала с ошибкой при попытке открыть rt.jar (это главный архив стандартной библиотеки), но это удалось решить, просто распаковав его рядом.

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

Добавлено позднее: за такое меня ещё не благодарили, какой-то новый опыт:

Инсталлятор «Виолы»

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

Так как с собой пришлось тащить ещё и «Кварц» (XQuartz), то лучшим выбором был dmg — файл с монтируемой файловой системой. Хорош он тем, что просто делается и легко стилизуется. Я, например, сделал внутри обои, вдохновлённые внешним видом браузера и поместил портрет автора с его старой домашней странички.

По-моему, вышло очень симпатично.

Для сборки сделал две новые цели — make app для сборки самого приложения и make dmg для сборки инсталлятора.

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

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

Добавлено позднее: код собран по процессоры АРМ и под «МакОС» 26.

«Виола» или «ВиолаВеВеВе»?

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

Вопрос, который меня интересовал — правильно ли я вообще называю эту программу? Для меня это важно.

Дело в том, что «Виола» — это язык программирования, а не сам браузер. Например, вся обработка тегов внутри написана на этом языке. Его название расшифровывается как «Visually Interactive Object-oriented Language and Application».

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

В общем, не мне одному было жалко ломать язык — например, в журнале «Internet World Magazine» за апрель 1995 года он тоже называется «Виола», значит всё в порядке.

Заметка из журнала «Internet World Magazine» за апрель 1995 года, страница 36

Музей МВД

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

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

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

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

Если вы живёте в Казани и знаете как в этот музей попасть «с улицы», сходите, не пожалеете. Только рассчитывайте на полтора-два часа, думаю, не меньше.

Пистолет одной из самых известных казанских банд — «Тяп-ляп»

«Виола» и самолёты: коррективы

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

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

violaIdleEvent(): select() error: : Bad file descriptor

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

«Виола» и моя мечта: как ИИ снова мне помог

Вступление

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

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

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

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

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

Что мешало

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Звуки в «Виоле»

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

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

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

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

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

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

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

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

«Виола» и организация закладок

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

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

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

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

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

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

«Редачить»

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

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

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

Как ломается спагетти

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

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

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

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

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

Цвет и трёхмерная печать

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

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

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

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

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

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

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

Походы и кофе

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

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

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

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

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

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

Противные словосочетания

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

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

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

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

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

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

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

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

Ранее Ctrl + ↓