Alex
Igor
ля жуки какие... Спасибо за информацию
Я точно не знаю, как в этом офисе что работает, но это обычная практика, когда при встраивании из стандартной библиотеки Lua (да и любого другого вспомогательного языка) режут опасные функции.
Igor
Скорее всего и os.execute, и io.popen, и io.open не функционируют. А последняя если и функционирует то только на виртуальных файлах.
Alex
Koto
Highly Likely
Highly Likely
Не то, чтобы у меня в этом месте есть сильное мнение, но, кажется, ниша тайпскрипта мне в целом понятна
Highly Likely
Igor
А это, tbh, вообще не распарсил
Это я к тому, что в скриптовых языках типизация - это бесполезный оверхед, особенно если он написан поверх этого самого скриптового языка.
Igor
Highly Likely
Igor
Как минимум
Igor
Если человек не способен управиться с динамической типизацией в скриптовом языке, то вряд ли ему стоит вообще соваться в программирование.
Highly Likely
Highly Likely
Если человек не способен управиться с динамической типизацией в скриптовом языке, то вряд ли ему стоит вообще соваться в программирование.
Так себе аргумент если честно. Так можно сказать, мол, «если человек не способен писать бизнес-логику на ассемблере, то ему…» и далее по тексту.
Я, например, по своему мнению, способен. Еще я способен в нужных местах ассерты вида assert(type(variable) == “number”) писать.
Но код становится грязным, местами нечитаемым и вообще плохо поддерживаемым, приходится городить различные костыли и надстройки.
Это просто факт. Ни хорошо, ни плохо.
Koto
программеры "старой закалки" обучены самостоятельно выбирать язык и фреймворк. А "новые" программисты уже без это функции в комплекте - будешь писать на том, на чём менеджер сказал. Тот же реакт - никто бы не выбрал как фреймворк, но его принесли и поставили на пьедестал. Как говорит Tsoding - javascript has got a hype oriented community (хайп-ориентированное коммьюнити). Едят всё, что "популярно", "много звёздочек", "спрашивают при трудоустройстве".. И мы тут немного оффтопик как бы, закругляемся?
Igor
Так себе аргумент если честно. Так можно сказать, мол, «если человек не способен писать бизнес-логику на ассемблере, то ему…» и далее по тексту.
Я, например, по своему мнению, способен. Еще я способен в нужных местах ассерты вида assert(type(variable) == “number”) писать.
Но код становится грязным, местами нечитаемым и вообще плохо поддерживаемым, приходится городить различные костыли и надстройки.
Это просто факт. Ни хорошо, ни плохо.
Не ну всё должно быть в меру, бизнес логика на чистом скриптовом - ещё куда ни шло, одобряется, но с зачем-то прикрученной типизацией... Может кому-то так и лучше, но я в этом смысла вообще не вижу.
Highly Likely
Highly Likely
Igor
usernameak
у меня там где я работаю 230k sloc на луа
usernameak
и ещё порядка 300к на плюсах
usernameak
(кстати, это большая кодбаза или средняя?)
Highly Likely
Ну тогда я не очень понимаю, в чем претензия к людям, которые хотят статическую типизацию в бизнес-логике :)
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
Я, например, не против того, чтобы у скриптового языка была статическая типизация. Никто не запрещает скриптовому языку статически типизироваться, например
Highly Likely
Igor
Highly Likely
Карочи, это я ворчу на ворчание про то, что раньше трава была зеленее и погроммисты бородатее
usernameak
Highly Likely
Я бы сказал так: в рамках статически типизированных языков писать чистый код бывает проще :)
SapDragon
Доброй ночи, хотел бы задать вопрос по Sol, при создании UserType как указать перегрузку операторов, или они сами подтягиваются?
Snusmumriken
SapDragon
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
Igor
Ну и любой луарокс пакет можно превратить в нелуарокс, если что. Просто собрав его ручками.
Слава
Igor
Я не умею. Это сложно?
в любом проекте, куда ни ткни есть ссылка на исходники, которые можно собрать вручную и использовать локально без установки через luarocks.
Snusmumriken
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 к нужной функции. В общем, либа занимает мой личный мастхэв!
Igor
А у меня тут на днях случилось счастье: нечаянно собрался Alien, за что я таки почитал его доку, и, должен сказать, он вполне себе прекрасен. Можно, не зная C, вполне себе работать с, по сути, FFI на высоком уровне. Можно свои юзердаты создавать и врапить к ним метатаблицы. Можно дергать CSTD, правда придется ассоциировать types к нужной функции. В общем, либа занимает мой личный мастхэв!
Ровно то же самое делает и LuaJIT FFI
Денис
Денис
Тут я уже даже придумал что-то вроде Lua2EXE
Snusmumriken
Ещё можно написать такой же простейший интерпретатор, который сразу цепляет конкретный lua-файл в той же директории что и интерпретатор.
Грубо говоря, плюхаешь рядом файл main.lua, и он его запускает. Заодно никаких путей до библиотек не нужно писать, и редактируешь без перекомпиляций.
Snusmumriken
Ну и докучи, смело делается bat-файл рядом с любым интерпретатором (puc или luajit), и содержимым вроде:
"lua5.1.exe main.lua"
Null
Null
который это всё делает
Null
(и который, кстати, даже с luajit'ом можно использовать)
Null
правда, там всё немного не так
Null
там берётся небольшая c'шная болванка, линкуется с liblua/libluajit и туда бандлится указанный lua-файл
Null
и получается нативный бинарник под нужную ОС
Snusmumriken
Собственно первый способ это оно и есть. Сишный код интерпретатора == болванка куда вставляется луёвая строчка подаётся на исполнение
Alexander
Не у кого случаем нет функции лево право? Чтобы проверить допустим курсор влево или вправо двигается?
Null
Alexander
ЩТА
Нужна функция которая возвращает -1 если курсор влево двигается и 1 если вправо
Null
Alexander
Null