«Электричка»

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

9 комментариев

Пилю «Виселицу»

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

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

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

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

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

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

Скриншот терминала с кодом russian.bolk, содержащим числа, шестнадцатеричные значения и сообщения «Окей», «Вы выиграли!», «Вы проиграли!
Файл описания языка, пример для русского

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

Если открыть словарь для английского языка обычным текстовым редактором, то внутри будет текст, с русским такой номер не пройдёт. Объясню почему.

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

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

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

В-третьих, почти в два раза сократил файл словаря. Любая русская буква занимает в распространённых юникодных кодировках два байта, но второй байт всегда одинаковый, его можно выкинуть. Если посмотреть на ряд, описывающий клавиши в моём файле, видно, что первая четвёрка всё время повторяется. То есть из кода русской буквы А — 0x0410 можно убрать 0x04 и оставить только 0x10, мы и так будем знать какую букву кодировать.

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

Надеюсь сегодня допишу всё что нужно и выложу новый вариант.

3 комментария

Тыквенный кальян

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

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

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

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

2 комментария

Анафема за кофе

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

Открытая старинная рукопись с церковнославянским текстом, красными заглавными буквами и миниатюрой креста на левой странице; видны фрагменты «Книги Иова» и описания седмиц.
Сборник выписей и сказаний, старообрядческий, XVIII в

В переводе на современный язык текст выглядит так:

Книга Иоанна Зонара, глава 16, лист 70. Ещё кто посмеет пить чай, тот отлучается от самого Бога и будет тоже предан анафеме, а ещё тот, кто посмеет пить кофе, в том будет коварство и лукавство, в сердце того не будет Бога и он будет предан анафеме десятикратно.

Кстати, тут, кажется, есть игра слов «кофъ» («кофе») и «ковъ» («коварство»), но возможно я что-то не так понял.

Оставить комментарий

CFR[]

Прикольную штуку увидел на «Хабре» — минималистичный язык CFR[] для рисования картинок. Тамошнему народу не очень-то понравилось, а я люблю такое.

Синтаксис односимволный, C — циклическая смена цвета (доступно семь цветов), F — рисование со сдвигом по текущему направлению, R — смена направления на 45° по часовой стрелке и пара [ ], которая один раз повторяет вложенные инструкции.

Сетка 5x16 с синими и белыми ячейками, образующими вертикальные полосы и отдельные блоки на чёрном фоне.
RR[FCCF[CCC]]FFCCF[CCC][FCCFF[CCC]]FF[FRR]CCF[CCC][FCCFF[CCC]]FCCFF[CCC][FCCF[CCC]][F[RRR]][FFCCF[CCC]][FCCFF[CCC]]FCCF[CCC][FRR]CCF[CCC][FCCFF[CCC]]FCCFF[CCC][FCCF[CCC]][F[RRR]]CCF[CCC]FCCF[[CCC]FFCCF][CCC]FFCCF[CCC]FFF

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

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

Оставить комментарий

«Кибердеревня»

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

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

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

Мужчина в свитере с надписью «ПЛАНЕТИА 2080» и бинарным кодом «10000001101», делает селфи в зеркало, держа смартфон.
Свитер, который носит Робогозин в сериале «Кибердеревня»

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

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

Оставить комментарий

Про кости и скелеты

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

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

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

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

А вы боитесь костей и скелетов? Это иррациональный страх или вы можете проследить какие-то его корни?

6 комментариев

Капитан Крюк

Закончили на днях читать книжку про Питера Пена и дочка решила нарисовать в 3Д крюк по мотивам. Если кто не читал или не помнит, в книжке есть капитан пиратов, у которого крюк вместо одной руки. В детстве это интригует, как я понимаю.

Интересно как быстро, в общем-то, она научилась собирать нужное из доступных в палитре примитивов. Села, раз-раз, уже готова модель для печати. Тут в качестве основы буквы «J» и «V», параллелепипед и молния, прикреплённая на конец крюка для остроты.

Бежевая 3D-печатная деталь U-образной формы на серой платформе Bambu Engineering Plate с инструкцией по очистке.
Капитан Крюк остался бы доволен скоростью изготовления

Оставить комментарий

Сжатие инструкций для CFR[]

Выложил свою программу для перевода растра в инструкции для интерпретатора CFR[]. Написана, к слову, на «Гоу». Что-то давно я не программировал на этом языке, вот и решил смазать свежим опытом уже начавшие ржаветь знания.

Самая интересная часть там — про оптимизацию. Из-за наличия цикла для однократного повторения, в который можно что-то вкладывать, программу можно писать сильно по-разному. Можно прямолинейно — FFFFFFFFFFFFFF, а можно упаковать в цикл — [F[FFF]], станет чуть короче.

