Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
26.2.2012, 14:39
Сообщение
#941
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Цитирую:
Цитата "w" - создать пустой файл для записи. Если файл с таким именем уже существует, то его содержание будет удалено, а файл будет рассматриваться как новый пустой файл. "w+" - создать пустой файл для чтения и записи. Если файл с таким именем уже существует, то его содержание будет удалено, а файл будет рассматриваться как новый пустой файл. Хотел бы уточнить отличие двух этих режимов: если вначале для создания файла был использован режим "w", то впоследствии я его не смогу прочитать, используя режим "r" (применительно внутри этого одного скрипта и/или в дальнейшем для всех других)? Поскольку написано: Цитата "r" - открыть файл для чтения. Файл должен существовать. Здесь вообще что имеется в виду под чтением/записью: атрибуты файла и/или какие-то возможности дальнейшей работы внутри самого lua-скрипта? Осмелюсь предположить, что режим "w" просто тупо записывает данные в файл (поверх имеющихся), а "w+" вначале читает содержимое файла, а затем тупо записывает данные в файл поверх прочитанных. Как мне кажется, использование не совсем тех режимов, без которых действительно не обойтись, влияет на быстродействие. Поправьте, если не так. |
|
|
26.2.2012, 18:16
Сообщение
#942
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
К примеру:
Код fd = "Привет"sFile = Core.GetPtokaXPath().."scripts/goro/sXML.lua" --путь до файла PtokaX.exe и далее приписываем где создать файл директорию и имя f = io.open( sFile , "w+" ) --создаём файл sXML.lua (если такой есть он сотрётся) f:write(fd) -- пишем то что надо в файл f:flush() --сохраняем то что записали f:close() -- закрываем файл если ты указал w а не w+ то во время его использования пока ты не сохранил и не закрыл его ты не сможешь его прочесть но всегда можно написать Код f = io.open( sFile , "r+" ) если ты уже что-то сохранял в файл А вообще сперва определись как скрипт будет с ним работать и ставь нужный символ Вот к примеру: Код function OnStartup() Load() end function Load() fd = "Привет мир!" sFile = Core.GetPtokaXPath().."scripts/Goro5/sXML.lua" --путь до файла PtokaX.exe и далее приписываем где создать файл директорию и имя local f = io.open( sFile , "w+" ) --создаём файл sXML.lua (если такой есть он сотрётся) f:write(fd) -- пишем то что надо в файл f:flush() --сохраняем то что записали f:close() -- закрываем файл g = LoadText(sFile) -- а теперь мы можем его прочитать с помощью этой функции Core.SendToAll(""..g) end function LoadText(sFile) local sMsg = "" local f = io.open( sFile , "r" ) if f then sMsg = f:read("*all") f:close() end return sMsg end !! Директория для сохранения файла должна существовать! |
|
|
9.3.2012, 5:13
Сообщение
#943
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Я могу заблокировать поиск на хабе для определённых TTH с помощью функции SRArrival(tUser, sData) и UDPSRArrival(tUser, sData)
А возможно ли чтобы пользователь скачавший "список файлов" с другого пользователя не мог уже по этому списку скачать запрещённые TTH? Или тут уже работает связь клиент-клиент и хаб ничего не сможет сделать? |
|
|
9.3.2012, 15:54
Сообщение
#944
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Именно так
|
|
|
9.3.2012, 17:43
Сообщение
#945
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
А ТЕПЕРЬ ВОПРОС О ПРОКСИ ЕЩЁ РАЗ
Сделал так Код -- connection timeout in seconds TIMEOUT = 60 -- default port for document retrieval PORT = 80 -- user agent field sent in request USERAGENT = socket._VERSION -- proxy-server PROXY = "http://свой прокси:и порт" и это if PROXY then reqt.proxy = PROXY end раньше всё норм грузило напрямую теперь страница приходит так: Код <html> <head><title>404 Not Found</title></head> <body bgcolor="white"> <center><h1>404 Not Found</h1></center> <hr><center>nginx/0.6.35</center> </body> </html> Вот что я делаю не так? и как мне в самом запросе уж тогда прокси прописать? а не в http.lua |
|
|
9.3.2012, 17:56
Сообщение
#946
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Ты слишком буквально понял, что nginx это прокси сервер. Или, куда ты отправляешь запрос - там ничего нет.
А в запросе, Код local proxy_url="http://url:port" http = reqire"socket.http" if proxy_url ~= "" then http.PROXY = proxy_url end Как-то так. |
|
|
9.3.2012, 19:49
Сообщение
#947
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
У меня получается так:
Код local s = require("socket") local proxy_url="http://10.222.0.0:222" -- Как только закоментировываю эту строку то всё с моего инета работает а прокси нет.. local http = require("socket.http") if proxy_url ~= "" then http.PROXY = proxy_url end for i,v in pairs(tAddr) do if i ~= "addr" then local fd,sz,hd = http.request(tAddr[i]) if fd then f = io.open( j.."sXML_"..i..".lua" , "w+" ) f:write(fd) f:flush() f:close() end end end Но снова приходит то же что и раньше а не страница :( |
|
|
20.3.2012, 22:49
Сообщение
#948
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Хотелось бы узнать, допустимо ли в пути (http://hostname/dir/file.ext) использовать буквы кириллицы?
Код ... local sMsg,sErr = h.request("http://hostname/dir/file.ext") ... Например, "http://hostname/директория/файл.ext"... Работать будет также чётко, как и с латиницей? |
|
|
21.3.2012, 11:23
Сообщение
#949
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Подскажите пожалуйста вот в чём:
как мне запросить .xml файл с сайта (всё что выше я спрашивал работает! страницы http запрашивает! а вот файлик http://.../../.../main.xml скачать не может) подскажите как его заарканить (без прокси он скачивается по http запросу а через прокси приходит пустоая страница html) p.s: Надо было сразу правильно поставить вопрос |
|
|
22.3.2012, 10:57
Сообщение
#950
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Хотелось бы узнать, допустимо ли в пути (http://hostname/dir/file.ext) использовать буквы кириллицы? Код ... local sMsg,sErr = h.request("http://hostname/dir/file.ext") ... Например, "http://hostname/директория/файл.ext"... Работать будет также чётко, как и с латиницей? Посмтори это: а вообще переводи русский текст в utf-8 для запроса |
|
|
25.3.2012, 21:59
Сообщение
#951
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Имеем два скриптовых файла ("file1.lua" и "file2.lua"), в которых есть глобальные строковые переменные (sTmp1 и sTmp2 соответственно), которые, естественно, в процессе работы меняют свои значения.
Скажите, пожалуйста, как в этих скриптах сделать перекрёстный запрос на текущие значения этих переменных (в "file1.lua" прочитать значение sTmp2, а в "file2.lua" прочитать sTmp1 соответственно)? |
|
|
26.3.2012, 4:33
Сообщение
#952
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
MIKHAIL, если эти 2 файла входят в один скрипт (вызываются при запуске одного скрипта), то нет никаких проблем - работаешь с этими переменными, как родными. Они и есть родные, ибо принадлежат одному скрипту (головному. вызывающему оба файла).
А если переменные принадлежат двум разным скриптам, то это весьма проблемно, если у тебя не Русхаб. |
|
|
26.3.2012, 10:23
Сообщение
#953
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Имеем два скриптовых файла ("file1.lua" и "file2.lua"), в которых есть глобальные строковые переменные (sTmp1 и sTmp2 соответственно), которые, естественно, в процессе работы меняют свои значения. Скажите, пожалуйста, как в этих скриптах сделать перекрёстный запрос на текущие значения этих переменных (в "file1.lua" прочитать значение sTmp2, а в "file2.lua" прочитать sTmp1 соответственно)? А если двум разным скриптам допиши сохранение переменной в файл как только она меняется в скриптах, а затем просто нужную тебе запроси |
|
|
27.3.2012, 22:02
Сообщение
#954
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Ksan, к сожалению PtokaX...
AirKobra45, так и делаю, только вот думал, что есть вариант побыстрее... Уважаемые, у меня такой вопрос. По окончанию работы функции OnStartup() остаются "отработанные" переменные, которые впоследствии не используются. Возможно ли их убрать, чтобы не ели системные ресурсы? |
|
|
1.4.2012, 9:35
Сообщение
#955
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Уважаемые, у меня такой вопрос. По окончанию работы функции OnStartup() остаются "отработанные" переменные, которые впоследствии не используются. Возможно ли их убрать, чтобы не ели системные ресурсы? сборщик мусора добавь Код collectgarbage() Например: Код function OnStartup() .... -- то что у тебя в функции collectgarbage() -- сборщик мусора end Если чего не так говорю меня товарищи более опытные поправят |
|
|
1.4.2012, 12:24
Сообщение
#956
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Лучше лишний раз не дёргать сбоку мусора, так как эта функция тратит ресурсы процессора. Lua интерпретатор сам время от времени производит сборку мусора, поэтому не нужно об этом так уж заботиться.
|
|
|
1.4.2012, 21:00
Сообщение
#957
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Сборщик мусора периодически чистит всё подряд, что не задействовано, вне зависимости от величины этого мусора, или у него есть какой-то порог на очистку?
|
|
|
2.4.2012, 11:31
Сообщение
#958
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Сборщик мусора периодически чистит всё подряд, что не задействовано, вне зависимости от величины этого мусора, или у него есть какой-то порог на очистку? Раскрывающийся текст Код 2.10 - Сборщик мусора Lua осуществляет автоматическое управление памятью. Это означает, что вам не нужно думать о выделении памяти при создании новых объектов и ее освобождении, когда объект становится ненужным. Lua время от времени автоматически запускает процедуру сборки мусора для удаления устаревших объектов (то есть объектов, которые более недоступны из Lua). Сборщик мусора обрабатывает все объекты Lua: таблицы, данные типа userdata, функции, потоки и строки. В Lua реализован инкрементный сборщик по принципу пометить-очистить. Цикл работы сборщика мусора зависит от двух параметров: пауза сборки мусора и коэффициент шага сборки. Паузой определяется время между запусками циклов сборки. Большие значения этого параметра делают сборку мусора менее активной. Значения меньше 1 означают, что между запусками циклов сборки паузы нет. При значении 2 сборщик перед следующим запуском ждет удвоения объема использованной памяти. Коэффициент шага сборки управляет скоростью сборки в зависимости от интенсивности выделения памяти. Большие значения параметра ускоряют работу сборщика, но при этом увеличивается размер каждого шага. Вы можете менять эти параметры посредством вызова lua_gc в C или collectgarbage в Lua. В обоих случаях в качестве аргументов берутся проценты (т.е. аргумент 100 означает значение параметра 1).Этими функциями вы можете непосредственно управлять сборкой (например, останавливать ее или рестартовать). 2.10.1 - Метаметоды сборщика мусора Используя C API, мы можем определить метаметоды сборщика для данных типа userdata (смотрите §2.8). Эти метаметоды также называются файнолайзерами. Файнолайзер позволяет вам координировать работу сборщика мусора Lua с внешними менеджерами ресурсов (например при закрытии файлов, сетевых подключений и подключений к базам данных, или же при освобождении собственной памяти). Данные сборщика мусора с полем __gc в собственной метатаблице не хранятся непосредственно в нем. Вместо этого Lua сохраняет их в списке. После сбора мусора Lua выполняет над этими данными функцию, эквивалентную: function gc_event (udata) local h = metatable(udata).__gc if h then h(udata) end end После каждого цикла сбора, финализаторы каждого элемента данных вызываются в порядке, обратном порядку их создания в цикле. Таким образом, первый файнолайзер будет вызван для объекта, созданного последним. 2.10.2 - Таблицы «слабых» ссылок Таблицы этого типа используются для хранения «слабых» ссылок (weak references). Сборщик мусора игнорирует «слабые» ссылки. Другими словами, если единственной ссылкой на объект является «слабая» ссылка, то сборщик мусора сохраняет этот объект в такой таблице. Таблица «слабых» ссылок может содержать «слабые» ключи, «слабые» значения, а также и то, и другое. Таблица со «слабыми» ключами позволяет хранить эти ключи, но не допускает хранение их значений. Таблица со «слабыми» ключами и «слабыми» значениями соответственно позволяет хранить и ключи, и значения. Таким образом, если ключ или значение сохранены, то соответствующая пара удаляется из таблицы. «Слабость» в таблице контролируется полем __mode ее метатаблицы. Если поле __mode это строка, содержащая символ 'k', то ключи в таблице «слабые». Если __mode содержит 'v', то в таблице хранятся «слабые» значения. После использования таблицы как метатаблицы вы не можете изменить поле __mode. Таким образом, «слабое» поведение таблицы, за которое отвечает метатаблица, переопределить нельзя. Скачай справочник по lua для начала или книги по lua благо их предостаточно |
|
|
22.4.2012, 22:17
Сообщение
#959
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Подскажите, пожалуйста, как будет выглядеть процедура проверки на использование клиентом характеристики QuickList при подключении обычного пользователя (UserConnected) в PtokaX API2?
|
|
|
22.4.2012, 22:46
Сообщение
#960
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Код function SupportsArrival(tUser, sData)
if sData:find"QuickList" then Core.SendToOps("Входит пользователь с поддержкой характеристики QuickList: "..tUser.sNick) end end |
|
|
Похожие темы
|
Сейчас: 27.11.2024, 1:58 |