Обновить
38
0
Alexander Semion@Spin7ion

Инженер прикладной математики

Отправить сообщение

Фильтр Маджвика

Время на прочтение38 мин
Охват и читатели152K

Предисловие от переводчика


Здесь представлен один из новейших методов расчёта ориентации в пространстве по показаниям датчиков акселерометра, гироскопа и компаса — фильтр Маджвика, который, по словам автора, даёт результат лучший, чем применение фильтра на основе метода Калмана в результатах и производительности. Автор — Себастьян Маджвик (его интернет-магазин). Метод описан в статье на английском. Данная работа защищена в Университете г. Бристоля Перевода я не нашёл. Переводчик из меня так себе, особенно таких сложных текстов. Но нам же интересно, что за метод?

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


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

Самодиагностика МЕМС акселерометра, гироскопа и компаса (self test)

Время на прочтение9 мин
Охват и читатели16K
Изучая спецификацию (datasheet) на МЕМС-датчик (акселерометр, гироскоп и проч.) мы сталкиваемся с такой процедурой, как самопроверка (self-test) или самодиагностика. Обычно в спецификациях есть описание, как это делать. Кому интересно: что это и как это правильно делать? — добро пожаловать под кат.


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

Steam Protocol v2

Время на прочтение17 мин
Охват и читатели23K
Steam Logo

Завершающая статья цикла, самая интересная и самая объемная:


В статье будут рассмотрены протоколы обмена данными клиента Steam с различными серверами:


В очередной раз напомню, что рассматриваемые протоколы устарели и в настоящее время не используются (за исключением GDS и Config — для совместимости).

Все алгоритмы представлены в моем репозитории.
Читать дальше →

Иконические сайдкики всех времён и народов на одной картинке

Время на прочтение1 мин
Охват и читатели16K
Поразглядывать на обеденном перерыве: сайт Morphsuits собрал всех самых знаменитых героев второго плана в одной большой картинке.


Длиннюююющая картинка под катом

19 советов по повседневной работе с Git

Время на прочтение14 мин
Охват и читатели292K


Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!

Содержание:
  1. Параметры для удобного просмотра лога
  2. Вывод актуальных изменений в файл
  3. Просмотр изменений в определённых строках файла
  4. Просмотр ещё не влитых в родительскую ветку изменений
  5. Извлечение файла из другой ветки
  6. Пара слов о ребейзе
  7. Сохранение структуры ветки после локального мержа
  8. Исправление последнего коммита вместо создания нового
  9. Три состояния в Git и переключение между ними
  10. Мягкая отмена коммитов
  11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
  12. Игнорирование пробелов
  13. Добавление определённых изменений из файла
  14. Поиск и удаление старых веток
  15. Откладывание изменений определённых файлов
  16. Хорошие примечания к коммиту
  17. Автодополнения команд Git
  18. Создание алиасов для часто используемых команд
  19. Быстрый поиск плохого коммита

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

Заметка о калибровке датчиков положения в домашних условиях

Время на прочтение10 мин
Охват и читатели25K
Для некоторых датчиков ускорения требуется дополнительная калибровка нуля после монтажа на плату. Когда я увидел несколько исходников с калибровкой датчиков ускорения, где составляющая G учитывалась просто путём вычитания из оси Z величины = 9,8 м/с2 — появилась идея написать данную заметку.


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

Шпаргалка Java программиста 2: Триста пятьдесят самых популярных не мобильных Java opensource проектов на github

Время на прочтение39 мин
Охват и читатели176K
Что это и зачем оно надо: Как известно, главное преимущество Java мира в том в нем существует огромное количество open-source проектов на на все случаи жизни, однако найти нужный на github'e не так просто, так как описание проекта часто мало информативно, зачастую сложно даже понять этот проект для Android'a или нет. В этой статье я автоматически и полуавтоматически собрал Java проекты, убрал старые и проекты только для Android'a, выбрал 350 набравших больше всего звезд, разделил по категориям и перевел описания.

Если вы хотите убедиться что базы данных пишут не только на C, найти проекты для работы с большими данными или нейронными сетями, пишите свой язык программирования для JVM и хотите посмотреть как это уже сделано или же просто хотите узнать какие новые возможности можно найти в Java мире open-source то это статья вам, думаю, может пригодится.

В чем смысл серии статей 'Шпаргалки Java программиста'
За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.


Другие статьи серии: часть 1. JPA и Hibernate в вопросах и ответах