Пиксельный зелёный персонаж с красным ртом и синим воротником на чёрном фоне.
RR[CF][FF][CCC]CF[F[RRR]]FCC[FF]F[FRR]FFCC[FF][CC][F[RRR]]CC[FF]FF[FRR]F[CC][CF][CCC]CF[FC]C[F[RRR]][FF]FF[CCC][FRR][FCCFF[CCC]][F[RRR]][FF]FF[FRR][FF]FFF

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

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

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

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

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

Оставить комментарий

«Виселица» в каталоге программ

Нашу с дочкой игру для «Флиппера Зеро» «Виселица» включили сегодня в каталог программ для этого устройства. А ещё она есть в одной из альтернативных прошивок — от разработчика с ником RogueMaster!

Кстати, я думаю, что Ева является самым молодым соавтором игры для «Флиппера» в мире.

Скриншот страницы коммитов в Git: заголовок «Commits», ветка main, дата 7 ноября 2023, коммит «Hangman game (#174)» от bolknote 4 часа назад, статус Verified, хеш de3ef60.
Сегодня приняли нашу с дочкой игру в каталог программ «Флиппера Зеро»

2 комментария

Сломал себе график

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

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

2 комментария

Тестирование на пользователях

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

Считается, что а) это плохо, б) это присуще исключительно айти.

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

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

История строительства: перед открытием цирк проверили на прочность, собрав 2,5 тыс. солдат внутренних войск в ночь с 4 на 5 ноября 1967 года — конструкция выдержала.
Тестирование зрительских мест казанского цирка солдатиками

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

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

8 комментариев

Доктор Чимс и Мистер Доге

Какая-то удивительная штука у меня с организмом происходит. По крайней мере для меня удивительная.

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

При этом, в тепле и комфорте дома я как-то умудряюсь застудиться, а в походах чувствую себя превосходно. Начинаю понимать Федора Конюхова, может у него тоже так же?

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

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

Мем «Я в походе» (мускулистый дог) и «Я дома» (слабый дог): в походе — восторг от грязи и холода, дома — жалоба на +20°C, больное горло и угроза заражения.

3 комментария

Очередное бытовое использование 3д-принтера

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

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

Лучше всех подошли самые короткие. Вставил, заклеил всё суперклеем, теперь не развалится!

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

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

Интересно, когда я привыкну?

2 комментария

«Кальцифер»

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

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

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

1 комментарий

Свидетель хвойного экстракта

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

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

Зелёная коробка «Золото леса: экстракт хвойный в брикетах» (2 шт.) и один брикет в прозрачной упаковке на серой ткани; предназначены для приготовления хвойных ванн.
Хвойный экстракт, такой же как в моём детстве

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

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

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

3 комментария

Коты и зеркало

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

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

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

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

2 комментария

«Чёрная курица»

Никак не могу отделаться от мысли, что часть сюжета известной повести «Чёрная курица, или Подземные жители» 1829 года Антоний Погорельский мог подсмотреть у Видока.

Эжен-Франсуа Видок был известным человеком в своё время — один из первых частных детективов и «отец» уголовного розыска в его современном виде.

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

Обложка книги А. Погорельского «Чёрная курица» (Детгиз, 1945) с иллюстрацией битвы рыцаря и списком других книг серии.
Книга «Чёрная курица, или Подземные жители», Детгиз, Москва—Ленинград, 1945

Думаю, «Чёрную курицу» многие помнят по книге, фильму или мультфильму, а Видока мало кто читал. Вот цитата из книги «Записки Видока» 1828 года:

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

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

Интересно, искал ли кто-нибудь тут параллели?

2 комментария

«Виселица»: правлю баги

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

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

Проблема оказалось в сочетании того как я кодирую символы русских слов и следующей строки кода:

furi_string_trim(line);

Для экономии места и производительности словарь у меня хранится в кодировке UCS-2 с выкинутыми кодами 0x04, из-за чего русская буква «Р» (с кодом 0x0420) записывается как 0x20, а это код пробела.

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

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

furi_string_trim(line, "\n");

6 комментариев

Печать вольной почты

Уникальная вещь попала в руки — печать главной конторы вольных почт Казанско-Екатеринбургского тракта.

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

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

Чёрно-белая печать с текстом «ПЕЧАТЬ ГЛАВНОЙ КОНТОРЫ ВОЛЬНЫХ ПОЧТ» и надписью по кругу «С.-ПЕТЕРБУРГЪ», выполненная в стиле старого документа.
Печать главной конторы вольныхъ почтъ Казанско-екатеринбургскаго тракта (фото отзеркалено)

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

