Skip to content

Instantly share code, notes, and snippets.

View sharonovd's full-sized avatar
🙀
where are you jon

Dmitry Sharonov sharonovd

🙀
where are you jon
View GitHub Profile
Scanning dependencies of target mariadb_obj
[ 2%] Building C object mariadb-connector-c/libmariadb/CMakeFiles/mariadb_obj.dir/__/plugins/pvio/pvio_socket.c.o
[ 4%] Building C object mariadb-connector-c/libmariadb/CMakeFiles/mariadb_obj.dir/__/plugins/auth/my_auth.c.o
[ 7%] Building C object mariadb-connector-c/libmariadb/CMakeFiles/mariadb_obj.dir/__/plugins/auth/old_password.c.o
[ 9%] Building C object mariadb-connector-c/libmariadb/CMakeFiles/mariadb_obj.dir/ma_array.c.o
[ 12%] Building C object mariadb-connector-c/libmariadb/CMakeFiles/mariadb_obj.dir/ma_charset.c.o
[ 12%] Building C object mariadb-connector-c/libmariadb/CMakeFiles/mariadb_obj.dir/ma_hash.c.o
[ 14%] Building C object mariadb-connector-c/libmariadb/CMakeFiles/mariadb_obj.dir/ma_net.c.o
[ 17%] Building C object mariadb-connector-c/libmariadb/CMakeFiles/mariadb_obj.dir/mariadb_charset.c.o
[ 19%] Building C object mariadb-connector-c/libmariadb/CMakeFiles/mariadb_obj.dir/ma_time.c.o
Алгоритм подгрузки актуальных правил
Ядро загружает правила из бэк-офиса и выполняет на своей стороне следующую дополнительную фильтрацию:
- неактивные правила отбрасываются*
- правила с неподходящей датой отбрасываются*
- правила без коммуникаций отбрасываются
- предикат компилируется в исполняемый луа-код и пытается запустить его на "пустом событии". если компиляция или запуск не проходит - правило отбрасывается, в лог пишется ошибка
Оставшиеся правила считаются эффективной конфигурацией ядра
Алгоритм обработки события
1) Процессор событий берет событие из входной очереди событий
2)* Процессов событий обогащает событие полями из профиля абонента и значениями вычислимых справочников*
2018-05-30 15:31:58.328 [1] main/179/main I> Queuing_event 1f81471028cb OK
2018-05-30 15:31:58.347 [1] main/111/lua I> Enriched_event_with_UCP 1f81471028cb {"account_type":"494371494","market_code":"AsXlBkeN","type":"mn_roaming","msisdn":"73932445500","soc":[],"_id":"1f81471028cb"}:
2018-05-30 15:31:58.347 [1] main/111/lua I> Fitting_rule_found 1f81471028cb 1
2018-05-30 15:31:58.357 [1] main/111/lua I> Saving_message 1f81471028cb 8f0ad284-476d-45c6-8918-faf4afe285eb OK
2018-05-30 15:31:58.358 [1] main/111/lua I> Sending_message_to_outgoing_queue 1f81471028cb 8f0ad284-476d-45c6-8918-faf4afe285eb OK
2018-05-30 15:31:58.358 [1] main/163/lua I> Receiving_message 8f0ad284-476d-45c6-8918-faf4afe285eb
2018-05-30 15:31:58.444 [1] main/159/lua I> Updating_message_status: 8f0ad284-476d-45c6-8918-faf4afe285eb sent
2018-05-30 15:31:58.460 [1] main/163/lua I> Sending_message 8f0ad284-476d-45c6-8918-faf4afe285eb OK
2018-05-30 15:31:58.462 [1] main/159/lua I> Updating_message_status: 8f0ad284-476d-45c6-8918-faf4afe285eb del
FROM centos:7
COPY ./SDK /root/SDK
COPY ./cia /root/cia
RUN cd /root/SDK && source ./env.sh && tarantoolapp pack --name cia --version 0.1 tgz ../cia
WORKDIR /root/
d:cia d.sharonov$ docker build .
Sending build context to Docker daemon 60.7MB
Step 1/5 : FROM centos:7
---> 49f7960eb7e4
Step 2/5 : COPY ./SDK /root/SDK
---> Using cache
---> 6c60e5bb0d31
Step 3/5 : COPY ./cia /root/cia
---> Using cache
---> 4462b7b2da25
function utils.urlencode(data)
if type(data) == 'string' then
if data then
local res = string.gsub(data, '\n', '\r\n')
res = string.gsub(res, '([^%w _.~-])', function(c)
return string.format('%%%02X', string.byte(c))
end)
return string.gsub(res, ' ', '+')
end
elseif type(data) == 'number' then
local fiber = require('fiber')
function another_func()
fiber.sleep(1)
fiber.yield()
end
function test()
local fib = fiber.create(another_func)
fib:set_joinable(true)
@sharonovd
sharonovd / init.lua
Created February 27, 2019 15:16
Sample app for prefix-based selection
local fio = require('fio')
local log = require('log')
local json = require('json')
local utf = require('utf8')
box.cfg({})
--- specify data schema
box.once('init_addresses', function()
box.schema.create_space('address')
local uuid = require('uuid')
local log = require('log')
box.cfg{}
box.schema.create_space('test', {if_not_exists=true })
box.space.test:create_index('primary', {parts={1,'string'}, if_not_exists=true})
for i = 1,1000000 do
box.space.test:replace({uuid.new():str(), 'test', 'testtesttesttesttesttesttesttesttesttesttesttest'})
end
def mult(v1, v2):
"""vX is array of int pairs, e. g. [(6, 2), [7,3 ]] which is equivalent to vector (6, 6, 7, 7, 7) """
result = 0
position1 = -1
position2 = -1
counter1 = 0
counter2 = 0
while True:
assert counter1 >= 0 and counter2 >= 0