• Попытки начать обучение ребенка программированию с Minecraft pocket edition
    +1
    codecombat.com а вот такую штуку не смотрели?
  • io_submit: альтернатива epoll, о которой вы никогда не слышали
    0
    я б на вашем месте смотрел в сторону решения, которое предусматривает отсутствие NFS. мы выпилили NFS вообще везде примерно лет так 8 назад и ничуть не жалеем. сейчас сетевых FS и хранилищ разных много, слава богу.
  • io_submit: альтернатива epoll, о которой вы никогда не слышали
    0
    а оно там точно нужно? :) я б вынес такие вещи в какой-то отдельный сервис на чем-то вроде C или Go.
  • io_submit: альтернатива epoll, о которой вы никогда не слышали
    0
    Честно говоря, мы не используем это в Badoo — все узкие места в бизнес-логике, а не в обработке сетевых соединений, поэтому нам (пока?) вполне хватает libevent.
    А пост — перевод.
  • io_submit: альтернатива epoll, о которой вы никогда не слышали
    +1
    Думаю, этот вопрос лучше задать тому же Линусу или Эндрю Мортону. Судя по гит-репозиторию, AIO в ядре достаточно давно и многие патчи после 2005 года (т.е. после перехода на Git) были signed-off самим Линусом или Мортоном.

    На мой взгляд, это нормальная ситуация в больших opensource-проектах — да, есть части кода, которые не очень нравятся основателю. Тем не менее, они удовлетворяют нужды пользователей, не ломают другие части проекта и работают так, как задумано.
  • SoftMocks: наша замена runkit для PHP 7
    0
    Нет, PHP 7.1 пока тестируется.
    Задача не супер-приоритетная, т.к. мы не ожидаем двухкратного прироста производительности, поэтому переход планируется где-то в течение месяца.
  • Спроси backend-разработчиков Badoo. Часть 1. Платформа
    +2
    Артём немного перепутал, у нас в модуле для NGINX для операций с изображениями используется Intel Performance Primitives, а не Leptonica. У IPP сравнительно более сложный API, но она объективно работает быстрее той же лептоники, которую мы используем для аналогичных операций с изображениями в PHP.
    Насколько быстрее — точно не помню, но процентов 25 было, если я не ошибаюсь.

    Ранее у нас для всех операций с изображениями в PHP использовался ImageMagick. У него есть несколько безусловных плюсов: он тотально всеяден, там хорошая реализация bicubic interpolation, которая в итоге даёт очень приятный результат при ресайзе фотографий. Кроме того, ImageMagick — это такой Фотошоп под Линукс, там есть всё, что можно. Но у него есть один серьёзный минус — он ну очень медленный.

    Изначально нам нужно было решить проблему — ресайз фото медленный. На тот момент (примерно 7 лет назад), Лептоника точно так же не очень была известна =), но с задачей ресайза справлялась примерно в два раза быстрее.
    В процессе, как всегда, задача немного разрослась и теперь там не только ресайз, но и разнообразные операции над изображениями, но в Лептоника написана на понятном plain C и её патчить гораздо проще и приятнее, чем ImageMagick. Сейчас, возможно, есть какие-то другие библиотеки с аналогичным функционалом, но переходить на них будет уже сложнее из-за всяких кастомных вещей, которые мы добавили в Лептонику. В основном это функционал для генерации капчи, которая у нас выглядит примерно так:
    image

  • Badoo перешли на PHP7 и сэкономили $1M
    0
    Как минимум в одном месте в патче не до конца исправлены типы, вот фикс:
    https://gist.github.com/391f7728dddeecc8cc34

    А вообще, это всё дебаг по телефону. Мне надо видеть, иметь возможность запустить это всё.
    Ну, и совсем неясно почему это всё обсуждается в этом топике =)
  • Badoo перешли на PHP7 и сэкономили $1M
    +1
    Reproduce case внятный есть? Если есть — пришли мне, плз.
  • Badoo перешли на PHP7 и сэкономили $1M
    0
    Вижу там бранч php7: https://github.com/phpredis/phpredis/tree/php7
    Не пробовали его?
  • Badoo перешли на PHP7 и сэкономили $1M
    +2
    Есть backtrace — делайте баг-репорт, только предварительно поищите репорт с таким же трэйсом, чтоб не плодить дубли.
    Ждать или делать — ваш выбор.
  • Badoo перешли на PHP7 и сэкономили $1M
    +2
    Во-первых, очевидно, что никому это не надо настолько сильно, чтоб взяться за разработку.
    Во-вторых, почему вы решили, что это какая-то серебряная пуля?
    В Zend заимплементили JIT, поэкспериментировали и убрали пока в сторону:
    http://marc.info/?l=php-internals&m=142503908926686
    TL;DR: первое выполнение скрипта — вплоть до нескольких минут, второе — выигрыша особого не даёт.
  • Badoo перешли на PHP7 и сэкономили $1M
    +8
    Скриншот лога не очень помогает. Как минимум, нужен backtrace.
    Как его получить — написано тут: https://bugs.php.net/bugs-generating-backtrace.php
    Я понимаю, что у вас времени нет, но если просто жаловаться на Хабре, то ничего не изменится.
  • Badoo перешли на PHP7 и сэкономили $1M
    +3
    Зачем мечтать? Просто сделайте.
  • Badoo перешли на PHP7 и сэкономили $1M
    +4
    FastCGI — это протокол. Не совсем понятно причём тут stateful/stateless реализации движка.
    Конкретно такого поведения никогда не будет, я уверен.
    Как минимум потому, что уже есть методы, которые позволяют добиться такого же результата без переписывания всего с нуля. Просто храните это значение где-то. В той же shared memory, например.
  • Badoo перешли на PHP7 и сэкономили $1M
    +2
    Подавляющее большинство расширений уже есть.
    Вам каких не хватает?
  • Badoo перешли на PHP7 и сэкономили $1M
    +2
    Дайте, пожалуйста, определение настоящего FastCGI.
  • Badoo перешли на PHP7 и сэкономили $1M
    +4
    Это один из кластеров. До него несколько других работало уже три дня.
    Ну и накатили утром, так чтоб весь день держать руку на пульсе.
  • Устройство WebP
    +1
    Мы тестировали (тестируем) WebP на продакшене, по моим данным «в среднем по больнице» картинки WebP на 50% меньше по объёму, чем JPEG при неотличимом на глаз качестве. Для мобильных пользователей социальных сайтов, где картинки составляют основную часть трафика — это серьёзное улучшение.
    Единственная проблема — исходное изображение в JPEG, поэтому за трафик приходится платить CPU при перекодировании (ну или хранить и JPEG, и WebP рядом).
  • Geo индекс для поиска новых знакомых или революционное открытие ученых из Австрии
    +1
    А у вас какой язык интерфейса?
  • Geo индекс для поиска новых знакомых или революционное открытие ученых из Австрии
    –4
    Почему-то напомнило:
    image
  • Amazon начала съёмки сериала по книге Филипа Дика «Человек в высоком замке»
    +1
    Flow my tears, the policeman said — тоже альтернативная реальность и с неплохой концовкой.
    Эта книга слабая, имо, но из-за канвы сюжета (вау! США проиграли войну!) очень популярна «у них», судя по всему.
    А вот Убик я б экранизировать не стал — зрителям тогда придётся принимать что-то сильнодействующее перед просмотром, чтоб быть «на одной волне» с автором.
  • К глобальной куче без пробок. Исследуем менеджеры памяти
    +1
    Безусловно, стоит посмотреть Jemalloc. На моём опыте, он более производителен, чем Hoard.
    Кроме того, есть ещё некий lockless allocator. Сам пока не пробовал, но их бенчмаркинг утверждают, что он даже лучше Jemalloc: locklessinc.com/
  • Ловец молний
    +4
    Живу на 17м этаже, могу поставить без проблем.
    WiFi, питание, все есть.
    Про крышу поспрашиваю, но сомневаюсь.
  • Мониторинг статистики Django проектов с помощью Pinba на Debian GNU/Linux
    0
    Ильяс, а я правильно понял, что вы перекладываете из сырых данных в свои таблицы и потом строите по этому графики?
    А можно узнать зачем?

    Предполагалось, что существующие виды отчетов как раз вот такие случаи все должны решать.
    Если не решают, то либо вы что-то не так делаете, либо вам не хватает какого-то функционала. Вопрос — какого?
    Кстати, недавно добавились еще медиана, произвольные перцентили по времени запроса + т.н. «гистограмма» частот (т.е. можно посмотреть «внутрь» среднего числа и построить графики распределения времени запроса, например).
  • Мониторинг статистики Django проектов с помощью Pinba на Debian GNU/Linux
    0
    uWSGI Stats Server — это статистика одного сервера, которую он сам отдаёт.
    Pinba изначально предназначалась для автоматического сбора и агрегации данных с множества серверов.
    Плюс в неё с самого начала закладывались таймеры, который позволяют засекать время определённых участков кода и строить агрегированные отчеты уже по операциям, а не по запросам.

    >При этом не используется база данных и не добавляется лишний код в обработку каждого реквеста.
    Если не использовать таймеры, то ничего не добавляется, вся статистика собирается и отсылается автоматом (в PHP. Хотя и в других языках тоже наверняка).
  • Мониторинг статистики Django проектов с помощью Pinba на Debian GNU/Linux
    0
    Судя по всему, muxx как раз один из разработчиков.
    Вопрос к нему.
  • Мониторинг статистики Django проектов с помощью Pinba на Debian GNU/Linux
    +1
    О, не знал про такой интерфейс. Очень круто выглядит.
    Спасибо, добавил ссылку на pinba.org.
  • Как мы мигрировали миллионные страны за рабочий день
    +8
    История такая:
    Набор патчей с подобным функционалом начал делать Владимир Вологжанин еще в Мамбе, хотя идея была Андрея.
    В какой-то момент Андрей это всё сам переписал и выложил под GPL.
    Поскольку GPL несовместима с PHP License (верней наоборот, но не суть), я уговорил Андрея поменять на что-то более permissive, немного подправил и патч предложил в PHP Core.
    Патч приняли и теперь оно живёт своей жизнью.

    Все вышеупомянутые люди (включая меня) работают в Баду и сейчас, если вам интересно.
  • «Gerrit Code Review»: краткое руководство с картинками
    0
    Я такого не помню, к сожалению.
    Кстати, с Геррита мы уже ушли на самописное решение для review + интеграцию с Jira.
  • Pinba — мониторим php в реальном времени
    0
    Исходники нужно сконфигурировать/собрать с такими же опциями, что и бинарник, включая CFLAGS/CXXFLAGS.
    Судя по опыту людей, они всё-таки какие-то флаги добавляют, которые в документации отсутствуют:
    groups.google.com/d/msg/pinba-engine-ru/mQDa18eup-c/8NUPyWoITpoJ

    Поэтому, как возможно решение, можно собрать самому и то, и другое из исходников.
  • Judy-массивы в PHP
    +1
    >Есть N множеств чисел, в каждом множестве не более 100тыс элементов,
    >и нужно понять, входит ли данное число в n-ное множество?

    Да, но еще надо проходить по этому множеству от начала до конца и чтобы это множество занимало минимум памяти.
    Решение меня интересует не на PHP, конечно, а на С — мы же ищем более эффективный алгоритм, чем Judy.
  • Judy-массивы в PHP
    +3
    Во-первых, я не совсем понимаю ваше отношение к патентованным алгоритмам.
    То есть, да, софтварные патенты — зло и всё такое, я совершенно согласен. Но они сть и это факт. В данном случае человек запатентовал алгоритм и намеренно выложил его имплементацию в общий доступ, т.е. фактически защитил нас от патентных троллей. Не вижу в этом ничего плохого.

    Во-вторых, расскажите плз про более эффективные алгоритмы, я совсем не против еще более улучшить и демона, и скрипты.
    Задача такая: хранить много не очень больших (макс. десятки тысяч элементов) списков интов, по которым надо быстро проходить и по которым должны быть быстрые лукапы. Ну, и памяти они должны занимать минимум, конечно.
    На данный момент это всё реализовано на Judy1.

    В-третьих, да, вещи довольно очевидные, но я и не претендую на открытие Америки. С другой стороны, я уверен, что большинство про Judy не слышали и с удовольствием посмотрят на красивые диаграммки и узнают про новый инструмент.
  • Judy-массивы в PHP
    0
  • Judy-массивы в PHP
    +1
    Все аналогично штатным массивам: $judy[] = $value; $value = $judy[0];
    Только здесь жестко фиксирован тип индексов и значения элементов ограничены соотв-м типом.
  • Judy-массивы в PHP
    +1
    В айпаде патентованный прямоугольник не смущает? :)
    А LGPL или нет — разница большая. Авторы, конечно, могут сменить лицензию на свой код, но не задним числом. А значит, этот код всегда будет публично доступен под LGPL.
  • Judy-массивы в PHP
    +2
    В таком случае, вероятно, имеет смысл завести узкоспециализированного демона, который будет хранить именно Judy-массивы, а не инты в виде строк. Конечно, для общения с демоном так или иначе понадобится какой-то механизм сериализации для передачи данных по сети. У нас в качестве стандарта принято использовать Google Protocol Buffers. Но это не сериализация объекта, это протокол общения с демоном.
  • Judy-массивы в PHP
    +3
    Будет надо — сделаем патч. Но пока я себе слабо представляю для чего нужна сериализация массива на миллионы элементов.
  • Judy-массивы в PHP
    +1
    Чуть выше Sannis ответил.
  • Judy-массивы в PHP
    +2
    По-настоящему тяжелые вещи мы выносим в демоны на C/C++.
    Здесь как раз речь не о вычислениях, а о больших массивах данных, причем эти массивы грузятся в результате в один из демонов.