• Zabbix на стероидах: как устроена единая платформа мониторинга Сбертеха

      Привет, Хабр! Меня зовут Сергей Прутских, я руковожу направлением мониторинга компании «Сбербанк-Технологии». Основная задача нашей организации — разработка и тестирование программных продуктов для Сбербанка. Для этого в компании сосредоточена крупная ИТ-инфраструктура — 15 тысяч серверов разделены примерно на 1500 тестовых сред, которые относятся к более чем 500 автоматизированным системам. Всего с ними работает около 10 тысяч специалистов.

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


      Читать дальше →
    • Рисование с помощью Render Targets в Unreal Engine

      • Перевод
      • Tutorial

      Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

      С точки зрения пользователя render target в основном используются в качестве своего рода дополнительной камеры. Можно задать захват сцены (scene capture) в какой-то точке и сохранять изображение в render target. Затем можно отобразить render target на меше, например, для симуляции камеры наблюдения.

      После выпуска версии движка 4.13 компания Epic добавила возможность отрисовки материалов непосредственно на render target с помощью блюпринтов. Эта функция позволяет создавать сложные эффекты, например, симуляцию жидкости и деформацию снега. Звучит потрясающе, правда? Но прежде чем переходить к таким сложным эффектам, лучше всего освоиться с чем-то простым. Что может быть проще, чем рисование на render target?

      В этом туториале вы научитесь следующему:

      • Динамически создавать render target с помощью блюпринтов
      • Отображать render target на меше
      • Рисовать текстуру на render target
      • Менять размер кисти и текстуру во время игрового процесса
      Читать дальше →
    • Какие видеокодеки (не) используют браузеры для видеозвонков

      • Перевод

      Типичный запрос в техподдержку Voximplant: «Почему видеозвонок между двумя Chrome выглядит лучше, чем видеозвонок между MS Edge и нативным iOS-приложением»? Коллеги обычно отвечают нейтральное — «потому что кодеки». Но мы, айтишники, любопытны. Даже если я не разрабатываю новый Skype-for-web, чтение «какой браузер что может» и как они разбивают одно видео на несколько потоков разного качества обогащает картину мира и дает свежую тему для обсуждения в курилке. Удачно подвернувшаяся статья от широко известного в узких кругах Dr Alex (с лучшим объяснением термина «media engine» из всех, что я видел), немного нашего опыта, пара вечеров в «Циферблате» — и адаптированный для Хабра перевод ждет под катом!
      Читать дальше →
      • +37
      • 4,9k
      • 6
    • Видеонаблюдение с использованием смартфона — плюсы и минусы

        image

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

        Естественно что такой подход не заменяет полноценные системы видеонаблюдения, однако во многих случаях именно такое решение может быть более предпочтительнее других.
        Читать дальше →
      • Реализация нового транспортного протокола NTCP2 сети I2P

          Транспортные протоколы I2P были разработаны почти 15 лет назад, когда основной задачей было сокрытие содержимого трафика, а не факт использования того или иного протокола. DPI(deep packets inspection) и блокировку трафика в то время никто не принимал в расчет. Однако времена меняются и хотя существующие протоколы I2P по прежнему защищены довольно хорошо, возникла необходимость в новом транспортном протоколе, отвечающему на существующие и будущие угрозы, и, в первую очередь, DPI, анализирующий длину пакетов. Помимо этого, новый протокол использует самые современные достижения криптографии. Полное описание протокола здесь. За основу взят Noise, в котором в качестве хэш-функции используется SHA256, а в качестве DH (в терминологии Noise) — x25519.

          image
          Читать дальше →
          • +32
          • 4,8k
          • 7
        • Делаем «умный» контроллер для кондиционера на ESP8266

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

            Задача


            В квартире стоят четыре кондиционера, ими нужно научиться управлять:

            • Из веб-интерфейса (у меня это Home Assistant, крутящийся на отдельном Raspberry Pi, но в идеале хочется простого подключения к любой системе);
            • Голосом (Google Assistant подойдёт, потом подумаем об Алисе);
            • Скриптами;
            • Дёшево...

            Читать дальше →
          • Опыт использования WebRTC. Лекция Яндекса

              Что лучше использовать при разработке софта — нативные или веб-технологии? Холивар по этому поводу закончится ещё не скоро, но мало кто станет спорить, что нативные функции полезно продублировать для использования в браузерах или WebView. И если когда-то приложения для звонков существовали исключительно отдельно от браузера, то теперь их легко реализовать и в вебе. Разработчик Григорий Кузнецов объяснил, как пользоваться технологией WebRTC для P2P-соединений.


              — Как вы все знаете, в последнее время появляется довольно много приложений, в основу которых заложен прямой обмен данными между двумя браузерами, то есть P2P. Это всевозможные мессенджеры, чаты, звонилки, видеоконференции. Также это могут быть приложения, которые производят какие-то распределенные вычисления. Пределы фантазии никак не ограничиваются.
              Читать дальше →
            • 11 способов (не) стать жертвой взлома в Kubernetes

              • Перевод
              Прим. перев.: Оригинал этой статьи был опубликован в официальном блоге Kubernetes и написан Andrew Martin — одним из основателей молодой британской компании Control Plane, специализирующейся на безопасности для cloud native-приложений, запускаемых в K8s.



              Безопасность в Kubernetes прошла длинный путь с момента появления проекта, однако в ней по-прежнему встречаются подводные камни. Предлагаем список полезных рекомендаций по тому, как защитить кластеры и повысить их устойчивость в случае взлома: начнём с control plane, продолжим с рабочими нагрузками и сетевой безопасностью, а закончим оценкой будущего безопасности.
              Читать дальше →
              • +26
              • 6,4k
              • 1
            • Создание мультяшного шейдера воды для веба. Часть 2

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

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

              • Добавил модели маяка и осьминога.
              • Добавил модель земли с цветом #FFA457.
              • Добавил камере цвет неба #6CC8FF.
              • Добавил в сцену цвет подсветки #FFC480 (эти параметры можно найти в настройках сцены).

              Моя исходная сцена теперь выглядит так.

              Читать дальше →
            • Где и как изучать машинное обучение?

              • Tutorial

              Всем привет!


              Ни для кого не секрет, что интерес к машинному обучению и искусственному интеллекту растет в лучшем случае по экспоненте. Тем временем мой Яндекс Диск превратился в огромную свалку пейперс, а закладки в Google Chrome превратились в список, длина которого стремится к бесконечности с каждым днем. Таким образом, дабы упростить жизнь себе и вам, решил структурировать информацию и дать множество ссылок на интересные ресурсы, которые изучал я и которые рекомендую изучать вам, если вы только вначале пути (буду пополнять список постоянно).

              Путь для развития новичка я вижу примерно так:

              Untitled_presentation
              Читать дальше →
            • Универсальный API для получения информации по чекам

                Привет жителям Хабра.

                В данной статье хотелось бы рассказать про API для получения чеков, которое нам не предоставила всеми любимая ФНС.

                Когда только появились QR-коды на чеках я подумал «Вау, как круто! Ты сканируешь код и видишь если не всю инфу по чеку, то ссылку на него». И какого же было мое разочарование, когда просканировав такой код я увидел что-то вроде

                t=20180518T220500&s=975.88&fn=8710000101125654&i=99456&fp=1250448795&n=1

                Но расстраиваться я не стал и подумал, что ФНС позаботилась о нас и предоставила API для получения такой информации. Погуглив некоторое время я понял, что ФНС нам предоставила только мобильное приложение для проверки чека и просмотра той информации, что поступила к ним от магазина.
                Читать дальше →
              • Cжатие и улучшение рукописных конспектов

                • Перевод
                Я написал программу для очистки отсканированных конспектов с одновременным уменьшением размера файла.

                Исходное изображение и результат:


                Слева: исходный скан на 300 DPI, 7,2 МБ PNG / 790 КБ JPG. Справа: результат с тем же разрешением, 121 КБ PNG [1]

                Примечание: описанный здесь процесс более-менее совпадает с работой приложения Office Lens. Есть другие аналогичные программы. Я не утверждаю, что придумал нечто радикальное новое — это просто моя реализация полезного инструмента.

                Если торопитесь, просто посмотрите репозиторий GitHub или перейдите в раздел результатов, где можно поиграться с интерактивными 3D-диаграммами цветовых кластеров.
                Читать дальше →
              • Пользовательские агрегатные и оконные функции в PostgreSQL и Oracle


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

                  Надо признать, что собственные агрегатные и оконные функции встречается довольно редко. Оконные функции вообще по каким-то причинам традиционно относят к разряду «продвинутого» SQL и считают сложными для понимания и освоения. Тут бы разобраться с теми функциями, которые уже имеются в СУБД!

                  Зачем тогда вообще вникать в этот вопрос? Могу назвать несколько причин:

                  • Хотя оконные функции объективно сложнее обычных агрегатных, но ничего запредельного в них нет; это абсолютно необходимый инструмент для SQL-разработчика. А создание собственной оконной функции, даже совсем простой, позволяет лучше разобраться с тем, как работают стандартные.
                  • Оконные и агрегатные функции — прекрасный способ совместить процедурную обработку с декларативной логикой. В некоторых ситуациях получается выполнить сложные действия, оставаясь в рамках парадигмы решения задачи одним SQL-запросом.
                  • Да и просто интересная тема, а уж тем более интересно сравнить две системы.

                  Пример, на котором будем тренироваться — подсчет среднего, аналог стандартной функции avg для типа numeric (number в Oracle). Мы напишем такую функцию и посмотрим, как она работает в агрегатном и оконном режимах и может ли она вычисляться несколькими параллельными процессами. А в заключение поглядим на пример из реальной жизни.
                  Читать дальше →
                • Информационная безопасность банковских безналичных платежей. Часть 3 — Формирование требований к системе защиты



                    О чем исследование
                    Ссылки на другие части исследования


                    В предыдущих частях исследования мы обсудили экономические основы и IT-инфраструктуру банковских безналичных платежей. В этой части речь пойдет о формировании требований к создаваемой системе информационной безопасности (ИБ).

                    Далее мы рассмотрим:

                    • роль обеспечения безопасности в жизни коммерческой организации;
                    • место службы информационной безопасности в структуре менеджмента организации;
                    • практические аспекты обеспечения безопасности;
                    • применение теории управления рисками в ИБ;
                    • основные угрозы и потенциальный ущерб от их реализации;
                    • состав обязательных требований, предъявляемых к системе ИБ банковских безналичных платежей.
                    Читать дальше →
                  • В macOS High Sierra обнаружились «Черные дыры»



                      Живешь себе живешь, репу не чешешь, в ус не дуешь. И тут внезапно тебе нужно переезжать с обветшавшего iPhone 6 на новенький iPhone X. А поскольку вся твоя жизнь за минувшие семь лет хранится в фоточках и видосиках старого смартфона, терять это добро тебе очень не хочется. И вот ты бэкапишь свое хозяйство через iTunes на Mac, пытаешься переехать на новую «балалайку» и вдруг оказывается, что места для бэкапа нового телефона на жестком диске твоего компьютера уже нет. Ты начинаешь судорожно расчищать авгиевы конюшни дисковое пространство, но результата «нема». Причем удаление «левых файлов» и очистка корзины ни к чему не приводит. Вот такой триллер разыгрался недавно с вице-президентом Parallels Николаем Добровольским. Под катом детективная история про обнаружение им «черной дыры» в macOS High Sierra, поиски истины и счастливый конец, которому могли бы позавидовать главные герои кинофильма «Титаник».
                      Читать дальше →
                    • Удаление фона с помощью глубокого обучения

                      • Перевод


                      Перевод Background removal with deep learning.

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

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

                      Мы поставили перед собой следующие цели:

                      1. Улучшить наши навыки работы с глубоким обучением.
                      2. Совершенствовать наши навыки внедрения продуктов, основанных на ИИ.
                      3. Создать полезный продукт с перспективами на рынке.
                      4. Весело провести время (и помочь весело провести время нашим пользователям).
                      5. Обменяться опытом.
                      Читать дальше →
                      • +21
                      • 9,8k
                      • 5
                    • Ох уж эти модальные окна или почему я полюбил render-функции в VueJs

                      • Tutorial
                      Привет всем!
                      Моя первая публикация прошла с неприятным осадком. Я обещал исправить это недоразумение и на ваш суд представляю свою первую статью-урок по VueJs. Надеюсь, она окажется полезной. Мыслей много, опыта тоже немало. Всю жизнь учусь по чужим статьям, урокам. Пришло время тоже делиться знаниями.
                      А будем мы творить модальные окна. Да опять они. Но не такие простые, как описаны в первой моей (не моей) публикации.

                      Много уже их создано для Vue. Пользовался всякими. И видимо, когда достигаешь какого-то определенного уровня владения инструментом (в данном случае Vue), сразу хочется сделать велосипед, но конечно со своими прибамбасами, типа, чтобы круче всех и т.д. И я не стал исключением из правил.

                      Из всех доступных модальных компонентов, использовал в основном этот — Vuedals.
                      Но решил я его проапгрейдить. В принципе от основы остался только EventBus и взаимодействие событий связанных с открытием-закрытием окон. Основной компонент переписан и стал оберткой-контейнером и добавлен новый компонент — само модальное окно.
                      Но обо всем по порядку. И статья получится очень немаленькая, кто осилит, тот красавчик :)
                      Читать дальше →
                    • Организация системы мониторинга

                        Мониторинг — это главное, что есть у админа. Админы нужны для мониторинга, а мониторинг нужен для админов.



                        За последние несколько лет поменялась сама парадигма мониторинга. Новая эра уже наступила, и если сейчас вы мониторите инфраструктуру как набор серверов — вы не мониторите почти ничего. Потому что теперь "инфраструктура" — это многоуровневая архитектура, и для мониторинга каждого уровня есть свои инструменты.


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


                        У нас на поддержке около пяти тысяч серверов, в самых разных конфигурациях: от систем из трех серверов с кастомными докеровскими сетками, до больших проектов с сотнями серверов в Kubernetes. И за всем этим надо как-то следить, вовремя понимать, что что-то сломалось и быстро чинить. Для этого надо понять что такое мониторинг, как он строится в современных реалиях, как его проектировать и что он должен делать. Об этом и хотелось бы рассказать.

                        Читать дальше →