U E D R , A S I H C RSS

Project Prometheus/Journey

ProjectPrometheus μž‘μ—… 수기. ThreeFs 에 따라. κ·Έλ‚ μ˜ ν•œμΌκ³Ό λŠλ‚€μ , κ΅ν›ˆ 등을 μƒκ°ν•΄λ³΄λŠ” μ‹œκ°„κ°€μ§€κΈ°. μˆœκ°„μ„ μ±„μ§‘ν•˜κ³  λΌκ°ν•  수 μžˆλ„λ‘.

10.12 (ν† )

10.3 (λͺ©)

  • 검색 κ΄€λ ¨ μ—λŸ¬λ©”μ„Έμ§€ 좜λ ₯.
  • ZeroPage 에 Release. κ΄€λ ¨ Ant Build 화일 μž‘μ„±
  • νŒ¨ν‚€μ§€ 뢄리, 디렉토리 정리.

  • νŒ¨ν‚€μ§€ λΆ„λ¦¬λΌ ν•˜κ³ , κ΄€λ ¨ 경둜 화일듀을 μˆ˜μ •μ„ ν•˜λ©΄μ„œ, 쀑볡이 μ—†λŠ” μ½”λ“œκ°€ μ–Όλ§ˆλ‚˜ κ°•λ ₯ν•œμ§€κ°€ 보인닀. 정말정말 κ³ μΉ  뢀뢄이 많이 μ„μ–΄λ“ λ‹€. (μ‚¬λžŒμ΄κ±΄ 툴이건 덜 κ³ μƒν•˜κ²Œ λœλ‹€.)

  • μœˆλ„μš°μ—μ„œ μž‘μ—…ν•œ Java 화일이 μ˜μ™Έλ‘œ ν•œλ°©μ— Ant 둜 λΉŒλ“œν•˜κ³ , ZeroPage 의 Resin μ„œλ²„μ—μ„œ λ™μž‘ν•˜λŠ” 것을 보며, λ‹€μ‹œκΈˆ μžλ°”μ˜ μœ„λ ₯이 μ‹€κ°λ‚œλ‹€.
  • 메인 μ½”λ“œλΌ μž‘μ„±ν•˜κ³  μžˆμ„λ•Œμ—λŠ” 'ν™”μΌλ‘œ λΉΌμ•Ό ν•  거리' 듀이 μ•ˆλ³΄μΈλ‹€. ν•˜μ§€λ§Œ, μ΄λΈ μ»΄νŒŒμΌ 되고 ꡳ어져버린 μ œν’ˆμ„ μ“Έλ•Œμ—λŠ” 'ν™”μΌλ‘œ 뺐어야 ν•˜λŠ” 거리' 듀이 보인닀. λ°μ΄ν„°μ£Όλ„μ κΈ°λ²•μ˜λ§ˆλ²• μ΄μ˜€λ˜κ°€. 뭐, λΈλ¦¬ 머리 μŠ€νŒ€λ‚΄λ©° ν•΄λ‘λŠ” 것은 YAGNI μ΄κ² μ§€λ§Œ, λˆˆμ— 빀히 λ³΄μΌλ•Œμ—λŠ”. 뭐, μ•žμœΌλ‘œ ν•΄μ„거리. (Property class κ°€ μ€ λ” ν™•μž₯될 수 μžˆμ„λ“.)

  • μ›λž˜λΌλ©΄ 방학쀑 ν•œλ²ˆ Release ν•˜κ³  μ§€κΈˆ λ‘λ²ˆμ§Έ 이상은 Release κ°€ λ˜μ–΄μ•Ό κ² μ§€λ§Œ. Chaos (?)의 영ν–₯도 있고. -_-; μ•”νŠΌ 두달간 μž₯μ •μ—μ„œ 이제 λ­”κ°€ ν•œλ²ˆ ν•œ λŠλ‚Œμ΄ λ“ λ‹€. μ΄ˆλ°˜μ—λŠ” λ‹¬μ•„μ˜€λ₯΄λŠ” μ—΄μ •μ΄λ˜, ν›„λ°˜μ€ λˆκΈ°μ΄λ‹€. 쀑간에 λŠμŠ¨ν•΄μ§ˆ 거리듀이 λ§ŽμŒμ—λ„ λΆˆκ΅¬ν•˜κ³  μ²œμ²œνžˆλ‚˜λ§ˆ 지속적일 수 μžˆμ—ˆμŒμ΄ κΈ°μ˜λ‹€.

  • Pair λΌλŠ” 것은 κΌ­ ν”„λ‘œκ·Έλž˜λ°μ΄ μ•„λ‹ˆλ‹€ ν•˜λ”λΌλ„ μ—¬λŸ¬κ°€μ§€ μ‹œλ„ˆμ§€λΌ λ°œνœ˜ν•  수 μžˆλ‹€. ν˜Όμžμ„œ μƒκ°ν•˜λŠ” 것보닀 λΉ λ₯Έ ν”Όλ“œλ°±μ„ 받을 수 μžˆκΈ°μ—. 였늘 떑볢이 λ¨ΉμœΌλ©΄μ„œ 아이디어 κΆλ¦¬ν• λ•Œμ˜ 아이디어듀이 λͺ¨μ΄κ³  μƒλŒ€λ°©μ—κ²Œμ„œ λ°˜μ‘μ„ 듀어보고 덧뢙여지고 μ˜μ™Έλ‘œ μƒˆλ‘œμš΄ 아이디어가 μ°½μΆœλ λ•Œμ˜ κ·Έ λŠλ‚Œμ΄λž€. --1002


10.2 (수)

  • Advanced Search
  • Mypage μ—μ„œμ˜ Best Point μˆœμœ„.
  • 검색 κ²°κ³Ό λ¦¬μŠ€νŠΈμ— λŒ€ν•΄ νŽ˜μ΄μ§€ λ‚˜λˆ„κΈ°

μ˜€λŠ˜μ€ 일의 진행이 정말 μΌμ‚¬μ²œλ¦¬λ‘œ μ΄λ£¨μ–΄μ‘Œλ‹€. λͺ¨μ΄κ³  처음 일을 μ‹œμž‘ν• λ•Œ 상λΌμ΄μ™€ 이전에 ν–ˆλ˜ 일듀과 였늘 ν•΄μ•Ό 할일에 λŒ€ν•΄ κ°„λ‹¨ν•˜κ²Œ μ •λ¦¬λΌ ν•œ 점이 μ£Όνš¨ν•œκ²ƒ κ°™λ‹€. κ°„λ‹¨ν•œ 일이긴 ν•˜μ§€λ§Œ, κ·Έλ‚ μ˜ ν•  일에 λŒ€ν•΄ λΈλ¦¬ 머릿속에 그림을 κ·Έλ €λ‘”λ‹€λŠ” μ μ—μ„œ 5λΆ„ Stand Up Meeting 은 μ˜μ™Έλ‘œ νš¨κ³ΌλΌ μ£ΌλŠ”κ²ƒ κ°™λ‹€. 그리고 Pair λΌ ν•˜λŠ”μ€‘ λ””λ²„κΉ…μ΄λ‚˜ 기타 일을 ν• λ•Œ λΈλ¦¬ μžμ‹ μ΄ μ–΄λ– ν•œ 일을 ν•˜λ €κ³  ν•˜λŠ”μ§€ μ§§μœΌλ©΄μ„œλ„ 자주 λŒ€ν™”κ°€ 였고 κ°”λ˜ 점, ν”„λ‘œκ·Έλž˜λ°λ•Œ 자주 체인지 ν•œκ²ƒλ„ 였늘 일이 잘 μ§„ν–‰λ˜λŠ”λ° 도움이 μ»Έλ‹€κ³  생각. --1002

10.1 (ν™”)

  • μ •κ·œν‘œν˜„μ‹ νŒŒμ‹± λΆ€λΆ„ 일뢀 μˆ˜μ •.
  • UI λ””μžμΈ ꢁ리.

9.30 (μ›”)

  • Test 깨진 것 λ§ˆμ € μˆ˜μ •. ν…ŒμŠ€νŠΈλ“€ μΆ”κ°€.
    • UnitTest 듀이 λ“œλ””μ–΄ λ‹€μ‹œ 녹색바. 그리고 μ„œλΈ”λ¦Ώμ— 있던 둜직 뢀뢄을 Extract, ν…ŒμŠ€νŠΈλ“€μ„ λΆ™μ—¬μ€Œ.

  • Test λ§ˆμ € κ³ μΉ˜λŠ” 쀑, λ‚΄κ°€ λ‹Ήμ—°ν•˜λ‹€κ³  μƒκ°λ˜μ—ˆλ˜ Test κ°€ 깨진 문제 뢄석이 μ‹€μ œλ‘œ ν‹€λ ΈμŒμ„ μ•Œκ²Œ λ˜μ—ˆλ‹€. 상λΌμ΄ 덕택에 μ˜μ™Έλ‘œ 30λΆ„ λ‚΄λ‘œ κ°„λ‹¨νžˆ ν•΄κ²°λ˜μ—ˆλ‹€. μ˜€λžœλ§Œμ— AcceptanceTest 포함 80μ—¬κ°œ ν…ŒμŠ€νŠΈκ°€ λ…Ήμƒ‰λΆˆμ„ 켜게 λ˜μ—ˆλ‹€.

  • ν•œλ™μ•ˆ PairProgramming ν• λ•Œ 주둜 κ΄€μ°°μž μž…μž₯에 μžˆμ–΄μ„œμΈμ§€. (μ΄μƒν•˜κ²Œλ„. μ°½μ€μ΄ν˜•μ΄λž‘ ν• λ•Œλ‚˜ 상λΌμ΄λž‘ ν• λ•Œλ‚˜. κ·Έλ‚˜λ§ˆ μ €λ²ˆ λ₯΄λ„μƒμŠ€ ν΄λŸ½λ•ŒλŠ” 아무도 μ£Όλ„μ μœΌλ‘œ μ•ˆμž‘μ•„μ„œ κ·Έλƒ₯ λ‚΄κ°€ 작긴 ν–ˆμ§€λ§Œ, λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ 적극적으둜 λ‚˜μ„œμ§€ μ•Šμ„λ•Œμ—” 웬지 κ·Έ μ‚¬λžŒλ“€κ³Ό 같이 ν•΄μ•Ό ν•œλ‹€λŠ” 강박관념이 μžˆμ–΄μ„œ.)

κ·Έλ™μ•ˆμ˜ Pair κ²½ν—˜μ— μ˜ν•˜λ©΄, κ°€μž₯ Pair κ°€ 잘 되기 μ–΄λ €μš΄ λ•ŒλŠ”, μ˜μ™Έλ‘œ λ„ˆλ¬΄ μ„œλ‘œλΌ μž˜ μ•Œκ³  PairλΌ μž˜ μ•Œκ³  μžˆλŠ” μ‚¬λžŒλ“€μΈ κ²½μš°μΈκ²ƒ κ°™λ‹€λŠ”. -_-; (Pair κ°€ 잘 μ•ˆλ˜κ³  μžˆλ‹€κ³  ν• λ•Œ μ†Œμœ„ 'μ΄λ²€νŠΈμ„± μ²˜λ°©μ „'을 써먹기가 λ­ν•˜λ‹ˆκΉŒ. 5λΆ„ PairλΌ ν•˜μžκ³  ν•˜λ©΄ κ·Έ μ˜λ„λΌ λ„ˆλ¬΄ μ‰½κ²Œ μ•Œκ³  μžˆκΈ°μ—.) 잘 μ•„λŠ” μ‚¬λžŒλ“€κ³ΌλŠ” 주둜 κ΄€μ°°μž μž…μž₯이 λ˜λŠ”λ°, 잘 μ•„λŠ” μ‚¬λžŒμΌμˆ˜λ‘ 였히렀 개인적으둜 μƒκ°ν•˜λŠ” 룰듀을 잘 μ μš©ν•˜μ§€ μ•Šκ²Œ λœλ‹€. (ν•˜λŠ” 일듀에 λŒ€ν•œ Tracking μ΄λΌλ˜μ§€, λ‹€λ₯Έ μ‚¬λžŒμ΄ λ¨Όμ € Coding 을 ν•˜λŠ”μ€‘ 이해 λͺ»ν• λ•Œ μ§ˆλ¬Έμ„ ν•œλ‹€λ˜μ§€ λ“±λ“±. 차라리 κ·Έλƒ₯ 'μ €μ‚¬λžŒ μ½”λ”© 잘 λ˜κ°€λ‚˜λ³Έλ°..'. 였히렀 μ˜ˆμ „μ— '문제'라고 μƒκ°ν•˜μ§€ μ•Šμ•˜λ˜ 뢀뢄이 μš”μƒˆ '문제' 둜 λ‹€κ°€ μ˜¨λ‹€.)
κ·Έλ ‡λ‹€κ³  이 상황을 λ‹€λ₯Έ μ‚¬λžŒμ—κ²Œ 말둜 ν•˜λ©΄ λ‹Ήμ—°νžˆ '응. 그래. λ‹€μŒλ²ˆμ—λŠ” μ£Όλ„μ μœΌλ‘œ μž‘μ•„' 라고 ν•˜μ§€λ§Œ. ν•œλ™μ•ˆ 손가락이 μ‰½κ²Œ 가지 μ•Šμ„ 것 κ°™λ‹€. 개인적인 문제일까. 아직 ν˜„μƒμ— λŒ€ν•œ 뢄석이 잘 μ•ˆλ˜λŠ”μ€‘μ΄λ‹€.

  • μ„œλΈ”λ¦Ώ λ ˆμ΄μ–΄λΆ€λΆ„μ— λŒ€ν•΄μ„œ Controller 에 Logic 이 λΆ™λŠ” 경우 μ–΄λ–»κ²Œ Test λΌ λΆ™μΌκΉŒ. (FacadePattern 을 μƒκ°ν•˜κ³ , μ›Ή Tier λΌ λ”°λ‘œ λΆ„λ¦¬ν•˜λŠ” 생각을 ν•΄λ³΄κ²Œ λœλ‹€.) --1002

9.27 (금)

  • Test 깨진 것 μˆ˜μ •ν•˜κΈ°.

1002 개인적으둜 진행. 뭐 진행이라기 λ³΄λ‹€λŠ”, μ˜€λžœλ§Œμ— Solo Programming 을 ν•΄λ΄€λ‹€. μž₯μ μœΌλ‘œλŠ” λŠκΈ‹ν•˜κ²Œ μ†ŒμŠ€λΌ λ¦¬λ·°ν•˜κ³  λŒ€μ²˜ν•  μ‹œκ°„μ„ 천천히 생각해볼 수 있던점. (보톡은 상λΌμ΄κ°€ μ΄ν•΄λΌ λΉ¨λ¦¬ ν•˜κΈ° λ•Œλ¬Έμ— λ¨Όμ € ν‚€λ³΄λ“œλΌ μž‘λŠ”λ‹€.) λ‹¨μ μœΌλ‘œλŠ” 해결책에 λŒ€ν•œ Feedback 을 ꡬ할 곳이 μ—†λ‹€λŠ” 점이 μžˆλ‹€. (ν‰μ†Œ 물어보고 λ‘˜μ΄ 괜μ°κ² λ‹€ ν–ˆμ„λ•Œ κ΅¬ν˜„μ„ ν•˜λ©΄ λ˜μ—ˆλŠ”λ°, μ΄κ²½μš°μ—λŠ” μ±…μž„ μ†Œμž¬λž„κΉŒ.. 웬지 ν˜Όμžμ„œ μƒκ°ν•œ 것은 μ˜μ™Έμ˜ ν‹€λ¦° 닡이 μžˆμ„ 것 같은 λΆˆμ•ˆκ°μ΄ 생긴닀. ν…ŒμŠ€νŠΈ 쀑독증 이후 이젠 νŽ˜μ–΄ μ€‘λ…μ¦μ΄λ €λ‚˜..)

