Timur
microStudio же.
теперь понятно
Vladislav
Привет! Кто-нибудь знает как добавить аннотации к кастомным типам в EmmyLua, которые приезжают из сторонних библиотек? Что-то типа define-файлов? в teal это делается через tl.d файлы, но в emmylua ничего такого не нашел
🐅🤦‍♂️
Привет! Кто-нибудь знает как добавить аннотации к кастомным типам в EmmyLua, которые приезжают из сторонних библиотек? Что-то типа define-файлов? в teal это делается через tl.d файлы, но в emmylua ничего такого не нашел
Здравствуйте. Немного не в тему. Вы писали teal обёртку над luafun, мне интересно, довели до рабочего состояния? И есть ли она в открытом доступе?
Vladislav
Здравствуйте. Немного не в тему. Вы писали teal обёртку над luafun, мне интересно, довели до рабочего состояния? И есть ли она в открытом доступе?
хм, нет, меня остановило, что teal долго релоадится, а для меня это было важно. Может быть вернусь к этому, пока только совсем зачатки типа: local record fun record iterator<T> sum: function(iterator<number>): number reduce: function<R>(iterator<T>, (function(R, T): R), R): R end iter: function<T>({T}): iterator<T> sum: function({number}): number reduce: function<T,R>({T}, (function(R,T):R), R): R end return fun
🐅🤦‍♂️
хм, нет, меня остановило, что teal долго релоадится, а для меня это было важно. Может быть вернусь к этому, пока только совсем зачатки типа: local record fun record iterator<T> sum: function(iterator<number>): number reduce: function<R>(iterator<T>, (function(R, T): R), R): R end iter: function<T>({T}): iterator<T> sum: function({number}): number reduce: function<T,R>({T}, (function(R,T):R), R): R end return fun
Да, компиляция долгая. Я хотел встроить в свой проект какую-нибудь вспомогательную библиотеку в функциональном стиле. Есть moses и luafun. Где-то видел замеры производительности сильно не в сторону moses. Она написана более прямолинейно, а luafun написана с учётом понимания как оптимизирует luajit.
Vladislav
Да, компиляция долгая. Я хотел встроить в свой проект какую-нибудь вспомогательную библиотеку в функциональном стиле. Есть moses и luafun. Где-то видел замеры производительности сильно не в сторону moses. Она написана более прямолинейно, а luafun написана с учётом понимания как оптимизирует luajit.
да, luafun хорош, он правда быстрый, но его нужно аккуратно использовать. натыкался на очень неочевидный баг в fun.grep . если функции чистые, или возвращают всегда одинаковое количество аргументов -- он работает предсказуемо
🐅🤦‍♂️
да, luafun хорош, он правда быстрый, но его нужно аккуратно использовать. натыкался на очень неочевидный баг в fun.grep . если функции чистые, или возвращают всегда одинаковое количество аргументов -- он работает предсказуемо
Когда открыл исходник, думал сейчас напишу типизацию😂. Посмотрел на внутренности, понял что работы там слишком много для меня. А от teal я не хочу отказываться в своем проекте, слишком он улучшает качество кода. Не смотря на долгую сборку и то, что не все ошибки находятся. Так и пишу без функциональных библиотек😁
Yar
Люди добрые! Вечер добрый! Посоветуйте, пожалуйста, литературу не сильно подробную и глобальную, но которая позволит понять lua и пытаться понемногу на нем писать
Джифорсович
иерусалимски
Alexander.
Люди добрые! Вечер добрый! Посоветуйте, пожалуйста, литературу не сильно подробную и глобальную, но которая позволит понять lua и пытаться понемногу на нем писать
Смотря что писать Если использовать как встраиваемый язык с апишкой, то вообще нихера знать и не надо Базовый синтаксис подучил а дальше знания сами в голову залетать будут
Alexander.
А хер его Но вообще самому интересно что там по литературе у луа Язык то не особо популярен
Alexander.
ложь
Ну ладно Скажем так не "попсовый"
🐅🤦‍♂️
Люди добрые! Вечер добрый! Посоветуйте, пожалуйста, литературу не сильно подробную и глобальную, но которая позволит понять lua и пытаться понемногу на нем писать
В файлах чата есть книги Иерусалимски. В самом чате не раз поднималась тема использования таблиц, метатаблиц, корутин, обработки ошибок, работы со строками, представление чисел, оптимизаций luajit и т.д.
ShadoWalkeR
Господа. А подскажите пример того как на lua сделать простейший rest сервер - задача слушать порт и на get id возвращать содержимое кэша
ShadoWalkeR
Не - тарантул. Поэтому голый луа
Yuriy
Не - тарантул. Поэтому голый луа
Ты там залочишь llvm им если там нельзя выполнять это в отдельном процессе
Yuriy
"llvm"?
Сорян luavm
ShadoWalkeR
По идее можно - там видел примеры с expitaiond для обработки TTL. Но как я понял из документации - lua для таких вещей и используется - прослойка между самими тарантулом и всем остальным
Timur
Не - тарантул. Поэтому голый луа
не тарантул, или именно что тарантул?
ShadoWalkeR
именно что тарантул
Timur
именно что тарантул
https://github.com/tarantool/http#using-routes а почему этого недостаточно?
ShadoWalkeR
Это я уже попробовал - такое ощущение что документация сильно устарела
ShadoWalkeR
А. Или надо было попробовать поставить через tarantoolctl а не через luarocks
Timur
Это я уже попробовал - такое ощущение что документация сильно устарела
со всеми проблемами там лучше, конечно, обращаться в тарантульный чатик (ну или сразу issue открывать в соответствующем репозитории)
ShadoWalkeR
В тарантульный чатик я уже ходил, когда по их примеру в документации реплика М-М не собиралась 😃
ShadoWalkeR
Но это обычно крайняя мера - спрашивать в профильном рукоммьюнити
ShadoWalkeR
Забавно 😃 поставленное luarocks прекрасно находится в системе. А вот через tarantoolctl дек 17 14:04:51 tkamailio1-chel2 tarantoolctl[11405]: Start failed: /etc/tarantool/instances.available/td_registrar.lua:1: module 'http.server' not found:
ShadoWalkeR
Спасибо за помощь - пошел дальше экспериментировать с http
Timur
Забавно 😃 поставленное luarocks прекрасно находится в системе. А вот через tarantoolctl дек 17 14:04:51 tkamailio1-chel2 tarantoolctl[11405]: Start failed: /etc/tarantool/instances.available/td_registrar.lua:1: module 'http.server' not found:
предлагаю, весь остальной траблешутинг всё-таки перенести в @tarantoolru (подозреваю, что вы ставили через tarantoolctl rocks install локально, прямо в текущий каталог, а запускаете в другом контексте)
ShadoWalkeR
Да я уже разобрался
tarantoolctl, серьезно? Какая-то аллюзия на systemd и systemctl😂😂
А systemd и systemctl — аллюзия на launchd и launchctl, ага.
В чём проблема?
🐅🤦‍♂️
В чём проблема?
Да не в чем не проблема. Для меня это имя программы выглядит как забавная отсылка.
Vladislav
Забавно 😃 поставленное luarocks прекрасно находится в системе. А вот через tarantoolctl дек 17 14:04:51 tkamailio1-chel2 tarantoolctl[11405]: Start failed: /etc/tarantool/instances.available/td_registrar.lua:1: module 'http.server' not found:
Как интерпретатор луа, он чуть в своих путях живет. Как и опенрести. Что-то в луа сообществе разные технологии немного отселяются в отдельные префиксы :)
Ярослав
Всем привет. У меня есть таблица значений. Можно как-то присвоить ячейке этой таблице ссылку на значение (number или string) из другой таблице? Чтобы при изменении значения x в таблице B оно также менялось в таблице A?
Snusmumriken
Всем привет. У меня есть таблица значений. Можно как-то присвоить ячейке этой таблице ссылку на значение (number или string) из другой таблице? Чтобы при изменении значения x в таблице B оно также менялось в таблице A?
Гипотетически, но нужны прокси-таблицы. tableA, tableB = {}, {} proxtA, proxtB = {}, {} local function __newindex(t, k, v) rawset(tableA, k, v) rawset(tableB, k, v) end setmetatable(proxtA, {__index = tableA, __newindex = __newindex}) setmetatable(proxtB, {__index = tableB, __newindex = __newindex}) Для изменения и получения ключей используешь прокси. Они пустые.
Snusmumriken
Но проще использовать одну и ту же таблицу с одной прокси. mytable = {} proxy = setmetatable( {}, {__index = mytable, __newindex = function(self, ...) rawset(mytable, ...) end } ) Добавления ключей в прокси изменяют их в основной таблице. Из прокси можно получать те же значения по тем же ключам что в основной таблице.
Snusmumriken
А ещё проще использовать буквально одну и ту же таблицу. t = {foo = 10} a, b = t, t a.foo = 20 print(b.foo) --> 20 t, a и b это одна и та же таблица.
Ярослав
А теперь главный вопрос: зачем оно тебе? ))
аниматор делаю с конечным автоматом... если при иницализации нового состояния не указать какие-то параметры, то они берутся из default состояния. нужно чтобы во время игры при изменении default во всех состояниях что взяли его значение значение тоже поменялось
Snusmumriken
Пфф
Snusmumriken
Передавай ссылку на default всем состояниям, и всё.
Snusmumriken
Потому что единственное для чего подобная схема с проксями может быть нужна по моим соображениям — для синхронизации нескольких объектов, которые должны быть пачкой сериализованы и десериализованы, поэтому тут нет дублирований ссылок на одну и ту же таблицу.
Ярослав
Передавай ссылку на default всем состояниям, и всё.
и при каждом обращении к переменной проверять nil она или нет, и если nil, то брать из default?
Snusmumriken
setmetatable(my_state, {__index = default})
Snusmumriken
Соответственно локальные параметры можешь менять у state, глобальные для всех стейтов у default.
Ярослав
👍
🐅🤦‍♂️
Всем привет. У меня есть таблица значений. Можно как-то присвоить ячейке этой таблице ссылку на значение (number или string) из другой таблице? Чтобы при изменении значения x в таблице B оно также менялось в таблице A?
Я бы сделал одну табличку(1) с парами ключ - хранимое значение. Во всех других таблицах хранил не данные, а этот ключ. Данные брал соответственно из таблички (1) непосредственно перед использованием.
🐅🤦‍♂️
metatable с __index ключем это именно то, что мне нужно
Я с метатаблицами не очень дружу. Как прокси не применял их не разу. В основном я делаю примитивное ООП на __index, без наследования даже.
Igor
Я с метатаблицами не очень дружу. Как прокси не применял их не разу. В основном я делаю примитивное ООП на __index, без наследования даже.
Побаиваюсь метатабличек потому что для меня не всегда очевидно то, что они делают, даже после прочтения доков. Первое время вообще воткнуться не мог как работают слабый ключ/слабое значение, допустим. Так что я тоже дальше примитивного ООП стараюсь не уходить. Чем больше приходится умственных усилий приложить для понимания принципа работы используемых методов, тем выше вероятность прострелить себе ногу, используя эти самые методы.
Igor
Именно неочевидность. Иногда я думаю они полезны. Это как в c++ типы с перегруженными методами. Вроде удобно, но легко запутаться.
Время, которое я уделяю тому или иному инструменту программирования зависит как раз от его уровня очевидности. Именно по этому я не трогаю кресты и подобные им от слова совсем. Я не получаю ни качественного результата, ни удовольствия от разработки на неочевидных инструментах.
🐅🤦‍♂️
Время, которое я уделяю тому или иному инструменту программирования зависит как раз от его уровня очевидности. Именно по этому я не трогаю кресты и подобные им от слова совсем. Я не получаю ни качественного результата, ни удовольствия от разработки на неочевидных инструментах.
Не получаю удовольствия от плюсов. Некоторое время изучаю Раст. Там свои косяки - долгая компиляция, текут версии пакетов постоянно. Непривычный язык, но писать на нем - в охоточку! На привычные вещи смотрю новым взглядом.
Джифорсович
там поинтер в структуре или как? 🤔
Snusmumriken
Да.
Snusmumriken
Так-то да, но чем выше изначальный уровень неочевидности, тем сильнее инструмент меня отталкивает.
Схема очень простая и очень логичная, а если ты будешь забивать на всё непонятное - у тебя как бы не будет стимула развиваться.
Snusmumriken
Если что, я изучал их на протяжении где-то полугода в несколько подходов, пока окончательно понял что там на самом деле происходит, и несколько оно просто. Мозг - как анус, если концепция не влезает - надо разрабатывать.
Snusmumriken
Ну и да, очевидность штука относительная, если у тебя был опыт перегрузки в жаваскрипте, ты бы очень быстро понял как работают мт, и наоборот. После понимания концепции, расширяется горизонт очевидности.
Snusmumriken
Это можно легко заметить по преподавателям в вузе, которым очевидно то что вообще не очевидно студентам ))
Luсky
Тем временем все ждут публикацию игры "Разлом", сделанной на лучшем в мире движке для текстовых игр и супермодуле парсерного ввода.
Snusmumriken
Каеф
Luсky
Разлом - КОНТИГР https://kontigr.com/game/2966/
Luсky
Тащемто уже можно потыкать.
Luсky
Плюс - можно потыкать онлайн.
Luсky
Всё кошерное - .lua
🐅🤦‍♂️
Схема очень простая и очень логичная, а если ты будешь забивать на всё непонятное - у тебя как бы не будет стимула развиваться.
Спорное утверждене. Знать и уметь нужно, но пользоваться не обязательно. Это как на плюсах пишешь когда - на мой взгляд лучше ограничить себя подмножеством языка. Фичи лучше знать все практически, но не в совершенстве. И в каждом проекте выбирать - стиль Си с классами и нет? Исключения или нет? Умные указатели или нет? И так далее.
Шамиль
привет