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

Позднее Ctrl + ↑

Малефисента

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

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

«Malleus Maleficarum, Maleficas, & earum hæresim, ut phramea potentissima conterens», Лионское издание 1669 года

Полное его название «Malleus Maleficarum, Maleficas, & earum hæresim, ut phramea potentissima conterens», переводящееся как «Молот Ведьм, уничтожающий Ведьм и их ереси, подобно сильнейшему мечу». Сейчас я его из «Википедии» переписал, а в такси вспомнил примерно.

В тот момент я и понял, что латинское слово «maleficārum» в названии, которое означает зловредную колдунью, родственно имени «Малифисента» из диснеевской сказки «Спящая красавица».

Штурвал Бауэра

Продолжаю потихоньку описывать то, что удалось подержать в руках в музее села Куралово. На этот раз это штурвал. Он совсем небольшой, диаметр точно оценить не берусь, но что-то около 30—35 сантиметров.

Штурвал совсем хлипкий, держать его в руках было страшновато — вдруг развалится. Я это обнаружил уже после того, как взял, иначе бы оставил его в покое. На штурвале неплохо видно табличку, хотя некоторые слова едва угадываются. Погадав на буквах, я выяснил, что там написано — «Fr. W. Bauer, Steuerradsfabrik, Vegesack (Bremen)».

В 1906 году Фридрих Вильгельм Бауэр основал в районе Фегезак города Бремен столярную мастерскую. Находилась она по адресу Везерштрассе, № 8/9.

Со временем мастерская разрослась и стала единственной в Германии фабрикой по производству штурвалов и приборов управления. Со времени своего существования фабрика выпустила более ста тысяч штурвалов, в том числе для легендарных быстроходных лайнеров «Бремен» и «Европа» компании «Северогерманский Ллойд».

В 1966 году завод был заброшен.

Штурвал с полустёртым шильдиком «Fr. W. Bauer, Steuerradsfabrik, Vegesack (Bremen)»

Опять чинил PogodaStatusBar

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

Внешний вид плагина на настоящий момент

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

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

Я перебрал несколько малоизвестных сервисов, пока, наконец, не увидел, что страница yandex.ru/tune/geo/ содержит в себе необходимый номер. Этого хватило, чтобы починить показ пробок.

С «Гисметео» пришлось повозиться. Не нашёл официальную информацию о каких-либо АПИ, которые можно вызвать без токена, но внутри погодного плагина для браузера нашёлся адрес services.gismeteo.ru/inform-service/inf_chrome/forecast. В нём есть всё что нужно — текущая температура и закодированная иконка погоды.

Определить номер города в формате «Гисметео» помогает сервис www.gismeteo.ru/rmq/search/{название}/1/, куда я подставляю название, полученное от «Яндекс.Пробок» — там он возвращается вместе с остальными данными.

Оставалось только расшифровать иконку погоды. В документации есть часть описания (остаток можно понять, скачав с «Гисметео» значки погоды), выглядит всё несложно. Например, d.r3 означает «день» (day) и «дождь максимальной интенсивности» (rain 3).

Поскольку у меня Юникод, в нём есть не все необходимые значки, я сделал вот такой объект, содержащий признаки, которые позволяют мне выбрать какую иконку показать:

_icons = {
    "🌞": {"d"}, # day
    "🌙": {"n"}, # nite
    "☁️": {"n", "c"}, # night, cloud
    "🌧": {"rs", "c", "r"}, # rain+snow, cloud, rain
    "🌤": {"d", "c"}, # day, cloud
    "🌦": {"d", "r"}, # day, rain
    "🌩️": {"c", "st"}, # #day, storm
    "⛈️": {"c", "st", "r"}, # cloud, storm, rain
    "🌨": {"c", "s"}, # cloud, storm
    "💨": {"mist"}, # mist
    "⚡️": {"st"}, # storm
}

И вот такой простой алгоритм для выбора иконки:

def _getStatus(self, coded_weather):
    codes = {x.strip("0123456789") for x in coded_weather.split(".")}

    max_icon = None
    max_score = 0

    for icon, code in self._icons.items():
        result = codes & code
        score = sum(len(x) for x in result)
        if score > max_score:
            max_icon, max_score = icon, score

    return max_icon