Test 듀이 있으면 ν™•μ‹€νžˆ 쒋은점은, 깨진 ν…ŒμŠ€νŠΈλ“€μ΄ To Do List κ°€ λœλ‹€λŠ” 점이닀. λ³΅κ΅¬μˆœμ„œλŠ”? 깨진 ν…ŒμŠ€νŠΈλ“€μ€‘ κ°€μž₯ μ‰¬μ›Œλ³΄μ΄λŠ” κ²ƒμ΄λ‚˜, κ·Έ λ¬Έμ œλΌ ν™•μ‹€ν•˜κ²Œ νŒŒμ•…ν–ˆλ‹€κ³  μžλΆ€ν•˜λŠ” ν…ŒμŠ€νŠΈλ“€μ„ λ¨Όμ € 작고 λ‚˜κ°€λ©΄ λœλ‹€.

  • 근데, 해놓고 λ‚˜μ„œ 컀밋할 생각이.. μ€ μ•ˆλ‚˜κΈ΄ ν•˜λ‹€. ν•œνŽΈμœΌλ‘œλŠ” Test 듀을 ν†΅κ³Όν•˜λ‹ˆκΉŒ λ‘˜μ΄ μ„œλ‘œ μ •ν•œ μ˜λ„λŒ€λ‘œ ν•œ κ²ƒμ΄λ‹ˆ μƒκ΄€μ—†λ‹€λŠ” 생각. ν•˜μ§€λ§Œ, ν•œνŽΈμœΌλ‘œλŠ” 'Pair 둜 ν•œ 것이 μ•„λ‹Œλ°..' ν•˜λŠ” 생각. κ·Έλƒ₯ Spike 버전 μ •λ„λ‘œ μƒκ°ν•΄λ‘˜κΉŒλ‚˜.

9.25 (수)

  • λ„μ„œκ΄€ UI λ³€κ²½κ³Ό κ΄€λ ¨, Test 깨진것 μˆ˜μ •ν•˜κΈ°

ν•™κΈ°μ€‘μ—λŠ” μ‹œκ°„μ„ λ§žμΆ”κΈ°κ°€ 쉽지 μ•ŠμŒμ„ 느끼며. λœ»ν•˜μ§€ μ•ŠλŠ”(뭐 ν•œνŽΈμœΌλ‘  μ˜ˆμƒν–ˆμ§€λ§Œ) Requirement 의 변경이 일어났닀. λ„μ„œκ΄€ UI & μ‹œμŠ€ν…œμ΄ μ „λ©΄μ μœΌλ‘œ μˆ˜μ •λœ 것이닀.

λ‹€ν–‰νžˆ λͺ¨λ“ˆν™”κ°€ 잘 λ˜μ–΄μžˆμ—ˆκ³ , Test 듀이 μžˆμ—ˆκΈ°μ— neocoin κ³Ό 1002 λŠ” 주둜 깨진 ν…ŒμŠ€νŠΈλ“€μ„ λ°”λ‘œμž‘κΈ°λ‘œ ν–ˆλ‹€. 일단 λ„μ„œκ΄€λ“€μ˜ HTML 을 μ–»κ³ , Local HTML λ¬Έμ„œμ— λŒ€ν•΄ 데이터듀을 잘 μΆ”μΆœν•΄λ‚΄λŠ”μ§€μ— λŒ€ν•œ ν…ŒμŠ€νŠΈλΌ λ¨Όμ € λ³΅κ΅¬ν–ˆλ‹€.


9.3, 9.4 (ν™”,수)

  • Recommender, lightView, heavyView service μž‘μ„±. view μΆ”κ°€.

속쒁은 1002 이 상λΌμ“°μ—κ²Œ μ‹ κ²½μ§ˆ λΆ€λ¦¬λ˜λ‚ λ‘œ κΈ°μ–΅ -_-; μΌμ’…μ˜ Test 에 λŒ€ν•œ 압박을 λ°›μ•„μ„œμ΄κΈ΄ ν•œλ°, μ²˜μŒμ—λŠ” 'Model, Logic' 뢀뢄에 λŒ€ν•΄μ„œλ§Œ Test 정도 뢙이면 λ˜κ² μ§€ 라고 μƒκ°ν–ˆλŠ”λ°, Servlet 으둜 μž‘μ„±ν•œ Controller 뢀뢄이 μ»€μ§€λ©΄μ„œ, 각각 Command 에 ν•΄λ‹Ήν•˜λŠ” (service 라고 μ΄λ¦„μ§€μ—ˆμŒ) 뢀뢄에 λŒ€ν•΄ 둜직이 λΆ™μ—ˆκΈ° λ•Œλ¬Έμ΄λ‹€. 근데, Servlet μ΄μ—¬μ„œ ν…ŒμŠ€νŠΈλΌ λͺ»λΆ™μ΄κ³ , μž‘μ—…μ€ μž‘μ—…λŒ€λ‘œ μ§„ν–‰λ˜λŠ”λ° ν…ŒμŠ€νŠΈ 뢙일 방법을 μƒκ°ν•˜μ§€ λͺ»ν•˜λŠ”데, 잘 μ§„ν–‰λ˜μ–΄κ°„λ‹€κ³  λ³΄μ΄λŠ” μž‘μ—… λ°œλ¬ΆλŠ”κ²ƒ κ°™μ•„μ„œ 이야기 λͺ»ν•˜κ³  κΏν•΄μžˆλ‹€λŠ”.
(κ·Έλž˜μ„œ μˆ˜μš”μΌλ‚ μ—λŠ” ν”„λ‘œκ·Έλž¨ μž‘μ„±μ „ Menual Test 방법을 λ¨Όμ € 생각해두고, ν”„λ‘œκ·Έλž˜λ° μž‘μ„±μ„ ν•˜λŠ” μ‹μœΌλ‘œ 접근함)

  • λŒ€μ•ˆμ„ 생각쀑인데, μΌμ’…μ˜ Facade λΌ λ§Œλ“€κ³ , Controller 의 각 service 듀은 Facade 만 μ΄μš©ν•˜λŠ” μ‹μœΌλ‘œ μž‘μ„±ν•˜λ©΄ μ–΄λ–¨κΉŒ. κ·Έλ ‡κ²Œ ν•œλ‹€λ©΄ Facade 에 λŒ€ν•΄μ„œ Test Code λΌ μž‘μ„±ν•  수 있으리라 생각. λ˜λŠ”, Servlet 뢀뢄에 λŒ€ν•΄μ„œλŠ” AcceptanceTest 의 κ΄€μ μœΌλ‘œ μ ‘κ·Όν•˜λŠ” 것을 생각. λ˜λŠ”, cactus 에 λŒ€ν•΄μ„œ μ•Œμ•„λ΄μ•Ό ν•˜λ €λ‚˜.. --1002
  • λ¬Έμ œμ— λΆ€λ”ͺ치고, κ·Έ λ¬Έμ œκ°€ 해결될꺼 같이 λ³΄μ΄λ©΄μ„œ, μ•„μŠ¬μ•„μŠ¬ 버티면 내일 ν•΄κ²°ν•΄μ•Ό ν•œλ‹€. --상λΌ

8.24(ν† )

  • Recommender λΆ€λΆ„ μ™„λ£Œ (μ—°κ΄€λœ ~cpp BookMapper, ~cpp UserMapper의 κΈ°λŠ₯ μž‘μ„± μ™„λ£Œ)

μ–΄μ œ λ§ˆμ§€λ§‰ κ³ λΌμ΄ μ§€ν•˜μ² μ„ νƒ€κ³ κ°€λ©΄μ„œ ν•΄κ²°λ˜μ—ˆλ‹€. 그리고 였늘 μ™€μ„œ μƒκ°λŒ€λ‘œ μ μš©ν•˜λ‹ˆ 이후 Testλ“€μ—μ„œλŠ” μ•„λ¬΄λŸ° λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•Šμ•„μ„œ μ•ˆλ„μ˜ ν•œμˆ¨μ„ λ‚΄μ‰°λ‹€. μ‹œμŠ€ν…œλ“€μ΄ TestλΌ ν†΅κ³Όν•˜μž, κ°€μž₯ 큰 문제둜 λ°œμƒλœ 것이 Test의 μž‘μ„±κ³Ό ν™•μΈμ΄μ—ˆλ‹€. μ±… 4ꢌ과 μ‚¬μš©μž 3λͺ….. 정말 λ¨Έλ¦¬μ—μ„œ ν”Όμ‹œμ‹ μ—°κΈ°κ°€ λ‚˜λŠ” λŠλ‚Œμ„ λ°›λŠ”λ‹€. κ·Έλ‚˜λ§ˆ Pair이기에 ν•œλͺ…이 μ½”λ“œλΌ λ³΄λ©΄μ„œ μƒκ°ν•˜κ³ , ν•œλͺ…은 μ’…μ΄λΌ λ³΄λ©΄μ„œ μƒκ°ν•˜λ©΄μ„œ λ™κΈ°ν™”λΌ μ‹œν‚€λ‹ˆ 닀행이지, ν˜Όμžμ˜€λ‹€λ©΄ ν›„μœ .. 문뜩 온라인 κ²Œμž„λ“€μ΄ ꡉμž₯히 κΈ΄ μ‹œκ°„λ™μ•ˆ 베타 ν…ŒμŠ€νŠΈλΌ ν•˜λŠ” 것이 이해가 κ°„λ‹€. --상λΌ

8.23(금)

  • Object-Database 연동을 μœ„ν•œ ~cpp BookMapper, ~cpp UserMapper μž‘μ„±

이 뢀뢄도 μΌμ’…μ˜ Architecture 의 뢀뢄일것인데, μ§€κΈˆ μž‘μ„±ν•œκ²ƒμ΄ 웬지 화근이 λœκ²ƒ κ°™λ‹€λŠ”. Architecture 뢀뢄에 λŒ€ν•΄μ„œλŠ” Spike Solution 을 ν•΄λ³΄λ˜μ§€, μ•„λ‹ˆλ©΄ TDD λΌ ν•œλ’€, Data Persistence 뢀뢄에 λŒ€ν•΄μ„œ λ‚΄λΆ€μ μœΌλ‘œ Delegation κ°μ²΄λΌ μΆ”μΆœν•΄ λ‚΄κ³ , 그녀석을 Mapper 둜 λΉΌλ‚΄λŠ” 과정을 순차적으둜 λ°Ÿμ•˜μ–΄μ•Ό ν–ˆλŠ”λ° ν•˜λŠ” 생각이 λ“ λ‹€.

Object-RDB Mapping 에 λŒ€ν•΄μ„œλŠ” PatternsOfEnterpriseApplicationArchitecture 에 λ‚˜μ˜¨ 방법듀을 읽어보고 그쀑 Data Mapper 의 κ°œλ…μ„ μ μš©ν•΄λ³΄λŠ”μ€‘. Object 와 DB Layer κ°€ λΆ„λ¦¬λ˜λŠ” λŠλ‚Œμ€ μ’‹κΈ΄ ν•œλ°, 처음 ν•΄λ³΄λŠ”κ²ƒμ΄μ—¬μ„œ κ·ΈλŸ°μ§€ μƒλ‹Ήνžˆ λ³΅μž‘ν•˜κ²Œ λŠκ»΄μ‘Œλ‹€. 일단 μ²˜μŒμ—” Data Gateway μ •λ„μ˜ κ°€λ²Όμš΄ κ°œλ…μœΌλ‘œ μ ‘κ·Όν•œλ’€, Data Mapper 둜 κΊΌλ‚΄κ°€λŠ”κ²Œ λ‚˜μ•˜μ„κΉŒ ν•˜λŠ” 생각.
DB μ되고 λ‚˜λ‹ˆ, Test λ“€μ˜ 보폭을 μ„μ΄λŠ”κ²Œ νž˜λ“€μ–΄μ§€λŠ”κ²ƒ κ°™λ‹€. (그리고..; μ‚¬λžŒλ“€μ΄ 잘 μ•ˆμ„이렀고 ν•˜λŠ”κ²ƒ κ°™λ‹€;) TDD κ°€ μ€ λ” ν™œμ„±ν™”λ˜λŸ¬λ©΄ 학ꡐ 컴퓨터듀이 더 빨라져야 ν•œλ‹€κ³  개인적으둜 생각쀑 -_-;

  • Side Effect λŠ” Refactoring 의 μ μ΄λΌλŠ” 생각이 였늘처럼 λ“  적이 μ—†μ—ˆλ‹€. -_-; Extract Method 같은 일을 ν•˜λŠ” 경우 λ”λ”μš±.! --1002
  • 멋진 Side Effect 세상 λ¬Έμ„œλΌ λ§Œλ“€μ–΄μ•Ό κ² λ‹€. --상λΌ

8.21(수)

  • Recommender κ΅¬ν˜„μ€‘ User 클래슀의 κ΅¬ν˜„
  • ~cpp UserTestκ΅¬ν˜„
  • ~cpp RecommenderTest 의 ν…ŒμŠ€νŠΈ μˆ˜ν–‰μ€‘
  • AcceptanceTest login , view page ν…ŒμŠ€νŠΈ μΆ”κ°€

Spike Solution으둜 λ§Œλ“€μ–΄ λ‘μ—ˆλ˜ 것듀이, μ‹€μ œλ‘œ ν”„λ‘œκ·Έλž˜λ° μ†ŒμŠ€λ‘œ μ „ν™˜λ˜κ³  μžˆλŠ” κ³Όμ • 쀑이닀. 이제 Userλ‚΄μ˜ Spike Solutionκ΄€λ ¨ μ½”λ“œλ“€μ΄ 사라지면 Spike Solution의 Test듀도 λ‹€ κΉ¨μ§€λ©΄μ„œ 사라 μ§ˆκ²ƒμ΄λ‹€. 내일이면 DBμ™€μ˜ 연동이 마무리 되고, 웹에 μΈν„°νŽ˜μ΄μŠ€ λ…ΈμΆœμ΄ 이루어 μ§ˆκ²ƒ κ°™λ‹€. κ·Έλ ‡κ²Œ 되면 μ»€λ‹€λž€ μ„κΈ°λŠ” μ™„μ„±λ˜λŠ” 것이닀. μ—­μ‹œλ‚˜ κ°νšŒκ°€ μƒˆλ‘­λ‹€. Acceptance Test에 κ΄€λ ¨ν•œ μ½”λ“œλ“€μ„ λ‚΄κ°€ λ„ˆλ¬΄ λͺ¨λ₯΄κ³  μžˆλ‹€. κ·Έμͺ½ μ½”λ“œλΌ λ³΄κ³  이해 ν•΄μ•Ό λΆˆμ•ˆν•˜κ³  λ“€λœ¬ λ§ˆμŒμ„ μ•ˆμ • μ‹œν‚¬μˆ˜ μžˆμ„κ²ƒ κ°™λ‹€. λ‚˜λŠ” 즐거운거 λ§žλŠ” 걸까? 학ꡐ 더 일찍였면 ν™•μ‹€νžˆ 즐거울꺼 κ°™λ‹€. ;; --상λΌ
μ–΄μ°¨ν”Ό AcceptanceTest κ΄€λ ¨ μ½”λ“œμ˜ 경우 Server ν”„λ‘œκ·Έλž¨κ³Ό λ…λ¦½μ μœΌλ‘œ λŒμ•„κ°€κΈ°μ— 그리 κ±±μ •ν•˜μ§€ μ•Šμ•„λ„ 상관없을λ“. μ†ŒμŠ€λŠ” CVS에 μ˜¬λ €λ†“κ³  μžˆμœΌλ‹ˆ μ‹œκ°„μžˆμ„λ•Œ ν™•μΈν•˜μ…”λ„ 쒋을λ“. --1002

  • λͺ©μ†Œλ¦¬λΌ ν‚€μšΈλ•ŒλŠ” 늘 λΌκ°ν•¨μ΄ μ•žμ„ λ‹€. 처음 λͺ©μ†Œλ¦¬λΌ ν‚€μš°λ‹€κ°€ λ‹€μ‹œ μ†Œκ·Ήμ μœΌλ‘œ 되렀고 ν• λ•Œ 의자 끌고 Pair μžλ¦¬μ— μ•‰νžˆλŠ” 상λΌμ΄λΌ λ³Όλ•Œ λ‚΄κ°€ μ–΄λ¦°μ•„μ΄κ°™λ‹€λŠ” 생각도 ν•΄λ³Έλ‹€. 늘 μ‹€μ²œλ³΄λ‹€ λΆˆν‰μ΄ μ•žμ„œλŠ” 1002이기에 -_-; μ•„μ‰¬μš΄μ μ΄λΌλ©΄, μ†ŒμŠ€μ˜ Complexity κ°€ λ†’μ•„μ§ˆμˆ˜λ‘ Test 의 보폭을 μ„μ΄λŠ”λ° νž˜λ“€λ‹€λŠ”μ . 였늘 μ°½μ€μ΄ν˜•κ³Ό PairλΌ ν•˜λ˜μ€‘. Observer 의 μ—­ν• μΌμˆ˜λ‘ μ „λ°˜μ μΈ μˆ²λ“€μ„ 잘 κ΄€μ°°ν•˜κ³  Driver λΌ λ„μ™€μ€˜μ•Ό ν•œλ‹€λŠ” 점을 λ˜μƒˆκΈ°λ©΄μ„œ.
    • λ‚΄κ°€ 잘λͺ»ν•˜λ©΄ 직접 μš•ν•΄μ€˜ λ‚˜ 였래 μ‚΄κ²Œ ;; --상λΌ
  • Python 의 ClientCookie λͺ¨λ“ˆμ˜ νŽΈλ¦¬ν•¨μ— μ¦κ±°μ›Œν•˜λ©°. Redirect, cookie 지원. 이건 web browser AcceptanceTestλΌ μœ„ν•œ λͺ¨λ“ˆμ΄λž€ 생각이 팍팍! --1002

