Как стать автором
Обновить
60
0
Богдан Рыхаль @ganjar

Web программист

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

VIM + screen. Организация удаленной среды web-разработки

Время на прочтение6 мин
Количество просмотров21K
Миллион статей написано об организации рабочего процесса, редакторах кода, удобстве и стабильности работы. Я, не претендуя на «самый расчудесный способ», хочу рассказать, как организована среда web-разработки у нескольких человек из нашей команды. Сразу оговорюсь, если вы используете только локальные GUI-шные редакторы кода, Notepad++, Eclipse и т.п., то эта статья не для вас. Мы очень много работаем в консоли, и поэтому, в результате многолетнего естественного отбора, многие пришли к VIM, а консоль является практически отдельным табом в среде разработки, т.к. в процессе работы надо смотреть логи, писать запросы к базе, перезапускать сервисы и т.п. Поэтому, я хочу поделиться конкретным практическим рецептом организации среды web-разработки для программиста или админа, который много времени работает в стандартной удаленной консоли.
Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии31

Hot Dot Parallax Engine под лицензией MIT

Время на прочтение2 мин
Количество просмотров30K
image
Более 300 сайтов использовали движок до публикации.

Девять месяцев назад мы запустили сайт студии. Он быстро набрал популярность, мы получили несколько наград, о нас написали профильные СМИ.

Сайт так же быстро оброс клонами. Некоторые скопировали нас полностью. Попадались и подобные забавные вещи. Сайт на нашем движке попал на One Page Love, а после выявления воровства был удален из рейтинга. Когда количество клонов превысило три сотни, мы решили сделать исходный код движка открытым.
Читать дальше →
Всего голосов 61: ↑57 и ↓4+53
Комментарии26

Как это сделано: префиксный поиск

Время на прочтение5 мин
Количество просмотров44K
Мы живем во времена, когда кажется, что все просто и все есть. Нужно сделать масштабируемый проект — используем MongoDB, нужна очередь — вот RabbitMQ, нужно поднять функционал поиска — раз плюнуть: ставим Sphinx, Solr, ElasticSearch (нужное подчеркнуть).

Но здесь лишь доля правды: — при определенном везении можно поставить нужный сервер и все зашевелится. Загвоздка с поиском состоит в том, что пользователи уже порядком привыкли к высокой планке, которую задают «большие ребята», а тот поиск, что поднимется у вас «из коробки», будет явно недотягивать. И если очередь или базу данных вы можете добить железом прежде, чем будете оптимизировать, то поиск железом не добьешь.

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

Мы посмотрим, как с помощью нашего проекта http://indexisto.com сделан поиск на сайте http://maximonline.ru и сравним его с тем, что есть на других сайтах.

Для начала несколько примеров. Возьмем запрос «Битва за Лос Анджелес» и представим, что его напишут неправильно «Лос Анжелес биттва». Как видно, пользователь не знает точно, как пишется имя города, и забыл, как звучит название фильма, а также у него дрогнула рука в конце на слове «битва».

Выберем достойные проекты рунета, в которых есть префиксный поиск, и попробуем поискать там наш запрос:

Проект Правильный запрос Неправильный запрос
afisha.ru

все ОК

Не найдено
ivi.ru

все ОК

Не найдено
vk.com

все ОК

Не найдено
maximonline.ru

все ОК

все ОК

Читать дальше →
Всего голосов 103: ↑81 и ↓22+59
Комментарии37

8 HTML элементов, которые вы не используете (а следовало бы)

Время на прочтение4 мин
Количество просмотров96K
image
Веб сегодня все больше и больше семантический. Но что означает «семантический»? Почему это важно?

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

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

Ок, итак семантическая разметка — это хорошо, но как ее использовать. Лучше всего начать с замены обычных тегов на более выразительные. Давайте посмотрим восемь элементов, которые позволят вам войти в эту игру.
Читать дальше →
Всего голосов 214: ↑175 и ↓39+136
Комментарии101

Серьезное проектирование серьезного магазина. Часть 1. Исследуем и продумываем функционал

Время на прочтение19 мин
Количество просмотров128K
Не так давно я писал статью про проектирование больших сайтов на примере социальной сети со схожим названием: «Серьезное проектирование серьезных сайтов». Сегодня я хочу поговорить про одну из основных сфер нашей деятельности – электронную коммерции, а именно про проектирование интернет-магазинов.

Это цикл статей больше специалистов, значительно более углубленно, чем все мои прошлые статье в этой области. В статье я расскажу про крупнейшие интернет-магазины США, Китая, России и Украины, расскажу как маркетинг влияет на проектирование, покажу подробный Mind Map гипермаркета, опишу 57 основных модулей интернет-магазинов для внешней (покупательской) части и более 50 модулей для внутренней части (административной), покажу интерфейсы магазинов и еще много полезного.

Интернет-магазинами и технологиями продаж в Интернете лично я занимаюсь с далекого 2005 года. За годы работы мое мнение по этому вопросу сильно эволюционировало. Когда-то я думал, что интернет-магазин – это довольно простой сайт с точки зрения разработчика или маркетолога, мне казалось, что все магазины похожи друг на друга и достаточно один раз получить пул знаний, который потом можно будет использовать многие годы без особых изменений, ведь интернете-магазин – это только тип сайта для продажи товаров и на первый взгляд нет ничего сложного в том, чтобы разработать очередной магазин со схожим функционалом, но с другими товарами. На самом деле все значительно сложнее и чем больше я узнаю про интернет-магазины, тем больше понимаю, что в этом вопросе невозможно знать все, даже одна мелочь в интерфейсе может изменить прибыль магазина на тысячи долларов, а для больших игроков эта «мелочь» может стоить миллионы. Именно эта особенность электронной коммерции делает требования к сайтам и специалистам, которые их делают, безумно высокими. Чуть ниже я покажу много интересных цифр, которые докажут мое утверждение.

Ранее я уже писал статью про технологию проектирования больших сайтов, которая, кстати, имела очень большую популярность в русскоязычном и англоязычном сегменте Интернета: «Серьезное проектирование серьезных сайтов». Проектирование интернет-магазина хоть и имеет сходную последовательность действий, описанную мной в прошлой статье, но сама технология все таки сильно отличается, поэтому давайте рассмотрим это в мельчайших подробностях. По ходу статьи я буду ссылаться на свою прошлую, чтобы не повторяться, а в этой сделаю упор именно на различия.
Mind Map
Читать дальше →
Всего голосов 88: ↑73 и ↓15+58
Комментарии56

Глупая сортировка и некоторые другие, поумнее

Время на прочтение4 мин
Количество просмотров99K

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

Сегодня мы снова возьмём за основу stupid sort и внесём в неё другое маленькое, но существенное изменение. В результате получим совершенного другой эволюционный ряд сортировочных алгоритмов.

image: эволюция

Другое ответвление глупой сортировки
Всего голосов 69: ↑62 и ↓7+55
Комментарии23

Популярно об Amazon Web Services

Время на прочтение9 мин
Количество просмотров187K

Вступление


В этом докладе будут рассмотрены сервисы AWS, которые использует наша платформа и с которыми я знаком не по наслышке. Я работаю над проектом, который использует почти все возможные сервисы, а так же мы нацелены в ближайшем будущем охватить ещё больше возможностей, которые предоставляет нам Amazon.

Управление AWS осуществляется как с помощью веб интерфейса (AWS console), так и с помощью Command Line Tools. В консоли собраны все сервисы AWS, но функциональность настройки несколько обрезана. В командной строке же можно более гибко настроить тот или иной сервис, так же доступны закрытые в консоли функции.

Amazon Elastic Compute Cloud (EC2)


Описание

EC2 — это облачный сервис, предоставляющий виртуальные сервера (Amazon EC2 Instance), 2 вида хранилищ данных, а так же балансировщик нагрузки (Load Balancer).
Читать дальше →
Всего голосов 71: ↑66 и ↓5+61
Комментарии69

Балансировщик нагрузки для Amazon EC2 c автомасштабированием

Время на прочтение9 мин
Количество просмотров9.7K
Многие знают, что Amazon предоставляет возможность автоматически наращивать мощность вашего пула (увеличивать количество виртуальных серверов) в зависимости от нагрузки. Однако я не сумел найти в русскоязычном сегменте сети толкового описания практической реализации такой схемы. Рискну представить на суд общественности итог моих штудий на данную тему.

Итак, вводные данные. Наш сервер, судя по кривой посещаемости, в скором времени начнёт испытывать весьма суровые нагрузки, особенно в пиковые моменты. Для эффективной обработки трафика, а также во избежание отказов в обслуживании было решено использовать механизмы, предоставляемые Amazon, позволяющие в реальном времени запускать необходимое количество серверов. При этом, когда нагрузка спадает, получившийся пул должен «сбавлять обороты», автоматически уменьшаясь в размерах, и тем самым уменьшать финансовые затраты на проект.

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

Новый PhpStorm 7: за пределами языка

Время на прочтение5 мин
Количество просмотров57K
PhpStorm 7: за пределами языкаСпешим сообщить о выходе PhpStorm 7 — новой версии IDE для разработки на PHP от JetBrains.

PhpStorm 7 позволит вам не отставать от последних изменений в PHP и других языках для веб-разработки. В этом выпуске IDE интегрирован ряд современных инструментов и предусмотрено еще больше возможностей для расширения за счет поддержки основных PHP-фреймворков.

В 7-й версии вас ждут многие новые фичи, а также улучшения, коснувшиеся всех подсистем продукта.

Давайте посмотрим, что нового в PhpStorm 7!
Читать дальше →
Всего голосов 99: ↑97 и ↓2+95
Комментарии210

Распознавание речи от Яндекса. Под капотом у Yandex.SpeechKit

Время на прочтение10 мин
Количество просмотров147K
imageНа Yet another Conference 2013 мы представили разработчикам нашу новую библиотеку Yandex SpeechKit. Это публичный API для распознавания речи, который могут использовать разработчики под Android и iOS. Скачать SpeechKit, а также ознакомиться с документацией, можно здесь.

Yandex SpeechKit позволяет напрямую обращаться к тому бэкэнду, который успешно применяется в мобильных приложениях Яндекса. Мы достаточно долго развивали эту систему и сейчас правильно распознаем 94% слов в Навигаторе и Мобильных Картах, а также 84% слов в Мобильном Браузере. При этом на распознавание уходит чуть больше секунды. Это уже весьма достойное качество, и мы активно работаем над его улучшением.

image

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

Как устроено распознавание речи в Яндексе
Всего голосов 155: ↑149 и ↓6+143
Комментарии60

Несколько советов less-разработчику

Время на прочтение7 мин
Количество просмотров20K
Зачастую, создавая less-файлы (что, впрочем, касается и других препроцессоров css), мы гонимся за красотой и элегантностью less-кода, когда как частенько забываем про скомпилированный css-код. Иногда это влечет за собой критичные последствия, когда объем конечного css возрастает в раз, а код становится совершенно нечитаемым.
Я хочу писать правильный код!
Всего голосов 22: ↑16 и ↓6+10
Комментарии14

New Relic — полный мониторинг вашего RoR приложения

Время на прочтение2 мин
Количество просмотров41K
Перешел тут недавно на новый VDS для своих сайтов на хостинг webbynode.com. Очень все по-рельсовому сделано. Но сейчас речь не о них.

При регистрации предложили сделать аккаунт в приложении мониторинга RoR сайтов. Называются New Relic. Посмотрел презентации, и надо признаться, очень впечатлило. Как промо акция, там дают недельный gold-account, где можно воспользоваться всеми отчетами. Это, друзья мои, стоит внимания.

Дашборд для лайт версии
New Relic RPM - Overview (color_mondays)
Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии25

Нагрузочное тестирование с помощью Selenium

Время на прочтение10 мин
Количество просмотров63K

Введение


В это статье я расскажу о применении инструмента изначально предназначенного для функционального тестирования при тестировании нагрузочном web части системы электронного документооборота (СЭД).
Читать дальше →
Всего голосов 19: ↑14 и ↓5+9
Комментарии18

Знакомство с Go — пишем граббер веб страниц с многопоточностью и блудницами

Время на прочтение11 мин
Количество просмотров71K
Про язык Go от команды Google слышали, наверное, все. А вот пробовали далеко не все, и очень зря — общение с сусликами Go это море удовольствия, в чем я недавно убедился на собственном опыте.
Начинать знакомство с новым языком забавнее всего на жизненном примере, поэтому я, не долго думая, взял первую попавшуюся задачу “из жизни, самой первостепенной важности”:

Есть в интернете сайт http://vpustotu.ru на котором любой желающий может анонимно высказаться о наболевшем. Все высказывания (в дальнейшем буду называть их “цитатами”) сначала попадают в модерацию (аналог “бездны” башорга), где посетители могут оценить полет мысли и проголосовать за цитату в стиле “Ого!” или “Ерунда!”. На странице модерации (http://vpustotu.ru/moderation/) нам показывают случайную цитату, ссылки голосования и ссылку “Еще”, которая ведет на эту же страницу. Пощелкайте, это все очень просто.

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

В разделе модерации нет прямых ссылок на определенную цитату, единственный способ получить новую цитату – обновить страницу (или перейти по ссылке “еще”, что одно и тоже). Причем вполне возможны повторы, что легко обнаруживается после пары минут агрессивного кликинга.

Таким образом нужна программа, которая:

  • Должна последовательно обновлять и парсить (разбирать) страницу, записывая цитату.
  • Должна уметь отбрасывать дубликаты.


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

  • Должна останавливаться не только по команде, но и по достижению определенного числа “повторов”, например 500!
  • Так как это, скорее всего, займет некоторое время: необходимо уметь продолжить “с места на котором остановились” после закрытия.
  • Ну и раз уж все-таки это надолго – пусть делает свое грязное дело в несколько потоков. Хорошо-бы в целых 4 потока (или даже 5!).
  • И отчитывается об успехах в консоль каждые, скажем, 10 секунд.
  • А все эти параметры пускай принимает из аргументов командной строки!


Ну, вроде все понятно. Пусть программа ведет два файла – с цитатами и с некими хешами этих цитат, чтобы не повторяться, и перечитывает файл в начале каждого запуска. Ну а дальше в цикле разбирает страницу, выдергивая все новые и новые откровения, пока не получит ctrl-c по лбу или же не встретит определенное количество повторов. Задача ясна, план есть – поехали!
Читать дальше →
Всего голосов 78: ↑74 и ↓4+70
Комментарии30

Почему мы не тестируем. Практика проведения технического интервью

Время на прочтение5 мин
Количество просмотров52K
Я руковожу разработкой ПО уже достаточно много лет. За эти годы мне пришлось провести более тысячи интервью и посчастливилось захантить больше сотни классных программистов. Естественно, у меня сложилась определенная практика проведения технических собеседований, которой я собираюсь поделиться. Возможно, это окажется кому-то полезным.

Ставим задачу
Кого ищем? Ищем эффективных бойцов. Известно, что эффективность программистов со схожим опытом может отличаться в 10 раз (Ф. Брукс) или даже в 27 раз (Р. Гласс). Сразу, оговорюсь, эффективность это не только количество трупов врагов реализованных требований к ПО на единицу трудозатрат, но и умение результативно взаимодействовать с окружающими. Это важно, потому что по моим наблюдениям 50% проектных человеко-часов тратится на коммуникации. У нас это называется «синхронизация ментальных моделей».

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


Если на заводы людей нанимают за умения и обучают нужному отношению к делу, то в разработке ПО, следует поступать наоборот. Нанимать за нужное отношение к делу и учить необходимым умениям. Не следует брать людей, которые знают и умеют, а потом заниматься промыванием их мозгов и пытаться мотивировать их на эффективную работу. Их знания и умения ничего не будут стоить уже через полгода или год.
В идеале, конечно, следует стараться привлечь и знающих, и умеющих, и подходящих по своим жизненным позициям. Но если приходится выбирать, то правильнее выбрать жизненную позицию. Ищем тех, кто хочет развиться и расти, а затем, если необходимо, помогаем им получить требуемые технические навыки. Предлагаем не работу, а возможности.
Почему не тестируем
Всего голосов 151: ↑125 и ↓26+99
Комментарии220

