• Админка за 5 минут. Фронтэнд — react-admin, бэкэнд — Flask-RESTful

    • Tutorial


    Если нужно на коленке получить быстро админку, где фронтендом будет react-admin, а бэкендом Flask-RESTful api, то ниже минимальный код в несколько десятков строк, чтобы это реализовать.
    Читать дальше →
  • Создаем современное веб приложение. Знакомство с проектом и подготовка к работе. Часть 1

    image
    В этой серии статей мы пройдем полный цикл создания клиентской части приложения и напишем небольшую библиотеку компонентов с использованием современного стека технологий.
    Читать дальше →
  • Больше чем Ceph: блочное хранилище облака MCS

      «Flying Cart», Afu Chan

      Я работаю в Mail.ru Cloud Solutons архитектором и разработчиком, в том числе занимаюсь нашим облаком. Известно, что распределенной облачной инфраструктуре нужно производительное блочное хранилище, от которого зависит работа PaaS-сервисов и решений, построенных с их помощью.

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

      Расскажу, как это было — возможно, эта история, проблемы, с которыми мы столкнулись, и наши решения будут полезны тем, кто тоже использует Ceph. Кстати, вот видеоверсия этого доклада.
      Читать дальше →
    • Сeph — от «на коленке» до «production»

      Выбор CEPH. Часть 1


      У нас было пять стоек, десять оптических свичей, настроенный BGP, пару десятков SSD и куча SAS дисков всех цветов и размеров, а ещё proxmox и желание засунуть всю статику в собственное S3 хранилище. Не то чтобы это всё было нужно для виртуализации, но раз начал использовать opensource — то иди в своём увлечении до конца. Единственное, что меня беспокоило — это BGP. В мире нет никого более беспомощного, безответственного и безнравственного, чем внутренняя маршртутизация по BGP. И я знал, что довольно скоро мы в это окунёмся.



      Задача стояла банальная — имелся CEPH, работал не очень хорошо. Надо было сделать "хорошо".
      Доставшийся мне кластер был разнородным, настроенным на скорую руку и практически не тюнингованным. Он состоял из двух групп разных нод, с одной общей сеткой выполняющей роль как cluster так и public network. Ноды были набиты четырьмя типами дисков — два типа SSD, собранными в два отдельных placement rule и два типа HDD разного размера, собранными в третью группу. Проблема с разными размерами была решена разными весами OSD.


      Саму настройку разделили на две части — тюнинг операционной системы и тюнинг самого CEPH и его настроек.

      Читать дальше →
    • Совместное сетевое использование криптографического токена пользователями на базе usbip

      В связи с изменением законодательства относительно доверительных услуг ( «Про электронные доверительные услуги» Украина), на предприятии появилась необходимость нескольким отделам работать с ключами, расположенными на токенах (на данный момент, вопрос о количестве аппаратных ключей еще открыт).

      Как инструмент с наименьшими затратами (безвозмездно) сразу выбор пал на usbip. Сервер на Ubintu 18.04 заработал благодаря публикации Укрощаем USB/IP и успешно опробован на нескольких флеш накопителях (за неимением на тот момент токена). Никаких особых проблем, кроме монопольного владения (резервирования на пользователя) в тот момент времени выявлено не было. Понятно чтобы организовать доступ нескольким пользователям (хотя бы двум, для начала) необходимо разделить им доступ во времени и заставить работать по очереди.

      Стал вопрос: Как с наименьшими танцами сделать чтобы у всех все работало…
      Читать дальше →
    • Файл дескриптор в Linux с примерами

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

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

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

        Интервьюер прервал меня на последнем слове, дополнив свой вопрос: «Предположим, что данные нам не нужны, это просто дебаг лог, но приложение не работает из-за того, что не может записать дебаг»?

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

        «ну хорошо», сказал я, «если мы не можем перезапускать приложение и данные нам не важны, то мы можем просто очистить этот открытый файл через файл дескриптор, даже если мы его не видим в команде ls на файловой системе».

        Интервьюер остался доволен, а я нет.

        Тогда я подумал, почему человек, проверяющий мои знания, не копает глубже? А что, если данные все-таки важны? Что если мы не можем перезапускать процесс, и при этом этот процесс пишет на файловую систему в раздел, на котором нет свободного места? Что если мы не можем потерять не только уже записанные данные, но и те данные, что этот процесс пишет или пытается записать?
        Читать дальше →
      • Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + Multi-interfaces + SpamAssassin-learn + Bind

          Данная статья о том как настроить современный почтовый сервер.
          Postfix + Dovecot. SPF + DKIM + rDNS. С IPv6.
          С шифрованием TLS. С поддержкой нескольких доменов — часть с настоящим SSL сертификатом.
          С антиспам-защитой и высоким антиспам-рейтингом у других почтовых серверов.
          С поддержкой нескольких физических интерфейсов.
          С OpenVPN, подключение к которому через IPv4, и которое даёт IPv6.

          Если вы не хотите изучать эти все технологии, но хотите настроить такой сервер — тогда эта статья для вас.

          В статье отсутствуют попытки пояснить каждую деталь. Пояснение идёт к тому, что настроено не стандартно или важно с точки зрения потребителя.
          Читать дальше →
        • Как отбрасывать 10 миллионов пакетов в секунду

          • Translation
          В компании нашу команду по противостоянию DDoS-атакам называют «отбрасыватели пакетов» (the packet droppers — прим. пер). Пока все остальные команды делают клёвые штуки с проходящим через нашу сеть трафиком, мы развлекаемся поиском новых способом избавиться от него.


          Фотография: Brian Evans, CC BY-SA 2.0

          Умение быстро отбрасывать пакеты очень важно в противостоянии DDoS-атакам.

          Отбрасывание пакетов, достигающих наших серверов, может быть выполнено на нескольких уровнях. Каждый способ имеет свои плюсы и минусы. Под катом мы рассмотрим всё, что мы опробовали.
          Читать дальше →
        • Как не стать Python-разработчиком

          Как выглядит трек обучения программированию на Python с нуля? С чего стоит начать? На чем сделать акцент? Как не потерять интерес?

          Полгода я искал ответы на эти вопросы, тщательно исследуя предметную область. Я обнаружил много полезных советов. Особенно в заметке Василия Большакова и на Хекслете. Но мне не хватало структуры. Знания нарастали со всех сторон и превращались в кучу. Чтобы структурировать процесс обучения и оценить его масштаб, я собрал план.
          Читать дальше →
        • Лабораторная работа: введение в Docker с нуля. Ваш первый микросервис

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

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

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


            В этой статье представлены три небольшие истории, которые произошли в нашей практике: в разное время и в разных проектах. Объединяет их то, что они связаны с сетевой подсистемой Linux (Reverse Path Filter, TIME_WAIT, multicast) и иллюстрируют, как глубоко зачастую приходится анализировать инцидент, с которым сталкиваешься впервые, чтобы решить возникшую проблему… и, конечно, какую радость можно испытать в результате полученного решения.
            Читать дальше →
          • Как получить D-U-N-S number бесплатно

            • Tutorial


            D-U-N-S number — международный идентификатор юридических лиц. В России добровольно его добывают в одном случае: когда в AppStore нужно зарегистрировать компанию-разработчика.

            Расскажем, как добыть этот номер бесплатно и сэкономить 12 240.
            Читать дальше →
          • Оптимизация веб-серверов для повышения пропускной способности и уменьшения задержки

            • Translation


            Привет! Меня зовут Макс Матюхин, я работаю в SRV-команде Badoo. Мы в Badoo не только активно пишем посты в свой блог, но и внимательно читаем блоги наших коллег из других компаний. Недавно ребята из Dropbox опубликовали шикарный пост о различных способах оптимизации серверных приложений: начиная с железа и заканчивая уровнем приложения. Его автор – Алексей Иванов – дал огромное количество советов и ссылок на дополнительные источники информации. К сожалению, у Dropbox нет блога на Хабре, поэтому я решил перевести этот пост для наших читателей.

            Читать дальше →
            • +78
            • 37k
            • 7
          • Настройка основного и двух резервных операторов на Linux-роутере с NetGWM

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



              В статье об отказоустойчивом роутере мы вскользь упоминали свой корпоративный стандарт для решения этой задачи — Open Source-продукт NetGWM — и обещали рассказать об этой утилите подробнее. Из этой статьи вы узнаете, как устроена утилита, какие «фишки» можно использовать в работе с ней и почему мы решили отказаться от использования альтернативных решений.
              Читать дальше →
            • IceCash 2.0 Web АРМ Кассира и АИС по обмену данными с кассами под Linux на Python


                Как-то меня спросили: «Зачем писать то, что уже написано многократно и на более профессиональном уровне? То что ты сделаешь будет заведомо хуже и лишено грамотной поддержки». Я тогда ответил просто: «Мне хочется, чтоб под линух и чтоб код свободный. Чтоб драйвера не покупать для кассы».

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

                Читать дальше →
              • Тюнинг типовых ролей Windows. Часть первая: Файлы и печать


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

                  Читать дальше →
                • Удаленная переустановка Linux по ssh без доступа к консоли

                  Понадобилось мне переустановить сервер, который как бы хостился у знакомых знакомых. Там был сильно устаревший Debian, а, самое главное, система стояла на обычных разделах без lvm и пространство было распределено очень не оптимально. Физический доступ получить к нему было практически нереально, местного админа попросить что-то сделать было можно, но занять это могло неделю. Виртуальный KVM у сервера был, но извне на него попасть было нельзя; у как бы хостера не было лишних IP-адресов, а внутрь его сети попасть было невозможно. Надо было переустановить сервер из-под работающей системы по ssh. Ага, давайте поменяем ротор у турбины не выключая, потом её перезапустим и будет она с новым ротором работать!
                  Читать дальше →
                • Мошенничество при покупке б/у MacBook: «А номер то, говорят, не настоящий!»

                  image

                  Все компьютеры Apple имеют похожий дизайн. Многие модели одной серии невозможно отличить по внешним признакам. Этим пользуются мошенники, которые завышают год выпуска или технические характеристики, с целью продать дороже Мак. Я много лет работаю мастером по ремонту компьютеров Apple, встречал и случаи такого мошенничества. Всех кому интересно, как не дать себя обмануть при покупке б/у Мака, приглашаю под кат.
                  Читать дальше →
                • Основы компьютерных сетей. Тема №5. Понятие IP адресации, масок подсетей и их расчет

                  • Tutorial


                  Приветствую вас на очередном выпуске. И сегодня речь пойдет о том, какие бывают IP-адреса, и как ими пользоваться. Что такое маска подсети, как она считается, и для чего она нужна. Как делить сети на подсети и суммировать их. Заинтересовавшихся приглашаю к прочтению.
                  Читать дальше →
                • Реализуем безопасный VPN-протокол

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



                    Результатом этой работы предполагается создание работающего клиент-сервера, пригодного для review разработчиками (то есть немного кода на высокоуровневом языке), достаточно производительного, чтобы использоваться в промышленных условиях, имеющего высокий порог безопасности: GoVPN.
                    Читать дальше →