• Сквозь тернии к звездам: делаем устройство для наведения лазерной указки на любой небесный объект

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

    Решил показать свою небольшую самоделку, которая работает примерно так:



    Если КДПВ сделала свое дело — тогда добро пожаловать под кат :)

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

    • Translation

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


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


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


    Введение


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



    Лука Пачоли, автор самой старой (15 век) дошедшей до нас книги с описанием принципов двойной записи


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


    Основные правила таковы:

    Читать дальше →
  • Flipper Zero — пацанский мультитул-тамагочи для пентестера

      Flipper Zero — Multi-tool Device for Hackers

      Flipper Zero — проект карманного мультитула на основе Raspberry Pi Zero для пентеста IoT и беспроводных систем контроля доступа, который я разрабатываю с друзьями. А еще это тамагочи, в котором живет кибер-дельфин.

      Он будет уметь:

      • Работать в диапазоне 433 MHz — для исследования радиопультов, датчиков, электронных замков и реле.
      • NFC — читать/записывать и эмулировать карты ISO-14443.
      • 125 kHz RFID — читать/записывать и эмулировать низкочастотные карты.
      • iButton ключи — читать/записывать и эмулировать контактные ключи, работающие по протоколу 1-Wire.
      • Wi-Fi — для проверки защищенности беспроводных сетей. Адаптер поддерживает инъекции пакетов и мониторный режим.
      • Bluetooth — поддерживается пакет bluez для Linux
      • Режим Bad USB — может подключаться как USB-slave и эмулировать клавиатуру, ethernet-адаптер и другие устройства, для инъекции кода или сетевого пентеста.
      • Тамагочи! — микроконтроллер с низким энергопотреблением работает, когда основная система выключена.

      Я с волнением представляю свой самый амбициозный проект, идею которого я вынашивал много лет. Это попытка объединить все часто необходимые инструменты для физического пентеста в одно устройство, при этом добавив ему личность, чтобы он был милым до усрачки.
      В данный момент проект находится на стадии R&D и утверждения функционала, и я приглашаю всех поучаствовать в обсуждении функций или даже принять участие в разработке. Под катом подробное описание проекта.
      Читать дальше →
    • Освоение Vuex — с нуля до героя

      Привет, Хабр! представляю вашему вниманию перевод статьи «Mastering Vuex — Zero to Hero» автора Sanath Kumar.


      Официальная документация Vuex определяет его как паттерн управления состоянием + библиотека для приложений Vue.js. Но что это значит? Что такое паттерн управления состоянием?


      Представьте, что вы работаете над большим веб-приложением с сотнями маршрутов и компонентов. Не было бы проще, если бы мы могли хранить все данные, которые нам когда-либо понадобятся в приложении, в одном централизованном хранилище?


      Читать дальше →
    • Разработка hexapod с нуля (часть 3) — кинематика


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

        Этапы разработки:
        Часть 1 — проектирование
        Часть 2 — сборка
        Часть 3 — кинематика
        Часть 4 — математика траекторий и последовательности
        Часть 5 — электроника
        Часть 6 — переход на 3D печать
        Часть 7 — новый корпус, прикладное ПО и протоколы общения
        Часть 8 — улучшенная математика передвижения
        Читать дальше →
      • Как согласовать полёт зонда в стратосферу (с чем мы столкнёмся на практике при запуске)

          12 апреля мы собираемся запустить стратосферный зонд с небольшим сервером, откуда на CDN внизу будет передаваться наша страница. Входящий канал — низкоорбитальные спутники связи, исходящий — радиопоток на частотах любительского диапазона (телеметрия и управление) и Wi-Fi (видео и данные).


          Проблема с запуском в том, что это неуправляемый летательный аппарат. В смысле, это просто шар с гелием, к которому прицеплено несколько килограммов железа. И это важно, потому что это железо может стукнуться о чей-нибудь самолёт или упасть на чью-нибудь территорию. Муниципалитетам, например, не очень нравится, когда на территорию его объектов такое падает. Заповедникам тоже. А Росатому уж вообще очень не нравится.

          На борту будет камера, то есть это получится аэрофотосъёмка. Разрешение на неё надо получать у Федеральной службы безопасности.

          Это пиковый полёт, то есть мы поднимаемся до рабочей высоты, быстро выполняем миссию и спускаемся на посадку. Зонд обычно уносит на 100-150 километров от точки старта по направлению ветра, дующего на высоте от земли до 30 километров. Выше 20 км как правило пропадает турбулентность, да и плотность воздуха там в 100 раз меньше (на съёмке видно характерную границу атмосферы), поэтому полёт там становится более плавным. Лететь мы можем хоть до Владивостока, но чем больше траектория тем сложнее получить официальное согласование полёта, что заставляет нас максимально сокращать полёт.
          Читать дальше →
        • Разжёвываем линейно-квадратичный регулятор для управления перевёрнутым маятником

          • Tutorial

          Преамбула


          Продолжаю подробное описание использования линейно-квадратичного регулятора на примере управления перевёрнутым маятником. К слову сказать, термин «ЛКР» очень неточно отражает суть происходящего, как мне уже подсказали в комментариях, в русской школе теории управления этот подход называется «аналитическим конструированием оптимальных регуляторов», что существенно точнее.

          Как обычно, я стараюсь разжевать математику по максимуму, чтобы материал был доступен заинтересованному школьнику. Я глубоко убеждён, что использование математики по-хорошему должно бы быть платным: любая формула должна быть использована только тогда, когда она призвана облегчить понимание, а не для того, чтобы выпендриваться.

          Итак, это уже четвёртая статья, для лучшего понимания происходящего неплохо бы прочитать предыдущие три:


          Вот фотография системы (кликабельно):


          Читать дальше →
        • Интегрирование уравнений движения

          • Translation
          image

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

          Темой этой статьи как раз и будет реализация такого интегрирования.

          Интегрирование уравнений движения


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

          $F = ma$


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

          $a = F/ma = F/m$


          Ускорение — это темп изменения скорости от времени:

          $dv/dt = a = F/m$



          Аналогично, скорость — это темп изменения позиции от времени:

          $dx/dt = v$


          Это значит, что если мы знаем текущие позицию и скорость объекта, а также приложенные к нему силы, то сможем проинтегрировать, чтобы найти его позицию и скорость в определённый момент времени.
          Читать дальше →
          • +26
          • 22k
          • 9
        • Шпаргалки Java программиста 9: Java SE — Шпаргалка для собеседований и повторений

          • Tutorial
          Данная статья в первую очередь предназначена для подготовки к собеседованиям на позицию Java разработчика (на самом деле, это шпаргалка, которую я писал для себя в течении многих лет, и повторяю при каждом новом поиске работы).

          Предполагается. что вы знакомы с многими функциями из Java SE, поэтому в основном информация дается кратко. Конечно, можно использовать эту статью и просто для обучения основам Java SE платформы (но в этом случае, после чтения статьи вам скорее всего придется обратиться к другим источникам).

          image

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

          Внимание: я не буду касаться вопросов по самому языку Java (вроде для чего нужно слово final или чем overriding отличается от overloading), это потребует отдельной статьи, это вопросы именно по Java SE (6-9) платформе.
          Читать дальше →
        • Spring MVC/Security, REST, Hibernate, Liquibase запускаем в две строки

          • Tutorial

          Современные системы сборки позволяют полностью автоматизировать процесс компиляции и запуска приложения из исходников. На целевой машине необходим лишь JDK, все остальное включая и сам сборщик загрузится налету. Надо лишь правильно построить процесс сборки и по запуску двух команд получить, например, следующее: запуск базы данных, выполнение SQL скриптов, компиляцию Java, Javascript и CSS файлов, запуск контейнера сервлетов. Реализуется это с помощью Gradle, HSQLDB, Liquibase, Google closure compile и Gretty. Подробнее в статье.
          Читать дальше →
          • +7
          • 34.1k
          • 8
        • Эффективный квадрокоптер

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


            Читать дальше →
          • Открытый проект модуля управления электрическими моторами. Начало



              Основное назначение модуля — управление синхронными бесколлекторными двигателями (BLDC, BLAC, PMSM ...) с трапецеидальной или синусоидальной формой напряжения, с сенсорами скорости-положения или без сенсоров. Кроме этого модуль имеет небольшие габариты, достаточно широкий диапазон питающих напряжений, разнообразные каналы отладки, проводную и беспроводную связь.
              Читать дальше →
            • Доработка китайского ST-Link v2: добавляем интерфейс вывода отладочной информации SWO и ногу Reset

              • Tutorial
              image Привет, Geektimes!

              Сегодня хочу рассказать про доработку паяльником китайского ST-Link v2. В него можно допаять вывод SWO для получения отладочной информации и ногу управления Reset’ом для микроконтроллеров STM32 (та нога Reset, что уже есть — для STM8). Возможно для многих это не открытие, но пусть будет информация для начинающих. Кому интересно, прошу под кат.
              Читать дальше →
            • STM32: FreeRTOS и пьезокерамический излучатель

                image

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

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

                А ведь миниатюрный керамический динамик — шаг в сторону более дружелюбного интерфейса с человеком. Нажатия кнопок, касания сенсорной панели, реакция на различные события… Такая вот обратная связь в виде звукового отклика!

                Под катом попробуем сделать с этим что нибудь, а именно напишем драйвер пьезодинамика и заставим его параллельно озвучивать несколько разных внешних событий.
                Читать дальше →
              • Программируем Arduino с помощью Sublime + Stino на MacOS



                Хотелось бы поделиться опытом настройки и использования любимых мной программных продуктов по программированию Arduino контроллеров на Mac OS. Многие используют Sublime как хорошую среду программирования, например, добавив пакет Stino можно получить возможность писать код и заливать его в Arduino контроллеры. О том как всё это за 10 минут настроить под Windows написано много мануалов, но вот как заставить работать на Mac OS сказано мало. Если у вас есть Mac и Arduino, добро пожаловать под кат (внимание, много картинок!).
                Читать дальше →
                • +11
                • 12.1k
                • 8
              • Теории заговора. Алкогольное лобби


                  По данным ВОЗ, россияне мужского пола потребляют 23,9 литра чистого спирта в год (белорусы — 27,5 л) при среднемировом уровне потребления алкоголя 6,2 литра в год. Медики считают, что именно алкоголь является причиной многочисленных смертельных заболеваний. Повсеместная алкоголизация населения — главный фактор низкой продолжительности жизни в России. Говорят, что это единственная страна в мире, где смертность мужчин на свободе в три раза выше, чем в тюрьме (там алкоголь запрещён). Фактически, алкоголь унёс уже больше жизней, чем голод, эпидемии, теракты и все войны в истории, включая Вторую мировую войну. Сейчас от этого вещества умирает 3,3 млн человек в год.

                  Алкоголь вызывает привыкание, разрушает мозг, печень, пищеварительный тракт и желудок. Он приводит к циррозу печени, раку поджелудочной железы, ожирению, гипертонии, болезням сердца.
                  Читать дальше →
                • Как заставить работать sim900a в наших сетях

                    Для начала справочная информация:
                    sim900 — представитель нового поколения бюджетных GSM/GPRS модулей компании SIMCom.
                    Sim900a – аналог sim900, предназначенный для использования на азиатском рынке, не работает с российскими операторами.


                    Читать дальше →
                  • Symfony как использовать FOSRestBundle

                    В данном посте я бы хотел рассказать о том, как нужно правильно выстраивать RESTfull API для AngularJS и других фронтенд фреймворков с бекендом на Symfony.
                    И, как вы уже наверное догадались, я буду использовать FOSRestBundle — замечательный bundle, который и поможет нам реализовать backend.
                    Здесь не будет примеров как работать именно с Ангуляром, я буду описывать исключительно только работу с Symfony FosRestBundle.

                    Для работы нам так же понадобится JMSSerializerBundle для сериализации данных из Entity в JSON или другие форматы, исключения некоторых полей для той или иной сущности (например пароль для API метода получения списка пользователей) и многое другое. Подробнее можете почитать в документации.
                    Читать дальше →
                  • Железная модификация RTL-SDR стика, для приема КВ


                      Заказал на тест USB стик, на связке чипов RTL2832U + R820T, для использования его в качестве SDR приемника. Поскольку это очень дешевое устройство, и используется не по прямому назначению, имеет ряд недостатков, которые я решил исправить:
                      _Тюнер R820T не принимает сигнал на частотах ниже 25MHz.
                      _Стик очень горячий — все тепло отводится через антенное гнездо и USB разьем.
                      _В схеме питания используются очень маломощные стабилизаторы, которые работают на пределе.
                      Читать дальше →
                    • Как компьютер играет в шахматы?


                      Хикару Накамура, недавно бросивший вызов компьютеру

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

                      Если вам интересно, как же устроены шахматные движки — добро пожаловать под кат.
                      Читать дальше →