Search
Write a publication
Pull to refresh
0
0
Ник Махов @Defite

User

Send message

Производительный и читабельный XSLT: сборник советов

Reading time7 min
Views11K
В моей практике чаще всего в качестве шаблонизатора используется именно XSLT. Я не буду рассуждать о том, почему так происходит — о преимуществах данной технологии написано вполне достаточно. Но ещё больше написано о её недостатках. Считается, что XSLT является слишком многословным и тяжёлым для чтения, а также не самым производительным. В этой статье я постараюсь собрать несколько советов по улучшению качества XSLT-кода с точки зрения читабельности и выразительности. Некоторые из них также позволят XSLT работать несколько быстрее.

Именованные шаблоны

Многие «проблемы» XSLT связаны с тем, что мы слишком часто пытаемся писать на нём в процедурном стиле. Мы постоянно пытаемся сделать из него Smarty, но упираемся в один простой факт — XSLT является декларативным языком, как бы необычно это для нас не выглядело.
Например, мы пытаемся использовать именованные шаблоны, воспринимая их как процедуры, выводящие данные в определённом формате:

<xsl:template name="CreateItemLink">
    <xsl:param name="item"/>
    <a href="/item/?id={$item/id}">
        <xsl:value-of select="$item/name"/>
    </a><br/>
</xsl:template>


* This source code was highlighted with Source Code Highlighter.

Наверное, многие программисты именно так написали свой первый шаблон. И он неплохо решает свою задачу. Декларативный XSLT предлагает немного другой подход:

<xsl:template match="item">
    <a href="/item/?id={id}">
        <xsl:value-of select="name"/>
    </a><br/>
</xsl:template>


* This source code was highlighted with Source Code Highlighter.

Разница совсем не велика. Дело вкуса и стиля программирования. Давайте посмотрим, как шаблон будет использоваться в дальнейшем.

Читать дальше →

Chosen: сделай выпадающие списки более дружественными

Reading time1 min
Views55K
Плагин Chosen создан для оформления красивых и удобных выпадающих списков с помощью jQuery и Prototype. Для установки плагина достаточно просто скачать файлы и прописать одну строчку:

$(".chzn-select").chosen()
(версия для jQuery)

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

Поскольку Chosen заменяет стандартный элемент HTML, то не нужно беспокоиться, как он работает с браузерами без поддержки JavaScript. Также не нужно ничего менять в бэкенде: формы сабмиттятся как обычно, изменения только в пользовательском интерфейсе.

Некоторые форки:
Chosen для MooTools
Модуль Chosen для Drupal 7

Визуализация DOM-дерева в 3D (расширение Firefox)

Reading time2 min
Views14K


Расширение Tilt для Firefox строит трёхмерную модель текущей веб-страницы, используя WebGL для быстрого рендеринга. Таким образом, можно мгновенно анализировать структуру страницы и взаимосвязи между разными частями.
Читать дальше →

NeoAxis Game Engine 1.0 наконец-то увидел свет

Reading time4 min
Views8.5K
Хочу опубликовать топик, обзор релиза кросс-платформенного игрового движка NeoAxis, так как у авторов пока нет аккаунта на Хабре. Далее от первого лица:

Уже более шести лет мы (компания NeoAxis Group) ведем разработку нового игрового 3D движка, начинавшегося как задумка энтузиаста-одиночки, но превратившегося в полномасштабный проект, над которым теперь работает международная команда специалистов. После стольких лет упорного труда мы рады сообщить, что NeoAxis Engine достиг версии 1.0!

Читать дальше →

Семантика для CSS селекторов и комбинаторов

Reading time5 min
Views47K
Синтаксис CSS несложен, и для понимания его совсем не нужно иметь степень доктора в области IT. Однако, это один из немногих популярных языков, который не является логичным в самом прямом смысле этого слова. В отличие от других языков веб-программирования, таких как JavaScript и PHP, в CSS проблемы не решаются с помощью обычной логики. Алгоритмы типа «если X, то сделать Y, в противном случае сделать Z» или «выбрать все Y, затем сделать с ними X» не могут быть осуществлены в таком языке, как CSS. Проще говоря, это язык, созданный для оформления, язык для дизайнеров, а не девелоперов. Некоторые из опытных программистов, с которыми я работал, именно по этой причине тратили много усилий на то, чтобы освоить CSS.

