Обновить
0
0

Пользователь

Отправить сообщение

Лучший подарок – книга. Делаем красивый переплет

Время на прочтение8 мин
Охват и читатели268K
Идея создания книги собственными руками поселилась в голове изрядно давно. Изучив практическую сторону вопроса, я лишь укрепился в этом желании, но руки никак не доходили даже до выбора книги. И вот некоторое время назад судьба распорядилась за меня. В силу обстоятельств непреодолимой силы во мне появилось желание подарить уникальную вещь, а, как известно, лучше книги подарка нет. Выбор пал на любимое произведение объекта моего неконтролируемого интереса, невероятно мудрое и емкое, смыслом, а не словами, творение Экзюпери — «Маленький принц». Желание творить подстегивала и моя личная любовь к этой книге. Решение было принято, время неумолимо приближало момент вручения, и я приступил к работе.
Читать дальше →

Наследование шаблонов в Smarty

Время на прочтение4 мин
Охват и читатели12K
Когда-то, давным-давно, мне пришлось использовать небезызвестный шаблонизатор Smarty. Сначала я, понятное дело, возмущался и кричал, какая же гадость эта заливная рыба Smarty, а потом «распробовал» и втянулся. Те удобства, которые он давал, с лихвой компенсировали мысли о том, что есть и более быстрые шаблонные движки.

Шаблоны я обычно строил с помощью инклюдов: в начале подключался header.tpl, в конце — footer.tpl, в середине ещё что-нибудь нужное. В целом разметка получалась довольно аккуратной, но не проходило ощущение, что не хватает чего-то важного. Окончательно понимание этого чего-то появилось, когда мне случилось написать простенькое приложение на Django. И это «что-то», как все поняли, оказалось наследованием шаблонов. Простая, как и всё гениальное, идея позволяла существенно упростить шаблоны и избавиться от дублирующих блоков.

А почему бы не реализовать подобный механизм в Smarty?

ТТТ: jQuery-плагин анимации текста от Contorra

Время на прочтение1 мин
Охват и читатели9K
Рабочее название — TTT, или Тасующаяся Трансформация Текста. 
Разработан по спецзаказу digital-агенства Contorra.
Этот плагин позволяет сменить один текст на другой посредством событий «клика» или «наведения» на сам объект, либо любой другой, с эффектом трансформации каждого символа. Каждый символ текущего текста двигается по кратчайшему пути в массиве символов своего типа (заглавные, строчные буквы, цифры, знаки пунктуации и прочие) и останавливается при достижении конечного результата. В результате мы наблюдаем, как из хаоса вращающихся символов постепенно проявляется заданный текст.

Демо
Читать дальше →

Анимирование Flexbox с помощью CSS Transition

Время на прочтение4 мин
Охват и читатели40K
Все уже знают про Flexbox. Кто-то испытывает его на продакшене, кто-то только изучает, а кто-то недоумевает, чем он лучше таблиц. Пока вы занимаетесь этим, поделюсь с вами приятной новостью: flexible контейнеры неплохо анимируются с помощью CSS transition.

Расскажу, как это использовать и что с этой радостью можно делать.
Читать дальше →

Управление любой AV-техникой с телефона. ИК-приёмопередатчик для JACK 3.5

Время на прочтение2 мин
Охват и читатели156K
26-ого сентября в городе Пенза стартовал HackDay #32. Мы решили принять участие и реализовать ИК-приёмопередатчик для JACK 3.5. Главным требованием для нашего девайся являлась компактность и неиспользование источников питания.

Свою работу мы начали с перехвата сигнала пульта управления и изучения его осциллограммы. Для приема сигнала мы использовали обычный ИК-диод:

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

Блокировки и уровни изоляции транзакций InnoDB в MySQL

Время на прочтение5 мин
Охват и читатели82K
Здравствуй, Хабр!
Предлагаю всем желающим вспомнить или познать суть блокировок движка InnoDB в MySQL.


КДПВ: deadlock в исполнении тропической фауны

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

Окружение, опережающее мысль