8.13(ν™”)

  • SimpleSearch -> ViewBook 으둜의 κ΅¬ν˜„
  • SearchListExtractorRemoteTest μΆ”κ°€

  • 발견된 λ¬Έμ œλ‚˜ 사항 인상 κΉŠμ€μ 
    • λ„μ„œκ΄€μ€ 303건 초과 λ¦¬μŠ€νŠΈλΌ ν•œκΊΌλ²ˆμ— μš”μ²­μ‹œμ—λŠ” 자체적으둜 κ²€μƒ‰λ¦¬μŠ€νŠΈ λ°μ΄ν„°λΌ λ³΄λ‚΄μ§€ μ•ŠλŠ”λ‹€. κ³Όκ±° cgiλΆ„μ„μ‹œ maxdisp μΈμžμ— 많이 λ„£μ„μˆ˜ μžˆλ‹€κ³  λ“€μ—ˆλ˜ μ„ μž…κ²¬μ΄ κ²°κ³Ό μ˜ˆμΈ‘μ— μž‘μš©ν•œκ²ƒ κ°™λ‹€. μ΄ˆκΈ°μ—λŠ” local μ„œλ²„μ˜ Java JDKμͺ½μ—μ„œ μžλ£ŒλΌ λ°›λŠ” λ²„νΌμƒμ˜ ν•œκ³„ λ¬Έμ œμΈμ„ μ•Œμ•˜λŠ”λ°, ν…ŒμŠ€νŠΈ μž‘μ„±, Webμ—μ„œ μˆ˜μž‘μ—… ν…ŒμŠ€νŠΈ κ²°κ³Ό μ•Œκ²Œ λ˜μ—ˆλ‹€. κ΄€λ ¨ 클래슀 SearchListExtractorRemoteTest )
    • λͺ©λ‘κ²€μƒ‰μ—μ„œ 검색 이λ ₯μ΄λž€ 메뉴가 μžˆλŠ”λ°, λ„μ„œκ΄€μͺ½μ— ν•΄λ‹Ή ip에 λŒ€ν•œ 캐싱 결과에 λŒ€ν•˜μ—¬ λ‚˜μ™€μžˆλ‹€.

결과물이 λˆˆμ— λ³΄μΈλ‹€λŠ” 것은 즐거운 것이닀. λ¬Όλ‘  κ΅¬ν˜„μ€‘μ— Test결과듀이 λˆˆμ— λ³΄μ΄λŠ” 것도 즐겁고 μ•ˆμ •κ° μžˆλŠ” 코딩을 ν• μˆ˜ μžˆλŠ” μš”μΈμœΌλ‘œ μ œκ³΅λ˜μ–΄μ„œ μ’‹μ™”μ§€λ§Œ, 이제 λ¦¬μŠ€νŠΈκ°€ 보이고, 책을 λ³΄λŠ” κ²ƒκΉŒμ§€ λ˜λ‹ˆ μ—¬νƒœκΉŒμ§€μ˜ 결과듀이 ν†΅ν•©λ˜λŠ” 것을 눈으둜 확인 ν•˜λŠ”κ²ƒ κ°™μ•„μ„œ μ’‹λ‹€. ν†΅ν•©μ‹œμ— 그리 ν°λ¬Έμ œλŠ” ν˜„μž¬κΉŒμ§€ λ°œμƒν•˜μ§€ μ•Šμ•˜λ‹€. --상λΌ


8.12(μ›”)

  • MPP 에 login, SimpleSearch ꡬ성과 κ²°κ³Ό 좜λ ₯

8.10(ν† )

  • λ§ˆμ΄λ„ˆλ¦¬ν‹°λ¦¬ν¬νŠΈ 보러 κ°€κΈ°~
  • Server Refactoring

μ„œλ²„μͺ½ ν΄λž˜μŠ€λ“€μ— λŒ€ν•΄μ„œ Refactoring 을 μ‹œλ„ λ°μ΄ν„°ν΄λž˜μŠ€μ΄λ©΄μ„œ κ·Έ μš©λ„κ°€ μ‘°κΈˆμ”© λ‹¬λžλ˜ ν΄λž˜μŠ€λ“€μ„ ν•˜λ‚˜λ‘œ λ¬Άμ—ˆλ‹€. (일단 λͺ¨μ—¬ν•΄μ³ μ‹œλ„μš©μœΌλ‘œ) κ·ΈλŸ¬λ©΄μ„œ μ•ˆμ“°λŠ” ν΄λž˜μŠ€λ“€μ„ μ‘°κΈˆμ”© μ§€μ›Œλ‚˜κ°”λ‹€. νŒ¨ν‚€μ§€λ“€μ€‘ Test νŒ¨ν‚€μ§€μ™€ 메인 μ†ŒμŠ€ νŒ¨ν‚€μ§€, μž„μ‹œ μ½”λ“œ νŒ¨ν‚€μ§€λ“€μ— λŒ€ν•΄μ„œ 화일듀을 μ˜κΈ°κ³  μ •λ¦¬ν–ˆλ‹€. 아직 μ™„λ²½ν•˜κ²Œ μ •λ¦¬λœκ²ƒ 같진 μ•Šμ§€λ§Œ, κ°œμΈμ μœΌλ‘œλŠ” 이전에 λΉ„ν•΄ 만μ±μŠ€λŸ¬μ› λ‹€. (이제 Target은 Resin μͺ½κ³Ό μž„μ‹œμ†ŒμŠ€λ“€ 디렉토리.)
  • Code Review λ‘œμ„œ Refactoring 이 μ΄μš©λœλ‹€κ³  ν–ˆλ‹€μ‹œν”Ό, Refactoring을 ν•΄ λ‚˜κ°€λ©΄μ„œ 전체 ν”„λ‘œκ·Έλž¨μ˜ 그림이 μ€ λ” 이해가 κ°”λ‹€. ν•œλ™μ•ˆ ν•΄λ‹Ή ν”„λ‘œκ·Έλž¨μ— λŒ€ν•΄μ„œ ν”Œλ° 리듬을 λ†“μ³€μ„λ•Œ Refactoring 을 μ‹œλ„ν•˜λŠ”κ²ƒλ„ 쒋은 μ „λž΅μ΄λΌ 생각.
  • Task λΌ μž‘μ„±ν• λ•Œ Refactoring 을 λͺ…μ‹œμ μœΌλ‘œ 써 놔야 ν•˜κ² λ‹€. Acceptance Test 처럼. 써놓지 μ•ŠμœΌλ‹ˆκΉŒ μžŠμ–΄λ¨Ήκ³  자주 μ•ˆν•΄μ€ κ²ƒ κ°™λ‹€. 그리고 생각보닀 μ‹œκ°„μ΄ κ±Έλ¦¬λŠ” 만큼. (이건 Refactoring 을 ν”Œλ° 쀑에 자주 해주지 μ•Šμ•„μ„œμΈκ²ƒ κ°™λ‹€. 2μ‹œκ°„μ •λ„ κ±Έλ ΈμœΌλ‹ˆ)
--1002

8. 8(λͺ©)

  • DB Schema ꢁ리 & Recommendation System 을 DB λ²„μ „μœΌλ‘œ Integration μ‹œλ„

  • Pair 쀑간에 1002 λŠ” λͺ©μ†Œλ¦¬κ°€ μ»€μ§ˆλ•Œκ°€ μžˆλ‹€. ν•˜λ‚˜λŠ”, λ‚΄κ°€ λ†“μΉ˜κ³  μžˆμ„ κ²½μš°μ— λŒ€ν•΄ λ‹€λ₯Έ μ‚¬λžŒμ΄ μ΄μ•ΌκΈ°λΌ μ œλŒ€λ‘œ μ•ˆν•΄μ€¬λ‹€κ³  μƒκ°λ˜λŠ” 경우. 뭐 보톡은 1002의 잘λͺ»μ„ λ‹€λ₯Έ μ‚¬λžŒμ—κ²Œ λ– λ„˜κΈ°κΈ° μœ„ν•œ 방편인 κ²½μš°κ°€ λ§Žλ‹€ -_-; (μ°”λ¦°λ‹€; λ‚˜λ„ JuNe ν˜•μ΄λž‘ Pair ν• λ•Œ λ¬΄λ°©λΉ„μƒνƒœμΈ κ²½μš°κ°€ λ§Žμ•„μ„œ;) 뭐, 같이 λ¬΄λ°©λΉ„μ˜€λ‹€κ°€ λͺ»λŠλΌκ³  λ„˜μ–΄κ°„ 경우라면 μ•„ν•˜~ ν•˜λ©΄μ„œ ν”Œλ°ν•˜κ² μ§€λ§Œ, ν•˜λ‚˜λΌ κ³ μΉ˜κ³  λ‚˜μ„œ, λ‹€λ₯Έ μ‚¬λžŒμ΄ λ‹Ήμ—°ν•œ λ“이 쒋은 λ°©λ²•μœΌλ‘œ ν•΄κ²°ν•΄λ‚Όλ•Œμ—”. ("μ™œ μ•„κΉŒλŠ” μ΄μ•ΌκΈ°μ•ˆν•΄?" "λ‹Ήμ—°ν•œκ±°μž–λ‚˜."). μΌμ’…μ˜ κ²½μŸμ‹¬λ¦¬μ΄λ €λ‚˜. 에고 λΌ μžŠμ–΄μ•Ό ν•˜λŠ”κ²Œ PairProgramming μ΄μ§€λ§Œ, μ‚¬λžŒ 마음이 κ·Έλ ‡κΈ°μ—” 또 λ‹€λ₯Έκ²ƒ κ°™λ‹€. μ½”λ“œ 기여도에 λŒ€ν•΄μ„œ 보이지 μ•ŠλŠ” 경쟁이 λΆ™λŠ”λ‹€κ³  ν• κΉŒλ‚˜.

λ¬Έμ œλŠ”, 1002 의 λͺ©μ†Œλ¦¬κ°€ ν™”λ‚΄λŠ” 톀이 될 κ²½μš°μ΄λ‹€. (μ˜λ„ν•˜κ±΄ μ•ˆν•˜κ±΄. 보톡 ν™”λ‚΄λŠ” μ‚¬λžŒμ€ μžμ‹ μ΄ ν™”λ‚΄κ³  μžˆλ‹€λŠ” 것을 μ˜μ‹ν•˜μ§€ μ•Šμ€ κ²½μš°κ°€ λ§Žλ‹€. 이 경우의 λ¬Έμ œλŠ”, μ—΄μ‹¬νžˆ μž˜ν•œ μƒλŒ€κ°€ 쓸데없이 듀을 ν•„μš”μ—†λŠ” μ†Œλ¦΄ λ“£λŠ”λ‹€. --; μ•„. μ •μ‹  μˆ˜μ–‘μ΄ ν•„μš”ν•˜λ‹€. (지가 μž˜ν–ˆμœΌλ©΄ λ κ±°λ©΄μ„œ..;)

  • λ‚΄λͺ©μ†Œλ¦¬κ°€ μ»€μ§ˆκ²½μš°μ—λŠ” λ‹€λ₯Έ μ‚¬λžŒμ΄ μœ„μΆ•μ΄ λœλ‹€. κ·Έ μ‚¬λžŒμ΄ μž˜ν•˜κ³  μžˆλ‹€ ν•˜λ”λΌλ„. ν•œνŽΈμœΌλ‘œλŠ” 'λ‹Ήμ‹ μ˜ λŠ₯λ ₯을 λ³΄μ—¬μ£Όμ„Έμš”'; μžμ‹ μ˜ μ½”λ“œμ— λŒ€ν•΄μ„œ 자기 μ΄μ•ΌκΈ°λΌ ν–ˆμœΌλ©΄ ν•˜λŠ” 생각. λͺ©μ†Œλ¦¬λΌ μ„μ΄κ±°λ‚˜, 'ν•œλ²ˆ ν˜λŸ¬κ°ˆλŒ€λ‘œ 해봐라' λΌλŠ” 식은 μžμ‹ μ˜ 생각을 μ½”λ“œμ— 뢙일 수 μ—†κ²Œ 되λ€λ‘œ 쒋지 μ•Šμ€ 경우라고 생각.

  • 리듬이 κΉ¨μ‘Œλ‹€λΌλŠ” λŠλ‚Œμ΄ λ“€λ•Œ. Task λ‹¨μœ„λΌ To Do List λ‹¨μœ„λ‘œ λ‹€μ‹œ μͺΌκ°œλŠ” μ§€ν˜œ ν•„μš”ν•  것 κ°™λ‹€. ν˜„μž¬ Task μ‚¬μ΄μ¦ˆκ°€ Pair κΈ°μ€ 1μ‹œκ°„μ΄κΈ΄ ν•œλ°, 막상 μž‘μ—…ν• λ•Œμ—λŠ” μ‹œκ°„μ„ ν—€ν”„κ²Œ μ“΄λ‹€λž€ 생각이 듬.

  • MockObjects λΌ μ΄μš©, Database 에 λŒ€ν•΄μ„œ MockObjects Test 와 Real DB Test λΌ κ°™μ΄ ν•΄ λ‚˜κ°€λ³΄μ•˜λ‹€. DB - Recommendation System 연결을 μœ„ν•΄μ„œλŠ” RS μ—μ„œμ˜ object λ“€κ³Ό DB μ™€μ˜ Mapping 이 ν•„μš”ν•˜λ‹€κ³  νŒλ‹¨, DB Schema λΌ κ°™μ΄ κΆλ¦¬ν•œ λ’€, Test λΌ μž‘μ„±ν•˜μ˜€λ‹€. μ΄λ•Œ 이전 기얡을 λ– μ˜¬λ¦¬λ©΄μ„œ MockObjects Test λΌ μƒμ†λ°›μ•„μ„œ Real DB Test λΌ μž‘μ„±ν•˜λŠ” μ‹μœΌλ‘œ μ ‘κ·Όν•΄λ΄€λŠ”λ° 쒋은 방법이라 생각.

  • Martin Fowler 의 PatternsOfEnterpriseApplicationArchitecture λΌ μ½μ–΄λ³΄λŠ”μ€‘. 우리 μ‹œμŠ€ν…œμ˜ 경우 DataMapper 의 κ°œλ…κ³Ό Gateway 의 κ°œλ…μ„ μ μš©ν•΄λ³Ό 수 μžˆμ„ 것 κ°™λ‹€. μ „μžλŠ” Data Object λΌ μ–»μ–΄λ‚΄λŠ”λ°μ— λŒ€ν•΄ μΌμ’…μ˜ MediatorPattern 을 μ μš©ν•¨. DB λΆ€λΆ„κ³Ό μ†ŒμΌ“μœΌλ‘œλΆ€ν„° λ°μ΄ν„°λΌ μ–»μ–΄μ˜¬ λ•Œ μ΄μš©ν•  수 μžˆμ„ 것 κ°™λ‹€. ν›„μžμ˜ κ²½μš°λŠ” 일반적으둜 Object - RDB Data Mapping (λ˜λŠ” λ‹€λ₯Έ OO κ°œλ…μ΄ μ•„λ‹Œ 데이터듀) 인데, RowDataGateway, TableDataGateway 의 κ²½μš°λΌ μ΄μš©ν•  수 μžˆμ„κ²ƒ κ°™λ‹€.

--1002

  • TestCase λ§Œλ“€μ–΄ 둔것을 상속 λ°›μ•„μ„œ, λ‹€μ‹œ λ‹€λ₯Έ ν…ŒμŠ€νŠΈλΌ μˆ˜ν–‰ μ‹œν‚€λŠ” 기법이 정말 ν₯λΈλ‘œμ› λ‹€. μ§„μ§œ μ‹ κΈ°ν•˜λ‹€. μƒκ°ν•˜λ©΄ ν• μˆ˜λ‘ μ‹ κΈ°ν•˜λ‹€.
  • λ¬Έν—Œ 정보 ν•™κ³Όμ˜ κ΄€λ ¨ μžλ£ŒλΌ μ„μ²œμ΄λž‘ κ°€μ„œ λ³΄μ•˜λŠ”λ°, 또 λ‹€λ₯Έ μ§€μ‹μ˜ 세상이 μžˆμŒμ„ μ•Œμˆ˜ μžˆμ—ˆλ‹€. μˆ˜λ°±λ…„κ°„ κ΅¬μΆ•ν•΄μ˜¨ μ§„μ •ν•œ KM을 λŠλ‚„μˆ˜ μžˆμ—ˆλ‹€.
--상λΌ


8. 7(수)

  • test κ΄€λ ¨ νŒ¨ν‚€μ§€ 정리
    • test ~cpp TestCase
    • tests ~cpp TestSuite λͺ¨μŒ
    • λͺ¨λ“  ~cpp TestCase TestSuite λŠ” λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰ν• μˆ˜ μžˆλ‹€.
  • ~cpp AllLocalTests 내에
    • ~cpp BookContainerLocalTest ( ν…ŒμŠ€νŠΈ μž‘μ„± μ‹œμž‘, DB연동 λΆ€λΆ„ 생각해야 함 )
    • ~cpp BookWebLinkerTest (λŒ€μƒ μ„œμ  Amazon, Aladin, Wowbook)
    • ~cpp ViewBookExtractorTest ( ~cpp LendBookList 와 μ—°κ³„ν•˜μ—¬ ν…ŒμŠ€νŠΈ μΆ”κ°€ )
  • ~cpp AboutLendBookTests
    • ~cpp LendBookListTest
    • ~cpp LendBookTest

머리가 μž˜μ•ˆλŒμ•„ κ°€λŠ” λŠλ‚Œμ„ λ°›κΈ° μ‹œμž‘ν•œ 것이 6μ‹œ 즈음인데, ν•œμ‹œκ°„μ€ 괜히 작고 μžˆμ—ˆλ˜κ²ƒ κ°™λ‹€. DBμŠ€ν‚€λ§ˆμ— κ΄€ν•΄μ„œ 쑰금 생각해 λ³΄μ•˜κ³ , 8μΌμ—λŠ” DB연동 λ””μžμΈμ΄ λ“€μ–΄κ°€μ•Ό 할것이닀. Test μœ„μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ° μž‘μ„±μ€ 아무리 생각해도 멋진거 κ°™λ‹€. --상λΌ

8. 6(ν™”)

ν˜„μž¬ μš”κ΅¬μ‚¬ν•­μ— 따라
ν•œλ™μ•ˆ νœ΄μ‹μ„ μ œλŒ€λ‘œ μ•ˆ μ·¨ν•΄μ„œ 일까. 일에 μ€ μ§€μΉœλ“ ν•˜λ‹€. (특히, 졜근 κ·Έ 3μ£Όκ°„μ˜ μΉ΄μ˜€μŠ€κ³„μ— μžˆλ‹€ λ³΄λ‹ˆ;) 전체 일 λŒ€λΉ„ μ§„ν–‰λœ 일을 μ •λ¦¬ν•˜κ³ , λ‹€μŒμ— ν•΄μ•Ό ν•  일을 μ •ν•˜κ³  ν•˜λ €κ³  ν–ˆμ§€λ§Œ, 퍽 ν•˜κ³  μ„œλ‘œ 코딩에 손이 가지 μ•Šμ•˜λ‹€. 일단, μ˜€λŠ˜μ€ 일찍 μ‰¬κΈ°λ‘œ ν–ˆλ‹€.

μ •λ§λ‘œ 학ꡐ가 μš°λ¦¬λΌ μ•ˆλ„μ™€μ£ΌκΈ°λ‘œ μž‘μ •ν•œκ²ƒ κ°™λ‹€. λ„μ„œκ΄€ μ„œλΉ„μŠ€ κ°œνŽΈλœλ‹€κ³  ν–ˆκ³  -_-(μ΄λŠ” 곧 μ •κ·œν‘œν˜„μ‹ μ“΄ λΆ€λΆ„κ³Ό κ΄€λ ¨ν•˜μ—¬ μž¬μž‘μ„±ν•˜λΌλŠ” λœ»μ΄λ‹ˆ;) κ²Œλ‹€κ°€ λ‹€μŒμ£ΌλΆ€ν„° μ—˜λ¦¬λ² μ΄ν„° 수리 듀어간단닀. κ²½λΉ„μ•„μ €μ”¨μ—κ²Œ 5μΈ΅ μ‹ ν”Ό 열어달라고 λΆ€νƒν•˜λŠ”κ²ƒμ— λŒ€ν•΄ 더 λˆˆμΉ˜λΌ λ΄μ•Ό ν•œλ‹€λŠ” 뜻이 λœλ‹€; μœΌμ–΄;
Requirements always change (from DesignPatternsExplained). κ²°κ΅­ μ‚¬λžŒμ΄ κ°œμž…λœ μΌμ΄λ‹ˆ μ‹€μƒν™œκ³Ό λ‹€λΌλ°” μ—†μŒ. :) --sun

  • μˆ˜μš”μΌμ€ JuNe ν˜•κ³Ό blashnet μͺ½ κ΄€λ ¨ μ˜ˆμ œμ½”λ“œ λ§ˆμ € μž‘μ„±ν•  것 κ°™κ³ , λ‹€μ‹œ λͺ©,금,ν†  κ°€ 화두가 되겠ꡰ. --1002

