Yearly Archives - 2019

ajax ๊ฐ„๋‹จ ์˜ˆ์ œ

์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ธ๊ธฐ์žˆ๋Š” PHP MVC ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๊ฒ€์ƒ‰ ํ•  ์ˆ˜์žˆ๋Š” ๊ฐ„๋‹จํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณต์šฉ ์›น ์–‘์‹์—์„œ ์ŠคํŒธ์„ ์ค„์ด๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ์ด๋ฏธ์ง€ CAPTCHA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ์ถœ์ž๊ฐ€ ์ธ๊ฐ„์ธ์ง€ ํ™•์ธํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ์  ๋ณด์กฐ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ์ธ์ด ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ œ๊ณต๋  ๋•Œ ์ ‘๊ทผ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ณ„์† ์ง„ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ„๋‹จํ•œ ๊ธฐ์ˆ ์€ Ajax ํ˜ธ์ถœ์„ ์„œ๋ฒ„ ์ชฝ ์Šคํฌ๋ฆฝํŠธ์— ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/๊ณ„์‚ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋Œ€๊ทœ๋ชจ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ์…˜ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๋ฉด ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” ์„œ๋ฒ„ ์ฝ”๋“œ์— Python์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ๋ฅผ ์ œ์‹œํ•˜์ง€๋งŒ ๋ชจ๋ธ์€ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์–ธ์–ด์—์„œ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ์ถœ ๋‹จ์ถ”๋ฅผ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๋„๋ก ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ  ๋“ฑ๊ธ‰ ์‹œ์Šคํ…œ์„ ๋งŒ๋“œ๋Š” ๊ฐœ๋…์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ์ด ์ž์Šต์„œ์—์„œ๋Š” Dojo, jQuery, mootools ๋ฐ ํ”„๋กœํ† ํƒ€์ž… JS์˜ ๋„ค ๊ฐ€์ง€ JavaScript ํ”„๋ ˆ์ž„์›Œํฌ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์˜ˆ์ œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ ์ฃผ์‹ญ๋‹ˆ๋‹ค. Ajax๋ฅผ ํ†ตํ•ด ์ฝ˜ํ…์ธ ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฐ€์žฅ ํฐ ๋‹จ์  ์ค‘ ํ•˜๋‚˜๋Š” ํ™”๋ฉด ํŒ๋…๊ธฐ์— ์˜์กดํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฝ˜ํ…์ธ  ์—…๋ฐ์ดํŠธ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹œ๊ฐ ์žฅ์• ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€ ๋ฐ ์ƒํƒœ ํ‘œ์‹œ๊ธฐ๋Š” ์ฝ˜ํ…์ธ ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ์‹œ๊ฐ์  ๋Œ€๊ธฐ์—ด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ ์žฅ์• ๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ํšจ๊ณผ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๋ฅผ ๊บผ๋‚ด์–ด Ajax ๊ธฐ๋ฐ˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํ™”๋ฉด ํŒ๋…๊ธฐ์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ธฐ์ˆ ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. surprise.html์€ Ajax_example.html ๋‚ด์—์„œ ๋กœ๋“œํ•  ํŒŒ์ผ์ž…๋‹ˆ๋‹ค - AJAX๋ฅผ ํ†ตํ•ด! Ajax๋Š” ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ ๋‹ค์Œ ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜์ง€ ์•Š๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ์—๊ฒŒ XMLHttpRequest ๊ฐ์ฒดGET ๋˜๋Š” POST๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜์ง€ ์•Š๊ณ  ์„œ๋ฒ„ ์‘๋‹ต์„ ๊ฒ€์ƒ‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด๊ธฐ XML CD ์นดํƒˆ๋กœ๊ทธ ๋ณด๊ธฐ HTML ํ…Œ์ด๋ธ”์—์„œ XML ๋ฐ์ดํ„ฐ ํ‘œ์‹œ XML ๋ฐ์ดํ„ฐ ๋‚ด์˜ XML ๋ฐ์ดํ„ฐ XML ์š”์†Œ XML ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด ํƒ์ƒ‰ XML ๋…ธ๋“œ ๊ฐ„๋‹จํ•œ CD ์นดํƒˆ๋กœ๊ทธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋•Œ๋•Œ๋กœ, ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ์•„์•ฝ์Šค ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Ajax ํ˜ธ์ถœ์ด ์‹คํŒจํ•˜๊ฑฐ๋‚˜ Ajax ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜์ง€๋งŒ ์ผ์ • ์‹œ๊ฐ„ ๋‚ด์— ๊ฒ€์ƒ‰๋œ ๊ฒฝ์šฐ์—๋งŒ ๊ฒฐ๊ณผ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ์ง€์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ๋Š” ์ด ์ž์Šต์„œ์˜ ์ฃผ์ œ์ธ $.ajax()๋ผ๊ณ  ํ•˜๋Š” jQuery์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” API ์„œ๋น„์Šค์™€ ํ•จ๊ป˜ Ajax๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๊ธฐ๋ณธ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. del.icio.us API๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๋ฐฉ๋ฒ•๊ณผ ๊ฐœ๋…์€ Digg`s ๋˜๋Š” Flickr`s์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ธ๊ธฐ์žˆ๋Š” ์„œ๋น„์Šค์— ์ ์šฉ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›๊ฒฉ XML ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐ ๊ณ ๋ฏผํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ•„์ˆ˜์ ์ธ ๋ฆฌ์†Œ์Šค์ž…๋‹ˆ๋‹ค .

์˜จํ†จ๋กœ์ง€ ์˜ˆ์ œ