Время на прочтение4 мин
Охват и читатели24K
desktopЕсли эффективной работе в cli/bash/vim посвящены сотни статей, то теме организации рабочего окружения сисадмина — едва ли несколько штук. Чаще всего это скриншоты какого-нибудь Enlightenment с 1 прозрачным терминалом, часам, календарем, 15 виджетами загрузки CPU и голой анимешной бабой на фоне. Подходит для фильма «Хакеры», не подходит для работы. Нам требуется, чтобы терминал появлялся еще до того, как мы об этом подумали, выполнял свою работу и исчезал бесследно до следующего такта.
Читать дальше →

Picture — новый элемент, которого нет

Время на прочтение6 мин
Охват и читатели88K


В девелоперских сборках браузеров Chrome, Firefox и Opera появилась поддержка нового элемета picture, призванного решить ряд проблем возникающих при разработке адаптивных дизайнов. Давайте рассмотрим его подробнее.
Читать дальше →

Cвязывание данных в JavaScript-приложениях: автороутинг событий

Время на прочтение7 мин
Охват и читатели3.4K
Привет Хабр! В этой статье я рассмотрю один из вариантов построения архитектуры клиент-серверного веб-приложения с точки зрения связывания данных. Этот вариант не претендует на оригинальность, но лично мне позволил значительно сократить время на разработку, а также оптимизировать время загрузки.
Читать дальше →

Пишем тестопригодный javascript

Время на прочтение7 мин
Охват и читатели13K
[Прим. перев.]: предлагаю вашему вниманию перевод статьи Бена Черри, в прошлом разработчика Twitter. В этой статье он приводит несколько советов по написанию javascript кода, пригодного для тестирования.

Культура разработки в Twitter требует написания тестов. У меня не было опыта тестирования Javascript до работы в Twitter, поэтому мне пришлось многому научиться. В частности, некоторые шаблоны программирования, которые я привык применять, о которых я писал и призывал к их использованию, оказались непригодными для тестирования. Поэтому я подумал, что стоит поделиться некоторыми наиболее важными принципами, которые я разработал для написания тестопригодного Javascript кода. Примеры, которые я привожу, основаны на QUnit, но могут быть применены к любому фреймворку для тестирования Javascript'а.

Избегайте синглтонов


Один из моих наиболее популярных постов был о том, как использовать javascript шаблон «Модуль» для создания синглтонов в вашем приложении. Этот подход может быть простым и полезным, но он создает проблемы для тестирования по одной простой причине: синглтон загрязняет состояние объекта между тестами. Вместо синглтона в виде модуля, следует создавать его как конструируемый объект и присваивать его экземпляру глобального уровня во время инициализации вашего приложения.
Читать дальше →

Видео докладов с конференции DevConf 2014

Время на прочтение2 мин
Охват и читатели23K
Этим летом в Москве проходила конференция профессиональных веб-разработчиков DevConf 2014. Мы в Badoo поддерживали конференцию, выступали с докладами и сделали видео докладов, которые были интересны нашим разработчикам. Так как спикеры были «за», то мы делимся видео с нашими подписчиками.

1. «StatsCollector, или «Мама! Он и меня посчитал!»».
Старынин Валерий, PHP разработчик отдела BI, Badoo.
Доклад о том, как мы собираем статистику для каждого пользователя, обсчитываем каждое открытие страницы (и не только!), обрабатываем 120000 событий в секунду и планируем расширяться.



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

Шифрование/дешифрование данных на стороне клиента в web-ориентированных системах

Время на прочтение7 мин
Охват и читатели46K
В наши дни всё больше программ переводятся в так называемый «web-ориентированный» вид, то есть используется принцип клиент-сервер, что позволяет хранить данные удалённо и получать к ним доступ через тонкий клиент (браузер).
Одновременно с удобством использования остро встаёт вопрос о защищённости этих данных. Конфиденциальная информация может стать доступна другим людям несколькими путями. Во-первых, к пользователю могут быть применены физические меры для выпытывания. Во-вторых, при передаче данные могут быть перехвачены различными снифферами. И, в-третьих, на сервер могут быть произведены хакерские атаки, что позволит злоумышленникам похитить информацию, либо недобросовестный администратор сервера воспользуется ею в личных целях.

Задача


Некоторое время назад у меня возникла задача разработать прототип программы шифрования/дешифрования данных на стороне клиента в web-ориентированных системах.
Как я её решил

Дифференцирование Object, Array, Number и String

