sudo adduser test sudo usermod -a -G sudo test
Android Osmdroid & Mobac
Введение: в этой статье будет описан процесс привязки открытых карт (Open Street Map) к мобильной платформе Android. Результатом будет «маленькое» приложение, которое будет работать на телефоне без подключенного интернета.
osmdroid
библиотека для работы с картами Open Street Map. Исходный код находится на github. Данную библиотеку требуется прикрепись к проекту.
Читать далее «Android Osmdroid & Mobac»Работа с WebSocket
Мобильные сервисы для передачи мгновенных сообщений использует протокол websocket.
Передача уведомлений осуществляется при помощи «пакетной» передачи данных — механизм аналогичный синхронизации.
NML175.........0{"stringSize":29,"binarySize":0,"attachments":[],"bufferBlockToLength":207,"bufferBlockFromLength":0,"transaction":false,"dataInfo":"mail","version":"v2","id":"1599022001522"}[{"name":"to0","length":207}]{"action":"cd_notifications","method":"Add","data":[[{"fn_user_to":null,"fn_user_from":null,"c_message":"Hello","c_title":"Уведомление","d_date":"2020-09-02T04:46:39.785Z"}]],"tid":0,"type":"rpc"}
Выше показан пример пакета для отправки уведомлений.
Создание слушателя в NodeJS
Переходим в каталог modules/socket и находим там файл main.js В этом файле выполняется регистрация нового слушателя.

Foreign Data Wrapper
https://riptutorial.com/postgresql/example/29417/foreign-data-wrapper
To access complete schema of server db instead of single table. Follow below steps:
- Create EXTENSION :
CREATE EXTENSION postgres_fdw;
- Create SERVER :
CREATE SERVER server_name FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'host_ip', dbname 'db_name', port 'port_number');
- Create USER MAPPING:
CREATE USER MAPPING FOR CURRENT_USER SERVER server_name OPTIONS (user 'user_name', password 'password');
- Create new schema to access schema of server DB:
CREATE SCHEMA schema_name;
- Import server schema:
IMPORT FOREIGN SCHEMA schema_name_to_import_from_remote_db FROM SERVER server_name INTO schema_name;
- Access any table of server schema:
SELECT * FROM schema_name.table_name;
This can be used to access multiple schema of remote DB.
Автоматическое создание backup
Ниже написан скрипт для автоматического создания копии БД с последующим восстановлением на тестовой среде.
#!/bin/bash echo "Архивация БД vote-dev" dir_folder=/var/lib/postgresql/vote-dev mkdir -p $dir_folder cd $dir_folder # создание backup pg_dump vote-dev > $dir_folder/vote-dev-day_$(date +\%Y\%m\%d).bak # disconnect БД psql -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname = 'vote-test';" # удаление и создание БД dropdb vote-test psql -c 'create database "vote-test";' psql -c 'ALTER DATABASE "vote-test" OWNER TO mobnius;' # восстановление резервной копии psql -U postgres vote-test < $dir_folder/vote-dev-day_$(date +\%Y\%m\%d).bak ls -1tr | head -n -7 | xargs -d '\n' rm -f -- echo "Завершено"
android-core: Привязка к проекту
Библиотека android-core является набором функция и команд для реализации проекта «Мобильный обходчик», цель которого сбор информации с помощью мобильного устройства.
Библиотека находиться по адресу git.appcode.pw и ее можно получить при помощи команды
git clone https://git.appcode.pw/android-core.git
Привязка к проекту
Для привязки библиотеки к проекту требуется:
- в корень проекта добавить библиотеку
git submodule add https://git.appcode.pw/android-core.git core
- в setting.gradle добавить следующую строку
include ':app' include ':core' // вот ее и нужно добавить rootProject.name='Kes'
- в build.gradle добавить
dependencies { ... implementation project(path: ':core') ... }
Способы проверки доступности TCP-портов
Как проверить доступен ли порт?
Традиционный способ.
Первое, что приходит на ум — использовать «старый добрый» telnet.
Для примера проверять будем доступность менеджера кластера:
C:\>telnet ks-app-02 2141
Получили в ответ «кракозябру» — значит доступ есть

Вызов MSSQL процедур через NodeJS
Для прямого запроса к базе данных в NodeJS доступна библиотека mssql
// https://github.com/tediousjs/node-mssql npm install mssql
Далее формируем config для подключения к БД:
const config = { user: 'логин', password: 'пароль', server: 'dbsrv\\sql2017', database: 'MobileService', options: { enableArithAbort: false } }
Пример выполнения процедуры:
const sql = require('mssql'); sql.connect(config, function (err) { var request = new sql.Request(); request.input('User', '5B26F42C-C6E7-4B92-AFED-972EAB0B095A') .input('Date', '02-07-2020') .execute('[dbo].[UI_Get_Statistics_By_User]', (err, result) => { if (!err) { var items = result.recordset; console.log(items); } else { console.error(err); } sql.close(); }); });
Распределение нагрузки в IIS для NodeJS
Главная проблема javascript это то что он однопоточный. Эта же проблема есть и в приложения написанных на NodeJS.
Итак нам понадобится:
- виртуальная машина с Windows Server 2012 или выше
- установленная IIS
- приложение на NodeJS (в примере будет использоваться фреймворк Express)
- и «магия»
Инструкцию по установке Windows и настройке IIS описывать не буду, это можно найти в интернете. Приступаем сразу к запуску NodeJS приложения.
Читать далее «Распределение нагрузки в IIS для NodeJS»Тестирование RPC в Postman
Передача RPC запроса в Postman
- в Headers добавляем Content-Type: application/json
