Синестезическая капча

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

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

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

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

По одной из гипотез дело тут в синестезии — смешивании ощущения от звучания слов с оптическими характеристиками рисунка.

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

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

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

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

Необычная вилка

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

«Что-нибудь интересное» нашёл, но из советского времени. Когда поднял этот предмет, сначала вообще не понял что это такое.

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

Похоже на вилку, но с пружинным механизмом внутри. Если нажать на шток, который справа, то перекладина на зубьях двигается. Есть упор для пальцев, как у шприца, на нём клеймо — «Москва. Артель 6я механическая — 1954г».

Несмотря на то, что эта штука пролежала в земле не одно десятилетие, коррозии почти нет.

Металлическая ручка с круглой накладкой, на которой выбиты слова «СДЕЛАНО В РОССИИ» и «1987», держится в руке на белом фоне.
Вид на надпись «Москва. Артель 6я механическая — 1954г.»

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

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

Суровое пробуждение

Из какой-то коряво переведённой инструкции к роботу-пылесосу «Роборок Эс7»:

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

Очень выражение понравилось. «Вас ждёт суровое пробуждение»!

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

EE AND

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

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

Абстрактная композиция из трёх текстурных участков: тёмно-серого, светло-серого и бежевого, разделённых чёрными линиями. На центре едва видны буквы «EE AND».
Я сфотографировал и развернул надпись, тут какое-то «EE AND»

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

Думаю об этом каждое утро.

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

Тестовые числа

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

Выдаём последовательность, просим запомнить, потом спрашиваем какие числа запомнились. Если 128, 256 — программист, 862, 1547 — историк, 235711 — математик, ну и так далее.

Мне проще запоминать числа, с которыми я сталкиваюсь или в прошлом сталкивался постоянно.

Если приезжает такси с номером 387 (номер допотопного математического сопроцессора компании «Интел»), оно у меня дольше задерживается в памяти, чем 388, хотя это соседнее число. Думаю, у остальных людей это примерно так же работает.

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

«Гопник-2»: демотивировался

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

Окно предупреждения: пробная версия CLion истекает через 3 дня. Предложено купить лицензию. Внизу видна строка состояния редактора.

Покупать мне её не хочется — всё-таки там приличные деньги, а проект-то у меня некоммерческий. Есть способы получить её бесплатно, один из них — податься как преподаватель. Я преподаватель высшей школы ИТИС КФУ, поэтому попробовал, не знаю, дадут ли, но попытка не пытка.

Дополнено: не дали:

Thank you for applying for the JetBrains Product Pack for Students.
We regret to inform you that we wouldn’t be able to provide a license due to EU and/or US export restrictions.
JetBrains as a company has to comply with all EU and US regulations and eliminate all possible risks coming out of it.

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

Бесплатный CLion?

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

Казалось бы дело в шляпе, но там надо показать регулярные коммиты за три месяца, а у меня пока ещё и месяц не прошёл. Но я придумал план, надёжный, как швейцарские часы, — два месяца рефакторинга. Буду перетаскивать очевидные сишные части на Си++. Начал со строк — переписываю сишные указатели на нормальный std::string.

Придётся, видимо, пока взять в качестве редактора VSCode, вот только он не IDE. Ну а какой выбор? В процессе знакомлюсь с тем, что умеет Си++. Смотрите какая прелесть:

std::ostream &operator<<(std::ostream &os, const Colors &color) {
    static const std::map <Colors, std::string> colorNames = {
            {RESET,   "39;49m"},
            {BLUE,    "01;34m"},
            {GREEN,   "01;32m"},
            {CYAN,    "01;36m"},
            {RED,     "01;31m"},
            {MAGENTA, "01;35m"},
            {YELLOW,  "01;33m"},
            {WHITE,   "01;37m"},
            {BLACK,   "01;30m"},
    };

    os << "\033[" << colorNames.at(color);
    return os;
}

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

std::cout << YELLOW << mess[2] << std::flush;

Рраз и строка жёлтая. YELLOW тут у меня — значение перечисляемого типа Colors.

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

Электрический насос

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

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

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

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

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

