+  HandyCache форум
|-+  Главная категория» Общие вопросы» Расширения на языке Lua в HandyCache
Имя пользователя:
Пароль:
Страниц: 1 ... 13 14 [15] 16 17 ... 29   Вниз
  Отправить эту тему    Печать  
Автор Тема: Расширения на языке Lua в HandyCache  (Прочитано 466395 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #280 : 04 мая 2011, 13:22:39 »

скажите, есть ли скрипты для ограничения пользователя по трафику, например 20Мб в день?

Есть:

Код:
--[[ <HCExtension>
@name          Дневной лимит трафика (RS-lim)
@author        DenZzz
@version       1.2 для HC v1.00 RC2 (1.0.0.184) и выше
@description   Устанавливает лимит дневного трафика для пользователя Vasya на 20 Мб в день
@event         BeforeRequestHeaderSend/RequestSend
</HCExtension> ]]

function RequestSend()
 if hc.user_name == 'Vasya' and hc.user_from_internet > 20*1024*1024 then
  hc.action = 'stop'
  hc.monitor_string = hc.monitor_string..'RS-lim '
 end
end
Сообщить модератору   Записан
sergo
Постоялец
***

Репутация: +5/-1
Offline Offline

Сообщений: 112


« Ответ #281 : 25 июня 2011, 14:12:10 »

Со следующей усовершенствованойверсией lua НС работать не сможет?
Ставлю lua-5.2.0-beta-rc2 и никакой работы а одни вылеты
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #282 : 25 июня 2011, 19:30:00 »

Раз одни вылеты, значит не может.
Сообщить модератору   Записан
sergo
Постоялец
***

Репутация: +5/-1
Offline Offline

Сообщений: 112


« Ответ #283 : 25 июня 2011, 20:04:08 »

Что не может это налицо.
Вопрос был сможет ли? Новая lua декларирует повышение характеристик
Посмотрите отличия от 5.1 на http://www.lua.org/work/doc/manual.html#8 может поможет согласовать их работу
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #284 : 25 июня 2011, 20:54:43 »

Насколько я понимаю, опубликован кандидат в бета-версии. До финала еще многое поменяется. Когда сделают финал, будем адаптироваться.
Сообщить модератору   Записан
Byfuglien
Новичок
*

Репутация: +1/-2
Offline Offline

Сообщений: 46


« Ответ #285 : 24 июля 2011, 13:00:30 »

Здравствуйте!
Как засечь в скрипте время выполнения куска скрипта Lua?
os.clock() не дает правильного результат, итог зависит от загруженности другими потоками и результат постоянно разный
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #286 : 24 июля 2011, 13:19:53 »

Как засечь в скрипте время выполнения куска скрипта Lua?
os.clock() не дает правильного результат, итог зависит от загруженности другими потоками и результат постоянно разный

Больше никак. Усредняй результат.
Сообщить модератору   Записан
Byfuglien
Новичок
*

Репутация: +1/-2
Offline Offline

Сообщений: 46


« Ответ #287 : 24 июля 2011, 13:26:49 »

Усреднение не дает уверенного результата, комп все время нагружен по разному
жалко
спасибо тем не менее
Сообщить модератору   Записан
Byfuglien
Новичок
*

Репутация: +1/-2
Offline Offline

Сообщений: 46


« Ответ #288 : 07 августа 2011, 10:28:56 »

m = re.match('abc', '(b)|(a)')
в результате что должно дать: m[1]=nil и m[2]=подтаблица?
как ни крутил кроме m[0] ничего в таблице m больше нет.
если что-то не так делаю скажите пожалуста.
Если это ошибка НС исправьте, хотелось бы быстро
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #289 : 07 августа 2011, 13:57:23 »

Byfuglien
Похоже что-то там не так.
Можно использовать функции re.substr(), я проверил работает.
Для Вашего примера re.substr(0) выдаст "a", re.substr(1) выдаст пустую строку, re.substr(2) выдаст "a".
Положение и размер подстрок можно получить функциями re.substr_offset() и re.substr_length().
« Последнее редактирование: 07 августа 2011, 14:06:00 от mai62 » Сообщить модератору   Записан
Byfuglien
Новичок
*

Репутация: +1/-2
Offline Offline

Сообщений: 46


« Ответ #290 : 07 августа 2011, 16:28:09 »

попробовал и тоже не получиается с примером который я приводил
re.substr_count() выдает 2, хотя найдена должна быть всего одна подстрока. Может оно дает не количество подстрок как написано в хелпе, а максимальный номер из найденных подстрок?
re.substr(1) возвращает пустую строку хотя должно наверно быть nil
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #291 : 07 августа 2011, 18:48:41 »

Вы правы поведение отличестся от описанного в файле HCExtensions.html.
Файл HCExtensions.html будет исправлен:
1. re.substr_count() возвращает максимальный номер из найденных подстрок
2. если подстрока не найдена, возвращается пустая строка (а не nil? как написано сейчас).
Изменять поведение функций не буду, т.к. это может нарушить работоспособность уже имеющихся разрешений.

P.S. Вам + за найденную ошибку.
Сообщить модератору   Записан
Byfuglien
Новичок
*

Репутация: +1/-2
Offline Offline

Сообщений: 46


« Ответ #292 : 07 августа 2011, 18:52:16 »

Цитировать
если подстрока не найдена, возвращается пустая строка
тогда не получится отличить случай если подстроки вообще не было от случая когда она найдена и равна пустой строкен
Цитировать
Вам + за найденную ошибку.
Спасибо.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #293 : 07 августа 2011, 20:05:14 »

Цитировать
тогда не получится отличить случай если подстроки вообще не было от случая когда она найдена и равна пустой строкен
Можно использовать функцию re.substr_offset(). Если она возвращает 0, то подстрока с этим номером не была найдена.
Тут тоже ошибка в файле HCExtensions.html, там написано -1. Номера символов в lua-строке начинаются с 1, нулевого символа не бывает.
Сообщить модератору   Записан
Byfuglien
Новичок
*

Репутация: +1/-2
Offline Offline

Сообщений: 46


« Ответ #294 : 07 августа 2011, 20:39:09 »

Цитировать
Можно использовать функцию re.substr_offset(). Если она возвращает 0, то подстрока с этим номером не была найдена.
Тут тоже ошибка в файле HCExtensions.html, там написано -1. Номера символов в lua-строке начинаются с 1, нулевого символа не бывает.
и здесь не получается. После выражения
m = re.match('abc', '(b)|(d)')
re.substr_offset(2) выдает -1

и после re.substr() равного пустой строке дополнительно проверять, а есть лои в самом деле эта подстрока не красиво както
Добавлено: 07 Августа 2011, 20:29:25

мне кажется в описании правильно сказано и надо при отсутствии строки возвращать nil из re.substr()
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #295 : 07 августа 2011, 20:49:13 »

Цитировать
re.substr_offset(2) выдает -1
Это не принципиально. Можно делать проверку так: если смещение больше нуля, то подстрока найдена.
Цитировать
и после re.substr() равного пустой строке дополнительно проверять, а есть лои в самом деле эта подстрока не красиво както

Я попробовал возвращать nil, если подстрока не найдена, и Content Master перестал работать. Возможно и другие расширения перестанут работать.
Сообщить модератору   Записан
Byfuglien
Новичок
*

Репутация: +1/-2
Offline Offline

Сообщений: 46


« Ответ #296 : 07 августа 2011, 23:13:08 »

re.substr_count() в хелпе полезно указать что возвращает если вообще регэкс не сработал
Цитировать
Я попробовал возвращать nil, если подстрока не найдена, и Content Master перестал работать. Возможно и другие расширения перестанут работать.
плохо. Ну тогда хотябы в хелпе исчерпывающее описание этих нюансов сделать можно
Добавлено: 07 Августа 2011, 22:49:03

еще скажите пожалуйста сферу применения функции re.offsets_vector_size()?
m = re.match('abc', 'a')
re.offsets_vector_size() выдает равным 6
Что это за число и когда его использовать неясно. Можно ли в хелпе это пояснить?
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #297 : 07 августа 2011, 23:35:47 »

Цитировать
еще скажите пожалуйста сферу применения функции re.offsets_vector_size()?
Чтобы понять о каком векторе речь, нужно познакомиться с документацией на библиотеку PCRE. В этом векторе (массиве) PCRE хранит результаты выполнения регулярного выражения и собственно оттуда получают информацию функции re.substr_offset(), re.substr_length() и др. Использование этого вектора - это альтернативный способ доступа к результатам без посредников в лице названных функций. Однако, он требует от пользователя знание некоторых особенностей библиотеки, языков С (на нем написана PCRE) и lua.
Сообщить модератору   Записан
Byfuglien
Новичок
*

Репутация: +1/-2
Offline Offline

Сообщений: 46


« Ответ #298 : 20 августа 2011, 18:57:39 »

В событии 1-минутного таймера не определена переменная hc.event
Сообщить модератору   Записан
Byfuglien
Новичок
*

Репутация: +1/-2
Offline Offline

Сообщений: 46


« Ответ #299 : 29 августа 2011, 23:16:01 »

Тихо. Не принято отвечать или просмотрели?
Попробовать еще надеюсь ответы будут.
1. Как сделать так: расширение в ходе инициализации или в ходе работы спрашивает пользователя, нужна ли ему предоставляемая им функциональность. Если да, то расширение работает дальше. Если нет то оно отключается на весь дальнейший сеанс работы НС. Как  это отключение осуществить, чтоб отключение было не псевдо а реальным, в том числе вызвался бы destroy?
2. Инициализация еще не завершилась, ждем ответ пользователя, а в расширении уже работают другие обработчики. По моему надо сделать чтобы все обработчики могли вызываться только после окончания инициализации.
Сообщить модератору   Записан
Страниц: 1 ... 13 14 [15] 16 17 ... 29   Вверх
  Отправить эту тему    Печать  

 
Перейти в: