AVIF в GD

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

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

Пока примотал реализацию на соплях, как концепт. Результаты, кстати, хорошие, можно посмотреть на скриншоте разницу:

Список файлов с расширениями .jpg и .jpg.avif, правами доступа, размером, датой и временем изменения; имена файлов выделены розовым.
Разница в размере файлов в двух форматах — JPEG и AVIF

Но пока мотал, наткнулся на прекрасное. 🤦🏻‍♂️

В ПХП есть несколько модулей для работы с картинками, но самых распространённых два — GD и Imagick. Я начал с GD, так как на виртуалке он собран с поддержкой AVIF (а Imagick — нет), по крайней мере сам модуль так утверждает:

var_dump(gd_info()['AVIF Support']); // true
var_dump(imagetypes() & IMG_AVIF); // 256

Так же существует функция imageavif, что хороший знак — модуль устроен так, что если поддержки какого-то формата нет, то функция просто отсутствует.

Но при попытке сконвертировать картинку из JPEG в AVIF создавался файл нулевой длины, хотя функция возвращала true:

var_dump(imageavif(imagecreatefromjpeg('0.jpg'), '0.jpg.avif')); // true

GD это очень старый модуль, он родился, когда в PHP главенствовал процедурный модуль, поэтому его суть — функции; в PHP, если мы вызываем функции и что-то идёт не так, мы можем узнать что именно при помощи функции error_get_last. Помогла она и на этот раз:

array(4) {
  ["type"]=>
  int(2)
  ["message"]=>
  string(50) "imageavif(): AVIF image support has been disabled
"
  ["file"]=>
  string(17) "Command line code"
  ["line"]=>
  int(1)
}

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

yum shell
> remove php-pecl-imagick-im6
> install php-pecl-imagick-im7
> install ImageMagick7-heic
> install libheif
> run

В этом модуле, кстати, проверка на поддержку AVIF делается вот таким немного неочевидным способом:

$isAVIFSupported = Imagick::queryformats("AVIF") !== [];

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

Пора выкинуть ёлку

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

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

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

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

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

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

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

Сегментация современного интернета

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

Кроме веба у нас тогда были:

  • «аська» — сверхпопулярный мессенджер;
  • почта — тогда она была важной частью интернета, мы очень часто переписывались по почте;
  • «ньюсы» — тематические группы общения по протоколу «news» (NNTP);
  • «айэрси» — IRC, специализированные чаты, вроде современных групповых чатов «телеграма»;
  • «эфтипи» — FTP, протокол обмена файлами, где мы постоянно искали необходимый софт;

…и чёрт знает что ещё, о чём я мог забыть — про какие-нибудь пиринговые сети, например.

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

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

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

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

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

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

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

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

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

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

Разница между наукой и религией

Очень понравилось объяснение разницы между наукой и религией в книге «Отчаяние» Грега Игана:

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

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

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

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

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

Анекдот на Пайтоне

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

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

Вот что мне прислали:

class Chapaev:
    nyuans = True
    def fuck(Class):
        Class.nyuans = True
        Class.ass.append('Dick')

class Petyka:
    nyuans = False
    ass = []

if Chapaev.nyuans == True and Petyka.nyuans == False:
    Chapaev.fuck(Petyka)

Как по мне, плохо написано примерно всё, мне очень не понравилось, так что держите, вот вам моя версия, которая, кстати, как мне кажется, более точно отражает суть анекдота:

Chapaev = []
Petka   = []
dick    = [20, Chapaev]

Petka.insert(*dick)

isNuance = Chapaev in Petka and Petka not in Chapaev
print(isNuance) // True

Ну и пока у меня ещё был запал, переписал на ПХП известнейший мем из фильма «ДМБ»:

class Gopher implements Countable
{
    public function count(): int
    {
        return 0;
    }
}

$gopher = new Gopher;
var_dump(count($gopher)); // 0
var_dump(empty($gopher)); // false

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

«Перемотка»

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

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

Скриншот профиля Элона Маска в Twitter с фотографиями интерьера и людей, поисковой строкой и новостной лентой справа.
Программа «Перемотка» («Rewind») — поиск по всему, что у вас когда-либо было на экране

К сожалению, я не могу её попробовать — требуется «Мак» на процессоре M1 или M2, а у меня «Интел», но я подумываю обновиться, если решусь, попробую обязательно. Думаю, она не понимает русский язык, но всё равно протестировать живое воплощение решения беспокоящей меня проблемы было бы очень интересно!

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

Будем дрессировать нейросети

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

Видеокарта NVIDIA с зелёной полоской и логотипом ASUS в антистатическом пакете на белом столе рядом с клавиатурой.
Моя прелесть — две немного уже старенькие NVIDIA Tesla M10 (P2405)
Материнская плата ASUS с установленным жидкостным охлаждением и радиатором на белом столе рядом с монитором Acer и упаковкой компонентов.
Мать s2066, 8xDDR4, Asus, PRIME X299-A II, Intel X299, процессор Intel, s2066, Core i9 9820X, 3300Мгц, 10 ядер, L3 16,5MB с водяным охлаждением

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

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

Angie

Спросили как я отношусь к появлению Angie — отечественного форка известнейшего веб-сервера nginx.

Как-как? Сугубо положительно, разумеется.

Когда-то в веб-разработке была известная каждому аббревиатура LAMP, которая расшифровывалась как Linux, Apache, MySQL и Perl.

Это минимальный набор инструментов, чтобы сделать любой сайт. Времена менялись, Перл сменился ПХП, тот уступил Пайтону, МайЭсКуЭль заменила МарияДБ, но аббревиатура держалась.

Всё сломалось, когда пришёл nginx и вытеснил Апач.

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

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

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

Может ли рукотворное творить?

Сейчас по соцсетям летает картинка твита с текстом:

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

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

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

Женщина в белом костюме с кудрявыми волосами стоит рядом с мужчиной в богато украшенной мантии и меховой шапке, на фоне лабораторного оборудования с колбами и трубками.
«Чего ж тебе ещё надо, собака?» — как бы спрашивает Иван Грозный из фильма «Иван Васильевич меняет профессию» (1973)

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

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

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

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

ШАМОТ

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

Старый кирпич с оттиском «ШАМОТ» в прямоугольной рамке, лежащий на земле среди камней и мусора.
Огнеупорный кирпич «ШАМОТ» общества производства глины и гончарной продукции г. Боровичи

Кирпич, судя по найденному, произведен на заводе огнеупорного кирпича Общества производства глины и гончарной продукции «Шамот» в г. Боровичи. Немного истории:

«Товарищество производства глиняных и гончарных изделий в г. Боровичи» было учреждено 3 июля 1892 г. «для содержания и распространения действий завода глиняных и гончарных изделий». Учредителями товарищества на паях стали: инженер-технолог Ф. К. Тауцен, статский советник Н. В. Нерлинг и статский советник В. К. Бекман. В мае 1892 г. Ф. К. Тауцен купил у лужского мещанина В. Г. Антропова с публичных торгов землю «Лысцово» со строениями. […]

В феврале 1913 г. наименование Товарищества было изменено на «Товарищество производства глиняных и гончарных изделий „Шамот“ в городе Боровичах». В июне Товарищество было ликвидировано, недвижимое имущество приобрело «Общество Боровичского завода огнеупорных и кислотоупорных изделий и канализационных труб, бывш. К. Вахтер и К°».

Меня смущает только один момент — если общество «Шамот» прекратило своё существование в феврале 1913 года, то почему на кирпиче нет ера? Почему «ШАМОТ», а не «ШАМОТЪ»?

Добавлено: у меня появилась версия про «шамот» — думаю, это не слово, а сокращение, поэтому «ъ» тут не нужен.

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

Вещи с историей

Очень люблю вещи с историей. Не в смысле, что о них есть что рассказать, а «со следами бытования», как пишут на сайтах объявлений.

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

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

Я долго пытался отрефлексировать эту разницу, но так и не пришёл к каким-либо выводам, кроме довольно абстрактного «люблю историю». Понятно, что люблю, но почему? И почему через материальные объекты?

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

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

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

Таймеры в «Яндекс.Алисе»

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

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

Скриншот интерфейса приложения «Квартира»: видны сценарии умного дома, включая «Завтра 07:00 Утром открыть занавеску», «Включение подсветки шкафа» и «Включи новогоднее настроение».
Сценарий, запускаемый по таймеру, — в семь утра в рабочие дни открывать занавеску

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

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

Выглядит как какая-то мелочь, которую достаточно просто починить с ресурсами «Яндекса», но почему-то она годами не работает как до́лжно, странно. При этом у китайского Mi Home такой проблемы нет, значит проблема гарантированно решаемая.

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

GBox для Huwaei ★

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

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

Скриншот GBox v1.3.36: «Приложения установлены». Иконки: Google, HOHORO, Zoom, Диск, Home Connect, Шоколадница, LG ThinQ, WhatsApp, TES, Верный, Instagram, Gmail, Hommyn, hOn.
Приложение GBox, установленное на моём телефоне; приложения не знают, что они внутри Huawei

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

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

Оказывается существует панацея — приложение GBox. Оно ставится прямо из собственного магазина «Хуавея» и запускает внутри себя любое гугловое приложение (включая «Гугл Плей»), притворяясь для него смартфоном, свободным от санкций. В моём случае это какой-то «Сяоми», но в интернетах пишут, что модель и производитель выбираются случайным образом.

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

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

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

Щели в ламинате

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

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

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

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

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

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

В общем, рабочий способ, 5/5, рекомендую.

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

Гадание по «яблоку»

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

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

