Как и многие жители городов, я не обладаю достаточным пространством для развертывания полноценной коротковолновой антенны, такой, как диполь. Доступа на крышу у меня нет. Под окнами растут деревья, на которые можно закинуть каких-нибудь проводов. Но для такого варианта нужен антенный тюнер, которого у меня пока нет. Поэтому, выбирая свою первую антенну, я искал что-то, что можно развернуть на балконе. Оказалось, что подходящих антенн достаточно много, и большинство из них относятся к классу укороченных вертикальных антенн. Изучив доступные варианты, я остановился на антенне OPEK HVT-400B.
В рамках поста Устанавливаем связку из Prometheus и Grafana мы познакомились с Prometheus и разобрались с его настройкой. Теперь давайте выясним, как отправить в него каких-нибудь метрик из нашего собственного приложения. Писать будем на языке Go, но я почти уверен, что для других языков существуют аналогичные библиотеки.
Как вам уже известно из статьи Проходим квест на получение позывного и регистрацию РЭС, в качестве своего первого трансивера я выбрал Yaesu FT-891. Сегодня мне хотелось бы вкратце рассказать о данном устройстве, а также поделиться впечатлениями от его использования.
Если вы давно читаете этот блог, то можете помнить некоторые старые посты, посвященные мониторингу. В частности, была рассмотрена связка из Graphite, StatsD и CollectD, а также, несколько поверхностно, сервис Datadog. Однако мир не стоит на месте. Приходят новые технологии, некоторые из которых даже оказываются лучше своих предшественников. В качестве таких новых технологий можно привести в пример связку из Prometheus и Grafana.
Как мы выяснили в рамках заметки Слушаем коротковолновиков при помощи RTL-SDR, любительское радио живет и процветает. В связи с этим я решил попробовать себя в качестве полноценного оператора, а не только слушателя. Далее будут описаны шаги, необходимые для выхода в эфир.
На первый взгляд, модульные тесты в Go пишутся очень просто. Создаем файл с именем пакет_test.go
, в нем объявляем функции с именами TestЧтоТестируем
, говорим go test
, ну и считай готово. Однако на деле все оказывается чуточку сложнее. Например, оказывается, что из коробки в языке нет ни ассертов, ни моков. А когда ты начинаешь генерировать моки, они внезапно начинают участвовать в подсчете покрытия кода тестами. В общем, давайте разберемся, как все устроено на самом деле.
Переменные конденсаторы, они же конденсаторы переменное емкости или КПЕ, используется во множестве устройств. Они нужны в генераторах, антенных тюнерах, некоторых видах антенн, и много где еще. Обратим внимание на тот факт, что в любительской радиосвязи, к примеру, трансивер может с легкостью выдавать 25 Вт или 100 Вт, максимально же разрешенная мощность составляет 1000 Вт. Понятно, что общедоступные маленькие КПЕ тут совершенно не годятся, а нужных для таких мощностей КПЕ в магазине вы попросту не найдете.
В прошлых постах вы могли прочитать о том, как сериализовать объекты в языке C++, используя формат Protobuf, а также в языке Scala, используя Thrift. Была рассмотрена даже такая эзотерика, как формат MessagePack и работа с ним на языке Haskell. Давайте же теперь выясним, как делается сериализация в языке Go. Для этого мы воспользуемся форматом CBOR и библиотекой codec.
Допустим, у вас есть некое устройство, питаемое от внешнего аккумулятора. Для определенности скажем, от это LiIon или LiPo, часто используемые в квадракоптерах. При питании от внешнего источника всегда есть неплохие шансы сжечь устройство. Самый простой способ это сделать — перепутать полярность. Еще можно запитать устройство от блока питания и, случайно крутанув ручку, превысить допустимое напряжение. Давайте рассмотрим классическую схему, защищающую от таких ошибок при помощи компонентов общей стоимостью менее 5$.
Ранее в этом блоге многократно упоминались чипы производства компании FTDI, такие, как FT232RL и FT2232HL — смотри заметки раз, два и далее по ссылкам. В частности, было сказано, что этими чипами можно управлять с компьютера, что позволяет использовать их, например, в качестве программатора. При этом чипы FTDI поддерживают несколько режимов работы. Далее будет рассмотрен, пожалуй, самый простой режим под названием bitbang.