Называется устройство «Xiaomi Portable Electric Air Compressor 1S», если вас раздражает процесс накачивания колёс, рекомендую!

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

Благодарность Раиса

Сегодня в торжественной обстановке вручали Благодарность Раиса Республики Татарстан. Раис — это название главы нашего региона.

Благодарность от Рамиса Минниханова Степанищеву Евгению Владимировичу за вклад в развитие инфокоммуникационных технологий в Татарстане, дата: 6 апреля 2023 года.
«За добросовестный труд и вклад в развитие системы инфокоммуникационных технологий в республике»

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

Си++: форматированный вывод

Си++, похоже, язык для воспитания героев — создаём трудности на ровном месте и начинаем их преодолевать. В моём случае началось всё с разумной, как мне до сих пор кажется, идеи — заменить сишные безобразные строки char * на прекрасный класс std::string из Си++.

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

Заодно пришлось перейти на стандарт 2017 года, так как до строк с семантикой перемещения додумались только недавно.

Всё шло хорошо, пока я не дошёл до форматирования текста. В Си этим занимается функция printf, а Си++ есть метод std::format, но вот беда — он появился только в стандарте 2020 года и его ещё нет ни в одном из компиляторов, которые есть у меня под рукой.

Пошёл на поклон к ЧатГПТ, который выдал мне такую обёртку:

template<typename... Args>
std::string string_format(const std::string format, Args... args) {
    int size_s = std::snprintf(nullptr, 0, format.data(), args ...) + 1; // Extra space for '\0'
    if (size_s <= 0) {
        throw std::runtime_error("Error during formatting.");
    }

    auto size = static_cast<size_t>( size_s );
    std::unique_ptr<char[]> buf(new char[size]);
    std::snprintf(buf.get(), size, format.data(), args ...);
    return {buf.get(), buf.get() + size - 1}; // We don't want the '\0' inside
}

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

Так как файлы с кодом друг друга не видят, чтобы шаблонная функция «знала» с какими параметрами её вызывают, её надо помещать в заголовочный файл (🤦🏻‍♂️), либо указать в коде все необходимые прототипы вручную (🤦🏻‍♂️🤦🏻‍♂️🤦🏻‍♂️).

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

На этом этапе я выяснил, что мой компилятор под «Виндоуз» ничего не знает про std::string_view, а компилятор под «Мак» не может скомпилировать код выше вот с такой прекрасной ошибкой:

comm/../utils.hpp:30:60: error: cannot pass object of non-trivial type 'std::string' through variadic function; call will abort at runtime [-Wnon-pod-varargs]
    int size_s = std::snprintf(nullptr, 0, format.c_str(), std::forward<Args>(args)...) + 1;

Мне бы хотелось, чтобы код собирался под оба компилятора, поэтому я снова пошёл к ЧатГПТ и вернулся вот с таким прекрасным кодом:

template<typename... Args>
std::string string_format(const std::string& format, Args&&... args) {
    auto size_s = std::snprintf(nullptr, 0, format.c_str(), 
                                 std::decay_t<Args>(args).c_str()...) + 1; // Extra space for '\0'
    if (size_s <= 0) {
        throw std::runtime_error("Error during formatting.");
    }

    auto size = static_cast<size_t>( size_s );
    std::unique_ptr<char[]> buf(new char[size]);
    std::snprintf(buf.get(), size, format.c_str(), 
                  std::decay_t<Args>(args).c_str()...);
    return {buf.get(), buf.get() + size - 1}; // We don't want the '\0' inside
}

Тут происходит какое-то чёрное кодунство в котором я ещё не разобрался. Но главное, что код заработал. Правда опять только под одним компилятором, второму не понравилось следующее:

comm/../utils.hpp:32:58: error: request for member 'c_str' in 'args#0', which is of non-class type 'std::decay_t<char*>' {aka 'char*'}
   std::decay_t<Args>(args).c_str()...) + 1;

К счастью, решилось это просто — надо было всего лишь убрать .c_str().

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

Теперь я понимаю за что программистам на Си++ платят такие деньги — это доплата за нервную работу.

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

Двухфакторная аутентификация

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

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

