Архив категории ‘Без категории’

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

Всем известно, что у memcached есть текстовый протокол. Можно на tcp порт memcached (11211 по умолчанию) зайти телнетом и написать парочку команд. И есть в протоколе команда stats cachedump, которая не документирована, но которой пользуется утилита memcached-tool, входящая в поставку memcached.

Usage: memcached-tool <host[:port]> [mode]
(далее…)

В продолжении разговора о патче в php хочется еще рассказать о наших небольших патчах в pecl-memcached. Это pecl модуль, который реализует интерфейс libmemcached в php и добавляет handler сессий для хранения их в memcached.

Первый патч довольно простой, он добавляет нормальные сообщения об ошибках в код handler-а сессий. До этого патча невозможно было понять, то-ли сессии в мемкеше нет, то-ли отвалилась коннекция от мемкеша, то-ли что-то еще произошло. Во всех случаях код возвращал FAILURE и было непонятно, что на самом деле произошло. Аналогично, при сохранении сессии старый код просто увеличивал количество неудачных попыток и при достижении максимума выкидывал сервер из пула по непонятным снаружи причинам.
(далее…)

Всегда приятно начинать новый проект. Простые классы, четкие границы, ясная архитектура — все логично и красиво. Новая функциональность добавляется легко и быстро.

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

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

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

(далее…)

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

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

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

Естественный вопрос, который возникает — как разделить набор функций системы на обособленные куски, пригодные для вынесения в подсистемы и до какого размера следует производить дробление?

(далее…)

16 марта вышли новые версии php — 7.0.17 и 7.1.3. Это приятная новость для многих php разработчиков, но для нас она приятна еще и тем, что туда вошел наш патч, который чинит keep-alive соединения в php-fpm sapi.

Php-fpm появился сначала как отдельный патч для php 5.2, добавляющий менеджер fastcgi процессов, который позволяет организовать отдельные пулы, следит за временами выполнений рабочих процессов и много другое полезное. В ветке php 5.4 его приняли как официальный sapi и мы избавились от необходимости накладывать этот патч всякий раз, как выходит новая версия php с исправлением ошибок.

(далее…)

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

В первую очередь необходимо определиться с терминами. Если мы говорим о физическом расположении сотрудников и степени их вовлеченности в проект, возникают две основные дихотомии: «Договор-Штат» и «Офис-Удаленная работа».

remote-dichotomy

(далее…)

В сегодняшней статье речь пойдет о фреймворке Angular2. Мы поговорим об недочетах Angular1, расскажем об основных изменениях в новой версии фреймворка и, что на наш взгляд самое интересное, поделимся впечатлениями от использования новой версии Angular. (далее…)

Платформа для паблишеров

Приступая к разработке новой системы мы стараемся изучить существующие системы в данном сегменте. Планируя разработку системы управления видеорекламой мы, естественно, не могли пройти мимо такого заметного игрока на рынке решений для видео-рекламы, как компания Videoplaza. Компания Videoplaza основана в 2007 году. Если определить одним предложением, то Videoplaza — это европейский поставщик решений для адсервинга видео. Совсем недавно ее купила американская компания Ooyala, которая, в свою очередь, была куплена австралийским телекоммуникационным гигантом Telstra. Ooyala – это популярная платформа для дистрибуции видеоконтента, клиентами которой являются крупные издатели, поэтому сделка по покупке Videoplaza выглядит достаточно логично: Ooyala купила хорошее решение для монетизации этого контента, в том числе программатически, учитывая последние наработки Videoplaza в этом направлении (Konnect). Изначально продукт Videoplaza представлял собой исключительно рекламный сервер + систему управления рекламными кампаниями, то есть был такой классической технологией для издателя, позволяющей откручивать видео-кампании, основанные на прямых продажах. С самого начала акцент делался именно на видео-рекламу, как наиболее перспективный и быстрорастущий сегмент рынка. В данном обзоре мы будем рассматривать исключительно систему Karbon – основной продукт компании, поэтому для краткости мы будем называть ее Видеоплазой, а не система Карбон компании Videoplaza. (далее…)

Мы продолжаем обзор AdTech систем, который мы начали с анализа TheTradeDesk, одного из лидеров на рынке DSP-систем. В данном посте мы анализируем  Cappture, молодую и  динамично развивающуюся систему.

Вот как они представляют себя на своей странице:

В 2012 году мы запустили решение для динамических креативов и Media Trading Desk, а затем  превратили ее в решение White Label для агентств. Совсем недавно мы реализовали компоненту ретаргетинга в электронной почте и франчайзинговую версию системы.

Видимо, в данном случае «франчайзинговая версия» и решение white label для агентств – синонимы. Потому что иначе какой смысл отдавать (и брать) SAAS-платформу по франчайзинговой модели?

Система предназначена как для агентств, так и для прямых рекламодателей. Ее можно назвать RTB Trading Desk, т.е. надстройка над RTB инфраструктурой. Насколько мы понимаем, она не является полноценной DSP, то есть там отсутствуют собственный бидер и предиктор. Хотя все это быстро меняется, сегодня нет, а завтра – уже добавили.

Поскольку мы уже проанализировали один DSP   с похожим интерфейсом, мы сначала остановимся на тех отличиях и «фишках» Cappture, которые отсутствуют у конкурентов.

(далее…)

Нам постоянно приходится изучать аналоги тех систем, которые мы разрабатываем, если они, конечно, существуют. Обычно мы не приступаем к разработке, не «прокрутив» 2-3 таких системы, что называется, «от и до». Одна из таких систем – TheTradeDesk (TTD), очень мощная и проработанная система DSP, которая существует с 2009 года и входит в первую десятку сервисов на рынке DSP.

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

(далее…)