Кто исправит горбатого

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

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

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

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

Мужчина в костюме читает текст с листа бумаги в микрофон, стоя у трибуны на фоне тёмного занавеса.
Жванецкий, человек с огромным опытом выступлений, напрягает руку, чтобы не перенапрягать шею (фото с сайта Москва24)

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

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

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

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

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

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

Спички Сапожникова

И снова продолжаю разбирать находки с чердаков.

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

Мало что проясняющая для современного обывателя надпись «безъ сѣры и фосфора» означает, что спички производились по шведской технологии — без ядовитого белого фосфора (он заменялся красным), а серу, которая сильно воняла при горении (что породило поговорку «сначала вонь, потом огонь»), заменили воском, стеарином или парафином, пропитав ими головку спички.

Старая коробка спичек с надписью «Безъ серы и фосфора», фирмой, основанной в 1887 г., и логотипом с якорями.
Задник дореволюционной (1888—1905 гг.) коробки спичек Сапожникова, фирма основана в 1887 году

Как и написано на этикетке, фабрика, произведшая коробок, основана в 1887 году. Её основатель — Иван Исаакович Сапожников родился в деревне Барминская Пустошь Бобинской волости Вятского уезда, вблизи станции Вятка, в семье крестьянина. Однажды Иван Исаакович узнал, что в Слободской волости появился новый промысел — спичечное производство, заинтересовался, разузнал подробности и в 50-х годах 19 века организовал производство спичек на дому.

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

Дела шли хорошо, продукция стала экспортироваться за рубеж. В 1900 году предприятие Ивана Сапожникова вышло в лидеры губернии: годовой оборот производства составил 260 тысяч рублей, продукция сбывалась в Казанскую, Пермскую, частично в Вятскую губернии, в приволжские города.

Чёрно-белая фотография: мужчина в тёмном костюме сидит слева, женщина в светлом платье стоит справа, её рука на его плече; фон — студийный с радиальным узором.
Сапожников Иван Исаакович с женой, владелец фабрики в д. Сапожнята (бывш. Барминская пустошь)

В мае 1909 года был учреджён торговый дом с названием «Иван Исаакович Сапожников с сыновьями», а 1916 году открылась ещё одна спичечная фабрика близ слободы Дымково.

Но наступила революция, в 1918 году спичечная фабрика Ивана Исааковича была национализирована и в 1920 году получила название «Красная Звезда». Дальнейшая её история мне уже малоинтересна.

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

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

Программисты-«волшебники»

Про программистов-«волшебников», большая цитата (ниже весь текст не мой).

Хочу высказаться также по триаде «объект — указатель — ссылка».

Изначально в Си (не «++») ссылок не было. Были только объекты и указатели. Любой начинающий сталкивался с указателями, как только ему требовалось впервые изменить в теле функции значение переданного функции параметра:

void func1(int i) { i = 1; }
void func2(int* i) { *i = 1; }

Далее:

int i = 0;
func1(i); // всё ещё i==0
func2(i); // вот теперь i==1

Этот код демонстрирует то свойство Си, из-за которого он называется «высокоуровневым ассемблером». В тексте языка явно указано, что происходит на уровне ассемблера. В func1 в ячейку на стеке, отведённую под параметры функции, кладут целое значение, i — имя этой ячейки. Туда пишется «1». В func2() в ячейку кладётся указатель i, то есть адрес некоторой другой ячейки, где и лежит значение. В теле явно стоит операция разадресации (*i) — «обратимся к той другой ячейке, адрес которой лежит i». Именно в ту ячейку засовываем «1».

Спрашивается, так зачем ещё потребовались ссылки? Ответ таков. В мире существует, не исчезает и даже порой ширится класс «программистов-волшебников», то есть любителей «программирования с волшебными словами». Программисты-волшебники рассуждают так: запись i = 1; хорошая и понятная. «Присвой i единицу». Запись *i = 1; — противная, компьютерная, не для людей. «Положи „1“ в ячейку, адрес которой лежит в i». Фу.

Пусть лучше в теле func2 тоже будет написано по-человечески: i=1. Однако работает пусть всё, как раньше — func1 получает на стек значение, а func2 — указатель. И оператор присваивания, с виду теперь одинаковый, пусть работает по разному. В func1 — обычное присваивание, в func2 — с разадресацией указателя. А чтобы теперь понять, как это работает, мы введём в язык волшебный значок «&». Теперь всё просто:

