Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
20.1.2012, 15:54
Сообщение
#881
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Enyby, я уже в апдейте своего поста написал про это..
|
|
|
20.1.2012, 15:57
Сообщение
#882
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Только при этом нужно быть уверенным, что нет других команд, содержащих stat, это касается любого из представленных кодов. Если есть такие команды, то тут лучше использовать сравнение команд с шаблонами, а не поиск наличия. Не любого. Мой исправленный вариант этому не подвержен. Блокирует только четыре команды: "stat", "stats", "memstat" и "memstats". |
|
|
20.1.2012, 16:01
Сообщение
#883
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Ну с исправленным да.
Кстати, я не понимаю содержания результата команды !memstat(s) О чем там пишется? Цитата PX total commited: 1544192 PX total uncommited: 2650112 Recv total commited: 163840 Recv total uncommited: 1015808 Send total commited: 229376 Send total uncommited: 1081344 Lua total commited: 17997824 Lua total uncommited: 15032320 |
|
|
20.1.2012, 16:18
Сообщение
#884
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Это вывод для отладки использования памяти в байтах.
Для четырех куч памяти снимается по два показателя.
Кучи памяти в порядке вывода:
|
|
|
25.1.2012, 0:30
Сообщение
#885
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Есть таблица, и в ней есть данные:
Код local tContains = { ["Name1"] = {Data1,Data2,}, ["Name2"] = {Data1,Data2,}, } Допустим идёт поиск на наличие содержимого в локальной tContains. Подскажите, пожалуйста, как получить название Name1, содержащееся в tContains? |
|
|
25.1.2012, 0:38
Сообщение
#886
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Никак. У таблиц нет названия. Таблица это кусок памяти. А переменная, которая указывает на таблицу - указатель. Чтобы получить уникальное "имя" для таблицы, можешь вызвать tostring(tTable). На выходе будет строка вида "table: адрес памяти таблицы".
ADD: В чем суть - на одну таблицу может указывать много переменных. И у каждой переменной будет свое имя, а таблица одна. ADD: Код for sName, tTable in pairs(tContains) do -- do something end В этом цикле будут перебраны все элементы таблицы tContains, причем sName будет содержать текущий индекс, а tTable - его значение. |
|
|
25.1.2012, 0:45
Сообщение
#887
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Цитата В этом цикле будут перебраны все элементы таблицы tContains, причем sName будет содержать текущий индекс, а tTable - его значение Какой тип данных у sName и tTable? |
|
|
25.1.2012, 0:50
Сообщение
#888
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Ну для твоего примера строка и таблица. Наверное ты не знаешь, но это особый такой способ именования переменных. К имени переменной впереди приписывается буква означающая тип. Например, sName - строка с именем, а tName - таблица с именем.
Префиксы:
ADD: Хочу отметить, что это только для того массива, который ты указал. Для произвольного содержимого таблицы это могут быть любые типы. |
|
|
25.1.2012, 1:26
Сообщение
#889
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Имеем:
Код local tContains = { ["Name1"] = {Data1,Data2,}, ["Name2"] = {Data1,Data2,}, } И задаём поиск: Код for sName, tTable in pairs(tContains) do -- do something end При относительно большой tContains переменным sName и tTable желательно быть локальными или они автоматически уже "локальные", поскольку имеют отношение к local tContains? |
|
|
25.1.2012, 4:04
Сообщение
#890
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Автоматически. Но не потому, что local tContains, а потому, что они задействованы только для выполнения данного цикла.
А если внутри этого цикла запустишь ещё один цикл с переменными с такими же наименованиями, они всё равно не будут путаться. |
|
|
25.1.2012, 8:10
Сообщение
#891
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Путаться они не будут, но будет путаться автор такого кода. Так что лучше не использовать одинаковые имена переменных, чтобы не было подобных казусов.
|
|
|
25.1.2012, 8:56
Сообщение
#892
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Автор будет путаться, только если задумается про них.
"--Зачем ты меня вчера спросил, куда я кладу бороду, когда сплю, - на одеало или под одеало, - не выспался из-за тебя - всю ночь не спал, думал, а куда же я кладу бороду.." |
|
|
28.1.2012, 23:03
Сообщение
#893
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Дана часть кода:
Код function OnStartup() tmr = TmrMan.AddTimer(60000) end ... function OnTimer(tmr) ... end Уточните, пожалуйста, tmr является локальной или глобальной функцией в данном случае? И стоит ли tmr указывать локальной для увеличения быстродействия (период таймера выставлен в 1 минуту, на мой взгляд это относительно часто)? |
|
|
28.1.2012, 23:13
Сообщение
#894
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Во-первых, tmr тут вовсе не функция, а переменная.
Во-вторых, в lua всякая переменная, которая не объявлена как локальная, является глобальной. В-третьих, по внегласному правилу обращелние к локальным переменным происходит быстрее чем к глобальным. В-четвертых, в указанном примере переменная tmr в функции OnStartup является глобальной, а переменная в функции OnTimer является локальной, то есть это разные переменные в разных областях видимости. Чтобы не путаться в них следует называть их по-разному: Код function OnStartup()
tmr = TmrMan.AddTimer(60000) end ... function OnTimer(id) ... end |
|
|
28.1.2012, 23:15
Сообщение
#895
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
tmr является глобальным значением. Если указать
Код function OnStartup() то переменная tmr будет утеряна после выхода из функции и идентификатора таймера у вас не будет. Это не существенно, если таймер один, и важно, если таймеров несколько. В последнем случае можно использовать именованую функцию таймера.
local tmr = TmrMan.AddTimer(60000) end |
|
|
28.1.2012, 23:35
Сообщение
#896
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Так, принял к сведению. И ещё:
Код function OnStartup() TmrMan.AddTimer(60000) end ... function OnTimer() ... end В случае использования только одного таймера, данный вариант будет предпочтительнее (в плане быстродействия, т.к. отсутствует явное имя(id) таймера), или всёже лучше с указанием local (замечаю, что таймер только один)? |
|
|
28.1.2012, 23:39
Сообщение
#897
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
на быстродействие никак не повлияет, ибо хаб всё равно будет впихивать в стек этот id при вызове OnTimer, просто этот id не используется
|
|
|
31.1.2012, 0:04
Сообщение
#898
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Искал, но практически не нашёл информации про возможность бана по MAC-адресу, только то, что, вроде как, такое не возможно. Правда или неправда, в чём тут загвоздка?.. Хотелось бы узнать про это чуть больше. Поделитесь, пожалуйста, инфой по данному вопросу.
|
|
|
31.1.2012, 8:59
Сообщение
#899
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Такое возможно только если между хабом и юзером нету активного сетевого оборудования, которое меняет mac-адрес.
|
|
|
31.1.2012, 21:16
Сообщение
#900
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
То есть для обычной локальной сети с неуправляемыми свичами можно добиться бана по MAC-адресу? Если так, то не подскажете, есть ли такие скрипты здесь на форуме в реализации, быть может, я где-то пропустил?
|
|
|
Похожие темы
|
Сейчас: 27.11.2024, 3:55 |