Snusmumriken
Ну во-первых, каким-то волшебным способом действительно получен ELF
Snusmumriken
А во-вторых, продолжай пользоваться той инструкцией.
usernameak
Ну во-первых, каким-то волшебным способом действительно получен ELF
> каким-то волшебным способом почему же волшебным
usernameak
обычный ld
Snusmumriken
> каким-то волшебным способом почему же волшебным
Потому что очень странно что luajit собирает эльфы. Я чот думал что он умеет только в luac.
Anonymous
Думаю, что несколько файлов можно указать через пробел в команде луаджита
Snusmumriken
Но есть подозрение что этот эльф тянет системные lua-либы и запускается в них.
Anonymous
Нет .о это не лд
Anonymous
Лд участвует при сборке с опенрести
Snusmumriken
Нет .о это не лд
Видишь, написано ELF в начале файла на скрине. Это значит что он типа запускаемый.
Anonymous
А .о объектник содержит байткод с запускатором, полагаю
Snusmumriken
Ну скорее всего таки да.
Maxim
дело в том что у меня две директории со своими вложенными директориями ) и я не могу понять как именно или в каком порядке и какой набор файлов нужно указать для получения одного .o файлика )
Snusmumriken
Карочи, производительность скорее всего не будет особо отличаться от запуска обычных lua-файликов. Будет чуть быстрее _запускаться_ (сам openresty будет быстрее стартовать), но не более.
Anonymous
Видишь, написано ELF в начале файла на скрине. Это значит что он типа запускаемый.
Нет, у тебя .со библиотека тоже отобразится как эльф, но она же не запускаемая
Anonymous
Если сомневаешься, сделай несколько .о файлов
Anonymous
У тебя же с опенрести они линкуются в итоге
Anonymous
Посчёт прироста производмтельности я тоже не уверен. Если сам мод луа и так использует луаджит
Snusmumriken
Но луа при попытке исполнения любого скрипта преобразует его в байткод, и кеширует его. Поэтому особой разницы не будет.
Anonymous
Если нет то да млжет
Maxim
У тебя же с опенрести они линкуются в итоге
ну получается что мне нужно будет пересобрать ОпенРести с полученными .о файлами, как я понял из описания в инсрукции
Anonymous
Очевидно да
Anonymous
Вот скажите мне
Snusmumriken
Разве что будет проще шарить рестю "бандлом" с библиотеками, не будет лишних файлов торчать.
Anonymous
В опенрести по дефолту луаджит?
Snusmumriken
Да. Там кроме луаджита ничего и не бывает, помнится. Половина библиотек луажитовые.
Anonymous
Тогда да, бессмысленное занятие
Maxim
Карочи, это тебе особо ничего не даст. Можешь шибко не морочиться.
вот, как мне это проверить? может пример какой нибудь есть ?
Anonymous
Пример же в документации
Snusmumriken
вот, как мне это проверить? может пример какой нибудь есть ?
Проверить — собрать рестю со статически слинкованными либами по инструкции : ) Мне впадлу, тут мороки куча.
Maxim
ок, понял, в общем тогда лучше не париться и попробовать этим заняться на первых выходных когда будет свободное времи и нечем заняться
Snusmumriken
..Тем более что реальный прирост скорости скорее всего не будет виден, ибо шо там байткод, шо тут. У луа очень быстрый превращатель кода в байткод. И он делает это только при первой загрузке скрипта, пока жива вм.
Pavel
⚠️Sprinter⚠️ опасная аватарка
Snusmumriken
(нет, это просто упаковка байткода в бандл, давай оно реальную производительность, все луёвые либы openresty были бы упакованы вместе с рестей, а так, в "исходные" скрипты можно смотреть вместо доки, косвенная причина но не менее объективная)
Snusmumriken
Эта фигня имеет реальный смысл в двух случаях: у тебя десять тысяч миллиардов скриптов и рестя слишком медленно заводится (а ты её часто ребутаешь), или ты постоянно по неизвестной причине чистишь кеш скриптов (и то диск медленнее читает скрипт чем он байткодится).
mva
ну и оно полезно в stateless-контейнерах
Snusmumriken
Карочи, на самом деле в общем-то бессмысленная фигня. В пятый раз повторяю: скрипты читаются один раз при запуске и, возможно, на первом запросе.
mva
в stateless-контейнерах подразумевается что диска с данными нету
mva
и они могут спокойно мигрировать между нодами в кластере
Snusmumriken
Пасиба : ) Потому что тут и так народ ругается на офтоп, и чем более офтопистый тем сильнее ругаются
Snusmumriken
(и я тоже ругаюсь на офтоп который возглавляю не я, и на матюки)
Maxim
Кстати, не офтоп вопрос имеется по lua
Snusmumriken
Довай!
Maxim
Насколько я разобрался в теме то в lua нет такого понятия как классы, есть таблицы и метатаблицы с помощью которых можно реализовать то что в других ЯП называют классами. В общем вопрос про одну точку и две точки, чем конкретно они отличаются и когда нужно использовать двоеточие и когда точку?
Maxim
сегодня так получилось что мои знания по этому вопросу я поставил под канкретное сомнение
mva
двоеточие - иммитация ООП
mva
обращение к объекту
mva
точка - "процедурное" обращение
mva
т.е. string.dump(a) vs a:dump()
Maxim
так если нет классов, то имитация чего именно происходит? какая аналогия может быть в ООП ?
Snusmumriken
сегодня так получилось что мои знания по этому вопросу я поставил под канкретное сомнение
Вот тут вот есть описание всего-всего, включая точку-двоеточие https://habr.com/ru/post/346892/
Maxim
просто я по привычке двоеточие подсознательно принимаю за статичный метод что абсолютно неверно
Snusmumriken
так если нет классов, то имитация чего именно происходит? какая аналогия может быть в ООП ?
Вызов _метода_ и вызов _функции_. Через точку — функция, через двоеточие — метод.
Snusmumriken
Ну, когда ты у питоновых объектов пишешь методы типа def foo(self, x, y): bla-bla Вот это вот (self) в питоне как двоеточие в луа
mva
снус, не путай человека
mva
т.е. string.dump(a) vs a:dump()
я вот тут причёл конкретный пример
Maxim
да я уже запутан по самые помидоры, дальше некуда
mva
этого, имхо, должно быть достаточно для понимания
Snusmumriken
получается метод и функция абсолютно разные вещи
Карочи, прочитай статью которую я скинул. Грубо говоря object:method(a, b, c) == object.method(object, a, b, c) Передаём себя в "self" первым аргументом.
Maxim
этого, имхо, должно быть достаточно для понимания
то есть параметры не передаются в метод, а действие происходит над самим объектом (метатаблицей), верно?
mva
есть тип string. У него есть набор методов, лежат в таблице, как ни странно, string. И у всех объектов типа string есть эти методы и их можно вызывать через двоеточие (тогда сам объект передаётся методу как первый аргумент (т.н. "self").
Snusmumriken
то есть параметры не передаются в метод, а действие происходит над самим объектом (метатаблицей), верно?
То есть, в эту функцию передаётся объект первым аргументом. Если функция расчитана на то что ей передают объект первым аргументом — это типа метод.
Snusmumriken
Прочитай статью. Она большая и жирная, но там всё с примерами.
mva
таким образом string.format("%d: %d",1,2) == ("%d: %d"):format(1,2)
mva
первое - процедурный вариант, второе - ООП-вариант
Snusmumriken
Потому что таблица string является __index-метатаблицей (классом) для всех строк. Все строки работают "как бы" как таблицы, и ищут ненайденные ключи в таблице string.
Snusmumriken
function string.foo(str, y) return str .. y .. y end v = "Hello" print(v:foo(" world")) --> "Hello world world"
Snusmumriken
Ну и конечно, можно вызвать как обычно: print( string.foo(v, " world") ) Это и есть разница между точкой и двоеточием
Maxim
Коллеги, выражаю вам благодарность за помощь в востановлении пробелов в моих знаниях, вот теперь у меня в голове пазл полностью собрался!
Maxim
Вот тут вот есть описание всего-всего, включая точку-двоеточие https://habr.com/ru/post/346892/
за статейку отдельное спасибо! после ваших объяснений "откуда растут ноги у моей проблемы" мне гораздо больше становится понятно о чем пишет автор поста, информация воспринимается совершенно подругому
Snusmumriken
Какой автор какого поста?
Snusmumriken
Da. Но суть этого сахара стоит осознать.