AVIF в GD
Вчера ночью чах, в очередной раз, над форматом AVIF — мысль была в качестве эксперимента добавить его в наш документооборот — продукт, разработкой которого я управляю.
Сейчас, чтобы показать документ в браузере, мы его конвертируем в JPEG — дёшево, сердито и везде поддерживается. Но страницы получаются большими (200 с лишком килобайт каждая) и иногда грузятся дольше, чем хотелось бы. Вот я и придумал проверить гипотезу, что 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')); // trueGD это очень старый модуль, он родился, когда в PHP главенствовал процедурный модуль, поэтому его суть — функции; в PHP, если мы вызываем функции
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") !== [];
Пора выкинуть ёлку
После Нового года соседи потихоньку стали выбрасывать ёлки. У большинства сейчас пластик, но традиционалисты тоже встречаются. Лично у меня не получается воспринимать пластиковую ёлку как символ праздника, душа к этому не лежит.
И с тех пор, как мы с женой решили, что хотим отмечать этот праздник, мы ставим исключительно натуральные деревья.
С натуральной ёлкой есть только одно неудобство — утилизация. А именно, когда оттаскиваешь уже сухое дерево через коридор квартиры и дома, оно цепляется за всё ветками и с него опадает очень много иголок, которые потом приходится убирать.
Мы с женой несколько лет назад придумали срезать ветки секатором и складывать их в большие мешки для мусора — пышная пихта помещается примерно в три стодвадцатилитровых мешка, а голый ствол вынести легко.
Очень удобно и быстро. Соришь и убираешься в одном месте, а само занятие ненапряжное и даже
Сегментация современного интернета
В конце девяностых—начале нулевых мы постоянно поправляли тех, кто считал, что веб и интернет — это одно и то же. Веб только начинался, мы как раз его делали (в Казани было очень мало крупных сайтов, к которым я не приложил руку — верстал, программировал бэк и фронт, администрировал, модерировал и так далее) и он был только малой частью интернета.
Кроме веба у нас тогда были:
- «аська» — сверхпопулярный мессенджер;
- почта — тогда она была важной частью интернета, мы очень часто переписывались по почте;
- «ньюсы» — тематические группы общения по протоколу «news» (NNTP);
- «айэрси» — IRC, специализированные чаты, вроде современных групповых чатов «телеграма»;
- «эфтипи» — FTP, протокол обмена файлами, где мы постоянно искали необходимый софт;
…и чёрт знает что ещё, о чём я мог забыть —
Я хочу сказать, что интернет был крайне сегментированной штукой. Например, не существовало никакого способа поискать
Поисковые машины, которые тогда появлялись, пытались
Потом пришла эпоха веба, и всё это отошло на второй план. Мы стали всё тащить в веб — мессенджеры, магазины, почту, тематические группы и так далее. В большинстве случаев этот способ доступа к сервисам стал первичным — браузер стали рассматривать как новую операционную систему.
Любопытно, что сейчас мы переживаем обратное явление — сегментация вернулась и даже усугубилась. У нас несколько ходовых менеджеров сравнимой популярности, плюс новые их разновидности, вроде «Дискорда», закрытые снаружи соцсети со специальными приложениями под них, да и вообще — приложения считаются первичным способом входа, а иногда и единственным для очень многих сервисов.
Я всё чаще, пытаясь найти
Скучаю по временам бума текстовых блогов, когда почти наверное всё интересующее меня можно было так или иначе найти, не выходя из веба.
Если пофантазировать, решить мою проблему можно, — сделать
Если потом поверх прикрутить хороший поиск и нейроассистента, в которого можно было бы сказать «ну
Кажется это может быть частью нейроангела — концепции, которую я обдумываю на досуге. Это сервис, который решает рутинные вопросы в жизни, предвосхищает проблемы и подсказывает лайфкахи, когда они действительно нужны. Приложение с синтетической житейской смекалкой, которое могло бы стратегически направлять человека в жизни.
Разница между наукой и религией
Очень понравилось объяснение разницы между наукой и религией в книге «Отчаяние» Грега Игана:
Предположим, завтра всё человечество исчезнет с лица земли, и пройдет несколько миллионов лет, пока новые виды создадут свои религиозные и научные культуры. Что,
по-вашему, будет общего между новыми религиями и старыми — современными нам?
Полагаю, лишь некие этические принципы, возводимые к общему биологическому наследству: половому размножению, воспитанию детей, преимуществам альтруизма, ожиданию смерти. А если биология будет отличаться очень сильно, перекрытий может не быть вообще.
Однако, если мы подождём, пока новая научная культура придет к идее ТВ, тогда, я верю, насколько отличной ни выглядела бы та «на бумаге», она будет в конечном счёте математически сводимой к нашей ТВ — как любой первокурсник способен доказать, что все формулировки уравнений Максвелла описывают в точности одно и то же.
В этом и разница. Учёные начинают со споров, но приходят к согласию, независимо от культуры, к которой принадлежат.
Анекдот на Пайтоне
У меня есть друг, которому я регулярно шлю шутки про «Вархаммер». Сам в этой теме не разбираюсь, но хочется думать, что его они веселят. А я — тот самый друг, которому шлют то же, но на тему программирования. Пару раз даже присылали мои собственные шутеечки.
Вчера прислали известный неприличный анекдот про Василия Ивановича и Петьку, но написанный на «Пайтоне». И хотя у меня довольно пуританский блог, анекдот так вырвиглазно написан, что пришлось его переписать.
Вот что мне прислали:
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«Перемотка»
Вчера утром я поделился идеей поиска по всему, что человек
Программа называется «Перемотка» («Rewind»), работает по подписке — за двадцать долларов в месяц она будет локально сохранять всё то, что вы просматриваете, слушаете или смотрите с возможностью поиска.
К сожалению, я не могу её попробовать — требуется «Мак» на процессоре M1 или M2, а у меня «Интел», но я подумываю обновиться, если решусь, попробую обязательно. Думаю, она не понимает русский язык, но всё равно протестировать живое воплощение решения беспокоящей меня проблемы было бы очень интересно!
Будем дрессировать нейросети
Мой интерес к искусственному интеллекту до сих пор был скорее частным — на работе мы этот класс алгоритмов почти не использовали, хотя и делали осторожные подходы к предмету. Но всё меняется — в последнее время активно исследуем тему, дошли даже до того, чтобы попробовать растить собственные модели. Всё это пока немного «на коленке», первые опыты — собираем своей первый стенд из того, что удалось быстро раздобыть.
Потом собираемся прикупить четыре «Теслы» T4, чтобы вставить их в серверный четырёхюнитовый корпус, но это всё быстро в наше время не раздобыть.
Angie
Спросили как я отношусь к появлению Angie — отечественного форка известнейшего
Это минимальный набор инструментов, чтобы сделать любой сайт. Времена менялись, Перл сменился ПХП, тот уступил Пайтону, МайЭсКуЭль заменила МарияДБ, но аббревиатура держалась.
Всё сломалось, когда пришёл nginx и вытеснил Апач.
Мне было жаль LAMP, — аббревиатуру, которую я знал с начала веба, но теперь есть шанс, что она починится по крайней мере на территории нашей страны.
А если серьёзно, никаких заметных телодвижений ребята пока не сделали, поэтому не вижу повода о них разговаривать. В стране постоянно появляются форки известных западных продуктов (в реестре отечественного ПО они достаточно заметны) и с тем же постоянством исчезают.
Может ли рукотворное творить?
Сейчас по соцсетям летает картинка твита с текстом:
Фантасты как всегда все предсказали с точностью до наоборот. Они думали, что роботы будут заниматься тяжелым физическим трудом, а человек — творчеством…
Не знаю почему она многим так нравится, — трудно придумать менее правдивое высказывание. Оставим в стороне то, что фантасты предсказаниями
В любой квартире
Если пойти на производство, то там станки с ЧПУ, всякие сборочные конвейеры и ещё чёрт знает что, я в этом слабо разбираюсь, но достаточно глянуть любое видео промышленного производства, чтобы убедиться, что там роботов, облегчающих физический труд, —
Это настолько обыденные вещи, что про них, видимо, не все вспоминают. Тем не менее это роботы. Возможно многие ждали антропоморфных помощников, но и интеллектуальные помощники,
Творить, кстати, машины не умеют и при текущих подходах у них это не получится. Творчество — трудноформализируемая штука, но один из его признаков — муки. Нет мук, нет творчества. То, что получается просто — не творчество.
ШАМОТ
Продолжаю потихоньку разгребать коллекцию сфотографированных кирпичных клейм, которые у меня накопились за прошедший год. На этот раз — кирпич с клеймом «ШАМОТ».
Кирпич, судя по найденному, произведен на заводе огнеупорного кирпича Общества производства глины и гончарной продукции «Шамот» в г. Боровичи. Немного истории:
«Товарищество производства глиняных и гончарных изделий в г. Боровичи» было учреждено 3 июля 1892 г. «для содержания и распространения действий завода глиняных и гончарных изделий». Учредителями товарищества на паях стали:
инженер-технолог Ф. К. Тауцен, статский советник Н. В. Нерлинг и статский советник В. К. Бекман. В мае 1892 г. Ф. К. Тауцен купил у лужского мещанина В. Г. Антропова с публичных торгов землю «Лысцово» со строениями. […]
В феврале 1913 г. наименование Товарищества было изменено на «Товарищество производства глиняных и гончарных изделий „Шамот“ в городе Боровичах». В июне Товарищество было ликвидировано, недвижимое имущество приобрело «Общество Боровичского завода огнеупорных и кислотоупорных изделий и канализационных труб, бывш. К. Вахтер и К°».
Меня смущает только один момент — если общество «Шамот» прекратило своё существование в феврале 1913 года, то почему на кирпиче нет ера? Почему «ШАМОТ», а не «ШАМОТЪ»?
Добавлено: у меня появилась версия про «шамот» — думаю, это не слово, а сокращение, поэтому «ъ» тут не нужен.
Вещи с историей
Очень люблю вещи с историей. Не в смысле, что о них есть что рассказать, а «со следами бытования», как пишут на сайтах объявлений.
При этом всякие там искусственные потёртости и состаривание меня совершенно не трогают, хотя
Я долго пытался отрефлексировать эту разницу, но так и не пришёл
Возможно это
В общем, эта тема довольно часто занимает мой ум, но КПД в данном случае невелик, — за годы периодических размышлений я так никуда и не продвинулся.
Таймеры в «Яндекс.Алисе»
У меня «умный дом» в большей степени завязан на «Алису» — я пользуюсь встроенными интеграциями с различными экосистемами, так как придерживаться одного производителя нереально — это слишком сильно ограничивает выбор. И эта алисоцентрированность меня иногда подводит.
В «Алисе» нет некоторых вещей, которые я считаю необходимыми, но это полбеды. Гораздо хуже, что иногда не работает то, что есть. Это производит очень плохое впечатление и совершенно не красит такую крупную компанию как «Яндекс».
Я широко пользуюсь таймерами в «Алисе», — например, в сценарии «спокойной ночи» «Алиса» начинает играть колыбельные, которые выключаются через 50 минут. Это удобно, но беда в том, что таймеры не всегда срабатывают и это расстраивает, на это не я один жалуюсь.
Сегодня утром у меня не сработал запрограммированный сценарий открытия штор в спальне. Я не знаю почему — «Алиса» не сообщает.
Выглядит как
GBox для Huwaei ★
Три года назад, пройдя от любви до ненависти к «Самсунгу» один шаг, я перешёл на «Хуавей», рискнув попытаться обойтись без гугловых сервисов. Честно сказать, продержался недолго — пришлось взламывать смартфон и почти сорокаминутным шаманством возвращаться в зону комфорта.
После этого ставить можно было что угодно, но работало не очень — уведомления не доходили, «Мир пэй» работать отказался, синтез и распознавание речи — тоже, а в смартфоне торчало
В конце прошлого года, озаботившись выбором новой кофеварки, я потерял бдительность и вместо этого купил себе новый смартфон.
Я уже давно хотел побаловать себя апгрейдом смартфона, и консультант в магазине, почуяв мои колебания рядом со стендом «Хуавея», мастерски разбил каждый пункт моих сомнений. В том числе показал мне способ как не страдать от отсутствия сервисов «Гугла».
Оказывается существует панацея — приложение GBox. Оно ставится прямо из собственного магазина «Хуавея» и запускает внутри себя любое гугловое приложение (включая «Гугл Плей»), притворяясь для него смартфоном, свободным от санкций. В моём случае это
Всё гугловое запускается в некой изолированной среде, а наружу создаются ярлыки, отдельные для каждого приложения. Удивительно, но работают даже
Мне такой способ понравился значительно больше — не засоряется система, и приложения, типа «Мир пэя», не сходят с ума от противоестественного симбиоза сервисов «Гугла» и «Хуавея».
Щели в ламинате
У меня тут ламинат разошёлся, — под влиянием изменившейся влажности и температуры в одном из стыков появилась очень заметная щель. Как назло, появилась в самом видном месте, что причиняло мне неиллюзорные страдания — квартира же новая, мы ещё не насладились атмосферой идеального жилища, какие щели, ну?
Проблема распространённая, — кажется везде, где я видел ламинат на больших площадях, рано или поздно происходит то же самое. А раз распространённая, наверняка
Моя фантазия родила некую гипертрофированную машину в стиле чиндогу с двумя вантузами, которая потихоньку стягивает доски вместе, но в реальности всё оказалось поколхознее и попроще.
На «Ютьюбе» нашёлся простой, как три копейки, способ, — берём профиль с квадратным сечением, приклеиваем его по всей длине хорошим двухсторонним скотчем к ламинату, предварительно обезжирив поверхность, ждём когда схватится, потом со всей дури стучим по торцу молотком.
Щель закрылась как миленькая, я даже не ожидал, что это будет так просто. Но нашлась проблема посерьёзнее — как отклеить трубу от пола,
В общем, рабочий способ, 5/5, рекомендую.
Гадание по «яблоку»
Недавно подруга, будучи у нас в гостях на новоселье, обратила внимание на пластинку, которую я позаимствовал на время из кафе одного моего приятеля — на ней слово «шёпот» написано в дореформенном виде — «шопот».
Из чего можно сделать вывод, что выпущена она до реформы 1956 года, а если судить по отсутствующей букве «ё» с слове «берёза», пластинка военная или даже довоенная — эта буква была обязательна с 1942 по 1956 годы.
Это меня заинтересовало, решил её погуглить, но неудачно — в интернете информации о ней не встречается, есть только упоминание в книжке «Полный каталог пластинок для граммофона» музыкального треста «Музпред» 1926 года.
Это совпадает с датировкой по «яблоку» — пластинки с такой этикеткой выпускались с 1924 по 1927 годы.
Видимо попалось
На каждой стороне выбиты по две надписи, на стороне с «Шопотом роз»
Надеюсь эти сведения
Заказ щедро оплачен
На днях баловался со стилями магазина «Озон» при помощи браузерного плагина Stylus — избавлялся от навязчивой рекламы внутри списка товаров. Это те бесячие предложения, которые игнорируют выбранную сортировку.
Скрипт приводить не буду, всё равно его приходится править время от времени — у «Озона» используется фреймворк «vue»
Заодно, в качестве баловства, заменил себе надпись «Заказ оплачен» на «Заказ щедро оплачен». Эту часть могу привести, может
.tsBodyM[data-widget="orderStatus"]::before {
content: 'Заказ щедро оплачен';
color: var(--ozTextPrimaryNegative);
font-size: var(--bodyMFont);
line-height: 1.29;
}
Качество воды
Купил себе прибор для контроля качества воды —
Когда ещё жили на прежней квартире, заметил, что вода
Выбор пал на
В паспорте прибора написано, что он измеряет количество растворённых частиц (по всей видимости — солей) с поправкой на температуру. Измерять просто: включаем, опускаем в воду, смотрим на цифры.
Цифры трактуются следующим образом:
0…50 — идеальная питьевая вода;
50…100 — приемлемая вода;
100…200 — тяжёлая вода;
200…300 — на грани допустимого;
300…500 — приемлемая вода из под крана;
500+ — высокий уровень загрязнения.
Измерил так непонравившуюся мне воду в квартире, действительно, показатели как у хорошей водопроводной воды, но после
В офисе у нас бутилированная вода, которая мне нравится по вкусу, и прибор, в полном соответствии с ожиданиями, показал мне цифры идеальной питьевой воды.
Как будто бы всё работает.
Недавно выпал случай ещё раз в этом убедиться — на новой квартире фильтрованная вода (она у нас централизованно фильтруется во всём доме) стала немного отдавать водопроводной, замерил прибором — показало 89, на уровне «приемлемой воды».
Горячие русские нейросети
Недавно показывал наш набор начинающего гуртовщика нейросетей. На днях мы докупили недостающее и собрали машинку для экспериментов, которую я мучаю уже второй день.
На ней достаточно успешно запустился мой прототип и даже показал очень хорошие результаты по качеству, но время работы оставляет желать лучшего —
В этой связи очень вовремя у меня в комментариях появился представитель «Селектела», вчера мы связались, надеюсь сегодня получится взять у них
Если один процесс наша машина ещё вытягивает, то двадцать процессов, запущенные параллельно, тут же превратили корпус в финскую баню — снаружи температура почти 43°, на центральном процессоре — 79, слишком горячо. Такое ощущение, что моё
В общем, эксперимент по запуску параллельных процессов пришлось прервать, побоялся перегреть процессор. Попробую ещё запустить двадцать потоков, может так эффективнее будет.
Чего не хватает в «Алисе»
Спросили чего мне не хватает в «Алисе». Чтобы описать, надо последить за своими сценариями, крепко подумать, а потом тщательно всё описать. С таким планом отвечать я буду вечность. Поэтому опишу всего один пункт, мне его не хватает сильнее всего.
У меня дома, помимо датчиков воздуха, о качестве которого я регулярно пишу, есть несколько датчиков утечки воды и датчик дыма
Я надеялся сделать сигнальные сценарии, которые при утечке и/или дыме слали бы мне на смартфон уведомление.
В MiHome мне это удалось без проблем — простой двухшаговый сценарий «если сработал датчик, то послать уведомление на телефон».
Но тут выяснилось, что «Алиса» на такое неспособна. В группе для бывших сотрудников «Яндекса» мне так и сказали, что такой возможности сейчас нет, порекомендовали запрограммировать колонку на проигрывание громкого звука в момент срабатывания датчика.
Но это не одно и то же, разумеется. Не хочу, чтобы показалось, что я хвастаюсь своей социальной жизнью, но в момент утечки воды или возгорания, не могу обещать обязательно быть дома.
В общем, отсутствующая возможность отправки уведомлений из сценариев «Алисы» возглавляет мой список того, что мне очень бы хотелось чтобы было.
Работа над ошибками
Вчера я писал о том как я чуть не прожарил нашу машину с графическими процессорами, а сегодня мы сделали работу над ошибками.
Начали с того, что техники на всякий случай установили больше вентиляторов. Правда, не знаю, помогло ли это
А самое главное — модель и токенайзер нужно было явно перебросить на графическое ядро (там есть ещё
Это всё отжирает чуть меньше половины памяти одного ядра, так что в параллели удаётся запустить четырнадцать процессов. Возможно, если перейти на потоки, будет лучше, но пока так. Тестировал очень просто:
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, пока он ещё в новинку, очень увлекательное занятие,
Пока всё, что мы знаем, говорит о том, что нейросети лишь очень схематично, поверхностно показывают нам как работает мозг. И уж тем более нельзя напрямую сравнивать эффективную «китайскую комнату», действующую совершенно механически, и осознающий себя человеческий мозг.
«Кусто»
Сейчас для меня это странно, но в детстве, несмотря на то, что мне нравилось смотреть передачи о приключениях, я не был фанатом известного исследователя
Ну, в общем, не фанател, хотя его «Подводную одиссею» поглядывал с интересом.
Сейчас же — напротив, когда невзначай в ленте выхватываю
На днях как раз решил нагуглить о нём
В жизни шапка выглядит ровно такой, как в интернете, очень доволен. Дочка тут же напялила её на себя и весь вечер уговаривала меня подарить шапку ей, еле забрал. Похоже, у меня появился новый любимый отечественный бренд взамен уже поднадоевшего «Mother Russia».
«Спасибо» много будет…
Показал свои фотки, рассказал, что фотографирую кирпичные клейма — такое хобби. А он как раз недавно
Пришли в его комнатку, где лежал кирпич, я говорю «спасибо», навожу объектив, чтобы сделать фотографию, и вдруг слышу странное: «да „спасибо“ много будет».
Это я сейчас знаю, что это хоть и почти забытое, но расхожее выражение, а тогда совершенно не понял что он имеет ввиду, поэтому переспросил что это означает.
Оказывается эта присказка звучит полностью как «„спасибо“ много будет, а вот червончик — в самый раз» и это он так намекает, что хочет денег.
Как выяснилось, он перепутал меня с коллекционерами кирпичей, — плохо слушал, бывает, вот и пытался мне кирпич этот продать. Ну я объяснил разницу, так что обошлись без денег.
Бессонный хакатон
Думаю
А тут дочка после ветрянки подхватила
В итоге, было проще не спать, чем спать вот так урывками, но просто так без сна листать ленты социальных сетей скучно, и я надумал устроить себе хакатон.
Условия — до рассвета решить
В момент этого решения я как раз долистал
Некоторые из них я тогда не смог посмотреть, так как они были в виде программ для «Спектрума» — издательство пыталось перейти на более прогрессивный формат электронного журнала.
Так я и определился с целью: выковырять содержимое этих журналов наружу, чтобы их можно было смотреть на моём ноутбуке не только в эмуляторе.
Для начала я поискал чем можно расковырять формат, в котором распространяется журнал. Утилита нашлась быстро и я даже поправил в ней небольшой баг — она не собиралась под «МакОС».
Изучение расковырянного содержимого принесло одно расстройство — внутри оказалось бинарное представление программы на Бейсике и несколько файлов неизвестного формата. Судя по тому как отображается журнал в эмуляторе, формат не текстовый. Вряд ли я бы справился с его обратным инжинирингом за ночь.
Поэтому я решил попробовать другую идею — сделать автоматическую скриншотилку, которая сдирала бы содержимое экрана эмулятора и собирала бы из него длинный графический файл. Так как у журнала двухуровневое меню, файлов должно образоваться несколько, а всю интерактивщину я решить сделать в обычном HTML и CSS.
В итоге получился набор инструментов из двух файлов на смеси bash и PHP.
Первый, make_screenshots скриншотит эмулятор, вырезает оттуда экран «Спектрума», жмёт на кнопку «вниз», заботится о том, чтобы экраны не дублировались и понимает когда больше не удаётся пролистнуть. Многие вещи там захардкожены — например, задержки, положение экрана эмулятора и кнопки на виртуальной клавиатуре.
Второй, convert_to_jpegs превращает полученный набор скриншотов в файлы JPEG. Во множественном числе, потому что оказалось, что максимальная высота файла JPEG — 65535 пикселей. В такую высоту у меня всё не влезало, поэтому пришлось разбивать получающуюся простыню два файла. Вообще, можно было бы использовать PNG, там такого ограничения нет, но он в таком размере очень сильно нагружает браузер.
Потом я эти скриншоты уже руками обверстал в HTML и планирую результат тоже положить на «Гитхаб», как только у меня закончится процесс оптимизации JPEG. Он очень долгий, но овчинка выделки стоит — около 20—25% экономии, а файлы там большие — по несколько мегабайт.
Как будет готово, напишу про это отдельный небольшой пост.
ZX-Ревю 11 и 12 за 1997 год
В результате своего хакатона я сконвертировал в формат HTML совмещённый номер 11 и 12 за 1997 год электронного журнала «ZX-Ревю». Результат захостил на «Гитхабе», можно посмотреть что получилось.
Вся навигация — курсором мыши, на пункты меню можно щёлкать, текст прокручивается (полосы прокрутки не видно, так как в оригинале её тоже нет).
Совершенно без сил отправляюсь почивать.
Купил эргономичную клавиатуру
Несмотря на то, что я много сижу за ноутбуком, надолго забыл что такое боль в руках. Когда работал за стационарным компьютером, иногда сталкивался с болью, но придумал периодически перекладывать мышь с правой стороны на левую и наоборот, это решило проблему.
На ноуте мышью я не пользую и горя не знал, пока месяцы назад у меня не стали болеть внутри руки сухожилия безымянных пальцев и мизинцев на обеих руках. Думаю это
Придумал попробовать эргономичную клавиатуру. Заказал себе её на бонусы в одном из магазинов техники, на днях получил, но пока не знаю, решит ли она мои проблемы, так как не учёл одну штуку — как теперь пользоваться тачпадом?
Придётся теперь покупать ещё и выносной тачпад. Очень громоздко
Доставка детей
Дочка сейчас, помимо школы, посещает три кружка — скалолазание,
На это всё дочку надо возить и даже три кружка близки к пределу возможностей моей жены (у неё гибкий график, а у меня нет, поэтому возит дочку по кружкам именно она).
И недавно я подумал, — коронавирусное время, когда мы все сидели по домам, подарило нам развитую доставку всего.
Мне сложно подробно представить логистику и экономику такой доставки, но появись она, как будто было бы достаточно выгодно и родителям, и кружкам.
В конце концов в тучные года «Икея» развозила же своих покупателей на автобусах бесплатно, почему бы кооперации кружков не делать так же? Я даже готов приплачивать.
Заплата в крипте
Получил сегодня в телеграм такое предложение:
Добрый день, Евгений!🤟
Рассматриваете сейчас предложения?
В платежном агрегаторе «Енот» появилась интересная вакансия PHP Backend.
+ офис в центре Казани
+ вилка в районе […] (можно в крипте)
+ ДМС
Интересно будет обсудить?
Мне постоянно
Удивило, что предлагают зарплату в крипте, не сталкивался с таким. На заре моей профессиональной деятельности плюсом считалась зарплата в наличных долларах, — разумеется это было нелегально, так уходили от налогов и получали в карман более твёрдую валюту.
Тут, видимо, смысл только в уходе от налогов, так как получать деньги в настолько волатильной валюте как крипта, лично мне
А теперь неспеша всё отрефакторим
Несколько дней назад я рассказывал о своём бессоном хакатоне, — ухаживая за дочкой во время её болезни, я особо не спал, а чтобы не умереть от безделья, придумал себе задачу — за ночь изобрести и реализовать способ вытащить из эмулятора спектрумовский электронный журнал «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% съёмная. Я опять возражаю — встречал хозяина несколько раз, он сам там живёт.
То есть человек уверенно подаёт свои домыслы в форме факта . Думаю, даже не замечая этого. Потом другие люди дальше будут транслировать её догадки как свидетельство очевидца, дополняя их своими догадками, опять же в форме фактов.
Версия про «шамот»
У меня появилась версия, почему вероятно дореволюционный кирпич «ШАМОТ» написан без «ера» (твёрдого знака в конце).
Думаю, слова «шамот» не существовало, было прилагательное «шамотный» и, как мне показалось после штудирования различных книг, существительное «шамота».
Если я прав, то на кирпиче, — сокращение от «шамотный», а в конце сокращений «ер» ставится не мог.
Хотя многие неспециалисты рассматривают его как обязательную заглушку после гласной, на самом деле он полноценная часть слова,
Откуда берутся слухи
В комментариях к моему каналу в «Телеграме» прислали ссылку на интервью на тему слухов с антропологом и фольклористом Александрой Архиповой.
В статье рассматриваются не все виды слухов, а так называемые «городские легенды» — слухи
Основной вывод статьи — люди при пересказе преувеличивают
Занимательно, что месяц назад в чате нашего жилищного комплекса обсуждали следующий слух (дословная цитата):
Тоже сегодня присылали такое сообщение, что детей просят включить газ и идти ложится отдыхать.
А сегодня в вышеприведённой статье я встретил следующее
История про газовщиков — это отголосок истории про «фей Винкс», которая очень активно прошла в 2016 году (рассылка сообщений, где детям предлагалось стать феей Винкс — для этого надо было открыть в квартире газ, и тогда ты полетишь).
Tulia — Nothing Else Matters
Уже немного старое, но прекрасное:
Софт по подписке
Если есть возможность этого избежать, то стараюсь не покупать софт по подписке. Мне не нравится сама концепция, я считаю её победой компаний, продающих софт и проигрышем покупателя. В самом деле я не понимаю зачем мне продолжать платить за софт, который я уже купил и который меня всем устраивает.
На этом фоне гибридные схемы (отключаешь подписку, остаёшься со старой версией софта) меня
Сейчас время второго пришествия нейросетей и многие крупные корпорации кинулись прикручивать нейросети в свои продукты — «Микрософт» встраивает сети
Мне всё кажется, что «это
А подписку оправдать просто — нужные для работы продукта нейросети тяжёлые, требуется много железа для того, чтобы они работали, вот поэтому и нужно платить — лизинг оборудования, свет, помещение, замена комплектующих, персонал, интернет, вот это всё.
А когда ChatGPT сможет считаться на любом дешманском смартфоне, будет уже поздно — подписочная модель победит окончательно, разовая лицензия перестанет существовать и больше не появится — компании с подписочной моделью гребут больше денег, конкуренты без неё вымрут.
Скриншоты из «ZX-Ревю»
Продолжаю писать про свой «бессонный хакатон».
В комментариях к первой заметке читатель Евгений Суреев посоветовал использовать внутренние средства оболочки электронного журнала, чтобы получать скриншоты. Этот способ существует, но мне он показался чересчур сложным и медленным. Но для очистки совести я сего всё же попробовал.
Получились следующие шаги:
- в эмулятор, кроме виртуального «диска» с журналом подключаем второй пустой диск;
- листаем на нужный экран внутри эмулятора;
- нажимаем в эмуляторе кнопки SS+S;
- переводим в появившемся окне курсор в поле выбора дисковода, пишем там B;
- в этом же окне переводим курсор в поле «Имя файла», пишем туда номер текущей страницы;
- повторяем шаги 2—5 до конца раздела;
- скидываем
куда-то на диск компьютера образ со скриншотами; - при помощи утилиты mctrd достаём из образа скриншоты;
- при помощи утилиты zx-image преобразовываем скриншоты в PNG;
- преобразовываем полученное в JPG, склеиваем с большой файл, закидываем в оболочку;
Весь этот интерактив с браузером (вызвать меню, ввести диск, ввести имя) — довольно долгий,
В общем, кажется слишком много проблем, которые надо решать, причём я ещё не знаю удастся ли их решить хорошо.
Бей, беги, замри
Всегда было интересно чем обусловлена стратегия «замри» в известной троице реакций на стресс «бей, беги, замри». Должно же у неё быть
Ответ нашёлся в книге «Мальчик, которого растили как собаку» Брюса Перри и Майи Салавиц:
Для грудных детей и малышей, неспособных драться или убежать, обычна реакция отстранения в случае угрозы.
[…]
В процессе «отстранения» мозг подготавливает тело к возможной травме (ранению). Кровь отливает от конечностей и сердечный ритм замедляется, чтобы уменьшить возможную потерю крови. Нейроэндокринная система выбрасывает целый поток эндогенных опиоидов — вырабатываемых организмом веществ, по действию подобных героину, устраняющих боль, способствующих успокоению и ощущению психологической отстраненности от происходящего.
Резюмируя, — эта стратегия помогает дождаться помощи в случае ранения. Видимо достаточно часто это помогало выжить.
Конфликт поколений
У Бродского нашёл прекрасные строки про зуммеров:
Покуда призрак не ответит эхом
Последним воплям зуммера в ночи.
Бессонный хакатон: нажатие на кнопку
Продолжаю писать про свой бессонный хакатон.
В решении, которое я накидал за ту ночь, планировалось нажимать на кнопки эмулятора «ЭплСкриптом» — на «Маке» это логичнее всего, так как этот язык заточен как раз под такие задачи — автоматизацию работы со сторонними графическими приложениями.
Удивительно, но у меня это сделать не получилось — несмотря на то, что я слал кнопки как описано в документации, в эмуляторе ничего не происходило.
Так как время уходило, — сроку я себе выделил до утра, пришлось использовать другое решение — через утилиту 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)
Примерно
Это специальный протокол для хостинга файлов, сейчас он всё ещё используется, но распространён мало. Надо упомянуть, что 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-серверов, честно говоря не помню, но помню
Я его получил нечестным способом, — узнав пароль своего друга, аспиранта моей кафедры, Андрея Г. Аспиранты не студенты, им адреса почты положены были, и выдавались в виде Имя.Фамилия@ksu.ru.
Андрей
Андрей поменял пароль и рассказал об этом мне. Кажется я сам ему признался, что это был я, на что он посмеявшись, дал мне новый пароль, но попросил быть впредь осторожнее и больше не заказывать такие большие файлы.
Запись голоса на фоноавтограф
В 1857 году парижский издатель, библиотекарь и книготорговец
Первый прототип у него был ещё раньше, но в этом году он получил патент.
Звук собирался раструбом и улавливался чувствительной мембраной соединённой с иглой, оставляющая след на покрытой сажей бумаге, которой был обёрнут вращаемый при помощи ручки стеклянный цилиндр.
Это был скорее аттракцион — проиграть такой звук в то время было невозможно, да изобретатель на это и не надеялся.
Запись выглядит, как вполне различимые светлые закорючки на подкопчённой бумаге.
Ученым из Национальной лаборатории имени Лоуренса в Беркли удалось, используя отсканированное с высоким разрешением изображение фонограммы, применить современную технологию для извлечения звука из рисунков. Качество звука, конечно, не очень, да и скорость с которой нужно проиграть запись точно неизвестна, но слова разобрать можно.
Голос на фоне фоновых шумов поёт часть первого куплета песенки:
Au clair de la Lune
Mon ami Pierrot
Prête-moi ta plume
Pour écrire un mot
Или в переводе на русский язык:
При свете луны,
Друг мой, Пьеро,
Скорее одолжи перо,
Чтобы написать записку
Изначально решили, что на записи женщина, но позже выяснилось, что скорость воспроизведения подобрана неправильно и на записи мужской голос, вероятно поёт сам изобретатель.
Позже были преобразованы в звук и остальные записи, самые ранние из них — 1853—54 годов. Ниже несколько образцов.
Большинство записей звучат совершенно неразборчиво, мы знаем что на них только благодаря тому, что они подписаны. Но всё равно услышать звук, которому около 170 лет, очень волнующе.
Лёгкость
Думаю уже несколько лет мысль, что блог очень удобный инструмент для того, чтобы учиться некоторым вещам. Hапример,
Мне кажется качество текста у меня действительно выросло, — я начал больше работать над структурой предложений, начал разбивать их на более простые части, чаще использовать синонимы, пытался сознательно выстроить логику нарратива и научился
Впрочем, я выучил и ещё один урок — после такого насилия над собой требуется длительный отдых.
В этом году я решил попробовать нечто совсем иное — просто писать всё, что приходит в голову, несмотря ни на что. Мне нравится это — пишу. Купил шапку, которая вызвала у меня эмоции — написал, всплыло воспоминание о том как я
Я называю то, чему мне хочется научиться на этот раз, «лёгкостью».
Это то, как мне кажется, что у меня было
Если посмотреть на характер постов в Живом Журнале в начале
Хочу так же. Хочу вернуть лёгкость.
Я как будто начал стесняться писать о бо́льшей части вещей, которые меня занимают. Стал внутренне примерять свои посты на аудиторию. Непонятно зачем. Я не собираюсь становиться популярным блогером, времена, когда у меня тут было сорок тысяч человек давно прошли и возвращать их не хочется — это был большой стресс. С популярностью пришёл и хейт, я сейчас такое не вывезу.
Кажется такое внутреннее освобождение уже даёт свои плоды, —
1,25
Привык пользоваться «Ютьюбом» на скорости 1,25 — я там нередко
Это порождает неприятную проблему — под некоторое настроение люблю
Вот бы «Ютьюб» на старте ролика сделал
Импортный, фирменный
Сегодня в переходе зацепил глазами распродажу «фирменных» пуховиков и понял, что окончательно потерял понимание того, что, собственно, сейчас означает слово «фирменный». Ну и «импортный» тоже.
Как мне кажется, слово «фирменный» в пике своего использования, ещё
Пыль на головках
На сайте «Утерянные медиа», где отслеживаются истории поиска различных потерянных медиа — мультфильмов, фильмов, игр, телевизионных передач и прочего, есть замечательная история поиска видеоклипа «Пыль на головках». Клип успешно нашли, но оказалось, что в названии есть серьёзная ошибка.
Цитирую:
«Пыль на головках» — не кадр клипа песни и не название песни. Эта ошибка высвечивается при оцифровке, когда головки магнитофона засорены пылью. Возможно, римская цифра на конце названия обозначает восклицательный знак, который отсутствует в наборе символов.
Искомая же песня на самом деле называлась «Красные фантики», в 1989 году её выпустил Чернецов Геннадий Герасимович, более известный как Пророк Санбой.
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 isthe base-2 logarithm of the iteration count for the underlyingBlowfish-based hashing algorithm and must be in range04-31, values outside this range will cause crypt() to fail.PHP clearly behaves as described.
Что бы ни было написано в документации, возвращать true на любой пароль из функции проверки правильности пароля — очень плохая идея, как мне кажется, это должно быть довольно очевидно.
При анализе оказалось, что баг занесён ещё
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.
«Ухарь-купец»
Не знал, что в начале двадцатого века существовало такое явление, как раскрашенные вручную фильмы. Как и многие, я слышал, что
А тут при изучении сайта «Утерянные медиа», наталкиваюсь на новость, что в прошлом году удалось разыскать считавшийся утерянным фильм «
Вот это постпродакшн! Длительность фильма — около восьми минут, что даёт нам, при скорости съёмки 15 кадров в секунду по стандарту того времени 7200 кадров (8×60×15).
Красили, правда, насколько я мог разобраться, не кисточкой, а методом вирирования, — это способ, который изобрёл Жорж Мельес, один из основоположников кинематографа. Метод заключался в вырезании трафаретов из напечатанных с плёнки дополнительных позитивов, при помощи которых покадрово наносились оттеночные химикаты.
Это едва ли не сложнее, чем покрасить плёнку обычной кисточкой, но с точки зрения получения нескольких копий куда выгоднее.
Стихотворение рассказывает о совращении проезжим купцом деревенской девушки с согласия её отца. Оно, кстати, в своё время изменило значение слова «ухарь». Первоначальное значение «весёлый, энергичный человек» перешло в негативное.
Было отчего — кончается стихотворение довольно мрачно:
Молится богу
старуха-жена,
Плакать бы надо — не плачет она.
Дочь их красавица поздно пришла,
Девичью совесть вином залила.
Что тут за диво! и замуж пойдет…
То-то, чай, деток на путь наведет!
Кем ты, люд бедный, на свет порожден?
Кем ты на гибель и срам осужден?
Фильм тоже не хеппиэндом кончается — дочь прибегает в родительский дом, и мать, поняв её нынешнее положение по символически обрезанной купцом косе, будит
Подарки в кредит
С утра в чате выбираем подарок одной сотруднице — у нас принято скидываться рублей по двести каждому на подарок, но выбрать что подарить — настоящая проблема. Вспомнил, что лет двадцать назад дарить было куда проще — у людей в моём кругу мало что было, что не подари, всё к месту.
Правда в кошельках было посвободнее, да и в магазинах — тоже.
Хорошо помню несколько таких случаев, когда по договорённости с именинником, мы в день рождения дарили, например, кредитный пылесос, у которого оплачена только часть суммы, а остальное должен был со временем оплатить одариваемый.
Возможно такое до сих пор принято, но я
Яндекс.Стагнация
У меня нарастает ощущение, что «Яндекс» потихоньку стагнирует. Возможно я неверно чувствую тренд, но кажется он вполне вырисовывается — продукты становятся всё хуже и хуже в самых базовых вещах, падает качество обслуживания, техподдержка отдаёт роботизацией, а новые функции добавляются всё медленнее.
Можно по той же «Алисе» судить — про таймеры, которые постоянно отваливаются я уже писал, а теперь ещё «Сбер» выпустил свою колонку, которая уже на старте выглядит интереснее «Алисы», да ещё и стоит дешевле. Куда это годится?
Я по старой памяти недолюбливаю «Сбер», от которого мне до сих пор чудится
Возможно бывший «Сбербанк» становится новым «Яндексом»?
RAM-диск под macOS
Век живи, век учись, дураком помрёшь.
Понадобилось срочно посмотреть как создать зашифрованный раздел на внешнем диске в «МакОСи» — нужно было помочь другу разобраться. У меня нашёлся и внешний диск, и несколько флешек, но, как назло, не оказалось переходника, чтобы подключить их к разъёму моего ноутбука.
Подумал — нельзя создать диск в памяти (RAM-диск), чтобы попробовать шифрование на нём? Оказалось, можно, делается из командной строки:
diskutil erasevolume APFS 'RAM Disk' `hdiutil attach -nobrowse -nomount ram://XXXXX`XXXXX тут — размер будущего диска
Время просвечивает
С годами появляется любовь к очень странным штукам. Странным настолько, что сам удивляешься, — как, чёрт возьми, можно это любить? Ты нормальный вообще?
Вот относительно свежее приобретение — очень мне, оказывается, нравится наблюдать когда
Хожу иногда на работу мимо недавно протрескавшегося сквозь стену проёма двери. Судя по форме и году постройки здания — это
Нейросоавтор
В чатах по искусственному интеллекту идут довольно жаркие споры как относиться к авторам, которые скрывают соавторство нейросетей или даже присваивают себе тексты, полностью написанные
В том ключе — надо ли поносить их за это или относиться к ним так же, как к тем, кто использует текстовый редактор, вместо того, чтобы писать всё от руки.
Не вижу чем ситуация с нейросетями сильно отличается от использования так называемых «литературных негров» (более корректный термин сейчас —
Если касаться художественной литературы, я не вижу ничего плохого в том, чтобы использовать нейросети для второстепенных сцен, филлеров и прочей воды, но мне бы хотелось понимать чья воля стоит за книгой, чья это идея, кто прописал персонажей и свёл всё воедино.
С другой стороны, мне всё равно кто написал учебник, — нейросеть или человек. Наверняка хороший учебник написать столь же сложно, как хорошую художественную литературу, но эмоционально меня учебники не трогают, за ними человека я не чувствую, мне всё равно, если не буду чувствовать и впредь.
В общем, мой ответ — там, где произведение пытается вызвать у меня эмоции, мне бы хотелось, чтобы за этим стоял человек, там где эмоций нет, мне всё равно.
Ледовая переправа
На выходные решили махнуть в Ульяновск — показать ребёнку Музей гражданской авиации, и самим набраться новых впечатлений. Новый опыт нашёл нас сразу на выезде из Казани — навигатор повёл через ледовую переправу.
У меня есть
Сегодня я не волновался, но всё равно
Место слабости
У многих есть «место силы» — место, где они чувствуют обновление, прилив сил, насколько я понимаю смысл этой фразы, а у меня, похоже, появилось место слабости.
Приехали в Ульяновск с планами заскочить в Музей гражданской авиации, заселиться в отель и помчаться дальше, — мест, которые хочется посмотреть ещё много.
Упомянутый музей находится под открытым небом, а небо сегодня
До вечера стыдил себя и всячески старался наскрести сил и собраться наружу, но к вечеру смирился с тем, что ружа для меня менее важна, чем всеобъемлющее желание придавить кровать. В общем, Ульяновск, до завтра, сегодня ты мне нравишься вот таким — более камерным.
Кофе через два часа
Очень люблю кофе с утра — для меня это одна из самых приятных частей утреннего ритуала пробуждения. Честно не знаю что мне в нём так нравится, возможно дело в том, что я пару десятилетий не пил кофе вообще и оно до сих пор для меня некий запретный плод, который сладок.
К сожалению эта привычка, по всей видимости, ухудшает качество жизни. Из статьи «Кофеиновая трилогия. Часть 2. Сколько можно пить кофе и когда?»:
…в нашем мозге есть нейрогормон аденозин. Он накапливается все то время, когда мы находимся в бодром состоянии, и сигнализирует об уровне усталости. А когда мы спим, он распадается на необходимые организму элементы.
Технически правильно, если остаток аденозина уничтожается кортизолом. Тем самым гормоном стресса, пик которого наблюдается именно утром. Но, утренняя порция кофе блокирует аденозин, защищая его от кортизола. И с организмом происходит следующее:
Остатки аденозина заблокированы. Он остается в организме, пока вы чувствуете утреннюю бодрость и свежесть от чашечки кофе.
День продолжается. Уровень кортизола падает. Действие кофеина заканчивается. А к остаткам аденозина, который остался после ночи, добавляется новый аденозин. Убрать его не помогут даже популярные ноотропы.
Примерно днем, особенно в послеобеденное время, вы чувствуете сильное желание поспать. И здесь выбор: либо прилечь, либо догнаться еще одной порцией кофе. Естественно, чаще мы выбираем кофе.
Аденозин продолжает накапливаться, и уже часа
в 4-5 вечера мы чувствуем вторую волну усталости. Снять её поможет кружечка кофе. Но эта же кружка окажет влияние на наш сон ночью. Впрочем, теме как улучшить сон и при чем здесь мелатонин, посвящен отдельный материал.
Основной вывод такой: первую кружку кофе надо выпивать через 90—120 минут через пробуждения. Попробую пожить так несколько недель, посмотрю как изменится сон, может правда перенос времени приёма кофе поможет его улучшить.
Случайный спектакль
Гуляли сегодня весь день по Ульяновску, только вернулись в отель. Занятная случайность — на двери одного из музеев висела табличка «закрыто», так бы и прошли мимо, если бы не одна семья, которая смело туда зарулила, открыв не запертую, как оказалось, дверь.
Мы заинтересовались и нечаянно попали на празднование Масленицы. Дочка сначала немного дичилась, но потом втянулась и даже сыграла мышку в спектакле по сказке «Теремок». По её протекции мне досталась роль медведя, а жене — лисы.
В первый раз на такое попадаю, для меня Масленица — это только блины, до которых я не особо охоч. А тут попали на милый любительский праздник, со спектаклем, детскими эстафетами, играми и сожжением чучела Масленицы в соседнем музее (на экспозицию которого мы потом позже сходили).
Как выключить проектор
Есть у меня желание подключить проектор к «умному дому» — было бы очень неплохо включать и выключать его через «Алису». К сожалению, компания XGIMI, которая его выпускает, ничего для этого не сделала, поэтому придётся
Самый железобетонный способ, который я оставил на потом — купить второй пульт, раздербанить его и подключить кнопку включения/выключения через
Решил попробовать подлезть через Chromecast — это АПИ для вещания аудио и видио на различные устройства. Подумал, что там могут быть
Несмотря на то, что проектор поддерживает этот сервис и в сети даже есть
Так же у проектора есть вход HDMI, а у HDMI бывает CEC (Consumer Electronics Control) — протокол управления бытовой техникой, через него точно можно включать и выключать проектор, но чем это делать? Нужно
В общем, если с _androidtvremote2 не выгорит, придётся покупать второй пульт.
«Нефор-2»
В этом году исполняется двадцать лет игре «Гопник», неизвестно чем зацепившей меня много лет назад. Причём так крепко, что я, словно верный фанат давно развалившейся группы, всё время пытаюсь нагуглить про неё
Иногда небеса бывают ко мне благосклонны,
Один из пользователей Вконтакте в комментариях под кратким постом по этой игре написал, что
Учётка автора игры удалена, но осталась короткая запись:
Виктор Терещенко: Мы с товарищем, вдохновившись «гопником», слепили тогда свою игру на VB6. Код и экзешники благополучно пролюблены (и хорошо, ибо адище), но осталась пара скриншотов
-_-
Судя по скриншоту, это
Как можно судить по кнопке «Окончить ход», это пошаговая стратегия, как и оригинальная игра. Больше, пожалуй, никаких выводов я по скриншотам сделать не могу.
Жаль, что автор потерял файл игры, я бы сыграл
Опять про шамотъ
Я тут недавно гадал почему на вроде бы дореволюционном кирпиче слово «ШАМОТ» написано без ера — твёрдого знака в конце. У меня родилась версия, которая мне очень нравилась, что «шамот» — это сокращение от «шамотный», а сокращениям ер не положен.
Свежепосещённый Ульяновск серьёзно пошатнул позиции моей теории! Ничего не предвещало встретить в Музее пожарной охраны кирпич князя Голицина со словом «ШАМОТЪ», написанным с, чёрт возьми, ером! А так хорошо день начинался!
Теперь у меня две версии. Первая — кирпич всё же произвели после революции, а прежняя атрибуция неверна. Вторая — писали и так, и эдак. Возможно самостоятельно существовали существительное «шамотъ» и сокращение от прилагательного «шамот».
Чтобы склонить чашу весов ко второй версии, нужно найти гарантированно дореволюционные кирпичи с надписью «шамот» без ера. Отложу это дело в самый долгий ящик, возможно
Зачем канавки
Очень люблю возвращаться из музеев
В этот раз загадкой порадовал Ульяновский музей балалайки — на фотографии старинная стамеска с канавками. Канавки сделаны не просто так, у них есть вполне утилитарное назначение. Собственно в этом и вопрос — для чего канавки?
Как выключить рекламу в «Яндекс.Погоде»
В сегодня лет я узнал, что в «Яндекс.Погоде» на смартфоне можно выключить рекламу. Для этого надо зайти в «шестерёнку», оттуда перейти в пункт «О приложении» и вот там будет переключатель, её выключающий.
Ломаю себе мозг
Как я уже писал, несколько месяцев назад у меня начали болеть руки, не как при знаменитом туннельном синдроме, но тоже очень неприятно. Я это связал с неправильным, «подвешенным» положением рук над клавиатурой и решил поработать над гигиеной рабочего места.
Купил себе подставку под ноут, эргономичную клавиатуру и опустил стол на пять сантиметров, но упустил одну деталь — как теперь пользоваться тачпадом. Пришлось заказать себе выносной.
Сегодня в первый раз пытаюсь
Заметил, что даже дыхание иногда задерживаю, когда печатаю, видимо
Очень многое пока непривычно, сначала даже не понимал как вообще руки на клавиатуру положить так, чтобы это было естественно — слева хочется ещё
Неясно как делать некоторые вещи, например кидать картинку из одного приложения в другое, раньше я одной рукой тащил на тачпаде, второй переключал приложения, а теперь это всё слева. Пытаюсь привыкнуть, но прямо тяжело пока.
1,5
Писал в прошлый раз, что привык пользоваться «Ютьюбом» на скорости 1,25. В комментарях к той заметке мне написали, что вполне можно продвинуться и дальше, даже посоветовали несколько плагинов для более плавной регулировки скорости воспроизведения.
Плагины ставить поленился, но и без них буквально за неделю удалось безболезненно поднять скорость восприятия, — теперь слушаю всё на скорости 1,5. Спасибо всем за советы, буду стремиться перейти на двойную скорость!
Бессонный хакатон: где экран?
Продолжаю писать о рефакторинге кода, написанного в свой бессонный хакатон. На этот раз хочется избавиться от подобранных вручную координат экрана эмулируемого компьютера — это неаккуратно и не универсально, — в другом браузере эти координаты скорее всего будут другими.
У меня
Такое решение наводило на меня тоску, но потом вспомнилось, что в графической библиотеке ПХП есть фильтр, который выделяет края и я решил глянуть не будет ли от него пользы.
Код для наложения фильтров выглядит следующим образом:
$im = imagecreatefrompng($screenshot_file);
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_EDGEDETECT);Мне казалось, что на получившемся изображении можно искать четыре точки экрана на известном расстоянии, но оказалось, что у такого метода есть ложные срабатывания. Поэтому я стал перебирать на экране все горизонтальные белые линии, пока не встречаю две параллельные нужной мне длины.
Таким образом очень надёжно находится граница экрана эмулятора, от которой на фиксированном расстоянии находится искомый экран. В итоге получается вот такой код:
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 секунд включаю холодную, делаю три повторения, заканчиваю тёплой водой.
Впрочем, я пока не усердствую, в будущем количество повторений и длительность собираюсь увеличить, а температуру холодной воды понизить до минимума, может там появятся страдания, а то без них полезность процедуры
Понаблюдаю за собой пристально