All streams
Search
Write a publication
Pull to refresh
14
0
Send message
Уже делаем — github.com/code-orchestra/colt-idea-plugin-js
Ждите через две недели.
Завел задачу.
можно d3 превращать в статическую картику. и хранить такие JS-ки со статьями
для редактирования JS добавить Ace
да, прикльно выглядит. два окна браузера, слева и справа. синхронизация скрола. маркап. очень верно!
Мысль верная. Но мы не умеем писать плагины. Сначала быстро сделаем то что можем, а потом будем добавлять расширения к браузерам.
Схемы рисовать? Похоже тут нужен какой внешний JS тулл… Может есть что на примете?
Ок, спасибо за идеи. Ну как только станет превращаться — сразу бросим это дело :) Обещаем :)
Пока фунционал выглядит как полезный и быстро реализуемый.
А Mono Develop помоему у него «из коробки». Могу ошибаться. Нужно смотреть.
Автор пишет что работает над расширением для Sublime Text.
то есть то что есть интерпретатор особо ничего не дает.
эвал все же не совсем livecoding.
в JS есть eval, но нам потребовалось потратить большие усилия чтобы сделать livecoding для JS.
до этого мы делали для AS и я бы не сказал что JS livecoding было сделать проще.
Вы смотрели раздел про JavaScript. Так же есть поддержка ActionScript. Он компилируется в байткод. Идея очень простая. Тело каждого метода трансформируется в один класс. Вызов в реальном методе, из которого реализацию «выдрали» переадресует вызов этому классу. Такой вот получается глобальный реестр методов. Классы заменяем, подгружаем. Подгрузка классов уже реализуется на уровне класслоадера. Главная загвоздка и трудозатраты в том, чтобы это правильно «выдрать» — трансформировать код. Тут важно написать правильные AST трасформации.

image

Плюс мы рассылаем события о обновлении, которые позволяют инстансам классов реагировать на изменения — например, перерисовавать свою графику и так далее.

По поводу полей — зависит от конкретного языка. Например, в AS мы все обращения к полям заменяли на вызовы методов — делали специальные getters. Так же меняли видимость мемберов, но главная заморочка была с protected и super вызовами.

Кстати в C++ уже кстати есть реализации ливкодинга. Не уверен что на тех же принципах строится, но есть.

Записали :)
Но все же хочется делать что-то для массового пользователя :)
Мы уже имеем опыт создания ливкодинга для компилируемых языков. При каждом сохранении кода, мы определяем где были изменения, и выделяем код в отдельные классы, которые компилируем в отдельный артефакт. Который подгружаем в работающее приложение. Все зависит от того как работает конкретный класслоадер.
А, я понял. То есть некоторые события изменения кода специальным образом обрабатываются для определенных библиотек. То есть вместо того чтобы самому это обрабатывать, за нас это уже сделано. Действительно здорово. Спасибо.
> в поддержке библиотек и фреймворков
А можно поподробнее? В чем поддержка? У них свои библиотеки для работы в стиле livecoding или же имелось ввиду, что для популярных библиотек у них поддержка? Необходим какой-то особый фунционал для библиотек?
Вот и ответ. Насчет переплюнуть.
Конечно же про JRebel мы знаем.
Мы не хотим переплюнуть.
Понятно что со своей VM у них более широкие возможности.
Зато мы сможем запустить почти везде.
Он работает на Android?
Да, конечно же!
Думаю бету сможем за месяц-полтора.
Обязательно напишем. Осталось доделать плагин. Плагин к IDEA, Sublime или аннотации?

Information

Rating
Does not participate
Registered
Activity