Ссылки о веб-разработке за декабрь 2010

URL Design

URL Design. Thoughtful tips on modern URL design, from GitHub designer Kyle Neath. GitHub has the best designed URLs of any application I can think of.

расширение для оперы «у всех работает»

кратко: установите расширение в оперу, откройте неработающий сайт, смотрите внизу страницы

подробно: недавно меня восхитила функция браузера Chrome, которая при недоступности сайта проверяет его доступность для других пользователей. Я нередко пользовался для такой проверки сайтом DownForEveryoneOrJustMe.com, но заходить на него приходилось вручную, и это было не очень удобно. А тут проверкой занимается сам браузер — это же круто! Думаю, уже через полгода такое будет во всех браузерах.

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

казалось бы, всё очень просто: допиливаем под себя пример конфига, пишем пару скриптов, зипуем, меняем расширение на oex и всё. Но нет. Во-первых, статьи на dev.opera.com не очень-то структурированы, с которой начинать, неясно. Во-вторых, с момента, когда были написаны многие из них, кое-что успело измениться, в том числе спецификация виджетов. В-третьих, куда же без глюков.

локализация — самое интересное для меня, потому что система хорошая, и мне давно было интересно попробовать, как всё само работает. Получилось не так радужно из-за остальных косяков, но когда я их исправил, всё и правда стало хорошо. У меня строки используются только в скриптах, поэтому я положил в locales/en/messages.js и locales/ru/messages.js по объекту со строками, подключил в index.html <script src="messages.js"></script>, быстро набросал nano-gettext с подстановками. Если бы в html было много строк, пришлось бы и сам index.html копировать в папки локалей и переводить целиком. А сейчас я понимаю, что нужно было оставить английский messages.js в корне, чтобы для неизвестных локалей включался именно он.

что касается яваскрипта, то аккуратно разложив код по функциям, я обнаружил, что переменную domain приходится пробрасывать едва ли не в каждую. Связано это с тем, что расширение может работать параллельно с несколькими страницами, и глобальные переменные там не поиспользуешь. Поскольку domain приходит мне в onmessage, для простоты пришлось перенести объявление всех функций внутрь этой.

когда я ещё не знал, что messages.js будет автоматически выниматься из нужной папки, я собирался основывать локализацию на <content xml:lang="">, чтобы каждый из них ссылался на соответствующий index.html, а тот уже подключал бы правильный messages.js. Потом выяснилось, что это не работает, и не по спеке, но index.html сохранил радующий своей минималистичностью вид:

<!DOCTYPE html>
<title></title>
<script src="script.js"></script>
<script src="messages.js"></script>

отдельная забавная задача: как определить, что опера сейчас показывает ошибку подключения к сайту? Сейчас это работает не очень-то надёжно : ) Скрипт будет активизироваться на любом документе, содержащем только один стиль, адрес которого начинается на file:// и заканчивается на styles/error.css. К сожалению, мне не удалось найти никаких более надёжных переменных или значений. Парсить же текст страницы смысла не имеет, потому что он переведён на кучу языков и меняется в разных версиях. Надеюсь, мой способ будет работать достаточно хорошо : )

теперь мне нужно подождать несколько дней, пока расширение изучат и выложат на сайт. Если это случится, адрес, скорее всего, будет вот такой: «Up For Everyone». Там будет работать автообновление, поэтому лучше использовать этот источник.

Браузеры / Сохранение гипертекстовых документов различными браузерами


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

Thanks partner! A year of pair programming

Google Maps and Label Readability

Google Maps and Label Readability. Obsessively detailed analysis of exactly what makes Google Maps so readable when compared to Yahoo! and Bing.

James Clark: I think the Web community has spoken, and…

I think the Web community has spoken, and it’s clear that what it wants is HTML5, JavaScript and JSON. XML isn’t going away but I see it being less and less a Web technology; it won’t be something that you send over the wire on the public Web, but just one of many technologies that are used on the server to manage and generate what you do send over the wire.

- James Clark

← предыдущий месяц