프로젝트의 규모가 점점 커지면서, 소스코드의 버전관리가 중요한 요소로 자리잡아 가고 있습니다. 혼자서 단독으로 프로그래밍을 하던 시기에는 백업 파일만 잘 보관하면 됐지.. 버전관리가 왜 필요할까? 하고 생각했던 것이 사실입니다. 하지만, 협업을 하게 되면서.. 단순히 백업만 가지고서는 발생할 수 있는 문제점들을 해결하는데 어려움이 있게 됩니다. 소스코드를 누가 변경한 것인가? 현재 소스와 이전 소스의 차이점은 무엇인가? 현재 소스를 릴리스(release)에 어떻게 반영할 것인가? 동시에 동일 파일에 대한 변경이 발생할 경우, 충돌을 어떻게 해결할 것인가? 단순한 백업에서는 해결하지 못했던 것을 소스코드 버전관리를 통해서 처리할 수 있게 되는 것입니다. 그래서 어떤 프로젝트를 막론하고.. 심지어 프로토타입..
Singleton Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #6 - Singleton Pattern 싱글턴 패턴 (Singleton Pattern)은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 인스턴스에 접근할 수 있도록 하기 위한 패턴입니다. 가장 널리 사용하는 디자인 패턴이 아닌가 합니다. 굳이 디자인 패턴을 모르더라도 자바 프로그래밍에서 자주 사용하기도 하죠~~ 싱글턴 패턴은 클래스에서 자신의 단 하나뿐인 인스턴스를 관리하도록 만들면 됩니다. 그리고 다른 어떤 클래스에서도 자신의 인스턴스를 추가로..
실제로 프로젝트를 진행할 때, 프로토타입을 만든다는 이야기를 많이 합니다. 이런 프로토타입(prototype)의 사전적인 의미를 살펴보도록 하죠. prototype [출처 : 네이버영어사전] ━ n. 1 원형(原型)(archetype);견본, 전형;(후대 사물의) 선조, 원조(元祖) the prototype of a character (소설에서) 인물의 원형 2【생물】 원형(原形) ━ vt. …의 원형[견본]을 만들다 원형이나 견본이라는 의미로 주로 사용되고 있는데요.. 프로그래밍에서는 언제 프로토타입(원형, 견본)을 만들어야 할까요? 당연히 이미 해봤던 것이나, 전체적인 로직과 흐름을 잘 알고 있으며, 구현이 가능한 것에 대해서는 프로토타입이 필요 없을 것입니다. 처음 시도해 보는, 이 기능이 구현될지..
상품디자이너인 데이비드 켈리는 “성공과 실패는 동등하게 보상받을 가치가 있다. 하지만 아무 것도 하지 않는 다면 벌을 줘야 한다” 고 이야기 했습니다. 실제 프로젝트를 진행할 때 일입니다. 모 프로그램에 플러그인을 개발해야 할 필요가 있었는데.. 처음에 AJAX (DWR) 을 이용해서 처리했습니다. 하지만, 원격에서 호출이 안되자. dwr 문제일까? 하고 prototype으로 바꾸어서 테스트 해 보았지만, 역시 문제가 발생했습니다. Javascript는 보안상의 이유로 cross-domain을 지원하지 않기 때문이었습니다. 그래서 이런 경우에 사용할 수 있는 이기종간의 통신을 위한 웹서비스를 사용하자고 제안했습니다. 웹서비스를 이용하여 프로그램을 구성하고 테스트를 마치고 보니.. 이런 웹서비스 내에서 우..
프로젝트를 수행하다보면 많은 사람들이 참여하게 됩니다. 기획자, 개발자, 디자이너, PM, PL… 어느 하나 중요하지 않은 것이 없다고 생각합니다. 톱니바퀴가 물려 돌아가듯이 서로 협력하고 앞으로 나아갈 때만 좋은 결과가 나오지 않을까 하네요~~ 그런 의미에서 얼마전 블로고스피어에 나온 글들을 나열해 봅니다. Linus님의 개발자와 기획자 상생의 길 본인의 경험에 따라 개발자와 기획자 사이의 의사소통 해결부분에 대해서 이야기하고 있습니다. 기획하시는 분들이 아주 좋아할 만한 스타일의 개발자라는 생각이 드네요~~ 철수님의 개발자와 기획자 상생의 길을 읽다가.. 개발자와 기획자가 서로 이해하지 못하는 이유에 대해서 적어놓고 있습니다. 서로간의 조금씩 양보하고 서로의 입장이 되어준다면 이정도 문제는 해결해 나..
깨진 창문 이론(Broken Window Theory)이라는 말이 있습니다. '티핑 포인트'라는 책과 '실용주의 프로그래머'라는 책에서 인용되고 있는데요.. 요약하면, 오랜기간 수리하지 않고 방치된 창문 하나가 거주자들에게 버려진 느낌을 준다는 겁니다. 그래서 다른 창문이 하나 더 깨지고.. 낙서가 등장하고.. 심각한 구조적 손상이 시작되는 것이죠.. 결국 건물 소유주가 고치려는 의지를 넘어설 정도로 건물이 손상되고, 버려진 느낌은 현실이 되어 버린다는 겁니다. 보다 자세한 내용은 다음 블로그들을 참고하시기 바랍니다. http://www.nanael.net/48 http://blog.naver.com/chowyf?Redirect=Log&logNo=80034681435 '실용주의 프로그래머' 책에서는 실생..
마틴파울러는 이렇게 말했습니다. 컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다. 워드 커닝햄은 다음과 같이 이야기했습니다. 저는 작지만 유용한 프로그램들을 매일 작성할 것을 추천합니다. 누군가가 똑같거나 혹은 더 나은 걸 이미 만들었다는 데에 절대 신경쓰지 마세요. 유용성과 복잡성 간의 균형 감각을 얻기 위해서는 당신 자신이 만든 프로그램의 유용성을 직접 느껴봐야만 합니다. 둘 다 매우 감동적인 이야기입니다. 정말 부럽기도 하구요~~ 그러나 IT 개발자의 현실은 그렇게 여유롭지만은 못한 것 같습니다. 몇주전 블로고스피어에 올라왔던 아메바님의 그림일기를 보면 아주 적나라하죠.. ^^ 이런 현실을 벗어나 즐겁게 일하면서 사람이 이해할 수 ..
Abstract Factory Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #5 - Abstract Factory Pattern 추상 팩토리 패턴에서는 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성할 수 있습니다. 디자인 원칙 1. 추상화된 것에 의존하도록 만들어라. 구상 클래스에 의존하도록 만들지 않도록 한다. 추상 팩토리 패턴을 사용하면 클라이언트에서 추상 인터페이스를 통해서 일련의 제품들을 공급받을 수 있습니다. 이때, 실제로 어떤 제품이 생산되는지는 전혀 알 필요도..
Factory Method Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #4 - Factory Method Pattern 팩토리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만듭니다. 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브 클래스에 맡기는 것이죠. Creator 추상 클래스에서 객체를 만들기 위한 메소드, 즉 팩토리 메소드를 위한 인터페이스를 제공하고 있습니다. Creator 추상 클래스에 구현되어 있는 다른 메소..
Decorator Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #3 - Decorator Pattern 데코레이터 패턴(Decorator Pattern)에서는 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 디자인 원칙 1. 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다. 데코레이터 패턴은 포함관계를 나타냅니다. 기본 Component를 각 Decorator 클래스가 포함함으로써.. 원하는 결..