U E D R , A S I H C RSS

1002/Journal

ถ”›„ Refactoring & ๋‹ค๋ฅธ œ„‚ค Ž˜ดง€— •ด๋‹น ง€‹ ๋ถ„–‘šฉ.

2003

11

•˜๋ฃจ ‰๊ฐ€ : 5  ๋งŒ ค‘ 2 . (ค‘š”•˜๊ณ  ๊ธด๊ธ‰•œ ผ๋“ค„ ž˜ ฒ˜๋ฆฌ ๋ชป•จ)

• ผ ๋ชฉ๋กค‘
  • ๋„„œ๊ด€—„œ ๋ฅ˜๊ตฐ TPOCP ฐพ•„ฃผ๊ธฐ - O
  • ‚ฌ๋žŒˆ˜๋Œ€๋กœ retrofitting ธ‡„•˜๊ธฐ -> 6๋ถ€ ธ‡„•˜๊ธฐ - O
  • Retrofitting UT ๋ฐœ‘œค€๋น„
    • ๋‚ดšฉ„ค๋ช… ๊ด€๋ จ -> 1ฐจ œผ๋กœ ด•ด๋ฅผ œ„•œ TOC ž‘„. - O
      -> ‚ด„ ๋ถ™—ฌ„œ ด•ด•˜๊ธฐ -> restatement •„š” & ๋Œ€๊ฐ• ๋ฌดˆ„œ•œ ๋ฐฉ๋ฒ•œผ๋กœ ๋„˜–ด๊ฐ€๋ฒ„๋ฆผ.
    • ๊ฒฝ—˜ ๋‚ด  šฉ ๊ฐ๋ฆฌ
  • dotplot ž‘„๊ถ๋ฆฌ
    • normalization
    • dot plotting
  • index card ๋‚ดšฉ  •๋ฆฌ•˜๊ธฐ
  • 1‹œ 30๋ถ„. •œ–‘๋Œ€ชฝœผ๋กœ ด๋™•˜๊ธฐ - o
  • 10‹œ 30๋ถ„๊นŒง€ •™๊ต ๋„ฐฉ•˜๊ธฐ - o
  • ”„๋กœ Šธ ๊ด€๋ จ †ŒŠค ธ‡„ - o
  • ”„๋กœ Šธ ๊ด€๋ จ †ŒŠค ๋ถ„„•˜๊ธฐ -> restatement •„š”.
'š”ƒˆ ๋АŠจ•˜๊ฒŒ ‚ด๊ณ  žˆ๋‹ค' ๋ผ๋Š” 10๊ธ€ž— ๋Œ€•œ •ฝ๊ฐ„˜ ๊ตฌฒด™” & žฌ„ˆ .
~cpp 
3 : 30 ~ 9 : 00 ž 
 ~ 9 : 13 ‹‚ฌ
 ~ 9 : 33 ๋จธ๋ฆฌ๊ฐ๊ธฐ & –‘น˜ˆ & ˜ทž…๊ธฐ & ๊ฐ€๋ฐฉ •๋ฆฌ
 ~ 9 : 46 ๊ฐ•๋ณ€ ๋„ฐฉ
 ~ 9 : 50 ๊ด๋Œ€ž…๊ตฌ ๋„ฐฉ
 ~ 10 : 38 ”ผ‹œ‹ค 7ธต ๋„ฐฉ
 ~ 11 : 14 ”„๋กœ Šธ ๊ด€๋ จ †ŒŠค ธ‡„
 ~ 11 : 20 retrofitting ธ‡„
 ~ 11 : 30 internet ๋Œ•„๋‹ค๋‹ˆ๊ธฐ
 ~ 1 : 06 retrofitting ๊ณต๋ถ€ & ด•ด
 ~ 1 : 31 PC 7 ๋ฌธ ž ๊ทธ๊ธฐ œ„•ด ๊ฒฝ๋น„•„ €”จ๊ป˜  „™” & ๊ธฐ๋‹ค๋ฆฌ๊ธฐ
 ~ 1 : 47  ‹ฌ‹‚ฌ (๋นต & šฐœ . 800›)
 ~ 2 : 03 ง€•˜ฒ  —ญ ๋„ฐฉ
 ~ 2 : 16 (ง€•˜ฒ ) using singleton wisely ฝ๊ณ  ด•ด
 ~ 2 : 42 (ง€•˜ฒ ) retrofitting ฝ๊ธฐ & ด•ด
 ~ 2 : 57 HIT ๋„ฐฉ
 ~ 6 : 14 XP Study Group
 ~ 6 : 42 ๊ฐ•๋ณ€—ญ ๋„ฐฉ
 ~ 7 : 00 ง‘— ๋„ฐฉ
 ~ 7 : 35 ธ„ฐ๋„‹ธ๋Œ•„๋‹ค๋‹ˆ๊ธฐ.
 ~ 9 : 35  €๋…‹‚ฌ. Four Boxes 2ฐจ ‹œ๋„ „–‰
 ~ 10 : 00 ™„๋ฃŒ
 ~ 10 : 32 ›„œ•‘. ด๊ฒƒ €๊ฒƒ
 ~ 12 : 03 œด‹ (ง‘•ˆ‚ฌ๋žŒ๋“ค๊ณผ ๋Œ€™”)
 ~ 2 : 07 •„๋Š” ‚ฌ๋žŒ๊ณผ ๋ฉ”‹  €—„œ ๋Œ€™”๊ด€๋ จ.

ดค‘ ›„œ•‘œผ๋กœ 32๋ถ„„ “ฐ๊ณ , œด‹œผ๋กœ 1‹œ๊ฐ„ 30๋ถ„„ ๋˜ ‰ฌ๊ณ , ค‘๊ฐ„ค‘๊ฐ„ ธ„ฐ๋„— ๋ณ„ ๋ชฉ —†ด ๋Œ•„๋‹ค๋‹ˆ๋Š” ‹œ๊ฐ„ด ๋งŽ•˜๋‹ค๋Š”  ด ๋ฌธ œ.

•„ง€ ๋‹ค๋ฅธ ๊ฐœ๋…— ๋Œ€•œ žฌถ”ƒ™”— ๋Œ€•ด„  ๋ณ„๋กœ ๊ถ๋ฆฌ•˜๊ณ  žˆง€ •Š€ค‘. ผ๋‹จ€ ๋ฐ”๋ณดธ ƒƒœ๋ฅผ „–‰ค‘. ๊ด€ฐฐค‘ด๊ธด • ๊นŒ?

  • ๊ทœ˜ด˜•ด Working Effectivly With Legacy Code ๋ฐœ‘œ• ๋•Œ๋ฅผ ๋ณด๋ฉด„œ ๊ทธ ๊ฒฉ— žˆ–ด ˜„๊ฒฉ•จ„ ๋А๋‚Œ.
    • Šค† ๋ฆฌ …”๋งด ๊ฐ€๋Šฅ•˜๋‹ค๋Š”  . (๋‚˜๋Š” •ž ๋’ค˜ ด•ผ๊ธฐ๊ฐ€ ๋Š–ด„๋‹ค.)
    •  „ฒด … ๋‚ดšฉ— ๋Œ€•œ Summary ๊ฐ€ TOC ๋กœ กฐง ด๋ผ๋Š”  . (ด๋ฒˆ— TOC ๋ฅผ ค€๋น„ •ˆ–ˆ๋‹ค.)
    • ๊ตฌ˜„ ๊ฒฝ—˜ด ’๋ถ€•˜๋‹ค๋Š”  . •ด๋‹น … ๋‚ดšฉ— ๋Œ€•ด ฝ”๋“œ๋กœ ˜ˆ๋ฅผ ๋“ค–ด๋‹ฌ๋ผ๋ฉด ๋“ค–ด„ ˆ˜ žˆ„ •๋„. (๋‚˜๋Š” •ด„๋ถ€๋ถ„— ๋Œ€•œ 1ฐจ •ด„—„œ๋ถ€„ž˜ •˜ง€ ๋ชป•จ)

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

7

๊ณต๊ฐœ œ„‚ค—„œ˜ Journal.

žฅ  : ๊ฐœธ ๊ฐ •— น˜๋ถ€๋  Œ๋‹จ„ ž˜ •˜ง€ •Š๊ฒŒ ๋œ๋‹ค.
๋‹ค๋ฅธ ‚ฌ๋žŒ๋“ค„ ˜‹•˜—ฌ, ข€ ๋” ž„žˆ ๋…ผ๋ฆฌ ธ ๊ธ€„ “ฐ๊ฒŒ ๋œ๋‹ค.
๋ฐ˜๋ก  : ๋‹จ —„œ˜ '†”ง•˜ง€ ๋ชป•˜๊ฒŒ ๋  ˆ˜ žˆ๋‹ค' ฐธกฐ.
๋‹ค๋ฅธ ‚ฌ๋žŒ๋“ค„ ˜‹•˜—ฌ, ข€ ๋” žฃผ ๊ธ€„ “ฐ๊ฒŒ ๋œ๋‹ค.
๋ฐ˜๋ก  : ตœ๊ทผ— ๊ฒŒ„๋Ÿฌ„œ ž˜ •ˆผž–•„. -_-;

๋‹จ  :
†”ง•˜ง€ ๋ชป•˜๊ฒŒ ๋  ˆ˜ žˆ๋‹ค. ž‹ ˜ ผ„ ๋ฏธ™”•  ˆ˜๋„ žˆ๋‹ค. NoSmok:TunnelVision— ๋น „ ‚ฌ๋žŒ€ '๋ณด๊ณ ‹ถ€ ๊ฒƒ๋งŒ' ๋ณดด๊ฒŒ ๋œ๋‹ค. NoSmok:YouSeeWhatYouWantToSee

ž‹ ด ข€ ฐฝ”ผ•˜๊ฐ๋‚˜ †Œœ„ 'ชฝŒ”๋ฆฌ๋Š”' ผ— ๋Œ€•ด„œ •ด๋‹น ๋‚ดšฉ„ •ˆจ๋ฒ„๋ฆด ˆ˜๋„ žˆ๋‹ค.
๋ฐ˜๋ก  : Journal „ “ฐ๋Š” ๋ชฉ € ผ๊ธฐ™€ ๋‹ค๋ฅด๋‹ค. ด๊ฒ  €•˜๊ฒŒ '•ด๋‹น ผ— ๋Œ€•œ ๊ฐœ„ '„ œ„•œ ผด๋‹ค.

๋ช‡๋ช‡ ค‘š”•œ ‚ฌ๊ด๋“ค— ๋Œ€•ด ๊ธฐ๋ก•  ˆ˜ —†๋‹ค. (Daum workshop ๋“..)
๋ฐ˜๋ก  : ๊ทธ๋Ÿฌ•œ ๊ธ€๋“ค€ ๋ณด•ˆด œ ง€๋˜๋Š” ๋‹ค๋ฅธ ๊ณณ—  œผ๋ฉด ๋˜ง€ •Š๋Š”๊ฐ€?
žฌ๋ฐ˜๋ก  :  •๋ณด๊ฐ€ •œ๊ณณœผ๋กœ ๋ชจดง€ ๋ชป•˜๊ณ  ๋ถ„‚ฐ๋˜๋Š” ˜•ƒœ๊ฐ€ ๋˜–ด๋ฒ„๋ฆฐ๋‹ค.
๋ฐ˜๋ก  : ๊ทธ๋Ÿฌ๋ฉด, ๋ณด•ˆด œ ง€๋˜๋Š” ๋‹ค๋ฅธ ๊ณณ— apache authorization ๋“„ธ๊ณ , •ด๋‹น ๊ธ€„ ๋งฌ๊ธ๋ฉด –ด๋–จ๋Ÿฐง€?
žฌ๋ฐ˜๋ก  : œ„‚ค •œ๊ณณ—„œ ๋ชจ๋“  ž‘—…„ •  ˆ˜ —†๋‹ค๋Š” ด ๋งˆŒ— •ˆ๋“ ๋‹ค.
žฌ๋ฐ˜๋ก  : ๊ทธ๋Ÿผ ๊ทธ ๊ณณ๋„ œ„‚ค๋ฉด ๋˜ง€. -_a

  • ๋‚ด๊ฐ€ “ฐ๋Š” ƒ๋‹น–‘˜ ๋‹จ–ด๋“ค„ ๋ณผ๋•Œ ๋ˆ„๊ตฌ˜ ˜–ฅ„ –ผ๋งˆ๋งŒผ ๋ฐ›•˜๋Š”ง€๊ฐ€ ๋А๊ปด„๋‹ค. ๋น„๋ก ›Œ๋ฅญ•œ •™ƒด •„๋‹ˆ๊ธด •˜ง€๋งŒ.

2002

12›”

25, 26 - ‰๊ฐ€. ๊ณ„š. … ถฉ๋™๊ตฌ๋งค.;

1๋…„ ‰๊ฐ€๋ผ๋Š” ๊ฒƒ€ ค‘๊ฐ„ 3๊ฐœ›” ‰๊ฐ€๊ฐ€ —†œผ๋ฉด –ด๋ คšด ผด๋‹ค. ๋ฐด„ฐ๊ฐ€ ๋‚จ•„žˆˆ •Š๊ตฐ.

…„ 8๊ถŒ  •๋„ ƒ€๋‹ค. Input ๋Œ€๋น„ Output ๋น„œจด ด „๋ณด๋‹ค กฐ๊ธˆด๋‚˜๋งˆ ๋†’•˜œผ๋ฉด •œ๋‹ค.

13 (๊ธˆ), 14 († ), 15(ผ) - RT

๊ธˆ :
  • ˜–ด ฝ๊ธฐ ค€๋น„
ฝ๊ธฐ ค€๋น„  „ Seminar:ThePsychologyOfComputerProgrammingด –ด๋ คšธ ๊ฒƒด๋ผ๋Š” ƒ๊ฐด ๋จผ € ๋“ค–ด„œ, ผ๋‹จ ˜–ด— ตˆ™•ด ธ•ผ๊ฒ ๋‹ค๋Š” ƒ๊ฐด ๋“ค–ด„œ Alice in wonderland ˜ chapter 3,4 ๋ฅผ ๋“ค—ˆ๋‹ค. ๋‹จ–ด๋“คด •˜๋‚˜•˜๋‚˜ ๋“ค๋ฆฌ๋Š”  •๋„. •„ง  „ฒด˜ ๋ฌธžฅด ๋จธ๋ฆฟ†œผ๋กœ ๋งŒ๋“ค–ดง€„ •Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋‹จ–ด ๋‹จœ„ ๋ฐ›•„“ฐ๊ธฐ๋Š” ๊ฐ€๋Šฅ•˜ง€๋งŒ, ๋ฌธžฅ๋‹จœ„ ๋ฐ›•„“ฐ๊ธฐ๋Š” ž˜๋“ ค‘.

๋„„œ๊ด€—„œ ด „—  ˆ๋ฐ˜ •๋„ ฝ€  ด žˆ๋Š” Learning, Creating, and Using Knowledge ˜ ผ๋ถ€๋ฅผ ฝ–ด๋ณด๊ณ , NoSmok:HowToReadaBook›„œ๋ฅผ ฐพ•„๋ณด•˜๋‹ค. ๋Œ€๊ฐ• ฝ–ด๋ดค๋Š”๋ฐ,  „— •œ๊ธ€šฉ–ด๋กœ๋Š” •ฝ๊ฐ„ –ดƒ‰•˜๊ฒŒ ๋А๊ปดกŒ๋˜ šฉ–ด๋“คด ๋จธ๋ฆฟ†—  œ๋Œ€๋กœ ๋“ค–ด™”๋‹ค. (๋˜๋Š”, ๋‚ด๊ฐ€ ˜–ด๋กœ ๋œ …„ ฝ„๋•Œ—”  „๊ณต…˜ ๊ทธ –ดˆฌ๋ฅผ ๋– ˜ฌ๋ ค„œผ๋Ÿฐง€๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค. ฆ‰, ˜–ด๋กœ ๋œ …€ •ฝ๊ฐ„ ๋” ๋ฌด๊ฒ๊ฒŒ ฝ๋Š”๋‹ค๊ณ  • ๊นŒ. ๊ทธ๋ฆผด ๊ทธ๋ ค ธ žˆ๋Š” … (ex : NoSmok:AreYourLightsOn, บ˜๋นˆ & ™‰Šค) ๋Š” ˜ˆ™ธ)

ผ๋‹จ, ข€ ‰ฌšด …๋“ค— ๋Œ€•ด –ด๋А •๋„ Input ด ข€ ๋“ค–ด™”œผ๋‹ˆ ๊ดœฐฎ๊ฒ ง€ •˜๊ณ  …„ ฝ—ˆ๋‹ค.
  • TPOCP ฝ๊ธฐ
    • –ด๋ ค›€ : š”•ฝ„ –ด๋–ป๊ฒŒ •  ๊ฒƒธ๊ฐ€?
      •œ๊ธ€ …„ ฝ„๋•Œ—” •œ๊ธ€๋กœ š”•ฝ•œ๋‹ค. ˜–ด…„ ฝ๋Š” ค‘ •œ๊ธ€๋กœ š”•ฝ•˜๋ ค๋‹ˆ ๋‚ด๊ฐ€ ฝ„๋•Œ ๊ฐ€๊ธ‰  •œ๊ธ€๋กœ •ด„ •ˆ•˜๋ ค๊ณ  •˜๋Š” —ฐŠตค‘ด๋‹ค. ๊ทธ๋Ÿฌ•˜๊ธฐ—” ๋˜ ง€๊ธˆ ˜–ด ž‘๋ฌธ๋Šฅ๋ ฅด ๋›–ด๋‚˜ง€ •Š๋‹ค.
    • ž˜๋ชป๋œ Šต๊ด€ : ๋Œ€ถฉ ฝ๊ธฐ
      …„ ฝœผ๋ฉด„œ '•ด„ด •ˆ๋˜๋Š” ๋ฌธžฅ' „ ๊ทธ๋ƒฅ ๋„˜–ด๊ฐ€๋ฒ„๋ ธ๋‹ค. ฆ‰, NoSmok:HowToReadaBook—„œ˜ ฒซ๋ฒˆงธ ๋‹จ๊ณ„๋ฅผ •„ง  œ๋Œ€๋กœ ๋ชป•˜๊ณ  žˆ๋Š” ๊ฒƒด๋‹ค. ๊ทธ๋Ÿฌ•œ ƒ™ฉ—„œ๋Š” Analyicial Reading „ •  ˆ˜๊ฐ€ —†๋‹ค.
    • ™œ ด๋Ÿฐ‹œผ๋กœ ฝ„๊นŒ •˜๋Š” ƒ๊ฐ„ •ด๋ณด•˜๋Š”๋ฐ, ˜–ด๋กœ ๋œ …„ ฝ„๋•Œ๋Š” ฃผ๋กœ ๋ฌธ œ•ด๊ฒฐ„ œ„•ด ฝ„๋•Œ๊ฐ€ ๋งŽ•„„œ ๊ทธ๋Ÿฐ๊ฒƒ ๊ฐ™๋‹ค. (†นญ ๊ณ ๋“•™๊ต ˜–ด‹œ—˜šฉ ฝ๊ธฐ) ๋นจ๋ฆฌ ฝœผ๋ ค๊ณ  ๊ฐœธ ธ ˜—ญ„„ˆ๋ฌด ˜คšฉ•˜๋Š”๊ฒƒ ๊ฐ™๊ธฐ๋„ •˜๋‹ค. ๊ทธ๋ฆฌ๊ณ , ๋‹จ–ด๋ฅผ Šต๋“•˜๋Š”๋ฐ ข€ ๋” ๋ฏผ๊ฐ•ดˆ •„š”๊ฐ€ žˆ„ ๊ฒƒ ๊ฐ™๋‹ค. (—ฌ๋Ÿฌ๋ฒˆ ฝ๊ธฐ ๋“) Chapter 7,8 ฝ๋Š”๋ฐ ๋ชจ๋ฅด๊ฐ๋‚˜ ๋œป„ ๋Œ€๊ฐ•๋งŒ •Œ๊ณ žˆ–ด„œ ด๋œปธง€  €๋œปธง€ • ๋งค•ด–ˆ๋˜ ๋‹จ–ด๋“ค •ฉณ๋ณด๋‹ˆ 230๊ฐœ •๋„ ๋œ๋‹ค. ˜„žฌ ˜–ดˆ˜ค€€ ค‘•™๊ต 1•™๋…„ ˆ˜ค€ •๋„ธ๊ฒƒ ๊ฐ™๋‹ค.
    • GOF ๋ฒˆ—ญ„ • ๋•Œ—”? - ๋ฒˆ—ญ„ • ๋•Œ—” • ๋งค•œ ๋‹จ–ด๋“ค— ๋Œ€•ด  „๋ถ€ ‚ฌ „„ ฐพ•„๋ณด๊ฒŒ ๋œ๋‹ค. (™„ „žˆ ง—ญ„ •˜๋ฏ€๋กœ) ‹œ๊ฐ„ด ๋งŽด ๊ธ๋ฆฌง€๋งŒ, ˜–ด•™Šต ˆ๊ธฐ—” žฃผ •ด๋ณด๋Š”๊ฒŒ ข‹ง€ •Š„๊นŒ ƒ๊ฐ•œ๋‹ค. (๊ผญ •œ๊ธ€ ๋ฒˆ—ญด •„๋‹Œ, –ด๋ คšด ˜–ด— ๋Œ€•œ ‰ฌšด ˜–ด๋กœ˜ •ด„ค. ด๊ฒŒ ข€ ๋” –ด๋ คšฐ๋ ค๋‚˜..)

    • ๊ทธ๋ ‡๋‹ค๋ฉด, –ด๋–ป๊ฒŒ NoSmok:HowToReadaBookด๋‚˜ 'Learning, Creating, and Using Knowledge' € ฝ๊ธฐ ‰ฌ› „๊นŒ?
      • ‚ฌ „ง€‹ด ด๋ฏธ žˆ—ˆ๊ธฐ ๋•Œ๋ฌธด๋ผ๊ณ  Œ๋‹จ•œ๋‹ค. NoSmok:HowToReadaBook๋Š” •œ๊ธ€ „œ „ ด๋ฏธ ฝ—ˆ—ˆ๊ณ , 'Learning, Creating, and Using Knowledge' ˜ ๊ฒฝšฐ Concept Map — ๋Œ€•œ ด•ด๊ฐ€ žˆ—ˆ๋‹ค. PowerReading ˜ ๊ฒฝšฐ ›๋ž˜ ‘œ˜„ žฒด๊ฐ€ ‰ฝ๋‹ค.
      • ๋ฐ˜๋ฉด, TPOCP ˜ ๊ฒฝšฐ ‚ฌ „ง€‹„ ๊ฐ€ง€๊ณ  žˆง€ •Š•˜๊ณ , •œŽธ 'ƒˆ๋กœ ฝ๋Š” …— ๋Œ€•ด„œ ‚ฌ „ง€‹œผ๋กœ •ด„•˜๊ธฐ'๋ฅผ กฐ‹ฌ•˜๊ณ  žˆ—ˆ๋‹ค. (ด๊ข€ ๋‹ค–‰ธ๋“ฏ •˜๋‹ค.) ๊ทธ๋ฆฌ๊ณ  RT ด›„˜ ๋‹ค๋ฅธ ‚ฌ๋žŒ๋“ค ˜๊ฒฌ„ ๋“ค–ด๋ณด๋ฉด, ‰ฌšด ˜–ด๋Š” •„๋‹Œ ๊ฒƒ ๊ฐ™๋‹ค.
  •  •๋ฆฌ
    • ˜„žฌ ๋‚ด ˜–ดˆ˜ค€„ ๋ณด๊ด๋ฐ, ปด“จ„ฐ ๊ด€๋ จ „œ  ด™ธ— ‰ฝ๊ณ  ผƒ ธ …๋“ค— ๋Œ€•œ Input ด ™•‹คžˆ ๋ถ€•˜๋‹ค. ˜–ด๋กœ ๋œ …๋“ค— ๋Œ€•ด„œ๋Š” ข€ ๋” ‰ฌšด …๋“ค„ Elementary Reading ๋‹จ๊ณ„๋ถ€„•ด๋ด•ผ๊ฒ ๋‹ค.
    • ง€๊ธˆ ˜„žฌ ƒ™ฉ—„œ   ˆ•œ †๋„๋Š” •ฝ 70 WPM ธ๊ฒƒ ๊ฐ™๋‹ค. ๋ชจ๋ฅด๋Š” ๋‹จ–ด •˜๋‚˜•˜๋‚˜  „๋ถ€ ‚ฌ „—„œ ฐพ•„๋ณด๋Š” †๋„ ๊ธฐค€. –ด๋А •๋„ –ดœ˜๋“ค— ตˆ™•ดง€๊ณ  ๋‚œ ๋’ค.

  • Seminar:ReadershipTraining
    • ค‘š” ๋ชฉ‘œค‘ •˜๋‚˜๊ฐ€ RT ๊ฐ€ –ด๋–ป๊ฒŒ ด๋ฃจ–ดง€๊ณ , ZeroPage —„œ RT ‹ค–‰‹œ –ด๋–ป๊ฒŒ • ๊นŒ— ๋Œ€•œ ๊ถ๋ฆฌ.
    • „–‰๋ฐฉ๋ฒ• (ผ๋‹จ ด๋‚  –ˆ—ˆ๋˜ ๋ฐฉ๋ฒ•)
      • ๋ฐœ œ•œ ‚ฌ๋žŒ๋“ค ค‘‹ฌœผ๋กœ ๋ฐœ œž๊ฐ€ •ด๋‹น ๋‚ดšฉ  •๋ฆฌ.
      • Facilitator ๋‚˜ ๋ฐœ œž, ๋˜๋Š” ฝ๋Š” ‚ฌ๋žŒ๋“คด ˆ๋ฌธ œ๊ธฐ & ‚ฌ๋žŒ๋“ค ˜๊ฒฌ žœ † ๋ก 
      • ธ๋ฆฐ ‹œ๊ฐ„ : 6‹œ 30๋ถ„ ~ 2‹œ. (ค‘๊ฐ„ œด‹‹œ๊ฐ„ 1‹œ๊ฐ„  •๋„) Chapter 12๊ฐœ ๊ธฐค€.

    • ๊ธฐ๋ณธ œผ๋กœ ๋ฐœ œ•˜๊ณ  ๋ฐœ‘œ•  ˆ˜ žˆœผ๋ ค๋ฉด •„ฐ ๋‹น 4-5๋ฒˆ  •๋„  •๋…„ •ด•ผ •  ๊ฒƒ ๊ฐ™๋‹ค.
      • ด๋ฒˆ— ๋ฐœ œ๋ฅผ ƒ๋‹นžˆ ž˜–ˆ๋‹ค๊ณ  ƒ๊ฐ๋˜๋Š” ‚ฌ๋žŒ๋“ค„ ๋ณด๋‹ˆ, •œ๋ช…€  –ด๋„ ผฃผผ „๋ถ€„ค€๋น„–ˆ๊ณ , •œ๋ช…€ •ด๋‹น •„ฐ๋ฅผ 3-4๋ฒˆ •๋„ ฝ—ˆ๋‹ค๊ณ  •œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ‚ฌ๋žŒ๋“คด ด•ผ๊ธฐ•  ˆ˜ žˆ„  •๋„๊ฐ€ –ด๋А •๋„ด๋ƒ๋ฉด, •ด๋‹น ˜ˆ œƒ™ฉ— ๋Œ€•ด   ˆ•˜๊ฒŒ ž‹ ˜ ˜ˆ๋กœ ๋ง•  ˆ˜ žˆ„ •๋„ด๊ฐ๋‚˜, ๋˜๋Š” š”•ฝ•œ ๋‚ดšฉ„˜ ๋ณดง€ •Š๊ณ ๋„ ด•ผ๊ธฐ•  ˆ˜ žˆ๋Š” ˆ˜ค€ด˜€๋‹ค. ๋‘๋ช…˜ ๊ฒฝšฐ ™ธ๋ถ€ ž๋ฃŒ๋ฅผ ฐพ•„๋ณด๊ธฐ๋„ –ˆ๋‹ค.
      • •œ๋ช…€ •ด๋‹น ฃผ œ–ด๋ฅผ ด•ผ๊ธฐ•˜๊ณ , ด ฃผ œ–ด ๋œปด ๋ฌด—‡ธง€๋ฅผ ด•ผ๊ธฐ•˜๊ณ , ๊ทธ— —ฐ๊ฒฐ๋˜๋Š” ด•ผ๊ธฐ๋ฅผ •ดฃผ๋Š” ‹.
        • ด๋Ÿฌ•œ ‚ฌ๋žŒ๋“คด …„ ฝ„๋•Œ 5๋ถ„๊ฐ„ ฝœผ๋ฉด„œ –ด๋–ค ๊ณผ •„ –ด๋А •๋„ ˆ˜ค€œผ๋กœ๊นŒง€ ๊น˜๋Š”ง€— ๋Œ€•ด ๊ตฌ๊ฒฝ•ด๋ณผ ˆ˜ žˆ–ด๋„ ข‹„๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋Ÿฌ•œ  —„œ๋Š” RT ๋•Œ Chapter ๋‹จœ„๋กœ Pair-Reading „ •ด๋ด๋„ žฌ๋ฏธžˆ„ ๋“ฏ •˜๋‹ค. 'ฝ๋Š” ๋ฐฉ๋ฒ•'„ ƒ๊ฐ•˜๋ฉฐ ข€ ๋” ˜‹ œผ๋กœ ฝ„ ˆ˜ žˆง€ •Š„๊นŒ.
      • ๋‹ค๋ฅธ ‚ฌ๋žŒ๋“คด ๋‚˜— ๋น„•ด •ด๋‹น –ดœ˜— ๋Œ€•œ žฌ •˜(Restatement) ๋‹จ๊ณ„๊ฐ€ •˜๋‚˜๋‚˜ ๋‘๋‹จ๊ณ„ •๋„ ๋” ๋†’•˜๋˜๊ธ๋กœ ๊ธฐ–ต•œ๋‹ค. ๋‚ด๊ฐ€ …„ ฝ„๋•Œ ˆ๋ฌธ„ ž˜ ๋ชป๋งŒ๋“ค–ด๋‚ด๋Š” ๊ฒƒ๋„ •œ ๋ชซ•˜๋Š”๊ฒƒ ๊ฐ™๋‹ค.

    • 2•™๋…„, 3•™๋…„๋“ค— ๋Œ€•ด ข€ ๋” ‹คšฉ ธ RT๋กœ •œ๋‹ค๋ฉด, •ด๋‹น ”„๋กœ๊ทธ๋ž˜๋ฐ –ธ–ด— ๋Œ€•œ RT๋ฅผ •  ˆ˜ žˆ„๊ฒƒ๋„ ๊ฐ™๋‹ค. (๋…ธŠธ๋ถ 2๋Œ€ •๋„ ดšฉ, ‚ฌ๋žŒ๋“คด ๋‹ค๊ฐ™ด ๋‘˜๋Ÿฌ„œ ๋ณด๋Š”..)
    • ฒ˜Œ ”„๋กœ๊ทธ๋ž˜๋ฐ„  ‘•˜๋Š” ‚ฌ๋žŒ—๊ฒŒ๋Š”  „ฒด ”„๋กœ Šธ ๊ณผ •„ ด•ด•  ˆ˜ žˆ๋Š” •˜๋ฃจ๋ฅผ, (ด๊ด RT ๋ณด๋‹จ ๋ฐคƒˆ๊ธฐ ”„๋กœ Šธ •˜๋ฃจงœ๋ฆฌ๋ฅผ ๊ฐ™ด •ด๋ณด๋Š”๊ฒŒ ข‹„ ๊ฒƒ ๊ฐ™๋‹ค.) 2-3•™๋…„๋•Œ๋Š” ค‘š” ๋…ผ๋ฌธด๋‚˜ †Œ”„Šธ›–ด Ž˜๋Ÿฌ๋‹คž„ ๋˜๋Š” –‘„œ๋ผ ๋ถˆ๋ฆฌ๋Š” …๋“ค (How To Read a Book, ด„˜ ๊ธฐ๋Šฅ, Mind Map ด๋‚˜ Concept Map ๋“)„ ๊ฐ™ด ฝ๊ณ   šฉ•ด๋ณด๋Š” ๊ฒƒ๋„ ข‹„๊ฒƒ ๊ฐ™๋‹ค.


  • Seminar:ReadershipTraining Afterwords
    • “ฐ๋‹ค๋ณด๋‹ˆ … žฒด— ๋Œ€•œ ๋‚ดšฉด ๋น กŒ๊ตฐ. -_-
      • ‹ฌ๋ฆฌ•™ „œ ด –ด๋– •œ Šคƒ€ผธง€๋Š” ๋ชจ๋ฅด๊ฒ ง€๋งŒ, †Œ”„Šธ›–ด ๊ฐœ๋ฐœ˜ ๊ฐ ๊ณผ •๋“ค— ๋Œ€•ด  •๋ง๋กœ 'Human Performance' ๋ผ๋Š” ๊ด€ œผ๋กœ „œˆ •œ๋‹ค.
      • ƒ๊ฐ๋‚˜๋Š” ๋ถ€๋ถ„ :
        • ฝ”๋“œ๋ฅผ ฝ๋Š” ๊ฒƒ.
        • ฝ˜›ด ๋ฒ•น™
        • Blank Error ˜ —๋Ÿฌœจ ๋ณ€™”— ๋Œ€•œ †ต๊ณ„ - ด๋ก œผ๋กœ Dead Lock „ •„๋Š” ๊ฒƒ๊ณผ, ‹ค œ Multi Thread ”„๋กœ๊ทธ๋ž˜๋ฐ„ •˜๋Š” ค‘ Dead Lock ƒ™ฉ„ žฃผ  ‘•˜๋Š”๊ฒƒ. –ด๋А๊ฒƒด ๋” •™Šตšจ๊ณผ๊ฐ€ ๋†’„๊นŒ •˜๋Š” ƒ๊ฐ. ๋™˜— ˜•œ ๊ตœก—„œ ๊ทธ ๋™๊ธฐ๋ถ€—ฌฐจ›—„œ๋„ •™Šต„–‰ Šคƒ€ผด ๋‹ค๋ฅด๋ฆฌ๋ž€ ƒ๊ฐด ๋“ฌ.
        • Efficiency : Effectivily - ๋‚ด๊ฐ€ ๋ฐœ‘œ–ˆ—ˆ๋˜ 7žฅ˜ ๊ทธ ˜ˆ œ๊ฐ€ ๊ฐ€žฅ ค‘š”•œ ˜ˆ œค‘ •˜๋‚˜˜€๋‹ค๊ณ  Comment — จžˆ—ˆ๋˜๊ธ๋กœ ๊ธฐ–ต•˜๋Š”๋ฐ.. ƒ๊ฐ•ด๋ณด๋ฉด ๋‚ด๊ฐ€ ๋ฐœ œ•  ๋ถ€๋ถ„ ๋‚ดšฉ ฐธ žฌ๋ฏธžˆ๋Š” ๋ถ€๋ถ„ด˜€๋Š”๋ฐ,  œ๋Œ€๋กœ ๋ฐœ œ ๋ชป•œ๊ฒŒ ฐธ ‚ฌ๋žŒ๋“ค—๊ฒŒ „†กŠค๋Ÿฝ๋‹ค.

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

