Opera прошла ACID3, WebKit — тоже
Напомню, ACID3 — специальный тест, проверяющий качество поддержки браузерами современных стандартов. На момент появления этого теста (конец прошлого года), браузеры проходили его весьма слабо, после появления — двигались к финишу семимильными шагами. Лично мне казалось, что быстрее всего
И вот, невероятная новость — первым браузером, который проходит тест ACID3, является «Опера». В публичном доступе билд, проходящий тест, появится в течении следующей недели.
Ситуация несколько осложняется тем, что ребята, которые делают движок «Сафари» WebKit (он прошёл тест чуть позднее), нашли в ACID3 баг — для прохождения теста пришлось нарушить спецификацию SVG 1.1, тест был исправлен и теперь «Опера» проходит тест на 99%. На мой взгляд, это значения не имеет — тот тест, к которому все стремились, «Опера» прошла первой.
Помимо этого упомянутый билд «Оперы» включает в себя поддержку CSS3 RGBA, HSLA и Web Fonts. RGBA/HSLA — это возможность при указании цвета задавать прозрачность, а Web Fonts — технология, позволяющая использовать на странице произвольный шрифт (впервые появилась у Internet Explorer много лет назад, недавно — у «Сафари», и теперь ещё и в «Опере»).
Продукт плейсмент «ИКЕА»
В «Афише» появилась статья «Новая визуальность 1.2» об известных дизайнерах страны. На фотографии, которую я взял из статьи, Мика Зубрилов висит в легко узнаваемой тележке из «ИКЕА». Мне показалось смешным написать в «ИКЕА» следующее письмо:
Как вы относитесь к тому, что ведущий дизайнер Москвы Мика Зубрилов сидит в ворованной тележке «ИКЕА» http://www.afisha.ru/article/newviz_12
Или IKEA ему её подарила?

И мне даже ответили (писал в «ИКЕА Белая Дача», мне сказали, что Мика живёт
Здравствуйте, уважаемый покупатель,
Благодарим Вас за интерес, проявленный к компании ИКЕА. Уточните, пожалуйста, на основе каких данных Вы определили, что это тележка ИКЕА. Если же предположить, что это на самом деле тележка, принадлежащая нашей компании, то мы можем прокомментировать эту ситуацию только тем, что к сожалению, от подобных ситуаций никто и нигде не застрахован. Возможно, что среди наших покупателей могут быть и нечестные люди. Компания ИКЕА — торговая организация, которая не имеет полномочий предпринимать любые действия по проведению самостоятельных расследований. Вы можете подать заявление о краже в правоохранительные органы, поскольку именно в их компетенции находится решение подобных криминальных ситуаций.
Как оказалось позднее, тележка
99 бутылок: РАЯ, MS HTML
44. РАЯ (русский алгоримический язык). Язык, придуманный академиком Ершовым для обучения детей программированию. Все названия на русском языке, что, впрочем, совершенно не отвлекает. Для написания программы я использовал падучую реализацию языка с сайта «Инфомир».
Особо о языке сказать нечего, разве что понравились многословные имена переменных, процедур и функций (можно записывать через пробелы), показалось интересным наличие исполнителей (вроде известной «черепашки») и не понравилось отсутствие конкатенации строк и операции «неравно» (в документации я этого не нашёл).
| Написал Евгений Степанищев aka BOLK
алг
нач
цел сколько пива
нц для сколько пива от 99 до 1 шаг -1
выводим пиво(сколько пива, " on the wall, ")
выводим пиво(сколько пива, ".")
вывод нс, "Take one and pass it around,", нс
выводим пиво(сколько пива, " on the wall.")
вывод нс, нс
кц
вывод "No more bottles of beer:", нс
вывод "Go to the store and buy some more:", нс
вывод "99 bottles of beer."
кон
алг выводим пиво(цел пива, лит окончание)
нач
вывод число пива(пива), " bottle"
если пива > 1 или пива=0
то вывод "s"
все
вывод окончание
кон
алг лит число пива(цел пива)
нач
если пива=0
то знач:="No"
иначе знач:=цел_в_лит(пива)
все
кон43. MS HTML. Конечно, HTML не является языком программирования. Но и на этом языке разметки, применяя особенности Internet Explorer, можно написать песню про пиво. Лишнюю строку пришлось «спрятать» за экран. Работает, естественно, только в Internet Explorer.
<!-- Written by Evgeny "BOLK" Stepanischev -->
<style type="text/css">
.outer { position: absolute; top: -20px }
body { background: white; margin: 0; padding: 10px }
body, table { font-size: 11px; font-family: Tahoma }
table, td, tr { margin: 0; padding: 0; border-collapse: collapse }
</style>
<body>
<xml id="dataOuter">
<row>
<d><o>9</o></d>
<d><o>8</o></d>
<d><o>7</o></d>
<d><o>6</o></d>
<d><o>5</o></d>
<d><o>4</o></d>
<d><o>3</o></d>
<d><o>2</o></d>
<d><o>1</o></d>
</row>
</xml>
<xml id="dataInner">
<row>
<d><i>9</i></d>
<d><i>8</i></d>
<d><i>7</i></d>
<d><i>6</i></d>
<d><i>5</i></d>
<d><i>4</i></d>
<d><i>3</i></d>
<d><i>2</i></d>
<d><i>1</i></d>
<d><i>0</i></d>
</row>
</xml>
<xml id="dataInnerSingle">
<row>
<d><i>9</i><s>s</s></d>
<d><i>8</i><s>s</s></d>
<d><i>7</i><s>s</s></d>
<d><i>6</i><s>s</s></d>
<d><i>5</i><s>s</s></d>
<d><i>4</i><s>s</s></d>
<d><i>3</i><s>s</s></d>
<d><i>2</i><s>s</s></d>
<d><i>1</i></d>
</row>
</xml>
<div class="outer">
<table datasrc="#dataOuter">
<tr>
<td>
<table datasrc="#dataInner">
<tr>
<td>
<span datafld="o"></span><span datafld="i"></span> beer bottles
of beer on the wall.<br /><br />
<span datafld="o"></span><span datafld="i"></span> beer bottles
of beer on the wall,
<span datafld="o"></span><span datafld="i"></span> bottles of beer.<br />
Take one and pass it around,<br />
</td>
</tr>
</table>
</td>
</tr>
</table>
<table datasrc="#dataInnerSingle">
<tr>
<td>
<span datafld="i"></span> beer
bottle<span datafld="s"></span> of beer on the wall.<br /><br />
<span datafld="i"></span> beer
bottle<span datafld="s"></span> of beer on the wall,
<span datafld="i"></span> bottle<span datafld="s"></span>
of beer.<br />
Take one and pass it around,<br />
</td>
</tr>
</table>
No beer bottle of beer on the wall.<br />
<br />
No more bottles of beer...<br />
Go to the store and buy some more...<br />
99 bottles of beer.
</div>
</body>Safari: шрифт на тёмном фоне
Ни для кого не секрет, что браузере «Сафари» под Windows использует тот же метод сглаживания, что и под Mac OS. Один из его известных недостатков (кроме сломанных глаз) — текст на тёмном фоне получается (не кажется, а получается) жирнее, чем на светлом, что прекрасно иллюстрирует нижеприведённый скриншот:

Часто это очень неприятно, потому что не позволяет добиться одинакового отображения вёрстки сайта в разных браузерах и портит дизайн. Решается это проблема очень просто, в стилях нужно прописать следующую магическую строку для текста:
.our_text { text-shadow: 0 0 0 #000 }Лядской садик
В Казани, городе, где я прожил 11 лет, есть садик с очень забавным для постороннего уха названием — Лядской. Сами, наверное, можете догадаться какое название дали ему местные.
Я всегда думал, что это название образовано от русского слова «ляд» (встречается сейчас, в основном, в ругательствах «на кой ляд»), оказывается нет:
Лядской садик имеет давнюю (основан в 1869—1870 гг.) и богатую историю. Вспомним лишь, что свое название он получил по фамилии
генерал-майора Лецкого, который имел собственный одноэтажный домик на углу нынешних улиц Горького и Гоголя (ныне на этом месте располагается бетонная стенка при входе в сад). В доме Лецкого в свой приезд в Казань в 1798 г. жил император Павел I.
Фотография с сайта Tatcenter.
Фильтрация CSS по браузеру
Я
Способ для FireFox мне подсказали в комментариях на «Хабре», для Internet Explorer я придумал его самостоятельно. Вот пример, иллюстрирующий идею:
.class { color: black } /* для всех остальных браузеров */
.class, noindex:-moz-any-link { color: blue } /* стиль только для Mozilla FireFox */
.class, v\:* { color: red } /* стиль только для Internet Explorer */Можете попробовать самостоятельно — фильтрует идеально. В примере класс «class» даст тегу, к которому его применят, в FireFox — голубой цвет текста, в IE — красный, а в остальных браузерах — чёрный.
IE8: шаг вправо, шаг влево — расстрел
На «Хабре» появился хороший перевод статьи Сполски по поводу IE8, статья довольно большая:
Хотите секрет? Вот что я думаю произойдет. Команда IE8 скажет всем, что режим стандартов будет по умолчанию, и запустит долгое бета тестирование, на протяжении которого, будет просить всех протестировать их сайт в IE8 и попробовать заставить его заработать. А ближе к релизу, когда окажется, что только 32% всех страниц в мире отображаются корректно, они скажут «смотрите, нам очень жаль, мы действительно хотели чтобы режим стандартов стоял
по-умолчанию, но мы не можем поставлять неработающий браузер» и вернутся к прагматичному решению. Или не вернутся, потому что прагматики в Майкрософт долго были не у дел. В этом случае IE потеряет большую часть рынка, что потешит идеалистов дальше некуда, и скорее всего не уменьшит годовую премию Дена Хашамовича ни на цент.
Spesta 2.11a+b
Сделал новую версию системы статистики «Спеста 2», версия 2.11, файл лежит там же. В основном, это багфиксы, причём баги большей частью — наследие оригинальной системы.
Поправлено:
- поправлено отсутствие перекодировки поисковых запросов
из UTF-8 - устранено разрастание файлов статистики
из-за лишнего перевода строки - поправлено возможное некорректное определение дубликатов в файлах статистики
- исправлены
какие-то мистические глюки при работе на площадках «Мастерхоста» с PHP 5.2.5 - побеждено странное поведение при логине на площадки, где стоит PHP как CGI и suphp
- снова работает отчёт «Поисковые роботы» (был поломан моим патчем)
- в отчёте «Откуда идут» в колонке «хиты» теперь отображаются абсолютные значения, а не проценты
- исправлен подсчёт процентов во всех отчётах, раньше на этом месте считалось
что-то иное - click.php ничего не делал, это моя вина, я это поправил
- сделал сортировку в отчётах
В общем, обновляться — обязательно. Да, теперь система стоит у меня на сайте, поэтому я сразу после первого релиза увидел что надо поправить и сделал это.
Для тех, кто редко меня читает: несколько дней назад я выпустил «Спеста 2.11a+b» — сильно пропатченную систему статистики «Спеста 2» (которую сделали в Analog Group).
Где же работает Дима Смирнов?
BOLK: чем ты занимаешься, кстати? расскажи хоть
Дмитрий Смирнов: NDA!
BOLK: No Detectable Activity?
Если серьёзно, то в «Яндексе» очень серьёзно относятся к защите информации. А Дима работает в отделе коммукационных сервисов.
Для тех, кто не понял в чём шутка. NDA — это
Валидный NOINDEX
Для многих валидная вёрстка — очень важная штука. На мой взгляд, валидность самоцелью быть не может и я знаю много ситуаций, где ей можно пожертвовать. Одна из этих ситуаций — использование тега NOINDEX. Для тех, кто не знает, поясню: этот тег показывает поисковой машине какую часть текста вашей страницы индексировать не нужно.
Т. е. присутсвие этого тега необходимо, но в стандарт HTML он не входит. Как быть, если требуется достичь валидности любой ценой? Обычное решение — выдавать отдельную копию страницы для поисковых машин. Изяществом оно не обладает, тем более есть способ, если не лучше, то проще. Автор утверждает, что способ был им протестирован. Я немного изменил код, потому что такое использование кажется мне более логичным:
<del class="inv"><![CDATA[<noindex>]]></del>
То, что запрещено к индексации
<del class="inv"><![CDATA[</noindex>]]></del>В таблице стилей прописывается «display: none» для класса inv:
.inv { display: none }
Мышь-амбидекстр
У меня мышь на рабочем месте лежит слева, дома — справа. Я амбидекстр и мне разницы особой нет, но людям, которые иногда садяться за мой компьютер, это доставляет неудобства. У меня была идея — сделать мышь, которая бы имела контакную полоску под большим пальцем, сама бы понимала какой рукой за неё берутся и меняла бы кнопки соотвествующим образом.
До реализации идеи в промышленных масштабах, думаю, не дойдёт, но у себя на рабочем месте я проблему решил. Оказалось, что мышь Microsoft Habu, которую я использую, имеет очень неплохой софт для настройки — Razer, который, в частности, позволяет назначить любым клавишам мыши довольно нетривиальные функции (там даже несложные макросы есть). Я создал два профиля — для левши и для правши, а функцию смена профиля назначил клавишам выбора DPI.
Теперь при нажатии на верхнюю у меня в руке мышь для левши, при нажатии на нижнюю — для правши.
Жертва науки: с дыыыырочкой в правом боку
Ребят, если вы сейчас едите, лучше не читайте дальше. Кто не спрятался, я не виноват. Я предупредил, да?

То, что вы видите на моём, по возможности осторожном обрезке снимка — живая корова. А в корове — дырка. В живой. Если вам кажется, что это фотошоп, то можете посмотреть видео на эту тему (ещё несколько можно найти на YouTube).
Для чего же это делают? Оказывается, в научных целях (мой вольный перевод):
В настоящее время
учёные-аграрники изучают пищеварительную систему крупного рогатого скота через дыру в корове, причём коровы остаются живыми и здоровыми. Через эту дыру можно извлечь содержимое из серединыжелудочно-кишечного тракта.«Прокомпостированных» коров используют для изучения усваямости различных продуктов питания крупнорогатого скота. Накормив корову, можно позднее посмотреть как усваивается съеденное. Другой путь — изучение внешних факторов для получения той же информации не является таким точным, как вышеописанный. Поскольку крупнорогатый скот является важной частью нашей жизни (точнее — молоко и говядина), важно, чтобы коровы получали хорошее питание.
Операция не причиняет корове боли и даже продлевает им жизнь. «Прокомпастированной» корове, которая заболела, можно ввести нужные вещества прямо в пищеварительный тракт и тем самым более эффективно ей помочь. Плюс, одна такая корова помогает скоту во всём мире
Кстати, я бы не сказал, что в ролике заметно, что корове совсем не больно, особенно когда эта заботливая учёная тварь достаёт канюлю из раны на боку.
PHP: простой способ определения кодировки UTF-8
Придумал простой способ определения кодировки
if (preg_match('//u', $string)) { /* у вас UTF-8 */ }Работать должно, думаю, с версии PHP 4.3.5, в документации сказано:
Система статистики «Spesta 2.10 a+b»
Недавно я узнал, что существует клон это системы — Spesta 2, который написали в Analog Group. Приятно, что код написан с форматированием и почти не генерирует warnings и notices, но общее ощущение — что авторы двигались в правильном направлении, но заплутали по дороге.
Я было думал выпустить серию патчей, как это было со «Спестой», но патчей оказалось слишком много. В общем, выложил пропатченную версию у себя. Кому надо — забирайте. Оригинальная версия была 2.00a, эта называется 2.10a+b, потому что на «бету» она не тянет, а пачти обозначить
Итак, изменения, всё что успел увидеть и поправить за час работы:
- нарисован favicon и дорисован логотип
- выкинута реализация функции in_array (авторы плохо знают язык?)
- работа с файлами заменена на более безопасную — с flock и append. Там где можно, используются file_get_contents и file_put_contents (это означает, что раньше эта система «теряла» часть данных)
- патч для более точного подсчёта уников (с использованием данных браузера)
- вычищены .htaccess от лишнего мусора
- поправлены регулярные выражения в коде
- переписан странный поиск с stristr
- на странице хитов теперь выводятся тИЦ и Page Rank
- сделан парольный вход, задаётся в конфиге (по умолчанию, логин — admin, пароль — test)
- для совместимости со «Спестой» сделан файл click.php
- исправлены ситуации, в которых генерировались notices и warnings (в основном — на пустых данных)
- исправлена ошибка в работе с файлом sites.txt
- ряд мелких улучшений кода, которые лень описывать
Важно: данные «Спесты» и «Спесты 2» между собой несовместимы, т. е. вы потеряете предыдущую статистику при замене одной версии на другую. Второе важное замечание — в «Спесте 2» нет статистики по кликам на ссылки и IP-адресам (лично мне она не нужна, так что вставлять в код я её не буду).
Инструкция по установке: распаковываете в нужную папку «Спесту 2», скрипт должен иметь возможность писать в папки data и reports. Если у вас была оригинальная «Спеста», удалите её, поверх ставить нельзя. Далее, вы должны подключить «Спесту» на каждой странице вашего сайта. Для PHP это будет выглядеть так: <?include 'каталог со спестой/counter.php'?>;
для HTML страниц можно попробовать сделать следующее: <!--#include virtual='/каталог со спестой/counter.php' -->
Ссылка для невнимательных, скачать можно отсюда:
Dictatorship IE vs. Open Source Dictatorship
Удивительная избирательная слепота у людей. На «Хабре» опубликовали статью «Новые возможности HTML и CSS в Safari 3.1», где народ восторженно обсуждает возможности, появившиеся в браузере «Сафари». Этим возможностями сто лет в обед — те же яйца, только боком уже
Это вообще
Я составил небольшую таблицу соответствий технологий IE и их реализаций в других браузерах:
Internet Explorer | Остальные браузеры |
|---|---|
Таблицу можно продолжать. Учтите, что всё, что перечислено в ней слева, появилось ещё шесть лет назад.
Мне интересно, кто первым реализует «data binding» из IE, при помощи этой технологии я написал «Песню о пиве» на HTML.
HTML5 VIDEO: кто первый? А так же 3D CANVAS
Вышел браузер «Сафари» версии 3.1,
Safari 3.1 is the first browser to support the new video and audio tags in HTML 5 and the first to support CSS Animations. Safari also supports CSS Web Fonts, giving designers limitless choices of fonts to create stunning new web sites
Что касается тега AUDIO — чистая правда, а с VIDEO — вышла накладка. Специальный билд «Оперы», поддерживающий этот тег, вышел
Кстати, самое интересное, что появилось в том билде «Оперы», это не тег VIDEO, а 3D Canvas — до этого момента тег CANVAS позволял работать только с примитивами на плоскости (отрезками, прямоугольниками, кругами и так далее), знаменитая игра «Canvascape», сделанная с применением этого тега (требует для работы любой браузер, поддерживающий CANVAS), просчитывае
Для 3D CANVAS задача вращения куба с текстурой, например — тривиальная. Примеров работы с этим новшеством пока немного, в оригинально статье упомянута Snake («змейка») в 3D, написанная Mathieu ’p01’ HENRI.
Декоративная обфускация PERL-кода
Нашёл замечательную старую статью «Декоративная обфускация
not exp log srand xor s qq qx xor
s x x length uc ord and print chr
ord for qw q join use sub tied qx
xor eval xor print qq q q xor int
eval lc q m cos and print chr ord
for qw y abs ne open tied hex exp
ref y m xor scalar srand print qq
q q xor int eval lc qq y sqrt cos
and print chr ord for qw x printf
each return local x y or print qq
s s and eval q s undef or oct xor
time xor ref print chr int ord lc
foreach qw y hex alarm chdir kill
exec return y s gt sin sort splitЭто работающая программа, выводящая строку «just another perl hacker».
Доказательство через противного: тактика спора
На «Воффке» увидел неплохую статью, описывающую довольно типичную для «троллей» тактику — приписать
Туалетная бумага Windows Vista

Японцы выпустили забавную туалетную бумагу — с текстом (на японском) списка исправлений SP1 для Windows Vista Ultimate.
Bookr для PSP
Те, кто используют PSP для чтения книг, наверняка знают, что лучшая программа для чтения — Bookr, давно не обновляется. Но умельцы постепенно её дорабатывают, обратная сторона этого положительного явления — модификаций развелось такое количество, что ориентироваться в них стало уже очень сложно. Мне понравилась сборка, которую сделал пользователь SD6719 с форума сайта PSPx.
Она поддерживает форматы txt, fb2, pdf, djvu, кодировки