Pull to refresh

Comments 12

Круто!
Но хотелось бы подробностей о «магическом превращении в исполняемый код»:
— что выполняется на сервере
— что выполняется на клиенте
… и как это работает для разных платформ (JS/JVM).
Привет! Спасибо большое :)
На самом деле, предполагалось, что данный пост будет ознакомительным, чтобы пользователи узнали о библиотеке и попробовали её. Но ты прав, мы обсудим, может, действительно, техническая сторона Kotlin Playground заслуживает отдельного внимания, думаю, это может быть интересно не только тебе, спасибо за наводку.

Если коротко, то мы используем CodeMirror в качестве view. А для компиляции кода используем тот же сервер, что и try.kotl.in, просто шлем запросы на компиляцию.
Я так понимаю, этот Playground работает через сервер, даже если таргетится в JS. А есть ли планы по возможности порта компилятора на JS-платформу также.
Слушай, идеи такие были, но тогда нужно будет тащить отдельный и большой кусок кода, который позволит компилировать Kotlin->JS на клиенте, это порядком лишних 10М, может все-таки это оверкилл? Мы пока думаем над этим, но вопрос насущный :)

10M один раз и последующая мгновенная компиляция — конечно стоит. Можно добавить оба варианта — для пользователей с ограниченным трафиком.


Правда тут остаётся ещё вопрос автодополнения.
Решить этот и сопутствующие вопросы — и будет онлайн редактор :)

А можно ли как-то взаимодействовать с кодом, введённым пользователем, чтобы, например, использовать это в качестве пользовательских скриптовых сценариев?


Ну например, есть веб-админка, и хочется чтобы через неё налету что-то сконфигурировать через описание на котлине.

Привет, можно все-таки сказывается 6-дневная рабочая неделя, но я не очень понял вопроса :( Можешь чуть подробней описать?
Попробую придумать пример для наглядности.
Допустим у меня есть веб-сайт, где пользователь должен задать свой пароль.
Обычно пароли должны соответствовать каким-то требованиям: минимальная длина, наличие каких-то символов и т.д. Если пользователь придумал неправильный пароль, то сайт должен отказать с сообщением что не так.

Разумеется, код проверки пароля несложно запрограммировать внутри системы, но предположим, что хочется дать возможность администратору сайта самому задавать требования к пользовательским паролям. Один из вариантов решений: сделать в адмике сайта формочку, где администратор на котлине может написать такую функцию:
fun checkPassword(password: String, locale: Locale): CheckPasswordResult

Эта функция проверяет пароль, а в случае неудачи формирует сообщение об ошибке на языке пользователя.

Можно конечно сказать: зачем так делать, ведь можно же описать требования для пароля регуляркой, шаблонами, etc. Но в конце концов это же всего лишь простой пример для иллюстрации, в жизни бывают и более сложные случаи конфигурации, которые просто так регуляркой не опишешь, нужен скрипт.

Что я имею в виду под взаимодействием с кодом?
А то, что код, который вводит админ, это не просто замкнутый сам на себя пример, который отработал, напечатал рядом результат и на этом все, нет. В пользовательский скрипт надо передать из системы контекст (в нашем примере это сигнатура требуемой функции и выбранная на сайте локаль пользователя), некое api, через которое скрипт может получать информацию о системе или управлять ею.

Котлин на JVM умеет в скрипты точно (через javax.script), так что можно. Что-то похожее делает YouTrack, кажется.

Пытался, давеча, написать плагин под IDEA — споткнулся об роскомнадзор (https://s3-eu-west-1.amazonaws.com/intellij-snapshots/com/jetbrains/intellij/idea/ideaIC/LATEST-EAP-SNAPSHOT/maven-metadata.xml). Ну вдруг не знаете.
Круто!

Вслед за fRoStBiT реквестирую подробности.
  1. Есть ли шансы, что появится на stackoverflow, а не только на medium?
  2. Если в некий момент для JVM появится 0-day exploit, то ваши сервера могут быть атакованы через remote code execution, верно?
  3. Велика ли нагрузка на сервера?
  4. Как сделано автодополнение? Запрос на сервер на каждый автокомплит?
Привет! Спасибо:)
Мы бы очень хотели, чтобы и на stackoverflow появился, думали об этом. Могу точно сказать, что мы попытаемся, но обещать ничего не буду.
Ну, как говорится, ломать не строить. Стоит учитывать, что мы не весь код позволяем компилировать.
Да, с нагрузкой там все должно быть хорошо.
Про автодополнение: да, пока что так.
Sign up to leave a comment.