• Ускоряем работу Ansible

      Под капотом d2c.io мы используем Ansible. С его помощью мы создаем виртуальные машины у облачных провайдеров, устанавливаем программное обеспечение, а также управляем Docker-контейнерами с приложениями клиентов.


      Ansible – удобный инструмент, который готов к работе почти без настройки. Это возможно благодаря отсутствию агентов (agentless system), поэтому не нужно ничего предустанавливать на обслуживаемые хосты.


      Для подключения к хостам в большинстве случаев используется ssh. Однако оборотной стороной этой медали является определенная медлительность, так как вся логика находится на управляющем сервере и каждую задачу (task) Ansible формирует локально и отправляет на исполнение через SSH-подключение. Затем он принимает результат, анализирует его и переходит к следующему шагу. В статье мы рассмотрим, как можно ускорить работу Ansible.

      Читать дальше →
      • +33
      • 13k
      • 5
    • Использование SVG в качестве Placeholder’a

      • Перевод
      image

      Генерация SVG из изображений может использоваться для Placeholder’ов.

      Я занимаюсь оптимизацией изображений и картинок для их быстрой загрузки. Одна из самых интересных областей исследования это Placeholder’ы: что показывать, когда изображение еще не загружено.

      В последние дни я сталкивался с некоторыми методами загрузки, которые используют SVG, и я хотел бы описать их в этом посте.

      В этом посте мы рассмотрим следующие темы:

      • Обзор различных типов Placeholder’ов
      • Placeholder на основе SVG (контуры, фигуры и силуэты)
      • Автоматизация процесса.

      Читать дальше →
    • Качество продуктов упало. Почему? Что делать?

        image


        С введением санкций часть регионов лишилась некоторых привычных продуктов. Поэтому мы активно занялись импортозамещением. Где-то удачно, где-то не очень, но следствием стало общее падение качества продуктов. Почему это произошло и что с этим делать? Как спасти себя от некачественных продуктов и возможно ли повысить качество продуктов общими усилиями? Я попробовал ответить на эти вопросы.

        Читать дальше →
      • Глубокое обучение для новичков: распознаем изображения с помощью сверточных сетей

        • Перевод
        • Tutorial

        Введение


        Представляем вторую статью в серии, задуманной, чтобы помочь быстро разобраться в технологии глубокого обучения; мы будем двигаться от базовых принципов к нетривиальным особенностям с целью получить достойную производительность на двух наборах данных: MNIST (классификация рукописных цифр) и CIFAR-10 (классификация небольших изображений по десяти классам: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль и грузовик).


        Читать дальше →
      • Особенности Jupyter Notebook, о которых вы (может быть) не слышали

        • Перевод
        Jupyter Notebook – это крайне удобный инструмент для создания красивых аналитических отчетов, так как он позволяет хранить вместе код, изображения, комментарии, формулы и графики:



        Ниже мы расскажем о некоторых фишках, которые делают Jupyter очень крутым. О них можно прочитать и в других местах, но если специально не задаваться этим вопросом, то никогда и не прочитаешь.
        Читать дальше →
      • Packet crafting как он есть

        • Tutorial


        Создание пакетов или packet crafting — это техника, которая позволяет сетевым инженерам или пентестерам исследовать сети, проверять правила фаерволлов и находить уязвимые места.
        Делается это обычно вручную, отправляя пакеты на различные устройства в сети.
        В качестве цели может быть брандмауэр, системы обнаружения вторжений (IDS), маршрутизаторы и любые другие участники сети.
        Создание пакетов вручную не означает, что нужно писать код на каком-либо высокоуровневом языке программирования, можно воспользоваться готовым инструментом, например, Scapy.

        Scapy — это один из лучших, если не самый лучший, инструмент для создания пакетов вручную.
        Утилита написана с использованием языка Python, автором является Philippe Biondi.
        Возможности утилиты практически безграничны — это и сборка пакетов с последующей отправкой их в сеть, и захват пакетов, и чтение их из сохраненного ранее дампа, и исследование сети, и многое другое.
        Всё это можно делать как в интерактивном режиме, так и создавая скрипты.
        С помощью Scapy можно проводить сканирование, трассировку, исследования, атаки и обнаружение хостов в сети.
        Scapy предоставляет среду или даже фреймворк, чем-то похожий на Wireshark, только без красивой графической оболочки.
        Утилита разрабатывается под UNIX-подобные операционные системы, но тем не менее, некоторым удается запустить ее и в среде Windows.
        Эта утилита так же может взаимодействовать и с другими программами: для наглядного декодирования пакетов можно подключать тот же Wireshark, для рисования графиков — GnuPlot и Vpython.
        Для работы потребуется права суперпользователя (root, UID 0), так как это достаточно низкоуровневая утилита и работает напрямую с сетевой картой.
        И что важно, для работы с этой утилитой не потребуются глубокие знания программирования на Python.
        Читать дальше →
      • Apache vs Nginx: практический взгляд

        • Перевод
        Apache vs Nginx

        Введение


        Apache и Nginx — 2 самых широко распространенных веб-сервера с открытым исходным кодом в мире. Вместе они обслуживают более 50% трафика во всем интернете. Оба решения способны работать с разнообразными рабочими нагрузками и взаимодействовать с другими приложениями для реализации полного веб-стека.

        Несмотря на то, что у Apache и Nginx много схожих качеств, их нельзя рассматривать как полностью взаимозаменямые решения. Каждый из них имеет собственные преимущества и важно понимать какой веб-сервер выбрать в какой ситуации. В этой статье описано то, как каждый из этих веб-серверов ведет себя при различных условиях.
        Читать дальше →
      • Изолирование приложения с IP-адресом из VPN другой страны на примере Steam

        • Tutorial
        Abstract: Изоляция приложения на уровне сети использованием network namespaces Линукса. Организация SSH-туннелей.

        Традиционно, большая часть статьи будет посвящена теории, а скучные скрипты — в конце статьи. В качестве субъекта для экспериментов будет использоваться Steam, хотя написанное применимо к любому приложению, включая веб-браузеры.

        Вместо вступления. Я просто покажу эту картинку:

        147%… Что-то мне это напоминает. Впрочем, хабр не для политики.

        Цена на игры в Стиме зависит от региона. Регион — от IP'шника. Есть желание иметь цены в рублях, а не в евро.

        Для этого мы используем VPN через SSH с использованием tun-устройств, плюс network namespaces для изоляции приложения от всех остальных сетевых устройств.

        Network namespaces


        Традиционно, приложение, запускающееся даже с правами пользователя, имеет полный доступ в сеть. Оно может использовать любой сетевой адрес, существующий в системе для отправки пакетов.

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

        Если у нас есть несколько интерфейсов (один из которых относится к VPN), то нет штатных методов сказать стиму, что надо использовать его, а не eth0/wlan0. Точнее, мы можем «завернуть» весь трафик в VPN, но это не всегда желательно. Как минимум — рост latency и снижение скорости (даже если VPN ведёт на супербыстрый сервер, увеличение latency, оверхед от туннеля и фиксированная ширина локального канала ставят TCP в положение, когда приходится резать скорость). Как максимум — одно дело «покупать через русский VPN», другое дело — пускать туда весь трафик. Меня совсем не прельщает использование VPN для получения защиты роскомнадзором от оппозиции и вольнодумства.

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

        Для решения этой задачи в Linux, уже довольно давно (аж с 2007 года) существует технология, называемая network namespaces, то есть пространства имён для сетей. Суть технологии: над сетевыми интерфейсами создаётся подобие «каталогов», в каждом каталоге может быть несколько сетевых интерфейсов и приложений. Приложение, оказавшееся в заданном сетевом пространстве имён, может использовать (и видит) только те сетевые интерфейсы, которые отнесены к этому пространству.

        Картинка ниже поясняет происходящее:

        Читать дальше →
      • Топ-10 data mining-алгоритмов простым языком

        • Перевод


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

        Сегодня я постараюсь объяснить простыми словами принципы работы 10 самых эффективных data mining-алгоритмов, которые описаны в этом докладе.

        Когда вы узнаете, что они собой представляют, как работают, что делают и где применяются, я надеюсь, что вы используете эту статью в качестве отправной точки для дальнейшего изучения принципов data mining.
        Читать дальше →
        • +43
        • 116k
        • 8
      • Книги для системного администратора. Моя книжная полка

          Книги.
          Я считаю, что важнейшим инструментом получения скилов системного администрирования являются именно они — книги.
          Нет специальных факультетов, обучающих «админству» — каждый постигает это самостоятельно. Путем проб, ошибок и боли, потере важных данных различных злоключений.
          В начале пути сложно определиться, что же нужно прочесть — ведь массив информации столь огромен!
          В данном посте я хочу собрать наиболее важные и значимые труды для системных администраторов.
          Уклон будет на *nix админство, но, надеюсь тема окажется небезынтересной и для Windows коллег и в комметариях они заполнят мои пробелы.
          Пост субьективен и отражает лишь мой собственный опыт — я раскажу о книгах, которые помогли моему становлению.

          Читать дальше →
        • Анализ SSL/TLS трафика в Wireshark

          • Tutorial


          Как скрыть от посторонних конфиденциальную информацию?
          Самое простое – зашифровать.
          В Интернет и Интранет-сетях шифрацией данных управляет протокол SSL/TLS.
          Солдат спит, служба идет.
          Однако иногда возникает необходимость выполнить обратное – расшифровать перехваченный трафик.
          Это может потребоваться как для отладки работы приложений, так и для проверки подозрительной сетевой активности.
          Или в целях изучения работы SSL/TLS (очевидные, вредоносные цели не обсуждаются).

          Как и при каких условиях можно расшифровать дамп SSL/TLS трафика в Wireshark?
          Попробуем разобраться.

          Читать дальше →
        • Введение в машинное обучение с помощью Python и Scikit-Learn

          Привет, хабр!



          Меня зовут Александр, я занимаюсь машинным обучением и анализом веб-графов (в основном — теоретическим), а также разработкой Big Data продуктов в одном из операторов Большой Тройки. Это мой первый пост — прошу, не судите строго!)

          В последнее время ко мне все чаще стали обращаться люди, которые хотят научиться разрабатывать эффективные алгоритмы и участвовать в соревнованиях по машинному обучению с вопросом: «С чего начать?». Некоторое время назад я руководил разработкой инструментов Big Data для анализа медиа и социальных сетей в одном из учреждений Правительства РФ, и у меня остался некоторый материал, по которому обучалась моя команда и которым можно поделиться. Предполагается, что у читателя есть хорошее знание математики и машинного обучения (в команде были в основном выпускники МФТИ и студенты Школы Анализа Данных).
          Читать дальше →
        • Памятка пользователям ssh

            abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

            Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

            Оглавление:
            • управление ключами
            • копирование файлов через ssh
            • Проброс потоков ввода/вывода
            • Монтирование удалённой FS через ssh
            • Удалённое исполнение кода
            • Алиасы и опции для подключений в .ssh/config
            • Опции по-умолчанию
            • Проброс X-сервера
            • ssh в качестве socks-proxy
            • Проброс портов — прямой и обратный
            • Реверс-сокс-прокси
            • туннелирование L2/L3 трафика
            • Проброс агента авторизации
            • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
            Читать дальше →
          • Сделай сам: MSc Computer Science на уровне топ американских университетов из дома

              Вступление


              Давно хотел написать статью про образование в Computer Science, но руки не доходили. Решил все-таки это наконец сделать. Итак, о чем пойдет речь? Речь о том, что из себя представляет диплом MSc Computer Science топовых университетов США (во всех подробностях, включая основные курсы, книги и проекты) и как ему соответствовать.

              Почему именно MSc? Это — некая развилка: с одной стороны после MSc — вы уже готовый к жизни инженер (да, речь идет о инженерной подготовке, как мне кажется это самое больное место в нашей системе образования), с другой — можно спокойно идти по пути PhD. Как известно, в PhD программу можно попасть и не особо умея программировать — особенно это касается теоретического Computer Science. С другой стороны найти работу программиста тоже дело не очень сложное, и часто не требует мощного образования. Но достигнув уровня MSc — вы получаете возможность разбираться как во всех новый идеях в Computer Science, так и возможность их воплотить в практику. То есть с одной стороны круто разобраться в каком-нибудь deep learning и сделать в нем что-то новое, а также взять и написать свою операционную систему (кто так сделал?). Причем вы не зажаты в рамки узкой специализации (если конечно продолжаете учиться). То есть вы теперь — универсальный солдат, готовый на все.

              Надеюсь что эта статья будет полезна:
              1. Студентам, которые хотят соответствовать высоким стандартам топ вузов США, или собирающиеся туда в аспирантуру по Computer Science
              2. Профессионалам, которые хотят закрыть «дыры» и пробелы
              3. Может кто-то из преподавателей возьмет на заметку для своих курсов.
              4. Студентам, аспирантам американских вузов — хотелось бы тоже получить фидбэк, особенно касается последних трендов в образовании

              Что же здесь будет написано? Минимум философии и общих мыслей: конкретная программа undergraduate и graduate курсов, конечно из дисциплин наиболее мне близких. Все курсы были лично прочувствованы на собственной шкуре, по этому и пишу. (Я пытался записаться на все интересные курсы, которые были, но мой основной упор — системное программирование, базы данных и искусственный интеллект. Отсюда конечно некий bias, но пытаюсь предложить более-менее универсальную программу).
              Читать дальше →
            • Как работает мозг?

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

                История компьютерных наук в целом сводится к тому, что учёные пытаются понять, как работает человеческий мозг, и воссоздать нечто аналогичное по своим возможностям. Как именно учёные его исследуют? Представим, что в XXI веке на Землю прилетают инопланетяне, никогда не видевшие привычных нам компьютеров, и пытаются исследовать устройство такого компьютера. Скорее всего, они начнут с измерения напряжений на проводниках, и обнаружат, что данные передаются в двоичном виде: точное значение напряжения не важно, важно только его наличие либо отсутствие. Затем, возможно, они поймут, что все электронные схемы составлены из одинаковых «логических вентилей», у которых есть вход и выход, и сигнал внутри схемы всегда передаётся в одном направлении. Если инопланетяне достаточно сообразительные, то они смогут разобраться, как работают комбинационные схемы — одних их достаточно, чтобы построить сравнительно сложные вычислительные устройства. Может быть, инопланетяне разгадают роль тактового сигнала и обратной связи; но вряд ли они смогут, изучая современный процессор, распознать в нём фон-неймановскую архитектуру с общей памятью, счётчиком команд, набором регистров и т.п. Дело в том, что по итогам сорока лет погони за производительностью в процессорах появилась целая иерархия «памятей» с хитроумными протоколами синхронизации между ними; несколько параллельных конвейеров, снабжённых предсказателями переходов, так что понятие «счётчика команд» фактически теряет смысл; с каждой командой связано собственное содержимое регистров, и т.д. Для реализации микропроцессора достаточно нескольких тысяч транзисторов; чтобы его производительность достигла привычного нам уровня, требуются сотни миллионов. Смысл этого примера в том, что для ответа на вопрос «как работает компьютер?» не нужно разбираться в работе сотен миллионов транзисторов: они лишь заслоняют собой простую идею, лежащую в основе архитектуры наших ЭВМ.

                Моделирование нейронов


                Кора человеческого мозга состоит из порядка ста миллиардов нейронов. Исторически сложилось так, что учёные, исследующие работу мозга, пытались охватить своей теорией всю эту колоссальную конструкцию. Строение мозга описано иерархически: кора состоит из долей, доли — из «гиперколонок», те — из «миниколонок»… Миниколонка состоит из примерно сотни отдельных нейронов.



                По аналогии с устройством компьютера, абсолютное большинство этих нейронов нужны для скорости и эффективности работы, для устойчивости ко сбоям, и т.п.; но основные принципы устройства мозга так же невозможно обнаружить при помощи микроскопа, как невозможно обнаружить счётчик команд, рассматривая под микроскопом микропроцессор. Поэтому более плодотворный подход — попытаться понять устройство мозга на самом низком уровне, на уровне отдельных нейронов и их колонок; и затем, опираясь на их свойства — попытаться предположить, как мог бы работать мозг целиком. Примерно так пришельцы, поняв работу логических вентилей, могли бы со временем составить из них простейший процессор, — и убедиться, что он эквивалентен по своим способностям настоящим процессорам, даже хотя те намного сложнее и мощнее.
                Читать дальше →
              • Беседа с космонавтом: об управлении МКС, об орбитальном интернете, и о полете на Марс

                  Vinogradov

                  Следующая часть нашей беседы с космонавтом Павлом Виноградовым. На этот раз поговорим о технике:
                  Про многоразовые корабли и ракеты. Про космический мусор и НЛО. Про опасности в открытом космосе. О скафандрах. Про туалет. Про воду. Про замкнутый цикл и автономность станций. О системе управления МКС. Про орбитальный интернет. Про работоспособность бытовой электроники в космосе. Про космическую экспансию. Про «Гравитацию» и «Интерстеллар». О полете на Марс.
                  Читать дальше →
                • Ресурсы для изучения Wolfram Language (Mathematica) на русском языке

                  • Tutorial

                  На протяжении довольно долгого времени я и мои коллеги, участники Русскоязычной поддержки Wolfram Mathematica, занимались разработкой и коллекционированием полностью бесплатных и качественных ресурсов на русском языке, которые позволили бы любому желающему научиться программировать на языке Wolfram Language (Mathematica) самостоятельно.

                  Думаю, что пришла пора рассказать об этом на Хабрахабре, создав статью о разрабатываемой коллекции ресурсов, которая будет постоянно расширяться и пополняться, и будет служить, по сути, русскоязычным аналогом страницы "Where can I find examples of good Mathematica programming practice?" на сайте Mathematica at StackExchange.com.
                  Читать дальше →
                • Что нас ждет в ближайшие 25 лет? Предсказания от Рэймонда Курцвейла

                    Рэймонд Курцвейл, предсказавший в 1990 победу компьютера в шахматном матче с человеком, состоявшуюся в 1997, возможность персональных компьютеров получить ответы по интернету без проводов к 2010 году и использование в начале 2000-х экзоскелетов в медицине дал прогноз на следующие 25 лет. Людям запретят вести машину на скоростных шоссе, мы сможем загружать своё сознание в компьютер и подключим наши мозги к искусственному неокортексу.

                    Американский авиационный инженер и предприниматель Питер Диамандис для своей новой книги BOLD взял интервью у Рэймонда Курцвейла.

                    image
                    Читать дальше →
                  • Paperwork: свободная альтернатива Evernote

                      У популярного веб-сервиса для создания и хранения заметок Evernote скоро появится свободная альтернатива — Paperwork. Благодаря открытым исходникам каждый может установить Paperwork на своём сервере и предоставить доступ пользователям по локальной сети или через интернет.

                      Демонстрационный доступ открыт по адресу demo.paperwork.rocks. После регистрации создаётся демо-аккаунт для создания и редактирования заметок. Базу данных удаляют ежедневно в 3:00 (CET). Для регистрации можно использовать произвольный email, он не проверяется.


                      Читать дальше →
                    • Must-read книги за 2014 год по ИБ и программированию

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

                        Безопасность


                        Тактика хакера: практическое руководство по тестированию на проникновение (The Hacker Playbook: Practical Guide To Penetration Testing)




                        Книга написана в стиле планирования футбольной игры. Здесь подробно и пошагово разобраны проблемы и трудности, с которыми сталкиваются специалисты по безопасности, тестируя системы защиты. В частности, рассматриваются атаки на различные типы сетей, обход антивирусов и взлом систем безопасности. Автор книги — Питер Ким, специалист по IT-безопасности с многолетним опытом, CEO компании Secure Planet.
                        Читать дальше →