myDC.ru

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

 
53 страниц V  « < 23 24 25 26 27 > »   
Ответить в данную темуНачать новую тему

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

zangriEBP
сообщение 21.5.2009, 8:14
Сообщение #481


Участник
**

Группа: Пользователи
Сообщений: 47
Регистрация: 20.4.2009
Пользователь №: 3 112
Спасибо сказали: 1 раз




Удаление строки из файла:

Код
function RemoveByStr(sFile, Str)
  local s=''
  for l in io.lines(sFile) do if l ~= Str then s = s..l..'\n' end end
  local h = io.open(sFile, "w")
  if h then h:write(s);h:flush();h:close()  end
end

Подскажи самый быстрый способ вернуть 1 в случае успеха и 0 в противном случае.

З.Ы. печально что нужно грузить весь файл в память...

А вот еще запись строки в конец файла, можт кому пригодится, надеюсь она у меня рациональная.
Код
function AddByStr(sFile, Str)
local  h=io.open (sFile,'r+')
if not h then return 0 end
if h:seek('end')~=0 then h:write('\n') end
h:write(Str);h:close()
end
Go to the top of the page
+Quote Post
alex82
сообщение 21.5.2009, 12:56
Сообщение #482


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Цитата
А вот еще запись строки в конец файла, можт кому пригодится, надеюсь она у меня рациональная.
Код
function AddByStr(sFile, Str)
local  h=io.open (sFile,'r+')
if not h then return 0 end
if h:seek('end')~=0 then h:write('\n') end
h:write(Str);h:close()
end
Хм...
Код
f = io.open(filename,"ab")
if f then
    f:write(string.."\n")
    f:close()
end
Go to the top of the page
+Quote Post
zangriEBP
сообщение 21.5.2009, 14:29
Сообщение #483


Участник
**

Группа: Пользователи
Сообщений: 47
Регистрация: 20.4.2009
Пользователь №: 3 112
Спасибо сказали: 1 раз




Если файл пустой, то будет лишней переход на строку
Go to the top of the page
+Quote Post
intlive
сообщение 21.5.2009, 15:40
Сообщение #484


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

Группа: Пользователи
Сообщений: 134
Регистрация: 18.6.2008
Из: подземелье
Пользователь №: 41
Спасибо сказали: 7 раз




Ребят, сильно ли влияют на нагрузку чата функции ChatArrival и ToArrival? Наример теже ранжировани сообщений, или история чата?
А то иногда чат "подлагивает" (мэйн естественно)
Go to the top of the page
+Quote Post
Wariner
сообщение 21.5.2009, 16:33
Сообщение #485


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

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




Насчёт функций надо смотреть что в них самих делается, но судя по названием скриптов вряд ли грузят функции! Сами по себе эти скрипты опять же грузить могут только в одном случае, если данные хранятся в таблицы и последняя сильно разрослась!
Go to the top of the page
+Quote Post
intlive
сообщение 21.5.2009, 16:46
Сообщение #486


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

Группа: Пользователи
Сообщений: 134
Регистрация: 18.6.2008
Из: подземелье
Пользователь №: 41
Спасибо сказали: 7 раз




Ну я правильно понимаю? Например работа антирекламы реализована с помощью ChatArrival и проверки на "запрещённые выражения", перед отсылкой сообщения в чат она пробегает по этому "бэдлисту" и уже потом рассылает сообщения юзерам, на сколько это затратно?
Go to the top of the page
+Quote Post
Wariner
сообщение 21.5.2009, 17:29
Сообщение #487


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

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




на столько затратно на сколько большой этот "бэдлист"
Go to the top of the page
+Quote Post
zangriEBP
сообщение 21.5.2009, 17:40
Сообщение #488


Участник
**

Группа: Пользователи
Сообщений: 47
Регистрация: 20.4.2009
Пользователь №: 3 112
Спасибо сказали: 1 раз




Я не видел скрипт антирекламы поэтому воспользуюсь анализом твоих данных,
если скрипт антирекламы считать идеальным(не делает лишних действий,не мусорит,не открывает файл каждый раз по новой 0о),
то вруби ты хоть 100 таких ничего не заметишь.
Go to the top of the page
+Quote Post
Setuper
сообщение 21.5.2009, 19:55
Сообщение #489


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

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




Цитата(alex82 @ 21.5.2009, 13:56) *
Код
f = io.open(filename,"ab")

Вообще-то правильнее наверное будет так:
Код
f = io.open(filename,"a")
Ведь нам не нужен двоичный режим при открытии файла!

Цитата(Wariner @ 21.5.2009, 17:33) *
Насчёт функций надо смотреть что в них самих делается, но судя по названием скриптов вряд ли грузят функции! Сами по себе эти скрипты опять же грузить могут только в одном случае, если данные хранятся в таблицы и последняя сильно разрослась!


Хранение данных в таблицах никак не влияет на загруженность хаба, а влияет лишь на количество используемой памяти скриптом.
Для того, чтобы хаб был быстрым, наоборот следует хранить всё в памяти. В памяти не следует хранить не используемые данные.
Загруженность хаба возникает при плохой организации алгоритмов в скриптах. Например, много больших циклов, или постоянные обращения к элементам таблицы. Вот код, который требует оптимизации:
Код
for k, v in pairs(tTable) do
  if v == tUser.sNick then
    ...
  end
end
Допустим, таблица tTable содержит около 5000 ников. В данном цикле кроме операции сравнения на каждом шаге выполняется операция взятия элемента таблицы, что, в свою очередь, порождает цепочку действий по отысканию метатаблицы для данной таблицы, поиск в этой метатаблице метода __index, вызов стандартной функции взятия элемента таблицы. Действий много, и все эти действия будут делаться на каждом шагу цикла. Оптимизацией кода будет помещение ника в отдельную локальную переменную, тем более, что в языке lua таблицы, и их элементы копируются по ссылке, а не по значению, то есть при создании локальной переменной с ником не будет выделяться дополнительная память под это переменную, в эту переменную запишется только адрес, по которому располагается необходимый нам ник.
Код
local sNick = tUser.sNick
for k, v in pairs(tTable) do
  if v == sNick then
    ...
  end
end


Поэтому, зачастую, производительность зависит от алгоритмов написания скриптов. Если алгоритмы фиговые, то конечно всё будет тормозить.
Go to the top of the page
+Quote Post
vicious
сообщение 21.5.2009, 21:31
Сообщение #490


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

Группа: Пользователи
Сообщений: 173
Регистрация: 26.1.2009
Из: Saratov
Пользователь №: 1 965
Спасибо сказали: 7 раз




У меня вот назрел вопрос..давно хочу узнать...
Расскажите пожалуйста все об
Код
"$UserCommand x y"


1 1, 1 2, 1 3 знаю а вот все в целом хотелось бы...например для чего делать "$UserCommand 1 3 |" ну и другие вариации...
Go to the top of the page
+Quote Post
Setuper
сообщение 21.5.2009, 22:07
Сообщение #491


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

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




первая цифра:
0 - разделитель
1 - простая команда
2 - команда на один ник (запрещает отсылку всем) - обычно не реализуется клиентами
255 - команда затирания менюшек

вторая цифра:
десятичное представление двоичного числа.

1111 = двоичное представление десятичного числа 15
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = 10
1011 = 11
1100 = 12
1101 = 13
1110 = 14
1111 = 15

Перевод из двоичной системы в десятичную очень прост. Допустим, есть некое число abcd, где каждая из букв может принимать значения 0 или 1. Тогда для того, чтобы перевести даное число в десятичный вид, делаем так: a*2^3 + b*2^2 + c*2^1 + d*2^0. Если a = 1, b = 1, c = 1, d = 1, то какраз по формуле и получаем число 15.

Теперь представим, что a - это меню файл-листа, b - это меню поиска, c - это меню юзера, d - это меню хаба
если число d принимает значение 1, то данная менюшка обязательно будет в меню хаба, если 0 - то не будет её там.


Пример:

0011 = 0*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 3
то есть данная менюшка (число 3) будет находиться в меню хаба (так как d = 1), и в меню юзера (так как c = 1).
Код
$UserCommand 1 3 ...


Ещё пример:
1001 = 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 9
то есть данная менюшка (число 9) будет находиться в меню хаба (так как d = 1), и в меню файл-листа (так как a = 1).
Код
$UserCommand 1 9 ...
Go to the top of the page
+Quote Post
vicious
сообщение 21.5.2009, 22:18
Сообщение #492


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

Группа: Пользователи
Сообщений: 173
Регистрация: 26.1.2009
Из: Saratov
Пользователь №: 1 965
Спасибо сказали: 7 раз




спасибо! А вот разделитель по какому принципу работает? Место разделителя определяется предыдущей строкой?...
нельзя просто брать вставлять разделители в любое место? А к примеру хочу сделать вот так:
1 подменю - несколько ветвей
разделитель
2 подменю - несколько ветвей

но получалось вот так:

1 подменю :
- 1 ветвь
- 2 ветвь
- разделитель
2 подменю
Go to the top of the page
+Quote Post
Setuper
сообщение 21.5.2009, 22:28
Сообщение #493


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

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




Да, разделитель ставится после последней менюшки.

Разделитель после подпункта установить можно - обманом, - вот так:
Код
Core.SendToUser(tUser,"$UserCommand 1 3 Меню\\Команда$<%[mynick]> !cmd&#124;|"..
"$UserCommand 1 3 $<%[mynick]>&#124;|$UserCommand 0 3|")
Go to the top of the page
+Quote Post
vicious
сообщение 21.5.2009, 22:45
Сообщение #494


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

Группа: Пользователи
Сообщений: 173
Регистрация: 26.1.2009
Из: Saratov
Пользователь №: 1 965
Спасибо сказали: 7 раз




хе....спасибо большое! полезная штука!

а до подпункта нельзя обманом?
Go to the top of the page
+Quote Post
Setuper
сообщение 21.5.2009, 23:03
Сообщение #495


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

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




Можно! Точно так же.

Код
Core.SendToUser(tUser,"$UserCommand 1 3 $<%[mynick]>&#124;|$UserCommand 0 3|"..
"$UserCommand 1 3 Меню\\Команда$<%[mynick]> !cmd&#124;|"..
"$UserCommand 1 3 $<%[mynick]>&#124;|$UserCommand 0 3|")
Go to the top of the page
+Quote Post
vicious
сообщение 21.5.2009, 23:08
Сообщение #496


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

Группа: Пользователи
Сообщений: 173
Регистрация: 26.1.2009
Из: Saratov
Пользователь №: 1 965
Спасибо сказали: 7 раз




big_smile.gif
Go to the top of the page
+Quote Post
vicious
сообщение 22.5.2009, 11:56
Сообщение #497


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

Группа: Пользователи
Сообщений: 173
Регистрация: 26.1.2009
Из: Saratov
Пользователь №: 1 965
Спасибо сказали: 7 раз




а если надо:

меню - подменю1 - несколько ветвей
меню - разделитель
меню - подменю2 - несколько ветвей
Go to the top of the page
+Quote Post
Setuper
сообщение 22.5.2009, 12:37
Сообщение #498


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

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




Так никак не сделать, так как в подменю нельзя никак сделай пустую строку))
Go to the top of the page
+Quote Post
vicious
сообщение 22.5.2009, 15:26
Сообщение #499


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

Группа: Пользователи
Сообщений: 173
Регистрация: 26.1.2009
Из: Saratov
Пользователь №: 1 965
Спасибо сказали: 7 раз




жаль...
Go to the top of the page
+Quote Post
vicious
сообщение 24.5.2009, 14:54
Сообщение #500


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

Группа: Пользователи
Сообщений: 173
Регистрация: 26.1.2009
Из: Saratov
Пользователь №: 1 965
Спасибо сказали: 7 раз




хм...подскажите какая функция происходит раньше чем юзер соединяется с хабом?
т.е. как сделать действие до того как юзеру в ДЦ будет написано "Соединен" ???
Go to the top of the page
+Quote Post

53 страниц V  « < 23 24 25 26 27 > » 
Ответить в данную темуНачать новую тему
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0

Collapse

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

  Тема Ответов Автор Просмотров Последнее сообщение
No new ВАЖНО: Topic has attachmentsМодули для скриптов RusHub
26 Setuper 43 717 21.3.2017, 17:31 Посл. сообщение: Alexey
No new ВАЖНО: Topic has attachmentsВаши Вопросы И Предложения По Поводу Форума
447 Svyat 305 787 20.10.2015, 19:39 Посл. сообщение: Ksan
No New Posts От: Вопросы Разработчикам Скриптов
От темы с ID: 173
0 MIKHAIL 4 084 23.1.2015, 0:56 Посл. сообщение: MIKHAIL
No new Topic has attachmentsВопросы по протоколу NMDC
Делаю программу
26 Master255 27 810 12.1.2015, 0:38 Посл. сообщение: Master255
No New Posts Вопросы к Phazeus по Экзекутору
Мастер может забанить мастера, как решить в Экзекуторе?
1 AndreiDC 5 067 31.10.2014, 19:20 Посл. сообщение: Ksan
No New Posts От: Установка скриптов
От темы с ID: 5657
0 MIKHAIL 4 529 29.7.2014, 23:37 Посл. сообщение: MIKHAIL
No New Posts Установка скриптов
Нужна помощь по установке
2 _wRz_ 6 894 29.7.2014, 16:11 Посл. сообщение: Артём
No new От: Вопросы Разработчикам Скриптов
От темы с ID: 173
29 Wariner 24 727 28.1.2014, 13:11 Посл. сообщение: Alexey
No new Topic has attachmentsВопросы по RusHub
Технические вопросы
316 Jaska 254 070 19.12.2013, 13:59 Посл. сообщение: mod
No new Topic has attachmentsМелкие вопросы
44 Wariner 48 859 19.9.2013, 12:34 Посл. сообщение: Alexey
No New Posts От: Ваши Вопросы И Предложения По Поводу Форума
От темы с ID: 753
3 anila 8 633 28.3.2013, 16:02 Посл. сообщение: настя
No New Posts Единая платформа для скриптов
Обсуждения вопроса создания единой платформы скриптов
5 Enyby 8 521 18.1.2012, 20:15 Посл. сообщение: Setuper
No new Topic has attachmentsПеределка скриптов
Прошу помощи
47 Fe(one)X 39 142 26.12.2011, 15:04 Посл. сообщение: Ksan
No new Topic has attachmentsВопросы Разработчикам Скриптов с SQL
вопросы по скриптам (мелкие вопросы)
101 Wariner 57 930 6.12.2011, 0:34 Посл. сообщение: Enyby
No New Posts От: Вопросы по RusHub
От темы с ID: 2902
4 Otshelnik-Fm 8 021 19.10.2011, 9:23 Посл. сообщение: Mangust

 



RSS Сейчас: 7.5.2024, 1:38