'사색/독서'에 해당되는 글 108건

  1. 2007.10.19 리펙토링 - 나쁜 디자인의 코드를 좋은 디자인으로 바꾸는 방법 (2)
  2. 2007.10.11 루씬 인 액션(Lucene In Action) - 오픈소스 자바 검색엔진
  3. 2007.09.21 초보자를 위한 PHP, MySQL, Apache (1)
  4. 2007.09.17 [도서] XML 원리와 응용 - XML, DTD, XML 스키마, XSLT
  5. 2007.08.27 실용주의 프로그래머를 위한 버전관리 - using CVS
  6. 2007.08.07 조엘 온 소프트웨어 - 유쾌한 오프라인 블로그 (2)
  7. 2007.07.20 Effective Java - 자바 유창하게 말하기
  8. 2007.07.12 데드라인 (The Deadline) - 소설로 읽는 프로젝트 관리

리펙토링 - 나쁜 디자인의 코드를 좋은 디자인으로 바꾸는 방법

|



Refactoring - 10점
Martin Fowler 지음, 윤성준.조재박 옮김/대청(대청미디어)

리펙토링이 무엇이고 어떻게 하는 것인지 관심이 있었기 때문에 정독하려고 잡은 책입니다.

책 내용은 제가 원하던 내용들이 잘 나와 있었습니다.
리펙토링의 정의나 왜 사용해야 하는지..
그리고 실제 예제와 함께 어떻게 리펙토링 하는지에 대한 체계적인 설명이 되어 있더군요..

다만, 솔직히 조금 어렵다는 느낌입니다.
나름대로 번역도 잘 되어 있기는 하지만, 원본의 의미전달이 잘 되었는지 의구심이 드는 부분도 조금 있었구..
예제와 내용을 보면서 한참 생각해 본 부분도 있었던 것 같습니다.

그래서인지 읽는데 꽤 오랜 시간이 걸렸구요~
나중에 찾아보기 위해 사용해야 하는데.. 나름 인덱스가 필요해서 따로 정리해 두기도 했습니다.

다음은 제가 정리해 놓은 인덱스 내용입니다.
리펙토링의 적용
코드 속의 나쁜 냄새
리펙토링 방법

어쨌든 리펙토링은 이제 프로젝트를 수행할 때, 반드시 고려해야 하는 부분이 아닐까 합니다.
여러분들도 1장에서 마지막까지 빠짐없이 한번 읽어보시고~
본인의 프로젝트에 적용할 수 있는 방법이 있는지 확인해 보시기 바랍니다.



Trackback 0 And Comment 2

루씬 인 액션(Lucene In Action) - 오픈소스 자바 검색엔진

|



루씬 인 액션 - 10점
에릭 해쳐.오티스 고스포드네티츠 지음, 이문호 외 옮김/에이콘출판

프로젝트를 수행할 때마다 항상 고민이 되는 것이 바로 검색엔진이었던 것 같습니다.
상업용 검색엔진을 이용하면 비용이 발생하고, 그렇다고 DB 검색으로만 붙여놓기에는 늘어나는 정보의 양이 부담이 되었죠.. 아마 그때 루씬이라는 오픈소스를 알고 있었다면 한번쯤 적용해 보자고 했었을 수도 있었을 것 같네요. ^^

물론 이 책에도 잘 나와 있지만 한글에 대한 분석기가 완벽한 것이 없어서 실제 적용에는 많은 한계가 있을 겁니다. 하지만 많은 개발자들이 관심을 가진다면 이것도 머지 않아 해결되지 않을까 하네요~

책 자체로 보면 번역서라고 믿기지 않을 정도로 매끄럽게 되어 있습니다.
검색엔진에 대한 "색인", "쿼리(질의어)", "분석"등에 대한 설명이 잘 되어 있어, 저처럼 검색엔진에 대해 어렴풋이 알고있던 초보들에게도 매우 도움이 될 거예요.

1장에서 6장까지는 루씬의 기본적인 내용을 다루고 있습니다.
기본적으로 검색을 하기 위한 원문의 색인과
검색을 위한 쿼리(질의어) 파싱..
색인과 쿼리 파싱에 적용할 분석기들..
고급기능으로서 검색결과 정렬이나 필터들에 대한 설명이 나와 있으니 참고하시기 바랍니다.

