[Moscow.pm] Lua::API или что-то другое?

Vladimir Timofeev vovkasm на gmail.com
Вс Мар 16 01:19:09 PDT 2014


Мы используем lua для похожих целей, писали свой XS враппер, т.к. в
выражениях на lua нужен был доступ к собственным XS-объектам. Работает
хорошо, настолько хорошо, что пока даже luajit не потребовался.

Перед тем, как внедрить lua, рассматривали альтернативные варианты:
* Чисто-перловый вариант типа Language::Expr или
Math::Expression::Evaluator, но очень медленно для наших нужд
* Safe - отпал сразу, т.к. медленный и синтаксис полученных выражений
странный для тех, кто не знает перл
* Различные библиотеки типа ExprEval или MathPresso - они вероятно
хороши, но мы хотели оставить возможность использовать условия и
потенциально производить какие-то действия, поэтому взяли полноценный
язык.

Кстати, если скорость не очень важна, то возможно именно первый
вариант и окажется подходящим?

2014-03-15 16:56 GMT+04:00 Nick Knutov <mail на knutov.com>:
> В некотором биллинге (он на перле) надо задать функцию для подсчета цены
> в зависимости от некоторых внешних переменных.
>
> Эта функция должна быть простым текстом и редактироваться в админке
> простыми людьми (т.е. делать её например хранимой процедурой в БД не
> получится).
>
> Биллинг её должен запускать в изолированном контексте (редактрируют её
> простые люди, а безопасность важна), без отдельного форка, имея на вход
> массив/хеш с переменными и получать такой же ответ. Работа этой функции
> может быть не очень быстрой, хайлоада нет.
>
> Я не хочу писать очередной микро-псевдно-язык. Вопрос - можно ли для
> этих целей использовать LUA и если это хорошая идея - то как именно?
> Lua::API? Inline::Lua? А может PHP::Interpreter? )
>
> Сущность самой функции - математические вычисления на основе входных
> параметров. Будет лучше, если ей внутри будут доступны всякие
> математические функции для среднего и округлений, но весьма желательно
> иметь возможность запретить всё остальное, особенно трогать файлы и
> делать внешние хттп запросы.
>
> Как еще можно/лучше решить эту задачу?
>
> --
> Best Regards,
> Nick Knutov
> http://knutov.com
> ICQ: 272873706
> Voice: +7-904-84-23-130
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



-- 
Vladimir Timofeev <vovkasm на gmail.com>


Подробная информация о списке рассылки Moscow-pm