R Π΅ ΠΏΡΠ»Π΅Π½ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎ-Π΄ΠΎΠ»Ρ ΡΠ΅ Π΄Π°ΠΌ Π΄Π΅ΡΠ΅Ρ ΠΎΡ Π½Π°ΠΉ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΎΡ ΡΡΡ
, Π·Π° ΠΊΠΎΠΈΡΠΎ ΠΌΠ½ΠΎΠ·ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π½Π΅ Π·Π½Π°ΡΡ. Π‘ΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΎΡΠΊΡΠΈΡ
, ΡΠ΅ ΠΈΡΡΠΎΡΠΈΠΈΡΠ΅ ΠΌΠΈ Π·Π° Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° R, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ, Π±ΡΡ
Π° ΠΏΡΠΈΠ΅ΡΠΈ Ρ Π΅Π½ΡΡΡΠΈΠ°Π·ΡΠΌ ΠΎΡ ΠΊΠΎΠ»Π΅Π³ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ. ΠΠΊΠΎ Π²Π΅ΡΠ΅ Π·Π½Π°Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π·Π° ΡΠΎΠ²Π°, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ ΠΈΠ·Π²ΠΈΠ½ΡΠ²Π°ΠΌ, ΡΠ΅ Π²ΠΈ Π³ΡΠ±Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅, ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°ΠΉΡΠ΅ Π½Π΅ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅.
Skillbox ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°: ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΡΡΡ
βΠ Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° Pythonβ .ΠΠ°ΠΏΠΎΠΌΠ½ΡΠΌΠ΅ Π²ΠΈ: Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ Π½Π° "Habr" - ΠΎΡΡΡΡΠΏΠΊΠ° ΠΎΡ 10 000 ΡΡΠ±Π»ΠΈ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΊΡΡΡ Skillbox, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡΠΎΠΌΠΎΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° "Habr".
ΡΡΠ½ΠΊΡΠΈΡ Π·Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅
ΠΠ°ΠΈΡΡΠΈΠ½Π°, Π½Π°ΠΈΡΡΠΈΠ½Π° Ρ Π°ΡΠ΅ΡΠ²Π°ΠΌ switch(). ΠΡΡΡΠ½ΠΎΡΡ ΡΠΎΠ²Π° Π΅ ΡΠ΄ΠΎΠ±Π½Π° ΡΡΠ΅Π½ΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ if ΠΏΡΠΈ ΠΈΠ·Π±ΠΎΡ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π΄ΡΡΠ³Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°. ΠΠ°ΠΌΠΈΡΠ°ΠΌ ΡΠΎΠ²Π° Π·Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠΈΡΠ° ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΡΠ΅Π΄ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π°Π½Π½ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ΅Π½ ΠΈΠ·Π±ΠΎΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Ρ ΠΈΠΌΠ΅ ΠΆΠΈΠ²ΠΎΡΠ½ΠΎ ΠΈ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π°Π½Π½ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠΎΠ²Π° Π΄Π°Π»ΠΈ ΠΆΠΈΠ²ΠΎΡΠ½ΠΎΡΠΎ Π΅ ΠΊΡΡΠ΅, ΠΊΠΎΡΠΊΠ° ΠΈΠ»ΠΈ Π·Π°Π΅ΠΊ, Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠΎΠ²Π°:
Π΄Π°Π½Π½ΠΈ < β read.csv(
ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π» (ΠΆΠΈΠ²ΠΎΡΠ½ΠΎ,
"ΠΊΡΡΠ΅" = "dogdata.csv",
"cat" = "catdata.csv",
"Π·Π°Π΅ΠΊ" = "Π΄Π°Π½Π½ΠΈ Π·Π° Π·Π°Π΅ΠΊ.csv")
)
Π’Π°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Shiny, ΠΊΡΠ΄Π΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΡΠ΅Π΄ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΠΌΠ΅Π½ΡΡΠΎ Π·Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅.
ΠΡΡΠ·ΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π·Π° RStudio
Π’ΠΎΠ·ΠΈ Ρ Π°ΠΊ Π½Π΅ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π·Π° R, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π·Π° RStudio IDE. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΠΊΠ»Π°Π²ΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ Π²ΠΈ Π΄Π° ΡΠΏΠ΅ΡΡΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΠΏΡΠΈ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡ. ΠΡΠ±ΠΈΠΌΠΈΡΠ΅ ΠΌΠΈ ΡΠ° Ctrl+Shift+M Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° %>% ΠΈ Alt+- Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° <-.
ΠΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»Π°Π²ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ, ΠΏΡΠΎΡΡΠΎ Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ Alt+Shift+K Π² RStudio.
ΠΏΠ°ΠΊΠ΅Ρ flexdashboard
ΠΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π±ΡΡΠ·ΠΎ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ°Π±Π»ΠΎΡΠΎ ΡΠΈ Shiny, Π½ΡΠΌΠ° Π½ΠΈΡΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΎ ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π·Π° ΡΠ°Π±Π»ΠΎ. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ HTML ΠΏΡΠ΅ΠΊΠΈ ΠΏΡΡΠΈΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π° ΠΏΡΠ°Π²ΠΈ Π»Π΅ΡΠ½ΠΎ ΠΈ Π±Π΅Π·ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π»Π΅Π½ΡΠΈ, ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ. ΠΠΌΠ° ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²Π½Π° Π»Π΅Π½ΡΠ°, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π΄Π° ΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΈΠΊΠΎΠ½ΠΈ, ΠΏΡΠ΅ΠΊΠΈ ΠΏΡΡΠΈΡΠ° Π² Github, ΠΈΠΌΠ΅ΠΉΠ» Π°Π΄ΡΠ΅ΡΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ.
ΠΠ°ΠΊΠ΅ΡΡΡ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Rmarkdown, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π΅Π΄ΠΈΠ½ Rmd ΡΠ°ΠΉΠ», Π° Π½Π΅ Π΄Π° Π³ΠΈ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΡΠ²ΡΡΠΈ ΠΈ UI ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° shinydashboard. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ flexdashboard Π²ΠΈΠ½Π°Π³ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°ΠΌ ΠΏΡΠΎΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π½Π° ΡΠ°Π±Π»ΠΎ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΡ Π²ΡΡΡ Ρ Π½Π΅ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ. Π’Π°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ ΡΠ°Ρ.
req ΠΈ validate ΡΡΠ½ΠΊΡΠΈΠΈ Π² R Shiny
Π Π°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π² R Shiny ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ±ΡΡΠΊΠ²Π°ΡΠΎ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΊΠΎΠ³Π°ΡΠΎ Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΡΡΡΠ°Π½Π½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π° Π³ΡΠ΅ΡΠΊΠ°, ΠΊΠΎΠΈΡΠΎ Π·Π°ΡΡΡΠ΄Π½ΡΠ²Π°Ρ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°. ΠΠΎ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Shiny ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°, ΡΡΠΊ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ Π²ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ° Π·Π° Π³ΡΠ΅ΡΠΊΠ°ΡΠ°. Π ΡΠ°ΠΊΠ°, req() ΡΠ΅ΡΠ°Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ βΡΠΈΡ Π°β Π³ΡΠ΅ΡΠΊΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ Π΅ ΡΡΠ½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²ΠΈ Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π°ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ΅ΠΊΠ° ΠΎΠ±ΡΡΠ½ΠΈΠΌ Ρ ΠΏΡΠΈΠΌΠ΅Ρ:
output$go_button < β Π±Π»Π΅ΡΡΡΡ::renderUI({
# Π±ΡΡΠΎΠ½ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ Π΅ ΠΈΠ·Π±ΡΠ°Π½ Π²Ρ ΠΎΠ΄ Π·Π° ΠΆΠΈΠ²ΠΎΡΠ½ΠΎ
Π»ΡΡΠΊΠ°Π²::req(input$animal)
# Π±ΡΡΠΎΠ½ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅
shiny::actionButton("go",
paste("ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅", input$animal, "Π°Π½Π°Π»ΠΈΠ·!")
)
})
validate() ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π²ΡΠΈΡΠΊΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠ΅Π½Π΄ΠΈΡΠ°Π½Π΅ ΠΈ Π²ΠΈ Π΄Π°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΠΎΡΠΏΠ΅ΡΠ°ΡΠ°ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π³ΡΠ΅ΡΠΊΠ° - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ Π΅ ΠΊΠ°ΡΠΈΠ» Π³ΡΠ΅ΡΠ΅Π½ ΡΠ°ΠΉΠ»:
# Π²Π·Π΅ΠΌΠ΅ΡΠ΅ csv Π²Ρ ΠΎΠ΄Π΅Π½ ΡΠ°ΠΉΠ»
inFile < β input$file1
Π΄Π°Π½Π½ΠΈ < β inFile$datapath
# ΠΈΠ·ΠΎΠ±ΡΠ°Π·Π΅ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠ° ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ Π΅ ΠΊΡΡΠ΅ΡΠ°
Π±Π»Π΅ΡΡΡΡ::renderTable({
# ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ ΡΠΎΠ²Π° Π΅ ΡΠ°ΠΉΠ»ΡΡ Π·Π° ΠΊΡΡΠ΅ΡΠ°, Π° Π½Π΅ Π·Π° ΠΊΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΉΡΠΈ
Π»ΡΡΠΊΠ°Π²::Π²Π°Π»ΠΈΠ΄ΠΈΡΠ°Π½Π΅(
need("ΠΠΌΠ΅ Π½Π° ΠΊΡΡΠ΅" %in%colnames(data)),
βΠΠΎΠ»ΠΎΠ½Π°ΡΠ° Π·Π° ΠΈΠΌΠ΅ Π½Π° ΠΊΡΡΠ΅ Π½Π΅ Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π° β Π·Π°ΡΠ΅Π΄ΠΈΡ
ΡΠ΅ Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΡΠ°ΠΉΠ»?β
)
Π΄Π°Π½Π½ΠΈ
})
ΠΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
Π‘ΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π²Π°ΡΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠ΅Π±Π΅ ΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° ΡΡΠ΅Π΄Π°
ΠΠΊΠΎ ΠΏΠ»Π°Π½ΠΈΡΠ°ΡΠ΅ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄Π° Π²ΡΠ²Π΅Π΄Π΅ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° ΡΡΠ΅Π΄Π°, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ Ρ ΠΎΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²Π°ΡΠΈΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² Github ΠΈΠ»ΠΈ Π΄ΡΡΠ³Π° ΡΡΠ»ΡΠ³Π°. ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
Sys.setenv(
DSN = "ΠΈΠΌΠ΅_Π½Π°_Π±Π°Π·Π°_Π΄Π°Π½Π½ΠΈ",
UID = "ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ",
PASS = "ΠΠ°ΡΠΎΠ»Π°"
)
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²Π»Π΅Π·Π΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°:
db < β DBI::dbConnect(
drv = odbc::odbc(),
dsn = Sys.getenv("DSN"),
uid = Sys.getenv("UID"),
pwd = Sys.getenv("PASS")
)
ΠΡΠ΅ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π½ΠΎ Π΅ (ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ) Π΄Π° Π³ΠΈ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π½Π°Π»ΠΈΡΠ½ΠΈ ΠΈ Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° Π³ΠΈ ΠΏΠΎΡΠΎΡΠ²Π°ΡΠ΅ Π² ΠΊΠΎΠ΄Π°.
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ tidyverse ΡΡΡ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΎΡ
ΠΠ°ΠΊΠ΅ΡΡΡ styler ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΠΈΠ·ΡΠΈΡΡΠΈΡΠ΅ ΠΊΠΎΠ΄Π° ΡΠΈ; ΡΠΎΠΉ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΠΈΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π½Π°ΡΡΠ½Π΅ Π½Π° ΡΡΠΈΠ»Π° Π½Π° ΠΊΠΎΠ΄Π° Π² tidyverse. ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ styler::style_file() Π½Π° Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅Π½ ΡΠΊΡΠΈΠΏΡ. ΠΠ°ΠΊΠ΅ΡΡΡ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ (Π½ΠΎ Π½Π΅ Π²ΡΠΈΡΠΊΠΎ), Π·Π° Π΄Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈ ΡΠ΅Π΄Π°.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° R Markdown Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ
Π’Π°ΠΊΠ° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄ΠΎΡ ΡΠ΅ ΡΡΡΠ°Ρ ΠΎΡΠ΅Π½ R Markdown Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, Π² ΠΊΠΎΠΉΡΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°ΠΊΡΠΈ Π·Π° ΠΊΡΡΠ΅ΡΠ°ΡΠ°. Π ΡΠΎΠ³Π°Π²Π° Π²ΠΈ Ρ ΡΡΠΌΠ²Π°, ΡΠ΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° ΡΠ²ΡΡΡΠΈΡΠ΅ ΡΡΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ°, Π½ΠΎ ΡΠ°ΠΌΠΎ Ρ ΠΊΠΎΡΠΊΠΈ. ΠΡΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ Π·Π° ΠΊΠΎΡΠΊΠΈ ΡΠ°ΠΌΠΎ Ρ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΡΡΡΠ±Π²Π° ΡΠ°ΠΌΠΎ Π΄Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π²Π°ΡΠΈΡ R ΠΌΠ°ΡΠΊΠ΄Π°ΡΠ½ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΠΊΠ°ΡΠΎ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π·Π° YAML Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° Π² ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠ½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ.
β Π·Π°Π³Π»Π°Π²ΠΈΠ΅: βΠΠ½Π°Π»ΠΈΠ· Π½Π° ΠΆΠΈΠ²ΠΎΡΠ½ΠΈβ
Π°Π²ΡΠΎΡ: "ΠΠΈΠΉΡ ΠΠ°ΠΊΠ½Π°Π»ΡΠΈ"
Π΄Π°ΡΠ°: "21 ΠΌΠ°ΡΡ 2019"
ΠΈΠ·Ρ
ΠΎΠ΄:
html_Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ:
code_folding: "ΡΠΊΡΠΈΠ²Π°Π½Π΅"
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
ΠΈΠΌΠ΅_Π½Π°_ΠΆΠΈΠ²ΠΎΡΠ½ΠΎ:
ΡΡΠΎΠΉΠ½ΠΎΡΡ: ΠΡΡΠ΅
ΠΈΠ·Π±ΠΎΡ:
β ΠΡΡΠ΅
β ΠΠΎΡΠΊΠ°
- ΠΠ°Π΅ΠΊ
Π³ΠΎΠ΄ΠΈΠ½ΠΈ_ΡΡΠ΅Π½Π΅:
Π²Ρ
ΠΎΠ΄: ΠΏΠ»ΡΠ·Π³Π°Ρ
ΠΌΠΈΠ½.: 2000
ΠΌΠ°ΠΊΡ.: 2019
Π΅ΡΠ°ΠΏ 1
ΠΊΡΡΠ³: 1
ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ: "
ΡΡΠΎΠΉΠ½ΠΎΡΡ: [2010, 2017] β
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΊΠ°ΡΠΎ params$animal_name ΠΈ params$years_of_study. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠ°Π΄Π°ΡΠΎΡΠΎ ΠΌΠ΅Π½Ρ Knit (ΠΈΠ»ΠΈ knit_with_parameters()) ΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ.
ΡΠ°Π·ΠΊΡΠΈΠ²Π°
discoverjs Π΅ ΠΏΠ°ΠΊΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΡΡΠ°Ρ ΠΎΡΠ½ΠΈ HTML ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ Ρ Π²Π³ΡΠ°Π΄Π΅Π½ R ΠΊΠΎΠ΄, ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½Π° Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΈ ΡΠ»Π°ΠΉΠ΄ ΠΌΠ΅Π½ΡΡΠ°. HTML ΠΏΡΠ΅ΠΊΠΈΡΠ΅ ΠΏΡΡΠΈΡΠ° Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π±ΡΡΠ·ΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π° ΡΡΡΡΠΊΡΡΡΠ° Π½Π° ΡΠ»Π°ΠΉΠ΄ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΡΡΠΈΠ». Π, HTML ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π²ΡΡΠΊΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ²ΠΎΡΠΈ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅Π»Π΅ΡΠΎΠ½, ΡΠ°Π±Π»Π΅Ρ ΠΈΠ»ΠΈ Π»Π°ΠΏΡΠΎΠΏ. Π Π°Π·ΠΊΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΎ ΡΡΠ΅Π· ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ ΠΌΡ Π² Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° Π½Π° YAML. ΠΡΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ:
β Π·Π°Π³Π»Π°Π²ΠΈΠ΅: βΠΠ·ΡΠ»Π΅Π΄Π²Π°Π½Π΅ Π½Π° ΡΡΠ±Π° Π½Π° ΠΡΠ΅Π»Π΅Π½Π°ΡΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° Ρ
ΠΎΡΠ°ΡΠ°β
Π°Π²ΡΠΎΡ: "ΠΠΈΠΉΡ ΠΠ°ΠΊΠ½Π°Π»ΡΠΈ"
ΠΈΠ·Ρ
ΠΎΠ΄:
discoverjs::revealjs_presentation:
ΡΠ΅Π½ΡΡΡ: Π΄Π°
ΡΠ°Π±Π»ΠΎΠ½:Π·Π²Π΅Π·Π΄Π½ΠΈ Π²ΠΎΠΉΠ½ΠΈ.html
ΡΠ΅ΠΌΠ°: ΡΠ΅ΡΠ½ΠΎ
Π΄Π°ΡΠ°: βHR Analytics Meetup London β 18 ΠΌΠ°ΡΡ 2019 Π³.β
ΡΠ΅ΡΡΡΡΠΈ_ΡΠ°ΠΉΠ»ΠΎΠ²Π΅:
β darth.png
- ΡΠΌΡΡΡΠ½Π° Π·Π²Π΅Π·Π΄Π°.png
- hanchewy.png
- Ρ
ΠΈΠ»ΡΠ΄ΠΎΠ»Π΅ΡΠΈΠ΅.png
- r2d2-threepio.png
-Π·Π²Π΅Π·Π΄Π½ΠΈ Π²ΠΎΠΉΠ½ΠΈ.html
β Π·Π²Π΅Π·Π΄Π½ΠΈ Π²ΠΎΠΉΠ½ΠΈ.png
βstormtrooper.png
-
ΠΠ·Ρ
ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ
HTML ΡΠ°Π³ΠΎΠ²Π΅ Π² R Shiny
ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ Π½Π΅ ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡ HTML ΡΠ°Π³ΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ R Shiny ΠΈΠΌΠ°. ΠΠΎ ΡΠΎΠ²Π° ΡΠ° ΡΠ°ΠΌΠΎ 110 Π΅ΡΠΈΠΊΠ΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ°Π²ΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΡΠ°ΡΠΊΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π·Π° HTML ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠ΅Π΄ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΡΠΊΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ tags$audio, Π·Π° Π΄Π° Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π° "ΠΏΠΎΠ±Π΅Π΄Π΅Π½" Π·Π²ΡΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π²Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π°Π΄Π΅Π½Π° Π·Π°Π΄Π°ΡΠ° Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½Π°.
ΠΠ°ΠΊΠ΅Ρ Ρ ΠΏΠΎΡ Π²Π°Π»ΠΈ
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΠ°ΠΊΠ΅Ρ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎ, Π½ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΏΠΎΡ Π²Π°Π»Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΡΡΠ°Π½Π½ΠΎ, Π½ΠΎ Π²ΡΡΡΠ½ΠΎΡΡ ΠΈΠΌ Ρ Π°ΡΠ΅ΡΠ²Π°.
Skillbox ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°:
- ΠΠ²ΡΠ³ΠΎΠ΄ΠΈΡΠ΅Π½ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΡΡΡ
βΠΠ· ΡΡΠΌ PRO ΡΠ΅Π± ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡβ .- ΠΠ½Π»Π°ΠΉΠ½ ΠΊΡΡΡ
"C# ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ" .- ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π³ΠΎΠ΄ΠΈΡΠ΅Π½ ΠΊΡΡΡ
βPHP ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΎΡ 0 Π΄ΠΎ PROβ .
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com