12 (๋ชฉ): …ƒ •๋ฆฌ

๋น„–ดžˆ–ด•ผ๋งŒ œ šฉ•œ๊ฒƒ๋“คด žˆœผ๋‹ˆ. ๋นจ๋ฆฌ  •๋ฆฌ๋˜–ด๋ฒ„๋ ค•ผ •  ๊ฒƒ๋“ค.

10 (™”): Prometheus ๋ฆฌŒฉ† ๋ง (๊ณ„†„–‰ค‘. ผฃผผงธ „–‰ค‘ด๋˜๊ฐ€. -_-a)

—ฐŠตžฅ—  „ฒด ด๋ž˜Šค๋“ค ๊ตฌกฐ๋ฅผ ๊ทธ๋ ค๋ดค๋‹ค. CRC ๋ฅผ “ธ๊นŒ •˜๋‹ค๊ฐ€ ๋Š˜–ด๋†“„ ž๋ฆฌ๊ฐ€ —†–ด„œ..;

ƒ๋‹จ˜ ด๋ž˜Šค๋“ค€ •˜๋‹จ˜ ด๋ž˜Šค๋“ค„ ดšฉ•˜๋Š” ‹ด๋‹ค.



๊ทธ๋ฆผ„ ๋ณด๊ณ  ๋‚˜๋‹ˆ, Inheritance ๋‚˜ Delegation ด •„š”—†ด ด๋ฃจ–ด„ ๋ถ€๋ถ„ด žˆ๋‹ค๋Š”   (KeywordGenerator ด๋ž˜Šค๋‚˜ BookSearcher, HttpSpider ๋“) Information Hiding ด  œ๋Œ€๋กœ ง€ผœง€ง€ •Š€๊ฒƒ ๊ฐ™๋‹ค๋Š”  , (Book ๊ณผ ๊ด€๋ จ๋œ ๋ฐด„ฐ๋ฅผ –ป๊ณ , ๊ฒ€ƒ‰•˜—ฌ ๋ฆฌŠคŠธ๋ฅผ ๋งŒ๋“ค–ด๋‚ด๋Š” ๊ฒƒ€ BookMapper —„œ †ตผ๋˜๊ฒŒ ด๋ฃจ–ด ธ•ผ •œ๋‹ค.) ๋ ˆด–ด๋ฅผ นจ๋ฒ”•œ๊ฒƒ (๊ฐ๊ฐ˜ Service ด๋ž˜Šค๋“คด •ด๋‹น ๋กœง๊ฐฒด๋ฅผ ง ‘ ดšฉ•˜๋Š”๊ฒƒ€ ๊ทธ๋ฆฌ ๋ณด๊ธฐ ข‹€ ๋ชจ–‘ƒˆ๊ฐ€ •„๋‹Œ๋“ฏ •˜๋‹ค. ด๋ž˜Šค ๊ด€๊ณ„๊ฐ€ ๋ณตžก•ดง€๋‹ˆ๊นŒ. ๊ทธ๋ฆฌ๊ณ  ง€๊ธˆ Service ๊ฐ€ „œ๋ธ”๋ฆฟ— ๋น„ข…† ธ Command Pattern € •„๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  AdvancedSearchService ™€ SimpleSearchService ๊ฐ€ BookMapper — › „ ๋งžถ”ง€ •Š๊ณ  Searcher ด๋ž˜Šค๋“ค„ ดšฉ•œ ๊ฒƒ€ ˜„๋ช…•œ „ ƒด •„๋‹ˆ๋‹ค.)

๊ตฌกฐ๋ฅผ ‚ด”ผ๋ฉด„œ ๋ฆฌŒฉ† ๋ง, KeywordGenerator ด๋ž˜Šค™€ HttpSpider ๋“˜ ด๋ž˜Šค๋“ค„ ‚ญ œ–ˆ๋‹ค. …ŒŠคŠธ 96๊ฐœ๋Š” •„ง ž˜ ๋Œ•„๊ฐ€๋Š”ค‘. ๋ฆฌŒฉ† ๋งค‘ inline class ๋‚˜ inline method , extract method ๋‚˜ extract class ๋ฅผ • ๋•Œ, ผ๋‹จ •ด๋‹น †ŒŠค๋ฅผ ๋ณต‚ฌ•ด„œ ƒˆ ด๋ž˜Šค๋ฅผ ๋งŒ๋“ค๊ฐ๋‚˜ ๋ฉ”†Œ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ , ด๋ฅผ ดšฉ•œ๋’ค, ๊ธฐกด˜ ๋ฉ”†Œ๋“œ๋“ค€ Find Usage ๊ธฐ๋Šฅ„ ดšฉ•˜๋ฉด„œ ดšฉ•˜๋Š” ๋ถ€๋ถ„ด —†„๋•Œ๊นŒง€ replace •˜๋Š” ‹œผ๋กœ –ˆ๋Š”๋ฐ, …ŒŠคŠธ ฝ”๋“œ๋„ ๊ณ„† ๋…นƒ‰๋ฐ”๋ฅผ œ ง€•˜๋ฉด„œ, ž‘€ ๋ฆฌ๋“ฌ„ œ ง€•  ˆ˜ žˆ–ด„œ ๊ธฐ๋ถ„ด ข‹•˜๋‹ค.

–ด๋А •๋„ ๋‹ค‹œ  •๋ฆฌ๋œ ๋’ค, ฌ๊ฒŒ ๊ทธ๋ฆฌ๋Š” ๊ฒƒด ๋‚ซ๊ฒ ๋‹ค๊ณ  Œ๋‹จ, ™”ดŠธ๋ณด๋“œ— ๊ทธ๋ฆผ. (๋งˆนจ ๋ณด๋“œ ๋งˆนด —†–ด„œ  „ง€— ๋งคงœผ๋กœ.;)



๋‚ดผ ข€ ๋” ž‘—…„ •  ๊ถ๋ฆฌ. CVS —„œ ๋ฒ„ „„ ๋”ฐ๋กœ ๋‘˜๊นŒ๋„ ๊ถ๋ฆฌค‘. (๊ตฌกฐ๊ฐ€ ข€ ๋งŽด ๋ฐ”๋€” ๊ฒƒ ๊ฐ™๋‹ค. ›•˜๋Š” ๋””žธœผ๋กœ ๊ฐ€๋ ค๋ฉด  €  „  ๋ถ€๋ถ„œผ๋กœ ๊ฐ€•ผ •˜๋ฆฌ๋ผ ƒ๊ฐ.)

  • ๋”๋„๋ง๊ณ  ๋œ๋„๋ง๊ณ  '…ŒŠคŠธ †ต๊ณผ๋งŒผ๋งŒ' ด๋ผ๋Š” ‚ฌ๊ณ ๋ฐฉ‹€ ๊ฐœ๋ฐœ†๋„๋ฅผ ƒ๋‹นžˆ –ฅƒ‹œ‚จ๋‹ค.;; ๋ฆฌŒฉ† ๋งค‘ žฌฐจ ๋ฐฐ›€.
8 (ผ):

‹ค œ Database ๋ฅผ ดšฉ•˜๋Š” …ŒŠคŠธ— ๋Œ€•ด •˜๋‚˜๋งŒ ‹ค–‰–ˆ„๋•Œ๋Š” ž˜ ๋˜๋”๋‹ˆ, Suite — ๋ฌถœผ๋‹ˆ๊นŒ …ŒŠคŠธ—„œ ดšฉ•˜๋Š” Connection ด NULL ด ๋˜–ด๋ฒ„๋ฆฐ๋‹ค. Connection POOL ˜ ๋ฌธ œธ๋“ฏ. •„š”—†๋Š” ๊ณณ— Connection —ด–ด๋†“€ ๊ฒƒ„ •˜๋‚˜๋งŒ ดšฉ–ˆ๋”๋‹ˆ •ด๊ฒฐ.

7 († ): Prometheus Test Code ถ”๊ฐ€ ๋Œ€žฅ •

Prometheus ๋ฆฌŒฉ† ๋งค‘. ๊ธฐ๊ฐ„„ žกง€ •Š๊ณ  •˜๋‹ˆ —„ฒญ๋‚˜๊ฒŒ ๋Š˜–ดง€๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋‹ค‹œ • ผ ๋ชฉ๋ก„ ๊ตฌฒด œผ๋กœ žก๊ณ  •ด•ผ๊ฒ ๋‹ค.

๊ธฐกด˜ AcceptanceTest ๋“คด ž‘๋™„ ๋ชป•œ๋‹ค. (Python —„œ  •๊ทœ‘œ˜„‹ ดšฉ. ๋ฐด„ŒŒ‹ & ถ”ถœ. Prometheus UI ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋‹ค‹œ ๋ฐ”๋€œ)  „— ๊ตฌ๊ฒฝ•œ ๊ฒƒฒ˜๋Ÿผ XPath ๋ฅผ ดšฉ•˜๋Š” ๋ฐฉ๋ฒ•„ ๊ถ๋ฆฌ•ด๋ณด๊ฐ๋‚˜, Prometheus ชฝ—„œ XML + XSLT ๋ฅผ ดšฉ•˜๋Š” ๋ฐฉ๋ฒ•„ ๊ถ๋ฆฌ–ˆ๋‹ค. •˜ง€๋งŒ, ๊ทธ๋Ÿฌ๊ธฐ—” ˜„žฌ Prometheus ˜ JSP ๋ถ€๋ถ„„  „๋ถ€ ๋ฐ”๊พธ๋Š”๋ฐ ๋ถ€๋‹ดด ฌ๋ฆฌ๋ผ Œ๋‹จ, Servlet Controller ค‘ Service ด๋ž˜Šค ๋ถ€๋ถ„— ๋Œ€•ด …ŒŠคŠธ ฝ”๋“œ๋ฅผ ๋ถ™ด๋Š” ๋ฐฉ๋ฒ•„ ƒ๊ฐ•ด ๋ƒˆ๋‹ค. •˜ง€๋งŒ, ๋ง‰ƒ ž‘„•ด๋ณด๊ณ  ๋‚˜๋‹ˆ ๊ทธ ๋˜•œ …ŒŠคŠธ ฝ”๋“œ˜ ฌ๊ธฐ๊ฐ€ ฌ๊ธด •˜๋‹ค.

Service ™€ Controller ๊ฐ€ ๊˜ Composition ด๊ณ , ๊ทธ๋กœ ธ•ด Controller ๋Š” Mapper, Recommender ๋“คด „„žˆ ˜กด„„ ๊ฐ€กŒ๋‹ค. ๊ฐ๊ฐ˜ Mapper, Recommender ๋“คด DB ๋ฅผ “ฐ๋ฏ€๋กœ ด๋ฅผ Mock Object ๋ฅผ “ธ๊นŒ •˜๋‹ค๊ฐ€, –ดฐจ”ผ ˜„žฌ ž‘„•˜๋Š” ๋ถ€๋ถ„ด AcceptanceTest ˜ ผ๋ถ€ด๋ฏ€๋กœ ‹ค œ ๊ฐฒด๋ฅผ ๊ทธ๋ƒฅ ดšฉ•ด๋„ ข‹๊ฒ ๋‹ค๊ณ  Œ๋‹จ, ๊ทธ๋Œ€๋กœ ดšฉ•˜๊ณ  ž‘„.

----
ง€๊ธˆ ƒ๊ฐ•ด๋ณด๋ฉด, ด๋ฏธ …ŒŠคŠธ๊ฐ€ žˆ๋Š” ฝ”๋“œ๋“ค„ ๋จผ € ๊ฐ€๋Šฅ•œ•œ ๋‹จˆœ•˜๊ฒŒ ๋ฆฌŒฉ† ๋ง•˜๊ณ  ๊ทธ ๋‹คŒ Service ชฝ ๋ฆฌŒฉ† ๋ง„ –ˆ๋‹ค๋ฉด –ด๋– –ˆ„๊นŒ.

----
…ŒŠคŠธ ฝ”๋“œ ž‘„„ œ„•œ ผ๋ถ€ ฝ”๋“œ ๋ณต‚ฌ & ๋ฉ”†Œ๋“œ ถ”๊ฐ€ & ด๋ž˜Šค ถ”๊ฐ€.

----
Test †ต๊ณผ•˜๋Š” ๋งŒผ๋งŒด ๋‚ด๊ฐ€ ๋งŒ๋“ ๊ฒƒด๋‹ˆ. ๋”๋„๋ง๊ณ  ๋œ๋„๋ง๊ณ . ๊ •๋งž ๊ •๋งž ๊ •๋งž. -_-;

ด๋ฒˆ— ๋ฆฌŒฉ† ๋ง„ •˜๋ ค๊ณ  • ๋•Œ Legacy Code Refactoring ด๋ผ๊ณ  ƒ ••ด„œ ๊ทธ๋Ÿด๊นŒ. Coverage Test๋ฅผ ™„๋ฒฝ•˜๊ฒŒ ž‘„•˜๋Š” ๊ฒƒ— ๋Œ€•ด ๋ถ€๋‹ด๊ฐ„ ๋А๊ผˆ๋‹ค. ˜ˆ „— œ šฉ–ˆ—ˆ๋˜ '•„•„. ด๋ฏธ ๋‹ค ๋˜–ดžˆ–ดš”.~' ๋ฅผ ๋‹ค‹œ  šฉ•ด๋ณผ๊นŒ.

----
Refactoring Catalog  •๋…. ™œ ๋ฆฌŒฉ† ๋ง …˜  ˆ๋ฐ˜ด ๋ฆฌŒฉ† ๋ง˜  ˆฐจธง€— ๋Œ€•ด ˜ผž„œ ๊ฐ๋™ค‘.; ™œ Extract Method ๋ฅผ • ๋•Œ '๋ฉ”†Œ๋“œ๋ฅผ ƒˆ๋กœ ๋งŒ๋“ ๋‹ค' ๊ฐ€ ๋จผ €ธง€. Extract Class ๋ฅผ • ๋•Œ 'ƒˆ ด๋ž˜Šค๋ฅผ  •˜•œ๋‹ค'๊ฐ€ ๋จผ €ธง€. ( ˆ๋Œ€๋กœ '†ŒŠค ผ๋ถ€๋ฅผ ž˜๋ผ๋‚ธ๋‹ค'๋‚˜ '†ŒŠค ผ๋ถ€๋ฅผ comment out •œ๋‹ค' ๊ฐ€ ๋จผ €๊ฐ€ •„๋‹ˆ๋ผ๋Š” ๊ฒƒ.)
๋ฆฌŒฉ† ๋ง …„ ๋ณด๊ณ  ๋ฐฉ๋ฒ•„ ๋ฐฐšฐง€ ๋งˆ๋ผ. ๋Œ€‹  ŠคŠค๋กœ ๊ณ ๋ฏผ•ด๋ผ. "ˆ๋กƒ‰ ๋ง‰๋Œ€๊ธฐ ‚ฌด ๊ธฐ๊ฐ„"ด ตœ†Œ๊ฐ€ ๋˜๊ฒŒ •˜๋ ค๋ฉด –ด๋–ป๊ฒŒ •ด•ผ • ง€. ๊ทธ๋Ÿฌ๊ณ  ๋‚˜„œ ๋„ˆ˜ ๋ฐฉ๋ฒ•๊ณผ …˜ ๋ฐฉ๋ฒ•„ ๋น„๊ต•ด ๋ณด๊ฐ๋‚˜, ˜น€ •˜ง€ ๋งˆ๋ผ. --JuNe

5 (๋ชฉ):
ž˜„ ฃผ๋Š” ๋ง.
  • Instead of being tentative, begin learning concretely as quickly as possible.
  • Instead of clamming up, communicate more clearly.
  • Instead of avoding feedback, search out helpful, concrete feedback.
from TestDrivenDevelopmentByExample

3 (™”): DDD … ‘œง€ ๊ถ๋ฆฌ•˜๊ธฐ

… ‘œง€๋ฅผ ๊ถ๋ฆฌ• ๋•Œ๋„ ผข…˜ ๋””žธด๋ž„๊นŒ. •˜ง€๋งŒ, ‹œ๊ฐ๋””žธชฝ— ๋Œ€•ด„œ๋Š” •„๋Š” ๋ฐ” —†œผ๋ฏ€๋กœ, ๊ทธ๋ƒฅ ๊ฐœธ ธ —ฐƒž‘šฉ๋Œ€๋กœ „–‰–ˆ๋‹ค.
DDD •˜๋‹ˆ๊นŒ XP ๋ฐฉ๋ฒ•๋ก ๊ณผ ž˜ ๋งž๋Š”๋‹ค๋Š” ๋งด ƒ๊ฐด ๋‚ฌ—ˆ๊ณ , ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ TDD ƒ๊ฐด ๋‚˜๊ณ , ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ Calvin & Hobbes ๊ฐ€ ƒ๊ฐด ๋‚˜๊ณ  (—ฌ๊ธฐ๊นŒง€ •œ„๊ธฐ)
DDD •˜๋‹ˆ๊นŒ JuNe ˜•ด ' „™”๊ธฐ ‹ฌ๋ณผžˆœผ๋ฉด ข‹๊ฒ ๋„ค~' ๋ผ๊ณ  •œ๋งด ƒ๊ฐ๋‚˜๊ณ  (DDD ๋‹ˆ -_-) ๊ทธ๋ž˜„œ  „™” ด๋ฏธง€๊ฐ€ •„𔕠 ๊ฒƒด๋ผ ƒ๊ฐด ๋“ค–ด  „™”๊ธฐ ด๋ฆฝ•„Šธ๋ฅผ ๊ฒ€ƒ‰•˜๊ณ , ๊ทธ๋Ÿฌ๋‹ค๊ฐ€  „™”๊ธฐ ด๋ฆฝ•„Šธค‘ บ˜๋นˆด  „™”๋ฐ›๋Š” ด๋ฏธง€๊ฐ€ •˜๋‚˜ žˆ—ˆ๊ณ  (—ฌ๊ธฐ๊นŒง€ •œ„๊ธฐ)

๋‘๊ฐœ๋ฅผ ๊ตฐจ‹œ‚ค๋‹ค๊ฐ€ ๊ฐˆ๋“•˜๋‹ค๊ฐ€ ๊ฒฐ๊ตญ ๋‹คŒ๊ณผ ๊ฐ™€ ‹ด ๋˜—ˆ๋‹ค๋Š”. -_-; (›๋ž˜๋Š” ๊ทธ๋ƒฅ บ˜๋นˆด  „™”๋ฐ›๋Š” ด๋ฏธง€๋งŒ žˆ—ˆ๋˜๊ฐ๋ž‘, บ˜๋นˆด  „™”„  ๋ฝ‘๋Š”๊ฐ, บ˜๋นˆด๋ž‘ ™‰Šค๊ฐ€ ด›ƒง‘ ๊ทผฒ˜— ๋ˆˆœผ๋กœ —ด‹ฌžˆ ๋‹ดŒ“•„๋†“๊ณ  '•„ šฐ๋ฆฌ˜ ๋‹ด€ ŠผŠผ•ด~' ด๋Ÿฐ‹œผ๋กœ ข‹•„•˜๋Š” ๋™•ˆ ด›ƒง‘ •„ €”จ๊ฐ€ 'ด๋†ˆ˜ ž‹๋“ค;' •˜๋Š”๊ฐ ๋“๋“ - ๋งˆน˜ ”„๋กœ๊ทธ๋ž˜๋จธ : ๊ณ ๊ฐ ˜ ๊ด€๊ณ„˜ ๋งคƒ€ฌ ๊ฐ™๋‹ค๋Š” ƒ๊ฐด ๋“ค–ด„œ - ๋งŽ•˜๋Š”๋ฐ. ๊ฐˆˆ˜๋ก ๋ฐฐ๊ฐ€ ‚ฐœผ๋กœ ๊ฐ€๋Š”๊ฒƒ ๊ฐ™๋‹ค๋Š”. -_-;)

ProjectPrometheus Refactoring ๊ถ๋ฆฌ•˜๊ธฐ

Refactoring „ •˜๊ธฐ „ Todo ๋ฆฌŠคŠธ๋ฅผ  •๋ฆฌ•˜๋Š”๋ฐ๋งŒ 1‹œ๊ฐ„ •๋„๋ฅผ “ฐ๊ณ  ‹ค œ ž‘—…„ ๋“ค–ด๊ฐ€ง€ ๋ชป–ˆ๋‹ค. ™œ ˜ค๋ž˜๊ธ๋ ธ„๊นŒ ƒ๊ฐ•ด๋ณด๋ฉด Refactoring „ •˜๊ธฐ— ถฉ๋ถ„žˆ Coverage Test ฝ”๋“œ๊ฐ€ —†๋‹ค ๋ผ๋Š”  ด๋‹ค. ˜„žฌ˜ UnitTest 85๊ฐœ๋“ค€  œ๋Œ€๋กœ ๋Œ•„๊ฐ€ง€๋งŒ, AcceptanceTest ˜ ๊ฒฝšฐ •จ๋ถ€๋กœ ๋Œ๋ฆด ˆ˜๊ฐ€ —†๋‹ค. ™œ๋ƒ•˜๋ฉด ˜„žฌ Release ๋˜–ดžˆ๋Š” ด „ ๋ฒ„ „— ˜–ฅ„ ๋ผน˜๊ธฐ ๋•Œ๋ฌธด๋‹ค. ด ๋ถ€๋ถ„„ ๋ณด๋ฉด„œ ™œ JuNe ด DB — ๋Œ€•ด „ธ ๋ถ€๋ถ„œผ๋กœ ๊ด€๋ฆฌ๊ฐ€ •„š”•˜๋‹ค๊ณ  ด•ผ๊ธฐ–ˆ๋Š”ง€ ๊นจ๋‹ซ๊ฒŒ ๋˜—ˆ๋‹ค. ฆ‰, DB ™€ ๊ด€๋ จ•˜—ฌ ๊ฐœธ UnitTest ๋ฅผ œ„•œ ๊ฐœ๋ฐœž ปด“จ„ฐ ๋‚ด ๋กœปฌ DB, ๊ทธ๋ฆฌ๊ณ  Integration Test ๋ฅผ œ„•œ DB, ๊ทธ๋ฆฌ๊ณ  ๋ฆด๋ฆฌˆ ๋œ  œ’ˆ„ œ„•œ DB ๊ฐ€ •„š”•˜๋‹ค. ("๋ฒ„ „—…„ œ„•ด ๊ธฐกด— ž‘„•œ ๋ฐด„ฐ๋“ค„ ๋‚ ๋ฆฝ๋‹ˆ๋‹ค" ๋ผ๊ณ  „œ๋น„Šค —…ฒด๊ฐ€ ด•ผ๊ธฐ •œ๋‹ค๋ฉด –ผ๋งˆ๋‚˜ ™ฉ๋‹น•œ๊ฐ€.; ๋ฒ„ „ Œจน˜๋ฅผ œ„•œ, †ต•ฉ …ŒŠคŠธ๋ฅผ œ„•œ DB ๋Š” ๋”ฐ๋กœ •„š”•˜๋‹ค.)

๊ทธ๋ฆฌ๊ณ , ๊ฐ๊ฐ˜ …ŒŠคŠธ๋“ค„ œ„•œ DB Property „ •ด žœ ๋กœšฐ๋ ค๋ฉด Server Property ™”ผ€ Šคฌ๋ฆฝŠธ ™”ผ๋กœ ๋น  ธ๋‚˜™€•ผ •œ๋‹ค. (…ŒŠคŠธ ๋Œ๋ฆด๋•Œ๋งˆ๋‹ค ”„๋กœ๊ทธ๋žจ žฌปดŒŒผ •œ๋‹ค๋Š”๊ด, ถ”›„ ”„๋กœ๊ทธ๋žจ ปคกŒ„๋•Œ šจœจ ธ ๋ฐฉ๋ฒ•ด •„๋‹ˆ๋‹ค.)

