myDC.ru

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

 

> Модули для скриптов RusHub

Setuper
сообщение 9.1.2010, 20:27
Сообщение #21


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

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




Модули кладутся в папку libs.
Давайте сделаем некое правила написания модулей: файлы модулей будем писать строчными буквами, а модули объявлять тем же словом, но начинающемся с заглавной буквы. Так будет проще отличать название файла с модулем, от названия самого модуля (для того чтобы вникнуть в их суть).

Пример использования функций модуля:
Код
require"files" -- подключение модуля
Files.SaveTable("myfile.txt", tTable, "tTable") -- Вызов функции модуля


Модуль для работы с файлами: Прикрепленный файл  files.lua ( 1.34 килобайт ) Кол-во скачиваний: 646

Модуль различных утилит: Прикрепленный файл  utils.lua ( 1.77 килобайт ) Кол-во скачиваний: 280




Давайте в этой теме обсуждать те функции, которые часто используются скриптами, и запихивать их в модули
Go to the top of the page
+Quote Post
2 страниц V  < 1 2  
Начать новую тему
Ответов
Setuper
сообщение 12.3.2010, 12:13
Сообщение #22


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

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




Тут дело такое... Если определить таблицу вне функции, то это безусловно будет быстрее, так как при вызове функции каждый раз не будет создаваться таблица, с другой стороны, эта таблица будет постоянно занимать некоторое место в памяти, в отличие от таблицы внутри функции, которая будет удаляться из памяти сразу же после отработки функции.

Можно и так и так, однако, не думаю, что данная функция так уж часто используется, чтобы задумываться о быстродействии, тем более если данный модуль будет использоваться в нескольких скриптах, то занимаемая этой таблицей память будет прямо пропорциональна числу скриптов, использующих этот модуль, даже если скрипт и не использует функцию DoShareUnits !!!

Насчёт расширения этой таблицы, то 1024 ПБ - это очень много. И я думаю, что в ближайшие лет 20 мы ещё не доберёмся до таких размеров big_smile.gif


Спасибо сказали:
Go to the top of the page
+Quote Post
Sekretchik
сообщение 27.12.2010, 22:25
Сообщение #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
Я не сильно силен в lua, пока только постигаю сами азы. Хотелось бы узнать почему возможна такая ошибка. Возможно чего-то нет в самом модуле - utils.lua?

P.S.
После обновления - utils.lua - увидел в чем была разница. Спасибо Илья.


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 27.12.2010, 22:49
Сообщение #24


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

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




Спасибо. Исправил и перезалил


Спасибо сказали:
Go to the top of the page
+Quote Post
Saymon21
сообщение 5.5.2011, 13:43
Сообщение #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
Прикрепленные файлы
Прикрепленный файл  IP2Country.lua ( 2.41 килобайт ) Кол-во скачиваний: 91
 


Спасибо сказали:
Go to the top of the page
+Quote Post
KCAHDEP
сообщение 24.6.2012, 21:54
Сообщение #26


Глубина-глубина, я не твой… Отпусти меня, глубина…
****

Группа: Пользователи
Сообщений: 199
Регистрация: 13.10.2010
Из: Михайловск
Пользователь №: 7 882
Спасибо сказали: 23 раза




--* Подключение модуля: require"IP2Country"
--* Функции:
--* IP2Country.GetCountryCode(sIP) -- Возвращает код страны для указанного ip
--* IP2Country.GetCountryName(sIP) -- Возвращает имя страны для указанного ip
Это куда вписывать? или просто в libs скопировать достаточно?
Go to the top of the page
+Quote Post
Alexey
сообщение 7.6.2014, 22:32
Сообщение #27


7 квадратиков
*******

Группа: Модераторы
Сообщений: 793
Регистрация: 21.1.2009
Пользователь №: 1 895
Спасибо сказали: 301 раз




Модули из первого поста, оформленные по стандартам Lua 5.2. Пригодны для использования с Lua 5.1 при указанном способе подключения.

Модуль для работы с файлами: Прикрепленный файл  files.lua ( 1.39 килобайт ) Кол-во скачиваний: 10
Подключение модуля в скрипте:
Код
local Files = require("files")

Модуль различных утилит: Прикрепленный файл  utils.lua ( 1.95 килобайт ) Кол-во скачиваний: 6
Подключение модуля в скрипте:
Код
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
Go to the top of the page
+Quote Post
Alexey
сообщение 21.3.2017, 17:31
Сообщение #28


7 квадратиков
*******

Группа: Модераторы
Сообщений: 793
Регистрация: 21.1.2009
Пользователь №: 1 895
Спасибо сказали: 301 раз




Улучшено оформление модулей, должны корректнее подключаться без правки скриптов.
Модуль для работы с файлами: Прикрепленный файл  files.lua ( 1.35 килобайт ) Кол-во скачиваний: 3


Модуль различных утилит: Прикрепленный файл  utils.lua ( 2.76 килобайт ) Кол-во скачиваний: 3

Добавлены функции:
Utils.Ip2Num(sIP) -- Преобразует IP в число
Utils.Num2Ip(i) -- Преобразует число в IP
Utils.tobin(n) -- Приводит десятичное число в бинарную строку
Go to the top of the page
+Quote Post

2 страниц V  < 1 2
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

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

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts ВАЖНО: Topic has attachmentsВопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
1 049 Wariner 929 487 3.2.2019, 12:51 Посл. сообщение: MIKHAIL
No New Posts RusHub.org
Решаем судьбу домена
12 Nickolya 19 941 19.5.2016, 4:58 Посл. сообщение: DEN 007
No New Posts Перенос базы пользователей с RusHub на PtokaX
3 Angel_D 8 239 5.12.2015, 2:11 Посл. сообщение: Saymon21
No new ВАЖНО: Topic has attachmentsСкрипт банов для RusHub
тестим и комменьтруем
79 Wariner 99 090 28.9.2015, 13:34 Посл. сообщение: NeirRon
No new Topic has attachmentsRusHub. Пакеты для Debian/Ubuntu
47 KT315 59 158 24.5.2015, 23:14 Посл. сообщение: KT315
No New Posts От: Вопросы Разработчикам Скриптов
От темы с ID: 173
0 MIKHAIL 3 995 23.1.2015, 0:56 Посл. сообщение: MIKHAIL
No New Posts ВАЖНО: Topic has attachmentsХаблист RusHub
13 ShadoWx 23 970 7.10.2014, 8:08 Посл. сообщение: mod
No new Topic has attachmentsУстановка rushub на ubuntu 12.04
для домохозяек и пенсионеров
43 hjet 45 284 2.10.2014, 12:16 Посл. сообщение: kotuk
No New Posts RusHub Сжатие
Не работает
1 ShadoWx 6 686 23.9.2014, 10:48 Посл. сообщение: PPA
No New Posts От: Установка скриптов
От темы с ID: 5657
0 MIKHAIL 4 443 29.7.2014, 23:37 Посл. сообщение: MIKHAIL
No New Posts Установка скриптов
Нужна помощь по установке
2 _wRz_ 6 763 29.7.2014, 16:11 Посл. сообщение: Артём
No new От: Вопросы Разработчикам Скриптов
От темы с ID: 173
29 Wariner 24 221 28.1.2014, 13:11 Посл. сообщение: Alexey
No new ВАЖНО: Topic has attachmentsМодули Lua В Linux
приветы те многие
45 mariner 64 027 13.1.2014, 22:53 Посл. сообщение: Saymon21
No new Topic has attachmentsВопросы по RusHub
Технические вопросы
316 Jaska 251 199 19.12.2013, 13:59 Посл. сообщение: mod
No New Posts Модули в lua
Модули в lua
2 daslex 7 845 17.11.2013, 19:30 Посл. сообщение: daslex

 



RSS Сейчас: 19.3.2024, 6:37