@ProLua

Страница 205 из 307
Vlad
27.11.2017
12:43:42
я тут просто давеча в игрушку залип, Aurora, скачал все дела, а там вспомогательные окна под разрешение ноута не спроектированы, там есть в настройках кнопка вроде "подогнать размер" но она не решает проблем, зачастую самый нижний ряд кнопок не видно

Snusmumriken
27.11.2017
13:00:02
Если это ещё и игруля на opengl/ещё чём-то - вообще всё страшно, не масштабируется. Что за аврора? AuroraRL?

Vlad
27.11.2017
13:06:54
не, вот : http://aurora2.pentarch.org/index.php?topic=5663.0 Aurora 4x

brestows
27.11.2017
13:48:10
туда смотреть гиблое дело

Google
fgntfg
27.11.2017
16:00:20
не, вот : http://aurora2.pentarch.org/index.php?topic=5663.0 Aurora 4x
Ох, дядь ты попал. Это лучшая 4x игра в мире. Но графика не торт. Вообще посмотри на r/aurora4x

annelin
27.11.2017
22:00:20
посоны, rockspec'и кто-нибудь пиесал?

Philipp
28.11.2017
06:01:49
Да

Group Butler [beta]
28.11.2017
07:43:39
Добро пожаловать в чат pro.lua, Georgy! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

brestows
28.11.2017
09:57:09
Ребят есть такой код, пытаюсь придумать велосипед в лице switch https://pastebin.com/yAbVkjp1 но у меня всегда вызывается функция userBlocked и не выполняется код после объявления таблицы switch

где я туплю

Alexey
28.11.2017
10:02:19
userBlocked(userID) итд. вычисляется на этапе создания таблицы

brestows
28.11.2017
10:03:53
Как более грамотно сделать switch

понимаю что можно if elsif ^)

но все же

Philipp
28.11.2017
10:04:04
А зачем он тебе?

If/elseif

Google
Philipp
28.11.2017
10:04:45
Либо хэштаблицу заместо свитча

Alexey
28.11.2017
10:09:26
local switch = { block = userBlocked; vip = userVIP; test = testVoIP; manager = userManager; };

brestows
28.11.2017
10:35:26
ребят простите за глупый вопрос, но как-то можно объявить функцию в начале скрипта, а ее реализацию написать в любом другом месте, что-то не могу нагуглить как это сдеать

Georgy
28.11.2017
10:35:40
нет

brestows
28.11.2017
10:36:00
т.е. я должен следить за порядком функций в файле ?

Georgy
28.11.2017
10:36:08
да

Snusmumriken
28.11.2017
10:36:38
Можно. varname ... function varname(x, y) return x + y end Но если попробуешь вызвать до того как определил - жди спид. Собственно, так можно делать локальные рекурсивные фунции: function foo() local bar -- если этого не сделать, ругнётся что нет bar local function bar(a, b) return a > b and b or bar(a - 1, b + 1) end end

Snusmumriken
28.11.2017
11:46:43
Проверь сам ))

Andrey
28.11.2017
11:47:22
В луа не хватает прототипов ?

Snusmumriken
28.11.2017
11:47:46
Чем тебе setmetatable не нравится?

Andrey
28.11.2017
11:49:36
Я про прототипы функций из С/С++ - где можно описать вызов и ответ в начале файла, а реализацию в конце

Tverd
28.11.2017
11:50:18
local foo ... function foo() end

Andrey
28.11.2017
11:50:51
Не видно передаваемых значений

Snusmumriken
28.11.2017
11:51:21
А я уж подумал про ЖС-прототипы. Но кто мешает делать комментарии?

Tverd
28.11.2017
11:51:25
или прямо вот что бы как в С local function foo(x,y) end ... function foo(x,y) ... end

Snusmumriken
28.11.2017
11:51:47
Да, она два раза создаётся, но это не играет большой роли.

Tverd
28.11.2017
11:52:05
я тоже про них подумал... типа переопределять метод в встроеных объектах

annelin
28.11.2017
16:33:36
посоны посоны посоны

Google
annelin
28.11.2017
16:34:01
можно ли на луа реализовать что-то вроде многопоточного демона, который будет слушать какой-то порт и отвечать туда чем-то там?

чтобы каждый запрос = отдельный трэд

http://lua-users.org/wiki/CoroutinesAsConnectionHandlers норм?

Philipp
28.11.2017
16:50:50
@Snusmumriken

Научитесь уже сами уже пинговать старичков чата :(

annelin
28.11.2017
16:51:38
а ты чо, не старичок? (:

Alexey
28.11.2017
16:58:22
Можно и в отдельных потоках если очень надо

Я когда то писал патч для luasocket Но лучше попробовать другой вариант

Philipp
28.11.2017
16:59:58
а ты чо, не старичок? (:
Старичок, но не во всем шарю

Snusmumriken
28.11.2017
17:06:13
можно ли на луа реализовать что-то вроде многопоточного демона, который будет слушать какой-то порт и отвечать туда чем-то там?
Тебе на линупс? Он может демонизировать всё что угодно, так что да. Для ТруЪ-многопоточности - lanes, и всё. Просто создаёшь комплект функций-трэдов, общаешься ими через Linda (или не общаешься, если не нужно). Советую сделать демону слушалку какого-то порта из главного потока в текстовом режиме, чтобы им можно было легко рулить, открывать/закрывать новые потоки, редактировать конфиг и всё такое.

annelin
28.11.2017
17:07:50
copas — не то?

copas = require "copas" function handler(c, host, port) c:settimeout(1) c:receive("*l") end copas.addserver(assert(socket.bind("*",2220)), function(c) return handler(copas.wrap(c), c:getpeername()) end) copas.loop()

на settimeout ему похуй, почему-то

хотя вроде как wrap() отдаёт обычный luasocket

Snusmumriken
28.11.2017
17:08:46
Не то, это корутины. Корутины, панимаищь? Один "тред" завис - и всё зависло, исполняется на одном процессоре в одном потоке. Корутины = много-много goto, в красивой оболочке, не более.

annelin
28.11.2017
17:10:28
https://gist.github.com/Deco/4026258

А ЧО КАК СЛОЖНО

Snusmumriken
28.11.2017
17:10:36
Вот такое, например.



Ах да, тут истинная многопоточность, и треды не блокируют ))) Менагер тупо проходит циклом по списку занятых тредов и если от них что-то пришло - выдаёт это например в табличку.

