Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Генерация JavaScript в зависимости от прав пользователя (https://javascript.ru/forum/server/3428-generaciya-javascript-v-zavisimosti-ot-prav-polzovatelya.html)

Артем Шалхаков 21.04.2009 08:38

2 iDeadRat
> так и не нашёл про DSEC пока ничего...может расшифруете

Domain-specific embedded compiler. То есть миниатюрный компилятор, встроенный в основной язык программирования. На входе -- AST, на выходе -- например, код в текстовом виде.

Плохо, что в той же Java это будет довольно сложно. Зато в OCaml/Haskell пишется на ура, пример:

http://hpaste.org/fastcgi/hpaste.fcg...?id=4006#a4006

В примере конструируется AST, которое затем можно обрабатывать как угодно (это не показано). Вполне можно выделить небольшое подмножество JS, которое интересует.

Вот еще примеры:
- Common Lisp (http://web.telia.com/~u43518104/articles/lispweb.htm)
- ParenScript (http://blogs.bl0rg.net/netzstaub/200...4/parenscript/)
(Идея хорошо расширяется до внедрения HTML и CSS в Lisp :))

2 x-yuri

Ну просто ощущение такое. Когда много boilerplate (тем более сгенерированного), то это настроживает. :) Плюс размытая семантика JS, поверх такой же нечеткой семантики Java, -- в общем, не очень, хотя люди пишут как-то.

x-yuri 21.04.2009 16:33

Артем Шалхаков, меня настораживает дублирование кода, которое сейчас имеет место, как я понял. И генерация кода - один из способов решения проблемы. Не понимаю, почему ты считаешь, что кодоген - это хрупко. Может я не знаю, что такое хрупкость :-? Хотя вроде знаю: "Неустойчивость, хрупкость (fragile) – система ломается в непредвиденных местах, хотя изменения, которые были проведены до этого, сломанные компоненты явно не затрагивали."

Артем Шалхаков 22.04.2009 07:42

x-yuri, это я о том, что тут метапрограммирование может быть overkill, потому что можно просто-напросто делать асинхронные запросы к серверу, который и будет решать, что и кому отдавать. Экономить на запросах тут похоже на размен копеек на копейки, хотя это знает только OP.

Ну и на правах red herring:

В посте OP видно зависимость результата от последовательности действий на стороне и клиента, и сервера.

В общем случае, долго отлаживать потом придется (причем и на стороне сервера, и на стороне клиента), и что еще хуже, при всяком изменении шаблона придется все перепроверять.

Если все-таки хочется именно так, то надо решительно забить на подстановку строк (типа "наш собственный макропроцессор Си"), и внедрить JS в основной язык. Можно будет хоть какие-то проверки переложить на компилятор.

x-yuri 22.04.2009 17:43

Цитата:

это я о том, что тут метапрограммирование может быть overkill
т.е. ненужное усложнение?
А по поводу асинхронных запросов не подумал, действительно зачем на клиенте знать о правах, если сервер может просто отклонять действия/не выдавать затребованную информацию

Цитата:

В посте OP видно зависимость результата от последовательности действий на стороне и клиента, и сервера.
я не заметил, можешь показать где или почему так решил?

Артем Шалхаков 27.04.2009 15:42

2 x-yuri

> я не заметил, можешь показать где или почему так решил?

Императивный кодец, отборрная вермишель. Хорошо, когда работает, а поставишь где-нибудь что-нибудь не то, и сиди отлаживай, причем сразу на двух уровнях. И тестировать тоже на двух уровнях, и учитывать жуткую динамичность JS. В общем, не айс.

ЗЫ сорри за поздний ответ.


Часовой пояс GMT +3, время: 02:59.