• Как дебажить переменные окружения в Linux

      Часто бывает так, что приходишь на машину и обнаруживаешь какой-то скрипт, запущенный под системным пользователем неделю назад. Кто его запустил? Где искать этот run.php? Или добавляешь запись в /etc/crontab, а скрипт там падает с ошибкой «command not found». Почему? И что делать? 

      У меня есть ответы на эти вопросы.

      Читать дальше →
    • Изучаем Docker, часть 1: основы

      • Перевод
      • Tutorial
      Технологии контейнеризации приложений нашли широкое применение в сферах разработки ПО и анализа данных. Эти технологии помогают сделать приложения более безопасными, облегчают их развёртывание и улучшают возможности по их масштабированию. Рост и развитие технологий контейнеризации можно считать одним из важнейших трендов современности.

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

      Часть 1: основы
      Часть 2: термины и концепции
      Часть 3: файлы Dockerfile
      Часть 4: уменьшение размеров образов и ускорение их сборки
      Часть 5: команды
      Часть 6: работа с данными

      image

      Если вы пока не знаете о том, что такое Docker, сейчас у вас есть шанс сделать первый шаг к пониманию этой платформы. А именно, освоив этот материал, вы разберётесь с основами Docker и попутно приготовите пиццу.
      Читать дальше →
    • Делаем современное веб-приложение с нуля

      • Tutorial
      Итак, вы решили сделать новый проект. И проект этот — веб-приложение. Сколько времени уйдёт на создание базового прототипа? Насколько это сложно? Что должен уже со старта уметь современный веб-сайт?

      В этой статье мы попробуем набросать boilerplate простейшего веб-приложения со следующей архитектурой:


      Что мы покроем:

      • настройка dev-окружения в docker-compose.
      • создание бэкенда на Flask.
      • создание фронтенда на Express.
      • сборка JS с помощью Webpack.
      • React, Redux и server side rendering.
      • очереди задач с RQ.
      Читать дальше →
    • Batfish. Введение

      image

      Одной из проблем современных сетей является их хрупкость. Множество правил фильтраций, политик обмена маршрутной информации, протоколов динамического роутинга делают сети запутанными и подверженными влиянию человеческого фактора. Авария на сети может произойти ненамеренно при внесении изменений в route-map или ACL (один, два). Нам определено не хватает инструмента, позволяющего оценить поведение сети с новой конфигурацией перед внесением изменений в продакшн. Хочется точно знать, будет ли мне доступна сеть A, если я отфильтрую часть BGP-анонсов, полученных от провайдера B? Каким маршрутом пойдут пакеты из сети C к серверу D, если на одном из транзитных линков я увеличу IGP метрику в два раза? Ответить на эти и многие другие вопросы нам поможет Batfish!
      Читать дальше →
      • +18
      • 5,8k
      • 4
    • Мега-Учебник Flask, Часть XXII: Фоновые задачи

      • Перевод
      • Tutorial

      (издание 2018)


      Miguel Grinberg




      Туда Сюда


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

      Читать дальше →
      • +3
      • 12,8k
      • 4
    • Что такое EVPN/VXLAN

        В этой статье я расскажу — что такое EVPN/VXLAN и почему особенности этой технологии кажутся мне привлекательными для применения в ЦОД. Я не буду глубоко погружать вас в технические детали, а остановлюсь на них лишь в той мере, в которой это необходимо для знакомства с технологией. Почти все чего я буду касаться в этой статье так или иначе связанно с передачей трафика второго уровня OSI между устройствами в одном широковещательном домене. Есть множество задач прикладного характера, которые можно комфортно решить, имея такую возможность, одним из наиболее знакомых примеров такой задачи является миграция виртуальных машин в рамках одного или нескольких ЦОД. И если некоторое время назад разговор об этом неминуемо поворачивал в плоскость обсуждения проблем и неудобств общего широковещательного домена, сейчас, напротив, мы можем размышлять о решении этой задачи с точки зрения новых возможностей, перспектив и удобства.
        Читать дальше →
        • +11
        • 20,2k
        • 4
      • Введение в VxLAN



          Сегодня мы поговорим об очередной интересной технологии — VxLAN — что это за зверь и с чем его едят, да и вообще нужен ли он вам. Мое знакомство с данной технологией началось с изучения гипервизоров — я постоянно натыкался на термин VxLAN, но что это и как работает не знал. В один прекрасный день я решил все-таки прочитать, что это за зверь. Прочитав пару-тройку статей, я усвоил для себя основные аспекты работы технологии и облегченно выдохнул, прочитав, что данная технология — удел гипервизоров и к транспорту имеет косвенное отношение (хотя, как оказалось позже отношение VxLAN к транспорту имеет самое, что ни на есть прямое). После чего про технологию благополучно забыл и вернулся я к ней снова только через год, когда начал погружаться в EVPN — большинство статей и мануалов были именно о симбиозе EVPN и VxLAN. Литературы по данной технологии много, особенно если вы владеете английским. Я же попробую в данной статье рассказать об основах работы данной технологии и показать на практике — как это настраивается и работает. Но начнем с MPLS…
          Читать дальше →
          • +34
          • 70,3k
          • 7
        • Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения

          • Tutorial

          Регулярные выражения в Python от простого к сложному




          Решил я давеча моим школьникам дать задачек на регулярные выражения для изучения. А к задачкам нужна какая-нибудь теория. И стал я искать хорошие тексты на русском. Пяток сносных нашёл, но всё не то. Что-то смято, что-то упущено. У этих текстов был не только фатальный недостаток. Мало картинок, мало примеров. И почти нет разумных задач. Ну неужели поиск IP-адреса — это самая частая задача для регулярных выражений? Вот и я думаю, что нет.
          Про разницу (?:...) / (...) фиг найдёшь, а без этого знания в некоторых случаях можно только страдать.

          Плюс в питоне есть немало регулярных плюшек. Например, re.split может добавлять тот кусок текста, по которому был разрез, в список частей. А в re.sub можно вместо шаблона для замены передать функцию. Это — реальные вещи, которые прямо очень нужны, но никто про это не пишет.
          Так и родился этот достаточно многобуквенный материал с подробностями, тонкостями, картинками и задачами.

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

          • Tutorial
          Привет, хабрапользователь! Сегодня я попробую представить тебе очередную статью о докере. Зачем я это делаю, если таких статей уже множество? Ответов здесь несколько. Во-первых не все они описывают то, что мне самому бы очень пригодилось в самом начале моего пути изучения докера. Во-вторых хотелось бы дать людям к теории немного практики прямо по этой теории. Одна из немаловажных причин — уложить весь накопленный за этот недолгий период изучения докера опыт (я работаю с ним чуть более полугода) в какой-то сформированный формат, до конца разложив для себя все по-полочкам. Ну и в конце-концов излить душу, описывая некоторые грабли на которые я уже наступил (дать советы о них) и вилы, решение которых в докере просто не предусмотрено из коробки и о проблемах которых стоило бы задуматься на этапе когда вас распирает от острого желания перевести весь мир вокруг себя в контейнеры до осознавания что не для всех вещей эта технология годна.

          Что мы будем рассматривать в данной статье?

          В Части 0 (теоретической) я расскажу вам о контейнерах, что это и с чем едят
          В Частях 1-5 будет теория и практическое задание, где мы напишем микросервис на python, работающий с очередью rabbitmq.
          В Части 6 — послесловие
          Читать дальше →
        • Зеркалирование трафика на Juniper MX

          • Tutorial
          image alt

          Сегодня мы поговорим о зеркалировании трафика на маршрутизаторах Juniper серии MX. После свичей производства Cisco, Huawei или Arista конфигурация SPAN и RSPAN на JunOS будет казаться очень сложной, но за сложной (на первый взгляд) конфигурацией скрываются огромные возможности платформы MX в области зеркалирования трафика. Подход Juniper хоть и на первый взгляд сложен, но становится прост и понятен, если не тупо копипастить конфиги с одной коробки на другую, а понимать, что и зачем делается. Идеология JunOS предполагает использовать filter based forwarding (FBF) в целях зеркалирования, что дает нам определенную гибкость в реализации сложных схем зеркалирования трафика.

          Итак, начнем. Мы рассмотрим несколько примеров зеркалирования:

          1. Локальное зеркалирование с порта на порт
          2. Зеркалирование на два и более потребителя
          3. Зеркалирование на удаленный хост
          4. Избирательное зеркалирование на два и более потребителя
          5. Локальное зеркалирование L2 трафика
          6. Зеркалирование L2 трафика на удаленный сервер
          7. Использование более двух mirroring инстансов на одном FPC

          Итак, начнем по порядку.
          Читать дальше →
          • +12
          • 11,9k
          • 8
        • Начало работы с Junos PyEZ

          • Tutorial
          Сейчас очень популярна тема сетевой автоматизации. Одним из инструментов такой автоматизации в мире Juniper является библиотека PyEZ, разрабатываемая командой Джереми Шульмана (Jeremy Schulman). PyEZ — это микро-фреймворк для удаленного управления и автоматизации устройств Juniper, написанный на языке Python. Основным преимуществом PyEZ является его простота и нацеленность на аудиторию сетевых инженеров, а не программистов.

          Некоторые возможности PyEZ:
          • Сбор «фактов», таких как серийный номер, версия ОС и т.д.
          • Извлечение оперативной (аналог команд show) информации
          • Извлечение конфигурации
          • Изменение конфигурации

          В этой статье я бы хотел остановиться на возможности извлечения оперативной информации на примере коммутатора EX4200.
          Читать дальше →