Блог Обо мне Храню Читаю Ем 99  

страница № 105



Валидный NOINDEX

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

Т.е. присутсвие этого тега необходимо, но в стандарт HTML он не входит. Как быть, если требуется достичь валидности любой ценой? Обычное решение — выдавать отдельную копию страницы для поисковых машин. Изяществом оно не обладает, тем более есть способ, если не лучше, то проще. Автор утверждает, что способ был им протестирован. Я немного изменил код, потому что такое использование кажется мне более логичным:
<del class="inv"><![CDATA[<noindex>]]></del>
То, что запрещено к индексации
<del class="inv"><![CDATA[</noindex>]]></del>
В таблице стилей прописывается «display: none» для класса inv:
.inv { display: none }


темы: webdev, html
21.03 18:11
21.03 18:11


Мышь-амбидекстр

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

До реализации идеи в промышленных масштабах, думаю, не дойдёт, но у себя на рабочем месте я проблему решил. Оказалось, что мышь Microsoft Habu, которую я использую, имеет очень неплохой софт для настройки — Razer, который, в частности, позволяет назначить любым клавишам мыши довольно нетривиальные функции (там даже несложные макросы есть). Я создал два профиля — для левши и для правши, а функцию смена профиля назначил клавишам выбора DPI.

Теперь при нажатии на верхнюю у меня в руке мышь для левши, при нажатии на нижнюю — для правши.

темы: gadget
21.03 17:52
21.03 17:52


Жертва науки: с дыыыырочкой в правом боку

Ребят, если вы сейчас едите, лучше не читайте дальше. Кто не спрятался, я не виноват. Я предупредил, да?

Дырочка в боку (36.13KB)


То, что вы видите на моём, по возможности осторожном обрезке снимка — живая корова. А в корове — дырка. В живой. Если вам кажется, что это фотошоп, то можете посмотреть видео на эту тему (ещё несколько можно найти на YouTube).

Для чего же это делают? Оказывается, в научных целях (мой вольный перевод):

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

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

Операция не причиняет корове боли и даже продлевает им жизнь. «Прокомпастированной» корове, которая заболела, можно ввести нужные вещества прямо в пищеварительный тракт и тем самым более эффективно ей помочь. Плюс, одна такая корова помогает скоту во всём мире
Кстати, я бы не сказал, что в ролике заметно, что корове совсем не больно, особенно когда эта заботливая учёная тварь достаёт канюлю из раны на боку.
21.03 15:44
21.03 15:44


PHP: простой способ определения кодировки UTF-8

Придумал простой способ определения кодировки UTF-8 в PHP, работает без модулей iconv и multibyte string (mb-функции):
if (preg_match('//u', $string)) { /* у вас UTF-8 */ }
Работать должно, думаю, с версии PHP 4.3.5, в документации сказано: «UTF-8 validity of the pattern is checked since PHP 4.3.5».

темы: webdev, php
20.03 16:42
20.03 16:42


Система статистики «Spesta 2.10 a+b»

Спеста (0.30KB) Какое-то время назад я патчил (два раза) систему статистики «Спеста» Дмитрия Смирнова, правил дыры и ошибки. Сама система мне нравится — простая, понятная, после патчей даже работает неплохо. Но при работе генерирует кучу warnings и notices, что захламляет мой лог ошибок и настраивать её не слишком-то приятно.

Недавно я узнал, что существует клон это системы — 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' -->

Ссылка для невнимательных, скачать можно отсюда: http://bolknote.ru/files/spesta-210.zip.

темы: spesta
20.03 13:16
20.03 13:16


Dictatorship IE vs. Open Source Dictatorship

Удивительная избирательная слепота у людей. На «Хабре» опубликовали статью «Новые возможности HTML и CSS в Safari 3.1», где народ восторженно обсуждает возможности, появившиеся в браузере «Сафари». Этим возможностями сто лет в обед — те же яйца, только боком уже давным-давно реализованы в Internet Explorer, причём в версиях 4.xx—5.5.

Это вообще какое-то чудо — все стандарты от Internet Explorer называются «мировым злом» (например, «фильтры»), а стандарты от других производителей — охренительными фичами (вроде тех же «transforms» или CANVAS от Apple). При этом последние шесть лет целая куча функционала была скомуниҗҗена с IE, а сколько там ещё можно утащить (самый известный пример, конечно же, HttpRequest, который придумали в Microsoft и на котором работает AJAX)!

Я составил небольшую таблицу соответствий технологий IE и их реализаций в других браузерах:

Internet ExplorerОстальные браузеры
HTML+TIMESafari CSS transforms
Persisting Session InformationHTML5 Client-side Database Storage
Font EmbeddingCSS3 Web Fonts
VMLSVG
FiltersCSS свойство «opacity»
FiltersCSS свойство «text-shadow»
VMLТег CANVAS
Свойство «writing-mode»CSS свойство «writing-mode»
Microsoft IXMLHTTPRequestW3C XMLHttpRequest
FiltersWebKit gradient


Таблицу можно продолжать. Учтите, что всё, что перечислено в ней слева, появилось ещё шесть лет назад.

Мне интересно, кто первым реализует «data binding» из IE, при помощи этой технологии я написал «Песню о пиве» на HTML.

темы: webdev, opera, safari, ie, firefox
19.03 17:38
19.03 17:38


HTML5 VIDEO: кто первый? А так же 3D CANVAS

Вышел браузер «Сафари» версии 3.1, в пресс-релизе написано, что «Сафари» — первый браузер, поддерживающий новые теги video и audio из HTML5:

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 — вышла накладка. Специальный билд «Оперы», поддерживающий этот тег, вышел 8-го ноября 2007-го года, тогда как Webkit (на движке которого сделан «Сафари») — 12-го ноября, на четыре дня позже.

Кстати, самое интересное, что появилось в том билде «Оперы», это не тег VIDEO, а 3D Canvas — до этого момента тег CANVAS позволял работать только с примитивами на плоскости (отрезками, прямоугольниками, кругами и так далее), знаменитая игра «Canvascape», сделанная с применением этого тега (требует для работы любой браузер, поддерживающий CANVAS), просчитывае 3D-графику самостоятельно, из-за чего игра на средних компьютерах заметно притормаживает.

Для 3D CANVAS задача вращения куба с текстурой, например — тривиальная. Примеров работы с этим новшеством пока немного, в оригинально статье упомянута Snake («змейка») в 3D, написанная Mathieu 'p01' HENRI.

темы: webdev, safari, opera, html5, canvas
18.03 18:19
18.03 18:19


Декоративная обфускация PERL-кода

Нашёл замечательную старую статью «Декоративная обфускация PERL-кода», в статье есть просто изумительные примеры, например, знаменитый «квадрат» из ключевых слов 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».

темы: perl
18.03 17:31
18.03 17:31


Доказательство через противного: тактика спора

На «Воффке» увидел неплохую статью, описывающую довольно типичную для «троллей» тактику — приписать что-то оппоненту и обсудить эту ситуацию как свершившийся факт. Приведены несколько примеров и методы защиты.
17.03 23:09
17.03 23:09


Туалетная бумага Windows Vista

Туалетная бумага Windows Vista (49.17KB)


Японцы выпустили забавную туалетную бумагу — с текстом (на японском) списка исправлений SP1 для Windows Vista Ultimate.
17.03 01:55
17.03 01:55


Bookr для PSP

Те, кто используют PSP для чтения книг, наверняка знают, что лучшая программа для чтения — Bookr, давно не обновляется. Но умельцы постепенно её дорабатывают, обратная сторона этого положительного явления — модификаций развелось такое количество, что ориентироваться в них стало уже очень сложно. Мне понравилась сборка, которую сделал пользователь SD6719 с форума сайта PSPx.

Она поддерживает форматы txt, fb2, pdf, djvu, кодировки UTF-8, UTF-16, KOI8-r, CP-1251, CP-866, поддерживает TTF-шрифты, сама загружает последний прочитанный файл, имеет функцию перехода к странице по номеру и так далее. У программы две версии — для прошивки 1.50 и для всех остальных. Так же можно скачать исходники, если интересно почему размер программы вырос почти в два раза.

