• Наглядное объяснение чисел с плавающей запятой

    • Перевод
    image

    В начале 90-х создание трёхмерного игрового движка означало, что вы заставите машину выполнять почти не свойственные ей задачи. Персональные компьютеры того времени предназначались для запуска текстовых процессоров и электронных таблиц, а не для 3D-вычислений со частотой 70 кадров в секунду. Серьёзным препятствием стало то, что, несмотря на свою мощь, ЦП не имел аппаратного устройства для вычислений с плавающей запятой. У программистов было только АЛУ, перемалывающее целые числа.

    При написании книги Game Engine Black Book: Wolfenstein 3D я хотел наглядно показать, насколько был велики были проблемы при работе без плавающей запятой. Мои попытки разобраться в числах с плавающей запятой при помощи каноничных статей мозг воспринимал в штыки. Я начал искать другой способ. Что-нибудь, далёкое от $(-1)^S * 1.M * 2^{(E-127)}$ и их загадочных экспонент с мантиссами. Может быть, в виде рисунка, потому что их мой мозг воспринимает проще.

    В результате я написал эту статью и решил добавить её в книгу. Не буду утверждать, что это моё изобретение, но пока мне не приходилось видеть такого объяснения чисел с плавающей запятой. Надеюсь, статья поможет тем, у кого, как и меня, аллергия на математические обозначения.
    Читать дальше →
  • Выбор алгоритма вычисления квантилей для распределённой системы


      Всем привет! Меня зовут Александр, я руковожу отделом Data Team в Badoo. Сегодня я расскажу вам о том, как мы выбирали оптимальный алгоритм для вычисления квантилей в нашей распределённой системе обработки событий.

      Читать дальше →
      • +52
      • 8,1k
      • 3
    • Moby/Docker в продакшене. История провала

      • Перевод

      Примечание переводчика: в предыдущей статье о подготовке к девопс-конференциям, Gryphon88 задал резонный вопрос: как отличить cutting-edge и хайп? Нижеследующая статья наполнена сочной незамутненной истерикой, которую так приятно читать с утра, попивая чашечку кофе. Минус в том, что она написана в ноябре 2016, но нетленка не стареет. Если после прочтения захочется добавки, есть комментарии на Hacker News. А у тебя, юзернейм, такой же ад? Пиши в комментариях. Итак, начнем.


      В первый раз я встретился с Докером в начале 2015. Мы экспериментировали с ним, чтобы понять, для чего бы его можно употребить. В то время нельзя было запустить контейнер в фоне, не было команд чтобы посмотреть что запущено, зайти под дебагом или SSH внутрь контейнера. Эксперимент оказался быстрым, Докер был признан бесполезным и более похожим на альфу или прототип, чем на релиз.


      Промотаем нашу историю до 2016. Новая работа, новая компания, и хайп вокруг докера поднялся безумный. Разработчики уже выкатили докер в продакшен, так что сбежать с него не удастся. Хорошая новость в том, что команда run наконец-то заработала, мы можем запускать и останавливать контейнеры. Оно шевелится!


      У нас 12 докеризованных приложений, бегающих на проде прямо в момент написания этой заметки, размазанные на 31 хост на AWS (по одному приложению на хост, дальше объясню — почему).


      Эта заметка рассказывает, как мы путешествовали вместе с Докером — путешествие полное опасностей и неожиданных поворотов.

      Читать дальше →
    • Мобильный ретаргетинг: настройка в трекерах и источниках трафика

      • Tutorial
      В конце прошлого года мы в Mobio запустили автоматизированную систему ретаргетинга мобильных приложений — Getloyal. За это время мы запустили не один десяток кампаний по возвращению пользователей в приложения крупнейших российских и международных игроков. В ходе работы мы выявили большое количество нюансов, которыми и хотелось бы поделиться в этом посте.



      Под катом расскажем об особенностях настройки ретаргетинговых кампаний в системах мобильной аналитики: AppsFlyer, Adjust, MAT (Analytics Attribution by Tune) и источниках трафика: Facebook, myTarget, Cheetah, Yandex и RTB Exchange (DSP).
      Читать дальше →
    • 17 июня в Москве пройдет DevConf 2017

        image17 июня в Москве пройдет DevConf 2017 — большая конференция для веб-разработчиков. Каждый год собирается более тысячи участников, чтобы рассказать и узнать обо всем самом новом в мире программирования для веб.

        Будет большая тусовка, доклады будут читать опытные специалисты по Go, MySQL, PostgreSQL, PHP, Javascript и мобильным платформам.
        Читать дальше →
        • +51
        • 4,3k
        • 7
      • Кластер высокой доступности на postgresql 9.6 + repmgr + pgbouncer + haproxy + keepalived + контроль через telegram

        image

        На сегодняшний день процедура реализации «failover» в Postgresql является одной из самых простых и интуитивно понятных. Для ее реализации необходимо определиться со сценариями файловера — это залог успешной работы кластера, протестировать его работу. В двух словах — настраивается репликация, чаще всего асинхронная, и в случае отказа текущего мастера, другая нода(standby) становится текущем «мастером», другие ноды standby начинают следовать за новым мастером.

        На сегодняшний день repmgr поддерживает сценарий автоматического Failover — autofailover, что позволяет поддерживать кластер в рабочем состоянии после выхода из строя ноды-мастера без мгновенного вмешательства сотрудника, что немаловажно, так как не происходит большого падения UPTIME. Для уведомлений используем telegram.

        Появилась необходимость в связи с развитием внутренних сервисов реализовать систему хранения БД на Postgresql + репликация + балансировка + failover(отказоустойчивость). Как всегда в интернете вроде бы что то и есть, но всё оно устаревшее или на практике не реализуемое в том виде, в котором оно представлено. Было решено представить данное решение, чтобы в будущем у специалистов, решивших реализовать подобную схему было представление как это делается, и чтобы новичкам было легко это реализовать следуя данной инструкции. Постарались описать все как можно подробней, вникнуть во все нюансы и особенности.
        Читать дальше →
      • Фильтр Блума для веб-разработчиков

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

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

          Однако есть трудности, которые могут сдерживать веб-разработчиков от применения фильтра Блума.
          Читать дальше →
        • Яндекс открывает ClickHouse

            Сегодня внутренняя разработка компании Яндекс — аналитическая СУБД ClickHouse, стала доступна каждому. Исходники опубликованы на GitHub под лицензией Apache 2.0.



            ClickHouse позволяет выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. Система способна масштабироваться до десятков триллионов записей и петабайт хранимых данных. Использование ClickHouse открывает возможности, которые раньше было даже трудно представить: вы можете сохранять весь поток данных без предварительной агрегации и быстро получать отчёты в любых разрезах. ClickHouse разработан в Яндексе для задач Яндекс.Метрики — второй по величине системы веб-аналитики в мире.

            В этой статье мы расскажем, как и для чего ClickHouse появился в Яндексе и что он умеет; сравним его с другими системами и покажем, как его поднять у себя с минимальными усилиями.
            Читать дальше →
          • Атака на IPv6: NDP Table Exhaustion

              IPv6 уверенно шагает рано или поздно войдёт в нашу жизнь в той же степени, что и IPv4. Интересная особенность — долгий период разработки и внедрения привёл к тому, что некоторые первоначальные идеи были списаны в утиль, а сама конструкция постепенно обросла костылями. И, что обидно, к решению некоторых серьёзных проблем приступили только недавно.

              Под катом — как положить IPv6 и даже IPv4 сеть DoS-атакой NDP Table Exhaustion, а также варианты полумер и мер защиты.

              image

              Читать дальше →
            • Запоминайте эффективно: два важных принципа в изучении языка

                image

                В июне к команде LinguaLeo присоединился Артур Думчев, рекордсмен «Книги рекордов России» по запоминанию, признанный эксперт в области развития памяти, тренер и консультант. Артур помнит число «Пи» до 22 528 знаков после запятой и является автором книги «Помнить все. Практическое руководство по развитию памяти».

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

                Разумное применение мнемотехники


                Мнемотехника — это совокупность приемов, облегчающих запоминание. Пример использования мнемотехники: нам нужно занести в память слово Shrug — «пожимать плечами». Чтобы это сделать, достаточно представить какой-нибудь визуальный образ, который позволит вам вспомнить слово и его перевод. Например, Шрек пожимает плечами. Когда вы услышите Shrug, вам тут же вспомнится этот образ, а затем перевод слова.
                Читать дальше →