콘솔창에서 동작하는 자바 프로그램을 만들고 난 뒤 앞으로의 공부는 어떻게 진행하는게 좋을까 고민하던 중 우아한 테크 세미나에서 메일이 온다. 6월 쯤 신청한 세미나가 벌써 7월이 되어 메일을 받고 '아 벌써 시간이 이렇게 됐구나'하고 세미나를 들었다. 거기엔 독서 추천 리스트가 있었는데 이 책이 그중 하나였다. 스프링을 본격적으로 공부해보기 전에 로드맵을 안내 해주는 이 책을 먼저 읽어 보려고 한다. 책을 결제할 때 알게 된 사실은 저자가 우테코에서 교육을 진행하는 박재성님이였다.

완독은 천천히

1장을 읽어 보니 이 책은 로드맵을 제시해준다. 한 단원마다 그 단원에 대한 공부가 필요하다. 다행히도 목차를 보면 정확히 설명할 수는 없지만 구현 해보거나 들어본 내용이다. 순서대로 읽지 않고 필요한 단원을 먼저 공부하는 방식도 제시 해주지만 나는 순서대로 공부하려 한다. 이 책의 대상 독자에 1년 차 개발자라고 나와있지만 반대로 생각하면 다 읽고 나면 1년 차에 준하는 개발자가 될 수 있지 않을까 생각한다. 다양한 읽을 책들이 소개된 부분에서 이 책은 읽어봐야지 생각한 책들을 정리해봤다.

교양서?

-습관의 힘

-이너게임 배우면 즐겁게 일하는 법

-몰입의 즐거움

개발자

-이펙티브 자바

-성공으로 이끄는 팀 개발 실천 기술

-http & network : 그림으로 배우는 책으로 학습

-it 인프라 구조 : 그림으로 공부하는

문자열 계산기

요구사항을 읽고 금방 구현 할거라 생각했다. 일요일 하루종일 붙잡게 될지는 몰랐다. 오래 걸린 이후는 요구사항 있는 그대로만 구현 하면 됐는데 욕심이 생겨 더욱 더 확장성 있는 기능을 구현하고자 하다 보니 시간이 오래걸렸다. 커스텀 문자가 여러개가 될 수도 있지 않을까? 등 여러가지 예외를 너무 생각한 것이 문제였다. 또 하나의 문제는 split을 2개로 나누려 하니 if문과 함께 코드가 늘어났다. 분명 더 좋은 방법이 있을거라 생각했다. 검색 키워드를 "java split or"로 검색하니 바로 원하는 결과를 얻을 수 있었다. text.split("[,:]"); 이런식으로 'or' 표현 가능했다.

public String[] splitDelimiter(String text) {
        String custom = "//(.)\\n(.*)";
        Matcher m = Pattern.compile(custom).matcher(text);
        if(m.find()) {
            String customerDelimiter =  m.group(1);
            return m.group(2).split(customerDelimiter);
        }
        return text.split("[,:]");
    }

나는 커스텀 split과 요구 사항에 있는 split을 두개의 메소드로 나눠서 구현하였지만 책에서는 이렇게 표현하였다.

이때부터 퍼즐을 맞춰 나가는 기분이였다. 정규식이라는 것에 알게되었다. 알고리즘을 풀 때 정규식으로 푸는 사람들을 종종 보았는데 이걸 직접 사용하게 될 줄은 몰랐다. 정규식을 알게된 이후로 2시간 정도 만에 요구사항을 모두 끝냈다. 요구사항을 모두 구현하고 책을 펼쳤다. 솔직히 읽자마자 감탄했다. 옆에서 선생님이 하나하나 알려주는 듯 한 느낌이 들었다. 감탄과 함께 새벽까지 다시 리팩토링을 하면서 다시 구현해보았다. 테스트 코드 덕분에 수월하게 리팩토링을 진행할 수 있었다.


https://github.com/yhh1056/jwp-dashboard-http