Время на прочтение2 мин
Охват и читатели9.6K
Начну с того, что метод jQuery.each я всегда использую только для работы с jQuery object. В остальном — циклы for / while или свой аналог «each». Вроде это и логично, но в документации говорится о том, что вышеупомянутый метод можно использовать для любых коллекций.
Разрушим этот миф.
Читать дальше →

[Перевод] Проблема конструкторов JavaScript и три способа её решения

Время на прочтение5 мин
Охват и читатели14K

Введение


Как известно, создать новый объект в JavaScript можно используя функцию-конструктор следующего вида:

function Fubar (foo, bar) {
  this._foo = foo;
  this._bar = bar;
}

var snafu = new Fubar("Situation Normal", "All Fsked Up");


Когда мы вызываем функцию-конструктор при помощи ключевого слова new , то получаем новый объект, а контекст его конструктора устанавливается на сам объект. Если мы явно не возвращаем ничего из конструктора, то получаем сам объект в качестве результата. Таким образом, тело функции конструктора используется для инициализации вновь созданного объекта, прототипом которого будет содержимое свойства prototype конструктора, так что можно писать следующим образом:

Fubar.prototype.concatenated = function () {
  return this._foo + " " + this._bar;
}

snafu.concatenated()
  //=> 'Situation Normal All Fsked Up'


Используя оператор instanceof можно убедиться в том, что объект был создан при помощи определенного конструктора:

snafu instanceof Fubar
  //=> true


(Заставить работать instanceof «неправильно» возможно при в случаях с более продвинутыми идиомами, или же если вы — вредный тролль, собирающий исключения языка программирования и получающий наслаждение, истязая ими соискателей на собеседованиях. Однако, для наших целей instanceof работает достаточно хорошо.)
Читать дальше →

Arr.js: события для стандартного массива

Время на прочтение3 мин
Охват и читатели12K
Arr.js — это «класс», унаследованный от стандартного Array. Отличительными особенностями являются: наличие события change для отслеживания любых изменений в массиве, и методы insert(), update(), remove(), set(), get() для упрощенной работы с массивом. Доступны все «родные» методы стандартного Array.

var fruits = new Arr('apple', 'orange', 'pineapple');

fruits.on('change', function(event) {
  alert('I changed fruits: ' + fruits.join(', '));
});

fruits.push('banana');

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

Основные виды поисковых запросов, которые используют пользователи интернет-магазинов, готов ли ваш сайт к ним? (Часть 2)

Время на прочтение4 мин
Охват и читатели13K
Продолжаем наш обзор часто встречающихся типов поисковых запросов, которые используют посетители интернет-магазинов. Сегодня мы рассмотрим запросы, которые не указывают, а скорее описывают искомый товар.

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

Алгоритмы поиска путей на JavaScript

Время на прочтение1 мин
Охват и читатели32K


Поиск оптимального маршрута юнита к цели на неизвестной карте — одна из самых сложных задач при разработке игры. К счастью, существует некоторое количество алгоритмов, которые решают эту задачу. Есть и отличная библиотека PathFinding.js с поддержкой 11 таких алгоритмов.
Читать дальше →

Шпаргалка по шаблонам проектирования

Время на прочтение2 мин
Охват и читатели1.6M

Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

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

Smarty vs. Twig: производительность

Время на прочтение4 мин
Охват и читатели32K
Smarty — один из самых старых шаблонизаторов для PHP. Если вы программируете на PHP — скорее всего, вам приходилось работать с ним. В 2010 году вышла третья версия этого шаблонизатора. Smarty 3 был написан с чистого листа, с активным использованием PHP5. Вместе с этим Smarty получил обновлённый синтаксис и современные возможности, включая наследование, песочницу и др.
Twig — молодой шаблонизатор от разработчиков Symfony. Авторы позиционируют его как быстрый и функциональный шаблонизатор. По возможностям он во многом похож на Smarty 3. Twig отличает несколько другой синтаксис, а так же заявленная высокая производительность. Проверим?
Читать дальше →

Fenom — yet another PHP template engine

Время на прочтение6 мин
Охват и читатели45K
Доброго времени суток. Вышла первая стабильная версия нового шаблонизатора Fenom. Для нетерпеливых, Fenom — это легковесный (статистика прилагается), быстрый (бенчмарк прилагается), гибкий (API прилагается) шаблонизатор, который может стать удачной заменой шаблонизаторам Twig или Smarty.
Заинтересовавшихся прошу под кат

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность