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

Позднее Ctrl + ↑

Надо бы добавить мой strlen во «Флиппер»

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

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

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

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

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

Шутка, которая не работает

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

Проблема тут в том, что вызов os.remove умеет удалять только файл, тогда как System32 — папка, знакомая многим пользователям Виндоуз. Я не уверен точно, но думаю, что при её удалении система будет сопротивляться. Она, вроде, как-то защищена от такого.

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

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

В Линуксе или МакОСи надо в любом месте, где будет запускаться эта программа, создать папку C:, в ней — папку Windows, а в ней — файл System32, который и удалится, если выпадет искомое число на рандомайзере.

Киргизский самовар

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

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

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

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

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

Дореволюционный самовар на дороге на Иссык-Куль, таких там несколько десятков

Песенный и разговорный языки

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

В общем, мне интересно это посмотреть, как раз потому что я ничего в этом не понимаю.

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

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

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

Какой же купить смартфон?

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

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

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

Плёнка на экране за год стала очень некрасиво отклеиваться, видимо надо менять

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

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

В общем, очень я настроился смартфон поменять. Только вот на что? Посмотрел несколько обзоров, даже вспомнил, что знаю одного из техноблогеров с канала «Дроидер» — снимали когда-то квартиру вместе, спросил и у него тоже.

Пока фаворит по всем моим хотелкам — Oppo Find X7 Ultra. Стандартный магазин приложений, бомбические камеры, глобальная гарантия на весь мир, топовое железо. Хотя до сих пор продолжаю изучать рынок, всё больше склоняюсь к покупке именно этого устройства.

Любовь и химия

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

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

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

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

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

Возвращаясь к науке.

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

Дискета на 90 мм

Некоторое время назад я прочитал в «Википедии», что дискета на 3,5 дюйма на самом деле метрическая и её ширина — 90 миллиметров, а вовсе не 88,9 как должно было бы быть. Поскольку «Википедия» источник сомнительный, я решил это проверить — нашёл дома дискету и ещё одну купил. Замерил обе линейкой. Получилось примерно 88,9 миллиметров.

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

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

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

Заодно разобрал дискету и померил сам диск. Получилось что-то около 86,5 мм. Тоже не 3,5 дюйма.

Дискета 3,5 дюйма на самом деле метрическая — 90 миллиметров

Репер 1890 года

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

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

Репер на здании кафедры астрономии и космической геодезии

Небольшой отпуск

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

Заставляю себя не думать о работе, но по инерции мысли всё равно туда скатываются. Ну хотя бы рабочие чаты удаётся не читать. А вот что не удаётся — это выспаться. Я, как уже много раз писал, — «сова», а поскольку дочку надо отправлять в школу (она ездит на школьном автобусе), вставать приходится в обычные 6:30 утра.

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

Замеры strlen_uft8 на «Флиппере Зеро»

Ну что же, я наконец сравнил свой вариант функции определения длины строки в кодировке UTF-8 с наивной реализацией и чужим быстрым вариантом.

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

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

FuriHalRtcDateTime curr_dt;
furi_hal_rtc_get_datetime(&curr_dt);
uint32_t start = furi_hal_rtc_datetime_to_timestamp(&curr_dt);

for (int i = 0; i<1000000; i++)
len += strlen_utf8("This is a test и русских букв тоже");

furi_hal_rtc_get_datetime(&curr_dt);
uint32_t stop = furi_hal_rtc_datetime_to_timestamp(&curr_dt);

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

Скриншот экрана «Флиппера», снятый через специальную программу; отображается суммарная длина и время работы — пять секунд

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

Ранее Ctrl + ↓