myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
53 страниц V  « < 31 32 33 34 35 > »   
Ответить в данную темуНачать новую тему

> Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы)

Setuper
сообщение 26.11.2009, 20:11
Сообщение #641


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Хранение в памяти (ОЗУ). Загрузка с диска при старте скрипта. Сброс на диск только при остановке скипта и бэкап время от времени.
Go to the top of the page
+Quote Post
Nickolya
сообщение 27.11.2009, 1:30
Сообщение #642


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Народ! Ввиду неких очередных выложенных функций, хочу снова поднять тему кушанья одного процента в строках с %% функциями типа gsub и format. Если я не прав - поправьте меня, но я решаю проблему вот так:
Код
string.ogsub = string.gsub
string.gsub = function(sData, pattern, repl, n)
    if type(repl) == "string" then
        return string.ogsub(sData, pattern, function(s)
            return repl
        end, n)
    end
    return string.ogsub(sData, pattern, repl, n)
end

string.oformat = string.format
string.format = function(self, ...)
    local t = {...}
    for k, v in ipairs(t) do
        self = self:gsub("%%s", v, 1)
    end
    return self
end

Я понимаю, что format теряет многие функции и становится тупым инструментом, но обычно по другому назначению он и не используется, а если такое и присутствует, надо к примеру не целое число отформатировать, тогда уже приходится переименовывать функцию и пользоваться другой, в некоторых моих скриптах есть этот костыль:
Код
function Return(sData)
    if type(sData) == "function" then
        return sData
    end
    return function()
        return sData
    end
end

string.g = function(sData, s1, s2)
    return sData:gsub(s1, Return(s2))
end

Что скажете об этом, вот примеры, имеем мы код
Код
string.dbformat = function(self, ...)
    local t = {...}
    for k, v in ipairs(t) do
        t[k] = tostring(v):gsub("(['\\\"])", "\\%1")
    end
    return self:format(unpack(t))
end
local sss = "%%%%%%%%'\"%s%s"
Core.SendToAll("sss = "..sss.."    len = "..sss:len())
sss = sss:dbformat("1%%", "2%%%%")
Core.SendToAll("sss:dbformat = "..sss.."    len = "..sss:len())
без костылей мы имеем строку длинной 14 символов и получаем столько же после форматирования, хотя первая %s должна замениться на 3 символа, а вторая вообще на 5, в итоге стока должна прибавить 4 символа и получиться в длинну 18 символов (14-(2*2)+3+5=18). С костылями этого не происходит и мы на выходе имеем нашу строку с 18 символами...
Может оптимизируете или еще что-то подскажете, ведь проблема не простая big_smile.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 27.11.2009, 2:12
Сообщение #643


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Да уж проблемка.
НУ чтож, будем выяснять суть)))
Go to the top of the page
+Quote Post
Nickolya
сообщение 27.11.2009, 2:27
Сообщение #644


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Вопрос скорее в том что делать и как быть, то что проценты надо экранировать самими же процентами это понятно, а вот как сделать лучше и удобней всего чтобы избавиться от проблемы?
Go to the top of the page
+Quote Post
Setuper
сообщение 27.11.2009, 3:04
Сообщение #645


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Выходов из данной ситуации 2:
1)
Код
local sss = "%%%%%%%%'\""
sss = (sss:gsub("%%", "%%%%").."%s%s"):dbformat("1%%", "2%%%%")
Core.SendToAll("sss:dbformat = "..sss.."    len = "..sss:len())


2)
Код
local sss = "%%%%%%%%%%%%%%%%'\"%s%s"
sss = sss:dbformat("1%%", "2%%%%")
Core.SendToAll("sss:dbformat = "..sss.."    len = "..sss:len())


То есть либо до вставки строки в метод формат удваивать проценты, либо самому формировать строку с удвоенными процентами.

Лучше наверное второй способ. Ведь как правило запросы мы сами определяем в программе, и они как правило постоянные.
Если же запросы определяются только в процессе (динамически), то первый способ спасёт))

Как правило в запросах у нас вообще нету процентов:
Код
("INSERT INTO `table` VALUES ('%s', '%s', '%s')"):dbformat(a, b, c)


Вообще-то, написанный пример не очень подходит для использования метода dbformat. Думаю для примера нужно так написать:
Код
local sss = "qwerty%s%s"
local a, b = "\\%%%", "\"\\'"
sss = sss:dbformat(a, b)
Core.SendToAll("sss:dbformat = "..sss.."    len = "..sss:len())
Ведь мы экранируем символы в параметрах (a, b), а не в самом запросе. В запросе нам всё известно, поэтому мы там пишем всегда всё корректно, а вот в параметрах может быть всё, что угодно.

Возможно я до конца не понял суть проблемы, но на данный момент (после написания поста) у меня сложилось впечатление, что проблемы как таковой и нету. Или всё же есть? Давайте расставим все точки над и big_smile.gif


Спасибо сказали:
Go to the top of the page
+Quote Post
random name
сообщение 3.12.2009, 18:40
Сообщение #646


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 226
Регистрация: 11.11.2009
Пользователь №: 4 990
Спасибо сказали: 18 раз




1
Go to the top of the page
+Quote Post
Setuper
сообщение 3.12.2009, 19:27
Сообщение #647


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Найди отличия между твоим кодом и вот этим:
Код
function UserConnected(tUser)
  Core.SendToUser(tUser,"$UserCommand 1 3 »»» Информация\\Правила хаба$<%[mynick]> !rules&#124;|"..
  "$UserCommand 1 3 »»» Информация\\Друзья хаба$<%[mynick]> !friends&#124;|"..
  "$UserCommand 1 3 »»» Информация\\Адреса хаба$<%[mynick]> !adress&#124;|"..
  "$UserCommand 1 3 »»» Информация\\инфа тут например$<%[mynick]> !команда&#124;|")
end
RegConnected,OpConnected=UserConnected,UserConnected

Смотри очень внимательно.

И слово адрес по английски пишется с удвоенной буквой d: address


Спасибо сказали:
Go to the top of the page
+Quote Post
random name
сообщение 5.12.2009, 16:27
Сообщение #648


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 226
Регистрация: 11.11.2009
Пользователь №: 4 990
Спасибо сказали: 18 раз




1
Причина редактирования: Капс
Go to the top of the page
+Quote Post
MetroidPrime
сообщение 6.12.2009, 21:38
Сообщение #649


Абсолютный новичок


Группа: Пользователи
Сообщений: 1
Регистрация: 6.12.2009
Пользователь №: 5 288
Спасибо сказали: 0 раз




Уж не осилил все. Поиском не нашел, может не так набирал. В общем, есть функции для случайного выбора?
Go to the top of the page
+Quote Post
Nickolya
сообщение 6.12.2009, 21:51
Сообщение #650


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Есть, тут функции API хаба Ptokax, тебе же надо функцию луа, так что написал не туда, но все равно вот (взято отсюда):
Цитата
math.random ([m [, n]])

Эта функция является интерфейсом к простейшему генератору псевдослучайных чисел rand, предоставляемому ANSI C. (Нет никаких гарантий по поводу его статистических свойств.)

При вызове без аргументов, возвращает псевдо-случайное действительной число в интервале [0,1). При вызове с аргументом m, math.random возвращает псевдослучайное целое число из отрезка [1, m]. При вызове с двумя аргументами – m и n, math.random возвращает псевдослучайное целое число из отрезка [m, n].
Go to the top of the page
+Quote Post
Rapid_82
сообщение 9.12.2009, 6:21
Сообщение #651


Абсолютный новичок


Группа: Пользователи
Сообщений: 4
Регистрация: 6.12.2009
Пользователь №: 5 281
Спасибо сказали: 0 раз




Подскажите пожалуйста, в Ptokax 0.4.1.1 в клиенте greylink05995 в окошке скачиваний стало появляться "Проверка клиента..." ботом, размер -1 Байт. Как бы от этого избавиться?
Go to the top of the page
+Quote Post
TiGRpp
сообщение 13.1.2010, 5:03
Сообщение #652


Продвинутый участник
****

Группа: Пользователи
Сообщений: 162
Регистрация: 19.8.2009
Из: Москва
Пользователь №: 4 201
Спасибо сказали: 24 раза




Цитата(Setuper @ 2.7.2008, 0:09) *
SupportsArrival(tUser, sData)
Важная функция (с её помошью я смог устроить автоматическую регистрация по ip).

ммм... а функциональное описание можно?

И вопрос:
А как можно реализовать команду /fav кликом меню хаба?
Спасибо.
Go to the top of the page
+Quote Post
ustas
сообщение 13.1.2010, 8:30
Сообщение #653


Продвинутый участник
****

Группа: Пользователи
Сообщений: 177
Регистрация: 20.5.2008
Пользователь №: 5
Спасибо сказали: 26 раз




Цитата(TiGRpp @ 13.1.2010, 5:03) *
И вопрос:
А как можно реализовать команду /fav кликом меню хаба?
а зачем? это уже есть в каждом клиенте - добавить в избранные.
сорри за офтоп
Go to the top of the page
+Quote Post
DrakonSP
сообщение 10.2.2010, 17:06
Сообщение #654


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




А подскажите пожалуйста функцию которая записывает сообщение в лог (в отдельный *.txt файл)
Если быть точным... Мне надо записывыть ..msg в лог
Go to the top of the page
+Quote Post
Setuper
сообщение 10.2.2010, 17:20
Сообщение #655


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




http://www.lua.ru/doc/5.7.html
Go to the top of the page
+Quote Post
DrakonSP
сообщение 10.2.2010, 21:46
Сообщение #656


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




