SolarMonitor: как за два дня я написал свое первое дополнение для NVDA

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

Но иногда одна простая идея перерастает в полноценный проект. Именно так получилось с SolarMonitor.

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

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

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

Все началось совсем не с дополнения

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

Поэтому перед тем как включить трансивер или просто поинтересоваться, что происходит в эфире, я почти всегда смотрю основные показатели: SFI, K-индекс, скорость солнечного ветра и прогноз прохождения.

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

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

Но спустя некоторое время я поймал себя на одной мысли.

Когда работаешь за компьютером с NVDA, даже открыть браузер, перейти на нужную страницу, дождаться загрузки и посмотреть информацию, пусть это и занимает совсем немного времени, все равно оказывается лишним действием. Особенно если за день делаешь это несколько раз.

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

Именно тогда в голове появилась очень простая мысль:

«А почему бы не сделать все это прямо внутри NVDA?»

Так и родилась идея SolarMonitor. Не как очередного проекта «на всякий случай», а как инструмента, которым я сам собирался пользоваться каждый день.

Два дня, Claude и несколько переустановок

Когда появилась идея, я даже не представлял, насколько быстро она превратится в рабочее дополнение.

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

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

Но на этом работа не заканчивалась.

Каждое изменение нужно было проверить самостоятельно. Установить дополнение. Запустить NVDA. Посмотреть, как озвучиваются элементы. Проверить, что ничего не сломалось. Исправить очередную мелочь. Снова собрать дополнение. Снова установить. И повторить все заново.

В итоге я переустанавливал SolarMonitor несколько раз подряд, пока не получил именно то поведение, которое хотел увидеть. Наверное, именно тестирование заняло больше всего времени.

Параллельно пришлось подготовить документацию, перевести дополнение на английский язык, оформить репозиторий на GitHub и привести проект в состояние, пригодное для публикации.

Самое удивительное для меня было даже не то, что все это получилось сделать примерно за два дня. Больше всего удивило другое: еще совсем недавно мне казалось, что написать собственное дополнение для NVDA невероятно сложно. На практике оказалось, что главное не бояться начать.

Именно в этот момент я понял, что SolarMonitor уже перестал быть просто экспериментом. Он превратился в инструмент, которым я действительно хотел пользоваться каждый день.

Почему SolarMonitor выглядит именно так

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

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

Для незрячего пользователя это особенно удобно. Ты остаешься в той программе, в которой работал, вызываешь дополнение, быстро просматриваешь информацию и буквально через несколько секунд возвращаешься обратно.

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

По сути, SolarMonitor не пытается стать еще одной программой. Он просто становится частью NVDA и ощущается как естественное продолжение программы экранного доступа.

Как пользоваться дополнением SolarMonitor

Я старался сделать SolarMonitor максимально простым в использовании. После первоначальной настройки дополнение не требует открытия дополнительных окон или выполнения сложных действий.

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

Откройте меню NVDA, перейдите в раздел «параметры» → «Жесты ввода». В списке категорий найдите пункт:

«Монитор солнечной активности»

Внутри категории находится действие:

«Открыть или закрыть виртуальный интерфейс монитора солнечной активности»

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

После назначения жеста работа с дополнением выглядит так:

  • Нажмите назначенное сочетание клавиш для открытия виртуального интерфейса SolarMonitor.
  • Используйте стрелки влево и вправо для переключения между разделами:
    • солнечные индексы;
    • условия прохождения на КВ;
    • условия прохождения на УКВ.
  • Используйте стрелки вверх и вниз для перемещения между параметрами внутри выбранного раздела.
  • Если какой-то параметр вызывает вопросы, нажмите клавишу D. SolarMonitor зачитает подробное описание показателя, объяснит его значение и поможет понять, как он влияет на прохождение радиоволн.
  • Чтобы закрыть виртуальный интерфейс, снова нажмите то же сочетание клавиш, которое было назначено в настройках.

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

Когда понимаешь, что все было не зря

Есть один момент, после которого я окончательно понял, что идея оказалась удачной.

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

Теперь все происходит совершенно иначе.

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

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

Почему в дополнении так много параметров

Во время разработки я несколько раз задавал себе вопрос: а не оставить ли только самые популярные показатели? Например, SFI и K-индекс.

Но довольно быстро понял, что это было бы неправильным решением.

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

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

При этом никто не обязан просматривать абсолютно все параметры. Если вас интересуют только SFI, K-индекс и прогноз прохождения, можно просто пропустить остальные строки. Это занимает считанные секунды.

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

Не знаешь, что означает параметр? Это не проблема

Есть еще одна функция, которую я считаю не менее важной, чем сами данные.

Когда я только начинал интересоваться солнечной активностью, многие сокращения казались совершенно непонятными. Что такое SFI? Почему все говорят про K-индекс? Какая скорость солнечного ветра считается нормальной? Что означает высокий уровень рентгеновского излучения?

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

Мне захотелось сделать так, чтобы часть этой информации всегда была под рукой.

Поэтому практически для каждого параметра в SolarMonitor можно нажать клавишу D и сразу услышать его описание. Дополнение объяснит, что означает выбранный показатель, на что он влияет и какие значения считаются благоприятными или, наоборот, могут говорить об ухудшении прохождения.

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

Пожалуй, самым сложным оказалось не написать дополнение

Как ни странно, самым сложным этапом разработки оказался вовсе не код.

Самым сложным оказалось дождаться публикации.

С русским магазином дополнений все получилось довольно быстро. Я отправил дополнение человеку, который занимается поддержкой русского каталога, и спустя некоторое время SolarMonitor стал доступен для скачивания.

Следующим шагом стала публикация в официальном международном магазине дополнений NVDA.

Именно здесь выяснилось, что для первой публикации каждый новый разработчик проходит ручную проверку командой NV Access. Это вполне понятная мера безопасности, ведь сотрудники проекта должны убедиться, что дополнение действительно публикует его автор или человек, имеющий на это право.

Сейчас SolarMonitor находится именно на этом этапе. Надеюсь, в ближайшее время дополнение появится и в официальном международном каталоге NVDA.

Что дальше?

Честно говоря, я не хочу превращать SolarMonitor в проект, который развивается только потому, что «нужно выпустить новую версию».

Мне гораздо интереснее другой подход.

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

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

Несколько мыслей напоследок

Если бы кто-нибудь сказал мне несколько месяцев назад, что я напишу собственное дополнение для NVDA, переведу его на два языка, опубликую в русском магазине дополнений и отправлю на проверку в официальный международный каталог, я бы, наверное, сильно удивился.

Но эта история научила меня одной простой вещи.

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

Для меня SolarMonitor стал именно таким проектом. Он появился потому, что однажды мне самому захотелось получать информацию о солнечной активности быстрее и удобнее. Теперь я каждый день пользуюсь этим дополнением и понимаю, что все потраченное время было не зря.

Полезные ссылки

Если вы тоже пользуетесь NVDA и увлекаетесь радиолюбительством, буду рад, если SolarMonitor окажется полезным и для вас.

Если вы обнаружите ошибку, захотите предложить новую функцию или просто поделиться впечатлениями после использования, обязательно напишите. А если вы умеете программировать на Python и хотите принять участие в развитии проекта, буду только рад новым участникам. Любые идеи, сообщения об ошибках и pull request’ы приветствуются.

Спасибо всем, кто уже успел протестировать первые версии SolarMonitor и помог сделать дополнение лучше. Надеюсь, это только начало его истории.

Поделись!

Автор: R1BQE

Я занимаюсь радиолюбительством с 17 лет. Мой позывной — R1BQE (бывший R1OAZ). Всё началось с увлечения радиоприёмниками и антеннами, но со временем я углубился в радиосвязь, освоив трансиверы и строя свои собственные антенны. Сейчас мне интересны не только новые технологии и улучшение качества радиосигнала, но и помощь новичкам в освоении радиолюбительства. Я продолжаю развиваться в этом направлении и всегда стремлюсь узнать больше.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *