Мокрая вода, твёрдый алмаз, быстрый фотон
Ребята, ну нет никакого «нижнего подчёркивания». Подчёркивание всегда внизу, под
Велодорога домой
Бо́льшая часть моих велопрогулок — это примерно 15 километров совокупной дороги с работы и на неё. Езжу почти каждый день, если нет дождя, а они пока ещё не так уж и часты. Сегодня случился своеобразный рекорд — моя средняя скорость была 20 км/ч. Учитывая пешеходов, светофоры и пересечённый характер местности, совсем немало.

Недокументированные возможности модулья Memcached (для PHP)
Читая на досуге исходники модуля Memcached для ПХП, наткнулся на неожиданное: оказывается этот модуль поддерживает соединение по протоколу UDP, причём документация молчит об этом.
Делается это вот так:
$udp = new Memcached();
$udp->setOption(Memcached::OPT_USE_UDP, true);
$udp->addServer($host, $port);В частности, это позволит нам перейти на
Другая вещь, которая никак не раскрывается документацией — пользовательские флаги (UDF — user defined flag). К каждому значению можно прикрепить один или несколько флагов, которые при получении значения будут складываться в заданную переменную:
const FLAG = 1;
const ANOTHER_FLAG = 2;
$m->set($key, 'value', 0, FLAG | ANOTHER_FLAG); // установили флаг
$m->get($key, null, null, $flags); // флаги будут лежать в переменной $flagsУ каждой функции установки и получения значений (а их несколько, этих функций) в конце есть необязательный параметр для работы с флагами. Так что во всех вариантах использования значения можно
Позднее дополнение: похоже memcached больше не нуждается в multiport UDP patch, он и без него теперь с UDP работает нормально.
Короткий способ определить есть ли поддержка dataURI
Придумал короткий способ определить поддержку data URI в браузере:
<script src="data:text/javascript,self.dataURI=1"></script>Потом просто проверяете у window свойство dataURI, если оно есть, то есть и поддержка. Способ не работает в IE8 и IE9 — тот и другой не умеют загружать Джаваскрипт этим образом. Собственно, меня это не волнует — мне как раз и нужно определить, что Джаваскрипт так работает, но если вам нужно не это, то должен работать вот такой способ:
<link rel="stylesheet" href="data:text/css,html{font-size:99px}">То есть устанавливаем у тега HTML
/99/.test($('html').css('font')); // true, если есть поддержка dataURIPHP7
Всё, PHPNG отправился в «мастер», по всей видимости, это означает, что он появится сразу после версии 5.6, которую мы увидим буквально на днях (я уже немного писал о том, что в ней нового).
PHPNG — новая версия интерпретатора, которая, по всей видимости, будет носить номер семь, чтобы избежать путаницы с PHP6 — неудавшейся попыткой перевести ПХП на Юникод, которую широко в своё время освещали, но сообщество решило от неё отказаться — большинство разработчиков англоязычны и выгоды от этого трудоёмкого процесса не видели.
Новая версия ПХП интересна переработанными внутренностями, изменение которых связано со скоростью. Установленный «ВордПресс» работает на новой версии в два раза быстрее, что впечатляет, конечно. Плохая новость — придётся переделать бо́льшую часть модулей (если не вообще все). Процесс этот сейчас движется, но только для модулей, входящих в язык, несколько модулей (в том числе важный для меня OCI8) пока ещё не поправлены.
Думаю, что миграция авторских модулей произойдёт довольно быстро.
Странное с Флешем
Я с «Флешем» в последние годы не сталкивался, но и прежде подобного поведения не наблюдал. В общем, решил я вчера обновить в нашем продукте библиотеку ВебКамДжиЭс, она у нас для получения фотографии с камеры используется. Прежняя была 0.9, а тут я случайно обнаружил, что релиз вышел.
В прежней изображение с камеры получалось через Флеш, а релизная умеет использовать АПИ браузера, если таковое имеется. Правда, в «Сафари», которым я пользуюсь, этого АПИ нет и всё равно используется Флеш. Вот
В принципе, можно было откатиться на предыдущую версию, но смущало, что
У нас сервер отдавал Флеш с типом
Беглое гугление света не пролило, но если столкнётесь с похожей проблемой, имейте ввиду, возможное решение — смена типа для отдаваемого
Короткий способ определять IE
А какой сейчас самый короткий способ определять Эксплорер? Я понимаю, что привязываться к браузеру нехорошо, но у меня конкретная задача, которую никак не обойти — нужно проиграть звук в браузере (PCM wave), а ИЕ на запрос «сможешь проиграть?» к тегу AUDIO, говорит maybe. Т. е. давайте сюда свой звук, может и смогу.
Все короткие способы, которые раньше работали (условная компиляция, сравнение вертикального пробела с буквой v, хитрый хак с массивом и прочее)
В общем, я пока остановился на такой версии:
if (top.VBArray) {
// IE
} else {
// остальные браузеры
}Но буду признателен
ANSI-коды в имени точки вайфай
Давно интересно было посмотреть отфильтруются ли

