Highly Likely
Ну, в общем, как к этому подойти – понял
Highly Likely
Дальше дело техники, спасибо
Snusmumriken
Да, я её читал когда сам парсил пдфки ))
Snusmumriken
А, словари трансляции нужны как раз для юникода. Если там чисто ascii — такие извращения не нужны
Highly Likely
Хм, можно еще распарсить PDF’ку в JSON
Highly Likely
Учитывая однородность оформления списков
Highly Likely
И потом уже сильно упростить себе жизнь
Snusmumriken
Ну это уже зависит от того, что именно тебе выдирать в пдфке.
Highly Likely
Есть некоторые очень большие списки по такому типу:
Highly Likely
И их там на сотни страниц, по много таких блоков на страницу
Highly Likely
Превратить всё в удобоваримый json/xml выглядит резонно
ᴠɪᴋᴀʀɪ ʜᴏɴᴇsᴛ
p = hallo x = "5" y = p:rep(x) --> hallo hallo hallo hallo hallo
ᴠɪᴋᴀʀɪ ʜᴏɴᴇsᴛ
how to make --> hallo1 hallo2 hallo3 hallo4 hallo5
Igor
Хе, прав был @Snusmumriken на счёт этого Евгения
fgntfg
Потому что у Евгения аватар из фотобанка
fgntfg
Одна генерит лица, вторая общается после захода в чат с полчаса
Igor
Есть
fgntfg
идея для стратапа прям
Igor
Скоро так и будет
Тоня
всем привет! у нас в компании возникла идея собрать Митап по tarantool, а там глядишь и до сообщества недалеко. нам это интересно, потому что мы будем использовать tarantool в разработке облачного сервиса и навыков для голосового помощника. хочу узнать, насколько интересна тема tarantool-а сообществу Lua 😊 чтобы не засорять эфир - напишите мне в личку, плиз📌меня зовут Тоня Может, вам было бы интересно: 📌 послушать (или рассказать), как лучше использовать tarantool, в каких узких или широких местах 📌 маленькие истории успеха 📌 может, за tarantool будущее
Snusmumriken
Хмм, посмотри Lua In Moscow. Одним из организаторов/докладчиков/поддержателей работает mail_ru. И про tarantool там тоже говорят, сами разработчики tarantool.
Pavel
привет, а я как раз оттуда (из мейлрушный организаторов)
Pavel
могу и докладчика вам подогнать 🙂
Snusmumriken
О, уже все на месте : )
Alxius
Какие то странные новые слова митап
Snusmumriken
Луёвых митапов проходит довольно много.
Tom
Луёвых митапов проходит довольно много.
Можно подумать, это как-то помогает его популяризации
Snusmumriken
Как ни странно, немного помогает. Что-то становится на слуху, и многие пробуют потому что слышали что-то продолжительное. Это лучше чем пробовать то, о чем вообще никогда не слышал.
Pavel
Привет! Вопрос по Luarocks (на debian): были установлены модули штатным luarocks... Потом он был снесен, пакеты оставлены и поставлена актуальная версия luarocks из исходников. И он не видит пакеты, установленные до него. Пути как-то настраиваются, куда пакеты ставить?
🐅🤦‍♂️
Можно ставить в домашний каталог с ключом --local, можно в произвольный с ключом --tree
🐅🤦‍♂️
Вопрос по наследованию. У меня есть несколько классов контролов - кнопка, слайдер и тд. Есть также некоторый общий код, который может использоваться в каждом из классов. Мне хочется наследовать методы в производных классах. Пока придумал такой вариант. Норм так делать? local Object = {} Object.__index = Object function Object:new(num) local o = { n = num } setmetatable(o, Object) return o end function Object:action() print("Object:action", self.n) end local Button = {} function Button:new(num) local o = { n = num } setmetatable(o, self) self.__index = function(self, key) return Button[key] or Object[key] end return o end function Button:zoom() print("Button:zoom()", self.n) end local o = Object:new(100) o:action() local b = Button:new(10) b:zoom() b:action()
Snusmumriken
Вопрос по наследованию. У меня есть несколько классов контролов - кнопка, слайдер и тд. Есть также некоторый общий код, который может использоваться в каждом из классов. Мне хочется наследовать методы в производных классах. Пока придумал такой вариант. Норм так делать? local Object = {} Object.__index = Object function Object:new(num) local o = { n = num } setmetatable(o, Object) return o end function Object:action() print("Object:action", self.n) end local Button = {} function Button:new(num) local o = { n = num } setmetatable(o, self) self.__index = function(self, key) return Button[key] or Object[key] end return o end function Button:zoom() print("Button:zoom()", self.n) end local o = Object:new(100) o:action() local b = Button:new(10) b:zoom() b:action()
Вместо self.__index = function(...) end — проще повесить метатаблицу с __index на саму Button. Быстрее работать будет, базарю, инфа сотка. Типа local Button = setmetatable({}, {__index = Object}) или даже local Button = setmetatable({}, Object), если методы не перегружены и Object прописан в себе самом как __index. Оно умеет ходить по цепочке индексов.
Snusmumriken
Но в целом, вариант с подобной функцией нормален в случае если нам совсем пофигу на производительность, но хочется какого-нибудь множественного наследования с проверкой родительских методов на абстрактность, и прочей чуши. Правда, саму функцию self.__index стоит вывести наружу как Button:__index, определить её один раз и не перетирать-пересоздавать заново с каждым новым объектом. А то не заjitуется в случае луажыта, и просто сгенерит кучу мусора в случае PUC Lua.
🐅🤦‍♂️
Да, именно что нужна цепочка индексов. Попробовал так Button.__index = setmetatable(Button, { __index = Object }) - то, что нужно! Доходит по-тихоньку
vvzvlad
Думаешь, он тоже хочет вступить?
Ivan
Мне нужно сделать доку на http API. Положить ее на гитхаю чтобы другие могли править. Я знаю что это можно сделать с помощью swagger описания. Но может быть уже есть какая-то другая штука, которая лучше чем swagger и которую стоит использовать для этой задачи?
Anonymous
6
Alxius
5
Tom
4
mva
3
Roma
2 1 Пуск! Привет коммьюнити) Кто-нибудь понимает как заставить lpeg работать с Lua 5.1? Что я уже сделал: - Установил lpeg через luarocks, luarocks создал в своей подпапке 5.3 файл lpeg.so который в дальнейшем удачно рейквайрится и все работает в среде 5.3. - Скачал исходники lpeg с оф. сайта и не понял что с ними делать дальше, как из них получить lpeg.so для lua 5.1. Запустил команду make - и та отвалился с ошибкой что не может найти lua.h. - Скопировал собранный luarocks файл lpeg.so из папки 5.3 в соседнюю паку 5.1, что позволило файлу найтись в среде 5.1, но не позволило ему зареквариться с ошибкой:
Roma
Roma
- попробовал установить две версии luarocks с разными конфигами для 5.1 и 5.3, но за недостатком инструкстажа и понимания что я делаю - что-то пошло не так. Куда копать? )
Roma
Докопался, заработало, спасибо, дольше писал 😅 - Скачал исходники luarocks - Запустил из них ./configure --lua-version=5.1 --versioned-rocks-dir - После чего luarocks стал существовать для 5.1. Был для 5.3 Как все-таки поставить две версии luarocks чтобы и ту и другую можно было юзать - пока хз, но пока и так сойдет, главное он сбилдил lpeg для lua 5.1 и он работает 🙂
Roma
А что делает ключ —tree? Нет возможности посмотреть сейчас
🐅🤦‍♂️
Устанавливает корневой каталог, куда будут ставиться пакеты.
🐅🤦‍♂️
Что значит - отличать от других таблиц?
Oleg
ну свою функцию создать явно проще: насколько я знаю, нет простых способов пропатчить type
Highly Likely
ну свою функцию создать явно проще: насколько я знаю, нет простых способов пропатчить type
local old_type = type type = function(obj) if old_type(obj) == “table” and getmetatable(obj) == mytypemt then return “mytype” else return type(obj) end
Oleg
ну на таком уровне патчить type как-то неприлично, имхо, но да, не подумал о таком)
Highly Likely
ну на таком уровне патчить type как-то неприлично, имхо, но да, не подумал о таком)
Как раз-таки вполне, если ограничить новый тайп рамками своего модуля
Highly Likely
Патчить ВМ — зло
Highly Likely
Только если этот код не предполагается использовать исключительно на своем продакшене
Highly Likely
Да и то нужно десять раз подумать, стоит ли оно того, с учетом того, что новые разрабы об этих патчах не знают и им придется привыкать
Oleg
Как раз-таки вполне, если ограничить новый тайп рамками своего модуля
однако кажется, что объем кода от этого несильно уменьшится, а возможностей отстрелить себе ногу добавится if is_mytype(t) then ... if type(t) == 'mytype' then ...
Highly Likely
Есть, и очень простые
Highly Likely
Хотя да, менять поведение функций стандартной библиотеки идея такая себе
Highly Likely
однако кажется, что объем кода от этого несильно уменьшится, а возможностей отстрелить себе ногу добавится if is_mytype(t) then ... if type(t) == 'mytype' then ...
Но если речь идет о классах, то необходимость в возможности проверить тип в условии — плохой знак отсутствия адекватного полиморфизма
Oleg
Если очень хочется подчеркнуть, что ты вводишь какой-то "тип", можно сделать свою глобальную функцию, украв название из другого языка) Например, typeof)
Highly Likely
Не перестаю удивляться тоталитаризму в англоязычном чатике Луа
Highly Likely
Человека кикнули с чата за то, что он не согласился с админом насчет того, что LuaJIT – не Lua :)
Snusmumriken
Ну я тож спорил, но оказался менее упёртый чем данный конкретный спорщик, поэтому меня не кикнули ))
Highly Likely
Ну Балмер там несколько упорот
Snusmumriken
Иногда, стоит взять, подумать, и сказать: "хорошо, ты прав а я неправ". Типо, гибкость и прочая конформность. Ландон тоже упёрт, но он не админ ))
Highly Likely
Вот Marco Trosi замечательный мужик :)
Snusmumriken
Если собираешься всю дорогу пробивать лбом свою истину — вперёд и с песней.
Snusmumriken
Но вот только лобик жалко, он один и замене не подлежит ))
Igor
Человека кикнули с чата за то, что он не согласился с админом насчет того, что LuaJIT – не Lua :)
Ха, какая интересная позиция. Уж очень хотелось бы увидеть её аргументацию. Что-то мне подсказывает, что адекватных аргументов с его стороны не поступило, но читать кучку текста, которая там набежала и выискивать именно этот спор слегка лень, так что чем ему не угодили житы для меня останется загадкой.
Highly Likely
Well, imho, LiaJIT is a piece of crap software. Ymmv
Highly Likely
Maybe not crap software. But it is not Lua.
Highly Likely
LuaJIT does not implement Lua. It is not Lua. It is something different.