소스와 함께 설명이 되어 있으니 자바 언어에 대한 기본적인 지식만 있다면 충분히 이해할 수 있을 겁니다.

7장은 재미있는 내용입니다. 루씬은 기본적으로 텍스트 문서만 색인하고 검색할 수 있는데요.
실제 검색에서는 PDF, HTML, MS-Word등 다양한 문서를 다룰 수 있어야 합니다.
7장에서 이런 문서들을 색인할 수 있는 방법에 대해 설명하고 있습니다.

꼭 검색엔진이 아니더라도 이런 부분은 다른 데서 유용하게 활용할 수 있을 것 같네요~

이어서 루씬의 확장기능이나 다른 언어로 포팅한 것들을 설명하고,
루씬의 적용 사례에 대해 이야기 하고 있습니다.

이 번역서에는 부록으로 루씬 한글 분석기에 대한 예제가 들어있습니다.
물론 한글 형태소분석 방식이 아니어서 약간 부족한 면이 있지만
이걸 확장해서 사용하려는 개발자 분도 있을 것이구..
기존의 한글 형태소분석기를 루씬에 적용하려는 개발자도 있을 겁니다.
(혹, 좋은 거 알고 계시면 추천좀.. ^^)

어쨌든 인터넷에서 성공한 기업들은 모두 검색엔진을 가지고 있습니다.
초기의 야후가 그랬고.. 네이버, 다음, 구글이 그랬죠..
인터넷 솔루션을 생각한다면 이런 검색엔진과 친해져야 하지 않을까 하네요~
루씬 인 액션을 통해서 이런 검색엔진을 조금 더 이해할 수 있는 계기가 될 것이라고 생각하네요^^



Trackback 0 And Comment 0

초보자를 위한 PHP, MySQL, Apache

|



초보자를 위한 PHP, MySQL, Apache - 4점
Julie C. Meloni 지음, 김석중 옮김/정보문화사

제 홈페이지 환경이 PHP로 되어 있어..
간간히 짧은 지식으로 이것저것 만들어 보다가~
PHP에 대해 체계적으로 함 보자.. 해서 살펴본 책입니다.

전체적으로 PHP에 대해 설명이 되어 있는데요..
깊이는 부족한 것 같습니다.

수박 겉핥기 식으로 전체적으로 쭉 훑어보기에는 괜찮지만...
PHP에 대한 세부적인 내용은 분야별로 별도의 내용을 찾아보심이 좋을 것 같네요..

어차피 현재 저에게 필요했던 것은 PHP의 전체적인 흐름이었으니~
어느정도는 만족하고 본 셈인데요.

그럼.. 각 파트별로 살펴볼 내용을 요약하도록 하겠습니다.

제 1부 기초다지기는 PHP, Apache, Mysql의 설치와 관련된 부분인데요..
아쉬운 부분은 PHP나 Apache의 설정 부분에 대한 설명이 좀 약하다는 겁니다.
솔직히 윈도우, 맥, 유닉스/리눅스로 나누어 설명하고 있는데..
실질적으로 설치에서 중요한 것은 setup이 아니라 config를 다루는 부분이 아닐까 하는 생각이 좀 들었슴다.

제 2부 PHP 구조 부분에서는 PHP의 언어적 특징을 잘 설명하고 있습니다.
기본적으로 언어마다의 변수, 제어문, 함수등을 잘 이해할 필요는 있는 것이죠..
PHP에서 강력하게 활용할 수 있는 배열에 대해서도 어느정도 설명이 되어 있더군요..
아쉬운 점은 클래스와 같이 현재 PHP 버전에서 강력하게 사용할 수 있는 OOP에 대한 설명이 좀 부족했다는 생각이 드네요..

제 3부 PHP 코드 정복 부분이 이 책의 핵심이 아닐까 합니다.
쿠키, 세션, 파일등에 대한 설명이 나오는데요..
필요할 때 참조할 만 할 것 같습니다.

제 4부 PHP와 Mysql 통합에서 PHP에서 Mysql을 사용하는 방법이 잘 나와 있습니다.
데이터베이스를 활용하지 않는 프로젝트는 거의 없으므로 주의깊게 보셔야 하구요..
다만, 앞부분의 데이터베이스 개론이나 SQL 기초 부분은 뭐~ 초보자에게는 필요하겠지만
여기에서 다루지 않아도 될 주제가 아니었나 하기도 하고.. 암튼..

제 5부 필수 프로젝트는 PHP 사용 예제를 보여주고 있는데요..
달력 부분하고 XML 다루기 부분을 유의깊게 봤구요..
나머지는 그럭저럭 입니다. 걍 PHP를 이렇게 쓰는구나 하고 보시면 될 듯..

제 6부 관리와 튜닝은 초보자에게는 좀 어려울 수도 있는데요..
그렇다고 아주 전문적인 자료도 아닌 것 같아요..
그냥 상식을 늘린다는 차원에서 훑어보심이 좋을 듯 하네요~

전체적으로 정리하다보니..
아쉬운점을 주로 나열한 것 같네요.. 하지만 언어에 대한 전반적인 책의 형태가 다 이런식입니다.

언어의 구조(변수, 제어문, 함수, 배열..) 설명하고 예제 좀 보여주고 나면 별로 다룰 게 없거든요..
그렇지만 어쨌든 책을 보는 건 중요합니다.
웹상의 자료들도 잘만 검색하면 당장 필요한 것을 얻을 수 있지만, 체계를 갖추기가 어렵다고 보거든요

그럼.. 좋은 하루 되세요~~



Trackback 0 And Comment 1

[도서] XML 원리와 응용 - XML, DTD, XML 스키마, XSLT

|



XML 원리와 응용 - XML, DTD, XML 스키마, XSLT - 6점
홍성용 지음/한빛미디어
XML은 제가 98년도부터 관심을 가지고 살펴보던 것이었는데요..
초창기에만 해도 책이 거의 없어서.. XML 스펙, DOM 스펙을 토대로 프로그래밍을 했던 기억이 나네요.

도서관에 들려서 오랜만에 XML 관련 서적을 쭉 살펴보다가 한번 읽어보려고 잡은 책입니다.
XML 스펙들에 대한 전반적인 설명이 잘 되어 있다고 생각됩니다.
전체적인 흐름은 이런 종류의 책을 보시면 되구요..
XSLT나 DOM, SAX등.. 세부사항에 대해서는 관련 서적을 한번 더 보시는게 도움이 될 겁니다.

