Как стать автором
Обновить
1
0
zelenoff @zelenoff

Team Lead

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

Почему абсолютные оценки задач не работают и как тогда планировать?

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

Как я люблю эти оценки разработчиков: «нууу…эта задача на полчаса». Через два дня: 

— Ну че, когда будет готово? 
— Да тут уперлись в интеграцию и еще нужно кое-что согласовать с аналитиком, думаю за сегодня закрою...

Еще через день:
— Еще делаю, вчера не успел, думаю завтра будет готово. 

Занавес. И проблема здесь не в разработчиках. Просто абсолютные оценки НЕ работают.

Читать далее
Всего голосов 18: ↑13 и ↓5+8
Комментарии17

Как мы стали создавать карточки товаров автоматически

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

В своей прошлой статье я рассказал, как мы научились автоматически сопоставлять товары по наименованиям.То есть, понимать, например, что
Гарнитура A4Tech Bloody G501 черный
и
A4 G501, черно(красные) {Наушники с микрофоном, 2.2м}

— это одно и то же. Это дало возможность автоматизировать все, что связано с ценами и наличием. В этой статье я расскажу, как мы пошли дальше и автоматизировали работу с характеристиками и изображениями товаров.
Читать дальше →
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Aсинхронный PHP

Время на прочтение14 мин
Количество просмотров47K
Десять лет назад у нас был классический LAMP-стек: Linux, Apache, MySQL, и PHP, который работал в медленном режиме mod_php. Мир менялся, а с ним и важность скорости. Появился PHP-FPM, который позволил значительно увеличить производительность решений на PHP, а не срочно переписывать на чем-то побыстрее.

Параллельно велась разработка библиотеки ReactPHP с применением концепции Event Loop для обработки сигналов от ОС и представления результатов для асинхронных операций. Развитие идеи ReactPHP — AMPHP. Эта библиотека использует тот же Event Loop, но поддерживает корутины, в отличие от ReactPHP. Они позволяют писать асинхронный код, который выглядит как синхронный. Возможно, это самый актуальный фреймворк для разработки асинхронных приложений на PHP.



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

Об этом и поговорит Антон Шабовта (zloyusr) — разработчик в компании Onliner. Опыт больше 10 лет: начинал с десктопных приложений на С/С++, а потом перешел в веб-разработку на PHP. «Домашние» проекты пишет на C# и Python 3, а в PHP экспериментирует с DDD, CQRS, Event Sourcing, Async Multitasking.
Всего голосов 60: ↑60 и ↓0+60
Комментарии104

Катаемся на Xiaomi Vacuum Cleaner

Время на прочтение4 мин
Количество просмотров42K
Вот и пришли новогодние праздники, а с ними и куча свободного времени, да еще и умный пылесос угодил ко мне в руки. Как только я увидел в приложении MiHome ручное управление, я сразу понял, что хочу сделать: будем управлять пылесосом с помощью геймпада Dualshock v4!
Всего голосов 43: ↑42 и ↓1+41
Комментарии14

Бизнес, я люблю тебя

Время на прочтение11 мин
Количество просмотров40K
Я хотела бы начать этот пост очень пафосно. Например, так: «Я работаю в бизнесе уже 10 лет, получила железное сердце и обросла панцирем». Или так: «Да-да, Хабр, я работник коммерческой службы: когда-то аналитик, потом продажник, потом маркетолог. Я тот самый, кого вы все не любите». В конце концов, именно так должен выглядеть пост первого января. Но нет. Никакого пафоса и романтики. Работаю в коммерции ИТ-компаний некруглые 11,5 лет. Была всем: разработчиком, проджектом, маркетологом, продажником, внедренцем, редактором, ИТ-консультантом. До этого была на госслужбе и преподавала. И я сегодня, несмотря на сто доводов против, могу сказать: «Бизнес, я люблю тебя!» Ну понятно, что развитие этой мысли под катом.


Читать дальше →
Всего голосов 103: ↑95 и ↓8+87
Комментарии67

Проектируем микросервисную архитектуру с учётом сбоев

Время на прочтение10 мин
Количество просмотров17K
Перевод статьи Designing a Microservices Architecture for Failure.

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

В этой статье представлены самые распространённые методики и архитектурные шаблоны для построения и оперирования высокодоступной микросервисной системой.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии0

Из закрытой касты в Servant Leadership: эволюция тимлида в Booking.com

Время на прочтение21 мин
Количество просмотров13K
На пути от традиционной иерархии developer – teamlead – CTO до загадочного Servant Leadership в booking.com проходили и автономию. Отличная идея, дать людям свободу, возможность развиваться, расти, самим достигать цели, должна была замотивировать сотрудников.

Георгий Могелашвили (glamcoder) на TeamLead Conf рассказал обо всех этапах, и в том числе о том, что нельзя просто так объявить автономию, а тимлидов отправить на мороз. Компания тестировала организационные изменения, проводила тренинги, и автономные команды таки сработали. Но только вовлеченность людей не выросла, а местами даже упала. Тогда процесс реорганизации начался с новой силой и тимлид вернулся, но уже с другой ролью.

Под катом подробности и современное устройство менеджмента в компании с 1500 сотрудников в IT.


О спикере: Георгий Могелашвили больше 10 лет в IT, последние четыре года работает в Booking.com в Амстердаме, 2 из них — тимлид.

Затронем три основные темы:

  • Процесс эволюции (через что мы прошли за то время, пока я был в компании).
  • Автономность — хорошо это или плохо, и почему у нас это было.
  • Концепция Servant Leadership.
Всего голосов 40: ↑39 и ↓1+38
Комментарии14

Не защищайте сайт от скрапинга: сопротивление бесполезно

Время на прочтение9 мин
Количество просмотров36K
За последнее десятилетие я реализовал много проектов, связанных с агрегацией и анализом контента. Часто агрегация включает в себя снятие данных со сторонних сайтов, то есть скрапинг. Хотя я стараюсь избегать этого термина. Он превратился в некий ярлык, с которым связано много заблуждений. Основное заблуждение в том, что веб-скрапинг можно заблокировать с помощью X, Y, Z.

tl; dr; Нельзя.

С точки зрения бизнеса


На прошлой неделе я встретился с высокопоставленным руководителем из отрасли, в которой развиваю свой бизнес GO2CINEMA. Без сомнения, это один из самых умных и знающих людей в киноиндустрии.

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

Я посоветовался с этим человеком насчёт поиска инвестиций. Он предложил свою помощь и попросил подготовить анализ всех способов блокировки моего текущего бизнеса, включая скрапинг контента (с технической и юридической точек зрения). Я подготовил необходимые документы и поделился с ним перед нашей встречей. Его реакция была примерно такой:

Да, тщательное исследование. Но всё-таки есть способы, чтобы тебя заблокировать. *ухмыляется*

Нет, парень, нет таких способов.
Читать дальше →
Всего голосов 39: ↑36 и ↓3+33
Комментарии206

Юзабилити карточки товара. Сценарий выгодный для бизнеса

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

О чём пойдёт разговор?


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

Каков план действий?


Внешний вид компонентов не меняем, т.е. остаемся в рамках текущего UI. Но можно воздействовать на типографику: размер и плотность текста менять разрешается. Будем использовать Axure для создания максимально реальной картины. То есть в арсенале будут все доступные приемы интерактивного прототипирования: интерфейсная анимация, смена состояний, смена текста внутри меток, динамическое сокрытие/показ объектов и т.п. Каждый прием будет рассмотрен отдельно ниже. Разрешается немного манипулировать, чтобы призвать пользователя к нужным нам действиям, которые требуются бизнесу.
Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии9

Laravel — экосистема, а не просто PHP-фреймворк

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


Данная статья предназначена для начинающих веб-разработчиков, а также тех, кто хочет понять, для чего стоит изучить PHP-фреймворк Laravel и какую экосистему он нам предлагает. Статья написана на момент актуальности Laravel версии 5.4, в августе 2017 выйдет релиз Laravel 5.5, который предоставляет ещё больше возможностей.

Содержание:

Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии104

Как мы ловим Deadlock`и на PostgreSQL и чиним их

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

Предисловие


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

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


Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии29

GitLab CI: ветки больше не нужны

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


Неделя GitLab CI на Хабре! В 2015 году мы уже писали о встроенной в GitLab системе Continuous Integration. GitLab часто ругают за предательство идеалов UNIX way и интеграцию слишком большого количества функций в одно приложение. Зато насколько удобно пользоваться этими функциями! За те полтора года, что прошли с момента нашей публикации, ребята сделали «Environments», добавили возможность сделать кнопку «раскатать на прод» и множество других улучшений. Под катом я расскажу о накопленном опыте, как небольшим командам автоматически собирать и выкладывать на прод/стейдж не только скрипты Voximplant для телефонии, но и другие проекты — сайты и сервисы.
Всего голосов 55: ↑54 и ↓1+53
Комментарии21

Вещи, которые мне надо было знать прежде, чем создавать систему с очередью

Время на прочтение5 мин
Количество просмотров27K
Фото очереди в мавзолей Мао Цзэдуна —  BrokenSphere / Wikimedia Commons

В проекте, над которым я сейчас работаю, применяется распределённая система обработки данных: сначала несколько десятков машин одновременно производят некоторые сообщения, затем эти сообщения отправляются в очередь, из очереди три потока извлекают сообщения и после финальной обработки выкладывают данные в базу Redis. При этом имеется требование: от «зарождения» события в машине, производящей сообщение, до выкладывания обработанных данных в базу должно проходить не более четырёх секунд в 90% случаев.

В какой-то момент стало очевидно, что мы это требование не выполняем, несмотря на затрачиваемые усилия. Несколько произведённых измерений и маленький экскурс в теорию очередей привели меня к выводам, которые я бы хотел донести до себя самого несколько месяцев назад, когда проект только начинался. Отправить письмо в прошлое я не могу, но могу написать заметку, которая, возможно, избавит от неприятностей тех, кто только задумывается над тем, чтобы применять очереди в собственной системе.
Читать дальше →
Всего голосов 46: ↑44 и ↓2+42
Комментарии36

Высоконагруженные сайты и приложения на PHP / Symfony

Время на прочтение7 мин
Количество просмотров40K
Каждый разработчик, который работает на той или иной технологии, постоянно читает о ней что-то новенькое и углубляет свои знания. И мы не исключение. PHP довольно старый и популярный язык, на котором есть много разных фреимворков. Один из самых популярных и серьезных – это Symfony и так уж исторически получилось, что мы на нем пишем. По этому фреимфорку в рунете не так много информации, как хотелось бы, мы часто читаем разные статьи, обзоры и интервью на английском языке, чтобы быть в курсе последних событий. Эта статья – обзор больших сайтов, которые сделаны на PHP / Symfony с уникальной для рунета информацией, а также описание некоторых технологий, которые применяются в связке с ними. И да, мы знаем, что PHP «уже не торт» и что использовать его уже не модно, однако эта технология имеет большую долю рынка, много наработок и отличную документацию, поэтому мы её используем наравне с Python, Ruby, Java и другими.

Таблица известных проектов (на основе данных http://builtwith.com/), кликабельно:
Читать дальше →
Всего голосов 45: ↑34 и ↓11+23
Комментарии25

Как выбрать тот самый PHP-фреймворк. Сравнительное тестирование

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


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

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

Но какой же всё-таки лучше, быстрее и производительнее?

Разработчики постоянно проводят сравнение фреймворков, чтобы прояснить для себя этот вопрос. Например, в статье Lukasz Kujawa приведено сравнение PHP фреймворков. Одно «но» — статья за 2013 год. А ведь время идёт… Поэтому мы решили провести своё, актуальное сравнение фреймворков.

Для оценки производительности был использован PHP Framework Benchmark. Он предлагает для сравнения множество фреймворков (не только указанных выше), но автор не спешит добавлять в репозиторий новые версии проектов, что, конечно же, печально, хотя и не смертельно. При желании добавить новую версию не сложно. 


Одной из основных целей данной статьи также является попытка практическим путем определить улучшения в производительности и эффективности новых версий PHP. Поэтому тестирование было проведено на РНР 5.6/7.0/7.1
Читать дальше →
Всего голосов 34: ↑22 и ↓12+10
Комментарии55

Иерархия исключений в современном PHP-приложении

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

Задача публикации: доступно изложить способ организации иерархии исключений и их обработки в приложении. Без привязки к фреймворкам и конкретной архитектуре. Описываемый способ является де-факто стандартом в сообществе: он используется во многих серьёзных библиотеках и фреймворках. В том числе Zend, Symfony. Не смотря на его логичность и универсальность, формального описания предлагаемого подхода на русском языке я не нашёл. После неоднократного устного изложения концепции коллегам, родилась мысль оформить её в виде публикации на Хабрахабр.


В языке PHP, начиная с 5-ой версии, доступен механизм исключений. В актуальной, 7-ой, версии этот механизм был улучшен и переработан с целью единнобразной обработки разных ошибок при помощи конструкции try{} catch...


В стандартной библиотеке (SPL) PHP предоставляет готовый набор базовых классов и интерфейсов для исключений. В 7-ой версии этот набор был расширен интерфейсом Throwable. Вот диаграмма всех имеющихся в версии 7 типов (изображение — ссылка):


Диаграмма типов исключения в PHP7

Читать дальше →
Всего голосов 8: ↑6 и ↓2+4
Комментарии25

Удачная модель ветвления для Git

Время на прочтение10 мин
Количество просмотров977K
Перевод статьи Vincent Driessen: A successful Git branching model

В этой статье я представляю модель разработки, которую использую для всех моих проектов (как рабочих, так и частных) уже в течение года, и которая показала себя с хорошей стороны. Я давно собирался написать о ней, но до сих пор не находил свободного времени. Не буду рассказывать обо всех деталях проекта, коснусь лишь стратегии ветвления и управления релизами.



В качестве инструмента управления версиями всего исходного кода она использует Git.

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

GitLab Flow

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

Это перевод достаточно важной статьи про GitLab Flow, альтернативе Git flow и GitHub flow. Статья была написана в 2014, так что скриншоты успели устареть. Тем не менее сама статья более чем актуальна:




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


  • Не описан точным образом весь рабочий процесс,
  • Вносится ненужная сложность,
  • Нет связи с трекером задач (issue tracker).

Мы хотим представить вам GitLab flow — чётко определённый набор практик, решающий эти проблемы. Он объединяет в одну систему:



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

10 способов достижения HighLoad'а и BigData на ровном месте

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


Илья Космодемьянский ( hydrobiont )


Есть типичные ошибки работы с хранилищем, и эти ошибки, не то чтобы я их выдумываю специально, но поскольку мы много работаем с удаленной поддержкой баз данных, мы их просто коллекционируем. Зачастую одни и те же от клиентов. И составляем своеобразный рейтинг того, что наколлекционировали. Об этих вещах я и буду сегодня рассказывать.
Всего голосов 29: ↑28 и ↓1+27
Комментарии6

Google I/O 2017: заметки с места событий от Android-разработчика

Время на прочтение3 мин
Количество просмотров4.5K
Ежегодная конференция Google I/O 2017 начнется уже 17 мая. Специально для хабровчан мы будем публиковать с места событий заметки руководителя Android-разработки Superjob Валентина Телегина. Валентин уже третий раз едет на Google I/O. Помимо keynote он посетит все секции по Android, кроме тех, которые будут посвящены автомобильной и «носимой» электронике.

В комментариях можно писать, о чем вы бы хотели услышать. Постараемся с помощью Валентина оперативно собрать ответы.

Пока мы задали самые общие вопросы о Google I/O 2017 (Прямая речьВалентин Телегин, руководитель Android-разработки Superjob):
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии0
1
23 ...

Информация

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