Реализация возможности скачивания директорий пользователями сайта

Время на прочтение3 мин
Количество просмотров7.7K
Есть небольшой закрытый сайт, на котором выкладывается музыка альбомами и пользователи сайта имеют возможность эти альбомы слушать прямиком из браузера. На сервере альбомы хранятся в виде директорий, внутри которых хранятся сами музыкальные композиции, которые по требованию плеера отдаются nginx-ом.
Все было хорошо, пока пользователи не захотели скачивать понравившиеся альбомы целиком на свои компьютеры.

Под катом раскажу как мы реализовали это.
Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии15

Функциональное программирование на PHP

Время на прочтение6 мин
Количество просмотров52K
PHP всегда был простым, процедурным языком программирования, черпавшим свое вдохновение из C и Perl. В PHP 5 появилась правильная объектная модель, но о ней вы уже все знаете. А вот в PHP 5.3 появились замыкания (closure), которые были серьезно улучшены в версии 5.4 (подсказка: $this теперь доступен по умолчанию).
Читать дальше →
Всего голосов 59: ↑46 и ↓13+33
Комментарии82

Чеклист вопросов к проекту: старт, реализация, финал — и 10 советов «в полёт»

Время на прочтение4 мин
Количество просмотров49K

Проверьте свой проект: вы летите или думаете, что летите?

Ниже вопросы, которые стоит задавать себе на старте проекта и время от времени на его протяжении.

Контрольные вопросы на старте проекта:


  1. Что конкретно нужно сделать на текущем этапе? В целом? Есть ли чётко определённые цели каждого этапа? Как вы определите, что цели достигнуты? Соответствует ли текущий статус заявленным планам и целям или их необходимо корректировать?
  2. Реалистичны ли эти цели?
  3. Что случится, если цели не будут достигнуты в срок? Каков план действий?
  4. Насколько этот проект значим? Например, зависит ли от него место вашей компании на рынке?
  5. Какую выгоду вам, обществу и инвесторам принесёт проект?
  6. Достаточно ли хорошо спланирован проект? Все ли в вашей команде понимают пункты плана одинаково?
  7. Нужны ли внешние эксперты, например, юристы?
  8. Есть ли у команды опыт работы вместе? Кто будет координировать команду? Важно ли для проекта работать именно вместе — или возможен труд одиночек? Отвечает ли каждый член команды за работу всех остальных?
  9. Можно ли сократить размер команды? Если нет, то почему? Если да, то почему это не сделано?
  10. Как вы будете компенсировать форс-мажоры с персоналом, например, что случится, если ваш ведущий разработчик сломает руку?
Читать дальше →
Всего голосов 51: ↑45 и ↓6+39
Комментарии8

SLI — быстрое создание мультиязычности на сайте

Время на прочтение3 мин
Количество просмотров17K
Доброго времени суток Хабрачеловек! Публикую пост по просьбе программиста ganjar. Он помог нашему интернет магазину быстро сделать мультиязычность этим самым SLI, о котором пойдет речь. В комментах он ответит на все все вопросы.

SLI (Site Language Injection) — PHP скрипт для быстрого создания мультиязычности на сайте.

Наверное, каждому веб-разработчику хотя бы раз приходилось создавать мультиязычность на сайте. И каждый, кто этим занимался, прекрасно понимает сложности, а также количество времени, которое нужно “убить” на скучную работу по реализации задачи.

Перед тем как начать создавать свое решение перечитал множество статьей о том, как разные программисты решали проблему мультиязычности, и ни в одной из них не нашел универсального способа ее решения. Под каждый новый проект нужно было заново использовать функции “обертки” для текста и ссылок, создавать таблицы с переводами, модернизировать админку для локализации контента. Ни один из описанных вариантов мне не нравился, потому что даже на создание небольших сайтов уходило много времени. Вначале требовалось реализовать функционал для работы сохранения/выбора переведенных текстов, доработать админку для локализации, а потом весь текст и ссылки обернуть в функции для локализации контента.
Узнай что получилось
Всего голосов 23: ↑16 и ↓7+9
Комментарии8
12 ...
28

Информация

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