Возможно ли для Perl 6 работать онлайн? - PullRequest
0 голосов
/ 23 сентября 2018

Это, вероятно, наивный и даже недействительный вопрос ...

Я создал программу Perl 6 (и надеюсь создать пару других), которая анализирует локальные данныес учетом некоторых пользовательских параметров.Несколько моих коллег / коллег нуждаются в выходных данных программы на регулярной основе, поэтому они присылают мне параметры, я запускаю программу и отправляю им обратно выходные данные.
Поскольку весь процесс не очень удобен, я думаю о том, что можно сделать, чтобы всем было легче.Вот варианты, и ни один из них не кажется идеальным.

  • Установите Perl 6 на компьютеры моих коллег и научите их, как им пользоваться.Большинство из них не имеют никакого опыта программирования, данные и сама программа должны постоянно обновляться на всех компьютерах, программа должна работать одинаково на разных системах и т. Д., Так что это, вероятно, будет ухудшать, а не улучшать.
  • Создайте онлайн-версию программы (используя JS и т. Д.), Чтобы мои коллеги могли ввести параметры и получить результат в окне браузера.Это гораздо проще для пользователей (и я уже сделал это для более простой программы), но я бы предпочел использовать Perl 6 ...

Так, мой вопрос: можно ли как-то заставить Perl 6 работать онлайн?Может ли это работать в браузере?Или есть другое решение?

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Установите Perl 6 на компьютеры моих коллег ... это, предположительно, ухудшит, а не улучшит.

Учитывая ваши данные для ... Я согласен.

Создайте [a] вариант программы (используя JS и т. Д.), Чтобы мои коллеги могли ввести параметры и получить результат в окне браузера.

Этоестественный выбор imo.

(Обратите внимание, что я отказался от «онлайн» в цитировании ваших слов. Если ваши коллеги могут видеть ваш компьютер через внутреннюю сеть, то вы все равно можете сделать JS / веб-решениено сделайте то, что не является общедоступным - не в сети. По сути, используйте то же решение, но используйте несколько иное подключение к серверу.)

Альтернативой может быть принятие структурированной электронной почты.Подробнее об этом в соответствующем месте.

Я бы предпочел использовать Perl 6 ...

Самый распространенный способ использования кода на языке, отличном от JS, ввеб-решение заключается в том, чтобы по-прежнему использовать html и т. д., довольно часто, включая JS, в «front-end» решения, а затем включать вызовы кода, выполняющегося на сервере, в качестве «back-end».

(Другой способ - это перейти на JS. Теоретически вы можете перенести Perl 6 на JS через экспериментальный сервер nqp . Я думаю, что это захватывающая разработка, но я подозреваю, что она будет медленной и ограниченной в ближайшем будущем.термин.)

(И последнее замечание для этого раздела. Если вместо этого вы в конечном итоге переводите Perl 6 на решение JS, потому что не хотите учиться или иметь дело с наличием сервера в миксе, то выЯ буду использовать Perl 6 в качестве языка прототипирования. Это может быть законным способом использования языка, но в остальной части этого ответа предполагается, что вы представите сервер.)

Представление и управление сервером

серверэто компьютер или программное обеспечение, которое надежно остается доступным и запускает программное обеспечение по требованию из-за запросов от «клиентов» (обычно других компьютеров).

Это звучит просто, и в некоторых отношениях это так, но в других отношениях это не так.«т.Что если кто-то выключит питание?Или не оплачивает счет в интернете?Или программное обеспечение приводит к утечке памяти, что периодически приводит к сбою системы?Или хакер атакует и входит?

Если только те, кто использует службу, уже могут видеть серверный компьютер через локальную сеть, и часто даже тогда современный подход к введению сервера врешение состоит в том, чтобы купить пакет онлайн-сервера (обычно основанный на виртуализация ).(Подумайте о нескольких долларах в месяц и выше.) При условии наличия достойного поставщика услуг это фактически гарантирует, что это будет хорошо работающий сервер, который обычно работает, работает, подключен и обслуживает, если не взломан или иным образом не сломан, ичто вы будете своевременно проинформированы, если последнее произойдет.Альтернатива «нулевой стоимости» - сделать ваш рабочий стол тоже сервером.Это означает, что вы несете ответственность за то, чтобы ваш рабочий стол работал и работал и был подключен.

Современный подход к управлению сервером заключается в использовании Docker или аналогичных поверхсервер.Это фактически гарантирует, что вы можете почти мгновенно решить проблему с исправно работающим сервером, если он взломан или иным образом сломан.Это также позволяет легко иметь локальный сервер, который вы можете разрабатывать и тестировать на котором он будет идентичен развернутому производственному серверу.Лучше всего, возможно, установка Docker на вашем рабочем столе или использование его на купленном сервере, а затем добавление в уже подготовленный файл Docker означает, что вы можете перейти от того, не использовав сервер, к работающему серверу за то время, которое требуется вам для нажатия.несколько кнопок.

Существует целый ряд предложений, в которых используются как виртуализация ОС, так и технологии, аналогичные Docker или Docker, для создания комбинаций с оплатой за использование, когда вы платите только за время использования сервера, а не за его доступность 24 /.7.Есть много входов и выходов.Некоторые не поддерживают Perl 6. Насколько мне известно, Amazon AWS и Google Cloud поддерживают оплату за использование и позволяют использовать любой язык программирования.

Создание веб-приложения

Последние несколько разделов этого ответа посвящены тому, как использовать Perl 6, когда у вас есть сервер, начиная с наименее сложного.Перейдите к последнему разделу, посвященному Cro, если вы хотите перейти прямо к решению, которое я рекомендую, если вы идете по Интернету.

Ответчик по электронной почте

Особенно, если вы не хотитепотратить деньги на отдельный сервер, чтобы немного упростить задачу, вы могли бы попросить своих коллег отправить структурированное электронное письмо на адрес электронной почты, который приходит на почтовый клиент, который вы используете на своем рабочем столе, который отвечает запуском программы Perl 6 на вашем компьютере.рабочего стола, а затем отправляет их по электронной почте, когда будут получены результаты. Если вы заинтересованы в этом решении, пожалуйста, опубликуйте еще одно SO, спрашивающее об этом.

В остальных разделах предполагается, что вместо этого используется веб-решение.

CGI и свернутый вручную код

Вызов кода, запущенного на сервере с веб-страницы, тривиален.

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

Если вы хотите собрать параметры, то вы просто пишете форму и подходящую кнопку отправки и делаете этотаким образом.

Учитывая существующую веб-страницу с уже написанной формой, вы можете научиться передавать параметры, вызывать код Perl 6 и отображать результаты в считанные минуты, если прочитаете соответствующую статью, такую ​​как Как создавать веб-страницы, используя CGI-скрипты .

Модули и Bailador

Имо, не стоит делать вещи на таком низком уровне, как CGI, свернутый вручную.В этом есть опасность, и есть модули, которые упрощают создание и обслуживание и делают их менее опасными.

Они будут отображаться в разделе "web" на modules.perl6.org . * 1083.*

Bailador - очевидный выбор для базового решения, которое неплохо справляется с «маршрутами» (сопоставлением URL-адресов с кодом) и шаблонами.

Cro и SPA

Если вызаинтересованы в использовании наиболее фундаментального подхода к созданию современных веб-сайтов, я рекомендую использовать Cro.Cro упрощает создание простых веб-решений с использованием подхода SPA .Но он предназначен для использования функций, встроенных в Perl 6, для удобного масштабирования до самых сложных веб-сайтов, которые можно себе представить, включая любую смесь асинхронной, параллельной, параллельной или распределенной обработки и любое промежуточное программное обеспечение , которое вы захотите представить.

Cro SPA, возможно, является излишним для такого очень тривиального приложения, как вы предлагаете в своем OP, но оно все еще очень простое и имеет бесчисленные плюсы при выборе, и никаких существенных минусов для вашего приложения.(Даже его официальный статус бета-версии подходит для вашего сценария, imo. Это уже очень надежный продукт, разработчики быстро реагируют на любые возникающие проблемы, и для разработчиков и для Perl 6 стратегически важно, чтобы он оставался чистым и быстрым., достойный производства и в хорошем состоянии.)

Самый быстрый способ начать установку, чтобы вы могли начать играть в Cro, - это, вероятно, установить Docker, если у вас его еще нет на вашем сервере (или на рабочем столе).если вы используете его в качестве сервера), а затем установите контейнер Docker croservices / cro-http .

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

0 голосов
/ 24 сентября 2018

Одно хорошее решение - вы можете запустить сервер Jupyter Notebook, чтобы они использовали https://github.com/bduggan/p6-jupyter-kernel

Или другое - разместить ваш код в glot.io, чтобы они могли запустить его в браузере https://glot.io/new/perl6

Это были бы мои быстрые решения.Если программа довольно простая и запускается из командной строки, есть вероятность, что версия Rajudo JVM может выполнить ее с --target = jar, чтобы упаковать все для запуска на других машинах с установленной Java.

0 голосов
/ 24 сентября 2018

Поскольку у вас есть реализованная программа, которой вы, кажется, довольны, и она уже написана на Perl 6, возможно, стоит попробовать Perlito (для справки, она указана на страница компиляторов perl6.org ).

Цель состоит в том, чтобы использовать Perlito для одноразового перевода исходного кода Perl 6 в JavaScript, который можно запустить в браузере,курс.Поддержка программы в будущем будет состоять из следующей последовательности: (1) обновление исходного кода Perl 6;(2) Запустите Perlito, чтобы получить исходный код JavaScript;(3) Замените старый исходный код JavaScript на недавно отрендеренный исходный код.

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

Наконец, есть также более подробный README (с упоминанием JavaScript-to-Perl-6).

...