|
Здравствуйте, гость ( Вход | Регистрация )
|
![]()
Сообщение
#21
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Модули кладутся в папку libs.
Давайте сделаем некое правила написания модулей: файлы модулей будем писать строчными буквами, а модули объявлять тем же словом, но начинающемся с заглавной буквы. Так будет проще отличать название файла с модулем, от названия самого модуля (для того чтобы вникнуть в их суть). Пример использования функций модуля: Код require"files" -- подключение модуля Files.SaveTable("myfile.txt", tTable, "tTable") -- Вызов функции модуля Модуль для работы с файлами: ![]() Модуль различных утилит: ![]() Давайте в этой теме обсуждать те функции, которые часто используются скриптами, и запихивать их в модули |
|
|
![]() |
![]()
Сообщение
#22
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Тут дело такое... Если определить таблицу вне функции, то это безусловно будет быстрее, так как при вызове функции каждый раз не будет создаваться таблица, с другой стороны, эта таблица будет постоянно занимать некоторое место в памяти, в отличие от таблицы внутри функции, которая будет удаляться из памяти сразу же после отработки функции.
Можно и так и так, однако, не думаю, что данная функция так уж часто используется, чтобы задумываться о быстродействии, тем более если данный модуль будет использоваться в нескольких скриптах, то занимаемая этой таблицей память будет прямо пропорциональна числу скриптов, использующих этот модуль, даже если скрипт и не использует функцию DoShareUnits !!! Насчёт расширения этой таблицы, то 1024 ПБ - это очень много. И я думаю, что в ближайшие лет 20 мы ещё не доберёмся до таких размеров ![]() |
|
|
![]()
Сообщение
#23
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 104 Регистрация: 1.4.2009 Из: Россия Пользователь №: 2 871 Спасибо сказали: 42 раза ![]() |
Илья, при вызове из модуля utils.lua функции - DoShareUnits получил такое сообщение об ошибке: utils.lua:44: attempt to call global 'tonumber' (a nil value)
Ошибка перестала появляться когда переместил саму функцию DoShareUnits в скрипт из которого запрашивал - Utils.DoShareUnits(tUser.iShare) Соответственно, что после переноса функции, запрос стал - DoShareUnits(tUser.iShare). В таком варианте работает. Раскрывающийся текст Код function DoShareUnits(iSize) local tUnits = {"Б", "КБ", "МБ", "ГБ", "ТБ", "ПБ"} iSize = tonumber(iSize) for i = 1, 6 do if iSize < 1024 or i == 6 then iSize = ("%0.2f"):format(iSize):gsub("%.", ",") local a, b = iSize:match"(%d)(%d)$" if b == '0' then if a == '0' then iSize = iSize:sub(1, -4) else iSize = iSize:sub(1, -2) end end return iSize..' '..tUnits[i] else iSize = iSize / 1024 end end end P.S. После обновления - utils.lua - увидел в чем была разница. Спасибо Илья. |
|
|
![]()
Сообщение
#24
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Спасибо. Исправил и перезалил
|
|
|
![]()
Сообщение
#25
|
|
![]() Site Reliability Engineer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз ![]() |
IP2Country - Модуль работы с IP2Country.csv
Автор: Nickolya Подключение модуля: require"IP2Country" Функции: IP2Country.GetCountryCode(sIP) - Возвращает код страны для указанного ip IP2Country.GetCountryName(sIP) - Возвращает имя страны для указанного ip База IP2Country.csv должна быть в корневой дериктории хаба. Сообщение отредактировал Saymon21 - 13.5.2011, 11:00
Прикрепленные файлы
|
|
|
![]()
Сообщение
#26
|
|
![]() Глубина-глубина, я не твой… Отпусти меня, глубина… ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 199 Регистрация: 13.10.2010 Из: Михайловск Пользователь №: 7 882 Спасибо сказали: 23 раза ![]() |
--* Подключение модуля: require"IP2Country"
--* Функции: --* IP2Country.GetCountryCode(sIP) -- Возвращает код страны для указанного ip --* IP2Country.GetCountryName(sIP) -- Возвращает имя страны для указанного ip Это куда вписывать? или просто в libs скопировать достаточно? |
|
|
![]()
Сообщение
#27
|
|
![]() 7 квадратиков ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз ![]() |
Модули из первого поста, оформленные по стандартам Lua 5.2. Пригодны для использования с Lua 5.1 при указанном способе подключения.
Модуль для работы с файлами: ![]() Подключение модуля в скрипте: Код local Files = require("files") Модуль различных утилит: ![]() Подключение модуля в скрипте: Код local Utils = require("utils") Что-бы сохранить в скрипте возможность использования старых модулей, надо добавить соответствующую строку сразу после подключения модуля: Код if Files and type(Files) ~= 'table' then Files = _G.Files end Код if Utils and type(Utils) ~= 'table' then Utils = _G.Utils end
|
|
|
![]()
Сообщение
#28
|
|
![]() 7 квадратиков ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз ![]() |
Улучшено оформление модулей, должны корректнее подключаться без правки скриптов.
Модуль для работы с файлами: ![]() Модуль различных утилит: ![]() Добавлены функции: Utils.Ip2Num(sIP) -- Преобразует IP в число Utils.Num2Ip(i) -- Преобразует число в IP Utils.tobin(n) -- Приводит десятичное число в бинарную строку |
|
|
![]() ![]() |
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
![]() |
ВАЖНО: ![]() вопросы по скриптам (мелкие вопросы) |
1 049 | Wariner | 1 009 016 | 3.2.2019, 12:51 Посл. сообщение: MIKHAIL |
![]() |
RusHub.org Решаем судьбу домена |
12 | Nickolya | 21 742 | 19.5.2016, 4:58 Посл. сообщение: DEN 007 |
![]() |
Перенос базы пользователей с RusHub на PtokaX | 3 | Angel_D | 9 084 | 5.12.2015, 2:11 Посл. сообщение: Saymon21 |
![]() |
ВАЖНО: ![]() тестим и комменьтруем |
79 | Wariner | 106 012 | 28.9.2015, 13:34 Посл. сообщение: NeirRon |
![]() |
![]() |
47 | KT315 | 63 206 | 24.5.2015, 23:14 Посл. сообщение: KT315 |
![]() |
От: Вопросы Разработчикам Скриптов От темы с ID: 173 |
0 | MIKHAIL | 4 429 | 23.1.2015, 0:56 Посл. сообщение: MIKHAIL |
![]() |
ВАЖНО: ![]() |
13 | ShadoWx | 25 794 | 7.10.2014, 8:08 Посл. сообщение: mod |
![]() |
![]() для домохозяек и пенсионеров |
43 | hjet | 49 219 | 2.10.2014, 12:16 Посл. сообщение: kotuk |
![]() |
RusHub Сжатие Не работает |
1 | ShadoWx | 7 218 | 23.9.2014, 10:48 Посл. сообщение: PPA |
![]() |
От: Установка скриптов От темы с ID: 5657 |
0 | MIKHAIL | 4 899 | 29.7.2014, 23:37 Посл. сообщение: MIKHAIL |
![]() |
Установка скриптов Нужна помощь по установке |
2 | _wRz_ | 7 445 | 29.7.2014, 16:11 Посл. сообщение: Артём |
![]() |
От: Вопросы Разработчикам Скриптов От темы с ID: 173 |
29 | Wariner | 26 543 | 28.1.2014, 13:11 Посл. сообщение: Alexey |
![]() |
ВАЖНО: ![]() приветы те многие |
45 | mariner | 67 974 | 13.1.2014, 22:53 Посл. сообщение: Saymon21 |
![]() |
![]() Технические вопросы |
316 | Jaska | 274 073 | 19.12.2013, 13:59 Посл. сообщение: mod |
![]() |
Модули в lua Модули в lua |
2 | daslex | 8 457 | 17.11.2013, 19:30 Посл. сообщение: daslex |
![]() |
Сейчас: 23.2.2025, 2:00 |