8. 5(μ›”)

DB Mock Object ADO 예제 μž‘μ„±. (For XpWorkshop)

상λΌμ“°μ™€ ν•¨κ»˜ ADO λΌ μ΄μš©ν•œ 뢀뢄에 λŒ€ν•΄ DB Mock Object μ˜ˆμ œλΌ μž‘μ„±ν–ˆλ‹€. 전에 상λΌμ΄κ°€ DB Layer λΌ λ‘μ§€ μ•Šκ³ , ADO FrameworkλΌ κ±°μ˜ μΉ˜ν™˜ν•˜κ²Œλ” μž‘μ„±ν–ˆλ‹€κ³  νŒλ‹¨, μ΄λ²ˆμ—λŠ” λ‚΄λΆ€μ μœΌλ‘œ ADOλΌ μ“°κ±΄ κ°€μ§œ λ°μ΄ν„°λΌ μ“°κ±΄ 신경쓰지 μ•ŠλŠ” λ°©ν–₯으둜 같이 μž‘μ„±ν•˜μ˜€λ‹€. ADO λŠ” 기쑴에 1002 κ°€ μž‘μ—…ν–ˆλ˜ ν”„λ‘œκ·Έλž¨μ—μ„œ 일뢀 μ‚¬μš©ν•œ μ†ŒμŠ€λΌ κ³ μ³μΌλ‹€.

5μ‹œκ°„ 정도 걸리긴 ν–ˆμ§€λ§Œ. -_-; Mock Object κ°€ μ–΄λ–€ 것이닀에 λŒ€ν•΄ ν•œκ±ΈμŒ 더 이해할 수 μžˆλŠ” 계기가 λ˜μ—ˆλ‹€κ³  생각.

  • STL 을 μ“°λ©΄ νŽΈλ¦¬ν•˜κΈ΄ ν•œλ°, ν™•μ‹€νžˆ 학ꡐ컴퓨터에선 컴파일이 느리긴 ν•œκ²ƒ κ°™λ‹€λŠ”; (ν•˜κΈ΄, μš°λ¦¬κ°€ map 에 vector 겹친 ν˜•νƒœλ‘œ μž‘μ„±μ„ ν–ˆμœΌλ‹ˆ -_-..) κ·Έλž˜λ„ STL Container 만 μ–΄λŠμ •λ„ μ΄μš©ν•΄λ„ 기쑴의 순수 C++ 을 μ΄μš©ν•  λ•Œλ³΄λ‹€ 훨씬 νŽΈν•˜λ‹€λŠ” 점이 즐겁닀. 만일 mock object λΌ STL μ΄λ‚˜ MFC Collection 없이 κ΅¬ν˜„ν•œλ‹€κ³  μƒκ°ν•œλ‹€λ©΄? 그리 μƒμƒν•˜κ³  싢지 μ•Šμ„ 정도이닀. (특히 DB에선) κ·ΈλŸ¬λ©΄μ„œ λŠλΌλŠ”μ μ΄λΌλ©΄,
'κ³Όμ—° μ‚¬λžŒλ“€μ΄ 이 μ†ŒμŠ€λΌ λ³΄κ³  λ‚˜μ„œ MockObjects λΌ μ κ·Ήμ μœΌλ‘œ μ΄μš©ν•˜λ €κ³  ν• κΉŒ?' λΌλŠ” 점. (STL 을 μ€ λ§Žμ΄ μ¨μ„œ. ^^;)

GJκ°€ λ„μž…λ˜λ©΄ IBM의 Incremental Compile도 λ¬΄μš©μ§€λ¬Ό μ•„λ‹κΉŒ. --상λΌ

7.28 ~ 8.3

XpWorkshop 보쑰.

7. 25(λͺ©)

  • login λΆ€λΆ„ μž‘μ„±
  • Python Prototype 을 Java 둜 λ°”κΎΈκΈ°

μ•„μ•„. λ°©ν•™ λ‚΄λ‚΄ MIB 와 Chaos 의 λ‚˜λ‚ λ“€; μ˜€λŠ˜μ€ μƒˆλ‘œ λ“€μ–΄μ˜¨ 컴퓨터 μ…‹νŒ…μ— λ„€νŠΈμ› λ¬Έμ œκΉŒμ§€. -_-;

  • μ˜ˆμ „μ— μΌν• λ•Œ 잘λͺ»ν–ˆμ—ˆλ˜ μ‹€μˆ˜λΌ λ‹€μ‹œν•˜κ³  μžˆμœΌλ‹ˆ, λ°”λ‘œ κΈ°νšμžμ™€μ˜ λŒ€ν™”μ΄λ‹€. Iteration 이 λλ‚ λ•Œλ§ˆλ‹€ κ°œλ°œμžκ°€ λ¨Όμ € 기획자 λ˜λŠ” κ³ κ°μ—κ²Œ 진행상황을 이야기해야 ν•œλ‹€. 특히 ExtremeProgramming 의 경우 Iteration 이 λλ‚ λ•Œλ§ˆλ‹€ Story 진행도에 λŒ€ν™”λΌ ν•΄μ•Ό ν•œλ‹€. Iteration 3 κ°€ λ„˜μ–΄κ°€κ³  μžˆμ§€λ§Œ 항상 λ¨Όμ € μ „ν™”λΌ ν•œ μ‚¬λžŒμ΄ λˆ„κ΅¬μΈκ°€λΌκ³  λ¬»λŠ”λ‹€λ©΄ 할말이 없어진닀. 이번 Iteration λ§ŒνΌμ€ λ¨Όμ € μ „ν™”ν•˜μž;
  • 'Iteration 3 μ—μ„œ 무엇은 λ˜μ—ˆκ³  무엇은 μ•ˆλ˜μ—ˆλŠ”κ°€?' μ§€κΈˆ Iteration 3 μͺ½ Task κ°€ 아직도 정리 μ•ˆλ˜μ—ˆλ‹€. Task μ •λ¦¬λΌ ν•˜μ§€ μ•Šκ³  Iteration 3 λΌ μ§„ν–‰ν•œ 점은 문제이긴 ν•˜λ‹€. (비둝 κ΅¬λ‘λ‘œ κ°œλ°œμžλ“€λΌλ¦¬ 이야기가 λ˜μ—ˆλ‹€ ν•˜λ”λΌλ„. μ œλŒ€λ‘œ μ •λ¦¬λΌ ν•œλ‹€λŠ” 의λΈμ—μ„œ.) Iteration 3 Task 정리 ν•„μš”. 그리고 λ‚˜λ¨Έμ§€ Iteration 에 λŒ€ν•œ Task 듀에 λŒ€ν•΄μ„œ μ˜ˆμΈ‘ν•  수 μžˆλŠ”κ²ƒλ“€ (슬슬 λˆˆμ— λ³΄μ΄λ‹ˆ)에 λŒ€ν•΄ μΆ”κ°€ ν•„μš”.

  • μ•„μ΄μŠ€ν¬λ¦Ό μž˜λ¨Ήμ—ˆμ–΄μš”. 감사감사 :)

--1002


  • μ΅œκ·Όλ“€μ–΄μ„œ μ „ν˜€ 글을 μ“°κ³  μžˆμ§€ μ•Šλ‹€. μ•„λ‚ λ‘œκ·Έλ“  디지털이든.. 책을 λ³΄λ©΄μ„œλ„ μ €μžμ™€ ꡐ감을 얻을 λ§Œν•œ λΆ€λΆ„μ—μ„œ λ²…μ°¨μ˜€λ₯΄κ³ , λ¨Έλ¦¬μ†μœΌλ‘œ ν•΄λ‹Ή 생각을 10~15λΆ„ κ°€λŸ‰ μ •λ¦¬ν•œ 이후 κ·Έκ²ƒμœΌλ‘œ 끝이닀. μΌμ’…μ˜ μŠ¬λŸΌν”„μΌκΉŒ.
  • λ‚΄μΌκΉŒμ§€ μ‹ ν”Όμ˜ λ„€νŠΈμ›μ΄ μ•ˆλ κΉŒ 걱정이닀. 였늘의 일은 λ„μ €νžˆ μ˜ˆμΈ‘ν• μˆ˜ μ—†μ—ˆλ˜ μΌμ’…μ˜ 사고이닀. λ‚˜λΉ„μ˜ λ‚ κ°œμ§“μ€ μ–΄λ””μ—μ„œ μ‹œμž‘λ˜μ—ˆμ„κΉŒ 생각해 λ³Έλ‹€. MIB Programmerκ°€ 되고 μ‹Άμ§€λ§Œ κ·Έλ§ˆμ € μ‹œκ°„μ΄ λΆ€μ±ν•œκ²ƒμ΄ ν˜„μ‹€μ΄λ‹€.
  • μ•„μ΄μŠ€ν¬λ¦Όμ€ ... :)

--neocoin

7. 22(μ›”)

  • Iteration 2 에 λŒ€ν•΄ λ°€λ¦° 것 λ§ˆμ € 진행.
  • Iteration 3 에 λŒ€ν•œ Planning

Iteration 3 μ—μ„œμ˜ Login 을 μœ„ν•΄ 정말 μ˜€λžœλ§Œμ—(!) Servlet μ±…κ³Ό JSP 책을 λ΄€λ‹€. (λΉŒλ¦¬κ³ μ„œλ„ 거의 1-2μ£Όκ°„ μ•ˆμ½μ—ˆλ‹€λŠ”. -_-;) 상λΌμ΄κ°€ μ˜†μ—μ„œ JSP μ—°μŠ΅μ„ ν•˜λŠ”λ™μ•ˆ λ‚˜λŠ” Servlet μ—°μŠ΅μ„ ν–ˆλ‹€. 후에 λ‘κ°œμ˜ μ†ŒμŠ€λΌ λΉ„κ΅ν•΄λ³΄λ©΄μ„œ 곡톡점을 μ°Ύμ•„λ‚΄λ©΄μ„œ μŠ€νƒ€μΌμ„ 비ꡐ해 λ³Έ 것이 재λΈμžˆμ—ˆλ‹€. (μ²˜μŒμ— μ˜λ„ν•œκ±΄ μ•„λ‹ˆμ§€λ§Œ;)

  • ν•™κ΅μ—μ„œ PairProgramming 이 정착될 수 μžˆμ„κΉŒ. Pair λΌ ν•˜λŠ” 쀑 λŒ€ν™”κ°€ μ€ μ»€μ Έμ„œ κ·ΈλŸ°μ§€ μ € λ„ˆλ¨Έμͺ½μ˜ μ„ λ°°κ°€ μ£Όμ˜λΌ μ£Όμ—ˆλ‹€. 뭐.. λ³€λͺ…거리일지 λͺ¨λ₯΄κ² μ§€λ§Œ, μžμ‹ μ˜ λ°”λ‘œ λ’€μ—μ„œ κ²Œμž„μ„ ν•˜κ³  μžˆλŠ” μ‚¬λžŒμ€ μžμ‹ μ˜ 일에 λ°©ν•΄κ°€ λ˜μ§€ μ•Šκ³ , μ € λ©€λ¦¬μ„œ κ°œλ°œν•˜λŠλƒκ³  'λ– λ“œλŠ” λ„˜λ“€' 은 μžμ‹ μ˜ 일에 λ°©ν•΄κ°€ λœλ‹€.
  • ν•œνŽΈμœΌλ‘œ 또 λ“œλŠ” 생각은 아무리 μš°λ¦¬κ°€ κ³΅λΆ€λΌ ν•˜λ„μœ„ν‚€μ— λ¬Έμ„œλΌ λ‚¨κΈ°λ„€ 해도, κ²°κ΅­ μ € μ‚¬λžŒμ—κ²ŒλŠ” 'κ·Έμ € μ €λ„˜λ“€ 자기만μ±μ„ μœ„ν•œ ν–‰μœ„' κ·Έ 이상이 μ•„λ‹ˆλΌλŠ” 것. ν”Όμ‹œμ‹€μ—μ„œ κ²Œμž„μ„ ν•˜λ‚˜ ν”„λ‘œκ·Έλž¨ κ°œλ°œμ„ ν•˜λ‚˜ κ·Έμ € 'νƒ€μΈμ˜ 행동' μ΄μƒμ˜ 의λΈκ°€ μ—†λ‹€λž€ λŠλ‚Œμ΄ λ“€κ³  λ‚˜λ‹ˆ μ„œκΈ€νΌμ§„λ‹€. μˆœκ°„ 울μ»₯ ν•˜λŠ” λ§ˆμŒμ— μ†μœΌλ‘œ '차라리 자극 μ€ λ°›μ•„λ³΄μ‹œκ³  κ±°κΈ° κΉ”λ¦° 였락 μ€ μ§€μ›Œλ³΄μ‹œμ§€. μ  μž₯' 라고 μŠμ–΄λŒ€μ—ˆλ‹€. (갈수둝 건방짐 λ†’μ•„μ Έκ°€λŠ” 1002. μ†”μ§νžˆ μ€ ν™”κ°€ λ‚˜μ„œλ¦¬..) 개인적으둜 ν”Όμ‹œμ‹€μ΄ μ‚¬λžŒλ“€μ΄ μ„œλ‘œ κ°œλ°œμ΄λ‚˜ κ³΅λΆ€λΌ μœ„ν•΄ μ‹œλŒλ²…μ ν•œ μž‘μ€ νŒ€λ“€μ΄ 많이 있고, κ·Έ λΆ„μœ„κΈ°μ— λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ μ‘°κΈˆμ΄λ‚˜λ§ˆ νœ©μ“Έλ ΈμœΌλ©΄ ν•˜μ§€λ§Œ. κ·ΈλŸ¬ν•œ νŒ€λ“€μ€ 늘 λ ˆν¬νŠΈκ°€ λ‚˜μ˜€λ˜μ§€ νŒ€ν”„λ‘œμ νŠΈκ°€ λ‚˜μ˜€λ˜μ§€ ν•΄μ•Ό λ§Œλ“€μ–΄μ§€λ €λ‚˜.. κ±°μ°Έ μ—„μ²­ 재λΈλ„ λ‚˜κ² κ΅°. μ—­μ‹œ 이상일 λΏμ΄λ €λ‚˜. (ν™”μ΄νŠΈλ³΄λ“œ νΌμ§€λ§‰ν•œ 것이 μžˆμ–΄λ„ μš°λ¦¬κ°€ μ•Œκ³ λ¦¬μ¦˜ κ΅¬μƒν•˜λŠλƒκ³  써놓은 것듀이 3-4일째 κ·ΈλŒ€λ‘œμ΄κ΅°.)

ZeroPageServer 의 κ²Œμ‹œνŒ μ†ŒμŠ€κ°€ JSP 이고 JSP/Servlet runner κ°€ Resin μ΄μ—¬μ„œ ν™˜κ²½μ„μ • 뢀뢄을 ꡬ경할 수 μžˆμ—ˆλ‹€. κ·Έλž˜μ„œ Resin - JDBC μ…‹νŒ… 뢀뢄을 κ΅¬κ²½ν•˜κ³  μ†μ‰½κ²Œ ν•  수 μžˆμ—ˆλ‹€. ZeroPageServer 의 첫 삽을 λ– μ€ μ„ μš°ν˜•μ—κ²Œ κ°μ‚¬λ“œλ¦¬λ©°. ν˜„μž¬ μ“°κ³  μžˆλŠ” 글듀이 λͺ‡λ‹¬ λ˜λŠ” λͺ‡λ…„ λ’€ ZeroPagers λ˜λŠ” 읡λͺ…μ˜ μ‚¬λžŒλ“€μ—κ²Œ 도움이 λ˜μ—ˆμœΌλ©΄ ν•œλ‹€.
-- 1002

7. 20(ν† )

  • Iteration 2 에 λŒ€ν•œ SpikeSolution 계속 진행

Iteration 1 μ—μ„œ λ°€λ¦° 일듀이 3 task μλ˜λŠ”λ°, 계속 κ·Έμ •λ„μ˜ 일듀이 λ°€λ¦°λ‹€. ν•˜κΈ΄, 3 task κ°€ λ°€λ ΈμŒμ—λ„ λΆˆκ΅¬ν•˜κ³ , Iteration 1 μ—μ„œμ˜ 처음 Task λΌ λ§‘μ€ 만큼 Iteration 2 μ—μ„œ Task 둜 μ‹€μ—ˆμœΌλ‹ˆκΉŒ.
  • 쀑간 μ•Œκ³ λ¦¬μ¦˜λΆ€λΆ„μ— λŒ€ν•΄μ„œ ν˜Όλž€μƒν™©μ΄ 생겼닀. 처음 TDD둜 μ•Œκ³ λ¦¬μ¦˜μ„ λ””μžμΈν• λ•Œ view / light view / heavy view 에 λŒ€ν•œ pointλΌ κ°™μ€ κ°œλ…μœΌλ‘œ μ ‘κ·Όν•˜μ§€ μ•Šμ•˜λ‹€. μ΄λΌ κ°™μ€ κ°œλ…μœΌλ‘œ μ ‘κ·Όν•˜λ €λ‹ˆ 기쑴의 μ•Œκ³ λ¦¬μ¦˜μ΄ λ§žμ§€ μ•Šμ•˜κ³ , μ΄λΌ λ‹€μ‹œ μ•Œκ³ λ¦¬μ¦˜μ— λŒ€ν•΄ 검증을 ν•˜λ €λ‹ˆ 우리의 μ•Œκ³ λ¦¬μ¦˜μ€ κ·Έ μˆ˜ν•™μ  λͺ¨λΈ & 증λͺ…이 λͺ…ν™•ν•˜μ§€ μ•Šμ•˜λ‹€. 우리의 μ•Œκ³ λ¦¬μ¦˜μ΄ ν•΄λ‹Ή μ±…λ“€κ°„μ˜ 관계성을 ν‘œν˜„ν•΄μ€λ‹€λΌκ³  μš°λ¦¬κ°€ μ£Όμž₯을 ν•˜λ”λΌλ„, 그것을 증λͺ…ν•˜λ €λ‹ˆ 할말이 μƒκΈ°μ§ˆ μ•Šμ•˜λ‹€. μˆ˜ν•™μ΄λΌλŠ” 녀석이 μ–Έμ œ μ–΄λ–»κ²Œ λ“±μž₯ν•΄μ•Ό ν•˜λŠ”κ°€μ— λŒ€ν•΄ λ‹€μ‹œκΈˆ λŠλ‚Œμ΄ 였게 λ˜μ—ˆλ‹€.
  • PyUnit 의 ok.

--1002


7. 19(금)

  • Iteration 2. Recommendation System 에 λŒ€ν•œ SpikeSolution

일단 μ•Œκ³ λ¦¬μ¦˜λΆ€λΆ„μ„ λŒ€κ°• μƒκ°ν•œλ’€ Python 으둜 TDD λΌ ν–ˆλ‹€. (μ†ŒμŠ€). CRC μ„Έμ…˜μ„ λ¨Όμ €ν•˜μ—¬ μ‹œλ‚˜λ¦¬μ˜€λΌ μ‹œκ°ν™”ν•΄λ‘κ³  ν”„λ‘œκ·Έλž˜λ°μ„ ν–ˆμ—ˆλ‹€λ©΄ μ€ λ” 빨리 μž‘μ„±ν•  수 μžˆμ§€ μ•Šμ•˜μ„κΉŒ ν•˜λŠ” 생각을 ν•΄λ³Έλ‹€.

μ•Œκ³ λ¦¬μ¦˜μ— λŒ€ν•œ SpikeSolution 에 λŒ€ν•΄μ„œλŠ”, 일단 μ—°μŠ΅μž₯에 λͺ…ν™•ν•˜κ²Œ μ•Œκ³ λ¦¬μ¦˜μ„ μ„Έμš΄λ’€ ν”„λ‘œκ·Έλž˜λ°μ— λ“€μ–΄κ°€λŠ” 것이 μ’‹κ² λ‹€κ³  생각함. 그리고 μ•Œκ³ λ¦¬μ¦˜ λ””μžμΈμ‹œμ— Matrix 와 Graph λ“±μ˜ λͺ¨λΈμ„ κ·Έλ €μ„œ μƒκ°ν•΄λ³΄λŠ” 것이 νš¨μœ¨μ μ΄κ² λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.

  • Iteration 1 μ—μ„œ λͺ»ν•œ 일듀을 Iteration 2 둜 λ„˜κΈΈλ•ŒλŠ” Iteration 1 μ—μ˜ Task λΌ Iteration 2둜 λ„˜κ²¨μ€˜μ•Ό ν•œλ‹€. Iteration Planning 은 μΌμ’…μ˜ Time-Box 이닀.
  • AcceptanceTest κ°€ μž‘μ„±λ˜κ³  λ‚˜λ©΄μ„œλΆ€ν„°λŠ” 맀일 AcceptanceTest λΌ λŒλ €μ„œ μ—°κΈ°κ°€ λ‚˜λŠ”μ§€(?) 확인해본닀. (M$μ—μ„œμ˜ ν…ŒμŠ€νŒ…μ²˜λŸΌ..) 맀일 AcceptanceTest λΌ λŒλ €λ΄„μœΌλ‘œμ„œ μ•žμ „μ˜ μž‘μ—…μ— λŒ€ν•΄μ„œ κ·Έ 결과에 λŒ€ν•œ 보μž₯을 ν•΄λ‘”λ‹€.
  • AcceptanceTest 에 λŒ€ν•΄μ„œλŠ” Customer κ°€ 이해할 수 μžˆλ„λ‘ μ½”λ“œλΌ μž‘μ„±ν•œλ‹€. 가급적이면 High-Level 둜. κ°„λ‹¨ν•œ μŠ€ν¬λ¦½νŠΈμ–Έμ–΄λΌ μž‘μ„±ν•˜λŠ”κ²ƒλ„ 방법이 λ˜κ² λ‹€.
  • Iteration 1 μ—μ„œ 9 Task points λΌ μ™„λ£Œν–ˆλ‹€λ©΄, Iteration 2 μ—μ„œλ„ 9 Task points λΌ λ§‘λŠ”λ‹€.

7. 18(λͺ©)

  • Iteration 1 μ—μ„œ λͺ»ν•œ 일듀 λ§ˆμ € 함. AcceptanceTest μž‘μ„±.

Jython 의 νŽΈλ¦¬ν•¨μ„ κΉ¨λ‹«μ•˜λ‹€. Java 의 ν΄λž˜μŠ€λ“€μ— λŒ€ν•΄μ„œ λ°”λ‘œ Import ν•˜μ—¬μ„œ μ“Έ 수 μžˆλ‹€. 그리고 Python 에 μžˆλŠ” λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ 거의 κ·ΈλŒ€λ‘œ μ΄μš©ν•  수 μžˆλ‹€. 단, ν•œκΈ€ 문제둜 κ±Έλ¦Ό. AcceptanceTest 의 경우 Python 으둜 μž‘μ„±ν•¨.
μ–΄λ–€ ν•œκΈ€ 문제?
λ˜‘κ°™μ€ μ½”λ“œλΌ Jython 으둜 돌릴 경우 POST 둜 λ„˜κΈ΄ ν•œκΈ€ keyword κ°€ μ œλŒ€λ‘œ λ„˜μ–΄κ°€μ§ˆ μ•Šμ•„μš”. 인코딩을 λ°”κΏ”μ£Όλ©΄ 될 것 같은데 λͺ»μ°Ύμ•„μ„œ;--1002
  • Jython은 기본적으둜 λͺ¨λ“  μŠ€νŠΈλ§μ„ μœ λ‹ˆμ½”λ“œλ‘œ μ²˜λ¦¬ν•¨. λ”°λΌμ„œ, ν•΄λ‹Ή μŠ€νŠΈλ§μ„ euc-kr둜 μΈμ½”λ”©ν•œ λ‹€μŒμ— 파라λΈν„° 전달을 ν•˜λ©΄ μ œλŒ€λ‘œ 됨. 인코딩을 λ°”κΎΈκΈ° μœ„ν•΄μ„œλŠ” 파이썬 euc-kr 코덱(pure python 버젼)을 κΉ”κ³ , ~cpp 'ν•œκΈ€'.encode('euc-kr')을 μ“°κ±°λ‚˜, μ•„λ‹ˆλ©΄ μžλ°”μ˜ String.getBytesλ‚˜ ~cpp OutputStreamWriter 등을 μ“°λ©΄ 될 κ²ƒμž„. --JuNe
  • λŒμ•„κ°€λŠ” ν™˜κ²½μ˜ κΈ°λ³Έ 인코딩을 μ„μ •ν•΄μ£Όλ©΄ 될 λ“ ν•¨. Jython이 μžλ°”λ‘œλœ ν΄λž˜μŠ€λΌ λ°”λ‘œ μ“΄λ‹€λ‹ˆ, Writer κ°μ²΄λΌ μ–»μ„λ•Œ 인코딩 μ„정을 ν•΄μ£Όλ©΄, ν•΄λ‹Ή Writer둜 λΉ μ Έλ‚˜κ°€λŠ” λ‚΄μš©μ€ μ„μ •λœ 인코딩을 μ μš©λ°›μŒ. λ°›μ•„λ“€μΌλ•Œλ„ λ§ˆμ°¬κ°€μ§€λ‘œ, POST둜 λ„˜μ–΄μ˜¨ 값을 맀번 인코딩 ν• μˆ˜λ„ μžˆκ² μ§€λ§Œ, κ·Έλ³΄λ‹€λŠ”, μ‹œμŠ€ν…œμ— 직접 λͺ…μ‹œν•΄μ€˜μ„œ μΌκ΄„μ μœΌλ‘œ λ°”λ€ŒλŠ” 방식을 μΆ”μ²œν•¨. 예λΌλ“€μžλ©΄, contentType="text/html; charset=euc-kr" ν•˜λŠ”μ‹μœΌλ‘œ μ„μ •ν•  경우, μ–»μ–΄μ˜€λŠ” 값듀은 euc-kr둜 μΈμ½”λ”©λœ 값을 μ–»μ–΄μ˜¬ 수 있음. --μ΄μ„ μš°

  • Tareμ”¨κ»˜μ„œ μž‘μ—…ν•˜λŠ” λͺ¨μŠ΅μ„ 보고 μ‹Άλ‹€λ©΄μ„œ μ˜€μ…¨λ‹€. μž‘μ—…ν•˜λŠ” λ™μ•ˆ μš°λ¦¬κ°€ 거의 λŒ€ν™”λΌ κ±Έμ§€ μ•Šκ³  우리끼리 계속 μž‘μ—…μ—λ§Œ λͺ°λ‘ν–ˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³ , λ’€μ—μ„œ μž‘μ—…ν•˜λŠ” λͺ¨μŠ΅μ„ λκΉŒμ§€ μ§€μΌœλ³΄μ‹œλŠ” λͺ¨μŠ΅μ„ λ³΄λ©΄μ„œ ν•œνŽΈμœΌλ‘œ μ‹ κΈ°ν–ˆλ‹€. λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ μ–΄λ– ν•œ κ³Όμ •μœΌλ‘œ μž‘μ—…ν•˜λŠ”κ°€λΌ μ•ŒκΈ° μœ„ν•΄ μ €λ ‡κ²Œ κ΄€μ°°ν•˜λŠ” μ‚¬λžŒμ΄ μžˆμ„κΉŒ? μ–΄λ– ν•œ μ–»μŒμ„ μ–»μœΌμ…¨μ„μ§€ λͺ¨λ₯΄κ² μ§€λ§Œ. 그의 μžμ„ΈλŠ” μ°Έ μΈμƒμ μ΄μ˜€λ‹€.
  • Iteration 1 μ—μ„œμ˜ κ²°κ³ΌλΌ μ˜€λŠ˜ λ³΄μ—¬λ“œλ¦¬κ³  Iteration 2 에 λŒ€ν•œ νšŒμ˜λΌ ν•΄μ•Ό ν• λ•Œμž„μ—λ„ λΆˆκ΅¬ν•˜κ³ , 직접 μ˜€μ…¨λŠ”λ° 별닀λ₯Έ 결과물을 보여듀이지 λͺ»ν•΄μ„œ μ°Έ μ£„μ†‘ν–ˆλ‹€. 이번주 MT κ°€ μžˆμ—ˆλ‹€ ν•˜λ”λΌλ„, λ³€λͺ…μ΄λž€ μ—†μŒ. --1002

7. 12(금)

  • HTML λ¬Έμ„œ κ°€μ Έμ˜€λŠ” 클래슀 (Spider) μž‘μ„±
  • HTML Parsing
  • λ„μ„œκ΄€ 검색 κ²°κ³Ό Object 둜 μΆ”μΆœ, λ‹€μ‹œ HTML 생성.

였늘 무엇을 ν•  것인가 ν•˜λ©° ProjectPrometheus/Iteration λΌ λ³΄κ³ μ„  HTML Parsing 을 μ§„ν–‰ν•˜κΈ°λ‘œ ν–ˆλ‹€. κ·Έ 전에 1002 λŠ” 'μ•„, μž‘μ—…ν•˜κΈ° 전에 Book Search 에 λŒ€ν•œ μ „λ°˜μ μΈ 그림을 κ·Έλ € λ†“λŠ”κ²Œ μ’‹κ² κ΅°. 그리고 λ‚œ λ’€ HTML Parsing 뢀뢄에 λŒ€ν•΄ κ΅¬ν˜„ν•΄μ•Όμ§€' 라고 생각을 ν–ˆλ‹€. ν•œνŽΈ neocoin 은 μˆ˜μš”μΌλ•Œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 'HTML Parsing 뢀뢄에 λŒ€ν•΄ 일단은 SpikeSolution 으둜 λ§Œλ“ λ’€ λͺ¨λ“ˆν™” μ‹œμΌœλ‚˜κ°€μ•Όμ§€' λΌλŠ” 생각을 ν–ˆλ‹€. ν”„λ‘œκ·Έλž˜λ° μŠ€νƒ€μΌμ΄ λ‹€λ₯Έ 두 μ‚¬λžŒμ΄ 진행 방법에 λŒ€ν•œ 언급없이 진행을 ν•˜λ €κ³  ν–ˆλ‹€. 1002 λŠ” 'μ•„ 전체 κ·Έλ¦Ό' ν•˜λ©° CRC μ„Έμ…˜μ„ ν•˜λ €κ³  ν•˜λŠ” 쀑간. ν•œνŽΈ neocoin 은 같이 μ§„ν–‰ν•˜κ³  μžˆλŠ” CRC μ„Έμ…˜μ— 쀑간에 λŒ€ν•΄μ„œ 'μ§€κΈˆ μ„œλ‘œ 무엇을 ν•˜κ³  μžˆλŠ”κ±°μ§€?' ν•˜λ©° ν˜Όλž€μ— λΉ μ‘Œλ‹€. λ˜‘κ°™μ€ λ””μžμΈ 단계에 λŒ€ν•΄μ„œ 1002 λŠ” μ „λ°˜μ  Book Search 에 λŒ€ν•΄ 생각을 ν•˜κ³  μžˆμ—ˆκ³ , neocoin 은 λͺ¨λ“ˆκ³Ό λͺ¨λ“ˆκ°„ 연결고리에 λŒ€ν•΄ 생각을 ν•˜μ˜€λ‹€.

쀑간에 상λΌμ€ λ©”λͺ¨μž₯을 μ—΄μ—ˆκ³  ..... 뢀뢄에 λŒ€ν•΄ μ½”λ“œλΌ μ μ—ˆλ‹€.

그리고 1002λŠ” λ‹€μŒκ³Ό 같이 Java Pseudo code λΌ μ μ—ˆλ‹€.
~cpp 
BookSearcher bs = new BookSearcher();
bs.search(keyword);
bookList = bs.getSearchedBookList();

30-40λΆ„κ°„μ˜ μ„œλ‘œκ°„μ˜ ν˜Όλž€κ³Ό 싸움(?)끝에 μ„œλ‘œ 무엇을 μœ„ν•΄ μ–΄λ–»κ²Œ 일을 ν•˜λ €κ³  ν–ˆλŠ”μ§€μ— λŒ€ν•΄μ„œ μ΄μ•ΌκΈ°λΌ ν–ˆκ³ , κ²°κ΅­ μ„œλ‘œ μ ‘κ·Ό μŠ€νƒ€μΌμ΄ λ‹¬λžμœΌλ©°, μ„œλ‘œ μžκΈ°κ°€ ν•˜λ €κ³  ν•˜λŠ” 일에 λŒ€ν•œ μ˜λ„λΌ λ°νžˆμ§€ μ•Šκ³  'λ‹Ήμ—°νžˆ μ„œλ‘œ μ•Œκ³  μžˆλŠ” λ“' 일을 μ‹œμž‘ν•œ κ²ƒμž„μ„ μ•Œκ²Œ λ˜μ—ˆλ‹€. μ„œλ‘œλΌ μž˜ μ•Œκ³  μžˆλ‹€κ³  μƒκ°ν–ˆκΈ°μ— 였히렀 빠지기 μ‰¬μš΄ 문제이라 μƒκ°λœλ‹€.

μ•”νŠΌ, 이후 λ‹€μ‹œ μ½”λ“œ ꡬ좕 방법에 λŒ€ν•΄μ„œ 일단 μ΄μ•ΌκΈ°λΌ ν•˜μ˜€κ³ , (μ—¬κΈ°μ„œλŠ” 일단 μ„œλ‘œ ν•©μ˜ν•˜μ— 1002 μŠ€νƒ€μΌ μ‹μœΌλ‘œ μ§„ν–‰ν–ˆλ‹€. ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ μ΄μš©λ˜μ–΄μ§€λŠ” λͺ¨μŠ΅μ„ λ¨Όμ € μƒκ°ν•˜κ³ , μ‹œλ‚˜λ¦¬μ˜€μ— λ”°λ₯Έ μ½”λ“œμ˜ λΌˆλŒ€λΌ λ§Œλ“€μ–΄κ°€λŠ” 방식) κ·Έ μ΄ν›„λ‘œλŠ” 였히렀 진행이 λΉ¨λΌμ‘Œλ‹€.

  • CRC μ„Έμ…˜μ„ ν•˜λŠ” 쀑간에 ν˜Όλž€μ— λΉ μ‘Œλ‹€. ResponsibilityDrivenDesign 을 잘 μ•Œκ³  μžˆμ—ˆλ‹€κ³  μƒκ°ν–ˆλŠ”λ° μ΄λ•Œ 잘 λ˜μ§€ μ•Šμ•˜λ‹€.

잘 λ˜μ§€ μ•Šμ€ 뢀뢄은 λ‹€μŒμ— λŒ€ν•œ μ‹œλ‚˜λ¦¬μ˜€μΈλ°,

Client (클래슀 이용자) λŠ” Library μ—κ²Œ keyword λΌ λ˜μ§€λ©° 검색을 μš”μ²­ν•˜λ©΄, LibraryλŠ” κ·Έ keywordλΌ μ΄μš©, κ²€μƒ‰ν•˜μ—¬ Client μ—κ²Œ 돌렀μ€λ‹€.

ν•˜μ§€λ§Œ, μ‹€μ œλ‘œ Library λ‚΄λΆ€μ—μ„œλŠ” λ§Žμ€ 일듀이 μž‘λ™ν•œλ‹€. 즉, keyword λΌ ν•΄λ‹Ή HTTPμ—μ„œ GET/POST μŠ€νƒ€μΌλ‘œ λ°”κΏ”μ€˜μ•Ό ν•˜κ³  (μΌμ’…μ˜ Adapter), μ΄λΌ HttpSpider μ—κ²Œ λ„˜κ²¨μ£Όκ³  κ·Έ κ²°κ³ΌλΌ νŒŒμ‹±ν•˜μ—¬ 객체둜 λ§Œλ“  λ’€ Client μ—κ²Œ λŒλ €μ€˜μ•Ό ν•œλ‹€.

즉, RDD λΌ μœ„ν•œ CRC μ„Έμ…˜μ€‘ 계속 κ·Έ ν΄λž˜μŠ€λ“€μ˜ 좔상화 μ •λ„λΌ λ†“κ³  μ„œλ‘œ ν΄λž˜μŠ€λ“€μ„ μΆ”μΆœν•΄λ‚΄λŠ”λ° 어렀움을 κ²ͺμ—ˆλ‹€. ('μš©μ–΄λŠ” μ–΄λŠμ •λ„ μΆ”μƒν™”λΌ μ‹œμΌœμ•Ό ν•  것인가?', 'λ‚΄λΆ€ κ΅¬ν˜„ μ‹œμŠ€ν…œμ΄ 가급적이면 λ“œλŸ¬λ‚˜μ§€ μ•ŠλŠ” 것이 일반적으둜 쒋은 λ””μžμΈμ΄λΌκ³  ν•˜λŠ”κ²ƒ 같은데 막상 μš°λ¦¬κ°€ BottomUp 을 ν•˜μ—¬ 뽑아낸 λ””μžμΈμ—” μ΄λΈ μ΄λ¦„μ΄ 'HttpSpider' λ“± 이고..' λ“±λ“±)

μ–΄λ–»κ²Œ 보면 또 λ‘˜ κ°„μ˜ λ¬΄μ˜μ‹μ μΈ 'Design Evaluation' 에 λŒ€ν•œ 강박관념이 μ•„λ‹ˆμ˜€μ„κΉŒ ν•˜λŠ” 생각도 ν•΄λ³Έλ‹€. (μΌμ’…μ˜ PairPressure 일지도;) --1002

CRCκ°€ 잘 μΆ”μΆœλ˜μ§€ μ•Šμ„λ•ŒλŠ” 차라리 UserStoryλΌ λ”°λΌκ°€λ©΄μ„œ ν΄λž˜μŠ€λΌ λ§Œλ“€κ³ , κ±°κΈ°μ—μ„œ λ‹€μ‹œ CRCλΌ μƒκ°ν•΄ λ³΄λŠ” 방법이 μ‹œκ°„ μ ˆμ•½μ— ν˜„λͺ…ν•  것이라고 μƒκ°λœλ‹€. 객체 지ν–₯ 의 ν”„λ‘œκ·Έλž˜λ°μ„ μΆ”κ΅¬ν•΄μ˜¨ κ²°κ³Ό, Scenarioλ‚˜, UserStoryλΌ λ”°λΌκ°€λ©° μ½”λ”©ν•˜λ©΄μ„œ μˆ˜λ§Žμ€ ν΄λž˜μŠ€λ“€μ΄ μ±…μž„μ— λ”°λΌμ„œ μƒκ²¨λ‚˜λŠ” 것을 λ³΄λ©΄μ„œ μžμ—° μŠ€λŸ¬μ›€κ³Ό, μ•½κ°„ μ˜μ•„ν•¨ 마져 λ“€μ—ˆλ‹€.

μ™œλƒλ©΄, λ°λΈ”μŠ€ μΊ ν”„ κΈˆμš”μΌ μ‹œκ°„μ΄ λλ‚˜κ³  λ‚˜μ„œ 7μΈ΅μ—μ„œ μ„μ²œμ΄μ™€ UserStoryλΌ λ”°λΌκ°€λ©° λ§Œλ“€μ–΄μ§„ RandomWalk2 CRC의 λͺ¨μŠ΅μ—μ„œλŠ” 단 3개만의 클래슀만이 μ‘΄μž¬ν•˜μ˜€λ‹€. ν•˜μ§€λ§Œ, UserStoryλΌ λ”°λΌκ°€λ©΄μ„œ μ†ŒμŠ€ 수μ€μ˜ 코딩을 ν•˜λ©΄ 더 λ§Žμ€ 클래슀둜 뢄화할것을 κΈ°λŒ€ν•œλ‹€. 즉, 코딩을 ν•˜λ©΄ μ–΄μ©”μˆ˜μ—†μ΄ Layer의 졜 ν•˜μœ„κΉŒμ§€ λ‚΄λ €κ°ˆμˆ˜ 밖에 μ—†μœΌλ¦¬λΌκ³  λ³Έλ‹€. 자 그럼 λ¬Έμ œλŠ” λ ˆμ΄μ–΄ 일것이닀. λ‹€ν–‰νžˆ ν˜„μž¬ μ½”λ”©λœ 뢀뢄은 μ „λΆ€ logic의 λΆ€λΆ„μœΌλ‘œ μ·¨κΈ‰ν•˜κ³  μžˆμ§€λ§Œ, logic λ‚΄μ—μ„œ λ‹€μ‹œ λ ˆμ΄μ–΄λ‘œ λ‚˜λ‰˜μ–΄μ„œ μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν• μˆ˜ μžˆλŠ” μΈμžμ™€ μ—†λŠ” 인자둜 λ‚˜λ‰˜μ–΄ μ Έμ•Ό 할것이닀. μ—¬κΈ°μ„œ μž μ‹œ κΈ°μ–΅λ˜λŠ” 말

ObjectWorld 의 μ „ μ„ΈλΈλ‚˜μ—μ„œ μ•„ν‚€ν…νŠΈ μ„κ³„μžλŠ”(Architector) μ†ŒμŠ€λΌ κ°€μ§€κ³  λ””μžμΈμ„ μƒκ°ν•˜λŠ” μ‚¬λžŒμ΄ μ•„λ‹ˆλΌ, λ””μžμΈ(μŠ€νŽ™μœΌλ‘œ μ œμ‹œλœ)을 보고 λ””μžμΈ(μžμ‹ μ˜ νšŒμ‚¬μ— λ§žλŠ”)을 λ§Œλ“€μˆ˜ μžˆλŠ” λŠ₯λ ₯을 가진 μ‚¬λžŒμ΄λΌκ³  λ§ν•˜μ˜€λ‹€.

μš°λ¦¬κ°€ 처음 망μ„μ΄λ˜ λΆ€λΆ„μ˜ CRCκ°€ 그런 μΌ€μ΄μŠ€λΌκ³  μƒκ°λœλ‹€. μ†ŒμŠ€ κΉŒμ§€ μ ‘κ·Όν•˜μ§€ μ•Šμ€μ²΄, Layer-TierλΌ μƒκ°ν•˜λ©΄μ„œ μ±…μž„μ„ λΆ€μ—¬ν• λ•Œ, λ‚˜κ°€μ§€ μ•ŠλŠ” 진도에 λ‹΅λ‹΅ν•΄ ν•˜λ©° κΊΌλ‚Έ λ©”λͺ¨μž₯이 재λΈμžˆλŠ” κ²°κ³ΌλΌ κ°€μ Έλ‹€ μ£Όμ—ˆλ‹€. λ‹€μŒ 같은 상황이 되면 μŠ€νŠΈλ ˆμŠ€λŠ” 훨씬 μ„μ–΄ λ“€κ²ƒμœΌλ‘œ μƒκ°ν•œλ‹€.
λ©”λͺ¨μž₯을 μ“°λ©΄μ„œ μ ‘κ·Ό 방법이 아에 λ‹¬λžλ‹€λŠ”κ²ƒλ„ μˆ˜λ©΄μœ„λ‘œ 올라였긴 ν–ˆμœΌλ‹ˆ; --1002

