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

Избранное

Позднее Ctrl + ↑

1 + 1 = 1

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

Получилась уникальная ситуация, которой мы с женой решили воспользоваться. Появилась мысль продать две квартиры — пустующую однушку и ту квартиру, в которой сейчас живём, чтобы купить жильё побольше в районе получше. Выбрали ипотеку с государственной поддержкой 0,01/6,5% — то есть первый год одна сотая процента, потом — 6,5.

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

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

При этом весь год мы платим ипотеку под 0,01%, которую надеемся закрыть после продажи второй квартиры, лишь немного «въехав» в 6,5% — сдача нашей новостройки только летом, а потом ещё отделку делать и покупателей искать.

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

Кнопка отключения рвотного рефлекса

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

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

Расположение кнопки отключения рвотного рефлекса на руке

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

Надо сильно (до боли) сдавить какую-то жилку, которая катается в перепонке между большим и указательным пальцем и подержать несколько секунд. Её примерное расположение я указал на фото.

Осечек пока не было.

Три месяца с Huawei (лонгрид)

TL;DR: всё круто, мне нравится

Три месяца назад я решил сменить марку смартфона (и часов) с «Самсунга», которому был верен несколько лет, на опальный нынче «Хуавэй». Думаю, пора поделиться кое-какими впечатлениями.

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

Часы живут больше недели на одной зарядке

Сначала про часы. Я купил «Watch GT 2» — это последнее, что есть сейчас у «Хуавэя» из этого класса устройств. В отличие от «Самсунга» (у меня были «Gear S3 Frontier»), это не смарт-часы, то есть в них нельзя устанавливать приложения. Не знаю минус ли это, так как на все смарт-часы, которые у меня были, я так ничего путного и не установил.

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

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

Наушники всем хороши, но мне особо не с чем сравнить

Теперь наушники. У меня, опять же, последняя модель — «FreeBuds 3». Мне не с чем сравнить, это мои первые беспроводные наушники-вкладыши с чехлом-зарядкой, таких у меня ещё не было. Звук достойный, хотя мне не хватает хороших басов, честно сказать, я не уверен бывают ли вообще «вкладыши» с нормальными басами.

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

Не хватает «Гугла», но это поправимо, долго держит заряд, крутая камера

Теперь, самое главное — смартфон. У меня «P40 Pro+», как вы наверное уже догадались, самое лучшее, что было у «Хуавэя» на момент покупки, и тут самый спорный опыт.

Начну с минусов.

Во-первых, нет сервисов «Гугла». Из всех только без двух по-настоящему тяжко: без магазина приложений и программы для платежей. В собственном магазине приложений «Хуавэя» шаром покати. Для примера, когда я просил совета что поставить на хуавэевский планшет дочки, в местном магазине (если взять список из всего, что посоветовали в комментариях и соцсетях) нашлось только одно (sic!) наименование.

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

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

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

Теперь плюсы.

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

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

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

Планшет появился недавно, пока без выводов

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

Расшифровка печати

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

Судя по прочитанному, печать принадлежала контролёру кантфинотдела Cпасского кантона. Правда прочтение «СПАССКОГО» спорное, буквы там почти не читаются, но об этом дальше.

РСФСР; Татарск… банка; Контролёр Спасского Кантфинотдела; 1922—27 гг.

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

Как бы то ни было, в момент своего создания в 1920 году, советский Татарстан делился на десять кантонов: Арский, Бугульминский, Буинский, Лаишевский, Мамадышский, Мензелинский, Свияжский, Спасский, Тетюшский и Чистопольский. На следующий год к ним добавились Агрызский, Елабужский и Челнинский. В последующие года кантоны упраздняли и делили на районы, пока 23 июля 1930 от такого деления не отказались вовсе.

Теперь вернёмся к прочтению прилагательного между словами «КОНТРОЛЕР» и «КАНТФИНОТДЕЛА». Крайние слова читаются достаточно уверенно, в середине видно только «…ОГО» и ещё шесть каких-то букв. Заметим так же, что в надписи по-татарски (арабской вязью) в этом месте есть слово «Апас», — какое-то название.

Город Спасск, он же Спасск-Татарский, он же Куйбышев, он же (если верить «Википедии») Великий Булгар, до затопления

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

Далее логика такая, — раз мы имеем дело с кантфинотделом, скорее всего нужное нам слово следует искать среди названий кантонов. По количеству букв подходят только два — «СПАССКОГО» и «БУИНСКОГО». Центром первого был затопленный ныне город Спасск, центром второго — Буинск.

Буинск не подходит по двум причинам. Во-первых, по месту обнаружения находки, во-вторых, Буинск по-татарски называется «Буа», а не «Апас». Из-за схожести звучания, можно предположить, что «Апас» — татарское название Спасска, но нагуглить какое-то подтверждение мне не удалось.

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

Кинопроектор инженера Гарина

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

Киноаппарат, стоящий в углу ресторана «Максимилианс», что в Казани

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

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

Кадр из фильма «Гиперболоид инженера Гарина» (1965): Евстигнеев, игравший Гарина, нацеливает свой «гиперболоид»

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

Правда на то, что стоит в ресторане не похоже даже отдалённо. А жаль.

Бип-бип

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

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

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

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

Но оказывается (и это я узнал из детской книжки), у них была и практическая роль — с их помощью изучали верхние слои ионосферы. Причём сигнал был не один, передача шла на двух разных частотах — 20,005 и 40,002 МГц, один сигнал подавался в паузах второго.

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

И чуть не забыл. Вот вам астрономическая загадка от моей четырёхлетней дочери: «сколько звёзд видно на небе утром?».

Кто по национальности Аладдин?

Прошлая тема про национальность Ленина неплохо всем зашла и даже в подкаст попала, попробую повторить успех.

В моём советском детстве по телевизору часто крутили фильм «Волшебная лампа Аладдина» 1966 года, многие его помнят по фразе «в Багдаде всё спокойно!», которая потом стала крылатой. Не уверен, что в нём называлась национальность Аладдина, но было вполне очевидно, что это что-то арабско-персидское, из тех краёв.

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

Иллюстрация из книги «Story of Aladdin and The Wonderful Lamp», Charles E. Graham & Co., New York, начало 20-го века

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

Где он взял «Аладдина» — дело тёмное, сам он в своих дневниках пояснял, что услышал эту сказку от некого маронитского учёного по имени Ханна Диаб, привезённого в Париж из сирийского города Алеппо прославленным путешественником по странам Востока Полом Лукасом. Но эта версия, вроде как, противоречит некоторым фактам.

«Les mille et une nuits», Montreal: Beauchemin, дата издания неизвестна, стр. 274

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

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

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

«Магический шар»

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

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

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

Использование его в те годы могло бы выглядеть как-то так:

<A HREF=/cgi-bin/action.pl><IMG SRC=/i/pict.gif WIDTH=200 HEIGHT=100 ISMAP></A>

Чтобы вы прочувствовали дух времени, специально пишу большими буквами (так было принято) и без кавычек (экономили и на этом тоже).

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

«Магический шар» из прекрасного фильма «Трасса 60»; с отрисовкой деталей я не стал заморачиваться

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

И вот два года назад меня осенило использовать его в вёрстке «магического шара» из фильма «Трасса 60». Если не смотрели, там у главного героя был шар, который давал ответы на заданные вопросы, если его потрясти.

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

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

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

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

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

JUnix

Вкратце: выложил на гитхаб свой старый проект «эмулятора» Линукса, который я писал в 90-е и начале 2000-х

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

Мне тогда этот язык невероятно нравился, я был в бешеном восторге и такое вот несерьёзное к нему отношение меня очень задевало. Как-то я фантазировал на тему того, что можно было бы такого интересного сделать в браузере, чтобы показать значимость ДжаваСкрипта, и как-то мало-помалу в голову пришла идея запрограммировать эмулятор «Линукса» — я как раз активно изучал эту ОС в те годы.

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

Старый, пыльный JUnix в современном браузере. Пришлось немного повозиться, чтобы запустить

Конечно настоящий эмулятор у меня не получился, да я и не пытался его создать, получилась имитация командной строки «Линукса» на том уровне знаний, который у меня был в те годы.

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

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

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

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

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

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

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

Кстати, если вам нравится в таком копаться, можете посмотреть сколько костылей в то время приходилось городить и как беден был раньше этот ДжаваСкрипт.

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

Репозиторий проекта: https://github.com/bolknote/junix.
Сайт проекта, где можно посмотреть всё в действии: https://bolknote.github.io/junix.

День Радио

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

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

Отладочный режим получившегося «Морского боя», в обычном режиме видно только мигание светодиода

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

В итоге, для этого я выбрал «Морской бой». В моём варианте игрок вводит информацию клавишей левого «Шифта», а компьютер отвечает, мигая светодиодом кнопки «Капс Лок». Чуть более подробные правила есть в репозитории проекта.

Обёртка и некоторые функции (мигание светодиодом, опрос «Шифта» и функция задержки) написаны на Си, остальная часть — на языке «Лу́а» (Lua). Давно хотелось изучить этот странноватый язык поглубже, а тут ещё удалось поучиться встраивать его в Си.

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

Диграфы в Си немного запутывают и вносят в код толику безумия

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

Для тех безумцев, которые захотят попробовать скопмилировать этот вариант «Морского боя» и сыграть, ещё раз привожу репозиторий проекта (только под «МакОСь») — https://github.com/bolknote/battleship.

Ранее Ctrl + ↓