Этикетки «Фабрика памяти 1905 года»: «Берёзка» (Дрейзин, 2-20722) и «Шепот РЭЗ» (вальс, 2-20721). Силуэт солдата, лого МУЗПРЕД НКП.
По всей видимости редкая пластинка — с одной стороны «Берёзка», с другой — «Шёпот роз»

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

Это совпадает с датировкой по «яблоку» — пластинки с такой этикеткой выпускались с 1924 по 1927 годы.

Каталог музыкальных произведений с номерами 9046–9055, названиями, композиторами (Джойс, Орби, Дрейзин, Присовский, Тидеман, Беккер, Головин, Винер) и каталожными номерами типа…
Страница из каталога «Музпреда» за 1926 год с упоминанием пластинки

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

На каждой стороне выбиты по две надписи, на стороне с «Шопотом роз» «2-20721:P» вверху («Р», кажется, набита поверх «М») и «4825ае» внизу, с другой стороны — «2-20722:А» сверху и «17661ь» внизу.

Надеюсь эти сведения кому-нибудь когда-нибудь пригодятся.

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

Заказ щедро оплачен

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

Скрипт приводить не буду, всё равно его приходится править время от времени — у «Озона» используется фреймворк «vue» и из-за этого всё время меняются имена классов.

Заказ №123456789-1234 от 3 февраля: оплачен 534 ₽ Озон Картой, доставка в пункт Ozon в Казани, получатель Евгений Степанищев, бесплатно.

Заодно, в качестве баловства, заменил себе надпись «Заказ оплачен» на «Заказ щедро оплачен». Эту часть могу привести, может кто-нибудь себе захочет так же сделать:

.tsBodyM[data-widget="orderStatus"]::before {
    content: 'Заказ щедро оплачен';
    color: var(--ozTextPrimaryNegative);
    font-size: var(--bodyMFont);
    line-height: 1.29;
}

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

Качество воды

Купил себе прибор для контроля качества воды — TDS-3, судя по моим экспериментам, он действительно работает.

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

Выбор пал на TDS-3 — около 300 рублей на «Озоне». Не особо разбирался чем они там отличаются, решил сначала убедиться, что такие приборы действительно показывают что-то внятное.

Бежевый электронный тестер TDS-3 для измерения общего содержания растворенных твердых веществ и температуры воды с тремя розовыми кнопками и ЖК-дисплеем.
Прибор для измерения качества воды «TDS-3», купил самый дешёвый

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

Цифры трактуются следующим образом:

0…50 — идеальная питьевая вода;
50…100 — приемлемая вода;
100…200 — тяжёлая вода;
200…300 — на грани допустимого;
300…500 — приемлемая вода из под крана;
500+ — высокий уровень загрязнения.

Термометр TDS-3 в синей кружке с надписью «Вода МОЁ МОРЕ», рядом красный термос, фигурка собаки и цифровой термометр с показанием 22,9°C и 11% влажности.
Вода в офисе находится в диапазоне идеальной питьевой воды («049»), по вкусу она хорошая

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

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

Как будто бы всё работает.

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

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

Горячие русские нейросети

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

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

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

Бесконтактный термометр показывает температуру 42,7 °C при измерении корпуса компьютерного системного блока с синей подсветкой вентиляторов.
Температура 42,7° на корпусе, внутри ещё жарче

Если один процесс наша машина ещё вытягивает, то двадцать процессов, запущенные параллельно, тут же превратили корпус в финскую баню — снаружи температура почти 43°, на центральном процессоре — 79, слишком горячо. Такое ощущение, что моё кунг-фу пока не позволяет эффективно перераспределить задачу на GPU.

Терминал Linux с выводом датчиков температуры: процессор на +39°C, ядра от +32°C до +34°C, пределы high=+79°C, crit=+89°C; кулер CPU выключен (0 RPM), пользователь root@localhost.
Показатели с сенсоров на процессоре, было 79° С, ещё двадцать градусов и вскипит вода в водяном охлаждении

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

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

Чего не хватает в «Алисе»

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

Скриншот интерфейса умного дома: карточки датчиков (двери, дыма, протечки) и часов по комнатам с показателями заряда, температуры и влажности.
Датчики моего «умного дома», которые видит «Алиса»

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

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

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

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

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

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

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

Работа над ошибками

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

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

Вид изнутри корпуса ПК: шесть вентиляторов с желтыми наклейками, система охлаждения Deep Cool, зеленая подсветка оперативной памяти и синие LED-полосы на стенке корпуса.
Техники добавили ещё шесть мелких вентиляторов к имеющимся четырём большим

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

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

Таблица процессов GPU: 8 процессов python (PID 12348–12355) на GPU 0–7, тип C, потребление памяти от 226 до 327 MiB; строка приглашения (base) [root@localhost ~]#
Успех — обработка запустилась на графических ядрах, в максимуме памяти потребляется больше

А самое главное — модель и токенайзер нужно было явно перебросить на графическое ядро (там есть ещё какая-то автоматика, но как её правильно включить я пока не разобрался) вызовом метода to. В аргументе указывается cuda: и номер ядра. В моём случае — от нуля до семи.

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

time xargs -n1 -P14 python test.py < <(seq 0 13)

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

Четырнадцать процессов параллельно обрабатываются примерно за 40 секунд, один работает примерно за 17, больше половины времени занимает инициализация всего добра и загрузка модели.

Жаль я не смог запустить двадцать процессов  — памяти не хватило. Именно с этим числом процессов мне за десять минут почти удалось зажарить центральный процессор.

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

C in ChatGPT stands for Chinese room

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

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

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

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

Мне крайне удивительно как много людей насто́лько прониклись очарованием этой нейросети, что всерьёз размышляют о том как письменные эксперименты с ней позволят нам исследовать человека. Вот, свежее из канала «Метаверсище и ИИще»:

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

Занимайте ресёрчем самих себя и окружающих, пока есть возможность. Неинвазивно, в реальном времени, без всяких клинических испытаний и за 20 долларов в месяц (chatGPT Pro). Пока лавочку не закрыли.

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

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

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

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

«Кусто»

Сейчас для меня это странно, но в детстве, несмотря на то, что мне нравилось смотреть передачи о приключениях, я не был фанатом известного исследователя Жака-Ива Кусто. Хотя казалось бы — тайны романтика, изобретения, неизведанные уголки Земли…

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

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

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

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

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

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

«Спасибо» много будет…

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

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

Пришли в его комнатку, где лежал кирпич, я говорю «спасибо», навожу объектив, чтобы сделать фотографию, и вдруг слышу странное: «да „спасибо“ много будет».

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

Оказывается эта присказка звучит полностью как «„спасибо“ много будет, а вот червончик — в самый раз» и это он так намекает, что хочет денег.

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

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

Бессонный хакатон

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

А тут дочка после ветрянки подхватила какое-то ОРЗ с высокой температурой и у меня выдались две бессонные ночи — жена на конференции, мы с дочкой вдвоём. Из-за температуры она плохо спала, а я просыпался, потому что она меня часто будила.

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

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

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

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

Так я и определился с целью: выковырять содержимое этих журналов наружу, чтобы их можно было смотреть на моём ноутбуке не только в эмуляторе.

Обложка журнала ZX-РЕВЮ №11-12 за 1997 год с перечнем статей: описание оболочки, путеводитель, новые программы, форум, советы экспертов и каталог.
Обложка электронного журнала «ZX-Ревю» №№ 11, 12 за 1997-й год

Для начала я поискал чем можно расковырять формат, в котором распространяется журнал. Утилита нашлась быстро и я даже поправил в ней небольшой баг — она не собиралась под «МакОС».

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

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

В итоге получился набор инструментов из двух файлов на смеси bash и PHP.

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

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

Потом я эти скриншоты уже руками обверстал в HTML и планирую результат тоже положить на «Гитхаб», как только у меня закончится процесс оптимизации JPEG. Он очень долгий, но овчинка выделки стоит — около 20—25% экономии, а файлы там большие — по несколько мегабайт.

Как будет готово, напишу про это отдельный небольшой пост.

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

ZX-Ревю 11 и 12 за 1997 год

В результате своего хакатона я сконвертировал в формат HTML совмещённый номер 11 и 12 за 1997 год электронного журнала «ZX-Ревю». Результат захостил на «Гитхабе», можно посмотреть что получилось.

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

Совершенно без сил отправляюсь почивать.

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

Купил эргономичную клавиатуру

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

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

Эргономичная беспроводная клавиатура Logitech с раздельными секциями и подставкой для запястий, расположенная на синем ворсистом ковре.
Клавиатура Logitech ERGO K860 920-010110

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

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

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

Доставка детей

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

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

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

Жёлтый школьный автобус с розовой полосой едет по дороге под голубым небом с облаками; слева виден жёлтый автомобиль, справа — фигура человека на обочине.
Школьный автобус, развозящий детей но кружкам по версии нейросети Stable Diffusion

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

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

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

Заплата в крипте

Получил сегодня в телеграм такое предложение:

Добрый день, Евгений!🤟
Рассматриваете сейчас предложения?

В платежном агрегаторе «Енот» появилась интересная вакансия PHP Backend.
+ офис в центре Казани
+ вилка в районе […] (можно в крипте)
+ ДМС

Интересно будет обсудить?

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

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

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

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

А теперь неспеша всё отрефакторим

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

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

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

Так как я делаю всё под «Мак», программировать решил на «ЭплСкрипте» — так проще всего.

on is_running(appName)
    tell application "System Events" to (name of processes) contains appName
end is_running

set browsers to {"Safari", "Chrome", "Opera", "Firefox", "Edge", "Yandex"}

repeat with browser in browsers
    if is_running(browser) then
        tell application browser
            if exists window "ZX Spectrum online emulator" then
                log browser
                activate
                exit repeat
            end if
        end tell
    end if
end repeat

Что тут происходит? Я перебираю все известные мне браузеры по имени, ищу какие из них запущены, в них смотрю — называется ли активное окно «ZX Spectrum online emulator», если да, остаюсь в нём, сообщая наружу какой из браузеров найден.

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

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

BROWSER=$(osascript <<BROWSERS 2>&1
# … тут программа на «ЭплСкрипте»
BROWSERS
)

В итоге, в переменной $BROWSER будет лежать имя браузера или пусто, если подходящий не найден.

Перенаправление потока 2>&1 необходимо, так как команда log «ЭплСкрипта» выведет имя браузера в поток для ошибок, а конструкция $( … ) ждёт его в стандартном выводе.

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

Слухи

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

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

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

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

Версия про «шамот»

У меня появилась версия, почему вероятно дореволюционный кирпич «ШАМОТ» написан без «ера» (твёрдого знака в конце).

Таблица с данными о перевозках товаров: наименования (включая «глина гончарная, огнеупорная, шамот»), отправка и прибытие в Москву и Подмосковье, выделено слово «шамот».
Из книги «Краткій обзоръ коммерческой деятельности Московско-Виндаво-Рыбинской желѣзной дороги за 1905 год», С.-П., типография Брокгаузъ-Ефронъ, 1906

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

Если я прав, то на кирпиче, — сокращение от «шамотный», а в конце сокращений «ер» ставится не мог.

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

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

Откуда берутся слухи

В комментариях к моему каналу в «Телеграме» прислали ссылку на интервью на тему слухов с антропологом и фольклористом Александрой Архиповой.

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

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

Занимательно, что месяц назад в чате нашего жилищного комплекса обсуждали следующий слух (дословная цитата):

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

А сегодня в вышеприведённой статье я встретил следующее (2016-й год!):

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

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

Софт по подписке

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

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

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

Мне всё кажется, что «это „ж-ж-ж“ — неспроста» — с таким функционалом усилится давление по переходу на подписочные продукты. В самом деле, не буду же я сидеть, как дурак на своём «Маке» с лицензионным «МС Офисом» 2016-го года, когда кругом у всех будет «Офис 720», забитый по брови нейросетями, сочиняющими большую часть текста за человека?

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

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

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

Скриншоты из «ZX-Ревю»

Продолжаю писать про свой «бессонный хакатон».

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

Скриншот меню программы для ZX Spectrum: пункты «Полоса прокрутки», «Изменить цвет текста», подсказки F6–F12, заголовок «21 ПРИ ПРОСМОТРЕ ВНЕШНЕГО РАЗДЕЛА...
Получившийся, в результате проделанных ниже шагов, скриншот

Получились следующие шаги:

  1. в эмулятор, кроме виртуального «диска» с журналом подключаем второй пустой диск;
  2. листаем на нужный экран внутри эмулятора;
  3. нажимаем в эмуляторе кнопки SS+S;
  4. переводим в появившемся окне курсор в поле выбора дисковода, пишем там B;
  5. в этом же окне переводим курсор в поле «Имя файла», пишем туда номер текущей страницы;
  6. повторяем шаги 2—5 до конца раздела;
Скриншот интерфейса с диалоговым окном «Запись экрана на диск», где указан дисковод B и имя файла Screen02; на фоне — меню с настройками и инструкциями по клавишам.
Меню сохранения скриншота в файл внутри эмулятора, нужно выбрать дисковод и имя файла
  1. скидываем куда-то на диск компьютера образ со скриншотами;
  2. при помощи утилиты mctrd достаём из образа скриншоты;
  3. при помощи утилиты zx-image преобразовываем скриншоты в PNG;
  4. преобразовываем полученное в JPG, склеиваем с большой файл, закидываем в оболочку;

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

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

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

Бей, беги, замри

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

Ответ нашёлся в книге «Мальчик, которого растили как собаку» Брюса Перри и Майи Салавиц:

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

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

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

Конфликт поколений

У Бродского нашёл прекрасные строки про зуммеров:

Покуда призрак не ответит эхом
Последним воплям зуммера в ночи.

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

Бессонный хакатон: нажатие на кнопку

Продолжаю писать про свой бессонный хакатон.

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

Удивительно, но у меня это сделать не получилось — несмотря на то, что я слал кнопки как описано в документации, в эмуляторе ничего не происходило.

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

cliclick m:800,630 w:200 c:. w:200 m:+100,+100

Я просто закодировал координаты нужной кнопки в том месте, где у меня она была на экране. Одна проблема — кнопка после нажатия «залипала», но я решил тем, что через 200 миллисекунд отводил курсор в сторону — w:200 m:+100,+100 на птичьем языке утилиты.

Уже позже, во время рефакторинга, я обратил внимание, что когда я нажимаю кнопку на своём ноутбуке, то в эмуляторе иногда нажимаются не одна кнопка, а две. Если жать стрелки вниз или вверх, то в эмуляторе происходит нажатие на CS+6 и на CS+7 соответственно, причём оболочка электронного журнала правильно реагирует и на эту комбинацию, и на одиночные «6» и «7».

Для эксперимента попробовал слать вместе с основной клавишей ещё и клавишу-модификатор и меня ждал успех, правда пришлось перебрать их все. Получилась вот такая функция:

function press_key {
    local key
    if [[ "$1" =~ ^[0-9]{2,}$ ]]; then
        key="key code $1"
    else
        key="keystroke \"$1\""
    fi

    osascript <<PRESS
tell application "System Events" to $key using command down
delay .03
tell application "System Events" to $key
PRESS
}

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

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

Док ик ак ук (ftp-2-mail)

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

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

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

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

ftpmail@ftp.uni-stuttdart.de
ftpmail@doc.ic.ac.uk
ftpmail@suusite.unc.edu

Письмо могло выглядеть как-то так:

connect ftp.netscape.com anonymous user@example.org
cd pub/windows/netscape
binary
get netscape30.zip
quit

Если всё было правильно, обратно приходили пронумерованные письма с кусками бинарного файла в текстовом формате UUC. Их надо надо было собрать в правильном порядке в один файл и декодировать программой uudecode.

Откуда я брал имена FTP-серверов, честно говоря не помню, но помню кое-что другое.

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

Во-вторых, FTP позволял ходить по дереву папок удалённого сервера, как по файловой системе. Её содержимое можно было изучать, подавая специальные команды, но всё самое интересное как правильно лежали в папке pub (от слова public — публичное). Часто ещё была папка incoming, доступная на запись, — туда можно было положить что-нибудь, что нужно было передать владельцу сервера.

А в-третьих, сервисов с бесплатными ящиками не существовало, а студентам мой вуз адреса не давал, так откуда у меня было доступ к электронной почте?

Я его получил нечестным способом, — узнав пароль своего друга, аспиранта моей кафедры, Андрея Г. Аспиранты не студенты, им адреса почты положены были, и выдавались в виде Имя.Фамилия@ksu.ru.

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

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

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

Запись голоса на фоноавтограф

В 1857 году парижский издатель, библиотекарь и книготорговец Эдуар-Леон Скотт де Мартенвиль изобрёл, как считается, первое в мире звукозаписывающее устройство — фоноавтограф.

Первый прототип у него был ещё раньше, но в этом году он получил патент.

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

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

Иллюстрация фоноавтографа Эдуара-Леона Скотта де Мартенвиля 1860 года и его техническое описание с чертежами деталей на французском языке.
Внешний вид фоноавтографа и страница из описания его работы

В 2008-м году группой американских историков была обнаружена небольшая запись отрывка народной песни «Au Clair de la Lune» («При свете луны»). По словам исследователей, она сделана 9 апреля 1860 года на фоноавтографе.

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

Текстура серой ткани с горизонтальными рядами мелких точек или швов, создающими ритмичный узор; видна вертикальная складка по центру.
Часть записанной песни «Au Clair de la Lune»

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

Голос на фоне фоновых шумов поёт часть первого куплета песенки:

Au clair de la Lune
Mon ami Pierrot
Prête-moi ta plume
Pour écrire un mot

Или в переводе на русский язык:

При свете луны,
Друг мой, Пьеро,
Скорее одолжи перо,
Чтобы написать записку

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

Позже были преобразованы в звук и остальные записи, самые ранние из них — 1853—54 годов. Ниже несколько образцов.

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

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

Лёгкость

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

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

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

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

Я называю то, чему мне хочется научиться на этот раз, «лёгкостью».

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

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

Хочу так же. Хочу вернуть лёгкость.

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

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

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

1,25

Привык пользоваться «Ютьюбом» на скорости 1,25 — я там нередко какие-то лекции смотрю, на 1,5 это тяжело, а на 1,25 нормально воспринимается и времени меньше тратишь. Но когда ставлю плейлисты с клипами, иногда забываю переключиться на обычную скорость.

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

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

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

Импортный, фирменный

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

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

Женщина в жёлтом худи рассматривает пуховики на вешалках; жёлтый ценник: «Пуховик фирменный, демисезон 1900р. 4000р.
Фирменные пуховики — это что? А не фирменные — это какие?

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

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

Пыль на головках

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

На синем фоне белым пиксельным шрифтом написано «ПЫЛЬ НА ГОЛОВКАХІ» — сообщение об ошибке воспроизведения видеокассеты.
Заставка потерянного было видеоклипа «Пыль на головках!» (нет)

Цитирую:

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

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

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

CVE 2023-0567

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

Вот как это выглядит:

var_dump(password_verify("foo", '$2y$04$00000000$')); // true
var_dump(password_verify("bar", '$2y$04$00000000$')); // true

Удивляет, что один из разработчиков попытался защитить текущее поведение интерпретатора:

The documentation for password_verify() clearly states that the $hash has to be valid:

> hash
> A hash created by password_hash().

I fail to see how this is a bug if you feed it garbage; also the documentation to crypt states:

> Using characters outside of this range in the salt will cause crypt() to return a zero-length string. The two digit cost parameter is the base-2 logarithm of the iteration count for the underlying Blowfish-based hashing algorithm and must be in range 04-31, values outside this range will cause crypt() to fail.

PHP clearly behaves as described.

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

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

PHP’s implementation of crypt_blowfish differs from the upstream Openwall version by adding a «PHP Hack», which allows one to cut short the BCrypt salt by including a $ character within the characters that represent the salt.

Hashes that are affected by the «PHP Hack» may erroneously validate any password as valid when used with password_verify and when comparing the return value of crypt() against the input.

The PHP Hack exists since the first version of PHP’s own crypt_blowfish implementation that was added in 1e820ec.

No clear reason is given for the PHP Hack’s existence. This commit removes it, because BCrypt hashes containing a $ character in their salt are not valid BCrypt hashes.

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

«Ухарь-купец»

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

А тут при изучении сайта «Утерянные медиа», наталкиваюсь на новость, что в прошлом году удалось разыскать считавшийся утерянным фильм «Ухарь-купец» — первый российский цветной фильм 1909 года. И он целиком раскрашен вручную!

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

Вот это постпродакшн! Длительность фильма — около восьми минут, что даёт нам, при скорости съёмки 15 кадров в секунду по стандарту того времени 7200 кадров (8×60×15).

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

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

Лубок «Ухарь-купец»: купец в красной рубахе среди толпы, сцены деревни, стихотворный текст внизу.
Типо-литография торгового дома Е. Коновалова и Ко, хромолитография, начало 20-го века

«Ухарь-купец» — экранизация известной русской песни по стихотворению И. С. Никитина «Ехал из ярмарки ухарь-купец».

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

Было отчего — кончается стихотворение довольно мрачно:

Молится богу старуха-жена,
Плакать бы надо — не плачет она.
Дочь их красавица поздно пришла,
Девичью совесть вином залила.
Что тут за диво! и замуж пойдет…
То-то, чай, деток на путь наведет!
Кем ты, люд бедный, на свет порожден?
Кем ты на гибель и срам осужден?

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

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

Подарки в кредит

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

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

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

Возможно такое до сих пор принято, но я что-то очень давно о таком не слышал.

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

Яндекс.Стагнация

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

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

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

Возможно бывший «Сбербанк» становится новым «Яндексом»?

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

RAM-диск под macOS

Век живи, век учись, дураком помрёшь.

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

Подумал — нельзя создать диск в памяти (RAM-диск), чтобы попробовать шифрование на нём? Оказалось, можно, делается из командной строки:

diskutil erasevolume APFS 'RAM Disk' `hdiutil attach -nobrowse -nomount ram://XXXXX`

XXXXX тут — размер будущего диска в 512-байтных секторах. То есть, чтобы создать диск размером в один мегабайт, надо написать сюда число 2048: ram://2048.

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

Время просвечивает

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

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

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

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

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

Нейросоавтор

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

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

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

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

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

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

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

Ледовая переправа

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

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

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

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

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

Место слабости

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

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

Самолёт с двумя винтами на фоне снега и других самолётов в музее под открытым небом.
Один из самолётов в великолепном Музее гражданской авиации (2023 год)

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

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

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

Кофе через два часа

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

К сожалению эта привычка, по всей видимости, ухудшает качество жизни. Из статьи «Кофеиновая трилогия. Часть 2. Сколько можно пить кофе и когда?»:

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

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

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

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

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

Аденозин продолжает накапливаться, и уже часа в 4-5 вечера мы чувствуем вторую волну усталости. Снять её поможет кружечка кофе. Но эта же кружка окажет влияние на наш сон ночью. Впрочем, теме как улучшить сон и при чем здесь мелатонин, посвящен отдельный материал.

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

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

Случайный спектакль

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

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

Сцена с двумя занавесами: зелёным с надписью «Широка река» и бордовым — «Я, Ленка», украшенные аппликациями, цветами и рогами; за бордовым стоит женщина в платье.
Сцена, где нам всем предстояло выступать; в момент съёмки там шёл другой спектакль
Дети и взрослый наблюдают за кукольным представлением в декорациях с флагами и рогами оленя.
Дочь озвучивает мышь (в центре), мой выход нескоро, поэтому я могу поснимать

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

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

Как выключить проектор

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

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

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

Скриншот терминала с выводом команды dns-sd, отображающий список сетевых сервисов (AirPlay, Google Cast, принтеры, умная техника) и их параметры в формате таблицы.
Поиск сервиса Chromecast проектора через mDNS, сервис виден, можно подключаться

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

