Около пяти месяцев назад я завязал с zend framework и пересел на рельсы. Тогда же начал переписывать свой проект www.okinfo.ru. Сейчас он уже закончен и sloccount показал что количество строк в проекте уменьшилось с 15000 до 4000. Мои знакомые php разработчики попросили success story и в итоге родилась эта статья. В ней я опишу как оно было, а так же немного расскажу о своем переходе на ruby.
Andrewus @Andrewus
Head of platform & devops lead
Стремимся к минимализму (подборка сайтов, где можно черпать вдохновение)
1 мин
33K
Ни для кого не секрет, что в настоящее время многие стремятся к минимализму в дизайне чего бы то ни было. Действительно, когда нет ничего лишнего, то повышается и восприимчивость информации. Но это все лирика. Сказано было это еще до меня и много. Предлагаю вашему вниманию подборку сайтов, посещение которых может направить ваши мысли по поводу разрабатываемого дизайна в нужное русло.
+100
Украшаем списки
5 мин
24KПеревод
В 2002 году Марк Ньюхаус (Mark Newhouse) опубликовал статью «Укрощение списков» ("Taming Lists"), довольно-таки интересную часть которой он посвятил объяснению того, как создавать собственные списки, украшенные псевдо-элементами. Почти десять лет спустя Николас Галлахер (Nicolas Gallagher) изобрел технику, которая использует псевдо-элементы из спрайтов, для создания фоновых изображений.
Сегондя, основываясь на опыте гигантов, мы постараемся развить эту тему. Мы обсудим, как можно украсить элементы без дополнительной разметки, используя только технику CSS-спрайтов. Результат будет работать также в Internet Explorer 6 и 7 версии.
Сегондя, основываясь на опыте гигантов, мы постараемся развить эту тему. Мы обсудим, как можно украсить элементы без дополнительной разметки, используя только технику CSS-спрайтов. Результат будет работать также в Internet Explorer 6 и 7 версии.
+101
Что такое проектирование сайта и почему его нужно делать
5 мин
79KПроектирование — этот, возможно, ключевой этап создания интернет-сайта, отвечает нам на следующие вопросы:
- Каковы наши цели — зачем мы делаем сайт? Как мы реализуем поставленные цели?
- Как сайт будет выглядеть и работать?
+47
Лесная братва
2 мин
6.4KДавайте представим, что дизайн — это лес, а дизайнеры — его обитатели. Какими они могут быть?

Бобер — трудяга. Кропотливо строит хатки и плотины. Может построить всё, что угодно — только скажите ему что, как это должно быть устроено, как должно выглядеть. Бобер — дизайнер, который не боится рутины, делает всё отлично, но по каким-то внутренним причинам не способен придумать что-то новое.
Бобер

