• Грабли, на которые мы успели наступить

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


      Читать дальше →
    • WebRTC PeerConnection и DataChannel: обмен данными между браузерами

      • Tutorial
      image

      Многие слышали о проекте WebRTC, поэтому я не буду углубляться в описание. На днях мне захотелось попробовать отправлять сообщения между браузерами, и чтобы разобраться в этом, я решил написать примитивный P2P-чат. Эксперимент удалался, и по мотивам я решил написать этот пост. На Хабре уже были статьи, освещающие вопросы использования WebRTC для передачи видео, однако меня в первую (и последнюю) очередь интересовала возможность обмена текстовыми или бинарными данными.
      Читать дальше →
    • Терабайты файлов веб-проекта — храним и раздаем

        Всем привет!

        В последнее время наметился интересный тренд — быстрое «распухание» веб-проектов до бесконечности. Объем данных многих популярных сайтов растет все быстрее и быстрее, их нужно куда-то девать, при этом эффективно бэкапить (весело будет, если файлы на 500Т потеряются :-) ), и конечно супербыстро раздавать клиентам, чтобы все их могли качать, качать, качать… на высокой скорости.

        Для системного администратора задача даже редкого, ежедневного резервного копирования такого объема файлов навевает мысли о суициде, а менеджер веб-проекта просыпается в холодном поту от мысли о предстоящей профилактике датацентра на 6 часов (чтобы файлы перевести из одного датацентра в другой нужно пару раз загрузить багажник автомобиля винчестерами :-) ).

        Коллеги с умным видом советуют приобрести одно из решений от NetApp, но, жаль, что бюджет у проекта в 1000 раз меньше, это вообще стартап… что делать будем?

        В статье хочу разобрать частые кейсы дешевого и дорогого решения данной задачи — от простого к сложному. В конце статьи расскажу как задача решена в нашем флагманском продукте — всегда полезно сравнивать opensource-решения с коммерческими, мозгам нужна гимнастика.
        Читать дальше →
      • Улучшаем релевантность поиска в sphinxsearch

        Sphinxsearch является поисковым движком для быстрого fulltextsearch, может получать данные из mysql, oracle и mssql, может выступать сам хранилищем(realtime индексы). Также sphinx имеет режим работы через api и через sphinxql — аналог протокола sql(с некоторыми ограничениями), что позволяет подключить поиск через sphinx на сайте с минимальным изменением кода. Это один из немногих великих, крупных и открытых проектов разработанный в России. На моей жизни я видел как sphinx обрабатывает порядка 100-200 поисковых запросов на 2 миллиона записей из mysql и при этом сервер свободно дышал и его не тошнило, mysql начинает умирать уже на 10 запросах в секунду на аналогичном конфиге.

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

        Sphinx содержит две независимые программы indexer и searchd. Первый строит индексы по данным взятым из базы данных, второй производит поиск по построенном индексу. А теперь перейдем к настройкам поиска в sphinx.

        morphology

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

        Пример нормализации слова стеммингом на русском.
        Слова “яблоко”, “яблока”, “яблоку” будут обрезаны в “яблок” и любой поисковый запрос с вариацией слова “яблока” будет тоже нормализован и найдет записи со словами которые были описаны выше.
        Читать дальше →
      • Набор заметок. Производительность и защита, от сайта до системы

        Краткий анонс

        Собирался добавить пару предположений на счет авторизации и регистрации на сайте, но то ли от недосыпания, то ли от многочисленных выпитых сегодня чашек кофе меня потянуло в дебри. Набросал некоторые заметки. Возможно кто-то из Вас найдет что-то новое для себя, возможно кто-то подскажет новое правило для кого-то, возможно кто-то поправит меня тем самым дав и мне урок, и другим. Ниже идут некоторые заметки работы с БД, еще ниже уже несколько заметок про работу самого сервера и т.д.
        Читать дальше →