Pull to refresh
16
0
Олег @OlegUV

Аналитик

Send message
На самом деле, вариантов, кроме shiny, много:
openCPU
AzureML
DeployR Open
yhat
Domino
Sense.io

Вот, наверное, самый простой пример:
Making Predictions over HTTP with R
Было бы также полезно рассмотреть минусы связки R+Shiny, хотя, возможо, вы нашли свои work-around. На текущий момент основные проблемы берут корни в том, что Shiny является достаточно закрытой библиотекой в части управления backend'ом, соответственно это мешает сделать систему полноценной OLTP (я буду писать «невозможность», но это может быть «сложность», по которой у меня пока нет решения):

1. Невозможность полноценной реализации monopoly access
2. Невозможность реализации расширенной логики авторизации и поддержки ролевых моделей по RBAC
3. Проверка ролевой модели доступа должна быть явно реализована в каждой точке доступа
4. Невозможность реализации горизонтальной масштабируемости
5. Невозможность частичного апдейта back-front end, только через полный апдейт с операционной блокировкой сервера.
6. Однонаправленная транспортировка клиент/сервер по HTTP (невозможность реализации SingnalR или COMMET)
7. Невозможность разделения back|fromt end разработки
8. Тяжелая ресурсная стоимость UI-render Shiny пакета
9. Высокая сложность отладки, зависимость базовых механизмов (логирование, access management, управление представлениями и т.д.)

Реализация R+Shiny идеально подходит для систем, которые разработаны «под одного пользователя». Как только возникает необходимость обеспечить параллельную работу нескольких пользователей на одними и теми же данными — начинается хаос :(

ИМХО — R необходимо использовать для тех вещей, для которых он создан: статистическая backend логика, аналитика и big data; прочая бизнес-логика, UI и тд. должны быть реализованы на других платформах. Благо Micrisoft подарил свет в конце тоннеля внедрив поддержку R в .NET и MS SQL.
1. Накладность расходов в том, что при вызове bootstrap генерируется весь компонент ui.R, вы не можете инициализировать вызов по обращению, это специфика реализации в shiny. Если у вас большое приложение даже без сложной логики инициализации, можете просто замерить время между вызовом приложения и загрузкой UI.

Также не совсем понятно, зачем в shiny так сильно порезали функционал AdminLTE. Теоретически, конечно, добраться к нему можно, но через ненужные костыли. Например, попробуйте добавить header right sidebar, который по-умолчанию есть в AdminLTE.

О том, что можно подключать js, css никто не спорит, но это уже не реализация самого shiny.

Я не говорю, что это все не возможно, но реализовано или приходится решать через столько костылей, что возникает вопрос — а стоит ли? Особенно когда система уходит на прод и нужно обеспечить удаленный bug-fixing, распределенную разработку и т.д.

2. Поддержка протокола как таковая и реализация — две большие разницы, имхо. Реактивность shiny обеспечивает односторонний обзервер только ui. Вы видите возможность реализации стандартного паттерна Наблюдатель серверной части в shiny? Например, обновление счетчика и вызов пуш-уведомления при отправке сообщения другим пользователем? Т.е. сам объект, ивент и обсервер за ним полностью на стороне серверной части, а не в ui. Такая задача потребует инициализации нескольких промежуточных reactivalues контейнеров, и нескольких обзерверов для связки, но это костыль, который очень далек от паттерна.

На всякий случай повторюсь, я не говорю, что shiny плох, или его не нужно использовать вообще (у меня самого сейчас на поддержке несколько реализаций с shiny, которые поддерживаются go-live у внешних клиентов). Но с усложнением задачи и архитектуры приложения, все минусы shiny вылазят очень больно и возникает необходимость реализации других вариантов.
По ссылке хорошая инфографика для сравнения R и Python — у каждого свои плюсы и минусы. Как и в любом сравнении любых языков :)

www.datacamp.com/community/tutorials/r-or-python-for-data-analysis
Далеко не со всем согласен…
его можно назвать чисто объектным,

R поддерживает около 7-ми парадигм, включая функциональную, процедурную и ООП.

Нет типов данных как таковых, есть внутренние режимы хранения данных и объединения объектов в иерархические структуры

Типы данных есть и их целых 7 — numeric, integer, complex, logical, character, NA, NULL. И каждый из этих типов может быть представлен в базовой структуре вектора (включая сам вектор, matrix, array, data.frame, list) + дополнительные структуры factor и formula + расширяемые структуры различных пакетов.

всё в нем может быть иметь имя и любые другие атрибуты что вы пожелаете им приписать

Т.к. базовая структура вектор, то атрибуты хранятся на его уровне — отдельный элемент вектора не может иметь свой отдельный аттрибут, он просто индексируется из векторного атрибута.

Вы никак не можете указывать никаких прототипов классов, объектов, интерфейсов (кроме набора параметров функций)

В объектах класса S4 вы можете все это сделать — определить слоты, прототипы и т.д.

Ну и дальше много чего написано исходя из предположения, что нет системы типов, хотя она по факту есть, но динамическая. Кстати возможна реализация и строго-типизированной системы через S4-объекты.
Рекомендую ознакомиться с книгой "программирование искуственного интеллекта в приложениях". Кажется 13-го она года. Так вот, там есть глава про моделирование стратегий «жертва-хищник» (моделирование пищевых цепочек), где каждая особь имеет свою нейросеточку, и есть и клетки, и ресурсы на них. Там есть код. И помимо этого там вообще много чего интересного.
В качестве интересного примера, приведу портал Министерства туризма Новой Зеландии, который построен на R Shiny. Дешево и сердито.

New Zealand Tourism Dashboard. The New Zealand Tourism Dashboard is a one-stop shop for all information about tourism. It brings together a range of tourism datasets produced by MBIE and Statistics New Zealand into one easy-to-use tool. Information is presented using dynamic graphs and data tables.

Несколько аналогов Shiny для Python:


Pyxley https://github.com/stitchfix/pyxley
The Pyxley python library makes use of the pyxleyJS React components to create Flask-based web applications.
Обзор


Spyre https://github.com/adamhajari/spyre
Spyre is a Web Application Framework for providing a simple user interface for Python data projects.


Plotly/Dash https://github.com/plotly/dash
Flask, JS, and CSS boilerplate for interactive, web-based visualization apps in Python
Выглядит симпатичнее других, но команда прекратила поддержку проекта.


Bokeh http://bokeh.pydata.org/en/latest/
Bokeh is a Python interactive visualization library that targets modern web browsers for presentation. Its goal is to provide elegant, concise construction of novel graphics in the style of D3.js, and to extend this capability with high-performance interactivity over very large or streaming datasets. Bokeh can help anyone who would like to quickly and easily create interactive plots, dashboards, and data applications.
Немного навязчивый PR но выглядит неплохо.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity