[์นดํ…Œ๊ณ ๋ฆฌ:] ๐Ÿ  ์ผ์ƒ

  • ์˜ค๋ฅดํŽ˜์šฐ์Šค ์‹ ํ™”์˜ ์žฌํ•ด์„ใ€Œ์ง€์˜ฅ์˜ ์˜ค๋ฅดํŽ˜์˜ค-์ฒœ๊ตญ๊ณผ ์ง€์˜ฅใ€

    ์•ˆ๋…•ํ•˜์„ธ์š”! ์ด๋ฒˆ์—๋Š” ์˜ค๋ฅดํŽ˜์šฐ์Šค ์‹ ํ™”์˜ ‘๋น„๊ทน’์„ ‘๋ธ”๋ž™์ฝ”๋ฏธ๋””’๋กœ ๋น„ํ‹€์–ด๋ฒ„๋ฆฐ ์žํฌ ์˜คํŽœ๋ฐ”ํ์˜ ์˜คํŽ˜๋ ˆํƒ€, <์ง€์˜ฅ์˜ ์˜ค๋ฅดํŽ˜์˜ค(์ฒœ๊ตญ๊ณผ ์ง€์˜ฅ)> ๋ฒ„์ „์„ ์†Œ๊ฐœํ•ด ๋“œ๋ฆด๊ฒŒ์š”.

    ์šฐ๋ฆฌ๊ฐ€ ์•Œ๋˜ ๊ทธ ์ ˆ์ ˆํ•œ ์‚ฌ๋ž‘ ์ด์•ผ๊ธฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ง‰์žฅ ๋“œ๋ผ๋งˆ๋กœ …


    0. “์—ฌ๋ณด, ์ œ๋ฐœ ๊ฐ€์ง€ ๋งˆ… ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ€๋ฒ„๋ ค!” : ์˜คํŽœ๋ฐ”ํ์˜ ๋ฐœ์น™ํ•œ ์ƒ์ƒ๋ ฅ

    ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ์˜ค๋ฅดํŽ˜์šฐ์Šค ์‹ ํ™”๋Š” ์•„๋‚ด ์—์šฐ๋ฆฌ๋””์ผ€๋ฅผ ๋„ˆ๋ฌด ์‚ฌ๋ž‘ํ•œ ๋‚˜๋จธ์ง€ ์ €์Šน๊นŒ์ง€ ์ซ“์•„๊ฐ„ ๋‚จ์ž์˜ ๋ˆˆ๋ฌผ๊ฒจ์šด ์ˆœ์• ๋ณด์ฃ . ํ•˜์ง€๋งŒ 19์„ธ๊ธฐ ํŒŒ๋ฆฌ์˜ ํ’์ž์™•, ์žํฌ ์˜คํŽœ๋ฐ”ํ๋Š” ์ด ์‹ ์„ฑํ•œ ์‹ ํ™”๋ฅผ ์™„์ „ํžˆ ๋ฐ•์‚ด ๋ƒ…๋‹ˆ๋‹ค.

    1. ๊ถŒํƒœ๊ธฐ ๋ถ€๋ถ€์˜ “๋‹˜์•„, ๊ทธ ๊ฐ•์„ ์ œ๋ฐœ ๊ฑด๋„ˆ์˜ค์ง€ ๋งˆ์˜ค”

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

    ๊ทธ๋Ÿฌ๋˜ ์–ด๋А ๋‚ , ์—์šฐ๋ฆฌ๋””์ผ€๊ฐ€ ๋…์‚ฌ์—๊ฒŒ ๋ฌผ๋ ค(์‚ฌ์‹ค์€ ์ง€์˜ฅ์˜ ์™• ํ•˜๋ฐ์Šค๊ฐ€ ๋‚ฉ์น˜ํ•œ ๊ฑฐ์ง€๋งŒ) ์ฃฝ๊ฒŒ ๋˜์ž ์˜ค๋ฅดํŽ˜์šฐ์Šค๋Š” ์Šฌํผํ•˜๊ธฐ๋Š”์ปค๋…• “์•„์‹ธ, ๋“œ๋””์–ด ์ž์œ ๋‹ค!”๋ฅผ ์™ธ์น˜๋ฉฐ ์พŒ์žฌ๋ฅผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ด๊ฒŒ ์šฐ๋ฆฌ๊ฐ€ ์•Œ๋˜ ๊ทธ ์‹ ํ™” ์† ์ฃผ์ธ๊ณต์ด ๋งž๋‚˜ ์‹ถ์„ ์ •๋„๋กœ ๋‹นํ™ฉ์Šค๋Ÿฌ์šด ์ „๊ฐœ์ฃ .

    2. “๋‚จ๋“ค ๋ณด๊ธฐ ๋ถ€๋„๋Ÿฝ์ง€๋„ ์•Š์•„?” : ๋ฌด์„œ์šด ์ฐธ๊ฒฌ์Ÿ์ด ‘์—ฌ๋ก ’

    ์˜ค๋ฅดํŽ˜์šฐ์Šค๋Š” ์•„๋‚ด๋ฅผ ์ฐพ์œผ๋Ÿฌ ๊ฐˆ ์ƒ๊ฐ์ด 1%๋„ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ‘์—ฌ๋ก (Public Opinion)’์ด๋ผ๋Š” ๋…ํŠนํ•œ ์บ๋ฆญํ„ฐ๊ฐ€ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. “์œ ๋ช…ํ•œ ์Œ์•…๊ฐ€๊ฐ€ ์•„๋‚ด๊ฐ€ ์ฃฝ์—ˆ๋Š”๋ฐ ๊ตฌํ•˜๋Ÿฌ ์•ˆ ๊ฐ€๋ฉด ์‚ฌ๋žŒ๋“ค์ด ๋ญ๋ผ๊ณ  ํ•˜๊ฒ ์–ด? ๋‹น์žฅ ๊ฐ€์„œ ๊ตฌํ•˜๋Š” ์ฒ™์ด๋ผ๋„ ํ•ด!”๋ผ๋ฉฐ ์˜ค๋ฅดํŽ˜์šฐ์Šค๋ฅผ ํ˜‘๋ฐ•ํ•˜์ฃ .

    ๊ฒฐ๊ตญ ์˜ค๋ฅดํŽ˜์šฐ์Šค๋Š” ์ฒด๋ฉด ๋•Œ๋ฌธ์— ์–ต์ง€๋กœ ์˜ฌ๋ฆผํฌ์Šค ์‚ฐ์œผ๋กœ ๊ฐ€์„œ ์ œ์šฐ์Šค์—๊ฒŒ ์•„๋‚ด๋ฅผ ๋Œ๋ ค๋‹ฌ๋ผ๊ณ  ๋–ผ๋ฅผ ์”๋‹ˆ๋‹ค. ์ง„์‹ฌ์€์ปค๋…• ๊ท€์ฐฎ์Œ์ด ๊ฐ€๋“ ๋ฌป์–ด๋‚˜๋Š” ๊ทธ์˜ ์ €์Šนํ–‰์€ ๊ทธ ์ž์ฒด๋กœ ๋‹น์‹œ ์ƒ๋ฅ˜์‚ฌํšŒ์˜ ํ—ˆ๋ก€ํ—ˆ์‹์„ ๊ผฌ์ง‘๋Š” ๊ฐ•๋ ฅํ•œ ํ’์ž์˜€์Šต๋‹ˆ๋‹ค.

    3. ์ฒœ๊ตญ๋ณด๋‹ค ํž™ํ•œ ์ง€์˜ฅ, ๊ทธ๋ฆฌ๊ณ  ๊ด‘๋ž€์˜ ‘์บ‰์บ‰’

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

    ์—„์ˆ™ํ•ด์•ผ ํ•  ์‹ ๋“ค์ด ์น˜๋ง›์ž๋ฝ์„ ํœ˜๋‚ ๋ฆฌ๋ฉฐ ๋‹ค๋ฆฌ๋ฅผ ๋†’์ด ์ฐจ์˜ฌ๋ฆฌ๋Š” ์ด ์žฅ๋ฉด์€ ๋‹น์‹œ ๊ด€๊ฐ๋“ค์—๊ฒŒ ์—„์ฒญ๋‚œ ์ถฉ๊ฒฉ๊ณผ ์นดํƒ€๋ฅด์‹œ์Šค๋ฅผ ์„ ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. “์ง€์˜ฅ์ด ์ฒœ๊ตญ๋ณด๋‹ค ํ›จ์”ฌ ์žฌ๋ฐŒ๋Š”๋ฐ, ๋‹ค๋“ค ์™œ ์ ์ž–์€ ์ฒ™ํ•ด?”๋ผ๊ณ  ๋ฌป๋Š” ์˜คํŽœ๋ฐ”ํ์˜ ์œ„ํŠธ๊ฐ€ ๋น›๋‚˜๋Š” ๋Œ€๋ชฉ์ด์ฃ .

    ์ด ๊ณก์˜ ์—๋„ˆ์ง€๋Š” ์˜ค๋Š˜๋‚ ๊นŒ์ง€ ์ด์–ด์ ธ ์˜ํ™” <๋ฌผ๋ž‘๋ฃจ์ฆˆ>์˜ ์˜คํ”„๋‹์„ ํ™”๋ คํ•˜๊ฒŒ ์žฅ์‹ํ•˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

    ์บ‰์บ‰์€ ์š”์ฆ˜์œผ๋กœ ์น˜๋ฉด ๋‹น์‹œ์— ํด๋Ÿฝ์—์„œ ์œ ํ–‰ํ•˜๋˜ ์…”ํ”Œ๊ณผ ๊ฐ™์€ ๋Œ„์Šค ์ข…๋ฅ˜์ธ๊ฑฐ์ฃ .. ์˜คํŽœ๋ฐ”ํ๋Š” ๋‹น์‹œ ์œ ํ–‰ํ•˜๋Š” ์Šคํƒ€์ผ์˜ ๋…ธ๋ž˜๋ฅผ ์ž์‹ ์˜ ์ž‘ํ’ˆ์— ๋„ฃ์€๊ฑฐ๊ตฌ์š”

    4. ๋’ค๋Œ์•„๋ณธ ๊ฑด ‘์‹ค์ˆ˜’๊ฐ€ ์•„๋‹ˆ๋ผ ‘๊ณ„ํš’์ด์—ˆ๋‹ค?

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

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


    ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ

    ์˜คํŽœ๋ฐ”ํ์˜ <์ง€์˜ฅ์˜ ์˜ค๋ฅดํŽ˜์˜ค>๋Š” ๋‹จ์ˆœํžˆ ์‹ ํ™”๋ฅผ ํฌํ™”ํ™”ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, “๋‹ค๋“ค ์ด๋ ‡๊ฒŒ ๋†€๊ณ  ์‹ถ์œผ๋ฉด์„œ ์™œ ์•ˆ ๊ทธ๋Ÿฐ ์ฒ™ํ•ด?”๋ผ๊ณ  ๋ฌป๋Š” ์œ ์พŒํ•œ ์กฐ๋กฑ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

    ์บ‰์บ‰์˜ ๋น ๋ฅธ ๋ฆฌ๋“ฌ ์†์—๋Š” ์ด๋Ÿฐ ๋ฐœ์น™ํ•œ ์ƒ์ƒ๋ ฅ์ด ๋…น์•„์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ์ •๋ง ํฅ๋ฏธ๋กญ์ง€ ์•Š๋‚˜์š”? ์—ฌ๋Ÿฌ๋ถ„๋„ ๊ธฐ๋ถ„์ด ์šธ์ ํ•  ๋•Œ ์ด ๊ณก์„ ํฌ๊ฒŒ ํ‹€์–ด๋ณด์„ธ์š”. ๋‚˜๋„ ๋ชจ๋ฅด๊ฒŒ ๋ฐœ์„ ๊นŒ๋‹ฅ์ด๋Š” ๋งˆ๋ฒ•์„ ๊ฒฝํ—˜ํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”!

  • ์˜ค๋ฅดํŽ˜์šฐ์Šค์ด์•ผ๊ธฐ

    ์š”์ฆ˜ ์•„์ด๋•Œ๋ฌธ์— ์บ‰์บ‰์„ ์ž์ฃผ ๋“ฃ๊ฒŒ ๋๋Š”๋ฐ ์•Œ ์ˆ˜ ์—†๋Š” ์˜์‹์˜ ์ด๋Œ๋ฆผ์œผ๋กœ ๊ทธ ์ฃผ์ธ๊ณต์ธ ์˜ค๋ฅดํŽ˜์šฐ์Šค์— ๊ด€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณผ๊นŒ ํ•œ๋‹ค. ๊ทธ๋ฆฌ์Šค ์‹ ํ™”์—์„œ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์‚ฌ๋ž‘๊พผ์ด์ž, ๋‹จ ํ•œ ๋ฒˆ์˜ ์‹ค์ˆ˜๋ฅผ ๊ฒฌ๋””์ง€ ๋ชปํ•ด ๋น„๊ทน์˜ ์ฃผ์ธ๊ณต์ด ๋œ ์˜ค๋ฅดํŽ˜์šฐ์Šค ์ด์•ผ๊ธฐ๋ฅผ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

    ์˜ค๋ฅดํŽ˜์šฐ์Šค ๋Šฆ์—ˆ์œผ๋‹ˆ ์ฑ…์ž„์ ธ ์งค
    ์ด ์˜ค๋ฅดํŽ˜์šฐ์Šค๊ฐ€ ๋งž๋‹ค

    ์Œ์•…๊ณ„์˜ ‘๋ฆฌ๋น™ ๋ ˆ์ „๋“œ’

    ์˜ค๋ฅดํŽ˜์šฐ์Šค๋Š” ํƒœ์–‘์‹  ์•„ํด๋ก ์—๊ฒŒ ํ•˜ํ”„๋ฅผ ๋ฐฐ์šด ๋‹น๋Œ€ ์ตœ๊ณ ์˜ ๋ฎค์ง€์…˜์ด์—ˆ๋‹ค. ๊ทธ์˜ ์—ฐ์ฃผ ์‹ค๋ ฅ์€ ์ •๋ง ๋Œ€๋‹จํ–ˆ๋Š”๋ฐ, ๊ทธ๊ฐ€ ๋…ธ๋ž˜๋ฅผ ๋ถ€๋ฅด๋ฉด ์‚ฌ๋žŒ๊ณผ ๋™๋ฌผ์€ ๋ฌผ๋ก ์ด๊ณ  ๋ฌด์ƒ๋ฌผ์ธ ๋ฐ”์œ„๋‚˜ ๋‚˜๋ฌด์กฐ์ฐจ ๊ฐ๋™ํ•ด์„œ ๋ˆˆ๋ฌผ์„ ํ˜๋ฆด ์ •๋„์˜€๋‹ค๊ณ  ํ•œ๋‹ค.

    ์ด๋ ‡๊ฒŒ ์™„๋ฒฝํ•œ ๊ทธ๊ฐ€ ์•„๋ฆ„๋‹ค์šด ์š”์ • ์—์šฐ๋ฆฌ๋””์ผ€์™€ ๊ฒฐํ˜ผํ•˜๋ฉฐ ํ–‰๋ณตํ•œ ์‚ถ์„ ๊ฟˆ๊ฟจ์ง€๋งŒ, ๊ทธ ๊ธฐ์จ์€ ๋„ˆ๋ฌด๋‚˜ ์งง์•˜๋‹ค. ๊ฒฐํ˜ผํ•œ ์ง€ ์–ผ๋งˆ ์•ˆ ๋˜์–ด ์—์šฐ๋ฆฌ๋””์ผ€๊ฐ€ ๋“คํŒ์„ ์‚ฐ์ฑ…ํ•˜๋‹ค๊ฐ€ ๋…์‚ฌ์—๊ฒŒ ๋ฐœ๋ชฉ์„ ๋ฌผ๋ ค ํ—ˆ๋ฌดํ•˜๊ฒŒ ๋ชฉ์ˆจ์„ ์žƒ๊ณ  ๋ง์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ์•„๋‚ด๋ฅผ ์ฐพ์œผ๋Ÿฌ ์ €์Šน๊นŒ์ง€

    ์•„๋‚ด๋ฅผ ์žƒ์€ ์Šฌํ””์— ๋น ์ง„ ์˜ค๋ฅดํŽ˜์šฐ์Šค๋Š” ๋ฌด๋ชจํ•œ ๊ฒฐ์‹ฌ์„ ํ•œ๋‹ค. ์‚ด์•„์žˆ๋Š” ๋ชธ์œผ๋กœ ์ง์ ‘ ์ €์Šน(ํ•˜๋ฐ์Šค)์— ๋‚ด๋ ค๊ฐ€ ์•„๋‚ด๋ฅผ ๋ฐ๋ ค์˜ค๊ธฐ๋กœ ํ•œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Š” ์˜ค์ง ‘์Œ์•…’ ํ•˜๋‚˜๋งŒ ๋ฏฟ๊ณ  ์ •๋ฉด ๋ŒํŒŒ๋ฅผ ์‹œ๋„ํ–ˆ๋‹ค.

    • ์ €์Šน์˜ ๊ฐ•์„ ์ง€ํ‚ค๋Š” ๋ฑƒ์‚ฌ๊ณต ์นด๋ก ๋„ ๊ทธ์˜ ์—ฐ์ฃผ์— ๋งˆ์Œ์„ ์—ด์–ด ์ €์Šน์œผ๋กœ ๊ฐ€๋Š” ๋ฐฐ๋ฅผ ํƒœ์›Œ์ฃผ์—ˆ๋‹ค.
    ์Šคํ‹ฑ์Šค์™€ ์นด๋ก  ๊ทธ๋ฆผ
    ์ €์Šน์œผ๋กœ ๊ฐ€๋Š” ์Šคํ‹ฑ์Šค๋ฅผ ์˜ค๊ณ  ๊ฐ€๋Š” ๋ฐฐ๋ฅผ ์šด์ „ํ•˜๋Š” ์นด๋ก . ์‹ ๊ณผํ•จ๊ป˜๋ฅผ ํฌํ•จํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ž‘ํ’ˆ์—์„œ ์ด๊ฑธ ๋ชจํ‹ฐ๋ธŒ๋กœ ํ•˜๋Š” ์บ๋ฆญํ„ฐ๋“ค์ด ๋งŽ์ด ๋‚˜์˜จ๋‹ค.
    • ๋จธ๋ฆฌ ์…‹ ๋‹ฌ๋ฆฐ ๊ดด๋ฌผ ๊ฐœ ์ผ€๋ฅด๋ฒ ๋กœ์Šค ์—ญ์‹œ ์Œ์•…์— ํ™€๋ ค ๊ธธ์„ ๋‚ด์ฃผ์—ˆ๋‹ค.
    ๊ฐœ๋ฅด๋ฒ ๋กœ์Šค ์งค

    ๊ฒฐ๊ตญ ๋ƒ‰ํ˜นํ•œ ์ง€์˜ฅ์˜ ์™• ํ•˜๋ฐ์Šค์™€ ์™•๋น„ ํŽ˜๋ฅด์„ธํฌ๋„ค์กฐ์ฐจ ์˜ค๋ฅดํŽ˜์šฐ์Šค์˜ ๋ˆˆ๋ฌผ ์–ด๋ฆฐ ์—ฐ์ฃผ์— ๊ฐ๋™ํ•˜์—ฌ, ์—์šฐ๋ฆฌ๋””์ผ€๋ฅผ ์ง€์ƒ์œผ๋กœ ๋ฐ๋ ค๊ฐ€๋„ ์ข‹๋‹ค๋Š” ํ—ˆ๋ฝ์„ ๋‚ด๋ฆฌ๊ฒŒ ๋˜๋Š”๋ฐโ€ฆ.

    ๋‹จ ํ•˜๋‚˜์˜ ์กฐ๊ฑด: “์ ˆ๋Œ€ ๋’ค๋ฅผ ๋Œ์•„๋ณด์ง€ ๋งˆ๋ผ”

    ํ•˜์ง€๋งŒ ํ•˜๋ฐ์Šค๋Š” ํ•œ ๊ฐ€์ง€ ์•„์ฃผ ๊นŒ๋‹ค๋กญ๊ณ  ์—„๊ฒฉํ•œ ์กฐ๊ฑด์„ ๊ฑธ์—ˆ๋‹ค.

    “์ง€์ƒ์— ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ์—์šฐ๋ฆฌ๋””์ผ€๋Š” ๋„ค ๋’ค๋ฅผ ๋”ฐ๋ผ๊ฐˆ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๋„ˆ๋Š” ์ง€์ƒ์— ๋„์ฐฉํ•˜๊ธฐ ์ „๊นŒ์ง€ ‘์ ˆ๋Œ€๋กœ’ ๋’ค๋ฅผ ๋Œ์•„๋ณด์•„์„œ๋Š” ์•ˆ ๋œ๋‹ค.”

    ์˜ค๋ฅดํŽ˜์šฐ์Šค๋Š” ๊ธฐ์˜๊ฒŒ ๋Œ€๋‹ตํ•˜๊ณ  ์•„๋‚ด๋ฅผ ๋’ค์— ์„ธ์šด ์ฑ„ ์บ„์บ„ํ•œ ์ง€ํ•˜ ๋™๊ตด์„ ์˜ค๋ฅด๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๋’ค์—์„œ ์•„๋‚ด์˜ ๋ฐœ์†Œ๋ฆฌ๊ฐ€ ์ž˜ ๋“ค๋ฆฌ์ง€ ์•Š์•„ ๋ถˆ์•ˆํ•จ์ด ์—„์Šตํ–ˆ์ง€๋งŒ, ๊ทธ๋Š” ๊พน ์ฐธ์œผ๋ฉฐ ์•ž๋งŒ ๋ณด๊ณ  ๊ฑธ์–ด๊ฐ”๋‹ค.

    ์ด๋ ‡๊ฒŒ ๋๋‚˜๋ฉด ์žฌ๋ฏธ๊ฐ€ ์—†์ง€

    ๋งˆ์นจ๋‚ด ์ง€์ƒ์˜ ๋น›์ด ๋ณด์ด๊ธฐ ์‹œ์ž‘ํ•œ ์ˆœ๊ฐ„์ด์—ˆ๋‹ค. ์˜ค๋ฅดํŽ˜์šฐ์Šค๋Š” ๋™๊ตด ๋ฐ–์œผ๋กœ ๋ฌด์‚ฌํžˆ ๋ฐœ์„ ๋‚ด๋””๋Ž ๊ณ , ๋„ˆ๋ฌด๋‚˜ ๊ธฐ์œ ๋‚˜๋จธ์ง€ ์•„๋‚ด๊ฐ€ ์ž˜ ๋”ฐ๋ผ์™”๋Š”์ง€ ํ™•์ธํ•˜๋ ค๊ณ  ๊ณ ๊ฐœ๋ฅผ ํ™ฑ ๋Œ๋ฆฌ๊ณ  ๋ง์•˜๋‹ค.

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

    ์—๋ฃจ๋ฆฌ๋””์ผ€์™€ ์˜ค๋ฅดํŽ˜์šฐ์Šค ๊ทธ๋ฆผ
    ์—๋“œ์›Œ๋“œ ์กด ํฌ์ธํ„ฐ(Edward John Poynter)์˜ <์˜ค๋ฅดํŽ˜์šฐ์Šค์™€ ์—์šฐ๋ฆฌ๋””์ผ€ (Orpheus and Eurydice)>(1862)

    ์˜ค๋ฅดํŽ˜์šฐ์Šค๋Š” ๋‹ค์‹œ ๊ทธ๋…€๋ฅผ ๊ตฌํ•˜๋ ค ํ–ˆ์ง€๋งŒ, ์นด๋ก ์€ ๋” ์ด์ƒ ๊ทธ๋ฅผ ํƒœ์›Œ์ฃผ์ง€ ์•Š์•˜๊ณ , ๊ฒฐ๊ตญ ๊ทธ๋Š” ํ‰์ƒ ๋‹ค๋ฅธ ์—ฌ์ธ์„ ๋งŒ๋‚˜์ง€ ์•Š๊ณ  ์Šฌํ”ˆ ๋…ธ๋ž˜๋ฅผ ๋ถ€๋ฅด๋ฉฐ ์„ธ์ƒ์„ ๋– ๋Œ๋‹ค ๋น„๊ทน์ ์ธ ์ตœํ›„๋ฅผ ๋งž์ดํ•˜๊ฒŒ ๋œ๋‹ค.(๋„ˆ ๋•Œ๋ฌธ์— ํฅ์ด ๋‹ค ๊นจ์ ธ ๋ฒ„๋ ธ์œผ๋‹ˆ๊นŒ ์ฑ…์ž„์ ธ!)

    ๋‹ค์Œ๋ฒˆ์—” ์˜คํŽœ๋ฐ”ํ์˜ ์˜ค๋ฅดํŽ˜์šฐ์Šค์— ๊ด€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ์˜ฌ๋ ค๋ด์•ผ๊ฒ ๋‹ค.

  • ํ‚ค๋ณด๋“œ ๋งˆ์šฐ์Šค ํ›„ํ‚น ( Key Mouse Event hooking )

    ํ‚ค๋ณด๋“œ ๋งˆ์šฐ์Šค ํ›„ํ‚น ( Key Mouse Event hooking ) 

    pyHook ์ด ๋„ˆ๋ฌด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ž˜๋˜์–ด ์žˆ๋‹ค. 

    MouseEvent , Keyboard Hook ์™ธ์—๋„ ์•„๋ž˜ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์— ๋Œ€ํ•œ ์†Œ๊ฐœ๊ฐ€ ์žˆ์Œ.

    http://www.cs.unc.edu/Research/assist/doc/pyhook/public/pyHook.HookManager-module.html

    import os

    import time

    import pyHook # http://sourceforge.net/projects/pyhook/

    from win32gui import GetWindowRect, GetClassName, GetWindowText

    ##http://sourceforge.net/projects/pywin32/files/pywin32/Build216/

    curTime = time.strftime(“%Y%m%d_%H%M%S”, time.localtime(time.time()))

    if not os.path.exists(“Messages”):

    os.mkdir(“Messages”)

    print “Make Message Directory “

    f = open(“Messages\messages”+ curTime +”.txt”, “w”)

    def Log(logStr):

    print “In logging “

    print str(logStr)

    f.write(logStr + “n”)

      

    def OnMouseEvent(event):

    print “On Mouse Event “

    Log(‘MessageName:’ + str(event.MessageName))

    Log(‘Message:’ + str(event.Message))

    Log(‘Time:’ + str(event.Time))

    Log(‘Window:’ + str(event.Window))

    if event.Window != 0:

    Log(‘Window Rect:’ + str( GetWindowRect(event.Window)))

    Log(‘Window Class Name:’ + str( GetClassName(event.Window)))

    #Log(‘Window Text:’ + str( GetWindowText(event.Window)))

    Log(‘WindowName:’ + str(event.WindowName))

    Log(‘Position:’ + str(event.Position))

    Log(‘Wheel:’ + str(event.Wheel))

    Log(‘Injected:’ + str(event.Injected))

    Log(‘—‘)

    # return True to pass the event to other handlers

    # return False to stop the event from propagating

    return True

    def OnKeyboardEvent(event):

    print “On keyboard Event “

    Log(‘MessageName:’ + str(event.MessageName))

    Log(‘Message:’ + str(event.Message))

    Log(‘Time:’ + str(event.Time))

    Log(‘Window:’ + str(event.Window))

    if event.Window != 0:

    Log(‘Window Rect:’ + str( GetWindowRect(event.Window)))

    Log(‘Window Class Name:’ + str( GetClassName(event.Window)))

    #Log(‘Window Text:’ + str( GetWindowText(event.Window)))

    Log(‘WindowName:’ + str(event.WindowName))

    Log(‘Ascii:’ + str( event.Ascii) + str( chr(event.Ascii)))

    Log(‘Key:’ + str( event.Key))

    Log(‘KeyID:’ + str( event.KeyID))

    Log(‘ScanCode:’ + str( event.ScanCode))

    Log(‘Extended:’ + str( event.Extended))

    Log(‘Injected:’ + str( event.Injected))

    Log(‘Alt’ + str( event.Alt))

    Log(‘Transition’ + str( event.Transition))

    Log(‘—‘)

    # return True to pass the event to other handlers

    # return False to stop the event from propagating

    return True

    # create the hook mananger

    hm = pyHook.HookManager()

    # register two callbacks

    hm.MouseAllButtonsDown = OnMouseEvent

    hm.KeyDown = OnKeyboardEvent

    # hook into the mouse and keyboard events

    hm.HookMouse()

    hm.HookKeyboard()

    if __name__ == ‘__main__’:

    import pythoncom

    pythoncom.PumpMessages()

  • ZIP ํŒŒ์ผ ํฌ๋ž™ python ์ฝ”๋“œ

    ZIP ํŒŒ์ผ ํฌ๋ž™ python ์ฝ”๋“œ

    ์น˜๋ช…์ ์ธ ํŒŒ์ด์ฌ ์ฑ…์— ์žˆ๋Š” ๋‚ด์šฉ์ธ๋ฐ, ์ •๋ง ์žฌ๋ฐŒ๋Š” ์ฑ…์ธ ๊ฒƒ ๊ฐ™๋‹ค. 

    ์ด๋Ÿฐ์ €๋Ÿฐ ์œ ์šฉํ•œ(?) ์ฝ”๋“œ๋“ค์ด ๋งŽ์€ ๋А๋‚Œ์ด๋‹ค.

    ์•„๋ž˜ ๋‚ด์šฉ์€ zip ํŒŒ์ผ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ํฌ๋ž™ํ•˜๋Š” ๋‚ด์šฉ์ด๋‹ค. ์“ฐ๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌ ํ•˜๋„๋ก ๋˜์–ด ์žˆ๊ณ ,

    ์ข‹์€ dictionary ๋‚˜ ๋ธŒ๋ฃจํˆฌ ํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜๋งŒ ์งœ๋‘๋ฉด ๋‚˜์˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™๋‹ค.

    usage %prog -f <zipfile> -d <dictionary>

    root@ubuntu:/home/k1rha/python/ZIP_CRACK# 

    import zipfile

    import optparse

    from threading import Thread

    def extractFile(zFile,password):

    try :

    zFile.extractall(pwd=password)

    print ‘[+] Found password ‘ + password + ‘n’

    except :

    pass

    def main():

    parser = optparse.OptionParser(“usage %prog “+

    “-f <zipfile> -d <dictionary>”)

    parser.add_option(‘-f’,dest=’zname’, type=’string’,

    help=’secify zip file’)

    parser.add_option(‘-d’ , dest=’dname’, type=’string’,

    help=’specify dictionary file’)

    (options,args) = parser.parse_args()

    if(options.zname == None) | (options.dname == None):

    print parser.usage

    exit(0)

    else :

    zname = options.zname

    dname = options.dname

    zFile=zipfile.ZipFile(zname)

    passFile = open(dname)

    for line in passFile.readlines():

    password = line.strip(‘n’)

    t = Thread(target = extractFile , args=(zFile,password))

    t.start()

    if __name__ == ‘__main__’:

    main()

  • ์ž๋™ ํŠธ์œ—

    ์ž๋™ ํŠธ์œ—

    http://comjoy21.tistory.com/89

    ํŠธ์œ„ํ„ฐ์— ๊ธ€์“ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด Head First Programming๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์‘์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

    ํŠธ์œ„ํ„ฐ์— ๊ธ€์“ฐ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ ค๋ฉด ์šฐ์„  ํŠธ์œ„ํ„ฐ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํŠธ์œ„ํ„ฐ ๊ณ„์ •์ด ์žˆ์–ด์•ผ ํ•˜๊ณ ์š”. ๋กœ๊ทธ์ธ ํ›„http://dev.twitter.com/apps ์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.

    twt.jpg



    ๋“ฑ๋กํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•˜๋‚˜๋„ ์—†๋‹ค๋ฉด ์ด ๋ชฉ๋ก์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ‘Register a new app’๋ฅผ ํด๋ฆญํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ๋ก ํ™”๋ฉด์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

    twt01.jpg

    twt01_00000.jpg

    Application Name์— ์ด ์˜ˆ์ œ์™€๋Š” ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋“ฑ๋กํ•œ ์ด๋ฆ„์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    Application Type์€ ๊ผญ ‘Client’๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    Default Access type์€ ‘Read & Write’๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์บก์ฐจ(CAPCHA) ๋ฌธ์ž๋ฅผ ์ž…๋ ฅ ํ›„ ‘Register application’ ๋‹จ์ถ”๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ‘TWITTER API TERMS OF SERVICE‘ ์ฐฝ์ด ๋œจ๋Š”๋ฐ, ‘I Accept’๋ฅผ ํด๋ฆญํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ๋ก๋˜๋ฉฐ, ๋“ฑ๋ก๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค.

    twt01_00001.jpg

    twt01_00002.jpg

    ์ปจ์Šˆ๋จธ ํ‚ค(Consumer key)์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ(Consumer secret)๋ฅผ ๋ฉ”๋ชจ์žฅ์— ์ž˜ ๋ณต์‚ฌํ•ด ๋‘ก๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. OAuth๋กœ ์ธ์ฆํ•  ๋•Œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ ‡๊ฒŒ ํŠธ์œ„ํ„ฐ ์‚ฌ์ดํŠธ์— ๊ธ€์„ ์“ธ ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งˆ๋ จํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด์ œ ํŒŒ์ด์ฌ์—์„œ ํŠธ์œ„ํ„ฐ์— ๊ธ€์„ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠธ์œ„ํ”ผ(tweepy) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 
    http://tweepy.googlecode.com/files/tweepy-1.4-py3.tar.gz 
    ์—์„œ Tweepy for python 3 ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. 

    ๋ฌผ๋ก  python 3์„ ๋ฏธ๋ฆฌ ์„ค์น˜ํ•ด ๋†“์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ 3์€ 
    http://www.python.org/ftp/python/3.1.4/python-3.1.4.msi
    ์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. 
    64๋น„ํŠธ ์šด์˜์ฒด์ œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด 
    http://www.python.org/ftp/python/3.1.4/python-3.1.4.amd64.msi 
    ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค(์šฐ๋ถ„ํˆฌ)์—์„œ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ผํ„ฐ์—์„œ ํŒŒ์ด์ฌ 3.1.4 ๋ฒ„์ „์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๋‚ด์šฉ์€ MS ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ์šฉ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. 

    ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ํŠธ์œ„ํ”ผ ํŒŒ์ผ์€ ํ™•์žฅ์ž๊ฐ€ .tar.gz์ด๋ฏ€๋กœ ์•Œ์ง‘ ๋“ฑ์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์••์ถ• ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. ์••์ถ• ํ•ด์ œํ•œ ํŒŒ์ผ๋“ค์„ c:tweepy ํด๋”์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ‘๋ช…๋ น ํ”„๋กฌํ”„ํŠธ’ ์‹คํ–‰ ํ›„, cd c:tweepy ๋ช…๋ น์œผ๋กœ c:tweep ํด๋”๋กœ ๊ฐ‘๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  dir ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์„ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    twt02.jpg

    twt02_00000.jpg

    http://python-distribute.org/
    ์—์„œ ๋ชฉ๋ก ์ค‘ distribute_setup.py ํŒŒ์ผ์— ๋งˆ์šฐ์Šค ๋†“๊ณ  ์šฐํด๋ฆญํ•˜์—ฌ ๋‹จ์ถ•๋ฉ”๋‰ด ์ค‘ ‘๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋Œ€์ƒ ์ €์žฅ’์„ ํด๋ฆญํ•˜๊ณ  c:tweepy ํด๋”์—  ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์œˆ๋„์šฐ ํƒ์ƒ‰๊ธฐ ์ฐฝ์—์„œ c:tweepy ํด๋”์— ์žˆ๋Š” distribute_setup.py ํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์‹œ ‘๋ช…๋ น ํ”„๋กฌํ”„ํŠธ’ ์ฐฝ c:tweepy ํด๋”์—์„œ 
    c:Python31python.exe setup.py install
    ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.


    twt02_00001.jpg

    twt02_00002.jpg

    ์ด๋ ‡๊ฒŒ ์œˆ๋„์šฐ์— ํŠธ์œ„ํ”ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ๋ฆฌ๋ˆ…์Šค(์šฐ๋ถ„ํˆฌ)์—์„œ ํŠธ์œ„ํ”ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ Tweepy for python 3 ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•œ ํ›„, tweepy ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ๊ณณ์— ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค.

    ์šฐ๋ถ„ํˆฌ ์†Œํ”„ํŠธ์›จ์–ด ์„ผํ„ฐ์—์„œ python3-setuptools๋ฅผ ์„ค์น˜ ํ›„, ํ„ฐ๋ฏธ๋„์—์„œ ์กฐ๊ธˆ ์ „์— ๋งŒ๋“  tweepy ํด๋”๊ฐ€ ์žˆ๋Š” ๋ถ€๋ชจ ํด๋”์— ๊ฐ‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ถ€๋ชจ ํด๋”๊ฐ€ ‘๋‹ค์šด๋กœ๋“œ’ ๋ผ๋ฉด, 

    > cd ๋‹ค์šด๋กœ๋“œ 

    > sudo easy_install3 tweepy

    ์ด๋ ‡๊ฒŒ ๋ฆฌ๋ˆ…์Šค(์šฐ๋ถ„ํˆฌ)์— ํŠธ์œ„ํ”ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


    ์ด์ œ OAuth ์ธ์ฆ์„ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

    TwitterOAuth.py

     TwitterOAuth.py

    ์œ„์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ํ›„ ํŒŒ์ด์ฌ 3์œผ๋กœ ์—ฝ๋‹ˆ๋‹ค.
    ์ด ํŒŒ์ผ์€ ํŠธ์œ„ํ„ฐ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ๋ก ์‹œ์— ๋ฐ›์€ ์ปจ์Šˆ๋จธ ํ‚ค์™€ ๋น„๋ฐ€ ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ OAuth ์ธ์ฆ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค. ๋ฉ”๋ชจ์žฅ์— ์ €์žฅํ•ด ๋‘” ์ปจ์Šˆ๋จธ ํ‚ค(Consumer key)์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ(Consumer secret)๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์•„๋ž˜ ๊ทธ๋ฆผ์— ํ‘œ์‹œํ•œ ๋ถ€๋ถ„์— ์ฐจ๋ก€์ฐจ๋ก€ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ ๊ผญ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ง€์šฐ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

    twt02_00003.jpg

    ์ฐธ๊ณ ๋กœ ์œ— ๊ทธ๋ฆผ ์ฒซ ์ค„์— ์žˆ๋Š” ‘import tweepy’๋ฅผ ์œ„ํ•ด, ์ฆ‰ ํŠธ์œ„ํ”ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž„ํฌํŠธ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํŠธ์œ„ํ”ผ ๋“ฑ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ณ  ์„ค์น˜ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ์ปจ์Šˆ๋จธ ํ‚ค์™€ ๋น„๋ฐ€ ๋ฒˆํ˜ธ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹คํ–‰(F5)์‹œํ‚ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

    twt02_00004.jpg



    ๋นจ๊ฐ›๊ฒŒ ํ‘œ์‹œํ•œ ๋ถ€๋ถ„์„ ๋ณต์‚ฌํ•˜์—ฌ ์›น ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— ๋ถ™์—ฌ๋„ฃ๊ณ  ์—”ํ„ฐ๋ฅผ ์น˜๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

    twt02_00005.jpg

    ํŠธ์œ„ํ„ฐ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ‘์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šน์ธ’ ๋‹จ์ถ”๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

    twt02_00006.jpg

    PIN ์ˆซ์ž๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด, ์ ‘๊ทผ ํ‚ค(ACCESS_KEY)์™€ ๋น„๋ฐ€ ๋ฒˆํ˜ธ(ACCESS_SECRET)๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

    twt02_00007.jpg

    ์—ฌ๊ธฐ์„œ ์•Œ๋ ค์ค€ ์ ‘๊ทผ ํ‚ค์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋„ ๋ฉ”๋ชจ์žฅ์— ์ž˜ ์ €์žฅํ•ด ๋‘ก๋‹ˆ๋‹ค. ๋ฉ”๋ชจ์žฅ์— ์ €์žฅํ•œ ์ปจ์Šˆ๋จธ ํ‚ค์™€ ๋น„๋ฐ€ ๋ฒˆํ˜ธ, ์ ‘๊ทผ ํ‚ค์™€ ๋น„๋ฐ€ ๋ฒˆํ˜ธ, ์ด 4๊ฐœ๋กœ ํŠธ์œ„ํ„ฐ์— ๊ธ€์„ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    ์ด๋ ‡๊ฒŒ ํŠธ์œ„ํ„ฐ์— ๊ธ€์„ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ์ ์ธ ์ค€๋น„๋ฅผ ๋งˆ์ณค์Šต๋‹ˆ๋‹ค. ์ด์ œ ํŒŒ์ด์ฌ 3์œผ๋กœ ํŠธ์œ„ํ„ฐ์— ๊ธ€์„ ์“ฐ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    import tweepy
    import urllib

    def send_to_twitter(msg):
        CONSUMER_KEY = ‘์ปจ์Šˆ๋จธ ํ‚ค’
        CONSUMER_SECRET = ‘๋น„๋ฐ€ ๋ฒˆํ˜ธ’
        ACCESS_KEY = ‘์—‘์„ธ์Šค ํ‚ค’
        ACCESS_SECRET = ‘๋น„๋ฐ€๋ฒˆํ˜ธ’

        auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
        auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
        api = tweepy.API(auth)
        api.update_status(msg)

    def get_data() :
        page = urllib.request.urlopen(“http://www.kma.go.kr/forecast/mid-term_02.jsp“)
        text = page.read().decode(“euc-kr”)
        where = text.find(‘tl_mid_term1.gif’)
        start_of_data = where + 85
        end_of_data = start_of_data + 128
        return text[start_of_data:end_of_data]
    data_now = input(“๊ธฐ์ƒ์ •๋ณด๋ฅผ ์ง€๊ธˆ ๋ณด๋‚ด๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๊นŒ(y/n)?”)
    if data_now == “y” :
        send_to_twitter(“[๊ธฐ์ƒ์ •๋ณด]” + get_data()) 
    else :
        send_to_twitter(“์ฒœ์ฒœํžˆ ์—ฌ์œ ๋กญ๊ฒŒ ์ž ์‹œ ์‰ฌ์—ˆ๋‹ค ์ง€ํ˜œ๋ฅผ ๋ชจ์•„ ๋‹ค์‹œ ํ•ด ๋ด…์‹œ๋‹ค!”)

    ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•œ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    import tweepy
    import urllib
    ํŠธ์œ„ํ„ฐ์— ๊ธ€์„ ์“ธ ๋•Œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. tweepy๋Š” ํŠธ์œ„ํ„ฐ์— ๊ธ€ ์“ฐ๊ณ  ๋ณด๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. urllib๋Š” ์ธํ„ฐ๋„ท ์ฃผ์†Œ๋กœ ์ ‘์†ํ•˜์—ฌ ํ•„์š”ํ•œ ์ž‘์—…์„ ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

    def send_to_twitter(msg):
        CONSUMER_KEY = ‘์ปจ์Šˆ๋จธ ํ‚ค’
        CONSUMER_SECRET = ‘๋น„๋ฐ€ ๋ฒˆํ˜ธ’
        ACCESS_KEY = ‘์—‘์„ธ์Šค ํ‚ค’
        ACCESS_SECRET = ‘๋น„๋ฐ€๋ฒˆํ˜ธ’

        auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
        auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
        api = tweepy.API(auth)
        api.update_status(msg)

    send_to_twitter ํ•จ์ˆ˜๋Š” ํŠธ์œ„ํ„ฐ์— ์ปจ์Šˆ๋จธ ํ‚ค ๋“ฑ์„ ์ž…๋ ฅํ•˜๊ณ  OAuth ์ธ์ฆ์„ ๋ฐ›๊ณ  ๊ธ€์„ ์”๋‹ˆ๋‹ค. ์ปจ์Šˆ๋จธ ํ‚ค ๋“ฑ์€ ๋ฉ”๋ชจ์žฅ์— ์ €์žฅํ•ด ๋‘์—ˆ๋˜ ๊ฒƒ์„ ๋ณต์‚ฌํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    def get_data() :
        page = urllib.request.urlopen(“http://www.kma.kr/02.jsp“)
        text = page.read().decode(“euc-kr”)
        where = text.find(‘tl_mid_term1.gif’)
        start_of_data = where + 85
        end_of_data = start_of_data + 128
        return text[start_of_data:end_of_data] 

     

    ๊ธฐ์ƒ ์ •๋ณด ์ค‘ ํŠธ์œ„ํ„ฐ์— ์˜ฌ๋ฆฌ๊ณ  ์‹ถ์€ ๋‚ด์šฉ ์ค‘ ์ฒซ ๋‹จ์–ด๋กœ ๊ฒ€์ƒ‰์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‚ด์šฉ์€ ๊ผญ ‘tl_mid_term1.gif’๋ผ๋Š” ๋ฌธ์ž๋กœ๋ถ€ํ„ฐ 85์ž ๋‹ค์Œ์— ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŠธ์œ„ํ„ฐ์— ๊ธ€์„ ์“ธ ๋•Œ 140์ž๊นŒ์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๊ธฐ๋„ ํ•˜๊ณ  ๊ธฐ์ƒ ์ •๋ณด ๋‚ด์šฉ์ด ํ‰๊ท ์ ์œผ๋กœ 120์ž์—์„œ 130์ž์ด๋ฏ€๋กœ, ์‹œ์ž‘ ๋‹จ์–ด๋กœ๋ถ€ํ„ฐ 128์ž๊นŒ์ง€์˜ ๋‚ด์šฉ์„ ํŠธ์œ„ํ„ฐ์— ์˜ฌ๋ฆฌ๊ธฐ๋กœ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด ๋‚ด์šฉ์„  get_data ๊ฐ’์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ธํ„ฐ๋„ท ๊ธฐ์ƒ ์ •๋ณด ํŽ˜์ด์ง€์—์„œ ๊ฐ€์ ธ์˜จ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ์ €์žฅํ•ด ๋†“์•˜๋Š”๋ฐ, ๊ทธ ์ค‘์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. text ๋ณ€์ˆ˜์— ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ start_of_data์—์„œ๋ถ€ํ„ฐ end_of_data๊นŒ์ง€์˜ ๋ฌธ์ž๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    data_now = input(“๊ธฐ์ƒ์ •๋ณด๋ฅผ ์ง€๊ธˆ ๋ณด๋‚ด๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๊นŒ(y/n)?”)
    if data_now == “y” :
        send_to_twitter(“[๊ธฐ์ƒ์ •๋ณด]” + get_data()) 
    else :
        send_to_twitter(“์ฒœ์ฒœํžˆ ์—ฌ์œ ๋กญ๊ฒŒ ์ž ์‹œ ์‰ฌ์—ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ํ•ด ๋ด…์‹œ๋‹ค!”)

    ๊ธฐ์ƒ ์ •๋ณด๋ฅผ ์ง€๊ธˆ ํŠธ์œ„ํ„ฐ๋กœ ๋ณด๋‚ผ ๊ฒƒ์ธ์ง€๋ฅผ ๋ฌป์Šต๋‹ˆ๋‹ค. ‘y’๋ฅผ ๋ˆ„๋ฅด๋ฉด, ‘[๊ธฐ์ƒ์ •๋ณด]’๋ผ๋Š” ๋จธ๋ฆฟ๊ธ€์„ ํฌํ•จํ•˜์—ฌ ํŠธ์œ„ํ„ฐ์— ๊ธฐ์ƒ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ์จ ์ค๋‹ˆ๋‹ค. ‘n’์„ ํƒ€์ดํ•‘ํ•˜๋ฉด, ‘์ฒœ์ฒœํžˆ ์—ฌ์œ ๋กญ๊ฒŒ ์ž ์‹œ ์‰ฌ์—ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ํ•ด ๋ด…์‹œ๋‹ค!’๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ํŠธ์œ„ํ„ฐ์— ์˜ฌ๋ ค์ค๋‹ˆ๋‹ค. ์ด๋ฅผ ์‘์šฉํ•˜์‹œ๋ฉด ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๊ณจ๋ผ ํŠธ์œ„ํ„ฐ์— ์˜ฌ๋ฆฌ์‹ค ์ˆ˜ ์žˆ์„ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค. 

    ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์†Œ์Šค ํŒŒ์ผ :

    py2twt.py

     py2twt.py

     

    get_data ํ•จ์ˆ˜๋Š” ์ธํ„ฐ๋„ท ์ฃผ์†Œ์— ์žˆ๋Š” ํŒŒ์ผ์„ ์ฝ๊ณ , ๋ฌธ์ž๋ฅผ euc-kr ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ๋ฉฐ, ‘tl_mid_term1.gif’๋ผ๋Š” ๋ฌธ์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ฐพ๊ณ , ์ด ๋ฌธ์ž๋กœ๋ถ€ํ„ฐ 85์ž ๋‹ค์Œ์— ์žˆ๋Š” ๊ธ€์ž๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ 128์ž๊นŒ์ง€ ์žˆ๋Š” ๋‚ด์šฉ์„ get_data ๊ฐ’์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ์‚ฌ์šฉํ•œ ์ธํ„ฐ๋„ท ์ฃผ์†Œ๋Š” ์›๋ž˜ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    http://www.kma.go.kr/weather/forecast/mid-term_02.jsp
    ์ด ์ฃผ์†Œ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด ์งง๊ฒŒ ํ‘œํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ฃผ์†Œ์— ๊ฐ€์„œ [๋ณด๊ธฐ – ์›๋ณธ] ๋ฉ”๋‰ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.

    twt03.jpg