• Разработка firmware на С++ словно игра в бисер. Как перестать динамически выделять память и начать жить

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

      Читать далее
    • Конвертируем ODT в XML

      • Tutorial

      Не прошло и полугода со дня публикации моей предыдущей статьи про формирование чистого XML из офисного документа. В этот раз расскажу про формат Open Document Format (ODF) и как можно получить «причесанный» XML из текстовых документов с расширением .odt. В следующей статье покажу, как обработать .ods, и завершу данный цикл статей.

      Читать далее
    • Доступ к элементам std::tuple во время исполнения программы

        При тестировании разрабатываемой библиотеки математических алгоритмов для автономного вождения нашей команде приходилось достаточно много манипулировать с кортежами (std::tuple): итерироваться по каждому элементу кортежа или в произвольном порядке, выбирать элементы, чьи индексы и/или значения удовлетворяют определенному условию, и т.д. Написание для каждого случая отдельной рекурсивной функции прохода по кортежу, во-первых, требует знания основ метапрограммирования и шаблонной магии, а во-вторых, отнимает существенное количество времени разработчика.

        Мне в голову пришла идея: а что если получать доступ к элементам по индексу, не известному на этапе компиляции?

        Читать далее
        • +32
        • 2,4k
        • 5
      • ISTQB. Как проходит сдача экзамена онлайн

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

          Как доказать, что ты хороший тестировщик? Есть много способов это сделать, и один из них – подтвердить свои знания и умения сертификатом ISTQB. В статье будет описан процесс регистрации, предварительной технической подготовки и прохождения онлайн-экзамена, который состоялся 5 декабря 2020.

          Читать далее
          • +10
          • 6,9k
          • 8
        • Robot Framework для автоматизации тестирования: ограничения и плюшки

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

            Я столкнулся с Robot Framework около года назад. Перед нами стояла задача силами двух инженеров автоматизировать довольно большой объем тестов в сжатые сроки, т.к. ручная регрессия перестала влезать в разумные рамки. Сам проект связан с пожарной безопасностью. Тестировать предстояло Web-часть в трех браузерах и Mobile-часть на множестве iOS и Android телефонов и планшетов. Помимо этого, в наличии были тесты, которые взаимодействовали и с Web, и с Mobile. Конечно, это не ракету построить, но и не совсем тривиально. Честно скажу, я сопротивлялся, мы долго думали и в итоге, по совокупности внутренних и внешних факторов, выбрали Robot Framework

            Читать далее
          • Отображение статуса сложных систем на слабых клиентах – ускоряем отклик

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


              Чтобы понять общий статус, нам нужно опросить все базы всех подрядчиков, получить от них данные, обработать их и показать сводный статус пользователю. Даже если мы кэшируем данные на бэке и не опрашиваем подрядчиков каждый раз, клиент получает и обрабатывает много данных. Это может стать проблемой при слабом клиенте и плохом канале. Долгие обновления статуса особенно обидны, когда выясняется, что ничего не произошло. Как быть? Ещё, казалось бы, нам в любом случае нужно получать все данные при изменении статуса, ведь пользователь захочет узнать подробности, что поменялось. Будем запрашивать все данные и подсвечивать изменившиеся? 


              Оказавшись в подобной ситуации, я предложил команде принцип решения, при котором мы передаём на клиент минимум данных, отображаем общий статус и можем подгружать только те частные подробности, которые интересны пользователю. Поскольку я дизайнер UI/UX, решение тоже будет лежать скорее в поле UX, а статья ограничится описательной частью – про код я вам ничего рассказать по понятным причинам не смогу. Тем не менее, этот способ может стать полезным инструментом в арсенале дизайнеров и архитекторов (ребят, отвечающих за принципиальное устройство продукта), поэтому я и решил о нём рассказать. Он помог нам, может быть, поможет и вам. 


              Поехали.



              image
              Читать дальше →
            • Как пять лет просидеть в саппорте и за две недели стать Python-тестировщиком

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

                image
                Читать дальше →
              • Выращивание Nested sets в условиях .Net

                • Tutorial


                Привет, меня зовут Антон, и я разработчик. Сына я родил, дом построил купил, осталось вырастить дерево. Так как агроном из меня не очень, пришлось дерево кодить. Наш проект состоит из нескольких микросервисов на .Net Core, в PostgreSQL базе хранятся сущности, которые образуют иерархические связи. Расскажу о том, какую структуру лучше выбрать для хранения таких данных, почему именно Nested sets, на какие грабли можно наступить, и как с этим потом жить.
                Читать дальше →
              • Конвертируем doc в docx и xml на C#

                • Tutorial

                Продолжаю свой цикл статей, посвященный конвертации различных текстовых файлов с помощью решений, реализованных на языке C#.


                С момента моей последней публикации «Конвертация xls в xlsx и xml на C#» прошло более полугода, за которые я успел сменить как работодателя, так и пересмотреть свои взгляды на некоторые аспекты коммерческой разработки. Сейчас, работая в международной компании с совершенно иным подходом к разработке ПО (ревью кода, юнит-тестирование, команда автотестеров, строгое соблюдение СМК, заботливый менеджер, очаровательная HR и прочие корпоративные плюшки), я начинаю понимать, почему некоторые из комментаторов интересовались целесообразностью предлагаемых мной велокостылей, когда на рынке есть очень достойные готовые решения, например, от e-iceblue. Но давайте не забывать, что ситуации бывают разные, компании – тем более, и если потребность в решении какой-то задачи с использованием определенного инструментария возникла у одного человека, то со значительной долей вероятности она возникнет и у другого.


                Читать дальше →
                • +15
                • 5,2k
                • 2
              • Использование компьютерных симуляторов. Утром софт, вечером железо

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

                  image
                  Читать дальше →
                • Clang-Tidy для автоматического рефакторинга кода

                  • Tutorial

                  Существует много инструментов для анализа кода: они умеют искать ошибки, «узкие места», плохую архитектуру, предлагать оптимизацию. Но много ли среди них инструментов, которые могут не только найти, но и исправить код сами?


                  Представьте, что у вас есть большой проект на С или С++ (или даже С#), который разрабатывался много лет и многими людьми. В результате разные части проекта выглядят по-разному – нет единого стиля имен переменных, функций, типов данных. То есть в разных частях проекта использовался разный coding style: где-то имена в верхнем регистре, где-то CamelCase, где-то с префиксами, в других местах – без… Некрасиво, в общем.


                  Читать дальше →
                  • +13
                  • 3,2k
                  • 5
                • Прототип на «коленке»: cоздание приложения для мониторинга датчиков сердечного ритма в спортивном зале


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


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

                    Читать дальше →
                  • Как подружить RxJava с VIPER в Android, подходы применения и о структуре планировщиков

                      image

                      Привет, Хабровчане. Сегодня мы с вами поговорим о RxJava. Я знаю, что о ней написано материала вагон и маленькая тележка, но, как мне кажется, у меня есть пара интересных моментов, которыми стоит поделиться. Сначала расскажу, как мы используем RxJava вместе с архитектурой VIPER для Android приложений, заодно посмотрим на «классический» способ применения. После этого пробежимся по главным особенностям RxJava и остановимся подробнее на том, как устроены планировщики. Если вы уже запаслись вкусняшками, то добро пожаловать под кат.
                      Читать дальше →
                    • Версионирование в дизайне: как не потеряться в тысяче макетов

                        — Коллеги, файл project_lastVersion точно финальный? Или project_lastVersion_1?
                        — …

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

                        В статье я расскажу о наиболее актуальных и используемых вариантах контроля версий, а именно: Zeplin (+ Sketch), Figma, Abstract (+ Sketch), то есть опишу функции и особенности этих инструментов, относящиеся именно к версионированию.


                        Читать дальше →
                      • Симуляторы компьютерных систем: всем знакомый полноплатформенный симулятор и никому неизвестные потактовый и трассы

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

                          image
                          Читать дальше →
                        • Xamarin.Forms. Личный опыт использования

                            В статье речь пойдет о Xamarin.Forms на примере живого проекта. Кратко поговорим о том, что такое Xamarin.Forms, сравним с похожей технологией WPF, увидим, как достигается кроссплатформенность. Также разберём узкие места, с которыми мы столкнулись в процессе разработки, и добавим немного реактивного программирования с ReactiveUI.

                            image
                            Читать дальше →
                            • +16
                            • 9,2k
                            • 9
                          • Пример использования React Stockcharts для рисования графиков и графических элементов

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

                              image
                              Читать дальше →
                            • «COVabulary»: новые трендовые слова в английском

                                Беспрецедентная ситуация в мире не могла не принести с собой совершенно новые слова в английский язык – Сoronavirusing, Covidiot, Infodemics, Coronic, COVID Boomer и многие другие. Встретить их можно чаще в социальных сетях, они отражают положение дел и настроение людей в самых разных странах. Мы составили мини-словарик с примерами употребления таких слов. Итак, ловите наш «COVabulary» – vocabulary associated with COVID-19.

                                image
                                Читать дальше →
                              • Автоматическое тестирование микросервисов в Docker для непрерывной интеграции

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


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


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


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


                                • конфликты параллельных задач в одном докер-хосте;
                                • конфликты идентификаторов в БД при итерациях теста;
                                • ожидание готовности микросервисов;
                                • объединение и вывод логов во внешние системы;
                                • тестирование исходящих HTTP-запросов;
                                • тестирование веб-сокетов (с помощью SignalR);
                                • тестирование аутентификации и авторизации OAuth.

                                Это статья по мотивам моего выступления на SECR 2019. Так что для тех, кому лень читать, вот запись выступления.


                                КДПВ

                                Читать дальше →
                              • Симуляторы компьютерных систем – похожи ли на реальность

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

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

                                Самое читаемое