Правило назначения версий

Для определения новой версии приложения предлагается следующий алгоритм:

  • Версия приложения должна состоять из 3 или 4 групп чисел.
  • Первая группа — номер версии приложения (архитектура).
  • Вторая группа — количество дней пройденных с даты начала разработки.
  • Третья группа — статус приложения:
    • 0 — альфа — прототип
    • 1 — бета — отправлен в тестирование
    • 2 — выпуск-кандидат — передан на тестирование заказчику
    • 3 — публичный выпуск — окончательно передан заказчику
  • Четвертая группа — количество минут от текущей даты.

Из-за особенности npm создание группы из четырех чисел не представляется возможным, предлагается применять группу из 3 чисел, где третья группа будет отсутствовать (информация о статусе приложения).

Пример:

1.2.0.48 – Версия 1.2 — прототип от 18.12.2019, 00:48:00

1.2.3.56 — Версия 1.2 — публичная версия от 18.12.2019, 00:56:00.

Установка plv8 на postgresql 9.3

На ubuntu 14.04 по умолчанию устанавливается postgresql 9.3. Для установка plv8 требуется:

  • выполнить команду apt-get install postgresql-9.3-plv8
  • выполнить запрос CREATE EXTENSION plv8;

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

-- FUNCTION: public.plv8_test()
-- DROP FUNCTION public.plv8_test(TEXT[], TEXT[]);
CREATE OR REPLACE FUNCTION public.plv8_test(keys TEXT[], vals TEXT[])
RETURNS json
LANGUAGE 'plv8'
COST 100
VOLATILE
AS $BODY$
var o = {};
for(var i=0; i<keys.length; i++){
o[keys[i]] = vals[i];
}
return o;
$BODY$;
ALTER FUNCTION public.plv8_test(TEXT[], TEXT[])
OWNER TO postgres;
Пример выполнения javascript

Поиск источника процесса stealth

Если в процессах сервера обнаружен следующий процесс

То это вирус. Для поиска источника требуется в начале узнать идентификатор процесса

sudo find /tmp | grep -i stealth

Далее читаем информацию из файла

Выполняем команду для вычисления источника, где 9561 идентификатор процесса

sudo ls -l /proc/9561/exe

Tomcat behind ssl Nginx reverse proxy

Настройка Nginx:

map $scheme $port { default 80; http 80; https 8443; }

server {
listen 80;
listen 443 ssl;
server_name _;

ssl_certificate      /etc/nginx/ssl/chained-cert.crt;
ssl_certificate_key  /etc/nginx/ssl/sslkey.key;
ssl_protocols        SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;

proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $remote_addr;

location / {
   proxy_pass http://127.0.0.1:$port;
}

}

Читать далее «Tomcat behind ssl Nginx reverse proxy»

Удаленная отладка nodejs приложений

Предварительно требуется установить node-inspect

 npm install -g node-inspect 

Далее от имени sudo запускаем команду

sudo node --inspect bin/www

где bin/www исполняемый файл (он может заканчивать на js)

Если машина на который будет производиться отладка работает под Windows, то нужно поставить OpenSSH.

Читать далее «Удаленная отладка nodejs приложений»

Sailfish OS

Официальный сайт https://sailfishos.org

Установить SDK можно здесь

Какой комплект выбрать?

Если есть устройство с предустановленной Sailfish OS, то выбираем armv7hl, если же нет, то i486 (нужен VirtualBox)

Документация QML компонентов https://doc.qt.io/qt-5.9/qmltypes.html

Описание Silica компонентов https://sailfishos.org/develop/docs/silica/sailfish-silica-all.html

Подробности можно узнать из этого видео.

Установка FortiClient

Инструкция по установке FortiClient на терминальный linux (ubuntu 14)

Скачиваем нужную нам версию forti с сайта https://hadler.me/linux/forticlient-sslvpn-deb-packages/

Устанавливаем пакет:

sudo dpkg -i forti*.deb

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

dpkg -L <packagename>

Создаем файл (скрипт) для запуска

cd /opt/forticlient-sslvpn/64bit
./forticlientsslvpn_cli --server vpn_server:port --vpnuser user_name

Еще один скрипт https://gist.github.com/mgeeky/8afc0e32b8b97fd6f96fce6098615a93

Передача данных по websocket

Реализация передачи данных по websocket выполнена при помощи библиотеки https://socket.io.

Примечание: символ ~/ будет означать корневой адрес

Шаг 1. Подключение библиотеки socket.io

<script src="~/socket.io/socket.io.js"></script>

Шаг 2. Инициализация соединения

var socket = io.connect('http://domain.com', {
path: '/virtaulPath' + '/socket.io',
transports: ['websocket']
});

, где

  • http://domain.com — корневой адрес сервиса
  • ‘/virtualPath’ — виртуальная директория, если есть, иначе String.Empty
Читать далее «Передача данных по websocket»