Я даже сомневался в правильности прочтения, но если поискать, такое наименование вполне себе встречается. Например оно есть в книге «Материалы по истории связи в России. XVIII — начало XX в.» 1966 года.

Контракт 1847 г. о вольных почтах Екатеринбург–Тюмень–Тобольск между Почтовым департаментом и товариществом Врангеля и Быкова с ведомостями станций.
«Материалы по истории связи в России. XVIII — начало XX в.», Ленинград, 1966

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

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

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

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

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

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

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

9 комментариев

«Яндекс.Вебмастер» ругается

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

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

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

Сообщение о нарушении безопасности на bolknote.ru: малополезный контент, реклама, спам; после исправления сигнал отправлен, ограничения снимутся через месяц.

11 комментариев

Геопозиция по вайфай-точкам

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

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

Что происходит, когда точка, до этого «светившаяся» несколько лет по некому адресу, в один момент уезжает с её хозяевами на другую квартиру? Когда координаты поменяются?

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

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

Скриншот приложения «Защита»: карта с локацией Evolution в Казани, статус «Не движется», заряд 52%, запись тренировок: 1024 шага, 9 минут активности, 36 минут солнечного света.
Моя вайфай-точка до сих пор «прописана» по старому адресу

9 комментариев

«Ahorcado»

Что-то пока мне очень нравится возиться с «Флиппером Зеро» в плане программирования. Руки так и чешутся что-нибудь поделать. В качестве развлечения решил добавить в свою игру для «Флиппера» «Виселица» поддержку испанского, всё-таки второй по распространённости язык в мире, после китайского.

Портативное устройство с оранжевым корпусом и экраном, на котором отображается меню выбора языка: English, Русский, Español.
Конечный результат — английский, русский и испанский

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

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

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

Оказалось, это совсем несложно — во фреймворке U∞g2 есть исходники тех же шрифтов, которые использует «Флиппер», и утилита bdfconv, которая умеет их пересобирать. А на специальной странице можно сгенерировать себе необходимую для сборки командную строку.

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

Оставить комментарий

Русская манга: «Чепуха» Голицына

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

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

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

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

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

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

Вот интересно — что имел ввиду Голицын, рисуя девочкам большие глаза? Может быть ту же самую метафору? Было бы интересно, если да.

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

Акварельные иллюстрации к сказке: медведь катается на коньках с девочкой, лечится у врачей-животных, спит в постели под присмотром медсестры и дарит цветы слону.
Два разворота серии рисунков «Чепуха», В. М. Голицын, 1942

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

6 комментариев

Как убедиться, что коллеги тебя слушают

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

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

— «Записки Видока, начальника Парижской тайной полиции», Эжен-Франсуа Видок, 1828 год

6 комментариев

Расширения GCC

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

Метался-метался, пока внутри исходников прошивки не наткнулся на использования расширения «операторы в выражениях» и сразу успокоился. Раз в прошивке есть, то и мне можно.

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

Братишка мне давно говорит, чтобы я не мучился со своим Си и писал на Си++, но ничего не могу с собой поделать: не люблю этот язык, просто не-люб-лю.

Оставить комментарий

Large Language Brother

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

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

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

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

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

Оставить комментарий

Поддержка Юникода во «Флиппере Зеро»

Если помните, какое-то время назад я разбирался как обстоит дело с поддержкой Юникода во «Флиппере Зеро». Если вкратце: плохо, но жить можно. Исследование этой проблемы даже подтолкнуло меня к написанию игры, в которой я мужественно поборол все трудности, связанные с ограниченностью АПИ в этом вопросе.

Видно, что авторы не подумали о поддержке Юникода, поэтому он там работает кое-как и по чистой случайности, просто потому что его поддерживает сторонний фреймворк «U∞g2», используемый для вывода на экран.

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

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

Сегодня патч приняли без лишних слов. Вот это да, не ожидал! Справедливости ради, это небольшое изменение, которое не должно ничего сломать. Теперь хорошо бы подумать как сделать так, чтобы в остальном АПИ поддержка Юникода заработала. А там, кажется, малой кровью не обойдёшься.

Скриншот GitHub-запроса #3226: пользователь bolknote предлагает добавить поддержку кодировки UCS-2 в функцию canvas_glyph_width, приводя примеры кода для кириллицы.
Внезапно мой небольшой коммит для поддержки Юникода функцией вычисления ширины символа приняли

Оставить комментарий

← сюда туда →