์›์ž์˜ ๊ฐœ๋…์€ ํ˜„๋ฏธ๊ฒฝ์˜ ๋ฌผ๋ฆฌ์  ๊ฐœ์ฒด๋กœ ํ™•๋ฆฝ๋˜๊ณ  ๊ธด ์ฒ ํ•™์  ์—ญ์‚ฌ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋“ค์€ ์œก์•ˆ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋„ˆ๋ฌด ์ž‘์Šต๋‹ˆ๋‹ค. 19์„ธ๊ธฐ์— ๋“ค์–ด์„œ๋ฉด์„œ ๋ฌผ๋ฆฌ์  ์›์ž์˜ ํฌ๊ธฐ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์ถ”์ •์น˜๊ฐ€ ํƒ€๋‹นํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์›์ž ํšจ๊ณผ์˜ ๊ฑฐ์˜ ์ง์ ‘์ ์ธ ๊ฒฝํ—˜์  ๊ด€์ฐฐ์€ ๋งค์šฐ 20 ์„ธ๊ธฐ ์ดˆ์— ์•Œ๋ฒ„ํŠธ ์•„์ธ์Šˆํƒ€์ธ์— ์˜ํ•ด ๋ธŒ๋ผ์šด ์šด๋™์˜ ์ด๋ก ์  ์กฐ์‚ฌ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ๋•Œ์—๋„, ์›์ž์˜ ์ง„์ •ํ•œ ์กด์žฌ๋Š” ์ผ๋ถ€์— ์˜ํ•ด ๋…ผ์˜๋˜์—ˆ๋‹ค. ๊ทธ ๊ฐ™์€ ๋…ผ์Ÿ์€ `์†Œ์šฐ์ฃผ ์˜จํ†จ๋กœ์ง€`๋กœ ํ‘œ์‹œ๋  ์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ `์†Œ์šฐ์ฃผ`๋ผ๋Š” ๋‹จ์–ด๋Š” ์›์ž์™€ ๊ฐ™์€ ์ž‘์€ ์‹ค์ฒด์˜ ๋ฌผ๋ฆฌ์  ์„ธ๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ด€๊ณ„์˜ ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ํ˜•์„ฑ์˜ ์˜ˆ. ๊ด€๊ณ„์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์„ ๋งŒ๋“ค๊ณ  ์˜ฌ๋นผ๋ฏธ์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด topObjectProperty, Protรฉgรฉ 5์—์„œ ํƒญ์„ ์„ ํƒํ•˜๊ณ  ์˜ฌ๋นผ๋ฏธ๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„๊ตฌ ๋ชจ์Œ์€ ๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. ์ƒˆ ์œ ํ˜•์˜ ๊ด€๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹จ์ถ”๋ฅผ ํด๋ฆญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ผ๋Š” ์ฐฝ์—์„œ ๊ด€๊ณ„ ์œ ํ˜•(์˜ˆ: (๊ทธ๋ฆผ 14)์— ๋Œ€ํ•œ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ํ™•์ธ์„ ๋ˆŒ๋Ÿฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์ฒด ๋„๋ฉ”์ธ์˜ ๊ฐœ๋…๊ณผ ์กฐ๊ฑด์ž ํ˜•์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜(๊ฐœ์ฒด ์†์„ฑ)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์†์„ฑ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ, ์˜ˆ๋ฅผ ๋“ค์–ด "๋ฌธ์ œ ํ•ด๊ฒฐ" ๋˜๋Š” "๊ด€๊ณ„์˜ ๊ธฐ๋Šฅ์  ๋ฐฉํ–ฅ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." "์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค", ๋“ฑ๋“ฑ; ์‹œ๋งจํ‹ฑ ์›น์—์„œ ์–ดํœ˜์˜ ์—ญํ• ์€ ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์— ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด์— ๋ชจํ˜ธ์„ฑ์ด ์กด์žฌํ•˜๊ฑฐ๋‚˜ ์•ฝ๊ฐ„์˜ ์ถ”๊ฐ€ ์ง€์‹์ด ์ƒˆ๋กœ์šด ๊ด€๊ณ„์˜ ๋ฐœ๊ฒฌ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ์„ ๋•๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฑด๊ฐ• ๊ด€๋ฆฌ ๋ถ„์•ผ์—์„œ ์˜จํ† ๋กœ๊ทธ(ontologies)๋ฅผ ์ ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์˜๋ฃŒ ์ „๋ฌธ๊ฐ€๋“ค์€ ์ฆ์ƒ, ์งˆ๋ณ‘ ๋ฐ ์น˜๋ฃŒ์— ๋Œ€ํ•œ ์ง€์‹์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ œ์•ฝ ํšŒ์‚ฌ๋Š” ์•ฝ๋ฌผ์— ๋Œ€ ํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ทธ๋“ค์„ ์‚ฌ์šฉ ํ•˜ ์—ฌ, ๋ณต์šฉ๋Ÿ‰, ๊ทธ๋ฆฌ๊ณ  ์•Œ๋ ˆ๋ฅด๊ธฐ. ์˜๋ฃŒ ๋ฐ ์ œ์•ฝ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ด๋Ÿฌํ•œ ์ง€์‹์„ ํ™˜์ž ๋ฐ์ดํ„ฐ์™€ ๊ฒฐํ•ฉํ•˜๋ฉด ๊ฐ€๋Šฅํ•œ ์น˜๋ฃŒ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์˜์‚ฌ ๊ฒฐ์ • ์ง€์› ๋„๊ตฌ์™€ ๊ฐ™์€ ๋ชจ๋“  ์ง€๋Šฅํ˜• ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฝ๋ฌผ ํšจ๋Šฅ ๋ฐ ๊ฐ€๋Šฅํ•œ ๋ถ€์ž‘์šฉ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๋Š” ์‹œ์Šคํ…œ; ์—ญํ•™ ์—ฐ๊ตฌ๋ฅผ ์ง€์›ํ•˜๋Š” ๋„๊ตฌ. ์ง€์  ์‹œ์Šคํ…œ์˜ ์˜จํ†จ๋กœ์ง€ ๋ชจ๋ธ Ont (SD)๋Š” ๊ธฐ๋ณธ ๊ฐœ๋… (์ฃผ์ฒด - ์ฃผ์ œ ๋„๋ฉ”์ธ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…)์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ ์†์„ฑ๊ณผ ๊ทธ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค : ๊ทธ๋ฆฌ์Šค ์ฒ ํ•™์ž๋Š” ๋‹ค์†Œ ๊ฐ•๋ฐ•๊ด€๋…์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์˜จํ† ํ•™์ž: ์„ธ์ƒ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ง€์‹์— ๋Œ€ํ•œ ๊ทธ๋“ค์˜ ์š•๋ง์—์„œ, ๊ทธ๋“ค์€ ์‚ฌ๋ฌผ์„ ๋ถ„๋ฅ˜ํ•˜๊ณ  ๋ฒ”์ฃผ๊ฐ€ ์žˆ์–ด์•ผํ•˜๊ณ  ๊ทธ๋“ค์—๊ฒŒ ์†ํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์—ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ฆฌ์Šคํ† ํ…”๋ ˆ์Šค๋Š” "์ž์—ฐ์˜ ์‚ฌ๋‹ค๋ฆฌ"์— ๋Œ€ํ•ด ๋งค์šฐ ์˜ํ–ฅ๋ ฅ ์žˆ๋Š” ๋…ผ์Ÿ์„ ๋ฒŒ์˜€๋Š”๋ฐ, ์ด ๋…ผ์Ÿ์€ ๋น„์ƒ๋ฌผ์„ ๋ฐ”๋‹ฅ์— ๋†“์€ ํ›„(์˜ˆ: ๋ฐ”์œ„์™€ ๊ตฌ๋ฆ„) ๋ฐ”๋‹ฅ์— ๋†“์€ ๋‹ค์Œ ์‹๋ฌผ, ๋™๋ฌผ, ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์ธ๊ฐ„์œผ๋กœ ์˜ฎ๊ฒจ๊ฐ”์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ž์—ฐ ์„ธ๊ณ„์˜ ์กด์žฌ๋ก  ์ด๋ก ์ด๋ฉฐ, ์ค‘์„ธ ์ฒ ํ•™๊ณผ ์•„๋ฆฌ์Šคํ† ํ…”๋ ˆ์Šค์˜ ๋„๋• ์ด๋ก ์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ์˜ํ–ฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์ณค๋‹ค. Protรฉgรฉ 5 ํŽธ์ง‘๊ธฐ์˜ ๊ธฐ๋ณธ ์ฐฝ์€ , , , , , <ํด๋ž˜์Šค๋ณ„ ๊ฐœ์ธ,

, , ๋“ฑ๋“ฑ (๊ทธ๋ฆผ 7).

์ฒ ํ•™ ์˜ ๋ถ„์•ผ์—์„œ ์šฉ์–ด ์˜จํ†จ๋กœ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์— ์•ฝ๊ฐ„์˜ ๋ณ€ํ™”๊ฐ€์žˆ๋‹ค. ์˜จํ†จ๋กœ์ง€๋Š” ํ˜•์ด์ƒํ•™๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ตœ๊ทผ์˜ ์šฉ์–ด์ด๋ฉฐ, ์กด์žฌ์— ๋Œ€ํ•œ ๊ทธ๋ฆฌ์Šค์šฉ์–ด์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ๊ทธ ๋ฟŒ๋ฆฌ ์˜๋ฏธ๋ฅผ ์ทจํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ ๋ธ”๋ฃจํˆฌ์Šค ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค ์˜ˆ์ œ

์„œ๋น„์Šค๋Š” ํ™œ๋™ ํ˜ธ์ถœ startService() ๋ฉ”์„œ๋“œ์™€ ๊ฐ™์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์„ฑ ์š”์†Œ ๋•Œ ์‹œ์ž‘ ๋ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ ์‹œ์ž‘๋˜๋ฉด ์‹œ์ž‘๋œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์†Œ๋ฉธ๋˜๋”๋ผ๋„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฌด๊ธฐํ•œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. Android 3.0๋ถ€ํ„ฐ Bluetooth API์—๋Š” ๋ธ”๋ฃจํˆฌ์Šค ํ”„๋กœํ•„ ์ž‘์—…์— ๋Œ€ํ•œ ์ง€์›์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธ”๋ฃจํˆฌ์Šค ํ”„๋กœํŒŒ์ผ์€ ์žฅ์น˜ ๊ฐ„์˜ ๋ธ”๋ฃจํˆฌ์Šค ๊ธฐ๋ฐ˜ ํ†ต์‹ ์„ ์œ„ํ•œ ๋ฌด์„  ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์–‘์ž…๋‹ˆ๋‹ค. ํ•ธ์ฆˆํ”„๋ฆฌ ํ”„๋กœํ•„์„ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํœด๋Œ€ํฐ์ด ๋ฌด์„  ํ—ค๋“œ์…‹์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‘ ์žฅ์น˜ ๋ชจ๋‘ ํ•ธ์ฆˆํ”„๋ฆฌ ํ”„๋กœํ•„์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. IntentService์—๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์—๋„ ํ•ญ๋ชฉ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์š”์†Œ์˜ ์ž์‹์ธ ์š”์†Œ๋กœ ์ด ํ•ญ๋ชฉ์„ ์ œ๊ณต: ์‹œ์ž‘๋œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์„ค๋ช…์„œ์— ๋”ฐ๋ผ Android 3.0(API ์ˆ˜์ค€ 11)๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ํ—ค๋“œ์…‹์œผ๋กœ ์ „์†ก๋˜๋Š” ๊ณต๊ธ‰์—…์ฒด๋ณ„ AT ๋ช…๋ น(์˜ˆ: ํ”Œ๋žœํŠธ๋กœ๋‹‰์Šค +XEVENT ๋ช…๋ น).

์˜ˆ๋ฅผ ๋“ค์–ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์—ฐ๊ฒฐ๋œ ์žฅ์น˜์˜ ๋ฐฐํ„ฐ๋ฆฌ ์ˆ˜์ค€์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ๊ฑฐ๋‚˜ ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ACTION_VENDOR_SPECIFIC_HEADSET_EVENT ์˜๋„์— ๋Œ€ํ•œ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด ํ—ค๋“œ์…‹์— ๋Œ€ํ•œ ๊ณต๊ธ‰์—…์ฒด๋ณ„ AT ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ android์—์„œ startService() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ ํ•˜ ์—ฌ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ ํ•˜๋Š” ๊ฒฝ์šฐ stopService()๋ฅผ ์‚ฌ์šฉ ํ•˜ ์—ฌ ์ค‘์ง€ ํ•˜๊ฑฐ๋‚˜ stopSelf()๋ฅผ ์‚ฌ์šฉ ํ•˜ ์—ฌ ์ค‘์ง€ ํ•  ๋•Œ๊นŒ์ง€ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ ํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์†Œ๋ฉธ ๋˜ ๋”๋ผ๋„ ์„œ๋น„์Šค๊ฐ€ ๊ณ„์† ์‹คํ–‰ ๋ฉ๋‹ˆ๋‹ค. ๋ธ”๋ฃจํˆฌ์Šค ์—ฐ๊ฒฐ ์˜ˆ์ œ์˜ ์ฒซ ๋ฒˆ์งธ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค. ๋ธ”๋ฃจํˆฌ์Šค LE ์ง€์›์€ ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๋ชจ๋“  ๋ฒ„์ „์—์„œ ๋” ์ข‹์•„์ง€๊ณ ์žˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ iOS๋งŒํผ ์•ˆ์ •์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ ๊ฑฐ๊ธฐ์— ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค. BLE ์ฃผ๋ณ€ ์žฅ์น˜(์˜ˆ: ์ฒด์ค‘ ๊ณ„์ˆ˜, ํ˜ˆ์•• ๋ชจ๋‹ˆํ„ฐ, ํฌ๋„๋‹น ๋ชจ๋‹ˆํ„ฐ ๋“ฑ)๋ฅผ ๋งŒ๋“œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ณต๊ธ‰์—…์ฒด๋Š” ํ‘œ์ค€ Bluetooth LE ํ”„๋กœํŒŒ์ผ์„ ๋”ฐ๋ฅด์ง€ ์•Š๊ณ  ์žฅ์น˜์— ์ž์ฒด ์‚ฌ์–‘์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ Bluetooth LE ์žฅ์น˜์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํ‘œ์ค€ BLE ์‚ฌ์–‘์„ ๋”ฐ๋ฅธ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋”๋ผ๋„ ํ•ญ์ƒ ์žฅ์น˜ ๊ณต๊ธ‰์—…์ฒด์— ์ƒ˜ํ”Œ์„ ์š”์ฒญํ•˜์‹ญ์‹œ์˜ค. ํ†ต์‹  ํ๋ฆ„์€ ๊ณต๊ธ‰์—…์ฒด๋งˆ๋‹ค ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜์‹ ๊ธฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค, ์š”์†Œ์—์„œ ์šฐ๋ฆฌ์˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ AndroidManifest.xml ๋‚ด์—์„œ, ์šฐ๋ฆฌ๋Š” ์™„์ „ํžˆ ์ž๊ฒฉ์„ ๊ฐ–์ถ˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๋Š” ์šฐ๋ฆฌ์˜ ๋ฐฉ์†ก ์ˆ˜์‹ ๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค : ์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ์€ ๋ธ”๋ฃจํˆฌ์Šค์— ๋Œ€ํ•œ ์ง€์›์„ ํฌํ•จ ๋„คํŠธ์›Œํฌ ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ์žฅ์น˜๊ฐ€ ๋‹ค๋ฅธ Bluetooth ์žฅ์น˜์™€ ๋ฌด์„ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ์ œ์—์„œ๋Š” ๋ธ”๋ฃจํˆฌ์Šค๋ฅผ ํ™œ์„ฑํ™” ํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๊ฑฐ ์•ผ, ๊ทผ์ฒ˜ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๋ธ”๋ฃจํˆฌ์Šค ์žฅ์น˜๋ฅผ ๋ฐœ๊ฒฌ, ๋‹ค๋ฅธ ๋ฐœ๊ฒฌ ๋˜์ง€ ์•Š์€ ๋ธ”๋ฃจํˆฌ์Šค ์žฅ์น˜์— ๋Œ€ ํ•œ ๊ฒ€์‚ฌ ํ•˜ ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‘ ์žฅ์น˜ ์‚ฌ์ด ์ฑ„ํŒ… ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๋ธ”๋ฃจํˆฌ์Šค ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉ ํ•˜ ์—ฌ. Android O์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์žˆ๋Š” ๊ฒฝ์šฐ(์„ธ ๊ฐ€์ง€ ์กฐ๊ฑด ์ด์ƒ ํ™•์ธ) ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋ช‡ ๋ถ„ ๋™์•ˆ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

android์—์„œ๋Š” ํ™œ๋™, ์„œ๋น„์Šค ๋˜๋Š” ์ˆ˜์‹ ๊ธฐ์™€ ๊ฐ™์€ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ startService() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ startService ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์ƒ˜ํ”Œ ์ฝ”๋“œ ์ฝ”๋“œ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค. ์ด์ œ IntentService ์ž‘์—…์„ ์ •์˜ํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •๋˜๋Š” ์ˆ˜์‹ ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ ์‚ฌ์ง„์ฒฉ ์˜ˆ์ œ

๋””์ž์ธ ์š”์†Œ์˜ ๋›ฐ์–ด๋‚œ ๋ฒ”์œ„, ์•„๋ฆ„๋‹ค์šด ๋ฐฐ๊ฒฝ์˜ ์ˆ˜์ฒœ, ๋‘๊บผ์šด ํŽ˜์ด์ง€์˜ ๋†€๋ผ์šด ํ’ˆ์งˆ, ํฌํ† ๋ถ ์•„๋ฉ”๋ฆฌ์นด๋Š” ์‚ฌ์ง„๊ณผ ์ฐฝ์กฐ์  ์ธ ์žฅ์†Œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์„œ๋‘˜๋Ÿฌ ์žˆ๋‹ค๋ฉด, ํฌํ† ๋ถ ์•„๋ฉ”๋ฆฌ์นด๋Š” ๋‹น์‹ ์˜ ์ฒซ ๋ฒˆ์งธ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ ์ฑ…์˜ ์˜จ๋ผ์ธ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช‡ ๋ฒˆ์˜ ํด๋ฆญ๋งŒ์œผ๋กœ 500 ํŽ˜์ด์ง€์˜ ์‚ฌ์ง„ ์ฑ…์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ์†Œ์…œ ๋ฏธ๋””์–ด์—์„œ ์‚ฌ์ง„์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., ๊ทธ๋ฆฌ๊ณ  ํšŒ์‚ฌ๋Š” ๋‹น์‹ ์˜ ํ•˜๋“œ ์นดํ”ผ์˜ ๋น„์šฉ ๋ฐฐ์†ก์˜ ๋ฌด๋ฃŒ ์ทจ๊ธ‰. ์ด๋™ ์ค‘์—๋„ ๊ธฐ์ˆ ์˜ ํž˜์„ ํ™œ์šฉํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด Shutterfly์˜ iOS ๋ฐ Android ์•ฑ์ด ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ํœด๋Œ€ ์ „ํ™”์—์„œ ์‚ฌ์ง„์„ ์ „์†กํ•˜๊ณ  ์žฅ์น˜์— ๊ณต๊ฐ„์„ ์ •๋ฆฌํ•˜๋Š” ๋ฌด์ œํ•œ ๋ฌด๋ฃŒ ์ €์žฅ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์—ฌ, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์‚ฌ์ง„์„ ์—…๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ง„์ด ์—…๋กœ๋“œ๋˜๋ฉด ์›ํ•˜๋Š” ์ฑ… ํฌ๊ธฐ์™€ ํ…Œ๋งˆ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Shutterfly ์•ฑ์˜ ์žฅ์ ์€ ํ•œ ๋‹ฌ์— ํ•œ ๋ฒˆ ๋ฌด๋ฃŒ ์‚ฌ์ง„์ฒฉ์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์ง„ ์ฑ…์€ ๋‹น์‹ ์ด ์ดฌ์˜ ํ•œ ๋ชจ๋“  ์‚ฌ์ง„์„ ๊ตฌ์„ฑ ํ•  ์ˆ˜์žˆ๋Š” ์žฌ๋ฏธ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ๋˜ํ•œ ๋‹น์‹ ์˜ ์นœ๊ตฌ ๋ฐ ๊ฐ€์กฑ๊ณผ ์ถ”์–ต์„ ์žฌํ˜„ํ•˜๋Š” ์ธ์ƒ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ง์ ‘ ๋งŒ๋“ค๋“  ์˜จ๋ผ์ธ์œผ๋กœ ์‚ฌ์ง„์ฒฉ์„ ๋งŒ๋“ค๋“ , ์‚ฌ์ง„์ฑ…์— ๋…ํŠนํ•œ ํ„ฐ์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋”์šฑ ๊ฐœ์„ฑ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AdoramaPix, ์•„๋งˆ์กด ์ธ์‡„, ์• ํ”Œ ์‚ฌ์ง„ (๋ชจํ‹ฐํ”„), ์œ ๋ฌผ, ์ฝ”์ŠคํŠธ์ฝ”, ๋ฏน์Šค๋ถ, ํ”ผ์นด๋ถ€, ์…”ํ„ฐํ”Œ๋ผ์ด, ์Šค๋ƒ…ํ”ผ์‰ฌ ๋“ฑ 9๊ฐœ์˜ ์ธ๊ธฐ ์›น์‚ฌ์ดํŠธ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, ์–ด๋–ค ์›น์‚ฌ์ดํŠธ๊ฐ€ ํ›Œ๋ฅญํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๊ณผ ์‚ฌ์ง„์ฒฉ์„ ์ œ๊ณตํ•˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ, ์žฅ์†Œ ๋˜๋Š” ์‚ฌ๋ฌผ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๊ฒ€์ƒ‰์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Google ํฌํ† ๋Š” ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์ง„์„ ์ฐพ๊ณ  ์ž๋™์œผ๋กœ ์ตœ์ ์˜ ์‚ฌ์ง„์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์คŒ์œผ๋กœ์จ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ, ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ…Œ์ŠคํŠธ ํ•œ ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜๋กœ ์„œ ์• ํ”Œ ํฌํ† ๋ฅผ ํฌํ•จ. ๊ทธ๋Ÿฌ๋‚˜, ์• ํ”Œ์€ ์‚ฌ์ง„ ์ธ์‡„ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณต ์ค‘์ง€, ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” Motif๋ฅผ ํ…Œ์ŠคํŠธ, ์• ํ”Œ์ด ์ด์ „์— ๋ชจ๋“  ์ธ์‡„ ํ”„๋กœ์ ํŠธ์— ๋Œ€ ํ•œ ๊ณ„์•ฝ ํ–ˆ๋‹ค ํšŒ์‚ฌ์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ์• ํ”Œ ์‚ฌ์ง„์— ๋Œ€ ํ•œ ํ™•์žฅ. ์‚ฌ์ง„ ์ฑ… ๋ ˆ์ด์•„์›ƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋ณด๋‹ค ํฐ ํŠน์ • ์‚ฌ์ง„์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ข‹์•„ํ•˜๋Š” ์‚ฌ์ง„์ด ์ŠคํฌํŠธ๋ผ์ดํŠธ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ •์ด ๋ชจ๋“  ์ฐจ์ด๋ฅผ ๋งŒ๋“œ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. Pixum ํฌํ† ๋ถ์„ ์ฃผ๋ฌธํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋‹น์‹ ์„ ์œ„ํ•ด ๋‹น์‹ ์„ ์œ„ํ•ด convinient ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์–ด, ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ๋‹น์‹ ์˜ ์‚ฌ์ง„ ์ฑ…์„ ๋งŒ๋“ค ์ˆ˜์žˆ๋Š” ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Shutterfly์˜ ๋‚ด ์ฑ… ๋งŒ๋“ค๊ธฐยฎ ์„œ๋น„์Šค๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์ฑ…์„ ๋งŒ๋“ค ๋””์ž์ด๋„ˆ์˜ ์†์— ์‚ฌ์ง„๊ณผ ์ง€์นจ์„ ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ์ฑ…์˜ ๋ชจ๋“  ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์™„์ „ํžˆ ๊ด€์—ฌ ํ•  ์‹œ๊ฐ„์ด๋‚˜ ์š•๋ง์ด์—†๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ฑ…์„ ๋ณด๊ณ  ์‹ถ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์„ ํ˜ธ๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ „๋ฌธ ๋””์ž์ด๋„ˆ๊ฐ€ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์™„๋ฃŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๊บผ์ดํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์ฑ… ๋งŒ๋“ค๊ธฐยฎ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด 5๊ฐ€์ง€ ํฌ๊ธฐ์˜ ํฌํ† ๋ถ๊ณผ 50๊ฐ€์ง€ ์Šคํƒ€์ผ ์ค‘์—์„œ ์„ ํƒํ•˜์„ธ์š”. ๋‹ค์Œ์œผ๋กœ, ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ๋ฐ”ํƒ• ํ™”๋ฉด์—์„œ ์‚ฌ์ง„์„ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ Shutterfly ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ์—…๋กœ๋“œ ํ•œ ์‚ฌ๋žŒ์„ ์„ ํƒํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ„์˜, ์• ํ”Œ์€ ๋งค์šฐ ํ•ฉ๋ฆฌ์ ์ธ ๊ฐ€๊ฒฉ์— ํ’ˆ์งˆ์˜ ์ œํ’ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋””์ž์ธ, ์ƒ‰์ƒ ๋ฐ ๋ฐฐ๊ฒฝ ์˜ต์…˜์˜ ์ œํ•œ๋œ ๋ฒ”์œ„๊ฐ€ ์žˆ์ง€๋งŒ, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์  ์ž…๋‹ˆ๋‹ค. ์‚ฌ์ง„์ฒฉ์— ๋ฒˆํ˜ธ๊ฐ€ ์ž˜๋ชป ๋งค๊ฒจ์ง„ ํŽ˜์ด์ง€, ์‚ฌ์ง„ ๋ณต์ œ ๋ถˆ๋Ÿ‰ ๋˜๋Š” ์ธ์‡„ ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฐ๊ณผ๋กœ ์ž˜๋ชป๋œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ช…๋ฐฑํ•œ ๊ฒฐํ•จ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ์ผํšŒ์„ฑ ์ด๋ฒคํŠธ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์žฌ์ธ์‡„๋ฅผ ์ฃผ๋ฌธํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ฌํ•ด, ์šฐ๋ฆฌ๋Š” ์•„๋„๋ผ๋งˆํ”ฝ์Šค, ์œ ๋ฌผ ๋ด‰๊ธฐ, ๋ฏน์Šค๋ถ, ๋ชจํ‹ฐํ”„์˜ ์žฌ์ธ์‡„๋ฅผ ์ฃผ๋ฌธํ–ˆ์Šต๋‹ˆ๋‹ค. ํฌํ† ๋ถ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ธฐ์–ต์— ๋‚จ๊ณ  ์žฌ๋ฏธ์žˆ๋Š” ์ˆœ๊ฐ„์œผ๋กœ ๊ฐ€๋“์ฐฌ ๊ณต์œ ๋œ ํ–‰๋ณต์˜ ๊ฐœ์ธ ๊ณต๊ฐ„์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ˜ผ์ž ์‚ฌ์ง„์ฒฉ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ฐ€์กฑ ๋ฐ ์นœ๊ตฌ๋“ค๊ณผ ํ•จ๊ป˜ ์‚ฌ์ง„์„ ๋งŒ๋“ค๋“  ๋†€๋ž๊ฒŒ ์•„๋ฆ„๋‹ค์šด ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ ์‚ฌ์ง„ ์ฑ…์€ ๋‹น์‹ ์ด ์‚ฌ๋ž‘ํ•˜๋Š” ์‚ฌ๋žŒ๊ณผ ํ•จ๊ป˜ ๋ณด๋‚ธ ๋ชจ๋“  ๋ฉ‹์ง€๊ณ  ๋…ํŠนํ•˜๊ณ  ์•„๋ฆ„๋‹ค์šด ์ˆœ๊ฐ„์˜ ๋ณด๋ฌผ์ž…๋‹ˆ๋‹ค.

์กฐ๋ฆฝ์ œ๋ฒ• ์˜ˆ์ œ

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

[6] ์กฐ๋ฆฝ์„ ์œ„ํ•ด ๊ณต๊ตฌ๋ฅผ ์ž์ฃผ ์ „ํ™˜ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋‚˜์‚ฌ๊ฐ€ ์–ด๋””๋กœ ๊ฐˆ์ง€ ํ˜ผ๋™ํ•˜๊ธฐ ์‰ฌ์› ์Šต๋‹ˆ๋‹ค. ๋‚ด ์˜ˆ๋ฅผ ๋”ฐ๋ฅด์ง€ ๋งˆ์‹ญ์‹œ์˜ค: ๊ฐ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ „์ฒด ์ œํ’ˆ ๋ผ์ธ์—์„œ ๋ถ€ํ’ˆ์„ ํ‘œ์ค€ํ™”ํ•˜์‹ญ์‹œ์˜ค. ๊ฐ€๋Šฅํ•˜๋ฉด ์ „์ฒด ์–ด์…ˆ๋ธ”๋ฆฌ์— ๋‹จ์ผ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๋ฆฝ์šฉ ์„ค๊ณ„(DFA)๋Š” ์ œํ’ˆ์„ ์‰ฝ๊ฒŒ ์กฐ๋ฆฝํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ์ œํ’ˆ์— ๋ถ€ํ’ˆ์ด ๋” ์ ๊ฒŒ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ์กฐ๋ฆฝ ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ค„์–ด๋“ค์–ด ์กฐ๋ฆฝ ๋น„์šฉ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ถ€ํ’ˆ์— ์†์ต, ์ด๋™, ๋ฐฉํ–ฅ ๋ฐ ์‚ฝ์ž…์ด ์šฉ์ดํ•œ ํ”ผ์ณ๊ฐ€ ์ œ๊ณต๋˜๋ฉด ์กฐ๋ฆฝ ์‹œ๊ฐ„๊ณผ ์กฐ๋ฆฝ ๋น„์šฉ๋„ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ๋ถ€ํ’ˆ ์ˆ˜๋ฅผ ์ค„์ด๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ์ด ๋ถ€ํ’ˆ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€์ ์ธ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์กฐ๋ฆฝ์šฉ ์„ค๊ณ„ ์ ์šฉ์˜ ์ฃผ์š” ๋น„์šฉ ์ด์ ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์กฐ๋ฆฝ ๋ผ์ธ ๋ฐฉ๋ฒ•์€ ์›๋ž˜ ๊ณต์žฅ ์ƒ์‚ฐ์„ฑ๊ณผ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌ๋Ÿ‰ ์ฆ๊ฐ€(์ง€์ •๋œ ๊ธฐ๊ฐ„ ๋™์•ˆ ์ƒ์‚ฐ๋œ ์ œํ’ˆ ์ˆ˜)๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ์ƒˆ๋กญ๊ณ  ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด ๋ฐœ๊ฒฌ๋จ์— ๋”ฐ๋ผ ์กฐ๋ฆฝ ๋ผ์ธ ๋ฐฉ๋ฒ•์˜ ๋ฐœ์ „์ด ์ •๊ธฐ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์ „์‚ฐํšŒ๊ณ„์šด์šฉ์‚ฌ 2๊ธ‰ ์‹ค๊ธฐ ์˜ˆ์ œ

์ด ๊ณผ์ •์€ ๋ฏธ๊ตญ ๊ณต์ธ ํšŒ๊ณ„์‚ฌ ํ˜‘ํšŒ (AICPA)๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์œค๋ฆฌ ๋ฐ ์ „๋ฌธ ํ–‰๋™ ๊ฐ•๋ น์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ฒฝ์˜ํšŒ๊ณ„์‚ฌํ˜‘ํšŒ ๋“ฑ ๋‹ค๋ฅธ ์ „๋ฌธํšŒ๊ณ„๊ธฐ๊ด€์—์„œ ์Šน์ธํ•œ ์œค๋ฆฌ์ง€์นจ๋ฐ ํ–‰๋™๊ฐ•๋ น๋„ ๋„์ž…๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ์ „์‚ฐํ™”๋œ ํ†ตํ•ฉ ์žฌ๋ฌด ํšŒ๊ณ„ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์žฌ๋ฌด ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์ œ์—๋Š” ์ €๋„, ์›์žฅ, ์˜ˆ์‚ฐ, ํŒ๋งค ๋ฐ ๊ตฌ๋งค ๊ฑฐ๋ž˜, ๋ฏธ์ง€๊ธ‰๊ธˆ, ๋ฏธ์ˆ˜๊ธˆ ๋ฐ ํšŒ๊ณ„ ์ •๋ณด ์‹œ์Šคํ…œ์— ์‚ฌ์šฉ๋˜๋Š” ๊ธ‰์—ฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Microsoft Excel์€ ์žฌ๋ฌด ์ œํ‘œ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ฐ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ•์˜. ์„ ํƒ์  ํ•ฉ๊ฒฉ/๋ฌดํ•ฉ๊ฒฉ. CSU๋กœ ์–‘๋„ ๊ฐ€๋Šฅ. ํšŒ๊ณ„ ํ”„๋กœ๊ทธ๋žจ์„ ์™„๋ฃŒํ•˜๋ฉด ์ค‘์†Œ๊ธฐ์—…, ๊ธฐ์—… ํšŒ๊ณ„ ๋ถ€์„œ, ์ •๋ถ€ ๊ธฐ๊ด€ ๋ฐ ๊ณต๊ณต ํšŒ๊ณ„ ํšŒ์‚ฌ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ž‘์—… ํ™˜๊ฒฝ์—์„œ ๊ณ ์šฉ์„ ํ™•๋ณด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์žฌ์ •์„ ๋” ์ž˜ ๊ด€๋ฆฌํ•˜๊ณ , ์ž์‹ ์˜ ์‚ฌ์—…์„ ๊ฐœ์„คํ•˜๊ฑฐ๋‚˜, ํ˜„์žฌ ์ง์—…์— ์ถ”๊ฐ€ ๊ธฐ์ˆ ์„ ๋„์ž…ํ•˜๊ณ ์ž ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋„ ์ข‹์€ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค. ๊ณต๊ณต ํšŒ๊ณ„์˜ ์›์น™, ์ ˆ์ฐจ ๋ฐ ํ‘œ์ค€.

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

์œ„ํ—˜ ํ‰๊ฐ€๋Š” ๋ชจ๋“  ์ž ์žฌ์  ์œ„ํ—˜์„ ์‚ฌ์ „์— ๊ฒฐ์ •ํ•˜๋Š” ์กฐ์น˜, ์›์ธ, ํ™•๋ฅ  ๋ฐ ์ด๋ฅผ ํ”ผํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์ฑ…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ„ํ—˜์ด ํšŒ์‚ฌ์˜ ์„ฑ๊ณผ์™€ ์žฌ๋ฌด ์ƒํƒœ์— ์–ด๋–ป๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ธˆ์œต ์œ„ํ—˜ ๋“ฑ์— ์ง๋ฉดํ•˜๋Š” ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•. ๋ชจ๋‹ˆํ„ฐ๋ง์€ ํšŒ์‚ฌ์˜ ์šด์˜ ๋ฐ ์ธ๋ ฅ์— ๋Œ€ํ•œ ํ’ˆ์งˆ ๊ด€๋ฆฌ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ๋Š” ๊ด€๋ฆฌ์ž์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ธฐ์ˆ ๊ณผ ๊ด€๋ จ๋œ ๊ณ ๊ธ‰ ๊ด€๋ฆฌ ๋ฐ ๋น„์šฉ ํšŒ๊ณ„ ์ฃผ์ œ๋ฅผ ์‚ดํŽด๋ด…์Šต๋‹ˆ๋‹ค. ์ฃผ์ œ์—๋Š” ํ™œ๋™ ๊ธฐ๋ฐ˜ ์›๊ฐ€ ๊ณ„์‚ฐ, ํ™œ๋™ ๊ธฐ๋ฐ˜ ๊ด€๋ฆฌ, ํ’ˆ์งˆ ๋น„์šฉ, ์šฉ๋Ÿ‰ ๊ณ„ํš๊ณผ ๊ด€๋ จ๋œ ์ œ์•ฝ ์กฐ๊ฑด ์ด๋ก  ๋ฐ ๊ด€๋ฆฌ ์˜์‚ฌ ๊ฒฐ์ •์„ ์ง€์›ํ•˜๋Š” ์ƒˆ๋กœ์šด ์‚ฌ๋ก€๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํšŒ๊ณ„ ํ”„๋กœ๊ทธ๋žจ์˜ ํ•™์ƒ๋“ค์€ ํšŒ๊ณ„ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ์— ๋„์ „์ ์ธ ๊ณผ์ •์„ ์ˆ˜๊ฐ•ํ•˜์—ฌ ๊ฒฝ๋ ฅ์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์‚ฌ๋Š” ํ•™์ƒ๋“ค์—๊ฒŒ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ์ƒ์„ฑ ๋ฐ ๋ถ„์„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ „์‚ฐํ™”๋œ ํšŒ๊ณ„ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ตœ์‹  ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ€๋ฅด์นฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ „์‚ฐํ™” ๋ฐ ์ˆ˜๋™ ํšŒ๊ณ„ ๋ชจ๋‘ ์žฅ์ ๊ณผ ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์ผ“ํ†ต์‹  ์˜ˆ์ œ

์›น์†Œ์ผ“ ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜ getData(cmd){์ƒˆ ์•ฝ์†(ํ•จ์ˆ˜, ๊ฑฐ๋ถ€){client.on(`๋ฐ์ดํ„ฐ`, ํ•จ์ˆ˜(๋ฐ์ดํ„ฐ){console.log("!!!!!! ์•ฝ์†์ด๋ผ๊ณ "); ํ•ด๊ฒฐ(๋ฐ์ดํ„ฐ); }); client.on(`error`), ํ•จ์ˆ˜(error){ ๊ฑฐ๋ถ€(error); }; client.write(cmd); }) .catch(ํ•จ์ˆ˜(์˜ค๋ฅ˜) { //์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค, ์˜ค๋ฅ˜ ์ฝ˜์†”.log(error.message); }; } ํด๋ผ์ด์–ธํŠธ๊ฐ€ IP ์ฃผ์†Œ ๋ฐ ํฌํŠธ ๋ฒˆํ˜ธ์— ๋Œ€ํ•œ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ ํ•œ ๋ฒˆ ์ดˆ๊ธฐํ™”๋œ TCP ์†Œ์ผ“ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ „์—ญ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ๊ฐ™์€ ๋ฃจํ”„ ๋ญ”๊ฐ€์—์„œ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ : @i-am-vivek ๋‹น์‹ ์ด "์—์ฝ” ์„œ๋ฒ„"๋ฅผ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์‹œ๋„ํ•˜์ž : socket.pipe (์†Œ์ผ“); ์™€ ํ•จ๊ป˜: `````on(`๋ฐ์ดํ„ฐ`, ๊ธฐ๋Šฅ(data){์ฝ˜์†”.log(๋ฐ์ดํ„ฐ); var textChunk = data.toString(`utf8`); ์ฝ˜์†”.log(textChunk); }; ๋จผ์ € ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค๋ช…ํ•˜๋Š” package.json ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ์ „์šฉ ๋นˆ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค (๋‚˜๋Š” ๋‚ด ์ฑ„ํŒ… ์˜ˆ์ œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค). Btw, WebSockets ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ ํ•œ ์ข€ ๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ฐพ๊ณ  ์žˆ๋‹ค๋ฉด ์ด ๋ฌธ์„œ Websockets 101์„ ๊ถŒ์žฅ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ฐจ์ด์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”? ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ๋“ค์€ ๊ฐ™์€ ์ผ, ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ์šฐ๋ฆฌ๊ฐ€ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์˜ ๋‹ค๋ฅธ ๊ทœ์น™์„ ์‚ฌ์šฉ. ์ฒซ ๋ฒˆ์งธ ์˜ˆ์ œ์—์„œ๋Š” ์—ฐ๊ฒฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ net.createServer()์— ์ „๋‹ฌํ•˜๊ณ  listen() ํ•จ์ˆ˜๋ฅผ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ›„์ž์˜ ๊ฒฝ์šฐ, ์šฐ๋ฆฌ๋Š” ์ข€ ๋” `์ „ํ†ต์ ์ธ` ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋А ์ชฝ์ด๋“  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

XMLHttpRequest(XHR)๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์Šคํฌ๋ฆฝํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ € ์ˆ˜์ค€ API์ž…๋‹ˆ๋‹ค. XHR์€ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ 5์—์„œ ์ฒ˜์Œ ์„ ๋ณด์˜€์œผ๋ฉฐ ๋น„๋™๊ธฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐ XML(AJAX) ํ˜๋ช…์˜ ํ•ต์‹ฌ ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋˜์—ˆ์œผ๋ฉฐ, ํ˜„์žฌ ๊ฑฐ์˜ ๋ชจ๋“  ์ตœ์‹  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜๋ฉด (์ฆ‰, readyState๋Š” OPEN์ž…๋‹ˆ๋‹ค), ์˜ˆ์ œSocket.protocol์€ ์„œ๋ฒ„๊ฐ€ ์„ ํƒํ•œ ํ”„๋กœํ† ์ฝœ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ƒˆ WebSocket์— ๋Œ€ํ•œ ๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค("ws://javascript.info/chat"). ์—ฌ์ „ํžˆ ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ๋งค์šฐ ๊ฐ„๋‹จ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ์†Œ์ผ“์— https://github.com/websockets/ws ๋ชจ๋“ˆ์ด ์žˆ๋Š” Node.js๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์—์„œ๋Š” wss://www.example.com/socketserver ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๋Š” ์ƒˆ WebSocket์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. "protocolOne"์˜ ์‚ฌ์šฉ์ž ์ง€์ • ํ”„๋กœํ† ์ฝœ์€ ์ด ์˜ˆ์ œ์˜ ์†Œ์ผ“ ์š”์ฒญ์— ์ด๋ฆ„์ด ์ง€์ •๋˜์ง€๋งŒ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. socket.pipe(์†Œ์ผ“)๋Š” ๋ชจ๋“  ๋‹จ์ผ ์š”์ฒญ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ๋‹ซ์ง€ ์•Š์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์†Œ์ผ“์—์„œ ์—ฌ๋Ÿฌ ์š”์ฒญ/์‘๋‹ต์„ ์ˆ˜์‹ ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ "๋ฐ์ดํ„ฐ" ์ด๋ฒคํŠธ๋„ "์“ฐ๊ธฐ"๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‚ฌ์šฉ์ž ๊ณ ์œ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ด ๊ฒƒ์„ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” socket.send (๋ฐ์ดํ„ฐ)๋ฅผ ๊ฑฐ๋“ญ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋ฒ„ํผ๋ง (์ €์žฅ)๋˜๊ณ  ๋„คํŠธ์›Œํฌ ์†๋„๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ํ•œ ๋นจ๋ฆฌ๋งŒ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์†Œ์ผ“์ด ์‹ค์ œ๋กœ ์ „์†ก์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์„ ๋‹ซ๊ธฐ ์ „์— ์†Œ์ผ“์˜ bufferedAmount ํŠน์„ฑ์„ ๊ฒ€์‚ฌํ•˜์—ฌ ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ง ์ „์†ก๋˜์ง€ ์•Š์€์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๋ฐ” ์›น์„œ๋น„์Šค ์˜ˆ์ œ

๋‹น์‹ ์€ ๋‚˜๋จธ์ง€ ๋ฐ ๋น„๋ˆ„ ์›น ์„œ๋น„์Šค๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ์œ„ํ•œ ์ž์Šต์„œ๋ฅผ ์ถ”๊ฐ€ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„์ด ์ €์ง€ ๊ธฐ๋ฐ˜์ธ ์„œ๋ฒ„์—์„œ๋Š” ์ €์ง€ API๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•˜์ง€๋งŒ ํด๋ž˜์Šค๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์„œ๋ฒ„๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ €์ง€ ๊ธฐ๋ฐ˜ ๊ตฌํ˜„์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. JAX-RS์— ์ถ”๊ฐ€๋œ ์›น ์„œ๋น„์Šค๊ฐ€ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„์„ ์•Œ๋ ค์ฃผ๋ฉด ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค: com.vogella.jersey.first.client๋ฅผ ์ตœ์ƒ์œ„ ํŒจํ‚ค์ง€ ์ด๋ฆ„์œผ๋กœ ์ƒˆ Java gradle ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. build.gradle ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ €์ง€ ์ข…์†์„ฑ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ‘œ์ค€ํ™”๋œ ํ”„๋กœํ† ์ฝœ - ์›น ์„œ๋น„์Šค๋Š” ํ†ต์‹ ์„ ์œ„ํ•ด ํ‘œ์ค€ํ™”๋œ ์‚ฐ์—… ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋„ค ๊ฐœ์˜ ๊ณ„์ธต(์„œ๋น„์Šค ์ „์†ก, XML ๋ฉ”์‹œ์ง•, ์„œ๋น„์Šค ์„ค๋ช… ๋ฐ ์„œ๋น„์Šค ๊ฒ€์ƒ‰ ๊ณ„์ธต)์€ ์›น ์„œ๋น„์Šค ํ”„๋กœํ† ์ฝœ ์Šคํƒ์—์„œ ์ž˜ ์ •์˜๋œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ WAR ํŒŒ์ผ, helloservice-war.war๋กœ ๋นŒ๋“œํ•˜๊ณ  ํŒจํ‚ค์ง€ํ™”ํ•˜๋ฉฐ, tut-install/์˜ˆ์ œ/jaxws/helloservice-war/target/์— ์œ„์น˜ํ•˜๋ฉฐ, ์ด WAR ํŒŒ์ผ์„ GlassFish ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํด๋ผ์ด์–ธํŠธ ์—†์ด ์„œ๋น„์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์— ํ‘œ์‹œ๋œ URL์—์„œ ์›น ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—ฝ๋‹ˆ๋‹ค. ๋‘˜์งธ, ํด๋ผ์ด์–ธํŠธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์˜ฌ๋ฐ”๋ฅธ ์›น ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ์›น ์„œ๋น„์Šค๊ฐ€ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์€ ์›น ์„œ๋น„์Šค ์„ค๋ช… ์–ธ์–ด๋กœ ์•Œ๋ ค์ง„ WSDL์˜ ๋„์›€์„ ๋ฐ›์•„ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. WSDL ํŒŒ์ผ์€ ๋‹ค์‹œ XML ๊ธฐ๋ฐ˜ ํŒŒ์ผ๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์›น ์„œ๋น„์Šค๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. WSDL ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์›น ์„œ๋น„์Šค์˜ ์œ„์น˜์™€ ์›น ์„œ๋น„์Šค๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UDDI๋Š” ํŠน์ • ์„œ๋น„์Šค ๊ณต๊ธ‰์ž๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์›น ์„œ๋น„์Šค๋ฅผ ์„ค๋ช…, ๊ฒŒ์‹œ ๋ฐ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ์›น ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜๋Š” ์‚ฌ์–‘์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž์Šต์„œ์—์„œ๋Š” JAVA ์›น ์„œ๋น„์Šค์™€ JAX-WS ๋ฐ JAX-RS์™€ ๊ฐ™์€ ์‚ฌ์–‘์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž์Šต์„œ์—์„œ๋Š” RPC ์Šคํƒ€์ผ๋กœ JAX-WS ์˜ˆ์ œ, ๋ฌธ์„œ ์Šคํƒ€์ผ๋ณ„ JAX-WS ์˜ˆ์ œ, ์ €์ง€๋ณ„ JAX-RS ์˜ˆ์ œ ๋ฐ RESTeasy ๊ตฌํ˜„์— ์˜ํ•œ JAX-RS ์˜ˆ์ œ์™€ ๊ฐ™์€ ๋งŽ์€ ์›น ์„œ๋น„์Šค ์˜ˆ์ œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. TheServerSide๋Š” ์Šคํ”„๋ง ๋ถ€ํŒ… ๋ฐ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์ œ๋กœ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ์™€ ํ•จ๊ป˜ ํšจ๊ณผ์ ์ธ RESTful ์›น ์„œ๋น„์Šค ๋””์ž์ธ์˜ ์‹ ์กฐ์— ๋Œ€ํ•œ ๋งŽ์€ ๊ธฐ์‚ฌ๋ฅผ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด JAX-RS ์ž์Šต์„œ์—์„œ๋Š” ํ‘œ์ค€ Java EE API์™€ ํ™•์žฅ๋œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ฒ„์ „์ธ Tomcat, TomEE Plus๋ฅผ ๋ฐฐํฌ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋™์ผํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜์—ฌ ๊ธฐ๋ณธ ์‚ฌํ•ญ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ดํด๋ฆฝ์Šค์™€ TomEE Plus๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Java์˜ ์ด ๋‹จ๊ณ„๋ณ„ JAX-RS RESTful ์›น ์„œ๋น„์Šค ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด 15๋ถ„ ์ด๋‚ด์— ์ตœ์‹  ์›น ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๊ธฐ์ˆ ์„ ๋น ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„๊ตฌ์—†์ด, ๋‹น์‹ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž๋ฐ” ์›น ์„œ๋น„์Šค ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค : ์›น ์„œ๋น„์Šค ์ž์Šต์„œ๋Š” ํ”„๋กœํ† ์ฝœ, ๋น„๋ˆ„, RESTful, ์ž๋ฐ” ์›น ์„œ๋น„์Šค ๊ตฌํ˜„, JAX-WS์™€ ๊ฐ™์€ ์›น ์„œ๋น„์Šค์˜ ๊ธฐ๋ณธ ๋ฐ ๊ณ ๊ธ‰ ๊ฐœ๋…์„ ์ œ๊ณตํ•˜๋Š” ์ดˆ๋ณด์ž์™€ ์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค JAX-RS ์ž์Šต์„œ ๋ฐ ์˜ˆ์ œ. ์˜ˆ๋ฅผ ๋“ค์–ด Amazon์€ amazon.com ํ†ตํ•ด ์˜จ๋ผ์ธ์œผ๋กœ ํŒ๋งค๋˜๋Š” ์ œํ’ˆ์— ๋Œ€ํ•œ ๊ฐ€๊ฒฉ์„ ์ œ๊ณตํ•˜๋Š” ์›น ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ŸฐํŠธ ์—”๋“œ ๋˜๋Š” ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ณ„์ธต์€ .Net ๋˜๋Š” Java์— ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์›น ์„œ๋น„์Šค์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ์„œ๋น„์Šค ์ž์Šต์„œ๋ฅผ ๊ฐœ๋ฐœ ํ•˜ ๊ณ  ์‹ ์ค‘ ํ•˜ ๊ฒŒ ํ…Œ์ŠคํŠธ ๋ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์šฐ๋ฆฌ์˜ ํŠœํ† ๋ฆฌ์–ผ์—์„œ ์–ด๋–ค ๋ฌธ์ œ ๋˜๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด, ๋‹น์‹ ์€ ์šฐ๋ฆฌ์—๊ฒŒ๋ณด๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ์›น ์„œ๋น„์Šค ํŠœํ† ๋ฆฌ์–ผ์—์„œ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค, ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

1d cnn ์˜ˆ์ œ

์ด ๊ฒŒ์‹œ๋ฌผ์˜ ์•„์ด๋””์–ด๋Š” ๋‹น์‹ ์—๊ฒŒ ๋‹น์‹ ์˜ ์ž์‹ ์˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ถœ๋ฐœ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋งŽ์€ ์˜ˆ ๋˜๋Š” ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Xtrain.reshape(num_of_examples, num_of_features, num_of_signals)์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์–‘์„ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ชจ๋ธ์˜ input_shape๋ฅผ (45, 6)์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์ œ๋Š” ์ œ์ด์Šจ ๋ธŒ๋ผ์šด๋ฆฌ์˜ ํ›Œ๋ฅญํ•œ ์ž์Šต์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ธ๊ฐ„์˜ ํ™œ๋™ ์ธ์‹ ๋ฌธ์ œ๋ฅผ ์ด์šฉํ•˜์—ฌ, ํƒ€์ž„์‹œ๋ฆฌ์ฆˆ ๋ถ„๋ฅ˜๋ฅผ ์œ„ํ•œ 1์ฐจ์› ์ปจ๋ณผ๋ฃจ์…˜ ์‹ ๊ฒฝ๋ง์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค€๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š” ์ œ์ด์Šจ, ์ด ๊ฒŒ์‹œ๋ฌผ๊ณผ ์ฑ… ๋ชจ๋‘ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค! ํ•˜์ง€๋งŒ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค : ๋‚ด ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์˜ˆ์ œ ์ค‘ ํ•˜๋‚˜์™€ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ํ™˜๊ฒฝ์˜ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์ด ์ž‘์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํŒŒ๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์—ฐ๊ตฌ์˜ ๊ฒฝ์šฐ ๋‹ค๋ณ€๋Ÿ‰ ํƒ€์ž„ ์‹œ๋ฆฌ์ฆˆ์ธ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ข‹์€ ์ ‘๊ทผ ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋‘ ์ž…๋ ฅ ๋ฐ ํ•˜๋‚˜์˜ ์ถœ๋ ฅ ๋ณ‘๋ ฌ ์‹œ๊ฐ„์—ด ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์‹œ๊ฐ„ ๋‹จ๊ณ„๋‹น ํ•˜๋‚˜์˜ ํ–‰๊ณผ ํ•˜๋‚˜์˜ ์—ด๋กœ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒ€์ƒ‰ ํŠน์„ฑ์„ ๊ณ ๋ คํ•  ๋•Œ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ๋ฅผ ๋ช‡ ๋ฒˆ ์‹คํ–‰ํ•ด ๋ณด์‹ญ์‹œ์˜ค.

์‹ค์ œ๋กœ 1D CNN ๋ชจ๋ธ์€ ์ด์ „ ์˜ˆ์ œ์™€ ๊ฐ™์ด ์„œ๋กœ ๋‹ค๋ฅธ ์ถœ๋ ฅ ๋ณ€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒกํ„ฐ ์ถœ๋ ฅ๋˜๋Š” ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์˜ ์—ฌ๋Ÿฌ ์‹œ๊ฐ„ ๋‹จ๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒกํ„ฐ ์ถœ๋ ฅ์„ ์˜ˆ์ธกํ•  ๋•Œ ๊ฑฐ์˜ ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ€๋„๊ฐ€ ๋†’์€ ๋ ˆ์ด์–ด ๋Œ€์‹  ๋ณ‘ํ•ฉ ํ•œ ํ›„ ์‹œ๊ฐ„ ๋ถ„์‚ฐ ๋ ˆ์ด์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ค ์˜ˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ํ•ญ์ƒ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—. 2D ์ปจ๋ณผ๋ฃจ์…˜ ๋„คํŠธ์›Œํฌ์—์„œ ์ด๋ฏธ์ง€ ๋‚ด์˜ ๊ฐ ํ”ฝ์…€์€ ์ด๋ฏธ์ง€ ์ฑ„๋„(๋นจ๊ฐ„์ƒ‰, ๋…น์ƒ‰ ๋ฐ ํŒŒ๋ž€์ƒ‰)์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊นŠ์ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ x ๋ฐ y ์œ„์น˜๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์ œ์˜ ํ•„ํ„ฐ๋Š” 2ร—2 ํ”ฝ์…€์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ์œ„๋กœ ๊ฐ€๋กœ ๋ฐ ์„ธ๋กœ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์œ ๋‹ˆ๋ณ€๋Ÿ‰ ๊ณ„์—ด์„ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ์‹œ๊ฐ„ ๋‹จ๊ณ„๋กœ ๋ถ„ํ• ํ•˜๊ณ  ๊ฐ ๊ณ„์—ด์˜ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž์Šต์„œ์˜ ๋ชฉ์ ์€ ํŠน์ • ์—ด์—ด ์˜ˆ์ธก ๋ฌธ์ œ๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๊ฐ ์ข…๋ฅ˜์˜ ์—ด๋ ฌ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ฐ ๋ชจ๋ธ์˜ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 10+15๊ฐ€ ํ•ญ๋ชฉ 1์—์„œ 10+15=25๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ฉด์„œ๋„ ๊ด€๊ณ„๋ฅผ ์•Œ์•„๊ฐ€๋Š” ๋ฐ ๊ฐ€์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ํ•ด๋‹น ์ƒ˜ํ”Œ์— ๋Œ€ํ•ด 30+35=65๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

(๋‚˜๋Š”์ด ํŠน์ • ์˜ˆ์—์„œ๋ณด๋‹ค ๋” ์ผ๋ฐ˜์ ์ธ ํƒ€์ž„ ์‹œ๋ฆฌ์ฆˆ ์ผ€์ด์Šค์—์„œ ์—ฌ๊ธฐ์— ์ƒ๊ฐํ–ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 10 + 15 ๋Œ€ 25์˜ ์ž”๋ฅ˜๋Š” 30 + 35 ๋Œ€ 65์˜ ์ž”๋ฅ˜๋ฅผ ์˜๋ฏธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค) ์ด ๋„คํŠธ์›Œํฌ๋Š” ์ด 6 ๊ฐ€์ง€ ํ™œ๋™์˜ ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋  ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ˆ„๋ฝ๋œ ๊ฒƒ์ž…๋‹ˆ๊นŒ, ์ด ์˜ˆ์ œ์˜ ์ •ํ™•๋„๋Š” ๋งค์šฐ ์ข‹์œผ๋ฉฐ ๋ ˆ์ด๋ธ”์ด์—†๋Š” ์ƒˆ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์—์„œ์ด ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ๋™์„ ์˜ˆ์ธกํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ฐ ์ƒ˜ํ”Œ์— 3๊ฐœ์˜ ์ž…๋ ฅ ์‹œ๊ฐ„ ๋‹จ๊ณ„์™€ 1๊ฐœ์˜ ์ถœ๋ ฅ ์‹œ๊ฐ„ ๋‹จ๊ณ„๊ฐ€ ์žˆ๋Š” 6๊ฐœ์˜ ์ƒ˜ํ”Œ๋กœ univariate ๊ณ„์—ด์ด ๋ถ„ํ• ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ ํŒจํ„ด ์˜ˆ์ œ

์ œ๋ชฉ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๋ฉด RealSubject ๋Œ€์‹  ํ”„๋ก์‹œ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ํด๋ผ์ด์–ธํŠธ์— ํˆฌ๋ช…ํ•˜๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ ํŒจํ„ด์—์„œ๋Š” ๊ธฐ๋Šฅ์„ ์™ธ๋ถ€ ์„ธ๊ณ„์— ์ธํ„ฐํŽ˜์ด์Šคํ•˜๊ธฐ ์œ„ํ•ด ์›๋ž˜ ๊ฐœ์ฒด๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ผ๋ถ€ ๊ฐœ์ฒด์˜ ๋ช‡ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์™„์ „ํžˆ ํ•„์š”ํ•  ๋•Œ ํ•ด๋‹น ๊ฐœ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์‹œ์ ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” ๋ฌด๊ฑฐ์šด ๋ฌผ์ฒด์™€ ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋…ธ์ถœ ํ•˜๋Š” ์ผ๋ถ€ ๋ผ์ดํŠธ ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ผ์ดํŠธ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ”„๋ก์‹œ๋ผ๊ณ  ํ•˜๋ฉฐ, ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฌด๊ฑฐ์šด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๊ณ  ๊ทธ ๋‹ค์Œ์—๋Š” ์ผ๋ถ€ ๋ผ์ดํŠธ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์ œ์—์„œ๋Š” ํ”„๋ก์‹œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„ํšจ์œจ์ ์ธ ์ œ3์ž YouTube ํ†ตํ•ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ง€์—ฐ ์ดˆ๊ธฐํ™” ๋ฐ ์บ์‹ฑ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ [1] ๋””์ž์ธ ํŒจํ„ด์€ ์œ ์—ฐํ•˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ์†Œํ”„ํŠธ์›จ์–ด, ์ฆ‰ ๊ตฌํ˜„, ๋ณ€๊ฒฝ, ํ…Œ์ŠคํŠธ ๋ฐ ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฌ์šด ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต๋˜๋Š” ์„ค๊ณ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” 23๊ฐœ์˜ ์ž˜ ์•Œ๋ ค์ง„ GoF ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์žฌ์‚ฌ์šฉ. ํ”„๋ก์‹œ ๋””์ž์ธ ํŒจํ„ด์˜ GoF ์ •์˜์— ๋”ฐ๋ผ ํ”„๋ก์‹œ ๊ฐœ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” ์„œ๋กœ๊ฒŒ์ดํŠธ ๋˜๋Š” ์ž๋ฆฌ ํ‘œ์‹œ์ž๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์•ˆ์ƒ์˜ ์ด์œ  ๋‚˜ ์™„์ „ํžˆ ์ดˆ๊ธฐํ™” ๋œ ์›๋ณธ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ์ธํ•ด ๋งŒ๋“œ๋Š” ์˜๋„ ๋œ ๊ฐœ์ฒด๋ฅผ ๋Œ€์‹ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ ํด๋ž˜์Šค ํ”„๋ก์‹œ ์ด๋ฏธ์ง€๋Š” ์‹ค์ œ ์ด๋ฏธ์ง€ ํด๋ž˜์Šค ์ž์ฒด๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰๋˜๋ฉฐ ์‹ค์ œ ์ด๋ฏธ์ง€ RealImage๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ์ •๋ณด๋Š” ๋””์Šคํฌ์—์„œ ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ProxyImage์˜ ์ฝ”๋“œ๋Š” ์ด๋ฏธ์ง€์˜ ์—ฌ๋Ÿฌ ๋กœ๋”ฉ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์ œ์—์„œ ๋ณด์—ฌ ์ค€ ์ง€์—ฐ ๋กœ๋“œ๋Š” ํ”„๋ก์‹œ ํŒจํ„ด์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ์ด์ ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ํ”„๋ก์‹œ ํŒจํ„ด์€ ์›๋ž˜ ์„œ๋น„์Šค ๊ฐœ์ฒด์™€ ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง„ ์ƒˆ ํ”„๋ก์‹œ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ”„๋ก์‹œ ๊ฐœ์ฒด๋ฅผ ์›๋ž˜ ๊ฐœ์ฒด์˜ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๋„๋ก ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ํ”„๋ก์‹œ๋Š” ์‹ค์ œ ์„œ๋น„์Šค ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๋ชจ๋“  ์ž‘์—…์„ ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋ก์‹œ ๊ฐœ์ฒด๋ฅผ ํ†ตํ•ด ์ž‘์—…ํ•˜์—ฌ ์ฃผ์ œ์— ์•ก์„ธ์Šคํ•  ๋•Œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘์š”ํ•œ ๊ฐœ์ฒด์— ์•ก์„ธ์Šคํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์ฒด๋ฅผ ๋Œ€์‹ ํ•˜๋ ค๋ฉด ํ”„๋ก์‹œ๊ฐ€ ์ฃผ์ฒด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ฃผ์ฒด ๋˜๋Š” ํ”„๋ก์‹œ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘์š”ํ•œ ๊ฐœ์ฒด์— ์•ก์„ธ์Šคํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ์— ํ•„์š”ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๋Š” `๋Œ€์‹ `, `๋Œ€์‹ ` ๋˜๋Š” `๋Œ€์‹ ` ๋˜๋Š” `๋Œ€์‹ `์„ ์˜๋ฏธํ•˜๋ฉฐ ํ”„๋ก์‹œ๋””์ž์ธ ํŒจํ„ด์„ ์ง์ ‘ ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์ž ์  ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๋ฅผ ์„œ๋กœ๊ฒŒ์ดํŠธ, ํ•ธ๋“ค ๋ฐ ๋ž˜ํผ๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์–ด๋Œ‘ํ„ฐ ๋ฐ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์™€ ๊ตฌ์กฐ์— ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋˜์–ด ์žˆ์ง€๋งŒ ๋ชฉ์ ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์€ ํ”„๋ก์‹œ ํŒจํ„ด๊ณผ ๋ฐ€์ ‘ํ•œ ๊ด€๋ จ์ด ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ ์ฃผ์— ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ”„๋ก์‹œ์˜ ๋ชฉ์ ์— ๋”ฐ๋ผ ํ”„๋ก์‹œ์˜ ๋งŽ์€ ๋‹ค๋ฅธ ๋ง›์ด ์žˆ๋‹ค. ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ œ์–ดํ•˜๋Š” ๋ณดํ˜ธ ํ”„๋ก์‹œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ํ”„๋ก์‹œ๋Š” ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์›๊ฒฉ ํ”„๋ก์‹œ๋Š” ์›๊ฒฉ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.