๊ทธ๋ฆฌ๊ณ , ด „— ProjectPrometheus ž‘—…• ๋•Œ—” „œ๋ธ”๋ฆฟ …ŒŠคŒ… ๋ฐฉ๋ฒ•„ ๋ชฐ๋ž๋‹ค. ๊ทธ๋ž˜„œ ง€๊ธˆ ProjectPrometheus ฝ”๋“œ๋ฅผ ๋ณด๋ฉด „œ๋ธ”๋ฆฟ ๋ถ€๋ถ„— ๋Œ€•ด …ŒŠคŠธ๊ฐ€ —†๋‹ค. WEB Tier — ๋Œ€•œ …ŒŠคŒ…„  „ œผ๋กœ AT — ˜กด•œ๋‹ค. ด๋ฒˆ— ๊ธฐ‚ฌ๋ฅผ “ธ๋•Œ ๋งˆ‹ด ŒŒšธ๋Ÿฌ˜ ๊ธ€„ ธšฉ, "WIMP Application — ๋Œ€•ด„œ WIMP ฝ”๋“œ๋ฅผ •œ„๋„ ๋ณต‚ฌ•˜ง€ •Š๊ณ  Console Application „ ๋งŒ๋“คˆ˜ žˆ–ด•ผ •œ๋‹ค" ๋ผ๊ณ  ด•ผ๊ธฐ–ˆง€๋งŒ, ด๋Š” WEB —„œ๋„ ๋‹ค๋ฅผ ๋ฐ”๊ฐ€ —†๋‹ค๊ณ  ƒ๊ฐ•œ๋‹ค.

๊ฐ€•ผ •  ๊ธธ€ –ธ œ๋‚˜ ๋ฉ€๊ฒŒ๋งŒ ๋А๊ปด„๋‹ค.

2 (›”): ProjectPrometheus †ŒŠค ๋ฆฌ๋ทฐ & ๋ฆฌŒฉ† ๋ง. audio book MP3 ๋œจ๊ธฐ

Prometheus ๋ฅผ ๋ณด๋ฉด …ŒŠคŠธ๊ฐ€ †ต๊ณผ–ˆ๋‹ค •ˆ–ˆ๋‹ค๋ฅผ ๋ฐ˜๋ณต•œ๋‹ค. •™๊ต ๋„„œ๊ด€ ‹œŠค…œ˜ •ˆ •„ด ๊ทธ๋ฆฌ ๋›–ด๋‚˜ง€ •Š๊ธฐ ๋•Œ๋ฌธด๋‹ค. (๋ฐ”๊พธ๊ณ  ๋‚œ ๋’ค ˜คžˆ๋ ค ๋งจ๋‚  ๋ฌธ œ๋ฅผ ผœผ‚จ๋‹ค. ๋˜‘๊ฐ™€ กฐ๊‹—„œ •œ๋ฒˆ€ ๊ฒ€ƒ‰ด ๋˜๊ณ  •œ๋ฒˆ€ ๊ฒ€ƒ‰ด •ˆ๋˜๋‹ˆ.. ฉ)

ด „— TDD • ๋•Œ ˆ๊ธฐ Library ด๋ž˜Šค— ๋Œ€•ด Mock ด๋ž˜Šค ๋งŒ๋“ค—ˆ๋‹ค๊ฐ€ —†• ๋ฒ„๋ ธ๋Š”๋ฐ, ๋‹ค‹œ Library Mock ด๋ž˜Šค๋ฅผ ๋งŒ๋“ค–ด•ผ •  ๊ฒƒ ๊ฐ™๋‹ค. ๋ฆฌŒฉ† ๋ง • ๋•Œ Fail ๋‚œ …ŒŠคŠธ๋กœ ๋ฆฌŒฉ† ๋ง„ •  ˆ˜๋Š” —†„…Œ๋‹ˆ.

Composition ˜ ๋ฌธ œ 
ด „— Delegation •˜๋Š” ด๋ž˜Šค๋ฅผ •ด๋‹น ด๋ž˜Šค ๋‚ด— ๋ฉค๋ฒ„๋กœ ๋‘—ˆ๋Š”๋ฐ. ˜ˆ๋ฅผ ๋“ค๋ฉด ด๋Ÿฐ‹œผ๋กœ
~cpp 
public class BookMapper {
.
.
.

 private Book getBookFromRemote(String aBookId)
            throws ProtocolException, IOException {
        Library library = new Library();
        Book book = library.view(aBookId);
        return book;
    }

ด๋ฅผ ƒ„ž— ๋„–ดฃผ๋Š” ๋ฐฉ๋ฒ•œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒด ๋” ˜ฌ๋ฐ”๋ฅธ ๋””žธด๋ผ ƒ๊ฐ๋œ๋‹ค. ๋‹คŒฒ˜๋Ÿผ.
~cpp 
public class BookMapper {

 public BookMapper(ILibrary library) {
        this.library = library;
 }

 private Book getBookFromRemote(String aBookId)
            throws ProtocolException, IOException {
        .
        .
        Book book = library.view(aBookId);
        return book;
    }

•ด๋‹น ด๋ž˜Šค ๋‚ด—„œ ƒ„•˜๋Š” ๋””žธ€ ๊ทธ ด๋ž˜Šค๋ฅผ ๊ตฒด•ด„ ˆ˜๊ฐ€ —†œผ๋‹ˆ œ —ฐ•œ ๋””žธด •„๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  setter ๋ฅผ ๋‘๋Š” ๊ฒƒ๋„ ข‹€ ๋””žธ€ •„๋‹Œ๊ฒƒ ๊ฐ™๊ณ . (”„๋กœ๊ทธ๋ž˜๋ฐ ‹ค–‰ ค‘๊ฐ„— Delegation •˜๋Š” ๊ฐฒด๋ฅผ ๊ตฒด•  ผ€ ๋“œ๋ฌผ๋‹ค. State Pattern ด๋‚˜ Strategy Pattern ด •„๋‹Œดƒ.) •„๋งˆ ฒ˜Œ— Mock Object ๋ฅผ ดšฉ•˜—ฌ BookMapper ๋ฅผ ๋งŒ๋“ค—ˆ—ˆ๋‹ค๋ฉด Connection „ ง ‘ ดšฉ•˜๊ฐ๋‚˜, Library ๊ฐฒด๋ฅผ ๋‚ด๋ถ€ œผ๋กœ ง ‘ ธŠค„Šค๋ฅผ ƒ„•˜—ฌ ดšฉ•˜๋Š” ๋””žธ€ •˜ง€ •Š•˜„ ๊ฒƒด๋ž€ ƒ๊ฐด ๋“ ๋‹ค.
----
‚ฌ‹ค ~cpp LoD ๊ด€ —„œ ๋ณด๋ฉด ž๊ธฐ๊ฐ€ ๋งŒ๋“  ๊ฐฒด—๋Š” ๋ฉ”„ง€๋ฅผ ๋ณด๋‚ด๋„ ๋œ๋‹ค. •˜ง€๋งŒ „ธ๋ฐ€•œ …ŒŠคŠธ๋ฅผ •˜๋ ค๋ฉด ข€๋” —„๊ฒฉ•œ ๋ฃฐ„  šฉ•ด•ผ•  •„š”๋ฅผ ๋А๋ผ๊ธฐ๋„ •œ๋‹ค. ๋‹ˆ๊ฐ€ ๋ง•˜๋Š” ๊ธ Inversion of Controlด๋ผ๊ณ  •œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋ ‡๊ฒŒ Constructor— parameter๋กœ ๊ณ„†  „๋‹ฌ•ด ฃผ๊ธฐ๋ฅผ •˜๋‹ค๋ณด๋ฉด parameter list๊ฐ€ ๊ธธ–ดง€๊ธฐ๋„ •˜๊ณ , ๊ฐ parameter๊ฐ„— cohesion๊ณผ consistency๊ฐ€ ๋–จ–ดง€๊ธฐ๋„ •œ๋‹ค. ๋ณ„ ƒ๊ด€—†–ด ๋ณดด๋Š” ๋ฆฌŠคŠธ๊ฐ€ ๋˜๋Š” ๊ฒƒดง€.

factory method๋ฅผ ‚ฌšฉ•ด๋ผ.


~cpp 
public class BookMapper {
.
.
 private Book getBookFromRemote(String aBookId)
            throws ProtocolException, IOException {
        Book book=getLibrary().view(aBookId);
                .
                .
}
 protected Library getLibrary() {
        return new Library();
}

ด๊ƒ†๋ฐ›•„„œ getLibrary๋ฅผ override•˜๊ณ  MockObject๋กœ —ฐ๊ฒฐ•ด๋ผ.

--JuNe

----
audio book

–ด œ ๊ฐ„๋งŒ— ๊ต๋ณด— ๋“ค๋ ค Alice in wonderland ™€ Dr.Jekyll & Mr.Hyde ˜ค๋””˜ค ๋ถ„ ƒ€๋‹ค. ๊ต๋ณดชฝ ™ธ๊ตญ–ด ๋ถ„•ผชฝด ๋น„๊ต   •๋ฆฌ๊ฐ€ ž˜ ๋˜–ดžˆ๋Š” ๋“ฏ •˜๋‹ค. ๋‹คŒ—๋„ ข…ข… ๋“ค๋ ค•ผ๊ฒ ๋‹ค.

Alice in wonderland ˜ ๊ฒฝšฐ —ฌž„šฐ๊ฐ€ ฝ–ดค€๋‹ค. ด „— ๋“ค—ˆ๋˜ Sherlock Holmes ˜ ๊ฒฝšฐ— ตˆ™•ด ธ—ฌ„œธง€, ๋ฐœŒ†๋„๊ฐ€ ๋А๋ฆผ—๋„ ๋ถˆ๊ตฌ•˜๊ณ  ด•ด๋„๊ฐ€ ๋–จ–ดกŒ๋‹ค. ด „—๋Š” ๊ทธ๋ƒฅ ๋“ฃ๊ณ  ๋จธ๋ฆฟ†—„œ ๋ฌธžฅ„ ๊ทธ๋ฆฐ๋‹คŒ ด•ด•˜๋Š” ๋ฐฉ‹œผ๋กœ –ˆ๋Š”๋ฐ, ด๋ฒˆ—๋Š” ๋ฐ›•„“ฐ๊ธฐ —ฐŠต„ •ด๋ด•ผ๊ฒ ๋‹ค.

ด „— Alice in wonderland …ด žˆ—ˆง€๋งŒ  œ๋Œ€๋กœ ด•ด๋ฅผ ž˜ ๋ชป–ˆ—ˆ๋Š”๋ฐ, ๊ฐœธ œผ๋กœ ˜–ดˆ˜ค€ด ๋”ธ๋ฆฌ๋Š”๊ฒƒ— ๋Œ€•ด ๊ทธ๋ƒฅ ๋ฌธ œƒ™ฉœผ๋กœ๋งŒ ๋†“€๊ฒƒด ž˜๋ชปธ๊ฒƒ ๊ฐ™๋‹ค. ๋ฌธ œ๋ฅผ ๋ฌธ œ๋กœ ธ‹•˜ง€ •Š๊ณ , ๊นจ๋‹ซŒœผ๋กœ ธ‹•˜๋„๋ก ๋…ธ๋ ฅ•˜๋Š”๊ฒƒ€ žŠ–ด๋ฒ„๋ฆฌ๊ธฐ ‰ฝ๋‹ค. ด๋ฒˆ—๋Š” '๋” ‰ฌšด ž๋ฃŒ๋ฅผ ฐพ๋Š”๋‹ค'๋ผ๋Š” ๋ฐฉ๋ฒ•ด ๋– ˜ฌ๋ผ„œ ๋‹ค–‰ด๋‹ค.
นด„Šธ๋ฅผ ž˜ •ˆ“ฐ๊ธฐ ๋•Œ๋ฌธ— …Œด”„๋กœ๋Š” ž˜ •ˆ๋“ค„๊นŒ๋ด Cool Edit ดšฉ, MP3 ๋กœ ๋…นŒ–ˆ๋‹ค. ›ด๋ธŒ ™”ผ๋„ ๊ฒฐ๊ตญ€ ๋ฐด„ด๊ธฐ—, ๋งˆน˜ …Œด”„ งค๋ผ„œ ด–ด๋ถ™ด๋Š” ๋“ฏ•œ ๋А๋‚Œœผ๋กœ ›ด๋ธŒ ™”ผ Žธง‘•˜๋Š”๊ฒŒ žฌ๋ฏธžˆ—ˆ๋‹ค. ด „— ๋ฅด๋„ƒŠค ด๋Ÿฝ๋•Œ ›ด๋ธŒ ™”ผ— ๋Œ€•ด …ŠคŠธ™”ผ๋กœ ๋ณ€™˜ & ธ๋‹•˜๋Š” ”„๋กœ๊ทธ๋žจด •„š”•œ ดœ ๊ฐ€ ƒ๊ฒผ๋‹ค.  „ฒด ๋…นŒ„ •˜๊ณ  ๋‚œ ๋’ค, Chapter ๋ณ„๋กœ งค๋ผ„œ ™”ผ๋กœ  €žฅ•˜๋ ค๊ณ •˜๋Š”๋ฐ, ›ด๋ธŒ๋ฐด„— ๋Œ€•ด ๊ฒ€ƒ‰„ • ˆ˜๊ฐ€ —†๋‹ค! ๊ฒฐ๊ตญ '๋Œ€๊ฐ• ๋ช‡๋ถ„งœ๋ฆฌ ๋ถ„๋Ÿ‰ผ ๊ฒƒด๋‹ค' ๋˜๋Š” '๋Œ€๊ฐ• ๋‹คŒ•„ฐ๋กœ ๋„˜–ด๊ฐˆ๋•Œ ๋ช‡ˆ •๋„ ๋”œ๋ ˆด๊ฐ€ žˆœผ๋‹ˆ๊นŒ.. †Œ๋ฆฌ ๋น„Šธ™€ ๋น„Šธ ‚ฌด๊ฐ€ ๋Œ€๊ฐ• ด •๋„ ๋˜๋ฉด ๋งž๊ฒ ง€...' ‹œผ๋กœ ฐพ•„„œ ™”ผ๋กœ ชผ๊ฐœ๊ธด –ˆง€๋งŒ. ›ด๋ธŒ ๋ฐด„— ๋Œ€•œ text ๊ฒ€ƒ‰ด ผƒ™”๋œ๋‹ค๋ฉด ด๋Ÿฌ•œ ๊ณ ƒ๋„ •ˆ•˜๊ฒ ง€ •˜๋Š” ƒ๊ฐด ๋“ ๋‹ค.

11›”

29 (๊ธˆ): ˜–ด ˆ๋ฌธ๋‹ต๋ณ€‹œ๊ฐ„ ฐธ„. ๋ฅด๋„ƒŠค ด๋Ÿฝ. Work Queue, To Do List. 7๋ง‰ 7žฅ.

Work Queue

•žœผ๋กœ •˜๊ณ  ‹ถ€ ๋ง‰—ฐ•œ ผ๋“ค— ๋Œ€•ด ฃผš ๋‚˜—ด, ๊ทธ๋ฆฌ๊ณ  ๊ทธค‘— ๋Œ€๊ฐ• ๋‹นžฅ •ด•ผ •  ผ— ๋Œ€•ด„œ ผ๋“ค„ ข€ ๋” „ธ๋ถ„™”•˜—ฌ ๋‚˜๋ˆ„–ด๋ณด•˜๋‹ค. ๋‹นžฅ Šน๋ณ„•œ šจ๊ณผ๋ฅผ ๋…ธ๋ฆฌ๊ณ  •œ๊•„๋‹ˆ๊ณ ,.. ๊ทธ๋ƒฅ •ด๋ณผ๋งŒ•œ ผ๋“ค— ๋Œ€•ด  –ด๋ณด•˜๋‹ค.