Идея простая — чем больше значков совпало, тем лучше; если совпал значок с более длинным названием (st, mist), считаем его более конкретным и важным.

Мистер Среда

Иногда смотришь на некоторых людей и думаешь, что их сознание напоминает сказку «Двенадцать месяцев» — в голове у них лес, зима и костёр. Перед костром сидят мистер Понедельник, Вторник, Среда, Четверг и Пятница.

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

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

Открытка «Двенадцать месяцев», рисунок Г. О. Валька, 1956 год

«От слова совсем»

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

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

Розетка для тревожных людей

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

«Простая песенка»

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

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

«Простая песенка», пластинка фабрики «Канцкультизделий» Ташгорисполкома (УзССР)

Фонтан Лениногорска

Наконец-то в этот раз дошли до фонтана в Лениногорске. Очень хотелось его повидать — последний раз вживую я его видел в 90-е должно быть.

Помню о нём две вещи.

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

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

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

Посещал ли пользователь сайт?

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

В прошлом было достаточно много методов определить ходил ли пользовать на какой-то сайт или нет. В основном, идея была проста: у себя на сайте через CSS каким-то способом выделяем посещённые (:visited) ссылки — например, делаем таким ссылкам шрифт больше, а потом через ДжаваСкрипт смотрим у каких ссылок ширина стала больше расчётной.

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

Но недавно меня осенило, что есть способ обойти эту защиту!

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

Я попробовал сделать это с «Гитхабом». Самый большой файл, который загружается там с первой страницей — vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_primer_octicons-react_di-b40d97-9b98c5140e22.js. Занимает он 136 килобайт, вполне подходящий размер.

Как же определить момент когда он загрузится? Если посмотреть внутрь, видно, что он после скачивания создаёт свойство webpackChunk в объекте globalThis. Если перехватить обращение к этому свойству, можно понять, что файл загружен:

const t = new Date();
Object.defineProperty(globalThis, 'webpackChunk', {
  set: function() {
    console.log(new Date() - t);
  }
});

Ниже этого кода подключаем загрузку указанного файла прямо с «Гитхаба» через тег <script> и дело в шляпе.

Я проверил, если очистить кеш браузера, то файл у меня загружается примерно за 100—400 миллисекунд, если берётся из кеша — это 0—12. Легко отличить одно от другого.

«Х» против «Л»

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

Я взял базу татарстанского документооборота (всё-таки в Татарстане набор фамилий отличается от центральной России) и посмотрел сколько раз встречаются эти буквы на второй позиции. В базе полторы тысячи человек, довольно репрезентативная выборка.

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

Но позже, когда пошёл на обед, я понял, что задачу решил неправильно. Зачем смотреть только на вторую букву? Вторая буква нам интересна только в контексте. В общем, пересчитал. Встречаемость «АЛ» в Татарстане — 11534, «АХ» — 14153, таким образом, версия имеет право на существование.

Стилобат

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

Тачскрин на Линуксе

Два последних дня ковырял по работе планшет фирмы «Дигма» — это китайское го… годное вполне за свои деньги изделие поставляется с ОС «Виндоуз». А наша задача была показать на нём один из отечественных дистрибутивов Линукса.

Линукс встал довольно легко, но вот проблема — прикосновения к экрану не давали никакого эффекта. Вот этим я героически два дня и боролся.

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

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

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

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

Для этого в Линуксе задаётся трансформационная матрица («Coordinate Transformation Matrix»), на которую умножаются абсолютные координаты, в которых датчик экрана уловил нажатие. С её помощью можно сдвигать координаты, сжимать их и растягивать, а так же поворачивать на 90°, если датчик стоит так, что у него перепутаны оси — это вполне стандартная математика, которую многие могут помнить по школе.

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

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

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

В пятницу в Лениногорск

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

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

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

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

Обратно, думаю, поедем вечером субботы, чтобы был один день перевести дух перед работой.

Узнаваемые края — вокруг Лениногорска часто встречаются нефтекачалки

Нивелировка 1890 года

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

Репер один в один как на здании одной из кафедр Казанского Федерального Университета, только покрашен иначе.

Репер в стене здания казанской мэрии по адресу Кремлёвская, д. 1

Толщина колокола

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

Ранее Ctrl + ↓