Как стать автором
Обновить
0
0
Дмитрий @painEffect

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

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

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

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

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

Время на прочтение4 мин
Количество просмотров3.6K
Привет, %username%!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Время на прочтение1 мин
Количество просмотров9.9K
image

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

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

Время на прочтение4 мин
Количество просмотров17K
Здравствуйте, хабралюди!

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

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

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

Время на прочтение3 мин
Количество просмотров51K
Супервизор сервисов runit позиционируется как замена стандартным скриптам инициализации Unix.

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

Введение


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

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

Читать дальше →
Всего голосов 43: ↑39 и ↓4+35
Комментарии54

Поддомены в Rails

Время на прочтение4 мин
Количество просмотров6.5K
Думаю каждый кто работал с под-доменами в Rails 3 видел данный скринкаст.

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

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

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

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

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

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

image

Читать дальше →
Всего голосов 56: ↑47 и ↓9+38
Комментарии19

Храните мелкие картинки в CSS

Время на прочтение10 мин
Количество просмотров146K
Храните мелкие картинки, которые нельзя засунуть в спрайты, в data:image base64 в CSS — это экономит кучу запросов к вебсерверу.
Читать дальше →
Всего голосов 144: ↑105 и ↓39+66
Комментарии131

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

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

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

Читать дальше →
Всего голосов 145: ↑135 и ↓10+125
Комментарии44

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

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

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

Время на прочтение20 мин
Количество просмотров314K
Идеальная вёрсткаВы 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, даже если вы ничего не понимаете в вёрстке.
Всего голосов 335: ↑318 и ↓17+301
Комментарии244

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

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

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

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

Подробнее...
Всего голосов 114: ↑102 и ↓12+90
Комментарии66

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

Время на прочтение1 мин
Количество просмотров376
imageПолностью автоматизированный инструмент проверки безопасности ваших веб приложений от Google. Основные возможности:

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

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

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

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

Google skipfish
Всего голосов 77: ↑77 и ↓0+77
Комментарии71
1

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность