О двенадцати хоботах
На днях читал
Сначала, было, отмахнулся от этого воспоминания как от ложного, а потом решил погуглить, вдруг правда и была такая сказка? И действительно, — хоботы в сказках упоминаются.
Так откуда же у русских драконов взялись хоботы?
Разгадка в том, что слово «хобот»
PHPFuck для PHP8
Немного про программирование.
Один из читателей написал, что программа PHPFuck (это способ писать программы
В самом деле, восьмая версия стала куда строже к программисту,
<?=[[$_=@([].[]),$___=-!![],$$_=![]+![],$$_=$$_*$$_,$__=$$_+![],$$__=$$_+$__,
$____=$_[-![]-![]],$$___="{$$__}"^$____,$$___=($$___^"$___"). ($$___^"{$$__}"^"$___"^"{$$_}").
($$$_=$$___^"{$$_}"). $$$_.($_____="{$$__}"^"{$$_}"^++$____).("$___"&$____).
([$$___=$_[+![]],"{$$_}"|++$$___][+![]]).$_____.$_[+![]].$$$_. ("$__"^$_[-![]-![]]^"$___")
],$$___][+![]];Выше новая версия.
Кстати, она компактнее, но при этом выводит больше текста — «hello world», вместо «Hello!» предыдущего варианта. Ниже я немного расскажу откуда взялась экономия и с чем ещё пришлось столкнуться.
Принцип формирования текста остался, в общих чертах, прежним — корнем всего является комбинация @([].[]), которая даёт слово ArrayArray
Из этой строки потом рождаются все остальные символы. Дело в том, что в ПХП над символами можно производить некоторые бинарные и математические операции, что иногда позволяет получить другие символы. Например, первая буква — h в слове hello получается из сочетания '9' ^ 'a' ^ '0' (где ^ — бинарная операция «исключающего или»).
При этом цифры я получаю довольно простым способом — 0 как +!![] (преобразованием false в число), «девятку», — набирая нужные цифры по единицам (из +![]), а a — как предпоследнюю букву из полученной ранее строки ArrayArray, то есть @([].[])[-2] (аналогично, -2 получается тут из двух замаскированных единиц со знаком «минус»).
По сравнению с предыдущим вариантом в новом коде сделаны следующие изменения.
В этой связи весь код теперь — большое выражение, все переменные в нём лежат внутри массива. Если давать им нормальные имена, то основной принцип выглядит
Кроме того, мне надоело подбирать буквы вручную, вместо этого я написал небольшую программу, которая делает это за меня. Я не стал придумывать алгоритм, который бы анализировал какие биты нужно изменить, а решил задачу полным перебором.
Ниже приведен листинг этой программы, вдруг
<?php
declare(strict_types=1);
// Доступный алфавит
$abc = str_split(count_chars("Array0123456789", 3));
// буквы, которые надо получить
$need = str_split(count_chars("hello world", 3));
function gen(array $chrs): Generator
{
// чем операции длиннее, тем ближе к концу
// это нужно, чтобы более короткие конструкции выигрывали
foreach ($chrs as $ch) {
yield $ch => [$ch, $ch];
}
// возврат: из чего делаем, [как выглядит, значение]
foreach ($chrs as $ch) {
yield $ch => ["~$ch", ~$ch];
}
// для символа инкремент работает, а декремент — нет (особенность ПХП)
foreach ($chrs as $ch) {
$value = $ch;
yield $ch => ["++$ch", (string)++$value];
}
}
function eval_op(string $op, string $a, string $b): string
{
return ([
'|' => fn($a, $b) => $a | $b,
'&' => fn($a, $b) => $a & $b,
'^' => fn($a, $b) => $a ^ $b,
][$op])($a, $b);
}
function generate(array $set): Generator
{
foreach (gen($set) as $src1 => [$p1, $ch1]) {
foreach (gen($set) as $src2 => [$p2, $ch2]) {
foreach (['|', '&', '^'] as $op) {
$result = eval_op($op, $ch1, $ch2);
if ($result !== $ch1 && $result !== $ch2) {
yield [
$src1,
$src2,
"$p1 $op $p2",
$result,
];
}
}
}
}
}
function out(string $str): string
{
return preg_replace_callback(
'/[\x00-\x1F\x80-]/s',
fn($m) => sprintf("\\x%02X", ord($m[0])),
$str
);
}
$set = $abc;
do {
foreach (generate($set) as [$src1, $src2, $str, $res]) {
$idx = array_search($res, $need, true);
if (!isset($rules[$res])) {
$rules[$res] = $str;
}
if ($idx !== false) {
if (!in_array($src1, $abc, true)) {
echo out("{$rules[$src1]} = '$src1'"), "\n";
}
if (!in_array($src2, $abc, true)) {
echo out("{$rules[$src2]} = '$src2'"), "\n";
}
echo out("$str = '$res'"), "\n\n";
unset($need[$idx]);
}
$set[] = $res;
}
$set = array_unique($set);
} while ($need);Это ни в коем случае не инструмент для оптимизации программ в такой технике, а набросок, позволяющий ускорить подбор букв.
Для более глубоких оптимизаций нужно научить эту программу дробить выражения, которые уже вычислялись, на куски и эффективно использовать их, а так же подбирать частоиспользуемым кускам имена переменных меньшей длины.
У меня дробления нет, я использую предыдущие выражения целиком, а имена переменным моя программа вообще не подбирает.
«Курчане»
Любопытно какие детали иногда всплывают по случайности в людской памяти. Недавно рассказывал маме про наши курские корни (по заметной части веток мы — потомки переселённых
Говорит, что когда мой дед (её папа) выпивал, иногда в разговоре говорил
Думаю, слово появилось в его обиходе с подачи отца тёщи, моего прапрадеда Никанора Ивановича Литвинова, потомка Якова Тимофеевича Калетинова, купленного в качестве крепостного в 1829 году в деревне Копцева Старооскольского уезда — это как раз под Курском. Мама рассказывала, что Никанор Иванович отлично помнил своих предков, наверняка знал и откуда он.
Кстати, я так и не понял как Калетиновы превратились в Литвиновых. Может в документы вкралась ошибка, которая потом закрепилась, впрочем, Яков Тимофеевич (отчество было давно по крёстному) был незаконнорожденным, мало ли какая там история стояла за сменой фамилии.
Например, Яков мог быть незаконорожденным сыном некого дворянина Калитвинова,
Но это только версия, конечно.
Позже: списался с исследователем Курской губернии, вот что он ответил:
Посмотрели сказки
8-й ревизии помещиков Елисеевых. Указанных вами персон в этих ревизиях нет. Кстати, нет и Герасима Матвеевича Елисеева.
Герасим Матвеевич — это тот, у кого был куплен мой предок. Если его не оказалось в восьмой ревизии (это перепись 1833—1834 годов), то куда же он делся?
Адаптация дочки в новом садике
Я уже рассказывал, о том как мы планировали перевести дочку в новый садик —
В комментариях там просили рассказать про то как пройдёт адаптация, выполняю просьбу, правда рассказ выйдет недолгим.
К концу февраля мы начали водить дочку в два садика — на несколько часов в новый и на остаток дня в прежний, ориентируясь на желания самой дочки. Ожидалось, что этот процесс затянется, но дочка сама его форсировала — уже на третий, кажется, раз попросив, чтобы её оставили в садике на весь день.
Первое время мы её с затаённой тревогой расспрашивали всё ли ей нравится, но услышав, что всё хорошо, что у неё уже шесть друзей и ей очень нравится чернокожая учительница (она английский там преподаёт), успокоились.
В общем, такое ощущение, что адаптация уже кончилась, причём неожиданно скоро — всего за несколько дней.
Голос Александра III? (вряд ли) ★

Александр III Александрович (1845—1894) — император Всероссийский, царь Польский и великий князь Финляндский. Отец последнего российского монарха Николая II
Оказывается в интернете есть аудиозапись, на которой, по одному из предположений, звучат голоса Александра Третьего и его супруги Марии Фёдоровны.
Запись была сделана на восковой цилиндр между между 1889 и 1893 годами в резиденции датского короля во Фреденсборге генеральным консулом Готфридом Рубеном, который в период 1889—1897 годов записывал известных певцов и актеров того времени, а также важных высокородных гостей членов монаршей семьи на недавно изобретенном фонографе.
Прямых доказательств этому нет, но в пользу этой теории говорит тот факт, что замок Фреденсборг, где записывался голос, является резиденцией датских королей. И вряд ли там мог петь
Женский голос:
— Я очень рада вас видеть сегодня. Потому, что хорошая погода, можно пойти гулять! (неразборчиво, на датском)
Мужской голос:
— Вы хотите я говорил
что-нибудь вам. Это не всегда так легко, когда вы хотите… И еще вы прибавили, что хотите чтобы я спелчто-нибудь. Ну что же, вот, как например, это…
Поёт:
Сам Бисмарк чуть от радости
Не вырвал трёх волос,
Как телеграф известие
Такое нам принес,
Что немцы храбро заняли
Пункт важный и большой
И утверждали в Африке
Права страны родной…
С тех пор в Берлине стар и млад
Одно лишь и твердят:
Nach Afrika, nach Kamerun!
Vivat, Nach Kamerun!
Nach Afrika, nach Kamerun!
Так немцы говорят!
Nach Afrika, nach Kamerun!
Vivat, Nach Kamerun!
Nach Afrika, nach Kamerun!
Так немцы говорят!
Мужской голос:
— Закончим на этом, не могу вам читать сегодня. Если б вы заранее меня предупредили, так это другое дело. Я бы взял с собой книгу
или что-нибудь в этом роде, чтобы мне прочитать. А так прямо из головы, это нелегко. Вы меня застали врасплох. И конец. До свидания, господа.
Женской голос (на датском):
— Меня очень веселит слушать голос моего мужа.
Сбербанк
В последние несколько лет мне не раз звонили мошенники и представлялись службой безопасности «Сбербанка» — сейчас это довольно популярный вид мошенничества, говорят многие по началу попадались. Как правило я просто отвечаю, что не являюсь клиентом этого банка.
А не так давно у меня нашлась старая сберегательная книжка — забытое сейчас средство управления банковским счётом и я понял, что, по всей видимости, всё это время обманывал мошенников и у меня там ещё и деньги
Судя по датам, сберкнижка родом из начала девяностых, но что за суммы я на неё получал — не помню. В это время я учился в Лениногорском нефтяном техникуме, а летом подрабатывал. По датам на подработку не похоже, возможно
Любопытно, кстати, что было бы, если бы я пришёл сейчас в «Сбербанк» восстанавливать счёт? Получилось бы? Какие проценты там накапали с 64 рублей 6 копеек (мне тут напомнили про деноминацию) за двадцать с лишним лет?
Мне на их извечное «где открывали, туда и идите»
Память на цифры
Например, я бы ни за что не запомнил цифрами код домофона от подъезда, где мы снимали квартиру в нашу последнюю поездку в Москву, но хозяйка прислала его скриншотом и я его запомнил сразу картинкой и помню до сих пор.
К сожалению, мои возможности стали сильно скромнее с годами, помню в техникуме я мог запомнить пару страниц учебника и пойти сразу отвечать, но уже тогда этот фокус барахлил — то получалось, то нет.
Когда работает с терабайтами данных, ограниченные возможности собственной памяти очень раздражают, конечно — навсегда запомнить
Москва
Мне тут справедливо попеняли, что я уже целую неделю ничего не пишу. Так и есть, да — мы на четыре дня всей семьёй уезжали в Москву потусить, а до того нужно было подготовиться — решить куда сходить, купить билеты, забронировать жильё… В итоге, времени на блог не осталось.
В Москве у меня были
Идея была попасть в московский зоопарк и Музей космонавтики, но итоге мы сходили ещё в «Экспериментариум» (чистый восторг),
Я давно уже не оставался в Москве так надолго, так что за прошедшие с возвращения в Казань десять лет, уже успел хорошенько забыть какая она большая, но тесная. Было ощущение, будто я
Ещё раздражают огромные расстояния. Это вообще интересная проблема, так как москвичи уверены, что они живут в бешеном темпе, думая, что это означает гигантское количество дел, которые они успевают сделать. Обычно оказывается, что внушительная часть этого списка дел — передвижение из одного места в другое.
С короновирусной удалёнкой ситуация в некоторых областях стала лучше, но только в некоторых — не у всех рабочее место помещается в ноутбук.
По остатку отлично провели время, хотя некоторые моменты дались непросто — например, в первый день находили больше тридцати тысяч шагов, из них существенное время — с дочкой на руках.
Надо будет повторить
LWF
Как я уже рассказывал, время от времени занимаюсь причёсыванием старых заметок, чтобы они получше смотрелись (сайт сильно поменялся с тех времён, поэтому вёрстка в них «поехала»). Редактировал сегодня заметку
В последнее время производители браузеров внедряют свои форматы пачками, а тогда это была одна из первых попыток добавить в веб
В то время картинку у меня на сайте отображал
К счастью, мне повезло — из тех программ, которые ещё можно скачать и запустить, удалось подобрать одну, которая с этим форматом работает, ей оказался просмотрщик XvView Classic, которым я
На нём сфотографированы мы с друзьями после игры в пейнтбол; тогда он в Казани
Собака-провожака
Чуяло моё сердце, что покупкой котёнка в дом дочка не ограничится. Вообще она больше хотела щенка («папочка, я сама буду с ним гулять»), но в тот момент удалось договориться на кота. Заметно, что дочка растёт больше собачницей, — каждая неагрессивная собака, встреченная по дороге в садик, будет неизбежно обласкана с разрешения хозяев.
Недавно в воспитательных целях мы дочке завели детскую дебетовую карту и дочка тут же заявила, что будет копить на щенка. Щенок недёшев,
К счастью у дочки появился бродячий друг, который уже несколько раз проводил нас от дома до садика, поэтому получил кличку
Теперь мы уже начинаем морально готовится к тому, что однажды в квартире кроме кота появится ещё и собака, не сейчас, конечно,
Во времена динозавров, Ленина и диал-апа
Иногда нахожу немного времени, чтобы переверстать свои первые заметки на этом сайте. Сейчас я неспешно обрабатываю
Например, вот наглядная иллюстрация скоростей интернета в то время:
Забавную картиночку мне тут прислали :). Если хватит терпения, а картинка весит 40 кило, попробуйте дождаться ее загрузки. Мне всегда было любопытно что же делают собаки на пастбище. :)
Только вдумайтесь в это — для загрузки сорокакилобайтной картинки (речь о килобайтах) нужно было запастись терпением.
Я, если честно, совершенно этого не помню, зато помню, что в плохих случаях скорости доходили просто до нелепых. Например, я помню скорость пять байт в секунду, которую однажды мне показал некогда популярный браузер Netscape Navigator, он тогда умел такое.
Я это даже заскриншотил, но, к сожалению, скриншот не дожил до нашего времени.
Дочкино
Я иногда записываю за дочкой
Пару недель назад жена уезжала учиться (она меняет профессию) и мы с дочкой остались дома одни на несколько дней. Соответственно мне пришлось наблюдать за дочкой более пристально.
Количество того, что мне захотелось записать, сильно выросло и я подумал, а не напрасный ли это труд — доживёт ли хоть
⁂
Ходит, всюду заглядывает.
— Ты чего ищешь?
— Ничего, я просто очень любопытная, папа!
⁂
Стоит на коленях около дивана,
— Малыш, чем занимаешься?
— Ну… рисую несуществующие фантазии, где я бьюсь
— А… а кто побеждает?
— Ну,
⁂
Горько плачет, потому что я запретил смотреть очередной мультик (она их уже долго смотрела), внезапно резко перестаёт плакать:
— О, я придумала! Давай ферму из того мультика из «Лего» строить! Я пока плакала, думала! И придумала!
⁂
Кушает мандарин:
— Фу!
— Невкусно?
— Мне попалось
⁂
— А знаешь что такое «полоса волнений»?
— Нет, не знаю…
— Это когда день прошёл, а твоя мечта всё ещё не исполнилась. И так будет постоянно!
⁂
Лежу на кровати, смотрю
— Знаешь, папа, любовь — главное для человека!
⁂
— Папа, что значит «схомячим»?
— Ну… значит съесть
—
— Слово понравилось?
—
⁂
Принимаю ванну, через дверь слышу дочка кричит:
—
— Не могу!
— Почему? Ты же мой папа, почему ты ко мне не можешь подойти?
— Ну, я купаюсь!
— Так у тебя что, ног нету или тебя кипяток твой притягивает?
Новый садик
Посмотрели что есть вокруг из частных (в муниципальные не хотим, они нас отпугивают отсутствием внятной методики работы с детьми), пока не густо — район новый, тем не менее поблизости есть кампус очень известного у нас в Казани садика, ориентированного на изучение языков (там преподают ещё три к русскому).
Мы решили начать адаптацию к новом садику как можно раньше, поэтому уже в следующем месяце, видимо, поменяем садик на новый. Дочка уже порасстраивалась по этому поводу, пока не знаем как ей помочь с этим справиться, кроме как водить
Не откладывая дела в долгий ящик, вчера в обед свозили дочку познакомиться. Для того, чтобы садик решил, брать нас или нет, дочке пришлось пройти собеседование.
Интересно, впервые с таким сталкиваюсь. Собеседование проводил детский психолог в нашем присутствии. В принципе, всё прошло без запинок, хотя был один забавный момент — дочь огорошила психолога различием кроликов и зайцев, ответила, что кролики рождаются голыми, а зайки — уже в шёрстке. Оказывается, ожидался ответ, что кролики домашние, а зайцы — дикие (кстати, это не так, кролики бывают и дикие).
Сегодня нам написали, что дочка собеседование прошла (в сообщении это назвали «диагностикой»). Что ж, будем готовиться к переходу.
Комнатный душ «Гигиена»
Перебирал недавно бумаги, найденные на одном из чердаков, на глаза попался рекламный листок из журнала «Нива» за 1906 год, а на нём — небольшая рекламка комнатного душа «Гигиена». Не ожидал в дореволюционной рекламе увидеть изображение обнажённой женщины.
Я не так уж и мало смотрю дореволюционной рекламы, но с таким образом встречаюсь впервые. Интересно, считалось ли это в то время смело или было в порядке вещей?
1 + 1 = 1 ★
Те, кто следит за недвижимостью, наверное знают, что она сейчас растёт в цене, как на дрожжах. Это связывают с очень низкими ипотечными ставками, которыми правительство надеялось поддержать народ в коронавирусное время.
Получилась уникальная ситуация, которой мы с женой решили воспользоваться. Появилась мысль продать две квартиры — пустующую однушку и ту квартиру, в которой сейчас живём, чтобы купить жильё побольше в районе получше. Выбрали ипотеку с государственной поддержкой 0,01/6,5% — то есть первый год одна сотая процента, потом — 6,5.
Чтобы получить такую ипотеку, пришлось собирать довольно большой первый взнос — такие условия. Своих денег не хватило, пришлось занимать. Отдали потом с продажи однушки. Кстати, пока её продавали, она дорожала два раза. В теории можно было бы подождать ещё, но нам очень хотелось поскорее отдать деньги.
И вот что из этого получилось: цену на свою будущую квартиру (она ещё строится) мы зафиксировали ещё осенью, когда её купили, тогда как однушка, которую мы продавали несколько месяцев, чтобы отдать долги, дорожала и не прекращает дорожать квартира, в которой мы живём. Так что мы ожидаем после осуществления всего плана остаться в большом плюсе.
При этом весь год мы платим ипотеку под 0,01%, которую надеемся закрыть после продажи второй квартиры, лишь немного «въехав» в 6,5% — сдача нашей новостройки только летом, а потом ещё отделку делать и покупателей искать.
Получается довольно выигрышная ситуация, при условии что застройщик достроит дом. Это единственное относительно уязвимое место во всём плане, поэтому к выбору застройщика подошли ответственно. Я пишу «относительно», так как все наши деньги лежат на так называемом «условном счету»
«Мой сосед Тоторо»
Недавно дочка начала наконец заселять мир вокруг монстрами. Я всё ждал, когда это случится и вот, — дождался. Появилась боязнь темноты (в темноте — всякое страшное и приведения), а ногу нельзя свешивать с кровати, так как
Тут как нельзя кстати пришёлся известный японский мультфильм «Мой сосед Тоторо» (1988) про лесного духа, подружившегося с двумя маленькими девочками, который мы около месяца показали дочке (он довольно длинный для четырёхлетки, поэтому смотрели примерно по двадцать минут в день).
Теперь Тоторо — любимый дочкин персонаж, а так же надёжный защитник её сна от чудовищ, огромный, сильный и очень добрый. Иногда она пытается проверить крепость стратегий Тоторо по защите сна, предлагая различные сценарии нападения чудовищ и мы с ней разбираем как громкий рык, огромные когти и способность высоко прыгать помогут Тоторо от них отбиться.
В качестве физического воплощения защитника подошёл ночник в виде Тоторо, если он включен, это сигнал чудовищам об активизации защиты. Работает, надо сказать, довольно неплохо — лично я ни одного чудовища дома не видел.
Чтец, жнец, на дуде игрец
Я всегда очень пристально следил за развитием алгоритмов искусственного интеллекта (ИИ), было интересно когда наступит сингулярность — точка, после которой всё внезапно поменяется. Но чем дальше, чем больше я начинаю верить в то, что никакой сингулярности не будет, можно не ждать — алгоритмы искусственного интеллекта уже проникают в нашу жизнь и постепенно её меняют.
Например, хоть голосовыми помощниками пользуются далеко не все, но ими явно не удивишь — они сейчас в каждом смартфоне, а беспилотные такси
ИИ уже так много вокруг, что мы едва это замечаем. На днях я обнаружил новых их плацдарм.
Искали на «Яндекс.Музыке»
У меня, кстати, есть несколько знакомых профессиональных чтецов, чувствую многие из них скоро начнут терять работу, — я слушал их озвучку и эмоциональная подача робота даже немножко получше.
Если
Что мне нужно в часах
Понаблюдал за собой, чтобы понять какие функции электронных наручных часов более всего востребованы среди меня.
Оказалось, что чаще всего я смотрю время. Конечно оно есть на смартфоне, но его нужно доставать, а часы поднести к глазам проще.
На втором месте у меня фонарик. В часах это означает, что экран начинает светиться белым светом на максимальной яркости. Этой функцией я пользуюсь дома вечером и ночью — у нас в квартире горит самый минимум света, мы все
Дальше идут температура на улице (смотрю
Это буквально всё, я даже уведомлениями не пользуюсь — хватает того, что на телефоне и компьютере. Думал есть ли
Получается, когда я перешёл
Картинки из памяти
Меня давно интригует тема исследования способов получения медиаданных из прошлого, например воспроизведения звука
Чисто теоретически не исключена возможность того, что мы
Изображения мы научились рисовать сильно раньше, чем записывать звук,
Я
Например, сейшельские черепахи доживают примерно до 250 лет, а гренландские полярные акулы — аж до 500. Наверняка за несколько веков они могли бы запомнить
Вспомнить эту тему меня заставил некий криповый диафильм, который гарвардские учёные смогли нащёлкать из мозга обезьяны. Если вкратце, эксперимент был в том, чтобы показывая обезьяне картинки, научиться активизировать отдельные клетки в её мозгу без активизации соседних.
В эксперименте этому училась некая нейронная сеть и через некоторое время картинки, которая она генерировала стали напоминать
Мне кажется этот эксперимент показывает, что возможность считывать воспоминания из мозга существует. Непонятно, правда, удастся ли повысить качество картинки или это предел, но давайте предположим, что удастся. Не знаю насколько это продвинет историческую науку, но возможности шпионажа и криминалистики точно расширит.
Кнопка отключения рвотного рефлекса ★
В прошлом году
Меня это заинтересовало, так как я часто пшикаю в горло морской водой — это позволяет не заболеть при переохлаждении, что у меня случается, —
В общем, повторил её магию и, чудо, сработало — действительно рвотный рефлекс отключился
Надо сильно (до боли) сдавить
Осечек пока не было.