Бобер — трудяга. Кропотливо строит хатки и плотины. Может построить всё, что угодно — только скажите ему что, как это должно быть устроено, как должно выглядеть. Бобер — дизайнер, который не боится рутины, делает всё отлично, но по каким-то внутренним причинам не способен придумать что-то новое.
+42
Применение алгоритмов нечеткого поиска в PHP
7 мин
31KВдохновленный топиками о нечетком поиске и фонетических алгоритмах, захотел попытаться реализовать нечто подобное похожее на гугловское «Возможно, вы имели в виду: ...» средствами PHP.
Для исправления опечаток в словах понадобится:
Расстояние Левенштейна (или расстояние Дамерау-Левенштейна — разница будет незначительной) — levenshtein()
Metaphone — metaphone()
Алгоритм Оливера — similar_text()
База русских слов (с падежами, учетом времен и т.д.).
Для исправления опечаток в словах понадобится:
Расстояние Левенштейна (или расстояние Дамерау-Левенштейна — разница будет незначительной) — levenshtein()
Metaphone — metaphone()
Алгоритм Оливера — similar_text()
База русских слов (с падежами, учетом времен и т.д.).
+53
Особенности Firewall в Windows 7
5 мин
79KВ этом году Windows XP исполняется 10 лет. Возраст встроенного в ОС firewall можно считать по разному. Сейчас уже, наверное, далеко не каждый вспомнит, что в исходной версии Windows XP прообраз нынешнего брандмауэра назывался Internet Connection Firewall (ICF), имел весьма ограниченный функционал и настраивался вручную в свойствах конкретного сетевого интерфейса. Тем не менее, уже тогда один из самых частых вопросов, который мы получали от корпоративных заказчиков, звучал примерно так: «Почему вы не включили ICF по умолчанию?». Забавно, да?
Собственно Windows Firewall появился с выходом SP2 для Windows XP, содержал ряд существенных улучшений по сравнению с ICF и был включен в ОС по умолчанию. Последний факт первое время частенько приводил к неработоспособности многих устаревших приложений, необходимости задания в Windows дополнительных настроек и, естественно, критике в адрес MS. А сколько было написано по поводу отсутствия исходящей фильтрации… Но уже прогремели Nimda, Slammer, Blaster, другие приятные слуху названия, и для многих было очевидно, что наличие встроенного брандмауэра является далеко не лишним.
Vista и Windows Server 2008 привнесли еще большие изменения в Windows Firewall: фактически появилась новая платформа фильтрации, на основе которой работал firewall и могли создаваться сторонние решения, с настройками брандмауэра были объединены политики IPsec, таки появилась фильтрация исходящего трафика.
В рамках этого поста я хотел бы остановиться на особенностях Windows Firewall в «семерке» и R2. Эти особенности, конечно, уже перечислены в различных статьях на том же TechNet, но, как правило, настолько кратко, что суть усовершенствований может ускользнуть и остаться недооцененной.
Собственно Windows Firewall появился с выходом SP2 для Windows XP, содержал ряд существенных улучшений по сравнению с ICF и был включен в ОС по умолчанию. Последний факт первое время частенько приводил к неработоспособности многих устаревших приложений, необходимости задания в Windows дополнительных настроек и, естественно, критике в адрес MS. А сколько было написано по поводу отсутствия исходящей фильтрации… Но уже прогремели Nimda, Slammer, Blaster, другие приятные слуху названия, и для многих было очевидно, что наличие встроенного брандмауэра является далеко не лишним.
Vista и Windows Server 2008 привнесли еще большие изменения в Windows Firewall: фактически появилась новая платформа фильтрации, на основе которой работал firewall и могли создаваться сторонние решения, с настройками брандмауэра были объединены политики IPsec, таки появилась фильтрация исходящего трафика.
В рамках этого поста я хотел бы остановиться на особенностях Windows Firewall в «семерке» и R2. Эти особенности, конечно, уже перечислены в различных статьях на том же TechNet, но, как правило, настолько кратко, что суть усовершенствований может ускользнуть и остаться недооцененной.
+42
JS1k — пишем отличное веб приложение в 1024 байт
7 мин
3.5K
Уже второй год я участвую в JS1k, в прошлом году был пробный скрипт, сейчас я решил подойти основательно. Приложения я уже написал и отправил. В статье я хочу поделиться своим опытом: как стоит писать приложение для JS1k, чем сжимать, как сократить код в 4 раза и вообще как впихнуть что-то интересное в 1 Кб.
Тема текущего JS1k "Oregon Trail" — классическая игра для Apple II (что это можно нагуглить). Поэтому рекомендуется написать что-то в этом духе, но это не обязательно.
Начало
Вам необходимо придумать небольшое приложение или демку, которое по вашему мнению может влезть в 1кб (продумать детали и управление). Если вы сомневаетесь в своих прикидках, то можно посмотреть, что впихнули в прошлом году: Legend Of The Bouncing Beholder, Tiny chess. Прочитайте правила и используйте html шаблон — тогда ваше приложение будет 100% работать в демо среде.
Начните писать скрипт, без каких-либо оптимизаций, но следите за его размером. Если он стал больше 4-5Кб — вам стоит придумать другую тему или в будущем придется попотеть (у меня было 4393 байт).
+56
Как оценить задачу до начала разработки сайта
5 мин
29KПостановка задачи — ключ к успеху любой работы. Если задача не поставлена чётко, то невозможно даже понять, решена ли она.
Мы предлагаем алгоритм оценки задачи до начала разработки сайта, неоднократно обкатанный и написанный кровью менеджеров. Мы уверены, что этот алгоритм сэкономит вам массу времени, денег и нервов.
Мы предлагаем алгоритм оценки задачи до начала разработки сайта, неоднократно обкатанный и написанный кровью менеджеров. Мы уверены, что этот алгоритм сэкономит вам массу времени, денег и нервов.
+126
Тесты разные важны, а иные не нужны
5 мин
3.1KЗачем писать тесты? Когда их писать? Когда их не писать? Хабр был и остается неравнодушен к этим и другим вечным вопросам, и не один хабровчанин провел бессонную ночь, придумывая убедительные на них ответы (чтобы оппоненты, наконец, заткнулись).
Я решил взять противника не умением, а числом, и поэтому вот вам 19 причин, по которым писать тесты все-таки стоит (в хронологическом порядке). Итак, тесты
Я решил взять противника не умением, а числом, и поэтому вот вам 19 причин, по которым писать тесты все-таки стоит (в хронологическом порядке). Итак, тесты
+27
Нечёткий поиск в тексте и словаре
13 мин
270KВведение
Алгоритмы нечеткого поиска (также известного как поиск по сходству или fuzzy string search) являются основой систем проверки орфографии и полноценных поисковых систем вроде Google или Yandex. Например, такие алгоритмы используются для функций наподобие «Возможно вы имели в виду …» в тех же поисковых системах.
В этой обзорной статье я рассмотрю следующие понятия, методы и алгоритмы:
- Расстояние Левенштейна
- Расстояние Дамерау-Левенштейна
- Алгоритм Bitap с модификациями от Wu и Manber
- Алгоритм расширения выборки
- Метод N-грамм
- Хеширование по сигнатуре
- BK-деревья
+169
OAuth 2.0 простым и понятным языком
7 мин
891K
На хабре уже писали про OAuth 1.0, но понятного объяснения того, что такое OAuth 2.0 не было. Ниже я расскажу, в чем отличия и преимущества OAuth 2.0 и, как его лучше использовать на сайтах, в мобильных и desktop-приложениях.
Что такое OAuth 2.0
OAuth 2.0 — протокол авторизации, позволяющий выдать одному сервису (приложению) права на доступ к ресурсам пользователя на другом сервисе. Протокол избавляет от необходимости доверять приложению логин и пароль, а также позволяет выдавать ограниченный набор прав, а не все сразу.
+138
Конфигурация Mercurial+Nginx для управления большим количеством репозиториев
9 мин
6.2KПод катом описан пример конфигурации связки mercurial+nginx и приведен скрипт автоматизации всего вышеперечисленного.
+25
Примеры xpath-запросов к html
4 мин
532KXpath — это язык запросов к элементам xml или xhtml документа. Также как SQL, xpath является декларативным языком запросов. Чтобы получить интересующие данные, необходимо всего лишь создать запрос, описывающий эти данные. Всю «черную» работу за вас выполнит интерпретатор языка xpath.
Очень удобно, не правда ли? Давайте посмотри какие возможности предлагает xpath для доступа к узлам веб-страниц.
Очень удобно, не правда ли? Давайте посмотри какие возможности предлагает xpath для доступа к узлам веб-страниц.
+53
Организация и оптимизация стилей
9 мин
24KВ этом посте я приведу пример организации стилей на типичном проекте.
Небольшое вступление, попробую объяснить актуальность проблемы и зачем это нужно.
Рассмотрим такую ситуацию. Разработчику ставят задачу, реализовать очередной функционал на сайте. Это допустим включает добавление новых разделов, блоков, элементов. Разработчики зачастую не доверяют чужому коду, и когда доходят до верстки, находят css-файл с названием типа main.css и дописывают в конец свои новые стили.
Проходит некоторое время, приходит новый разработчик, ему ставят подобную задачу, он если и пытается разобраться в стилях, то видит, что там нет никакой закономерности, и повторяет то же, что делали предыдущие.
Руководство ставит сроки, разрабатывается все новый и новый функционал, проект растет. В итоге css файлы превращаются в мусорку, сайт грузится дольше, появляется больше дефектов и т.д..
Я думаю, многим это знакомо.
Небольшое вступление, попробую объяснить актуальность проблемы и зачем это нужно.
Рассмотрим такую ситуацию. Разработчику ставят задачу, реализовать очередной функционал на сайте. Это допустим включает добавление новых разделов, блоков, элементов. Разработчики зачастую не доверяют чужому коду, и когда доходят до верстки, находят css-файл с названием типа main.css и дописывают в конец свои новые стили.
Проходит некоторое время, приходит новый разработчик, ему ставят подобную задачу, он если и пытается разобраться в стилях, то видит, что там нет никакой закономерности, и повторяет то же, что делали предыдущие.
Руководство ставит сроки, разрабатывается все новый и новый функционал, проект растет. В итоге css файлы превращаются в мусорку, сайт грузится дольше, появляется больше дефектов и т.д..
Я думаю, многим это знакомо.
+55
Взгляд на аудит сквозь призму стандарта PCI DSS
21 мин
32K
Стремительно растет количество операций с использованием пластиковых карт: онлайн-платежи, безналичный расчет в торгово-сервисных предприятиях, манипуляции с банковским счетом в системах онлайн-банкинга и прочие платежные приложения от поставщиков услуг. Соответственно, расширяется инфраструктура, в которой циркулируют информация о держателях карт и критичные аутентификационные данные. В случае попадания этой информации или ее части в руки к злоумышленникам финансовые потери несут как банки-эмитенты, так и конечные пользователи.
+28
12 навыков создания защищенных веб-приложений
8 мин
22KДанная статья не содержит никаких откровений. В первую очередь информация о типовых уязвимостях и методах их решения будет полезна начинающим. Опытные разработчики все это знают, или должны знать, если считают себя таковыми.
Большинство примеров кода не привязаны к какому-либо конкретному языку программирования, но для наглядности я буду использовать PHP.
Итак, поехали.
Большинство примеров кода не привязаны к какому-либо конкретному языку программирования, но для наглядности я буду использовать PHP.
Итак, поехали.
+160
Верстка e-mail рассылок — «подводные камни». Часть вторая
4 мин
32K
Здравствуйте, уважаемые хабравчане!
Буквально пару дней назад мы опубликовали первую часть топика, посвященного верстке e-mail рассылок, а конкретнее — использованию изображений. Вторая часть посвящена ещё четырем «подводным камням» верстки, которые нам удалось обнаружить.
Второй камень — «Якоря»
Если рассылка большого объема на несколько страниц, появляется необходимость навигации внутри рассылки. Как известно, для такой навигации на html-странице используются «якоря».
+29
Полнотекстовый поиск в InnoDB
12 мин
37KПривет, Хабрачитатель!
Полнотекстовый поиск данных в InnoDB – это известная головная боль многих разработчиков под MySQL / InnoDB. Для тех, кто не в курсе дела я объясню. В типе таблиц MyISAM есть полноценный полнотекстовый поиск данных, однако сама таблица исторически имеет ограничения, которые являются принципиальными в отдельных проектах. В более «продвинутом» типе таблиц InnoDB полнотекстового поиска нет. Вот и приходится мириться бедным разработчикам либо с ограничениями MyISAM, либо с отсутствием поиска в InnoDB. Я хочу рассказать о том, какие есть способы организовать полноценный поиск в InnoDB без магии и исключительно штатными средствами. Также будет интересно сравнить скоростные характеристики каждого способа.
Полнотекстовый поиск данных в InnoDB – это известная головная боль многих разработчиков под MySQL / InnoDB. Для тех, кто не в курсе дела я объясню. В типе таблиц MyISAM есть полноценный полнотекстовый поиск данных, однако сама таблица исторически имеет ограничения, которые являются принципиальными в отдельных проектах. В более «продвинутом» типе таблиц InnoDB полнотекстового поиска нет. Вот и приходится мириться бедным разработчикам либо с ограничениями MyISAM, либо с отсутствием поиска в InnoDB. Я хочу рассказать о том, какие есть способы организовать полноценный поиск в InnoDB без магии и исключительно штатными средствами. Также будет интересно сравнить скоростные характеристики каждого способа.
+67
«Как доводить начатое до конца, если я …» или GTD и DISC для «нечайников»
8 мин
5.9K
В одном из предыдущих своих постов я пообещал продолжить тему о теории DISC для «нечайников». Сегодня очередной пост в эту сторону.
Наверное одним из ключевых моментов работы программиста, прожект-менеджера, да и вообще любого человека, как связанного с IT так и не связанного – это привычка, навык или умение доводить до конца начатые дела.
В этом посте мы разберёмся с этим вопросом.
+61
Информация
- В рейтинге
- 2 911-й
- Откуда
- Москва, Москва и Московская обл., Россия
- Работает в
- Дата рождения
- Зарегистрирован
- Активность