Обучение CSS начинается с классов и ID, а также с использования . и # для непосредственного обозначения элементов. Этого достаточно чтобы построить полнофункциональный веб-сайт, но это не достаточно гибкое решение в случае полной смены дизайна. Давайте взглянем на альтернативный подход к управлению такими труднодоступными элементами.
Читать дальше →

cssHooks — расширяем множество CSS свойств

Reading time5 min
Views3.3K
В этой статье я расскажу об объекте jQuery.cssHooks, который по умолчанию содержится в jQuery. Расширение этого объекта позволяет добавлять новые свойства или значения, прописываемые в методе .css(), которые изначально не поддерживаются теми или иными браузерами. Возможно, для многих наличие CSS хуков не является новостью, но для меня это стало небольшим открытием.
Для тех, кому лень дальше читать, привожу основную мысль. Допустим, вы хотите в jQuery добавить CSS свойство chuck-norris:
$.cssHooks.chuckNorris = {
	get: function(elem) {
		//проводим манипуляции с узлом elem, получаем value
		return value;
	},
	set: function(elem, value) {
		//проводим манипуляции с узлом elem, устанавливаем value
	}
}

$(el).css(‘chuck-norris’, Infinity);
//или $(el).css({‘chuck-norris’: Infinity});
alert($(el).css(‘chuck-norris’)); //Infinity


Далее будет подробно описана «модификация» свойства background-color для поддержки rgba в старых версиях IE и добавление нового, несуществующего в спецификации свойства background-alpha для удобной установки прозрачности фонового цвета. В IE прозрачность цвета будет реализована с помощью использования свойства filter, добавляя элементу градиент, состоящий из двух одинаковых цветов.
Читать дальше →

Свойства CSS, влияющие на рендеринг шрифта

Reading time2 min
Views75K
Когда дело доходит до рендеринга шрифта на Вебе, дизайнер может сделать не слишком многое. То, как шрифт выглядит на экране, по большей части зависит от операционных систем, браузеров, дизайна гарнитур, шрифтовых файлов и от того, дополнены ли эти файлы инструкциями для самых неожиданных сценариев рендеринга. Но иногда свойства CSS могут повлиять на то, как выглядит шрифт.



Читать дальше →

Управление радиоэфиром через браузер

Reading time5 min
Views33K
Airtime LogoВ процессе создания своей радиостанции поток идей дошел до ведения эфиров через веб-интерфейс. Сначала пытался найти готовые решения, но в рунете почти ничего не нашел. Начал продумывать способ реализации и чудом наткнулся на статью в английской версии Википедии про Airtime (до 18 января 2011 г. – Campcaster) от Sourcefabric.

Возможности Airtime:
  • Создание эфирной сетки и плейлистов через веб-интерфейс ;
  • Загрузка музыки через браузер (поддержка drag and drop);
  • Регистрация ведущих, которые имеют доступ к админке и могут управлять эфирами;
  • Создание виджетов с расписанием эфиров и треков для сторонних сайтов;
  • Возможность записывать эфиры для повторной трансляции;
  • Несколько вариантов трансляции аудиопотока.
Минимальные системные требования, описанные в официальной инструкции: 1Ghz процессор и 512Mb оперативной памяти.
Читать дальше →

Адаптивный и мобильный дизайн с CSS3 Media Queries

Reading time7 min
Views600K
Разрешение экрана в наши дни колеблется от 320px (iPhone) до 2560px (большие мониторы) или даже выше. Пользователи больше не просматривают сайты только на настольных компьютерах. Теперь пользователи используют мобильные телефоны, небольшие ноутбуки, планшетные устройства, такие как iPad или Playbook для доступа в интернет. Поэтому, традиционный дизайн с фиксированной шириной больше не работает. Дизайн должен быть адаптивным. Структура должна автоматически изменяться с учетом всех разрешений дисплеев. Эта статья покажет вам как создавать кросс-браузерный адаптивный дизайн при помощи HTML5 и CSS3 media queries.
Читать дальше →

Простое решение проблем с Flash в Ubuntu

Reading time2 min
Views140K
Большинство пользователей Ubuntu уже свыклись с безобразно работающим Flash, поставляемом в пакете flashplugin-nonfree. Лично меня релиз за релизом беспокоили разные проблемы, было мигание флешек, клик по чему-либо во флешке работал через раз, в общем нестабильная работа и стабильные тормоза. В Ubuntu 11.04 Natty Narwhal в моём случае Flash вел себя настолько отвратительно, что им было невозможно пользоваться. Но буквально неделю назад я наткнулся на простое решение, разом избавившее меня от всех проблем с flash на моей конфигурации. Самое примечательное — раньше заметно тормозило 480p видео в fullscreen, теперь даже 1080p проигрывается идеально плавно.

