본문 바로가기

전체 글

(678)
프로페셔널의 조건 (자기 실현 편) 프로페셔널의 조건, 왠지 멋있는 그런 책 제목이 아닌가요? 'Professinal' , 전문가, 또 전문가로서 갖추어야 한 조건이라니... 왠지 굉장히 '멋지고' 말그대로 전문적인 느낌을 많이 받아서 그런지.. 이책을 한번 봐야겠다.. 이런 생각이 문득 들었습니다. 사실 피터 드러커라는 사람도 이 책을 읽고 처음 알았습니다. 미국의 저명한 경제인이자, 컨설턴트이자, 경영학자인 그는 사회생활하는 사람들을 위한 글들을 많이 남겼습니다. AJN(Agile Java Network)라는 곳이 맺어준 인연으로 용훈님을 통해 빌려 보게 되었고, 이 자리를 빌어 감사하다는 말씀을 다시 한번 전해드립니다. 고맙습니다! 책을 나누어 본다는 건 참 좋은것 같아요.. 저도 돌려볼 책이 있으면 블로그에 게제를 해놓도록 하겠습니..
RTP : 2장. 리팩터링 2장에서는 리팩터링에 대한 개념과 리팩터링을 위해 필요한 것들에 대해서 알려주고 있다. 리팩터링이란? 리팩터링을 마틴 파울러가 정의하기를 '겉으로 보이는 동작을 바꾸지 않고, 이해하거나 수정하기 쉽게 소프트웨어의 내부 구조를 바꾸는 것' 이라고 되어있다. 모든 리팩터링은 작은것에 부터 시작하고, 작은 것들이 모여서 대규모의 리팩터링이 된다. 리팩터링을 띄엄띄엄 하기보다는 지속적으로 할때 최상의 효과를 얻을수 있다. 리팩터링을 하는 이유 새로운 코드를 더 쉽게 추가할 수 있도록 하기 위해 기존 코드의 설계를 개선하기 위해 기존 코드를 더 잘 이해하기 위해 덜 짜증나는 코드로 만들기 위해 궁극적으로는 사람이 읽기 쉬운 코드를 만들기 위해 많은 눈 최상의 리팩터링 결과를 얻으려면 많은 눈(사람)의 도움을 받는..
바람의 딸, 우리 땅에 서다 지금 내가 2007년 계획하고 있는 것중에 하나가 바로 '국토 종단' 이다. 어디가 끝이 되고 어디가 시작이 될지는 잘 모르겠지만, 아직 구체화된 계획은 하나도 없다. 하지만 이런 생각을 하게 된데는 다 '바람의 딸, 우리 땅에 서다' 라는 책 덕분이라고 생각한다. 그냥 유별난 오지 탐험가에서 이제는 난민 구호자로 일하고 있는 한비야씨의 저서를 모두 다 읽어볼 정도로 나는 한비야씨는 많이 좋아한다. 일종의 대리만족이라고나 할까? 한비야씨가 가는 길마다 보여지는 사진도 없고 영상도 없지만 이 분이 느낀 세계를 적어나간 글을 보고 있노라면 마치 넓디 넓은 초원에 우뚝 서있는 느낌이 든다. 조그만 방구석에서 책 한권을 통해 세계를 느낀다. 여행은 언제나 설레이고 힘들고, 많은 경험과 세상을 바라보는 눈을 가르..
세계 최고의 게임 크리에이터 9인의 이야기 이 책을 처음 접하게 된건, 친한 형이 책을 소개 해주었다. 굉장히 감명을 받은 책이라고 추천을 해줬는데, 처음에는 그다지 관심을 가지지 않았다. 왜냐하면.. 일단 게임을 하는 것에도 흥미를 잃었는데다가, 게임을 제작하는 과정에 대해서는 한번도 생각해보지 않았다. 게다가 프로그래밍 공부를 하면서 '게임' 을 만들어 보자는 생각은 전혀 해보지 않았고 그저 '웹 서비스' 를 외치며 공부를 해나갔기 때문에 관심이 가지 않았다. 책을 본격적으로 보게된 건 책을 빌린후에 이 책과 함께 학교를 가는 버스에 올랐을 때였다. 워낙 장거리를 달리는 광역 버스에 타다 보니 보통은 자거나 음악을 듣는 시간이었는데 모처럼 책을 꺼내서 읽기 시작했다. 어렸을때 접해 보았던 게임들의 제작자에 대한 이야기가 나오기 시작하면서 나의..
RTP : 1장. 이 책을 쓴 이유 1장은 전반적인 책에서 지양하고 지향하고자 하는 바에 대해서 서술이 되어있다. 과도한 설계 코드를 필요 이상으로 융통성 있게 또는 정교하게 만드는 것을 의미한다. 과도한 설계를 하게된다면, 필요 이상으로 크고 복잡한 코드를 기반으로 작업을 해야한다. 이를 해소하기 위해 시스템을 영역별로 설계 하지만, 자신이 맡은 영역에 대해서만 작업하기때문에 중복된 코드를 양산 할 수 있다. 과도하게 설계된 코드는 생산성에도 영향을 미친다. 유지보수를 하고 설계의 의미를 파악하는데 많은 시간이 필요하다. 이러한 설계는 프로그래머나 아키텍트가 인지 하지 못하는 상황에 발생하는 경우가 많고 패턴을 이용한 사전 설계에 빠지곤 한다. 패턴 만능주의 패턴은 객체지향 설계를 위한 융통성있고 정교한 방법이지만, 패턴을 지나치게 활용..
Multi-Threading ⑤ Synchronization & DeadLock 병행성의 문제를 해결하기 위해서는 '동기화' 라는 키워드를 사용합니다. 쉽게 말하자면, 동기화를 한 메소드에는 한 스레드 객체만이 접근할 수 있도록 자물쇠와 열쇠를 놓습니다. 한 스레드가 메소드에 접근을 하고 열쇠를 가지고 자물쇠를 잠근후에 들어갑니다. 해당 스레드가 동기화된 메소드에서 나오기 전까지는 키가 반납되지 않으므로 이후에 도착한 스레드들은 먼저 들어간 스레드가 나올때 까지 기다립니다. 이와 같은 방식을 동기화 한다고 합니다. 메소드명 앞에 Synchronized 라는 키워드를 통해서 동기화를 시켜 줄수 있습니다. 따라서 지난 예제에서 말썽을 부리게 된 increase() 라는 메소드 앞에 synchronized 키워드를 사용하면 문제를 해결할 수 있습니다. public synchronized ..
Multi-Threading ④ Concurrency Problem 앞서 말한 자바에서의 스레드의 특징중에, 잠재적인 문제 발생의 위험이 있다고 했었는데요, 첫째로 병행성의 문제에 대해서 알아보도록 하겠습니다 ^^ 병행성의 문제라는 것을 풀어서 이야기 하자면, 여러개의 스레드 객체가 한개의 리소스를 공유하기 때문에 발생하는 문제점이라는 겁니다! 일단 말로 이야기 하면 지루하기 때문에 소스코드를 보시면서 이야기 하겠습니다! public class ConcorrencyTrouble implements Runnable { private int total; public void run() { for (long i = 0; i < 10; i++) { increase(); System.out.println("total value is :" + total); } } public vo..
Multi-Threading ③ Thread Objects 일단 멀티 스레드로 작업을 하기 위해서는 Runnable 이라는 인터페이스를 구현(implements)하거나 Thread 클래스를 상속(extends)받는 두가지의 방법이 있습니다. 다시 말하면, run() 이라는 메소드가 있어야 하기 때문인데, Thread 클래스는 Runnable을 구현하고 있기 때문에 결국은 Runnable 인터페이스를 구현하는 셈이 되는거죠. /* * Runnable 인터페이스를 구현하는 경우 */ public class HelloRunnable implements Runnable { public void run() { System.out.println("Hello from a thread!"); } public static void main(String args[]) { (new..