Недавно у меня наконец-то дошли руки поиграться с eBPF. Если вдруг вы все пропустили, eBPF — это очередная реализация идеи «а давайте сделаем DTrace для Linux». Другой реализацией этой идеи является SystemTap. Только SystemTap трудно устанавливается, пользоваться им не очень удобно, и его страшно запускать на проде. В отличие от него, eBPF прямо-таки похож на нормальный инструмент. Давайте же поскорее с ним познакомимся!

Из этой заметки вы узнаете, как своими руками сделать пульт для презентаций (a.k.a кликер) из Arduino Leonardo и дешевого радиомодуля на 433 МГц. Помимо прочего, этот проект интересен тем, что в нем реализовано декодирование сигнала с OOK-модуляцией, чему при желании можно найти массу практических применений. Также в проекте утилизируется возможность микроконтроллера ATmega32U4 мастерски притворяться мышью или клавиатурой.

Очень многие программисты при написании сетевых приложений на C/C++ по неопытности допускают одни и те же ошибки. Даже несмотря на то, что эти ошибки, казалось бы, довольно известны. Поэтому сегодня мне хотелось бы в очередной раз поднять этот несколько баянистый топик, в надежде, что заметка поможет уменьшить hit ratio соответствующих граблей.

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

Один из способов развлечения с Software Defined Radio заключается в том, чтобы наблюдать за самолетами. В современных самолетах используется технология ADS-B. Суть ее заключается в том, что самолеты передают номер рейса, скорость, высоту полета, GSP-координаты, и прочую информацию о воздушном судне на частоте 1090 МГц, используя модуляцию DPSK. Передаваемая информация никак не шифруется, и при помощи RTL-SDR принять ее может любой желающий.

При разработке веб-приложений и всяких там бэкендов иногда возникает необходимость запустить кусок кода ровно на одном сервере, а не на всех. Типичный случай — это когда вам нужно запустить фоновую миграцию схемы базы данных. Однако бывают и другие сценарии, некоторые из которых упоминались в заметке Пример использования акторов-одиночек в Akka. Задача выбора одного «главного» сервера из N довольно просто решается при помощи подхода под названием leader lease, речь о котором и пойдет далее.

Некоторое время назад я сделал несколько несложных модификаций в имеющимся у меня RTL-SDR. В этой заметке я хотел бы вкратце рассказать об этих модификациях, и в чем заключается их практическая ценность. Описанные модификации крайне просты. Их может повторить за один вечер практически любой желающий.

Бывает, что нужно по-быстрому визуализировать какие-то данные — построить графики для презентации или вроде того. Есть много способов сделать это. Например, можно открыть CSV-файл в LibreOffice или Google Docs и построить графики в нем. Но что, если диаграммы нужно строить регулярно, а значит предпочтительнее делать это автоматически? Вот тут-то на помощь и приходит Python с его потрясающей библиотекой Matplotlib.

В сети можно найти массу примеров использования радиомодулей на 433 МГц совместно с Arduino. Обычно эти примеры ограничиваются чем-то вроде «а давайте подключим библиотеку VirtualWire, воспользуемся парой процедур из нее, и опа, все магическим образом работает». Само собой разумеется, меня такое положение дел не устраивает, потому что я хочу знать точно, как эти модули общаются с Arduino, и что именно они передают в эфир. Давайте же во всем разберемся!

Ранее в заметке Как я собирал свой первый квадрокоптер на базе PixHawk была описана, так сказать, базовая комплектация квадрокоптера — полетный контроллер, рама, ESC, моторы, пропеллеры, и так далее. Это минимум, необходимый для получения чего-то, что летает. Однако на таком квадрокоптере вы далеко не улетите, так как по мере удаления от вас он очень быстро превращается в небольшое черное пятнышко на небе. Да и не очень-то безопасно на нем летать. В частности, при потери связи с аппаратурой или сильном разряде аккумулятора лучшее, что может сделать квадрокоптер — это успеть автоматически приземлиться (в реку, на дерево, или кому-нибудь на голову). Давайте же выясним, как можно решить эти проблемы.