간혹, 제 홈페이지(http://www.word.pe.kr)에 보면 XML의 기본적인 요소들을 질문하는 경우를 종종 봅니다.
웹사이트를 이리저리 찾아보다가 질문을 하시는 것 같아서.. 최대한 답변을 해드리고 있는데요..
이런분들은 위와 같은 책을 한번 정도 정독해 보시는 것이 크게 도움이 될 거라고 생각합니다.
웹사이트에 많은 정보가 있지만, 그래도 체계적으로 정리해 놓은 책 한권 정도는 읽고 난 다음에야.. 그 정보의 바다가 도움이 되지.. 처음부터 거기에서 모든 내용을 찾을 수는 없다고 보거든요..

참고로 XML은 거의 10년동안  IT의 중요한 이슈로 자리잡았구요.. 강컴이나 알라딘에서 XML로 검색해 보면 300~400권의 책이 나옵니다. 와우~ 많죠..
XML의 개념은 이제 어느정도 정리가 되어서 어떤 책을 보아도 상관이 없을 겁니다.
각자에게 맞는 책을 한권정도 읽어보시기 바랍니다.

음.. 이 책은 연습문제.. 심화문제.. 이런게 나오는 걸로 봐서 교재용으로 만든 것 같습니다.
참고로 책을 보다가 중간에 XML 제품을 소개하는 부분에서 GeneXis Xseek라는 게 나오는데..
XML 파서인 XParser를 포함해서 요 제품군을 제가 전에 있던 팀에서 개발한 것이거든요.. 느낌이 새로왔슴다.. ㅎㅎㅎ

그럼 책 내용을 살펴보도록 하지요..
일단 Part1은 XML의 기본내용인 문서구조, XML 작성방법, 환경등을 잘 설명하고 있습니다.
즉, XML 스펙을 정리해 놓았다고 보시면 되구요.. 한번 쭉 읽어보면 XML의 전체적인 구조를 파악할 수 있을 것입니다.

Part2는 XML과 관련된 각종 표준들을 다루고 있습니다.
DTD, XML Schema, XPath, XLink, XPointer, XSL..
그리고  XML을 활용하기 위해 가장 중요한 DOM과 SAX까지..
Part2의 내용은 XML을 다루기 위해서는 필수적인 요소라는 생각이 드네요..

Part3과 Part4는 XML 데이터베이스 활용인데요..
이 부분은 많은 변화가 있었습니다.
초창기 XML DB라고 나왔던 엑셀론이나 타미노는 이제는 잘 활용이 안되는 것 같구요..
MSSQL, Oracle, Mysql에서도 XML을 지원하기는 합니다만.. 제한적인 것 같네요..
이 부분은 이런게 있구나 하고 참고만 하시면 될 것 같습니다.

xml.zip





Trackback 0 And Comment 0

실용주의 프로그래머를 위한 버전관리 - using CVS

|



실용주의 프로그래머를 위한 버전 관리 using CVS
데이비드 토머스 외 지음, 정지호 옮김/인사이트

얼마전 소스코드 버전관리에 대한 포스팅을 한 적이 있습니다.

프로젝트를 진행하면서 보니 소스코드에 대한 버전관리는 프로젝트 자동화의 시작이며, 제대로 된 프로젝트를 위해서는 필수적인 요소라고 생각합니다.

그러나 실제로 소스코드 버전관리를 제대로 활용하는 개발자들이 얼마나 될까요?

그런점에서 소스코드 버전관리에 대한 책이나 글을 구해서 읽어보는 것이 도움이 될 거라는 생각이 들어.. 이 책을 소개합니다.

2005년에 이 책을 처음 읽었었구요.. 물론 그 때는 뭔내용인지 전혀 이해를 못했슴다. -.-
어떻게 활용해야 할지도 모르고 걍~ 예제에 나오는 대로 sesame이나 따라하는 정도였죠..

올 초에 다시 이책을 읽어봤습니다. 그리고 프로젝트에도 적용해 보구요..
실전에서 활용하려면 여기에 나오는 것만으로도 부족하다고 느꼈습니다.

예를 들어, 디렉토리까지 포함해서 지워진 파일들의 목록을 보고 다시 파일들을 복원하려면 어떻게 해야 할까요? 하는 문제에 대한 해답은 없는 것 같았습니다. (혹, 찾으신 분은 알려주세요 ^^)

물론 이클립스에 포함된 Restore from Repository.. 명령어로 한방에 해결하기는 했지요..

어쨌든 소스코드 버전관리에 대한 개념을 잡기 위해서라도 꼭 한번은 읽어보기를 권장합니다.
이클립스나 거북이(Tortoise)와 같은 툴만 사용할 것이 아니라 콘솔 명령어도 한번씩 보시면 도움이 될 것 같습니다.

일단, 1장 서론과 2장 버전관리란 무엇인가요? 부분은 잘 읽어보시기 바랍니다.
기본 개념을 이해하는 것은 매우 중요하니까요...

3장 ~ 6장까지는 CVS 명령어들에 대한 설명입니다.
실전에서도 활용할 수 있으므로 잘 읽어보시구요~~

7장~10장까지는 저는 아직 써보지 못한 부분이 많습니다.
내용만 이렇구나 하고 읽어봤구요..
솔직히 아직 꼬리표나 브랜치를 언제 써야 할 지..
또 이런 브랜치가 많아지면 오히려 나중에 통합이 어려울 텐데.. 하는 생각에 적용을 못해봤네요.. -.-

Appendix의 내용도 명령어 요약이나 WinCVS, 이클립스 사용방법이 포함되어 있으니 참고하시구요..

간단히 내용을 적은 것처럼 실제 책에 내용이 그리 만족스럽지는 못합니다.
오히려 인터넷 상의 자료들이 도움이 되기도 하죠..
하지만, 기본 개념을 잡기 위해서라면 한번 건드려라도 보세요~~



Trackback 0 And Comment 0

조엘 온 소프트웨어 - 유쾌한 오프라인 블로그

|



조엘 온 소프트웨어
조엘 스폴스키 지음, 박재호.이해영 옮김/에이콘출판

어느날 FineApple(http://fineapple.org/)이 한번 읽어보라고 준 책입니다.
(좋은 책 소개해 준 FineApple님에게 감사드립니다. ^^)

처음 받았을 때는 표지도 좀 별루고~ 다른 볼 책들도 있었기에.. 한쪽에 두고 있었슴다. 그러다가 "이거 한 번 읽어볼까.." 하고 봤더니..
오~~ 처음부터 내용이 너무 괜찮은 거예요..

개발자에 대한 이야기들..
유니코드~~
기능명세 관련 글..

내용이 너무 괜찮아 웹에서 찾아봤더니.. 2006년인가 베스트셀러에 강컴 어워드였더군요.. (그동안 책을 너무 안읽었어 -.-)

끝까지 읽어보니 첫 느낌대로 책의 내용은 괜찮았습니다.
이것저것 블로그 글을 모아둔 것이라서 그런지.. 뒤로 갈수록 약간 산만한 감은 있지만..
전체적으로 좋은 내용이었구.. 번역도 나름 매끄러웠습니다.

그래서 앞으로는 직접 블로그를 방문해서 읽어보려구.. 사이트를 북마크도 해 두었습니다.
http://www.joelonsoftware.com/

일단 기억에 남는 내용을 좀 적어보면..

개발자 선발하는 부분이 첫번째로 떠오릅니다.
"조금이라도 아닌 것 같다." 혹은 "글쎄.. 라는 답이 나온다.. "
또는 "다른 팀에서는 괜찮을 것 같은데.. 우리팀은 아냐.."

이런 경우, 무조건 No라는 겁니다.
솔직히 실질적인 개발자가 부족한 우리 현실에서는 상당히 어려운 문제죠.. -.-
그러나.. 잘못 뽑은 개발자 한명이 프로젝트를 망칠 수 있으니..
절대적으로 조엘의 말에 공감하는 부분이었슴다..

두번째는 한 장에 걸쳐 언급된 유니코드...
한글과 같은 멀티바이트를 처리할 때는 꼭 알아둬야 하는데요~
솔직히 저도 정확히 몰랐다는..

특히, IE가 자동으로 언어인코딩을 처리한다는 점.. (음.. 한국어 자동감지가 그거였던 것 같습다.)
항상 보면서도 몰랐네요.. -.- (어쩐지 불여우에서는 가끔 내 홈피가 이상한 문자로 나오더라니.. )

세번째로는 조엘 테스트..
12개 항목 중.. 7점 정도~~

10점 이하는 심각하다고 하니.. 쩝~~ 심각한 편이네요 -.-
참고로 12개 항목은 다음과 같습니다.

1. 소스코드 관리시스템을 사용하고 있습니까?
2. 한방에 빌드를 만들어 낼 수 있습니까?
3. 일일 빌드를 하고 있습니까?
4. 버그 추적시스템을 운영하고 있습니까?
5. 코드를 새로 작성하기 전에 버그를 수정합니까?
6. 일정을 업데이트하고 있습니까?
7. 명세서를 작성하고 있습니까?
8. 조용한 작업 환경에서 일하고 있습니까?
9. 경제적인 범위 내에서 최고 성능의 도구를 사용하고 있습니까?
10. 테스터를 별도로 두고 있습니까?
11. 프로그래머 채용 인터뷰 때 코딩 테스트를 합니까?
12. 무작위 사용편의성 테스트를 수행하고 있습니까?


그외에도..
닭이 먼저냐 달걀이 먼저냐~ 하는 부분에 대한 이야기~~
마이크로소프트의 API 전쟁 관련 이야기에서의 하위 호환성 문제...
성과급이나 측정이 오히려 해가 된다는 이야기 ~~ (역시 공감.. ㅋㅋㅋ)
종이 프로토타이핑.. (음.. 어떤 교수님이 프로그래밍에서 손뮬레이션이 중요하다고 하셨는데.. 일맥상통)

그러나.. 설계를 최대한 늦춰야 한다는 부분은 XP하고도 약간 상충된다고 나와있는데요..
제 경험상으로는 XP식으로 빠른 개발을 들어가는 것이 설계를 늦추는 것보다 낫기는 했는데~~
설계문서로 버그를 줄일 수 있다면, 조엘의 방식이 맞을 수 있겠으나~~
추상화된 설계를 보고 버그를 찾아낼 수 있는 사람이 과연 몇이나 될까요??
그래서 전 빠른 설계.. 빠른 수행.. 그리고 반복의 XP가 더 낫다고 보네요~~




Trackback 1 And Comment 2

Effective Java - 자바 유창하게 말하기

|



Effective Java Programming Language Guide
조슈아 블로치 지음, 이해일 옮김/대웅미디어

 VC++ 위주의 프로그래밍을 하다가 자바를 시작한지는 몇년 되지 않았기 때문에..
기본적인 문법을 다루고, 시스템을 구축하기는 어렵지 않았지만
자바 언어 자체에 대한 이해는 부족했던 것이 사실입니다.

Effective Java란 책을 읽어 보면서 자바 언어에 대해 좀 더 이해하게 됐다는 느낌이 들었습니다.
솔직히 equals나 hashCode의 재정의 같은 부분은 클래스를 수없이 만들면서도 한번도 생각하지 못한 것이었거든요 -.-

다만, 아쉬웠던 점은 번역서들이 대부분 그렇듯이.. 난해한 번역투의 문장이 많은 것이죠 ^^
아마도 원서의 내용은 매우 좋았을 것 같은데~~ 영어가 부족하니.. 감안하고 보는 수 밖에요.

그럼 책 내용을 간략하게 정리해보도록 하겠습니다.

1. 객체를 생성하고 파괴하기

Static Factory MethodSingleton과 같은 것은 디자인 패턴에 대한 책을 잠시 볼 때도 나왔었기에 이해하기가 쉬웠고요..

쓸데없는 객체를 중복 생성하지 않는 문제.. 다음과 같이 하지 말라는 거죠~
String s = new String("바보");
경우에 따라 간과하기 쉬운 것 같았슴다~~

그리고 finalize()를 사용하지 말라는 것..
가비지 컬렉터가 객체를 파괴하기 전에 호출하지만, 문제는 언제 객체를 파괴할 지 모르기 때문에 호출되는 시점을 알 수 없다는 것이죠..
음... C++에서는 소멸자를 매우 유용하게 썼었는데.. 자바에서는 실제로 거의 못봤던 것이죠..

2. 모든 객체의 공통 메소드 구현하기

여기에서 equals()와 hasCode()의 재정의에 대해서 봤습니다.
toString()의 재정의는 실제로 많이 사용하기는 했지만,

equals()나 hasCode()를 직접 재정의해 본 적은 없었네요..
표준 구현계약을 지켜서 재정의 하면 된다고 나와 있구요~~

clone() 메소드는 신중하게 재정의하라고 되어 있네요..
재정의 자체보다는 각 공통 메소드가 하는 일들을 다시 한번 정리한 점이 괜찮았던 것 같네요~~

3. 클래스와 인터페이스

OOP를 하면 나오는 것이고.. 자바 프로그래밍을 하려면 필수적인 것이라.. 색다른 내용은 없구요.
다만, final을 이용한 불변 클래스 (immutable class)를 많이 쓰라고 하는 점이 기억에 남네요..

4. C 구문 바꾸기

C언어에서 사용하는 구조체, union, enum 구문을 자바로 어떻게 변경해야 하는지 나타내고 있습니다.

구조체는 클래스로..
union은 클래스인데.. 계층구조로 즉, 추상클래스와 extends를 이용해서 바꾸라고 되어 있네요..
열거형(enum)은 클래스로 바꾸는데.. 타입안전 열거(typesafe enum) 패턴을 사용하라고 하네요..

타입안전 열거 패턴은 처음 들어봤는데요.. 나름 유용한 것 같네요. 왜 필요한지는 설명이 잘 되어 있슴다.

5. 메소드

코딩 규칙.. 즉, 메소드의 시그니처나 문서화를 위한 주석 (javadoc 같은 거겠죠..)을 하라는 이야기가 있구요.

중요한 부분으로는 방어복사(defensive copy)라는 것이 나오는데요..
메소드 내에서 인자(argument)를 처리할 때..
1. 메소드 내 인자 확인
2. 메소드 내 인자를 가지고 처리 후 결과 리턴

위 과정 사이에.. 즉 1.5 정도에 사용자가 인자의 내용을 바꾸면.. 원하는 결과가 나오지 않을 수 있다는 것이죠~
매우 간발의 차로 이루어지는 경우겠지만, 프로그래밍에서는 고려해야 하는 부분이겠죠..
그러므로 1번을 하기 전에 인자를 내부적으로 복사하라는 것이 바로 방어복사라고 합니다.

또하나.. 메소드에서 배열을 결과로 리턴할 때, 값이 없을 경우 null을 리턴하는 경우가 있는데..
null보다는 길이가 0인 배열을 리턴하는 것이 호출한 곳에서 받아서 처리할 때 좋다고 되어 있네요.
(음.. 이부분은 이렇게 사용해 왔던 것 같은데.. 다시 염두해 두어야 겠네요)

6. 프로그래밍 일반

일반적으로 고려해야 하는 사항들이 잘 정리되어 있습니다.
라이브러리를 잘 활용해야 한다는 이야기도 있구요..
정확한 계산에 float이나 double을 사용하면 안된다는 이야기
객체에 대한 참조는 인터페이스로 해야 확장성이 좋다는 점도..
신중하게 최적화하라는 이야기도 있네요.. (요건 프로젝트 관리 부분에서 한번 다루려고 합니다. ㅋㅋ)

7. 예외처리, 쓰레드, 직렬화

예외를 어떻게 처리해야 하는지.. 잘 설명되어 있구요..
쓰레드에 대해서는 조심해야 하는 부분들에 대해 간단히 설명되어 있습니다.
마지막으로 자바에서 많이 사용하는 직렬화(serialize)에서 주의사항들도 정리되어 있네요..

휴.. 내용을 간단히 정리해 봤습니다.
다음에 책 내용이 뭐더라~~ 하지 않으려고 한번 써보네요.. ㅋㅋ

그럼.. 좋은 하루 되세요!!





Trackback 0 And Comment 0

데드라인 (The Deadline) - 소설로 읽는 프로젝트 관리

|



데드라인
톰 디마르코 지음, 김덕규, 류미경 옮김/인사이트

"프로젝트 관리" 관련 포스트에서 가끔 인용했던 톰 디마르코(Tom DeMarco)의 '데드라인'을 소개합니다. 


일단, 딱딱한 "프로젝트 관리"를 소설 형식으로 쉽게 이야기하고 있습니다. 

그래서 읽기가 편하고, 내용이 어렵지 않고, 설명도 잘 되어 있습니다.  


물론, "프로젝트 관리"에 초점을 맞추다보니, 소설 내용이 작위적이면서 개연성이 없기는 합니다. 

어차피 재미있는 소설책을 원한게 아니었으므로 큰 문제는 없다고 봅니다. 


각 장(章)의 마지막에 "프로젝트 관리"에서 중요한 내용을 요약한 부분이 있는데, 참고 자료로 활용 가치가 있습니다. 

요약 내용 중 일부를 발췌해서 올립니다. 


모든 일에 변화가 필요합니다. 하지만, 사람들은 변화를 쉽게 받아들이지 않습니다.

그러므로 변화를 수용하기 위해, 고려해야 할 사항을 다음과 같이 설명하고 있습니다.


- 사람들은 안전하다고 느끼지 않는 한 변화를 수용하지 않는다.
- 변화는 프로젝트를 성공시키기 위해서 (그리고 그많한 가치가 있는 대부분의 노력을 위해서도) 필수적이다.
- 안전성이 부족하면 사람들은 위험을 감수하려고 하지 않는다.
- 위험을 피하는 것은 치명적이다. 위험과 연관되어 있는 이점도 놓치기 때문이다.
- 사람들은 직접적으로 위협을 받거나 자신들에게 악용될지도 모르는 권력을 인지할 때 불안함을 느낄 수 있다.


관리자가 반드시 가져야 할 감각―

많이 아는 것보다 직감, 후각, 정신과 같은 감각이 중요하다고 합니다. 

- 관리에는 마음과 본능과 정신 그리고 후각이 필요하다.
- 그러므로
   마음으로 이끌고,
   본능을 믿고(직감을 믿어라),
   조직에 정신을 심어주고,
   거짓말을 식별할 수 있는 후각을 키워라.


"프로젝트 관리"는 프로젝트의 위험을 관리하는 것. 절대 공감…

- 프로젝트의 위험을 관리하는 것으로 프로젝트를 관리한다.
- 각 프로젝트의 위험을 조사하고 관리한다.
- 궁극적으로 바람직하지 않은 결과를 추적하는 것이 아니라 원인이 되는 위험을 추적한다.
- 각 위험에 대한 발생 확률과 예상되는 소요 비용을 평가한다.
- 각 위험에 대해 위험이 구체화되는 것을 나타내는 초기 증상을 예방한다.
- 무엇이든지 '할 수 있다'는 자세를 갖고 일하지 않아도 되는 사람을 위험 담당자로 임명한다.
- 나쁜 소식이 조직의 계층구조 상위로 전달되는 데 용이한 (필요하다면 익명으로) 채널을 수립한다.

가끔 프로세스에 집중하다가 중요한 것을 놓치는 경우가 있습니다. 둘 사이의 균형이 중요하죠..
"눈 앞의 사소한 이익을 추구하다 큰 일을 그르치다."
- 좋은 프로세스와 지속적으로 향상되는 프로세스는 모두 훌륭한 목표가 된다.
- 이들은 또한 매우 당연한 목표이기도 하다. 훌륭한 개발자들은 그렇게 하라고 말을 하든 안 하든 간에 여기에 초점을 맞춘다.
- 공식적인 프로세스 향상 추진 계획은 시간과 돈이 든다. 그러한 프로세스 향상 작업은 프로젝트 작업을 뒤쳐지게 할 것이다. 생산성 향상이 실현된다 하더라도 그 계획을 실행한 프로젝트가 프로세스 향상에 들인 시간을 상쇄하지는 못한다.
- 프로젝트에서 향상 방법을 하나만이라도 제대로 선정한다면 본전(그러한 변화에 투자한 시간과 비용)을 뽑을 수 있을 것이라고 생각한다.
- 프로젝트가 그 기간 동안 하나 이상의 향상 방법을 수용하기를 바라는 것은 무리다. 여러 가지 기술을 한번에 향상시키려는 계획(Multi-skill improvement programs)은 그 계획을 실행하지 않았을 때보다 프로젝트를 더 지연시킨다.
- 표준 프로세스는 사람들이 중요한 지름길로 갈 기회를 놓치게 할 위험성이 있다.
- 특히 인원이 과다하게 투입된 프로젝트의 경우 모든 사람들에게 돌아갈 만큼 일이 충분하지 않다면 문제가 발생하게 된다.

"관리자가 화를 낸다."… 
직원이 무능하기 보다 관리자가 무능한 것이다. 느낌이 확 옵니다. .
- 관리에서 화와 모욕은 전염된다. 상급 관리자가 직원들을 학대하면 그 밑에 있는 관리자들도 그와 같은 행동을 따라한다.(학대받은 아이들이 학대하는 부모가 되는 것과 비슷하다.)
- 관리차원에서 모욕을 주는 일은 사람들이 자신의 능력에 좀더 투자하도록 만드는 자극제 역할을 해야 한다. 그것은 당근과 채찍 두 가지 관리법 중 가장 자주 사용되는 '채찍'인 것이다. 하지만 모욕이 능력을 더 발휘하도록 만든다는 증거가 어디에 있는가?
- 관리자가 직원들을 자극하기 위해 모욕을 주는 것은 직원이 무능하다기보다는 관리자가 무능하다는 표시다.

좋은 프로젝트 관리자, 아니 훌륭한 프로젝트 관리자…

끊임없이 연구하고 공부하는 자세가 필요하지 않을까요.







Trackback 0 And Comment 0
prev | 1 | ··· | 8 | 9 | 10 | 11 | next