SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Full stack R
Jordi Rosell - @jrosell
Com desenvolupar aplicacions web
interactives en R utilitzant el paquet Shiny i
com posar-les en entorns productius.
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
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/
3. Defineix com reaccionen els components de sortida
Llestos! Quan executes una aplicació l’usuari rebrà un
document HTML i el servidor reaccionarà.
Shiny Server Open Source
Com desenvolupar aplicacions web
interactives en R utilitzant el paquet Shiny i
com posar-les en entorns productius.
Qualitat
Tests unitaris
testthat: expect_equal, expect_error, etc
Tests d’interactivitat / Integració contínua
shinytest: Automatitzar tests gravats.
Tests d’usabilitat
Oi que sí? :)
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.
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.
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
:|
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.
:( :| :)
Potser no necessitem una aplicació
Llibretes de treball Presentacions Quadres de control
HTML/PDF/DOC/PPT Jamstack (Blogdown)
Documents interactius
(Shiny)
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
Gràcies
Contacte:
@jrosell
jordi@thediar.com
https://www.thediar.com/

Weitere ähnliche Inhalte

Ähnlich wie Full stack R

Ähnlich wie Full stack R (20)

Novetats Visual Studio 2010
Novetats Visual Studio 2010Novetats Visual Studio 2010
Novetats Visual Studio 2010
 
Git
GitGit
Git
 
Web Application(3)
Web Application(3)Web Application(3)
Web Application(3)
 
2.2. Curs Utilització de dades obertes reals (2)
2.2. Curs Utilització de dades obertes reals (2)2.2. Curs Utilització de dades obertes reals (2)
2.2. Curs Utilització de dades obertes reals (2)
 
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per YmbraELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
 
J2EE
J2EEJ2EE
J2EE
 
Freelance i Enginyeria
Freelance i EnginyeriaFreelance i Enginyeria
Freelance i Enginyeria
 
Programari Lliure UOC
Programari Lliure UOCProgramari Lliure UOC
Programari Lliure UOC
 
CakePHP
CakePHPCakePHP
CakePHP
 
Tema1
Tema1Tema1
Tema1
 
Tema 5
Tema 5Tema 5
Tema 5
 
PROGAMARI LLIURE
PROGAMARI LLIUREPROGAMARI LLIURE
PROGAMARI LLIURE
 
Presentació del servidor Apache
Presentació del servidor ApachePresentació del servidor Apache
Presentació del servidor Apache
 
Aplicacions web
Aplicacions webAplicacions web
Aplicacions web
 
Migració al programari lliure: reptes i oportunitats
Migració al programari lliure: reptes i oportunitatsMigració al programari lliure: reptes i oportunitats
Migració al programari lliure: reptes i oportunitats
 
Treball oppen office
Treball oppen officeTreball oppen office
Treball oppen office
 
Metasploit framework mini how-to
Metasploit framework mini how-toMetasploit framework mini how-to
Metasploit framework mini how-to
 
Wordpress i detecció de malware en servidors linux
Wordpress i detecció de malware en servidors linuxWordpress i detecció de malware en servidors linux
Wordpress i detecció de malware en servidors linux
 
UD3 PROGRAMACIÓ
UD3 PROGRAMACIÓUD3 PROGRAMACIÓ
UD3 PROGRAMACIÓ
 
1. introducció
1. introducció1. introducció
1. introducció
 

Mehr von Jordi Rosell

Optimización de la conversión de un e-commerce
Optimización de la conversión de un e-commerceOptimización de la conversión de un e-commerce
Optimización de la conversión de un e-commerceJordi Rosell
 
¿Por qué preocuparse por mejorar la calidad de los datos?
¿Por qué preocuparse por mejorar la calidad de los datos?¿Por qué preocuparse por mejorar la calidad de los datos?
¿Por qué preocuparse por mejorar la calidad de los datos?Jordi Rosell
 
Marketineo Bilbao 2019: Proyectos CRO
Marketineo Bilbao 2019: Proyectos CROMarketineo Bilbao 2019: Proyectos CRO
Marketineo Bilbao 2019: Proyectos CROJordi Rosell
 
Reporting para la accionabilidad
Reporting para la accionabilidadReporting para la accionabilidad
Reporting para la accionabilidadJordi Rosell
 
Aprendiendo de una #cagadaEcommerce
Aprendiendo de una #cagadaEcommerceAprendiendo de una #cagadaEcommerce
Aprendiendo de una #cagadaEcommerceJordi Rosell
 
Happy product pages
Happy product pagesHappy product pages
Happy product pagesJordi Rosell
 
Elección de Magento como plataforma E-commerce
Elección de Magento como plataforma E-commerceElección de Magento como plataforma E-commerce
Elección de Magento como plataforma E-commerceJordi Rosell
 
Páginas aterrizaje que convierten
Páginas aterrizaje que conviertenPáginas aterrizaje que convierten
Páginas aterrizaje que conviertenJordi Rosell
 
Optimizar la conversión en Magento
Optimizar la conversión en MagentoOptimizar la conversión en Magento
Optimizar la conversión en MagentoJordi Rosell
 
Optimización de la Conversión #einnovamwc
Optimización de la Conversión #einnovamwcOptimización de la Conversión #einnovamwc
Optimización de la Conversión #einnovamwcJordi Rosell
 
Web Performance para Magento
Web Performance para MagentoWeb Performance para Magento
Web Performance para MagentoJordi Rosell
 
Desenvolupar una botiga online amb èxit
Desenvolupar una botiga online amb èxitDesenvolupar una botiga online amb èxit
Desenvolupar una botiga online amb èxitJordi Rosell
 

Mehr von Jordi Rosell (12)

Optimización de la conversión de un e-commerce
Optimización de la conversión de un e-commerceOptimización de la conversión de un e-commerce
Optimización de la conversión de un e-commerce
 
¿Por qué preocuparse por mejorar la calidad de los datos?
¿Por qué preocuparse por mejorar la calidad de los datos?¿Por qué preocuparse por mejorar la calidad de los datos?
¿Por qué preocuparse por mejorar la calidad de los datos?
 
Marketineo Bilbao 2019: Proyectos CRO
Marketineo Bilbao 2019: Proyectos CROMarketineo Bilbao 2019: Proyectos CRO
Marketineo Bilbao 2019: Proyectos CRO
 
Reporting para la accionabilidad
Reporting para la accionabilidadReporting para la accionabilidad
Reporting para la accionabilidad
 
Aprendiendo de una #cagadaEcommerce
Aprendiendo de una #cagadaEcommerceAprendiendo de una #cagadaEcommerce
Aprendiendo de una #cagadaEcommerce
 
Happy product pages
Happy product pagesHappy product pages
Happy product pages
 
Elección de Magento como plataforma E-commerce
Elección de Magento como plataforma E-commerceElección de Magento como plataforma E-commerce
Elección de Magento como plataforma E-commerce
 
Páginas aterrizaje que convierten
Páginas aterrizaje que conviertenPáginas aterrizaje que convierten
Páginas aterrizaje que convierten
 
Optimizar la conversión en Magento
Optimizar la conversión en MagentoOptimizar la conversión en Magento
Optimizar la conversión en Magento
 
Optimización de la Conversión #einnovamwc
Optimización de la Conversión #einnovamwcOptimización de la Conversión #einnovamwc
Optimización de la Conversión #einnovamwc
 
Web Performance para Magento
Web Performance para MagentoWeb Performance para Magento
Web Performance para Magento
 
Desenvolupar una botiga online amb èxit
Desenvolupar una botiga online amb èxitDesenvolupar una botiga online amb èxit
Desenvolupar una botiga online amb èxit
 

Full stack R

  • 1. Full stack R Jordi Rosell - @jrosell
  • 2.
  • 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/
  • 6. 3. Defineix com reaccionen els components de sortida
  • 7. Llestos! Quan executes una aplicació l’usuari rebrà un document HTML i el servidor reaccionarà. Shiny Server Open Source
  • 8. Com desenvolupar aplicacions web interactives en R utilitzant el paquet Shiny i com posar-les en entorns productius.
  • 9. Qualitat Tests unitaris testthat: expect_equal, expect_error, etc Tests d’interactivitat / Integració contínua shinytest: Automatitzar tests gravats. Tests d’usabilitat Oi que sí? :)
  • 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