flash

Читать дальше →

Как устроен jQuery: изучаем исходники

Reading time6 min
Views58K

jQuery однозначно стал стандартом в индустрии веб-дева. Есть много отличных js-фреймворков, которые заслуживают внимания, но jQuery поразил всех своей лёгкостью, изящностью, магией. Люди пишут с использованием jQuery, люди пишут плагины для jQuery, люди даже пишут статьи про jQuery, но мало кто знает (особенно из новичков), КАК устроен jQuery.

В этой статье проведем небольшой экскурс во внутренности этого фреймворка и разберем, что внутри.
Статья рассчитана на базовые знания Javascript. Задумайтесь и, если вы знаете, как написать клон jQuery, то, скорее всего, вы тут не найдёте ничего нового. Остальным — добро пожаловать под кат

Читать дальше →

Зум шрифта и верстка

Reading time4 min
Views37K
До того как у меня появился монитор 23 дюйма, я практически не использовал зум нигде. Родное разрешение идеально подходило для восприятия любых текстов. Мониторы тех, кто подготавливал контент и их читателей — примерно совпадали. Поэтому, если у читателя не было проблем со зрением, то он почти всегда получал хорошо оптимизированый под свое разрешение размер шрифта. В последнее время большие мониторы существенно подешевели и повсеместно распространились широкоформатники, что привело к некоторым неудобствам с сайтами, оптимизированных на поддержку малых разрешений.

Читать дальше →

Виджет со счетчиком непрочитанных сообщений

Reading time5 min
Views14K
Часто встречающаяся задача — создание виджета со счетчиком непрочитанных сообщений/звонков и т.п. Однако в Android нет стандартного класса для создания таких виджетов.

image

Как же все-таки создать такой виджет?
Читать дальше →

Three.js — 3d движок на Javascript

Reading time1 min
Views89K

Есть javascript-гурру, mr.doob, даже на Хабре уже всплывали его работы.
В общем, у него есть очень мощный Javascript 3d-фреймворк с названием

Three.js


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

Меня особо затянул полет между шариков и порадовал панорамный движок.
А у кого работает WebGL — так вообще не нарадуется — там вам и Minecraft и всё, что хотите)

Читать дальше →

CSS3 Animation в несколько кликов

Reading time1 min
Views5.7K


Andy Clarke показал сообществу сайт-демонстрацию возможностей CSS3 Animation и анонсировал animatable.com с помощью которого демонстрация была сделана.

С помощью Animatable анимацию можно создавать в пару кликов. Интерфейс очень похож на видеоредактор. В данный момент проект в разработке.

Демонстрация Mad Animation работает на webkit-браузерах — Chrome, Safari, браузерах для мобильных платформ (Android, BlackBerry, Apple iOS, WebOS). Они увидят всю красоту CSS (нужно кликнуть по «watch»):



Читать дальше →

Обзор плагинов ++

Reading time2 min
Views3.4K
Очередной топик с обзором нескольких интересных плагинов jQuery.

Mobily Map




Позволяет сделать интерфейс, подобный google-картам, на основе собственных изображений (возможность перетаскивать, ставить маркеры на изображении, реагировать на нажатие по ним и др.).
Узнать больше (англ.) | Посмотреть в действии


Читать дальше →

Скрипты в Photoshop

Reading time2 min
Views34K
Есть такой малоизученный дизайнерами функционал в фотошопе как скрипты.
Многие пользуются Actions, но для написания настоящих jsx скриптов нужны хотя бы базовые познания в JS, VBS или AppleScript.

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


Как решить задачу?
1) Сесть и ручками наструячить 50 заголовков, копируя текст из текстовичка, настраивая размер и сохраняя файлы.
2) Создать скрипт:)
Читать дальше →

Вышла третья бета PIE 1.0

Reading time3 min
Views7.8K
Предисловие переводчика.  «Костыль» PIE, позволяющий легко и уверенно обеспечить поддержку целого ряда свойств CSS3 во браузерах IE6, IE7 и IE8 (которые в этом смысле без «костыля» оказываются «хромыми» до убожества), давно заслужил горячую, страстную приязнь со стороны многих передовых сайтооформителей, и в этом качестве не раз на Хабрахабре упоминался (последний раз — 13 января 2011 г.). Я решил перевести нижеследующее, пускай и не новое, объявление (выход PIE 1.0 beta 3 состоялся 6 декабря 2010 г.) для того, чтобы в явном виде лишний раз донести до всех заинтересованных читателей весть о том, что в этот год PIE вступает обновлённым и улучшенным. Всем тем, кто впервые начал использовать PIE прошлой осенью или летом, настало время крепко призадуматься, во-первых, об апгрейде PIE (во имя ускорения работы сайтов), а во-вторых, об освоении новых, декабрьских свойств и возможностей PIE.
[CSS3 PIE]Она подготавливалась долгое время, но вот третья бета PIE 1.0 наконец вышла! Этот выпуск содержит множество изменений; вот некоторые из крупных улучшений в нём:
  • Скорость! — Крупнейшим и легкозаметнейшим улучшением в этом выпуске стала скорость. По итогам обширного профилирования были найдены наиболее медленные участки исполнения кода PIE, и многие из них подверглись оптимизации. Результаты ошеломляют: скорость PIE выросла до четырёх раз в сравнении со второй бетою, особенно заметно — в IE8. И это принесёт ускорение обработки страниц и вам, и читателям ваших сайтов!
     
  • Ленивая инициализация — Даже с учётом всех улучшений скорости, если ваша страница весьма длинна, она может содержать сотни PIEфицированных элементов, которые суммарно приведут к заметной задержке. Однако есть шанс, что лишь немногие из них видны в окне просмотра изначально (после загрузки страницы), чего же тогда тратить время на обработку остальных элементов, прямо сейчас не видимых? Теперь вы можете задавать специальное свойство -pie-lazy-init: true в CSS, и тем самым откладывать инициализацию всех PIEфицированных элементов за пределами видимой области загруженной страницы. Они будут проинициализированы и отображены после того, как читатель до них допрокручивает страницу.
     
  • PIE.js: отдельная версия на джаваскрипте — Теперь есть два способа использования PIE: традиционный (PIE.htc и behavior) и новый (отдельный джаваскриптовый файл PIE.js). Хотя указание файла .htc и свойства behavior останется рекомендуемым подходом, JS-версия позволяет употреблять PIE в некоторых таких ситуациях, в которых behavior не в состоянии сработать. Поглядите в документации по PIE.js подробности о том, когда и как вы можете пожелать прибегнуть к JS-версии.
     
  • Работает с табличными элементами — Теперь применение PIE к элементам <table>, <th> и <td> приводит к корректной обработке и впредь не грозит бесконечным циклом.
     
  • Работает с изображениями — Теперь вы можете использовать PIE для закругления уголков элементов <img>.
     
  • -pie-png-fix — Теперь вы можете использовать PIE в качестве общего исправления альфа-прозрачности PNG для IE6, используя новое специальное CSS-свойство -pie-png-fix: true. Подробности изложены в документации по -pie-png-fix. Эту функциональность обеспечил Felix Gnass.
     
  • Отключено в IE9 — Так как IE9 самостоятельно поддерживает множество тех же свойств и значений CSS3, что и PIE, и так как ещё не ясно, что IE9 будет поддерживать в окончательной версии, то на время PIE будет отключаться при работе в IE9; это временное решение будет пересмотрено по мере дальнейшего развития событий.
     
  • position:fixed — Теперь PIE располагает свои элементы отображения корректно, когда применяется к элементам со свойством position:fixed (это никак не касается IE6, поскольку IE6 не поддерживает свойство position:fixed самостоятельно).
     
  • Печать — Теперь PIE самостоятельно устраняет все свои элементы во время печати страницы. Помимо исключения целого ряда проблем с отображением, такое самоустранение также не пренебрегает пользовательскими настройками о непечатании фонов и обеспечивает экономию чернил.
     
  • Множество других исправлений и улучшений — см. логи правок кода.
Скачайте PIE 1.0 beta 3 прямо сейчас!

Читать дальше →

PrestaShop 1.4 – новая версия платформы интернет-магазина

Reading time5 min
Views13K
image

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

Было приятно прочитать вечером в твиттере:
Here we are guys! PrestaShop v.1.4 Final is out, check it now!
More info tomorrow ;-) Now we're gonna sleep a bit! -->


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

Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity