Приложение для просмотра ошибок в Мобильном обходчике

По адресу http://vnext:3000 доступен сервис по просмотру ошибок в мобильных сервиса.

Логин: user

Пароль: user0

Приложение состоит из:

  • Логирование
    • Аудит — действия пользователя на устройстве
    • Ошибки клиента — ошибки возникшие на клиентском устройстве
    • Серверные ошибки — ошибки при синхронизации данных

Читать далее «Приложение для просмотра ошибок в Мобильном обходчике»

Модуль отправки сообщений через nodejs-email

Получение модуля:

git clone git://git.appcode.pw/nodejs-email.git
или
npm install git://git.appcode.pw/nodejs-email.git

Применение

Добавляем модуль:

var nodejsEmail = require('nodejs-email')(settingOrPath);

,где settingOrPath:any — путь к файлу с настройками, либо передается объект  (см. ниже) с уже прочитанными данными

Затем в нужном месте вызываем метод:

nodejsEmail.send(subject:string, messages:any[]);

, где:

    • subject: string — тема письма
    • messages: any[] — список сообщений

Формат сообщений

[{
   "body": "текст письма",
   "level": "error" // уровень
}]

Настройки

Настройки модуля хранятся в файле в следующем формате:

{
    "host": "you.smtp.ru", /// host: адрес smtp сервера;
    "port": 25, /// port: порт smtp сервера;
    "secure": false, /// secure: используется шифрование или нет;
    "user": "sender@smtp.ru", /// user:  логин;
    "pass": "password", /// pass: пароль;
    "from": "\"Имя\" <sender@smtp.ru>", /// from: от кого;
    "to": "user@other.ru", /// to: через запятую указывается список адресов для отправки;
    "level": ["warn", "log", {
        "status": "error",
        "to": "spec@other.ru"
    }] /// level: warn, error, log, *;
}

где, level — это уровни отправки сообщений. Доступны следующие уровни:

  • log — уровень логирования, не является ошибкой
  • warn — предупреждение
  • error — ошибка
  • * — все выше указанные

Например для отправки только сообщений с ошибками указывать:

level: ['error']

Для отправки только предупреждений и ошибок:

level: ['error', 'warn']

Для отправки сообщений определенного типа, определенным пользователям:

"level": ["warn", "log", {
"status": "error",
"to": "a-krasnov@it-serv.ru"
}]

 

Синхронизация

Синхронизация

Синхронизация бывает нескольких типов:

  • Полная или ручная (Full) – передаются на сервер все не переданные данные, очищается хранилище и загружаются все данные с сервера
  • Обновление с учетом даты последней синхронизации (Medium) – передаются на сервер все не переданные данные и загружаются новые данные
  • Сохранение выполненного задания (Lite) – передаются на сервер все не переданные данные
  • Передача геоданных (Geo) – передаются на сервер геоданные на сервер. Может выполнятся параллельно
  • Сохранение информации о пользователе (User) – передается на сервер информация о пользователе и загружается новая. Может выполнятся параллельно
Тип

синхронизации

Выполняется при старте Передача данных Загрузка данных Загрузка с учетом даты пред. синхронизации Параллельное выполнение Очистка данных после загрузки Возможность отменить
Full + + + + + +
Meduim + + +
Lite +
Geo + +
User + + +

 

Особенности:

  • При первом запуске всегда выполняется Full – синхронизация
  • При каждом запуске, но не первом, выполняется Medium-синхронизация
  • После каждого выполнения задания запускается Lite-синхронизация
  • Каждую N-секунд (по умолчанию 60 сек) выполняется Geo-синхронизация
  • После создания аватарки выполняется User-синхронизация
  • Одновременное выполнение Full, Medium, Lite невозможно
  • Full – синхронизация может запускаться вручную независимо от других типов

 

 

 

 

 

 

 

 

 

 

 

Процесс

Синхронизация выполняется только при наличии интернет соединения.

 

 

Выполняется выборка из

локального хранилища

тех записей, которые,

нуждаются в добавлении,

обновлении, удалении

 

 

 

 

 

 

 

Количество передаваемых байт

зависит от типа соединения:

  • wifi,4g,3g – 1 Мбит
  • 2g — 9,6 кбит

 

 

 

 

После удачной передачи данных,

переданный пакет обрабатывается

на сервере, клиент ожидает

результат

 

 

 

Не зависимо от результата

выполнения информация

передается на устройство

 

 

 

 

 

Если в результат обработки

данных обнаруживается,

ошибка, то локальные данные

которые были переданы на

сервер помечаются как

«требующие повторной

передачи»

Отключить уведомление об обновлении версии linux

Открываем файл

/etc/update-manager/release-upgrades

Находим строчку Prompt и устанавливаем параметр never

Prompt = never

 

Работа с настройками

Для работы с настройками применяется класс IServ.Utilits

  • getConf: (string)=>any — возвращается значение настройки переданной методу
  • setConf: (string, any)=>void — устанавливается значение настройки

Установка значение в файл config.json физически не производится. Новое значение настройки заносится в localStorage

var port = Utilits.getConf('port');
console.log(port); // вывод номера порта
Utilits.setConf('port', 2500); // установка порта, запись происходит в localStorage
Utilits.getConf('port'); // чтение произошло из localStorage

Подробнее о настройках можно узнать здесь.

Использование модуля диагностики в приложении

В пакете developer_package доступен модуль IServ.Developer.Diagnostic. Данный модуль является singleton классом состоящим из одного главного метода start и массива tasks.
Для создания списка заданий, которые например должны выполняться при запуске приложения нужно выполнить следующий код:

Diagnostic.tasks.push(function(callback) {
     // тут метод для обработки, если есть ошибки, то нужно заполнить объект Diagnostic.messages - это массив
     // после выполнения вызвать callback();
});

Diagnostic.start(); // запуск диагностики

После запуска диагностики, если найдены ошибки будет выведено окно со спискам сообщений.

Использование команд разработчика

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

Для ввода кода требуется зажать клавишу SHIFT, нажать символ ~ (буква ё в русской раскладке) и вводить комбинацию символов. Читать далее «Использование команд разработчика»

Создание пакетов для деления проекта на модули

Пример генерации:

sencha generate package [name_package]

, где [name_package] наименование пакета без пробела.

Генерация пакетов предоставляет следующие возможности:

  • делит проект на модули
  • позволяет использовать пакет в других проектах
  • позволяет переопределять поведение классов и методов (ядра) для конкретного заказчика

Читать далее «Создание пакетов для деления проекта на модули»

Вывод пунктов меню для overflow:menu

Для вывода панели с кнопками которые не влезают

Нужно использовать специальные панели IServ.UI.Classic.ListViewToolbar или IServ.UI.Classic.DetailViewToolbar
Все элементы данных панелей могут быть двух видов:

  • кнопка с иконкой и текстом
  • кнопка с иконкой

Читать далее «Вывод пунктов меню для overflow:menu»