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

Позднее Ctrl + ↑

Ремонт в кафе

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

И вот, наконец, около полутора месяцев назад нашлось помещение, которое устроило нас по всем параметрам. Небольшое, зато в самом центре.

Мы сделали проект и начали ремонт, который совсем скоро завершится. Этот снимок я сделал неделю назад, за это время там уже, например, сделали свет.

Запахи цветов

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

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

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

Первая BBS в Казани

Около полугода назад я заинтересовался темой появления казанских BBS — это системы электронных доски объявлений, которые были распространены до эпохи интернета. В одном из источников, которые я использовал для исследования, всплыло указание на первое казанское объявление в газете «Вечерняя Казань», которое рекламировала первую казанскую BBS.

Доска объявлений называлась «ORPHAN’S BBS». Модерировали её Амир Шабашвили, с которым я когда-то был знаком, и Марат Якубов. Последний и дал объявление в газету за космические 130 рублей, переплатив за срочность и пятничный номер.

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

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

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

Нашёл не без труда, объявление совсем крошечное. Латинского шрифта в газете в те времена ещё не было, поэтому BBS написали как ВВС:

Владельцы модемов! Информацию о первой в Казани ФИДО-ВВС Вы можете получить по тел. 76-85-59.

Объявление было опубликовано 7 августа 1992 года

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

Медаль «За боевые заслуги»

Как я уже писал прошедшие выходные мы провели небольшим отрядом в походе. Главным результатом того выезда я считаю серебряную медаль «За боевые заслуги». Мы нашли её на месте, которое обнаружил я по другим находкам. Начали вместе серьёзно прочёсывать и нашли медаль.

Это, конечно, случайная находка, медаль — типичная «потеряшка». Ребята из нашего отряда забрали её для отчётности и определения владельца. Им оказался Ганин Павел Алексеевич (1923 года рождения).

Вот описание его подвига в Великую отечественную войну:

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

В те годы Павел Алексеевич служил в разное время старшим сержантом, башенным стрелком, наводчиком, командиром башни танка Т-34 в составе 24-й танковой бригады 5-го танкового корпуса 2-й гвардейской армии 1-го Прибалтийского фронта. Также исполнял обязанности связного начальника штаба батальона и разведчика.

После войны работал в колхозе «Красный Луч» Войкинского сельсовета. Награждён медалью «За боевые заслуги», орденом Красной Звезды и орденом Отечественной войны II степени.

Добавлено позже: ребята из нашего военно-поискового отряда нашли дочь героя. Медаль торжественно вручат в первых числах июля.

Кирпич «…LA и Ко»: разгадка

Летом прошлого года я несколько раз с друзьями ездил на плюс-минус один и тот же берег реки, где валяется порядочно битого кирпича. Там я в разное время нашёл два загадочных обломка — один с остатками надписи «…LA и Ко», другой — с хорошо читаемой надписью «Сызр.-Вяз. Ж. Д.».

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

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

На нём видно, что «L. A.» никакое не «L. A.», а отколотое «Н. А.» со стёртой перекладиной — «Николай Алексеевич», то есть инициалы производителя!

Мегашестерня

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

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

Диаметр колеса около метра (лопата, которую я положил для масштаба — 1,20 метра), а сколько оно весит остаётся только догадываться, думаю около ста килограмм.

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

И. Ф. Карнаухов «Трактор „Сталинец-60“», М., «Сельхозгиз», 1937

Scratch на каникулах

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

Как-то неожиданно программировать ей понравилось. Я не ожидал, что она настолько этим увлечётся.

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

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

Инфракрасные QR-коды

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

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

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

Контроль глюкозы: итоги

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

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

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

Конечно возник вопрос — почему именно в это время? И вот совпадение — на выходных мы поехали к моим родителям отвозить дочку на лето. Спали там на диване, и за две ночи — ни одного ночного провала. Жена вспомнила, что дома я примерно в это время начинаю храпеть, а у родителей не храпел ни разу.

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

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

Недокументированные возможности bc

У той версии утилиты bc, которая является частью проекта GNU, есть ряд недокументированных возможностей, про которые я узнал, исследуя её исходный код.

Я уже писал про недокументированную и сломанную функцию random(), которая починена в новой версии моими усилиями. Но кроме этого, есть ещё две вещи отсутствующие в документации.

Во-первых, у самой утилиты есть ключ -c, показывающий байт-код, в который переводится программа на языке bc. Во-вторых, есть альтернативный синтаксис для передачи массива по ссылке — кроме символа *, как везде, есть нестандартный символ &.

Но это я сам нашёл, руками. Стало интересно посмотреть, что могут найти языковые модели. Для исследования я выбрал редактор кода «Курсор» и модель Claude Sonnet 4.

С первого захода «Клод» нашёл много всего, но бо́льшая часть — вполне обычные возможности, присутствующие в документации. Засучил рукава, порылся в найденном. Кроме мусора там нашлось и полезное — ключ и функцию random() он нашёл, но про символ & не упомянул.

Пришлось подтолкнуть — поместить в контекст нужный файл (bc.y) и спросить нет чего-то недокументированного в нём. Со второго раза «Клод» обнаружил искомое, правда, и в этот раз добавил в список много пунктов не по делу.

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

Какой вывод?

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

Сколько весит локомотив?

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

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

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

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

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

Озвучка пылесоса

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

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

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

Вешало

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

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

Оказывается, вешало — это напольная стойка с перекладиной, на которую вешают одежду. Эта штука не вешалка, а именно вешало, отдельное слово есть.

Чтобы не подбирать бесплатные картинки, попросил ЧатГПТ нарисовать мне иллюстрацию. Нарисовал кривенько, но для понимания достаточно.

«Фейк»

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

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

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

Цитируется рассказ «Фейк» из сборника «Выход к морю» Ильи Суслова, издательство «Эрмитаж», Мичиган, 1982 год

Текст в PDF

Попалась задача — преобразовать огромный (полтора миллиона строк) тестовый файл в кодировке UTF-8 в PDF. Не ожидал с ней каких-то сложностей, но оказалось, что это не так-то просто.

Проблемы две — объём текста и кодировка. Графические утилиты на таком объёме умирают, а с кодировкой UTF, как оказалось, работают далеко не все утилиты командной строки.

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

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

paps --footer --footer-center={page_idx} <(printf \\f;cat listing.txt) -o listing.pdf

Небольшое примечание: при помощи printf я вставляю текстовый символ разрыва страницы (\f), чтобы первая страница оказалась пустой.

Ранее Ctrl + ↓