• Самодельный лидар: OpenTOFLidar

      В этой статье я хочу рассказать про свой проект импульсного (TOF) Open Source лидара — о том как я его делал, и каких результатов удалось добиться.
      top-picture

      Читать дальше →
    • Задача для разработчика, или как мы без вендора ручные сканеры прошивали

        Всем привет.

        Мы, Виктор Антипов и Илья Алешин, сегодня расскажем о своем опыте работы с USB-девайсами через Python PyUSB и немного о реверс-инжиниринге.


        Читать дальше →
      • Роботаракан Петя за десять баксов

        • Tutorial

        Знакомьтесь с Петей, шестиногом о трёх сервоприводах


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


        Читать дальше →
      • Self-driving ГАЗ66 Monster Truck 1/16

        Хабр, привет!

        Хочу рассказать вам о том, как я делал и сделал самоуправляему машинку :)

        Я мог бы рассказать сразу, как делать, сухо прикрепив схемы и bash команды, но так будет скучно. Предлагаю вам интересную (я надеюсь) историю о том, как лично я прошел этот путь, и куда пришел.

        Те места, где было что фоткать, с фотками. Там, где про софт — скорее всего без фото.

        Это будет действительно история в формате повествования, как я рассказывал бы вам за чашкой кофе. Это не про bash команды, python скрипты, и вот это вот всё.

        Начнём с фотки и видео того, что получилось, и дальше вся история под катом.


        Читать дальше →
      • pyqtdeploy, или упаковываем Python-программу в exe'шник… the hard way

        КДПВ


        Наверняка, каждый, кто хоть раз писал что-то на Python, задумывался о том, как распространять свою программу (или, пусть даже, простой скрипт) без лишней головной боли: без необходимости устанавливать сам интерпретатор, различные зависимости, кроссплатформенно, чтобы одним файлом-exe'шником (на крайний случай, архивом) и минимально возможного размера.


        Для этой цели существует немало инструментов: PyInstaller, cx_Freeze, py2exe, py2app, Nuitka и многие другие… Но что, если вы используете в своей программе PyQt? Несмотря на то, что многие (если не все) из выше перечисленных инструментов умеют упаковывать программы, использующие PyQt, существует другой инструмент от разработчиков самого PyQt под названием pyqtdeploy. К моему несчастью, я не смог найти ни одного вменяемого гайда по симу чуду, ни на русском, ни на английском. На хабре и вовсе, если верить поиску, есть всего одно упоминание, и то — в комментариях (из него я и узнал про эту утилиту). К сожалению, официальная документация написана довольно поверхностно: не указан ряд опций, которые можно использовать во время сборки, для выяснения которых мне пришлось лезть в исходники, не описан ряд тонкостей, с которыми мне пришлось столкнуться.


        Данная статья не претендует на всеобъемлющее описание pyqtdeploy и работы с ним, но, в конце концов, всегда приятно иметь все в одном месте, не так ли?

        Читать дальше →
      • Нейтронная звезда в пробирке. Сонолюминесценция

        • Tutorial
        Хомяки приветствуют вас, друзья.

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



        Всё началось с того, что одним прекрасным днем просиживая задницу в просторах ютуба, я нашёл ролик на канале Сергея Матюшенко про интересное явление в основе которого лежит свечение пузырька за счет акустического воздействия. Пересмотрев видео несколько раз, понял что повторить подобное явление как раз плюнуть. Через неделю на моем столе лежали все необходимые детали для сборки действующей установки.
        Читать дальше →
      • Микрофонный усилитель и УНЧ для ЦАП и АЦП микроконтроллера

        • Tutorial

        Усилители сигналов для АЦП и ЦАП микроконтроллера


        В статье изложены подходы по построению схемотехники усилителей для микрофона и динамиков в микроконтроллерной технике. Занимаемое элементами усилителей пространство не превышает $5 см^2$




        Читать дальше →
      • Разбор демки на 128 байт из архива 1997 года

          Очень приятно осуществлять свои желания, особенно из далёкого прошлого, такого далёкого что уже и забыл что этого когда-то хотел. Я мало знаю о демосцене и уж точно никогда не следил ни за авторами ни за их работами, мне просто нравилось смотреть то что получалось. Иногда мне хотелось в этом разобраться, но тогда мне не хватало знаний и опыта, позже усидчивости, а потом и вовсе у меня пропал к этому интерес. Но недавно мой друг, с кем мы учились в то время и который поставлял нам все новинки, включая демки, с BBS и Fidonet, потому что у него чуть ли ни у единственного был и телефон и модем и компьютер одновременно, посетил CAFePARTY со своими работами, что заставило меня открыть архив моего первого компьютера, выбрать демку и разобраться.

          pentagra.com

          Объективно оценивая свои силы я взял 128 байтовое интро которое мне понравилось визуально. Файл pentagra.com за подписью Mcm, 128 байт, последнее изменение 24.09.1996 18:10:14, шестнадцатеричный дамп:

          000000: b0 13 cd 10 68 00 a0 07 06 1f ac ba c8 03 ee 42
          000010: b1 40 ee 40 6e 6e e2 fa b8 3f 3f bb 40 01 bf 40
          000020: 05 57 b1 78 ab 03 fb e2 fb 5f b1 60 88 01 aa 03
          000030: fb 03 fb e2 f7 b1 61 88 01 aa 2b fb 2b fb e2 f7
          000040: bf d1 99 57 b1 78 ab 2b fb e2 fb 5f b1 8f f3 ab
          000050: 81 fe 00 fa 73 12 ac 0a c0 74 0d 48 88 44 fe 88
          000060: 04 88 40 ff 88 84 bf fe 03 f2 42 75 e3 e4 60 3c
          000070: 01 75 a5 b8 03 00 cd 10 c3 00 00 00 00 4d 63 6d
          Читать дальше →
        • Python (+numba) быстрее Си — серьёзно?! Часть 1. Теория

            Давно собирался написать статью о numba и о сравнении её быстродействия с си. Статья про хаскелл «Быстрее, чем C++; медленнее, чем PHP» подтолкнула к действию. В комментариях к этой статье упомянули о библиотеке numba и о том, что она магическим образом может приблизить скорость выполнения кода на питоне к скорости на си. В данной статье после небольшого обзора по numba (часть 1) чуть более подробный разбор этой ситуации (часть 2).


            Читать дальше →
            • +30
            • 13,5k
            • 7
          • 6 GitHub проектов для веб-разработчиков, на которые стоит взглянуть

            Привет, Хабр! Представляю вам перевод статьи 6 Github Repos for web developers you should have a look at автора lampewebdev.

            Однажды я пролистывал ленту dev.to и наткнулся на пост 6 GitHub проектов для быстрой прокачки знаний.

            Я согласен с автором, что список действительно впечатляет, но порой списки ссылок в этих проектах очень большие.

            Поэтому, вот список моих любимых проектов GitHub для быстрой прокачки знаний, но созданный специально для веб-разработчиков.
            Читать дальше →
            • +15
            • 16,8k
            • 2
          • Разработка идеального pypi пакета с поддержкой разных версий python

            Это небольшой мануал/история о том, как создать "идеальный" pypi пакет для python, который каждый желающий сможет установить заветной командой:


            pip install my-perfect-package

            Ориентирована на новичков, но призываю и профессионалов высказать свое мнение, как можно улучшить "идеальный" пакет. Поэтому прошу под кат.

            Читать дальше →
          • Моя реализация кольцевого буфера в NOR flash

            Предыстория


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


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


            Проблема


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


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

            Читать дальше →
          • Внедрение в архитектуру советских программируемых калькуляторов «Электроника МК-52»



              В этой статье я хочу рассказать об архитектуре советских программируемых микрокалькуляторов на примере калькулятора «Электроника МК-52» и как можно внедриться в его архитектуру.

              Советские калькуляторы семейства "Электроника Б3-34" («Электроника МК-56», «Электроника МК-61» и «Электроника МК-52») были особенно популярны в СССР. Причиной этому была не только доступная цена в 65 рублей за МК-54, 85 рублей за МК-61 или 115 рублей за МК-52, но и развитой язык программирования. Это семейство калькуляторов стало де-факто стандартным для многочисленных пользователей. Огромное количество книг было посвящено программированию на этих машинках и публикацией готовых алгоритмов. Электроника МК-52 даже летала в космос на корабле Союз ТМ-7, где предполагалось его использование в качестве резервного на случай неисправности спускаемого навигационного оборудования. Даже в военно-морском флоте СССР калькулятор «Электроника МК-52» с блоком расширения памяти БРП «Астро» какое-то время был стандартным средством для навигационных расчетов.


              Читать дальше →
            • Как я запускал Докер внутри Докера и что из этого получилось

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


                image
                Читать дальше →
              • Цепи Маркова для процедурной генерации зданий

                • Перевод
                image

                Примечание: полный исходный код этого проекта можно найти [здесь]. Так как он является частью более масштабного проекта, я рекомендую смотреть коммит на момент выпуска этой статьи, или файл /source/helpers/arraymath.h, а также /source/world/blueprint.cpp.

                В этой статье я хочу подробно рассказать о принципах использования цепей Маркова и статистики для процедурной генерации 3D-зданий и других систем.

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

                Этот метод является обобщённым способом процедурной генерации систем, удовлетворяющих определённым требованиям, поэтому я рекомендую дочитать хотя бы до конца первого раздела, чтобы вы могли понять, сможет ли эта методика быть полезной в вашем случае, потому что ниже я объясняю необходимые требования.
                Читать дальше →
                • +30
                • 9,2k
                • 5
              • Строим домашний CI/CD при помощи GitHub Actions и Python

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

                Читать дальше →
              • Пишем USB-драйверы для заброшенных устройств

                • Перевод


                Недавно на eBay мне попалась партия интересных USB-девайсов (Epiphan VGA2USB LR), которые принимают на вход VGA и отдают видео на USB как веб-камера. Меня настолько обрадовала идея, что больше никогда не придётся возиться с VGA-мониторами, и учитывая заявленную поддержку Linux, я рискнул и купил всю партию примерно за 20 фунтов (25 долларов США).

                Получив посылку, я подключил устройство, но оно даже не подумало появиться в системе как UVC. Что не так?

                Я изучил сайт производителя и обнаружил, что для работы требуется специальный драйвер. Для меня это была новая концепция, ведь в ядре моего дистрибутива Linux обычно есть драйверы для всех устройств.
                Читать дальше →
              • GitHub Actions как CI/CD для сайта на статическом генераторе и GitHub Pages


                  Немного прошерстив Habr удивился тому, что очень мало опубликовано статей на тему (beta-)фичи GitHub'а — Actions.


                  Казалось бы, можно объяснить такую недосказанность тем, что функционал еще в тестировании, пусть и "beta". Но именно полезная особенность беты позволяет использовать этот инструмент в приватных репозиториях. Именно про работу с данной технологией я расскажу в этой статье.

                  Читать дальше →
                • Python и быстрые HTTP-клиенты

                  • Перевод
                  В наши дни, если вы пишете некое Python-приложение, то вам, скорее всего, придётся оснащать его функционалом HTTP-клиента, который способен общаться с HTTP-серверами. Повсеместное распространение REST API сделало HTTP-инструменты уважаемыми жителями бесчисленного множества программных проектов. Именно поэтому любому программисту необходимо владеть паттернами, направленными на организацию оптимальной работы с HTTP-соединениями.



                  Существует множество HTTP-клиентов для Python. Самым распространённым среди них, и, к тому же, таким, с которым легко работать, можно назвать requests. Сегодня этот клиент является стандартом де-факто.
                  Читать дальше →
                  • +44
                  • 15,4k
                  • 3