Привет!
Ситуация такая.
Немного переделал скрипт антирекламы (убрал из неё антимат)
Ну и так получаеться, что я не всегда прибываю на хабе,
И я решил сделать запись в лог системного сообщения о рекламе.
Ну знаете интересно порой, что рекламят, а может и вовсе не реклама была...
И почему то реклама отправленная в личку (PM)
Записываеться в лог с | символом в конце строки.
Хотелось бы знать в чём собственно дело,
Потому что запись о рекламе в лог из главного чата записываеться нормально.
Log.txt
Цитата
[GC][10.02.2010 в 21:31] <DrakonSP> [10.71.9.149] dchub
[PM][10.02.2010 в 21:32] <DrakonSP> [10.71.9.149] dchub|
[PM][10.02.2010 в 21:35] <DrakonSP> [10.71.9.149] dchub|

Скрипт
[attachment=4056:Anti_Advertising.lua]
Go to the top of the page
+Quote Post
Wariner
сообщение 10.2.2010, 21:49
Сообщение #657


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




потому что каждая строка заканчивается этим символом! если не хочешь чтоб он записывался предварительно его надо обрезать!
Go to the top of the page
+Quote Post
DrakonSP
сообщение 10.2.2010, 22:01
Сообщение #658


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




Как это сделать?
И почему запись лога из главного чата коректно пишеться
Go to the top of the page
+Quote Post
Jaska
сообщение 10.2.2010, 22:16
Сообщение #659


Освоившийся участник
*****

Группа: Администраторы
Сообщений: 344
Регистрация: 2.6.2008
Из: RB,Ufa
Пользователь №: 8
Спасибо сказали: 106 раз




RecLog:write("[PM]["..os.date("%d.%m.%Y в %H:%M").."] <"..user.sNick.."> ["..user.sIP.."] "..msg:sub(1,-2).."\n")


Спасибо сказали:
Go to the top of the page
+Quote Post
DrakonSP
сообщение 10.2.2010, 22:27
Сообщение #660


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




Jaska
Спасибо помогло, но всё равно интересно, а почему тогда лог главного чата норм пишеться? Там же не обрезано ничего...
Go to the top of the page
+Quote Post

53 страниц V  « < 31 32 33 34 35 > » 
Ответить в данную темуНачать новую тему
19 чел. читают эту тему (гостей: 19, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new ВАЖНО: Topic has attachmentsМодули для скриптов RusHub
26 Setuper 45 394 21.3.2017, 17:31 Посл. сообщение: Alexey
No new ВАЖНО: Topic has attachmentsВаши Вопросы И Предложения По Поводу Форума
447 Svyat 322 163 20.10.2015, 19:39 Посл. сообщение: Ksan
No New Posts От: Вопросы Разработчикам Скриптов
От темы с ID: 173
0 MIKHAIL 4 337 23.1.2015, 0:56 Посл. сообщение: MIKHAIL
No new Topic has attachmentsВопросы по протоколу NMDC
Делаю программу
26 Master255 29 751 12.1.2015, 0:38 Посл. сообщение: Master255
No New Posts Вопросы к Phazeus по Экзекутору
Мастер может забанить мастера, как решить в Экзекуторе?
1 AndreiDC 5 373 31.10.2014, 19:20 Посл. сообщение: Ksan
No New Posts От: Установка скриптов
От темы с ID: 5657
0 MIKHAIL 4 800 29.7.2014, 23:37 Посл. сообщение: MIKHAIL
No New Posts Установка скриптов
Нужна помощь по установке
2 _wRz_ 7 309 29.7.2014, 16:11 Посл. сообщение: Артём
No new От: Вопросы Разработчикам Скриптов
От темы с ID: 173
29 Wariner 25 996 28.1.2014, 13:11 Посл. сообщение: Alexey
No new Topic has attachmentsВопросы по RusHub
Технические вопросы
316 Jaska 269 300 19.12.2013, 13:59 Посл. сообщение: mod
No new Topic has attachmentsМелкие вопросы
44 Wariner 50 989 19.9.2013, 12:34 Посл. сообщение: Alexey
No New Posts От: Ваши Вопросы И Предложения По Поводу Форума
От темы с ID: 753
3 anila 9 130 28.3.2013, 16:02 Посл. сообщение: настя
No New Posts Единая платформа для скриптов
Обсуждения вопроса создания единой платформы скриптов
5 Enyby 9 056 18.1.2012, 20:15 Посл. сообщение: Setuper
No new Topic has attachmentsПеределка скриптов
Прошу помощи
47 Fe(one)X 41 396 26.12.2011, 15:04 Посл. сообщение: Ksan
No new Topic has attachmentsВопросы Разработчикам Скриптов с SQL
вопросы по скриптам (мелкие вопросы)
101 Wariner 62 320 6.12.2011, 0:34 Посл. сообщение: Enyby
No New Posts От: Вопросы по RusHub
От темы с ID: 2902
4 Otshelnik-Fm 8 471 19.10.2011, 9:23 Посл. сообщение: Mangust

 



RSS Сейчас: 27.11.2024, 7:41