Зелёная визитка АК БАРС Online с логотипом, слоганом «еще ближе, еще доступнее!», номерами справочной службы и сайтом www.akbars.ru на серой тканевой поверхности.
Карточка ключей 0913373562 с пометкой «Мар». Таблица из 60 ключей, частично открыты коды: 813551, 935156, 521787, 979231.

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

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

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

Си++: форматированный вывод (продолжение)

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

Мои приключения c форматированным выводом в Си++ до сих пор не закончились, оказалось, что последний вариант обёртки над std::snprintf в одном из компиляторов не собирается с одним из видов аргументов, пришлось его обернуть в std::cref.

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

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

Ньюборн-фотограф

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

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

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

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

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

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

Пора аккумулятор менять на «Макбуке»

Блин, засада, система пишет, что аккумулятору на «Макбуке» рекомендуется обслуживание. Не скажу, что ничего не предвещало — всё-таки пять лет ноутбуку и я всё чаще стал бегать к зарядке. Интересно как вообще дело обстоит с запчастями для техники «Эпл»? Есть ли надежда найти оригинальный или уж брать Китай?

Скриншот информации о батарее MacBookPro15,2: текущий заряд 3678 мАч (макс. 3842 мАч), ёмкость 3842 мАч (проектная 5088 мАч), циклов 1382, температура 31.4°C.
Видно, что ёмкость аккумулятора сильно упала за эти 1382 цикла зарядки

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

Проекты дочки

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

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

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

Для понимания масштаба, вот что было сделано за последние два дня, из того, что я успел заснять. Вчера они с бабушкой сшили ещё несколько подушечек (мышку, ому из «Навсикаи из Долины ветров» и ещё что-то), но я не знаю где они.

Картонная коробка с подвешенными на нитках разноцветными шариками и надписью «Отдай» на дне, стоит на плитке с узором; рядом видны ноги ребёнка.
Модель Солнечной системы, под верхней стенкой ящика наклеено Солнце, в кадр не попало; часть планет уже отвалилась
Рисунок цветными карандашами: рыжая лиса стоит в зелёной траве на белой бумаге, лежащей на деревянном столе.
Рисунок нашего пёселя, подписано «КОРГИ НАТРОВЕ ЛИЖАЩЕ БЕСИК»
Два детских костюма-зомби на полу: один зелёный, другой светло-голубой с узором, оба с белыми бумажными руками и ногами, эмодзи вместо лиц, рядом контейнер с игрушками.
У нас несколько дней жила подруга жены с детьми из Саратова, дочка уже по ним скучает, поэтому сделала себе такие фигуры, чтобы меньше скучать
Ребёнок держит в руках самодельную маску из белого картона с длинным носом, рогами и вырезанными глазами, стоя на деревянном полу в комнате.
Это дракон, рот полон пластилиновых зубов

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

Пин-коды в СМС

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

Уведомление от АКБАРС: «Vash parol': 894675 Tinkoff Card2..» с кнопками «ОТВЕТИТЬ» и «ОТМЕТИТЬ КАК ПРОЧИТАННОЕ
Банк «Ак Барс» делает всё правильно — присылает код так, чтобы его было сразу видно

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

«Гопник-2»: контрибьюторы

Фантастика! У меня на проекте буквально за эти выходные появилось ещё два контрибьютора.

deadem перевёл проект на сборку cmake, принёс библиотеку форматирования fmt и приделал к нему CI «Гитхаба», теперь сборка идёт прямо там. kartaris убрал fmt в зависимости, принёс менеджер пакетов conan и дописал код для использования в нём fmt.

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

Графики активности bolknote, deadem, kartaris (2011–2023): коммиты и изменения строк
Активность по контрибьюторам в проекте на «Гитхабе»

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

Эффект неудавшейся прокрутки

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

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

Интересно, это у всех так?

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

Успеть пристегнуться

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

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

До того как я это придумал, пробовал просить не ехать, пока не пристегнёмся, но это почти никогда не работает.

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

Транзитивность и «Ведьмак»

Цитата из книги «Мозг рассказывает. Что делает нас людьми» Вилейанура Рамачандрана:

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

Вот это отсутствие понимания транзитивности силы — то, что меня вымораживает в мире «Ведьмака».

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

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

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

Дневники: лень побеждает

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

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

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

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

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

Трава от дома

Уже восьмой год одно из моих хобби — поискать что-нибудь интересное с металлоискателем.

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

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

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

Вот интересно — какая тут связь? Почему растут именно эти травы и почему именно в таком алопированном виде?

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

Пропала лёгкость

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

Конечно нельзя писать вообще обо всём, ни на что другое времени не останется, но непонятно зачем я себя останавливаю, если написать хочется. Что это ещё за странные внутренние правила? Буду исправляться.

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

Пустые книги

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

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

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

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

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

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

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

«Гопник-2»: что нового?

Можно подумать, что я совсем забросил заниматься игрой «Гопник-2», про которую ещё недавно так много писал, но это не так. Просто ничего особо интересного я там пока не делаю, — в основном довольно механически заменяю сишные строки (char *) на сиплюсплюсный класс std::string.

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

Осталось примерно 260 замен, не так много, было около 400 или около того.

Скриншот терминала: вывод теста gop2_tests с сообщениями о займе у пацанов и понтовости, завершающийся зелёным «All tests passed (12 assertions in 1 test case)».
Тесты прошли успешно

Ещё ребята постарались добавить мне тесты. Я ещё не смотрел, но планирую ознакомиться с тем как это делает. Так как на Си++ я раньше не писал, то совершенно без понятия как они тут выглядят, любопытно.

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

Взрыв компьютера

Иногда в фильмах показывают ситуацию, когда хакер устраивает «перегрузку систем» и компьютер взрывается.

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

Теперь уже уязвимости, вызывающие физическое повреждение компьютеров не редкость, недавно нашли ещё одну.

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

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

Спи! Остальное не важно

Дочку сейчас спать укладываю, параллельно ковыряю игрушку, а «Алиса» играет колыбельные. Вдруг замечаю что-то странное, — оказывается подпеваю про себя мелодии из песни «Металлики» «Nothing Else Matters», переделанной под колыбельную.

А неплохо звучит в этом качестве!

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

Биоритмы

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

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

Скриншот программы BIORITM 1.00: таблица биоритмов на 2023 г. для Евгения Степанищева (13.09.1977), показывающая физическое, эмоциональное и интеллектуальное состояние.
Одна из программ для расчёта биоритмов 90-х годов, тогда это было популярно

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

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

Жду второго пришествия биоритмов.

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

«Гопник-2»: убрал printf

Закончил убирать функцию printf, сегодня вколотил последний гвоздь в крышку её гроба. Я почему-то наивно полагал, что на этом моя работа по избавлению от char * будет окончена, но не учёл, что в коде довольно много (больше 150) других мест, где ещё используется этот тип.

В процессе замены встретилось вот такое. Загадка, всё ли хорошо в следующем коде?

std::cout << fmt::format(" {}(+{})", main_hero->inv[i].name, main_hero->inv[i].armo)

Мой компилятор считает, что всё, но сборка на «Гитхабе» падает с ошибкой «Binding packed field error».

Получается, я по неведомой причине не могу обратиться по ссылке на поле внутри упакованной структуры (fmt::format принимает параметры по ссылке).

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

const auto name = main_hero->inv[i].name;
const auto armo = main_hero->inv[i].armo;

std::cout << fmt::format(" {}(+{})", name, armo);

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

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

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

И. И. Степанищев

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

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

Контрастный душ

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

— «Тот самый Мюнхгаузен» Григорий Горин.

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

Помог ли мне контрастный душ вставать раньше? Как будто бы нет. Есть ли другие плюсы? Как будто бы да.

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

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

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

Приватность

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

Потёртая табличка с надписью «КВАРТИРЫ ДОМА №27 по ул. ЛЕНИНА» и таблицей ФИО жильцов, включая «АБРУСЕНКО З.И.» и «ПОГОДАЕВА В.В.
Задумывалась ли Арбузова Зинаида Юрьевна из 91-й квартиры о приватности?

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

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

Куда уж ещё приватнее?

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

Люк «Красный литейщик»

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

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

Ржавый круглый люк с пятиконечной звездой в центре и надписями «ГОР. СЛАВЯНСК» и «КРАСНЫЙ АВТОЗАВОД» на асфальте у бордюра с травой.
Люк «Красный литейщик» из города Славянска

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

Таким образом, этот люк уже старичок — ему около 90 лет.

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

Советские школы

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

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

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

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

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

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

Вам посылка, но вам я её не отдам…

В «М. Видео» сегодня отожгли, конечно.

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

Сегодня приходит смска — ваши часы будут ждать вас в магазине с 10:00. Меня немного смутило, что сообщение пришло за три дня до начала предпродажи, но раз пишут, что часы меня ждут, то надо идти!

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

В общем, только зря обеденное время потратил.

Кассир в красной форме за прилавком: рука на мыши, рядом сканер Zebra, смартфон с размытым экраном и коробка с надписью «Bluetooth» и этикеткой EAC.
Мои часы пока не мои, надо подождать

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

Перепиши это

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

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

Понятие легаси перестало бы существовать, программы на архаичных языках (например, на КОБОЛе) можно было бы перевести на любой современный язык, утилиты, от которых не осталось исходников, можно было дисассемблировать, перевести на высокоуровневый язык и собрать обратно под другую платформу. Да можно было бы много всего придумать.

Но честно говоря, я что-то не особо верю, что пятая версия допрыгнет до таких высот.

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

Что это?

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

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

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

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

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

Пот

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

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

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

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

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

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

«Алиса» vs. ChatGPT

После сетей уровня GPT-3,5, общаться с «Алисой» прям тяжело. Она и раньше-то была хабалистой, хотелось её заткнуть поскорее, а сейчас появилось новое ощущение, — что у неё синдром Вильямса. Болтает без умолку, с хорошим словарным запасом, но не понимает ничего сложнее простых фраз, просто иногда угадывает что ты ей пытаешься сказать.

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

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

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

Huawei Watch Buds

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

Выбрал себе Huawei Watch Buds — это такая интересная модель часов, внутри корпуса которых скрываются беспроводные наушники-вкладыши.

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

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

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

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

Беглое чтение

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

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

В общем, пришлось нанять репетитора.

Насколько я помню, когда я шёл в свою школу, читать не умел совсем. Вроде это и не требовалось, а тут беглое чтение… Что ж, будем стараться. В помощь репетитору теперь ещё каждый день читаем книжку — я страницу, Ева 3—4 слова, пока в таком режиме. Читаем, пока не устаёт и не начинает путать буквы.

Прогресс уже виден, так что надеемся, что всё успеем.

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

Первые заработанные деньги

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

Потихоньку планирует расширить ассортимент за счёт самодельных конфет.

Смятая купюра 100 рублей 1997 года с изображением Большого театра в Москве и две монеты по 10 рублей на белой текстурированной поверхности.
Сто двадцать рублей за три сплетённые вещи

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

ChatGPT поглупел?

Появилось ощущение, что ЧатГПТ как-то поглупел. Я пользуюсь обеими версиями (3,5 и 4) почти с момента появления каждой и, то ли мои стандарты сильно выросли, то ли это какой-то эффект ложной памяти, но появилось ощущение, что обе сети стали хуже справляться с задачами.

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

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

Беспардонные взрослые

Иллюстрация: трое подростков на фоне кирпичной стены, один держит лопату, другой обнимает девушку в клетчатом платье.
Обложка книги «Приключения Калле Блюмквиста» Астрид Линдгрен, М.: Детгиз; 1959

— Кто я? Я дядя Эйнар, двоюродный брат твоей мамы, прелестная сеньора. Он дёрнул Еву Лотту за светлый локон.
— Кстати, как зовут твоих кавалеров? […]
— А у тебя очаровательнейшая дочка, — сказал дядя Эйнар и ущипнул Еву Лотту за щёку.

— цитата из книги «Приключения Калле Блюмквиста» Астрид Линдгрен.

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

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

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

Законодательство и ИИ

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

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

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

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

← сюда туда →