
Абсолютный поворотный энкодер с однодорожечным кодом Грея

Software engineer
Если вы используете gentoo и отслеживаете уведомления о грядущих изменениях, то еще в июле вы могли видеть, что с нового года gentoo перестает поддерживать eudev. Если вы попытаетесь обновить систему сейчас, вы увидите
!!! The following installed packages are masked:
- sys-fs/eudev-3.2.10-r1::gentoo (masked by: package.mask)
/var/db/repos/gentoo/profiles/package.mask:
# Mike Gilbert <floppym@gentoo.org> (2021-11-27)
# eudev will be removed on 2022-01-01.
# Please see the news item published on 2021-08-24 for more information.
К сожалению переезд с eudev на альтернативы имеет свои особенности, которые мне хочется осветить в этом посте пока память свежа. Мне давно было интересно попробовать mdev, так что новость о конце поддержки eudev я расценил как намек на то, что пора исполнять задуманное. Важное замечание: у меня gentoo работает на headless серверах. Если вам нужно обновить десктопную машину все может быть несколько сложнее, читайте документацию.
Привет, Хабр! В нашей практике разработчиков электронных устройств и встраиваемых систем мы часто сталкиваемся с необходимостью хранить параметры устройства. Это могут быть, например, такие параметры как яркость дисплея, язык, рабочая частота радиоканала или IP адрес – да что угодно. Единого общепринятого подхода для решения этой задачи нет, и я предлагаю обсудить ниже наиболее очевидные варианты, их достоинства и недостатки, а также предложить реализацию, к которой я пришел в результате работы над несколькими проектами. Поехали!
Всем привет, меня зовут Катя, я QA Engineering Manager в inDriver. В этой статье расскажу про свой опыт использования Proxyman, а также о том, почему считаю его лучшей программой-сниффером. Приятного чтения!
Сегодня процессоры, микропроцессоры и микроконтроллеры стали неотъемлемой частью жизни. Они повсюду: смартфоны, умные часы, наушники и другие гаджеты. Однако первое стало обязательной частью каждого человека, а следовательно интерес злоумышленников к взлому или получению доступа к смартфону жертвы возрос многократно. Эта статья посвящена технологии защиты, которую компания ARM не так давно внедрила в свою архитектуру.
В предыдущих статьях описано, как мы учились дебажить загрузчик u-boot: 1, 2. С ядром все оказалось сложнее. Например, выяснилось, что ядро Linux в принице невозможно скомпилировать с отключенной оптимизацией (-O0). В статье описывается как нам все таки удалось запустить ядро на микропроцессоре ARM в режиме пошаговой отладки.
Цикл статей не предназначен для новичков и может их только запутать. Полагаю, что читатель хорошо знаком с предметом разговора.
В портативном устройстве, работающем от аккумулятора, почти обязательным «удобством» является индикатор уровня его заряда. Казалось бы, если оно собрано на основе любого современного микроконтроллера и имеет графический дисплей, ничего сложного в этом нет: измерять напряжение батарейки с помощью встроенного АЦП и выводить его в виде традиционной батарейки с прямоугольничком внутри, длина которого зависит от напряжения. Но если так сделать в лоб, есть риск, что индикатор будет вести себя, как в известном перле «она металась, как стрелка осциллографа». В лучшем случае, он будет все время раздражающе подергиваться туда-сюда на один-два пикселя.
В статье описывается простая реализация индикатора разряда, лишенного этого недостатка.
Каждый, кто когда-либо пробовал собрать программу на C/C++ через кросс-компиляцию знает, насколько болезненным может быть этот процесс. Главными причинами столь печального положения вещей являются недружелюбность систем сборки при конфигурации кросс-компиляции, а также запутанность процесса настройки набора утилит (тулчейна).
Одним из основных виновников этих проблем, по моему опыту, является тулчейн GNU — древний мамонт, на котором много десятилетий строится весь мир POSIX. Подобно многим компиляторам былых времён, семейство GCC и binutils
никогда не ориентировалось на поддержку множества различных целей сборки в одной установке, и единственным способом хоть как-то добиться желаемого была настройка полной кросс-билд-системы для каждой целевой платформы на каждом хосте.
Промышленное проектирование алгоритмов для бюджетных микроконтроллеров stm32, как правило, учитывает время выполнения критических участков программы.
Ожидаемое время выполнения машинной команды на процессорах с архитектурой RISC — один такт. Так же очевидно, что даже простейшие операторы языка "C", после перевода в двоичный, машинный код, требуют больше времени, чем один такт.
Вопрос: "Больше, чем один такт" — это сколько?
Оптимизированные по размеру уже известные алгоритмы CRC, Gnome Sort etc...
Автор материала изменил инструмент перечисления файлов в NeoVim с fd на git ls-files и заметил, что файлы отображаются быстрее. При этом цель fd — скорость, а Git — это прежде всего система управления исходным кодом, её основная задача — не в перечислении файлов. Интрига заставила провести тесты.
Делимся подробностями и набором разнообразных инструментов в арсенале автора, пока начинается курс по Fullstack-разработке на Python.
Цикл статей не предназначен для новичков и может их только запутать. Полагаю, что читатель хорошо знаком с предметом разговора.
Находясь в поисках какой-то агрегированной информации о стандартных приёмах, используемых при проектировании кастомных аллокаторов, я обнаружил, что существует достаточное количество статей о том, как аллокаторы работают в C++, каких-то базовых вариантах или наоборот очень специфических версиях, но ничего достаточно общего. Попался только замечательный доклад замечательного Андрея Александреску про неправильную архитектуру std::allocator
и собственно базовые концепции построения своего нового самого крутого в мире аллокатора. Эта статья является довольно вольным переводом второй части его выступления с моими небольшими дополнениями. Конечно же, категорически рекомендую посмотреть оригинальный доклад, но, если вы любитель текстовых версий, прошу под кат.
Вот уже в который раз хочется поднять тему многопоточного программирования. Сейчас я попытаюсь донести мысль, что если посмотреть на эту тему под другим - более простым, как мне кажется, углом, то она не будет казаться такой сложной и неприступной для начинающих. В этой статье будет минимум формализма и известных (и не очень) терминов.
ip route add default dev vpn0 metric 1000
При bleeding edge разработке или просто в рамках экспериментов, приходиться добавлять патчи прямиком из maillists.
Скачивать серию вручную и сохранять в mbox можно действительно озвереть, даже не смотря на то, что можно спокойно выделить патчи (например в mutt) по одному и сохранить всю пачку (ключевое слово здесь спокойно).
Тем у кого горит, предлагаю воспользоваться git-pw.
Расширение цифрового пространства началось далеко не вчера, однако, из-за пандемии скорость течения этого процесса вынуждено увеличилась до беспрецедентного уровня, причем как в количественном, так и в качественном отношении. Государственным и частным организациям пришлось развернуть собственные цифровые системы, что привело к экспоненциальному росту внедрения технологий и сетей передачи данных.
От автоматизированных цепочек поставок и систем по поддержанию социального дистанцирования до более ресурсоэффективных и удобных «умных» городов и транспортных средств — пространство интернета вещей (IoT) росло огромными темпами, и параллельно с этим увеличивался объем создаваемых данных. По прогнозам, к 2025 г. IoT-устройствами будет сгенерировано 73,1 зеттабайта данных.
Эти данные надо не просто получать, но и хранить, обеспечивать к ним доступ и анализировать для получения ценной аналитической информации. Процесс, позволяющий выполнить такие задачи, должен опираться на комплексную информационную архитектуру, способную на протяжении всего жизненного цикла данных обрабатывать запросы на их использование, поступающие от самых разных приложений.
Попросили меня как-то друзья помочь с программированием контроллера поворотного стола для фотографирования. Эти столы используются для круговой съёмки. Часто результат такой съёмки можно видеть в интернет-магазинах, когда товар можно покрутить и рассмотреть с разных сторон.
Как сделать фото 360°? Можно поставить объект на поворотную платформу, затем вручную перемещать её на определённый угол и щёлкать затвором фотоаппарата. Но лучше этот процесс автоматизировать.
Друзья мои давно занимаются этим бизнесом, сами разрабатывают и делают автоматизированные поворотные столы разных размеров на основе шагового двигателя с контроллером. Раньше у них применялся контроллер, работающий под управлением компьютера. Потом производство этих контроллеров прекратилось, и потребовалось написать программу для нового автономного контроллера.
Дело для меня совершенно новое. Я никогда не занимался АСУ, с релейно-контактной логикой незнаком, про ПЛК не слышал. Ну что ж, тем интереснее будет разобраться, что такое релейная логика и что представляют из себя языки LD (Ladder Diagram) и IL (Instruction List).