Естественно, в графическом интерфейсе ничего такого нет:

Судя по спецификации, в имени должна быть строка до 32 байт, заканчивающаяся символом с кодом ноль. Других ограничений нет, так что и такое странное имя можно задать.
Передача массива как аргументов в конструктор
Одна из вещей,
$result = call_user_func_array('myfunc', $args); // старый синтаксис
$result = myfunc(...$args); // PHP 5.6+Но помимо приятности, он решает две проблемы.
switch (count($params)) {
case 0:
$instance = new $class();
break;
case 1:
$instance = new $class($params[0]);
break;
case 2:
$instance = new $class($params[0], $params[1]);
break;
// и так далее…
default:
$refClass = new \ReflectionClass($class);
$instance = $refClass->newInstanceArgs($params);
break;
}В новом же синтаксисе код невероятно упрощается:
$instance = new $class(...$params);А, кроме того, становится более явным и простым. Так что очень радуюсь этому новому синтаксису.
Санта-Сусанна
Я не привык ждать многого от городков с огромной отельной зоной. Город
Поскольку мы иногда пару часов катались на арендованных велосипедах, то я придумал нам квест — разыскать все смотровые башенки (их оказалось шесть), обозначенные на карте достопримечательностей, скачанной
Город получается трёхслойным — зона отелей у моря, дальше запутанная историческая часть, а выше в горы — зелёная зона. Её тоже планировали застроить отелями, но повезло — местные «зелёные» добились запрета. В зелёной зоне есть несколько интересных мест — башня Монтгаут
Улицы в исторической части кривые, узкие, а карта у нас была только примерная, потому в поисках этого замка, мы натыкались на самые разные объекты, в том числе, почти на выезде (кстати, дальше по этой дороге находятся «Парк Приключений» и уже упомянутый музей Сельского Быта), наткнулись и на водопровод
Кстати, в замке есть очень неплохой, довольно ухоженный парк, где можно прогуляться — он открыт для посещения в утренние часы, кроме того, там есть бассейн, который
Рядом с водопроводом есть ещё один интересный объект — башня с солнечными часами, к сожалению, никаких подробностей про неё я в интернете не нашёл.
Вернёмся к смотровым башням. Проще всего найти башню
Труднее всего далась упомянутая в начале
Эту башню мы искали два дня подряд, в итоге нашли, но по дороге заблудились — оказывается карты, которые есть тут на автобусных остановках, грешат неточностью. Зато какое было удовольствие, упоров не в ту сторону по жаре, найти в ближе к тупику ошибочной дороги, источник ледяной воды, из которого местные набирали воду! Блаженство!
К сожалению, местные
Меня, кстати, сильно удивляет, что такие исторические объекты находятся в частных руках, но это, наверное, просто потому, что у нас в стране это редкость
Замыкает список башня
Вообще, интересных объектов
Пожалуй, стоит закругляться. Хочется ещё упомянуть последнюю в моём рассказе постройку — часовню
Часовня
В общем, чудесный городок, я очень рад, что мы тут провели две недели. Очень жаль, что уже завтра придётся отсюда улетать.
Про загар
Скоро кончается отпуск, вернусь в Казань, друзья и коллеги обязательно начнут сочувственно спрашивать — почему же я так мало загорел?
Загорел я так мало, потому что не понимаю ценности загара.
Для меня смысл лежания на пляже только один — откинуть заботы и ничего не делать пару часов. Так же я могу поваляться и в постели, у пляжа есть плюсы — солёный воздух и тёплое солнце, но и у кровати они есть — мягко, тихо и нет людей. Я за разнообразие.
Эстетической стороны вопроса для меня не существует. Вообще я вижу в этом
С вопросом здоровья ещё сложнее. Принято считать, что загар даёт
Что там ещё упоминается? Улучшение иммунитета? Это неправда, он ухудшается, а кроме того длительное пребывание на солнце способствует старению кожи и вызывает мутации ДНК.
Говорят ещё, что это приятно само по себе. Тут надо отделить одно от другого. Приятно что? Загар или пребывание на пляже? Я могу поваляться на пляже с хорошей книгой — это может быть приятным. Но я буду намазан предохранительными мазями по самые уши. Загорю или нет — дело десятое (за неделю отдыха немного загорел), зато гарантированно не обгорю, что куда важнее для меня — обгорать и больно, и опасно.
Шестая годовщина свадьбы
Сегодня у нас с женой шестая годовщина свадьбы, первая «металлическая» свадьба — чугунная.
А ещё
Чисто формально эта моя мечта сбылась ещё в Армении — там мы полазили на развалинах замка Амберд (седьмой век). Но от него почти ничего не осталось, так что ощущения совсем не те.

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

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

Пару месяцев назад я взялся переводить в электронный вид книгу Арканова, Горина, Успенского и Камова «Четверо под одной обложкой». Меня она заинтересовала тем, что из одного рассказа, содержащегося в ней, растут ноги известнейшей фразы «рояль в кустах». К сожалению, в интернете книги не оказалось. Я, с большим трудом разыскав одного из немногочисленных её владельцев, получил от него сканы и приступил к переводу в электронный вид.
Несмотря на очень хорошее качество сканированного материала, некоторые страницы пришлось перепечатывать полностью — столько в них было ошибок, я использовал для распознавания бесплатную программу, видимо поплатился качеством. Правда продвигался быстро — за пару дней прошёл две трети книги, а потом всё застопорилось — совсем не стало времени в связи с работой. И вот недавно, поторапливаемый нетерпеливым читателем, я работу возобновил, и в очень медленном темпе, буквально сегодня утром, перед отпуском всё закончил.
Это был интересный для меня опыт, теперь я не понаслышке знаю как тяжёл труд тех, кто распознаёт редкие книги, хотя в моём случае чашу сполна я не испил — книга относительно небольшого размера.
Хочу так же сказать огромное спасибо Денису Олеговичу Стребкову за предоставленные сканы!
Use SVG
Поскольку «Макбук» у меня с «ретиной», я давно озаботился тем, чтобы продукт, разработкой которого я управляю, хорошо смотрелся и на «ретине» тоже. Я считаю за такими экранами будущее и не грех позаботиться об этом будущем уже в настоящем. Если уж и не внедрить везде, так хоть научиться верстать.
Одним из главных помощников в такой вёрстке является, без сомнения, формаг СВГ — формат векторной графики, который на данный момент поддерживают все распространённые браузеры (включая ИЕ, с девятой версии). Особенно приятно, что его можно включать прямо внутрь ХТМЛя, это очень удобно — если СВГ используется для кучи мелких значков на странице, то не будет лишних соединений с сервером — ведь всё грузится вместе с основным кодом.
Но встаёт другая проблема — проблема повторного использования. Если одни и те же значки присутствуют на странице в изобилии, страница будет распухать, что печально.
К счастью, есть выход. СВГ — гибкая штука, в этом формате есть возможность использования частей изображения повторно. Первым шагом нужно определить
<svg style="display:none">
<symbol id="folder" viewBox="0 0 49.833 67.167">
<!-- код не рабочий, только для примера -->
<path d="M15.938,67.…"/>
<path d="M3.59,30.531c…"/>
</symbol>
<symbol id="file" viewBox="0 0 49.833 67.167">
<path d="M12.233c0.…"/>
<path d="M3.28C2.76…"/>
</symbol>
</svg>Тут у нас два изображения — folder и file, на которые мы можем сослаться следующим образом:
<svg width="28" height="37">
<use xlink:href="#folder"/>
</svg>
<svg width="28" height="37">
<use xlink:href="#file"/>
</svg>Таких вставок может быть сколько угодно и все они будут использовать одни и те же изображения, описанные
svg.green {
fill: green;
}
svg.red {
fill: red;
}Классы можно повесить на ссылающиеся теги СВГ, жаль только этот способ полон ограничений. Кроме как в ФФ более избирательные селекторы использовать не удаётся — всё, что ниже тега use для таблицы стилей как будто не существует. Если и есть
Улетаем в Испанию
Через четыре дня мы с женой улетаем в Испанию на две недели. Это мой первый полноценный отпуск за три последних года. Посоветуйте — что с собой брать, куда ехать, как развлекаться. Мы думаем погулять по Барселоне (что стоит посмотреть), съедить в Андорру (как добраться?), вероятно — слетать в Париж (какие авиакомпании посоветуете, где смотреть билеты?).

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

Спросил у продавщицы в «Сабвее» почему у них соус называется «Чипотл Саусвест»,
Как вы думаете, эта ахинея правда красивее звучит? В чём же красота?
Дыбонины
Всегда хотел иметь в дереве
Однодворцы — не крестьяне, поэтому им были положены фамилии. Но при Петре Первом положение однодворцев стало ухудшаться — сначала их обложили налогом, как крестьян, а потом и вовсе сравняли с ними. Сословие однодворцев перестало существовать, а с ним и исчезли их фамилии — крестьянам они были не положены.
Тем временем, отсутствие фамилий у крестьян порождало путаницу — с налогообложением и службой в армии. Пойди разберись во всех этих бесконечных Фёдорах Николаевичах, да Михайлах Степановичах, поэтому в 1888 году Сенат постановляет, что «именоваться определенной фамилией составляет не только право, но и обязанность всякого полноправного лица, и означение фамилии на некоторых документах требуется самим законом».
Так крестьяне начинают получать фамилии. Этот процесс растянулся почти на полвека — в некоторых деревнях крестьяне жили без фамилий аж
Некоторые потомки однодворцев, помня свои потерянные фамилии, брали именно их — моя фамилия, Степанищев — однодворческая, по историческим источникам хорошо видно как она перестаёт употребляться, а потом появляется вновь.
А вот Дыбонины свою фамилию то ли забыли, то ли взять не смогли и стали Шапкиными. Во время процесса получения крестьянством фамилий, Пелагея Прохоровна из семьи Шапкиных (правнучка Ивана Фёдоровича Дыбонина), была замужем за моим прапрадедом — Павлом Степановичем. И он то ли не разобрался в идее фамилий, то ли виной тому была
На тот момент у него уже было несколько детей и по крайней мере один из них — Василий Павлович, 1884 г.р. так и записан с этой фамилией.
Вот такая непростая история.
Язык программирования ГАРФ
Из случайно оборонённого комментария к одной из статей в интернете, узнал о существовавшем
Информации о языке очень мало, наиболее полное упоминание в рунете я нашёл в статье, которая так и называется — «Илья Шмаин»:
Это больше, чем язык программирования, это некоторый способ, стиль программирования вместе с математической теорией этого стиля. Это программирование на основе рекурсивных функций, опирающееся на классические работы Клини и одно их обобщение, сделанное
Есениным-Вольпиным. ГАРФ — это язык функционального программирования. Но он намного более абстрактен и универсален, чем первые языки такого типа. На нем можно было определять произвольные типы объектов и произвольные (но вычислимые) функции и функционалы на этих объектах.
- Точное описания синтаксиса и семантики. При этом синтаксис языка не фиксировался жестко. Описывалась «глубинная структура» и ее отображения в разные «поверхностные структуры», т. е. программист в принципе мог выбирать удобный для него синтаксис программы. Описывалась
теоретико-модельная семантика языка и вычисления, соответствующие этой семантике.
- Упомянутые выше
«индуктивно-определяемые области» содержали, в частности, идею того, что позже стало называтьсяобъектно-ориентированным програмированием (или абстрактными типами данных). Т. е. язык содержал средства для задания любых типов объектов с заданными на них функциями и отношениями, а потом уже на такого рода областях задавалась сама программа.
- То, что в ГАРФе «и функции, и области понимаются в самом широком смысле», означало, что можно было задавать любые функционалы, причем их определение могло содержать параметры (тем самым тип функций и объектов не фиксировался жестко).
В общем, ничего конкретного в статье нет, а жаль — упомянутое интересно, любопытно было бы взглянуть!
Цу-е-фа
Через открытое окно, выходящее во внутренний двор, услышал как дети
Либо меня подводит память, либо меня она в детстве
Но вот именно
Причём же тут китайская фраза? Оказывается, игра
Существует так же вариант, где добавляется ещё и «колодец» (либо он заменяет «камень»), предположительно это французская модификация, её я тоже помню — играл в детстве.