Общие соглашения об именовании объектов базы данных

  1. Наименование объекта БД должно содержать слова на английском языке (на транслите, по возможности без сокращений), разделенные символом «_»;
  2. Русские буквы и другие символы, которые SQL Server запрещает применять в наименованиях объектов без экранирования – запрещены;
  3. Наименования объектов, совпадающие с зарезервированными словами SQL, запрещены;

Шаблон именования Таблиц/Представлений/функций:

SC.PP_ST_NAME
SC.PP_PP_ST_NAME

SC — схема, dbo или core

PP — префикс, их может быть несколько, core.ui_rpt_sd_users

S — раздел;

T — тип объекта;

NAME — наименование объекта, кратко отражающее его суть или назначение. Для таблиц требуется указывать имена в множественном числе (sd_users, cd_logs);

схемы БД

coreядро системы
dboDatabase owner — стандартная схема

Префиксы для таблиц/представлений/функций:

ПрефиксНазначение
RPTReports — отчетные
EXPExport — таблицы периодического экспорта данных
IMPImport — таблицы периодического импорта данных
BUFBuffers — буферные
UIUser Interface — функции используемые в клиентских приложениях
MUIMobile User Interface — функция используемся для мобильных устройств.

Сокращения обозначения типа объекта (Представление/функция):

СимволНазначение
VПредставление
FФункция
TRТриггер
FSСкалярная функция

Сокращенные обозначения вида таблиц:

СимволНазначение
DДанные
SСправочники

Разделы для таблиц/представления/функций:

СимволНазначение
AAnalytics — аналитика, AD_Telemetry
CCommon — общие назначения, CD_Settings
DDocuments — документы, (DD_Tasks)
EElectric, (ED_Network_Items)
PPermissions — безопасность, (PD_Users)
SSystem — системная, (SD_Divisions)
XeXtended — универсальные справочники

Соглашение об именование столбцов

<Префикс>_<Наименование>

Префикс состоит из одной или двух букв и обозначает тип данных (реже назначение столбца):

СимволНазначение
Bтип данных boolean (b_main)
BAтип данных bytea (ba_data)
Cстроковый тип данных text (c_name)
Dдата (d_date)
Fпризнак внешнего ключа (f_user)
FNпризнак внешнего ключа без обязательного наличия записи в связанной таблице (fn_user)
Nчисловой тип данных (n_count)
Sсистемное назначение (s_salt, s_hash, sn_delete)
JBтип данных JSON (jb_params)
Xвычисляемое поле

Наименование столбцов соответствует общим правилам именования объектов.

Часто используемые имена столбцов таблиц БД и их назначение.

Наименование столбцаНазначение
idИдентификатор, первичный ключ. В большинстве случаев генерируется автоматически.
object_idИдентификатор, в одной таблице может встречаться несколько раз.
f_userСсылка на пользователя
d_dateДата создания, дата возникновения события
b_disabledОтключение записи. Запись становиться не активной, но доступна для просмотра.
sn_deleteСистемное поле для указания, что запись была удалена пользователем и для просмотра, которой требуются соответствующие права.
c_constКонстанта. Уникальное текстовое значение для идентификации записи справочника. Это значение запрещено изменять
n_code, c_codeКод, выводимый для пользователя. Часто является естественным ключом. Как правило, по нему сортируются записи строки в списках
c_nameНаименование
c_short_nameСокращенное наименование
b_currentПризнак основного элемента. Записи со значением false являются архивными. Данный признак является вычисляемым. Установка значения true производится на основе даты d_date.
b_checkПроверено, данный признак проставляется после проверки информации диспетчером или автоматически если пользователь является доверенным.
gx_geodataВычисляется при создание записи. Используются n_longitude и n_latitude см. “Координаты в базе данных PostgreSQL“;
jb_dataПредназначена для хранения JSON данных

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

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

  • Версия приложения должна состоять из 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