Так же у проектора есть вход HDMI, а у HDMI бывает CEC (Consumer Electronics Control) — протокол управления бытовой техникой, через него точно можно включать и выключать проектор, но чем это делать? Нужно какое-то оборудование, которое умеет подавать команды по сигналу. Из готового нагуглился только какой-то мутный адаптер, который надо подключать к компьютеру, для меня это не вариант.

В общем, если с _androidtvremote2 не выгорит, придётся покупать второй пульт.

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

«Нефор-2»

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

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

Скриншот игры Nefor II: вид сверху на город. Окно «Встреча с врагом»: «Перед Вами стоит гомосек», варианты: «Трясти с него деньги», «Напасть», «Уйти».
Скриншоты утерянной игры «Нефор II» (2007 год)

Один из пользователей Вконтакте в комментариях под кратким постом по этой игре написал, что когда-то создал с товарищем игру «Нефор II», вдохновлённую «Гопником».

Учётка автора игры удалена, но осталась короткая запись:

Виктор Терещенко: Мы с товарищем, вдохновившись «гопником», слепили тогда свою игру на VB6. Код и экзешники благополучно пролюблены (и хорошо, ибо адище), но осталась пара скриншотов -_-

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

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

Жаль, что автор потерял файл игры, я бы сыграл во что-нибудь такое.

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

Опять про шамотъ

Я тут недавно гадал почему на вроде бы дореволюционном кирпиче слово «ШАМОТ» написано без ера — твёрдого знака в конце. У меня родилась версия, которая мне очень нравилась, что «шамот» — это сокращение от «шамотный», а сокращениям ер не положен.

Свежепосещённый Ульяновск серьёзно пошатнул позиции моей теории! Ничего не предвещало встретить в Музее пожарной охраны кирпич князя Голицина со словом «ШАМОТЪ», написанным с, чёрт возьми, ером! А так хорошо день начинался!

Старинные кирпичи с надписями «МЯЗКГО ШАМОТЪ» и «FIRECLAY», выставленные в музее на подставке.
Кирпич из Ульяновска (лежит в Музее пожарной охраны) не оставил камня на камне от моей гипотезы

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

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

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

Зачем канавки

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

Два старых металлических инструмента с зубчатым краем лежат на светлой деревянной поверхности; один имеет выгравированный знак у основания.
Странная стамеска с канавками из Ульяновского музея балалайки (2023 год)

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

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

Как выключить рекламу в «Яндекс.Погоде»

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

Скриншот «О приложении» Яндекс Погода: версия 23.1.2, сборка 230010002. Кнопки: другие приложения, написать разработчикам, лицензия, конфиденциальность, без рекламы.
Переключатель, который выключает рекламу в приложении «Яндекс.Погода»

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

Ломаю себе мозг

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

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

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

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

Заметил, что даже дыхание иногда задерживаю, когда печатаю, видимо из-за повышенной концентрации.

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

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

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

1,5

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

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

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

Бессонный хакатон: где экран?

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

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

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

Эмулятор ZX Spectrum в браузере Opera: меню «ZX-РЕВЮ 11-12 1997» с пунктами «Описание оболочки», «Путеводитель», «Авторская разработка» и др.; внизу — виртуальная клавиатура.
Окно браузера, в котором запущен эмулятор; наша задача — понять где тут экран эмулируемого компьютера

Код для наложения фильтров выглядит следующим образом:

$im = imagecreatefrompng($screenshot_file);

imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_EDGEDETECT);

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

Эмулятор ZX Spectrum в браузере Opera: меню «ZX-РЕВЮ 11-12 1997» с пунктами «Описание оболочки», «Путеводитель» и др., внизу — виртуальная клавиатура.
Окно браузера после применения фильтров: переведено в ч/б, выделены края

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

const FRAME_W = 1039;
const FRAME_H = 808;
const FRAME_COLOR = 0xFFFFFF;
const FRAME_BORDER = 30;

$im = imagecreatefrompng($_SERVER["argv"][1]);

[$w, $h] = [imagesx($im), imagesy($im)];
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_EDGEDETECT);

for ($y = 0; $y <= $h - FRAME_H; $y++) {
    for ($x = 0; $x <= $w - FRAME_W; $x++) {
        $is_frame = imagecolorat($im, $x, $y) === FRAME_COLOR;

        for ($i = 1; $i<FRAME_W; $i+=2) {
            $is_frame = 
                $is_frame &&
                imagecolorat($im, $x + $i, $y) === FRAME_COLOR &&
                imagecolorat($im, $x + $i, $y + FRAME_H - 1) === FRAME_COLOR;

            if (!$is_frame) {
                break;
            }
        }

        if ($is_frame) {
            printf(
                "%d,%d\n",
                intdiv($x, 2) + FRAME_BORDER,
                intdiv($y, 2) + FRAME_BORDER
            );
            exit(0);
        }
    }
}
exit(1);

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

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

Поменял своё утро

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

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

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

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

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

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

← сюда туда →