summer homework

MySQL Workbench์˜ VISUAL EXPLAIN์œผ๋กœ ์ธ๋ฑ์Šค ๋™์ž‘ ํ™•์ธํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”. ์ €๋Š” LINE ํฌ์ธํŠธ ์„œ๋ฒ„์ชฝ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” Ohara(@kory1202)์ž…๋‹ˆ๋‹ค. ์–ผ๋งˆ ์ „ ํŠน์ • ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ์š”. ํ•จ๊ป˜ ์ผํ•˜๋Š” ๋™๋ฃŒ๊ฐ€ ๊ทธ ์ฝ”๋“œ๋ฅผ ๋ณด๋”๋‹ˆ ‘์ด๋Ÿฐ ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•˜๊ฒ ๋‹ค’๊ณ  ์กฐ์–ธํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ผ์„ ํ†ตํ•ด ์ œ๊ฐ€ ์ธ๋ฑ์Šค ๊ด€๋ จ ์ง€์‹์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ์ ์„ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ์š”. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์— MySQL Workbench์˜ VISUAL EXPLAIN์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ์Šคํ„ฐ๋””ํ•œ ๋‚ด์šฉ์„ ์†Œ๊ฐœํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. VISUAL EXPLAIN์€ SQL์˜ EXPLAIN์„ […]

์•ˆ์ „ํ•œ SSL/TLS๋ฅผ ์šด์˜ํ•˜๊ธฐ ์œ„ํ•ด ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฒƒ๋“ค

์•ˆ๋…•ํ•˜์„ธ์š”. LINE์—์„œ Security Engineering์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” ์ด์ง€ํ›ˆ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์†ํ•œ ํŒ€์€ ์—…๋ฌด ํ™˜๊ฒฝ๊ณผ ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ธํ”„๋ผ๋ฅผ ๋”์šฑ ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ผํ™˜์œผ๋กœ SSL/TLS ์ธ์ฆ์„œ ๊ด€๋ฆฌ๋‚˜ ๊ด€๋ จ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ™œ๋™๋„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ณด์•ˆ์€ ๋ฌผ๋ก  ํด๋ผ์ด์–ธํŠธ์™€์˜ ํ˜ธํ™˜์„ฑ์ด๋‚˜ ์„œ๋น„์Šค ํ™˜๊ฒฝ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ ์ด์™€ ๊ด€๋ จ๋œ ๊ฒฝํ—˜ ์ค‘ ์ผ๋ถ€๋ฅผ ๊ณต์œ ํ• ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

TLS๋Š”, ๋ธŒ๋ผ์šฐ์ € ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณต๊ฐœ๋œ ์ธํ„ฐ๋„ท ๋ง์„ ํ†ตํ•ด ์›น์„œ๋ฒ„์™€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ํ•  ๋•Œ, ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜์—ฌ ์›ํ•˜๋Š” ์ƒ๋Œ€์™€ ์•ˆ์ „ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๋„๋ฆฌ ์ด์šฉ๋˜๋Š” TLS ํ”„๋กœํ† ์ฝœ์˜ ๊ธฐ์ˆ ์ ์ธ ์š”๊ฑด์€ RFC 2246(TLS 1.0), RFC 4346(TLS 1.1), RFC 5246(TLS 1.2) ๋“ฑ ๋งํฌ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. ํ˜„์žฌ ์ง€์†์ ์œผ๋กœ ๋ณด์•ˆ ์ˆ˜์ค€์„ ๋†’์—ฌ๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ(2018.3.21) Proposed Standard๋กœ ์ •ํ•ด์ง„ TLS 1.3์˜ ๊ฒฝ์šฐ ์ด๋ฏธ ์•Œ๋ ค์ง„ ๋ณด์•ˆ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋Œ€์‘์ด ์„ค๊ณ„์— ์ถ”๊ฐ€๋กœ ๋ฐ˜์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ HTTP๊ฐ€ SSL/TLS๋ฅผ ์ด์šฉํ•˜์—ฌ HTTPS(HTTP over TLS)๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, SNMP, FTP ๋“ฑ ๋‹ค์–‘ํ•œ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์—์„œ๋„ SSL/TLS๊ฐ€ ์“ฐ์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” nginx์™€ ๊ฐ™์€ ์›น์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜์—ฌ ์›น์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •ํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์•ˆ์ „ํ•œ ์„ค์ •๊ณผ ๊ณ ๋ ค ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

๋…์ž ์—ฌ๋Ÿฌ๋ถ„๊ป˜์„œ๋Š” ๊ฐ์ž์˜ ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณธ ํฌ์ŠคํŒ…์„ ํ™œ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ์ˆ ์ ์ธ ์ดํ•ด ์—†์ด๋„ ์„ค๋ช…์— ๋”ฐ๋ผ ์•ˆ์ „ํ•œ ์„ค์ •์„ ํ•˜๊ณ  ์‹ถ๋‹ค. โ†’ ํฌ์ŠคํŒ… ์•ž ๋ถ€๋ถ„, ๋ฐ”๋กœ ์ด์–ด์ง€๋Š” ‘Step by Step’์„ ์ฝ์–ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
  • ๋‚ด์šฉ์„ ์ข€ ๋” ์ดํ•ดํ•˜๊ณ  ์‹ถ๋‹ค. โ†’ ํฌ์ŠคํŒ… ๋’ท๋ถ€๋ถ„๊นŒ์ง€ ์ „๋ถ€ ์ฝ๊ณ , ์ธ์šฉ๋˜์–ด ์žˆ๋Š” ์™ธ๋ถ€ ๋งํฌ๋‚˜ ์šฉ์–ด๊นŒ์ง€ ์ถ”๊ฐ€๋กœ ํ™•์ธํ•ด ๋ณผ ๊ฒƒ์„ ๊ถŒํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Behavior Tree๋ฅผ ์•Œ์•„๋ด…์‹œ๋‹ค

์•ˆ๋…•ํ•˜์„ธ์š”. ์ €๋Š” Clova๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์‹œ์Šคํ…œ ๊ฐ€์šด๋ฐ NLU(Natural Language Understanding,์ž์—ฐ์–ด ์ดํ•ด)ํŒŒํŠธ์˜ ์„œ๋ฒ„์ชฝ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” @overlast์ž…๋‹ˆ๋‹ค.

์–ผ๋งˆ์ „์— Youichiro Miyake(ไธ‰ๅฎ…้™ฝไธ€้ƒŽ)์”จ์™€ ๋Œ€๋‹ด(์ผ๋ณธ์–ด)์„ ๋‚˜๋ˆŒ ๊ธฐํšŒ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ์š”. ์ด์•ผ๊ธฐํ•˜๋‹ค๋ณด๋‹ˆ ๊ฒŒ์ž„ ์—…๊ณ„์—์„œ ์บ๋ฆญํ„ฐ AI ๋“ฑ์„ ๋งŒ๋“ค ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” Behavior Tree(ํ–‰๋™ ํŠธ๋ฆฌ) ๋ชจ๋ธ์„ ์ €๋Š” ์•„์ง ํ•œ๋ฒˆ๋„ ๋‹ค๋ค„๋ณธ ์ ์ด ์—†๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์ด์— ‘์ข‹์€ ๊ธฐํšŒ๋‹ค’ ์‹ถ์–ด ์ด์ฐธ์— Behavior Tree์™€ ๊ธฐ์กด ๊ตฌํ˜„์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด๊ณ  ์ด ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๊ทธ๋ฆผ 1 : ‘์ˆ˜์ค‘์— ์ง€๋‹Œ ๋ˆ๊ณผ ๊ธฐ๋ถ„์— ๋”ฐ๋ผ ์ฃผ๋ณ€ ์žํŒ๊ธฐ์—์„œ ์Œ๋ฃŒ ๊ตฌ์ž…ํ•˜๊ธฐ’์˜ Behavior Tree

Go SDK๋กœ Flex Message ๊ตฌํ˜„ํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”? ๊ตํ†  ๊ฐœ๋ฐœ์‹ค์—์„œ ๊ทผ๋ฌดํ•˜๋Š” @sugyan์ž…๋‹ˆ๋‹ค. ๊ตํ† ์˜ ์—ฌ๋ฆ„์€ ์ด๋ฒˆ์— ์ฒ˜์Œ ๊ฒช๋Š”๋ฐ, ์™€ ์ •~๋ง ์—„์ฒญ๋‚œ ๋”์œ„๋„ค์š”.

2018๋…„ 6์›”, LINE Messaging API์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€ ์œ ํ˜• ‘Flex Message’๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฉด์„œ ๋งž์ถคํ˜• ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์ง€์š”. ๊ณต์‹ SDK์—์„œ๋„ Flex Message๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์ฆ‰๊ฐ ๊ตฌํ˜„์— ์ฐฉ์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Go SDK ๋‹ด๋‹น์ž๋กœ์„œ Flex Message ์ง€์› ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์–ป์€ ๋…ธํ•˜์šฐ๋ฅผ ๊ณต์œ ํ• ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฅ ๋Ÿฌ๋‹ ์Œ์„ฑ ์ธ์‹์— ํ•„์š”ํ•œ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด์ž

์•ˆ๋…•ํ•˜์„ธ์š”, LINE์—์„œ ๊ด‘๊ณ  ํ”Œ๋žซํผ ๊ฐœ๋ฐœ์„ ๋งก๊ณ  ์žˆ๋Š” 1๋…„์ฐจ ์‹ ์ž…์‚ฌ์› Kunihiko Sato์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” Python์„ ์‚ฌ์šฉํ•ด์„œ ์ž„์˜์˜ Signal-to-Noise ratio(SN๋น„)๋ฅผ ๊ฐ€์ง„ ์Œ์„ฑ ํŒŒํ˜•์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ด ํฌ์ŠคํŒ…์˜ ๋‚ด์šฉ์€ Clova ๋“ฑ LINE์˜ ์Œ์„ฑ ์‚ฌ์—…๊ณผ๋Š” ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

์Œ์„ฑ ์ฒ˜๋ฆฌ ๋ถ„์•ผ์—์„œ์˜ ๋”ฅ ๋Ÿฌ๋‹

์˜ค๋ž˜ ์ „ ๋”ฅ ๋Ÿฌ๋‹์ด ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋ถ„์•ผ์—์„œ ๊ธฐ์ˆ  ํ˜์‹ ์„ ์ผ์œผ์ผฐ๋Š”๋ฐ, ์Œ์„ฑ ์ฒ˜๋ฆฌ ๋ถ„์•ผ์—์„œ๋„ ๋น„์Šทํ•œ ์ผ์ด ๋ฒŒ์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฅ ๋Ÿฌ๋‹์œผ๋กœ ์Œ์„ ์ธ์‹์˜ ์ •๋ฐ€๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜๋ฉด์„œ, Amazon Echo๋‚˜ Google Home, LINE Clova์™€ ๊ฐ™์€ AI ์Šคํ”ผ์ปค๊ฐ€ ๊ฐœ๋ฐœ๋˜์–ด ์‹œ์žฅ์— ๋ณด๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜, ์ปดํ“จํ„ฐ๋กœ ์Œ์„ฑ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฌธ์ž ์Œ์„ฑ ๋ณ€ํ™˜(Text-to-Speech)์˜ ์ •๋ฐ€๋„๋„ ๋†’์•„์ ธ์„œ ์‹ค์ œ ์‚ฌ๋žŒ์˜ ๋ชฉ์†Œ๋ฆฌ์™€ ๋ถ„๊ฐ„ํ•˜๊ธฐ ํž˜๋“ค ์ •๋„์˜ ์Œ์งˆ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์Œ์› ๋ถ„๋ฆฌ์— ์ ์šฉ๋œ ๋”ฅ ๋Ÿฌ๋‹

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์‚ฌ๋ก€ ์™ธ์—๋„ ๋”ฅ ๋Ÿฌ๋‹์„ ํ†ตํ•ด ์ •๋ฐ€๋„ ์ธก๋ฉด์—์„œ ๋งŽ์€ ๋ฐœ์ „์„ ์ด๋ฃฌ ์Œ์„ฑ ์ฒ˜๋ฆฌ ๋ถ„์•ผ๋“ค์ด ์žˆ๋Š”๋ฐ์š”. ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์Œ์› ๋ถ„๋ฆฌ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋กœ ๋†€๋˜ ์Šฌ๋ž™๋ด‡, gRPC ํ†ตํ•ด ํ•˜๋‚˜ ๋˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”? LINE IT ์ „๋žต์‹ค์—์„œ ์‚ฌ๋‚ด ์‹œ์Šคํ…œ์˜ ๊ฐœ๋ฐœ ๋ฐ ์šด์˜์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” suzuki-shunsuke์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์–ผ๋งˆ ์ „ grpc๋ฅผ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šฌ๋ž™๋ด‡(Slack Bot)์„ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ–ˆ๋˜ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ๊ฒฝ

์ €๋Š” ์‚ฌ๋‚ด Slack์„ ๊ด€๋ฆฌํ•˜๋Š” ํŒ€์—์„œ ์Šฌ๋ž™๋ด‡์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์šด์˜๋„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ๋‚  ‘๋ด‡์„ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์คฌ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค’๋Š” ์š”์ฒญ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ  ๋•Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋Œ€ํ™”์ฐฝ์— ์—ฌ๋Ÿฌ ๋ด‡์„ ์ดˆ๋Œ€ํ•˜๊ธฐ ๋ฒˆ๊ฑฐ๋กญ๋‹ค.
  • ์–ด๋–ค ๋ด‡๋“ค์ด ์žˆ๋Š”์ง€ ๋‹ค ์•Œ ์ˆ˜ ์—†๋‹ค
  • ์—ฌ๋Ÿฌ ๋ด‡์„ ์ž๊พธ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ํ•˜๋‚˜์˜ ๋ด‡์— ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ํŽธ์ด ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๋ด‡์— ๋” ์• ์ฐฉ์ด ๊ฐ„๋‹ค.

Kotlin์œผ๋กœ ์„œ๋ฒ„์‚ฌ์ด๋“œ ๊ฐœ๋ฐœ๊ณผ Clova Skill Award ๋„์ „!

LINE Engineering Blog๋ฅผ ์ฐพ์•„์ฃผ์‹  ์—ฌ๋Ÿฌ๋ถ„, ์•ˆ๋…•ํ•˜์„ธ์š”? ์˜ค๋Š˜์€ ๋‘ ๋ช…์ด ๊ณต๋™์œผ๋กœ ์ž‘์„ฑํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์ €ํฌ ์†Œ๊ฐœ ๋จผ์ € ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. LINE์—์„œ ๊ฒŒ์ž„ ํ”Œ๋žซํผ ๊ฐœ๋ฐœ์„ ๋งก๊ณ  ์žˆ๋Š” Kagaya์™€ ๋™์˜์ƒ ์ƒ์ค‘๊ณ„ ์„œ๋น„์Šค LINE LIVE์˜ Android ์•ฑ ๊ฐœ๋ฐœ์„ ๋งก๊ณ  ์žˆ๋Š” Akira์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์•„๋ž˜ ๋‘ ๊ฐ€์ง€ ์ด์•ผ๊ธฐ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์‚ฌ์ด๋“œ Kotlin์— ๊ด€ํ•œ ๋…ธํ•˜์šฐ์™€ ์œ ์Šค์ผ€์ด์Šค๋ฅผ ๊ณต์œ ํ• ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

  1. Kagaya๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” LINE GAME ํ”Œ๋žซํผ์˜ Kotlin ์ด์šฉ ํ˜„ํ™ฉ ์ด์•ผ๊ธฐ
  2. ‘LINE ์‚ฌ๋‚ด Clova Skill Award’์— ์ €ํฌ ๋‘˜์ด ํŒ€์œผ๋กœ ์ฐธ๊ฐ€ํ•ด์„œ Kotlin์œผ๋กœ ์˜๊ด‘์˜(?) ์ตœ์šฐ์ˆ˜์ƒ์„ ์ˆ˜์ƒํ•œ ์ด์•ผ๊ธฐ

Promgen์€ ์•Œ๋ฆผ์„ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌํ• ๊นŒ์š”?

์•ˆ๋…•ํ•˜์„ธ์š”, Paul Traylor์ž…๋‹ˆ๋‹ค. ์ €๋Š” ํ˜„์žฌ LINE Fukuoka ๊ฐœ๋ฐœํŒ€์—์„œ LINE ๊ณ„์—ด์˜ ์•ฑ์ด ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜๋งŽ์€ ์„œ๋ฒ„๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋„๊ตฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๊ธฐ์ˆ  ์ง€์›ํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋งก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ์ฃผ ์—…๋ฌด ์ค‘ ํ•˜๋‚˜๋Š” Promgen์„ ๊ด€๋ฆฌํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ Promgen์€ Prometheus๊ฐ€ ๊ด€๋ จ๋œ ํŒ€์—๊ฒŒ ์•Œ๋ฆผ์„ ์ œ๋Œ€๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ Promgen์ด ์•Œ๋ฆผ์„ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

Webpack ๊ฐ™์€ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž

์•ˆ๋…•ํ•˜์„ธ์š”, LINE์—์„œ ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” ์ „ํ˜„์ œ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” JavaScript ์ƒํƒœ๊ณ„์˜ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ธ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ(module bundler)์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์˜ ๊ฐœ๋…์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์†Œ๊ฐœํ•œ ํ›„ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ง์ ‘ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ณธ ๊ฒฝํ—˜๋‹ด์„ ํ•จ๊ป˜ ๋‚˜๋ˆ„๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๋ž€?

๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ด๋ž€ ๊ทœ๋ชจ๊ฐ€ ํฐ ์ฝ”๋“œ ๋ฒ ์ด์Šค๋ฅผ ๋ชจ๋“ˆ์ด๋ผ๋Š” ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ตฌ์กฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ์˜ค๋žซ๋™์•ˆ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ด ์—†๋Š” ์ƒํƒœ์˜€๋Š”๋ฐ, 2009๋…„ Node.js๊ฐ€ CommonJS๋ผ๋Š” ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ์ดํ›„ ๋ชจ๋“ˆํ™”๋œ ์ฝ”๋”ฉ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ณดํŽธํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜, ECMAScript 2015์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด ์‚ฌ์–‘์— ์‹ ๊ทœ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ธ ES Module์ด ํฌํ•จ๋˜์–ด ์ด์ œ๋Š” ๋ชจ๋“ˆ ์—†์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ฝ”๋”ฉํ•˜๊ธฐ ํž˜๋“ค์–ด์กŒ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„์ž…๋‹ˆ๋‹ค.

Clova์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋“ˆ ๊ด€๋ฆฌ ํ”Œ๋žซํผ, Rekcurd๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค

์•ˆ๋…•ํ•˜์„ธ์š”? LINE์—์„œ Clova์˜ ์ž์—ฐ์–ด ์ดํ•ด(NLU, Natural Language Understanding) ์œ ๋‹›์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” Hattori(keigohtr)์ž…๋‹ˆ๋‹ค. ๋ฐ”์•ผํ๋กœ ๋จธ์‹  ๋Ÿฌ๋‹ ๋ถ์ด ์ผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋„ ์ด๋ฏธ ๋จธ์‹  ๋Ÿฌ๋‹์„ ํ™œ์šฉํ•˜๊ณ  ์žˆ๊ฑฐ๋‚˜, ์ƒ์‚ฌ๋‚˜ ์ฃผ์œ„ ๋™๋ฃŒ๋กœ๋ถ€ํ„ฐ ์ ์šฉํ•ด๋ณด๋ผ๋Š” ๊ถŒ์œ ๋ฅผ ๋ฐ›๊ณ  ์žˆ์ง€ ์•Š์œผ์‹ ๊ฐ€์š”? ๋‹คํ–‰ํžˆ ์š” ๋ช‡ ๋…„ ๋จธ์‹  ๋Ÿฌ๋‹์ด ์œ ํ–‰ํ•˜๋ฉด์„œ ๊ด€๋ จ ํˆด์ด๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ต‰์žฅํžˆ ๋‹ค์–‘ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋•๋ถ„์— ์„ ํ˜• ํšŒ๊ท€๋‚˜ ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€, Perceptron, Adaboost, Random Forest, Support Vector Machine, XGBoost ๋“ฑ ๊ธฐํƒ€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋”ฅ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ˆ„๊ตฌ๋‚˜ ์†์‰ฝ๊ฒŒ ์ ‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ‘ํ•™์Šต(learning)’ ๊ด€๋ จ ๋„๊ตฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ’๋ถ€ํ•ด์ง„ ๋ฐ˜๋ฉด, ๊ตฌ์ถ•ํ•œ ๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋“ˆ์˜ ‘์šด์˜’์— ๊ด€ํ•œ ๋„๊ตฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์•„์ง ๋งŽ์ง€ ์•Š์€ ํŽธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์—ฌ๋Ÿฌ๋ถ„๊ป˜ LINE์˜ AI ํ”Œ๋žซํผ Clova์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋จธ์‹  ๋Ÿฌ๋‹ ๋ชจ๋“ˆ ๊ด€๋ฆฌ ํ”Œ๋žซํผ์ธ Drucker๋ฅผ ์†Œ๊ฐœํ•ด ๋“œ๋ฆด๊นŒ ํ•ฉ๋‹ˆ๋‹ค.