Евгений Степанищев

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

Книга против компьютера

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

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

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

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

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

Свил себе вчера у дочки в комнате гнездо и читал в нём книжки

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

В-четвёртых, подобрал несколько каналов на «Ютубе», которые интересно было бы смотреть всем. За выходные, когда меня тянуло обратно онлайн, мы совокупно несколько часов провели на всяким условно-познавательным контентом, типа адвоката Егорова или Фроста.

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

Спойлеры по длине

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

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

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

Я прямо сейчас отложил чтение книги «Идеальный хищник» супругов Стефани Стратди и Тома Паттерсона, чтобы написать этот текст. Это документальная книга о том как жена боролось за своего мужа, подхватившего во время путешествия по Египту супербактерию, устойчивую ко всем известным антибиотикам.

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

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

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

«Телефон»

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

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

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

Если вы тоже редко звоните, оно там лишнее. Поместите туда что-нибудь такое, чем вы пользуетесь чаще.

Экран моего смартфона — приложение «Телефон» на первом экране, но не в строке самых частых приложений

Обновление прошивки автомобиля

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

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

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

Бортовой компьютер сообщает, что доступно обновление

Конец ускоренной strlen на «Флиппере»

В итоге, эпопея с ускорением функции замера длины строки в кодировке UTF-8 на «Флиппере Зеро» подошла к концу — коммит не взяли.

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

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

Моя функция, кстати, претерпела некоторые изменения:

size_t furi_string_utf8_length(FuriString* str) {
    size_t len = string_size(str->string);
    const char * cstr = string_get_cstr(str->string);
    const char* end = cstr + len;

    if(len >= sizeof(uint8x4_t)) {
        const char* vend = end - sizeof(uint8x4_t);

        int8x4_t zero = 0x00000000;
        int8x4_t one = 0x01010101;
        int8x4_t threshold = -1077952577; // -65, -65, -65, -65

        do {
            int8x4_t vec = *(int8x4_t*)cstr;

            __ssub8(threshold, vec);
            uint8x4_t result = __sel(one, zero);

            len -= __usada8(result, zero, 0);

            cstr += sizeof(uint8x4_t);
        } while(cstr <= vend);
    }

    while(cstr < end) {
        signed char c = *cstr++;
        len -= c < -64;
    }

    return len;
}

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

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

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

Опять голова болит

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

Головная боль вообще мой бич — иногда голова так болит, что не сплю несколько дней. Такое было несколько раз в жизни. К счастью не в этот раз.

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

Как же я устал.

М. Г.

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

Вырезка из книги «Образцы шрифтовъ, линеекъ, украшеній, политипажей и примѣненій къ нимъ», типография В. В. Вараксина, Казань, 1911

Сгорели две GaN-зарядки

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

Сгорели в момент включения с разницей всего в несколько дней. Вставлялись в две разные розетки, я их посмотрел потом тестером розеток — ничего необычного. Ничего не понимаю. Что это? Дефект партии (я их сразу две покупал)? Запланированное старение?

Одна из сгоревших GaN-зарядок

Собачий возраст

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

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

Погуглил и нашёл более точную форуму — надо взять натуральный логарифм от возраста собаки, умножить на 16 и прибавить 31. Таким образом, «человеческий» возраст Челси — 16 × ln(16) + 31 ≈ 75 лет. Это куда больше похоже на правду.

«Аватар: легенда об Аанге»

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

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

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

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

В кадр попала другая её поделка — кошелёк из кожи, к «Аватару…» он отношения не имеет, просто рядом лежал.

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

Это самодельный Зуко — один из действующих в сериале героев
Ранее Ctrl + ↓