Веб-разработка Начинаем работать с Node.js в Ubuntu

Про Node.js, серверную реализацию языка javascript, написано уже много статей. Начиная от восторженных, заканчивая целиком и полностью критическими. Конечно, как и любой проект, Node.js имеет свои достоинства и недостатки, поэтому лучше применять его там, где он действительно будет полезен. Например, я не считаю целесообразным целиком и полностью писать всю серверную часть проекта на javascript, а в частности на Node.js. Просто потому, что для этого существуют более удобные решения на различных языках программирования. Но для части сервисов, которые будут использоваться в проекте, вполне можно использовать Node.js. Скажем, для реализации постоянного http-соединения с сервером (comet, long polling). Конечно, многие скажут, что необязательно использовать для этого Node.js. Впрочем, это дело каждого, какую технологию выбирать. Но в случае Node.js можно сказать, что он вполне себе успешно используется в качестве XMPP-сервера мгновенных сообщений у социальной сети «В контакте».

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

 

CSS Удобная блочная модель с box-sizing: border-box

Эта заметка — вольный перевод статьи Пола Айриша * { box-sizing: border-box } FTW.

Неудобная и нелюбимая многими особенность CSS — это связь width и padding в блочной модели. Потому что эта самая особенность заставляет нас при верстке высчитывать и подгонять значение ширины блока (width), с учетом отступов внутри него (padding). Ведь если нам нужно сверстать блок шириной 200 пикселей с отступом внутри него в 20 пикселей со всех сторон, то нужно подгонять css-свойства так, чтобы width был равен 160px, а padding: 20px.

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

 

JavaScript Включаем одни шаблоны Handlebars.js внутрь других шаблонов, или пишем хелпер {{include}}

Handlebars.js — это javascript-шаблонизатор, который дает отличную возможность писать простые и семантически понятные шаблоны, причем можно быть уверенным, что эти шаблоны не свалятся с ошибкой, если одна из переменных шаблона будет не определена, как, например, иногда происходит при использовании встроенного шаблонизатора из Underscore.js. Кроме того, Handlebars.js позволяет нам компилировать шаблоны заранее, не перекладывая задачу по компиляции шаблонов в браузеры пользователей.
Handlebars.js, на первый взгляд, можно назвать примитивным, поскольку он запрещает использовать сложные логические выражения в шаблонах, однако такова концепция этого шаблонизатора и его шарм — ведь шаблоны всегда останутся простыми и понятными. Всю сложную логику следует выносить в специальные функции-хелперы (helpers). Шаблонизатор содержит несколько встроенных хелперов, среди которых {{#each}}, {{#if}} и {{#unless}}, но среди них катастрофически не хватает хелпера {{include}} (наподобие {include} из Smarty), который позволил бы нам включать внутрь одних шаблонов другие шаблоны.

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

 

Веб-разработка PhoneGap, или нативное приложение для Android на HTML, CSS и Javascript

Не так давно я стал обладателем мобильного устройства на Android. Как разработчика программного обеспечения меня сразу же заинтересовала возможность написания мобильных приложений для подобного устройства. Как известно, нативные приложения для Android пишутся на Java с использованием Android SDK от Google. Но также существует возможность создавать мобильные версии веб-приложений на HTML, CSS и JavaScript, и такие веб-приложения будут доступны лишь через браузер и не будут иметь возможность доступа к таким возможностям мобильных устройств как геолокация, акселерометр, камера, доступ к файлам и другим. Но признайтесь, было бы неплохо, если бы нативное мобильное приложение можно было написать на JavaScript…

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

 

JavaScript Еще раз о parseInt, или почему parseInt от ’09’ равно 0

Казалось бы тема про parseInt в javascript уже довольна избита, но до сих многие из разработчиков, как опытных, так и не очень, с поразительным упорством наступают на одни и те же грабли. Как известно, глобальный метод parseInt() в javascript используется для перевода числа из его строкового представления в целочисленное число. Этот метод имеет два параметра — собственно само строковое представление числа и необязательный параметр, который указывает основание системы счисления, в которой производится преобразование. Вот о втором параметре и пойдет сегодня речь. Если внимательно посмотреть на него, взвесить все «за» и «против», и взглянуть на пример кода из реально существующего веб-сервиса, то станет понятным, что лучше всегда явно указывать этот самый необязательный второй параметр parseInt. Иначе в некоторых частных случаях функция с parseInt может работать неправильно. В качестве живого примера рассмотрим функцию, которая проверяет контрольное число у свидетельств пенсионного страхования.

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