• Встреча разработчиков про Sphinx, 18 июня (суббота)

      image
      С прошлого митапа про Sphinx прошло уже больше года, так что самое время собраться снова. 18 июня состоится второй SphinxSearch meetup, территориально снова в Avito, регистрируйтесь и присоединяйтесь! Что-то интересное обещают порассказывать Avito, Ozon.ru и Нетология, ну и я тоже буду присутствовать, участвовать и состоять. Опять же пицца, кофе, печеньки. Под катом чуть подробнее о докладчиках и программе. Ну — и куда в точности приходить тоже там!!!
      Читать дальше →
    • А вот про Sphinx 3.0

        Вот вы там все сидите и ничего не знаете, а мы, тем временем, пилим помаленьку мега-релиз поискового движка Sphinx за номером 3.0. Грядет ряд больших переделок. Часть из них, как полагается, ещё даже как следует не начата. Однако большая часть уже скорее готова, чем нет. А отдельно взятые изменения даже протекли в публичную ветку 2.3. Так что, пожалуй, настало время вкратце начинать рассказывать, чего ожидать в светлом будущем: надеюсь, не столь отдалённом. Кому интересно почитать, все под кат; кому послушать, приходите на meetup в эту субботу. Если совсем вкратце, то: прощай, концепция дополняющего основную базу движка; привет, хранилище документов, тотальный RT, репликация, REST и ряд других известных ключевых слов.
        Читать дальше →
      • Этот наш мир

        • Перевод
        Иногда я проверяю свою рабочую почту и вижу там сообщение «Анонс доклада: Вершиннная эллиптическая криптография в N-сторонних Бананотряховых[1] пространствах». Я смотрю аннотацию и там говорится что-нибудь типа «Хорошо известно, что 5-сторонний обмен секретами нелегален со времён Протестантской Реформации [Лютер1517]. Однако, используя новые результаты в области исполняющихся за полиномиальное время Бананотряховых проекций, мы показываем, как множество корреспондентов, притворяющихся друзьями (но являющихся противниками)[2], могут послать друг другу вплоть до 5 ехидных язвительных замечаний, устойчивых к атакам с использованием выбранным по Бананотряху открытого текста сообщения». Такое чувство, что началась середина трагичной, но вряд ли интересной оперы. По какой именно причине нас только что засунули в эллиптический мир? Кто именно такой этот Бананотрях, и почему нам не пофигу, какой он там открытый текст выберет? Если потому, что он похитил наши семьи, можно мне хотя бы обменяться сообщениями с похищенной роднёй, и если да, обязательно ли сообщения должны быть ехидными и язвительными?
        Читать дальше про Бананотряха, устойчивые пароли, невест по почте, Моссад и всякое другое
      • MySQL клиент формата A4

          Можно ли уместить исходники MySQL клиента на 1 страничке формата A4? Оказывается, если 8 кеглем (в принципе читаемо) и после обфускации, то можно! А если нормальный код без обфускации и 10 кеглем, то таки нельзя: надо целых 6 страничек.

          В ходе работы над всяким у меня тут случайно получился крохотный, но работающий MySQL клиент размером чуть больше 1000 строк. Стало интересно, насколько компактнее можно сделать. Потратил половину воскресенья, изолировал и минимизировал код. В результате появился nanomysql, CLI клиент для MySQL, полные исходники которого занимают чуть менее 380 строк и примерно 10500 байт, и при этом компилируются и работают под Linux, Windows, MacOS. Написано на C++ с абсолютным минимумом STL.

          Скриншоты, циферки и прочие подробности уикэнд-сумасшествия по изготовлению наноклиента под катом.
          Читать дальше →
        • Про мнимые и реальные оптимизации в 10 раз, целительный SSE, и все такое

            По мотивам одного вчерашнего поста про оптимизацию условных переходов при расчете x=sign(a,b)*min(abs(a), abs(b)) якобы в 10 раз. Краткая сводка:

            • оптимизация налицо, но размер мнимый: не в 10 раз, а 2.5 раза;
            • бенчмарки надо делать правильно: не надо мерить CPU stalls, RAM bandwidth итп вместо исследуемой функции;
            • бенчмарки надо делать правильно: иначе могут дико дрожать;
            • выставлять только приоритет прикольно, но на коротких бенчмарках зря: +0.5% скорости, -15% дрожания;
            • нужно мерить исследуемую функцию и только ее, только так получаешь корректные данные;
            • нужно греть проц, нужно считать минимум из N прогонов/секунд, только так побеждаешь дрожание;
            • нужно пользовать SSE, с ним получилось 8.6 раз, причем код… читается.

            В общем, опять пачка классических методологических ошибок при бенчмарке. Кому интересно, как такие ошибки НЕ делать, подробности, детальный разбор полетов, оптимизация в еще несколько раз и, главное, исходники под катом.
            Читать дальше →
          • Sphinx встреча (Москва, 8 мая)

              8 мая в 19.00 планируем устроить небольшую Sphinx-оводческую встречу в Москве. Еду в гости в Сотмаркет; говорят, у них из 500к уников каждый второй пользуется поиском; поэтому есть, о чем поговорить.

              Для разгона я буду рассказывать про новые возможности версии 2.1 (за почти что полтора года между релизами их скопилось немало!), затем вопросы, мордобой, прочее неформальное общение. Приглашающая сторона только что подтвердила мероприятие и сказала, что смогут принять от 40 до 50 гостей. Так что если есть интерес, добро пожаловать!

              Заявки кидать Вадиму Крючкову по адресу kruchkov.v@sotmarket.ru, нужно ФИО (для списка на охрану) и контактный телефон. Лучше успеть до 12:00 дня 8 мая. Засядем в головном офисе Сотмаркета по адресу г.Москва, Старопетровский проезд 7а, стр.30, м.Войковская. Для заблудившихся, телефон для связи 8-903-572-4143.

              До встречи!
            • Секретная Гильдия Долины Кремния

                Пару недель назад я пил пиво с друзьями в Сан-Франциско и кто-то язвительно заметил:

                «У тебя слишком много хипстеров, эдак вы не отмасштабируетесь. Найми несколько жиробасов, знающих C++.»

                Шутка смешная, но заставила меня задуматься. Кто эти «жиробасы, знающие C++» или, как сказал еще кто-то, «бородатые парни в растянутых свитерах, которые поддерживают сервера Google»? И почему если ты встретил одного из них, это как дернуть за нитку клубка и они вообще все, похоже, друг друга знают?

                Причина в том, что…
                Читать дальше →
              • Про борьбу с качеством

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

                  А вот один из секретов про качество поиска начну раскрывать прямо здесь и сейчас. Это новая штука под названием expression ranker, добавленная в версии 2.0.2-beta, (правильный русский перевод еще не придумали), и чуть подробнее я сейчас расскажу про него под катом. Вкратце, оно позволяет задавать свою формулу ранжирования прямо на лету, и даже отдельную для каждого запроса. В общем, эдакий конструктор, который дает возможность каждому попробовать построить свой личный MatrixNet, с четырехмерными шахматами и оперными певицами.
                  Читать дальше →
                  • +45
                  • 10,7k
                  • 1
                • Вышел 2.0.2, скоро слет пользователей и 2.0.3

                    Мы тут дотестировали, собрали бинарные пакеты и выложили версию Sphinx 2.0.2-beta (это такой опен-сорсный поисковой сервер, использующийся на куче вебсайтов), запланировали на середину декабря (революционное изменение!) к выпуску Sphinx 2.0.3-release, а также усердно готовимся к (бесплатному) слету пользователей Сфинкса 04 декабря в Санкт-Петербурге. Зарегистрироваться на слет нужно по ссылке чуть выше, подать крутой доклад через нашу контактную форму, а ряд подробностей про те ~30 новых фичей и планы/сроки по ближайшим релизам и их циклу можно прочитать под катом.
                    Читать дальше →
                  • Теория Заговора

                    • Перевод
                    [Сцена: ранние 90е, офис некоего производителя компьютеров в Силиконовой Долине]

                    — У меня отличная идея!

                    — Мочи.

                    — Знаешь, как программистов-старичков обычно обгоняют и втаптывают в грязь молодые пацаны? Эти детишки только из колледжа выпустились, а код на C и C++ строчат быстрее нас, опытных старых пердунов. У меня это уже в печенках сидит.
                    Читать дальше →
                  • Обходим чужие тормоза

                      Бэкапил историю сообщений из Skype самописной утилиткой, год назад она работала отлично, а теперь стала люто тормозить. Это неприемлемо, тк. в том числе ради скорости экспорта она и была написана, поэтому полез в профайлер. По итогам узнал всякое и получил множественные просветления. Оказывается, breakpoint на функцию в подгруженной системной DLL ставить приходится с подвывертом, а не просто по имени, но таки можно и нетяжело. Оказывается, Skype API написан местами зверски криво, отчего и тормозища. Оказывается, чужие бинарники иногда можно очень легко подхачить и подоптимизить (слава MS Research!). Оказывается, профайлер может сильно врать, а не просто слегка подбрехивать. Ключевые слова для нетерпеливых: C++, VS, CodeAnalyst, Skype COM API, MS Research, Detours, SQLite; а для всех остальных подробности под катом.
                      Читать дальше →
                    • Мастер-класс в Киеве, 18 июня (сб)

                        В следующую субботу, 18го июня, буду проводить в Киеве мастер-класс про Сфинкс, аналогичный проведенному на недавнем Devconf. Осталась неделя, самое время зарегистрироваться. Под катом пара-тройка ответов на стандартные вопросы.
                        Читать дальше →
                      • Новости 2.0.1-beta


                          Как здесь уже заметили, недавно вышел Sphinx 2.0.1. Релиз случался в легкой спешке, тк. «совершенно неожиданно» (примерно как сессия или Новый год) еще вдобавок вышла книжка для начинающих, описывающая как раз новую версию. Книга «про транк» это таки слишком эксцентрично, поэтому пришлось оперативно публиковать версию. Хорошо, что мы месяц-другой именно к релизу и готовились: чинили баги, не сильно ломали фичи. В заметке расскажу про всякие нововведения в свежей версии 2.0.1 и планы на следующую версию, см. подкат.
                          Читать дальше →
                        • Про C++ алиасинг, ловкие оптимизации и подлые баги

                            С удивлением обнаружил, что про явление алиасинга (aliasing) здесь постов нет. Ситуацию нужно исправить, тк. алиасинг в любой сколько-то сложной C++ программе обязательно хоть где-нибудь, да есть. Это может быть хорошо, давая возможность ловких оптимизаций, а может быть плохо, внося повышенной паршивости баги. Под катом вкратце про оба случая (ну и неизменное «компилятор бьет спина», конечно; для разнообразия сегодня это gcc).
                            Читать дальше →
                          • Учимся правильно бенчмаркать 2: как компилятор бьет в спину

                              Получить годные цифры бенчмарка это полдела, однако вторая половина их правильно интерпретировать, узнать что-то новое, и суметь применить. 100x отличия промеж дебажным и нормальным билдом удивили, решил копнуть глубже. По итогам получше узнал, что происходит в дебаге; поискал отличия между 2005 и 2008 студией (не нашел); выяснил, как ускорить дебажный билд в 3 раза за пару минут (ставим блок против удара в спину); методом «взять и запустить» получил результаты, отличающиеся от авторских в 3.5 раза (адская сила x64 в действии!); и для смеха замерил плохой, негодный недовектор против хорошего (плохой оказался до 100 раз быстрее). Подробности под катом.
                              Читать дальше →
                            • Учимся правильно бенчмаркать (в том числе итераторы)

                                Скачал пример из предыдущего постинга, от запуска к запуску время дрожало до 1.5 раз, от 0.76 до 1.09 секунд. Как можно оценивать результаты подобных бенчмарков, неясно. Проблема знакомая, столкнулся и решал буквально вчера. Вкратце, виноват CPU throttling, а так же странный affinity в коде. Под катом борьба (успешная) и обсуждение.
                                Читать дальше →
                              • Конференция пользователей Sphinx уже в это воскресенье

                                  Внезапно, до общего Московского сбора пользователей поискового движка Сфинкс осталось менее 3 суток. Программа докладов — sphinxsearch.com/conf2010ru.html, место проведения — МГУ, ВМК (2й уч. корпус), ауд. П-14, начало — 24 октября, 10:00 утра.

                                  Только что разослал почтовые подтверждения всем зарегистрировавшимся; если вы ничего не получили, срочно напишите нам. Если еще не регистрировались, остался последний день (пятница) — но есть некоторая опасность, что сидячих мест уже может не хватить, приходите с походной пенкой или раскладными стульчиками ;)

                                  Мы ждем всех!
                                • Конференция пользователей Sphinx: Москва, 24 октября

                                    Мы устраиваем первую конференцию пользователей Sphinx. Бесплатную, опен-сорсную, все эти дела. Пройдет 24 октября (воскресенье), в Москве.

                                    Доклады в основном технические: про ловкое использование связки Sphinx/MySQL, про поисковой кластер на несколько TB, про тонкости поиска работы, про тонкости товарного поиска. Что особенно приятно, все это будут рассказывать как раз пользователи. Понятно, кое-что расскажем и мы сами. Но ваш боевой опыт интереснее, потому приглашаем еще докладчиков!

                                    Чуть больше подробностей, регистрация, и вообще вся актуальная информация — по адресу sphinxsearch.com/conf2010ru.html

                                    Пишите письма, заходите в гости, будем рады видеть!

                                    UPD: еще обновления будут класть в vkontakte.ru/club20032698 — вконтактом не пользуюсь, но говорят, многим удобно.
                                  • вышел Sphinx 1.10-beta

                                      Третьего дня выложил Sphinx 1.10-beta, с блекджеком и шлюхами RT индексами, строковыми атрибутами, оптимизированным форматом индекса, и традиционным десятком-другим фич поменьше. Вчера выложил к нему RPM вот еще.
                                      Читать дальше →
                                    • Новости проекта Sphinx, весна 2010

                                        Год 2010 получается довольно занятой в целом, весна случилась урожайная на конференции в частности. Поэтому писать в блог на Хабр регулярно получается плохо, но как минимум пачкой новостей и ссылок хочется поделиться (уже пора!). Краткая сводка —
                                        1. с начала года прошло 3 конференции (Confoo, MySQL UC, RIT++) с докладами про Сфинкс, доступны слайды;
                                        2. в течение месяца предстоит еще 2 (DORS/CLUC, DevConf), где запланированы доклады и (внимание, нечто новое) мастерклассы про все тот же Сфинкс;
                                        3. полтора месяца назад запустили (англоязычный) блог, пытаемся регулярно писать интересное туда, пока даже получается (сам очень удивляюсь);
                                        4. RT апдейты дозрели до публичного релиза настолько, что релиз задерживают не они; SVN версия местами крутится в продакшне, и даже почти что не падает (удивляюсь еще сильнее);
                                        5. самозародились плагины для WordPress, Zend Framework (не наши).
                                        Подробности под катом!
                                        Читать дальше →