• Опыт использования автомобильных АКБ с UPS

    Мысли использовать автомобильные АКБ с UPS бродят по просторам интернета очень давно. Плюсы очевидны - стоимость ампер*часа автомобильных АКБ на порядок ниже, чем у родных АКБ для UPS. Многие даже успешно подключили. Я же только обобщил опыт из разных источников.

    Читать далее
  • BPF для самых маленьких, часть первая: extended BPF

      В начале была технология и называлась она BPF. Мы посмотрели на нее в предыдущей, ветхозаветной, статье этого цикла. В 2013 году усилиями Алексея Старовойтова (Alexei Starovoitov) и Даниэля Боркмана (Daniel Borkman) была разработана и включена в ядро Linux ее усовершенствованная версия, оптимизированная под современные 64-битные машины. Эта новая технология недолгое время носила название Internal BPF, затем была переименована в Extended BPF, а теперь, по прошествии нескольких лет, все ее называют просто BPF.


      Грубо говоря, BPF позволяет запускать произвольный код, предоставляемый пользователем, в пространстве ядра Linux и новая архитектура оказалась настолько удачной, что нам потребуется еще с десяток статей, чтобы описать все ее применения. (Единственное с чем не справились разработчики, как вы можете видеть на кпдв ниже, это с созданием приличного логотипа.)


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

      Читать дальше →
      • +32
      • 9,5k
      • 5
    • Бенчмарк Prometheus vs VictoriaMetrics на метриках node_exporter

      • Перевод

      Недавно в VictoriaMetrics появилась возможность скрейпинга целевых объектов Prometheus. И теперь мы можем сравнивать яблоки с яблоками: сколько ресурсов используют Prometheus и VictoriaMetrics при скрейпинге большого количества node_exporter.

      Читать далее
      • +17
      • 3,3k
      • 4
    • Как root-права и альтернативные прошивки делают ваш android смартфон уязвимым

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

      Часто для этого рекомендуется получение прав суперпользователя в системе (root-права), удаление системных приложений от Google и от производителя устройства, или даже полная замена стандартной ОС на альтернативные сборки, чаще всего LineageOS (бывший CyanogenMod). При этом первым шагом в этом процессе всегда будет так называемая "разблокировка загрузчика". Во время её выполнения устройство несколько раз покажет нам страшные предупреждения о том, что теперь оно станет более уязвимо для злоумышленников, но мы смело нажимаем "подтвердить" и шьём root или самую свежую сборку кастомной прошивки, не задумываясь о том какие проблемы создаёт нам незаблокированный загрузчик. 

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

      Интересующихся приглашаю под кат.

      Читать далее
    • Красивый листинг файлов и директорий в nginx

      Для web-сервера Apache существует множество инструкций, в том числе и на Хабре, как стилизовать стандартный листинг файлов и директорий. Однако, как сделать также для сервера nginx, в русскоязычном интернете не найти. Порывшись на просторах интернета я нашел один репозитарий, где как раз и решается этот вопрос. Но для кириллических наименований файлов и папок потребовалась небольшая работа "напильником".


      Читать дальше →
    • Head-of-Line Blocking в QUIC и HTTP/3: Подробности

      • Перевод

      Как вы могли слышать, после четырех лет разработки протоколы HTTP/3 и QUIC приблизились к официальной стандартизации. Предварительные версии уже доступны для тестирования на серверах и браузерах.

      HTTP/3 обещает значительный прирост производительности по сравнению с HTTP/2, в основном благодаря смене транспортного протокола с TCP на QUIC over UDP. В этой статье мы подробно рассмотрим только одно улучшение, а именно — устранение проблемы блокировки начала очереди (Head-of-Line blocking, HOL blocking). Это будет полезно, так как я прочитал много заблуждений о том, насколько это решение полезно и как оно помогает на практике. Решение HOL blocking было основным мотивом не только HTTP/3 и QUIC, но и HTTP/2, и это дает фантастическое представление о причинах эволюции протокола.

      Я расскажу о проблеме и ее формах на фоне истории протокола HTTP. Рассмотрим, как эта проблема влияет на системы приоритизации и контроля перегрузки сети. Цель данной статьи — помочь людям сделать правильные выводы об улучшении производительности в HTTP/3, которые (спойлер!) не всегда так хороши, как пишут в маркетинговых материалах.
      Читать дальше →
      • +36
      • 4,2k
      • 8
    • Введение в VxLAN



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

          У великого русского поэта Тютчева не было компьютера и сети, иначе он бы не писал: «Люблю грозу в начале мая». В последние годы актуальность грозозащит стала поменьше — оптика, беспроводные технологии, но все же все же.
          Если к вам в квартиру заходит кабель, и этот кабель — не оптический, гроза представляет угрозу для вашего оборудования.

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

            template<class T>
            static inline thread_local constexpr const volatile T x = {};

            Такое количество ключевых слов введет в ступор любого неподготовленного разработчика. Но на C++ Russia 2019 Piter Михаил Матросов (mmatrosov) разложил по полочкам квалификаторы и спецификаторы при объявлении переменных и функций.

            Мы подготовили для вас текстовую версию доклада, чтобы вы могли в любой момент вернуться и изучить шпаргалки Михаила.
            Читать дальше →
            • +27
            • 12,5k
            • 9
          • Быстрый роутинг и NAT в Linux

              По мере исчерпания адресов IPv4, многие операторы связи столкнулись с необходимостью организовывать доступ своих клиентов в сеть с помощью трансляции адресов. В этой статье я расскажу, как можно получить производительность уровня Carrier Grade NAT на commodity серверах.
              Читать дальше →
            • Список известных SMR дисков

              • Перевод
              Англоязычный оригинал опубликован в форуме ixsystems и вряд ли широко известен всем, кто может столкнуться с проблемой. Хотя оригинал датирован 16 апреля 2020, он ссылается в том числе на более поздние публикации, то есть обновлялся.

              Жесткие диски, которые записывают данные в перекрывающихся,
              Читать дальше →
            • Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

                Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



                Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

                Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

                Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

                Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

                Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
                Читать дальше →
              • LDAP для интернет-проекта. Часть 3

                  В первой и второй части мы установили и настроили OpenLDAP, можно приступать к настройке авторизации для наших сервисов.
                  Сегодня у нас по плану настройка авторизации для админок в Apache HTTPD через mod_ldap и SVN.
                  Читать дальше →
                • LDAP для интернет-проекта. Часть 2

                    Ссылки на остальные части: первая, третья, четвертая, пятая.

                    Продолжаю повествование.
                    Напомню, что в первой части мы установили OpenLDAP на два сервера и настроили между ними репликацию.

                    2. Настроим резервное копирование, благо это не так сложно.
                    Читать дальше →
                  • LDAP для интернет-проекта

                      Ссылки на остальные части: вторая, третья, четвертая, пятая

                      Наверное все согласятся с тем, что для начинающего интернет-проекта необходима централизованная система AAA (Authentication, Authorization, Accounting): множество пользователей, куча боевых серверов, чуть поменьше серверов разработки, svn, админки, etc…
                      Передо мной тоже встала такая необходимость и я хочу рассказать о том что у меня получилось.
                      Итак, что нам потребуется установить и настроить:
                      1. OpenLDAP, естественно с репликацией
                      2. Бэкап LDAP'а — именно вторым пунктом, можно первым (-;
                      3. phpldapadmin, планирование групп и шаблонов
                      4. авторизация для админок — Apache HTTPD mod_ldap
                      5. авторизация для svn (+sasl)
                      6. авторизация для доступа по ssh — pam_ldap

                      Читать дальше →
                      • +5
                      • 15,8k
                      • 5
                    • Отключаем локальную консоль при использовании x11vnc

                      • Tutorial
                      Всем привет,

                      на просторах интернетов много статей на тему как настроить удаленное подключение к существующей сессии Xorg через x11vnc, но я нигде не нашел, как при этом придавить локальный монитор и ввод, чтобы любой, кто сидит рядом с удаленным компом, не смотрел что вы делаете и не нажимал кнопочки в вашей сессии. Под катом мой способ, как сделать x11vnc более похожим на подключение к винде по RDP.
                      Читать дальше →
                    • Как написать расширение для GNOME Shell: режим «Do Not Disturb»

                      • Tutorial

                      Началось все с переезда на новую версию одного дистрибутива Linux, а там — скандально известный GNOME Shell (GH для краткости), на Javascript. Ну ок, на JS так на JS, работает — и ладно.


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


                      Что делать? Решение написать расширение "Не беспокоить" пришло не сразу, очень не хотелось писать велосипед и/или увязнуть в разработке/коде/тоннах ошибок, но решился, и вот хочу поделиться с Хабром своим опытом.1


                      Читать дальше →
                      • +10
                      • 5,4k
                      • 5
                    • Как опубликовать консольную утилиту на PyPI за 1 минуту

                      • Перевод
                      • Tutorial


                      Разработав консольную утилиту, вы решаетесь опубликовать её на PyPI. Ну правда, что может быть лучше, чем сделать её доступной через pip install? Погуглив, что для этого надо, вы, возможно, наткнётесь на единственный найденный мной пост по теме, который мало того что от 2014 года, так ещё и требует от вас создать кучу папок и файлов для совершенно ненужных (вам) вещей.


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

                      Читать дальше →
                      • +40
                      • 7,5k
                      • 1
                    • Современная стоматология: одномоментная имплантация зуба и наращивание челюстной кости глазами технического директора

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

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

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

                        Модератор.

                        Коротко обо мне


                        Мне скоро 37 лет. До недавнего времени я хвастался тем, что у меня на месте все мои 32 зуба. И ведь действительно, мало у кого к этому возрасту на месте все зубы. (и в принципе, ничего удивительного: я попробовал прикинуть расходы на стоматологов, исходя из сегодняшних тарифов и вышла сумма, свыше $7.000 или свыше ₽450.000).

                        Прошу учесть, что в статье фотографии процесса и слабонервным советую не заглядывать.
                        Часть фотографий не самого лучшего качества, так как весь процесс фотографировался на мобильные телефоны, но самое главное: все фотографии и видеоролики — исключительно мои.

                        image
                        Читать дальше →
                      • Новая библиотека x86 SIMD интринсиков — immintrin debug

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

                          Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8.

                          __m512i _mm512_mask_ternarylogic_epi32 (__m512i src, __mmask8 k, __m512i a, __m512i b, int imm8)
                          FOR j := 0 to 15
                              i := j*32
                              IF k[j]
                                  FOR h := 0 to 31
                                      index[2:0] := (src[i+h] << 2) OR (a[i+h] << 1) OR b[i+h]
                                      dst[i+h]   := imm8[index[2:0]]
                                  ENDFOR
                              ELSE
                                  dst[i+31:i] := src[i+31:i]
                              FI
                          ENDFOR
                          dst[MAX:512] := 0
                          

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