λ§ˆμ§€λ§‰μœΌλ‘œ μ„μ²œμ΄μ˜ 의견이 λ¨Όμ € 올라였길 κΈ°λ‹€λ¦° λ‚˜λŠ” λ‚˜μœλ„˜μ΄λ‹€. 흐흐흐
--상λΌ

  • UserStory 와 μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€λΌ ν˜Όμš©ν•΄μ„œ μ“΄ 것 같은데, UserStory Page λΌ μ°Έμ‘°.
    • UserStory 와 Scenario μΌλΆ€λŸ¬ ν˜Όμš©ν•΄μ„œ 썼닀. μ‹€μ œλ‘œ μš°λ¦¬λŠ” λ‘˜λ‹€ μ΄μš©ν–ˆλ‹€κ³  μƒκ°ν•˜κΈ° λ•Œλ¬Έμ— νŠΉλ³„νžˆ ꡬ뢄할 생각을 μ•ˆν–ˆμŒ --상λΌ
      • 'μΌλΆ€λŸ¬' 인가. κ΅¬ν˜„λΆ€λΆ„μ΄ '무엇을 ν•˜κ³  μžˆλ‚˜' 에 λŒ€ν•΄ '이 StoryλΌ ν•˜κ³  μžˆλ‹€' λΌκ³ λŠ” 이야기할 수 μžˆμ–΄λ„, μš°λ¦¬κ°€ μ‹€μ œ coding ν• λ•Œ μ΄μš©ν•œκ±΄ User Scenario 에 λ§žμΆ˜κ²ƒμž„. UserStory λŠ” 말 κ·ΈλŒ€λ‘œ 'Target' 일 뿐이라 μƒκ°ν•˜λŠ”λ°. μ–΄λ–»κ²Œ '이용' ν–ˆμ§€? --1002
  • μ†ŒμŠ€ μˆ˜μ€ μ½”λ”©μ‹œ 더 λ§Žμ€ ν΄λž˜μŠ€λ“€μ΄ λΆ„ν™”λ˜λŠ” μ΄μœ λŠ” CRC 쀑 ν΄λž˜μŠ€μ™€ 클래슀 κ°„ λŒ€ν™”λΌ ν• λ•Œ λ„˜κΈ°λŠ” κ°μ²΄λΌ λ”°λ‘œ ν‘œμ‹œν•˜μ§€ μ•ŠμœΌλ‹ˆκΉŒ. (μš°λ¦¬κ°€ 7μΈ΅μ—μ„œμ˜ RandomWalk2 보면 Class 와 Class κ°„ λŒ€ν™”λΌ μœ„ν•œ ν΄λž˜μŠ€κ°€ 4개μ더 있음)
    • 4κ°œλΌ μ–΄λ–»κ²Œ κ΅¬ν˜„ν• μ§€ 생각 μ•ˆν•œκ²ƒμœΌλ‘œλ„ μ΄λΈ class의 μΆ”μΆœμ€ 3개라고 생각함. 그렇지 μ•Šκ³  μ†ŒμŠ€ 수μ€μ΄λΌλ©΄ μ „λΆ€ λ‹€ μΆ”μΆœν•˜κ³  그렇지 μ•Šμ„κ±΄ λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ ν–ˆκ² μ§€. --상λΌ
      • κ·Έλ ‡λ‹€λ©΄ 3개의 ν΄λž˜μŠ€λŠ” κ΅¬ν˜„μˆ˜μ€μœΌλ‘œ κΉŒμ§€ λ‚΄λ €μ™”λ˜κ°€? μ–΄μ°¨ν”Ό parameter 둜 λ‚˜μ˜¨ 클래슀 4κ°œλ‚˜ μš°λ¦¬κ°€ 'μ±…μž„μ„ λ§‘μ•˜λ‹€' 라고 ν•˜λŠ” 클래슀 3κ°œλ‚˜ κ·Έ ν‘œν˜„μˆ˜μ€μ€ λ˜‘κ°™λ‹€κ³  μƒκ°ν•˜λŠ”λ°. --1002
  • 그리고 'Layer' 의 뜻이 λͺ¨ν˜Έν•˜κΈ΄ ν•˜κ΅°. 'Abstract Layer', λ””μžμΈμ— λŒ€ν•œ 좔상화 μ •λ„λΌ μ΄μ•ΌκΈ°ν•˜μ‹œλŠ”κ²ƒμž„? (λ¬Έλ§₯상 일단 κ·Έλ ‡κ²Œ ν•΄μ„ν•˜λŠ”μ€‘)
    • 같은 μ˜λ„ --상λΌ
      • 그럼 고쳐. -_- --1002
  • 자칫 RDD μ—μ„œμ˜ κ·Έ μ„ΈλΆ€ν΄λž˜μŠ€λ“€μ— λŒ€ν•΄μ„œ λ„ˆλ¬΄ 많이 μƒκ°ν•˜λ©΄ BUFD(Big Up-Front Design) 이 되리라 μƒκ°ν•œλ‹€. 차라리 Class κ°€ 2κ°œμ˜€μ„λ•Œ μ½”λ”© λ“€μ–΄κ°€κ³ , 20-30λΆ„ 정도 μ½”λ”©λ’€ Refactoring 을 μ˜μ‹μ μœΌλ‘œ ν•˜μ—¬ Big Class 에 λŒ€ν•΄ Extract Class λΌ μΆ”κ΅¬ν•˜λŠ”κ²Œ 더 λΉ λ₯΄μ§€ μ•Šμ•˜μ„κΉŒ.
  • TestDrivenDevelopment 의 κ²½μš°λΌ μΆ”κ΅¬ν–ˆλ‹€λ©΄ μ–΄λ– ν–ˆμ„κΉŒ. TDD 의 νŠΉμ„±μƒ κΌ­ ν•„μš”ν•œ λ©”μ†Œλ“œλ“€λ§Œ μžˆλŠ” λ‹¨μˆœν•œ λ””μžμΈμ„ μœ λ„ν•œλ‹€λΌλŠ” μ μ—μ„œ. 이번의 κ²½μš°λ„ Scenario λΌ μƒκ°ν•˜μ—¬ ν”„λ‘œκ·Έλž¨ λΌˆλŒ€λΌ λ§Œλ“€μ–΄μ„œμΈμ§€ μ£Ό Interfaceκ°€ λ˜λŠ” λ©”μ†Œλ“œλ“€μ™Έμ— λΆˆν•„μš”ν•œ λ©”μ†Œλ“œλŠ” μ μ—ˆκΈ΄ ν•œλ°, κ·Έ λŒ€μ‹ , μ‹ κΈ°ν•˜λ¦¬λ§ŒμΉ˜ 처음 μ§  μ‹œλ‚˜λ¦¬μ˜€κ°€ μ™„λ²½ν•˜κ²Œ λ¨Ήνžˆμ—ˆλ‹€λž€ 생각도 λ“ λ‹€;
    • μ‹œλ‚˜λ¦¬μ˜€κ°€ μ£Όμš” ν•œκ²ƒμ— λ™μ˜, μ‹ κΈ°ν•˜λ‹€λŠ” λŠλ‚Œ λΉ„μŠ· -- 상λΌ
  • λ°•μ„±μš΄μ”¨λΌλ©΄ SeparationOfConcerns λΌ λŠ˜ μ–ΈκΈ‰ν•˜μ‹œλŠ” λΆ„μ΄λ‹ˆ; λ””μžμΈ μ •μ±…κ³Ό κ΅¬ν˜„λΆ€λΆ„μ— λŒ€ν•œ 뢄리에 λŒ€ν•΄μ„  μ €λ²ˆ μ € 논문이 μ–ΈκΈ‰λ˜μ—ˆμ„λ•Œ μž₯점에 λŒ€ν•΄ μ„λͺ…을 λ“€μ—ˆμœΌλ‹ˆκΉŒ. μ΄λŠ” ResponsibilityDrivenDesign κ³Ό ν•΄λ‹Ή λͺ¨λ“ˆ 이름을 μ§€μ„λ•Œμ˜ 좔상화 정도가 μ§€μΌœμ„ μˆ˜ μžˆμ„ κ²ƒμ΄λž€ λ§‰μ—°ν•œ 생각쀑.
  • See Seminar:KissPrinciple
  • λ‚˜λ„ ps. λ°˜λ¬Έν•˜κΈ°κ°€ 보톡은 더 쉽닀; (λ©”λͺ¨μž₯에 κΈ€μ“΄κ±° μ΄μ•ΌκΈ°ν•˜λŠ”κ±° μ•„λ‹˜. 'λ§ˆμ§€λ§‰μœΌλ‘œ' λΌ 'ps.' λŒ€μ‹  μ“΄ 것일 λΏμž„) --1002
    • 아직도 λ‚΄κ°€ λ©”λͺ¨μž₯을 ν•€κ±Έ 가지고 가진 생각을 μ˜€ν•΄ν•˜λŠ”κ±° 같은데 이해가 μ•ˆκ°„λ‹€. 같은 μ΄μ•ΌκΈ°λΌ μ •λ§ 많이 ν•œκ±° 같은데 절반 정도 μ˜λ„ 전달이 λœλ“ ν•˜λ‹€. 남은 μ ˆλ°˜μ€ μ—¬λ°±μ˜ λΈ --상λΌ
      • 말둜 κ±ΈλŸ¬μ§€κ³  κΈ€λ‘œ κ±ΈλŸ¬μ§€κ³  ν•˜λ£¨ μ§€λ‚˜μ„œ κΈ°μ–΅λ ₯으둜 κ±ΈλŸ¬μ§„ λ°μ΄ν„°λŠ” '손싀' 이겠지. μœ„μ˜ '......' 뢀뢄은 κ·Έλ•Œ μ΄μ•ΌκΈ°ν–ˆμ—ˆλ˜ μžμ„Έν•œ λŒ€ν™”λ‚΄μš©μ΄ 기얡이 μ•ˆλ‚˜μ„œ κ·Έλƒ₯ μ €λ ‡κ²Œ μ“΄ 것일 뿐인데. μ˜€ν•΄ν–ˆλ‹€κ³  μƒκ°ν•œλ‹€λ©΄ κ·Έ λΆ€μ±ν•œ 기얡을 μ±„μ›Œμ£Όλ©΄ μ•ˆλ˜λ‚˜. --1002

7. 10(수)

  • CollaborativeFiltering 에 λŒ€ν•œ μ•Œκ³ λ¦¬μ¦˜ λ…Όμ˜
  • Book Search Iteration 에 λŒ€ν•œ ꡬ체적인 Task μ„μ •.
  • Python, webdebug λΌ μ΄μš©, ProjectPrometheus/LibraryCgiAnalysis Task
  • HttpURLConnection 을 이용, HTML λ¬Έμ„œ κ°€μ Έμ˜€κΈ° Task

CollaborativeFiltering 에 λŒ€ν•œ λ…Όμ˜. λ…Όλ¬Έ 3κ°œλΌ λΈλ¦¬ μ½μ–΄λ‘μ—ˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³ , μ•Œκ³ λ¦¬μ¦˜ 뢀뢄에 λŒ€ν•΄μ„œ 'μ‹€μ œ κ΅¬ν˜„μ‹œ μ–΄λ–»κ²Œ 할것인가?' λΌλŠ” μ§ˆλ¬Έμ— λŒ€ν•΄ μž…μ„ 열지 λͺ»ν–ˆλ‹€. 으.. λ…Όμ˜μ— 무λͺ¨ν•˜κ²Œ(?) 껴듀지 λͺ»ν•˜κ³  μžˆλŠ”μ€‘μΈκ²Œ μ™œμ΄λ¦¬ μ–΅μšΈν•œμ§€. 곡뢀 ν—›ν–ˆλ‹€ ν—›ν–ˆμ–΄..

Python Interpreter λŠ” 말 κ·ΈλŒ€λ‘œ 'shell' 이닀.; command λŒ€μ‹  μ“°κ³  μ‚΄κΉŒ.. Python κ³Ό webdebug 을 이용, λ„μ„œκ΄€ μ›Ή μ‚¬μ΄νŠΈμ— GET/POST 으둜 λ°μ΄ν„°λΌ λ³΄λ‚΄λŠ” 뢀뢄에 λŒ€ν•œ 뢄석은 μ°Έ νŽΈν–ˆλ‹€. (단, Python shell μ—μ„œμ˜ encoding 뢀뢄에 λŒ€ν•΄ μΆ©λŒλ‚˜λŠ”κ±΄ 골치)
--1002

μ˜†μ—μ„œ 파이썬으둜 proxy돌리고, Web debugν•˜λŠ” 것이 λ©‹μ§€κ²Œ λ³΄μ˜€λ‹€. νŒŒμ΄μ¬μ—μ„œ λŠκ»΄μ§€λŠ” μ¦‰μ‹œμ„±μ€ μ–Έμ œλ‚˜ λ‚˜λ‘œ ν•˜μ—¬κΈˆ 경탄을 μžμ•„λ‚΄κ²Œ ν•œλ‹€. 비둝 λ‚΄κ°€ κ²‰μœΌλ‘œλŠ” ν‘œν˜„μ΄ λΆ€μ±ν• μ§€λΌλ„...

HTTPμ—μ„œ λ¬Έμ„œλΌ κ°€μ§€κ³  μ˜€λŠ” 것에 κ΄€ν•˜μ—¬ λ”±νžˆ 결둠을 λ‚΄λ¦΄μˆ˜κ°€ μ—†μ—ˆλ‹€. λ„μ„œκ΄€μΈ‘μ˜ 잘λͺ»μ΄ μ•„λ‹ˆμ—ˆμ„κΉŒ ν•˜λŠ” 생각이 뿐이닀. zpμ„œλ²„μ—μ„œλŠ” getκ³Ό post κ°€ μž˜λ˜λŠ”λ° λ°˜ν•˜μ—¬, λ„μ„œκ΄€μ΄ μ΄μƒν•˜λ‹€. ν˜„μž¬λŠ” 11일이며, μ„μ²œμ΄μ™€ 이야기 끝에 μ μ ˆν•œ μ„ μ—μ„œ νƒ€ν˜‘ν•˜κΈ°λ‘œ ν•˜μ˜€λ‹€. 더이상 μ‹œκ°„μ„ μŸκΈ°μ—λŠ” λ„ˆλ¬΄ 아깝닀. --상λΌ

7. 9(ν™”)

ν•œμΌ

  • Architecture, Design 에 λŒ€ν•΄ μ˜λ…Όν•˜κ³  λΌˆλŒ€λΌ μž‘μ•˜λ‹€.
  • μ„κ³„λΌ ν•˜λ©΄μ„œ ν”„λ‘œκ·Έλž˜λ° 접근법에 λŒ€ν•΄ μƒκ°ν•΄λ³΄μ•˜λ‹€.
    1. MVCλΌ μƒκ°ν•˜λ©΄μ„œ, 이에 λ§žλŠ” JSP(View), Servlet(Controller), Bean(Model)λ‘œμ„œμ˜ WebProgramming을 κ΅¬μƒν•˜μ˜€λ‹€.
    2. μ›”μš”μΌμ— μž‘μ„±ν•œ ν†΅ν•©λœ UserStory와 ScenarioλΌ κΈ°λ°˜μœΌλ‘œ μ™„μ „ν•œ Requiment λΌ μž‘μ„±ν•˜κ³ , MVC, WebProgramming을 κ°μ•ˆν•˜μ§€ μ•ŠλŠ” CRC 접근을 ν–ˆλ‹€.

