Pull to refresh
0
0
Дмитрий @painEffect

User

Покупатели со смартфонами стали кошмаром торговых сетей

Reading time 4 min
Views 16K
image
Для покупателей в США смартфон давно стал удобным инструментом для осуществления покупок. Причем в последнее время покупатели используют свои мобильные устройства в обычных розничных сетях. Зачастую найдя нужный товар в одной из крупных розничных сетей можно отсканировать его штрих-код с помощью специального приложения и воспользоваться одним из интернет-сервисов (например TheFind) для сравнения цены на него в различных местах. Так можно с легкостью найти интересующую вас покупку на треть дешевле и мгновенно заказать ее из своего смартфона.
Читать дальше →
Total votes 179: ↑175 and ↓4 +171
Comments 251

Небольшой мастер-класс. Как создать хорошую контекстную рекламную кампанию

Reading time 4 min
Views 3.3K
Привет, %username%!

Сегодня мне бы хотелось провести небольшой мастер-класс. Суть: кратко рассказать главные моменты о том, как нужно создавать качественную и рабочую рекламную кампанию.

Что будет в этом посте:

— Что такое контекстная реклама и почему не SEO?
— Почему выгодно делать хорошие объявления?
— Как сделать хорошее объявление?
— 5 простых способов повысить CTR объявления.
— И это далеко не все…
Узнать как делать хорошие тексты...
Total votes 129: ↑114 and ↓15 +99
Comments 75

doubleTwist или как троллить Стива Джобса

Reading time 2 min
Views 1.3K
Angre Steve Больше года назад на хабре была статья про Йона Йохансена, изветсного так же как DVD-Йон и его участие в стартапе DoubleTwist.
Вкратце, DVD-Йон, уже знаменитый своей программой взлома защиты DVD дисков (и последовавшей серией безуспешных судебных исков), занимался ни много ни мало а взломом DRM защиты музыкальных (и не только) файлов.
Причем, в первую очередь — защиты iTunes.
Уже только это, само по себе способно изрядно разозлить многих борцов за DRM и защиту сверхприбылей правообладателей.

Но, как оказалось, это — только начало серьезной «вирусной» рекламной кампании очень интересного продукта. Особенно интересно в ней целенаправленная атака на Apple, которая знаменита своей любовью «подшучивать» над другими и при этом свято оберегать свои интеллектуальные права. В общем, мишень выбрана знатная.

Буквально вчера на youtube появился следующий ролик.

В общем, «послание» этого ролика понять несложно. Пародируя знаменитую рекламу Apple 1984 года, авторы ролика меняют все местами.
В роли «оболваниваемых» выступают пользователи айподов, а в роли большого брата теперь кто-то напоминающий самого Стива Джоббса.
В конце ролика говорится что 6 октября doubleTwist предоставит всем возможность выбора.
Эти же ребята успели отметиться рекламой на стене AppleStore в Сан-Франциско, гласившей «лекарство от iTunes зависимости»

Что и говорить, выглядит это все достаточно интригующе.
Что же можно обнаружить, зайдя на сайт www.doubletwist.com?
Очень интересную программу!
Total votes 100: ↑87 and ↓13 +74
Comments 107

Равномерное выравнивание блоков по ширине

Reading time 4 min
Views 18K
Продолжая свои «css-раскопки» возникла новая идея, разобрать по косточкам ещё одну актуальную тему, которая касается равномерного выравнивания блоков по ширине. В принципе мои доскональные исследования я уже запостил у себя в блоге, но так как прошлая моя работа очень понравились Хабра-сообществу, то я решил сделать здесь небольшой краткий обзорчик этой статьи, чтобы ни одна хабра-душа не пропустили её наверняка. Так что, как говорил Гагарин: «Поехали».

В общем в задачах вёрстки периодически возникают моменты, когда появляется необходимость выровнять какой-нибудь список по ширине экрана. При этом пункты этого списка должны выравниваться равномерно, прижимаясь своими крайними элементами к границам контейнера, а расстояние между ними должно быть одинаковым.
image
Читать дальше →
Total votes 172: ↑163 and ↓9 +154
Comments 87