Google
Snusmumriken
28.11.2017
17:11:26
Это типа безопасный хендлер для потоков, и общая точка общения каждого потока с главным.

Ну, это универсальная краткая лекция. Относится к произвольным потокам. Если что: поток - это отдельная фигня. Операционные системы делят их на два типа - "лёгкие" и "тяжёлые" потоки. Лёгкие - это программа сообщает операционной системе, мол, вот этот кусок кода можно выполнять параллельно. Они легко плодятся и имеют общую память, правда, за переключение между потоками отвечает операционная система, и они могут выполняться только на одном процессоре, единственное различие - асинхронность. Ранний Lanes выполняет именно такие потоки. Тяжёлый поток - это как будто совсем другое приложение, с которым можно общаться через общие каналы. У них нет ни одного куска общей памяти, а пересылка - только текстовыми сообщениями через пайпы-каналы. Вот эта херовина может выполняться на разных процессорах, и жрать огромную кучу памяти. Но тут лишний дискомфорт в виде невозможности работать с объектами друг друга напрямую, только через посредника, типа "читалка-отправлялка сообщений" в каждом потоке. Это очень, очень похоже на сетевое взаимодействие разных приложений. А корутины - это считай что очень много GOTO. Функция, которая может в любой момент прерваться через yeld, и продолжить своё выполнение после того как её снова вызвали

annelin
28.11.2017
17:12:34
можно весь срц?

Snusmumriken
28.11.2017
17:15:38
Ща найду ))

annelin
28.11.2017
17:17:15
luasocket патчить надо?

Snusmumriken
28.11.2017
17:21:23
Зачем?

Я ща вычищаю из скрипта хемеру и прочую дрянь, сейчас там останется только сравнительно чистая фигня.

annelin
28.11.2017
17:22:16
хз, во всех примерах использования lanes+luasocket в luasocket добавляли функцию какую-то патчем

Snusmumriken
28.11.2017
17:23:25
Хе, третьему луасокету вроде пофигу, хотя мб это потому что я слушаю одним портом, раскидывая задачки на потоки. Ну, типа прога с одной точкой входа. Проверишь сам, в общем.

Чот такое. Есть классы воркеров, менеджеров и всего такого. https://pastebin.com/7VUXra6a

Очереди тасков нет, но можно присобачить пятью строками. В данной реализации, если не нашлось свободного воркера на задачу, оно просто вернёт nil на worker:send(...). Да, для этой фигни есть ещё предзагрузчик, который как раз объявляет лишние функции и поля node, так что не пугайся странностям, это кусок довольно большой составной фигни. Мда, примерно так выглядит хайлоад, если что, только таймауты поменьше поставить, и воркеров побольше, а ещё, оболочку над всей этой фигнёй с балансировщиком ))

annelin
28.11.2017
17:39:42
о, пасиба

@Snusmumriken » Мда, примерно так выглядит хайлоад, ага

поэтому и смотрю на сокеты

https уже не хватает :)



я пока вообще нипонимат, как и что тут работает

Snusmumriken
28.11.2017
17:47:42
Мм. Давай нарисую схемку.

annelin
28.11.2017
17:47:54
или тут сервер и клиент в одном файле, лол?

Snusmumriken
28.11.2017
17:50:27
Это просто слушающий сервер, который по TCP принимает запросы, раскидывает их по тредам, и если тред что-то вернул - отправляет обратно тому кто запросил. (18: local succ, script = xpcall(dofile, error_printer, path..'/service.lua') -- скрипт треда). Вот эта "жэсть" - это типа лог для меня любимого, мол, если что-то упало - перестанет отписывать.

Google
annelin
28.11.2017
17:50:45
ааа

Snusmumriken
28.11.2017
17:51:01
Микросервис кароч.

annelin
28.11.2017
17:51:25
спасибо, будем разбираться :3

Snusmumriken
28.11.2017
17:58:27


annelin
28.11.2017
18:19:02
почему так сильно жрёт ЦП?



Group Butler [beta]
29.11.2017
04:40:01
Добро пожаловать в чат pro.lua, Swopy! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Добро пожаловать в чат pro.lua, John! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

John
29.11.2017
13:12:34
Приветствую всех! Пытаюсь разобраться, как накрутить счетчик установок гугл плей с одного устройства. Точнее говоря, какие параметры отвечают за уникальность устройства (имей, серийник, айди, почта, айпи т .д.) Есть у кого-либо знания в этой области? Или, может быть, опыт? Бюджет 1500$

brestows
29.11.2017
13:48:48
Народ, подскажите вопрос, есть ли библиотека для lua по работе с каледнарем ?

Alexey
29.11.2017
13:49:30
есть для работы с датой/временем

Я использую lua-date

https://luarocks.org/modules/tieske/date

brestows
29.11.2017
14:11:02
Я имел ввиду какой нить ical протокол или что-то подобное

Страница 205 из 307