• Wargaming Platform: Distribution

      Всем привет!


      Около двух лет назад мой коллега Максим (max_posedon) опубликовал статью Wargaming Platform: Hello World, в которой «попробовал» (как он сам обозначил) объяснить, что же такое Платформа Wargaming. Мы с коллегами хотим продолжить делиться информацией и на этот раз копнём немного вглубь — как следует из названия статьи, в дистрибуцию.

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

      Я бы хотел получить такое письмо три года назад, когда только начинал изучать Data Science (DS). Чтобы там были необходимые ссылки на полезные материалы. Статья не претендует на полноту охвата необъятной области DS. Однако для начинающего специалиста будет полезна.


      Нейронные сети – это...

      Читать дальше →
    • Создаем инфраструктуру как код с GitLab и Ansible

      • Translation


      Вся мощь GitLab CI в демонстрации плейбуков Ansible при подходе «инфраструктура как код».


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

      Читать дальше →
    • Открытый курс машинного обучения. Тема 6. Построение и отбор признаков

        Сообщество Open Data Science приветствует участников курса!


        В рамках курса мы уже познакомились с несколькими ключевыми алгоритмами машинного обучения. Однако перед тем как переходить к более навороченным алгоритмам и подходам, хочется сделать шаг в сторону и поговорить о подготовке данных для обучения модели. Известный принцип garbage in – garbage out на 100% применим к любой задаче машинного обучения; любой опытный аналитик может вспомнить примеры из практики, когда простая модель, обученная на качественно подготовленных данных, показала себя лучше хитроумного ансамбля, построенного на недостаточно чистых данных.


        UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.



        Читать дальше →
      • TON: Telegram Open Network. Часть 1: Вступление, сетевой уровень, ADNL, DHT, оверлейные сети

          TON: Telegram Open Network


          Уже две недели Рунет шумит про Telegram и ситуацию с его бессмысленной и беспощадной блокировкой Роскомнадзором. Рикошетом задело многих, но всё это — темы для постов на Geektimes. Меня же удивило другое — я до сих пор не видел на Хабре ни одного разбора запланированной к выходу на базе Telegram сети TON — Telegram Open Network. Мне захотелось восполнить этот недостаток, ибо поизучать там есть что — даже несмотря на отсутствие официальных заявлений о нём.


          Напомню — ходят слухи о том, что Telegram запустил очень масштабное закрытое ICO, уже собрав в нём невероятные суммы. Предполагается, что уже в этом году будет запущена собственная криптовалюта Gram — и у каждого пользователя Телеграма автоматически появится кошелёк, что само по себе создает немалое преимущество перед остальными криптовалютами.


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


          Что же говорится в этом документе? Я попробую пересказать его своими словами, близко к тексту, но по-русски и чуть более человечно (да простит меня Николай со своей склонностью уходить в формальную математику). Имейте в виду, что даже в случае его подлинности, это черновое описание системы и оно, весьма вероятно, изменится к моменту публичного запуска.

          Итак, приступим
        • Bitcoin и Ethereum: что происходит на узлах, которые не занимаются добычей, и что с ними будет дальше?


          Введение


          В последнее время довольно часто говорят о перспективах блокчейн систем, о том, что в будущем блокчейн заменит классические платёжные системы, такие как, например, Visa или Mastercard, а затем, возможно, коренным образом изменит и юриспруденцию благодаря возможностям «умных» контрактов. Но, несмотря на все ожидания, полноценной и всеобъемлющей платёжной системы на блокчейне пока не создано. Оплата реальных товаров и услуг криптовалютами, как правило, осуществляется в тех случаях, когда на использование классических способов оплаты наложены какие-то ограничения. При этом значительная часть сделок с использованием криптовалют несёт спекулятивный характер.


          Факторов, сдерживающих развитие блокчейн систем, безусловно, много. Они могут иметь как техническую, так и экономическую, политическую или даже психологическую природу. В данной статье будут рассмотрены только некоторые технические ограничения двух наиболее популярных блокчейн систем — Bitcoin и Ethereum.

          Читать дальше →
        • Слушайте! 50 лучших подкастов для разработчиков

          Развиваться, узнавать о технологиях и быть в курсе последних подходов – для ITшника особенно важно. Читать книгу не всегда удобно, смотреть видео-обзоры любят не все и времени много занимает.

          Держите 50 IT-подкастов о технологических новинках в сфере ИБ, облачных технологий, IoT, тестирования и управления проектами. Все подкасты на английском языке, для прослушивания нужно знать его на уровне upper intermediate и выше.


          Читать дальше →
          • +12
          • 17k
          • 6
        • От установки AWX до запуска первого плейбука — настройка централизованного управления Ansible

          • Tutorial


          Количество серверов в нашей инфраструктуре уже перевалило за 800, хотя еще год назад их было около 500. Для работы с этим всем активно используются решения от Red Hat. Про FreeIPA — для организации и управления доступами для Linux-серверов — мы уже писали, сейчас же я хочу затронуть тему управления конфигурациями. Для этих целей у нас юзается Ansible, а с недавних пор к нему добавился AWX — представленное полгода назад решение для централизованного управления плейбуками, расписанием их запусков, управления инвентори, учетными данными для доступа к серверам, а также механизм callback'ов для запроса конфигураций со стороны сервера.

          Из-за ряда вещей мы не сразу смогли интегрировать его для работы с нашим основным проектом War Robots, но полей для проверки AWX нашлось предостаточно. Во-первых, в компании ведутся разработки новых проектов, которым нужны dev/stage-окружения и, само собой, production-окружения в перспективе. А недавно к этому добавился еще и проект для внутренней аналитики, которому потребовался полностью новый кластер.

          Итак, начнём!
          Читать дальше →
        • Регистрация с помощью telegram бота

          • Tutorial
          Сейчас почти на всех сайтах есть регистрация. Реализована она чаще всего с помощью e-mail, реже с помощью смс. А что если сделать регистрацию через telegram бота? В качестве логина на сайте мы сможем использовать подтверждённый номер телефона, а сам бот будет посылать одноразовые коды для входа. В данной статье описан процесс создания такого бота на языке Golang.

          image
          Пример работы бота

          Хотелось бы сразу отметить: в статье не будет описана реализация входа на сайт по одноразовым кодам.
          Читать дальше →
        • Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

          • Translation
          Bash-скрипты: начало
          Bash-скрипты, часть 2: циклы
          Bash-скрипты, часть 3: параметры и ключи командной строки
          Bash-скрипты, часть 4: ввод и вывод
          Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
          Bash-скрипты, часть 6: функции и разработка библиотек
          Bash-скрипты, часть 7: sed и обработка текстов
          Bash-скрипты, часть 8: язык обработки данных awk
          Bash-скрипты, часть 9: регулярные выражения
          Bash-скрипты, часть 10: практические примеры
          Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

          В прошлый раз мы говорили о методике разработки bash-скриптов. Если же суммировать всё, что мы разобрали в предыдущих десяти материалах, то вы, если начинали читать их, ничего не зная о bash, теперь можете сделать уже довольно много всего полезного.



          Сегодняшняя тема, заключительная в этой серии материалов, посвящена автоматизации работы с интерактивными утилитами, например, со скриптами, которые, в процессе выполнения, взаимодействуют с пользователем. В этом деле нам поможет expect — инструмент, основанный на языке Tcl.
          Читать дальше →
          • +18
          • 82.9k
          • 7
        • Bash-скрипты, часть 10: практические примеры

          • Translation
          Bash-скрипты: начало
          Bash-скрипты, часть 2: циклы
          Bash-скрипты, часть 3: параметры и ключи командной строки
          Bash-скрипты, часть 4: ввод и вывод
          Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
          Bash-скрипты, часть 6: функции и разработка библиотек
          Bash-скрипты, часть 7: sed и обработка текстов
          Bash-скрипты, часть 8: язык обработки данных awk
          Bash-скрипты, часть 9: регулярные выражения
          Bash-скрипты, часть 10: практические примеры
          Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

          В предыдущих материалах мы обсуждали различные аспекты разработки bash-скриптов, говорили о полезных инструментах, но до сих пор рассматривали лишь небольшие фрагменты кода. Пришло время более масштабных проектов. А именно, здесь вы найдёте два примера. Первый — скрипт для отправки сообщений, второй пример — скрипт, выводящий сведения об использовании дискового пространства.



          Главная ценность этих примеров для тех, кто изучает bash, заключается в методике разработки. Когда перед программистом встаёт задача по автоматизации чего бы то ни было, его путь редко бывает прямым и быстрым. Задачу надо разбить на части, найти средства решения каждой из подзадач, а потом собрать из частей готовое решение.
          Читать дальше →
          • +25
          • 103k
          • 5
        • Отношения классов — от UML к коду

          Введение

          Диаграмма классов UML позволяет обозначать отношения между классами и их экземплярами. Для чего они нужны? Они нужны, например, для моделирования прикладной области. Но как отношения отражаются в программном коде? Данное небольшое исследование пытается ответить на этот вопрос — показать эти отношения в коде.
          Читать дальше →
        • Знакомимся с Otto, наследником Vagrant

            Otto — это новый продукт от Hashicorp, логический наследник Vagrant, призванный упростить процесс разработки и деплоя программ в современном мире облачных технологий. Концептуально новый подход к проблеме, проверенные технологии под капотом и открытый исходный код. Персональный DevOps ассистент разработчика.


            Читать дальше →
            • +21
            • 31.8k
            • 9
          • Настраиваем NGINX для мультиязычных сайтов

            • Tutorial

            Уже давно считается хорошим тоном отдавать контент сайта на языке, предпочитаемом пользователем. Некоторые сервера определяют язык по месту нахождения пользователя с помощью модулей геолокации, остальные берут настройки браузера. Языковые предпочтения пользователя часто сохраняются в cookie, и затем используются при повторном визите.

            Какой метод определения языка пользователя подходит лучше – вопрос достаточно спорный. Мой личный ранг значимости языковой информации (в порядке убывания): cookie, настройки браузера, регион.

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

            Распространенные варианты кодирования языковой информации о ресурсе следующие:
            • каждая языковая версия на отдельном субдомене, например en.example.com, ru.example.com
            • язык ресурса указывается в префиксе URI, например example.com/en/, example.com/ru
            • язык ресурса указывается в GET параметре, например example.com?lang=en, example.com?lang=ru

            Первый вариант наиболее радикальный, каждая языковая версия сайта рассматривается как отдельный ресурс. Могут возникнуть сложности с SSL сертификатом, необходимо заранее предусмотреть все возможные варианты в SAN DNS Host Name, или заказать сертификат с маской, например *.example.com.

            Второй вариант наиболее практичный, выбор языка входит в URI, значит, не будет проблем с индексацией и копированием ссылки.

            Третий вариант выглядит менее привычно, требует дополнительной логики при добавлении остальных GET параметров и может смутить пользователя при копировании ссылки. Не самый лучший вариант для публичных ссылок.
            image
            Я расскажу о реализации второго варианта на базе сервера NGINX. При минимальных изменениях можно применить описанные настройки и для первого варианта.
            Читать дальше →
          • Инструкция: Как создавать ботов в Telegram

            24 июня разработчики Telegram открыли платформу для создания ботов. Новость кого-то обошла стороной Хабр, однако многие уже начали разрабатывать викторины. При этом мало где указаны хоть какие-то примеры работающих ботов.
            Попробую это исправить
          • Опыт домашнего марсоходостроения


              Привет Хабр! Я работаю RnD-художником в минском центре разработки Wargaming. А в свободное время даю волю своей инженерной фантазии. В этой статье я хочу поделиться своим опытом домашнего марсоходостроения.
              Читать дальше →
            • Советская вычислительная школа Сергея Лебедева

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

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



                Читать дальше →
                • +26
                • 14.7k
                • 8
              • Data Driven Realtime Rule Engine в Wargaming: сбор данных

                  Сфера деятельности нашей компании распространяется далеко за пределы игровой разработки. Параллельно с ней мы ведем десятки внутренних проектов, и Data Driven Realtime Rule Engine (DDRRE) – один из наиболее амбициозных.

                  Data Driven Realtime Rule Engine – специальная система, которая при помощи анализа больших массивов данных в режиме реального времени позволяет персонифицировать взаимодействие с игроком через рекомендации, поступающие пользователю исходя из контекста его последнего игрового опыта.

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

                  Архитектура DDRRE

                  Читать дальше →
                • Контейнер в linux, linux в egg, egg в python

                    tux in egg in python

                    Hello, {{username}}

                    Я DevOps и очень люблю Linux. Понятное дело, что с такой связкой я просто не мог не полюбить LinuX Containers (тем более, что BSD и Solaris давно радуют аналогичными возможностями своих пользователей).

                    Естественно, бизнес тоже увидел привлекательную возможность и программы для управления контейнерами стали расти и множиться: docker , rocket, vagga, lxc, systemd-nspawn, etc…

                    Docker стал стандартом де-факто в первую очередь благодаря системе создания и доставки контента. Но главный демон докера запускается от root, и, на мой взгляд, это минус этого проекта (Пруф).

                    Rocket и vagga пошли другим путем, и путь этот носит название unprivileged containers. Вам больше не нужны root привилегии, чтобы запустить процесс в новых namespaces, и это открывает интересные перспективы для построения тестовых площадок и безопасного окружения.

                    Но во всех этих проектах есть один фатальный недостаток: они все написаны с использованием c, go и rust, а я люблю python и не могу поучаствовать в их разработке. Согласитесь, довольно обидно пропускать все веселье.

                    Так что под катом вас ждет библиотека для запуска процессов в новых linux user namespaces:
                    Читать дальше →
                    • +30
                    • 17.1k
                    • 7