Search
Write a publication
Pull to refresh
20
0
Сергей Поповичев @Vanger

DevOps

Send message

Ищем уязвимости в Python-коде с помощью open source инструмента Bandit

Reading time6 min
Views15K


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

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

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

В этом туториале мы рассмотрим, как даже в очень простом коде могут появиться уязвимости и как использовать утилиту Bandit для их поиска.
Читать дальше →

Сборка ядра Linux с LTO оптимизацией

Reading time25 min
Views34K


Технический прогресс не стоит на месте, появляются новые компьютерные архитектуры, компиляторы становятся умнее и генерируют более быстрый машинный код. Современные задачи требуют все более креативного и эффективного решения. В данной статье пойдет речь, на мой взгляд, про один из самых прогрессивных тулчейнов LLVM и компиляторы на его основе Clang и Clang++, для языков программирования С и C++ соответственно. Хоть GCC — конкурент Clang, может агрессивнее оптимизировать циклы и рекурсию, Clang дает на выходе более корректный машинный код, и чаще всего не ломает поведение приложений. Плюс оптимизация программ не заканчивается только оптимизацией циклов, поэтому Clang местами дает лучшую производительность. В GCC же за счет переоптимизации вероятность получить unpredictable behavior значительно выше. По этой причине на многих ресурсах не рекомендуют использовать -O3 и LTO(Link Time Optimization) оптимизации для сборки программ. Плюс в случае агрессивной оптимизации, размер исполняемых файлов может сильно увеличиться и программы на практике будут работать даже медленнее. Поэтому мы остановились на Clang не просто так и опции компиляции -O3 и LTO работают в нем более корректно. Плюс современные компиляторы более зрелые, и сейчас уже нет тех детских болячек переоптимизации и LTO.
Узнать подробности

Рациональное использование ресурсов в Kubernetes

Reading time5 min
Views8.8K

Одна из важных задач при работе с Kubernetes - рациональное распределение ресурсов. Для этого необходимо правильно назначать контейнерам лимиты(limits) и запросы (requests). Но это не всегда простая задача.

Может возникнуть ситуация, при которой, вы зарезервировали намного больше ресурсов, чем необходимо приложению, потому что хотите избежать проблем связанных с исчерпывается памяти в контейнерах или возникновения троттлинга ЦП. В таком случае вам придётся оплачивать неиспользуемые ресурсы. Учтите, что планировщику Kubernetes будет сложнее найти подходящий узел для таких рабочих нагрузок.

Эта статья поможет разобраться, как быстро находить неиспользуемые ресурсы с помощью PromQL.

Читать далее

Inline variables

Reading time8 min
Views38K

Первоначальное назначение ключевого слова inline состояло в том, чтобы служить индикатором для оптимизатора, что встроенная подстановка функции предпочтительнее вызова функции, то есть вместо выполнения команды CPU для передачи управления в тело функции, копия тела функции выполняется без генерирования вызова. Эта оптимизация (inline expansion) основана на идее, что выполнение вызова функции является относительно дорогостоящим: оно требует перехода к новой подпрограмме, передачи аргументов функции и копирования возвращаемых значений. Inline expansion подавляет вызов функции путем копирования инструкций функции непосредственно в тело вызывающего объекта.

Читать далее

Как строить диаграмму Гантта по Jira-тикетам

Reading time6 min
Views41K

Статья для менеджеров, которым необходимо вести управление проектами в изменчивом мире Agile. Поделюсь опытом использования двух приложений Jira Roadmap и Structure Gantt.

Читать далее

EasyUI: действительно easy?

Reading time11 min
Views5.9K

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

Дизайн сегодня один из необходимых компонентов любого продукта, а для сайтов и веб-приложений — это самая важная часть. Всё, что находится под капотом, скрыто от глаз клиента. Пользователя не интересует гениальность исполнения движка или уникальность архитектуры: подразумевается само собой, что программа должна работать надежно и безопасно. Современному пользователю необходим стильный графический интерфейс.

Раньше создание такого интерфейса вызывало серьёзную головную боль у программистов, но теперь для избавления от неё выпущено большое количество различных фреймворков и библиотек. Казалось бы — ура, проблема решена! Однако, теперь перед нами встаёт другой вопрос: какой препарат выбрать — пенталгин или панадол? 

Вопрос нелёгкий, и решать, в итоге, вам. Я же расскажу о своём лекарстве: библиотеке EasyIU, предназначенной для создания полноценных одностраничных веб-приложений (SPA) и основанной на jQuery, Angular, Vue и React.

Моё знакомство с EasyUI началось около двух лет назад, когда наша команда приступила к разработке софта для системы управления питанием и его интеллектуального распределения между потребителями. Управляющее устройство имело на борту Linux и кроме распределения питания должно было обмениваться данными с различными периферийными устройствами, уметь контролировать их, а также принимать показания от большого количества (до нескольких сотен) датчиков. Правила управления могли изменяться, позволяя пользователю настроить работу всего комплекса для выполнения необходимых задач. 

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

Работа с параметрами во внешнем EEPROM

Reading time8 min
Views9.2K

Привет Хабр. Наконец-то у меня появилось свободное время и я могу немного поделиться своим опытом, возможно кому-то это будет полезно, и поможет в его работе, и я этому буду безусловно рад. Ну что же,....

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

И вот если вам интересен один из способов, который использую я со студентами добро пожаловать под cut

Доступ к EEPROM параметрам

Начинающему QA: полезные функции снифферов на примере Charles Proxy

Reading time8 min
Views97K

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

В этой статье я расскажу об основных функциях снифферов, которые могут быть полезны QA. Попробую не вдаваться в теорию, а сфокусироваться на практике. Наиболее популярными представителями анализаторов трафика сейчас являются WhireShark, Fiddler и Charles Proxy. Об удобстве интерфейсов и функционале каждого из них можно рассуждать долго, учитывая все плюсы и минусы. Но здесь я отдал предпочтение Charles, поскольку сам им активно пользуюсь. Буду рассказывать на его примере.

Читать далее

Open Source датасет SOVA: аудио для распознавания и синтеза речи

Reading time14 min
Views8.8K

Всем привет! Мы — команда компании «Наносемантика», и недавно мы запустили проект SOVA, где занимаемся сбором датасета для использования его в обучении нейронных сетей и создания виртуальных ассистентов на базе искусственного интеллекта.

Мы подготовили большой датасет для обучения движков распознавания речи и хотим поделиться им, чтобы компании могли внедрять его у себя для решения  разного рода бизнес-задач. Данные – это новая нефть, а одна из важнейших причин прогресса в системах распознавания на базе машинного обучения – наличие размеченных датасетов. Если вы интересуетесь исследованиями и разработками в области речевой аналитики – заходите под кат.

Читать далее

Деплоим проект на Kubernetes в Mail.ru Cloud Solutions. Часть 1: архитектура приложения, запуск Kubernetes и RabbitMQ

Reading time18 min
Views13K

О Kubernetes и его роли в построении микросервисных приложений известно, пожалуй, большинству современных IT-компаний. Однако при его внедрении часто возникает вопрос — какой вариант установки выбрать: Self-Hosted или Managed-решение от одного из облачных провайдеров. О недостатках первого варианта, думаю, известно всем, кто проходил через ручное конфигурирование K8s: сложно и трудоемко. Но в чем лучше Cloud-Native подход?

Я Василий Озеров, основатель агентства Fevlake и действующий DevOps-инженер (опыт в DevOps — 8 лет), покажу развертывание Kubernetes-кластера на базе облака Mail.ru Cloud Solutions. В этом цикле статей мы создадим MVP для реального приложения, выполняющего транскрибацию видеофайлов из YouTube. 

Читать далее

MQTT-SN + ESP8266

Reading time9 min
Views12K

В процессе поисков более легковесного протокола, похожего на полюбившийся мне MQTT для проекта беспроводных датчиков отслеживания положения на базе ESP8266 - оказалось, что существует, но пока не сильно распространена, версия протокола с названием MQTT For Sensor Networks (MQTT-SN).

“MQTT-SN спроектирован как можно более похожим на MQTT, но адаптирован к особенностям беспроводной среды передачи данных, таким как низкая пропускная способность, высокие вероятность сбоя в соединениях, короткая длина сообщения и т.п. Также оптимизирован для дешевых устройствах с аккумуляторным питанием и ограниченными ресурсами по обработке и хранения.”

В интернете довольно мало информации о данном протоколе, ковыряние в которой и стало основой для написание данной заметки.

Читать далее

Мы Опубликовали Качественный, Простой, Доступный и Быстрый Синтез Речи

Reading time9 min
Views69K

fiona


Вторая частьhttps://habr.com/ru/post/563484/


Вокруг темы синтеза речи сейчас много движения: на рынке есть огромное число тулкитов для синтеза, большое число закрытых коммерческих решений за АПИ (как на современных технологиях, так и на более старых, т.е. "говорилки") от условных GAFA компаний, большое количество американских стартапов, пытающихся сделать очередные аудио дипфейки (voice transfer).


Но мы не видели открытых решений, которые бы удовлетворяли одновременно следующим критериям:


  • Приемлемый уровень естественности речи;
  • Большая библиотека готовых голосов на разных языках;
  • Поддержка синтеза как в 16kHz так и в 8kHz из коробки;
  • Наличие своих собственных голосов у авторов решения, не нарушающих чужие права и лицензии;
  • Высокая скорость работы на "слабом" железе. Достаточная скорость работы на 1 потоке / ядре процессора;
  • Не требует GPU, команды ML инженеров или какой-либо дополнительной тренировки или для использования;
  • Минимализм и отсутствие зависимостей / использование в 1 строчку / не надо ничего собирать или чинить;
  • Позиционируется именно как готовое решение, а не очередной фреймворк / компиляция чужих скриптов / тулкитов для сбора плюсиков;
  • Решение никак не связано и не аффилировано с закрытыми экосистемами и продуктами Гугла / Сбера / Яндекса / вставить нужное;

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

Docker для самых маленьких автоматизаторов

Reading time7 min
Views24K

Привет, меня зовут Руслан, я руковожу тестированием в Максилекте. Сегодня поговорим о базовых понятиях Devops, которые пригодятся автоматизатору. Расскажу про CI/CD в целом - что это такое и для чего оно нужно, а также про Docker. Объясню на пальцах, как развернуть тестируемый сервис в Docker-контейнере и пробросить к нему порты, как запустить тесты снаружи или внутри контейнера.

Читать далее

DNS-as-Code на базе dnscontrol

Reading time12 min
Views6.2K

По роду своей деятельности я занимаюсь системным администрированием. Поскольку сам по себе я человек ленивый, я люблю максимально всё автоматизировать. Отсюда и любовь ко всяким средствам "Everything-as-Code".

Читать далее

Синтез речи виртуальных ассистентов Салют: как мы отошли от классических научных статей, чтобы сделать его человеческим

Reading time12 min
Views24K

Автор исходного изображения: Blue Flourishes/Shutterstock.com

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

Согласно нашей «библии ассистентов», Сбер — энергичный гик, Афина — взрослая и деловая, а Джой — дружелюбная и веселая. Они отличаются не только уникальными характерами, обращением на «ты»/«вы» и предпочтениями в шутках. Мы попытались сделать так, чтобы их личности отражались и в голосах, которыми они разговаривают.


Персонажей озвучили телеведущая Анастасия Чернобровина (Афина) и актёры дубляжа Даниил Щебланов и Татьяна Ермилова (Сбер и Джой). Виртуальных ассистентов можно услышать в приложениях Сбер Салют, СберБанк Онлайн, нашем колл-центре по номеру 900, а также в устройствах SberBox и SberPortal. Всё, что вы услышите, — это синтез речи, реализованный с помощью нейросетей. Он работает на связке Tacotron 2 и LPCNet.

Но, чтобы было понятно, что, зачем и почему, — немного теории и истории

Читать далее

10 удивительно полезных базовых функций Python

Reading time7 min
Views34K
image

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

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

Настройка собственного почтового сервера

Reading time7 min
Views178K

Зачем нужен собственный почтовый сервер можно почитать в оригинальной статье. А поскольку на "habr" обретает надежду всяк сюда входящий, то далее пошаговая инструкция как сделать все настройки, чтобы почтовый сервер функционировал правильно: мог достучаться до любого адресата и сообщения не помечались как спам.

Читать далее

Интеграция: синхронное, асинхронное и реактивное взаимодействие, консистентность и транзакции

Reading time15 min
Views128K

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

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

Читать далее

Беспроводная мини погодная станция с e-paper экраном на батарейках

Reading time4 min
Views22K
Приветствую всех читателей Habr! В своей сегодняшней статье хочу поделиться с вами своим новым устройством – датчиком температуры, влажности и давления с функцией предсказания погоды. Датчик работает на микроконтроллерах nRF52. Данный проект это логическое продолжение этого проекта. В новом датчике используется дисплей на электронных чернилах размером 2.9 дюймов. В датчике установлен сенсор BME280, так же есть место под установку датчиков SI7021, HTU21D. Работает от батареек CR2450. Может передавать данные в системы Умного Дома, так же может работать в режиме “без сети”.


Information

Rating
Does not participate
Location
Калужская обл., Россия
Date of birth
Registered
Activity