 ๊ณ  ๋‚˜๋‹ˆ๊นŒ.. ๋ช‡๋‹ฌ „— '•ด•ผง€ •ด•ผง€' –ˆ—ˆ๋˜ ๊ฒƒ๋“ค, ๋ช‡๋…„ „— '•ด•ผง€ •ด•ผง€' –ˆ๋˜ ๊ฒƒ๋“คด Work Queue —„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ  žˆ๋‹ค. ๋ฉ€๋ฆฌ๋กœ๋Š” Smalltalk ฝ”๋“œ  œ๋Œ€๋กœ ฝ„ „ •ˆ๋’ค SBPP ๊ณต๋ถ€•œ๋‹ค๊ณ  –ˆ—ˆ๋˜ ๊ฒƒด๋ž‘, Functional Language •˜๋‚˜ ต˜€๋‘”๋‹ค๊ณ  –ˆ—ˆ๋˜ ๊ฒƒด๋ž‘, ๊ฐ€๊นŒšด ๊ฒƒœผ๋กœ น˜๋ฉด ๊ธฐกด— ๋งŒ๋“ค–ด๋†“€ †ŒŠค๋“ค ๋ฆฌŒฉ† ๋ง •˜๋ฉด„œ ๋ผด๋ธŒ๋Ÿฌ๋ฆฌ ถ”ถœ•œ๋‹ค๊ณ  –ˆ—ˆ๋˜ ๊ฒƒ๋“ค ๋“๋“.

•„ง€ ˜‘ƒ•  ˆ˜๋Š” žˆ๊ธด •˜๋‹ค. ‹œ๊ฐ„„ —ˆ๋ฝ•ดฃผ‹ ๋‹ค๋ฉด. –ธ œ๊นŒง€ —ˆ๋ฝ•ดฃผ‹คง€๋Š” ๋ชจ๋ฅด๊ฒ ง€๋งŒ.

7๋ง‰ 7žฅ

˜„žฌ : http://www.savie.co.kr/SITE/data/html_dir/2002/10/01/200210010019.asp. ๊ฒฐ˜ผ๋„ •˜๊ณ  „‚ด๋œ ๋”ธ๋„ žˆ๋‹จ๋‹ค. ˜„žฌ˜ ‚ฌ„„ ๋ณด๋‹ˆ ๋‚จ๊ถ›”จ ๋‹ฎ•„๊ฐ€๋Š”๊ตฐ. M&A  „๋ฌธ šŒ‚ฌ ๋Œ€‘œ๋ผ๊ณ  •œ๋‹ค.

๊ฝค ˜ค๋ž˜๋˜๊ธด –ˆง€๋งŒ (๋ฒŒจ ๊ทธ๊ฒŒ 9๋…„ „ ด•ผ๊ธฐ๋ž€๋‹ค. 93๋…„ ด๋ผ๋‹ˆ๊นŒ) ™ •š˜ …„ ๋‹ค‹œ ฝ—ˆ๋‹ค. ๊ทธ๋‹น‹œ—๋Š” '•„. ๊ทธ๋ƒฅ ๊ณต๋ถ€ ž˜•˜๋Š” ‚ฌ๋žŒ˜ —ด‹ฌžˆ ๊ณต๋ถ€–ˆ๋‹ค๋Š” ด•ผ๊ธฐ๊ตฌ๋‚˜' ๋กœ ๊ทธ๋ƒฅ •œ๋ฒˆ ฝ๊ณ  ๋๋‚ฌ๋˜ ๊ฒƒœผ๋กœ ๊ธฐ–ต•œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๊ฐ„๋งŒ— ƒ๊ฐด ๋‚˜„œ …„ ๋‹ค‹œ ๊บผ๋‚ด ๋ฒ„Šค•ˆ—„œ ฝ—ˆ—ˆ๋Š”๋ฐ, ๊ทธ˜ ‘œ˜„๋ ฅ„ ๋ณด๋ฉด„œ ๊ทธ๊ฐ€ –ผ๋งˆ๋‚˜ ๋งŽ€ ‹œ๋“ค„ ฝ—ˆ๋Š”ง€, –ผ๋งˆ๋‚˜ ๋งŽ€ …๋“ค„ ฝ—ˆ๋Š”ง€ ๋ณดธ๋‹ค. ค‘๊ฐ„ค‘๊ฐ„ ž‹ ˜ ˜„žฌ ‹ฌ •„ ‘œ˜„•˜๋ฉด„œ ธšฉ•˜๋Š” ‹œ๋“ค, ๋ช…–ธ ๊ตฌ ˆ๋“ค—  „๋ถ€ ๊ทธ ธšฉ•œ ‚ฌ๋žŒ๋“ค˜ ด๋ฆ„๋“ค๊ณผ ถœฒ˜๊ฐ€ ๋‚˜™€žˆ๋Š” ๊ฒƒ„ ๋ณด๋ฉด„œ, •œŽธœผ๋กœ๋Š” –ผ๋งˆ๋‚˜ •™๊ต—„œ ฒ  €•˜๊ฒŒ ๊ฐ€๋ฅดน˜๋Š”ง€, ๊ทธ๊ฐ€ –ผ๋งˆ๋‚˜ ฒ  €•˜๊ฒŒ ๊ณต๋ถ€–ˆ๋Š”ง€๊ฐ€ ๋ณดด๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๋ช‡๋…„๋งŒ— ฝ—ˆ๋˜ ๊ทธ˜ …ด '๋งˆนจ‘œ —†๋Š” …ด๋‹ค' ๋ง๊ณ ๋„ •  ด•ผ๊ธฐ๊ฐ๋ฆฌ๊ฐ€ ๋งŽ๋‹ค๋Š”๊ฒŒ ๋‹ค–‰Šค๋Ÿฝ๊ฒŒ ๋А๊ปดกŒ๋‹ค. (…˜ ž…žฅ—„œ๋‚˜ ๋‚˜˜ ž…žฅ—„œ๋‚˜)

๋ฅด๋„ƒŠค ด๋Ÿฝ

๊ทธ ค‘ กฐ‹ฌŠค๋Ÿฝ๊ฒŒ  ‘๊ทผ•˜๋Š” ๊ฒƒด '๊ฐ€๋กœˆ๋Ÿฌ ƒ๊ฐ•˜๊ธฐ' ด๋‹ค. ด๋Š” •„ง 1002๊ฐ€ Good Reader / Good Listener ๊ฐ€ •„๋‹ˆ—ฌ„œด๊ธฐ๋„ •œ๋ฐ, …„ •œ๋ฒˆ ฝ๊ณ  ๊ทธ ๋‚ดšฉ— ๋Œ€•ด  œ๋Œ€๋กœ ด•ด๋ฅผ •˜ˆ ๋ชป•œ๋‹ค. ๊ทธ๋Ÿฌ•œ ƒ™ฉ—„œ ๋‚˜˜ ฃผ๊ด€ด ๋จผ € ๊ฐœž…๋˜–ด๋ฒ„๋ฆฌ๋ฉด, ๊ทธ …— ๋Œ€•ด –ป„ ˆ˜ žˆ๋Š” ๊ฒƒด ๊ทธ๋งŒผ ™œ๊ณก๋˜–ด๋ฒ„๋ฆฐ๋‹ค๊ณ  ƒ๊ฐ•ด๋ฒ„๋ฆฐ๋‹ค. NoSmok:๊ทธ๋ฆผ๋“ฃ๊ธฐ˜ œ šฉ•จ„ •Œ๊ธด •˜ง€๋งŒ.

๊ธ€Œ”. •˜ง€๋งŒ, '๊ฐ€๋กœง€๋ฅด๊ธฐ'๋Š” ๊ต‰žฅžˆ ค‘š”•œ ‚ฌ๊ณ  ๋ฐฉ‹ด๋ผ ƒ๊ฐ•œ๋‹ค. œ —ฐ•œ ‚ฌ๊ณ ๊ฐ€ ๊ฐ€๋Šฅ•˜๊ณ , ๋˜ ๋œป•˜ง€ •Š€ •„ด๋””–ด๋ฅผ –ป„ ˆ˜ žˆ„๊ฒƒด๋‹ˆ๊นŒ. (ด „˜ Metaphor ๋ฅผ ƒ๊ฐ•˜๋ฉด ๋”๋”š.)

•”Šผ, ๋‘๊ฐ€ง€๊ฐ€ ๊ผญ ƒ๋Œ€๋˜๋Š” ผ€ •„๋‹ˆ๋‹ˆ๊นŒ. •”Šผ. ๊ทธ  „— ๊ตญ–ด/˜–ด ๋…•ด๋Šฅ๋ ฅด ๋จผ €๊ตฐ.;;

28 (๋ชฉ): •˜๋“œ †ŒŠค & ๋ฌธ„œ  •๋ฆฌ. ProjectPrometheus ๋ฒ„๊ทธ ˆ˜ •

๊ธฐกด— ž‘„•œ †ŒŠค๋“ค€ ๊ณจนซ๊ฐ๋ฆฌ๋‹ค. ด๋ฅผ ๋‚˜ค‘—๋„ ดšฉ•˜ž๋‹ˆ ๋‚ก€ †ŒŠคผ๊ฒƒด๊ณ , ๊ทธ๋ ‡๋‹ค๊ณ  ๋ฒ„๋ฆฌ๊ธฐ—” •ด๋‹น ๋ถ„•ผ ๊ณต๋ถ€•˜๊ธฐ— ๊ฐ€žฅ ‰ฌšด †ŒŠคด๊ณ .. (๋ฌธ„œ๋“ค๋„ ๋งˆฐฌ๊ฐ€ง€. †Œœ„ Œป๊ฐœผ๋กœ ๋ถˆ๋ฆฌ๋Š”.)
ด „— 1002/…ƒ •๋ฆฌ ๊ฐ€ ƒ๊ฐด ๋‚˜„œ, •˜๋“œ •ˆ— žˆ๋Š” †ŒŠค, ๋ฌธ„œ๋“ค— ๋Œ€•ด ผข…˜ LRU •Œ๊ณ ๋ฆฌฆ˜„ ƒ๊ฐ•ด๋ณด๊ธฐ๋กœ –ˆ๋‹ค. ฆ‰, Recent Readed ๋ผ๋Š” ๋””๋ ‰† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ , ตœ๊ทผ— •œ๋ฒˆด๋ผ๋„ด๋“œ๋ฆฐ ฝ”๋“œ, ๋ฌธ„œ๋“ค€ Recent Readed ชฝ— ๋ณต‚ฌ๋ฅผ •˜๋Š” ๊ฒƒด๋‹ค. ๊ทธ๋ฆฌ๊ณ , ฝ—ˆ๋˜ †ŒŠค— ๋Œ€•ด„œ๋Š” ๋ผด๋ธŒ๋Ÿฌ๋ฆฌ™”•˜๋Š” ๊ฒƒด๋‹ค. ด๋ ‡๊ฒŒ •ด„œ •œ 6๊ฐœ›”ฏค ง€๋‚œ๋’ค,  •๋ฆฌ•ด๋ฒ„๋ฆฌ๋ฉด ๋˜๊ฒ ง€ •˜๋Š” ƒ๊ฐ.

ง€๊ธˆ ด „ ๋…ธ๋ž˜๋ฐฉ ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๋•Œ ดšฉ–ˆ—ˆ๋˜ Audio Compression Manager ๋ถ€๋ถ„ ดšฉ•˜๋ผ๊ณ  •˜๋ฉด •„๋งˆ ๋‹ค‹œ –ด๋–ป๊ฒŒ API๋ฅผ ดšฉ•˜๋Š”ง€ šŒƒ•˜๋Š”๋ฐ 2ผฏค ๊ธ๋ฆด๊ฒƒด๋‹ค. DX Media SDK ๋ถ€๋ถ„„ ๋‹ค‹œ ดšฉ•˜๋ผ๊ณ  •˜๋ฉด •„๋งˆ •˜๋ฃจ •๋„ Spike ๊ฐ€ ๋‹ค‹œ •„𔕠 ๊ฒƒด๋‹ค. ฆ‰, ด „— ๋งŒ๋“ค–ด๋†“€ †ŒŠค๊ฐ€ žˆ๋‹ค๊ณ  ๊ทธ ง€‹ด ˜„žฌ ๋‚˜˜ ผ๋ถ€๋ผ๊ณ  •˜๊ธฐ—” ๋ฌธ œ๊ฐ€ žˆ๋‹ค.

๊ธฐกด˜ ฝ”๋“œ๋“คด๋ž€ •œŽธœผ๋กœ๋Š” ‚ฌ๋žŒ„ ๊ฒŒœผ๋ฅด๊ฒŒ •˜๋Š” ›๋™๋ ฅธ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ƒ๊ฐด ๋“ ๋‹ค. –ด„”ˆ ž๋งŒ‹ฌ„ ๋งŒ๋“ค–ด๋‚ผ๋Ÿฐง€๋„ ๋ชจ๋ฅธ๋‹ค. ๊ทธ๋ž˜๋„ —ฌ „žˆ ง€šฐง€ ๋ชป•˜๋Š”๊ด.. ๊ทธ๋•Œ ด๋ฆฌ €๋ฆฌ  •‹ —†ด ž๋ฃŒ ๋ชจœผ๋ฉฐ ‚ฝˆ•˜๊ณ  ขŒ ˆ–ˆ„๋•Œ๊ฐ€ ƒ๊ฐ๋‚˜„œผ๊นŒ.

•”Šผ. –ธ  ๊ฐ€ ๋‹ค‹œ ๋‚ด ผ๋ถ€๊ฐ€ ๋˜๊ธฐ๋ฅผ.

----
Prometheus ฝ”๋“œ๋ฅผ ๋‹ค‹œ checkout •˜๊ณ  UnitTest ๊นจ„ ๋ถ€๋ถ„„ ๋ณด๋ฉด„œ ๊ธฐกด˜ TDD „–‰ ๋ณดญด –ผ๋งˆ๋‚˜ ปธ๋Š”ง€๊ฐ€ ๋ณด˜€๋‹ค. (๋‹ค‹œ Green Bar ๋ฅผ ๋ณดด๊ฒŒ๋” •˜๊ธฐ— „–‰•ด•ผ • ผด ๋งŽ•˜œผ๋‹ˆ๊นŒ. Extractor Remote Test ๊ฐ€ no matched ( •๊ทœ‘œ˜„‹—„œ ๋งคนญ ‹คŒจ)๋กœ ๊นจกŒ„๋•Œ ƒ๊ฐ•ด•ผ •  ผด ๋‘๊ฐ€ง€ด๋‹ค. •˜๋‚˜๋Š” HTML ด  œ๋Œ€๋กœ ๋ฐ›•„กŒ๋Š”๊ฐ€(๋˜๋Š” HTML ด ๋„„œ๊ด€—„œ˜ —๋Ÿฌฝ”๋“œ๋ฅผ ๋ฐ˜™˜•˜๋Š”๊ฐ€), •˜๋‚˜๋Š” extractor ๊ฐ€ ๊ทธ ๊ตฌ‹ค„  œ๋Œ€๋กœ •˜๋Š”๊ฐ€. ๊ทธ๋Ÿฐ๋ฐ, …ŒŠคŠธ ฝ”๋“œ๋ฅผ ๋ณด๋ฉด  € ๋‘๊ฐ€ง€๊ฐ€ ๋ฌถ—ฌžˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ   •๊ทœ‘œ˜„‹„ ดšฉ•œ extract ๊ฐ€ ๊ณผ—ฐ 'The Simplest Thing' ผ๊นŒ๋ผ๋Š” ƒ๊ฐ„ •˜๊ฒŒ ๋˜—ˆ๋‹ค. ˜ฌ๋ฐ”๋ฅธ  •๊ทœ‘œ˜„‹„ ฐพ•„๋‚ด•ผ •˜๊ณ , ๊ทธ๋Ÿฌ๋‹ค๋ณด๋ฉด ๋ฐด„ฝ”๋“œ™€  •๊ทœ‘œ˜„‹ด ผข…˜ Duplication „ ๋งŒ๋“ค–ด๋‚ธ๋‹ค. (ŒŒ‹•˜๋ ค๋Š” ๋ฌธ„œ˜ ผ๋ถ€๊ฐ€  •๊ทœ‘œ˜„‹— ๋“ค–ด๊ฐ€๋ฏ€๋กœ) ๊ทธ๋ฆฌ๊ณ  RE ๋Š” RE ๋ฌธ๋ฒ•„ •„๋Š” ‚ฌ๋žŒด๋ผ๋ฉด ๋ชจ๋ฅด๊ฒ ง€๋งŒ, ๊ทธ๋ ‡ง€ •Š๊ณ  ๋ง‰—ฐ•œ ๊ฒฝšฐ— TDD •  ๊ฒฝšฐ Try and Error ‹œผ๋กœ  ‘๊ทผ•ด๋ฒ„๋ฆด ˆ˜ žˆ๋‹ค. (๋‚˜˜ ๊ฒฝšฐ๋Š” ด๊ „ œผ๋กœ •˜๊ธฐ œ„•ด ‘œ๋ณธด ๋˜๋Š” ๋ฐด„ฐ๋ฅผ ž‘๊ฒŒ ‹œž‘•œ๋‹ค.) extract ˜ 'Simplest Thing' ๋Š” find & substring ผ๊ฒƒด๋ž€ ƒ๊ฐ„ •ด๋ณธ๋‹ค.

๊ทธ๋ฆฌ๊ณ , ๋„„œ๊ด€ UI ๊ฐ€ ๋ฐ”๋€Œ—ˆ„ ๊ฒฝšฐ— ๋Œ€•œ ๋Œ€ฒ˜๋ฐฉ•ˆ— ๋Œ€•ด„œ ด๋ฆฌ €๋ฆฌ •„ด๋””–ด๋ฅผ ๊ถ๋ฆฌ•ด ๋ณด•˜—ˆ๋Š”๋ฐ,  •๊ทœ‘œ˜„‹๋ถ€๋ถ„„ ๋”ฐ๋กœ ๋–ผ–ด๋‚ด–ด ™ธ๋ถ€™”ผ๋กœ ๋‘๋˜ง€ (ด๋ ‡๊ฒŒ •˜๋ฉด ปดŒŒผ•˜ง€ •Š•„๋„  •๊ทœ‘œ˜„‹„ ˆ˜ ••˜๋ฉด ๋œ๋‹ค) ๋˜๋Š” HTML „  „๋ถ€ Parsing •˜—ฌ DOM Šธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋’ค •ด๋‹น ๋…ธ๋“œ˜ Position ๋“ค— ๋Œ€•ด ๋”ฐ๋กœ ™ธ๋ถ€™”ผ๋กœ ๋‘๋˜ง€ (ด๋Š” ถ”›„ ผข…˜ extractor tool ๋กœ ๋นผ๋‚ผ ˆ˜ žˆ„ ๊ฒƒด๋ฏ€๋กœ) •˜๋Š” •„ด๋””–ด๊ฐ€ ๋– ˜ฌ๋ž๋‹ค.

----
To Do List ˜ ค‘š”„

Extract ๋ถ€๋ถ„— ๋Œ€•ด ๋„ˆ๋ฌด …ŒŠคŠธ˜ ๋‹จœ„๊ฐ€ ฌ๋‹ค๊ณ  Œ๋‹จ, ด ๋ถ€๋ถ„„ ฒ˜Œ๋ถ€„ฐ ๋‹ค‹œ TDD๋กœ ž‘„•˜˜€๋‹ค. Bottom Up Šคƒ€ผ๋กœ ž‘€ ๋‹จœ„๋ถ€„ฐจ๊ทผฐจ๊ทผ „–‰•˜˜€๋‹ค. ๊ทธ๋Ÿฐ๋ฐ To Do List ๋ฅผ ž‘„„ •ˆ•˜๋‹ˆ๊นŒ, ค‘๊ฐ„— ž ๊น ง‘ค‘๋„๊ฐ€ ’€–ดกŒ„๋•Œ ๋˜‘๊ฐ™€ ผ„ •˜๋Š” ๋‹ค๋ฅธ ๋ฉ”†Œ๋“œ๋“ค„ ๋งŒ๋“ค–ด๋ฒ„๋ฆฐ ๊ฒƒด๋‹ค.

Top Down œผ๋กœ  ‘๊ทผ•˜—ฌ •ด๋‹น ๋ฉ”†Œ๋“œ๊ฐ€ •„š”•ดง€๋Š” ผ„ ๋นจ๋ฆฌ ๋งŒ๋“ค–ด๋‚ด๊ฐ๋‚˜, To Do List ๋ฅผ ž‘„, Bottom Up œผ๋กœ  ‘๊ทผ•œ๋‹ค •˜๋”๋ผ๋„ ๊ถ๊ทน œผ๋กœ ๊ตฌ˜„•˜๋ ค๋Š” ๋ชฉ‘œง€–ฅ ด ๋ช…™••˜๋ฉด ๊ธธ„ —ค๋งฌ ผด —†๋‹ค๋Š” ๊ฒƒ„ ๋‹ค‹œ๊ธˆ žฌฐจ ™•ธ•˜๊ฒŒ ๋˜—ˆ๋‹ค.

4 (›”): ˜–ด ๊ณต๋ถ€, XP Installed •œ„œ ฝ๊ธฐ

š”ƒˆ ˜–ด๊ณต๋ถ€๋ฅผ –ด๋–ป๊ฒŒ • ๊นŒ ๊ถ๋ฆฌค‘, ๋Œ€๊ฐ• ๋‹คŒ˜ ๊ฐ„๋‹จ•œ ”„๋กœ„Šค๋ฅผ ๋งŒ๋“ค๊ณ  „–‰•ด๋ณด๊ธฐค‘.

  • technetcast ค‘ ๊ด€‹ฌžˆ๋Š”๊ฒƒ„ •Œ•„๋“ฃ๊ด ๋ชป•Œ•„๋“ฃ๊•œ 30๋ถ„„ ๋“ฃ๊ณ 
  • 504 absolutely essential words ๋ฅผ ๊ต‰žฅžˆ ๋А๋ฆฐ†๋„๋กœ ดšฉ•˜๊ณ  (š” 4ผ๊ฐ„, •˜๋ฃจ ‹œ๊ฐ„๋‹น ๋‹จ–ด 4๊ฐœ”ฉ ๋‚˜๊ฐ„๋‹ค. ๊ฐ๊ธฐ žˆ๋Š” ๋‹จ–ด ๋œป ๋ณด๊ณ , ๊ตฌ๋ฌธ„ ฝ€๋’ค, •œ๋ฒˆ Šฌฉ ๋ณด๊ณ  ๊ตฌ๋ฌธ ๋‚ดšฉ„ ๋– ˜ฌ๋ฆฌ๋ฉด„œ ›๋ฌธ„ žฌ˜„•ด๋ณด๊ธฐ‹œผ๋กœ „–‰•˜๋‹ค๋ณด๋‹ˆ ๊ฝค ๋А๋ฆฌ๋‹ค. ๋จธ๋ฆฟ†—„œ ˜–ด๋กœ ข€ ๋‹ค๋ฅด๊ฒŒ ‘œ˜„๋˜–ด  €žฅ๋˜๊ธฐ๋„ •œ๋‹ค.)
  • ›„œ … ฝ๊ธฐ.
ผ๋‹จ š” 3ผ๊ฐ„ „–‰ & ๊ด€ฐฐค‘. ผ๋‹จ ๋ชธœผ๋กœ ๋А๊ปด๋ณธ ๊ด€ฐฐ— ˜•˜๋ฉด,
  • ˜–ด ๋“ฃ๊ธฐ ด›„ ˜–ด ๋‹จ–ด —ฐŠต & ๊ตฌ๋ฌธ ๊ธฐผ๋•Œ๋Š” „–‰ด ๋งค๋„๋Ÿฝ๋‹ค. …„ ฝ๊ธฐ  „—, •Œ•„๋“ฃ„ ๋ชป•˜๋”๋ผ๋„ technetcast „ ๋“ฃ๊ณ  ๋‚˜๋ฉด, …„ ฝ„ ๋•Œ ๋ฆฌ๋“ฌด ž˜ žกžŒ๋‹ค.
  • ด „˜ ๊ณ ๋“•™๊ต‹œผ๋กœ • ๋• ๊˜ •˜๋ฃจ ๋‚˜๊ฐ€๋Š” ๋‹จ–ด๊ฐ€ 20๊ฐœ๊ฐ€ ๋„˜–ด„œ.; •˜ง€๋งŒ, ง€๊ธˆ 4๊ฐœ ๋‚˜๊ฐˆ๋•Œ—” ™•‹คžˆ žฌ๋ฏธ๋„ žˆ๊ณ , •ด๋‹น ƒ™ฉ— ๋Œ€•ด ฝฉ๊ธ€๋ฆฌ‰ฌ๋ผ๋งˆ ๋จธ๋ฆฟ†— ˜–ด๋ฌธžฅด ๋งŒ๋“ค–ด„๋‹ค. ด— ๋Œ€•ด„  3ผ •๋„ ๋” ๊ด€ฐฐ•„š”. •”Šผ žฅ /๋‹จ € ด•ด๋„ : †๋„. ผ๋‹จ€ ๋‚œ  „ž๋ฅผ ƒ•˜๋ ค •œ๋‹ค. –ดฐจ”ผ ž˜ ๋ชป•˜๋Š” ๋…€„ด๋‹ˆ๊นŒ ๋ญ˜ •˜๋“  šจœจ ๋–จ–ดง€๋Š”๊ด ๋‹น—ฐ•˜๋‹ค ƒ๊ฐ•˜๊ธฐ ๋•Œ๋ฌธ—.
  • technetcast ๋ฅผ ™œ —ฌง€๊ป  œ๋Œ€๋กœ •ˆดšฉ–ˆ„๊นŒ. Ron •„ €”จ๋ž‘ Bob •„ €”จ, Martin Fowler ๋ผ๋Š” ‚ฌ๋žŒ˜ ๋ชฉ†Œ๋ฆฌ๋ฅผ ๋“ฃ๊ฒŒ ๋˜—ˆ๊ตฐ. ๋‚ดšฉ€ ๋“ฃ๊ณ  ๋‚œ ๋’ค—”  œ๋Œ€๋กœ ๊ธฐ–ต๋‚˜„ •Šง€๋งŒ. (˜–ด๋กœ ๋“ค—ˆ๋Š”๋ฐ ๊ธฐ–ต„ žฌƒ•ด„œ š”•ฝ•˜๋ ค๋‹ˆ, ˜–ด š”•ฝ„ •ด๋ณธ ด —†๋Š” ๊ด€๊ณ„๋กœ ๋จธ๋ฆฟ†—„  •œ๊ธ€๋กœ˜ ๋ฒˆ—ญž‘—…ด •„š”•˜๋‹ค. ˜–ด๋กœ ‚ฌ๊ณ ๊ฐ€ ๊ฐ€๋Šฅ•˜๋‹ค๋ฉด, •„๋งˆ ๋จธ๋ฆฟ†—„  ˜–ด๋กœ š”•ฝ• ๊ฐ๊ณ ..) ผ๋‹จ ๋งˆŒ„ ๋น„šฐ๊ณ  ผฃผผ •๋„ ๋“ค–ด๋ณผ๊นŒ.
๊ฐœ„ •ˆ ๊ถ๋ฆฌ
  • ˜–ด ๋“ฃ๊ธฐ— ๋Œ€•œ ๋ฐ›•„“ฐ๊ธฐ žฒด๋ฅผ ๋จผ € —ฐŠต•ด๋ณด๋Š”๊ฒƒด ˆœ„œผ ๊ฒƒ ๊ฐ™๋‹ค. technetcast ค‘ 10๋ถ„งœ๋ฆฌ งง€ ธ„ฐ๋ทฐ— ๋Œ€•ด ๋ฐ›•„“ฐ๊ธฐ —ฐŠต„ •ด๋ณด๋Š”๊–ด๋–จ๊นŒ. (๋‹จ, ๋งž๋Š”ง€๋ฅผ ™•ธ•  Šคฌ๋ฆฝŠธ๊ฐ€ —†๋Š”๊ฒŒ ๋‹จ ด๊ตฐ)
    • ˜–ด๋“ฃ๊ธฐ —ฐŠต€ ด „— นœ๊ตฌ๊ฐ€ ˜–ด๊ณต๋ถ€ ๋„™€„๋•Œ –ˆ—ˆ๋˜, ๋…ธ๋ž˜๊ฐ€‚ฌ ๋ฐ›•„ ๊ธฐ๋ฅผ •˜๋Š”๊ฒŒ ‹€๋ ธ๋Š”ง€ ™•ธ•˜๊ธฐ๋„ Žธ•˜๊ณ  žฌ๋ฏธžˆ„ ๊ฒƒ ๊ฐ™๋‹ค.
  • ๋‚˜๋จธง€๋“ค€ ผ๋‹จ ๊ณ„† ‹ค—˜ & ๊ด€ฐฐ.
XP Installed ๋ฅผ •œ„œ๋กœ ๋‹ค‹œ  •๋…„ –ˆ๋‹ค. ˜–ด๋กœ ฝ—ˆ„๋•Œ จ๋จนœผ๋ ค๋Š” ๋ถ€๋ถ„— ๋Œ€•œ ๋Œ€๊ฐ•˜ ๋‚ดšฉ ŒŒ•…œ„ฃผ๋กœ ฝ–ด„œ ๊ทธ๋Ÿฐง€, ด   ถ” • ๋ถ€๋ถ„ ๊ฐ™€ ๊ฒƒ๋„ˆˆ— ๋“ค–ด˜ค๋Š”. ด๋Ÿฐ.

•”Šผ, ๊ณ„†. „ต€ ๋จธ๋ฆฌ๋ฅผ œ„•ด. (๊ฐˆˆ˜๋ก ผง€ ˜•‹ด 3FS — •ˆ๋งž๋Š”๊ตฐ)

10›”

31 (๋ชฉ): Seminar:YoriJori Pair

VPP ๋กœ „–‰. •œ๋™•ˆ †๋†“๊ณ  žˆ–ด„œ ๊ฐœธ œผ๋กœ •ฝ๊ฐ„ •ด •ž„ฐ๋Š”๋ฐ, ‘ฃผ”จ๊ฐ€ Pair ๋ฅผ ž˜•ดฃผ—ˆ๋‹ค. ”„๋กœ Šธ ฐธ—ฌ๋„๊ฐ€ ๊ฐ€žฅ ๋†’•„„œ ๊ทธ๋Ÿฐง€ ๋ชจ๋ฅด๊ฒ ง€๋งŒ, •  ผ— ๋Œ€•ด ฆ‰๊ฐ œผ๋กœ •ด๊ฒฐ…„ ƒ๊ฐ•ด๋‚ด๋Š” ๋ชจŠตด  •๋ง ๋Œ€๋‹จ–ˆ๋‹ค. 2‹œ๊ฐ„๋™•ˆ˜ ž‘—…„ ‹œ๊ฐ„๋ฅธง€ ๋ชจ๋ฅธ„ ฆ๊ฒ๊ฒŒ „–‰–ˆ๋‹ค.

Editplus ๋กœ VPP „–‰•˜๋Š” •œชฝฐฝ— to do list ๋ฅผ  —ˆ๋Š”๋ฐ, VPP ธ ๊ฒฝšฐ •œ‚ฌ๋žŒด todolist ๋ฅผ  ๋Š” ๋™•ˆ, ๋“œ๋ผด๋ฒ„๊ฐ€ ฝ”๋“œ๋ฅผ žกง€ ๋ชป•œ๋‹ค๋Š”๊ฒŒ •œŽธœผ๋ก  ๋‹จ ดš”, •œŽธœผ๋ก  žฅ  ๊ฐ™๊ธฐ๋„ •˜๋‹ค. ผ๋‹จ€ ๊ถ๋ฆฌ.

Šน • Œ€›๊ณผ˜ † ๋ก ด •„š”•œ Task ™ธ—” ๋ณ„๋‹ค๋ฅธ –ด๋ ค›€ —†ด ž˜ „–‰๋˜—ˆ๋‹ค. Virtual Pair Programming —„œ๋„ VIM ๋‹จถ•‚ค๋“ค„ ๋ฐฐ› ๋‹ค.; ctrl + v, shift + v ๋ชฐ๋ผ„œ ๋งค๋ฒˆ • ๋•Œ Help ๋’คกŒ๋‹ค ๊นŒ๋จน๊ณ  ๊ทธ๋žฌ๋˜๊ฒƒ ๊ฐ™€๋ฐ,  œ๋Œ€๋กœ ตž๋“ฏ •˜๋‹ค.

----
Conceptual Integrity — ๋Œ€•ด ฐพ•„๋ณด๋˜ค‘ ๊ผฌ๋ฆฌ— ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๊ณ  ๋…ผ๋ฌธ„ ๋ณด๋‹ค๊ฐ€ ˜™ธ˜ ๊ธ€„ ๋ณด๊ฒŒ ๋˜—ˆ๋‹ค.
http://www.utdallas.edu/~chung/patterns/conceptual_integrity.doc - Design Patterns as a Path to Conceptual Integrity ๋ผ๋Š” ๊ธ€๊ณผ ๊ทธ ๊ธ€๊ณผ ๊ด€๋ จ, Design Patterns As Litmus Paper To Test The Strength Of Object Oriented Methods ๋ผ๋Š” ๊ธ€„ ๋ณด๊ฒŒ ๋˜—ˆ๋Š”๋ฐ, http://www.econ.kuleuven.ac.be/tew/academic/infosys/Members/Snoeck/litmus2.ps ด๋‹ค. ๋””žธŒจ„˜ ƒ„„๊ณผ ๊ด€๋ จ, RDD ™€ EDD ๊ฐ€ –ธ๊ธ‰ด ๋˜๋Š” ๋“ฏ •˜๋‹ค.

29 (™”): ™”ดŠธ—ค๋“œ๊ณผ •ฒ •™˜ด•ด ฝ๊ธฐ ๊ด€๋ จ.

๊ณต๋ถ€๋ผ๋Š” ๊ฒƒ— ๋Œ€•ด ๋จธ๋ฆฟ† ƒ๊ฐ„  •๋ฆฌ • ๋• ๊ผญ †— žกžˆ๋Š” …ด ด„˜๊ธฐ๋Šฅ ๊ณผ ™”ดŠธ—ค๋“œ๊ณผ •ฒ •™˜ด•ด ด๋‹ค. (๊ฐ™€ …๋งŒ žกœผ๋‹ˆ๊นŒ œ„—˜•œ๊ง€๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค.) š” ‚ฌด ๋ญ”๊ฐ€ ๋จธ๋ฆฟ†ด —ˆ „•˜๋‹ค. ๋ญ”๊ฐ€๊ฐ€. •จ •ด žˆ๋Š” ๋“ฏ•œ.

21, 22, 23 (›”, ™”, ˆ˜): Freechal Album Grabber ž‘„ค‘.

•„๋Š” ‚ฌ๋žŒœผ๋กœ๋ถ€„ฐ ๋ถ€ƒ„ ๋ฐ›•„„œ ž‘„ค‘. ด๋ฏธ ”„๋ฆฌฒผ ๊ฒŒ‹œŒ ๋ฐ—… ”„๋กœ๊ทธ๋žจ€  œ๋กœ๋ณด๋“œ๋‚˜ ดง€๋ณด๋“œ, ๋“œ๋ฆผœ„ˆ ๋“—„œ ๋งŒ๋“ค–ดกŒ๋Š”๋ฐ, •จ๋ฒ”/ž๋ฃŒ‹ค ถ”ถœ€ •„ง ด๋ฃจ–ดง€ง€ •Š•˜๋‚˜ ๋ณด๋‹ค. ๋ญ, กฐ๊ธˆžˆœผ๋ฉด ๋‚˜˜ฌ ๊ฒƒ๋„ ๊ฐ™€๋ฐ.. ๊ทธ๋ƒฅ ๊ฐœธ œผ๋กœ —ฐŠต๊ฒธ ๋งŒ๋“ค–ด๋ณด๊ฒŒ ๋˜—ˆ๋‹ค.

Python ดšฉ.  ๋‹นžˆ TDD ™€ ค‘๊ฐ„ UP Front๋ฅผ „ž—ˆ๋‹ค. (CRC™€ UML„ ดšฉ) ๊˜  •๊ทœ‘œ˜„‹ด๋‚˜ find ๋“„ ดšฉ•œ ŠคŠธ๋ง ŒŒ‹ ๋…ธ๊ฐ€๋‹ค๊ธ‰ดง€๋งŒ, •˜๋ฃจ ž‘—…น˜๊ณค ƒ๊ฐ๋ณด๋‹ค ๋งŽด ๋‚˜๊ฐ„ ๊ฒƒ ๊ฐ™๋‹ค.

1ฐจ œผ๋กœ CRC ๋ฅผ ดšฉ•˜—ฌ ๊ฐ„๋‹จ•œ Conceptual Model „ ๋งŒ๋“ ๋’ค, TDD ๋กœ ๊ฐœ๊ฐœ ๋ชจ๋“ˆ„ ž‘—…–ˆ๋‹ค.

ค‘๊ฐ„ ๊ฐœ๊ฐœ˜ ๋ชจ๋“ˆ„ †ต•ฉ• ๋•Œฏค— ด „— ƒ๊ฐ•ด๋‘” ๋””žธด  œ๋Œ€๋กœ ๊ธฐ–ตด ๋‚˜ง€ •Š•˜๋‹ค.; ด๋•Œ Sequence Diagram „ ๊ทธ๋ฆฌ๋ฉด„œ ”„๋กœ๊ทธ๋žจ˜ ๋ฆ„„ ฒœฒœžˆ ƒ๊ฐ–ˆ๋‹ค. –ด๋А •๋„ „–‰๋œ ๋ฐ”๊ฐ€ žˆ๊ณ , ๊ฐœ๋ฐœ•˜๋ฉด„œ ๊ฐœ๊ฐœ๋ณ„ ๋ชจ๋“ˆ— ๋Œ€•œ ธ„Ž˜ดŠค๋“ค„  •™•žˆ •Œ๊ณ  žˆ—ˆ๊ธฐ ๋•Œ๋ฌธ—, Conceptual Model ๋ณด๋‹ค ๋” ๊ตฌฒด ธ Upfront ๋กœ ๊ฐ€๋„ ๋ณ„ ๋ฌด๋ฆฌ๊ฐ€ —†๋‹ค๊ณ  Œ๋‹จ–ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ชจ๋“ˆ„ ผข…˜ Spike Solution ฒ˜๋Ÿผ  ‘๊ทผ•˜๊ณ , ๋‹ค‹œ TDD๋ฅผ ๋“ค–ด๊ฐ€๊ณ  •˜๋‹ˆ๊นŒ ค‘๊ฐ„ ๋ง„ž„ —†ด ๊˜ ผ‚ฌฒœ๋ฆฌ๋กœ ž‘—…•˜๊ฒŒ ๋˜—ˆ๋‹ค.

  • TDD˜ …ŒŠคŠธ๋“ค€ ๋งˆน˜ ๋ชจ๋ž˜ฃผ๋จธ๋‹ˆ ๊ฐ™๋‹ค. ๋ฌตง•œ ๋А๋‚Œ„ ฃผ๋ฉด„œ ”„๋กœ๊ทธ๋ž˜๋ฐ •œ ๊ฒƒ๋“ค„ ด•ด•˜๊ฒŒ •˜๋‹ˆ๊นŒ. ๊ทธ๋ฆฌ๊ณ , ๊ฐˆˆ˜๋ก ๋А๋ผ๋Š” ๊ฒƒดง€๋งŒ, …ŒŠคŠธ —†๋Š” ๋ฆฌŒฉ† ๋ง€  •๋ง ƒƒ•˜๊ธฐ –ด๋ ต๋‹ค. š”ƒˆ๋Š” ค‘๊ฐ„ค‘๊ฐ„ …ŒŠคŠธ๋ฅผ ž‘„•˜ง€ •Š๋Š” ฝ”๋“œ๋“ค๋„ ดšฉ•˜๊ณ  žˆ๋‹ค. กฐ‹ฌŠค๋Ÿฝ๊ธด •˜ง€๋งŒ, ๋ชจ๋“ˆ˜ ๋ณตžก๋„,ค‘š”๋„— ๋”ฐ๋ผ  ๋‹นžˆ ๊ณจ๋ผ“ธ ˆ˜ žˆ„ ๊ฒƒ ๊ฐ™๋‹ค.
  • š”ƒˆ๋“ค–ด ๋‹ค‹œ๊ธˆ ๋А๋ผง€๋งŒ, vi ๋กœ ŒŒดฌ ”„๋กœ๊ทธ๋ž˜๋ฐ •˜๋Š”๊ฒŒ ๊ฐ€žฅ Žธ•œ๊ฒƒ ๊ฐ™๋‹ค. cygwin „ “ฐ๋‹ˆ๊นŒ œˆ๋„šฐ๊ด ZP ๊ณ„ •ด๊ž‘—…Šคƒ€ผด ๋˜‘๊ฐ™•„„œ ข‹๋‹ค. ๊ทธ๋ฆฌ๊ณ , command œ„ฃผ˜ ž‘—…™˜๊ฒฝ€ ๋‚ด๊ฐ€ •˜๋ ค๋Š” ผ— ๋Œ€•ด ๋ช…‹œ œผ๋กœ ƒ๊ฐ•˜๊ฒŒ๋” •˜๋Š” šจ๊ณผ๋ฅผ ฃผ๋Š”๊ฒƒ ๊ฐ™๋‹ค. NoSmok:๋‹จ —„œ˜ค๋Š”žฅ ด๋ž„๊นŒ.
  • 3ผ ฝ”๋“œ ƒ‚ฐ๋Ÿ‰ 691 ๋ผธ. …ŒŠคŠธ ฝ”๋“œ 245๋ผธธค‘.
  • ˜ˆ „ PHP ”„๋กœ๊ทธ๋ž˜๋ฐ • ๋•Œ ๋งจ๋‚   œ๋กœ๋ณด๋“œ †ŒŠค๋ณด๋ฉด„œ š•–ˆ๋Š”๋ฐ -_-; (๋ณด๊ณ  ๋ฐฐšธ †ŒŠค •„๋‹ˆ๋‹ค ๋‘ฅ๋‘ฅ, ™œ Šค‚จ œž‘•˜๋Š” ‚ฌ๋žŒ๋“คด †ŒŠค ˆ˜ ••˜—ฌ ๊ธฐ๋Šฅ๋“ค„ ๋งŒ๋“ค–ด๋‚ด•ผ •˜๋Š”๊ฐ€ ๋“๋“ -_-.. ๋””žธ œผ๋กœ ๊ทธ๋ฆฌ ๋ณด๊ณ  ๋ฐฐšธ ๊ฒƒด •„๋‹ˆ๋ผ๊ณ  ƒ๊ฐ–ˆ๊ธฐ ๋•Œ๋ฌธ. ๊ทธ๋ƒฅ ๋…ธ๊ฐ€๋‹ค ฝ”๋“œ๋ผ๊ณ  ƒ๊ฐ.)
๊ทผ๋ฐ.. ž๊ธฐ •™๊ตˆ˜—… ๋“คœผ๋ฉด„œ ˆ˜๋งŽ€ ‚ฌ๋žŒ๋“ค˜ ‚ฌ๋ž‘„ ๋ฐ›๋Š” ๋ฒ„ „ 4.0 ดƒ„ ๋ฐ”๋ผ๋ณด๋Š” ”„๋กœ๊ทธ๋žจ ๋งŒ๋“œ๋Š”๊ฒŒ –ด๋”” ‰ฌšดผผ๊นŒ. ๋””žธ ›Œ๋ฅญ•˜๊ณ  ๊น”๋”•œ ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ ๋ง๊ณ  • ผ€ ๋งŽ๋‹ค. ๋” ค‘š”•œ, ๊ทผ๋ณธ ธ, ž๊ธฐ๊ฐ€ •˜๋ ค๊ณ  •˜๋Š” ผ˜ ๋ชฉ € ๋ฌด—‡ธ๊ฐ€. Moa:WorseIsBetter
  • •ฝ๊ฐ„ •„‰ฌ›€: Ž„๋งค๋‹ˆ•„ (http://www.perlmania.or.kr/PDS/pds.pl?mode=view&num=38) ชฝ ™œ๋™•˜‹œ๋Š” ๋ถ„ด ๋จผ € ๊ฒ”๋Ÿฌ๋ฆฌ ง€›๊ธฐ๋Šฅ๊นŒง€ ๋งŒ๋“ค—ˆ๋‹ค; ŠคŠธ๋ง ฒ˜๋ฆฌ— ๋Œ€•ด Ž„ชฝ ๊ฐœ๋ฐœž๊ฐ€ †ด ๋” ๋น ๋ฅธ๊ด๊ฐ€.. ‘; (๋ฌผ๋ก  ข€ ๋„๋Ÿด•˜๊ฒŒ ž‘—…•œ๊ฒƒ๋„ žˆง€๋งŒ. -_-)
17, 18 ผ (๋ชฉ, ๊ธˆ): TDD ๊ธฐ‚ฌ „–‰.

MMM —„œ˜ '”„๋กœ๊ทธ๋ž˜๋จธ˜ ๋‚™๊ด€ฃผ˜'๊ฐ€ ๋– ˜ค๋ฅด๋Š”. -_-;  „๋‚  ๊ธฐ‚ฌ“ฐ๋‹ค๊ฐ€ กธ๋ ค„œ žค๋Š”๋ฐ, ๊ธˆš”ผ •„นจ๋จน๊ณ  ƒˆด ๋‚˜„œ •„ฃผ ฃผ๊ธˆด๋‹ค. ‚ฌ๋žŒด •˜๋Š” ผ— ๋Œ€•ด„œ ดœ —†๋Š” ๋‚™๊ด€ฃผ˜๋Š”  •๋‹น™” ๋  ˆ˜ —†๋‹ค. -_-; ˜ค๋Š˜ •˜๋ฃจข…ผ † •  ๊ฒƒ ๊ฐ™€ ๋А๋‚Œ๋•Œ๋ฌธ— ฃฝ„ ง€๊ฒฝธค‘.;

  • ด๊ฒƒ๋„ ๋ณ‘ธง€ ๋ชจ๋ฅด๊ฒ ๋‹ค. --a „ธ๋ฏธ๋‚˜ ๋‚ งœ ๋‹ค๊ฐ€˜ฌ๋•Œ ๋ฐฅ๋จน๋‹ค ฃฝ๊ฒ ๋Š” ง€๊ฒฝด๋‚˜, ๊ธฐ‚ฌ ๋งˆ๊ฐ๋‚ งœ ž„๋ฐ••˜๋‹ˆ ฃฝ๊ฒ ๋Š” ง€๊ฒฝด๋‚˜. –ด๋””  •‹ ๊ณผ น˜๋ฃŒ๋ผ๋„ ๋ฐ›•„•ผ๊ฒ ๋‹ค. -_-a (๋ฌด˜‹ œผ๋กœ …ž„๊ฐ•๋ฐ•๊ด€๋…ฆด๋ผ๋˜ง€, Šคผ€„๊ด€๋ฆฌ๋ฏธˆ™œผ๋กœธ•œ‹ ๊ฒฝ••๋ฐ•ฆ ๊ธฐƒ€๋“๋“ ๊ตฐ‹œ๋ ๊ตฐ‹œ๋ )
  • Šคผ€„ ๊ด€๋ฆฌ๋Š” ™•‹คžˆ ๋ฏธˆ™–ˆ๋‹ค. ง€๋‚œ๋ฒˆ ๊ธฐ‚ฌ “ธ๋•Œ๋Š” Pair ˜€—ˆ๊ธฐ ๋•Œ๋ฌธ— ๋น„Šท•œ ‹œ๊ฐ„„ • ๋‹น•ด„œ๋Š” ๊ณค๋ž€–ˆ๋‹ค๋ผ๋Š” ƒ๊ฐค‘. ˜คžˆ๋ ค 1.5๋ฐฐ ดƒ„ žก๊ณ  žฌ๋น ๋ฅด๊ฒŒ „–‰–ˆ–ด•ผ –ˆด๋งŒ. ๊ฒฐ๋‹จ„ ๋‚ด๋ฆฌ๋Š” †๋„๊ฐ€ ๋А๋ฆฌ๋‹ค. ๋นจ๋ฆฌ –ป„ด ๋นจ๋ฆฌ –ป๊ณ , ๋นจ๋ฆฌ ๋ฒ„๋ฆด๊ด ๋นจ๋ฆฌ ๋ฒ„๋ ค•ผ •˜๊ฒ ๊ด๋งŒ.
16 ผ (ˆ˜): TDDBE ๋‹ค‹œ  •๋…. ๊ธฐ‚ฌ „–‰.

TDDBE๋ฅผ PowerReading —„œ˜ ๋ฐฉ๋ฒ•„  šฉ•ด„œ ฝ–ด๋ณด•˜๋‹ค. ๋‚ด๊ฐ€ •„š”๋กœ •˜๋Š” ๋ถ€๋ถ„ธ '™œ TDD๋ฅผ •˜๋Š”๊ฐ€?' ™€ 'TDD Pattern' ๋ถ€๋ถ„— ๋Œ€•ด„œ –ˆ๋Š”๋ฐ, —ฌ „žˆ  ‘๊ทผ๋ฒ•€ ด•ด๋ฅผ œ„ฃผ๋กœ –ˆ๋‹ค. WPM € ‰๊ท  60๋Œ€. ด•ด๋„๋Š” •œ๋ฒˆ€ 90% (…„ •ˆ๋ณด๊ณ  š”•ฝ„ “ธ๋•Œ ๋Œ€๋ถ€๋ถ„˜ ๋‚ดšฉด ๊ธฐ–ตด ๋‚ฌ๋‹ค.), •œ๋ฒˆ€ ด•ด๋„ 40%(ด๋•Œ๋Š” ‚ฌ „„ •ˆฐพ•˜—ˆ๋‹ค.) ด•ด๋„™€ †๋„˜ ˜–ฅ€ —ญ‹œ ™ธ๊ตญ–ด ‹ค๋ ฅ๋ถ€๋ถ„ธ๊ฒƒ ๊ฐ™๋‹ค. ๋‹จ–ด žฒด๋ฅผ ๋ชจ๋ฅผ๋•Œ, ๋ชจ๋ฅด๋Š” ๋ฌธ๋ฒ•ด ๋‚˜™”„ ๊ฒฝšฐ˜ ๋ฌธ œ๋Š” ฝ๊ธฐ ๋ฐฉ๋ฒ•˜ ๋ฌธ œ๊ฐ€ •„๋‹Œ ๊ฒƒ ๊ฐ™๋‹ค.

š”ƒˆ Summary • ๋•Œ˜ ๋А๋‚Œด ฐธ ข‹๋‹ค. …„ ”น–ด๋จน๋Š”๋‹ค๋Š” ๋А๋‚Œด ๋“œ๋‹ˆ๊นŒ. †๋„๊ฐ€ ๋А๋ฆฌ๊ฒŒ ๋‚˜˜ค๋”๋ผ๋„. •œ๋™•ˆ€ ด ๋ฆฌ๋“ฌœผ๋กœ. กฐ๊ธˆ”ฉ ˜ฌ๋ฆฌ๊ธฐ ๋…ธ๋ ฅ๋…ธ๋ ฅ.

14 ผ (›”): TDD ๊ธฐ‚ฌž‘„ Start, ผฃผผ • ผ „ •.

–ด œ ๋‹คด–ด๋ฆฌ …‹Œ…•œ ๊ฒƒ„ ดšฉ•˜๊ณ , XP —„œ˜ Story  •๋ฆฌ๋ฐฉ๋ฒ•„ •ฝ๊ฐ„  šฉ•˜˜€๋‹ค. •„ง ๊ฐ Story — ๋Œ€•ด„œ Task ๋ฅผ •ˆ๋‚˜๋ˆด๊ธฐ ๋•Œ๋ฌธ—, ผ๋‹จ ข€ ๋” • ผ๋“ค— ๋Œ€•ด ๊ตฌฒด ธ „œˆ ด •„š”•˜๋‹ค.
•„นจ ๊ธฐƒ‹œ๊ฐ„ 7‹œ. To Do List —„œ ž‘€ ผ๋“ค— ๋Œ€•ด„œ๋Š” ๊น”๋”•˜๊ฒŒ ฒ˜๋ฆฌ. ๋‹จ, •ฝ๊ฐ„ ๋‹จœ„๋ฅผ ฌ๊ฒŒ žก€ ผ๋“ค— ๋Œ€•ด„œ  œ๋Œ€๋กœ ฒ˜๋ฆฌ๋ฅผ ๋ชป•˜˜€๋‹ค. (2-3‹œ๊ฐ„ธ๋ฆด ๊ฒƒด๋ผ ƒ๊ฐ๋˜๋Š” ผ๋“ค) ฐจ๋ผ๋ฆฌ ด ผ๋“ค„ 1‹œ๊ฐ„ ๋‹จœ„ ผ๋“ค๋กœ ๋” ชผ๊ฐฐ—ˆœผ๋ฉด –ด๋– –ˆ„๊นŒ •˜๋Š” •„‰ฌ›€ด ๋“ ๋‹ค.

•™๊ต— ๋„ฐฉ•˜๊ณ  ๋‚œ๋’ค Ž˜ดŠค๋ฅผ  œ๋Œ€๋กœ œ ง€๋ชป–ˆ๋‹ค. •™๊ต ๋„ฐฉ ด›„ 5‹œ๊ฐ„— ๋Œ€•ด„œ  œ๋Œ€๋กœ ™œšฉ„ ๋ชป–ˆ๋‹ค. ผ„ ‹œž‘•˜๊ธฐ  „— ๊ณ„† ๋ง„˜€๋‹ค. ๋ง„ž„„ „ด๋ ค๋ฉด ผ„ ข€๋” ๋ช…™••˜๊ฒŒ ๋‚˜๋ˆ„—ˆ–ด•ผ • ๊ด๋ฐ. •”Šผ.

13 ผ (ผ): ๋‹คด–ด๋ฆฌ …‹Œ…, Moa:ปด“จ„ฐ๊ณ  „Šค„ฐ๋””/20021013

๋‹คด–ด๋ฆฌ …‹Œ…„ •˜๋ฉด„œ ๊ผญ •„š”•œ ๊ธฐ๋Šฅ & ๋นผ๋„ ƒ๊ด€—†๋Š” ๊ธฐ๋Šฅ๋“ค ๊ถ๋ฆฌค‘.
  • To Do List — ๋Œ€•ด„œ Layering ด •„š”•˜๋‹ค -  „ฒดง€๋„ : ๋ถ€๋ถ„ง€๋„ ๋ž„๊นŒ. XP ๋ผ๋ฉด UserStory : EngineeringTask ๋ฅผ ด•ผ๊ธฐ•  ˆ˜๋„ žˆ๊ฒ ง€. EngineeringTask ˆ˜ค€˜ ๊ฒฝšฐ Index Card ๊ฐ€ ๋” Žธ•˜๊ธด •œ๋ฐ, ๋ณด๊ด€•ด•ผ • ผด ƒ๊ธธ๋•Œ ๋ฌธ œ๋‹ค. (Šนžˆ 2-3ผ๋กœ ๋‚˜๋ˆ„–ด„œ •˜๋Š” ž‘—…˜ ๊ฒฝšฐ) ด๊ด ๋‹คด–ด๋ฆฌ ค‘๊ฐ„ค‘๊ฐ„— ๊ปด๋†“๋Š” ๋ฐฉ๋ฒ•œผ๋กœ •ด๊ฒฐ˜ˆ •. (๊ตฌ๋ฉ 3๊ฐœงœ๋ฆฌ ๋‹คด–ด๋ฆฌšฉ ธ๋Šคนด๋“œ๋Š” —†„๊นŒ. -_a ‰†Œ—” ๋ณด๊ด€•˜๋‹ค •„š”•˜๋ฉด ๋œฏ–ด„œ “ฐ๊ณ ; ฌŠคŠธž‡ด ๋” ๋‚˜„๊นŒ.)
  • ๊ฐœธ ‚ฌƒ‰„ “ธ ๊ณต๊ฐ„ ๋ถ€ - ๋ฒ„Šค—„œ ค‘๊ฐ„ค‘๊ฐ„ ๋– ˜ค๋ฅด๋Š” ๋‹จƒด •„‰ฝ๋‹ค. (ด๋Š” š”ƒˆ 3 x 5 ธ๋Šคนด๋“œ๋ฅผ ถฉ „(?)•˜ง€ •Š€๊ฒŒ ๋ฌธ œธ๋“ฏ •˜๋‹ค.)
  • WPM ๋กœ๊ทธ ž‘„ - ฃผ๋กœ —ฐŠตžฅ— Summary ๋ฅผ •˜๋Š”๋ฐ, ธก •๋ฐด„ฐ๋ฅผ ๋ชจœผ๊ธฐ๊ฐ€ –ด๋ ต๋‹ค. Summary ๋…ธŠธ๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“œ๋Š”๊ด ๊ทธ๋ฆฌ ›•˜ง€ •Š๊ณ . (Summary ๋‚ดšฉ„ ๋ณด๋Š” ๊ฒƒ๋ณด๋‹จ Summary •˜๋ฉด„œ šŒƒž‘šฉ„ •˜๋Š”๊ฒŒ ๋” ˜๋ฏธžˆ๋‹ค๊ณ  ƒ๊ฐ•˜๊ธฐ—) ด๊ด ๊ทธ๋ž˜”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ฒŒ ๋” ‰ฌšธ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ž˜”„๋Š” ฒ˜Œ ‘œ๋งŒ ๋งŒ๋“ค–ด๋‘๋ฉด ‘œ‹œ•˜๋Š”๋ฐ 1๋ถ„๋„ •ˆ๋“ ๋‹ค๋Š”  —„œ. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋ž˜”„๋Š” ๋ชจ๋ˆˆ†ง€ 1๊ฐœ๋งŒ “ฐ๋ฉด ๋˜๋‹ˆ๊นŒ.
Uninstall & Install
˜„žฌ ๋‹คด–ด๋ฆฌ ๋‚ด ธŠค†จ๋œ ‹œŠค…œ.
  • •œ๋‹ฌ • ผ -  „ฒดค‘ 'ผ •ด  ••ด„ –‰œ„' — ๋Œ€•ด œ šจ•˜๋ฏ€๋กœ ๋†”๋‘๊ธฐ
  • •˜๋ฃจ • ผ - ๋งคผ •„นจ. ๋˜๋Š” ๊ทธ  „๋‚  ž‘„•˜๊ธฐ.
  • ๊ธฐƒ ‹œ๊ฐ„ ฒดฌ ๊ทธ๋ž˜”„ - •˜๋ฃจ 1๋ถ„ ดšฉ. •„ง '๊ฐœ„ ' ๋‹จ๊ณ„๊นŒ„ ๊ฐ€ง€ ๋ชป–ˆง€๋งŒ, ผ๋‹จ ๊ณ„† ฒดฌšฉ.
  • ๋‚™„œžฅ - ด๋…€„€ •„š”—†„๋“ฏ. •„ด๋””–ด ๊ถ๋ฆฌ• ๋•Œ๋Š” ฐจ๋ผ๋ฆฌ —ฐŠตžฅด ๋” Žธ•˜๋‹ˆ๊นŒ. ฐจ๋ผ๋ฆฌ Index Card ๋‚˜ ฌŠคŠธž‡œผ๋กœ “ฐ๊ณ  ค‘๊ฐ„— ๋ถ™ด๋Š”๊ฒŒ ๋” œ —ฐ•œ ๋ฐฉ๋ฒ•ด๋ผ ƒ๊ฐ•œ๋‹ค.
๋ฐด„ค‘๋ณต๋˜๋Š” ๊ฒƒ ‚ญ œ•˜๊ณ , ด „ ๋กœ๊ทธ๋“ค  •๋ฆฌ•˜๊ณ .. ด๋กœ„œ ๋‹คด–ด๋ฆฌ ๋‘๊ป˜ 2/3 œผ๋กœ „ด๋Š”๋ฐ „๊ณต.

•„ง€ •„š”•œ ‹œŠค…œ๋งŒ Install •˜๋Š” ๋ชฉ‘œ— ถฉ‹ค•˜๋„๋ก ๋…ธ๋ ฅ•˜ž. Refactoring. NoSmok:•„š”•œ๋งŒผ๋งŒ .
----
Moa:ปด“จ„ฐ๊ณ  „Šค„ฐ๋””/20021013

๋ฐœ‘œค€๋น„• ๋•Œ …„ 3๋ฒˆ •๋„ ฝ๊ณ , ๋‘๋ฒˆ„ ๋…ธŠธš”•ฝ •๋ฆฌ–ˆ๋‹ค. ๋‚˜๋ฆ„๋Œ€๋กœ ด•ด–ˆ๋‹ค๊ณ  ƒ๊ฐ–ˆ๋Š”๋ฐ, ค‘๊ฐ„— ๋Œ€๊ฐ• ด•ด•œ๋ถ€๋ถ„— ๋Œ€•ด ๋‚ด ƒ๊ฐ„ ๋ง๋ถ™—ฌ„œ ด•ผ๊ธฐ•˜๋Š” šฐ๋ฅผ ๋ฒ”–ˆ๋‹ค. ผ๋‹จ€ …ŠคŠธ— ถฉ‹ค•ด•ผ –ˆ๋Š”๋ฐ, …ŠคŠธ— ถฉ‹ค•˜๊ธฐ œ„•ด„œ๋Š” ๊ธ€„ 100% ™„๋ฒฝ•˜๊ฒŒ •ด„•ด„œ ฝ๋Š”๊ฒŒ ฒซ ๋‹จ๊ณ„ด๋ฆฌ๋ผ. ด„˜๊ธฐ๋Šฅ —„œ˜ ๊น€šฉ˜ฅ˜ ž„ธ๋ฅผ ๋‹ค‹œ ƒ๊ฐ•ด•ผ๋ด•ผ๊ฒ ๋‹ค.

…ŠคŠธ •ด„„  œ๋Œ€๋กœ •ˆ• ˆ˜๋ก ๊ทธ ๋ชจž๋ž€ ๋ถ€๋ถ„„ ๋‚ด ƒ๊ฐœผ๋กœ „šฐ๋ ค๊ณ  •˜๋Š” „–ฅด ๋ณดธ๋‹ค. ๊ฒฝ๊ณ„๊ฐ€ •„š”•˜๋‹ค. ™œ PowerReading —„œ, ๋ชจ๋ฅด๋Š” ๋‹จ–ด— ๋Œ€•ด„œ๋Š” ๊ผฌ๋ฐ•๊ผฌ๋ฐ• ๋ฐ˜๋“œ‹œ ‚ฌ „„ ฐพ•„๋ณด๋ผ๊ณ  –ˆ๋Š”ง€,  €ž - ๋…ž™€˜ ๋Œ€™”•˜๋Š” ž…žฅ—„œ ผ๋‹จ  €ž˜ ƒ๊ฐ„  œ๋Œ€๋กœ ด•ด•˜๋Š”๊ฒŒ ๋จผ €ธง€, ˜ค๋Š˜ ๋‹ค‹œ ๋А๊ผˆ๋‹ค. ๋А๋‚Œœผ๋กœ ๋๋‚˜ง€ •Š•„•ผ๊ฒ ๋‹ค.

  • 'ด•ด–ˆ๋‹ค' ๋กœ ๋А๋ผ๋Š” ๊ฒƒ๊ณผ ๊ทธ๊„ค๋ช…•˜๊ธฐ œ„•ด ™„„๋œ ๊ธ€๋กœ  •๋ฆฌ•˜๊ณ , ๊ทธ๊ธ ๋ง๋กœ •˜๊ธฐ œ„•ด„œ •ด•ผ• ผ€ ๋‹ค๋ฅธ ๊ฒƒ ๊ฐ™๋‹ค.
  • Opening Question ด ๋ถ€–ˆ๋‹ค. ๊ฐœธ  ๊ฒฝ—˜๊ณผ ๊ฒฐ๋ถ€‹œผœ„œ ˆ๋ฌธ•ด๋ณผ ˆ˜ žˆ—ˆ„ด๋ฐ. •„๋Š” „ ๋ฐฐ (๋ญ ๋ป”•˜ง€๋งŒ) ๊ฐ€ ๋Œ€™”๋ฅผ • ๋•Œ  •๋ง ž˜•˜๋Š” ๊ธฐˆ ค‘ •˜๋‚˜๊ฐ€   ˆ•œ ˆ๋ฌธ๋ฒ•ด๋‹ค. ๋ถ„„ด •„š”•˜๋‹ค.
12 ผ († ): Seminar:PosterAreaBy1002 , 2๋ฒˆงธ ๋ฌธ œ.

ด๋ฒˆ—๋Š” TDD ๋กœ •˜๋˜, TDDชฝ๋ณด๋‹ค๋Š” PBI — ๋” ฃผ•ˆ„ ๋‘๊ณ  –ˆ๋‹ค. ด๋Ÿฐ ˆ˜•™๊ณต‹ ๊ตฌ•˜๊ธฐ Šคƒ€ผ˜ ๋ฌธ œ˜ ๊ฒฝšฐ๋Š” StepwiseRefinement ™€๋„ ๊ฐ™€ PBI๊ฐ€ ๊ต‰žฅžˆ œ šฉ•˜๋‹ค๋Š” ƒ๊ฐด ๋“ ๋‹ค. ฒซ๋ฒˆงธ ๋ฌธ œ ’€๋•Œ ฝ”๋“œ-…ŒŠคŠธ-žฌ •˜ ‹œผ๋กœ(ค‘๋ณต๋ณด๋‹ค๋Š” žฌ •˜— ๋” ‹ ๊ฒฝผ๊ธฐ ๋•Œ๋ฌธ—) ๋„˜–ด๊ฐ€๋Š”๊ฒŒ ๊˜ 1๋ถ„„„˜–ด๊ฐ€ง€ •Š•˜๋‹ค.

ฒ˜Œ—๋Š”
~cpp 
int calculateVisiableBoxSize 
        (int x1,int y1, int x2,int y2, int x3, int y3, int x4, int y4) { 
         
        return 14; 
} 

void testCalculate () { 
        assert(calculateVisiableBoxSize(2,3,5,8,4,7,6,10) == 14); 
}

void test() { 
        testCalculate(); 
} 
๋กœ ‹œž‘•˜—ฌ.
~cpp 
        int boxSize=15; 
        int coverBoxSize=1; 
         
        return boxSize-coverBoxSize; 
~cpp 
        int boxSize=(5-2)*(8-3); 
        int coverBoxSize=1; 
} 
~cpp 
        int boxSize=(5-2)*(8-3); 
        int coverBoxSize=(5-4)*(8-7); 
~cpp 
int getCoverBoxSize     (int x1,int y1, int x2,int y2, int x3, int y3, int x4, int y4) { 
        return 1; 
} 
.
.
       int boxSize=(x2-x1)*(y2-y1); 
       int coverBoxSize=getCoverBoxSize(x1,y1,x2,y2,x3,y3,x4,y4); 
—ฌ๊ธฐ„œ ๋‹ค‹œ ๋ฌธ œ๋ฅผ ๋‚˜๋ˆ„—ˆ๋‹ค. Cover Box. ฆ‰ ๋นผ•ผ •˜๋Š” ๊ฐ’„ ๊ตฌ•˜๋Š” ๋ฌธ œ๋งŒœผ๋กœ ฌปคŠค๋ฅผ ข˜”๋‹ค. ๋„ˆ๋ฌด๋‚˜๋„ ๋ช…๋ฐ•˜๊ฒŒ ๋ณดด๊ธฐ—. ๊ทธ๋ฆฌ๊ณ  …ŒŠคŠธ ผ€ดŠค๋ฅผ ฆ๊ฐ€‹œผœ ๋‚˜๊ฐ€๋ฉด„œ ฝ”๋“œ๋ฅผ ๋Š˜๋ ค๊ฐ€๋Š” ‹œผ๋กœ ๋งŒ๋“ค—ˆ๋‹ค.
~cpp 
int getCoverBoxSize     (int x1,int y1, int x2,int y2, int x3, int y3, int x4, int y4) { 
        return 1; 
} 

void testGetCoverBoxSize() { 
        assert(getCoverBoxSize(2,3,5,8,4,7,6,10) ==1); 
} 

๋ญ. OO ๋กœ •  ˆ˜๋„ žˆ—ˆง€๋งŒ (•„๋งˆ Box Object ๋ฅผ ๋งŒ๋“ค๊ณ  ๋‘๊ฐœ˜ intersect box ๋ฅผ create •œ๋’ค, ๊ฐ๊ฐ˜ box —๊ฒŒ area ๋ฅผ ๋ฌผ–ด๋ณด๋Š” ‹ด ๋˜—ˆ„๋“ฏ.) ๋น ๋ฅธ ๊ฐ’ด ๋‚˜˜ค๋Š”๊ฒŒ ผ๋‹จ › „ ๋งžถฐ๋ณด•˜๋‹ค.

๋‹จ, OO Style ˜ ฝ”๋“œ— ๋Œ€•ด„œ PBI ๋ฅผ ๋„ˆ๋ฌด ๊ฐ•กฐ•˜๋‹ค๋ณด๋ฉด StructuredProgramming — ๋” ๊ฐ€๊นŒšด OO ๊ฐ€ ๋˜ง€ •Š„๊นŒ •œ๋‹ค. PBI๋Š” TopDown ด๋ฏ€๋กœ.
๋‚˜๋Š”  ˆ๋Œ€๋กœ •„๋‹ˆ๋ผ๊ณ  ƒ๊ฐ•œ๋‹ค. PBI™€ OO๋Š” ง๊ต ด๋‹ค. ๋งŒ•ฝ, ๋„๋ฉ”ธ ๋ชจ๋ธ ˜ค๋ธŒ Šธ๋กœ "‚ฌ๊ณ "•˜๊ณ  "˜๋„"•œ๋‹ค๋ฉด OO ธ ฝ”๋“œ๊ฐ€ ๋‚˜˜จ๋‹ค(see Seminar:PosterAreaByJune ). DDD๋ฅผ ฐธ๊ณ •˜๊ธธ. --JuNe
 œ๊ฐ€ Structured ๋กœ ‚ฌ๊ณ –ˆ๊ธฐ ๋•Œ๋ฌธ— Structured Šคƒ€ผ๋กœ TopDown ๋˜—ˆ๋‹ค๋Š” ƒ๊ฐด ๋“œ๋„š”. OO ๋กœ TopDown „ ๋ชป•˜๋Š”๊ฒŒ •„๋‹Œ๋ฐ. ๋„ˆ๋ฌด ๋‹จˆœ•˜๊ฒŒ ƒ๊ฐ–ˆ๊ตฐš”. --1002

๋‘๋ฒˆงธ ๋ฌธ œ— ๋Œ€•ด„œ๋Š” STL — ตˆ™•˜ง€ •Š•„„œ ‹œ๊ฐ„ด 1‹œ๊ฐ„ 18๋ถ„ด ๊ธ๋ ธ๋‹ค. -_-; •ž˜ ๋ฌธ œ๊ฐ€ ๊˜ 20๋ถ„ ๋‚ด— ๋๋‚œ๊ฒƒ— ๋น„•˜๋ฉด ๊ฝค ˜ค๋ž˜๊ธ๋ฆฐ …ˆธ๋ฐ. ฒ˜Œ ๋ฌธ œ ด•ด๋Š” ๊ต‰žฅžˆ ๊ฐ„๋‹จ–ˆ๊ณ ,  ‘๊ทผ ๋ฐฉ๋ฒ•๋„ ๋ฌธ œ ฝž ๋งˆ๋‹ค 2๊ฐ€ง€  •๋„๊ฐ€ ๋ณด˜€๋‹ค. ๋ฌธ œ๋Š” ๋‚ด๊ฐ€ permutation „ ๊ตฌ•˜๋Š” •Œ๊ณ ๋ฆฌฆ˜„ ๋ชจ๋ฅธ๋‹ค๋Š” ๊ฒƒด˜€๊ณ , ง ‘ ๋งŒ๋“ค–ด•ผ –ˆ๋‹ค. ๋ญ ๊ทธ๋ž˜๋„ ๋ณ„๋กœ •ˆ–ด๋ ต๊ฒ ๋‹ค ‹ถ–ด„œ TDD ‹˜ ๊ฐ„๋‹จ•œ  ‘๊ทผ„ •ด ๋ณด•˜๋‹ค. (—‰, †ŒŠค๋ฅผ •™๊ต— ๋‘๊ณ  ™”๊ตฐ. -_-;)

—ญ‹œ  ‘๊ทผ€ TDD, PBI

๋Œ€๊ฐ• pseudo code ๋กœ  œผ๋ฉด
~cpp 
result = permutation("ab")
assertEquals(result[0], "ab")
assertEquals(result[1], "ba")
๊ทธ๋ฆฌ๊ณ  ด— ๋Œ€•ด„œ ๊ตฌ˜„•˜๊ณ  (๊ฐ€žฅ ๊ฐ„๋‹จ•œ๊ด ๋ฐ”๋กœ vector — ab,ba ๋ฅผ ๋„ฃ๋Š”๊ฒƒ) …ŒŠคŠธ๋ฅผ ๋Š˜๋ ธ๋‹ค. •œ๋‹จ๊ณ„๋งŒ ๋Š˜๋ฆฌ๊ณ  ๋ฐ”๋กœ •Œ๊ณ ๋ฆฌฆ˜ด ๋‚˜˜ฌ ๊ฒƒ ๊ฐ™•˜๋‹ค.
~cpp 
result = permutation("abc")
assertEquals(result[0], "abc")
๊ทธ๋ฆฌ๊ณ   ‘๊ทผ„ –ˆ๋Š”๋ฐ, ๋„ˆ๋ฌด •Œ๊ณ ๋ฆฌฆ˜ œผ๋กœ  ‘๊ทผ•˜๋ ค๊ณ  –ˆ๋‹ค. (žฌ๊ท€˜ธถœ„ ดšฉ•˜๋Š” ‹œผ๋กœ.. ๊˜ ผ๋ฐ˜™”‹— ๊ฐ€๊น๊ฒŒ) ˆ๋ฐ˜ 10๋ถ„ •๋„๋ฅผ ๊ทธ •๋„ จ๋จนœผ๋‹ˆ„ˆ๋ฌด ‹œ๊ฐ„ด •„๊นŒ›Œ„œ, ผ๋‹จ€ abc žฒด๋งŒ †ต๊ณผ•˜๊ธฐ œ„•ด ๋…ธ๋ ฅ„ –ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด„œ ๋Œ€๊ฐ• ๋‹คŒ˜ ฝ”๋“œ Šคƒ€ผด ๋‚˜˜จ ๊ฒƒ ๊ฐ™๋‹ค. ( € ๋‹จ๊ณ„๋ณด๋‹ค ๋” ž‘€ ๋‹จ๊ณ„๊ฐ€ žˆ—ˆŒ. „ ƒด a •˜๋‚˜๋งŒ.)
~cpp 
permutation (str, selectable, position) {
   if (position == str.size() - 2) {
      vector<string> result
      result.push_back(selectable)
      reverse(selectable.begin(), selection.end())
      result.push_back(selectable)
      return result
   }
   for select in selectable:
      result.push_back(select)
      nextSelectable=removeFrom(selectable, select)
      subresults = permutation(str, nextSelectable, position+1)
      for subresult in subresults:
           .
           .
           .          
}
recursive ๋ฅผ “ฐ๋Š”๊ฒƒผ๋•Œ ๋” ž‘€ ๋‹จ๊ณ„๋ฅผ ๋ฐŸ๋Š”๊ฒƒ€ —ฌ „žˆ Žธ•œ ๊ฒƒ ๊ฐ™๋‹ค. (ถ”›„ถ”๊ฐ€)

11 ผ (๊ธˆ): TDD ClassifyByAnagram, ๋ฅด๋„ƒŠค ด๋Ÿฝ

•„ง€ ๋‚˜—๊ฒ '~•œ  —„œ ๊ฒฐ๊ตญ€ ๋‹ค ๊ฐ™๋‹ค' ๋ผ๋Š” ๋ง๋ณด๋‹ค๋Š” '~•œ  —„œ ๋‹ค๋ฅด๋‹ค' ๋ž€ ๋ง๋กœ ๋ฐฐšธ ˆ˜ žˆ๋Š”๊ฒŒ ๋” ๋งŽ€ ๊ฒƒ ๊ฐ™๋‹ค. •„๋Š” „ ๋ฐฐ๋Š” '๊ฒฐ๊ตญ SE ˜ ฐ ‹€ ๋‚ด—„œ˜ ๋ฒ”ฃผ๋กœ ๋†“๊ณ  ๋ณด๋ฉด RUP๋‚˜ XP๋‚˜ ๊ฐ™€๊ฒŒ •„๋‹ˆ๋ƒ' ‹œผ๋กœ ด•ผ๊ธฐ•œ๋‹ค. ๋‚˜๋Š” XP˜ ๋‹ค๋ฅธ (ง€๊ทน•˜๊ฒŒ ๊ฐ€๋ฒผšด ๊ณณ๋ถ€„‹œž‘•˜—ฌ •„𔕠๋•Œ …ŒŠคฌ๋‚˜ Šค† ๋ฆฌ๋กœ„œ ถ”๊ฐ€•˜๋Š”)œผ๋กœ žฅ „ –ป๊ณ ž •œ๋‹ค. •„๋Š” „ ๋ฐฐ๋Š” TDD๋กœ •˜๊ด ๋ญ˜๋กœ •˜๊ด ๊ฒฐ๊ตญ ๋น ๋ฅด๊ฒŒ ข‹€ ”„๋กœ๊ทธ๋žจ„ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค๊ณ  •œ๋‹ค. ๋‚˜๋Š” TDD๋ฅผ ๋๊นŒง€ •ด๋ด„(๋””๋ฒ„๊น… ˆด๋กœ ๋Œ๋ฆฌ๋Š” ‹œ๊ฐ„ด ๊˜ 0๋ผ๋Š”  , ๋‚ด๊ฐ€  œ–ด•  ˆ˜ žˆ๋Š” ข‹€ ˆ๋ฌธ & ข‹€ ๋‹ต„ ๋งŒ๋“ค–ด๋‚ด๊ธฐ)œผ๋กœ„œ žฅ „ –ป๊ณ ž •œ๋‹ค. •„ง๊นŒง€๋Š” ๅฎˆ˜ ๋‹จ๊ณ„ด๋ผ ƒ๊ฐ•˜๊ธฐ๋•Œ๋ฌธ—.

•„ง ๅฎˆ ๋ฅผ •ด•ผ •˜๋Š” ๋‹จ๊ณ„ ๊ฐ™€๋ฐ, „ฏ๋ถ€๋ฅด๊ฒŒ ๏งช๋กœ ๊ฐ€๊ธฐ—” •„ง žฅ „ ๋‹ค ”น–ด๋จน–ด๋ณดง€ ๋ชป–ˆ๋‹ค๋Š” ƒ๊ฐด ๋“ ๋‹ค. ๋‹ค๋งŒ, ๋นจ๋ฆฌ ๋ฏผ๊ฐ•ด ธ„œ ็ ด™€ ๏งช˜ ๋‹จ๊ณ„๋กœ ๋„˜–ด๊ฐˆ ˆ˜ žˆ๊ธฐ๋ฅผ ๋ฐ”๋ผง€๋งŒ, •„ง ๋‚˜—๊ฒ ๋ฌด‹•˜๊ฒŒ ๊ณต๋ถ€•ด„œ –ป„ ˆ˜ žˆ๋Š” žฅ ด ๋” ๋งŽ€ ๊ฒƒ ๊ฐ™๋‹ค.

  • ๋‹จ, ๏งช ˜ ๋‹จ๊ณ„— žˆ๋Š” ‚ฌ๋žŒ˜ ๋ง€ 'Target' ด๋‹ค. ๋‹จ, ๊ฐ™€ ๊ฒฐ๋ก „ ๋‚ผ •„š”๋Š” —†๊ฒ ง€.
  • •˜ง€๋งŒ, ๊ฒฐ๊ตญ€ '๋‚ด ด•ผ๊ธฐ'๋ฅผ •ด•ผ •˜๊ฒ ง€. ๊ทธ๋ฆฌ๊ณ , „ฐ๋„ ๋น„ „— ๋น ง€ง€ ๋ง๊ณ  ๋•Œ๊ฐ€ ๋ ๋•Œ—”  •™••˜๊ฒŒ ๋ฌธ œ๋ฅผ ธ‹•  ˆ˜ žˆ๊ธฐ๋ฅผ.
  • ˜ค๋Š˜ ๊ต‰žฅžˆ ๋น ๋ฅธ †๋„๋กœ XP๋ฅผ กˆ˜•˜๋ ค๋Š” ‚ฌ๋žŒ„ ๊ตฌ๊ฒฝ•  ˆ˜ žˆ๋Š” ๊ธฐšŒ๊ฐ€ ๋˜—ˆ๋‹ค. ž๊ธฐ ƒ™œ ๋ฐœ „ ๊ณ„š— ๋Œ€•ด ๋ฐฉ๋ฒ•๋ก „  šฉ•œ ๊ฒƒด๋‹ค. ๋ฉ‹„ ๊ฐ€๋กœง€๋ฅด๊ธฐ๋ผ ƒ๊ฐ. ^^
----

—ฌ „žˆ ๅฎˆ ˜ ๋‹จ๊ณ„๋ฅผ ๋ชป๋ฒ—–ด๋‚˜๋Š”๊ฒƒ ๊ฐ™ง€๋งŒ.

˜น‹œ FakeIt & Refactoring œผ๋กœ „–‰ด ๊ฐ€๋Šฅ• ๊นŒ ƒ๊ฐ•ด๋ณด๋ฉด„œ ฒ˜Œ—๋Š” FakeIt & Refactoring ๋งŒœผ๋กœ „–‰•ด๋ณด•˜๋‹ค. ๊ทผ๋ฐ, FakeIt „ •˜๊ณ  Refactoring „ •˜๋ ค • ๋•Œ ๋„ˆ๋ฌด žฌ •˜๋ฅผ ๋งŽด •˜๋Š” ๊ฒƒ ๊ฐ™•„„œ ๋Œ€๊ฐ• ๋„˜–ด๊ฐ”๋Š”๋ฐ, ๊ทธ๋žฌ๋”๋‹ˆ ๋‹คŒ …ŒŠคŠธ๋กœ „–‰•˜๊ธฐ ๋„ˆ๋ฌด ž˜๋“ค—ˆ๋‹ค. •Œ๊ณ ๋ฆฌฆ˜ด –ด๋А •๋„ ๋ณดด๋ ค๊ณ  • ๋•Œ, •ž—„œ˜ FakeIt œผ๋กœ œ ๋„๋œ ฝ”๋“œ๋“ค„ ˆ˜ ••˜๋Š”๊ฒŒ •„๋‹ˆ๋ผ •„— ๋œฏ–ด•ผ •  ๊ฒƒ ๊ฐ™•„„œ ๋ง„—ฌกŒ๋‹ค.

๊ฒฐ๊ตญ ฝ”๋“œ๋ฅผ ๋งŒ๋“ค–ด๊ฐ€๋ฉด„œ '•™Šต๋œ' ฝ”๋“œ - ๊ฐ ๋‹จ–ด˜ š”†Œ๋“ค sort index ๋ฅผ ๋งŒ๋“ค๊ณ  •ด‰ฌ…Œด๋ธ”„ ดšฉ•˜๋Š” ‹œผ๋กœ - ๋กœ ๋ฐ”๋กœ Œ •˜๊ณ  „–‰–ˆ๋Š”๋ฐ, —ฌ „žˆ TDD ๋ณดญด ฌ๋‹ค๋Š” ƒ๊ฐด ๋“œ๋‹ˆ ๊ทธ๋ฆฌ ๊ธฐ๋ถ„ด ข‹ง€ •Š๋‹ค. (๋‹จ–ด๋“ค š”†Œ sort & hash  €žฅ€ ฒ˜Œ ๊ฐœ๋ฐœ• ๋•Œ๋ถ€„ฐ ๋– ˜ฌ๋ž๋˜ •„ด๋””–ด—ฌ„œ..)

  • ๋‹ค‹œ ‹œ๋„•œ๋‹ค๋ฉด? ๋“ค–ด˜ค๋Š” ๊ฐ’๋“ค„ ๊ทผ๊ฐ๋กœ ผ๋ฐ˜™”‹œ‚ค๋Š” ๊ณผ •„ •  ˆ˜ žˆ„๊นŒ..

  • ๊ฐœธ œผ๋กœ ๋“œ๋Š” ƒ๊ฐ€, ค‘๋ณต„ „ด๋Š” ๊ฒƒ ๋ณด๋‹ค ˜๋„, ˜๋ฏธ๊ฐ€ ๋ถ„๋ช…•˜๋„๋ก ฝ”๋“œ๋ฅผ งœ๋Š”๊ฒƒด ˆœœ„๊ฐ€ ๋” ๋†’•„•ผ ๋ ๊ฒƒ ๊ฐ™๋‹ค. (๊ทผ๋ฐ, กฐ๊ธˆ ๊ฒด๋‚˜๋Š”๊ด, intention ˜ šฐ„ ˆœœ„๋ฅผ ๋†’ด๋‹ค ๋ณด๋ฉด refinement ๋ฅผ ๋„ˆ๋ฌด ๊นŠ๊ฒŒ ๋“ค–ด๊ฐ€๊ฒŒ ๋œ๋‹ค. •˜ง€๋งŒ ๊ฐœธ œผ๋ก  ด๊ฒƒด ๋” œ šฉ•˜๋‹ค๊ณ  ƒ๊ฐ•œ๋‹ค. ๊ธˆ๋ฐฉ ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„ด ๋ณดด๊ธฐ ๋•Œ๋ฌธ—.)
    PBI™€ TDD๋ฅผ ž˜ ๋ฒ„๋ฌด๋ ค„œ  šฉ•ด ๋ณด๋Š” ‹ค—˜„ •ด๋ณด•„๋ผ. žฅ ด ๋‚˜๋ฆ„๋Œ€๋กœ žˆ๋‹ค. ๋‹จ €, ๊ตฐ๋”๋”๊ธฐ๊ฐ€ ƒ๊ธฐ๊ฐ๋‚˜ ™„ „žˆ ฌ๊ธฐ•˜๊ณ  ƒˆ๋กœงœ•ผ •  ผด ข…ข… žˆ๋‹ค๋Š”  . ๋‚ด๊ฐ€ ค‘š”•˜๋‹ค๊ณ  ƒ๊ฐ•œ ๋„๋ฉ”ธ ˜ค๋ธŒ Šธ๊ฐ€ ‚ฌ‹ค€ •„š”—†๋Š” ๊ฒƒธ ๊ฒฝšฐ๊ฐ€ ๋งŽ๋‹ค. ‹œ๊ฐ„ด ๋‚˜๋ฉด DDD๋„ ๊ณต๋ถ€•ด ๋ณด๊ธธ. --JuNe

  • Seminar:HotShot„ ๋Œ๋ ค๋ณธ ๋’ค, ๊ฐ€žฅ ‹œ๊ฐ„„ ๋งŽด žก•„๋จน๋Š” ๋‘ ๋…€„— ๋Œ€•ด„œ ๊ตฐ๋”๋”๊ธฐ๊ฐ€ ๋˜๋Š” ฝ”๋“œ๋“ค„ ‚ญ œ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ, ฝ •˜๊ณ  •Œ๊ณ ๋ฆฌฆ˜„ ๋” –ฅƒ ‹œ‚ฌ ๋ฐฉ๋ฒ•ด ๋ณด˜€๋‹ค. ๋ญ, ด๊ฒƒ ๊ณ น˜๊ณ  ๋‚œ๋’ค ‚ฌ๋žŒ๋“ค †ŒŠค๋“ค„ ๋ณด๋‹ˆ˜ ๋น„Šท•œ ๋“ฏ.
  • Psyco ๋ฅผ ฒ˜Œ „น˜•˜๊ณ  จ๋ณด๊ฒŒ ๋˜—ˆ๋Š”๋ฐ, •œ ผ— ๋น„•ด „๋Šฅ–ฅƒด ๋†’•„„œ ‹ ๊ธฐ–ˆ๋‹ค.
    psyco๋Š” ๊ฐ€žฅ ๋ฐ”๊นฅชฝ •จˆ˜, ด๋ž˜Šค๋งŒ ๋ฐ”ธ๋”ฉ•ดฃผ๋ฉด •ด๋‹น ฝ”๋“œ๊ฐ€ ˜ธถœ•˜๋Š” ๋‹ค๋ฅธ ฝ”๋“œ๋“ค€ ง ‘ •Œ•„„œ ๋‹ค ๋ฐ”ธ๋”ฉ •ดค€๋‹ค. ฆ‰, mainด๋ผ๋Š” •จˆ˜๊ฐ€ žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ๋งŒ ๋ฐ”ธ๋”ฉ•˜๋ฉด ”„๋กœ๊ทธ๋žจ ๋‚ด˜ ๋ชจ๋“  ฝ”๋“œ๊ฐ€ ๋ฐ”ธ๋”ฉ ๋˜๋Š” …ˆ. --JuNe
----
š” ผฃผผงธ ๊ธฐƒ ‹œ๊ฐ„ ๊ทธ๋ž˜”„ ๊ทธ๋ฆฌ๋Š”ค‘. ˜ค๋Š˜ ๊ฐ‘ž‘Šค๋ ˆ Šคฝ”–ด๊ฐ€ ๋†’๋‹ค.

š”ƒˆ Šคผ€„ ๊ด€๋ฆฌ— ‹คŒจ•˜๋Š” ดœ 
  • •„นจ‹œ๊ฐ„„ ž˜ ๋ชป ดšฉ•œ๋‹ค. ฃผ๋กœ ๋ฐฅ๋จน๊ณ  ‹ ๋ฌธ„ ๋ณด๊ณ  ๋ฉ”ผ, ๊ฐ œ„‚ค๋“ค ๊ตฌ๊ฒฝ ด๋Ÿฐ‹ธ๋ฐ,
  • ฐ ผ— ๋Œ€•ด„œ ๋” ž‘€ ผ๋“ค๋กœ To Do List — ๋‚˜๋ˆ„ˆ •Š•˜๋‹ค. š”ƒˆ๋Š” Šคผ€„ ๊ด€๋ จ  •๋ณด๋ฅผ †ต•ฉ๊ด€๋ฆฌ•˜๊ธฐœ„•ด ฃผ๋กœ ๋‹คด–ด๋ฅผ ดšฉ•˜๋Š”๋ฐ, …‹Œ…„ ๋‹ค‹œ•ด„ •„š”๊ฐ€ žˆ„๋“ฏ.
    • To Do List — ๋Œ€•ด„œ Layering ด •„š”.
    • •„นจ— ๋ฐ˜๋“œ‹œ! •„นจšŒ˜(?)๊ฐ€ •„š”. -_-;

๊ฐœธ ธ ‹œ๊ฐ„๊ด€๋ฆฌ ˆด๊ณผ … ฝ๊ธฐ ๋ฐฉ๋ฒ•— ๋Œ€•ด„œ •„ฃผ•„ฃผ ๊ฐ„๋‹จ•œ ๊ฒƒ ๋ถ€„‹œž‘ค‘. ˜ˆ „๊ฐ™œผ๋ฉด ‹œ๊ฐ„๊ด€๋ฆฌ … ข…๋ฅ˜๋‚˜PowerReading …„ ™„๋…„ •œ๋’ค ๋ญ”๊ฐ€ ‹œŠค…œ„ ผง€๋ง‰•˜๊ฒŒ ๋งŒ๋“ค๋ ค๊ณ  –ˆ„๊ฒƒด๋‹ค. ง€๊ธˆ€ …„ ฝœผ๋ฉด„œ กฐ๊ธˆ”ฉ กฐ๊ธˆ”ฉ  šฉ•œ๋‹ค. ๊ฐ€žฅ ๊ฐ„๋‹จ•œ ๊ฒƒ๋ถ€„•ด๋ณด๊ณ , กฐ๊ธˆ”ฉ กฐ๊ธˆ”ฉ ๊ฐœธ  ‹œŠค…œ„ ‚ค›Œ๋‚˜๊ฐ€๊ธฐ ๋…ธ๋ ฅค‘.

ง€๊ธˆ ผฃผผงธ œ ง€๋˜๋Š” •„ฃผ•„ฃผ ๊ฐ€๋ฒผšด ‹œŠค…œœผ๋กœ๋Š”
  • To Do List - ด๊ด To Do List —˜ Layering ด •„š”•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  '‹œ๊ฐ„— ๊ตฌ†๋˜๋Š” To Do' — ๋Œ€•ด„œ.
  • ๊ธฐƒ ‹œ๊ฐ„ ฒดฌ - ๊ทธ๋ž˜”„ ๊พธค€žˆ ๊ทธ๋ฆฌ๋Š”ค‘. ด œ๋Š” ๋ถ„„ & ๊ฐœ„ „ •ด๋ณผ ˆ˜ žˆ„ ๊ฒƒ ๊ฐ™๋‹ค.
  • Reading - ๋”ฐ๋กœ ๋…ธŠธ๋ฅผ ค€๋น„•˜„ •Š•˜๊ณ , WPM ˆ˜น˜๊ฐ€ ง€๊ทนžˆ ๋‚ฎ๊ธด •˜ง€๋งŒ. 20๋ถ„ •๋„ ˆž๋กœ •œ๋ฒˆ „–‰ ๊ฐ€๋Šฅ.
10 ผ (๋ชฉ): SSH CVS Setting. MMM WPM ธก •.

Tortorise ๋กœ ๋“œ๋””–ด SSH ๋Œ๋ฆฌ๊ธฐ „๊ณต!

MythicalManMonth — ๋Œ€•ด„œ PowerReading —„œ˜ ๋ฐฉ๋ฒ•๋“ค„  šฉ•ด๋ณด•˜๋‹ค. ผ๋‹จ€ ด•ด žฒด— › „ ๋งžถ”๊ณ , †๊ฐ€๋ฝ„ งš„๋•Œ—๋„ ด•ด๋ฅผ ๊ฐ€๋Š” †๋„๋ฅผ šฐ„ œผ๋กœ •ด ๋ณด•˜๋‹ค.
ฝ๋Š”‹œ๊ฐ„ 10๋ถ„, š”•ฝ 5๋ถ„, š”•ฝ๋ณดถฉ 7๋ถ„ •๋„. WPM †๋„ ธก •„ ๋– ๋‚˜„œ, …„ ฝ๋Š”๋ฐ ๋ฆฌ๋“ฌด ƒ๊ธฐ๋Š” ๋А๋‚Œด ๋“ ๋‹ค. (Chapter •˜๋‚˜— ๋Œ€•ด„  ๋„ค๋ฒˆ— ๊น˜๋‹ˆ ๋ด ๋‚ฌ๋‹ค. ด•ด๋„๋„ ๊ฝค ๋งŒ•˜๋Š”ค‘.)

  • WPM € 36.3 - 60%, 60 - 70%, 70 - 65%, 56 - 60%, 67 - 65% . •„ง 100 „ •ˆ„˜๊ธด •˜๋‹ค -_-; •˜ง€๋งŒ, ๊ธ€— ๋Œ€•ด …„ •ˆ๋ณด๊ณ   •๋ฆฌ๋ฅผ •  ˆ˜ žˆ„ •๋„˜ ๋ฆฌ๋“ฌ„ ƒ„ ๊ฒƒ ๊ฐ™•„„œ ๋‚˜˜„ •Š•˜๋‹ค. ผ๋‹จ€ ด•ด๋„๊ฐ€ ๋” ค‘š”•˜๋‹ค๊ณ  ƒ๊ฐ•˜๊ธฐ—.
  • †๋„™€ ด•ด๋„๊ฐ€ ๊ผญ ๋ฐ˜๋น„๋ก€•˜๋Š”๊•„๋‹Œ๊ฒƒ ๊ฐ™๋‹ค. ˜–ด˜ ๋ฆฌ๋“ฌ„  œ๋Œ€๋กœ ƒˆ๋•Œ ด•ด๋„  œ๋Œ€๋กœ ๋˜—ˆ๋‹ค.
  • ๋ชจ๋ฅด๋Š” ๋‹จ–ด˜ ๊ฒฝšฐ ๋‹จ–ด˜ ๋นˆ๋„๋ฅผ ๋ด„œ ‚ฌ „„ ฐพ„๋•Œ™€ ๋‚˜ค‘— ‚ฌ „„ ฐพ„๋•Œ๋ฅผ ๊ตฌ๋ถ„•˜๋Š”๊ฒƒ๋„ ข‹€ ๊ฒƒ ๊ฐ™๋‹ค. ‚ฌ „„ ๋’ค ๊ฐ๋ฆฌ๋Š”๋ฐ— ผข…˜ Context Switching ด ผ–ด๋‚œ๋‹ค๊ณ  • ๊นŒ.
MMM —„œ˜  œ๋ชฉ— •ด๋‹น•˜๋Š”, ๊ทธ๋ฆฌ๊ณ  ฐธœผ๋กœ žฃผ ธšฉ๋˜๋Š” ๋ธŒ๋ฃฉŠค ๋ฒ•น™ด ๋‚˜™”๋‹ค. Communication ๋น„šฉ, ๋ถ„—…™” ๋˜๊ธฐ ž˜๋“  ผ— ๋Œ€•œ ๋น„šฉ ๋ฌธ œ. ExtremeProgramming ˜ ๊ด€ œผ๋กœ ๋‹ค‹œ ๋ฐ”๋ผ๋ณด๊ณ  ๋น„Œ•˜๊ณ  ‹ถง€๋งŒ, •„ง€ ๊ณ ๋ฏผ•˜๊ณ  –ป–ด๋‚ด•ผ • ๊ฒƒด ๋” ๋งŽ๊ธฐ—.

MMM —„œ˜ ๋น„œ ๋“ค€ ฐธ ๋ฉ‹ง€๋‹จ ƒ๊ฐด ๋“ ๋‹ค.  €๋ฒˆ Tar Pit ๋„ ๊ทธ๋ ‡ง€๋งŒ, ด๋ฒˆ ˜ค๋ฏˆ๋ ›˜ ๋น„œ  ๋˜•œ  •๋ง;

8,9 ผ (™”, ˆ˜): ๊ณต—ฐ๋ณด๋Ÿฌ ๊ฐ€๊ธฐ. ๊ฐœธ •๋ฆฌ.

๋ด„—ฌ๋ฆ„๊ฐ€„๊ฒจšธ, ๋ถˆ๋…๋งจ…˜, —ˆ๋ฒ…ง€๋ฐด๋“œ ๋“„ ๋ณด๋‹ค.

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

๊ณต—ฐžฅ—„œ˜ Œ•…ฆ๊ธฐ๋Š”๋ฒ•๊ณผ ‰†Œ‹œ˜ Œ•…ฆ๊ธฐ๋Š”๋ฒ•€ ๋‹ค๋ฅผ •„š”๊ฐ€ žˆ๋Š”๊ฒƒ ๊ฐ™๋‹ค. ๋‹ฌ๋ คš”~!

—๋„ˆง€๊ฐ€ ๋„˜นœ๋‹ค. ‚ฌšด๋“œ๊ฐ€ ๋„˜น˜๋Š” ๊ณณ, ‚ฌ๋žŒด ๋„˜น˜๋Š” ๊ณณ„ ๋ณด๋ฉด.
----
Y ๋กœ ค‘•™˜ UBS ๋ฐฉ†กžฅ๊ณผ ž…๊ตฌชฝ˜ •œด๋ จ ๋ชจž„„ ๋ณด๋ฉด„œ ๋“œ๋Š” ๋ฌ˜•œ ƒ๊ฐด๋ž€.
----
๊ฐœธ œผ๋กœ '๋งŒผ ๋‚ด๊ฐ€ …„ “ด๋‹ค๋ฉด?' •˜๋Š” ‹œผ๋กœ • ๋งค๋™‚ฐ ˜ฌ๋ผ๊ฐ€„œ ๋ฐ”๋žŒ๋ฉฐ ๊ธ€  •๋ฆฌ •ด๋ณด๊ธฐ.

๊ธ€„  •๋ฆฌ•˜๋ฉด„œ '‹ค œ ๋‚ด –‰๋™€ ด •๋„๋กœ ˆ„œ •—ฐ•˜ง€ •Š๋Š”๋ฐ' •˜๋Š” ƒ๊ฐด ๋“œ๋‹ˆ, ๊ธ€„ “ฐ๊ณ  ‹ถง€๊ฐ€ •Š•„„๋‹ค. •œŽธœผ๋กœ๋Š” ๊ธ€„ จ ๋‚˜๊ฐ€๋ฉด„œ –‰๋™„ • ๋•Œ—”, ๋‚ด –‰๋™„ ฒœฒœžˆ ๊ด€ฐฐ•˜๊ณ  –‰๋™„ •˜๋Š” ๊ฒƒ ๊ฐ™€๋ฐ.

๋ณด†ต •™Šต€ '…„ ฝ„๋•Œ' ๊ทธ๋•Œ๋ณด๋‹จ '๋ฌต˜€๋‘—ˆ๋˜ ๊ธฐ–ต„ ๋„ง‘–ด๋‚ผ๋•Œ' ด๋ฃจ–ดง€๋Š”๊ฒƒ ๊ฐ™๋‹ค. ๋˜๋Š” '–‰๋™œผ๋กœ ๋„ง‘–ด๋‚ผ๋•Œ'.
----
ŠฌŠฌ, ๋‹ค‹œ '๊ฐ€๊ณต๋œ ๊ธฐ–ต'๋ชจœผ๊ธฐ ‹œž‘. ๋ชจ๋“  ๊ฒƒ„ ๋‹ค ‘œ‹œ•˜๋Š” •„๋‚ ๋กœ๊ทธ๋ณด๋‹ค๋Š”,  œ–ด•  ˆ˜ žˆ๋Š” ๋””ง€„„ ›•œ๋‹ค.

8›”

7›”

7ผ (ผ): …ƒ •๋ฆฌ.
žฃผ ๋А๋ผง€๋งŒ, Data, Information, Knowledge, Wisdom.  •๋ณด๋ฅผ †Œ๋น„•˜๊ณ  žฌฐฝถœ•˜ง€ •Šœผ๋ฉด. •„ ด๋„˜˜ ๋ฐด„ฐ๋“ค ‚ฌ๋žŒ ”ผ๊ณค•˜๊ฒŒ๋„ •˜๋Š”๊ตฐ;

6ผ († ): ๋‹ฌ๋ฆฌ๊ธฐ.
ง‘—„œ๋ถ€„ข…•ฉšด๋™žฅ๊นŒง€ 25๋ถ„ ๋…ผŠค†›ฐ๊ธฐ.
›ฐ๋Š” ค‘๊ฐ„ †๋„๋ฅผ œ ง€•˜๊ธฐ œ„•ด ๊˜ ๋น„Šท•œ †๋„๋กœ ๋‹ฌ๋ ธ๋‹ค. ๋‹จ, ˜†— ๋‚  ถ”›”•œ ‚ฌ๋žŒ„ ๋ณด๋‹ˆ ๊ฒฝŸ˜‹ด ƒ๊ฒจ„œ ๊ทธ‚ฌ๋žŒ ถ”›”•˜๋А๋ƒ๊ณ  •ฝ๊ฐ„ ˜ค๋ฒ„•œ๊ฐ ๋นผ๊ณค ๋ญ..;
  • ๋ฐฐšด  : ค‘š”•œ๊˜ธก˜ ๋ฆฌ๋“ฌ. ˆ˜˜˜ ๊ฒฝšฐ ๋ฆฌ๋“ฌ ๋ชป๋งžถ”๋ฉด ˆจ๋„ ๋ชป‰ฌง€๋งŒ. †๋„๋ฅผ ๋‚ผ๋•Œ˜ ˜ธก๋ฆฌ๋“ฌ๊ณผ œด‹„ œ„•œ ๋ฆฌ๋“ฌด ๋‹ค๋ฅด๋‹ค.
  •  „๋‚  ง‘— ๋ชป๋“ค–ด๊ฐ€„œ ๊ทธ๋Ÿฐง€ (–ด‘, 64-1 •ผ๊ฐ„๋ฒ„Šค๋Š” 1‹œ ด „— ๋Š๊ธด๋‹ค. น˜‚ฌ•˜๊ฒŒ.. 916๋ฒˆ€ 2‹œ๋˜๋„๋ก 10๋Œ€๋„„˜๊ฒŒ ง€๋‚˜๋‹ค๋‹ˆด๋งŒ ฉ) ๋˜๋Œ•„˜ฌ๋•Œ๋Š” ๋…ผŠค†œผ๋กœ ๋›ง€ ๋ชป–ˆ๋‹ค.
5ผ (๊ธˆ): Seminar:RenaissanceClub20020705 .
ด „— ๋‚˜—๊ฒŒ„œ ˆ ž๋ฆฌ ๋“—„œ Java ๊ธฐˆ ด –ดฉŒ๋„ค ๋งˆ†Œ ๊ธฐ‚ฌ๊ฐ€ –ด๋– ๋„ค, MT ๊ฐ€„œ IMT 2000 ด –ด๋– ๋„•˜๋Š” ด•ผ๊ธฐ๋ฅผ •  ˆ˜ žˆ๋˜ ๊ณณ€ ZP ๋ฐ–— —†—ˆ๋‹ค. ด๋ฒˆ— •˜๋‚˜ ๋” ƒ๊ธธ๊ฒƒด๋ผ๋Š” ๊ธฐ๋Œ€๊ฐ.

4ผ (๋ชฉ): ScheduledWalk/„ฒœ ™„๋ฃŒž‘—….
ฒ˜Œ ๊ณ ๋ ค• ๋•Œ๋ถ€„ฐ ๊ธ€“ฐ๊ธฐ๋ฅผ ๊ณ ๋ ค•˜๊ณ  ž‘„•œ ๋ฌธ„œ๋Š” •„๋‹ˆ—ฌ„œ; (๊ทธ๋ƒฅ †ŒŠค๋งŒ ฃผš ๋ณ€™”๊ณผ •„ ๋ณดด๋ ค๊ณ  –ˆ๋‹ค๋Š”.) ฐจ๋ผ๋ฆฌ ฒ˜Œ๋ถ€„”„๋กœ๊ทธ๋ž˜๋ฐ• ๋•Œ๋งˆ๋‹ค ๋ฐ”๋€๋ถ€๋ถ„— ๋Œ€•ด„œ๋งŒ ๊ณผ •„  –ด๋‚˜๊ฐ”๋”๋ผ๋ฉด.
  • œ„˜ ผ— ๋„ˆ๋ฌด ‹œ๊ฐ„„ ๋งŽด ๋Œ–ด„œ ๋‹ค๋ฅธ ผ๋“ค„ •  ‹œ๊ฐ„ด  –ด ธ๋ฒ„๋ ธ๋‹ค. ‹œ๊ฐ„๊ด€๋ฆฌ‹œ๊ฐ„๊ด€๋ฆฌ.
  • ˜ค๋Š˜๋”ฐ๋ผ ๋ชธด ”ผ๊ณค•จ„ ๊ดญžฅžˆ ๋งŽด ๋А๊ผˆ๋‹ค. ŒŒ›Œ”„๋กœ๊ทธ๋žจด •„š”•˜๋‹ค;
3ผ (ˆ˜): ProjectPrometheus/Journey

1ผ (›”): ScheduledWalk/„ฒœ

StructuredProgramming „ '˜‹ œผ๋กœ', '—ด‹ฌžˆ', '๋๊นŒง€' •ด๋ณธ ฒซ๋ฒˆงธ ˜ˆ œ๊ฐ€ •„๋‹๊นŒ.  „— ˆ˜น˜•ด„ ˆ™ œ• ๋•Œ—” StepwiseRefinement Šคƒ€ผด œ šฉ•˜๊ธด –ˆง€๋งŒ, ง€๊ธˆฒ˜๋Ÿผ ˜‹ œผ๋กœ •˜„ •Š€ ๊ฒƒœผ๋กœ ๊ธฐ–ต•œ๋‹ค.
  • ๋งŒผ ˜–ด๊ถŒ—„œ ‚ด•˜๋˜ ‚ฌ๋žŒด๋ผ๋ฉด ๋” ๋นจ๋ฆฌ ๋งŒ๋“ค—ˆ„…๋ฐ. ผƒ “ฐ๋Š” ๋‹จ–ด๋‚˜ ”„๋กœ๊ทธ๋ž˜๋ฐ๋•Œ˜ •จˆ˜ ด๋ฆ„ด๋‚˜ ๋˜‘๊ฐ™ด ง€„…Œ๋‹ˆ. Œ. žˆ๊ตฌ;

6›”

25 ~ 28ผ (™”~๊ธˆ): ObjectOrientedProgramming „ธ๋ฏธ๋‚˜ ค€๋น„๊ธฐ.

„ธ๋ฏธ๋‚˜ ž๋ฃŒ ค€๋น„ „ ฐฝค€ด˜•œผ๋กœ๋ถ€„—ฌ๋Ÿฌ กฐ–ธ๋“ค„ ๋“ค—ˆ—ˆ๋‹ค. 'Sub Type ๊ณผ Sub Class — ๋Œ€•œ ๊ตฌ๋ถ„— ๋Œ€•ด„œ „ค๋ช…–ˆœผ๋ฉด ข‹๊ฒ ๋‹ค', 'OOP ๋ฅผ •˜๋ฉด ™œ ข‹€ง€ ๋А๋‚„ ˆ˜ žˆ๋„๋ก „ธ๋ฏธ๋‚˜๋ฅผ „–‰•˜๋ฉด ข‹๊ฒ ๋‹ค', '๋ฌธ œ •ด๊ฒฐ— ๋Œ€•œ ‚ฌ๊ณ  ๊ณผ •„ ๋ณด—ฌ„ ˆ˜ žˆœผ๋ฉด ข‹๊ฒ ๋‹ค' ๋“๋“. ๊ตฌ๊ตฌ  ˆ ˆ ƒ๊ฐ•ด๋ณด๋ฉด ฐธ ผ๋ฆฌžˆ๋Š” ด•ผ๊ธฐ๋“คด˜€๋‹ค. ๊ฐœธ œผ๋กœ๋„ „ธ๋ฏธ๋‚˜ ค€๋น„•˜๋Š” ๊ฐ€žฅ ๊ณ •™๋ฒˆด๋‹ˆ ๋งŒผ ž˜ •˜๊ณ  ‹ถ—ˆ๊ณ .
Sub Type ๊ณผ Sub Class — ๋Œ€•ด ž๋ฃŒ๋ฅผ ๋’คง€๋˜ค‘ ฌƒด™€ ๋ฉ”‹  €—„œ ๋Œ€™”•˜๋ฉด„œ '•„..  €๋Ÿฐ  —„œ „ค๋ช…„ •˜‹œ๋ž€ ๋œปด˜€๊ตฌ๋‚˜' •˜๋ฉฐ •ž˜ กฐ–ธ๋“ค— ๋Œ€•œ ค‘š”„„ ธง€–ˆ๋‹ค.

"„ธ๋ฏธ๋‚˜๋‚  –ธ œ๋‹ˆ? ๋‚˜๋„ ฐธ„•˜๋„๋ก •˜ง€."

"—‰; •˜..•˜.."

"™œ? ‹ซ๋‹ˆ?"

"•„.. •„๋‡จ. •˜•˜•˜;"

"›ƒ๋Š”๊ฒƒ ๋ณด๋‹ˆ ข‹€๊ฐ€ ๋ณด๊ตฌ๋‚˜. ^^"

"•„.. šฐ..›ƒŒ—” ๋งŽ€ ˜๋ฏธ๊ฐ€ žˆ๊ณค •˜ฃ . •˜..•˜•˜;"


•˜..•˜•˜; ๊ทธ๋ƒฅ •˜๋˜๋Œ€๋กœ ค€๋น„–ˆ๋‹ค๊ฐ„ ๊นจง€๊ฒ ๊ตฌ๋‚˜; •ฝ๊ฐ„˜ ๋ถ€๋‹ด„ ๊ฐ€ง€๊ณ . ŒŒ. - -;

„ธ๋ฏธ๋‚˜ ค€๋น„

Œ.. ๊ทธ๋Ÿฌ๊ณ  ๋ณด๋‹ˆ ๋‚˜๋Š” ™œ OOP๋ฅผ •˜๋Š”๊ง€? ๊ฐœธ œผ๋กœ ฒ˜Œ ด๋ž˜Šค๋ฅผ ๊ตฌ˜„•˜๋ฉด„œ ฐพ•„๋‚ธ žฅ € ๋‹คŒด˜€๋‹ค.
  1. Global ๋ณ€ˆ˜๋ฅผ “ฐ๊ธด ‹ซ๊ณ , •ˆ“ฐž๋‹ˆ ๋ถˆŽธ•˜๊ณ , Global ๋ณ€ˆ˜๊ธ‰๋‹น ๊ฐฒด•˜๋‚˜”ฉด๋ฉด Žธ•˜๊ฒ ๋‹ค. •˜๋Š”, …Œฌ๋‹‰— ๊ธฐ๋ฐ˜•œ.
  2. Visual C++ —„œ ด๋ž˜Šค๋กœ ๋งŒ๋“ค–ด“ฐ๋ฉด ธ…”๋ฆฌ„Šค ๊ธฐ๋Šฅ ง€›„ ๋ฐ›•„„œ ”„๋กœ๊ทธ๋ž˜๋ฐ •˜๊ธฐ Žธ•˜๋‹ค๋Š”.
ฆ‰, OOP ‹ ‚ฌ๊ณ —„œ˜ žฅ ด •„๋‹Œ, ๊ธฐกด ๊ฐœธŠคƒ€ผ˜ ”„๋กœ๊ทธ๋ž˜๋ฐค‘—„œ˜ žฅ ด˜€๋‹ค. ŠคŠค๋กœ ƒ๊ฐ•˜๊ธฐ—” OOP๋ผ ƒ๊ฐ–ˆ๋˜ ๊ฒƒ๋“ค๋„, •Œ๊ณ ๋ณด๋ฉด OO˜ –ธ–ด๋ฅผ “ธ ๋ฟ, OOP๊ฐ€ •„๋‹ˆ˜€—ˆ๋˜ ๊ฒƒด๋‹ค. „ธ๋ฏธ๋‚˜ค‘ 'OOP ๋กœ •˜๋ฉด ๋ญ๊ฐ€ ข‹•„š”?' ๋ผ๊ณ  ˆ๋ฌธ• ๋•Œ  €๋ ‡๊ฒŒ ๋‹ต•  ˆ˜๋Š” —†๊ฒ ง€.

๋‹ค‹œ 'OOP๋Š” ™œ •˜๋Š”๊ฐ€' — ๋Œ€•œ ˆ๋ฌธ„ •˜๋ฉด„œ ๋‚ด๊ฐ€ ”Œ๋ฐ•˜๋Š” ๋ฐฉ๋ฒ•— ๋Œ€•ด ƒ๊ฐ•˜๊ฒŒ ๋˜—ˆ๊ณ , ๋‚ด๊ฐ€ ”„๋กœ๊ทธ๋ž˜๋ฐ„ •˜๋ฉด„œ œ šฉ•˜๊ฒŒ ดšฉ–ˆ—ˆ๋˜ ‚ฌ๊ณ Šต๊ด€(ผ๋ จง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค  •™••˜๊ฒŒ๋Š”;) — ๋Œ€•ด ƒ๊ฐ•˜๋ฉฐ OOP „ธ๋ฏธ๋‚˜ Šคผ€„ 1ฐจ ˆ•ˆ„ ๋งŒ๋“ค–ด๋ณด๊ธฐ ‹œž‘–ˆ๋‹ค.

  1. ๋ฌด—‡„ • ๊ฒƒธ๊ฐ€ : –ด๋–ป๊ฒŒ •  ๊ฒƒธ๊ฐ€˜ ๊ด€ . ๋‚˜๋Š” ˆ๊ธฐ— •™๊ต  „๊ณต ค‘ Science ™€ Engineeing ˜ ๊ธฐค€„  €๊ฒƒœผ๋กœ ๋‚˜๋ˆ„—ˆ—ˆ๋‹ค. ๋‚ด๊ฐ€ '๋ฌด—‡„ ๊ณต๋ถ€• ๊นŒ?' ๋ผ๊ณ  ˆ๋ฌธ„ • ๋•Œ๋Š” •ž˜ ๋ถ„๋ฅ˜๋ฅผ, '–ด๋–ป๊ฒŒ • ๊ฒƒธ๊ฐ€?' ๋ผ๋Š” ˆ๋ฌธ„ • ๋•Œ๋Š” ๋’ค˜ ๋ถ„๋ฅ˜๋ฅผ. ๋ฐ”๋กœ  šฉ๋˜„ •Š๊ฒ ง€๋งŒ, "OOP ๋Š” '”„๋กœ๊ทธ๋ž˜๋ฐ„ –ด๋–ป๊ฒŒ • ๊ฒƒธ๊ฐ€?' ๋ผ๋Š” ๋ถ„๋ฅ˜— †•œ๋‹ค" ๋ผ๊ณ  ๋ง•ดฃผ๋ฉด ๋จธ๋ฆฟ†—„œ ๋ถ„๋ฅ˜•˜๊ธฐ Žธ• ๊ฒƒด๋ž€ ƒ๊ฐ„ –ˆ๋‹ค.
  2. ๊ฐฒดง€–ฅ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณผ • - OOP๋ฅผ •˜๋ฉด„œ ๋‚˜๋Š” ๊ธฐ๊ณ„๋กœ ๋งŒ๋“ค–ด„ —”„„ ๋– ˜ฌ๋ฆฌ๊ณค •œ๋‹ค. ๋ณผŠธ, ๋„ˆŠธ, ‹ค๋ฆฐ๋”, ฌ๋žญฌ, ๋ฐฐ๊ธฐ๋ฐธ๋ธŒ...  €๊ฒƒ๋“ค„ ๋‹ฆ๊ณ  กฐด๊ณ  ๊ธฐ๋ฆ„ณ๊ฐ€๋ฉฐ ๋งŒ๋“ค–ด๊ฐ€๊ธฐ. ด ๋ถ€๋ถ„„ –ด๋–ป๊ฒŒ „ค๋ช…• ๊นŒ •˜๋ฉด„œ 'ฐจ๋ผ๋ฆฌ ๋ฒก„ฐ ๊ทธ๋ž˜”ฝ ˆ„ ๋งŒ ธ๋ณด๊ฒŒ • ๊นŒ' •˜๋Š” ƒ๊ฐ๋„ •ด๋ดค—ˆ๋‹ค. ค‘๊ฐ„— Python Interpreter ๋ฅผ ๋งŒ ธ๋ณด๊ฒŒ •˜๋Š”๊ฒƒด ข‹๊ฒ ๋‹ค๋Š” ƒ๊ฐ„ –ˆ—ˆ๊ณ , ฐฝค€ด˜•๊ณผ˜  „™”ค‘ ๋”š ๋” ™•‹ „ ๊ฐ€ง€๊ฒŒ ๋˜—ˆ๋‹ค.
  3. ”„๋กœ๊ทธ๋ž˜๋ฐ— ๋Œ€•œ  „๋ฐ˜   ‘๊ทผ - ๋ฌธ œ๋ฅผ Top Down œผ๋กœ ๋‚˜๋ˆˆ๋‹ค๋Š” ๊ด€ . 2•™๋…„๋•Œ DirectX ๋กœ ŠˆŒ… ๊ฒŒž„„ ๋งŒ๋“ค๋•Œ ๊ฐ€๋” ƒƒ•˜๋˜๊ฒƒด „๊ณ ๋กœ ๋งŒ๋“  †„ กฐ๊ฐ•˜๋Š” ๊ณผ •ด˜€๋‹ค. กฐ๊ฐ„ • ๋•Œ—” ฒ˜Œ—  „ฒด  † ๋ชจ–‘„ ๋งŒ๋“ค๊ธฐ œ„•ด ฌ๊ฒŒ ฌ๊ฒŒ ๊นจ ๋‚˜๊ฐ„๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€    „ธ๋ฐ€•˜๊ฒŒ กฐ๊ฐนผ๋กœ ŒŒ ๋‚˜๊ฐ€๋ฉด„œ ž‘’ˆ„ ๋งŒ๋“ค–ด๋‚˜๊ฐ„๋‹ค. ด๋Ÿฐ ‹œผ๋กœ „ค๋ช…•  ˆ˜ žˆ๊ฒ ๊ตฐ •˜๋ฉฐ ถ”๊ฐ€.
  4. Stepwise Refinement - ด๋ฒˆ—  „๊ณผ•œ ‚ฌ๋žŒค‘— ˆ˜•™๊ณผ๊ฐ€ žˆ—ˆ๋˜๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋Ÿฐ ‚ฌ๋žŒ๋“ค—๊ฒŒ ˆ˜•™๋ฌธ œ— ๋Œ€•œ  „๊ฐœ๊ณผ •๊ณผ๋„ ๊ฐ™•„๋ณดด๋Š” ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ‹„ ๋ณด—ฌฃผ๋ฉด ข‹๊ฒ ง€ •˜๋Š” ƒ๊ฐ— •˜๋‚˜ ๊ณจ๋ผ๋ณด•˜๋‹ค. ๊ฐœธ œผ๋กœ ˆ˜น˜•ด„ ˆ™ œ๋ฅผ • ๋•Œ œ šฉ•˜๊ฒŒ จ๋จน—ˆ๋˜ ๋ฐฉ๋ฒ•ด๊ธฐ๋„ •ด„œ.
๊ทธ๋ฆฌ๊ณ  ค‘๊ฐ„ ‹คŠต. '•„.. ๋ฌธ œ ๊ณจ๋ผ•ผ • …๋ฐ...'  œผ ๋ฉ‹ ธ๋ณดด๋˜๊ฒƒ€  „— ๊ธฐ •ด˜•ด ˜ˆ๋กœ ๋“ค—ˆ—ˆ๊ณ , „ šฐ˜•ด ๋ฌธ œ๋กœ ๋งŒ๋“ค—ˆ—ˆ๋˜ Šคƒ€ฌ๋ž˜”„Šธ˜€๋‹ค. ‚ฌ๋žŒ๋“ค—๊ฒŒ ๊ฐ€žฅ นœˆ™•œ ๊ฒŒž„ด๋‹ˆ —ฐ๊ด€„„ ฐพ๊ธฐ—” ข‹œผ๋ฆฌ๋ผ. •˜ง€๋งŒ, ๊ทธ ๊ณ„ธต๋„๋ฅผ ƒ๊ฐ•ด๋ณด๋ฉด ›„๋ฐฐ๋“คด ๋งŒ๋“ค ˆ˜ žˆ„ •๋„๊ฐ€ •„๋‹ˆ๋‹ค. ญ„ „—ฌ•ผง€ –ˆ๋‹ค๊ฐ€ ๋ฌธ๋“, ŒŒดฌ ธ„”„๋ฆฌ„ฐ๋กœ ๊ฐฒด ๋‹จœ„ ž‘—…„ •˜๋Š” ˜ˆ๋กœ จ๋จนœผ๋ฉด ข‹๊ฒ ๋‹ค๋Š” ƒ๊ฐด ๋“ค—ˆ๋‹ค. ˜ค.. šฐ๋ฆฌ๋Š” ๋งคผ ๋งคผ ๊ฐฒด๋ฅผ ๊ฐ€ง€๊ณ  ๋…ธ๋Š”๊ตฌ๋‚˜; ๋ฌธ œ’€๊ธฐ๋ฅผ •˜๋ ค๊ณ  –ˆ๋‹ค๊ฐ€ Šœ† ๋ฆฌ–ผ๋กœ ๋ฐ”๊พธ—ˆ๋‹ค.

„ธ๋ฏธ๋‚˜๋•Œ ๊ธ๋ฆด ‹œ๊ฐ„„ ๋Œ€๊ฐ• žก•„๋ณด๋‹ˆ, ๋‹คŒ๋‚  6‹œ๊นŒง€ ๊˜ Full ๋กœ ๋›–ด•ผ –ˆ๋‹ค. šฐ.. ๋‚ด๊ฐ€ ข€ ๋„ˆ๋ฌด–ˆ๋‚˜ •˜๋Š” ƒ๊ฐด ๋“ค๊ธด –ˆง€๋งŒ, ผ๋‹จ€ ค‘š”•˜๋‹ค๊ณ  ƒ๊ฐ•œ ๊ฐœ๋…๋“ค„ ๋นผ๋จน๊ธฐ๋Š” ‹ซ—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ˆ•ˆ„ ฐฝค€ด˜•—๊ฒŒ ๋ณด—ฌ๋“œ๋ฆฌ๊ณ  กฐ–ธ„ ๊ตฌ–ˆ๋‹ค.

23 ~ 29 : ๋ฐ๋ธ”Šคบ ”„2002/„–‰ƒ™ฉ

3,4,5,7 : ProjectZephyrus/ClientJourney

1ผ († ):
  • DesignPatterns —ฐŠตฐจ ๊ฐ„๋‹จ•˜๊ฒŒ ๊ทธ๋ฆผŒ„ ๊ตฌ˜„•ด๋ด„. ฒ˜Œ ๊ฐ„๋‹จ•˜๊ฒŒ  „๋ถ€ MainFrame class — ๋‹ค ๊ตฌ˜„•˜๊ณ , ๊ทธ ๋‹คŒ Delegation œผ๋กœ  ฐจ ๋‹ค๋ฅธ ด๋ž˜Šค๋“ค—๊ฒŒ —ญ• „ ด–‘•ดฃผ๋Š” ๋ฐฉ๋ฒ•„ จ ๋ณด•˜๋‹ค. ๊ทธ๋Ÿฌ๋˜ ค‘ MFC—„œ˜ WinApp ฒ˜๋Ÿผ Application class ๋ฅผ SingletonPattern Šคƒ€ผ๋กœ ๋ฐ–œผ๋กœ ๋บ—ˆ๋Š”๋ฐ, ๊ณ„† Stack Overflow —๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒƒด˜€๋‹ค. '–ด๋ผ? –ด๋”˜๊ฐ€ ๊ณ„† žฌ๊ท€˜ธถœด ๋˜๋‚˜?..'
๋ฌธ œ๋Š” ๋‹คŒ๊ณผ ๊ฐ™€ ฝ”๋“œ— žˆ—ˆ๋‹ค.
~cpp 
Application.java
    public static Application getInstance () {
        if (theApp == null) {
            theApp = new Application ();
            theApp.init ();
        }

        return theApp;
    }

    public Application () {
        toolManager = new ToolManager ();
        mainFrame = new MainFrame ();
        mainFrame.setSize (640,480);
        mainFrame.show ();
    }

MainFrame.java
    public JMenu _makeToolMenu () {
        JMenu menuTool = new JMenu ("Tool");
        toolActionListener = new ToolActionListener ();
        Enumeration toolList = Application.getInstance().getToolsList();
        String toolName;
        JMenuItem toolMenuItem;

        while (toolList.hasMoreElements()) {
            toolName = toolList.nextElement().toString();
            toolMenuItem = new JMenuItem (toolName);
            toolMenuItem.addActionListener(toolActionListener);
            menuTool.add(toolMenuItem);
        }

        return menuTool;
    }

ฆ‰, Application Class ˜ ธŠค„Šค๊ฐ€ ๋งŒ๋“ค–ดง€๊ธฐ œ„•ด„  MainFrame ด๋ž˜Šค๊ฐ€ ™„„๋˜–ด•ผ •œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, MainFrame —„œ๋Š” Application ˜ ธŠค„Šค๋ฅผ š”๊ตฌ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ— Application˜ getInstance๋ฅผ ˜ธถœ•˜๊ณ , •„ง ธŠค„Šค๊ฐ€ ๋งŒ๋“ค–ดง€ง€ •Š•˜œผ๋ฏ€๋กœ ๋˜ getInstance —„  Application ˜ Class ๋ฅผ ƒˆ๋กœ ๋˜ ๋งŒ๋“ค๋ ค๊ณ  •˜๊ณ  ๋‹ค‹œ MainFrame ด๋ž˜Šค๋ฅผ ƒ„•˜๋ ค •˜๊ณ .. ด๋ฅผ ๋ฐ˜๋ณต•˜๊ฒŒ ๋˜๋Š” ๊ฒƒด˜€๋‹ค.
๊ฒฐ๊ตญ ๋‹คŒ๊ณผ ๊ฐ™€ ฝ”๋“œ๋กœ •ด๊ฒฐ„ –ˆ๋‹ค.
~cpp 
   public static Application getInstance () {
        if (theApp == null) {
            theApp = new Application ();
            theApp.init ();
        }

        return theApp;
    }

    public Application () {

    }

    public void init () {
        toolManager = new ToolManager ();
        mainFrame = new MainFrame ();
        mainFrame.setSize (640,480);
        mainFrame.show ();
    }

Class ˜ —ญ• ๋“ค„ Delegation œผ๋กœ ๋‹ค๋ฅธ ด๋ž˜Šค๋“ค—๊ฒŒ œ„ž„‹œผœฃผ๋ฉด„œ ผ๋˜ Œจ„ด ๋Œ€๊ฐ• ด๋žฌ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
  • SingletonPattern - Application Instance๋ฅผ Global ๊ฐฒด๋กœ. ๊ทผ๋ฐ, ด๋Š” ผžฅผ๋‹จธ๊ฒƒ ๊ฐ™๋‹ค. ž˜๋ชป•˜๋ฉด Application ค‘•™ง‘ค‘ฒด œ๊ฐ€ ๋œ๋‹ค. Application ๋‚ด—„œ Delegation•˜๋Š” ๊ฐฒด๋“คด ๋งŽ€๋ฐ, ๊ทธ ๋•— Application ด ๋„ˆ๋ฌด ค‘๊ฐ„ ๋ฉ”„ง€  „๋‹ฌ—ญ• ๋กœ๋งŒ ž‘šฉ•˜๋Š”๊ฒƒ ๊ฐ™๋‹ค. ๋ญ, FacadePattern ธ–‘ ๋œ๋‹ค๋ฉด ๋ชจ๋ฅด๊ฒ ง€๋งŒ. ด๊ฝ”๋“œ ปคง€๊ณ  ๋‚œ ๋’ค ๋‘๊ณ ๋ณผ ผธ๊ฒƒ ๊ฐ™๋‹ค.
  • StatePattern - Tool „ ƒ—„œ ดšฉ. ˜„žฌ Tool„ ถ”๊ฐ€•˜๋ ค๋ฉด 1. Tool ƒ†. 2. interface ๊ตฌ˜„. ด๋‹ค. ‹คˆ ธ ๊ธฐ๋Šฅ„ •˜๋ ค๋ฉด ˜„žฌ ฝ”๋“œ—„  CommandPattern ๊ณผ ๋ถ™–ด•ผ • ๋“ฏ.
ž‘—…‹œ๊ฐ„€ ๊ทธ๋ฆฌ ๋นก๋นก•˜๊ฒŒ •˜ง€ •Š•„„œ 5‹œ๊ฐ„ฏค ๊ธ๋ ธ๋‹ค. •˜ง€๋งŒ, ค‘๊ฐ„ ๋ฌด—‡„ •ด•ผ • ง€ ๋ชฐ๋ผ„œ ๋ง„ธ ‹œ๊ฐ„€ ๋ณ„๋กœ —†—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. (ฃผ๋กœ ค‘๊ฐ„ MP3 ๋“ฃ๊ธฐ, ›„œ•‘ ๋“ ๋‹ค๋ฅธง“๋“ค„ •ด„œ ˜ค๋ž˜๊ธ๋ ธ๋‹ค๋Š”;)

5›”

24ผ (๊ธˆ), 27ผ (›”):
19ผ (ผ):
10ผ (๊ธˆ):
8ผ (ˆ˜):
  • SE ‹œ๊ฐ„— CBD (CBD & Business ๋ผ๋Š” ธก๋ฉด. 3๊ฐ• —ฐ†) ๋ฅผ ๋ฐฐšธ๋•Œ๋งˆ๋‹ค ๋А๋ผ๋Š”  ด žˆ๋‹ค๋ฉด, ๋‹ค๋ฅธ ๊ณต•™ (๊ธฐ๊ณ„,  „ž, ๊ถ•) ๋“ค˜ ๊ฐœ๋…๋“ค„ ดšฉ•˜—ฌ Software ๋ฅผ Hardware ™” ‹œ‚จ๋‹ค๋Š” ๋А๋‚Œด ๋“ ๋‹ค. ๋Š˜ '‘œค€' „ ๊ฐ•กฐ•˜‹œ๋Š” ๊ตˆ˜๋‹˜. ปดฌ๋„ŒŠธชฝ๊ณผ QAชฝ—„œ ๊ทธ ด๋ฆ„ด ๋น ˆ ˆ˜ —†๋Š” ๊ตˆ˜๋‹˜ด‹œ๊ธฐ—, ๊ทธ๋ฆฌ๊ณ  ‰†Œ ˆ˜—…๋•Œ ž‹ ˜ ๋‚˜ด๋งŒผ —ฐ๋ฅœžˆœผ‹  ๋ง”€„ •˜‹œ๊ธฐ— ๋งˆŒด ”๋“ค๋ฆฌง€ •Š„ ˆ˜ —†๊ณ , ๊ฒฐ๊ตญ '†๋‹ˆ๋ฐ”€ด๋“ค ค‘ •˜๋‚˜'๋ผ๋Š” ƒ๊ฐ„ •˜๊ณ  ๋‚˜๋ฉด •ฝ๊ฐ„ •œŠค๋Ÿฝ๋‹ค. ๊ทธ๋ž˜„œ ๊ตˆ˜๋‹˜๊ป˜„œ๋Š” ๋Š˜ 'Domain Expert' & 'Speciality' ๋ฅผ ๊ฐ•กฐ•˜‹œง€๋งŒ.
    • ด๋•Œฏค •ด•ผ •  ˆ๋ฌธด '๊ทธ ๋‹คŒ— • ผ€?' ด๊ด๋งŒ. ž ‹œ๋งŒ ๋ณด๋ฅ˜.
  • Wiki „ค๋ช…šŒ๋•Œ ๋А๋‚€ JuNe „ ๋ฐฐ— ๋Œ€•œ ๋ถ„„ (NoSmok:AnalyzeMary) - –ด๋–ป๊ฒŒ •˜๋ฉด ๋ณ„ ๊ด€‹ฌ—†–ด•ด๋ณดด๋Š” ‚ฌ๋žŒ๋“ค๋กœ๋ถ€„ˆ๋ฌธ„ œ ๋„•ด๋‚ด๊ณ  ๋ฐ˜‘„ ๋Œ–ด˜ฌ ˆ˜ žˆ„๊นŒ?  •๋ง ‹ ๊ธฐ•œ ๊ฒฝ—˜ด˜€๋‹ค. ฒ˜Œ—๋Š” ๊ทธ๋ƒฅ ๋ณ„ ƒ๊ฐ—†–ด ๋ณดด๋˜ ‚ฌ๋žŒ๋“ค๋„ „ค๋ช…˜ Turn („ค๋ช… ๋‚ดšฉ๋ณ„๋กœ •ฝ๊ฐ„•ฝ๊ฐ„ ๋‹จ๋ฝด. ค‘๊ฐ„ Feedback „ ‚ด”ผ๊ณ , ๋‹ค‹œ ƒˆ๋กœšด „ค๋ช…„ •˜๋Š” ๋ชจŠต) ด ฆ๊ฐ€•จ— ๋”ฐ๋ผ ŠคŠค๋กœ 'ˆ๋ฌธ' „ •˜๊ฒŒ ๋˜—ˆ„๊นŒ.
    • ๋ชฉ†Œ๋ฆฌ †ค & †๋„ - ด๋Š” ‚ฌ๋žŒ๋“ค˜ ง‘ค‘๋„— –ด๋А •๋„ ˜–ฅ„ ๋ผนœ๋‹ค๊ณ  ƒ๊ฐ. ๋˜•œ ด๊ฒƒ€ ž‹ ๊ฐ˜ ฒ™๋„ธ๊ฒƒ ๊ฐ™๋‹ค. ž‹ ๊ฐ—†ด๋Š”   ˆ•œ †๋„กฐ ˆ„ ๋ชป•˜๊ณ , ๋ชฉ†Œ๋ฆฌ ฌ๊ธฐ๋ฅผ •Œ๋งž๊ฒŒ กฐ ˆ•  ˆ˜ —†๋‹ค.
    • ๋‚ดšฉ˜  ‘๊ทผ๋ฐฉ๋ฒ• - ˆ๋ฌธ„ ๋˜ง€๊ณ , ๋‚ดšฉ„ ด•ผ๊ธฐ•˜๊ณ , ๋˜ ˆ๋ฌธ„ ๋˜ ธ๋ณด๊ณ ... XP˜ TDD๋ฅผ ๋ณด๋Š” ๊ฒƒ ๊ฐ™€๋ฐ, ด ๋˜•œ ๋ฐฉ๋ฒ•ธ ๊ฒƒ ๊ฐ™๋‹ค. Feedback „ ‚ด•€๋‹ค๋Š”  —„œ.
    • ๋‹ค–‘•œ ๊ฒฝ—˜ - ๋‚ดšฉ„ ๋งŒ๋“ค–ด๋‚ด๋ ค๋ฉด, ๊ทธ๋งŒผ ๊ฒฝ—˜ด •„š”•˜๊ธฐ—. „žฅ๊ณ„๋‹จด๋ผ๋˜๊ฐ€, ž‹ ด '๋ฐฐšด' ๋‚ดšฉ„ ' šฉ' •ด๋ณผ ˆ˜ žˆ๋Š” „ฐ๋กœ„œ ดšฉ•œ๋‹ค๋˜๊ฐ€, Refactoring ๊ณผ ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋ฐœ˜ ๊ด€ —„œ „ค๋ช…•œ๋‹ค๋˜๊ฐ€ ๋“๋“ (ด๊ฒƒ๊ฐ™€ ๊ฒฝšฐ ๋‚ดšฉ„ •Œ๊ณ  žˆ–ด๋„, ‚ฌ๋žŒ๋“ค˜ ๋ ˆ๋ฒจ— ๋งžถฐ•ผ •˜๊ธฐ๋•Œ๋ฌธ—   ˆ•˜๊ฒŒ ๊บผ๋‚ผ ƒ€ด๋ฐ„ ๋งžถฐ•ผ • ๊ฒƒ ๊ฐ™€๋ฐ. ด•ผ๊ธฐ๊ฐ€ ˜๋Ÿฌ๊ฐ€๋ฉด„œ Ž˜ดง€ ๊ตฌกฐกฐ •, Refactoring œผ๋กœ๊นŒง€˜ ด•ผ๊ธฐ๋ฆ„ „๊ฐœ. –ด๋–ป๊ฒŒ ˜๋Ÿฌ˜จ๊ธ๊นŒ.)

4ผ († ):
  • •™๊ต—„œ ๋ ˆฌŠธ๋ฅผ “ฐ๊ธฐ œ„•ด (ProgrammingLanguageClass/Report2002_2) ๋„„œ๊ด€— ๋“ค๋ ธ๋‹ค. HowToReadIt ˜ ๋ฐฉ๋ฒ•ค‘ ๋‹ค๋…— ๊ด€•œ ๋ฐฉ๋ฒ•„ ๋– ˜ฌ๋ฆฌ๋ฉด„œ •ฝ๊ฐ„ ๋น„Šท•œ ‹œ๋„๋ฅผ •ด๋ดค๋‹ค. (˜ค. ๋ฐฉ๋ฒ•๋“ค žฒด๊ฐ€ Extreme~ •ด๋ณดธ๋‹ค;) 1‹œ๊ฐ„ 30๋ถ„ ๋™•ˆ Java … ๊ธฐˆ„œ 2๊ถŒ๊ณผ ›„œ 1๊ถŒ, VB… 3๊ถŒ •๋„๋ฅผ ›‘–ดฝ—ˆ๋‹ค. (10—ฌ๊ถŒ๊นŒง€๋Š” —„๋‘๊ฐ€ •ˆ๋‚˜„œ; ๋„„œ๊ด€ด 3‹œ๊นŒง€๋ฐ–— •ˆ•˜๋Š” ๊ด€๊ณ„๋กœ) ˜ˆ „— ž๋ฐ”๋ฅผ •˜๊ธด –ˆ—ˆง€๋งŒ,  œ๋Œ€๋กœ •œ ๊ธฐ–ต€ —†๋‹ค. ฒ˜Œ—๋Š” ›„œ™€ ๊ณ ๊ธ‰„œฒ˜๋Ÿผ ๋ณดด๋Š” ๊ฒƒ„ ฝœผ๋ ค๋‹ˆ๊นŒ ๋จธ๋ฆฌ— ž˜ •ˆ๋“ค–ด™”๋‹ค. ๊ทธ๋ž˜„œ ๊ฐ€žฅ ‰ฌ›Œ๋ณดด๋Š” ๊ธฐˆ„œ (•Œ๊ธฐ‰ฌšด Java2, Java2 ž๋ฐ”† ”ผ•„ ๋“ ๋‘๊ป˜ –‡€ •œ„œ๋“ค) ๋ฅผ ฝ๊ณ „  ฝ–ด๊ฐ€๋‹ˆ๊นŒ ๊ฐ€†ด ๋ถ™–ด„œ ฝ๊ธฐ ‰ฌ› ๋‹ค. 3๋ฒˆงธฏค ฝ–ด๋‚˜๊ฐ€๋‹ˆ๊นŒ Event Listener ˜ Delegation ˜ ˜๋ฏธ๋ฅผ  œ๋Œ€๋กœ ด•ด•œ ๊ฒƒ ๊ฐ™๊ณ  (˜ˆ „—๋Š” †ŒŠค ๋”ฐ๋ผน˜๊ธฐ๋งŒ –ˆ—ˆ๋‹ค.) StatePatternœผ๋กœ˜ „™” („™”๋ณด๋‹จ 'ถ”›„ ‘' ด ๋” ๋งžœผ๋ ค๋‚˜) ๊ฐ€ šฉด•œ ๊ตฌกฐผ ˆ˜ žˆ๊ฒ ๋‹ค๋Š” ƒ๊ฐ„ •˜๊ฒŒ ๋˜—ˆ๋‹ค. (Event Listener —„œ ž‘„–ˆ๋˜ ฝ”๋“œ๋ฅผ กฐ๊ธˆ๋งŒ Refactoring •˜๋ฉด ๋ฐ”๋กœ StatePattern œผ๋กœ  šฉ„ ‹œ‚ฌ ˆ˜ žˆ„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ƒ๊ฐด ๋“ค—ˆ๋‹ค. •„ง ๊ตฌ˜„•ด๋ณด„ •Š•˜๊ธฐ ๋•Œ๋ฌธ— ๋ญ๋ผ • ๋ง€ •„๋‹ˆง€๋งŒ.) ‹œ๊ฐ„ด žˆ—ˆ๋‹ค๋ฉด •˜๋ฃจข…ผ ‹œ๋„•ด๋ณด๋Š”๊ด๋ฐ •„‰ฝ๊ฒŒ๋„ •™๊ต— ๋Šฆ๊ฒŒ ๋„ฐฉ•ด„œ;
    • ˜ˆ „— –ˆ—ˆ๋˜ ผด MFC … •œ๊บผ๋ฒˆ— ฝ๊ธฐ˜€๋Š”๋ฐ, ๊ทธ๋•Œ ดƒ—ฝ”จ … (bible, 2ฃผ™„„, 5Œ ™„๋ฒฝ๊ฐ€ด๋“œ)ด๋ž‘ Jeff Prosise ˜ … ๋ฒˆ—ญŒ„ ๊ฐ™ด ฝœผ๋ฉด„œ ดƒ—ฝ”จ…˜ žฅ ๊ณผ Jeff •„ €”จ (?) …˜ žฅ „ ๊ถ๋ฆฌ–ˆ—ˆ—ˆ๋‹ค. •œŽธ€ ‹ค œ –ด๋А •๋„ VC++ Programming „ •˜๊ณ  ๋‚œ๋’ค—˜ Tip ๋“คด๋ผ •œ๋‹ค๋ฉด, •œŽธ€ API Programming „ „ญ๋ ต•˜๊ณ  ๋‚œ ๋‹คŒ MFC๋ฅผ ฐจ๊ทผ ฐจ๊ทผ ด•ด•ด๋‚˜๊ฐ€๋Š” ๊ณผ •„ „ค๋ช…•œ๋‹ค๊ณ  •ด•ผ • ๊นŒ. MFC๋ฅผ ฒ˜Œ •˜๊ณ  ๋‚œ๋’ค 'ปด“จ„ฐ๊ฐ€–ˆ๋‹ค ˜ ๋‹น˜น๊ฐ„ ™„๋ฒฝ๊ฐ€ด๋“œ •ž๋ถ€๋ถ„ MFC Framework „ค๋ช…๊ณผ Jeff ˜ …œผ๋กœ •ด๊ฒฐ•  ˆ˜ žˆ—ˆ๋˜ ๊ธฐ–ตด žˆ๋‹ค.

1ผ (ˆ˜):
  • SE - UML. ๋ฏธ๋ฆฌ  ‘•œ ๋‚ดšฉด๋ผ ƒ๊ฐ๋˜–ด„œธง€ ๊ธดžฅ๊ฐด ๋–จ–ดกŒ๋‹ค. 80-100 —ฌžฅ˜ PPT๋ฅผ 1‹œ๊ฐ„ •๋„— ๋‹ค „ค๋ช…•˜‹œ๋Š” ๊ตˆ˜๋‹˜„ ๋ณด๋ฉด PL ‹œ๊ฐ„๊ณผ ฒœง€ฐจด๋‹ค. (PL๋Š” 1‹œ๊ฐ„— 6~12žฅ;)
  • Numerical Analysis Report ™€ OS Report ๋ฅผ •˜๋А๋ƒ๊ณ  ๊˜ ๋ฐค„ ƒœ๋Š”๋ฐ ('๊˜' ธ ดœ ๋Š”, ค‘๊ฐ„— –ธ œ žค๋Š”ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค๋Š”  ; OS — ๋Œ€•œ Design ๊ทธ๋ฆฐ ข…ด๊ฐ€ žˆ๊ธด •œ ๊ฒƒ ๋ณด๋ฉด ๋ถ„๋ช… OS Report ๋ฅผ •˜๋Š” ค‘๊ฐ„ด˜€๋˜๊ฒƒ ๊ฐ™€๋ฐ; ด๋ถˆ๋„ ž˜ ๋ฎ๊ณ  ž”๊ฒƒ ๋ณด๋ฉด ‹ ๊ธฐ•˜๊ธด •˜๋‹ค;;) NA ˆ™ œ— ๋Œ€•œ Quality Management — ๋Œ€•œ ‹คŒจ๋ผ๊ณ  •ด•ผ • ๊นŒ. ‹œ๊ฐ„ กฐ ˆ„ •˜๊ณ  OS Report — ‹œ๊ฐ„„ ๋” ˆž•  ๋ฐฉ๋ฒ•ด žˆ—ˆŒ—๋„ ๋ถˆ๊ตฌ•˜๊ณ  กฐ๊ธˆ •„‰ฝ๋‹ค. ˜ฌ•ด˜ ™”๋‘๋Š” ๊ฐœธ  ‹œ๊ฐ„๊ด€๋ฆฌ๋Šฅ๋ ฅ๋ฐฐ–‘ด ๋ ๊ฒƒ ๊ฐ™๋‹ค. (99•™๋ฒˆ. 3•™๋…„ด ๋˜๋„๋ก ด๋ชจ–‘ด๋‹ˆ ๋ถ€๋„๋Ÿฝ๋‹ค;)
  • Simple Design — ๋Œ€•ด„œ ๋‚ด๊ฐ€ ž˜๋ชป ƒ๊ฐ•œ ๊ฒƒ ๊ฐ™๋‹ค. Up-Front Design žฒด๋ฅผ ๊ตฌฒด œผ๋กœ ๋“ค–ด๊ฐ”„๋•Œ –ผ๋งˆ๋‚˜ ๋ณตžก•  ˆ˜ žˆ๋Š”ง€๋„ ๋ชจ๋ฅด๋ฉด„œ ฒ˜Œ๋ถ€„ฐ Simple Design „ ๋…ผ• ˆ˜ žˆ„๊นŒ •˜๋Š” ƒ๊ฐ๋„ •ด๋ณธ๋‹ค. ƒ๊ฐ•ด๋ณด๋‹ˆ, —ฌƒœ๊ป ๋‚ด๊ฐ€ ๊ทธ๋ฆฐ  „ฒด UML Class Design € ๊˜ ๋‹ค Simple Design ด๊ฒ ๊ตฐ. -_-; (Interface ๋“ค Method ด๋ฆ„๋„ ๊ฒฐ • •ˆ–ˆœผ๋‹ˆ๊นŒ.)
  • ๋ฐ€๋ฆฌ๋Š” To Read Later๋ฅผ ๋ณด๋ฉด„œ ๋‹ค‹œ๊ธˆ ๋‹คง„;

4›”

15ผ (›”):
  • ˆ˜•™๊ณต๋ถ€ žฌ๊ฐœค‘. ๊ทน•œ & —ฐ† & ๋ฏธ๋ถ„ ๋‹ค‹œ ๋ณด๋Š”ค‘. กฐ๊ธˆ ๊ธ‰žˆ ๋จน๊ณ  žˆ–ด„œ ฒด• ๊นŒ๋ด •ฝ๊ฐ„ •๋จ. ˆ˜ง„ ด ๋Œ€ˆ˜•™๊ณผ ๊ธฐ•˜•™˜ ๊ตฐจ ด๋ผ๋Š” ๋งด ธƒ๊นŠ—ˆ๋‹ค. (ด ๋งด ๋‚˜˜ค๊ธฐ  „— ๋‹ค๋ฅธ ‚ฌ๋žŒ๋“ค˜  •๋ฆฌ๊ฐ€ —ฌ๋Ÿฌ๊ฐœ ๋‚˜™”๋‹ค. ‹คˆ˜๊ณ„™€ ˆ˜ง„ ด ๊ทธ ˆœ„œ— ๋งž๊ฒŒ 1:1๋งคนญด ๋œ๋‹ค๋Š” ๊ฒƒ๋ถ€„ฐ. •„. „ธ๊ณ„™€ „ธ๊ณ„๊ฐ€ —ฐ๊ฒฐ๋˜๊ธฐ๋ž€ ‰ฝง€ •Š๋„๋‹ค.)
  • ๋‚ด๊ฐ€ ‹œ๊ฐ„ ๊ณ„‚ฐ— ๊ทธ๋ ‡๊ฒŒ ˆฒ •˜ง€ ๋ชป•˜๋‹ค๋Š”   ๋ฐœ๊ฒฌ. ๋‹ค๋ฅธ ‚ฌ๋žŒ Pair • ๋•Œ๋Š” ๊ธ๋ฆฐ ‹œ๊ฐ„ฒดฌ —ด‹ฌžˆ –ˆด๋งŒ,  •ž‘ ๋‚ด๊ฐ€ “ฐ๊ณ  žˆ๋Š” ‹œ๊ฐ„„  œ๋Œ€๋กœ ๊ธฐ๋ก•˜ง€ ๋ชป•˜˜€๋‹ค. (ง€๊ธˆ 1‹œ๊ฐ„ •๋„๋ฅผ ๊ณ„š— —†๋Š” ผ๋กœ ˜ค๋ฒ„ค‘;;)
  • ด„˜ ๊ธฐ๋Šฅ„ ๋‹ค‹œ ฝŒ.
  • SWEBOK Software Construction ๋ถ€๋ถ„ •œ๋ฒˆ •๋ฆฌ. Software Design Part๋Š” ๊ทธ๋ž˜๋„ ๋งˆŒ— ๋“ค—ˆ—ˆ๋Š”๋ฐ, Construction € ๋ถ„๋ฅ˜ ๋ถ€๋ถ„ด ๋ง˜— •ˆ๋“ค–ด•˜๋Š”ค‘. SWEBOK ด žˆ๋Š” ดœ ๊ฐ€ •ด๋‹น Knowledge Area — ๋Œ€•ด„œ ผข…˜ ด•ด˜ ‹€„  œ๊ณต•˜๋Š” ๊ฒƒธ๋ฐ, ด๋ฒˆ •„ฐ๋Š” ๊ทธ —ญ• „  œ๋Œ€๋กœ •˜ง€ ๋ชป–ˆ๋‹ค๋Š” ƒ๊ฐด ๋“ ๋‹ค. ๋‹ค๋ฅธ …„ ฐพ•„๋ณด๋˜ง€ ผ๋‹จ ๊ด๋„ˆ›ฐ๋˜ง€ •ด•ผ๊ฒ ๋‹ค. ๊ทธ๋ž˜๋„ ผ๋‹จ ๋‚ดผ„ œ„•ด •œ๋ฒˆ๋”;
16ผ (™”):
  • Operating System Concepts. Process ๊ด€๋ จ  „๋ฐ˜ œผ๋กœ ›‘–ด๋ด„. ๋™๊ธฐ™” ๋ฌธ œ๋‚˜ ๋ฐ๋“œ๋ฝ ๊ฐ™€ šฉ–ด๋“ค€ ด „— Client / Server Programming • ๋•Œ Šค๋ ˆ๋“œ ๋™๊ธฐ™” ๋ถ€๋ถ„„ •˜๋ฉด„œ  ‘•ด๋ณธง€๋ผ ๋น„๊ต  นœˆ™•˜๊ฒŒ ๋‹ค๊ฐ€™”๋‹ค. (Process ๋‚˜ Thread ๋‚˜ ๋™๊ธฐ™” ๋ถ€๋ถ„— ๋Œ€•ด„œ๋Š” ๊˜ ๋‹ค๋ฅผ๋ฐ” —†–ด๋ณดธ๋‹ค.)
    • ข€ ๋” ฒด๊ณ„ œผ๋กœ ๊ณต๋ถ€•  ˜ˆƒ „–‰ Chapter ๋ฅผ  ๋Š” ๊ฒƒด ๋” ๋ชฉ‘œ๊ฐ€ ๋ช…‹œ œผ๋กœ ๋ณดผ๊ฒƒ ๊ฐ™๋‹ค. (ด๊ฒƒ€ '๋ชฐž…˜ ฆ๊›€' —„œ˜ ๋ชฐž…•˜๊ธฐ ‰ฌšด ˜•ƒœ๋ฅผ ๋งŒ๋“ค–ด „๊ฒƒด๋ผ ƒ๊ฐ•œ๋‹ค. ๊ทผ๋ฐ, ด๋ฏธ ด๋Ÿฐ๊ฐ ๋‹ค ๊ณ„‚ฐ•˜๊ณ  žˆ๋‹ค๊ณ  •Œ๊ณ žˆ๋Š” ƒƒœ—„œ๋„ ๋ชฐž…ด ๋˜๋ ค๋‚˜;)
    • SWEBOK —„œ๋Š” MindMap ด ž˜  šฉ๋˜—ˆ—ˆ๋Š”๋ฐ, OSC —„œ๋Š” ˜คžˆ๋ ค ConceptMap ‹  ‘๊ทผด ๋” šฉด•ด๋ณด˜€๋‹ค. ด๊ฒƒ๋„ …˜ Šคƒ€ผ— ˜–ฅ„ ๋ฐ›„๋“ฏ. (๊ธฐกด˜ SWEBOK ‹ ƒ€„—  –€ Index-Hierarchy Šคƒ€ผด ๋ฌธ œ๊ฐ€ žˆ๊ธด •˜๋‹ค.)
  • SWEBOK Construction ๋ถ€๋ถ„ •œ๋ฒˆ ๋” ๋ด„. •˜ง€๋งŒ —ฌ „žˆ ๋งˆŒ— •ˆ๋“ค–ด•˜๋Š”ค‘; (ƒ๋ฏผ“ฐ ๋งฒ˜๋Ÿผ '˜–ด๋กœ ๋œ ๋™™”… ฝ๊ณ  „ตŠค”ผ–ด ˜๋ฌธŒ ฝ–ด•ผ' ด•ด•˜๋Š” ๋‚ดšฉด—ฌ„œ ๊ทธ๋Ÿฐ๊ฐ€;) Code Construction € •„๋ฌด๋ž˜๋„ Design ˜—ญด๋‚˜ Test ˜—ญ— ๋น„•ด„œ art (˜ˆˆ  ๋˜๋Š” ๊ธฐˆ )  ธ ธก๋ฉดด ปค„œ ๊ทธ๋Ÿฌ๋ ค๋‚˜. ด๊ด ๋‹ค๋ฅธ ๋ ˆผ๋ŸฐŠค๋ฅผ ๋ณด๋Š” ๊ฒƒด ๋‚˜„ ๊ฒƒ ๊ฐ™๋‹ค. •œ๊ณ„๋ฅผ ƒ๊ฐ•˜ž.
17ผ (ˆ˜):
  • ๋‹คน˜๋ฐ”๋‚˜ ๋‹คนด‹œ˜ … ฝŒ. ๋ฒ„Šค •ˆ—„œ  ˆ๋ฐ˜ (ผ๋ฐ˜ ธ …‚ฌดˆ ๊ธฐค€ ๊ฐ€๋ฒผšด ๋‚ดšฉ๊ธฐค€œผ๋กœ ‹œ๊ฐ„๋‹น 100Ž˜ดง€๋Š” ฝ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.)ฏค ฝ๊ณ , ง‘—„œ 1‹œ๊ฐ„ 10๋ถ„ •๋„ จ„œ ๋‚˜๋จธง€๋ฅผ ๋‹ค ฝ—ˆ๋‹ค. (ด๋ฒˆฃผ๋‚ด๋กœ  •๋ฆฌ & ๊ธ€ ˜ฌ๋ฆฌ๊ธฐ)
    • ธƒ ๊นŠ—ˆ๋˜ ๋‚ดšฉ ๋Œ€๊ฐ•: 'ƒ,‚ฌ, ‹ ๋น„ ฒด—˜' —„œ ˜•™šฉ–ดค‘ 'ๆ‰€ๅœจ่ญ˜' ด๋ผ๋Š” ๊ฒƒด žˆ๋‹ค๊ณ  •œ๋‹ค. ๋ณ‘›—„œ ™˜ž˜ ˜‹ˆ˜ค€ด    ๋‚ฎ•„ง€๊ณ  žˆ„ ๋•Œ ๊ทธ ˆ˜ค€„ ๊ฒ€‚ฌ•˜๊ธฐœ„•ด ๋‹คŒ๊ณผ ๊ฐ™€ ˆ๋ฌธ„ •œ๋‹ค.
  • '—ฌ๊ธฐ๋Š” –ด๋””ž…๋‹ˆ๊นŒ?'

    '๋‹น‹ € ๋ˆ„๊ตฌž…๋‹ˆ๊นŒ?'

    'ง€๊ธˆ€ –ธ œž…๋‹ˆ๊นŒ?'

๊ณต๊ฐ„ , ‹œ๊ฐ„ , ๊ทธ๋ฆฌ๊ณ  ž๊ธฐž‹ — ๋Œ€•œ ๋ณธˆ  ˆ๋ฌธ๋“ค. ™˜ž๋ฅผ '„๋‹จ' •˜๋“ฏด ๋‚˜๋ฅผ '„๋‹จ' •˜๋Š”  € ˆ๋ฌธ— ๋Œ€•ด ๋‚˜๋Š” –ด๋–ค ๋‹ต„ ๋‚ด๋ฆด๊นŒ? –ธ œ๋‚˜ ๋‚˜๋Š” ˆ๋ฌธ— ๋Œ€•ด ๊ฒฐ๋ก „ ๋‚ด๋ฆฌง€ •Š๋Š”, ‘œ˜„•˜ง€ •Š๋Š” Read-Only User˜ œ„น˜— žˆ๋Š” ๊ฒฝšฐ๊ฐ€ ๋งŽ•˜๋‹ค. ๊ณผ—ฐ ๋‚˜๋Š” –ด๋–ค ๋‹ต„ ๋‚ด๋ฆด๊นŒ? ( € ๊ธ€—„œ˜ '๋‚˜'™€ ง€๊ธˆ ด ๊ธ€„ “ฐ๋Š” '๋‚˜'๊ฐ€ ๊ฐ™€ ‚ฌ๋žŒด •„๋‹ˆ๋ผ๋Š” ๋А๋‚Œด ๋“œ๋Š” ดœ ๋Š” ๋ญ˜๊นŒ.)
  • OSC  „ฒด œผ๋กœ ›‘–ด๋ณด๊ธฐ 2ฐจ (›‘–ด๋ณด๊ธฐ๋กœ ๋Œ€๋žต 2‹œ๊ฐ„ ดšฉ). … žฒด๊ฐ€ ž˜ ๋งŒ๋“ค–ดกŒ๋‹ค๋Š” ƒ๊ฐด ๋“ ๋‹ค. 'Concept' — ถฉ‹ค•˜๋‹ค. …— ๋Œ€•œ  „๋ฐ˜ ธ ‹œ•ผ๋Š” žกžŒ ๊ฒƒ ๊ฐ™๋‹ค.
    •  „๋ฐ˜ ธ OS ž‘๋™›๋ฆฌ๊ฐ€ 1,2žฅ— ๊ณ.
    • Process Management ๊ฐ€ 3,4,5,6,7— ๊ณ. ‹œ—˜๋ฒ”œ„๋Š” Process Synchronization ๊นŒง€.
    • Memory Management
    • I/O Management
  • ๋ฌธ œ : ˜ค›„ ™ฉ๊ธˆ‹œ๊ฐ„— 4‹œ๊ฐ„ด๋‚˜
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:05
Processing time 0.2935 sec