Перейти к основному содержанию

Ziva на встроенных системах

Библиотека с самого начала проектировалась для работы в терминалах с ограниченными возможностями: BusyBox, OpenWrt, промышленные контроллеры, одноплатные компьютеры.

Базовая конфигурация

func init() {
    ziva.SetDefaultLanguage("ru")
    ziva.AutoConfigure()
    ziva.EnableEmbeddedMode()
    ziva.EnableASCIIMode() // если терминал не поддерживает Unicode
}
AutoConfigure() анализирует память и автоматически снижает нагрузку (уменьшает историю задач, включает лёгкие стили).

Переменные окружения

export ZIVA_MEMORY_PRESSURE_THRESHOLD=48M
export ZIVA_MAX_COMPLETED_TASKS=5
export ZIVA_LANG=ru
  • ZIVA_MEMORY_PRESSURE_THRESHOLD — порог, при котором очередь начнёт освобождать память.
  • ZIVA_MAX_COMPLETED_TASKS — сколько завершённых задач хранить в истории.
  • ZIVA_LANG — принудительный язык интерфейса.

Минималистичный вывод

Уберите всё лишнее, чтобы не переполнить экран:
queue := ziva.NewQueue("Конфигурация роутера")
queue.
  WithAppName("RouterSetup").
  WithOutSummary().
  WithOutResultLine().
  WithTasksNumbered(false, "")

Работа с таймаутами

На headless-устройствах оператор может не успеть ответить. Используйте таймауты с безопасными значениями по умолчанию:
confirm := ziva.NewYesNoTask("Подтверждение", "Перезапустить сервис?").
    WithDefaultNoAndTimeout(10 * time.Second)

ASCII и шрифты

Если терминал не поддерживает UTF-8:
  1. Включите EnableASCIIMode().
  2. Настройте локаль и шрифты (см. раздел «Установка»).
  3. Избегайте символов псевдографики в собственных сообщениях.

Логи и диагностика

  • Для долговременных логов используйте отдельный файл/удалённый syslog. Не выводите большие дампы в интерфейс Ziva.
  • Добавьте FuncTask, который проверяет доступность внешних ресурсов (например, сеть) перед запуском основной процедуры.
testConnection := ziva.NewFuncTask("Проверка сети", checkWAN,
    ziva.WithStopOnError(true),
)

Рекомендации

  • Не перегружайте очередь. 4–6 задач в одном сценарии — оптимальный баланс для маленьких экранов.
  • Сохраняйте состояние. После queue.Run() сохраняйте результаты в конфигурационных файлах, чтобы устройство могло работать автономно.
  • Используйте предустановленные цвета. Встроенный режим подбирает безопасные оттенки для низкоскоростных терминалов.
  • Проверяйте ширину экрана. Ограничьте viewport (WithViewport) и держите описания короткими.

Дополнительно

I