Search
Write a publication
Pull to refresh
145
10.9
Александр Рябиков @rsashka

Системный архитектор

Send message

Отечественный микроконтроллер К1986ВК025 на базе процессорного ядра RISC-V для приборов учета электроэнергии

Reading time11 min
Views47K
Добро пожаловать в эпоху RISC-V!

Решения на базе открытого стандарта системы команд RISC-V всё чаще появляются на рынке. Уже в серийном производстве микроконтроллеры от китайских коллег, интересные решения предлагает Microchip с FPGA на борту. Растет экосистема ПО и средств разработки для данной архитектуры. Кажущиеся ранее непоколебимыми лидеры все чаще встречаются в объявлениях о перепродаже, а молодые стартапы привлекают многомиллионные инвестиции. Компания Миландр так же ввязалась в эту гонку и сегодня начала поставку заинтересованным предприятиям инженерных образцов своего нового микроконтроллера К1986ВК025 на базе процессорного ядра RISC-V для приборов учета электроэнергии. В общем картинки, характеристики и прочая информация, а так же немного хайпа под катом.


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

Язык тестовых сценариев Testo Lang: простая автоматизация сложных тестов

Reading time12 min
Views12K

Картинка для привлечения внимания


Если Вы разрабатываете более-менее сложный программный продукт, то Вам должна быть знакома ситуация, когда системные (end-to-end) тесты по тем или иным причинам автоматизировать не удаётся. На это могут быть разные причины, я приведу несколько примеров:


  • У приложения нет и не может быть API, за которое можно зацепиться, по соображениям безопасности;
  • Приходится поддерживать legacy-проект, про автоматизацию тестирования которого никто никогда не задумывался;
  • Во время тестирования задействуется сторонний продукт, например — антивирус;
  • Необходимо проверить работоспособность продукта на большом количестве различных целевых платформ;
  • Тестовый стенд представляет собой сложную гетерогенную систему, включающую в себя промежуточное сетевое оборудование.

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


Если Вы ищете решение этой проблемы — то прошу под кат.

Исследовательский практикум. Голосовой UX – как сделать голосового виртуального ассистента лучшей версией человека

Reading time9 min
Views1.8K

Почему это важно?


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

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

image

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

Разработка измерительного прибора ИРИС

Reading time8 min
Views6.3K
image
Приветствую, сообщество Хабра. Недавно наша компания выпустила на рынок контрольно-измерительный прибор ИРИС. Являясь главным программистом этого проекта, хочу рассказать вам про разработку прошивки прибора (По оценке руководителя проекта прошивка составляет не более 30% от общего объема работ от идеи до серийного производства). Статья в первую очередь будет полезна начинающим разработчикам в плане понимания трудозатрат на «реальный» проект и пользователям, которые желают «заглянуть под капот».
Читать дальше →

Google testing framework (gtest)

Reading time6 min
Views190K
Когда вставал вопрос о тестировании кода, я не задумываясь использовал boost::test. Для расширения кругозора попробовал Google Test Framework. Помимо всяких имеющихся в нем плюшек, в отличии от boost::test проект бурно развивается. Хотел бы поделиться приобретенными знаниями. Всем кому интересно прошу
под кат.

Micro Property — минималистичный сериализатор двоичных данных для embedded систем

Reading time9 min
Views2.7K
Micro Property — библиотека для сериализации данных с минимальными накладными расходами. Она разработана для использования в микроконтроллерах и различных встраиваемых устройствах с ограничениями по размеру памяти, которым приходится работать по низкоскоростным линиям связи.

Конечно, я знаю про такие форматы как xml, json, bson, yaml, protobuf, Thrift, ASN.1. Даже нашел экзотический Tree, который сам является убийцей JSON, XML, YAML и иже с ними.

Так почему же они все не подошли? Зачем я был вынужден написать еще один сериализатор?

Уже после публикации статьи в комментариях дали несколько ссылок на пропущенные мной форматы CBOR, UBJSON и MessagePack. А они с большой долей вероятности решают мою задачу без написания велосипеда.
Жаль, что я не смог найти эти спецификации ранее, поэтому добавлю этот абзац для читателей и для собственного напоминания, что не следует торопиться писать код ;-).
Обзоры форматов на Хабре: CBOR, UBJSON

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

Суммаризация текста: подходы, алгоритмы, рекомендации и перспективы

Reading time8 min
Views29K
Ежедневно каждый из нас сталкивается с огромным информационным потоком. Нам часто необходимо изучить множество объемных текстов (статей, документов) в ограниченное время. Поэтому в области машинного обучения естественным образом родилась задача автоматического составления аннотации текста.

У нас в компании мы активно работаем над автореферированием документов, в эту статью не стал включать все подробности и код, но описал основные подходы и результаты на примере нейтрального датасета: 30 000 футбольных спортивных новостных статей, собранных с информационного портала «Спорт-Экспресс».

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

Геймдев и кризис