1002

  • 1002 λŠ” 였늘 λͺ¨μž„μ „ ν•΄λ‹Ή ν”„λ‘œκ·Έλž¨μ΄ Java Servlet & JSP κΈ°λ°˜μ—μ„œ λŒμ•„κ°ˆκ²ƒμ΄λΌ 생각, Java Web Programming μ—μ„œμ˜ MVC νŒ¨ν„΄μ„ 책듀을 λ³΄λ©΄μ„œ κ³΅λΆ€λΌ ν–ˆλ‹€. κ·Έλž˜μ„œ κ·ΈλŸ°μ§€, neocoin κ³Ό 전체 λ””μžμΈ μ΄μ•ΌκΈ°λΌ ν• λ•Œ Java Web μ—μ„œμ˜ MVC style 에 λŒ€ν•΄ λ¨Όμ € μ–ΈκΈ‰ν•˜κ²Œ λ˜μ—ˆλ‹€. κ·ΈλŸ¬λ©΄μ„œ JSP Page - Servlet - Logic 객체듀 둜 λ‚˜λˆ„κ³  Requirement 와 이전 μˆ˜μš”μΌλ•Œ ν–ˆμ—ˆλ˜ Iteration λ“±μ—μ„œμ˜ μš©μ–΄λΌ λ– μ˜¬λ¦¬λ©° λ””μžμΈμ„ μƒκ°ν•˜κ²Œ λ˜μ—ˆλ‹€.

    κ·ΈλŸ¬λ‹€κ°€ λ‚˜μ€‘μ— '이전에 μƒκ°ν–ˆμ—ˆλ˜ CRC μ„Έμ…˜μ—μ„œμ˜ λ””μžμΈκ³Ό λ‹€λ₯΄λ‹€' 라 νŒλ‹¨, λ‹€μ‹œ CRC μ„Έμ…˜μ„ κ°€μ Έμ„œ λ””μžμΈμ„ ν•˜κ²Œ λ˜μ—ˆλ‹€. μ•žμ˜ κ²½μš°κ°€ MVC Architecture에 λŒ€ν•œ λ””μžμΈμ΄ λ‚˜μ™”λ‹€ ν•œλ‹€λ©΄, ν›„μžμ˜ κ²½μš°λŠ” μ‹€μ œ Logic 뢀뢄에 λŒ€ν•΄ 더 κ΅¬μ²΄ν™”λœ (ν•˜μ§€λ§Œ, Java Web Architecture μ™€λŠ” 상관없이 일단은 일반 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό κ°™μ•„λ³΄μ΄λŠ”) λ””μžμΈμ΄ λ‚˜μ™”λ‹€.

    즉, μ•žμ˜ λ””μžμΈμ˜ 경우 JSP νŽ˜μ΄μ§€λ“€μ˜ λ„이밍에 Logic λ””μžμΈμ΄ 영ν–₯을 λ°›μ•˜λ‹€κ³  ν• κΉŒ. 뭐, μ–΄μ°¨ν”Ό κ΅¬ν˜„λΆ€λΆ„μ€ μ œλŒ€λ‘œ μƒκ°ν•˜μ§€ μ•Šμ€ Conceptual Model 에 κ°€κΉŒμš΄ κ²ƒμ΄μ˜€μ§€λ§Œ, ν›„μžμ˜ 경우 데이터 ν΄λž˜μŠ€μ™€ κ·Έ μ±…μž„μ„ 맑은 ν΄λž˜μŠ€λ“€μ΄ 더 λͺ…μ‹œμ μœΌλ‘œ λ“œλŸ¬λ‚¬λ˜κ²ƒ κ°™λ‹€. μ „μžμ˜ κ²½μš°λ„ '이 κΈ°λŠ₯을 맑은 ν΄λž˜μŠ€μ•Ό' ν•˜λ©΄μ„œ Responsibilty μ‹μœΌλ‘œ μ ‘κ·Όν•˜λ €κ³  λ…Έλ ₯ν–ˆμ§€λ§Œ, ν›„μžμ˜ κ²½μš°κ°€ κ·Έ μš©μ–΄λ©΄μ—μ„œ 더 μΆ”μƒμ μ΄μ˜€λ‹€. (μ „μžμ˜ 경우 κ·Έ 이름이 μ‹œμŠ€ν…œμ„ λ“œλŸ¬λ‚΄λ €κ³  ν–ˆλ‹€.)
  • neocoin

  • ν›„μžμ˜ 경우이기 λ•Œλ¬Έμ— μš©μ–΄λ©΄μ—μ„œ 더 μΆ”μƒμ μ΄λΌλŠ” 것에 μ•½κ°„ μ˜λ¬Έμ΄λ‹€. μ™œ μΆ”μƒμ μΌκΉŒ? 좔상적인 μ΄μœ λŠ” ~cpp MVC-WebProgramming의 μ„계 접근을 ν•˜λ©΄μ„œ OOPμ—μ„œ λŠκ»΄μ§€λŠ” μ±…μž„μ— λ”°λ₯Έ μ˜μΈν™”κ°€ μ•”λ¬΅μ μœΌλ‘œ 막아져 λ²„λ¦°λ“ ν•˜λ‹€.
  • λ§Œμ•½ MVC μ„κ³„μ—μ„œ 처음 μ‹œμž‘ν• λ•Œ μ±…μ˜ κ°μ²΄ν™”λΌ μƒκ° ν–ˆλ‹€λ©΄... ν•˜λŠ” 아쉬움이 λ“ λ‹€.
  • 이번 κ²½ν—˜μ΄ μ£ΌλŠ” κ°€μž₯ 큰 λŠλ‚Œμ€ μ‹œκ°„μ΄ 많이 듀더라도, μ„κ³„μ˜ 컨셉을 μ—¬λŸ¬ κ°λ„λ‘œ 해봐야 ν•˜λŠ” λŠλ‚Œμ΄ λ“ λ‹€. μ§€μ³μ„œ, μ‹œκ°„μ΄ λΆ€μ±ν•΄μ„œ 의견 μ œμ‹œλΌ λͺ»ν–ˆμ§€λ§Œ ꡬ쑰적 μ ‘κ·Ό λ°©λ²•μœΌλ‘œ μ ‘κ·Όν–ˆλ‹€λ©΄ 색닀λ₯Έ λͺ¨μŠ΅μ΄ λ“€μ—ˆμ„ 것이닀.
  • λ‘˜λ‹€ κ³΅κ°ν•˜κ³  μžˆμ§€λ§Œ, λ””μ§€νƒˆ 카메라가 μ—†λŠ” 것이 λ„ˆλ¬΄ 아쉽닀.

  • CRC의 접근은 JSP-Servlet-Bean μƒμ—μ„œ κ΅¬ν˜„ν•˜κΈ° κΉŒνƒˆμŠ€λŸ¬μš΄ λ©΄μžˆμ„ 것 κ°™λ‹€. ν•˜μ§€λ§Œ, MVCλ‹ˆ ν•˜λŠ” 말에 μ§‘μ€‘ν•˜μ§€ μ•Šκ³ , 였직 객체 μƒν˜Έκ°„μ— λŠ₯λ ₯ 배양에 νž˜μ“°λ‹ˆ, 빠진것이 μ—†λŠ”κ²ƒ κ°™μ•„μ„œ, μ’‹μ™”λ‹€.
  • 7. 8(μ›”)

    • ν•œμΌ : μš”κ΅¬μ •μ˜ 정리, UserStory와 Scenario 혼용, 확인 λΆ€μ±ν•œ μŠ€νŽ™ λΆ€λΆ„ 발견, κ°œλ°œν™˜κ²½ μ •μ˜
    • neocoin: λ§ˆλ•…νžˆ ν•΄μ•Ό 할일을 ν–ˆλ‹€κ³  λŠκΌˆλ‹€.
      • λ§ˆλ•…νžˆ ν•΄μ•Ό ν•  일. κ·Έ 일을 ν•΄μ•Ό ν• λ•Œ 무엇을 ν•΄μ•Ό 할지 ν•œνμ— 생각이 λ‚˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점, κ·Έ 일을 ν•΄μ•Ό ν•  λ•Œ, μ‹œκΈ°λΌ λ†“μΉœλ‹€λŠ” 점이 아쉽닀고 ν•œλ‹€λ©΄ λ’·λΆμΌκΉŒ.(κΈ€ 늦게 μ“΄ μ‚¬λžŒμ˜ μ—¬μœ ;) -- 1002

    • μ§€λ‚œλ²ˆμ— λ°›μ•˜λ˜ μš”κ΅¬μ‚¬ν•­μ •μ˜λœ 글듀을 (κ·Έλ•Œ 글듀을 λΈλ¦¬ μŠ€μΊ”ν•΄λ‘μ—ˆμ—ˆλ‹€.) λ‹€μ‹œ λ³΄λ©΄μ„œ λ‹€μ‹œ μ •λ¦¬λΌ ν•˜μ˜€λ‹€. μ–΄λ– ν•œ μˆœμ„œλ‘œ ν• κΉŒ ν•˜λ‹€κ°€ 일단 μ‚¬μš©μžμ˜ κΈ°μ€μœΌλ‘œ, μ‚¬μš©μžλ“€μ΄ μ΄μš©ν•˜λŠ” κΈ°λŠ₯(Functional)κ³Ό 퍼포먼슀 κ΄€λ ¨ (Non-Functional) λΆ€λΆ„μœΌλ‘œ μƒκ°ν–ˆκ³ , 주둜 Functional ν•œ 뢀뢄을 κΈ°μ€μœΌλ‘œ μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€λΌ μž‘μ„±ν•˜λ©΄μ„œ μš”κ΅¬μ‚¬ν•­λ“€μ„ μ •λ¦¬ν•˜μ˜€λ‹€. κ·ΈλŸ¬λ©΄μ„œ μ§€λ‚œλ²ˆ Requirement λΌ λ°›μ„λ•Œ μˆ˜λ™μ  μžμ„Έλ‘œ μžˆμ—ˆμŒμ„ ν›„νšŒν–ˆλ‹€. 5일이 μ§€λ‚œλ’€ μ •λ¦¬ν•˜λ‹ˆκΉŒ μ΄λ ‡κ²Œ 머리가 μ•ˆλŒμ•„κ°€λ‚˜;
      "μ—¬κΈ°μ„œ Recommendation System 이 μž‘λ™ν•΄μ•Ό ν•  뢀뢄이 λ“€μ–΄κ°€λ©΄ μ•ˆλ˜κ² λŠ”λ°... 본래 μ˜λ„λŠ” 검색이 되고 λ‚œ λ’€ μ±… κ΄€λ ¨ 정보가 λ‚˜μ˜¬λ•Œ RS κ°€ μž‘λ™ν•˜μ—¬ 같이 ν‘œμ‹œκ°€ λ˜μ–΄μ•Ό ν•΄."

    • λΆ€μ±ν•˜λ‹€κ³  μƒκ°λ˜μ–΄μ§€λŠ” 점
      • Engineering Task κ°€ 아직 λͺ…ν™•μΉ˜ μ•Šλ‹€. Engineering Task λΌ μ§€κΈˆ 일단 κ°„λ‹¨ν•˜κ²Œ μƒκ°ν•˜λŠ”κ²Œ λ‚˜μ„κΉŒ μ•„λ‹ˆλ©΄ Architecture Design 뒀에 더 κ΅¬μ²΄ν™”ν•΄μ„œ μ“°λŠ”κ²Œ λ‚˜μ„κΉŒ ꢁ리쀑. 일단은 μ „μžλΌ λ¨Όμ € κ°„λ‹¨ν•˜κ²Œλ‚˜λ§ˆ ꢁ리.
      • AcceptanceTest 방법에 λŒ€ν•œ λ…Όμ˜ λΆ€μ± - μˆ˜μš”μΌ μ΄μ „κΉŒμ§€ ꢁ리 μ˜ˆμ •; 흐..흐;

    --1002

    7. 3(수)

    1002

    • Requirement λΌ λ°›μ•˜λ‹€. Requirement λΌ λ°›κΈ°μ „μ— λ„ˆλ¬΄ μ€λΉ„λΌ μ†Œν™€νžˆ ν–ˆλ‹€λΌκ³  μƒκ°ν•œλ‹€. Requirement λΌ λ°›λŠ”λŒ€μ—λ„ λΈλ¦¬ κ³„νšμ„ μ„Έμ› μ–΄μ•Ό ν–ˆλŠ”λ°. 차라리 전에 μ΄μš©ν•˜λ˜ UserStory μž‘μ„± -> λŒ€κ°•μ˜ EngineeringTask ꢁ리 -> EngineeringTask μ—μ„œ κ³΅ν†΅μœΌλ‘œ κ²ΉμΉ˜λŠ” λΆ€λΆ„ / 큰 λΆ€λΆ„ λ‚˜λˆ„κΈ° -> Estimate κ²°κ³Ό μž‘μ„± 이라도 μ‹œλ„ν•΄λ³Όκ±Έ μ΄λž€ 생각이 λ“ λ‹€. Requirement Process 에 λŒ€ν•΄μ„œ κΌ­ 비격식적이더라도 ꡬ쑰적인 방법을 생각해볼 ν•„μš”κ°€ μžˆλ‹¨ 생각이 λ“€μ—ˆλ‹€. (λ„ˆλ¬΄ ν—ˆλ‘₯지λ‘₯ν–ˆλ˜ 것을 μƒκ°ν•˜λ©΄.)

    • Requirement λΌ λ°›μ„λ•Œ 팁 - μ΄λΈ κ΅¬ν˜„μ΄ λ˜μ—ˆλ‹€κ³  상정해보기. NoSmok:κ³Όκ±°ν˜•λ§ν•˜κΈ° (μ™„λ£Œν˜•μœΌλ‘œ λ§ν•˜κΈ°)

    • NoSmok:AnalyzeMary . 상λΌμ΄μ™€ λ‚΄κ°€ 같이 μžˆμ„λ•Œμ˜ κ΄€μ°°λ˜λŠ” λͺ¨μŠ΅μ„ 보면 재λΈμžˆκΈ°λ„ ν•˜λ‹€. λ‚΄κ°€ 거의 κ΅¬μ‘°λΌ μž‘μ§€ μ•Šκ³  ν”„λ¦¬ν•Έλ“œλ‘œ Requirement λΌ μ μ–΄κ°”λ‹€λ©΄ 상λΌμ΄λŠ” Mind Map 의 룰을 μ§€μΌœμ„œ ν•„κΈ°ν•΄λ‚˜κ°„λ‹€.

      또 ν•˜λ‚˜ 상λΌμ΄μ—κ²Œ 빼놓을 수 μ—†λŠ” 것이라고 ν•œλ‹€λ©΄ μ €λ²ˆν•™κΈ°λΆ€ν„° μ“°λ˜ Letter μ‚¬μ΄μ¦ˆμ˜ (λ§žλ‚˜. λŒ€κ°• 크기가) μž‘μ—…μΌμ§€. 그리고 Post It. μ§‘μ—μ„œ IR λΌ μ“°κΈ΄ ν•˜μ§€λ§Œ, 주둜 λ°–μ—μ„œ μž‘μ—…ν•˜κ³  집에 늦게 μ˜€κΈ°λ•Œλ¬Έμ— κ³€λž€ν•œ 점이 μžˆλ‹€. λ“€κ³  λ‹€λ‹ˆλ©΄μ„œ κ°„νŽΈν•œ 정보관리도ꡬ에 λŒ€ν•΄ ꢁ리해볼 일. (λ˜λŠ” PC7 에 IR을;)

    neocoin

  • ReqλΌ λ°›λŠ” μž‘μ—…μ€ 쀑볡이라 κΈ°λ‘ν•˜μ§€ μ•ŠλŠ”λ‹€. ν›„νšŒλ˜λŠ” 뢀뢄도 μ€λΉ„ μ†Œν˜μ„ λΉ„μŠ·ν•˜κ²Œ μƒκ°ν•œλ‹€.
  • κ·Έμ™Έ 집에 μ™€μ„œ, JSP + EJBλΌ ν…ŒμŠ€νŠΈ ν•˜μ˜€λŠ”λ°, 아직 μ„±κ³΅ν•˜μ§€λΌ λͺ»ν–ˆλ‹€. 'μžλ°” κ°œλ°œμžλΌ μœ„ν•œ EJB μ΅œμ‹  μž…λ¬Έμ„œ... μ—”ν„°ν”„λΌμ΄μ¦ˆ μžλ°” 빈즈'에 수둝된 JSP에 치λͺ…적인 문법적 잘λͺ»μ΄ μžˆμ—ˆλŠ”λ°, JSPλΌ μ¨λ³΄μ§€ μ•Šμ•˜λ˜ λ‚˜λ‘œμ„œλŠ” 책을 μ‹ λ’°ν•œ 것이 잘λͺ»μ΄μ—ˆλ‹€. μƒˆλ‘œ μΆ”μ •ν•˜κΈ°μœ„ν•˜μ—¬ 그제의 μˆ˜μˆœμ„ λ°Ÿμ•„κ°€λ©° 잘λͺ»μ„ μ°ΎλŠ”λ°, μ—­μ‹œ μ‹œκ°„μ΄ 였래 κ±Έλ Έλ‹€. 일단 JNDI의 string문제둜만 κ·€κ²° μ§“λŠ”λ‹€. J2EE sdk + Tomcat이 μ•„λ‹Œ JBoss+Tomcat 이라면 μˆ˜μ›”νžˆ ν•΄κ²°λ˜μ§€ μ•Šμ„κΉŒ μ˜ˆμƒμ„ ν•΄λ³Έλ‹€.
  • 그리고 μ„μ²œ IR이 뭐야 ?
    EJB의 νš¨μš©μ„±μ— κ΄€ν•΄μ„œ, EJB둜 κ°€μ•Όν•˜λŠ”μ§€ 말아야 ν•˜λŠ”μ§€ 망μ„μ—¬μ§ˆλ•Œ 도움을 μ£ΌλŠ” 체크 리슀트, 그리고 IR은 μ•„λ§ˆλ„ http://no-smok.net/nsmk/InformationRadiator μΌλ“ --μ΄μ„ μš°


  • Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:24:05
    Processing time 0.2314 sec