Lua-AIO, Дистрибутив Lua, предназначенный для создания приложений |
Здравствуйте, гость ( Вход | Регистрация )
Lua-AIO, Дистрибутив Lua, предназначенный для создания приложений |
10.1.2010, 5:52
Сообщение
#1
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Lua-AIO (Lua All-in-One) представляет собой пакет для написания программ на Lua, созданный по принципу "Всё в одном". Пакет включает в себя практически все библиотеки, которые могут понадобиться при написании приложений.
В состав пакета входят: Хост-программа Lua-AIO (lua.exe) - приложение, позволяющее запускать Lua-скрипты. Отличия от хост-программы из официального дистрибутива Lua:
Встроенные функции Функции:
События:
Параметры командной строки -v: Показать версию Lua-AIO -d: Режим отладки. В этом режиме Вы можете отправлять сообщения в отладочное окно при помощи функции print(). -t: Запустить тест. С этим параметром программа будет запущена в консольном режиме. -i: Установить программу как системную службу. -u: Удалить службу. -c <имя файла>: Компилировать указанный скрипт. <имя файла>.lua: Запустить указанный скрипт Библиотеки: Раскрывающийся текст base64: Предназначена для форматирования данных в соответствии со стандартом MIME. Сайт: Автор: Luiz Henrique de Figueiredo bc: Библиотека больших чисел, основанная на исходном коде GNU bc Сайт: Автор: Luiz Henrique de Figueiredo ber: Simple Basic Encoding Rules (BER) of Abstract Syntax Notation One (ASN.1) Автор: Nodir Temirhodzhaev bit: bitlib. Операции с битами Сайт: Автор: Reuben Thomas bz2: bzip2 и libbzip2. Сжатие данных. Автор: Julian R Seward cd: CD (Canvas Draw) Кроссплатформенная графическая библиотека. Сайт: Автор: Antonio Scuri crypto: Интерфейс к криптографической библиотеке OpenSSL. Сайт: Автор: Keith Howe, Enrico Tassi curl: Lua-cURL library. Сайт: Автор: Jьrgen Hцtzel dc: Библиотека, реализующая некоторые функции протоколов NMDC и ADC des56: (часть библиотеки md5) Криптографическая библиотека для Lua. Сайт: Автор: Andre Carregal, Tomas Guisasola, Danilo Tuler, Fabio Mascarenhas extend: Расширяет некоторые функции Lua. Автор: Arnaud Le Ber gd: Библиотека для обработки изображений, основанная на библиотеке GD от Thomas Boutell. Сайт: Автор: Alexandre Erwin Ittner geoip: Реализует некоторые функции geoIP Сайт: Автор: MaxMind LLC gzip: Доступ к функциям библиотеки gzip Сайт: Автор: Tiago Dionizio he3: Реализует функции декодирования Хаффмана Автор: Jan Vidar Krey hpdf: Библиотека для создания PDF-файлов. Сайт: Автор: Kurt Jung iconv: Библиотека, предназначенная для преобразования текста из одной кодировки в другую. Сайт: Автор: Alexandre Erwin Ittner im: IM is a toolkit for Digital Imaging. Сайт: Автор: Antonio Scuri irr: Irrlicht (Irrlicht Engine) — трёхмерный графический движок. Сайт: Автор: Josh Turpen iup: IUP Переносимый тулкит для создания графического интерфейса. Сайт: Автор: Antonio Scuri lfs: Реализует функции для работы с файловой системой Сайт: Автор: Roberto Ierusalimschy, Andrй Carregal and Tomбs Guisasola lpeg: pattern-matching library based on Parsin Expression Grammars (PEGs) Сайт: Автор: Roberto Ierusalimschy lualdap: Простой интерфейс к LDAP-клиенту Сайт: Автор: Andre Carregal, Alessandro Hecht, Danilo Tuler, Leonardo Godinho, Luis Eduardo Jason Santos and Tomas Guisasola lxp: SAX XML-парсер, основанный на библиотеке Expat Сайт: Автор: Roberto Ierusalimschy, Andrй Carregal and Tomбs Guisasola md5: Криптографическая библиотека для Lua Сайт: Автор: Andre Carregal, Tomas Guisasola, Danilo Tuler, Fabio Mascarenhas mysql: Библиотека для работы с БД MySQL. Сайт: Автор: Roberto Ierusalimschy, Andrй Carregal and Tomбs Guisasola ntlua: (Windows only) create Windows NT administration and logon scripts. Сайт: Автор: Antonio Scuri pg: Библиотека для работы с БД PostgreSQL Сайт: Автор: Stefan ploticus: Пакет ПО для создания графиков из набора данных. Сайт: Автор: Steve Grubb profiler: time profiler designed to help finding bottlenecks on your Lua program. Сайт: Автор: Luiz Silveira, Miguel Osуrio, Fбbio Mascarenhas, with the help of Andrй Carregal, Tomбs Guisasola and Danilo Tuler rexlib: Библиотека реализует функции, позволяющие использовать две основные системы регулярных выражений : posix и pcre. Сайт: Автор: Reuben Thomas and Shmuel Zeigerman sdl: Позволяет использовать часть функций библиотеки SDL: the SDL, SDL_image, SDL_mixer, SDL_net and SDL_ttf. Сайт: Автор: Kein-Hong Man serial: Позволяет использовать параллельный порт ПК. Автор: Arnaud Le Ber snmp: Реализует функции, необходимые для создания SNMP-клиента. Основана на библиотеке NET-SNMP. Сайт: Автор: Herbert Leuwer socket: Библиотека для работы с сокетами. Реализует доступ к TCP, UDP, DNS, SMTP, FTP, HTTP, MIME. Сайт: Автор: Danilo Tuler, Diego Nehab sqlite: Библиотека для работы с БД SQLite 2. Сайт: Автор: Tiago Dionizio sqlite3: Библиотека для работы с БД SQLite database 3. Сайт: Автор: Michael Roth ssl: Создание TLS/SSL-соединений с использованием библиотеки socket. Сайт: Автор: Bruno Silvestre tcps: Библиотека для создания TCP-серверов Сайт: th: Алгоритмы Tiger Hash tth: Алгоритмы TigerTree Hash udps: Библиотека для создания UDP-серверов Автор: Arnaud Le Ber uname: retrieve some machine specific information Автор: Arnaud Le Ber unicode: support for ASCII, LATIN and UTF-8 unicode Сайт: Автор: Klaus Ripke wx: Многофункциональная кроссплатформенная библиотека, основанная на wxWidgets. Основное назначение - создание графического интерфейса приложений. Сайт: Автор: Francesco Montorsi xml: Парсер XML-файлов, основанный на Tiny XML 2.5.2 Сайт: Автор: Lee Thomason + Arnaud Le Ber zip: Чтение содержимого zip-архивов Сайт: Автор: Danilo Tuler zlib: Использование функций библиотеки zlib Сайт: Автор: Tiago Dionizio Подробная информация о библиотеках доступна в справке (см. ниже). Также, более подробную информацию о некоторых библиотеках пакета можно получить в этом разделе. Скачать последнюю версию версию дистрибутива можно с Файл справки (формат CHM) можно скачать Справка в формате HTML: luaaio_doc.rar ( 4.67 мегабайт ) Кол-во скачиваний: 65 Дополнительно: Как запустить скрипт под Lua-AIO Имеются как минимум три способа запустить Ваш скрипт под Lua-AIO: Первый (и самый очевидный): При запуске хост-программы указываем имя скрипта в качестве параметра командной строки. Например: Программы, созданные с использованием Lua-AIO
Сообщение отредактировал alex82 - 11.1.2010, 0:00 |
|
|
10.1.2010, 19:11
Сообщение
#2
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
alex82, если есть опыт - расскажи пожалуйста про мьютексы и потоки, а то мне кажется это не дает никакого прироста производительности, только заморочка, а единственный плюс - изолированность, которая при грамотном построении скрипта и не нужна.
|
|
|
10.1.2010, 22:22
Сообщение
#3
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Nickolya
Преимущество многопоточности - не изолированность, а независимость скрипта (да и, в общем-то, самой хост программы, под управлением которой работает этот скрипт) от времени выполнения определенных функций в тех случаях, когда время выполнения этих функций ограничено не производительностью компа, а чем-то иным. Ты ведь наверняка замечал подвисания PtokaX при использовании на ней скриптов, использующих библиотеку сокетов. А ведь этого можно избежать, если запускать функции, отвечающие за получение информации из сети, в отдельной ветви. В качестве другого примера могу привести твой пингер хабов. Вот скажи - может ли он пинговать несколько хабов одновременно? Могу поспорить что нет. А мой может, поскольку использует многопоточность. Также не стоит забывать, что Lua-AIO используется для создания программ с графическим интерфейсом, и использование ветвей позволяет избежать подвисания GUI во время выполнения продолжительных и ресурсоемких фрагментов кода. |
|
|
10.1.2010, 22:55
Сообщение
#4
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Пингер пингует несколько хабов, не одновременно конечно, в одном потоке, но писалось оно на движке птоки, так что думать о потоках не приходилось. Если все так прекрасно, приведи примеры кода пожалуйста использования потоков в луааио, а так же может если знаешь о подпрограммах в самом луа, пожалуйста.
|
|
|
10.1.2010, 23:37
Сообщение
#5
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Вот кусок кода из того самого пингера, о котором я говорил (некоторые фрагменты удалены, дабы не отвлекать от самой сути):
Код [2] = function()
tData.NumHubs = 0 local hubs,num = {},0 local cur = con:execute(("SELECT address,port FROM %shubs WHERE `pinged`<%s AND `special`=0"):format(tMySQL.Prefix,os.time()-tCfg.RePingTime*3600)) local address,port = cur:fetch() while address do -- В этом цикле мы разбиваем таблицу хабов на несколько. Число таблиц равно числу ветвей tData.NumHubs = tData.NumHubs+1 num = num+1 if num > tCfg.PingThreads then num = 1 end if not hubs[num] then hubs[num] = {} end table.insert(hubs[num],{address,port or 411}) address,port = cur:fetch() end -- Тут был кусок кода, отвечающий за общие элементы интерфейса local threads,dist,progr = tCfg.PingThreads,34,180 if threads > #hubs then threads = #hubs end GUI.Status,tTh = {},{} for i = 1,threads do -- В этом цикле мы создаем ветви, которые и будут пинговать хабы GUI.Status[i] = {} -- Тут был кусок кода, отвечающий за элементы интерфейса каждого потока. tTh[i] = {} tTh[i].Env = luasql.mysql() tTh[i].Con = assert(tTh[i].Env:connect(tMySQL.DB,tMySQL.User,tMySQL.Pass,tMySQL.Host)) tTh[i].Con:execute("SET NAMES "..tMySQL.Charset) tTh[i].ThID = ThreadCreate(PingThread,{i,hubs[i]}) -- Тут, собственно, и создается ветвь. В качестве аргументов передается номер ветви, и её персональная таблица хабов end GUI.StatusPanel:SetScrollbars(1, dist, 1, threads, 0, 0, false) end, |
|
|
28.1.2010, 22:42
Сообщение
#6
|
|
Освоившийся участник Группа: Администраторы Сообщений: 344 Регистрация: 2.6.2008 Из: RB,Ufa Пользователь №: 8 Спасибо сказали: 106 раз |
Поставил LUA AIO на Ubuntu 9.10 руководствуясь
Накидал код для примитивного тестирования. В windows работает, но при цикле в 2000 действий thread'ы отказываются создаваться. Вообще говоря, это мое первое знакомство с thread'ами. Вот собственно сам код: CODE require"modules.http" local sURL = "http://localhost" local iRequests = 1900 local tResult = {} local iMaxTime = 0 local iTime = 0 local iStep = 100 local iCount = 0 local tID = {} function SendRequest(id) local iStart = os.clock() local sResult = http.request(sURL) local iEnd = os.clock() tResult[id] = iEnd - iStart iTime = iTime + tResult[id] iCount = iCount + 1 if tResult[id] > iMaxTime then iMaxTime = tResult[id] end ThreadDestroy(tID[id]) end function Max() local iCount = 0 for i in pairs(tResult) do iCount = iCount + 1 end return iCount end for i = 1,iRequests do iStep = iStep - 1 tID[i] = ThreadCreate(SendRequest, { i }) end while iCount ~= iRequests do end print("Время выполнения программы: "..os.clock().." сек. Самый длительный запрос: "..iMaxTime.." сек. Среднее время: "..string.format("%0.3f", (iTime / iRequests))) На каждую ветвь приходится 1 запрос. Возможно это расточительство. Пробовал помещать несколько запросов в ветвь, но быстродействие кода падает. Но это не основная проблема, под ubunt'ой lua редактор запускается, код выполняться отказывается. Просто виснет. И вообще создалось ощущение что работает на честном слове. |
|
|
28.1.2010, 23:11
Сообщение
#7
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
а все потому, что тарбол гнилой и мерзкий. Надо из исходников с оптимизацией
|
|
|
28.1.2010, 23:32
Сообщение
#8
|
|
Освоившийся участник Группа: Администраторы Сообщений: 344 Регистрация: 2.6.2008 Из: RB,Ufa Пользователь №: 8 Спасибо сказали: 106 раз |
о последнем можно поподробнее??
|
|
|
29.1.2010, 0:04
Сообщение
#9
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
|
|
|
|
Сейчас: 22.12.2024, 23:58 |