Iterator Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #10 - 이터레이터(iterator) Pattern 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해주는 방법을 제공합니다. 반복적으로 처리해야 하는 것을 통합해 주는 패턴입니다. 배열, ArrayList, Hashtable등의 리스트 처리 방식이 모두 다릅니다. 이런 것을 iterator 패턴을 이용하면 동일한 방식으로 처리할 수 있습니다. 배열의 경우에는 직접 구현해 주어야 하지만, ArrayList나 H..
리펙토링을 하려면 소스 코드 속의 나쁜 냄새를 맡을 수 있어야 한다고 합니다. "리펙토링"이란 책에서 켄트 벡(Kent Beck)과 마틴 파울러(Martin Fowler)가 이야기한 코드 속의 나쁜 냄새에 대해 정리해 보려고 합니다. 중복된 코드 (Duplicated Code) - 동일한 소스가 여기 저기 사용된다면 반드시 리펙토링을 해야 한다고 합니다. Extract Method (136), Extract Class (179), Pull Up Method (370), Form template Method (393) 긴 메소드 (Long Method) - C 프로그래밍부터 시작해서인지 절차적 프로그래밍에 익숙한 경우, 하나의 메소드에서 모든 일을 처리하는 경우가 종종 있습니다. 긴 메소드는 쪼개야 한다고..
프로그래머들은 한번쯤 리펙토링이라는 것을 들어봤을 겁니다. 리펙토링이 좋다는 것은 익히 들어 알겠는데 실제로 못하는 경우가 대부분입니다. 왜 그럴까요? 우선, 리펙토링이 무엇이고 어떻게 하는 것인지 모르기 때문인 것 같습니다. 솔직히 저도 리펙토링 관련 책을 이번에 읽어보기는 했지만, 아직도 어떤 경우에 리펙토링을 해야 하는지 느낌이 확 오지는 않습니다. -.- A->B로 변경하는 것이 설명되어 있으면, 바로 B->A로 바꾸는 것도 설명되어 있습니다. 즉, 경우에 따라 적용하는 리펙토링이 다르다는 것인데.. 이건 경험이 필요한 것 같습니다.~ 끊임없이 생각해보고 변경하다보면 어떤 것이 올바른 리펙토링인지 알수 있지 않을까 합니다. 다음으로는 리펙토링을 하고 있으면, 윗분들은 아무것도 하지 않고 있다고 생..
루씬 인 액션 - 에릭 해쳐.오티스 고스포드네티츠 지음, 이문호 외 옮김/에이콘출판 프로젝트를 수행할 때마다 항상 고민이 되는 것이 바로 검색엔진이었던 것 같습니다. 상업용 검색엔진을 이용하면 비용이 발생하고, 그렇다고 DB 검색으로만 붙여놓기에는 늘어나는 정보의 양이 부담이 되었죠.. 아마 그때 루씬이라는 오픈소스를 알고 있었다면 한번쯤 적용해 보자고 했었을 수도 있었을 것 같네요. ^^ 물론 이 책에도 잘 나와 있지만 한글에 대한 분석기가 완벽한 것이 없어서 실제 적용에는 많은 한계가 있을 겁니다. 하지만 많은 개발자들이 관심을 가진다면 이것도 머지 않아 해결되지 않을까 하네요~ 책 자체로 보면 번역서라고 믿기지 않을 정도로 매끄럽게 되어 있습니다. 검색엔진에 대한 "색인", "쿼리(질의어)", "분..
윈도우(XP)를 다시 설치할 경우, 어떤 것들을 최적화해야할까? 항상 설치할 때마다 고민하고.. 이것 저것 찾아보고.. 그때 그때 적용해왔었는데요.. 이번 기회에 대략적으로라도 정리해 두려고 합니다. (물론 모두 블로고스피어에 있는 글을 링크하려구 합니다. ^^) 1. 윈도우 업데이트 설치 후 가장 먼저 해야 할 것은 바로 윈도우 업데이트겠죠.. http://windowsupdate.microsoft.com/ 2. 백신프로그램 바이러스와 관련된 프로그램을 하나 설치하는데요.. V3나 바이로봇도 있지만 Nod32가 가벼워서 주로 설치합니다. 간단한 사용법을 화면 캡쳐를 통해 정리해 둔 블로그가 있네요.. http://blog.naver.com/hjm01/26048731 3. MSCONFIG "시작 > 실행..
프로젝트를 진행할 때, 현업에서 사용하는 방법론은 여러가지가 있습니다. 방법론!! 몇몇 사람들 특히 개발자들은 방법론은 쓸데없는 것이고 개발에 전혀 도움이 되지 않는다고 이야기 합니다. 저 역시도 RUP, 마르미, 이노베이터 등의 방법론을 토대로 프로젝트를 진행해 본 경험이 있습니다만, 솔직히 방법론이 무용지물이라는 생각을 해본 적이 꽤 있습니다. 이유는 바로 방법론에 맞추어 개발하고 산출물을 만드는 것이 아니라, 프로젝트 완료 시점에 방법론의 산출물을 한꺼번에 작성하거나 초기에 대충 작성해 놓고 나중에 한꺼번에 변경하는 것이 문제가 되는 것이었습니다. 그러다보니 오히려 방법론이 개발팀에 있어서는 짐이 되는 것이죠.. 또, 방법론은 모든 프로젝트를 염두에 두고 만들어 놓은 것이므로.. 프로젝트의 특성에 ..
초보자를 위한 PHP, MySQL, Apache - Julie C. Meloni 지음, 김석중 옮김/정보문화사 제 홈페이지 환경이 PHP로 되어 있어.. 간간히 짧은 지식으로 이것저것 만들어 보다가~ PHP에 대해 체계적으로 함 보자.. 해서 살펴본 책입니다. 전체적으로 PHP에 대해 설명이 되어 있는데요.. 깊이는 부족한 것 같습니다. 수박 겉핥기 식으로 전체적으로 쭉 훑어보기에는 괜찮지만... PHP에 대한 세부적인 내용은 분야별로 별도의 내용을 찾아보심이 좋을 것 같네요.. 어차피 현재 저에게 필요했던 것은 PHP의 전체적인 흐름이었으니~ 어느정도는 만족하고 본 셈인데요. 그럼.. 각 파트별로 살펴볼 내용을 요약하도록 하겠습니다. 제 1부 기초다지기는 PHP, Apache, Mysql의 설치와 관련..
XML 원리와 응용 - XML, DTD, XML 스키마, XSLT - 홍성용 지음/한빛미디어 XML은 제가 98년도부터 관심을 가지고 살펴보던 것이었는데요.. 초창기에만 해도 책이 거의 없어서.. XML 스펙, DOM 스펙을 토대로 프로그래밍을 했던 기억이 나네요. 도서관에 들려서 오랜만에 XML 관련 서적을 쭉 살펴보다가 한번 읽어보려고 잡은 책입니다. XML 스펙들에 대한 전반적인 설명이 잘 되어 있다고 생각됩니다. 전체적인 흐름은 이런 종류의 책을 보시면 되구요.. XSLT나 DOM, SAX등.. 세부사항에 대해서는 관련 서적을 한번 더 보시는게 도움이 될 겁니다. 간혹, 제 홈페이지(http://www.word.pe.kr)에 보면 XML의 기본적인 요소들을 질문하는 경우를 종종 봅니다. 웹사이트를..
Template Method Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #9 - 템플릿 메소드 (Template Method) Pattern 템플릿 메소드 패턴에서는 메소드에서 알고리즘의 골격을 정의합니다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의 할 수 있습니다. 알고리즘의 템플릿 즉, 틀을 만들기 위한 패턴입니다. 추상클래스를 만들어 두고, 여기에 templateMethod를 둡니다. temp..
멀티플레이어.. 월드컵에서 한국축구가 4강을 이루었던 2002년 많이 들었던 말 같습니다. 박지성으로 대표되는 멀티플레이어는 다양한 포지션을 소화할 수 있어야 경기의 운영이 수월해진다는 것이죠.. 프로그래밍에서도 이런 멀티플레이어는 필요합니다. 하나의 언어, 하나의 플랫폼, 하나의 방법론만 고집해서는 문제를 해결할 수 없는 경우가 대다수죠.. 그런데, 한편으로 축구의 멀티플레이어를 생각해 보죠.. 아무리 박지성이 다양한 포지션을 소화한다고 해도, 90분 축구경기 도중 10분마다 혹은 5분마다 포지션을 변경하지는 않습니다. 즉, 90분 경기중 선수교체에 의해 한번이나 혹은 많아야 두번 정도 변화를 주는 것이죠.. 다시말해 멀티플레이어란 다양한 환경을 다룰 수 있다는 것이지.. 동시에 여러가지 프로젝트를 수..