Shinyproxy: [๋ฒ„๊ทธ ๋ฆฌํฌํŠธ] ์ธ์ฆ์ด ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ ์˜ค๋žœ ์‹œ๊ฐ„ ์œ ํœด ์ƒํƒœ ํ›„ Ajax ์˜ค๋ฅ˜

์— ๋งŒ๋“  2019๋…„ 03์›” 25์ผ  ยท  9์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: openanalytics/shinyproxy

์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ์•ฑ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. DT ํ…Œ์ด๋ธ”์€ server = TRUE (์„œ๋ฒ„ ์ฒ˜๋ฆฌ ๋ชจ๋“œ)์ผ ๋•Œ ajax๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

library(shiny)
ui <- fluidPage(DT::DTOutput('tbl'))
server <- function(input, output, session) {
  output$tbl <- DT::renderDT(iris, server = TRUE)
}
runApp(list(ui = ui, server = server))

์ธ์ฆ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ(๋ชจ๋“  ์ธ์ฆ ๋ฐฉ๋ฒ•) ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ด๊ณ  ์•ฑ์— ๋“ค์–ด๊ฐ€๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ํ‘œ ์•„๋ž˜์˜ ํŽ˜์ด์ง€ ๋ฒ„ํŠผ ํด๋ฆญ). ๊ทธ๋Ÿฌ๋‚˜ ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ(30๋ถ„ ๋˜๋Š” 1์‹œ๊ฐ„) ์œ ํœด ์ƒํƒœ๊ฐ€ ๋œ ํ›„ ํŽ˜์ด์ง€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด DT๊ฐ€ ajax ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ๋ถˆ๋งŒ์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๊ฑฐ๋‚˜ Shinyproxy์— ๋Œ€ํ•œ ์ƒˆ ์—ฐ๊ฒฐ์„ ์—ด๊ณ  ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งŽ์€ ํ˜ผ๋ž€์„ ์ค๋‹ˆ๋‹ค.

์˜ค๋žœ ์‹œ๊ฐ„ ์œ ํœด ์ƒํƒœ ํ›„ Shinyproxy์—์„œ ์ƒˆ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ธฐ์กด ์—ฐ๊ฒฐ์ด ์—ฌ์ „ํžˆ ์œ ํšจํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Shinyproxy๋Š” ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ๋กœ ๊ฐ„์ฃผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด ์•ฑ์ด ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” AJAX ๊ฒŒ์‹œ๊ฐ€ ์„œ๋ฒ„์—์„œ ๊ฑฐ๋ถ€๋˜๋Š” ๋ถ€์ž‘์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์žฌ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๊ธฐ์กด ์•ฑ์˜ ์—ฐ๊ฒฐ์„ ๋Š๊ฑฐ๋‚˜(์‹œ๊ฐ„ ์ดˆ๊ณผ๋ผ๊ณ ๋„ ํ•จ)
  • ๊ธฐ์กด ์•ฑ์—์„œ ์ˆ˜ํ–‰ํ•œ AJAX ์—ฐ๊ฒฐ์„ ์œ ํšจ/์ธ์ฆ๋œ ๊ฒƒ์œผ๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค...

๊ฐ์‚ฌ ํ•ด์š”.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@shrektan ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ OpenAnalytics ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
undertow ์‹œ๊ฐ„ ์ œํ•œ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ์ ์œผ๋กœ 30๋ถ„).

server:
  servlet.session.timeout: 3600

์•„๋ž˜๋Š” ์ดˆ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด 0 ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.
๊ณ ๋งˆ์›Œ, ๋”œ๋Ÿฐ

๋ชจ๋“  9 ๋Œ“๊ธ€

@shrektan ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ OpenAnalytics ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
undertow ์‹œ๊ฐ„ ์ œํ•œ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ์ ์œผ๋กœ 30๋ถ„).

server:
  servlet.session.timeout: 3600

์•„๋ž˜๋Š” ์ดˆ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด 0 ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.
๊ณ ๋งˆ์›Œ, ๋”œ๋Ÿฐ

@dylancis ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๊ทธ๋Ÿฌ๋‚˜ IMHO, ์„ธ์…˜ ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜๋ฉด ๊ธฐ์กด ์•ฑ์˜ ์—ฐ๊ฒฐ์„ ๋Š๋Š” ๊ฒƒ์ด ๋” ์ข‹๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ์—ด์–ด ๋‘ก๋‹ˆ๋‹ค.

@dylancis BTW, ์•ฝ๊ฐ„ ์ฃผ์ œ์—์„œ ๋ฒ—์–ด๋‚˜ DT ํ…Œ์ด๋ธ”์ด ํฌํ•จ๋œ Shinyproxy์˜ ์ƒˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ? ์›์ธ์„ ์กฐ์‚ฌํ•˜์ง€ ์•Š์•˜์ง€๋งŒ POST ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜๋ฝํ•  ์ˆ˜ ์—†๋‹ค๋Š” AJAX ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

>

@dylancis BTW, ์•ฝ๊ฐ„ ์ฃผ์ œ์—์„œ ๋ฒ—์–ด๋‚˜ DT ํ…Œ์ด๋ธ”์ด ํฌํ•จ๋œ Shinyproxy์˜ ์ƒˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ? ์›์ธ์„ ์กฐ์‚ฌํ•˜์ง€ ์•Š์•˜์ง€๋งŒ POST ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜๋ฝํ•  ์ˆ˜ ์—†๋‹ค๋Š” AJAX ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์›์Šค - ์•„๋‹ˆ ์•„์งํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ €๋ฅผ ์œ„ํ•ด - ์ €๋Š” 2.1์—์„œ 2.2๋กœ ์ „ํ™˜ํ–ˆ๊ณ  ์ง€๊ธˆ์€ ๋‹จ ํ•˜๋‚˜์˜ renderDataTable ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€ http://datatables.net/tn/7๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ๋งŽ์€ AJAX ์˜ค๋ฅ˜

๋ฒ„๊ทธ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค... ์‹ค์ œ๋กœ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์—ด๋ฉด AJAX ์š”์ฒญ์˜ ์‘๋‹ต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ POST ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜๋ฝํ•  ์ˆ˜ ์—†์ง€๋งŒ GET์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค...

์•ˆ๋…•ํ•˜์„ธ์š” @shrektan DT์— ๋Œ€ํ•œ ์ด ์‚ด๊ตฌ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•˜์…จ์Šต๋‹ˆ๊นŒ? ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๊ณ„ํš์ด์ง€๋งŒ ์•ฑ์€ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌ๊ฒŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

@dylancis ๋ฐฉ๊ธˆ #140์—์„œ ์ด ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.

@dylancis๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด server.servlet.session.timeout ๋Š˜๋ฆฌ๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์—ด๋ฆฐ ์›น ์†Œ์ผ“ ์ฑ„๋„(ํ•˜ํŠธ๋น„ํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™œ์„ฑ ์ƒํƒœ๋กœ ์œ ์ง€)์ด ์žˆ๋Š” ํ•œ ์„ธ์…˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ์ž๋™์œผ๋กœ ์ง€์—ฐ๋˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ด ๋Œ“๊ธ€์€ ์„ธ์…˜ ๋งŒ๋ฃŒ๋กœ ์ธํ•œ 401(๋ฌด๋‹จ) ์‘๋‹ต์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 405(ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•) ์‘๋‹ต์„ ์ดˆ๋ž˜ํ•˜๋Š” ์•„์•ฝ์Šค POST ๋ฌธ์ œ์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