Как стать автором
Обновить
Сначала показывать

Context manager в рамках языка Python

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров20K

Делай красиво, а некрасиво не делай.

Python — это язык программирования, уделяющий много внимания тому, как мы пишем код. Самый первый пункт Zen of Python, принципов разработки на Python от его BDFL: «Beautiful is better than ugly». Красивое лучше уродливого. Это само по себе простое и понятное утверждение, вынесенное на первое место в дзэне, напоминает нам простую истину — мы пишем код для людей, а не для машин. Машине для исполнения программы хватит нулей и единиц в бинарном файле, человек же куда более требователен.

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

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии10

Высоконагруженный IPC между C++ и Python

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров3.8K

Несколько лет назад Аурига по заданию известного медицинского стартапа разрабатывала решение, связанное с параллельной обработкой нескольких потоков видеоданных. Ключевой особенностью технического решения была скоростная передача и обработка большого потока видеоданных от драйвера, написанного на С++, в обработчик, написанный на Python.

В процессе разработки мы успели отрефакторить код, написанный математиками, перепробовать распространённые протоколы IPC и написать свой собственный, и дать полную нагрузку на 40-ядерный Xeon.

А ещё мы дебажили Windows.

Читать далее
Всего голосов 22: ↑21 и ↓1+20
Комментарии11

Повторная передача сообщений в Spring Kafka

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров8.5K

В статье рассмотрена тема обработки ошибок в Spring Kafka, а так же основные параметры и настройки, которые необходимо учесть при настройке конфигурации.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Как успешно прижиться в отделе автотестирования ПО медицинских устройств

Время на прочтение4 мин
Количество просмотров2.1K

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

Вот представьте себе – работаешь ты себе спокойненько обычным ручным тестировщиком стандартных аппликух, web-порталов, десктопов уже который год. И тут тебе звонят и говорят: «А не хотите ли…? Добро пожаловать в отдел автотестирования медицинских девайсов». Вот так чихуа-хуа, подумала я. Учитывая, что опыта в автотестированиии у меня не было от слова совсем, работы на медицинских проектах – 0. Понять, кто такой этот питон и чего там не так с его скриптом было невозможно. Технического образования тоже не имеется. Но тут внутри включилась та самая упертая….баран, который твердо заявил, что я буду не я, если не разберусь в этом всем.

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

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

Читать далее
Всего голосов 13: ↑10 и ↓3+7
Комментарии5

React vs Vue vs Angular

Время на прочтение12 мин
Количество просмотров39K

React vs Vue vs Angular. Общее сравнение JavaScript фреймворков

В ходе развития веб-разработки 3 JavaScript-фреймворка стали хорошо известны всем front-end разработчикам: React, Vue и Angular.

React считается библиотекой пользовательского интерфейса, Angular - полномасштабным front-end фреймворком, предоставляющим собственные инструменты для всех связанных с разработкой веб-приложений функций, а Vue - прогрессивным фреймворком, реализованным как дополнительная разметка для HTML.

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

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

Читать далее
Всего голосов 13: ↑8 и ↓5+3
Комментарии37

Инструментирование ассемблерного кода для сборки данных о динамическом покрытии

Время на прочтение14 мин
Количество просмотров2.6K

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

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии4

Squish для Qt глазами разработчика

Время на прочтение10 мин
Количество просмотров3.9K

Squish - это платный инструмент для автоматического тестирования пользовательского интерфейса. Есть Squish для QT, Squish для Windows, для веба, для Java и iOS.

Во всех случаях тестовые сценарии - это скрипты на питоне или других скриптовых языках.

Рассмотрим следующие моменты при работе со Squish для QT на питоне:

Настройка и запуск без Squish IDE.

Real name, symbolic name и явные имена.

Прокси-объекты и их сравнение.

Suid на тестируемом приложении.

Тестирование рендеринга с помощью скриншотов.

Неудобство API Squish и работа без него: симуляция ввода, элементы списков и таблиц.

Добавление методов в метаобъект для вызова через Squish.

Подробнее
Всего голосов 8: ↑8 и ↓0+8
Комментарии2

Simics: Забиваем гвозди сваебоем

Время на прочтение9 мин
Количество просмотров3K

Любите ли вы отзывчивые программы так, как люблю их я? Любовь эта привела меня к Колибри ОС - невероятно шустрой операционной системе, которая запускает программу до того, как вы осознаете, что кликнули по ней. И недавно у неё нашли уязвимость: ping of death.

Так получилось, что моя первая работа была связана с симуляцией компьютерных систем – от серверов до мобильных устройств. И там мы использовали симулятор Simics. Этой системой пользуются крупные производители железа для опережающей разработки драйверов.

Если бы только можно было использовать Simics для отладки любительской ОС...

Читать далее
Всего голосов 25: ↑25 и ↓0+25
Комментарии2

Оценка (не)покрытия кода по результатам динамического анализа

Время на прочтение7 мин
Количество просмотров1.6K

Создание любого ПО сопровождается ошибками. Программисты ошибаются в выборе типов, ошибаются в реализации алгоритмов. Аналитики ошибаются в формулировке требований к ПО, и из этих ошибок рождаются ошибки в функционировании готового продукта. Любой (ну ладно, почти любой) производитель программных продуктов хочет обезопасить себя от ошибок в выпускаемом ПО. Для того чтобы избежать типовых ошибок придумали различные стандарты (типа MISRA C) и утилиты для анализа написанного кода (например, Lint). Но корректно написанный код - это половина проблемы, вторая половина - это насколько верно и полно код реализует требования к программе, и нет ли в программе того чего там быть не должно. Ответ на эти вопросы в свою очередь дает тестирование и проверка покрытия кода (например, gcov).

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

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Начинаем работать с BACnet

Время на прочтение13 мин
Количество просмотров8.3K
imageМногие из нас, наверное, смотрели боевики и видели, как герои, сидя в темной комнате, удаленно управляют дверями в зданиях, открывая и закрывая их. Управляли освещением, лифтами, чтобы помочь кому-то куда-то пройти или, наоборот, помешать – ну и думали, что да, в теории такое возможно, и в каких-то зданиях, вероятно, есть какая-то автоматизация, но больше это кажется какой-то выдумкой. Так получилось, что в устройство, которое мы делаем, заказчик захотел добавить поддержку BACnet. Так я познакомился с тем, что, оказывается, существует специализированный протокол для автоматизации зданий, который развивается аж с 1987 года.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии3

Управление сторонними зависимостями в коде

Время на прочтение9 мин
Количество просмотров2.4K

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

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

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

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии1

5 шагов заказчика к успешному UX/UI продукта

Время на прочтение3 мин
Количество просмотров1.5K
image

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

В достижении всего вышеупомянутого дизайн (UX/UI) играет не последнюю роль.

В этой статье я тезисно перечислила то, что, по моему мнению, лучше соблюдать при создании продукта (например, цифрового: какого-нибудь сайта, веб-приложения и тд), чтобы UX/UI как минимум соответствовал основным правилам дизайна, а в перспективе оказался бы успешным.
Читать дальше →
Всего голосов 4: ↑2 и ↓20
Комментарии0

Vue: переворот сознания

Время на прочтение9 мин
Количество просмотров7.6K


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


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


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


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

Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии32

Wix toolset: не так страшен черт, как Windows installer

Время на прочтение56 мин
Количество просмотров13K

В статье я хотел бы поделиться своим опытом написания инсталлятора для Windows с использованием инструмента Windows Installer XML Toolset (далее - Wix). К сожалению, несмотря на всю мощь данного инструмента, его использование сильно осложняется куцей документацией, старенькими кукбуками, вялыми ветками форумов и вытеснением .msi и .exe пакетов контейнеризацией. Однако, сегодня продолжают активно развиваться и создаваться программные продукты требующие развертывания на виндовой машине с использованием традиционных установочных пакетов.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии12

Краткое описание нотации BPMN

Время на прочтение10 мин
Количество просмотров269K

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

О том, что такое BPMN, написано много. Но практически вся информация, которую можно найти в Интернете, ориентирована на специалистов, которые ранее сталкивались с BPMN или другим стандартом моделирования бизнес-процессов. Предлагаю разобраться «с нуля» — что такое BPMN? В чем особенности и преимущества этой технологии и почему она все чаще используется для описания бизнес-процессов организации.

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

Практика показывает, что базовые знания методологии моделирования бизнес-процессов здесь незаменимы. Перед тем как изучать моделирование, для начала необходимо ознакомиться с методологией бизнес-моделирования, понять общие принципы, приобрести определенные навыки бизнес-анализа и только потом приступать к изучению нотации BPMN.

Читать далее
Всего голосов 16: ↑14 и ↓2+12
Комментарии26

1x PCIe чтобы управлять всем

Время на прочтение10 мин
Количество просмотров9.8K

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

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

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

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

Читать далее
Всего голосов 20: ↑18 и ↓2+16
Комментарии17

GraphQL и почти все-все-все. Часть 1:)

Время на прочтение4 мин
Количество просмотров9.9K


Введение:


Все чаще слышу об использовании GraphQL, но так как последнее время все рабочее время уходило на Xamarin + GRPC + ASP.NET Core, технология казалась для меня загадочно манящей и очень не известной, потому решил опробовать ее на нескольких языках, чтобы увидеть какие плюсы и минусы в разных подходах. Начать решил с родного и любимого C# + Hot Chocolate, но планирую так же попробовать Typescript + Prisma, Kotlin + graphql-kotlin, и возможно что-то другое.
Поехали
Всего голосов 6: ↑6 и ↓0+6
Комментарии1

Micro Frontend Архитектура на примере Angular

Время на прочтение13 мин
Количество просмотров16K
В наше цифровое время веб-приложения становятся все более масштабней и сложней. Такие веб-приложения могут быть разделены на несколько модулей, разработанных отдельными командами, которые удобно запускать в производство по отдельности.

По мере того, как приложения со временем усложняются, требуя масштабируемости «на лету» и высокой скорости реагирования, архитектура микро-фронтенд, основанная на компонентах Angular, становится все более эффективным решением для сложных веб-приложений.

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

Плюсы микро-фронтенд архитектуры


  • Автоматизация CI /CD. Поскольку каждое приложение интегрируется и развертывается независимо, это упрощает CI/CD. Так как все модули разделены, то не нужно беспокоиться обо всем приложении при внедрении нового модуля. Если в коде модуля есть ошибка, CI/CD прервет весь процесс сборки.
    Гибкость команд разработчиков. Многочисленные команды могут разрабатывать и развивать информационные системы, работая по отдельности.
  • Единая ответственность. Каждая команда микро-фронтеда на 100% фокусируется на функциональности своего микро-фронтенд приложения.
  • Возможность повторного использования. Микро-фронтенд приложение может быть повторно использовано несколькими командами в разных системах.
  • Технологический агностицизм. Архитектура микро-фронтенд не зависит от технологии. Возможно использовать компоненты, разработанные на разных фреймворков веб-разработки (React, Vue, Angular и т.д.).
  • Простой порог входа в систему. Небольшие модули легче изучать и понимать новым разработчикам, входящим в команды, чем монолитную архитектуру с огромной структурой кода.

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии7

Пишем тетрис в bat-файле

Время на прочтение5 мин
Количество просмотров23K

В комментарии к моей предыдущей статье, «Какие задачи не решаются bat-файлами?», предположили, что на bat-файлах не получится написать Doom. Насчет Дума я пока не уверен, а вот тетрис у меня получился.

Играть в тетрис бесплатно
Всего голосов 94: ↑94 и ↓0+94
Комментарии41

Какие задачи не решаются bat-файлами?

Время на прочтение8 мин
Количество просмотров27K

Бат-файлы ведут свою историю со времен MS-DOS. Новые фичи добавлялись с сохранением обратной совместимости. Из-за этого многое в языке bat-файлов, как мы увидим далее, нелогично и неудобно.

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

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

Читать далее
Всего голосов 36: ↑34 и ↓2+32
Комментарии53

Информация

Сайт
hr.auriga.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия