Компонент для выбора нескольких значений IServ.UX.Classic.StringTagField

Компонент IServ.UX.Classic.StringTagField предназначен для выбора нескольких значений и преобразовании результата в строку с разделителем в виде запятой.

Компонент является наследником Ext.form.field.Tag Читать далее «Компонент для выбора нескольких значений IServ.UX.Classic.StringTagField»

Автоинкрементов в PostgreSQL

Тем кто переходит на PostgreSQL с MySQL, наверное будет удивительно узнать что специального свойства у поля auto_increment в новой СУБД нету. Заменой автоинкрементов в PostgreSQL являются такие штуки как Sequences (счетчики).

Работают они так:

-- Создание счетчика
CREATE SEQUENCE auto_id_users;
-- Создание таблицы
CREATE TABLE users
(
  "id" integer NOT NULL DEFAULT nextval('auto_id_users'),
  "name" text
)

То есть счетчик взаимодействует с полем id  через свойство DEFAULT в которой прописывается nextval от счетчика.

У этого подхода есть ряд несомненных плюсов:

  • можно очень быстро узнать значение счетчика, без нагрузки к БД и обращению к таблицам. SELECT last_value from auto_id_users;
  • У счетчика функционал не ограничивается только увеличением на единицу, у него много возможностей.

Маска подсети

Маска подсети — битовая маска для определения по IP-адресу адреса подсети и адреса узла этой подсети. В отличие от IP-адреса маска подсети не является частью IP-пакета.

Благодаря маске можно узнать, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.

Например, узел с IP-адресом 12.34.56.78 и маской подсети 255.255.255.0 находится в сети 12.34.56.0 с длиной префикса 24 бита. В случае адресации IPv6 адрес 2001:0DB8:1:0:6C1F:A78A:3CB5:1ADD с длиной префикса 32 бита (/32) находится в сети 2001:0DB8::/32. Читать далее «Маска подсети»

postgresql

Для разрешения подключения со всех адресов пишем в файле postgresql.conf

listen_addresses = '*'

Для разрешения пользователей указываем в файле pg.hba.conf

#IPv4 local connections:
host all all 0.0.0.0/0 md5

Выполнение команд

sudo -u postgres psql

Создание пользователя:

sudo -u postgres createuser [username]

Применение пароля для пользователя:

$ sudo -u postgres psql
psql=# alter user  with encrypted password '';

Создание функции с IF ELSE

CREATE OR REPLACE FUNCTION is_accesses(role_name varchar, currentuser integer, claims varchar, user_id integer) RETURNS integer
AS 
$BODY$
BEGIN
    IF role_name is null and user_id is null then
		RETURN 1;
	ELSEIF (role_name is not null and claims is not null and POSITION(CONCAT('.', role_name, '.') IN claims) > 0) then
		RETURN 2;
	ELSEIF (role_name is not null and claims is not null and POSITION(CONCAT('.', role_name, '.') IN claims) > 0) then  
		RETURN 3;
	ELSEIF (role_name is null and currentuser = user_id) then
		RETURN 4;
	else
		RETURN 0;
	end if;
 END
$BODY$
LANGUAGE plpgsql;

Создание функции

CREATE OR REPLACE FUNCTION get_object_fields()
RETURNS SETOF sys_users
AS 
$
BEGIN
    return QUERY SELECT * from sys_users;
END

$ LANGUAGE plpgsql; 

или

CREATE OR REPLACE FUNCTION get_object_fields()
RETURNS SETOF RECORD AS $
SELECT department_id WHERE ...
$ LANGUAGE sql STABLE;

Создание backup’a

sudo su - postgres 
pg_dump postgres > postgres_db.sql 

Восстановить. Нужно заранее создать бд и пользователя.

su - postgres 
psql -d database -f databas.sql 
====
psql -U postgres dbname < infile

API для mysql-simple-rpc

Серверное приложение основанное на mysql-simple-rpc

git clone git://git.appcode.pw/mysql-simple-rpc.git
npm install
# в файле ~/configs/app.json меняет строку подключения
cd refresh
npm install
cd ..
node refresh # обновляем схемы
node generator # генерируем провайдер

поддерживают следующие открытые API:

  • ~/tpl/:type/:folder/:name — получение общих шаблонов
  • ~/tpl-api/:type/:name/:field? — получение специфичных шаблонов

Читать далее «API для mysql-simple-rpc»

Тестирование ExtJS проектов

Статья: Плагин autotest-plugin для VSCode

Тестирование NodeJS проекта отличается от ExtJS

  • применяется siesta вместо nodeunit
  • добавлена возможность проверки класса
  • есть возможность тестирования в браузере

Для тестирования ExtJS применяется проект siesta. Он позволяет производить тестирование в браузере компоненты ExtJS’a Читать далее «Тестирование ExtJS проектов»

Плагин autotest-plugin для VSCode

Плагин предназначен для автоматического тестирования проектов на nodejs

Для корректной работы плагина требуется наличие следующих утилит:

  • jsdoc
    npm install -g jsdoc
    jsdoc -v // для проверки
  • nodeunit
    npm install -g nodeunit
    nodeunit -v // для проверки

Инструкция по генерации и установке плагина

npm install -g vsce // эту команду можно не выполнять если пакет vsce был установлен до этого. подробнее https://code.visualstudio.com/docs/extensions/publish-extension
git clone git://git.appcode.pw/autotest-plugin.git
npm install
vsce package

Читать далее «Плагин autotest-plugin для VSCode»

Отладка nodejs которое работает через IIS

Устанавливаем

npm install -g node-inspect

В web.config system.webServer добавляем

<iisnode loggingEnabled="true" nodeProcessCommandLine=""%programfiles%\nodejs\node.exe" --inspect-brk" />

Открываем сайт в браузере Chrome (страница должна долго грузиться), затем в браузере вводим

chrome://inspect

И должно быть одно приложение, которое слушает порт 9229, нажимаем на него и снимаем breakpoint

MySQL — логирование долгих запросов

Чтобы включить лог медленных запросов, нужно открыть конфигурационный файл MySQL (путь может отличаться):

nano /etc/mysql/my.cnf

и поправить там настройки:

До версии 5.7

log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1

Начиная с версии 5.7

slow_query_log = /var/log/mysql/mysql-slow.log
long_query_time = 1

log_slow_queries (slow_query_log) указывает путь к файлу настроек
long_query_time указывает минимальное время выполнения запроса, после которого он считается медленным в секундах,
После этого необходимо перезапустить MySQL:

/etc/init.d/mysql restart

После этого в файл /var/log/mysql/mysql-slow.log будут попадать медленные запросы, которые Вам прийдется оптимизировать.