Reading time6 min
Views3.9K
Наверное многие уже успели заметить эту тревожную тенденцию… падение прибыли, потеря платящих игроков, уменьшение покупок и среднего чека. А обратив внимание начали читать метрики на предмет — «Что же мы сделали не так? Почему игроки уходят? Может логика стала кривой или кнопка перехода не нажимается, может мы чем-то обидели игроков?». После разбора полётов картина не становится яснее, 10 лет небольшие колебания но стабильные цифры и тут вдруг… бац и крутое пике!
Читать дальше →

man!( C => D )

Reading time14 min
Views23K

Каждый С-программист с опытом накапливает привычный багаж техник и идиом. Зачастую бывает сложно понять, как сделать то же самое в новом языке. Так вот, вашему вниманию предлагается коллекция распространенных паттернов на C и их эквивалентов на D. Если вы собираетесь перевести свою программу с C на D или ещё сомневаетесь стоит ли это делать, то эта статья для вас.

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

Террор авторского права и дизайн сайта

Reading time9 min
Views8.8K
Права и обязанности заказчика, веб-студии и дизайнера могут быть совершенно разными в зависимости от подписанных документов и, самое главное, от сохранности этих документов, даже если они были подписаны. А для объектов авторского права, для которых установлена законом обязательная регистрация, ещё и в зависимости от действия или бездействия после подписания договора, акта о передаче исключительных прав. Четвёртая глава ГК РФ сложная и таит в себе массу потенциальных граблей, на которые могут наступить те, кто заказывает услуги, результатом которых являются объекты авторского права.

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

Что делать, если на гос.портале с вас собирают персональные данные и хотят согласие на рассылку рекламных сообщений?

Reading time2 min
Views22K
Навеяло обсуждениями к посту Как «активный гражданин» приучает людей к фишингу.
Потом, когда пришло не только жене, но и мне — полез смотреть откуда… и неожиданно узнал что рекламу теперь может слать и mos.ru
Совсем потеряли совесть…
Давно уже реализуемая практика. Стоит зарегистрироваться на портале. или оформить обращение… Не важно на mos.ru, или прокуратуру с полицией, вам тут же начнутся звонки и сомнительные смс.)
Не хочется об этих всех службах думать плохо. Но повторные обращения и снова звонки и смс. Так что борьба с мошенничеством стоит под контролем. Мошенники сами себя не ловят.)
Точно. Сходил пару раз в МФЦ и просто шквал звонков с разной рекламой. Причем сплошняком роботы текст зачитывают.

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

Обход капч с помощью Headless Chrome

Reading time8 min
Views63K

Использование 2Captcha and Puppeteer для автоматического прохождения капч



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


image

Amazon’s CAPTCHA fallback


КАПЧА (от CAPTCHA англ. – полностью автоматизированный и общедоступный тест Тьюринга для различения компьютеров и людей) задумана как врата, которые пропускают людей и отсеивают роботов (программ). Волнистые линии и слова сейчас уже не так распространены –их заменила вторая версия реКАПЧИ от Google. Эта капча выдает вам зеленую галочку, если ваш «коэффициент человечности» оценивается как достаточно высокий.

Опыт «Аладдин Р.Д.» в реализации защищённого удалённого доступа и борьбе с COVID-19

Reading time4 min
Views3.7K

В нашей компании, как и во многих других ИТ- и не очень ИТ-компаниях, возможность удалённого доступа существовала давно, и по необходимости им пользовались многие сотрудники. С распространением же COVID-19 в мире наш IT-отдел по решению руководства компании начал переводить на удалёнку сотрудников, вернувшихся из зарубежных поездок. Да, домашнюю самоизоляцию мы стали практиковать с самого начала марта, ещё до того, как это стало мейнстримом. К середине марта решение уже было масштабировано на всю компанию, а в конце марта мы все практически бесшовно перешли на новый для всех режим массовой удалённой работы.


Технически, для реализации удалённого доступа в сеть у нас используется Microsoft VPN (RRAS) – как одна из ролей Windows Server. При подключении к сети становятся доступны различные внутренние ресурсы от шейрпоинтов, файлообменников, багтрекеров до CRM-системы, многим для работы хватает только этого. Для тех, у кого в офисе остались рабочие станции, настроен RDP-доступ через RDG-шлюз.

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

Инструкция по работе с TensorFlow Object Detection API

Reading time6 min
Views41K

Перевод TensorFlow Object Detection API tutorial — Training and Evaluating Custom Object Detector.

Мы все умеем водить машину, ведь это довольно легко, правда? Но что вы будете делать, если кто-то попросит вас сесть за штурвал самолета? Совершенно верно — вы прочитаете инструкцию. Аналогично, руководство, которое вы найдете ниже, поможет вам настроить API и наслаждаться приятным полетом.
Читать дальше →

Полный цикл создания устройства и работа с фабриками в Китае

Reading time11 min
Views25K
Меня зовут Андрей Холодный. Весь мой опыт связан с телекомом: я работал практически во всех крупных провайдерах связи и даже руководил своим стартапом. На моих проектах регулярно возникали задачи разработки и выбора поставщиков роутеров и ТВ-приставок. С конца 2018 года я применяю этот опыт в Яндексе: руковожу командой, которая координирует разработку и производство устройств с Алисой.



Под катом — конспект моего недавнего доклада. В нем два больших блока: про этапы разработки устройства и про общение с фабриками в Китае. Надеюсь, конспект будет полезен тем, кто начинает думать о производстве собственных устройств.
Читать дальше →

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

Reading time6 min
Views16K

Создаём семантический поисковик с машинным обучением в реальном времени за 300 строк Python кода.

Мой опыт подсказывает, что любой более или менее сложный проект по машинному обучению рано или поздно превращается в набор сложных неподдерживаемых внутренних инструментов. Эти инструменты, как правило, мешанина из скриптов Jupyter Notebooks и Flask, которые сложно развёртывать и интегрировать с решениями типа GPU сессий Tensorflow.


Впервые я столкнулся с этим в университете Карнеги, затем в Беркли, в Google X, и, наконец, при создании автономных роботов в Zoox. Зарождались инструменты в виде небольших Jupyter notebooks: утилита калибровки сенсора, сервис моделирования, приложение LIDAR, утилита для сценариев и т.д.


С ростом важности инструментов появлялись менеджеры. Бюрократия росла. Требования повышались. Маленькие проекты превращались в огромные неуклюжие кошмары.


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

Настраиваем GitHub Actions для Android с последующим деплоем в PlayMarket

Reading time6 min
Views4.1K
Привет, Хаброжители! На днях начал изучать GitHub Actions для Android. Ранее у меня была удачная попытка настройки данного функционала для проекта на Flutter, но без деплоя, для которого полно информации и гайдов как на англоязычных ресурсах, так и на русскоязычных, а вот с нативным андроидом не всё так прозаично. И решил записать основные проблемы и их решение.

Этап первый: настройка для автоматической подписи готового apk


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

Я использую вариант с использование файла keystore.properties, который позволяет нам добавить ключ разработчика в папку проекта, не светя при этом паролями от него, делается это так:
Читать дальше →

Переключение контекста и простой вытесняющий планировщик для CortexM

Reading time19 min
Views21K

image

С каждым годом курсовые для моих студентов становятся все объемнее. Например, в этом году одним из заданий была разработка метеостанции, ведь только ленивый не делает метеостанции, а студенты они по определению не ленивые, поэтому должны её сделать. Её можно быстро накидать в Cube или собрать на Ардуино, но задача курсового не в этом. Основная задача — самостоятельно, с нуля разобраться с модулями микроконтроллера, продумать архитектуру ПО и, собственно, закодировать все на С++, начиная от регистров и заканчивая задачами РТОС. Кому интересно, здесь пример отчета по такому курсовому


Так вот, появилась небольшая проблема, а именно, бесплатный IAR позволяет делать ПО размером не более 30 кБайт. А это уже впритык к размеру курсового в неоптимизированном виде. Анализ кода студентов выявил, что примерно 1/4 часть их приложения занимает FreeRtos — около 6 кБайт, хотя для того, чтобы сделать вытесняющую переключалку и управлялку задачами хватило бы, наверное… да байт 500 причем вместе с 3 задачами (светодиодными моргунчиками).


Эта статья будет посвящена тому, как можно реализовать Очень Простой Планировщик(он же SST), описанный в статье аж 2006 года и сейчас поддерживаемый Quantum Leaps в продукте Qp framework.


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


Я попробую показать как можно реализовать такой планировщик самому. Чтобы не сильно перегружать статью, рассмотрю переключение контекста на CortexM0 у которого нет аппаратного модуля с плавающей точкой.


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

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

Как GPU-вычисления буквально спасли меня на работе. Пример на Python

Reading time12 min
Views69K
Привет, Хабр!

Сегодня мы затрагиваем актуальнейшую тему — Python для работы с GPU. Автор рассматривает пример, тривиальный в своей монструозности, и демонстрирует решение, сопровождая его обширными листингами. Приятного чтения!


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

Моя реализация кольцевого буфера в NOR flash

Reading time25 min
Views11K

Предыстория


Есть торговые автоматы собственной разработки. Внутри Raspberry Pi и немного обвязки на отдельной плате. Подключены монетоприёмник, купюроприёмник, банковский терминал… Управляет всем самописная программа. Вся история работы пишется в журнал на флешке (MicroSD), который потом передаётся через интернет (с помощью USB-модема) на сервер, там складывается в БД. Информация о продажах загружается в 1с, также есть простенький веб-интерфейс для мониторинга и т.п.


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


Проблема


Флешки показывают себя как очень ненадёжные устройства. Они с завидной регулярностью выходят из строя. Это приводит как к простоям автоматов, так и (если по каким-то причинам журнал не мог быть передан онлайн) к потерям данных.


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

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

Information

Rating
1,109-th
Location
Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer, Software Architect
Lead
C++
OOP
Linux
Programming microcontrollers
Embedded system
C
Qt
Software development