Правила комментирования колонок базы данных

Для автоматической генерации интерфейса ExtJS требуется придерживаться следующих правил:

  1. Для каждой таблицы/представления/функции должен быть создан комментарий — указать наименование (описание).
  2. Для колонок так же должен быть указан комментарий — это краткое описание колонки. Колонка так же поддерживает несколько дополнительных параметров, которые указываются в комментариях. Для этого перед комментарием указываем «[]» и внутри пишем параметры. Разделителем параметров выступает символ «|». Список параметров:
    • e100 — параметр сортировки, чем больше число тем выше будет выведено поле.
    • d — поле выводиться по умолчанию в выпадающем списке. В рамках одной таблице должно встречаться, только один раз.

Примеры

  • id: integer — [e100] идентификатор
  • c_name: text — [e90|d] наименование

«Настройки» системы

Для хранения настроек применяется таблица cd_settings, которая хранит информацию, как ключ-значение.

Правило именования

  1. Имена настроек должны содержать только латинские символы и числа. В качестве разделителя должен применяться символ «_» (нижнее подчеркивание).
  2. Для разных категорий настройке должен быть свой префикс.
    • ALL_ — общая
    • DB_ — база данных
    • SRV_ — сервис
    • UI_ — пользовательский интерфейс
    • MBL_ — мобильное приложение
  3. Для указания региона, к которому должна применять настройка, доступно поле f_maindivision в котором требуется указать null, если требуется чтобы настройка применялась для всех. Либо выбрать конкретный регион.
  4. Для указания, что настройка должна быть привязана только к определенному пользователю требуется заполнить поле f_user.

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

  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 приложений»