3. Com desenvolupar aplicacions web
interactives en R utilitzant el paquet Shiny i
com posar-les en entorns productius.
4. 1. Instal·la R, RStudio i dependències
● Primer cal instal·lar R:
https://cran.rstudio.com/bin/
● Després RStudio Desktop Open
Source Edition:
https://www.rstudio.com/products/rst
udio/download/#download
● Comença a programar:
https://gist.github.com/jrosell/01e8b5f
7d6fe485fc3a9c3ec61bf795f
5. 2. Crea HTML i components d’entrada i sortida
<div class="container-fluid"></div>
fluidPage()
<h1>Hola món</h1>
h1(“Hola món”)
<div class="form-group shiny-input-container">
<label class="control-label" id="num-label" for="num">Escull un
número</label>
<input class="js-range-slider" id="num" data-skin="shiny"
data-min="1" data-max="6" data-from="1" data-step="1"
data-grid="true" data-grid-num="5" data-grid-snap="false"
data-prettify-separator="," data-prettify-enabled="true"
data-keyboard="true" data-data-type="number"/>
</div>
sliderInput(
inputId = "num",
label = "Escull un número",
value = 1,
min = 1,
max = 6
)
<div id="hist" class="shiny-plot-output"
style="width:100%;height:400px;"></div>
plotOutput("hist")
Referència: https://shiny.rstudio.com/reference/shiny/
10. Escalat
Tests d’estrès/carrega
shinyloadtest: Executar concurrentment escenaris gravats.
Quants usuaris concurrents aguanta? Són prous?
Escalat vertical
Que cada servidor pugui servir més usuaris:
● Servidor amb més recursos.
● Optimitzar l’aplicació.
Escalat horitzontal
Distribuir la càrrega a més d’un servidor.
11. Escalat horitzontal,
però encara
s’utilitzen totes les
dades.
Utilitzar només les dades que es necessiten
:( :| :)
Cada usuari té
totes les dades.
Cada usuari
només utilitza
les dades
filtrades que
necessita.
12. El servidor només
actualitza atributs, no tot el
component.
Reduir operacions del servidor
:(
El servidor envia tot el
component a l’usuari.
:)
Utilitza JavaScript i no executa res
al servidor.
https://gist.github.com/jrosell/b263b3b72e4caf0385cac1c7f7d0c4e6
https://gist.github.com/jrosell/f75cee998a776f
572dde9a6141600c8e
https://gist.github.com/jrosell/725b3ae3fc1c
caa24ce0a92c466c42c0
:|
13. Extreure operacions complexes a una API
Les peticions es gestionen
per ordre de recepció en un
únic fil d’execució.
Concurrència i programació
asíncrona amb un client
JavaScript basat en jQuery.
No externalitzar operacions pot
fer que a l’usuari se li bloquegi
la interfície.
:( :| :)
14. Potser no necessitem una aplicació
Llibretes de treball Presentacions Quadres de control
HTML/PDF/DOC/PPT Jamstack (Blogdown)
Documents interactius
(Shiny)
15. Referències
Ajuda de Shiny
https://shiny.rstudio.com/articles/
Exemples de Shiny
https://shiny.rstudio.com/gallery/
Ajuda de dbplyr
https://dbplyr.tidyverse.org/articles/dbplyr.html
Ajuda de shinyjs
https://deanattali.com/shinyjs/overview
Exemples de opencpu
https://www.opencpu.org/apps.html
Ajuda de R Markdown
https://rmarkdown.rstudio.com/articles.html