Ссылка на телефонный номер
22.03.2011
Недавно Слава Олиянчук спросил в твиттере, размечаем ли мы номера телефонов как ссылки. Всё правильно спросил, номер телефона стоит размечать как ссылку с псевдопротоколом tel. В этом случае браузеры, которые понимают этот псевдопротокол1, смогут сразу набрать нужный номер.
Вот только что делать с теми браузерами, которые не могут никуда позвонить? В принципе, при клике по такой ссылке ничего не произойдёт, раньше таким же образом делались javascript-ссылки2. При этом пользователь всё равно будет видеть такую ссылки и пытаться по ней кликнуть и расстраиваться из-за того, что ничего не работает.
Давайте спрячем такие ссылки от пользователя? Например вот так:
a[href^="tel:"] {
text-decoration:none;
color:inherit;
cursor:default;
}
Эта несложная запись сделает любую ссылку, начинающуюся с «tel:» абсолютно неотличимой от потока текста, работает во всех современных браузерах.
Примечания.
- Мобильные браузеры, десктопные с установленным скайп-плагином
- Сейчас все правильные мальчики и девочки используют ненавязчивый JS
«Класситус» и оптимизация
21.12.2010
На прошедшей 16 декабря встрече-конференции «Web Standards Days» Вадим Пацев рассказывал про общую идеологию вёрстки проектов в Яндексе. Идеология скрывается под дурацкой аббревиатурой БЭМ и обладает собственным клубом на Я.ру.
Один из ключевых моментов — отказ от селекторов элемента в пользу селектора классов, поскольку это существенно (когда счёт идёт на миллисекунды) ускоряет рендеринг страницы. То есть вместо p {} рекомендуется использовать .base {}, к примеру. Да, именно так, добавлять классы ко всем элементам, которые нужно стилизовать. Кроме того, это позволяет избежать переопределений и конфликтов наследования.
Разумный аргумент против — «ведь у нас много параграфов, добавление классов увеличит объём страницы!». Но намного ли? На главной странице kremlin.ru — 23 тега p. Добавив к каждому из них class=base мы увеличим объём страницы на 230 байт. При общем объёме страницы в 56 кб это просто ничтожно малая величина. Так что на этих спичках точно не стоит экономить, лучше удалить переносы строк и пробелы или оптимизировать картинки.
Остаётся только один-единственный аргумент против указания классов всему подряд: «Мне лень везде писать эти дурацкие классы». Но и тут можно найти решение, взяв на вооружение регекспы или zen coding.
Примечание: я специально не ставил кавычки вокруг имении класса для ровного счёта, в реальной жизни так делать нельзя.
При работе со скриншотами часто приходится масштабировать изображение целиком или отдельные его кусочки. Настройки масштабирования по умолчанию никуда не годятся, смотрите сами:
Причина замыливания — включённое сглаживание. Оно помогает при использовании Photoshop по прямому назначению, то есть для обработки фотографий. Но при работе с пиксельной графикой нужно всё взять и поменять.
Идём в настройки Photoshop (Edit > Preferences > General или Photoshop > Prefeneces > General) и устанавливаем параметр Image Interpolation в значение «Nearest Neighbor». Нажимаем Ok и с этого момента Photoshop перестанет пытаться сглаживать пикселы при любом масштабировании, в том числе и при Edit > Free Transform. Стоит помнить, что нормальный результат возможен только при изменении масштаба в целое число раз (200%, 300% и т.д.).
Ну и естественно, никакого jpg при сохранении результата. Только png или gif.
Не такое и низкое разрешение
03.11.2010
Сколько себя помню, экранная графика причислялась к графике с низким разрешением. Вот полиграфия — полиграфия это да, это триста дипиай и всё такое.
Однако мир не стоит на месте и в один дюйм матрицы помещается всё больше и больше пикселов, поэтому возник вопрос — а такое ли оно низкое, это экранное разрешение? В ходе расследования выяснил, что не гигантское, конечно, но и не маленькое.
Чуть в сторону теории: под разрешением я понимаю количество точек (пикселов) на дюйм, то есть то, что принято считать разрешением печатного оттиска. Разрешение монитора вида 1280×800 — это совсем другая история.
Как посчитать разрешение? Нужно взять общее количество пикселов по одной стороне монитора и поделить на длину стороны в дюймах. Здесь нам поможет теорема Пифагора и немного мозга.
Имеем на входе параметры матрицы в пикселах и диагональ матрицы в дюймах (здесь кроется причина погрешностей — я не уверен, что 15″-ая матрица будет иметь строго 15 физических дюймов по диагонали). Теорема Пифагора, для тех, кто не знал, да забыл: сумма квадратов катетов равна квадрату гипотенузы.
Квадрат гипотенузы — длина диагонали в квадрате. Нам же нужна длина одного из катетов. Составим пропорцию:
A²+(H/W×A)²=D²,
где A — ширина монитора в дюймах, H — высота матрицы в пикселах, W — ширина матрицы в пикселах, D — диагональ монитора в дюймах.
Всё, у нас уравнение с одним неизвестным, ловим восьмиклассника и заставляем решить его за мороженое.
Для тех, кому хочется сразу получить ответ (ppi — потому что считал pixel per inch, а не точки растра):
- Стандартный 15″ ноутбук (1280×800): 101 ppi;
- MacBook Pro (1440×900): 110ppi;
- MacBook Pro HiRes (1680×1050): 128ppi;
- Плохой 15″ ЭЛТ (800×600): 67ppi;
- Стандартный 19″ ЖК (1280×1024): 86ppi;
- iPhone 4 (3.5″, 960×640): 329ppi.
Получается, что для того, что бы получить стандартные 72dpi нужно очень сильно постараться поискать монитор похуже, да подешевле. Среднее значение примерно соответствует разрешению хорошей газеты. И это я даже не пытаюсь говорить про то, что в реальном оттиске большую роль играет линиатура и расстояние просмотра, а вовсе не разрешение. А экранное разрешение вовсе не низкое, а довольно-таки среднее.
Обязательные дополнения к Eclipse
30.10.2010
Я долгое время выбирал для себя удобную среду разработки. Перепробовал кучу всего, от Notepad++ до Dreamweaver и IntelliJ Idea, но остановился в итоге на Eclipse. Не потому что она самая лучшая — она и потормозить любит, и поглючить — а потому что работает везде, и дома под виндой, и под линуксом, и на MacOS.
Но «голая» Eclipse — вещь совершенно для меня бесполезная, нужно ставить расширения. За последние пару дней я решил обновить Eclipse на всех своих компьютерах до версии 3.6, а это потребовало переустановки расширений. Ну а что бы в следующий раз не вспоминать, что мне нужно — запишу тут единым списком.
Подключаем репозитории
Расширения хранятся в репозиториях. В свежую Eclipse они не включены, поэтому добавляем ручками:
Help > Install Software… нажимаем кнопку Add… и в поле Location вставляем http://download.eclipse.org/releases/helios — это основной репозиторий расширений Eclipse.
После добавления репозитория IDE получит список расширений и сгруппирует их по типам. В результате одно и тоже расширение может оказаться в нескольких местах.
Я сразу ставлю следующие:
- Collaboration:
- Eclipse EGit
- Eclipse JGit
- Subversive SVN Team Provider
- General Purpose Tools
- PHP Development Tools
- Remote System Explorer End-User runtime
- Remote System Explorer User Action
- Web, XML, and Java EE Development
- Eclipse Web Developer Tools
- Eclipse XML Editors and Tools
- Eclipse XSL Developer Tools
- Rich Ajax Platform (RAP) Tooling
- Web Page Editor (Optional)
Два раза нажимаем Next, подтверждаем согласие с лицензиями и Finish.
Если при установке выскакивает сообщение, что мы пытаемся поставить неподписаное расширение — придётся согласиться с этим, после установки Eclipse предложить перезапуститься или просто применить изменения. Раньше я экономил полминуты и нажимал Apply Changes, но сейчас соглашаюсь на перезапуск. После перезапуска получаем Eclipse с которой уже можно работать.
