Igor
ля жуки какие... Спасибо за информацию
Я точно не знаю, как в этом офисе что работает, но это обычная практика, когда при встраивании из стандартной библиотеки Lua (да и любого другого вспомогательного языка) режут опасные функции.
Igor
Скорее всего и os.execute, и io.popen, и io.open не функционируют. А последняя если и функционирует то только на виртуальных файлах.
Alex
Скорее всего и os.execute, и io.popen, и io.open не функционируют. А последняя если и функционирует то только на виртуальных файлах.
Плохо конечно, тогда вообще не понятно как консолидировать информацию из разных файлов...
Igor
Плохо конечно, тогда вообще не понятно как консолидировать информацию из разных файлов...
Может его не полностью обрезали, а какой-то специфичной папкой ограничили, надо документацию по офису этому читать и скриптингу под него. Может он вообще какое-то своё IO API предоставляет.
Igor
жирный плюс, но они уже "купили" тайпскрипт. уже думают что это будущее
Тайпскрипт - ненужное ненужно. Думаю в ближайшие лет 5 это до всех дойдёт (по крайней мере я на это надеюсь)...
Highly Likely
Не то, чтобы у меня в этом месте есть сильное мнение, но, кажется, ниша тайпскрипта мне в целом понятна
Igor
А это, tbh, вообще не распарсил
Это я к тому, что в скриптовых языках типизация - это бесполезный оверхед, особенно если он написан поверх этого самого скриптового языка.
Igor
Бесполезный потому что…?
По причине лишних операций
Igor
Как минимум
Koto
Ну а я до сих пор не понял, зачем он существует и вряд ли пойму
существует как инструмент менеджмента разработчиков за счёт уменьшения их продуктивности
Highly Likely
Ну а я до сих пор не понял, зачем он существует и вряд ли пойму
Есть ниша написания бизнес-логики. В том числе хайлоадной. Когда у тебя ХТТП/аппликейшн-сервер на каких-нибудь плюсах, и тебе логику нужно бы вынести в отдельную вселенную
Igor
Если человек не способен управиться с динамической типизацией в скриптовом языке, то вряд ли ему стоит вообще соваться в программирование.
Highly Likely
Если человек не способен управиться с динамической типизацией в скриптовом языке, то вряд ли ему стоит вообще соваться в программирование.
Так себе аргумент если честно. Так можно сказать, мол, «если человек не способен писать бизнес-логику на ассемблере, то ему…» и далее по тексту. Я, например, по своему мнению, способен. Еще я способен в нужных местах ассерты вида assert(type(variable) == “number”) писать. Но код становится грязным, местами нечитаемым и вообще плохо поддерживаемым, приходится городить различные костыли и надстройки. Это просто факт. Ни хорошо, ни плохо.
Koto
программеры "старой закалки" обучены самостоятельно выбирать язык и фреймворк. А "новые" программисты уже без это функции в комплекте - будешь писать на том, на чём менеджер сказал. Тот же реакт - никто бы не выбрал как фреймворк, но его принесли и поставили на пьедестал. Как говорит Tsoding - javascript has got a hype oriented community (хайп-ориентированное коммьюнити). Едят всё, что "популярно", "много звёздочек", "спрашивают при трудоустройстве".. И мы тут немного оффтопик как бы, закругляемся?
usernameak
у меня там где я работаю 230k sloc на луа
usernameak
и ещё порядка 300к на плюсах
usernameak
(кстати, это большая кодбаза или средняя?)
Highly Likely
Ну тогда я не очень понимаю, в чем претензия к людям, которые хотят статическую типизацию в бизнес-логике :)
Highly Likely
(кстати, это большая кодбаза или средняя?)
Для Lua я бы, пожалуй, сказал что большая
Highly Likely
У меня проект примерно сравнимый, но чуток, наверное, поменее
Koto
Тоже какие-то непонятные деления. Раньше инструментов было мало, выбирали из чего придется (кто в здравом уме выберет сейчас ++ для не хардкорной бизнес-логики?). Сейчас выбирается из того, что быстрее & дешевле
Ну вот по-простому, совсем по-простому - когда мы "выбирали" JQuery как фреймворк - почему? ну эффективно, многим даже оно позволяло не очень зная сам язык - уже получать какое-никакое ПО. Разве так мы реакт "выбирали"? ну нет уже, там сначало надо было поверить, что современная веб-разработка это помойка, а всё _оттого_, что нету "единого источника данных" (a.k.a. single source of truth), нету _стейта_ консолидированного, а он разбросан по коду... вот так и купили - хотя реакт эту проблему только поднял, но так и не решил - на него редукс должен решать, как потом оказалось.... и также все почему-то забыли, что из реально интерактивного языка - мы получим долбаный webpack, где при любом чихе происходит пересборка _всего_ проекта. Если не хочешь чтобы _всего_ - дели на модули как сам умеешь. По факту - никто не делает - 99% проектов - монолиты, запускающиеся через webpack-dev-server start
Highly Likely
Ну вот по-простому, совсем по-простому - когда мы "выбирали" JQuery как фреймворк - почему? ну эффективно, многим даже оно позволяло не очень зная сам язык - уже получать какое-никакое ПО. Разве так мы реакт "выбирали"? ну нет уже, там сначало надо было поверить, что современная веб-разработка это помойка, а всё _оттого_, что нету "единого источника данных" (a.k.a. single source of truth), нету _стейта_ консолидированного, а он разбросан по коду... вот так и купили - хотя реакт эту проблему только поднял, но так и не решил - на него редукс должен решать, как потом оказалось.... и также все почему-то забыли, что из реально интерактивного языка - мы получим долбаный webpack, где при любом чихе происходит пересборка _всего_ проекта. Если не хочешь чтобы _всего_ - дели на модули как сам умеешь. По факту - никто не делает - 99% проектов - монолиты, запускающиеся через webpack-dev-server start
А еще, иногда приходится выбирать те инструменты, на которые можно хоть кого-нибудь нанять
Highly Likely
Можно, конечно, писать на COBOL'е, но есть нюанс
Highly Likely
Ну карочи. Я про то, что делить инструменты на хорошие/плохие -- странно. Из более-менее популярных, я бы сказал, что откровенно плохих фреймворков/языков нет. Если технология используется в продакшене, приносит деньги и работает -- она уже не плохая
Highly Likely
Я, например, не против того, чтобы у скриптового языка была статическая типизация. Никто не запрещает скриптовому языку статически типизироваться, например
usernameak
Для Lua я бы, пожалуй, сказал что большая
ну конкретно то над чем я работаю - это модуль на 200к строк на чистых плюсах :) так что в луа я даже особо не смотрел
Highly Likely
Карочи, это я ворчу на ворчание про то, что раньше трава была зеленее и погроммисты бородатее
usernameak
Я бы помер уде давно
я пока живой :)
Highly Likely
Я бы сказал так: в рамках статически типизированных языков писать чистый код бывает проще :)
SapDragon
Доброй ночи, хотел бы задать вопрос по Sol, при создании UserType как указать перегрузку операторов, или они сами подтягиваются?
wennerryle #nowar #htswasl?
Тайпскрипт - ненужное ненужно. Думаю в ближайшие лет 5 это до всех дойдёт (по крайней мере я на это надеюсь)...
бля, ну как тайпскриптизер говорю, что тайпскрипт даёт "уверенность" которая не всегда оправдана. целью тайпскрипта не было покрыть все типами (написано на офф сайте), и это самый большой недостаток тайпскрипта. Ниша тайпскрипта там, где нужна максимальная надёжность, не всегда оправдана. и намного лучше покрыть все тестами. тайпскрипт скорее про то, как писать "классный" код на неклассном языке(т.е тем кто привык к модификаторам доступа и т.п) про оверхед совсем не согласен, т.к там зависит все напрямую от конфигурации webpack'a, и уже сейчас такое случается что на ноде используют вебпак потому-что сжатие кода позволяет экономить оперативку
Snusmumriken
Не ну всё должно быть в меру, бизнес логика на чистом скриптовом - ещё куда ни шло, одобряется, но с зачем-то прикрученной типизацией... Может кому-то так и лучше, но я в этом смысла вообще не вижу.
Технически, прекол реакта в том, что он может раскручивать операции в обратном порядке. Допустим, ты где-то получил какое-то значение, и можешь практически в любой момент конкретно определить каким образом это значение получилось именно таким, стактрейс наоборот. Собственно, это и есть его главная фишка, почему на него просто катать тесты и почему его используется во всяких бизнес-фигизнесах, где несанкционированная изменяемость стейта топит проект на дно океана говнокода. А тут — куча драконовских ограничений и принудительный бойлерплейт — нет, ты не можешь просто взять и объявить даже переменную, тебе надо для неё мутить контроллер, и просто так ты типа не заманкипатчишь и десять раз подумаешь, насколько оно вообще нужно ибо мороки с этим будет куча (дисциплина через лень).
Igor
Мусор, созданный вне LuaJIT никогда не будет им очищен. О нём нужно заботиться вручную.
Igor
(Под "вне" я подразумеваю "без использования аллокаторов от LuaJIT")
Igor
Ну а если вызывать ffi.load несколько раз, то тебе постоянно будет возвращаться одна и та же библиотека, система тебе тупо не даст её несколько раз подключить. Разве что разными сами указатели на библиотеку будут, ибо LuaJIT их не запоминает.
Igor
А, ну и при сборке мусора, если на юзердату библиотеки ничего не ссылается больше, сборщик её [библиотеку] выгрузит.
Слава
Привет! Подскажите, плиз, какую-нибудь библиотеку (или функцию), чтобы кириллический текст конвертировать в юникод и обратно. Только без луарокс, ок? Например, чтобы из "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442" получилось "Документ", и наоборот. Спасибо.
Igor
Привет! Подскажите, плиз, какую-нибудь библиотеку (или функцию), чтобы кириллический текст конвертировать в юникод и обратно. Только без луарокс, ок? Например, чтобы из "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442" получилось "Документ", и наоборот. Спасибо.
Не очень понял, что тебе именно нужно, но если имеется ввиду конвертирование строки в юникод последовательности и обратно, то можешь использовать эту либу https://github.com/starwing/luautf8
Igor
Ну и любой луарокс пакет можно превратить в нелуарокс, если что. Просто собрав его ручками.
Igor
Я не умею. Это сложно?
в любом проекте, куда ни ткни есть ссылка на исходники, которые можно собрать вручную и использовать локально без установки через luarocks.
Snusmumriken
И заодно глянуть например тут в конец страницы: https://unicode-table.com/en/0414/ Тут символ "Д", находящийся на позиции U+0414 — кодируется сразу как: D0 94 в utf8 04 14 в utf16 00 00 04 14 в utf32
Денис
А у меня тут на днях случилось счастье: нечаянно собрался Alien, за что я таки почитал его доку, и, должен сказать, он вполне себе прекрасен. Можно, не зная C, вполне себе работать с, по сути, FFI на высоком уровне. Можно свои юзердаты создавать и врапить к ним метатаблицы. Можно дергать CSTD, правда придется ассоциировать types к нужной функции. В общем, либа занимает мой личный мастхэв!
Денис
Ровно то же самое делает и LuaJIT FFI
Так я же не в жите сижу 😃
Igor
Так я же не в жите сижу 😃
А можно было бы и в нём))
Денис
А можно было бы и в нём))
Не, там 5.1.1, да еще и песочницы свои как сыпать?
Денис
Тут я уже даже придумал что-то вроде Lua2EXE
Snusmumriken
Тут я уже даже придумал что-то вроде Lua2EXE
Простейший lua2exe это сишный код интерпретатора, куда в char array вставляется луёвая строчка кода на исполнение, и компилируется.
Snusmumriken
Ещё можно написать такой же простейший интерпретатор, который сразу цепляет конкретный lua-файл в той же директории что и интерпретатор. Грубо говоря, плюхаешь рядом файл main.lua, и он его запускает. Заодно никаких путей до библиотек не нужно писать, и редактируешь без перекомпиляций.
Snusmumriken
Ну и докучи, смело делается bat-файл рядом с любым интерпретатором (puc или luajit), и содержимым вроде: "lua5.1.exe main.lua"
Null
который это всё делает
Null
(и который, кстати, даже с luajit'ом можно использовать)
Null
правда, там всё немного не так
Null
там берётся небольшая c'шная болванка, линкуется с liblua/libluajit и туда бандлится указанный lua-файл
Null
и получается нативный бинарник под нужную ОС
Snusmumriken
Собственно первый способ это оно и есть. Сишный код интерпретатора == болванка куда вставляется луёвая строчка подаётся на исполнение
Alexander
Не у кого случаем нет функции лево право? Чтобы проверить допустим курсор влево или вправо двигается?
Alexander
ЩТА
Нужна функция которая возвращает -1 если курсор влево двигается и 1 если вправо
Null
Мыши
где?