• Введение в разработку CatBoost. Доклад Яндекса

      Меня зовут Стас Кириллов, я ведущий разработчик в группе ML-платформ в Яндексе. Мы занимаемся разработкой инструментов машинного обучения, поддержкой и развитием инфраструктуры для них. Ниже — мой недавний доклад о том, как устроена библиотека CatBoost. В докладе я рассказал о входных точках и особенностях кода для тех, кто хочет его понять или стать нашим контрибьютором.


      — CatBoost у нас живет на GitHub под лицензией Apache 2.0, то есть открыт и бесплатен для всех. Проект активно развивается, сейчас у нашего репозитория больше четырех тысяч звездочек. CatBoost написан на C++, это библиотека для градиентного бустинга на деревьях решений. В ней поддержано несколько видов деревьев, в том числе так называемые «симметричные» деревья, которые используются в библиотеке по умолчанию.

      Читать дальше →
      • +27
      • 5,4k
      • 4
    • Заслужили бессмертие: игры, которые не дали по себе скучать

        Иногда сядешь за рабочий стол, посмотришь на навороченный ноутбук и думаешь: эх, мне бы его, да 20 лет назад, чтобы за три ночи — и все уровни! И действительно, никак не получается вернуться в прошлое, в котором остались любимые игры и герои, простая графика, увлекательный сюжет. Но, как известно, настоящее искусство не умирает и мы имеем не просто эмуляторы, а самые настоящие релизы тех самых игр, которые прошли вместе с нами сквозь юность и молодость. И, чёрт возьми, как же приятна эта ностальгия, как знакомы герои, как близки места и события. Никогда ещё прошлое не было таким близким — на мгновение мы ощутили: машина времени существует. Поехали?


        Найди их всех! Кликнуть для увеличения
        Читать дальше →
      • Эффективная генерация числа в заданном интервале

        • Перевод
        image

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

        Представьте такую ситуацию:

        В качестве домашнего задания Хуан и Саша реализуют одинаковый рандомизированный алгоритм на C++, который будет выполняться на одном университетском компьютере и с одним набором данных. Их код почти идентичен и отличается только в генерации случайных чисел. Хуан торопится на свои занятия по музыке, поэтому просто выбрал вихрь Мерсенна. Саша, с другой стороны, потратил несколько лишних часов на исследования. Саша провёл бенчмарки нескольких самых быстрых ГПСЧ, о которых недавно узнал из соцсетей, и выбрал наиболее быстрый. При встрече Саше не терпелось похвастаться, и он спросил Хуана: «Какой ГПСЧ ты использовал?»

        «Лично я просто взял вихрь Мерсенна — он встроен в язык и вроде неплохо работает».

        «Ха!», — ответил Саша. «Я использовал jsf32. Он намного быстрее, чем старый и медленный вихрь Мерсенна! Моя программа выполняется за 3 минуты 15 секунд!».

        «Хм, неплохо, а моя справляется меньше, чем за минуту», — говорит Хуан и пожимает плечами. «Ну ладно, мне пора на концерт. Пойдёшь со мной?»

        «Нет», — отвечает Саша. «Мне… эээ… нужно снова взглянуть на свой код».

        Эта неловкая вымышленная ситуация не особо и вымышлена; она основана на реальных результатах. Если ваш рандомизированный алгоритм выполняется не так быстро, как хотелось бы, и узким местом похоже является генерация случайных чисел, то, как это ни странно, проблема может быть и не в генераторе случайных чисел!
        Читать дальше →
      • HBO, cпасибо что напомнил… «Чернобыльская аптечка» беларуского фармацевта

        • Tutorial
        Что бы ни сказали — не станем спорить
        Что бы ни дарили — не станем верить

        Егор Летов «Как листовка»

        Думаю не стоит лишний раз говорить о нашумевшем сериале Чернобыль и эффективности такого «сериального» воздействия на массы. Особенно на массы, проживающие на территориях, показанных в фильме. Выход каждой новой серии сопровождается всплеском публикаций в FB. В каждой из которых горечь, страх, боль. Что в такой ситуации я могу сделать ("кто виноват и что делать?")? Могу только описать свой взгляд на терапию лучевых поражений. Спасибо родненькой кафедре химии высоких энергий и проф. Шадыро О.И., которые пестовали в своих лабораториях нас, непутевых фармацевтов-радиохимиков. Надеюсь своей статьей честь этой, легендарной некогда, кафедры я не опорочу.

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

        В общем, спасибо, сценаристы HBO, за то, что всколыхнули Память. Мой посильный вклад — под катом. Рейтинг доступных (и не очень) антидотов, способных сработать при радиационном выбросе. В закладки — класть строго ВСЕМ! И прочитал сам — перекинь другу.

        Читать дальше →
      • Гепатит С: «ласковый убийца»

          Когда мы говорим о тяжёлых инфекционных заболеваниях, приводящих к смерти и подвергающихся наибольшей стигматизации, обычно имеется в виду ВИЧ. Среди других же заболеваний особенно выделяется гепатит C. Большая часть людей, инфицированных вирусом гепатита C, приобретают хроническую инфекцию, протекающую бессимптомно и приводящую к циррозу и раку печени, а впоследствии, соответственно, смерти. Из-за этих своих особенностей гепатит C получил прозвище „ласковый убийца“.


          Гепатит C и ВИЧ часто упоминаются вместе, и это не случайность: сегодня они являются наиболее опасными стремительно распространяющимися инфекционными заболеваниями. Оба этих заболевания передаются через контакт крови; однако заражение гепатитом C через половой контакт гораздо менее вероятно.

          Читать дальше →
        • Изготовление печатных плат ЛУТ'ом от А до Я

          Доброго времени суток! Среди моих знакомых бытует мнение, что самостоятельно изготавливать печатные платы (ПП) бесполезно. Учитывая, что современные компоненты далеко ушли от DIP корпусов, то кустарно травить платы под них даже и не стоит пытаться. Тем не менее необходимость в быстрой оценке того или иного компонента всегда есть, и ждать несколько суток заказанной платы времени нет. И это учитывая, что заказ за «несколько суток» дорог, для одноразовой задачи.

          В данной статье я хочу изложить порядок действий, которые позволят быстро изготавливать ПП под компоненты в корпусах подобных TQFP-100, то есть с ногами 0,2мм и таким же зазором, и при этом сводить брак к минимуму.

          Конечно это способ изготовления плат только для прототипов, но он снижает риски ошибиться при создании конечного устройства.

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

          Под катом подробности и трафик.
          Подробности
        • Вся правда о linux epoll

            Ну или почти вся...



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


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


            Anyone can wield an axe, but it takes a true warrior to make it sing melees melody.

            Я предполагаю, что читатель знаком с epoll, по крайней мере прочел страницу man. О epoll, poll, select написано достаточно много, чтобы каждый кто разрабатывал под Linux, хоть раз о нем слышал.

            Читать дальше →
          • Системы очистки воды обратным осмосом — здорово или не очень?



              Всем привет.

              Сегодня я хотел бы поделиться с Вами своим видением систем очистки воды.

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

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

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

              Давайте разберёмся.
              Читать дальше →
            • Самые страшные яды



                Привет, %username%

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

                Но я не хочу перечислять то же самое. Я не хочу меряться дозами LD50 и претендовать на оригинальность.

                Я хочу написать про те яды, с которыми ты, %username%, имеешь большой риск столкнуться каждый день. И которые не так просты, как их ближайшие собратья.

                Врага надо знать в лицо. И надеюсь — будет интересно. А если окажется интересно — то возможно, что и осилишь вторую часть.

                Итак — моя смертельная десятка!
                Читать дальше →
              • Веб-разработчики пишут небезопасный код по умолчанию

                  «Если хотите, я могу зашифровать пароли»



                  Некоторые разработчики, которым дали прямое указание применить криптографию, использовали шифрование парольной базы с помощью Base64

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

                  Новое исследование из Университета Бонна (Германия) показывает, что разработчики-фрилансеры по умолчанию придерживаются исключительно небезопасных практик, если только заказчик не требует большего.
                  Читать дальше →
                • О простых вещах-сложно. «Cпящая сталь». Чем смазать заржавевшие болты или Не WD-40 единым…

                  • Tutorial
                  Посвящается всем отчаявшимся и потерявшим надежду… открутить заржавевшую гайку!

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

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

                  Ну и, традиционно — не забудь закинуть в закладки, %USERNAME%, пригодится! :)


                  Читать дальше →
                • Шпаргалки по безопасности: Docker



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

                    Основываясь на OWASP, мы подготовили список правил, выполнение которых позволит значительно обезопасить ваше окружение, построенное на Docker контейнерах.
                    Читать дальше →
                    • +29
                    • 17,1k
                    • 5
                  • «Библиотеки для C++ нередко похожи на русскую классику: страдает либо их автор, либо пользователь, либо архитектура». Автор этой цитаты, Сергей Садовников из «Лаборатории Касперского», прошел свой путь от страданий к просветлению и узнал о метапрограммировании в С++ нечто важное и нужное. Сочувствующих приглашаем в волшебный мир макросов, шаблонов, boost и прочих loki.
                    Подробности – под катом
                  • Радиация: война с невидимым убийцей или еще немного о радоне

                      И снова здравствуйте. В комментариях к предыдущей статье я обещал написать о защите от радона и его ДПР. Что ж, выполняю это обещание.



                      Как я уже говорил в предыдущей статье, радон представляет для людей довольно серьезную опасность. Особенно она велика в некоторых регионах Земли, где радон с больших глубин выносится на поверхности по тектоническим разломам. И в этих местах жизненно необходимы меры по снижению его концентрации в человеческом жилье.
                      Читать дальше →
                    • Асинхронность в программировании

                        В области разработки высоконагруженных многопоточных или распределенных приложений часто возникают дискуссии об асинхронном программировании. Сегодня мы подробно погрузимся в асинхронность и изучим, что это такое, когда она возникает, как влияет на код и язык программирования, которым мы пользуемся. Разберемся, зачем нужны Futures и Promises и затронем корутины и операционные системы. Это сделает компромиссы, возникающие во время разработки ПО, более явными.


                        В основе материала — расшифровка доклада Ивана Пузыревского, преподавателя школы анализа данных Яндекса.


                        Читать дальше →
                      • «Умный дом» — переосмысление

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

                          Хочу поделиться своим опытом («тестовый проект»).

                          Постройка собственного дома (особенно, если еще и своими силами) — крайне объемный кусок информации, поэтому я свое повествование буду вести больше про ИТ-системы (мы же все-таки сейчас на Хабре, а не на ФХ, хотя там тема тоже есть).
                          Читать дальше →
                        • Превращаем DSLogic Basic в DSLogic Plus

                          • Tutorial
                          Привет, Хабр!

                          В данной статье расскажу как модифицировать DSLogic Basic до DSLogic Plus.

                          Возможно для кого-то это не будет новостью.

                          Во всяком случае — собрал инфу с зарубежного форума, убрал все лишнее и рассказываю вам.

                          Кому интересно — прошу под кат.
                          Читать дальше →
                        • XXH3: новый рекордсмен по скорости хеширования


                            Бенчмарки сделаны в программе SMHasher на Core 2 Duo 3,0 ГГц

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

                            Одно из самых популярных — семейство хеш-функций xxHash, которое появилось около пяти лет назад. Хотя изначально эти хеши задумывались для проверки контрольной суммы при сжатии LZ4, но их стали применять на самых разных задачах. Оно и понятно: достаточно посмотреть на таблицу вверху со сравнением производительности xxHash и некоторых других хеш-функций. В этом тесте xxHash обходит ближайшего конкурента по производительности в два раза. Новая версия XXH3 поднимает планку ещё выше.
                            Читать дальше →
                            • +44
                            • 12,2k
                            • 9
                          • Пробуем контрактное программирование С++20 уже сейчас

                            • Tutorial


                            В С++20 появилось контрактное программирование. На текущий момент ни один компилятор ещё не реализовал поддержку этой возможности.


                            Но есть способ уже сейчас попробовать использовать контракты из C++20, так как это описано в стандарте.

                            Заинтересовавшихся прошу под кат
                          • Топ-10 докладов конференции C++ Russia 2018: полные видеозаписи, слайды, комментарии

                              В этой статье вас ждёт десять лучших докладов от Андрея Александреску, Дэвида Вандервурда, Джона Калба и многих других.


                              Фичи компилятора C++, асинхронность, многопоточность, параллелизм, модель памяти, алгоритмы и STL, метапрограммирование и рефлекшен, огромное множество тем.



                              Всё это — записи с конференции C++ Russia, самой большой в истории. Восемь сотен участников, немаленький зал, спикеры с мировым именем. Прошёл год, но большинство докладов ничуть не утратило своей актуальности. Впрочем, и неудивительно — именно такие доклады и попадают в топ по оценке участников.


                              Формат таков:


                              • Обязательное видео на YouTube
                              • Слайды, если есть
                              • Подробное описание доклада на русском языке
                              • Краткая биография докладчика

                              Плюс у вас есть комментарии Хабра, чтобы обсудить увиденное. Реклама на ютубе отключена, никто не будет мешать. Есть всё, чтобы начать смотреть прямо сейчас.

                              Читать дальше →