Update: Внимание, актуальная версия со много большим количеством ссылок, находиться теперь в моем github'e проекте useful-java-links, по этой ссылке.


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

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

Время на прочтение32 мин
Охват и читатели145K

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

Мультиселект и автокомплит на AngularJS

Время на прочтение4 мин
Охват и читатели25K
Со списками множественного выбора на Ангуляре всегда было неважно. Существующие решения либо обертки над jQuery-плагином, либо выглядят как не пойми что, либо просто корявы. И у всех естественно особое уникальное АПИ, как будто пользователям делать больше нечего как вникать в ход мыслей разработчиков каждого плагина. Меня такое положение дел не устроило, поэтому написал свой велосипед. Спустя год он дозрел до публикации.

Та-дам! (и забавная история вконце)
Читать дальше →

June – интеллектуальная духовка от создателей iPhone, FitBit и GoPro

Время на прочтение4 мин
Охват и читатели7.4K
Талантливые люди талантливы во всем – это древнюю истину еще раз подтвердили создатели невероятной инновационной духовки June – единственной в своем роде печи, способной понимать, чего вы от нее хотите даже если вы полный нуб в кулинарии, умеющей обучаться и совершенствовать свое кулинарное мастерство, готовой обеспечивать доступ к функциям, о которых домохозяйкам еще вчера даже и мечтать не приходилось!

Над созданием интеллектуальной и аппаратной начинки “June Intelligent Oven” трудились такие безусловные авторитеты, как Никхил Бхогал (Nikhil Bhogal), разрабатывавший камеры для нескольких поколений iPhone и сам маэстро Мэтт ван Хорн (Matt van Horn), не нуждающийся в представлении. О том, насколько далека от совершенства оказалась привычная всем нам микроволновка и чего нам ожидать от ее футуристической преемницы уже в самом ближайшем будущем мы расскажем ниже…

June Intelligent Oven
Читать дальше →

Автоматическая аутентификация Android-устройства в Wi-Fi Московского Метро

Время на прочтение9 мин
Охват и читатели37K
Как известно, практически во всех вагонах Московского Метро действуют Wi-Fi точки доступа, с помощью которых пользователи могут получить доступ в интернет и приятно скоротать время поездки в метро с работы домой: почитать новости, проверить почту, посмотреть котиков на YouTube и т.д.

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

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

Если в метро вы не частый гость, то подобная схема может и не вызвать у вас раздражения, однако при ежедневном использовании она все таки надоедает, поэтому, как говорил один известный и харизматичный политик: «Хватит это терпеть!», сегодня мы будем автоматизировать аутентификацию в Московском метро.
Читать дальше →

Самодельный мобильный телефон

Время на прочтение1 мин
Охват и читатели27K


В салонах сотовой связи выбор мобильных телефонов очень ограничен: либо совсем «тупые» звонилки, либо смартфоны с большими экранами. Но зачем покупать мобильный телефон в магазине, если можно сделать свой собственный телефон? Так подумал американский программист Кевин Линах (Kevin Lynagh) — и воплотил мечту в реальность.

В презентации на конференции !!Con 2015 Кевин рассказал, как ему это удалось.
Читать дальше →

Чего хотят координаторы доменных зон?

Время на прочтение4 мин
Охват и читатели18K
Для того, чтобы зарегистрировать домен, нужны следующие данные:


  • Владелец домена;
  • Администратор;
  • Технический контакт;
  • Контакт для счетов;
  • Группа nameserver'ов.

Но некоторым координаторам доменных зон весьма скучно и, забавы ради, они выдумывают задачки для владельцев доменов и разработчиков. Расскажу о дополнительных данных для регистрации домена, которые нужно складывать в блок extension.

Домены: .cat, .scot, .gal, .eus


Текстовое поле: intendedUse — для описания цели использования домена. Мало ли что!


Домены: .nz


Текстовое поле: authCode
Если ты хочешь зарегистрировать hobbit.nz и есть уже домен hobbit.co.nz, то будь добр, введи код авторизации, иначе ты получишь… ничего не получишь (уточнил, сейчас требование уже снято, но пункт оставил в качестве примера).
Читать дальше →

Использование фильтра Калмана для определения производных измеряемой величины

