Canvas в IE9

Вроде как из блога AMD утекли сведения о том, что IE9 будет поддерживать Canvas:

The <canvas> element will be accelerated on the GPU via Direct2D and will enable hardware accelerated rendering contexts for application development, improving visual display, reducing CPU usage, and improving power usage. … AMD is working with multiple teams at Microsoft to ensure that technologies such as IE and Silverlight continue to move the PC platform forward.

Хотя в AMD чуть позднее поспешили откреститься от этого:

Got a little ahead of myself; Microsoft did not announce they were supporting <canvas>. However, they did say that all of Internet Explorer 9’s graphics, text, and rendering will be hardware accelerated. Given the embraced HTML5 across DOM, CSS3, SVG, and XHTML, it will be fun to watch this space closely as the IE9 Preview gets updated in the weeks to come.

Посмотрим.

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

Тег video и IE

Интересно, когда консорциум W3 отвернулся от тега OBJECT? Помнится, даже IFRAME старательно пытались заменить на OBJECT, а сейчас зачем-то выделили аж два новых тега VIDEO и AUDIO для проигрывания одноимённого контента.

Вообще-то, конечно, с VIDEO и AUDIO всё несколько стандартнее, чем с тегом OBJECT. В IE можно подключить любой ActiveX для проигрывания видео (например, Windows Media Player или Apple QuickTime) и у них будут разное API и свои особенности.

Тем не менее, API ActiveX Windows Media Player хорошо документирован и работать с ним очень просто. Я в последнее время мало программирую на JavaScript и вчера вечером, чтобы освежить знания, попробовал сделал плеер, похожий на VideoJS, но только для IE — с тегом OBJECT и применением VML.

Video tag for IE (25.38КиБ)

По-моему, получилось неплохо (проверял под IE8, подчёркиваю, это сделано только для IE).

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

P.S. Некоторые вещи там сделаны неоптимально, так что я бы очень рекомендовал несколько подчистить код, если кто-то захочет его использовать.

P.P.S. Кнопочки и progress bar нарисованы через VML.

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

HTML5 и IE9

Ничего неожиданного — ребята из freeciv сделали набор из 444 тестов, которые проверяют поддержку браузером различных мест стандартов HTML5/CSS3 (Canvas, WebSockets, HTML5 Video/Audio, Getlocation API, Storage, Workers и какая-то часть CSS3).

HTML5 тест freeciv (9.13КиБ)

Internet Explorer 9 Preview 2 не прошёл ни один из этих тестов. Это ожидаемо; о том, что Microsoft выбрала какие-то определённые тесты из HTML5 в своих промо-текстах, на которых и обогнала другие браузеры, уже говорилось не раз.

Добавлено 5 июня 2010: в комментариях говорят, что эти тесты — фейк. Например, «Опера» пока не поддерживает GeoAPI.

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

Android WebKit, iPhone Safari и порядок загрузки ресурсов

Попробовал посмотреть как браузер «Андроида» (основан на WebKit) загружает ресурсы со страницы. Вот что получилось. Количество одновременных соединений к одному домену — 4, все CSS загрузились последовательно, в одном соединении, JS тоже по порядку, но в разных (!). Картинки (логично) подгрузились параллельно.

iPhone Safari открыл 11 (!) соединений (всего я загружал 29 ресурсов), причём параллельно грузились и JS, и CSS. Число одновременных соединений посчитать трудно, но что-то порядка 7. Одна из картинок начала грузиться быстрее, чем последний CSS. Сильно. Странно, но почему-то этот браузер не попросил favicon.ico, хотя иконка указана в HTML-коде явным образом

Добавлено позже: в комментариях подсказали, что iPhone Safari не использует favicon.

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

CSS hack для Safari 2, 3, 4 и Chrome (Chromium) 1, 2, 3, 4, 5 и 6

Если у кого-то есть Safari или Chrome (Chromium), проверьте, пожалуйста, CSS-хак, который я сейчас изобрёл:

<head>
<style type="text/css">
   /* содержимое этого стиля увидит только WebKit-браузер */
    body:not([x|x]) div {
        background: red;
        width: 100%;
        height: 100%;
    }
</style>
<body><div></div></body>

Хочется узнать для каких версий браузеров он действует. Можно в почту написать: imbolk@gmail.com

P.S. Должна быть красная страница с белой рамкой.

P.P.S. В WebKit-браузере «Андроида» 2.2 тоже работает.

P.P.P.S. Для Konqueror 3.5 и выше этот CSS hack тоже работает. То есть это, скорее всего, особенность ещё KHTML-движка, из которого появился WebKit.

P.P.P.P.S. В комментариях проверили Safari 2 и Chrome 4, CSS hack работает.

P.P.P.P.P.S. Проверил под Chrome 1.0.154.59, работает.

P.P.P.P.P.P.S В комментариях проверили Chromium 6.0.424.0 (48800), CSS hack работает.

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

Петра (Иордания)

Петра (от греческого «πέτρα» — «камень») — древний город в Иордании, сейчас уже необитаемый. Построен примерно в 1200 году до нашей эры, входит в фонд всемирного наследния Юнеско. Город очень давно заброшен и до недавнего времени там жили бедуины, какое-то время назад для них построили деревню, переселили их туда, а в Петру начали водить туристов.

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

Мужчина и женщина сидят на коричневых лошадях, которые стоят нос к носу на фоне песчаных скал под ясным небом.

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

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

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

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

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

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

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

Вид на древний храм Петра из узкого каньона Вади-Муса, где туристы фотографируют величественное сооружение, высеченное в скале.

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

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

Интересны некоторые подробности. Четыре фигуры на самом верхнем ярусе связывают с четырьмя временами года, 12 зубчиков под вазой в центре — 12 месяцев, ниже в центре есть 30 ниш (30 дней в месяце), ещё ниже — 365 зубчиков (365 дней в году). Под вазой видны следы от пуль, во вторую мировую войну фашисты (как нам рассказал экскурсовод) пытались её разбить, думали, что там спрятаны сокровища.

Деталь фасада Петры: каменная арка с коринфскими колоннами и резным фризом под скальным навесом.
Фрагмент фасада древнего храма в Петре, высеченного в скале: колонны коринфского ордера, фриз с рельефами и скульптурные ниши под розово-песочным небом.

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

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

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

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

Малая Петра выглядит поскромнее, туристов водят туда редко (мы попали туда потому, что у нас набралась необычно маленькая группа) и чаще всего там проводят дни рождения олигархов (в том числе и российских) и тому подобные вещи.

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

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

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

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

P.S. Кстати, посетители сайта увидят больше фотографий, чем читатели RSS-потоков (и трансляций в ЖЖ и «Ярушку»), я сделал галереи фотографий на сайте, но в RSS их отдавать не буду — они просто не будут работать.

P.P.S. Забыл сказать, галерея работает только в современных браузерах. Это означает, что в Internet Explorer она не будет работать, даже в 8-й версии. В 9-й ещё не тестировал, но на всякий случай, отключено и там.

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

В интернет через «Андроид»

Последние мои три телефона (до Nexus One) — Nokia 6230 (не смартфон), Nokia N73 (Symbian OS 9.1) и HTC X7500 (Windows Mobile 6.1).

Со времени приобретения Nexus One я впервые столько выхожу в интернет с телефона, причём я ничего не делаю, телефон меня сам переманивает. Он просто спросил у меня пароль GMail и я стал читать почту, потому что игнорировать её нельзя — вверху есть уведомления, потом я стал редактировать контакты через GMail, потом поставил виджет Twitter, а теперь ещё и клиент для Google Reader.

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

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

Ребята, это действительно удобный телефон и удобная ОС!

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

Android: игра Doodle Jump

Забавная игрушка под «Андроид» — Doodle Jump, спасибо elfarda за ссылку!

Doodle Jump (15.82КиБ)

Версию под «Андроид» 1.x можно найти на «Народ.Диске», там же есть версия под 2.x. Инструкция, по сути, на скриншоте. Для удобства есть QR-код обеих ссылок:

Скачать Doodle Jump (0.72КиБ)

В «Маркете» игрушка вообще-то есть, но, поскольку она платная, из России скачать её не получится.

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

Картинки в комментариях на моём сайте

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

Итак, вставляются картинки только из сервиса «Яндекс.Фотки». Инструкция: идёте в любой альбом, тыкаете там в публичную фотку, берёте URL, который получился, указываете его в заметке, отправляете комментарий. Всё.

Приложенная фотка в комментариях (17.90КиБ)

В это время мой сервер просматривает урлы вашего комментария, находит три первых, похожих на урлы «Яндекс.Фоток» (отсюда ограничение — вставляются так только три первых картинки, остальные будут простыми урлами), идёт с ними в API фоток, берёт из присланного обратно XML урл картинки, выставляет формат «не более 500 пискелей в любую сторону» и вставляет полученное как картинку.

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

Принимаются советы, например, не много ли это — 500 пикселей, может сделать меньше? Доступные размеры есть на сайте документации API «Яндекс.Фоток».

P.S. Расскажу сразу почему «Яндекс.Фотки», а не любой другой сервис? Причин несколько — наличие API, которое доступно (в нужном мне функционале) без регистрации и авторизации.

Второе — неограниченный размер хранимых изображений на сервисе.

Третье — сервис закроется не раньше, чем закроется «Яндекс», то есть это маловероятное событие.

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

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

P.P.S. Это топик добра, в нём можно тестировать как работает вставка этого добра на страницу.

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

iPhone 4

Про iPhone 4 я промолчу, за меня всё скажет цитата с «Хабра»:

Autorun: Признаюсь, он превзошел все мои ожидания, даже в плане дизайна (несмотря на утекшие фото, которые меня немного расстроили), они существенно подняли эргономичность корпуса. Я молчу про все плюшки.

Bruce: Ваши комментарии в прошлом :) «Не не не, если это будет правда, то все, Джобсу пора на пенсию.» «так что даже в этом случае такой дизайн я уверен не пройдет.»

Исходя из этого мне иногда кажется, что Джобс продал душу Сатане.

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

Аппаратное ускорение в пятом «Сафари»

Safari5 vs IE9P2 (44.31КиБ)

На «Хабре» сравнили вышедший вчера Safari 5 и Internet Explorer 9 Preview 2. Оба браузера обладают аппаратным ускорением (на скриншоте — результаты теста «Flying Images»).

Видно крайне низкий показатель FPS у «Сафари». Странно, но под «Мак» таких проблем нет, похоже под Windows аппаратное ускорение неполное, если оно вообще там есть.

У меня на машине «Сафари» 5 показывает в том же тесте 1…2 fps, тогда как «Опера» 10.60a — около 35. Заметьте, у «Оперы» аппаратное ускорение не заявлено.

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

Регулятор громкости в плеере для IE

Я недавно делал плеер для Internet Explorer по функциональности похожий на VideoJS. Как я уже упоминал, там ни одной картинки — всё VML. Регулятор громкости и кнопочки — UTF-арт.

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

В UTF-8 есть такой символ «❚», им у меня сделана кнопка «Пауза» и им же нарисован регулятор громкости. Нарисовать нужно что-то подобное вот этому:

Регулятор громкости (0.48КиБ)

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

#video_volume {
    width: 34px;
    height: 20px;
    font: 14px Arial;
    color: white;
    background: gray;
    -webkit-border-radius: 0.5em;
    -moz-border-radius: 0.5em;
    -khtml-border-radius: 0.5em;
    border-radius: 0.5em;
}

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

<span>❚<span>❚<span>❚<span>❚<span>❚</span></span></span></span></span>

В стиле прописываем абсолютную позицию и margin-top, чтобы сделать отступ от родительского элемента:

#video_volume span {
    position: absolute;
    margin-top: 1px;
}

Получилась этакая рекурсия стилей. Уже близко к тому, что хочется получить.

Некрасивый регулятор громкости (0.41КиБ)

Теперь надо снизу обрезать лишнее. В IE я просто ограничил размеры и выставил overflow-y в hidden, тут я поступлю иначе — воспользуюсь crop.

#video_volume div {
    clip: rect(auto, auto, 14px, auto);
    position: absolute; /* crop работает только у абсолютно позиционированных элементов */
    /* кстати, ребята из W3C, почему вы забыли про crop? почему только прямоугольник, зачем position? */
}

Почти то что нужно, но повёрнуто в другую сторону:

Почти такой какой нужно (0.49КиБ)

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

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

Годный регулятор (0.48КиБ)

Получился такой код:

<head>
<style type="text/css">
#video_volume, #video_volume div {
    width: 34px;
    height: 20px;
    font: 14px Arial;
    color: white;
    background: gray;
    padding-right: 5px;
    -webkit-border-radius: 0.5em;
    -moz-border-radius: 0.5em;
    -khtml-border-radius: 0.5em;
    border-radius: 0.5em;
}

#video_volume div {
    clip: rect(auto, auto, 14px, auto);
    position: absolute;
    direction: rtl;
}

#video_volume span {
    position: absolute;
    margin-top: 1px;
}

</style>
</head>
<body>
<div id="video_volume">
<div>
<span>❚<span>❚<span>❚<span>❚<span>❚</span></span></span></span></span>
</div>
</div>
</body>

Кстати, «Опере» rtl правильно не работает (по крайней мере в моей 10.60 alpha), нужно расставлять margin, но я этого делать не буду. В конце-концов, это пример, демонстрирующий идею.

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

PHP-FPM будет входить в состав PHP 5.3.x

Отличная новость PHP-FPM (это патч к PHP, который делается Андреем Нигматуллиным и Майклом Шадлом, улучшает в PHP поддержку FastCGI) наконец-то будет входить в состав PHP 5.3.X.

Если вы не знакомы с этим патчем, то перечислю основные отличиями PHP-FPM от того, что входит в PHP по-умолчанию: умеет демонизироваться, умеет останавливать процессы без потери запросов, адаптивное к нагрузке количество процессов, возможность запуска с указанным gid/uid, chroot и различными опциями php.ini для каждого демона, возможность писать лог stdout и stderr, возможность рестартовать процессы без порчи кеша opcode в разделяемой памяти (при использовании eaccelerator), насильное завершение процесса по времени выполнения (как известно, set_time_limit не всегда это делает).

А так же возможность задавать заговолок ответа при фатальных ошибках PHP, поддержка возможности nginx 0.5.9+ передавать большие POST-запросы (например, загрузку файла) без сброса на диск, новая функция PHP fastcgi_finish_request, которая позволяет выполнять код после того как контент был отдан клиенту и веб-сервер и освободился для следующего запроса и slowlog, позволяющий контролировать какие скрипты выполняются медленнее указанного лимита.

В общем, исключительно полезный патч. Жаль, что в ветку PHP 5.2.X его почему-то не включат. Я не знаю причины, в сообщении на «Гугл-группах» по этому поводу написано « no way to add it to 5.2, sorry». Для PHP 5.2.X патч по-прежнему придётся накладывать руками, жаль.

На ветку 5.3.X вряд ли пока переходит много народу. Я попробовал мигрировать пару проектов, неудачно. Один завис (из-за использования crypt), второй заработал только частично. Очевидно, что обратная совместимость серьёзно поломана. При этом я не использую ничего, что перечисленно в официальном списке несовместимости.

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

Scalar type hinting в PHP 5.4.X или 6.X

Ну и раз уж я решил перед сном пописáть о PHP, то продолжу. Ещё новость из мира PHP — в PHP будет scalar type hinting. Илья Альшанетский добился включения своего патча в код.

Сейчас type hinting в PHP есть, я могу указать явно, что параметр будет объектом определённого класса или массивом:

function test1(MyClass $var) {}

function test2(array $var) {}

Скоро можно будет указать, что передаваемый аргумент должен быть скаляром. Жаль только, что появилась только возможность указать определённый тип. Если «object» указать можно, то «scalar», к сожалению, нет. Это странно. Придётся указывать явно:

function test3(string $var) {}

Что поможет снизить количество ошибок в отдельных случаях, но как быть, если мне такая жёсткость ни к чему, если я хочу оставить возможность преобразования типов, там где это сделано хорошо (преобразование типа «array» в «string» в PHP сделано бессмысленно, посмотрите на Perl, там это имеет смысл)? Да и как мне указать, что мне всё равно — придёт int или float? Видимо, только явным приведением типа при вызове, а про возврат значения по ссылке, в этом случае, придётся забыть.

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

Надеюсь, не одному мне этого хочется и Илья продолжит работу над патчем.

Добавлено через несколько минут: прочитал комментарии, оказывается идут дискуссии о добавлении ключевых слов «scalar» и «numeric». Кроме того, Илья рассуждает и о преобразованиях типов в рамках type hinting. Ура.

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

КГУ → КФУ

Вот так живёшь, а то, что родной Казанский Государственный Университет имени Ульянова-Ленина переименован в Казанский (Приволжский) Федеральный Университет узнаёшь из графы «Образование» «вкантактике» бывшего одногруппника.

У меня военник СССР и диплом об окончании КГУ, а ещё я прожил всё детство на улице Свердлова в родном городе. Последняя теперь проспект Пятидесятилетия Победы.

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

Караби-яйла

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

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

Зелёный склон холма, покрытый множеством красных цветов и камнями, под облачным небом; на вершине виднеется одинокое дерево.
Три ярко-красных пиона с жёлтыми тычинками цветут среди зелёных перистых листьев, серых камней и мелких жёлтых полевых цветов на фоне сухой травы.
Группа лошадей разных окрасов стоит и ходит по зелёному лугу под облачным небом.
Кустик белых цветов с розовыми центрами растёт среди серых камней и зелёной растительности на каменистой почве.
Крупный план розово-белых цветков с тёмно-розовым центром, растущих среди серых камней и зелёных листьев на каменистой почве.
Группа лошадей разных окрасов пасётся на зелёном холме с белыми скальными выходами, на фоне густого леса.
Цветущий куст с белыми цветами растёт среди серых скал и зелёных кустарников на фоне пасмурного неба.

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

Группа людей стоит у обветшалого светло-голубого здания с облупившейся краской; на крыше сидит человек, на стене — информационная табличка «КАРАБИ-ЯЙЛА» и синяя вывеска.
Зелёный внедорожник «Скорой помощи» с надписью «ГОРНО-СПАСАТЕЛЬНАЯ СЛУЖБА» и эмблемой «MOUNTAIN RESCUE OF CRIMEA» стоит на зелёном поле под облачным небом.
Два белых дома с красной и белой крышами, синими дверями и окнами, стоящие на фоне туманных холмов; перед ними — мокрый дворик с дорожкой и зелёной травой.
Ржавый зелёный трактор стоит на крыше бетонного здания с синей дверцей, на фоне зелёных холмов и облачного неба.

В первый день решили сходить для пробы в небольшую пещеру — «Сказка» (15 метров), внутри было красиво, но как-то… быстро, так что в тот же день мы пошли в «Виолу» (43 метра), в итоге, когда вышли на поверхность было темно и, хотя у нас были с собой GPS и карты, мы довольно долго плутали — местность сильно пересечена. В итоге, первый наш выход был довольно трудным — 13 часов на ногах, два спуска. Для новичков прилично.

Металлическая квадратная табличка с центральным отверстием, прикреплённая к скале; на ней читаются надписи «СНАЙКА», «15», «0001» и «709-9».
Влажные сталактиты и сталагмиты коричневого и бежевого оттенков в пещере, с крупными нависающими образованиями на потолке и бугристыми выступами на полу.
Спелеолог в оранжевой куртке и синих брюках поднимается по каменистой стене пещеры, используя верёвку и страховочное снаряжение, освещённый светом из отверстия в потолке.
Белая перчатка указывает на крупного чёрного жука с металлическим блеском, ползущего по влажной каменистой поверхности с зелёным мхом.

«Сказка», конечно, очень небольшая пещера, если ничего не путаю, всего два небольших зала. В «Виоле» (другое название — «Эгиз-Тинах-3») места побольше, в 2007-м году там играли в футбол. Внутри огромный, красивый зал, к сожалению, даже наши четыре «Феникса» по 225 люмен не смогли осветить пещеру настолько, чтобы на фотографиях можно было бы показать насколько это было красиво.

Металлическая табличка с надписью «ЭГИЗ-ТИНАХ 3», номером «710-2» и годом «1999», установленная на тёмной каменной поверхности.
Спелеолог в синем шлеме с фонарём и красной страховочной системе устанавливает страховочный узел на скале в пещере, держа карабин в перчатке.
Спелеолог в синем шлеме спускается по верёвке в тёмную пещеру с грубыми каменными стенами, вид сверху вниз.
Крупный план сталактитов и сталагмитов в пещере: длинные коричневые и бежевые известняковые образования свисают с потолка и поднимаются со дна, создавая причудливые формы.
Крупный план сталагмитов в пещере: вертикальные известковые наросты бежево-коричневых оттенков с влажной текстурой и неровной поверхностью.
Коллаж из двух фотографий сталактитов и сталагмитов в пещере, демонстрирующий разнообразие форм и оттенков известковых отложений.

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

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

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

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

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

На следующий день мы пошли в пещеру «Дублянского» (88 метров), делал навеску я, снимал тоже я, есть чем похвастаться — хорошо навесил. Пещера по площади много больше «Виолы», думаю, мы прошли лишь небольшой кусок, хотя в пещере провели, вместе со спуском и подъёмом, около 6…7 часов. Огромный трёхмерный лабиринт, образованным гиганскими сталактитами, упавшими с потолка пещеры.

Металлическая геодезическая марка на камне с надписью «ДУБЛЯНСКОГО», высотой 709,7 м и годом 1999.
Без рубашки мужчина сидит на траве в горах, пьёт из кружки, рядом термос и рюкзак, вокруг — зелёная трава с жёлтыми цветами.
Спелеолог в красном шлеме и снаряжении стоит на каменистом склоне среди деревьев, работая с верёвкой.
Два снимка альпиниста в красном шлеме, спускающегося по скальному склону с верёвкой, среди деревьев и камней.
Спелеолог в белой каске и зелено-желтом костюме спускается по веревке в темную пещеру с влажными скальными стенами.
Спелеолог в каске и снаряжении стоит на скалистом дне пещеры, освещённый фонарём, среди тёмных стен и выступов породы.
Двое спелеологов в защитной экипировке и касках со светом на голове стоят в тёмной пещере рядом с крупным сталагмитом и скальными образованиями.

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

Металлическая геодезическая марка на розовато-серой скале с надписью «КРУБЕРА», датой «1999», координатами «7.12.4» и знаком «-62».
Крупный план скалистого обрыва с трещиной, среди которого растут зелёные кустарники и трава.
Зелёные ветви и белые цветы растут в трещине серой скалы, покрытой лишайниками.

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

Металлическая табличка на скале с надписью «БОЛЬШОЙ БУЗУЛУК», высотой 713,16 м и координатами 58°16′ с.ш., 68°28′ в.д.
Девушка в светлой толстовке стоит у входа в большую пещеру в скале, рядом с зелёными деревьями и каменистой тропой.
Вид внутри пещеры с шероховатыми коричневыми стенами, трещинами и небольшими сталактитами на потолке.
Двое в защитных костюмах и шлемах с фонарями стоят рядом на чёрном фоне; один в оранжевом, другой в зелёном, оба с забралами, обнимают друг друга.
Две фотографии спелеолога в оранжевом костюме и белом шлеме: слева — на скале с верёвкой, справа — у ледяного водопада в пещере.
Четыре спелеолога в касках и снаряжении у входа в пещеру: один стоит, двое сидят, один работает с верёвкой на фоне скал и зелени.

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

Металлическая геодезическая марка на камне с надписью «КАСТЕРЕ», номером «709-15» и координатами «67°» и «1999».
Вид вглубь тёмной пещеры или расщелины, обрамлённой покрытыми мхом скалами и папоротниками на светлом краю.
Крупный план сталактитов и сталагмитов в пещере: коричневые известняковые образования свисают с потолка и растут со дна на фоне темноты.
Спелеолог в красном шлеме и снаряжении спускается по верёвке в пещере с мхом; справа — другой спелеолог в тесном коридоре с фонарём на голове, протягивающий руку.

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

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

Последняя пещера, в которой мы побывали — «200 лет Симферополя», 102 метра. Справедливости ради надо отметить, что я сходил ещё в одну — «Мамина» (мама тут не причём, её открыл Аби Усеинович Мамин), это неинтересная горизонталка с тремя залами, протяжённостью в 76 метров и глубиной в 27. Неинтересна пещера, прежде всего, потому, что основательно загажена туристами — при наличии навыков спуститься в неё можно без снаряжения.

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

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

Так что поверьте на слово, это жутко и красиво.

Металлическая табличка на камне: «200 ЛЕТ СИМФЕРОПОЛЯ», годы 1802–2002, высота 712,25 м.
Вход в пещеру в скалистом склоне с верёвкой и карабином для страховки, металлическая табличка с номером на камне, растительность среди камней.

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

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

P.S. Больше снимков можно увидеть в моём альбоме на «Яндекс.Фотках» (там же есть фотографии, которые снимал Денис).

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

Билеты на аэроэкспресс через интернет

Билет (25.04КиБ)

Оказывается, билеты на аэроэкспресс от и до московских аэропортов (Внукова, Домодедова, Шереметьева) можно купить через интернет, причём, если покупать более, чем за месяц, скидка почти 17%, иначе — 10.

Сегодня купил билет за 270 (на вокзале он стоит 300).

А ещё номер билета приходит на почту и телефон. То есть, если вы билет не распечатали, а телефон у вас с собой, то ничего страшного, номер у вас есть.

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

Обнаружение версии IE в режиме эмуляции через условную компиляцию JavaScript

В свежей статье в блоге IE есть ответ на вопрос как обнаружить версию браузера Internet Explorer в любом режиме (например, в режиме эмуляции другой версии):

@_jscript_version statement is actually an indicator of which version of JScript is in use by the browser as a whole. In ALL document modes of IE9, this statement currently equates to “9”. In ALL document modes of IE8 it equates to “5.8” and in IE7 it is “5.7”

Отсюда вывод:

/*@cc_on
    @if( @_jscript_version == 5.8 )
        // Это полюбому IE 8
        ...
    @end
@*/

То есть (перевожу) «@_jscript_version» в IE8 всегда равно «5.8», в IE7 — «5.7» , а в IE9 — «9».

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

Четыре малоизвестных факта о conditional comments (условных комментариях) в Internet Explorer

Во-первых, при помощи условных комментарие в IE можно определять не только версию IE. Например, можно узнать есть ли поддержка VML. Подозреваю, что эту поддержку из Internet Explorer когда-то удалят, так как сейчас удаляют expression. Так что проверять поддержку VML, правильнее так:

<!--[if VML]> Код VML <![endif]-->

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

Можно, например, проверить запущен ли браузер на Windows 7. «Семёрка» и Vista вообще сильно отличаются по возможностям по XP, так что это иногда может быть полезно. Например, в Vista/7 поддерживается TLS SNI или аппаратное 2D-ускорение в Internet Explorer 9.

<!--[if WindowsEdition]> Это Windows 7 или старше <![endif] -->

В-третьих, если вы автор какого-то плагина, можно добавить возможность проверки версии плагина и его наличия в условные комментарии. Для этого нужно поместить его версию и название в ветку реестра HKEY_LOCAL_MACHINE → Software → Microsoft → Internet Explorer → Version Vector → MyPlugin = 0.5.

<!--[if gte MyPlugn 1.2]> Мой плагин версии 1.2 и выше <![endif] -->

Этот же способ позволяет изменить версию IE для проверки в conditional comments на любую — достаточно исправить значение «IE» в указанной ветки реестра и перезапустить браузер.

В-четвёртых, удивительно, но не все знают, что в conditional comments доступны операторы «И», «ИЛИ» и группировка. Что полезно, чаще всего, для указания диапазона версий браузера.

<!--[if (IE 7) | (WindowsEdition)]> Это IE7 или любой IE на Windows 7 и выше <![endif] -->
<!--[if (gte IE 6) & (lt IE 9)]> Это IE6-8 <![endif] -->

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

Браузеры и стандарты: Ахиллес и черепаха

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

Упомянутая статья за полгода не обновлялась (о чём говорит отсутствие упоминания об SVG в IE9), так что предпосылки неверные. Предпосылки неверные, но вывод, впрочем, правильный. В плане стандартов будущее крайне далеко.

Должен сказать, что любые тесты браузеров — это сферические кони в вакууме. Какие, нахрен, ACID3, какие SunSpider? «Опера» до сих пор не поддерживает CSS1! Ибо сказано:

The format of a percentage value is an optional sign character (’+’ or ’-’, with ’+’ being the default) immediately followed by a number (with or without a decimal point) immediately followed by ’%’.

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

CSS3-селекторы. Уже все основные браузеры хвастаются их поддержкой. На сайте CSS3.info есть даже специальный тест, на который часто ссылаются. Ну, хорошо «Хром» этот тест проходит. И начал проходить едва ли не раньше всех.

Если этот браузер заявляется поддержку селекторов CSS3, то для меня, как разработчика, это должно, видимо, означать, что работает и любая их комбинация, не так ли? Иначе, что толку от поддержки селекторов по одному в строке?

И вот реальная задача — делал я галереи на сайте без использования JavaScript, на голом CSS (спасибо селектору «:target», это самое крутое, что появилось в CSS за последние годы). Простая задача — если «:target» не указывает ни на один из тегов в текущей галерее, нужно указать, что выбрано первое изображение.

Да, пожалуйста (у меня первое изображение это последний элемент списка):

.gallery li:not(:target) ~ li:last-child a {
    background: #fff;
    color: #000;
}

.gallery li:target ~ li:last-child a {
    background: #aaa;
    background: rgba(170, 170, 170, 0.5);
    color: #fff;
}

Несложно же. «Опера» и «Файерфокс» чудесно с этим справляются, почему бы и нет, все селекторы им знакомы. Но это не работает в «Хроме» и «Сафари» (5-й «Сафари» я ещё не тестировал), точнее, это работает, но глючит — срабатывает только на следующем элементе, а не каждом. Чтобы исправить проблему, мне пришлось изобрести CSS hack для «Safari» и Chrome.

Так повсюду, в блоге IE авторы как-то показывали, что «border-radius» и «box-shadow» поддерживаются браузерами с глюками или имеют серьёзные различия в рендере. Всюду так — заявлена поддержка SVG1.1, но чего-то нехватает, Canvas, но текстом писать нельзя, тег VIDEO, но нельзя открывать на весь экран.

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

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

Селектор «:target» хоть и самое чудесное, но, в то же время, почти самое недодуманное в CSS за последние годы. Это уже ощутили мои читатели. Конечно, «:target» добавляет интерактива в CSS, но хотелось бы, чтобы этот интерактив не касался напрямую HTML, т. е. был какой-то флаг, указал его и страница не прокручивается к целевому тегу. Придётся переделать галерею на JavaScript.

Предыдущая моя заметка о conditional comments. Я уже когда-то говорил и ещё раз скажу — W3C делает большую ошибку, что не включает их в стандарт, причём на уровне и HTML, и CSS. W3C заявляет, что конечная цель — стандартное счастье у всех браузеров. Увы, в свете сказанного, туда идти ещё очень долго, учитывая все баги, недоделки, несделанное и просто ещё не дописанное самим W3C. А сейчас-то что делать? Как мне для «Сафари» и «Хрома» такой-то версии что-то выключить? Использовать CSS-хаки?

И ещё, как я уже писал W3C вряд ли когда-нибудь вообще остановится. Будут всё новые и новые стандарты, улучшения существующих. Это значит, что браузеры никогда не достигнут всего, что описано. И поэтому тоже нам нужны conditional comments.

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

IE, непрямоугольные блоки и тени

IE крутой (20.16КиБ)

Что я хочу сказать по поводу статьи «Хитрая тень» в блоге Олега Мохова?

<html>
<head>
<xml:namespace ns="urn:schemas-microsoft-com:vml" prefix="v"/>
<style type="text/css">
.vml {
    behavior: url(#default#VML);
    -ms-behavior: url(#default#VML);
    font: 12px Tahoma, sans-serif;
}
#bar1 {
    width: 400px;
    height: 60px;
    color: white;
    padding: 12px;
    display: block;
}

#bar2 {
    width: 20px;
    height: 22px;
    padding: 12px;
    color: white;
    position:absolute;
}
</style>
</head>

<body>

  <v:roundrect class="vml" id="bar1" fillcolor="navy" strokecolor="navy" strokeweight="1px" arcsize="0.1">
  Привет, ребята из W3C! Отсталый Internet Explorer уже много-много лет умеет смешивать векторный язык и
  HTML, а в 2010 году не все продвинутые браузеры так умеют.
  <v:shadow class="vml" on="true" opacity="0.3" color="navy" offset="7px,5px" />
  </v:roundrect>

   <v:shape class="vml" id="bar2"
   fillcolor="red" strokecolor="red"
   coordorigin="0 0" coordsize="200 200"
   path="m 1,1 l 800,1, 800,400, 1800,400, 1800,1500, 1,1500, x e">
   <v:shadow class="vml" on="true" opacity="0.3" color="red" offset="7px,5px"  />
    <p>Привет<br />ещё раз!</p>
    <p>Вы знаете, уже Internet Explorer 5.0 умеет делать непрямоугольные блоки.</p>
    <p>Причём, делает это непринуждённо.</p>
   </v:shape>
</body>

</html>

Что IE умеет круче ещё с пятой версии.

Добавлено позднее: в комментариях мне подсказывают, что в IE8/9 надо либо включать режим эмуляции, либо использовать «-ms-behavior» и позиционировать элементы абсолютно.

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

Выяснил группу крови

На 32-м году жизни выяснил свою группу крови. У меня 2-я (A), резус отрицательный, у жены — 4-я (AB), резус положительный. Отличное сочетание, кстати, в смысле планирования ребёнка.

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

Гимн России и гики

Забыли гимн России? Не беда!

Мой вариант для Windows CMD (в одну строку):

@echo off & (for /l %z in (200,1,223) do
for /f "usebackq skip=3 tokens=2 delims=:" %a in (`nslookup 62.76.96.%z`) do
set y=%a & echo %y:.= % | findstr /RV "[0-9]") & echo on

Вариант для Unix/Linux/Mac (bash):

dig -t ptr +short {200..225}.96.76.62.in-addr.arpa

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

Идея: кнопка добавления в Google Reader

В комментариях к одному из постов, меня попросили сделать кнопку добавления RSS комментариев в «Google Reader» (если я правильно помню суть просьбы).

Мне эта идея не нравится, потому что я не знаю какое количество моих читателей пользуется «Google Reader», остальным, понятно, эта кнопка ни к чему. Я тут подумал — хорошо было бы ставить эту кнопку тем, что этим сервисом «Гугла» пользуется. Но как узнать кто пользуется, а кто нет?

Сейчас меня осенило (впрочем, скоро это не будет работать в Firefox, когда выйдет версия 3.7). Всё просто — надо найти URL по которому заходит только авторизованный пользователь «Google Reader», причём URL этот должен быть инвариантен пользователю, может это какая-то картинка или CSS/JS. Далее, на моей странице делается ссылка на этот URL и через псевдоселектор «:visited» ей ставится какое-то свойство CSS, которое я смогу проконтролировать через JavaScript.

Далее всё просто — у данной ссылки есть то свойство, значит пользователь недавно логинился в «Google Reader», если нет, не логинился. На основании этого можно ставить или убирать кнопку добавления RSS в этот сервис. Можно ещё выставить куку, чтобы в дальнейшем основываться уже на её наличии (если есть — пользователь пользуется «Google Reader», нет — ничего не значит).

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

«Опера» — ещё больше вещей из HTML5

Пока я тут ною, что «Опера» не поддерживает CSS1 в полном объёме, новый билд «Оперы» (10.60а build 3419) стал поддерживать кодек WebM для тега VIDEO (у которого есть все шансы стать стандартом), HTML5 offline web applications, Geolocation API (что давно было известно), Web Workers и Cross-Document Messaging.

Круто, ребята, очень круто. Но сделайте поддержку CSS1 уже наконец.

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

HTML5 test

Автор теста HTML5 обновил свой тест, теперь максимальное количество очков, которое может набрать браузер — 300, а не 160. Кроме того, теперь поддержка браузером кодеков для тегов VIDEO/AUDIO не влияет на основные очки, а даёт бонусные. Это правильно, так как стандартном HTML5 кодек так и не выбран.

Результаты по браузерам выглядят так:

«Сафари» 5 — 208 (ночная сборка — 220) «Хром» 5 — 197 (ночная сборка — 217) FireFox 3.6 — 139 (ночная сборка — 176) «Опера» 10.50 — 129 (10.60a 3422 — 159) Internet Explorer 8 — 27 (IE9PP2 — 32)

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

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

«Эпл» делает очень плохой софт под Windows

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

QuickTime ведёт переговоры (11.07КиБ)
QuickTime делает глупое лицо (10.70КиБ)

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

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

Проблема: Windows 7 и Samba (Linux)

secpol.msc (54.78КиБ)

Взял на работе другой ноутбук — Dell Latitude E4200, он идёт у нас с Windows 7. Всё хорошо (наконец-то оценил быстродействие SSD-диска), но вот беда — Samba на Ubunta не дружит в Windows 7. Не удаётся подсоединить мою разработческую машину по «Самбе» к ноуту.

Проблема решается следующим образом: либо нужно поставить последнюю превью Samba 3.5 и включить в настройках «max protocol = smb2», либо запустить под Windows 7 «secpol.msc» (Win+R, secpol.msc, Enter) и в «Local Policies» («Локальные политики») → «Security Options» («Параметры безопасности») → «Network security: LAN Manager authentication level» («Параметры безопасности: уровень подлинности LAN Manager») поменять значение на «Send LM & NTLM use NTLMv2 session security if negotiated» («Отправлять LM и NTML — использовать сеансовую безопаcность NTLMv2 при согласовании»).

Я ещё менял кое-что в реестре, но, возможно, это и не обязательно.

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

Обновления на блоге

Как многие уже почуствовали, я начал чуть-чуть обновлять движок блога. (Да, я знаю, что мысль сделать галерею на CSS была неудачной, переделаю).

Сейчас я изменил алгоритм определения и вывода аватаров, а так же заменил библиотеку OpenID с страшной, как смерть, Simple OpenID на огромную (почти полмегабайта!) PHP OpenID от JanRain.

В частности, это значит, что у меня теперь работает OpenID 2, что даёт возможность, например, авторизовываться пользователя Flickr. Кроме того, должна вернуться возможность логиниться тем ЖЖ-пользователям, у которых логин начинается и/или заканчивается подчёркиванием.

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

P.S. Нет, не ок. Лучше пока не комментрировать.

P.P.S. Починил, но пока не работают ответы. Работают.

P.P.P.S. Ещё бы библиотеку для разбора hCard на PHP хорошую. hKit глючит, например, профиль на «Хабре» он не разбирает. А ещё в CSS media query нехватает запроса «это мощный компьютер?».

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

Анонимные комментарии

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

ш͂к̵̗̤̩͎͇͍̂̒ͦо̺͇͍̯̮̔̑ͯ̈́̂л̱̘̫̗͓̺̟ͮ̚о̼̰̖̦͉̥ͮ͗̑ͣт̰̼̩̑̄ͫ͛ы̛́ͭ͗ͦ̿̔̚,

которая неинтересна чуть более, чем полностью, и умеет постить только что-то вроде «НЕТ ТЫ».

Очень жаль, но значительное количество умных людей, видимо, не имеет OpenID аккаунта. Читателей у меня около 3-4 тысяч, а комметрируют меньше тысячи. Последние изменения для поддержки OpenID2 сделано, в том числе, и для того, чтобы больше людей, которым есть что сказать, смогли высказаться.

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

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

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

Видео для веба: у VP8 есть будущее

На «Хабре» появилось сравнение кодеков Theora, H.264 и VP8, основной вывод:

Формат VP8 вполне подходит для веба. Он намного лучше Ogg Theora и сравним с H.264 по параметру размер/качество. Вопросы о патентной чистоте и скорости декодирования остаются пока открытыми. Получит ли формат распространение — это вопрос скорее коммерческого и политического успеха, нежели технического.

H.264 остаётся лидером, а Theora, похоже, безнадёжно отстала от конкурентов.

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

У меня на работе, на столе цветок распустился

Цветок на работе (40.87КиБ)

Сегодня же воскресенье, надо постить что-то лёгкое и радостное. У меня на рабочем столе на столе, на работе цветок распустился.

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

SAR и показатель излучения телефона

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

Например, у телефона MagCom (модель MagCom) уровень SAR — 0,04 , а у iPhone 3GS — 1,20 (это в максимуме). Норма — 2. Кстати, маркетологи, вот вам идея. «Экологичный» телефон, зелёный и из дерева. С минимальным уровнем излучения. «Защитись от рака» и всё такое.

И кстати, у Nexus One — 0,823.

Излучение телефона зависит от того, на какой частоте он работает (только у GSM несколько частотных диапазонов, а есть ещё WCDMA и так далее), насколько высок уровень сигнала от станции и не влючены ли WiFi и Bluetooth (излучают все передатчики) и прочие радиомодули.

Кроме того, SAR по-разному замеряют в разных странах. В США и некоторых других странах измеряют величину SAR на 1 грамм ткани (и часто эту характеристику обозначают как US SAR), норма в этих странах составляет 1,6 Вт/кг, в Европе и части других стран — на 10 грамм, норма, в этом случае — 2 Вт/кг (EU SAR). В России приняты свои нормы СанПиН. Величину SAR в них простой математикой не перевести, но известно, что российские нормы, в целом, более строгие.

Теперь, следите за руками. А что будет, если у телефона два или три телефонных радиомодуля? Логично, что уровень излучения у них будет выше. А на сколько? Складываются ли величины SAR? Ответа на последний вопрос я не знаю, но SAR для мобильников с несколькими симками можно посмотреть.

Я посмотрел, несколько примеров. Сертифицированный Samsung Duos SGH-D880 — 0.22 Вт/кг (на 10 г), Samsung Duos GT-C5212 — 0,62, а фирма Fly нигде не разглашает информацию о SAR своих телефонов (sic!), но в России они продаются официально. Видимо, уровень максимально допустимый или очень близкий к верхней границе.

Для «серых» китайцев характеристики найти сложнее, но в сети упоминается, что, якобы, кто-то из Mobile-Review производил замеры (на их сайте ничего не нашёл) и результаты получились следующими: TV1000 — 1,63, N95 — 2,08, F003 — 3,12, C5000 — 2,63. Если это правда, то по какой измерялось шкале неважно, всё равно это очень много.

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

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

P.S. На закуску — существует сотовый телефон с 4 SIM, производит, конечно, Китай.

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

Анонимные комментарии включены

Анонимные комменты (38.85КиБ)

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

Пока решил не делать цвет анонимных комментариев каким-нибудь блеклым цветом, но если пойдёт спам, то поставлю Akismet (ключ к API уже получил) и буду менять цвет анонимных комментариев.

Естественно, для анонимов недоступен RSS-поток их комментариев.

Добавлено утром: ну вот, спам уже попёр. Придётся делать резалку.

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

Насуби

Ничего себе, как я такое пропустил:

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

Причём всё строго — никакой еды или напитков от организаторов (хотя вода из-под крана, кажется, все-таки была), что заработал — тем и полакомился, круглосуточная трансляция и десятки миллионов следящих фанатов исключают несанкционированный подкорм Насуби. То есть даже если это был специально нанятый актер, ему от этого было не легче. […]

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

Мужчина с удивлённым выражением лица рядом с коробкой, полной бананов в пузырчатой плёнке; внизу надпись: «こんなにイッパイ♥» и перевод «An incredible amount of bananas.

Японцы — точно иноплатетяне. Чем больше я смотрю японских шоу, тем больше понимаю насколько гигантские различия могут быть у жителей других планет. У фантастов на такое не хватает фантазии просто — они берутся описывать только одно, какое-то коренное отличие или кучу мелких, но неглубоких. Я вот сейчас читаю Желязны, про Амбер и Хаос. Другой мир, да, другие законы, и Желязны большой молодец, на таком уровне мало кто пишет, но всё равно, упущений — масса, океан.

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

Суровый челябинский блогер отжал у нигерийцев $10

Про «нигерийские письма» все в курсе? А вот суровый челябинский блогер получил с нигерийцев 10 долларов.

В ответном письме я разыграл какого-то, не знаю, Форреста Гампа, потому на плохом английском пытался косить под дурака. Дорогой Хансон, писал я, моя жена говорит, что это все мошенничество, и не дает мне денег. Хансончик, милый, не мог бы ты попросить этого работника банка отправить мне от своего имени какую-нибудь символическую сумму, ну, скажем, 10 долларов, чтобы моя жена убедилась в том, что это не очередной мой воображаемый друг, и вы не аферисты.

Вечером Хансон неожиданно звонит мне на мобильник и говорит, мол, акуна матата, выслали Вестерн Юнионом 10 баксов, покажи жене платежку из Того. Сегодня утром снял деньги.

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

⌘ WTF?

Я что, сегодня при походке виляю бёдрами? Или у меня на футболке яблоко, надкушенное Аланом Тьюрингом? Или ноут под мышкой чем-то напоминает проданный воздух? Почему, когда я шёл домой, меня остановил какой-то парень и проникновенно спросил: «Не знаете, сколько может стоит iPhone? В нём восемь гигабайт.». Я ответил, что не знаю.

P.S. Текст наполнен намёками.

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

Терри Пратчетт. Перевод «Unseen Academicals» («Невиданное университетское одеяние»)

Роман наконец-то закончил перевод книги Терри Пратчетта «Unseen Academicals» (в Википедии название перевели как «Невиданное университетское одеяние»). Читать в ЖЖ как-то неудобно, поэтому кто-то взял LJSM, PowerShell, PHP, Microsoft Word и собрал переведённый текст в один файл.

Кодировка — Windows CP-1251. Это не fb2 или PDF, но читать можно.

Скачать можно со «Слил», «RapidShare», «iFolder», «ExFile», «WebFile», «Upload.com.ua», «OpenFile», «Mail.ru», «DepositFiles» и «FileLand».

Добавлено через несколько минут: на Mail.ru можно найти и версию FB2, а так же на iFolder и DepositFiles.

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

Скорости флешек

Появился полезный сайт — UsbFlashSpeed. На нём есть данные по измерению флешек различных производителей и утилита для тестирования. Пока (из измеренных) самая быстрая по записи флешка — 4ГБ Transcend JetFlash 168 (20.27 МБ/с), по чтению — 16ГБ Silicon Power LuxMini 920 (30.24 МБ/с).

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

Этиловый спирт и время

ГОСТ 18300-72:

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

ГОСТ 5964-82:

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

ГОСТ 5964-93:

Этиловый спирт — легко воспламеняющаяся бесцветная жидкость с характерным запахом

Такая вот метаморфоза. Если кто не знает, последние две цифры у ГОСТа — год, когда он был принят. Новая редакция заменяет прежнюю.

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

Тут недавно спрашивали про антивирусы под смартфоны

Недаром недавно во внутренней «Ярушке» спрашивали антивирусы под смартфон. Вышедшая iOS 4 под iPhone закрывает массу уязвимостей, среди которых (в числе прочих):

Processing a maliciously crafted JPEG image may lead to an unexpected application termination or arbitrary code execution.

Читайте как «посмотрел картинку на сайте в браузере, теперь у вас вирус». Там такого много, кстати.

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

Canvas в IE9 будет

Ну что, AMD действительно тогда проговорилась, никакой ошибки нет — в IE9 будет CANVAS. Только что появился Internet Explorer 9 Platform Preview 3 и там есть CANVAS.

Скриншот веб-страницы Ben Joffe с игрой «Canvascape - '3D Walker'» и всплывающим окном о версии Windows Internet Explorer Platform Preview 1.9.7874.6000 (IE 9.0).

Должен сказать, скорость очень хорошая. Реализовано пока не всё (это всё-таки даже не альфа), но для работы многих демок и игрушек хватает. Правда на синтетических тестах результаты противоречивые. Я сравнивал с последней сборкой «Оперы» 10.60, где-то IE9 впереди, где-то «Опера» сильно обгоняет.

Кажется, с применением полупрозрачности (и тени) производительность IE9PP3 пока резко падает.

Из других новостей: AUDIO, VIDEO, CANVAS с аппаратным ускорением, увеличена производительность и улучшена его поддержка JavaScript, поддержка WOFF (формат шрифтов), ACID3 — 83%, HTML5 test — 84/300 (предыдущий результат — 32).

Unicode со «школотой» по-прежнему рисует квадратиками.

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

Антенну iPhone 4 нельзя зажимать рукой?

A growing number of iPhone 4 owners are reporting that holding the iPhone 4 has an effect on the signal strength of the handset. Multiple videos demonstrate this unusual behavior in which the iPhone, when held in the palm of one’s hand, will lose signal strength by going from 5 bars of coverage to no service in less than a minute.

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

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

Наша история в картине

Наша история (67.88КиБ)

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

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

Thunderbird 3.1 заколебал

Thunderbird навязчив (7.43КиБ)

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

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

Ладно, я привыкну, человек ко всему привыкает. Но, ёкарный же бабай, неужели то, что «текущая операция над „Спам“ не выполнена» так важно, что это надо писать на полосе размером 1014×112 пикселей?! По высоте это 1/8 часть моего экрана. Вы умудряетесь сообщать мне это бесполезное для меня дерьмо, даже когда Thunderbird не является активным приложением и закрывать, таким образом, восьмую часть того над чем я сейчас работаю.

Причём большая часть этой полосы — логотип.

Лучи поноса тому, кто это сделал.

Я в возмущении.

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

Вакансии программистов в «Яндексе»

Ребята, у меня в группе появилось несколько вакансий программиста на Пайтоне. Основные требования — Python, MySQL, чтение HTML/CSS. Большим плюсом будет знание Django, плюсом — знание Perl или PHP, умение работать с SVN или представление о том, что такое системы контроля версий.

Напишите о себе мне на почту или в комметариях к этой заметке (только не забудьте сказать как с вами связаться).

Работать придётся на внутренними сервисами компании «Яндекса», это (например) наша внутренняя Вики, «Ярушка», система для саппортов, архив рассылок и так далее.

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

В журнале «Xakep» написано, что XOR эффектиный криптоалгоритм

Ответ очень прост — нужно вспомнить алгоритмы шифрования. Самым простым и одним из самых эффективных (при правильном использовании) криптоалгоритмов является так называемое XOR-шифрование.

Цитата из журнала «Xaxep». OMG! XOR назвали «эффективным криптоалгоритмом».

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

Короткий способ определения IE через JavaScript в IE9 не сработает

Из блога IEBlog:

var len = [1,2,3,].length; 
alert(len); //should be 3, IE8 says 4

В IE9 поправили застарелый баг — Internet Explorer добавляет ещё один элемент в массив, если в конце перечисления элементов массива есть запятая. На этом основан самый короткий способ проверки на IE через JavaScript. По стандарту последняя запятая игнорируется. IE9 теперь следует стандарту.

Не будет работать и проверка через «\v» (цитата из того же блога):

alert("\v"==="v");//IE8 said true, should be false 
alert("\v"==="\u000b"); 
    //IE8 said false, should be true

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

if (/*@cc_on!@*/0) {
    // IE
}

P.S. А вот найденную мной… особенность метода split в IE9 так и не поправили.

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

Пуш-ап в плавках

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

— И с пушапом есть… — Чего? С чем-чем? — С пушапом. Вот. Изволите видеть…

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

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

Цитата из чьего-то ЖЖ. Ну что, скоро мужики будут, в притворном непонимании, восклицать — «ну что такое! она весь вечер смотрит на мои плавки!».

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

Wolf 5k strikes back

Забавная была игрушка «Wolf5K». Это игра на JavaScript, занимающая пять килобайт (!). Был такой конкурс когда-то — «The 5K», цель — уместить что-нибудь толковое в 5 килобайт.

Скриншот интерфейса игры: слева — счёт (Score), в центре — количество оставшихся врагов (Enemies Remaining), справа — здоровье (Health).

Ребята произвели фурор тогда, они уместили в этот размер небольшую псевдотрёхмерную бродилку. Никаких CANVAS! Хитрость в том, что вся графика (кроме кровищи) делается в формате XBM и передаётся тегу IMG через схему «javascript». Игрушка работала в IE5, IE6, Mozilla 1.1+ и Netscape 4.77 для Мака.

Формат XBM — это текстовый формат чёрно-белых картинок (я даже когда-то делал библиотеку для PHP Image::XBM). Его удалили из IE в SP2, работает ли это до сих пор в Gecko-браузерах я не знаю (у меня сейчас не установлен FF, а ставить лень), а «Опера» не читает графику через схему «javascript», так как никогда не делает попыток угадать контент по содержанию. Только по MIME-типу.

В общем, захотелось мне почему-то вспомнить эту игрушку, а она у меня не работает. Ну, делов-то. Заменить схему «javascript» на чуть доработанную «data». Вот патч, нужно открыть окно игры, скопировать его в строку браузера и нажать «Enter»:

javascript:void(eval(X.toString().replace(/"j.*?;"/, '"data:image/x-xbitmap," + encodeURI(im)')))

В IE по-прежнему работать не будет (в нём нет XBM), в «Хроме» тоже не должно, в «Опере» — заработает. Если у кого-нибудь установлено что-то ещё, попробуйте и скажите получилось ли.

Добавлено утром: читатели сообщают, что в «Сафари» тоже работает.

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

Буйство эмуляторов на JavaScript

Существуют эмуляторы на JavaScript следующих платформ: GameBoy, ZX Spectrum, Радио-86РК (мой первый компьютер, между прочим), Nintendo NES, Commodore 64.

Естественно, нужен какой-нибудь хороший браузер, например, «Хром» или «Опера» 10.60 и выше.

Есть где поностальгировать. Думаю, лет через 5—10 появится эмулятор PSP на JavaScript с использованием WebGL, мощностей как раз хватит.

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

Google Native Client

Поиграл немного с Google Native Client — это плагин для браузера (поддерживаются Firefox, «Опера», «Сафари» и «Хром» и платформы Windows, Mac и Linux на x86, x86-64 и ARM).

Это плагин, который умеет исполнять скомпилированный бинарный (!) код в браузере. В каком-то смысле это напоминает ActiveX. Вы пишете бинарный код, компилируете его в специальной версии gcc, а потом просто встраиваете в браузер тегом EMBED.

Меня интересовало как тут соблюдается безопасность. Коду многое запрещено (по сути, всё, что разрешено — это эффективное использование процессорного времени, за остальным нужно обращаться в браузер через NPAPI или SRPC (Simple RPC)), но разработчики много говорят о том, что допускаются ассемблерные вставки.

Как так?

Ларчик, как оказывается, открывается просто и достаточно остроумно. Во-первых, разработчику запрещается использовать некоторые конструкции, например INT (вызов прерывания) и некоторые другие. Во-вторых, команды переходов модифицированы и это самое интересное.

Не знаю как там в процессорах ARM, а в x86 команды могут иметь разную длину, какая-нибудь «PUSH AX» занимает байт, «MOV AL,41» — два, « MOV AX,[BP+8]» — три и так далее. Если сделать переход не на первый байт команды (а, например, на второй байт команды «MOV AL, 41»), то окажется, что оставшаяся последовательность (возможно с байтами, которые идут дальше) тоже что-то означает (в случае «MOV AL, 41» второй байт будет «41», это команда «INC CX»).

Это даёт возможность замаскировать внутри команды любую запрещённую команду и выполнить её, сделав переход не на первый байт. Как Google Native Client защищает нас от этого? Очень просто.

В Ассемблере есть специальная команда — «NOP» (в x86 занимает один байт, её код — «90»), она не делает ничего. Все команды вашей программы выравниваются до 16 байт этой командой. То есть «MOV AL,41» будет дополнена 14-ю командами «NOP», а все переходы разрешаются только на границу этих 16-ти байт. Для этого у адреса перехода всегда отрезаются несколько младших бит.

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

Интересно, что код, контролирующий безопасность и реализующий SRPC, получился очень небольшой, в ролике на YouTube разработчик говорит то о 6000 строк, то о 6000 байт. В любом случае, то и другое — немного. Там же (в ролике) показывали интерпретатор Ruby, работающий в браузере. Это интересно, но не более, интереснее то, что код на Си (или там C++, неважно) пришлось менять очень мало, чтобы перекомпилировать его в Google Native Code.

Мне кажется, это интересный проект.

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

Контекстная реклама такая контекстная

Но милиционеры умнее (intel) (18.39КиБ)

Из статьи «Письмо Яне Яковлевой: „Как меня пытаются посадить“».

Милиционеры умнее «Интел» или у них «Интел инсайде», потому они и умнее?

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

Снова про кроссбраузерные скруглённые уголки

Решение проблемы скруглённых уголков через VML есть в статье Льва Солнцева «Кроссбраузерные закруглённые уголки» (без JavaScript). Проблема заключается в следующем:

В VML есть предопределённая фигура: прямоугольник с закруглёнными углами roundrect. […] Но у этой фигуры есть один значительный недостаток: радиус кривизны задаётся через отношение к большей стороне, что делает результат непредсказуемым и неподходящим для многих случаев.

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

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

Хороним XBM

Помимо GIF, JPEG, PNG и SVG в браузерах есть ещё один «общий» формат графики — XBM. Не сказать чтобы сильно полезный, скорее забавный. Формат текстовый и очень простой, как раз его использует Wolf5k для отображения графики.

Несколько лет назад его поддержку прекратил браузер IE, с версии IE6.0SP1 XBM больше не поддерживается. Причина проста — IE падал, если подсунуть ему неправильно сформированную картинку. Поэтому поддержку формата просто отключили (сделали ключ в реестре («BlockXBM»), если очень хочется, поддержку можно вернуть). В общем-то, правильно, формат совершенно гиковский и его использование большая редкость (хотя и встречается).

И вот сегодня я, поставив Firefox 4.0b2pre, увидел, что в нём нет поддержки XBM. Стал разбираться. Оказывается его поддержку выключили в версии 3.6:

It doesn’t seem like anyone uses XBMs on the web these days (microsoft dropped support for them in ie6), and we no longer use them anyone in the platform. Each additional image decoder makes it more time consuming to maintain imagelib, because changes have to be replicated. Thus, unless somebody has a reasoned opinion to the contrary, I’ll remove XBM support in a week or two.

Увы. Из исходников выкинули совсем, никакого ключа в реестре.

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

DEFENDER в favicon

DEFENDER (2.86КиБ)

Трюк с подменой favicon используется в вебе довольно редко, впрочем, этому есть причина: он не работает в Internet Explorer (даже в 9-й версии). Я его использовал в первый раз года четыре назад — в таск-менеджере, который мы писали для внутренних целей в фирме L., он использовался для того, чтобы сигнализировать, что на вкладке таск-менеджера есть срочная задача.

Но есть способы использовать его более впечатляющим (хотя и более бесполезным) способом — дать возможность играть внутри favicon в игры. Существуют несколько таких игр, одна из них, например — DEFENDER.

Работает в «Опере» 9.2+ и Firefox 2.x (в FF 3 проблемы). Под WebKit работает выборочно, новые версии (где реализован метод CANVAS API «toDataURL()») игру поддерживают, правда, в шестом «Хромиуме» тормозит безбожно.

Управление простое: «N» — новая игра и стрелять, «WASD» (или клавиши курсора) — управление корабликом, «Enter» — чтобы выбрать куда вывести игру (на страницу или favicon).

P.S. На сайте с этой игрой есть ещё несколько таких игр.

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

Никто ещё не выпустил пиво Python?

Сейчас сижу на кухне, а перед глазами стоит соседская литровая банка пива, подумалось, что если бы кто-нибудь выпускал пиво «Пайтон», то «1L» на нём смотрелось бы очень гармонично.

Не все знают Пайтон, поэтому придётся разъяснить шутку. «1L» — так в Пайтоне записывается число «1» типа «long» (антизанудская мантра: знаю, long — это класс-объект), так что для пайтонистов такое сочетание вполне узнаваемо.

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

Про состояние российской разведки

Свежая смешнина со вкусом Родины — недавно в США поймали российских шпионов разведчиков, в ЖЖ smartnik800 некоторые особенности нашей разведки:

Российские шпионы пользовались стеганографией (интеграция текста в невинные по содержанию картинки), но при обыске ФБР нашло бумажку, где было написано «alt, control, e» и записан пароль открытым текстом (именно такими напоминалками обклеены мониторы у российских бухгалтеров!).

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

Там ещё несколько пунктов с подобным содержанием.

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

← сюда туда →