SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                        ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ




    Android Push Notification System
                  Project Guide v0.5




                        2010.10
                    Moduad Co., Ltd.




โ“’ 2010 Moduad                                 1
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                                                                                                   ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ



                                                                           ๋ชฉ ์ฐจ
   1          ํ”„๋กœ์ ํŠธ ๊ฐœ์š”...................................................................................................................... 3
        1.1      ํ”„๋กœ์ ํŠธ ๋ชฉ์  ............................................................................................................................... 3
        1.2      ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๋ฐฐ๊ฒฝ ...................................................................................................................... 3
   2          ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ........................................................................................... 3
        2.1      ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ................................................................................................................................... 3
        2.2      ํ‘ธ์‹œ ํ†ต๋ณด ๊ณผ์ • .............................................................................................................................. 4
   3          ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ...................................................................................................................... 4
        3.1      ์„œ๋ฒ„ (androidpn-server).............................................................................................................. 4
        3.2      ํด๋ผ์ด์–ธํŠธ (androidpn-client) ................................................................................................... 7
        3.3      ๋ฐ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ (androidpn-demoapp) .............................................................................. 9
   4          ํ”„๋กœ์ ํŠธ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ ................................................................................................... 9
        4.1      ์„œ๋ฒ„ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ .................................................................................................................... 9
        4.2      ํด๋ผ์ด์–ธํŠธ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ ...................................................................................................... 10
   5          ์„œ๋ฒ„ ์„ค์น˜ ๋ฐ ๊ตฌ๋™ ............................................................................................................. 11
        5.1      ์„œ๋ฒ„ ์„ค์น˜ ..................................................................................................................................... 11
        5.2      ์„œ๋ฒ„ ๊ตฌ๋™ ..................................................................................................................................... 12
   6          ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ...................................................................................... 13
        6.1      ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ .................................................................................................... 13
        6.2      ํด๋ผ์ด์–ธํŠธ ํ™–๊ฒฝ ์„ค์ • ํŒŒ์ผ ...................................................................................................... 13
        6.3      ํด๋ผ์ด์–ธํŠธ ์„œ๋น„์Šค ์‹œ์ž‘ ์ฝ”๋“œ .................................................................................................. 13
   7          ํ”„๋กœ์ ํŠธ ์Šคํฌ๋ฆฐ์ƒท............................................................................................................ 14
        7.1      ์„œ๋ฒ„ (๊ด€๋ฆฌ์ž ์›น ์ฝ˜์†”) ................................................................................................................ 14
        7.2      ํด๋ผ์ด์–ธํŠธ (์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜).................................................................................. 17
   8          ์ฃผ์š” ๊ด€๋ จ ๊ธฐ์ˆ  .................................................................................................................. 20
        8.1      ํ‘ธ์‹œ ํ†ต๋ณด (Push Notification)๋ž€? ............................................................................................ 20
        8.2      Push vs. Pull ................................................................................................................................ 21
        8.3      XMPP (eXtensible Message and Presence Protocol) .......................................................... 21
        8.4      ์•ˆ๋“œ๋กœ์ด๋“œ(Android).................................................................................................................. 22
   9          ๊ฐœ๋ฐœ ํ™–๊ฒฝ............................................................................................................................ 23
        9.1      ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ™–๊ฒฝ ............................................................................................................................ 23
        9.2      ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ ํ™–๊ฒฝ ................................................................................................................ 23
   10         ๋ฐœ์ „ ๋ฐฉํ–ฅ............................................................................................................................ 23
        10.1        ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ ํ–ฅ์ƒ ............................................................................................................ 23
        10.2        ์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ ํ™•์žฅ ......................................................................................... 24
        10.3        ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ์‘์šฉ ................................................................................................................ 24
        10.4        ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™•๋Œ€์— ๊ธฐ์—ฌ .......................................................................................... 24



โ“’ 2010 Moduad                                                                                                                                                        2
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                          ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ



1      ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

1.1    ํ”„๋กœ์ ํŠธ ๋ชฉ์ 

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋งŽ์€ ํ•„์š”์„ฑ๊ณผ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ์‘์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ
๊ธฐ๋ฐ˜์˜ ํ‘ธ์‹œ ํ†ต๋ณด (Push Notification) ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ์„œ๋ฒ„ ์‹œ์Šคํ…œ ๋ฐ ํด๋ผ์ด์–ธํŠธ ์†”๋ฃจ์…˜์„ ์˜คํ”ˆ์†Œ์Šค๋กœ
์ œ๊ณตํ•˜์—ฌ, ๊ตญ๋‚ด์™ธ ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐ ๊ณต๊ฐœ SW ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™—์„ฑํ™”์— ๊ธฐ์—ฌ๋ฅผ ํ•˜๊ณ ์ž
ํ•œ๋‹ค.


๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•œ๋‹ค.
      ๏ฌ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋ฒ„ ์‹œ์Šคํ…œ
      ๏ฌ ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ
      ๏ฌ ์•ˆ๋“œ๋กœ์ด๋“œ ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜



1.2    ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๋ฐฐ๊ฒฝ

์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ํ˜„์žฌ Google์—์„œ ์ •์‹์ ์ธ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๋ฐ˜
ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋น„์Šค๋ฅผ ์ง€์›์„ ํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ƒํ™ฉ์ด๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ 2.2 (Froyo)๋ถ€ํ„ฐ ๋“ฑ์žฅํ•œ Cloud To Device
Messaging (C2DM) ์„œ๋น„์Šค๋Š” ํ˜„์žฌ Lab ํ…Œ์ŠคํŠธ ๋ฒ„์ ‚์œผ๋กœ ์ •์‹ ์„œ๋น„์Šค๊ฐ€ ๋˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ƒํ™ฉ์ด๋ฉฐ, ์ด์ ‚
์•ˆ๋“œ๋กœ์ด๋“œ OS ๋ฒ„์ ‚์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
์ด์— ๋ฐ˜ํ•ด BlackBerry๋Š” 2002๋…„ Push Email ์„œ๋น„์Šค์„ ์‹œ์ž‘์œผ๋กœ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ, Apple๋„
2009๋…„ iPhone 3.0 ์ดํ›„๋ถ€ํ„ฐ Apple Push Notification Service (APNS)๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค. ๋˜ํ•œ Microsoft๋„
์ถœ์‹œ ์˜ˆ์ •์ธ Windows Phone 7์—์„œ Microsoft Push Notification Service (MPNS) ์ง€์›๊ณผ ํ•จ๊ป˜ ์ถœ์‹œ
์˜ˆ์ •์ด๋‹ค.




2      ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ

2.1    ์‹œ์Šคํ…œ ๊ตฌ์„ฑ

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




โ“’ 2010 Moduad                                                                          3
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                               ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


2.2    ํ‘ธ์‹œ ํ†ต๋ณด ๊ณผ์ •

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




3      ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ์€ ๋ชจ๋‘ ์ดํด๋ฆฝ์Šค ๊ธฐ๋ฐ˜์˜ ์ž๋ฐ” ํ”„๋กœ์ ํŠธ์ด๋‹ค.
      ๊ตฌ๋ถ„         ํ”„๋กœ์ ํŠธ๋ช…                      ์„ค๋ช…            ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด์„ ์Šค
์„œ๋ฒ„          androidpn-server    Java ๊ธฐ๋ฐ˜ ์†Œ์ผ“์„œ๋ฒ„ ํ˜•ํƒœ์˜ ํ‘ธ์‹œ ํ†ต๋ณด   GPL 2.0
                                ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
ํด๋ผ์ด์–ธํŠธ       androidpn-client    ์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ์šฉ ํ‘ธ์‹œํ†ต๋ณด          Apache License 2.0
                                ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐฐํฌ ๋ชจ๋“ˆ
            androidpn-demoapp   ๊ฐœ๋ฐœ์ž์šฉ ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜



3.1    ์„œ๋ฒ„ (androidpn-server)

ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋ฒ„๋Š” ๊ตฌ๋™์„ ์œ„ํ•ด Java SE 6 ๋Ÿฎํƒ€์ž„์„ ํ•„์š”๋กœ ํ•˜๋ฉฐ, Spring ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•ด ํด๋ž˜์Šค๊ฐ‚
์˜์กด์„ฑ ์ฃผ์ž…์„ ํ•˜๊ณ  MINA ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•œ ์†Œ์ผ“ ์„œ๋ฒ„์ด๋‹ค. ๋ฐ์ดํ„ฐ ํ†ต์‹ž ๋ฐฉ์‹์€ XML
์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์˜ XMPP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, XMPP ์„œ๋ฒ„ ์ŠคํŽ™์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค. ๋˜ํ•œ Jetty ์„œ๋ธ”๋ฆพ
์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‚ด์žฅํ•˜์—ฌ ๊ด€๋ฆฌ์ž ์›น์ฝ˜์†” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.




โ“’ 2010 Moduad                                                                 4
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                               ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


3.1.1   ์„œ๋ฒ„ ์•„ํ‚คํ…์ณ




3.1.2   ์„œ๋ฒ„ ์ฃผ์š” ๋ชจ๋“ˆ

    ๏ฌ IO Handler
        - XML ํฌ๋งท์˜ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ถ๋“ค๋ฆฟ
    ๏ฌ Stanza Handler
        - XMPP ๊ธฐ๋ณธ ํ†ต์‹ž ๋‹จ์œ„์ธ Stanza ๋ฐ ํด๋ผ์ด์–ธํŠธ์™€์˜ ์—ฐ๊ฒฐ ํŠน์ง•์„ ํ•ถ๋“ค๋ฆฟ
    ๏ฌ IQ Handler
        - IQ Stanza ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์„ํ•˜๊ณ  ํƒ€์ž…๋ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ถ๋“ค๋ฆฟ
    ๏ฌ Session Manager
        - ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์„ธ์…˜๋“ค์„ ์ ‚๋ฐ˜์ ์œผ๋กœ ๊ด€๋ฆฌ
    ๏ฌ Auth Manager
        - ํด๋ผ์ด์–ธํŠธ ์‚ฌ์šฉ์ž ๋“ฑ๋ก ๋ฐ ๋กœ๊ทธ์ธ ๋“ฑ ์ธ์ฆ ๊ด€๋ฆฌ
    ๏ฌ Presence Manager
        - ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์ƒํƒœ(Presence) ์ •๋ณด๋ฅผ ๊ด€๋ฆฌ
    ๏ฌ Notification Manager
        - ์„œ๋ฒ„ ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ํด๋ผ์ด์–ธํŠธ๋กœ Push ๋ฉ”์‹œ์ง€ ์ ‚์†ก์„ ๋‹ด๋‹น
    ๏ฌ Admin Console
        - ํด๋ผ์ด์–ธํŠธ์˜ ๋“ฑ๋ก ์ •๋ณด, ์ ‘์† ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ฆฟ ๋ฐ Push ๋ฉ”์‹œ์ง€ ์ ‚์†ก UI๋ฅผ ๊ฐ€์ง‚ ๊ด€๋ฆฌ์ž์šฉ
        ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋“ˆ



3.1.3   ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ ๋ฐ ๋„๊ตฌ

    ๏ฌ Java SE 6
        - ์ž๋ฐ” ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™์„ ์œ„ํ•œ ๋Ÿฎํƒ€์ž„ ์—”์ง‚
    ๏ฌ Spring Framework
        - ์ž๋ฐ” ํด๋ž˜์Šค๊ฐ‚ ์˜์กด์„ฑ์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” DI (Dependency Injection) ์ปจํ…Œ์ด๋„ˆ ํ”„๋ ˆ์ž„์›Œํฌ


โ“’ 2010 Moduad                                                        5
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                                  ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


    ๏ฌ MINA
           - ์ž๋ฐ” NIO ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„ ๊ตฌํ˜„์„ ์œ„ํ•œ ๋„คํฌ์›Œํฌ ํ”„๋ ˆ์ž„์›Œํฌ
    ๏ฌ Jetty
           - ๊ด€๋ฆฌ์ž ์›น์ฝ˜์†” ๋ชจ๋“ˆ์„ ์œ„ํ•œ ์ž๋ฐ” ๋‚ด์žฅํ˜• ์„œ๋ธ”๋ฆพ ์ปจํ…Œ์ด๋„ˆ
    ๏ฌ Hibernate
           - ๋ฐ์ดํ„ฐ ์˜์†์„ฑ์„ ์œ„ํ•œ ORM (Object-Relational Mapping) ํ”„๋ ˆ์ž„์›Œํฌ
    ๏ฌ HSQLDB
           - ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์œ„ํ•œ ์ž๋ฐ” ๋‚ด์žฅํ˜• DB (MySQL ๋“ฑ ๋‹ค๋ฅธ DB๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
    ๏ฌ Ant / Maven
           - ํ”„๋กœ์ ํŠธ ์†Œ์Šค ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ ๋„๊ตฌ
    ๏ฌ JUnit
           - ์ž๋ฐ” ํด๋ž˜์Šค ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ



3.1.4      ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ์ž๋ฐ” ํŒจํ‚ค์ง€ ๊ตฌ์„ฑ

    ๏ฌ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ
์„œ๋ฒ„ ํ”„๋กœ์ ํŠธ ์†Œ์Šค๋Š” Maven 2.0 ๊ธฐ๋ฐ˜์˜ ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ์ด๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐœ์˜ ์ฃผ์š” ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆŒ ์ˆ˜
์žˆ์œผ๋ฉฐ, ๋””๋ ‰ํ† ๋ฆฌ๋ช…๊ณผ ๋™์ผํ•˜๋‹ค.
   ๋””๋ ‰ํ† ๋ฆฌ๋ช…                              ์„ค๋ช…                                        ๋นŒ๋“œ ํŒŒ์ผ
 console          ๊ด€๋ฆฌ์ž ์ฝ˜์†” ๋ชจ๋“ˆ์ด๋ฉฐ ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ฉฐ, ์Šคํ”„๋ฆฟ MVC                  console.war
                  ๊ธฐ๋ฐ˜์˜ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๋‹ค.
 Server           ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋ฒ„ ํ•ต์‹ฌ ๋ชจ๋“ˆ์ด๋ฉฐ, Spring + MINA ํ†ตํ•ฉ๋œ             androidpn-server-0.4.x.jar
                  ์†Œ์ผ“ ์„œ๋ฒ„์ด๋ฉฐ, XMPP ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค.
 starter          ์„œ๋ฒ„์˜ ์‹œ์ž‘์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ๋กœ, ํด๋ž˜์Šค ๋กœ๋”ฉ์„ ๋‹ด๋‹นํ•œ๋‹ค.                 starter.jar


    ๏ฌ ์ž๋ฐ” ํŒจํ‚ค์ง€
์„œ๋ฒ„ ํ”„๋กœ์ ํŠธ์˜ ์ž๋ฐ” ํด๋ž˜์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ํŒจํ‚ค์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
                ํŒจํ‚ค์ง€๋ช…                                        ์„ค๋ช…
 org.androidpn.server.container       ๊ด€๋ฆฌ์ž ์ฝ˜์†” ์›น๋ชจ๋“ˆ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ ํด๋ž˜์Šค
 org.androidpn.server.dao             Data Access Object ์ธํ„ฐํŽ˜์ด์Šค
 org.androidpn.server.dao.hibernate   Data Access Object ๊ตฌํ˜„ ํด๋ž˜์Šค
 org.androidpn.server.model           DB ์—”ํ‹ฐํ‹ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋„๋ฉ”์ธ ๊ฐ์ฒด ๋ชจ๋ธ ํด๋ž˜์Šค
 org.androidpn.server.service         ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค ์ธํ„ฐํŽ˜์ด์Šค
 org.androidpn.server.service.impl    ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค ๊ตฌํ˜„ ํด๋ž˜์Šค
 org.androidpn.server.starter         ์„œ๋ฒ„ ์‹œ์ž‘์„ ์œ„ํ•œ ํด๋ž˜์Šค
 org.androidpn.server.util            ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค
 org.androidpn.server.xmpp            XMPP ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋ฅผ ๋‹ด์€ ๋ฒ ์ด์Šค ํŒจํ‚ค์ง€
 org.androidpn.server.xmpp.auth       ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ๋‹ด๋‹นํ•˜๋Š” ํด๋ž˜์Šค
 org.androidpn.server.xmpp.codec      MINA ๊ธฐ๋ฐ˜์˜ XMPP ๋ฉ”์‹œ์ง€ ์ฝ”๋ฑ ํด๋ž˜์Šค



โ“’ 2010 Moduad                                                                                  6
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                      ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


 org.androidpn.server.xmpp.handler     XMPP Stanza๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ข… ํ•ถ๋“ค๋Ÿฌ
 org.androidpn.server.xmpp.net         MINA ๊ธฐ๋ฐ˜์˜ ํ•ต์‹ฌ ์†Œ์ผ“ ๋„คํŠธ์›Œํ‚น์„ ๋‹ด๋‹นํ•˜๋Š” ํด๋ž˜์Šค
 org.androidpn.server.xmpp.presence    XMPP์˜ ์‚ฌ์šฉ์ž ์ƒํƒœ์ •๋ณด(Presence)๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค
 org.androidpn.server.xmpp.push        ํด๋ผ์ด์–ธํŠธ๋กœ ํ‘ธ์‹œ ๋ฉ”์‹œ์ง€๋ฅผ ์ ‚์†ก์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค
 org.androidpn.server.xmpp.router      ์ˆ˜์‹ž๋œ Stanza ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ƒํ•œ ํ•ถ๋“ค๋Ÿฌ๋กœ ๋ณด๋‚ด๋Š” ํด๋ž˜์Šค
 org.androidpn.server.xmpp.session     ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค



3.2      ํด๋ผ์ด์–ธํŠธ (androidpn-client)

ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ์„ ์•ˆ๋“œ๋กœ์ด๋“œ OS 1.5 ์ด์ƒ์˜ ํ”Œ๋žซํผ์„ ํ•„์š”๋กœ ํ•˜๋ฉฐ, XMPP ํด๋ผ์ด์–ธํŠธ ํ˜•ํƒœ๋กœ์„œ
์„œ๋ฒ„์™€ XML ์ŠคํŠธ๋ฆฌ๋ฐ ๊ธฐ๋ฐ˜ ํ†ต์‹ž์„ ํ•œ๋‹ค.



3.2.1    ํด๋ผ์ด์–ธํŠธ ์•„ํ‚คํ…์ณ




3.2.2    ํด๋ผ์ด์–ธํŠธ ์ฃผ์š” ๋ชจ๋“ˆ

      ๏ฌ Service Manager
          - ํด๋ผ์ด์–ธํŠธ ํ™–๊ฒฝ ์„ค์ • ๋กœ๋”ฉ ๋ฐ ํ†ต์ง€ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘/์ข…๋ฃŒ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๊ธฐ๋ณธ ๊ด€๋ฆฌ์ž ํด๋ž˜์Šค
      ๏ฌ Notification Service
          - ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ž์„ ์œ„ํ•ด ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์–ด๋„ ๋ฐฑ๊ทธ๋ผ์šฒ๋“œ๋กœ ์ˆ˜ํ–‰๋˜๋Š”
          ์•ˆ๋“œ๋กœ์ด๋“œ Service๋ฅผ ์ƒ์†ํ•œ ์„œ๋น„์Šค
      ๏ฌ XMPP Manager
          - XMPP ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ๋กœ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋ฒ„๋กœ์˜ ์—ฐ๊ฒฐ, ์‚ฌ์šฉ์ž ๋“ฑ๋ก, ๋กœ๊ทธ์ธ ๋“ฑ์„ ๋‹ด๋‹น
      ๏ฌ Connection Listener
          - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ‚ ์—ฐ๊ฒฐ์˜ ์ง€์†์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ฆฟ
      ๏ฌ Notification Packet Listener
          - ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ์˜ Notification ํŒจํ‚ท์„ ์ˆ˜์‹ž์„ ๋‹ด๋‹นํ•˜๊ณ , ํ†ต์ง€๋ฅผ ์œ„ํ•œ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜ํ–‰


โ“’ 2010 Moduad                                                               7
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                            ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


       ๏ฌ Notification Receiver
           - ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ž ํ›„ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋œ Notification ๋ฉ”์‹œ์ง€ ์ •๋ณด๋ฅผ ๋ฐ›์•„ ์ฒ˜๋ฆฌ
       ๏ฌ Notifier
           - Notification Manager๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆ˜์‹ž๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ†ต๋ณด
       ๏ฌ Connectivity Receiver
           - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ‚ ์—ฐ๊ฒฐ์˜ ์ง€์†์„ฑ์„ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ฆฟ
       ๏ฌ Phone State Listener
           - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ‚ ์—ฐ๊ฒฐ์˜ ์ง€์†์„ฑ์„ ์œ„ํ•ด ์ ‚ํ™”๊ธฐ ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ฆฟ
       ๏ฌ Notification Details Activity
           - ์‚ฌ์šฉ์ž์—๊ฒŒ ํ†ต๋ณด๋œ ๋ฉ”์‹œ์ง€์˜ ์ƒ์„ธ ์ •๋ณด ๋ทฐ๋ฅผ ์œ„ํ•œ Activity
       ๏ฌ Notification Settings Activity
           - ํด๋ผ์ด์–ธํŠธ์˜ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ž, ์†Œ๋ฆฌ, ์ง‚๋™ ์—ฌ๋ถ€ ๋“ฑ์˜ ์„ค์ • ๋ทฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” Activity



3.2.3     ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ ๋ฐ ๋„๊ตฌ

       ๏ฌ Android SDK
           - ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™ ํ”Œ๋žซํผ (์•ˆ๋“œ๋กœ์ด๋“œ OS 1.5 ์ด์ƒ ์ง€์›)
           - Service, NotificaitonManager, BroadcastReceiver ๋“ฑ
       ๏ฌ Smack
           - XMPP ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
       ๏ฌ Ant
           - ํ”„๋กœ์ ํŠธ ์†Œ์Šค ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ ๋„๊ตฌ



3.2.4     ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ์ž๋ฐ” ํŒจํ‚ค์ง€ ๊ตฌ์„ฑ

       ๏ฌ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ
ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ๋Š” ์ดํด๋ฆฝ์Šค ๊ธฐ๋ฐ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ๋กœ ๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์™€ ๋™์ผํ•˜๋‹ค.
        ๋””๋ ‰ํ† ๋ฆฌ๋ช…                                                    ์„ค๋ช…
 src                    ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์†Œ์Šค์™€ ๋ฐ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค ํฌํ•จ
 lib                    ํ”„๋กœ์ ํŠธ ์ฐธ์กฐ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ XMPP ํด๋ผ์ด์–ธํŠธ smack ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌํ•จ
 res                    ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ๋“ค๋กœ ํด๋ผ์ด์–ธํŠธ ์„ค์ •ํŒŒ์ผ์ธ android.properties ๋„ ํฌํ•จ
 Assets                 ์•ˆ๋“œ๋กœ์ด๋“œ assets ๋””๋ ‰ํ† ๋ฆฌ (์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ)


       ๏ฌ ์ž๋ฐ” ํŒจํ‚ค์ง€
ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ์˜ ์ž๋ฐ” ํด๋ž˜์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ํŒจํ‚ค์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
               ํŒจํ‚ค์ง€๋ช…                                                   ์„ค๋ช…
 org.androidpn.client              ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ํด๋ž˜์Šค. XMPP ํด๋ผ์ด์–ธํŠธ ๋ฐ ์•ˆ๋“œ๋กœ์ด๋“œ Service,
                                   Activity ๋“ฑ์„ ํฌํ•จ
 org.androidpn.demoapp             ๋ฐ๋ชจ์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ž˜์Šค




โ“’ 2010 Moduad                                                                     8
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                                           ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


3.3     ๋ฐ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ (androidpn-demoapp)

ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ์„ ์ด์šฉํ•˜์—ฌ ์•ˆ๋“œ๋กœ์ด๋“œ ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ฐ€์ด๋“œ์šฉ ์ƒ˜ํ”Œ
์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์ƒ์„ฑ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ(androidpn-client.jar)์„
ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.




4       ํ”„๋กœ์ ํŠธ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ

4.1     ์„œ๋ฒ„ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ

์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” JDK 1.5 ์ด์ƒ๊ณผ Maven 2.0์„ ํ•„์š”๋กœ ํ•œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€
์ ƒ์ฐจ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.
      โ‘  ํ”„๋กœ์ ํŠธ ์„œ๋ฒ„ ์†Œ์Šค ๋ฐฐํฌ ํŒŒ์ผ(androidpn-server-0.4.x.zip ํ˜•ํƒœ)์„ ์ค€๋น„ํ•˜๊ณ , ์••์ถ•์„ ํ‘ผ๋‹ค.
      โ‘ก ์‰˜ ํ”„๋กœํ”„ํŠธ์—์„œ mvn install ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ธฐ๋ณธ ๋ชจ๋“ˆ๋“ค์„ ์ปดํŒŒ์ผ, ํ…Œ์ŠคํŠธ ๋ฐ ๋นŒ๋“œํ•œ๋‹ค. ๋‹ค์Œ๊ณผ
         ์œ ์‚ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
        C:projectsandroidpn-server-0.5.0>mvn install
        [INFO] Scanning for projects...
        [INFO] Reactor build order:
        [INFO]    Andorid Push Notification
        [INFO]    Unnamed - org.androidpn:server:jar:0.5.0
        [INFO]    Unnamed - org.androidpn:starter:jar:0.5.0
        [INFO]    Unnamed - org.androidpn:console:war:0.5.0
        [INFO] ------------------------------------------------------------------------
        โ€ฆ ์ค‘๋žต โ€ฆ
        [INFO] Reactor Summary:
        [INFO] ------------------------------------------------------------------------
        [INFO] Andorid Push Notification ............................. SUCCESS [1.562s]
        [INFO] Unnamed - org.androidpn:server:jar:0.5.0 .............. SUCCESS [9.109s]
        [INFO] Unnamed - org.androidpn:starter:jar:0.5.0 ............. SUCCESS [0.812s]
        [INFO] Unnamed - org.androidpn:console:war:0.5.0 ............. SUCCESS [2.109s]
        [INFO] ------------------------------------------------------------------------
        [INFO] ------------------------------------------------------------------------
        [INFO] BUILD SUCCESSFUL
        [INFO] ------------------------------------------------------------------------
        [INFO] Total time: 13 seconds
        [INFO] Finished at: Wed Oct 13 02:15:18 KST 2010
        [INFO] Final Memory: 47M/114M
        [INFO] ------------------------------------------------------------------------
      โ‘ข ์‰˜ ํ”„๋กœํ”„ํŠธ์—์„œ mvn assembly:assembly ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜์—ฌ, ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ ์†Œ์Šค ๋ฐฐํฌ
         ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.


โ“’ 2010 Moduad                                                                                    9
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                                           ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


        C:projectsandroidpn-server-0.5.0>mvn assembly:assembly
        [INFO] Scanning for projects...
        [INFO] Reactor build order:
        [INFO]     Andorid Push Notification
        [INFO]     Unnamed - org.androidpn:server:jar:0.5.0
        [INFO]     Unnamed - org.androidpn:starter:jar:0.5.0
        [INFO]     Unnamed - org.androidpn:console:war:0.5.0
        [INFO] Searching repository for plugin with prefix: 'assembly'.
        [INFO] ------------------------------------------------------------------------
        โ€ฆ ์ค‘๋žต โ€ฆ
        [INFO] Building zip: C:projectsandroidpn-server-0.5.0targetandroidpn-server-0.5.0-bin.zip
        [INFO] Building zip: C:projectsandroidpn-server-0.5.0targetandroidpn-server-0.5.0-src.zip
        [INFO] ------------------------------------------------------------------------
        [INFO] BUILD SUCCESSFUL
        [INFO] ------------------------------------------------------------------------
        [INFO] Total time: 14 seconds
        [INFO] Finished at: Wed Oct 13 02:23:30 KST 2010
        [INFO] Final Memory: 27M/64M
        [INFO] ------------------------------------------------------------------------
      โ‘ฃ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋˜๋ฉด target ๋””๋ ‰ํ† ๋ฆฌ์— 2๊ฐœ์˜ zip ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. ์ด์ค‘ ์„œ๋ฒ„ ๋ฐ”์ด๋„ˆ๋ฆฌ ์‹คํ–‰
         ํ”„๋กœ๊ทธ๋žจ์€ androidpn-server-0.4.x-bin.zip ํ˜•ํƒœ๋กœ ๋นŒ๋“œ๋œ ํŒŒ์ผ์ด๋‹ค.



4.2     ํด๋ผ์ด์–ธํŠธ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ

ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” JDK 1.5 ์ด์ƒ๊ณผ Android 1.5 ์ด์ƒ SDK ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
๋ฐ ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด์„œ Ant 1.7 ์ด์ƒ์„ ํ•„์š”๋กœ ํ•œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ƒ์ฐจ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.
      โ‘  ํ”„๋กœ์ ํŠธ ํด๋ผ์ด์–ธํŠธ ์†Œ์Šค ๋ฐฐํฌ ํŒŒ์ผ(androidpn-client-0.4.x.zip ํ˜•ํƒœ)์„ ์ค€๋น„ํ•˜๊ณ , ์••์ถ•์„ ํ‘ผ๋‹ค.
      โ‘ก Ant ๋นŒ๋“œ์‹œ ์‚ฌ์šฉ๋˜๋Š” build.properties ํŒŒ์ผ์„ ์—ด์–ด, Android SDK ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์œ„์น˜๋ฅผ ํ™–๊ฒฝ์— ๋งž๊ฒŒ
         ์ˆ˜์ •ํ•ด์ค€๋‹ค.
        # Android SDK
        android.sdk.jar=c:/Android/android-sdk/platforms/android-3/android.jar
      โ‘ข ์‰˜ ํ”„๋กœํ”„ํŠธ์—์„œ ant build ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜์—ฌ, ํด๋ผ์ด์–ธํŠธ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์†Œ์Šค ๋ฐฐํฌ ํŒŒ์ผ์„
         ์ƒ์„ฑํ•œ๋‹ค.
        C:projectsandroidpn-client-0.5.0>ant build
        Buildfile: build.xml


        clean:


        compile:



โ“’ 2010 Moduad                                                                                           10
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                                              ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


            [mkdir] Created dir: C:projectsandroidpn-client-0.5.0targetclasses
            [javac] Compiling 16 source files to C:projectsandroidpn-client-0.5.0targetclasses


         build:
              [jar] Building jar: C:projectsandroidpn-client-0.5.0targetandroidpn-client-0.5.0.jar
            [mkdir] Created dir: C:projectsandroidpn-client-0.5.0targetandroidpn-client-0.5.0
             [copy] Copying 33 files to C:projectsandroidpn-client-0.5.0targetandroidpn-client-0.5.0
             [copy] Copied 15 empty directories to 1 empty directory under C:projectsandroidpn-
         client-0.5.0targetandroidpn-client-0.5.0
              [zip] Building zip: C:projectsandroidpn-client-0.5.0targetandroidpn-client-0.5.0.zip
           [delete] Deleting directory C:projectsandroidpn-client-0.5.0targetandroidpn-client-0.5.0


         BUILD SUCCESSFUL
         Total time: 1 second
       โ‘ฃ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋˜๋ฉด target ๋””๋ ‰ํ† ๋ฆฌ์— 1๊ฐœ์˜ jar ํŒŒ์ผ๊ณผ 1๊ฐœ์˜ zip ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. ์ด์ค‘
           ํด๋ผ์ด์–ธํŠธ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” androidpn-client-0.4.x.jar ํ˜•ํƒœ๋กœ ๋นŒ๋“œ๋œ ํŒŒ์ผ์ด๋ฉฐ, ์ด๋Š”
           ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœ์‹œ ์‚ฌ์šฉ๋œ๋‹ค.




5        ์„œ๋ฒ„ ์„ค์น˜ ๋ฐ ๊ตฌ๋™

5.1      ์„œ๋ฒ„ ์„ค์น˜

์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋นŒ๋“œ ์‹œ ํ•˜๋‚˜์˜ zip ํ˜•ํƒœ์˜ ์••์ถ•ํŒŒ์ผ๋กœ ์ƒ์„ฑ์ด ๋˜๋ฉฐ, ์›ํ•˜๋Š” ์œ„์น˜์— ํ’€๋ฉด ์„ค์น˜๊ฐ€ ๋œ๋‹ค.

5.1.1    ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
           ๋””๋ ‰ํ† ๋ฆฌ                                                    ์„ค๋ช…
 bin                         ์„œ๋ฒ„ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์œผ๋ฉฐ, Windows ๋ฐ Unix ์šฉ 2๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ๋‹ค.
 conf                        ๊ฐ์ข… ํ™–๊ฒฝ ์„ค์ •ํŒŒ์ผ๋“ค์ด ์žˆ์œผ๋ฉฐ, ์ผ๋ถ€ ํŒŒ์ผ๋“ค์€ ์‚ฌ์šฉ์ž ์„œ๋ฒ„ ํ™–๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •์„
                             ํ•ด์ค˜์•ผ ํ•œ๋‹ค.
 console                     ๊ด€๋ฆฌ์ž ์ฝ˜์†” ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋“ˆ์ด๋‹ค.
 lib                         ํ•ต์‹ฌ anroidpn ์„œ๋ฒ„ ๋ชจ๋“ˆ์„ ๋น„๋กฏํ•˜์—ฌ, ๊ฐ์ข… ์ฐธ์กฐ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์œ„์น˜ํ•œ๋‹ค.



5.1.2    ์„œ๋ฒ„ ํ™–๊ฒฝ ์„ค์ •

์„ค์น˜๋œ ์„œ๋ฒ„๋ฅผ ์ •์ƒ์ ์œผ๋กœ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ํ™–๊ฒฝ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค. ํ™–๊ฒฝ์„ค์ • ํŒŒ์ผ์€ conf ๋””๋ ‰ํ† ๋ฆฌ
์•ˆ์— ์žˆ์œผ๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค.
       ๏ฌ ์„œ๋ฒ„ ๊ธฐ๋ณธ ์„ค์ • (config.properties)
           ์„œ๋ฒ„ ๊ด€๋ฆฌ์ž ์ฝ˜์†”์„ ์ •์ƒ์ ์œผ๋กœ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ๋ช…๊ณผ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•œ๋‹ค.



โ“’ 2010 Moduad                                                                                             11
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                                       ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


        admin.console.host=127.0.0.1
        admin.console.port=7070


      ๏ฌ DB ์ •๋ณด ์„ค์ • (jdbc.properties, hibernate.xml)
         ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐœ๋ฐœ ํ™–๊ฒฝ์„ ์œ„ํ•ด HSQLDB๋ฅผ ์ด์šฉํ•˜๋‚˜, ์‚ฌ์šฉ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•ด์„œ MySQL, Oracle ๋“ฑ์œผ๋กœ
         ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.
        # JDBC Configuration
        jdbcDriverClassName=org.hsqldb.jdbcDriver
        jdbcUrl=jdbc:hsqldb:db/androidpn;shutdown=true
        jdbcUsername=sa
        jdbcPassword=


         DB ์ •๋ณด๊ฐ€ ๋ฐ”๋€” ๊ฒฝ์šฐ, ORM ํ”„๋ ˆ์ž„์›Œํฌ์ธ Hibernate ์„ค์ •ํŒŒ์ผ์˜ DB ์ •๋ณด๋„ ๋งž์ถฐ์ค€๋‹ค.
        <!-- Database connection settings -->
        <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property
        name="hibernate.connection.url">jdbc:hsqldb:db/androidpn;shutdown=true</property>
        <property name="hibernate.connection.username">sa</property>
        <property name="hibernate.connection.password"></property>




5.2      ์„œ๋ฒ„ ๊ตฌ๋™

์„œ๋ฒ„ ์‹œ์ž‘์„ ์œ„ํ•œ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋Š” bin ๋””๋ ‰ํ† ๋ฆฌ์— ์œˆ๋„์šฐ ๋ฐ ์œ ๋‹‰์Šค์šฉ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ๋‹ค. ์„œ๋ฒ„ ๊ตฌ๋™์„
์œ„ํ•ด์„œ๋Š” Java ๋Ÿฎํƒ€์ž„ 6.0 ์ด์ƒ์ด ์‹œ์Šคํ…œ์— ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. JAVA_HOME ๊ฐ’์„ ์Šคํฌ๋ฆฝํŠธ ์•ˆ์— ๋งž๊ฒŒ
์„ค์ •ํ•ด ์ฃผ๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ ํ™–๊ฒฝ์ •๋ณด์— ์„ค์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.


์•„๋ž˜๋Š” ์œˆ๋„์šฐ ํ™–๊ฒฝ์—์„œ ์„œ๋ฒ„ ์‹œ์ž‘์˜ ๊ตฌ๋™ ์˜ˆ์ด๋‹ค.
        C:androidpn-server-0.5.0bin>run
        {DEBUG} [2010-10-14 13:00:06,187] <org.androidpn.server.xmpp.XmppServer> : base.dir=..
        {DEBUG} [2010-10-14 13:00:06,312] <org.apache.commons.configuration.ConfigurationUtils> :
        ConfigurationUtils.locate(): b
        ase is C:androidpn-server-0.5.0bin, name is config.xml
        {DEBUG} [2010-10-14 13:00:06,343] <org.apache.commons.configuration.ConfigurationUtils> :
        Loading configuration from the context classpath (config.xml)


        ...์ค‘๋žต...


        {INFO } [2010-10-14 13:00:14,562] <org.mortbay.log> : Started
        SelectChannelConnector@127.0.0.1:7070


โ“’ 2010 Moduad                                                                                       12
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                                     ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


       {DEBUG} [2010-10-14 13:00:14,562] <org.androidpn.server.container.AdminConsole> : Admin
       console started.
       {INFO } [2010-10-14 13:00:14,562] <org.androidpn.server.xmpp.XmppServer> : Admin console
       listening at http://127.0.0.1:7070
       {INFO } [2010-10-14 13:00:14,562] <org.androidpn.server.xmpp.XmppServer> : XmppServer
       started: 127.0.0.1
       {INFO } [2010-10-14 13:00:14,562] <org.androidpn.server.xmpp.XmppServer> : Androidpn Server
       v0.5.0


์„œ๋ฒ„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๊ตฌ๋™๋˜์—ˆ์œผ๋ฉฐ, ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด์„œ http://ํ˜ธ์ŠคํŠธ๋ช…:ํฌํŠธ๋ฒˆํ˜ธ ์ฃผ์†Œ๋ฅผ ์ ‘์†ํ•˜์—ฌ ๊ด€๋ฆฌ์ž
์ฝ˜์†”์„ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. (์Šคํฌ๋ฆฎ์ƒท ์ฐธ์กฐ).




6       ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ

์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ˜ํ”Œ
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(androidpn-demoapp) ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณด๋ฉด ๋น ๋ฅด๊ฒŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.


6.1     ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€

์ดํด๋ฆฝ์Šค IDE์—์„œ ์‹ž๊ทœ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ํ›„, ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ(androidpn-
client)์—์„œ ๋นŒ๋“œํ•œ ํด๋ผ์ด์–ธํŠธ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(androidpn-client.jar)๋ฅผ ํ”„๋กœ์ ํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ถ”๊ฐ€ํ•œ๋‹ค.



6.2     ํด๋ผ์ด์–ธํŠธ ํ™–๊ฒฝ ์„ค์ • ํŒŒ์ผ

์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋ณธ ํด๋”์ธ res ํด๋” ๋ฐ‘์— raw ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑ ํ›„ ๊ทธ๊ณณ์— adroidpn.peoperties
ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. ์ด ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ‘์†ํ•  ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ์™€ ํฌํŠธ๋ฒˆํ˜ธ(๊ธฐ๋ณธ:5222) ์ •๋ณด๋ฅผ
์ž…๋ ฅํ•˜์—ฌ ํŽธ์ง‘ํ•œ๋‹ค.
       xmppHost=192.168.0.5
       xmppPort=5222




6.3     ํด๋ผ์ด์–ธํŠธ ์„œ๋น„์Šค ์‹œ์ž‘ ์ฝ”๋“œ

      ๏ฌ ํด๋ผ์ด์–ธํŠธ ๋ฉ”์ธ Activity ํด๋ž˜์Šค ํŒŒ์ผ์˜ onCreate() ๋ฉ”์†Œ๋“œ ์•ˆ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
       public void onCreate(Bundle savedInstanceState) {
                Log.d("DemoAppActivity", "onCreate()...");


                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);



โ“’ 2010 Moduad                                                                                     13
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                                              ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ




                  // Start the service
                  ServiceManager serviceManager = new ServiceManager(this);
                  serviceManager.setNotificationIcon(R.drawable.notification);
                  serviceManager.startService();
              }


      ๏ฌ ํ‘ธ์‹œ ํ†ต๋ณด ์ˆ˜์‹ž ์—ฌ๋ถ€ ๋ฐ ์‚ฌ์šฒ๋“œ, ์ง‚๋™์„ ์„ค์ •ํ•˜๋Š” Settings Activity๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒ„ํŠบ ๋“ฑ์˜
          ํด๋ฆญ ์ด๋ฒคํŠธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ๋œ๋‹ค.
        Button okButton = (Button) findViewById(R.id.btn_settings);
        okButton.setOnClickListener(new View.OnClickListener() {
              public void onClick(View view) {
                   ServiceManager.viewNotificationSettings(DemoAppActivity.this);
              }
        });


      ๏ฌ AndroidManifest.xml ํŒŒ์ผ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„œ๋น„์Šค ๋ฐ Activity ํด๋ž˜์Šค๋ฅผ ๋“ฑ๋กํ•ด ์ค€๋‹ค.
        <activity android:name="org.androidpn.client.NotificationDetailsActivity"
                   android:label="Notification Details">
        </activity>


        <activity android:name="org.androidpn.client.NotificationSettingsActivity"
                   android:label="Notification Settings">
        </activity>


        <service android:enabled="true"
                   android:name="org.androidpn.client.NotificationService"
                   android:label="NotificationService">
                   <intent-filter>
                            <action android:name="org.androidpn.client.NotificationService" />
                   </intent-filter>
        </service>




7       ํ”„๋กœ์ ํŠธ ์Šคํฌ๋ฆฐ์ƒท

7.1     ์„œ๋ฒ„ (๊ด€๋ฆฌ์ž ์›น ์ฝ˜์†”)

      ๏ฌ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋ฒ„์˜ ๊ด€๋ฆฌ์ž ์ฝ˜์†” ์ดˆ๊ธฐํ™”๋ฉด์ด๋‹ค.




โ“’ 2010 Moduad                                                                                      14
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ




   ๏ฌ ์„œ๋ฒ„์— ๋“ฑ๋ก๋œ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์šฉ์ž ๋ชฉ๋ก์ด๋‹ค.




   ๏ฌ ํ˜„์žฌ ์ ‘์†๋œ ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜ ๋ชฉ๋ก์ด๋‹ค.




โ“’ 2010 Moduad                        15
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                   ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ




   ๏ฌ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์— ํ‘ธ์‹œ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.




   ๏ฌ Username์„ ์ง€์ •ํ•˜์—ฌ ํŠน์ • ํด๋ผ์ด์–ธํŠธ์—๋งŒ ํ‘ธ์‹œ ๋ฉ”์‹œ์ง€ ์ ‚์†กํ•  ์ˆ˜ ์žˆ๋‹ค.




โ“’ 2010 Moduad                                           16
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                           ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ




7.2     ํด๋ผ์ด์–ธํŠธ (์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)

      ๏ฌ Android 1.5 (Cupcake) ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ํ‘ธ์‹œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹žํ•œ ํ™”๋ฉด์ด๋‹ค.




โ“’ 2010 Moduad                                                   17
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                        ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ




   ๏ฌ Android 2.1 (ร‰clair) ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ํ‘ธ์‹œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹žํ•œ ํ™”๋ฉด์ด๋‹ค.




   ๏ฌ ๋ฐ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™ ์ดˆ๊ธฐํ™”๋ฉด ๋ฐ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ž์‹œ ์ƒํƒœ Ticker ํ™—์„ฑ ํ™”๋ฉด์ด๋‹ค.




   ๏ฌ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ž ๋ชฉ๋ก ํ™”๋ฉด ๋ฐ ์ด๋ฅผ ํ„ฐ์น˜ํ–ˆ์„ ๊ฒฝ์šฐ ์ ‚์ฒด ๋ฉ”์‹œ์ง€ ์ƒ์„ธ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.




โ“’ 2010 Moduad                                                18
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ




   ๏ฌ ํ‘ธ์‹œ ํ†ต๋ณด ์„ค์ •ํ™”๋ฉด์—์„œ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ž์—ฌ๋ถ€ ๋ฐ ์‚ฌ์šฒ๋“œ, ์ง‚๋™ ์—ฌ๋ถ€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.




   ๏ฌ ์„œ๋ฒ„์—์„œ URI ์ •๋ณด๋ฅผ ์ถ”๊ฐ€๋กœ ์ ‚์†กํ–ˆ์„ ๊ฒฝ์šฐ, ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ ํ™•์ธ ํ›„ ํŠน์ • ์›นํŽ˜์ด์ง€ ๋ฐ ์ง€๋„ ์œ„์น˜,
      ๊ฑธํ™”๊ฑธ๊ธฐ ๋“ฑ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ํ™”๋ฉด์€ URI ์ •๋ณด์— http://www.dokdocorea.com,
      geo:37.24,131.86, tel:111-222-333 ๊ฐ’์„ ๊ฐ๊ฐ ์ ‚์†กํ•œ ๊ฒฝ์šฐ์ด๋‹ค.




โ“’ 2010 Moduad                                                        19
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                              ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ




8       ์ฃผ์š” ๊ด€๋ จ ๊ธฐ์ˆ 

8.1     ํ‘ธ์‹œ ํ†ต๋ณด (Push Notification)๋ž€?

8.1.1   ํ‘ธ์‹œ ํ†ต๋ณด๋ž€?

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



8.1.2   ๋ชจ๋ฐ”์ผ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋น„์Šค

      ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ            ์—…์ฒด                                ํ˜„ํ™ฉ
 BlackBerry        RIM         2002๋…„๋ถ€ํ„ฐ Push Email ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘์œผ๋กœ ์ž์ฒด์ ์œผ๋กœ ํ‘ธ์‹œ ํ†ต๋ณด
                               ์„œ๋น„์Šค๋ฅผ ์ง€์›
 iPhone OS (iOS)   Apple       2009๋…„ iPhone OS 3.0๋ถ€ํ„ฐ Apple Push Notification Service
                               (APNS)๋ฅผ ์ง€์›
 Android           Google      Android 2.2 (Froyo)๋ถ€ํ„ฐ Cloud To Device Messaging (C2DM)์„
                               ํ†ตํ•ด ์ง€์› ์˜ˆ์ •
 Windows Phone 7   Microsoft   Microsoft Push Notification Service (MPNS) ์ง€์›๊ณผ ํ•จ๊ป˜ ์ถœ์‹œ ์˜ˆ์ •




โ“’ 2010 Moduad                                                                            20
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                         ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


8.2      Push vs. Pull

๋„คํŠธ์›Œํฌ ์ƒ์˜ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ‚์˜ ํ†ต์‹ž ๋ฐฉ์‹์—์„œ ์š”์ฒญํ•˜๋Š” ์ฃผ์ฒด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด Push ์™€ Pull
๋ฐฉ์‹์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

8.2.1    Push Technology (Server Push)

      ๏ฌ ๋ฉ”์‹œ์ง€ ์ ‚์†ก ํŠธ๋žœ์žญ์…˜์ด ์„œ๋ฒ„์—์„œ ์‹œ์ž‘๋˜์–ด ํด๋ผ์ด์–ธํŠธ๋กœ ์ ‚์†ก๋˜๋Š” ํ†ต์‹ž
         ๋ฐฉ์‹์ด๋‹ค.
      ๏ฌ XMPP, SMTP, HTTP Server Push (HTTP Streaming), Long Polling ๋“ฑ



8.2.2    Pull Technology (Client Pull)

      ๏ฌ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฐ์ดํ„ฐ ์ ‚์†ก ์š”์ฒญ์ด ์‹œ์ž‘๋˜์–ด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›๋Š”
         ํ˜•ํƒœ์˜ ํ†ต์‹ž ๋ฐฉ์‹์ด๋‹ค.
      ๏ฌ HTTP, POP3, IMAP, RSS Feeds ๋“ฑ



8.3      XMPP (eXtensible Message and Presence Protocol)

8.3.1    XMPP๋ž€?

      ๏ฌ ์ธํ„ฐ๋„ท ์ƒ์˜ ๋‘ ์ง€์  ๊ฐ‚์— ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฉ”์‹œ์ง€์™€ ์ƒํƒœ์ •๋ณด(Presence)๋ฅผ
         ์‹ค์‹œ๊ฐ‚์œผ๋กœ ํ†ต์‹žํ•˜๊ธฐ ์œ„ํ•œ XML ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ํ‘œ์ค€ ๊ธฐ์ˆ ์ด๋‹ค.
      ๏ฌ 1999๋…„ Jabber ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜ํ•ด ๊ฐœ๋ฐœ ๋˜์—ˆ๊ณ , 2000๋…„~2004๋…„์— ๊ฑธ์ณ
         IETF์— ์˜ํ•ด ํ‘œ์ค€ํ™” ๋˜์—ˆ๋‹ค.
      ๏ฌ XMPP Standard Foundation (XSF)์˜ ํ‘œ์ค€ํ™” ์ž‘์—…์— ์˜ํ•ด ์ง€์†์  ํ™•์žฅ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, XMPP Extension
         Protocols (XEP)๋กœ ๋ณ„๋„๋กœ ํ™•์žฅ ์ŠคํŽ™์„ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค.
      ๏ฌ http://xmpp.org/ ์‹ธ์ดํŠธ์—์„œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.



8.3.2    XMPP vs. HTTP

XMPP ํ”„๋กœํ† ์ฝœ์€ Push ๊ธฐ์ˆ ์˜ ํ†ต์‹ž๋ฐฉ์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ์˜ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ ์ž ํ•  ๋•Œ,
HTTP ๊ธฐ๋ฐ˜์˜ Polling ๋ฐฉ์‹์— ๋น„ํ•ด ํ›จ์”ฌ ํด๋ผ์ด์–ธํŠธ์˜ ์ž์› ์†Œ๋ชจ๊ฐ€ ์ ๊ณ  ํšจ์œจ์ ์ด๋‹ค.




โ“’ 2010 Moduad                                                                 21
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                    ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ




8.3.3    XMPP๋Š” ๋‹คํ–ฅํ•œ ๋ถ„์•ผ์—์„œ ์‘์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ

      ๏ฌ Instant Messaging (IM)
      ๏ฌ Multi-User Chat
      ๏ฌ Voice and Video Conferencing
      ๏ฌ Real-time Collaboration
      ๏ฌ Social Networking
      ๏ฌ Microblogging
      ๏ฌ Lightweight Middleware
      ๏ฌ Content Syndication



8.4      ์•ˆ๋“œ๋กœ์ด๋“œ(Android)

8.4.1    ์•ˆ๋“œ๋กœ์ด๋“œ๋ž€?

      ๏ฌ ์šฒ์˜์ฒด์ œ, ๋ฏธ๋“ค์›จ์–ด ๋ฐ ํ•ต์‹ฌ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ํฌํ•จํ•˜๋Š” ํœด๋Œ€๊ธฐ๊ธฐ์šฉ ์†Œํ”„ํŠธ์›จ์–ด
          ์Šคํƒ
      ๏ฌ Google์— ์˜ํ•ด ๊ฐœ๋ฐœ๋˜๊ณ  ์˜คํ”ˆ ์†Œ์Šคํ™” (2008๋…„)
      ๏ฌ Linux ์ปค๋„ ๊ธฐ๋ฐ˜์˜ ์šฒ์˜์ฒด์ œ
      ๏ฌ Dalvik ๊ฐ€์ƒ๋จธ์‹ž๊ณผ Java ์–ธ์–ด ๊ธฐ๋ฐ˜์˜ SDK ์ง€์›
      ๏ฌ Android Market์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ




โ“’ 2010 Moduad                                            22
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                                                          ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


8.4.2    ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ์ง„ํ™” ์ค‘

      ๏ฌ Cupcake(v1.5) ๏ƒ  Donut(v1.6) ๏ƒ  ร‰clair(v2.0,v2.1) ๏ƒ  Froyo(v2.2) ๏ƒ  Gingerbread(3.0)
      ๏ฌ ํ˜„์žฌ Andorid 2.2 (Froyo)๊นŒ์ง€ ๋ฐœํ‘œ๋˜์—ˆ์œผ๋ฉฐ, ์ด OS ๋ฒ„์ ‚๋ถ€ํ„ฐ C2DM(Cloud to Device Messaging)
          ๊ธฐ์ˆ ์ด ์ ์šฉ๋˜์—ˆ์œผ๋ฉฐ, ์กฐ๋งŒ๊ฐ‚ ๊ตฌ๊ธ€์—์„œ ์ •์‹ ์„œ๋น„์Šค ์˜ˆ์ •์ด๋‹ค.




9        ๊ฐœ๋ฐœ ํ™–๊ฒฝ

ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ ๊ฐœ๋ฐœ ํ™–๊ฒฝ์€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋‘ Java ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ JDK 5.0 ์ด์ƒ๊ณผ Eclipse
(3.5 ๊ถŒ์žฅ)๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค. ์ƒ์„ธ ๊ฐœ๋ฐœ ํ™–๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.


9.1      ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ™–๊ฒฝ

                     ๊ตฌ๋ถ„                                                 ์„ค๋ช…
 ์‹œ์Šคํ…œ ํ”Œ๋žซํผ                                   Linux ๋˜๋Š” Windows
 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด                                  Java (JDK 1.5 ์ด์ƒ)
 IDE                                       Eclipse 3.5
 ๋นŒ๋“œ ๋„๊ตฌ                                     Ant 1.7.1, Maven 2.0
 Database                                  HSQLDB ๋˜๋Š” MySQL
 Servlet Container                         Jetty 6.1
 J2EE ์ŠคํŽ™                                   Servlet 2.4, JSP 2.0
 ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ                          Spring 2.5, MINA 2.0, Hibernate 3.3.1, SiteMesh 2.4




9.2      ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ ํ™–๊ฒฝ

                     ๊ตฌ๋ถ„                                                 ์„ค๋ช…
 ๋””๋ฐ”์ด์Šค ๋‹จ๋ง๊ธฐ                                  ์‚ผ์„ฑ ๊ฐค๋Ÿญ์‹œS
 ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ                                   Android SDK r07
 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด                                  Java (JDK 1.5 ์ด์ƒ)
 IDE                                       Eclipse 3.5
 ๋นŒ๋“œ ๋„๊ตฌ                                     Ant 1.7.1
 ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ                          Smack 3.1




10       ๋ฐœ์ „ ๋ฐฉํ–ฅ

10.1     ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ ํ–ฅ์ƒ

      ๏ฌ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ‚์˜ SSL/TSL ๋ณด์•ˆ ์ฑ„๋„ ์ ์šฉ์œผ๋กœ ์ƒ์šฉํ™” ์„œ๋น„์Šค๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์œผ๋กœ ํ’ˆ์งˆ ํ–ฅ์ƒ.
          (XMPP ํ”„๋กœํ† ์ฝœ์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ์ฑ„ํƒ).


โ“’ 2010 Moduad                                                                                    23
์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ                                            ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ


   ๏ฌ Wi-Fi, 3G, HSDPA ๋ง ๊ตฌ๋ถ„๊ณผ ์ˆ˜์‹œ๋กœ ๋ณ€ํ•  ์ˆ˜ ๋ชจ๋ฐ”์ผ ๋„คํŠธ์›Œํฌ ํ™–๊ฒฝ์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ‚์˜
       ์—ฐ๊ฒฐ ์ง€์†์„ฑ์„ ์œ„ํ•œ ํ’ˆ์งˆ ํ–ฅ์ƒ ๋ฐ ๋‹ค์–‘ํ•œ ํ™–๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ.



10.2   ์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ ํ™•์žฅ

   ๏ฌ ์„œ๋ฒ„ ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ๋™์‹œ์— ์ง€์›ํ•˜๋Š” ํ”Œ๋žซํผ ์„œ๋น„์Šค์—
       ์‘์šฉ๋  ์ˆ˜ ์žˆ์Œ. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋™์‹œ์— ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋ณ„ ์• ํ”Œ์ผ€์ด์…˜ ์ธ์ฆ๊ณผ ์—ฌ๋Ÿฌ
       ๊ฐœ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ–ฅ์ƒ ํ•„์š”.
   ๏ฌ   ํด๋ผ์ด์–ธํŠธ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ OS ์ด์™ธ์˜ ํƒ€ ๋ชจ๋ฐ”์ผ OS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ง€์›์„ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ
       ๋ชจ๋“ˆ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Œ.


10.3   ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ์‘์šฉ

   ๏ฌ ๋ฉ”์‹œ์ง€ ํ”„๋กœํ† ์ฝœ ํ™•์žฅ์„ ํ†ตํ•ด ์ด๋ฏธ์ง€, ์‚ฌ์šฒ๋“œ, ๋น„๋””์˜ค ๋“ฑ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋ฉ”์‹œ์ง€ ์ ‚๋‹ฌํ•˜๋Š” ๋“ฑ ๋”์šฑ๋™
       ์ƒ๋™๊ฐ ์žˆ๋Š” ๋‰ด์Šค ์ ‚๋‹ฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‘์šฉ๋  ์ˆ˜ ์žˆ์Œ.
   ๏ฌ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜์— ๋”ฐ๋ฅธ ์ง€์—ญ ๊ด‘๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ ‚๋‹ฌํ•˜๋Š” ์œ„์น˜๊ธฐ๋ฐ˜ ์„œ๋น„์Šค(LBS, Location Based
       Service)๋ฅผ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ด์šฉ๋  ์ˆ˜ ์žˆ์Œ.
   ๏ฌ SMS(Short Message Service)๋ฅผ ๋Œ€์‹žํ•˜๋Š” ๊ฐ€์ž…์ž๊ฐ€ ์‹ค์‹œ๊ฐ‚์œผ๋กœ ๋‹จ๋ฌธ ๋ฉ”์‹œ์ง€ ์ ‚๋‹ฌํ•˜๋Š” ์„œ๋น„์Šค ๋“ฑ์—
       ์‘์šฉ๋  ์ˆ˜ ์žˆ์Œ.



10.4   ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™•๋Œ€์— ๊ธฐ์—ฌ

   ๏ฌ SourceForge, Google Code, KLDP ๋“ฑ ๋‹ค์–‘ํ•œ ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด ๊ตญ๋‚ด์™ธ ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ์ž ์ฐธ์—ฌ
       ์œ ๋„ ๋ฐ ์ด๋ฅผ ํ†ตํ•œ ํ’ˆ์งˆ ํ–ฅ์ƒ.
   ๏ฌ ๊ตญ๋‚ด ๊ฐœ๋ฐœ์ž๋“ค ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ํ†ตํ•œ ๊ฐœ๋ฐœ์ž ์—ญ๋Ÿ‰ ํ–ฅ์ƒ์„ ๊ฝคํ•˜๊ณ , ๋‹ค์–‘ํ•œ ์•ˆ๋“œ๋กœ์ด๋“œ
       ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‘์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณต.




โ“’ 2010 Moduad                                                       24

Mais conteรบdo relacionado

Semelhante a Androidpn guide-0.5.0-ko

[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„
[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„
[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„Tommy Lee
ย 
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ AWS ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ - AWS Summit Seoul 2017
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ AWS ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ - AWS Summit Seoul 2017๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ AWS ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ - AWS Summit Seoul 2017
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ AWS ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ - AWS Summit Seoul 2017Amazon Web Services Korea
ย 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
ย 
๋ฉ€ํ‹ฐํ‹ฐ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ
๋ฉ€ํ‹ฐํ‹ฐ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ๋ฉ€ํ‹ฐํ‹ฐ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ
๋ฉ€ํ‹ฐํ‹ฐ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌDevgear
ย 
Nutch Homepage Search Engine
Nutch Homepage Search EngineNutch Homepage Search Engine
Nutch Homepage Search EngineKay Kim
ย 
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌHankyo
ย 
Mirantis open stack deployment automation
Mirantis open stack deployment automationMirantis open stack deployment automation
Mirantis open stack deployment automationWooKyun Jeon
ย 
Cloud-Barista ์ œ3์ฐจ ์˜คํ”ˆ ์ปจํผ๋Ÿฐ์Šค : CB-Dragonfly - ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ํ”„๋ ˆ์ž„์›Œํฌ(Multi-Cloud ...
Cloud-Barista ์ œ3์ฐจ ์˜คํ”ˆ ์ปจํผ๋Ÿฐ์Šค : CB-Dragonfly - ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ํ”„๋ ˆ์ž„์›Œํฌ(Multi-Cloud ...Cloud-Barista ์ œ3์ฐจ ์˜คํ”ˆ ์ปจํผ๋Ÿฐ์Šค : CB-Dragonfly - ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ํ”„๋ ˆ์ž„์›Œํฌ(Multi-Cloud ...
Cloud-Barista ์ œ3์ฐจ ์˜คํ”ˆ ์ปจํผ๋Ÿฐ์Šค : CB-Dragonfly - ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ํ”„๋ ˆ์ž„์›Œํฌ(Multi-Cloud ...Cloud-Barista Community
ย 
Microsoft azure service ์†Œ๊ฐœ์ž๋ฃŒ
Microsoft azure service ์†Œ๊ฐœ์ž๋ฃŒMicrosoft azure service ์†Œ๊ฐœ์ž๋ฃŒ
Microsoft azure service ์†Œ๊ฐœ์ž๋ฃŒAlvin You
ย 
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)Hankyo
ย 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetesSangSun Park
ย 
[2017 AWS Startup Day] ์„œ๋ฒ„๋ฆฌ์Šค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ผ๋‹น๋ฐฑ ๊ฐœ๋ฐœ์กฐ์ง ๋งŒ๋“ค๊ธฐ
[2017 AWS Startup Day] ์„œ๋ฒ„๋ฆฌ์Šค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ผ๋‹น๋ฐฑ ๊ฐœ๋ฐœ์กฐ์ง ๋งŒ๋“ค๊ธฐ[2017 AWS Startup Day] ์„œ๋ฒ„๋ฆฌ์Šค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ผ๋‹น๋ฐฑ ๊ฐœ๋ฐœ์กฐ์ง ๋งŒ๋“ค๊ธฐ
[2017 AWS Startup Day] ์„œ๋ฒ„๋ฆฌ์Šค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ผ๋‹น๋ฐฑ ๊ฐœ๋ฐœ์กฐ์ง ๋งŒ๋“ค๊ธฐAmazon Web Services Korea
ย 
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ฒซ๊ฑธ์Œ
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ฒซ๊ฑธ์Œํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ฒซ๊ฑธ์Œ
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ฒซ๊ฑธ์ŒDataUs
ย 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
ย 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3uEngine Solutions
ย 
[21]๋ณ€ํ™”์˜ ์‹œ๋Œ€ : ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ•  ๊ฒƒ์ธ๊ฐ€?
[21]๋ณ€ํ™”์˜ ์‹œ๋Œ€ : ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ•  ๊ฒƒ์ธ๊ฐ€?[21]๋ณ€ํ™”์˜ ์‹œ๋Œ€ : ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ•  ๊ฒƒ์ธ๊ฐ€?
[21]๋ณ€ํ™”์˜ ์‹œ๋Œ€ : ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ•  ๊ฒƒ์ธ๊ฐ€?NAVER Engineering
ย 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice ArchitectureYoonsung Jung
ย 
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.ํšจ๊ทผ ๋ฐ•
ย 

Semelhante a Androidpn guide-0.5.0-ko (20)

[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„
[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„
[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„
ย 
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ AWS ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ - AWS Summit Seoul 2017
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ AWS ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ - AWS Summit Seoul 2017๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ AWS ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ - AWS Summit Seoul 2017
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ AWS ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ - AWS Summit Seoul 2017
ย 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
ย 
๋ฉ€ํ‹ฐํ‹ฐ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ
๋ฉ€ํ‹ฐํ‹ฐ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ๋ฉ€ํ‹ฐํ‹ฐ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ
๋ฉ€ํ‹ฐํ‹ฐ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ
ย 
Sencha ExtJS๋ฅผ ํ™œ์šฉํ•œ Big Data Platform ๊ฐœ๋ฐœ ์‚ฌ๋ก€
Sencha ExtJS๋ฅผ ํ™œ์šฉํ•œ Big Data Platform ๊ฐœ๋ฐœ ์‚ฌ๋ก€ Sencha ExtJS๋ฅผ ํ™œ์šฉํ•œ Big Data Platform ๊ฐœ๋ฐœ ์‚ฌ๋ก€
Sencha ExtJS๋ฅผ ํ™œ์šฉํ•œ Big Data Platform ๊ฐœ๋ฐœ ์‚ฌ๋ก€
ย 
Nutch Homepage Search Engine
Nutch Homepage Search EngineNutch Homepage Search Engine
Nutch Homepage Search Engine
ย 
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
ย 
Mirantis open stack deployment automation
Mirantis open stack deployment automationMirantis open stack deployment automation
Mirantis open stack deployment automation
ย 
Cloud-Barista ์ œ3์ฐจ ์˜คํ”ˆ ์ปจํผ๋Ÿฐ์Šค : CB-Dragonfly - ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ํ”„๋ ˆ์ž„์›Œํฌ(Multi-Cloud ...
Cloud-Barista ์ œ3์ฐจ ์˜คํ”ˆ ์ปจํผ๋Ÿฐ์Šค : CB-Dragonfly - ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ํ”„๋ ˆ์ž„์›Œํฌ(Multi-Cloud ...Cloud-Barista ์ œ3์ฐจ ์˜คํ”ˆ ์ปจํผ๋Ÿฐ์Šค : CB-Dragonfly - ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ํ”„๋ ˆ์ž„์›Œํฌ(Multi-Cloud ...
Cloud-Barista ์ œ3์ฐจ ์˜คํ”ˆ ์ปจํผ๋Ÿฐ์Šค : CB-Dragonfly - ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ํ”„๋ ˆ์ž„์›Œํฌ(Multi-Cloud ...
ย 
Microsoft azure service ์†Œ๊ฐœ์ž๋ฃŒ
Microsoft azure service ์†Œ๊ฐœ์ž๋ฃŒMicrosoft azure service ์†Œ๊ฐœ์ž๋ฃŒ
Microsoft azure service ์†Œ๊ฐœ์ž๋ฃŒ
ย 
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
ย 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetes
ย 
[2017 AWS Startup Day] ์„œ๋ฒ„๋ฆฌ์Šค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ผ๋‹น๋ฐฑ ๊ฐœ๋ฐœ์กฐ์ง ๋งŒ๋“ค๊ธฐ
[2017 AWS Startup Day] ์„œ๋ฒ„๋ฆฌ์Šค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ผ๋‹น๋ฐฑ ๊ฐœ๋ฐœ์กฐ์ง ๋งŒ๋“ค๊ธฐ[2017 AWS Startup Day] ์„œ๋ฒ„๋ฆฌ์Šค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ผ๋‹น๋ฐฑ ๊ฐœ๋ฐœ์กฐ์ง ๋งŒ๋“ค๊ธฐ
[2017 AWS Startup Day] ์„œ๋ฒ„๋ฆฌ์Šค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ผ๋‹น๋ฐฑ ๊ฐœ๋ฐœ์กฐ์ง ๋งŒ๋“ค๊ธฐ
ย 
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ฒซ๊ฑธ์Œ
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ฒซ๊ฑธ์Œํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ฒซ๊ฑธ์Œ
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ฒซ๊ฑธ์Œ
ย 
Microservices
Microservices Microservices
Microservices
ย 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
ย 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3
ย 
[21]๋ณ€ํ™”์˜ ์‹œ๋Œ€ : ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ•  ๊ฒƒ์ธ๊ฐ€?
[21]๋ณ€ํ™”์˜ ์‹œ๋Œ€ : ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ•  ๊ฒƒ์ธ๊ฐ€?[21]๋ณ€ํ™”์˜ ์‹œ๋Œ€ : ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ•  ๊ฒƒ์ธ๊ฐ€?
[21]๋ณ€ํ™”์˜ ์‹œ๋Œ€ : ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ•  ๊ฒƒ์ธ๊ฐ€?
ย 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
ย 
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.
ย 

Androidpn guide-0.5.0-ko

  • 1. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ Android Push Notification System Project Guide v0.5 2010.10 Moduad Co., Ltd. โ“’ 2010 Moduad 1
  • 2. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ ๋ชฉ ์ฐจ 1 ํ”„๋กœ์ ํŠธ ๊ฐœ์š”...................................................................................................................... 3 1.1 ํ”„๋กœ์ ํŠธ ๋ชฉ์  ............................................................................................................................... 3 1.2 ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๋ฐฐ๊ฒฝ ...................................................................................................................... 3 2 ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ........................................................................................... 3 2.1 ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ................................................................................................................................... 3 2.2 ํ‘ธ์‹œ ํ†ต๋ณด ๊ณผ์ • .............................................................................................................................. 4 3 ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ...................................................................................................................... 4 3.1 ์„œ๋ฒ„ (androidpn-server).............................................................................................................. 4 3.2 ํด๋ผ์ด์–ธํŠธ (androidpn-client) ................................................................................................... 7 3.3 ๋ฐ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ (androidpn-demoapp) .............................................................................. 9 4 ํ”„๋กœ์ ํŠธ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ ................................................................................................... 9 4.1 ์„œ๋ฒ„ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ .................................................................................................................... 9 4.2 ํด๋ผ์ด์–ธํŠธ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ ...................................................................................................... 10 5 ์„œ๋ฒ„ ์„ค์น˜ ๋ฐ ๊ตฌ๋™ ............................................................................................................. 11 5.1 ์„œ๋ฒ„ ์„ค์น˜ ..................................................................................................................................... 11 5.2 ์„œ๋ฒ„ ๊ตฌ๋™ ..................................................................................................................................... 12 6 ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ...................................................................................... 13 6.1 ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ .................................................................................................... 13 6.2 ํด๋ผ์ด์–ธํŠธ ํ™–๊ฒฝ ์„ค์ • ํŒŒ์ผ ...................................................................................................... 13 6.3 ํด๋ผ์ด์–ธํŠธ ์„œ๋น„์Šค ์‹œ์ž‘ ์ฝ”๋“œ .................................................................................................. 13 7 ํ”„๋กœ์ ํŠธ ์Šคํฌ๋ฆฐ์ƒท............................................................................................................ 14 7.1 ์„œ๋ฒ„ (๊ด€๋ฆฌ์ž ์›น ์ฝ˜์†”) ................................................................................................................ 14 7.2 ํด๋ผ์ด์–ธํŠธ (์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜).................................................................................. 17 8 ์ฃผ์š” ๊ด€๋ จ ๊ธฐ์ˆ  .................................................................................................................. 20 8.1 ํ‘ธ์‹œ ํ†ต๋ณด (Push Notification)๋ž€? ............................................................................................ 20 8.2 Push vs. Pull ................................................................................................................................ 21 8.3 XMPP (eXtensible Message and Presence Protocol) .......................................................... 21 8.4 ์•ˆ๋“œ๋กœ์ด๋“œ(Android).................................................................................................................. 22 9 ๊ฐœ๋ฐœ ํ™–๊ฒฝ............................................................................................................................ 23 9.1 ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ™–๊ฒฝ ............................................................................................................................ 23 9.2 ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ ํ™–๊ฒฝ ................................................................................................................ 23 10 ๋ฐœ์ „ ๋ฐฉํ–ฅ............................................................................................................................ 23 10.1 ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ ํ–ฅ์ƒ ............................................................................................................ 23 10.2 ์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ ํ™•์žฅ ......................................................................................... 24 10.3 ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ์‘์šฉ ................................................................................................................ 24 10.4 ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™•๋Œ€์— ๊ธฐ์—ฌ .......................................................................................... 24 โ“’ 2010 Moduad 2
  • 3. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ 1 ํ”„๋กœ์ ํŠธ ๊ฐœ์š” 1.1 ํ”„๋กœ์ ํŠธ ๋ชฉ์  ๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋งŽ์€ ํ•„์š”์„ฑ๊ณผ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ์‘์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๋ฐ˜์˜ ํ‘ธ์‹œ ํ†ต๋ณด (Push Notification) ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ์„œ๋ฒ„ ์‹œ์Šคํ…œ ๋ฐ ํด๋ผ์ด์–ธํŠธ ์†”๋ฃจ์…˜์„ ์˜คํ”ˆ์†Œ์Šค๋กœ ์ œ๊ณตํ•˜์—ฌ, ๊ตญ๋‚ด์™ธ ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐ ๊ณต๊ฐœ SW ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™—์„ฑํ™”์— ๊ธฐ์—ฌ๋ฅผ ํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•œ๋‹ค. ๏ฌ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋ฒ„ ์‹œ์Šคํ…œ ๏ฌ ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ ๏ฌ ์•ˆ๋“œ๋กœ์ด๋“œ ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ 1.2 ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๋ฐฐ๊ฒฝ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ํ˜„์žฌ Google์—์„œ ์ •์‹์ ์ธ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๋ฐ˜ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋น„์Šค๋ฅผ ์ง€์›์„ ํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ƒํ™ฉ์ด๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ 2.2 (Froyo)๋ถ€ํ„ฐ ๋“ฑ์žฅํ•œ Cloud To Device Messaging (C2DM) ์„œ๋น„์Šค๋Š” ํ˜„์žฌ Lab ํ…Œ์ŠคํŠธ ๋ฒ„์ ‚์œผ๋กœ ์ •์‹ ์„œ๋น„์Šค๊ฐ€ ๋˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ƒํ™ฉ์ด๋ฉฐ, ์ด์ ‚ ์•ˆ๋“œ๋กœ์ด๋“œ OS ๋ฒ„์ ‚์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด์— ๋ฐ˜ํ•ด BlackBerry๋Š” 2002๋…„ Push Email ์„œ๋น„์Šค์„ ์‹œ์ž‘์œผ๋กœ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ, Apple๋„ 2009๋…„ iPhone 3.0 ์ดํ›„๋ถ€ํ„ฐ Apple Push Notification Service (APNS)๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค. ๋˜ํ•œ Microsoft๋„ ์ถœ์‹œ ์˜ˆ์ •์ธ Windows Phone 7์—์„œ Microsoft Push Notification Service (MPNS) ์ง€์›๊ณผ ํ•จ๊ป˜ ์ถœ์‹œ ์˜ˆ์ •์ด๋‹ค. 2 ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ 2.1 ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ์€ XMPP ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋Š” ์†Œ์ผ“ ์„œ๋ฒ„ ์‹œ์Šคํ…œ๊ณผ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๋ฐ˜ ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์„œ๋ฒ„ Java ๊ธฐ๋ฐ˜ ์†Œ์ผ“ ์„œ๋ฒ„๋กœ XMPP ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋ฉฐ, ๊ด€๋ฆฌ์ž์šฉ ์›น ์ฝ˜์†” ์ง€์›์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. ๊ด€๋ฆฌ์ž ์›น ์ฝ˜์†”์„ ์ด์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ ‘์† ์ •๋ณด ๋ชจ๋‹ˆํ„ฐ๋ฆฟ ๋ฐ Push ๋ฉ”์‹œ์ง€๋ฅผ ์ ‚์†กํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ Push๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹žํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ†ต๋ณดํ•œ๋‹ค. โ“’ 2010 Moduad 3
  • 4. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ 2.2 ํ‘ธ์‹œ ํ†ต๋ณด ๊ณผ์ • ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ์ ์ธ ํ‘ธ์‹œ ํ†ต๋ณด ๊ณผ์ •์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค. โ‘  ํด๋ผ์ด์–ธํŠธ๋Š” ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋ฒ„์— ์ ‘์†ํ•˜์—ฌ, ๋‹จ๋ง ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ๋“ฑ๋กํ•˜๊ณ  ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค. โ‘ก ์„œ๋ฒ„๋Š” ๋ฉ”์‹œ์ง• ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ, ํด๋ผ์ด์–ธํŠธ์— Push ๋ฐฉ์‹์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ ‚์†กํ•œ๋‹ค. โ‘ข ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ ‚์†ก๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ†ต๋ณด๋ฅผ ํ•œ๋‹ค. 3 ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ์€ ๋ชจ๋‘ ์ดํด๋ฆฝ์Šค ๊ธฐ๋ฐ˜์˜ ์ž๋ฐ” ํ”„๋กœ์ ํŠธ์ด๋‹ค. ๊ตฌ๋ถ„ ํ”„๋กœ์ ํŠธ๋ช… ์„ค๋ช… ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด์„ ์Šค ์„œ๋ฒ„ androidpn-server Java ๊ธฐ๋ฐ˜ ์†Œ์ผ“์„œ๋ฒ„ ํ˜•ํƒœ์˜ ํ‘ธ์‹œ ํ†ต๋ณด GPL 2.0 ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ผ์ด์–ธํŠธ androidpn-client ์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ์šฉ ํ‘ธ์‹œํ†ต๋ณด Apache License 2.0 ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐฐํฌ ๋ชจ๋“ˆ androidpn-demoapp ๊ฐœ๋ฐœ์ž์šฉ ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ 3.1 ์„œ๋ฒ„ (androidpn-server) ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋ฒ„๋Š” ๊ตฌ๋™์„ ์œ„ํ•ด Java SE 6 ๋Ÿฎํƒ€์ž„์„ ํ•„์š”๋กœ ํ•˜๋ฉฐ, Spring ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•ด ํด๋ž˜์Šค๊ฐ‚ ์˜์กด์„ฑ ์ฃผ์ž…์„ ํ•˜๊ณ  MINA ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•œ ์†Œ์ผ“ ์„œ๋ฒ„์ด๋‹ค. ๋ฐ์ดํ„ฐ ํ†ต์‹ž ๋ฐฉ์‹์€ XML ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์˜ XMPP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, XMPP ์„œ๋ฒ„ ์ŠคํŽ™์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค. ๋˜ํ•œ Jetty ์„œ๋ธ”๋ฆพ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‚ด์žฅํ•˜์—ฌ ๊ด€๋ฆฌ์ž ์›น์ฝ˜์†” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. โ“’ 2010 Moduad 4
  • 5. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ 3.1.1 ์„œ๋ฒ„ ์•„ํ‚คํ…์ณ 3.1.2 ์„œ๋ฒ„ ์ฃผ์š” ๋ชจ๋“ˆ ๏ฌ IO Handler - XML ํฌ๋งท์˜ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ถ๋“ค๋ฆฟ ๏ฌ Stanza Handler - XMPP ๊ธฐ๋ณธ ํ†ต์‹ž ๋‹จ์œ„์ธ Stanza ๋ฐ ํด๋ผ์ด์–ธํŠธ์™€์˜ ์—ฐ๊ฒฐ ํŠน์ง•์„ ํ•ถ๋“ค๋ฆฟ ๏ฌ IQ Handler - IQ Stanza ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์„ํ•˜๊ณ  ํƒ€์ž…๋ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ถ๋“ค๋ฆฟ ๏ฌ Session Manager - ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์„ธ์…˜๋“ค์„ ์ ‚๋ฐ˜์ ์œผ๋กœ ๊ด€๋ฆฌ ๏ฌ Auth Manager - ํด๋ผ์ด์–ธํŠธ ์‚ฌ์šฉ์ž ๋“ฑ๋ก ๋ฐ ๋กœ๊ทธ์ธ ๋“ฑ ์ธ์ฆ ๊ด€๋ฆฌ ๏ฌ Presence Manager - ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์ƒํƒœ(Presence) ์ •๋ณด๋ฅผ ๊ด€๋ฆฌ ๏ฌ Notification Manager - ์„œ๋ฒ„ ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ํด๋ผ์ด์–ธํŠธ๋กœ Push ๋ฉ”์‹œ์ง€ ์ ‚์†ก์„ ๋‹ด๋‹น ๏ฌ Admin Console - ํด๋ผ์ด์–ธํŠธ์˜ ๋“ฑ๋ก ์ •๋ณด, ์ ‘์† ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ฆฟ ๋ฐ Push ๋ฉ”์‹œ์ง€ ์ ‚์†ก UI๋ฅผ ๊ฐ€์ง‚ ๊ด€๋ฆฌ์ž์šฉ ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋“ˆ 3.1.3 ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ ๋ฐ ๋„๊ตฌ ๏ฌ Java SE 6 - ์ž๋ฐ” ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™์„ ์œ„ํ•œ ๋Ÿฎํƒ€์ž„ ์—”์ง‚ ๏ฌ Spring Framework - ์ž๋ฐ” ํด๋ž˜์Šค๊ฐ‚ ์˜์กด์„ฑ์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” DI (Dependency Injection) ์ปจํ…Œ์ด๋„ˆ ํ”„๋ ˆ์ž„์›Œํฌ โ“’ 2010 Moduad 5
  • 6. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ ๏ฌ MINA - ์ž๋ฐ” NIO ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„ ๊ตฌํ˜„์„ ์œ„ํ•œ ๋„คํฌ์›Œํฌ ํ”„๋ ˆ์ž„์›Œํฌ ๏ฌ Jetty - ๊ด€๋ฆฌ์ž ์›น์ฝ˜์†” ๋ชจ๋“ˆ์„ ์œ„ํ•œ ์ž๋ฐ” ๋‚ด์žฅํ˜• ์„œ๋ธ”๋ฆพ ์ปจํ…Œ์ด๋„ˆ ๏ฌ Hibernate - ๋ฐ์ดํ„ฐ ์˜์†์„ฑ์„ ์œ„ํ•œ ORM (Object-Relational Mapping) ํ”„๋ ˆ์ž„์›Œํฌ ๏ฌ HSQLDB - ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์œ„ํ•œ ์ž๋ฐ” ๋‚ด์žฅํ˜• DB (MySQL ๋“ฑ ๋‹ค๋ฅธ DB๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ) ๏ฌ Ant / Maven - ํ”„๋กœ์ ํŠธ ์†Œ์Šค ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ ๋„๊ตฌ ๏ฌ JUnit - ์ž๋ฐ” ํด๋ž˜์Šค ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ 3.1.4 ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ์ž๋ฐ” ํŒจํ‚ค์ง€ ๊ตฌ์„ฑ ๏ฌ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์„œ๋ฒ„ ํ”„๋กœ์ ํŠธ ์†Œ์Šค๋Š” Maven 2.0 ๊ธฐ๋ฐ˜์˜ ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ์ด๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐœ์˜ ์ฃผ์š” ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋””๋ ‰ํ† ๋ฆฌ๋ช…๊ณผ ๋™์ผํ•˜๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ๋ช… ์„ค๋ช… ๋นŒ๋“œ ํŒŒ์ผ console ๊ด€๋ฆฌ์ž ์ฝ˜์†” ๋ชจ๋“ˆ์ด๋ฉฐ ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ฉฐ, ์Šคํ”„๋ฆฟ MVC console.war ๊ธฐ๋ฐ˜์˜ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๋‹ค. Server ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋ฒ„ ํ•ต์‹ฌ ๋ชจ๋“ˆ์ด๋ฉฐ, Spring + MINA ํ†ตํ•ฉ๋œ androidpn-server-0.4.x.jar ์†Œ์ผ“ ์„œ๋ฒ„์ด๋ฉฐ, XMPP ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค. starter ์„œ๋ฒ„์˜ ์‹œ์ž‘์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ๋กœ, ํด๋ž˜์Šค ๋กœ๋”ฉ์„ ๋‹ด๋‹นํ•œ๋‹ค. starter.jar ๏ฌ ์ž๋ฐ” ํŒจํ‚ค์ง€ ์„œ๋ฒ„ ํ”„๋กœ์ ํŠธ์˜ ์ž๋ฐ” ํด๋ž˜์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ํŒจํ‚ค์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ํŒจํ‚ค์ง€๋ช… ์„ค๋ช… org.androidpn.server.container ๊ด€๋ฆฌ์ž ์ฝ˜์†” ์›น๋ชจ๋“ˆ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ ํด๋ž˜์Šค org.androidpn.server.dao Data Access Object ์ธํ„ฐํŽ˜์ด์Šค org.androidpn.server.dao.hibernate Data Access Object ๊ตฌํ˜„ ํด๋ž˜์Šค org.androidpn.server.model DB ์—”ํ‹ฐํ‹ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋„๋ฉ”์ธ ๊ฐ์ฒด ๋ชจ๋ธ ํด๋ž˜์Šค org.androidpn.server.service ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค ์ธํ„ฐํŽ˜์ด์Šค org.androidpn.server.service.impl ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค ๊ตฌํ˜„ ํด๋ž˜์Šค org.androidpn.server.starter ์„œ๋ฒ„ ์‹œ์ž‘์„ ์œ„ํ•œ ํด๋ž˜์Šค org.androidpn.server.util ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค org.androidpn.server.xmpp XMPP ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋ฅผ ๋‹ด์€ ๋ฒ ์ด์Šค ํŒจํ‚ค์ง€ org.androidpn.server.xmpp.auth ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ๋‹ด๋‹นํ•˜๋Š” ํด๋ž˜์Šค org.androidpn.server.xmpp.codec MINA ๊ธฐ๋ฐ˜์˜ XMPP ๋ฉ”์‹œ์ง€ ์ฝ”๋ฑ ํด๋ž˜์Šค โ“’ 2010 Moduad 6
  • 7. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ org.androidpn.server.xmpp.handler XMPP Stanza๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ข… ํ•ถ๋“ค๋Ÿฌ org.androidpn.server.xmpp.net MINA ๊ธฐ๋ฐ˜์˜ ํ•ต์‹ฌ ์†Œ์ผ“ ๋„คํŠธ์›Œํ‚น์„ ๋‹ด๋‹นํ•˜๋Š” ํด๋ž˜์Šค org.androidpn.server.xmpp.presence XMPP์˜ ์‚ฌ์šฉ์ž ์ƒํƒœ์ •๋ณด(Presence)๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค org.androidpn.server.xmpp.push ํด๋ผ์ด์–ธํŠธ๋กœ ํ‘ธ์‹œ ๋ฉ”์‹œ์ง€๋ฅผ ์ ‚์†ก์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค org.androidpn.server.xmpp.router ์ˆ˜์‹ž๋œ Stanza ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ƒํ•œ ํ•ถ๋“ค๋Ÿฌ๋กœ ๋ณด๋‚ด๋Š” ํด๋ž˜์Šค org.androidpn.server.xmpp.session ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค 3.2 ํด๋ผ์ด์–ธํŠธ (androidpn-client) ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ์„ ์•ˆ๋“œ๋กœ์ด๋“œ OS 1.5 ์ด์ƒ์˜ ํ”Œ๋žซํผ์„ ํ•„์š”๋กœ ํ•˜๋ฉฐ, XMPP ํด๋ผ์ด์–ธํŠธ ํ˜•ํƒœ๋กœ์„œ ์„œ๋ฒ„์™€ XML ์ŠคํŠธ๋ฆฌ๋ฐ ๊ธฐ๋ฐ˜ ํ†ต์‹ž์„ ํ•œ๋‹ค. 3.2.1 ํด๋ผ์ด์–ธํŠธ ์•„ํ‚คํ…์ณ 3.2.2 ํด๋ผ์ด์–ธํŠธ ์ฃผ์š” ๋ชจ๋“ˆ ๏ฌ Service Manager - ํด๋ผ์ด์–ธํŠธ ํ™–๊ฒฝ ์„ค์ • ๋กœ๋”ฉ ๋ฐ ํ†ต์ง€ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘/์ข…๋ฃŒ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๊ธฐ๋ณธ ๊ด€๋ฆฌ์ž ํด๋ž˜์Šค ๏ฌ Notification Service - ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ž์„ ์œ„ํ•ด ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์–ด๋„ ๋ฐฑ๊ทธ๋ผ์šฒ๋“œ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ Service๋ฅผ ์ƒ์†ํ•œ ์„œ๋น„์Šค ๏ฌ XMPP Manager - XMPP ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ๋กœ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋ฒ„๋กœ์˜ ์—ฐ๊ฒฐ, ์‚ฌ์šฉ์ž ๋“ฑ๋ก, ๋กœ๊ทธ์ธ ๋“ฑ์„ ๋‹ด๋‹น ๏ฌ Connection Listener - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ‚ ์—ฐ๊ฒฐ์˜ ์ง€์†์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ฆฟ ๏ฌ Notification Packet Listener - ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ์˜ Notification ํŒจํ‚ท์„ ์ˆ˜์‹ž์„ ๋‹ด๋‹นํ•˜๊ณ , ํ†ต์ง€๋ฅผ ์œ„ํ•œ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜ํ–‰ โ“’ 2010 Moduad 7
  • 8. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ ๏ฌ Notification Receiver - ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ž ํ›„ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋œ Notification ๋ฉ”์‹œ์ง€ ์ •๋ณด๋ฅผ ๋ฐ›์•„ ์ฒ˜๋ฆฌ ๏ฌ Notifier - Notification Manager๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆ˜์‹ž๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ†ต๋ณด ๏ฌ Connectivity Receiver - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ‚ ์—ฐ๊ฒฐ์˜ ์ง€์†์„ฑ์„ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ฆฟ ๏ฌ Phone State Listener - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ‚ ์—ฐ๊ฒฐ์˜ ์ง€์†์„ฑ์„ ์œ„ํ•ด ์ ‚ํ™”๊ธฐ ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ฆฟ ๏ฌ Notification Details Activity - ์‚ฌ์šฉ์ž์—๊ฒŒ ํ†ต๋ณด๋œ ๋ฉ”์‹œ์ง€์˜ ์ƒ์„ธ ์ •๋ณด ๋ทฐ๋ฅผ ์œ„ํ•œ Activity ๏ฌ Notification Settings Activity - ํด๋ผ์ด์–ธํŠธ์˜ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ž, ์†Œ๋ฆฌ, ์ง‚๋™ ์—ฌ๋ถ€ ๋“ฑ์˜ ์„ค์ • ๋ทฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” Activity 3.2.3 ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ ๋ฐ ๋„๊ตฌ ๏ฌ Android SDK - ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™ ํ”Œ๋žซํผ (์•ˆ๋“œ๋กœ์ด๋“œ OS 1.5 ์ด์ƒ ์ง€์›) - Service, NotificaitonManager, BroadcastReceiver ๋“ฑ ๏ฌ Smack - XMPP ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๏ฌ Ant - ํ”„๋กœ์ ํŠธ ์†Œ์Šค ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ ๋„๊ตฌ 3.2.4 ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ์ž๋ฐ” ํŒจํ‚ค์ง€ ๊ตฌ์„ฑ ๏ฌ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ๋Š” ์ดํด๋ฆฝ์Šค ๊ธฐ๋ฐ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ๋กœ ๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์™€ ๋™์ผํ•˜๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ๋ช… ์„ค๋ช… src ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์†Œ์Šค์™€ ๋ฐ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค ํฌํ•จ lib ํ”„๋กœ์ ํŠธ ์ฐธ์กฐ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ XMPP ํด๋ผ์ด์–ธํŠธ smack ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌํ•จ res ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ๋“ค๋กœ ํด๋ผ์ด์–ธํŠธ ์„ค์ •ํŒŒ์ผ์ธ android.properties ๋„ ํฌํ•จ Assets ์•ˆ๋“œ๋กœ์ด๋“œ assets ๋””๋ ‰ํ† ๋ฆฌ (์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ) ๏ฌ ์ž๋ฐ” ํŒจํ‚ค์ง€ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ์˜ ์ž๋ฐ” ํด๋ž˜์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ํŒจํ‚ค์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ํŒจํ‚ค์ง€๋ช… ์„ค๋ช… org.androidpn.client ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ํด๋ž˜์Šค. XMPP ํด๋ผ์ด์–ธํŠธ ๋ฐ ์•ˆ๋“œ๋กœ์ด๋“œ Service, Activity ๋“ฑ์„ ํฌํ•จ org.androidpn.demoapp ๋ฐ๋ชจ์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ž˜์Šค โ“’ 2010 Moduad 8
  • 9. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ 3.3 ๋ฐ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ (androidpn-demoapp) ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ์„ ์ด์šฉํ•˜์—ฌ ์•ˆ๋“œ๋กœ์ด๋“œ ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ฐ€์ด๋“œ์šฉ ์ƒ˜ํ”Œ ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์ƒ์„ฑ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ(androidpn-client.jar)์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. 4 ํ”„๋กœ์ ํŠธ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ 4.1 ์„œ๋ฒ„ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” JDK 1.5 ์ด์ƒ๊ณผ Maven 2.0์„ ํ•„์š”๋กœ ํ•œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ƒ์ฐจ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค. โ‘  ํ”„๋กœ์ ํŠธ ์„œ๋ฒ„ ์†Œ์Šค ๋ฐฐํฌ ํŒŒ์ผ(androidpn-server-0.4.x.zip ํ˜•ํƒœ)์„ ์ค€๋น„ํ•˜๊ณ , ์••์ถ•์„ ํ‘ผ๋‹ค. โ‘ก ์‰˜ ํ”„๋กœํ”„ํŠธ์—์„œ mvn install ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ธฐ๋ณธ ๋ชจ๋“ˆ๋“ค์„ ์ปดํŒŒ์ผ, ํ…Œ์ŠคํŠธ ๋ฐ ๋นŒ๋“œํ•œ๋‹ค. ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. C:projectsandroidpn-server-0.5.0>mvn install [INFO] Scanning for projects... [INFO] Reactor build order: [INFO] Andorid Push Notification [INFO] Unnamed - org.androidpn:server:jar:0.5.0 [INFO] Unnamed - org.androidpn:starter:jar:0.5.0 [INFO] Unnamed - org.androidpn:console:war:0.5.0 [INFO] ------------------------------------------------------------------------ โ€ฆ ์ค‘๋žต โ€ฆ [INFO] Reactor Summary: [INFO] ------------------------------------------------------------------------ [INFO] Andorid Push Notification ............................. SUCCESS [1.562s] [INFO] Unnamed - org.androidpn:server:jar:0.5.0 .............. SUCCESS [9.109s] [INFO] Unnamed - org.androidpn:starter:jar:0.5.0 ............. SUCCESS [0.812s] [INFO] Unnamed - org.androidpn:console:war:0.5.0 ............. SUCCESS [2.109s] [INFO] ------------------------------------------------------------------------ [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 13 seconds [INFO] Finished at: Wed Oct 13 02:15:18 KST 2010 [INFO] Final Memory: 47M/114M [INFO] ------------------------------------------------------------------------ โ‘ข ์‰˜ ํ”„๋กœํ”„ํŠธ์—์„œ mvn assembly:assembly ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜์—ฌ, ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ ์†Œ์Šค ๋ฐฐํฌ ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. โ“’ 2010 Moduad 9
  • 10. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ C:projectsandroidpn-server-0.5.0>mvn assembly:assembly [INFO] Scanning for projects... [INFO] Reactor build order: [INFO] Andorid Push Notification [INFO] Unnamed - org.androidpn:server:jar:0.5.0 [INFO] Unnamed - org.androidpn:starter:jar:0.5.0 [INFO] Unnamed - org.androidpn:console:war:0.5.0 [INFO] Searching repository for plugin with prefix: 'assembly'. [INFO] ------------------------------------------------------------------------ โ€ฆ ์ค‘๋žต โ€ฆ [INFO] Building zip: C:projectsandroidpn-server-0.5.0targetandroidpn-server-0.5.0-bin.zip [INFO] Building zip: C:projectsandroidpn-server-0.5.0targetandroidpn-server-0.5.0-src.zip [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 14 seconds [INFO] Finished at: Wed Oct 13 02:23:30 KST 2010 [INFO] Final Memory: 27M/64M [INFO] ------------------------------------------------------------------------ โ‘ฃ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋˜๋ฉด target ๋””๋ ‰ํ† ๋ฆฌ์— 2๊ฐœ์˜ zip ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. ์ด์ค‘ ์„œ๋ฒ„ ๋ฐ”์ด๋„ˆ๋ฆฌ ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์€ androidpn-server-0.4.x-bin.zip ํ˜•ํƒœ๋กœ ๋นŒ๋“œ๋œ ํŒŒ์ผ์ด๋‹ค. 4.2 ํด๋ผ์ด์–ธํŠธ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” JDK 1.5 ์ด์ƒ๊ณผ Android 1.5 ์ด์ƒ SDK ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด์„œ Ant 1.7 ์ด์ƒ์„ ํ•„์š”๋กœ ํ•œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ƒ์ฐจ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค. โ‘  ํ”„๋กœ์ ํŠธ ํด๋ผ์ด์–ธํŠธ ์†Œ์Šค ๋ฐฐํฌ ํŒŒ์ผ(androidpn-client-0.4.x.zip ํ˜•ํƒœ)์„ ์ค€๋น„ํ•˜๊ณ , ์••์ถ•์„ ํ‘ผ๋‹ค. โ‘ก Ant ๋นŒ๋“œ์‹œ ์‚ฌ์šฉ๋˜๋Š” build.properties ํŒŒ์ผ์„ ์—ด์–ด, Android SDK ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์œ„์น˜๋ฅผ ํ™–๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ด์ค€๋‹ค. # Android SDK android.sdk.jar=c:/Android/android-sdk/platforms/android-3/android.jar โ‘ข ์‰˜ ํ”„๋กœํ”„ํŠธ์—์„œ ant build ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜์—ฌ, ํด๋ผ์ด์–ธํŠธ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์†Œ์Šค ๋ฐฐํฌ ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. C:projectsandroidpn-client-0.5.0>ant build Buildfile: build.xml clean: compile: โ“’ 2010 Moduad 10
  • 11. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ [mkdir] Created dir: C:projectsandroidpn-client-0.5.0targetclasses [javac] Compiling 16 source files to C:projectsandroidpn-client-0.5.0targetclasses build: [jar] Building jar: C:projectsandroidpn-client-0.5.0targetandroidpn-client-0.5.0.jar [mkdir] Created dir: C:projectsandroidpn-client-0.5.0targetandroidpn-client-0.5.0 [copy] Copying 33 files to C:projectsandroidpn-client-0.5.0targetandroidpn-client-0.5.0 [copy] Copied 15 empty directories to 1 empty directory under C:projectsandroidpn- client-0.5.0targetandroidpn-client-0.5.0 [zip] Building zip: C:projectsandroidpn-client-0.5.0targetandroidpn-client-0.5.0.zip [delete] Deleting directory C:projectsandroidpn-client-0.5.0targetandroidpn-client-0.5.0 BUILD SUCCESSFUL Total time: 1 second โ‘ฃ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋˜๋ฉด target ๋””๋ ‰ํ† ๋ฆฌ์— 1๊ฐœ์˜ jar ํŒŒ์ผ๊ณผ 1๊ฐœ์˜ zip ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. ์ด์ค‘ ํด๋ผ์ด์–ธํŠธ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” androidpn-client-0.4.x.jar ํ˜•ํƒœ๋กœ ๋นŒ๋“œ๋œ ํŒŒ์ผ์ด๋ฉฐ, ์ด๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœ์‹œ ์‚ฌ์šฉ๋œ๋‹ค. 5 ์„œ๋ฒ„ ์„ค์น˜ ๋ฐ ๊ตฌ๋™ 5.1 ์„œ๋ฒ„ ์„ค์น˜ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋นŒ๋“œ ์‹œ ํ•˜๋‚˜์˜ zip ํ˜•ํƒœ์˜ ์••์ถ•ํŒŒ์ผ๋กœ ์ƒ์„ฑ์ด ๋˜๋ฉฐ, ์›ํ•˜๋Š” ์œ„์น˜์— ํ’€๋ฉด ์„ค์น˜๊ฐ€ ๋œ๋‹ค. 5.1.1 ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ ์„ค๋ช… bin ์„œ๋ฒ„ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์œผ๋ฉฐ, Windows ๋ฐ Unix ์šฉ 2๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ๋‹ค. conf ๊ฐ์ข… ํ™–๊ฒฝ ์„ค์ •ํŒŒ์ผ๋“ค์ด ์žˆ์œผ๋ฉฐ, ์ผ๋ถ€ ํŒŒ์ผ๋“ค์€ ์‚ฌ์šฉ์ž ์„œ๋ฒ„ ํ™–๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. console ๊ด€๋ฆฌ์ž ์ฝ˜์†” ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋“ˆ์ด๋‹ค. lib ํ•ต์‹ฌ anroidpn ์„œ๋ฒ„ ๋ชจ๋“ˆ์„ ๋น„๋กฏํ•˜์—ฌ, ๊ฐ์ข… ์ฐธ์กฐ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์œ„์น˜ํ•œ๋‹ค. 5.1.2 ์„œ๋ฒ„ ํ™–๊ฒฝ ์„ค์ • ์„ค์น˜๋œ ์„œ๋ฒ„๋ฅผ ์ •์ƒ์ ์œผ๋กœ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ํ™–๊ฒฝ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค. ํ™–๊ฒฝ์„ค์ • ํŒŒ์ผ์€ conf ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ์žˆ์œผ๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค. ๏ฌ ์„œ๋ฒ„ ๊ธฐ๋ณธ ์„ค์ • (config.properties) ์„œ๋ฒ„ ๊ด€๋ฆฌ์ž ์ฝ˜์†”์„ ์ •์ƒ์ ์œผ๋กœ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ๋ช…๊ณผ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•œ๋‹ค. โ“’ 2010 Moduad 11
  • 12. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ admin.console.host=127.0.0.1 admin.console.port=7070 ๏ฌ DB ์ •๋ณด ์„ค์ • (jdbc.properties, hibernate.xml) ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐœ๋ฐœ ํ™–๊ฒฝ์„ ์œ„ํ•ด HSQLDB๋ฅผ ์ด์šฉํ•˜๋‚˜, ์‚ฌ์šฉ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•ด์„œ MySQL, Oracle ๋“ฑ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. # JDBC Configuration jdbcDriverClassName=org.hsqldb.jdbcDriver jdbcUrl=jdbc:hsqldb:db/androidpn;shutdown=true jdbcUsername=sa jdbcPassword= DB ์ •๋ณด๊ฐ€ ๋ฐ”๋€” ๊ฒฝ์šฐ, ORM ํ”„๋ ˆ์ž„์›Œํฌ์ธ Hibernate ์„ค์ •ํŒŒ์ผ์˜ DB ์ •๋ณด๋„ ๋งž์ถฐ์ค€๋‹ค. <!-- Database connection settings --> <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property> <property name="hibernate.connection.url">jdbc:hsqldb:db/androidpn;shutdown=true</property> <property name="hibernate.connection.username">sa</property> <property name="hibernate.connection.password"></property> 5.2 ์„œ๋ฒ„ ๊ตฌ๋™ ์„œ๋ฒ„ ์‹œ์ž‘์„ ์œ„ํ•œ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋Š” bin ๋””๋ ‰ํ† ๋ฆฌ์— ์œˆ๋„์šฐ ๋ฐ ์œ ๋‹‰์Šค์šฉ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ๋‹ค. ์„œ๋ฒ„ ๊ตฌ๋™์„ ์œ„ํ•ด์„œ๋Š” Java ๋Ÿฎํƒ€์ž„ 6.0 ์ด์ƒ์ด ์‹œ์Šคํ…œ์— ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. JAVA_HOME ๊ฐ’์„ ์Šคํฌ๋ฆฝํŠธ ์•ˆ์— ๋งž๊ฒŒ ์„ค์ •ํ•ด ์ฃผ๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ ํ™–๊ฒฝ์ •๋ณด์— ์„ค์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์•„๋ž˜๋Š” ์œˆ๋„์šฐ ํ™–๊ฒฝ์—์„œ ์„œ๋ฒ„ ์‹œ์ž‘์˜ ๊ตฌ๋™ ์˜ˆ์ด๋‹ค. C:androidpn-server-0.5.0bin>run {DEBUG} [2010-10-14 13:00:06,187] <org.androidpn.server.xmpp.XmppServer> : base.dir=.. {DEBUG} [2010-10-14 13:00:06,312] <org.apache.commons.configuration.ConfigurationUtils> : ConfigurationUtils.locate(): b ase is C:androidpn-server-0.5.0bin, name is config.xml {DEBUG} [2010-10-14 13:00:06,343] <org.apache.commons.configuration.ConfigurationUtils> : Loading configuration from the context classpath (config.xml) ...์ค‘๋žต... {INFO } [2010-10-14 13:00:14,562] <org.mortbay.log> : Started SelectChannelConnector@127.0.0.1:7070 โ“’ 2010 Moduad 12
  • 13. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ {DEBUG} [2010-10-14 13:00:14,562] <org.androidpn.server.container.AdminConsole> : Admin console started. {INFO } [2010-10-14 13:00:14,562] <org.androidpn.server.xmpp.XmppServer> : Admin console listening at http://127.0.0.1:7070 {INFO } [2010-10-14 13:00:14,562] <org.androidpn.server.xmpp.XmppServer> : XmppServer started: 127.0.0.1 {INFO } [2010-10-14 13:00:14,562] <org.androidpn.server.xmpp.XmppServer> : Androidpn Server v0.5.0 ์„œ๋ฒ„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๊ตฌ๋™๋˜์—ˆ์œผ๋ฉฐ, ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด์„œ http://ํ˜ธ์ŠคํŠธ๋ช…:ํฌํŠธ๋ฒˆํ˜ธ ์ฃผ์†Œ๋ฅผ ์ ‘์†ํ•˜์—ฌ ๊ด€๋ฆฌ์ž ์ฝ˜์†”์„ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. (์Šคํฌ๋ฆฎ์ƒท ์ฐธ์กฐ). 6 ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(androidpn-demoapp) ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณด๋ฉด ๋น ๋ฅด๊ฒŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. 6.1 ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ ์ดํด๋ฆฝ์Šค IDE์—์„œ ์‹ž๊ทœ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ํ›„, ํ‘ธ์‹œ ํ†ต๋ณด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ(androidpn- client)์—์„œ ๋นŒ๋“œํ•œ ํด๋ผ์ด์–ธํŠธ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(androidpn-client.jar)๋ฅผ ํ”„๋กœ์ ํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ถ”๊ฐ€ํ•œ๋‹ค. 6.2 ํด๋ผ์ด์–ธํŠธ ํ™–๊ฒฝ ์„ค์ • ํŒŒ์ผ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋ณธ ํด๋”์ธ res ํด๋” ๋ฐ‘์— raw ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑ ํ›„ ๊ทธ๊ณณ์— adroidpn.peoperties ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. ์ด ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ‘์†ํ•  ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ์™€ ํฌํŠธ๋ฒˆํ˜ธ(๊ธฐ๋ณธ:5222) ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํŽธ์ง‘ํ•œ๋‹ค. xmppHost=192.168.0.5 xmppPort=5222 6.3 ํด๋ผ์ด์–ธํŠธ ์„œ๋น„์Šค ์‹œ์ž‘ ์ฝ”๋“œ ๏ฌ ํด๋ผ์ด์–ธํŠธ ๋ฉ”์ธ Activity ํด๋ž˜์Šค ํŒŒ์ผ์˜ onCreate() ๋ฉ”์†Œ๋“œ ์•ˆ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. public void onCreate(Bundle savedInstanceState) { Log.d("DemoAppActivity", "onCreate()..."); super.onCreate(savedInstanceState); setContentView(R.layout.main); โ“’ 2010 Moduad 13
  • 14. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ // Start the service ServiceManager serviceManager = new ServiceManager(this); serviceManager.setNotificationIcon(R.drawable.notification); serviceManager.startService(); } ๏ฌ ํ‘ธ์‹œ ํ†ต๋ณด ์ˆ˜์‹ž ์—ฌ๋ถ€ ๋ฐ ์‚ฌ์šฒ๋“œ, ์ง‚๋™์„ ์„ค์ •ํ•˜๋Š” Settings Activity๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒ„ํŠบ ๋“ฑ์˜ ํด๋ฆญ ์ด๋ฒคํŠธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ๋œ๋‹ค. Button okButton = (Button) findViewById(R.id.btn_settings); okButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { ServiceManager.viewNotificationSettings(DemoAppActivity.this); } }); ๏ฌ AndroidManifest.xml ํŒŒ์ผ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„œ๋น„์Šค ๋ฐ Activity ํด๋ž˜์Šค๋ฅผ ๋“ฑ๋กํ•ด ์ค€๋‹ค. <activity android:name="org.androidpn.client.NotificationDetailsActivity" android:label="Notification Details"> </activity> <activity android:name="org.androidpn.client.NotificationSettingsActivity" android:label="Notification Settings"> </activity> <service android:enabled="true" android:name="org.androidpn.client.NotificationService" android:label="NotificationService"> <intent-filter> <action android:name="org.androidpn.client.NotificationService" /> </intent-filter> </service> 7 ํ”„๋กœ์ ํŠธ ์Šคํฌ๋ฆฐ์ƒท 7.1 ์„œ๋ฒ„ (๊ด€๋ฆฌ์ž ์›น ์ฝ˜์†”) ๏ฌ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋ฒ„์˜ ๊ด€๋ฆฌ์ž ์ฝ˜์†” ์ดˆ๊ธฐํ™”๋ฉด์ด๋‹ค. โ“’ 2010 Moduad 14
  • 15. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ ๏ฌ ์„œ๋ฒ„์— ๋“ฑ๋ก๋œ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์šฉ์ž ๋ชฉ๋ก์ด๋‹ค. ๏ฌ ํ˜„์žฌ ์ ‘์†๋œ ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜ ๋ชฉ๋ก์ด๋‹ค. โ“’ 2010 Moduad 15
  • 16. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ ๏ฌ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์— ํ‘ธ์‹œ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๏ฌ Username์„ ์ง€์ •ํ•˜์—ฌ ํŠน์ • ํด๋ผ์ด์–ธํŠธ์—๋งŒ ํ‘ธ์‹œ ๋ฉ”์‹œ์ง€ ์ ‚์†กํ•  ์ˆ˜ ์žˆ๋‹ค. โ“’ 2010 Moduad 16
  • 17. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ 7.2 ํด๋ผ์ด์–ธํŠธ (์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜) ๏ฌ Android 1.5 (Cupcake) ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ํ‘ธ์‹œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹žํ•œ ํ™”๋ฉด์ด๋‹ค. โ“’ 2010 Moduad 17
  • 18. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ ๏ฌ Android 2.1 (ร‰clair) ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ํ‘ธ์‹œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹žํ•œ ํ™”๋ฉด์ด๋‹ค. ๏ฌ ๋ฐ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™ ์ดˆ๊ธฐํ™”๋ฉด ๋ฐ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ž์‹œ ์ƒํƒœ Ticker ํ™—์„ฑ ํ™”๋ฉด์ด๋‹ค. ๏ฌ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ž ๋ชฉ๋ก ํ™”๋ฉด ๋ฐ ์ด๋ฅผ ํ„ฐ์น˜ํ–ˆ์„ ๊ฒฝ์šฐ ์ ‚์ฒด ๋ฉ”์‹œ์ง€ ์ƒ์„ธ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. โ“’ 2010 Moduad 18
  • 19. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ ๏ฌ ํ‘ธ์‹œ ํ†ต๋ณด ์„ค์ •ํ™”๋ฉด์—์„œ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ž์—ฌ๋ถ€ ๋ฐ ์‚ฌ์šฒ๋“œ, ์ง‚๋™ ์—ฌ๋ถ€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๏ฌ ์„œ๋ฒ„์—์„œ URI ์ •๋ณด๋ฅผ ์ถ”๊ฐ€๋กœ ์ ‚์†กํ–ˆ์„ ๊ฒฝ์šฐ, ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ ํ™•์ธ ํ›„ ํŠน์ • ์›นํŽ˜์ด์ง€ ๋ฐ ์ง€๋„ ์œ„์น˜, ๊ฑธํ™”๊ฑธ๊ธฐ ๋“ฑ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ํ™”๋ฉด์€ URI ์ •๋ณด์— http://www.dokdocorea.com, geo:37.24,131.86, tel:111-222-333 ๊ฐ’์„ ๊ฐ๊ฐ ์ ‚์†กํ•œ ๊ฒฝ์šฐ์ด๋‹ค. โ“’ 2010 Moduad 19
  • 20. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ 8 ์ฃผ์š” ๊ด€๋ จ ๊ธฐ์ˆ  8.1 ํ‘ธ์‹œ ํ†ต๋ณด (Push Notification)๋ž€? 8.1.1 ํ‘ธ์‹œ ํ†ต๋ณด๋ž€? ๏ฌ ํ‘ธ์‹œ ํ†ต๋ณด๋ž€ ๋‹จ๋ง ์‹œ์Šคํ…œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ž‘ ์ค‘์ด์ง€ ์•Š์€ ์ƒํƒœ์—์„œ๋„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ โ€œPushโ€๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ Listenํ•˜์—ฌ ์ˆ˜์‹žํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๏ฌ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ฃผ์š” ๋‰ด์Šค ๋ฐ ์ด๋ฒคํŠธ ๋“ฑ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ‚๋‹ฌํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋‹จ์ด๋‹ค. ๏ฌ ์ž์›์„ ๋งŽ์ด ์†Œ๋น„ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์ง€์†์ ์ธ Polling์„ ํ•˜๋Š” Pull ๊ธฐ์ˆ ์— ๋น„ํ•ด ํšจ์œจ์ ์ธ ๊ธฐ์ˆ ์ด๋‹ค. 8.1.2 ๋ชจ๋ฐ”์ผ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋น„์Šค ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ ์—…์ฒด ํ˜„ํ™ฉ BlackBerry RIM 2002๋…„๋ถ€ํ„ฐ Push Email ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘์œผ๋กœ ์ž์ฒด์ ์œผ๋กœ ํ‘ธ์‹œ ํ†ต๋ณด ์„œ๋น„์Šค๋ฅผ ์ง€์› iPhone OS (iOS) Apple 2009๋…„ iPhone OS 3.0๋ถ€ํ„ฐ Apple Push Notification Service (APNS)๋ฅผ ์ง€์› Android Google Android 2.2 (Froyo)๋ถ€ํ„ฐ Cloud To Device Messaging (C2DM)์„ ํ†ตํ•ด ์ง€์› ์˜ˆ์ • Windows Phone 7 Microsoft Microsoft Push Notification Service (MPNS) ์ง€์›๊ณผ ํ•จ๊ป˜ ์ถœ์‹œ ์˜ˆ์ • โ“’ 2010 Moduad 20
  • 21. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ 8.2 Push vs. Pull ๋„คํŠธ์›Œํฌ ์ƒ์˜ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ‚์˜ ํ†ต์‹ž ๋ฐฉ์‹์—์„œ ์š”์ฒญํ•˜๋Š” ์ฃผ์ฒด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด Push ์™€ Pull ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. 8.2.1 Push Technology (Server Push) ๏ฌ ๋ฉ”์‹œ์ง€ ์ ‚์†ก ํŠธ๋žœ์žญ์…˜์ด ์„œ๋ฒ„์—์„œ ์‹œ์ž‘๋˜์–ด ํด๋ผ์ด์–ธํŠธ๋กœ ์ ‚์†ก๋˜๋Š” ํ†ต์‹ž ๋ฐฉ์‹์ด๋‹ค. ๏ฌ XMPP, SMTP, HTTP Server Push (HTTP Streaming), Long Polling ๋“ฑ 8.2.2 Pull Technology (Client Pull) ๏ฌ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฐ์ดํ„ฐ ์ ‚์†ก ์š”์ฒญ์ด ์‹œ์ž‘๋˜์–ด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›๋Š” ํ˜•ํƒœ์˜ ํ†ต์‹ž ๋ฐฉ์‹์ด๋‹ค. ๏ฌ HTTP, POP3, IMAP, RSS Feeds ๋“ฑ 8.3 XMPP (eXtensible Message and Presence Protocol) 8.3.1 XMPP๋ž€? ๏ฌ ์ธํ„ฐ๋„ท ์ƒ์˜ ๋‘ ์ง€์  ๊ฐ‚์— ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฉ”์‹œ์ง€์™€ ์ƒํƒœ์ •๋ณด(Presence)๋ฅผ ์‹ค์‹œ๊ฐ‚์œผ๋กœ ํ†ต์‹žํ•˜๊ธฐ ์œ„ํ•œ XML ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ํ‘œ์ค€ ๊ธฐ์ˆ ์ด๋‹ค. ๏ฌ 1999๋…„ Jabber ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜ํ•ด ๊ฐœ๋ฐœ ๋˜์—ˆ๊ณ , 2000๋…„~2004๋…„์— ๊ฑธ์ณ IETF์— ์˜ํ•ด ํ‘œ์ค€ํ™” ๋˜์—ˆ๋‹ค. ๏ฌ XMPP Standard Foundation (XSF)์˜ ํ‘œ์ค€ํ™” ์ž‘์—…์— ์˜ํ•ด ์ง€์†์  ํ™•์žฅ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, XMPP Extension Protocols (XEP)๋กœ ๋ณ„๋„๋กœ ํ™•์žฅ ์ŠคํŽ™์„ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค. ๏ฌ http://xmpp.org/ ์‹ธ์ดํŠธ์—์„œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. 8.3.2 XMPP vs. HTTP XMPP ํ”„๋กœํ† ์ฝœ์€ Push ๊ธฐ์ˆ ์˜ ํ†ต์‹ž๋ฐฉ์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ์˜ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ ์ž ํ•  ๋•Œ, HTTP ๊ธฐ๋ฐ˜์˜ Polling ๋ฐฉ์‹์— ๋น„ํ•ด ํ›จ์”ฌ ํด๋ผ์ด์–ธํŠธ์˜ ์ž์› ์†Œ๋ชจ๊ฐ€ ์ ๊ณ  ํšจ์œจ์ ์ด๋‹ค. โ“’ 2010 Moduad 21
  • 22. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ 8.3.3 XMPP๋Š” ๋‹คํ–ฅํ•œ ๋ถ„์•ผ์—์„œ ์‘์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ ๏ฌ Instant Messaging (IM) ๏ฌ Multi-User Chat ๏ฌ Voice and Video Conferencing ๏ฌ Real-time Collaboration ๏ฌ Social Networking ๏ฌ Microblogging ๏ฌ Lightweight Middleware ๏ฌ Content Syndication 8.4 ์•ˆ๋“œ๋กœ์ด๋“œ(Android) 8.4.1 ์•ˆ๋“œ๋กœ์ด๋“œ๋ž€? ๏ฌ ์šฒ์˜์ฒด์ œ, ๋ฏธ๋“ค์›จ์–ด ๋ฐ ํ•ต์‹ฌ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ํฌํ•จํ•˜๋Š” ํœด๋Œ€๊ธฐ๊ธฐ์šฉ ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ ๏ฌ Google์— ์˜ํ•ด ๊ฐœ๋ฐœ๋˜๊ณ  ์˜คํ”ˆ ์†Œ์Šคํ™” (2008๋…„) ๏ฌ Linux ์ปค๋„ ๊ธฐ๋ฐ˜์˜ ์šฒ์˜์ฒด์ œ ๏ฌ Dalvik ๊ฐ€์ƒ๋จธ์‹ž๊ณผ Java ์–ธ์–ด ๊ธฐ๋ฐ˜์˜ SDK ์ง€์› ๏ฌ Android Market์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ โ“’ 2010 Moduad 22
  • 23. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ 8.4.2 ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ์ง„ํ™” ์ค‘ ๏ฌ Cupcake(v1.5) ๏ƒ  Donut(v1.6) ๏ƒ  ร‰clair(v2.0,v2.1) ๏ƒ  Froyo(v2.2) ๏ƒ  Gingerbread(3.0) ๏ฌ ํ˜„์žฌ Andorid 2.2 (Froyo)๊นŒ์ง€ ๋ฐœํ‘œ๋˜์—ˆ์œผ๋ฉฐ, ์ด OS ๋ฒ„์ ‚๋ถ€ํ„ฐ C2DM(Cloud to Device Messaging) ๊ธฐ์ˆ ์ด ์ ์šฉ๋˜์—ˆ์œผ๋ฉฐ, ์กฐ๋งŒ๊ฐ‚ ๊ตฌ๊ธ€์—์„œ ์ •์‹ ์„œ๋น„์Šค ์˜ˆ์ •์ด๋‹ค. 9 ๊ฐœ๋ฐœ ํ™–๊ฒฝ ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ ๊ฐœ๋ฐœ ํ™–๊ฒฝ์€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋‘ Java ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ JDK 5.0 ์ด์ƒ๊ณผ Eclipse (3.5 ๊ถŒ์žฅ)๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค. ์ƒ์„ธ ๊ฐœ๋ฐœ ํ™–๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 9.1 ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ™–๊ฒฝ ๊ตฌ๋ถ„ ์„ค๋ช… ์‹œ์Šคํ…œ ํ”Œ๋žซํผ Linux ๋˜๋Š” Windows ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด Java (JDK 1.5 ์ด์ƒ) IDE Eclipse 3.5 ๋นŒ๋“œ ๋„๊ตฌ Ant 1.7.1, Maven 2.0 Database HSQLDB ๋˜๋Š” MySQL Servlet Container Jetty 6.1 J2EE ์ŠคํŽ™ Servlet 2.4, JSP 2.0 ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Spring 2.5, MINA 2.0, Hibernate 3.3.1, SiteMesh 2.4 9.2 ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ ํ™–๊ฒฝ ๊ตฌ๋ถ„ ์„ค๋ช… ๋””๋ฐ”์ด์Šค ๋‹จ๋ง๊ธฐ ์‚ผ์„ฑ ๊ฐค๋Ÿญ์‹œS ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ Android SDK r07 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด Java (JDK 1.5 ์ด์ƒ) IDE Eclipse 3.5 ๋นŒ๋“œ ๋„๊ตฌ Ant 1.7.1 ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Smack 3.1 10 ๋ฐœ์ „ ๋ฐฉํ–ฅ 10.1 ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ ํ–ฅ์ƒ ๏ฌ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ‚์˜ SSL/TSL ๋ณด์•ˆ ์ฑ„๋„ ์ ์šฉ์œผ๋กœ ์ƒ์šฉํ™” ์„œ๋น„์Šค๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์œผ๋กœ ํ’ˆ์งˆ ํ–ฅ์ƒ. (XMPP ํ”„๋กœํ† ์ฝœ์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ์ฑ„ํƒ). โ“’ 2010 Moduad 23
  • 24. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ํ†ต๋ณด ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ ๊ฐ€์ด๋“œ ๏ฌ Wi-Fi, 3G, HSDPA ๋ง ๊ตฌ๋ถ„๊ณผ ์ˆ˜์‹œ๋กœ ๋ณ€ํ•  ์ˆ˜ ๋ชจ๋ฐ”์ผ ๋„คํŠธ์›Œํฌ ํ™–๊ฒฝ์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ‚์˜ ์—ฐ๊ฒฐ ์ง€์†์„ฑ์„ ์œ„ํ•œ ํ’ˆ์งˆ ํ–ฅ์ƒ ๋ฐ ๋‹ค์–‘ํ•œ ํ™–๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ. 10.2 ์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ ํ™•์žฅ ๏ฌ ์„œ๋ฒ„ ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ๋™์‹œ์— ์ง€์›ํ•˜๋Š” ํ”Œ๋žซํผ ์„œ๋น„์Šค์— ์‘์šฉ๋  ์ˆ˜ ์žˆ์Œ. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋™์‹œ์— ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋ณ„ ์• ํ”Œ์ผ€์ด์…˜ ์ธ์ฆ๊ณผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ–ฅ์ƒ ํ•„์š”. ๏ฌ ํด๋ผ์ด์–ธํŠธ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ OS ์ด์™ธ์˜ ํƒ€ ๋ชจ๋ฐ”์ผ OS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ง€์›์„ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Œ. 10.3 ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ์‘์šฉ ๏ฌ ๋ฉ”์‹œ์ง€ ํ”„๋กœํ† ์ฝœ ํ™•์žฅ์„ ํ†ตํ•ด ์ด๋ฏธ์ง€, ์‚ฌ์šฒ๋“œ, ๋น„๋””์˜ค ๋“ฑ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋ฉ”์‹œ์ง€ ์ ‚๋‹ฌํ•˜๋Š” ๋“ฑ ๋”์šฑ๋™ ์ƒ๋™๊ฐ ์žˆ๋Š” ๋‰ด์Šค ์ ‚๋‹ฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‘์šฉ๋  ์ˆ˜ ์žˆ์Œ. ๏ฌ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜์— ๋”ฐ๋ฅธ ์ง€์—ญ ๊ด‘๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ ‚๋‹ฌํ•˜๋Š” ์œ„์น˜๊ธฐ๋ฐ˜ ์„œ๋น„์Šค(LBS, Location Based Service)๋ฅผ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ด์šฉ๋  ์ˆ˜ ์žˆ์Œ. ๏ฌ SMS(Short Message Service)๋ฅผ ๋Œ€์‹žํ•˜๋Š” ๊ฐ€์ž…์ž๊ฐ€ ์‹ค์‹œ๊ฐ‚์œผ๋กœ ๋‹จ๋ฌธ ๋ฉ”์‹œ์ง€ ์ ‚๋‹ฌํ•˜๋Š” ์„œ๋น„์Šค ๋“ฑ์— ์‘์šฉ๋  ์ˆ˜ ์žˆ์Œ. 10.4 ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™•๋Œ€์— ๊ธฐ์—ฌ ๏ฌ SourceForge, Google Code, KLDP ๋“ฑ ๋‹ค์–‘ํ•œ ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด ๊ตญ๋‚ด์™ธ ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ์ž ์ฐธ์—ฌ ์œ ๋„ ๋ฐ ์ด๋ฅผ ํ†ตํ•œ ํ’ˆ์งˆ ํ–ฅ์ƒ. ๏ฌ ๊ตญ๋‚ด ๊ฐœ๋ฐœ์ž๋“ค ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ํ†ตํ•œ ๊ฐœ๋ฐœ์ž ์—ญ๋Ÿ‰ ํ–ฅ์ƒ์„ ๊ฝคํ•˜๊ณ , ๋‹ค์–‘ํ•œ ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‘์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณต. โ“’ 2010 Moduad 24