Три подхода к методологии построения сложного клиентского приложения

Reading time 6 min
Views 10K
Наверно, не существует единого рецепта, который бы всех устроил. Это касается любой проблемы. Для разработчиков этот тезис самоочевиден, и вовлеченность в использование и проектирование отдельных инструментов определяется, главным образом, лишь профессионализмом. Изобретение велосипедов романтично и неизбежно.

Особо вероятно изобретение велосипеда, когда рост сложности приложения происходит постепенно и в некотором смысле незаметно. Сложное приложение обычно является богатым приложением (rich), его элементы и особенности специфицированы W3C www.w3.org/TR/backplane. Известный JavaScript-евангелист Addy Osmani так дополнительно определяет сложное приложение: “По-моему, крупное JavaScript приложение есть нетривиальное приложение, требующее значительных усилий разработчика для поддержки, причем наиболее сложное оперирование обработкой и отображением данных ложится на браузер” (http://addyosmani.com/largescalejavascript/).
Читать дальше →
Total votes 40: ↑34 and ↓6 +28
Comments 27

PhantomJS + JSCoverage + QUnit или консольные JS юнит-тесты с подсчетом покрытия

Reading time 4 min
Views 6K
Поговорим о случае, когда нужно автоматизировать запуск тестов и сбор статистики покрытия, к примеру, для гипотетической клиентской JS библиотеки. Задача не совсем тривиальна, поскольку для нормальной работы библиотеки требуется полноценный браузер — библиотека является визуальной оберткой над стандартными компонентами формы. Библиотека должна быть написана так, чтобы все взаимодействие с ее объектами можно было производить с помощью методов, которые они предоставляют, а не только через непосредственные манипуляции с DOM (т.е. любое действие юзера может быть запущено не только событием, допустим, клика по чему-то, но и руками через метод). Но тем не менее, надо этот DOM иметь, чтобы результаты работы методов помимо изменения внутреннего состояния объектов также отображались и в DOM. В целом напоминает приложения на Sencha (ExtJS).

Для достижения поставленных целей нужен некий контролируемый браузер, фреймворк для запуска тестов и утилита, которая позволит посчитать покрытие кода тестами, а также некоторый код, который соединит все компоненты.
Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Comments 12

Оформляем тултипы с помощью CSS3

Reading time 3 min
Views 20K
image
Всем привет!
Уже несколько раз меня просили сделать обычные тултипы, которые со стрелочками такие. Все бы было хорошо: состряпал блок с круголками, взял треугольники отсюда и вуаля. Однако, не все так просто. Ведь полет фантазии дизайнеров велик. То им стрелочки с наклоном, то им рамки, то тени. Можно, конечно, все запилить на картинках, но ведь это старомодно непрактично. Хотя бы из-за кучи оберток, для того, чтобы все тянулось во все стороны.
Всё это оказалось абсолютно решаемым с помощью CSS, если включить немного фантазии.
От слов к делу.
Читать дальше →
Total votes 84: ↑76 and ↓8 +68
Comments 23

Sony Ericsson Xperia Pro — разбор смартфона с qwerty-клавиатурой

Reading time 1 min
Views 9.8K
image

На канале GTV очередная новинка этой осени — Sony Ericsson Xperia Pro. По своим функциям эта модель аналогична Xperia Neo, но выполнена в виде бокового слайдера с qwerty-клавиатурой. Этот факт полностью отличает эти две модели при разборе.
Читать дальше →
Total votes 17: ↑12 and ↓5 +7
Comments 5

Поднимаем на одном сервере несколько Ruby on Rails проектов под разными версиями ruby (Nginx + Unicorn)

Reading time 4 min
Views 17K
Здравствуйте, хабралюди!

Хочу поделиться с вами способом разворачивания нескольких приложений Ruby on Rails на одном сервере.
Поможет нам в этом RVM, Unicorn и Nginx.

Недавно заказчик попросил поставить Redmine к ним на сервер, на котором уже крутился проект на Ruby on Rails и использующий версию руби 1.9.2. А redmine работает максимум с ruby-1.8.7. Так как других проектов на сервер размещать не предполагалось, то там изначально поставили Nginx + mod_passenger. Как известно, используя mod_passenger на одном сервере не запустишь два приложения с разными версиями руби.
смерть пассажира и зачатие единорога
Total votes 27: ↑24 and ↓3 +21
Comments 39

Использование runit для своих сервисов

Reading time 3 min
Views 48K
Супервизор сервисов runit позиционируется как замена стандартным скриптам инициализации Unix.

Но на практике оказалось, что runit идеален для управления сервисами безотносительно инициализации и т.п.

Введение


Супервизор берёт на себя такой функционал, как:
  • превращение любого процесса в демон;
  • логгирование вывода процесса и ротирование логов;
  • запуск, остановка, рестарт, запрос состояния, управляющие скрипты для init.d;
  • выключение и запуск сервисов автоматически при появлении новых сервисов в списке либо удалении старых из списка;
  • возможность ведения нескольких независимых списков сервисов одновременно (например, для каждого пользователя отдельно и для системы в целом);
  • удобный API для управления сервисами.

Для большинства операционных систем runit уже входит в репозитории пакетов (apt-get install runit). Кроме того, мы имеем уже готовый набор рецептов для популярных сервисов (nginx, apache etc.).

Читать дальше →
Total votes 43: ↑39 and ↓4 +35
Comments 54

Поддомены в Rails

Reading time 4 min
Views 6.4K
Tutorial
Думаю каждый кто работал с под-доменами в Rails 3 видел данный скринкаст.

Когда столкнулся с этим примером стояла задача сделать динамические поддомены + некоторые фиксированные. Динамические должны были соответствовать некоторому полю одной из моделей. Таким образом были выдвинуты условия для конечного решения:
  • возможность указания фиксированного поддомена, либо группы поддоменов;
  • возможность привязки к полю из модели ActiveRecord;
  • удобный синтаксис для записи всего этого в routes.rb.
Читать дальше →
Total votes 34: ↑31 and ↓3 +28
Comments 10

Оптимизируем процесс работы в консоли

Reading time 4 min
Views 16K
Все привыкли редактировать текст в текстовых редакторах, блокнотах, веб-формах и т.д. В процессе набора текста мы пользуемся привычными стрелками, кнопками «End» и «Home», более опытные зажимают «Ctrl» и стрелками шагают по словам (что, кстати, не всегда работает). И при переходе на консоль мы ориентируемся на те же самые правила, даже не зная, что bash предлагает очень удобные средства и комбинации клавиш, которые очень упрощают работу и минимизируют количество операций для выполнения задачи. К тому же, в bash есть удобные средства работы с историей, масса различных подстановок и других интересных функций. Самые часто используемые мной и любым опытным администратором я и опишу в этой статье.
Читать дальше →
Total votes 256: ↑245 and ↓11 +234
Comments 76

Всплывающие flash-сообщение из глубин фоновых задач

Reading time 1 min
Views 2.3K
Каждый раз, когда необходимо выводить flash-сообщение сталкиваешься с одними и теми же проблемами: непонятно где эти сообщения выводить, толи заранее на странице определить место, которое жалко, толи сделать растягиваемый дизайн, что не всегда удобно. А еще этих сообщений может быть много, а еще каждый норовит сохранять их под своим ключем (warning, notice..). Когда понадобилось посылать пользователю сообщения из delayed_job стало понятно что нужно решить эту проблем раз и навсегда.

gem gritter_notice — выводит flash и удобно обрабатывает сохраняемые в базе всплывающие сообщения в 5 строчек кода.

image

Читать дальше →
Total votes 56: ↑47 and ↓9 +38
Comments 19

Ускоряем логин через SSH в Ubuntu в 100 раз

Reading time 2 min
Views 41K
Долгое время я мучился ужасно медленным удаленным логином на свои Ubuntu сервера (все 2 ). Ужасно медленно в данном случае — 2-3 секунды. Не то чтобы это было совсем фатально, но когда логин через ключ — хочется чтобы все работало мгновенно — в конце концов, у нас не 486SX.

Длительное гугление приводило только к стандартным решениям:
  1. UseDNS no в /etc/ssh/sshd_config — ускоряет логин в случае тормозного DNS. В моём случае стоял локальный кеширующий DNS, потому и так все было быстро.
  2. Принудительное указание IPv4 в SSH клиенте — особо не помогло, видимо не у всех тормозит
И на askubuntu.com вопрос c bounty уныло провисел долгие недели без ответа…

Читать дальше →
Total votes 145: ↑135 and ↓10 +125
Comments 44

Массовая почтовая рассылка через Exim или как не попасть в спам

Reading time 4 min
Views 97K
Жизнь была прекрасна и все было в этом мире хорошо, пока почта с моего сайта не стала активно посылаться в спам практически всеми крупными почтовыми серверами. Особенно усердствовал в этом Gmail. Частенько меня принимали за спамера в Yandex, реже в mail.ru и rambler.
image
Исходя из совокупности представленных факторов стало понятно, что надо что-то делать с настройками своего почтового сервера Exim. Посмотреть, как это было сделано, приглашаю под хабракат.
Читать дальше →
Total votes 88: ↑80 and ↓8 +72
Comments 41

Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Reading time 20 min
Views 310K
Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?
Как оценить качество вёрстки?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

Клиенту неважно насколько красив ваш код, но ему важен результат. Качественный код нужен фирме, т.к. он надёжней и в будущем его будет легче поддерживать.

Требования должны были быть такие, что соблюсти их легче, создавая качественную вёрстку, а не говнокод. Я составлял такой чек-лист в течении полутора лет. За последние полгода в него не добавилось ничего. Значит самое главное учтено.

Итак что же это за список?

Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

История обновлений:
  • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
  • 2015/08/10: актуализирован список исключений для CSSLint
  • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
  • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
  • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
  • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
  • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
  • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
  • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
  • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
Total votes 335: ↑318 and ↓17 +301
Comments 244

Легко и непринуждённо: почта и Jabber для пользователей вашего сайта

Reading time 12 min
Views 14K
Допустим, вы развиваете какой-нибудь сайт в интернете. У вас есть постоянные пользователи, кто-то заходит к вам от случая к случаю. И вы конечно же ищете способы удержания аудитории на вашем сайте, придумывая всякие оригинальные функции и оттачивая до блеска интерфейс. Почему бы тогда не использовать имя вашего сайта в качестве экспортной монеты? Можно ведь предоставить вашим пользователям в качестве дополнительного бонуса почтовый адрес и соответствующий адрес Jabber в вашем домене.

Конечно, я не предлагаю становится очередным провайдером почты. Это глупо, когда есть такие игроки, как gmail.com и yandex.ru. Кроме того, вы естественно можете использоваться услуги вышеупомянутых Google и Yandex для подключения своего домена к их сервисам. Но тогда вы не получите никакой интеграции с вашей базой пользователей и никакого контроля над доступной функциональностью.

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

Подробнее...
Total votes 114: ↑102 and ↓12 +90
Comments 66

Google выпускает skipfish — сканер безопасности сетевых приложений

Reading time 1 min
Views 293
imageПолностью автоматизированный инструмент проверки безопасности ваших веб приложений от Google. Основные возможности:

высочайшая скорость: написан на C, оптимизированные HTTP запросы, минимальные требования к CPU — скорость запросов легко достигает 2000 в секунду.

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

отличная логика безопасности: высокое качество работы, различные способы проверки безопасности.

Поддерживаются операционные системы — Linux, FreeBSD, MacOS X и Windows (требуется Cygwin).

Google skipfish
Total votes 77: ↑77 and ↓0 +77
Comments 71
1

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity