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

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

      Создание основы для работы бота будет состоять из следующих этапов:


      1. Создание бота в ВК
      2. Генерирование API- ключа
      3. Создание программы бота через LongPoolVK

      Для кого эта статья?


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

      Что есть в этой статье?


      Создание основы бота. После этого его можно будет запрограммировать как-угодно. Автоматизировать какую-то рутину или использовать как собеседник.

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

      Добавление функции передачи погоды. Научим бота говорить нам погоду.
      Читать дальше →
      • +4
      • 95.6k
      • 1
    • Динамическая память в системах жёсткого реального времени

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



      (КДПВ – см. аннотацию к диаграмме в конце)

      Читать дальше →
    • Миникомпьютер из роутера с OpenWRT: разрабатываем USB-видеокарту


        Добрый день, уважаемые хабровчане. В этом цикле статей мы с вами пройдем достаточно длинный, но весьма интересный путь по превращению обычного роутера в мини-компьютер с LCD-дисплеем. Для этого мы разработаем сначала USB-видеокарту на базе микроконтроллера STM32F103, потом тестовый драйвер, который позволит нам выводить на него графику, и, наконец – полноценный драйвер фреймбуффера, благодаря которому можно будет запустить настоящие графические приложения, такие как x-сервер. Заодно мы научимся включать наш код в дерево исходников OpenWRT, допиливать его ядро и делать прочие полезные вещи.
        Ну а в самом конце мы получим результат, который, я надеюсь, вызовет ностальгическую слезу у многих читателей. Я постараюсь излагать материал таким образом, чтобы в конце каждого этапа мы получали осязаемый результат, не дающий угаснуть энтузиазму. Итак, начнем.
        Читать дальше →
      • Доказательное планирование

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

        Разработчики программного обеспечения не любят составлять план работ. Обычно пытаются вовсе от него отказаться. «Закончу, когда закончу!», — говорят они, ожидая, что этот смелый и веселый поступок вызовет одобрение у босса, а о планировании будет успешно забыто.

        Большая часть расписаний, с которыми вы встретитесь, будет представлять из себя бездушные отписки. Совершенно забытые, они хранятся в каком-нибудь общем каталоге. После выпуска продукта с опозданием на пару лет странный парень, в чьем офисе, говорят, видели картотеку, принесет на обсуждение причин провала старую распечатку, которую все засмеют. «Только гляньте! Мы запланировали две недели, на переписывание системы с нуля на Ruby!»
        Читать дальше →
      • Кого вы пытаетесь впечатлить своими дедлайнами?

        • Translation
        Подсказка: явно не ваших пользователей.

        Поднимите руку те, чья компания провозгласила «Клиентоориентированность» как одну из своих корпоративных ценностей. Для тех из вас, кто читает этот текст на Хабре и не видит аудиторию: почти весь зал поднял руку, кроме пары человек сзади.

        Они работают в Oracle.

        Удовлетворенность клиентов является одной из корпоративных ценностей компании Oracle. Но корпоративные ценности — они как абонемент в спортзал — недостаточно их просто иметь.

        Одержимость клиентами — полезная вещь, но есть ещё одна вещь, которой одержимы многие компании — это сроки. Дедлайны — это хорошо. «Будет готово, когда я закончу» может быть отличной (или даже рекомендованной) стратегией для двух человек работающих над одним приложением. Но когда вы работаете в компании с более чем двумя сотнями сотрудников, вам требуется некоторое понимание того, что происходит; примерное представление о том, когда ваши пользователи смогут использовать ваши новые свистелки и перделки.

        Смею утверждать, что жестко установленные сроки — это плохие сроки, и если у вашей компании такие есть, возможно следует пойти еще дальше, и убрать пункт об «клиентоориентированности» из списка корпоративных ценностей. Потому что, хотите верьте, хотите нет, пользователям плевать на заваленные спринты.

        Дедлайны нужны в первую очередь не клиентам, а менеджменту.
        Читать дальше →
      • «Правила роста: от джуниора до CTO», конспект вебинара Фёдора Борщёва

          Фёдор Борщёв — CTO в маркетплейсе стройматериалов «ГдеМатериал», сооснователь rumetr.com и популяризатор чистоты кода. Пишет в блог, телеграм-канал @pmdaily и в советы о разработке в Бюро Гобрунова.


          Я сейчас меняю работу — со средней позиции менеджера по логистике на позицию полного джуниора в аналитике данных. И, чтобы срезать пару углов на новом карьерном пути, посмотрел вебинар Фёдора и сделал его конспект. Мне кажется, что советы Фёдора будут интересны другим, поэтому публикую конспект.


          За три часа Фёдор прошёлся по темам:


          • управление проектами;
          • общение с людьми;
          • продукт и бизнес;
          • личные цели.

          Читать дальше →
        • ACPI: Добавление устройств без перекомпиляции ядра

            Как выясняется, далеко немногие знают о существовании режима оверлеев в ACPICA и их поддержки в ОС Linux. Я хочу восполнить этот пробел на примере добавления ведомых устройств I2C в систему без перекомпиляции.
            Читать дальше →
            • +14
            • 2.7k
            • 4
          • Полуавтоматическая регистрация юнит-тестов на чистом С

              После прочтения книги Test Driven Development for Embedded C я начал знакомство с миром юнит-тестирования с фреймворка cppUtest. Не в последнюю очередь потому, что в нем свеженаписанный тест регистрируется и запускается самостоятельно. За это приходится платить — использованием C++, динамическим выделением памяти где-то в глубинах фреймворка. Может быть, можно как-то попроще?
              Совсем недавно я узнал о минималистичном фреймворке minUnit, который умещается всего в 4 строчки.
              Читать дальше
            • Статическая подписка с использованием шаблона Наблюдатель на примере С++ и микроконтроллера Cortex M4


                Всем доброго здравия!


                В преддверии Нового года хочу продолжить рассказывать про использование С++ на микроконтроллерах, на этот раз попытаюсь рассказать про использование шаблона Наблюдатель (но далее я буду называть его Издатель-Подписчик или просто Подписчик, такой вот каламбур), а также реализацию статической подписки на С++17 и преимущества этого подхода в некоторых приложениях.

                Читать дальше →
              • Поддержание положения в сервоприводе: подчинённое регулирование vs шаговый режим


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

                  image

                  В этой статье речь пойдет о самом простом в реализации алгоритме генерации «идеального» лабиринта и его применении для поиска пути.

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

                  Заинтересовавшихся — прошу под кат.
                  Читать дальше →
                • Магия тензорной алгебры: Часть 5 — Действия над тензорами и некоторые другие теоретические вопросы

                    Содержание


                    1. Что такое тензор и для чего он нужен?
                    2. Векторные и тензорные операции. Ранги тензоров
                    3. Криволинейные координаты
                    4. Динамика точки в тензорном изложении
                    5. Действия над тензорами и некоторые другие теоретические вопросы
                    6. Кинематика свободного твердого тела. Природа угловой скорости
                    7. Конечный поворот твердого тела. Свойства тензора поворота и способ его вычисления
                    8. О свертках тензора Леви-Чивиты
                    9. Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
                    10. Получаем вектор угловой скорости. Работаем над недочетами
                    11. Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
                    12. Параметры Родрига-Гамильтона в кинематике твердого тела
                    13. СКА Maxima в задачах преобразования тензорных выражений. Угловые скорость и ускорения в параметрах Родрига-Гамильтона
                    14. Нестандартное введение в динамику твердого тела
                    15. Движение несвободного твердого тела
                    16. Свойства тензора инерции твердого тела
                    17. Зарисовка о гайке Джанибекова
                    18. Математическое моделирование эффекта Джанибекова


                    Введение


                    Прежде чем продолжать рассказ о прикладных аспектах применения тензорного исчисления, совершенно необходимо затронуть ещё тему, обозначенную заголовком. Эти вопросы всплывали в неявной форме во всех предыдущих частях частях цикла. Однако, мной были допущены некоторые неточности, в частности тензорные формы записи скалярного и векторного произведения в статьях 1 и 2 были названы мною «сверткой», хотя на деле они являются комбинацией свертки и умножения тензоров. О сложении, умножение тензоров на число, о тензорном произведении упоминалось только вскользь. О симметричных, антисимметричных тензорах вообще речи не шло.

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

                    Кроме того, важным является представление о симметричных и антисимметричных тензорах. Мы узнаем о том, что любой тензор можно разложить на симметричную и антисимметричную части, а также познакомимся с тем фактом, что антисимметричной части тензора можно поставить в соответствие псевдовектор. Многие физические величины (к примеру угловая скорость) являются псевдовекторами. И именно тензорный подход к описанию физических явлений позволяет выявить истинную природу некоторых величин.
                    Читать дальше →
                    • +17
                    • 33.8k
                    • 3
                  • Конечный автомат (он же машина состояний) на чистом С

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

                    Собственно через регулярные выражения я к ним и пришёл.
                    Читать дальше →
                  • Федеральный закон № 243, или Тихая пенсионная реформа

                      счастливая старость

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

                      Однако факт остается фактом: «… с 1 января 2014 г. будет осуществлен т. н. страховой маневр — сокращены с 6 до 2% отчисления на формирование накопительной части пенсии. Высвободившиеся 4% пойдут на финансирование страховой части.»

                      UPDATE! Весьма вероятно, что скоро сокращение будет не до двух процентов, а до нуля — смотрите обновление №3 в конце поста.

                      Ну, кто там спрашивал, от чего отвлекают наше внимание?! Здесь был горький смайлик с кривой ухмылкой.

                      Кому интересно / небезразлично, добро пожаловать под кат!
                      Читать дальше →
                    • Железо на службе у алгоритма

                        Борис Бабаян о прошлом, настоящем и будущем вычислительной техники

                        Борис Бабаян
                        Каким представляется развитие вычислительной техники человеку, который уже более полувека занимается разработкой компьютерных технологий?

                        Мне удалось побеседовать на эту тему с Борисом Арташесовичем Бабаяном, директором по архитектуре компании «Интел».

                        Борис Бабаян известен как главный архитектор компьютерных вычислительных систем «Эльбрус-1», «Эльбрус-2» и «Эльбрус-3». Некоторые из его идей использованы в архитектуре Transmeta. В настоящее время Борис возглавляет разработку новой микропроцессорной архитектуры в компании «Интел».

                        Чтобы совсем покончить с формальностями, перечислю звания, степени и должности Бориса: член-корреспондент РАН, доктор технических наук, профессор, заведующий кафедрой «Микропроцессорные технологии» МФТИ, Intel Fellow, лауреат Государственной и Ленинской премий.

                        Дальнейшее повествование построено от лица Бабаяна. Мои скупые комментарии оформлены в виде врезок либо ссылок на интернет-страницы.

                        Поехали!
                      • RepRap: 3D принтеры, которые печатают 3D принтеры. Еще один успешный проект

                          image

                          В 2005 году был основан проект RepRap, цель которого — создание такого 3D принтера, который смог бы «печатать» собственных собратьев. Основал этот проект британский инженер Эдриан Боуйер. С тех пор проект вырос в сообщество, в котором работает много технических специалистов. Идеальным принтером для сообщества видится такое устройство, какое могло бы воспроизводить себе подобных без необходимости приобретать дополнительные детали. Но это в идеале, который вряд ли достижим в ближайшем будущем. Однако, успешные проекты подобного типа есть, и об одном из них — ниже.

                          Читать дальше →
                        • Логика авторобота: от машинного зрения до управления трансмиссией

                            А.Жуковский, С.Усилин, В.Постников

                            Сегодня мы хотим рассказать о новом проекте, который начали чуть больше года назад на кафедре «Когнитивных технологий» МФТИ.

                            Состоит он в создании системы машинного зрения, робота – автомобиля (Рис. 1), который в режиме реального времени должен обрабатывать видеопоток, распознавать окружающую сцену, детектировать объекты и формировать управляющее воздействие, направленное на решение поставленной задачи.


                            Рис. 1

                            При этом мы не пытались полностью воссоздать реальные условия дорожной сцены, исключив все прелести малоразмерного моделирования.
                            Читать дальше →
                          • LPC1102 и тёплый ламповый индикатор



                            Написать этот текст меня заставила статья – «Freescale уменьшила размеры самого маленького в мире микроконтроллера на архитектуре ARM». За три дня до публикации этой статьи я закончил свой маленький проект, в котором был использован контроллер NXP LPC1102, — это прямой конкурент описанного в статье Freescale KL02 и возможно нового KL03. Далее будет сравнение двух микроконтроллеров от NXP (Филипс) и Freescale (Моторола), и мой проект на LPC1102.
                            Читать дальше →
                          • Freescale уменьшила размеры самого маленького в мире микроконтроллера на архитектуре ARM

                              image
                              Компания Freescale Semiconductor, известный производитель полупроводниковых чипов и микропроцессоров, представила преемника микросхемы Kinetis KL02, которой в прошлом году достался титул самого маленького микроконтроллера на архитектуре ARM. В ассортименте производителя новинка получила обозначение Kinetis KL03. Она на 15% меньше по сравнению с Kinetis KL02.
                              Читать дальше →