Как им не холодно?
Может у меня искажённое восприятие, потому что я привык закрывать горло на любом холоде
Я понимаю когда в фильмах актёры зимой в кадре ходят без шапок, чтобы повысить свою узнаваемость и шикануть причёской, но тут вовсе не тот случай. Ведь рисованному персонажу не нужно следить за своим профессиональным брендом, да и главный герой в этом же кадре стоит с замотанным горлом.
Может в Японии зимы просто теплее — другая влажность, нет ветра?
Сериал «Слово пацана»
Глупо отрицать, что кино на нас очень влияет. Будь это не так, мы бы не приравнивали актёров к ролям, которые они сыграли (попробуйте в голове описать нескольких актёров и подумайте откуда взялось это описание), да и рекламные ролики не работали бы.
Так же глупо отрицать, что кино не всегда в достаточной мере удаётся донести до зрителя мысли, которые заложил туда его создатель. Это, безусловно, общее явление и проблема «а что хотел сказать автор» уже давно не стоит, мы сейчас чаще руководствуемся мыслью «а что я вынес из этого произведения».
У меня несколько раз спрашивали смотрел или собираюсь ли я смотреть сериал «Слово пацана». Видимо
Сериал я не смотрел и смотреть не собираюсь, я этого кино достаточно насмотрелся в подворотнях в девяностые, но осуждаю. Очень крепко осуждаю.
У нас его в офисе много обсуждают, поэтому я знаю, что авторы пытались показать как плохо закончили главные герои. Но этот посыл, по всей видимости, очень плохо читается. Потому что в лагерь, в котором увидели в этом сериале «романтику улиц», «красивых мальчиков» и «братского брата за брата», вступило гораздо больше людей.
Я такое очень не люблю и плохо отношусь к романтизации «тюремной романтики». Это явление, по моему глубокому убеждению, плохо сказывается на обстановке в стране.
В своей жизни я нередко сталкивался с людьми, которые искренне считают, что можно творить что угодно, главное не попасться. Руководствуются они при этом, разумеется,
Лет двадцать назад один такой деятель всё пытался приехать ко мне со своей «братвой» «поговорить» и искренне не понимал почему я обещаю его встретить с милицией (тогда её ещё не переименовали), ведь «по понятиям» это «западло».
Я не знаю с чего он решил, что ему со своей братвой можно, а мне — нельзя. Он там связан деньгами
В общем, Казань уже и так «прославилась» глаголом «набутыливать», а теперь к этом несчастью прибавилось ещё и «Слово пацана».
Одним словом, есть много причин по которым я плохо отношусь с этому сериалу и хотел бы, чтобы его не было.
UTF-8 в elements_scrollable_text_line и elements_string_fit_width
Решил ковать железо, пока горячо — раз дали шанс, постараюсь довести поддержку
Тем не менее, поначалу я всё равно приуныл, — там вполне есть где накосячить, значит результат надо тестировать. У «Флиппера» нет эмулятора, получается надо компилировать прошивку, потом заливать её в устройство, делать примеры и уже на них смотреть что пошло не так. Долго и трудоёмко.
Поэтому я пошёл другим путём — выковырял из прошивки функции, которые надо изменить, а с ними и все их зависимости, заменив вывод на экран печатью имени и параметров вызываемых функций.
Идея простая — параметры и списки вызова функций должны совпадать до и после моих изменений. Этого, кстати, в полном объёме добиться не удалось — я быстро нашёл в каждой из трёх функций по ошибке, так что сравнивать пришлось две исправленные версии.
Работу я разбил на два этапа — пока закоммитил только функции elements_scrollable_text_line и elements_string_fit_width. Функцию elements_text_box перепишу попозже, она объёмная, если найдутся замечания по ревью текущего коммита, добью сначала их, так проще.
Чаты соседей: от квартирного беспорядка к духовному покою
Я живу в многоквартирном доме и, как во многих многоквартирных домах, у нас есть чат, где переписываются соседи. Даже не один — есть чат дома, двора (у нас закрытый двор на два дома), жилищного комплекса и ещё несколько профильных чатов, например — чат собачников.
Никак не могу понять почему некоторые люди, спрашивая
Например, «что с лифтом?» в чате дома. В каком подъезде? Я на работе, мне начать создавать заявку в управляющую компанию для массовости или это соседний подъезд? Бывает ещё хлеще —
Возможно логика тут в том, что вопрос адресуется тем, кто знает про плафон или лифт, а остальных это касаться не должно. Но меня касается — вдруг это в моём подъезде или на моём этаже?
В итоге, я автоматически раздражаюсь на чувство
Заниматься перевоспитанием я не хочу, да и таких людей очень много, всех не изменишь, гасить свои реакции — тоже, так начнёшь забивать и на те вещи, которые меня касаются.
Постскриптум: у меня не получалось быстро придумать заголовок для этой заметки, поэтому я попросил нейросеть.
Работа над Юникодом во «Флиппере Зеро»
Вот что значит живой, развивающийся проект. Стоило закоммитить в репозиторий «Флиппера Зеро» своё второе предложение по улучшению поддержки Юникода во «Флиппере», почти сразу его рассмотрели и дали обратную связь. Так далеко не всегда бывает.
Похоже зря я опасался, что поддержка Юникода никому не нужна, пока всё идёт очень гладко. Одно одобрение коммита из необходимых трёх я получил, но мне напомнили, что работа ещё не окончена.
Я это понял и сам, но, честно сказать, всего за несколько минут до того как получил сообщение от ревьювера. Мои правки пока касались только вывода текста, тогда как во «Флиппере» поверх него работает АПИ, позволяющее выводить ещё и различные элементы интерфейса — окошки, кнопки и тому подобное.
Весь список публичных функций, потенциально нуждающихся в исправлении, можно легко получить:
< targets/f7/api_symbols.csv awk -F, '$3~/^elements_/&&/char|String/{print$3}'
elements_bubble_str
elements_button_center
elements_button_left
elements_button_right
elements_multiline_text
elements_multiline_text_aligned
elements_multiline_text_framed
elements_progress_bar_with_text
elements_scrollable_text_line
elements_string_fit_width
elements_text_boxДо этого всё решалось заменой функций нижележащего фреймворка, тут же проблемы чуть посложнее — функции перебирают строки побайтово, а мне надо их переделать на посимвольный перебор.
Не везде, кстати, побайтовый перебор является проблемой. В первой же функции по списку всё будет работать нормально и без правок:
uint8_t lines = 1;
const char* t = text;
while(*t != '\0') {
if(*t == '\n') {
lines++;
uint16_t temp_width = canvas_string_width(canvas, t + 1);
str_width = temp_width > str_width ? temp_width : str_width;
}
t++;
}Тут идёт подсчёт количества строк и вычисление их максимальной ширины. Для этого функция разбивает последовательность байтов по символу перевода строки — \n. Это работает, так как кодировка
В других же случаях
Ева — синестет?
Дочка вчера знатно удивила. Ехали в машине, разговаривали. В один момент она спросила почему Казань и Россия такие похожие слова. Я её сначала не понял, так как для меня они очень разные и по смыслу, и по звучанию. Оказалось, что они для неё похожи, так как оба «ассоциируются с синим цветом».
Начал спрашивать про другие слова, которые пришли в голову. Сначала продолжил ряд с городами. Москва — красная, Лениногорск — зелёный. Потом решил попробовать разные другие слова, все я не запомнил, только два. «Шарик» — белый, «любовь» — розовая.
Я подумал, что у неё
Вышла прошивка с моим изменением…
Недавно в прошивку «Флиппера Зеро» приняли мой коммит немного исправляющий ситуацию с поддержкой Юникода. Это был пробный камень, я не особо надеялся на успех, скорее ожидал, что завяжется
Но патч приняли без разговоров, а теперь ещё и релиз вышел. Надо бы продолжать работу, если я хочу, чтобы во «Флиппере» появилась полная поддержка Юникода.
При этом время поджимает — разработчики готовят прошивку к выпуску версии 1.0, что по традиции означает, что время экспериментов и изменений, могущих сломать обратную совместимость, заканчивается. Так что мне бы поспешить.
Добавлено: написанием этого поста удалось себя переломить. Сделал нужный коммит, жду реакции.
Болевой порог
Боль — вода, чем выше порог, там больше надо воды, чтобы она начала переливаться через него.
Про предсказание Куприна в «Молохе»
После того как я процитировал «Молоха» Куприна, отрывок, где он пророчески пишет о появлении видеосвязи, один из читателей заинтересовался тем когда Куприн сделал это своё предсказание.
Я, было, хотел ответить, как везде написано, — в 1896 году, когда его повесть впервые была напечатана в журнале «Русское богатство»,
Оказывается у Куприна два варианта этой повести — в 1903 году в сборнике рассказов была напечатана вторая версия, содержащая существенные изменения. Я предположил, что пророчество появилось в нём, но хотелось проверить.
Как назло, нужной книги не оказалось в открытом доступе. Так как я всё равно заинтересовался Куприным, решил купить себе экземпляр у антикваров — и факты проверить, и прочитать ещё
Как и ожидалось, искомая строчка нашлась в версии 1903 года. Было бы эпично, если бы её и тут не оказалось!
Для чего обычному человеку Flipper Zero?
Меня просили рассказать немного про «Флиппер Зеро», а именно раскрыть вопрос — для чего это устройство может пригодиться обычному человеку?
Не буду тянуть кота за резину в долгий ящик, сразу к сути. На мой взгляд, пригодиться может только для одного: как ключница для электронных ключей. Тех самых, которыми мы открываем гараж, подъезд, двери в офисе.
«Флиппер» у меня чаще всего лежит на дне городского рюкзака, то есть он почти всегда со мной и, если не считать моё увлечение программированием под него, именно в качестве связки ключей я его и использую.
Туда я запихал всё что можно, начав со своих собственных ключей. Теперь потихоньку собираю ключи от разных других мест, где я иногда бываю. Благо, «Флиппер» умеет дампить всё, что мне нужно — «таблетки», карточки и даже радиосигнал брелка от гаража (у которого скользящий код).
Если хранить свои собственные ключи малополезно («Флиппер» толстенький и занимает больше места, чем любые ключи), то сохранённые чужие иногда выручают.
Например, я сохранил себе карточку детского центра
Другой пример, — в массажном кабинете (у меня проблемы с позвоночником после спортивной гимнастики), куда я давно хожу, сломался домофон, теперь я могу сам открыть дверь, не нужно на морозе ждать когда ко мне выйдут.
Сдампить удаётся не всё. Недавно я в отеле около Свияжска наткнулся на карточку, которую «Флиппер» успешно записал себе, но при её эмуляции замок не открывался. Не знаю с чем это связано, разбираться не стал.
Ещё «Флиппер» в теории умеет перебирать коды и «взламывать» таким образом подъездные двери и коды шлагбаумов, но на практике мне ни разу не удалось добиться результата — я несколько раз попробовал из интереса. Но глубоко я эту тему не копал, вероятно есть
Галлюцинации нейросетей
С «галлюцинациями» нейросетей сталкивался каждый, кто хоть раз использовал языковые модели. Слово удачное, уже даже используется как официальный термин. Галлюцинациями называются ситуации, когда нейросеть в ответ на запрос выдаёт
Понятно почему так получается — статистический попугай, умеющий облекать свою статистику в человеческую речь и не обязан придерживаться фактов. Если
Ожидается, что в скором времени нас захлестнёт потоком контента, генерируемого при помощи нейросетей. К сожалению, мусора в интернете станет ещё больше, но это, кстати, происходит и само по себе.
Увы, но краткосрочная эпоха авторского контента безвозвратно ушла в небольшие клубы по интересам, которые в потоке информационной
Мусор мусору рознь, я проблему вижу не сколько в увеличении потока «желтизны» и прочего вымоченного в уксусе вторсырья, а скорее в массовом появлении контента, изобилующего галлюцинациями нейросетей. С учётом того, что люди, в основном, воспринимают информацию некритически, как мне кажется, стоит ожидать невиданной коррозии общей эрудиции у общества в целом.
Вот один из встреченных мной примеров, пока довольно безобидный:
Поначалу фильм напоминает «Моего соседа Тоторо» — трогательную историю о детях, покинувших город и познающих природу. С поправкой на настроение. Если смерть мамы Сацуки и Мэй была шокирующим ударом ближе к финалу в остальном доброй детской истории, то Мохито теряет близкого уже в начале фильма — и это задаёт повествованию меланхоличный тон.
В фильме «Мой сосед Тоторо» с мамой Сацуки и Мэй всё в порядке, она выздоравливает, о смерти там нет ни слова. Думаю автор статьи пользовался услугами нейросети, а этот пассаж просто пропустил и не вычесал при редактуре.
У меня есть и более острые примеры, но цитировать я не стану, там такое, что того и гляди заденешь
То ли ещё будет, когда эти галлюцинации просочатся в инструкции, договоры и учебники.
Brainfuck и Новый год
Сегодня мы пришли на работу в украшенный к Новому году офис. Было очень много всего крутого, но особенно меня порадовала небольшая программа на языке «Браинфак», появившаяся на одной из стен. Я много писал об этом языке и до сих пор горячо его люблю, как забавную головоломку.
CP1251 во «Флиппере Зеро»
— Прощай, Фариа. Дни, проведённые с тобой, я запомню, как самые счастливые дни моей жизни. Но и я больше не жилец, потому что отсюда выходят только мертвецы.
— Сын мой, если отсюда выходят только мертвецы, то превратитесь в мертвеца!
Фильм «Узник замка Иф», 1988
С тех пор как я научился выводить во «Флиппере Зеро» русские буквы и написал игру «Виселица», мне всё не нравилось, что найденный способ не даёт возможности воспользоваться всем тем, что даёт фреймворк устройства — выравниванием, окнами и прочим.
К сожалению, всё АПИ так устроено, что на вход можно подавать только char, то есть только те символы, коды которых помещаются в байт, в данном случае.
Когда я научился манипулировать шрифтами, которые использует «Флиппер», мне пришло в голову, что если всё, что у нас есть должно поместиться в байт, то почему бы не сделать шрифт в однобайтной кодировке?
Я, конечно, не сомневался, что это заработает, но попробовать не помешало. Много времени не заняло. Взял русский пиксельный шрифт, преобразовал его в формат BDF утилитой otf2bdf, сдвинул русские буквы на их места в кодировке CP1251 и проверил работает ли это на самом деле.
Основной код выглядит следующим образом:
canvas_clear(canvas);
canvas_set_color(canvas, ColorBlack);
canvas_set_custom_u8g2_font(canvas, silkscr_rus);
char* str = recode_to_cp1251("ВЫВОД РУССКОГО ЯЗЫКА В КОМПОНЕНТ");
elements_multiline_text_aligned(canvas, 0, 0, AlignLeft, AlignTop, str);
free(str);Текст приходится кодировать, но это единственное неудобство. Если всё что нужно помещается в байт, то способ рабочий.
AᗺƎ
Ева пока путает как пишутся слова — слева направо или справа налево. Похоже это потому, что она одинаково хорошо их читает с любой стороны и даже кверху ногами. Скорость чтения вообще не падает, как текст ни крути. Мы сейчас с ней смотрим пиратку
Я довольно плох в чтении по буквам, обычно распознаю слово рисунком, а тут надписи отзеркалены, да ещё на английском. Ева, похоже, тоже умеет знакомые слова читать рисунком,
Вроде забавное умение, но в жизни скорее мешает — в прописях она иногда пишет слова не в ту сторону. Кстати, не припомню, чтобы у меня были такие проблемы, хотя отдельные буквы я тоже зеркалил, как и все дети.
−25°C
После тёплого ноября
Ева сегодня не пошла в школу, — младшеклассники при такой температуре не учатся. Расстроилась — школу она любит.
Бейсика жалко, — ему тоже холодно, когда гуляем, поджимает лапки и скулит. Разговаривал с более опытными собаководами насчёт собачьей обуви, все разочарованы. Говорят, лапы проскальзывают, даже в обуви с резиновой подошвой, собака мучается. Но всё равно попробую — масса собак и толщина лап разная, может сработает. Хотя бы попытаюсь решить эту проблему.
В конце следующей недели опять обещают около −10. Неслабо температура
Добавлено: МЧС обещает до минус 40 в некоторых областях республики.
BaSiX
Волею судеб попалась на глаза старая заметка, где я писал, что
То был
Нашёлся без проблем, интерпретатор называется BaSiX и реализует весьма небольшое подмножество бейсика, всего несколько команд, на котором
К сожалению, я совсем не знаю TeX, но подозреваю, что автору пришлось немало потрудиться, чтобы реализовать хотя бы то, что есть на этом языке —
Попробовал реализовать на BaSiXе вычисление значения числа «Пи» рядом Лейбница, получилось приближенное значение с небольшой ошибкой в четвёртом знаке после запятой.
00 print "Leibniz formula for PI. 2023. https://bolknote.ru"
10 let num=4000000
20 let den=1
30 let sum=0
40 let sign=1
50 if sign then let sum=sum+num/den
60 let sign=1-sign
70 if sign then let sum=sum-num/den
80 let den=den+2
90 if den<18663 then goto 50
100 print sum
runДробных чисел интерпретатор не поддерживает (и отрицательные числа, кстати, тоже), поэтому число «Пи» у меня выводится как целое: 3141699, но если поставить запятую на требуемую позицию, то будет довольно близко к 3,141592….
Ничего сложнее этого (например, «песню о пиве») написать не получится — в языке нет почти ничего для работы со строками, например у оператора print только один аргумент и тот выводится исключительно с переводом строки в конце.
Я пытался вчера вечером допилить интерпретатор при помощи ЧатаГПТ 3.5, но для кованого мешка такое слишком сложно.
Татарские символы в «Виселице»
Вчера вечером ковырял формат BDF — это формат шрифтов для «Флиппера Зеро». Как я писал была идея добавить в шрифт 6×13 татарские символы, которые там отсутствуют. BDF это текстовый формат, так что это было не слишком сложно.
Символы Ә, Ө и Ү, как и планировал, наскрёб в других шрифтах — поставил «шва», русскую «фиту» и латинскую «уай», просто скопировав пискельные данные букв и изменив метаинформацию. А вот Җ, Ң и Һ пришлось рисовать.
Я сначала понадеялся найти
Пришлось записывать пиксели единицами и нулями, переводить в десятичный вид и руками вписывать в шрифт. Неудобно, но искать подходящий редактор ради трёх букв было бы дольше.
В итоге, я оформил это в виде скрипта, который патчит шрифт, добавляя в него нужные буквы. А то мало ли — вдруг ещё
Видимо я ещё немного упрощу это место, — после внимательного чтения описания формата в голову пришли
Капча и архивы
Я работаю в компании, которая производит своё решение для электронного документооборота и много лет назад мне пришла в голову идея, относящаяся к нему, которая так и не пригодилась. Она мне до сих пор нравится, поэтому хочу ей поделиться.
Если вкратце, то кроме печатных документов в документообороте разными путями оказываются и рукописные тексты — в основном их пишут граждане, но это могут быть регистрационные или другие пометки на документах пришедших на бумаге.
Несмотря, что сейчас есть решения, сносно распознающие рукописный текст, но человек с этой задачей,
Идея было в том, чтобы показывать рукописные кусочки этих документов людям как капчу или для подтверждения
В прошлом «Гугл» и «Яндекс» уже распознавали таким образом куски печатного текста и номера домов, почему бы то же самое не сделать с рукописным текстом? Тем более у «Яндекса» есть прекрасный, очень нужный сервис «Поиск по архивам», позволяющий искать по автоматически распознанному тексту. Можно было бы улучшить качество распознанного текста за счёт капчи.
«Дар агачы»
Давно появилась идея прикрутить к моей игре «Виселица» под «Флиппер Зеро» татарский язык. Я
Вчера из Института прикладной семиотики АН РТ прислали словарь татарских существительных. Я убрал из него все русские слова (в татарском немало заимствований из русского) и попробовал поиграть.
К сожалению, возникла проблема. В игре я использую два шрифта — 6×12 с нормальным начертанием и 6×13 с жирным. Шрифты готовые, взяты из фреймворка U∞g², я их только переупаковываю, чтобы в них оказались только те буквы, которые я использую в игре.
Оказалось в шрифте 6×13 нет татарских букв! Я этот момент проморгал, думал разница только в размерах. Клавиатуру я печатаю 6×12, поэтому проблему увидел только когда стал выводить татарские слова из словаря (там единственное место, где используется 6×13).
Попробовал посмотреть какие буквы есть в шрифте, чтобы подобрать похожие. Это несложно сделать в командной строке:
awk '/^ENCODING/{print $2}' 6x13B.bdf | xargs -n1 printf '%x\n' |
while read -r line; do printf "\\u$line "; doneИз того что есть нашлись замены для Ә, Ө и Ү, а вот для Җ, Ң и Һ похожих букв не обнаружилось.
Мысли у меня пока две: либо нарисовать недостающие буквы и научиться их добавлять в шрифт, либо обнаруживать ситуацию, когда нужных букв нет в шрифте 6×13 и переключаться на 6×12. Возможно в виде быстрого исправления я выберу второй вариант, а потом попробую реализовать первый.
Чем лечишься?
Есть такие фразы, на которые всерьёз отвечать не нужно. Обычно мы их роняем, когда встречаем на улице знакомого человека, с которым не поддерживаем контакт. Если при встрече заметно, что болеешь, то можно услышать: «как дела?», «кашляешь?», «лечишься?» и прочее. Ответы ожидаются:
На одну фразу из этого набора у меня нет готового ответа: «чем лечишься?». Она ставит меня в тупик и как фраза вежливости, и если её задаёт человек искренне заботящийся о моём состоянии.
Что значит «чем»? Ответить «таблетками и порошками»? Похоже на пассивную агрессию. Перечислить названия? Так я их не помню. Сфотографировать названия заранее и показывать? Ну это я уже от отчаяния фантазирую.
Какой правильный ответ, кто знает?