Главная
Форум
Контакты
Купить
Поддержи проект
Поиск
Искать:
Расширенный поиск
[Закрыть]
Правила форума
Войти
Регистрация
Russian
English
HandyCache форум
Главная категория
»
English forum
»
Monitor or script looping problem
Имя пользователя:
1 час
1 день
1 неделя
1 месяц
Навсегда
Пароль:
Страниц: [
1
]
2
Все
Вниз
« предыдущая тема
следующая тема »
Отправить эту тему
Печать
Автор
Тема: Monitor or script looping problem (Прочитано 5859 раз)
0 Пользователей и 1 Гость смотрят эту тему.
truefriend-cz
Постоялец
Репутация: +3/-1
Offline
Сообщений: 118
Monitor or script looping problem
«
:
31 июля 2017, 16:11:19 »
Hi. I create script, but ended looping. Do you can help me where is bad?
Код:
--[[ <HCExtension>
@name
Test
@author
truefriend-cz
@version
Beta
@event
BeforeViewInMonitor
@event
RequestHeaderReceived
@event
AnswerHeaderReceived
@event
BeforeAnswerHeaderSend
</HCExtension> ]]
function BeforeViewInMonitor()
monitor_string = ''
monitor_string_array = {}
end
function RequestHeaderReceived()
if hc.cache_file_name ~= '' then
hc.action = 'dont_update'
table.insert(monitor_string_array, 1, 'Load from Cache')
else
hc.action = 'save'
table.insert(monitor_string_array, 1, 'Saved to Cache')
end
end
function AnswerHeaderReceived()
table.insert(monitor_string_array, 2, '(Test)')
end
function BeforeAnswerHeaderSend()
for string_number, string_text in ipairs(monitor_string_array) do
monitor_string = monitor_string..string_text
end
hc.monitor_string = monitor_string
end
Image.png
(52.08 Кб, 926x644 - просмотрено 150 раз.)
Сообщить модератору
Записан
truefriend-cz
Постоялец
Репутация: +3/-1
Offline
Сообщений: 118
Re: Monitor or script looping problem
«
Ответ #1 :
31 июля 2017, 21:42:32 »
This problem have if Saving only. If Load from Cache then monitor text one normal.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Monitor or script looping problem
«
Ответ #2 :
31 июля 2017, 23:34:28 »
Pipelining can make influence.
Try to test this extension with disabled pipelining feature in browser.
Сообщить модератору
Записан
truefriend-cz
Постоялец
Репутация: +3/-1
Offline
Сообщений: 118
Re: Monitor or script looping problem
«
Ответ #3 :
01 августа 2017, 02:01:36 »
Yes. It is solved.
Thank you
very much.
Do you know any solution for restriction on HC side for block Pipelining from clients?
Or do you know what use for this feature from commands of LUA (for block Pipelining from clients)?
Цитата: Михаил от 31 июля 2017, 23:34:28
Pipelining can make influence.
Try to test this extension with disabled pipelining feature in browser.
«
Последнее редактирование: 01 августа 2017, 02:16:24 от truefriend-cz
»
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Monitor or script looping problem
«
Ответ #4 :
01 августа 2017, 08:01:54 »
Цитата: truefriend-cz от 01 августа 2017, 02:01:36
Do you know any solution for restriction on HC side for block Pipelining from clients?
Or do you know what use for this feature from commands of LUA (for block Pipelining from clients)?
I think it's a bad idea to block pipelining.
You can modify your code to work well with pipelined requests instead.
Код:
--[[ <HCExtension>
@name
Test2
@author
truefriend-cz
@version
Beta
@event
RequestHeaderReceived
@event
AnswerHeaderReceived
@event
BeforeAnswerHeaderSend
</HCExtension> ]]
function RequestHeaderReceived()
monitor_string_array = monitor_string_array or {}
if hc.cache_file_name ~= '' then
hc.action = 'dont_update'
monitor_string_array[hc.monitor_index] = 'Load from Cache'
else
hc.action = 'save'
monitor_string_array[hc.monitor_index] = 'Save to Cache'
end
end
function AnswerHeaderReceived()
monitor_string_array[hc.monitor_index] = monitor_string_array[hc.monitor_index] .. '(Test)'
end
function BeforeAnswerHeaderSend()
hc.monitor_string = monitor_string_array[hc.monitor_index]
end
Сообщить модератору
Записан
truefriend-cz
Постоялец
Репутация: +3/-1
Offline
Сообщений: 118
Re: Monitor or script looping problem
«
Ответ #5 :
01 августа 2017, 09:45:35 »
Yes, its better. But freezing random connections (image2.png) and after one-two min.s, ended error "Freezing connection".
But is better - HandyCache no shut down, or CPU HC process no overheat.
I using after this sorting, etc.. where table number is priority position for Monitor...
Код:
--[[ <HCExtension>
@name
Test 3
@author
truefriend-cz
@version
Beta
@event
BeforeViewInMonitor
@event
RequestHeaderReceived
@event
BeforeAnswerHeaderSend
</HCExtension> ]]
function monitor_add_string(d)
if check_empty(monitor_string) then
return d
else
return delimiter..d
end
end
function monitor_show()
if check_full(monitor_string) then
hc.monitor_string = monitor_string
end
if check_full(monitor_color) then
hc.monitor_text_color = monitor_color
end
end
function check_empty(d)
return d == '' or d == nil
end
function check_full(e)
return e ~= '' or e ~= nil
end
function sort_table(t, f)
local a = {}
for n in pairs(t) do
table.insert(a, n)
end
table.sort(a, f)
local i = 0
local iter = function()
i = i + 1
if a[i] == nil then
return nil
else
return a[i], t[a[i]]
end
end
return iter
end
function BeforeViewInMonitor()
monitor_string = ''
monitor_string_array = {}
delimiter = ' - ||| - '
end
function RequestHeaderReceived()
if hc.cache_file_name ~= '' then
hc.action = 'dont_update'
table.insert(monitor_string_array, 10, 'Load from Cache')
else
hc.action = 'save'
table.insert(monitor_string_array, 11, 'Saved to Cache')
end
end
function BeforeAnswerHeaderSend()
table.insert(monitor_string_array, 40, '(Test priority 2)')
table.insert(monitor_string_array, 17, '(Test priority 1)')
table.insert(monitor_string_array, 55, '(Test priority 4)')
table.insert(monitor_string_array, 53, '(Test priority 3)')
for string_number, string_text in sort_table(monitor_string_array) do
monitor_string = monitor_string..monitor_add_string(string_text)
end
monitor_show()
end
I can monitor_string_array[hc.monitor_index] sorting?
Image2.png
(56.2 Кб, 1096x702 - просмотрено 147 раз.)
«
Последнее редактирование: 01 августа 2017, 09:54:20 от truefriend-cz
»
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Monitor or script looping problem
«
Ответ #6 :
01 августа 2017, 10:09:14 »
Цитата: truefriend-cz от 01 августа 2017, 09:45:35
Yes, its better. But freezing random connections (image2.png) and after one-two min.s, ended error "Freezing connection".
Are your shure that my example extension freezez HC?
I see no code to freeze HC in it.
Цитировать
I can monitor_string_array[hc.monitor_index] sorting?
Цитировать
I using after this sorting, etc.. where table number is priority position for Monitor...
Sorry but I don't understand what Test 3 extension is for. Can you describe your aims in another words?
Сообщить модератору
Записан
truefriend-cz
Постоялец
Репутация: +3/-1
Offline
Сообщений: 118
Re: Monitor or script looping problem
«
Ответ #7 :
01 августа 2017, 10:17:00 »
I'm trying to put my own separator into the Monitor and sort the strings by the manual priority label because it comes from other LUA Extension files (it does not always come automatically in the order I want).
Pipelining:
Your solution is better for optimized pipelining. Lines where before script Test 1 cycled lines in script Test 2 changed to (Image3.png)
Image3.png
(5.22 Кб, 889x61 - просмотрено 167 раз.)
«
Последнее редактирование: 01 августа 2017, 10:27:45 от truefriend-cz
»
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Monitor or script looping problem
«
Ответ #8 :
01 августа 2017, 11:45:38 »
Цитата: truefriend-cz от 01 августа 2017, 10:17:00
I'm trying to put my own separator into the Monitor and sort the strings by the manual priority label because it comes from other LUA Extension files (it does not always come automatically in the order I want).
In Test3 you ignore pipelining issue again.
May be you need something like this:
Код:
--[[ <HCExtension>
@name
Test4
@author
truefriend-cz
@version
Beta
@event
RequestHeaderReceived
@event
BeforeAnswerHeaderSend
</HCExtension> ]]
function RequestHeaderReceived()
monitor_string_array = monitor_string_array or {}
monitor_string_array[hc.monitor_index] = {}
if hc.cache_file_name ~= '' then
hc.action = 'dont_update'
table.insert(monitor_string_array[hc.monitor_index], {priority=10, text='Load from Cache'})
else
hc.action = 'save'
table.insert(monitor_string_array[hc.monitor_index], {priority=11, text='Saved to Cache'})
end
end
function BeforeAnswerHeaderSend()
local function monitor_show(monitor_string, monitor_color)
hc.monitor_string = monitor_string
if monitor_color then
hc.monitor_text_color = monitor_color
end
end
table.insert(monitor_string_array[hc.monitor_index], {priority=40, text='(Test priority 2)'})
table.insert(monitor_string_array[hc.monitor_index], {priority=17, text='(Test priority 1)'})
table.insert(monitor_string_array[hc.monitor_index], {priority=55, text='(Test priority 4)'})
table.insert(monitor_string_array[hc.monitor_index], {priority=53, text='(Test priority 3)'})
table.sort(monitor_string_array[hc.monitor_index],
function(record1, record2)
return record1.priority <= record2.priority
end
)
local delimiter = ' - ||| - '
for i,record in ipairs(monitor_string_array[hc.monitor_index]) do
monitor_string_array[hc.monitor_index][i] = record.text
end
monitor_show(table.concat(monitor_string_array[hc.monitor_index], delimiter))
end
Сообщить модератору
Записан
truefriend-cz
Постоялец
Репутация: +3/-1
Offline
Сообщений: 118
Re: Monitor or script looping problem
«
Ответ #9 :
01 августа 2017, 21:22:44 »
Thank you very much.
Сообщить модератору
Записан
truefriend-cz
Постоялец
Репутация: +3/-1
Offline
Сообщений: 118
Re: Monitor or script looping problem
«
Ответ #10 :
04 августа 2017, 16:03:03 »
How i can add color to monitor? Monitor not accepted value color?
Код:
...
function RequestHeaderReceived()
monitor_string_array = monitor_string_array or {}
monitor_string_array[hc.monitor_index] = {}
monitor_color_array = monitor_color_array or {}
monitor_color_array = {}
if hc.cache_file_name ~= '' then
hc.action = 'dont_update'
table.insert(monitor_string_array[hc.monitor_index], {priority=10, text='Load from Cache'})
table.insert(monitor_color_array, {priority=10, color='102, 150, 0'})
else
hc.action = 'save'
table.insert(monitor_string_array[hc.monitor_index], {priority=11, text='Saved to Cache'})
end
testa = monitor_color_array[#monitor_color_array].color -- for testing 1
hc.put_msg(1, 'Test OK: '..testa) -- for testing 2
end
function BeforeAnswerHeaderSend()
local function rgb(r, g, b)
local r = r
local g = g*256
local b = b*256*256
return r+g+b
end
local function monitor_show(monitor_string, monitor_color)
hc.monitor_string = monitor_string
if monitor_color then
rgb(monitor_color)
hc.monitor_text_color = monitor_color
end
end
table.insert(monitor_string_array[hc.monitor_index], {priority=5, text='('..type_define..')'})
table.insert(monitor_string_array[hc.monitor_index], {priority=40, text='(Test priority 2)'})
table.sort(monitor_string_array[hc.monitor_index],
function(record1, record2)
return record1.priority <= record2.priority
end
)
table.sort(monitor_color_array,
function(record1, record2)
return record1.priority <= record2.priority
end
)
local delimiter = ' - ||| - '
for i,record in ipairs(monitor_string_array[hc.monitor_index]) do
monitor_string_array[hc.monitor_index][i] = record.text
end
for i,record in ipairs(monitor_color_array) do
monitor_color_array[i] = record.color
end
monitor_show(table.concat(monitor_string_array[hc.monitor_index], delimiter), monitor_color_array[1].color)
end
Код:
table.insert(monitor_color_array, {priority=10, color=102, 150, 0})
not accepted too
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Monitor or script looping problem
«
Ответ #11 :
04 августа 2017, 16:19:03 »
Код:
monitor_show(table.concat(monitor_string_array[hc.monitor_index], delimiter), rgb(255,0,0))
Сообщить модератору
Записан
truefriend-cz
Постоялец
Репутация: +3/-1
Offline
Сообщений: 118
Re: Monitor or script looping problem
«
Ответ #12 :
04 августа 2017, 23:23:22 »
Yes, but i priority apply on both... monitor string, and monitor color... if is header not exist, etc.. then select priority color and color from define other priority is ignored. I dont know how get first line (or first priority) color from table color after sort and ipairs. I study function pairs and ipairs vs. table formats - basic ok, but this is advanced.
Do you know quality sources for study LUA? On Google is first search basic and advanced i dont find.
«
Последнее редактирование: 04 августа 2017, 23:58:00 от truefriend-cz
»
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Monitor or script looping problem
«
Ответ #13 :
04 августа 2017, 23:53:13 »
Код:
function RequestHeaderReceived()
monitor_string_array = monitor_string_array or {}
monitor_string_array[hc.monitor_index] = {}
if hc.cache_file_name ~= '' then
hc.action = 'dont_update'
table.insert(monitor_string_array[hc.monitor_index], { priority=10, text='Load from Cache', color={102,150,0} })
else
hc.action = 'save'
table.insert(monitor_string_array[hc.monitor_index], { priority=11, text='Saved to Cache' })
end
end
function BeforeAnswerHeaderSend()
local function rgb(r, g, b)
return r + g*256 + b*256*256
end
local function monitor_show(monitor_string, monitor_color)
hc.monitor_string = monitor_string
if monitor_color then
hc.monitor_text_color = rgb(table.unpack(monitor_color))
end
end
table.insert(monitor_string_array[hc.monitor_index], { priority=40, text='(Test priority 2)' })
table.insert(monitor_string_array[hc.monitor_index], { priority=17, text='(Test priority 1)' })
table.insert(monitor_string_array[hc.monitor_index], { priority=55, text='(Test priority 4)' })
table.insert(monitor_string_array[hc.monitor_index], { priority=53, text='(Test priority 3)' })
table.sort(monitor_string_array[hc.monitor_index],
function(record1, record2)
return record1.priority <= record2.priority
end
)
local texts = {}
for i,record in ipairs(monitor_string_array[hc.monitor_index]) do
texts[i] = record.text
end
local delimiter = ' - ||| - '
monitor_show(table.concat(texts, delimiter), monitor_string_array[hc.monitor_index][1].color)
end
Сообщить модератору
Записан
truefriend-cz
Постоялец
Репутация: +3/-1
Offline
Сообщений: 118
Re: Monitor or script looping problem
«
Ответ #14 :
05 августа 2017, 00:00:04 »
Do you know quality sources for study LUA? On Google is very global - as first search basic and advanced i dont find.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Monitor or script looping problem
«
Ответ #15 :
05 августа 2017, 00:06:19 »
I study
this
Сообщить модератору
Записан
truefriend-cz
Постоялец
Репутация: +3/-1
Offline
Сообщений: 118
Re: Monitor or script looping problem
«
Ответ #16 :
05 августа 2017, 00:13:17 »
No i have as:
Код:
...
function RequestHeaderReceived()
monitor_string_array = monitor_string_array or {}
monitor_string_array[hc.monitor_index] = {}
monitor_color_array = monitor_color_array or {}
monitor_color_array = {}
if hc.cache_file_name ~= '' then
hc.action = 'dont_update'
table.insert(monitor_string_array[hc.monitor_index], {priority=10, text='Load from Cache'})
table.insert(monitor_color_array, {priority=20, color='102, 150, 0'})
else
hc.action = 'save'
table.insert(monitor_string_array[hc.monitor_index], {priority=11, text='Saved to Cache'})
end
testa = monitor_color_array[#monitor_color_array].color -- for testing 1
hc.put_msg(1, 'Test OK: '..testa) -- for testing 2
end
function BeforeAnswerHeaderSend()
local function rgb(r, g, b)
local r = r
local g = g*256
local b = b*256*256
return r+g+b
end
local function monitor_show(monitor_string, monitor_color)
hc.monitor_string = monitor_string
if monitor_color then
rgb(monitor_color)
hc.monitor_text_color = monitor_color
end
end
table.insert(monitor_string_array[hc.monitor_index], {priority=5, text='('..type_define..')'})
table.insert(monitor_string_array[hc.monitor_index], {priority=40, text='(Test priority 2)'})
if re.match(hc.answer_header, [[^HTTP/1\.1\s403[^\r\n]+]]) and not re.match(hc.answer_header, [[^Server: HandyCache[^\r\n]+]]) then
table.insert(monitor_color_array, {priority=1, color='153, 0, 0'})
end
table.sort(monitor_string_array[hc.monitor_index],
function(record1, record2)
return record1.priority <= record2.priority
end
)
table.sort(monitor_color_array,
function(record1, record2)
return record1.priority <= record2.priority
end
)
local delimiter = ' - ||| - '
for i,record in ipairs(monitor_string_array[hc.monitor_index]) do
monitor_string_array[hc.monitor_index][i] = record.text
end
for i,record in ipairs(monitor_color_array) do
monitor_color_array[i] = record.color
end
monitor_show(table.concat(monitor_string_array[hc.monitor_index], delimiter), monitor_color_array[1].color)
end
«
Последнее редактирование: 05 августа 2017, 00:31:30 от truefriend-cz
»
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Monitor or script looping problem
«
Ответ #17 :
05 августа 2017, 02:41:13 »
Код:
local function set_color(color, priority)
local data = MY_EXTENSION_DATA[hc.monitor_index]
local function rgb(r, g, b)
return r + g*256 + b*256*256
end
if not data.color_priority or priority < data.color_priority then
data.color = rgb(table.unpack(color))
data.color_priority = priority
end
end
function RequestHeaderReceived()
MY_EXTENSION_DATA = MY_EXTENSION_DATA or {}
MY_EXTENSION_DATA[hc.monitor_index] = { monitor_string_array={} }
local data = MY_EXTENSION_DATA[hc.monitor_index]
if hc.cache_file_name ~= '' then
hc.action = 'dont_update'
table.insert(data.monitor_string_array, {priority=10, text='Load from Cache'})
set_color({102,150,0}, 20)
else
hc.action = 'save'
table.insert(data.monitor_string_array, {priority=11, text='Saved to Cache'})
end
-- testa = monitor_color_array[#monitor_color_array].color -- for testing 1
-- hc.put_msg(1, 'Test OK: '..testa) -- for testing 2
end
function BeforeAnswerHeaderSend()
local data = MY_EXTENSION_DATA[hc.monitor_index]
local function monitor_show(monitor_string, monitor_color)
hc.monitor_string = monitor_string
if monitor_color then
hc.monitor_text_color = monitor_color
end
end
table.insert(data.monitor_string_array, {priority=5, text='(..type_define..)'})
table.insert(data.monitor_string_array, {priority=40, text='(Test priority 2)'})
if re.match(hc.answer_header, [[\A\S++\s++403\s(?!.*?^Server:\s*+HandyCache)]]) then
set_color({153,0,0}, 1)
end
table.sort(data.monitor_string_array,
function(record1, record2)
return record1.priority <= record2.priority
end
)
local texts = {}
for i,record in ipairs(data.monitor_string_array) do
texts[i] = record.text
end
local delimiter = ' - ||| - '
monitor_show(table.concat(texts, delimiter), data.color)
end
Sorry but I can't write all code for you.
I show a few methods that you can use further by own efforts.
Сообщить модератору
Записан
truefriend-cz
Постоялец
Репутация: +3/-1
Offline
Сообщений: 118
Re: Monitor or script looping problem
«
Ответ #18 :
05 августа 2017, 20:56:06 »
Yes. Thank you for redirect for recomended sources and help with script. I understand a little more about this programming thank you.
Randomly show S.0 lines. I can eliminate on HC or Extension layer?
1.png
(14.82 Кб, 1280x125 - просмотрено 166 раз.)
«
Последнее редактирование: 05 августа 2017, 21:03:22 от truefriend-cz
»
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Monitor or script looping problem
«
Ответ #19 :
05 августа 2017, 21:24:11 »
"S.0" must appears only when you use "Load to cache" command (for example, from HC monitor context menu).
It must not appears randomly.
Сообщить модератору
Записан
Страниц: [
1
]
2
Все
Вверх
Отправить эту тему
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Главная категория
-----------------------------
=> Общие вопросы
=> Новые предложения
=> Дополнения, плагины
=> Сжатие трафика
=> English forum
=> Indonesian forum
-----------------------------
Гостевая
-----------------------------
=> Гостевая
-----------------------------
Дела домашние
-----------------------------
=> Сайт и форум HandyCache
=> Курилка
© 2006-2014 HandyCache Team. Все права защищены.
Загружается...