Skip to content
Snippets Groups Projects

add helper/solution messages to answers in quizz questions

Merged Joseph Tran requested to merge dev into main
1 file
+ 343
125
Compare changes
  • Side-by-side
  • Inline
@@ -28,34 +28,61 @@ library(learnr)
```{r shiny-quizz-0, echo=FALSE}
quiz(
question("Qu'est-ce que Shiny?",
answer("Un framework pour créer des applications web interactives avec R", correct = TRUE),
answer("Une espèce de pokémon rare"),
answer("Une crème contre les rayons bleus des écrans"),
answer("Un framework pour créer des applications web interactives avec Python", correct = TRUE)
answer("Un framework pour créer des applications web interactives avec R",
correct = TRUE,
message = "[Shiny for R](https://shiny.posit.co/)"),
answer("Une espèce de pokémon rare",
message = "Il existe bien des pokémon dits chromatiques (brillants ou encore shiny): [pour en savoir plus](https://www.pokepedia.fr/Pok%C3%A9mon_chromatique), mais ce n'est pas la réponse attendue."),
answer("Une crème contre les rayons bleus des écrans",
message = "Il existe bien des crèmes pour protéger la peau des rayons UV, mais ce n'est pas la réponse attendue."),
answer("Un framework pour créer des applications web interactives avec Python",
correct = TRUE,
message = "[Shiny for Python](https://shiny.posit.co/py/)"),
allow_retry = TRUE
),
question("Combien de composants sont nécessaires pour créer une application Shiny ?",
answer("1"),
answer("2", correct = TRUE),
answer("3"),
answer("4")
answer("1", message = "un seul composant ne suffit pas pour créer une application Shiny"),
answer("2", correct = TRUE,
message = "[Two-file Shiny apps](https://shiny.posit.co/r/articles/build/two-file/)"),
answer("3", message = "trois composants ne sont pas nécessaires pour créer une application Shiny"),
answer("4", message = "quatre composants ne sont pas nécessaires pour créer une application Shiny"),
allow_retry = TRUE
),
question("Quels sont les deux composants nécessaires pour créer une application Shiny ?",
answer("ui.R et server.R", correct = TRUE),
answer("ui.R et app.R"),
answer("server.R et app.R"),
answer("ui.R et ui.R")
answer("ui.R et server.R",
correct = TRUE,
message = "[Two-file Shiny apps](https://shiny.posit.co/r/articles/build/two-file/)"),
answer("ui.R et app.R",
message = "c'est presque ça, mais il manque un composant"),
answer("server.R et app.R",
message = "c'est presque ça, mais il manque un composant"),
answer("hihi.R et byebye.R",
message = "sérieusement ?"),
allow_retry = TRUE
),
question("Quel est le composant qui permet de définir l'interface utilisateur dans une application Shiny ?",
answer("ui.R", correct = TRUE),
answer("server.R"),
answer("app.R"),
answer("ui.R et server.R")
answer("ui.R",
correct = TRUE,
message = "[ui.R](https://shiny.posit.co/r/getstarted/build-an-app/hello-shiny/user-interface.html)"),
answer("server.R",
message = "pour le serveur comme le dit le nom de fichier"),
answer("app.R",
message = "app.R est un fichier qui permet de combiner ui.R et server.R"),
answer("ui.R et server.R",
message = "ui.R et server.R sont les deux composants nécessaires pour créer une application Shiny"),
allow_retry = TRUE
),
question("Quel est le composant qui permet de définir le serveur dans une application Shiny ?",
answer("server.R", correct = TRUE),
answer("ui.R"),
answer("app.R"),
answer("ui.R et server.R")
answer("server.R",
correct = TRUE,
message = "[server.R](https://shiny.posit.co/r/getstarted/build-an-app/hello-shiny/server-function.html)"),
answer("ui.R",
message = "pour l'interface utilisateur comme le dit le nom de fichier"),
answer("app.R",
message = "app.R est un fichier qui permet de combiner ui.R et server.R"),
answer("ui.R et server.R",
message = "ui.R et server.R sont les deux composants nécessaires pour créer une application Shiny"),
allow_retry = TRUE
)
)
```
@@ -65,29 +92,59 @@ quiz(
```{r shiny-quizz-1, echo=FALSE}
quiz(
question("En combien de colonnes est divisée une ligne dans une application Shiny ?",
answer("5"),
answer("8"),
answer("9"),
answer("12", correct = TRUE)
answer("5",
message = "beaucoup plus"),
answer("8",
message = "bien plus"),
answer("9",
message = "encore plus"),
answer("12", correct = TRUE,
message = "[grid with of a column should be between 1 and 12](https://rstudio.github.io/shiny/reference/column.html)"),
allow_retry = TRUE
),
question("Quelle fonction permet de créer une page avec une barre latérale dans une application Shiny ?",
answer("sidebarLayout", correct = TRUE),
answer("pageWithSidebar", message="déprécié, utiliser sidebarLayout"),
answer("pageWithFooter"),
answer("fluidPage")
answer("sidebarLayout",
correct = TRUE,
message = "[voir sidebarLayout](https://rstudio.github.io/shiny/reference/sidebarLayout.html)"),
answer("pageWithSidebar", message="[déprécié](https://shiny.posit.co/r/reference/shiny/latest/pagewithsidebar), utiliser sidebarLayout"),
answer("pageWithFooter",
message = "pageWithFooter n'existe pas"),
answer("fluidPage",
message = "fluidPage permet de créer une page avec un contenu fluide: [voir fluidPage](https://rstudio.github.io/shiny/reference/fluidPage.html)"),
allow_retry = TRUE
),
question("Quelles fonctions permettent de créer un layout multipages dans une application Shiny ?",
answer("navbarPage", correct = TRUE),
answer("tabsetPanel", correct = TRUE),
answer("navlistPanel", correct = TRUE),
answer("fluidPanel")
answer("navbarPage",
correct = TRUE,
message = "[navbarPage](https://rstudio.github.io/shiny/reference/navbarPage.html)"),
answer("tabsetPanel",
correct = TRUE,
message = "[tabsetPanel](https://shiny.posit.co/r/reference/shiny/latest/tabsetpanel)"),
answer("navlistPanel",
correct = TRUE,
message = "[navlistPanel](https://rstudio.github.io/shiny/reference/navlistPanel.html)"),
answer("fluidPanel",
message = "fluidPanel n'existe pas"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quels sont les frameworks pour développer des dashboards en shiny?",
answer("shinydashboard", correct = TRUE),
answer("shinybootstrap"),
answer("shiny.semantic", correct = TRUE),
answer("bslib", correct = TRUE),
answer("bs4Dash", correct = TRUE)
answer("shinydashboard",
correct = TRUE,
message = "[shinydashboard](https://rstudio.github.io/shinydashboard/)"),
answer("shinybootstrap",
message = "shinybootstrap n'existe pas"),
answer("shiny.semantic",
correct = TRUE,
message = "[shiny.semantic](https://appsilon.github.io/shiny.semantic/)"),
answer("bslib",
correct = TRUE,
message = "[bslib](https://rstudio.github.io/bslib/)"),
answer("bs4Dash",
correct = TRUE,
message = "[bs4Dash](https://rinterface.github.io/bs4Dash/index.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
)
)
```
@@ -97,40 +154,82 @@ quiz(
```{r shiny-quizz-2, echo=FALSE}
quiz(
question("Quelle fonction permet de créer un champ de texte dans une application Shiny ?",
answer("wordInput"),
answer("selectInput"),
answer("numericInput"),
answer("textInput", correct = TRUE)
answer("wordInput",
message = "wordInput n'existe pas"),
answer("selectInput",
message = "selectInput permet de créer un menu déroulant: [voir selectInput](https://rstudio.github.io/shiny/reference/selectInput.html)"),
answer("numericInput",
message = "numericInput permet de créer un champ numérique: [voir numericInput](https://rstudio.github.io/shiny/reference/numericInput.html)"),
answer("textInput",
correct = TRUE,
message = "[voir textInput](https://rstudio.github.io/shiny/reference/textInput.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle fonction permet de créer un menu déroulant dans une application Shiny ?",
answer("wordInput"),
answer("selectInput", correct = TRUE),
answer("numericInput"),
answer("textInput")
answer("wordInput",
message = "wordInput n'existe pas"),
answer("selectInput",
correct = TRUE,
message = "[voir selectInput](https://rstudio.github.io/shiny/reference/selectInput.html)"),
answer("numericInput",
message = "numericInput permet de créer un champ numérique: [voir numericInput](https://rstudio.github.io/shiny/reference/numericInput.html)"),
answer("textInput",
message = "textInput permet de créer un champ de texte: [voir textInput](https://rstudio.github.io/shiny/reference/textInput.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle fonction permet de créer un champ numérique dans une application Shiny ?",
answer("wordInput"),
answer("selectInput"),
answer("numericInput", correct = TRUE),
answer("textInput")
answer("wordInput",
message = "wordInput n'existe pas"),
answer("selectInput",
message = "selectInput permet de créer un menu déroulant: [voir selectInput](https://rstudio.github.io/shiny/reference/selectInput.html)"),
answer("numericInput",
correct = TRUE,
message = "[voir numericInput](https://rstudio.github.io/shiny/reference/numericInput.html)"),
answer("textInput"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quels sont les types d'input disponibles dans une application Shiny ?",
answer("text", correct = TRUE),
answer("numeric", correct = TRUE),
answer("date", correct = TRUE),
answer("box"),
answer("email", correct = TRUE),
answer("checkbox", correct = TRUE),
answer("radio", correct = TRUE),
answer("text",
correct = TRUE,
message = "[voir text](https://rstudio.github.io/shiny/reference/textInput.html)"),
answer("numeric",
correct = TRUE,
message = "[voir numeric](https://rstudio.github.io/shiny/reference/numericInput.html)"),
answer("date",
correct = TRUE,
message = "[voir date](https://rstudio.github.io/shiny/reference/dateInput.html)"),
answer("box",
message = "box n'est pas un type d'input"),
answer("email",
message = "email n'est pas un type d'input"),
answer("checkbox",
correct = TRUE,
message = "[voir checkbox](https://rstudio.github.io/shiny/reference/checkboxInput.html)"),
answer("radio",
correct = TRUE,
message = "[voir radio](https://rstudio.github.io/shiny/reference/radioButtons.html)"),
answer("address"),
answer("file", correct = TRUE),
answer("file",
correct = TRUE,
message = "[voir file](https://rstudio.github.io/shiny/reference/fileInput.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle fonction permet de créer un curseur numérique dans une application Shiny ?",
answer("sliderInput", correct = TRUE),
answer("selectInput"),
answer("numericInput"),
answer("textInput")
answer("sliderInput",
correct = TRUE,
message = "[voir sliderInput](https://rstudio.github.io/shiny/reference/sliderInput.html)"),
answer("selectInput",
message = "selectInput permet de créer un menu déroulant: [voir selectInput](https://rstudio.github.io/shiny/reference/selectInput.html)"),
answer("numericInput",
message = "numericInput permet de créer un champ numérique: [voir numericInput](https://rstudio.github.io/shiny/reference/numericInput.html)"),
answer("textInput",
message = "textInput permet de créer un champ de texte: [voir textInput](https://rstudio.github.io/shiny/reference/textInput.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
)
)
@@ -141,28 +240,56 @@ quiz(
```{r shiny-quizz-3, echo=FALSE}
quiz(
question("Quelle est la fonction qui permet de générer un graphique dans une application Shiny ?",
answer("renderPlot", correct = TRUE),
answer("renderTable"),
answer("renderPrint"),
answer("renderDataTable")
answer("renderPlot",
correct = TRUE,
message = "[renderPlot](https://rstudio.github.io/shiny/reference/renderPlot.html)"),
answer("renderTable",
message = "renderTable permet de générer un tableau: [voir renderTable](https://rstudio.github.io/shiny/reference/renderTable.html)"),
answer("renderPrint",
message = "renderPrint permet de générer un texte: [voir renderPrint](https://rstudio.github.io/shiny/reference/renderPrint.html)"),
answer("renderDataTable",
message = "renderDataTable permet de générer un tableau dynamique: [voir renderDataTable](https://rstudio.github.io/shiny/reference/renderDataTable.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle est la fonction qui permet de générer un tableau dans une application Shiny ?",
answer("renderTable", correct = TRUE),
answer("renderPlot"),
answer("renderPrint"),
answer("renderDataTable")
answer("renderTable",
correct = TRUE,
message = "[renderTable](https://rstudio.github.io/shiny/reference/renderTable.html)"),
answer("renderPlot",
message = "renderPlot permet de générer un graphique: [voir renderPlot](https://rstudio.github.io/shiny/reference/renderPlot.html)"),
answer("renderPrint",
message = "renderPrint permet de générer un texte: [voir renderPrint](https://rstudio.github.io/shiny/reference/renderPrint.html)"),
answer("renderDataTable",
message = "renderDataTable permet de générer un tableau dynamique: [voir renderDataTable](https://rstudio.github.io/shiny/reference/renderDataTable.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle est la fonction qui permet de générer un texte dans une application Shiny ?",
answer("renderPrint", correct = TRUE),
answer("renderTable"),
answer("renderPlot"),
answer("renderDataTable")
answer("renderPrint",
correct = TRUE,
message = "[renderPrint](https://rstudio.github.io/shiny/reference/renderPrint.html)"),
answer("renderTable",
message = "renderTable permet de générer un tableau: [voir renderTable](https://rstudio.github.io/shiny/reference/renderTable.html)"),
answer("renderPlot",
message = "renderPlot permet de générer un graphique: [voir renderPlot](https://rstudio.github.io/shiny/reference/renderPlot.html)"),
answer("renderDataTable",
message = "renderDataTable permet de générer un tableau dynamique: [voir renderDataTable](https://rstudio.github.io/shiny/reference/renderDataTable.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle est la fonction qui permet de générer un tableau dynamique dans une application Shiny ?",
answer("renderDataTable", correct = TRUE),
answer("renderTable"),
answer("renderPrint"),
answer("renderPlot")
answer("renderDataTable",
correct = TRUE,
message = "[renderDataTable](https://rstudio.github.io/shiny/reference/renderDataTable.html)"),
answer("renderTable",
message = "renderTable permet de générer un tableau: [voir renderTable](https://rstudio.github.io/shiny/reference/renderTable.html)"),
answer("renderPrint",
message = "renderPrint permet de générer un texte: [voir renderPrint](https://rstudio.github.io/shiny/reference/renderPrint.html)"),
answer("renderPlot",
message = "renderPlot permet de générer un graphique: [voir renderPlot](https://rstudio.github.io/shiny/reference/renderPlot.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
)
)
@@ -173,28 +300,57 @@ quiz(
```{r shiny-quizz-4, echo=FALSE}
quiz(
question("Quelle fonction permet de générer un graphique dans une application Shiny ?",
answer("plotOutput", correct = TRUE),
answer("tableOutput"),
answer("printOutput"),
answer("dataTableOutput")
answer("plotOutput",
correct = TRUE,
message = "[plotOutput](https://rstudio.github.io/shiny/reference/plotOutput.html)"),
answer("tableOutput",
message = "tableOutput permet de générer un tableau: [voir tableOutput](https://rstudio.github.io/shiny/reference/renderTable.html)"),
answer("textOutput",
message = "textOutput permet de générer un texte: [voir printOutput](https://rstudio.github.io/shiny/reference/renderPrint.html)"),
answer("dataTableOutput",
message = "dataTableOutput permet de générer un tableau dynamique: [voir dataTableOutput](https://rstudio.github.io/shiny/reference/renderDataTable.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle fonction permet de générer un tableau dans une application Shiny ?",
answer("tableOutput", correct = TRUE),
answer("plotOutput"),
answer("printOutput"),
answer("dataTableOutput")
answer("tableOutput",
correct = TRUE,
message = "[tableOutput](https://rstudio.github.io/shiny/reference/renderTable.html)"),
answer("plotOutput",
message = "plotOutput permet de générer un graphique: [voir plotOutput](https://rstudio.github.io/shiny/reference/plotOutput.html)"),
answer("textOutput",
message = "textOutput permet de générer un texte: [voir textOutput](https://rstudio.github.io/shiny/reference/renderPrint.html)"),
answer("dataTableOutput",
message = "dataTableOutput permet de générer un tableau dynamique: [voir dataTableOutput](https://rstudio.github.io/shiny/reference/renderDataTable.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle fonction permet de générer un texte dans une application Shiny ?",
answer("printOutput", correct = TRUE),
answer("tableOutput"),
answer("plotOutput"),
answer("dataTableOutput")
question("Quelles fonctions permettent de générer un texte dans une application Shiny ?",
answer("textOutput",
correct = TRUE,
message = "[printOutput](https://rstudio.github.io/shiny/reference/renderPrint.html)"),
answer("tableOutput",
message = "tableOutput permet de générer un tableau: [voir tableOutput](https://rstudio.github.io/shiny/reference/renderTable.html)"),
answer("verbatimTextOutput",
correct = TRUE,
message = "[verbatimTextOutput](https://rstudio.github.io/shiny/reference/renderPrint.html)"),
answer("dataTableOutput",
message = "dataTableOutput permet de générer un tableau dynamique: [voir dataTableOutput](https://rstudio.github.io/shiny/reference/renderDataTable.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle fonction permet de générer un tableau dynamique dans une application Shiny ?",
answer("dataTableOutput", correct = TRUE),
answer("tableOutput"),
answer("printOutput"),
answer("plotOutput")
answer("dataTableOutput",
correct = TRUE,
message = "[dataTableOutput](https://rstudio.github.io/shiny/reference/renderDataTable.html)"),
answer("tableOutput",
message = "tableOutput permet de générer un tableau: [voir tableOutput](https://rstudio.github.io/shiny/reference/renderTable.html)"),
answer("textOutput",
message = "textOutput permet de générer un texte: [voir textOutput](https://rstudio.github.io/shiny/reference/renderPrint.html)"),
answer("plotOutput",
message = "plotOutput permet de générer un graphique: [voir plotOutput](https://rstudio.github.io/shiny/reference/plotOutput.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
)
)
```
@@ -204,35 +360,76 @@ quiz(
```{r shiny-quizz-5, echo=FALSE}
quiz(
question("Quelle fonction permet de créer une dépendance entre un input côté UI et une autre expression côté serveur dans une application Shiny ?",
answer("reactive", correct = TRUE),
answer("radioactive"),
answer("renderactive"),
answer("proactive")
answer("reactive",
correct = TRUE,
message = "[reactive](https://rstudio.github.io/shiny/reference/reactive.html)"),
answer("radioactive",
message = "radioactive n'est pas une fonction de Shiny"),
answer("renderactive",
message = "renderactive n'est pas une fonction de Shiny"),
answer("proactive",
message = "proactive n'est pas une fonction de Shiny"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle fonction reactive permet d'isoler une action dans une application Shiny ?",
answer("isolate", correct = TRUE),
answer("cache-cache"),
answer("lockdown"),
answer("iwanttobreakfree")
answer("isolate",
correct = TRUE,
message = "[isolate](https://rstudio.github.io/shiny/reference/isolate.html)"),
answer("cache-cache",
message = "cache-cache n'est pas une fonction de Shiny, mais vous connaissez bien le jeu"),
answer("lockdown",
message = "lockdown n'est pas une fonction de Shiny, mais vous connaissez bien le confinement"),
answer("iwanttobreakfree",
message = "iwanttobreakfree n'est pas une fonction de Shiny, mais vous connaissez bien la chanson"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle fonction reactive permet de générer une dépendance à une seule variable dans une application Shiny ?",
answer("reactiveVal", correct = TRUE),
answer("reactiveValues", message = "reactiveValues() est une fonction qui permet de stocker plusieurs valeurs réactives"),
answer("reactorVal"),
answer("proactorValues")
answer("reactiveVal",
correct = TRUE,
message = "[reactiveVal](https://rstudio.github.io/shiny/reference/reactiveVal.html)"),
answer("reactiveValues",
message = "reactiveValues() est une fonction qui permet de stocker plusieurs valeurs réactives [reactiveValues](https://rstudio.github.io/shiny/reference/reactiveValues.html)"),
answer("reactorVal",
message = "reactorVal n'est pas une fonction de Shiny"),
answer("proactorValues",
message = "proactorValues n'est pas une fonction de Shiny"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quand peut-on utiliser la fonction observe() dans une application Shiny ?",
answer("Pour modifier un object reactiveValues", correct = TRUE),
answer("Pour déclencher l'affichage d'une fenêtre contextuelle", correct = TRUE),
answer("Pour envoyer un email"),
answer("Pour modifier un élément de l'interface utilisateur")
answer("Pour modifier un object reactiveValues",
correct = TRUE,
message = "[observe](https://rstudio.github.io/shiny/reference/observe.html)"),
answer("Pour déclencher l'affichage d'une fenêtre contextuelle",
correct = TRUE,
message = "[observe](https://rstudio.github.io/shiny/reference/observe.html)"),
answer("Pour envoyer un email",
message = "observe() n'est pas une fonction pour envoyer un email"),
answer("Pour modifier un élément de l'interface utilisateur",
message = "observe() n'est pas une fonction pour modifier un élément de l'interface utilisateur"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelle(s) fonction(s) reactive permet(tent) de générer une dépendance à un évènement et d'éxécuter une action dans une application Shiny ?",
answer("observeEvent", correct = TRUE),
answer("observe"),
answer("eventReactive", correct = TRUE),
answer("observeInput"),
answer("reactiveEvent")
answer("observeEvent",
correct = TRUE,
message = "[observeEvent](https://rstudio.github.io/shiny/reference/observeEvent.html)"),
answer("observe",
message = "observe() n'est pas une fonction pour générer une dépendance à un évènement"),
answer("eventReactive",
correct = TRUE,
message = "[eventReactive](https://rstudio.github.io/shiny/reference/observeEvent.html)"),
answer("observeInput",
message = "observeInput n'est pas une fonction pour générer une dépendance à un évènement"),
answer("reactiveEvent",
message = "reactiveEvent n'est pas une fonction pour générer une dépendance à un évènement"),
answer("bindEvent",
correct = TRUE,
message = "[bindEvent](https://rstudio.github.io/shiny/reference/observeEvent.html)"),
allow_retry = TRUE,
random_answer_order = TRUE
)
)
```
@@ -242,18 +439,39 @@ quiz(
```{r shiny-quizz-6, echo=FALSE}
quiz(
question("Quelles sont les solutions existantes pour déployer une application Shiny ?",
answer("Shinyapps.io", correct = TRUE),
answer("Posit Connect", correct = TRUE),
answer("Shiny Server", correct = TRUE),
answer("Shiny Cloud")
answer("Shinyapps.io",
correct = TRUE,
message = "[Shinyapps.io](https://www.shinyapps.io/)"),
answer("Posit Connect",
correct = TRUE,
message = "[Posit Connect](https://posit.co/products/enterprise/connect/)"),
answer("Shiny Server",
correct = TRUE,
message = "[Shiny Server](https://www.rstudio.com/products/shiny/shiny-server/)"),
answer("Shiny Cloud",
message = "Shiny Cloud n'existe pas"),
allow_retry = TRUE,
random_answer_order = TRUE
),
question("Quelles solutions de déploiement utilise docker pour déployer une application Shiny ?",
answer("shinyproxy", correct = TRUE),
answer("Posit Connect"),
answer("Shiny Server"),
answer("SK8", correct = TRUE),
answer("binder", correct = TRUE),
answer("Hugging Face Spaces", correct = TRUE)
answer("shinyproxy",
correct = TRUE,
message = "Shinyproxy utilise une infrastructure basé sur docker pour déployer une application Shiny [shinyproxy](https://www.shinyproxy.io/)"),
answer("Posit Connect",
message = "Posit Connect n'utilise pas docker pour déployer une application Shiny"),
answer("Shiny Server",
message = "Shiny Server n'utilise pas docker pour déployer une application Shiny"),
answer("SK8",
correct = TRUE,
message = "SK8 utilise une infrastructure basé sur docker/Kubernetes pour déployer une application Shiny [SK8](https://sk8.inrae.fr)"),
answer("binder",
correct = TRUE,
message = "binder utilise une infrastructure basé sur docker pour déployer une application Shiny [binder](https://mybinder.org)"),
answer("Hugging Face Spaces",
correct = TRUE,
message = "Hugging Face Spaces utilise une infrastructure basé sur docker pour déployer une application Shiny [Hugging Face Spaces](https://huggingface.co/spaces)"),
allow_retry = TRUE,
random_answer_order = TRUE
)
)
Loading