Время на прочтение3 мин
Охват и читатели17K
Недавно занимался решением задачи передачи вектора состояния из имеющейся модели движения в специальное устройство формирования навигационного сигнала. При этом существовали следующие ограничения:
  • модель движения примерно периодически отправляет ранее рассчитанные координаты и скорость объекта с меткой времени в известном формате по UDP;
  • имитатор навигационного сигнала умеет устанавливать TCP-соединение и через него принимать вектор состояния, включающий кроме координат и скоростей еще ускорения и джерки — производные ускорения или третьи производные координат;
  • при скоростях до 10^4 м/с возмущающее ускорение не превышает 0.001 м/с2;
  • координаты можно считать независимыми;
  • в имитатор навигационного сигнала должен поступать прогноз вектора состояния на заданный момент в будущем.

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

Запущена первая в мире ММО-стратегия для программистов

Время на прочтение3 мин
Охват и читатели46K
Почему первая? Потому что раньше были игры для программистов, и были стратегические ММО-игры. Но до нас еще никто не делал игру, которая одновременно и является ММО с единым постоянным миром, и при этом целиком и полностью ориентирована на программистов.

В ноябре прошлого года мы запустили краудфандинговую кампанию на Indiegogo, собранные средства с которой позволили доработать прототип до полноценного продукта. Весь июнь и июль получившие приглашение игроки тестировали версию Early Preview. И вот, теперь мы объявляем о публичном запуске этого необычного проекта. Встречайте Screeps!



Под катом небольшое описание, отзывы и технические подробности проекта.
Читать дальше →

Интерполяция данных: соединяем точки так, чтобы было красиво

Время на прочтение7 мин
Охват и читатели175K
Как построить график по n точкам? Самое простое — отметить их маркерами на координатной сетке. Однако для наглядности их хочется соединить, чтобы получить легко читаемую линию. Соединять точки проще всего отрезками прямых. Но график-ломаная читается довольно тяжело: взгляд цепляется за углы, а не скользит вдоль линии. Да и выглядят изломы не очень красиво. Получается, что кроме ломаных нужно уметь строить и кривые. Однако тут нужно быть осторожным, чтобы не получилось вот такого:

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

Неочевидные проблемы с быстродействием в Doctrine, связанные с гидрацией объектов

Время на прочтение2 мин
Охват и читатели11K
Недавно я реализовал функции API в проекте с бэк-эндом Symfony2, использущем Doctrine в качестве ORM.

И, как это иногда бывает, скороость отрабатывания не вполне меня устроила. На несложный запрос ответ генерировался аж 7,2 сек.



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

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

CH341A, USB-UART-конвертер и I2C/SPI-программатор за $5

Время на прочтение4 мин
Охват и читатели284K
Когда-то давным-давно я писал пару статей о широко известном в узких кругах чипе FTDI FT232H и различных его применениях. Всем хорош был FT232H для DIY, но и у него нашлось несколько недостатков — относительно неприятный для ручной пайки корпус LQFP48 (для истинных любителей хардкора есть еще вариант в QFN48, паяй — не хочу, DIHALT не даст соврать), цена за оригинальный чип от 250 рублей, вероятность проблем с драйверами на поддельных чипах и некоторая функциональная избыточность, к примеру, поддержка JTAG нужна далеко не всем.

Решение, как обычно, пришло из Поднебесной, в которой после нескольких лет тупого передирания творческой адаптации чужих чипов наконец выпустили свой собственный конвертер USB-TTL — WinChipHead CH341A в корпусе SOP-28 (не DIP, но тоже паяется без проблем).

Производство чипа было начато году приблизительно в 2006, но в поле моего зрения он попал только в 2014, когда I2C/SPI-программаторы на этом чипе наводнили европейский EBAY, причем продавцы предлагали цену от 3,5 евро вместе с доставкой, что при средней стоимости хорошего китайского программатора вроде MiniPro TL866A в 50 евро оказалось настолько заманчивым предложением, что устоять не получилось.

Если вам все еще интересно, что умеет этот китайский чип за 1$ и стоит ли платить больше, если не видно разницы — прошу под кат.
Читать дальше →

Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

Время на прочтение8 мин
Охват и читатели89K
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Читать дальше →

Создание и настройка сервера Minecraft

Время на прочтение13 мин
Охват и читатели340K
Minecraft Selectel

Minecraft сегодня принадлежит к числу самых популярных сетевых игр. За неполных три года (первый официальный релиз состоялся осенью 2011 года) у него появились миллионы поклонников по всему миру.

Разработчики игры сознательно ориентируются на лучшие образцы двадцатилетней давности, когда многие игры были по сегодняшним меркам примитивными с точки зрения графики и несовершенными с точки зрения юзабилити, но при этом — по-настоящему захватывали.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность