Если вдруг после прочтения заметки об антенне OPEK HVT-400B у вас сложилось впечатление, что это прямо супер-антенна, и лучше нее ничего нет, то это совершенно не так. Данная антенна имеет низкую эффективность, что весьма заметно, если сначала поработать на нее, а затем на полноразмерный диполь. Поскольку не всякий начинающий радиолюбитель готов вот так сразу взяться за изготовление собственных антенн, встает вопрос о выборе недорогого готового диполя, желательно сразу на несколько диапазонов. В качестве такого диполя можно порекомендовать антенну D2040 производства компании Радиал.

Badger — это реализация LSM tree на языке Go. Не будет преувеличением сказать, что это как RocksDB, только написанный с нуля на другом языке программирования. Библиотека основана на WiscKey paper [PDF], обмазана кучей всевозможных тестов, неплохо показывает себя на бенчмарках, ну и в целом производит впечатление серьезного проекта. Мне захотелось познакомиться с библиотекой поближе. Поэтому я написал на ней простенькую key-value СУБД с REST-интерфейсом.

Как и многие жители городов, я не обладаю достаточным пространством для развертывания полноценных коротковолновых антенн, таких, как диполи или inverted vee. Доступа на крышу у меня нет. Под окнами растут деревья, на которые можно было бы закинуть каких-нибудь проводов. Но для такого варианта нужен антенный тюнер, которого у меня пока нет. Поэтому, выбирая свою первую антенну, я искал что-то, что можно развернуть на балконе. Оказалось, что подходящих антенн достаточно много, и большинство из них относятся к классу укороченных вертикальных антенн. Изучив доступные варианты, я остановился на антенне 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.