void func1(int i) { i = 1; }
void func1(int &i){ i = 1; }
int i = 0;
func1(i); // волшебного значка нет, i не изменилось
func2(i); // волшебный значок! i изменилось.

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

Программисты Си долго сопротивлялись, но программисты-волшебники победили, и ссылки появились в Си++.

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

Коронавирус и рукопожатие

Через несколько дней мы собирались лететь в отпуск в Китай, но из-за истерии с коронавирусом, которым заболели примерно 0,02‰ (две тысячные процента) китайцев, пришлось буквально в последние дни искать другой тур. Успели взять три последних билета во Вьетнам.

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

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

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

Дополнение: рухнула моя теория, друг в комментариях в «Фейсбуке» утверждает, что в азиатских культурах рукопожатие не принято (он живёт в Сингапуре).

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

19 февраля 1908 года

Продолжаю разбирать находки с чердаков.

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

Аверс и реверс календарика на 19 февраля 1908 года: вторник, Масленица, апостолы Архипп и Филимон; анекдот «Два живота» и меню на 20 февраля.
Лист отрывного календаря за 19 февраля 1908 года

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

Супъ изъ сушеныхъ вишень.
Рыба жареная.
Суфле изъ муки.

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

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

PHP FFI

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

Для интереса посмотрел что за АПИ получилось. В принципе, всё очень просто. Вот как выглядит функция-обёртка вокруг вызова mkdtemp с обработкой ошибок (проверял у себя на «Маке»):

/**
 * @method object mkdtemp(string $template)
 * @method object strerror(int $errnum)
 * @property-read int $errno
 */
$ffi = FFI::cdef('
    // Импортируем функцию создания временного директория
    char *mkdtemp(char *template);

    // Импортируем функцию перевода кодов ошибок в строку
    char *strerror(int errnum);

    // Импортируем переменную, хранящую коды ошибок
    int errno;
');

/**
 * Фунция для создания временных директориев по маске
 * @param string $template Шаблон создания (см. man mkdtemp)
 * @return string Путь до временного директория
 */
$mkdtemp = function (string $template) use ($ffi): string {
    $result = $ffi->mkdtemp($template);

    if ($result === null) {
        $errno = $ffi->errno;
        $errstr = $ffi->strerror($errno);
        throw new RuntimeException(FFI::string($errstr), $errno);
    }

    return FFI::string($result);
};

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

Не знаю заработает ли этот код без изменений под Линуксом и Виндоузом, у кого есть под рукой, посмотрите, пожалуйста.

В этом примере параметры в импортированные функции передаются как обычные типы ПХП, а некоторые возвращаемые значения требуют конвертации. Так char * возвращается как специальный объект, который нужно преобразовывать в строку вызовом метода FFI::string.

Вот тривиальный текстовый пример использования созданной выше функции:

$template = implode(DIRECTORY_SEPARATOR, [sys_get_temp_dir(), 'ffiphp.XXXXXX']);

try {
    $tmp = $mkdtemp($template);
    rmdir($tmp);
    echo $tmp, "\n";
} catch (RuntimeException $e) {
    echo $e->getMessage(), "\n";
}

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

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

PHP8 и strpos

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

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

The needle argument of strpos(), strrpos(), stripos(), strripos(), strstr(), strchr(), strrchr(), and stristr() will now always be interpreted as a string. Previously non-string needles were interpreted as an ASCII code point. An explicit call to chr() can be used to restore the previous behavior.

Я даже не подозревал, что в качестве параметра в функции поиска подстроки сейчас можно (в восьмой версии будет нельзя) передать код символа. Так как в ПХП мало кто следит за типом переменной, можно получить несколько обескураживающие результаты:

// объявили строковую переменную и где-то по коду она превратилась в число,
// 49 — это код символа «1»
$needle = (int) "49";

// выдаёт «Есть»
echo @strpos("12349", $needle) === false ? "Нету\n" : "Есть\n";

// Несколько неожиданно выдаёт «Нету», ищется символ с кодом «49» (единица)
echo @strpos("02349", $needle) === false ? "Нету\n" : "Есть\n";

В ПХП8 число будет преобразовано в строку и искаться будет именно строка, то есть оба этих примера выдадут «Есть».

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

Выполнение запроса с таймаутом

В продукте, который мы делаем в нашей компании, не используется PDO для соединения с базой данных — так исторически сложилось и вряд ли имеет смысл менять. Причина тому — оптимизации; мы широко используем эскуэль и задействуем диалектные особенности используемой СУБД (в нашем случае это «Постгрес»). То есть универсальность PDO нам ничего бы не дала.

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

Мы долгое время перебирали идеи (вплоть до внешнего процесса с таймером), но ничего не выглядело достаточно хорошо, чтобы помещать это в код. В конечном счёте мой братишка предложил очень простое решение. Ответ лежал в работе с асинхронным АПИ. Обычно это выглядит как-то так:

$con = pg_pconnect("…");
if ($con === false) {
    throw new \RuntimeException('Could not connect');
}
// асинхронно выполняем запрос, в синхронном варианте тут было бы pg_query
if (pg_send_query($conn, "select * from users")) {
    // тут можно делать что угодно, пока мы не будем готовы принять результат
    // …
    // синхронно получаем результат
    var_dump(pg_get_result($conn));
}

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

function waitForResult($connection, callable $callback, int $timeout): void
{
    $stream = pg_socket($connection);
    while (pg_connection_busy($connection)) {
        $read = [$stream];
        $write = $except = null;

        $numChangedStreams = stream_select($read, $write, $except, 0, $timeout);
        if ($numChangedStreams > 0 || $numChangedStreams === false) {
            break;
        }

        $callback();
    }
}

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

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

Нафталин

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

Четыре старых бумажных пакета с надписями «Нафталин» от разных аптек и складов, с указанием веса, цены и инструкций по применению.
Упаковки из-под нафталина (одна сфотографирована с двух сторон), найденные на чердаке

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

Нафталин ПРИМЕНЯЕТСЯ для предохранения меховых, шерстяных, ковровых изделий, одежды и обуви от ПОРЧИ их МОЛЬЮ.

Вещи необходимо вычистить и просушить, а затем пересыпать нафталином.

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

Можно мешочки с нафталином разложить в шкафах или сундуках.

Ценные вещи вешают на плечики, а мешочки с нафталином кладут в карманы или подшивают к подкладке.

Мелкие шерстяные вещи хранят в наволочке, мешках, коробках, на дно которых насыпают нафталин.

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

Старая помятая бумажная упаковка нафталина с надписью «НАФТАЛИН КРИСТАЛЛИЧЕСКИЙ», весом 100 г, ценой 80 коп. и инструкцией по применению.
Фото в бо́льшем размере — один из пакетиков, где когда-то лежал нафталин, в жизни размером примерно с ладонь

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

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

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

Юникод 13

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

Сетка эмодзи: ниндзя, женихи, невесты и родители с младенцами разных оттенков кожи и причёсок на тёмном фоне.
Часть новых эмодзи, которые будут добавлены в 2020 году

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

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

Почтовая открытка с фото капитана Фреда Уолтерса, «Синего человека» из шоу Буффало Билла, до и после окрашивания кожи в синий цвет; указаны годы гастролей 1903–1905.
Синекожий человек — Капитан Фред Волтерс, фотография с сайта «ЛотСёрч»

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

Несколько лет назад, когда интернет был поменьше, а я поизвестней, мне в голову даже приходила идея создать сайт Ассоциации Синекожих Людей (см. аргироз) и потроллить от его имени Консорциум Юникода — потребовать появления синего модификатора и синекожих эмодзи, но как-то поленился. А была наивная надежда что-то изменить.

🥶🥶🥶

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

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

Лучшее образование

Прекрасный Саша Ларьяновский, лучше и не скажешь:

Читаю мнения родителей, что надо запретить телефоны в школах, потому что тогда дети будут все внимание отдавать учебе.
Что меня смущает. Я ж знаю этих родителей. Они росли со мной. Их в моей же школе учили химии, биологии, физике, математике… При мне.
А потом они бросились ставить банки с водой перед телевизором. Не, реально, я сам видел. Натурально перед Чумаком и Кашпировским ставили эти банки. От литра до пяти в объеме, дважды в неделю.
Они ещё сейчас упрекают в необразованности нынешнее поколение.
Так вот заряжали ведь воду-то. Некоторые сразу после школы, иные постарше были. Одновременно с этим они бросились читать и верить — верить! в гороскопы, покупать гомеопатию и повально креститься.
Хотя никакие телефоны не отвлекали их от уроков естествознания и точных наук. Не, натурально, как вспомнишь школу без телефонов, так все вокруг меня в классе учились, не смыкая ног.
И вот эти ребята, с банками воды у телека, 25 кадром в обучении языкам, гороскопами и чтением — простите — комсомольской правды, уповают, что убрать телефоны на уроках поможет учиться их детям.
Единственное, что нашему поколению может помочь прозреть, это, конечно, сушеные крылья летучих мышей, собранных в полнолуние високосного года. Их надо растолочь и посыпать порошком телефоны детей.
Если не поможет — насыпать льняного семени в край глаза.

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

Шутки с бородой

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

Спешите ознакомиться, «1001 совѣтъ даромъ» от мизогиниста, скрывающегося за именем весёлого скрипача К’аламбура:

Страница с афоризмами «1001 совет даром» (из афоризмов веселаго скрипача К'аламбура), включая пункты 985–991 о мужчинах, женщинах, ревности, скромности и музыке.
Мякотка из газеты «Камско-волжская рѣчь», вторникъ 5 ноября 1913 г., №244-й

Как становится очевидным в самом конце, это — столетней давности продакт-плейсмент коньяка Шустова. Шустовы начинали производить алкогольную продукция в 1863 году, начали с качественной водки — производили марки «Зубровка», «Спотыкач», «Запеканка», «Нектарин» и «Рябину на коньяке», позже занялись коньяком.

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

В итоге продукция стала знаменитой не только в России, но и за границей, неоднократно получала награды на международных выставках. В 1912 году фирма «Н. Шустов и сыновья» стала поставщиком двора Его Императорского Величества.

Большей популярности в России не имел ни один производитель алкогольных напитков.

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

Модифицированное приложение Mi Home

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

Интерфейс умного дома с четырьмя устройствами: обогреватель и фитолампа в спальне (выключены), чайник на кухне и включённый очиститель воздуха в спальне.
Наконец-то чайник и очиститель воздуха видны с регионом «Китай»

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

Это просто чудо какое-то, я так обрадовался, что подписался на платные (60 рублей в месяц) обновления этого приложения! Автор большой молодец, надеюсь эти невеликие деньги позволят ему продолжать работу — решение проблемы с регионом не единственное изменение, в этом варианте меньше проблем с локализацией, больше возможностей автоматизации и так далее, список есть на сайте.

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

Что интересно, «Яндекс.Станция» тоже увидела новое устройство — в списке появился очиститель воздуха, которым, впрочем, управлять не особо интересно. А вот умный помощник «Алекса́» опять подвела, ничего нового найти не смогла и единственное, чем получается через неё управлять — пылесос.

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

«Рельефный Зоологическій Атласъ»

Когда-то давно бабушка одного моего друга работала в Казанском Пединституте и приносила домой книжки, списанные библиотекой этого учебного заведения. Среди них есть несколько очень старых и очень интересных. Одну из них — «Рельефный Зоологическій Атласъ Гагельберга» 1880 года выпуска, часть третья, я взялся отсканировать.

Скриншот Finder на macOS: папка «Загрузки» с файлами «Сканировать 0.jpeg»–«9.jpeg», содержащими страницы книги с иллюстрациями земноводных и пресмыкающихся.
Сканы книги «Рельефный Зоологическій Атласъ Гагельберга», 1880.

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

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

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

Страничка статистики

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

SELECT YEAR(FROM_UNIXTIME(Stamp)) AS Year, COUNT(*) Total, SUM(LENGTH(Text)) Size
FROM e2BlogNotes
GROUP BY 1 ORDER BY 1

В статистике пока не участвуют «Дневники жизни» №№2, 5, 6 и 7, я ещё их сюда не перенёс (та ещё будет работка) и нет заметок, которые я писал в блоге на платформе ЖЖ. Кстати, можно будет попробовать их перенести автоматически, надо бы подумать над этим.

Столбчатая диаграмма показывает рост с 1989 по 2020 год: пик в 2001 году (~1 млн), затем снижение, второй пик в 2010–2011 гг. (~850 тыс.), далее колебания до 2020 г. (~100 тыс.).
Совокупное количество символов (включая символы разметки) в заметках по годам

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

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

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

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

Столбчатая диаграмма показывает рост и спад значений с 1989 по 2020 год, с пиком около 700 в 2003 году и вторым пиком около 500 в 2010 году.
Количество заметок по годам

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

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

Y2K79

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

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

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

my ($sec, $min, $hour, $mday, $mon, $year) = localtime;
printf "%d-%d-%d\n", $mday, $mon, '19'.$year;

1999-й год был последним, в котором это работало правильно — функция возвращала число 99, программист соединял это значение со строкой '19', получалось '1999', а в 2000-м году неожиданно многие программы стали показывать год как '19100'.

Атомными станциями такие программы, разумеется, не управляли, но править их всё равно пришлось, мы просто заменяли конкатенацию сложением с числом «1900».

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

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

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

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

RHCP — Californication

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

Всегда считал, что не подвержен музыкальной ностальгии. «АукцЫон», «Пикник», «ДДТ», «Аквариум», «Агати Кристи», «Наутилус Помпилиус» и остальное, что слушал до дыр, на повторе в детстве и юности, всё как-то ушло из моей жизни, стало неактуально.

Музыка из песни «Калифорникейшн» группы «Ред Хот Чилли Пеперс» в исполнении Александра Мисько

Тем не менее, слушая недавно «Калифорникейшн» в исполнении великолепного гитариста Александра Мисько, понял, что ну вот она моя ностальгическая песня. Выпущена более 20 лет назад, до сих пор кажется актуальной и великолепной. Судя по тому, что её крутят по радио, не я один так думаю, но что это доказывает? Плохие песни там тоже крутят, и старые, и новые.

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

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

Старые газеты

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

Смятые пожелтевшие страницы с нотами и текстом лежат на синой плёнке на полу рядом с пакетом «New Yorker».
Газеты из покинутого крысиного гнезда — грызуны их когда-то натащили, а потом съехали

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

Смятый, потемневший лист старой газеты с текстом на русском языке, включая слова «БУМАГИ СЕМЬ», «ДЛЯ ПИСЬМА», «ИШЛЯЕВА», лежащий на белой поверхности.
Мокрую газету развернуть куда проще сухой

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

Белый утюг Tefal Latitude 30 лежит на старинной газете «Ванский Телеграф» от 2 февраля 1914 года, разложенной на чёрной ткани; видны заголовки и объявления.
Газета кажется огромной, на самом деле в кадре небольшой «походный» утюжок для одежды

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

Газета «Казанский телеграф» от 2 февраля 1914 г., № 6208, с объявлениями о бенефисе Я. Л. Никифорова, пиве «Царское — Черное» и других услугах.
Вполне достойный результат — газету можно прочитать и отсканировать всё, что понравилось

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

Старая газета «КАЗАНСКАЯ-ВОЛЖСКАЯ РѢЧЬ» с объявлениями и статьями, разложенная на полу; видны ноги в носках и кусок обоев.
Ну посмотрим что интересного писали сто лет назад. «Отрывок из газеты» иногда имеет материальное воплощение

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

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

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

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

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

Степени оскорблений

Что оскорбительнее — «идиот», «имбецил» или «дебил»? Ответ даёт переводчик книги Пола Оффита «Ящик Пандоры»:

В начале 1900-х годов французский психолог Альфред Бине разработал тест для оценки умственного развития. Несколько лет спустя его переработал исследователь из Стэнфорда и переименовал в тест Стэнфорд-Бине.

В тесте Стэнфорда-Бине idiot назывались люди с IQ 0—25, imbecile — с IQ 26—50, а затем moron — с IQ 51—70. Прим. перев.

Таким образом «имбецил» примерно в два раза оскорбительнее «дебила» (moron), а «идиот» — в четыре.

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

«Алиса»: после трёх дней использования

Цилиндрический умный колонка Яндекс.Станция Мини с фиолетовой наклейкой «R» на корпусе, лежащая на светло-зелёной текстурированной ткани.
«Яндекс.Станция» — голосовой помощник компании «Яндекс»

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

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

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

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

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

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

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

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