темы: gadget, psp
15.03 14:06
15.03 14:06


тИЦ России

Случайно обнаружил, что тИЦ можно измерить и для корневых доменов. Самые большие тИЦ (на данный момент) у России, доменов .com, Узбекистана, .localhost и Казахстана:


14.03 17:44
14.03 17:44


CSS только для Mozilla (в том числе — FireFox)

У верстальщиков до сих пор возникает задача — подключить стили только для определённого браузера. Для IE проблема решаема — всё меньше верстальщиков не знают что такое conditional comments. Но исчезающе малое количество народу знает что такое per-site user stylesheet rules. Интересны они тем, что Mozilla FireFox поддерживет их через собственное правило — «@-moz-document».

Вообще, это правило позволяет подключать стили в зависимости от домена, URL или его префикса. Для нас важно, что эти правила увидит только FireFox.

Простой пример использования, из которого становится понятен общий принцип:
<style type="text/css">
body { background: white; color: black }

@-moz-document url-prefix()
{
	body { background: grey; color: white }
}
</style>
<body>White in FireFox</body>
Принципы фильтрации по URL и доменам так же могут оказаться полезными, о них можно почитать в архиве W3C.

темы: webdev, firefox, css
14.03 15:27
14.03 15:27


«СУП» отменила базовые аккаунты в ЖЖ

Когда росскийская компания «СУП» купила «Живой Журнал» некоторые, в том числе и я, стали потихоньку отползать на запасные аэродромы. Смирнов, в частности, полностью удалил свой ЖЖ. Я менее радикален — я просто перестал туда ходить. Нам было очевидно — добром это не кончится, главным образом из-за микроскандалов, которые возникали ещё в те времена, когда «суповцы» приобрели право на обслуживание кириллистической части ЖЖ.

То, что случилось вчера посерьёзнее. «СУП» отменил базовые аккаунты в ЖЖ:

Basic Account is an option available to accounts which were created before March 12, 2008. No account created after this date can be turned into a Basic Account.
Базовые аккаунты теперь являются опцией, доступной только аккаунтам, созданным до 12 Марта 2008 года. Аккаунты созданные после этой даты не могут быть базовыми.

New accounts (created after March 12, 2008) may choose between Plus and Paid account levels.
Новые аккаунты, созданые после 12 Марта 2008го года, могут выбирать либо Плюс аккаунт, либо платный
Вот что пишет на эту тему Брэд Фитцпатрик, создатель ЖЖ:

I advised against this (when I heard a rumor about it awhile back). I hadn't heard anything recently about it. Perhaps they interpreted my advice as "well, okay, then maybe we'll at least grandfather the existing Basic users, and not convert them all to Plus…"

In any case, SUP apparently sees no value in freeloaders not looking at ads, not paying, and oh wait... producing most the content for other members to read, other members who are looking at ads and paying for their accounts.

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

В любом случае, SUP, по-видимому, не видит ценности в «иждивенцах», не просматривающих рекламу, не платящих, и боже, подождите… производящих бОльшую часть контента для всех остальных читателей, других пользователей ЖЖ, просматривающих рекламу и оплачивающих свои аккаунты.
За перевод спасибо romik_g.
13.03 15:37
13.03 15:37


NOWDOC в PHP 5.3.0

В PHP 5.3.0 появилась новая синтаксическая конструкция: «NOWDOC». Сильно похожа на «heredoc», но с тем различием, что в «nowdoc» нет интерполяции переменных:

Следующий пример выведет в точности тот текст, который находится внутри nowdoc:
echo <<<'EOT'
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': x41
EOT;
Второе отличие от heredoc, что nowdoc можно использовать в любом статическом контексте, например так:
class foo {
    public $bar = <<<'EOT'
bar
EOT;
}


темы: webdev, php, php5
13.03 13:26
13.03 13:26



страница № 105

Евгений Степанищев (imbolk@gmail.com)
t=0.065