Java 에 대한 아쉬움으로 Scala 나 Haskell 을 본지는 몇년 되었고, 최근 들어 RxJava 프로젝트를 몇 달 째 참여하고 있으면서 이 책을 기다렸다.  번역 하신분( 오현석님 책은 다 구입을 한 것 같다)이나 주제가 분명히 나에게 도움이 될 거라고 생각했기 때문이였다.
(뭔가 어색한 제목은... 기분탓이다. 저자분도 이거에 대한 고민을 하셨다고... - 어디서 봤지?Slack이었나...)


 

Sodium 이라는 프레임웍을 기반으로 Swing을 확장한 swidget.* 으로 설명을 시작한다. 처음에는 웬 스윙..? 이라고 생각했으나 중간 중간 나오는 그림과 스윙 기반의 예제는 나름 도움이 되는 보조역을 해주었다. 하지만 너무 많은 UI 쪽 코드가 집중력이 분산된 건 좀 아쉬웠다. 그리고 처음 보는 Cell, Stream 단어를 가지고 설명을 해서 좀 어려웠던 것 같다  

(오히려 나는 기본에 내가 알던 지식에 이 책을 끼워 맞추려고 노력하느라 더 좀 혼란 스러웠던 것 같다. 오른쪽 사진이 책의 일부분인데 실제로 익숙한 건 map , orElse 정도였다)






개인적으로는 초반의 개념이나 기초 펑션에 대한 설명보다는 오히려 10장이후의 내용들이 많이 도움이 되었다. 고민되는 부분이나, 평소에 궁금했던 내용들을 언급해 주어서 많은 생각을 해주게 했다.

책 자체는 400 page 정도로 두꺼운 편은 아니지만,  빨간책 스칼라 만큼이나 천천히 읽고, 다시 읽고, 읽어도 뭔소리야? 라고 많이  생각한 것 같다. 한 2-3번 더 읽어보면 놓쳤던 부분을 좀 더 내것으로 만들 수 있지 않을까? 라고 생각이 든다.

신고


개인적으로는 스칼라나 하스켈 못지 않게 어려운 (그리고 생각과는 많이 다른) 언어가 자바스크립트인 것 같다. 그 난해함에 추가되는 문제는 생태계가 가장 빠르게 변화하는 언어라 단순히 언어 스펙을 공부하는 것만으로는 충분하지 못하다는 것이다. 이 책은 이러한 문제를 조금은 해결 할 수 있는 책이 아닌가 생각이 된다.

프로그래밍을 전혀 모르는 사람에게는 의미 없는 책이지만, ES3 부터 자바스크립트를 사용한 개발자나, 다시 한번 ES6 수준에서 알고 있는 지식을 정리하려는 사람들에게 추천할 만한 내용을 가지고 있다.

예를 들면 "30"* 3 = 90 이 나온다던가 let a = [1,2,3,] 처럼 마지막 콤마를 허용한다는 것 같은 것... 
arrow function 에서 this나 arguments가 펑션과 좀 다른다는 것은 제대로 정리가 안된다면 매번 헷갈려 하는 이슈 들이다. (물론 "30"*3 처럼 난해한 표현식을 추천하는 것은 아니다)


책을 쭈욱 읽어가면서  이 책의 장점을 정리해 보았다.

1. 30페이지 정도 나뉜 챕터들은 주제가 명확히 분리되어 있고, 그 안에서는 원리/이론 - 기초 - 심화로 이어진다. 처음부터 읽어가지 않아도 필요한 부분만 참고할 수 있다.

2. 중간중간 NOTE 도 도움이 되고, 챕터별 마지막 요약은 한 번 리마인드 할 수 있는 기회를 줬다.

3. 책의 내용뿐 아니라 번역 역시 책의 퀄리티를 결정하는 중요한 요소인데 (개인적으로는 ) 만족스러웠고, 단어 옆에 원래 영어단어가 충분히 표현되어 있어서 헷갈림이 없었다.   


본문 중 일부분


하지만  책의 본래 목적이기도 하지만 타겟 독자층이 애매하지 않나 생각이 들었고,  책 내용적으로는 ES6 부분은 별도 표시를 해 줬더라면 좋지 않았을 까 해본다.  

6개월전 Vue.js를 운영툴에 적용한 이후, Java와 Kotlin, Scala로만 프로젝트를 진행하고 있었는데, 이 책을 한번 읽음으로서 다시 한번 자바스크립트를 복습 할 수 있는 좋은 기회가 되었다. 

신고



링크 : http://www.hanbit.co.kr/ebook/look.html?isbn=9788968486739


Java8이 나온지도 반년이 지났다.

Java7에 비해서 그 변화도 크고 도입해야 할 이유도 확실하기 때문에 많은 관심을 가지고 있다.


현업에서는 아직 8을 이용하지는 않고 있지만, 개인 프로젝트나, 알고리즘을 해결 해야 하는 이슈가 있다면 java-8로 진행한다.


Java에서 중요한 전환점이 될 8 버전에 대해서  국내 서적은 그렇게 많지 않다. 2권 정도...


그 중 한권은 자바8의 핵심임 람다에 대해서만 설명한 책이었고, 

같은 200페이지를 어떤식으로 풀어 나가나 싶어서 이 책을 보게 되었다.

(책의 목차가 매우 다르다 @.@)


1. 번역

번역서이니 만큼 번역에 대해서 애기해볼까 한다.

55페이지부터 계속 등장하는 '원시 특수화'나 61페이지의 '공개된 리소스' 처럼 한글로 된 애매모호한 단어들이 눈에 거슬렸다. 

'원시 타입-primitive type' 처럼 일관성인게 원단어를 첨부해주면 좋았지 않을까 한다.

4.4장에서는 좀 갸웃거렸지만 "8장. 디자인 구조와 원칙"처럼 개념적인 단원에서도 어렵지 않게 읽어 내려 갈 수 있었다. 

뒤로 갈수록 좀 더 이해하기에 편안한 느낌 들었다.  (솔직히 개인적으로 번역에 대해 민감한 편은 아니기도 하다)



2. 다른 한빛의 e북보다 페이지도 많은 편이고 코드량도 많지 않기 때문에  많은 내용이 들어 있다. 단순한 람다의 사용법만을 설명하지 않고

병렬성 이슈와 테스트, 패턴까지 한 번에 언급한점은 마음에 들었다. (보는이에 따라서 찔끔찔끔 이라고 싫어하는 분도 있겠네...)

특히 자바와 뗄수 없는 패턴의 언급은 매우 적절해 보였다. 

람다식을 배운후 어떻게 적용할까, 어떤식으로 적용하는가에 대해 의문점을 가진다면 이 부분의 예제로 충분히 이해를 하리라 생각되어 진다.

(물론 더 좋은것은 github에서 l=java와 함께 검색하는 것이다.)



마지막으로..

javascript나, scala와 같은 기존 람다 개념에 익숙한 언어 개발자라면 높은 장벽은 아니다. 

하지만, 오래된 자바 개발자나 람다 자체가 생소하다면  문법적 학습뿐 아니라 또 다른 학습을 요한다. 그리고 생각의 전환도 좀 필요하고...

쉬운 문법의 설명으로 부터,  중요한 주제들을 한번씩 훑어 있는 이책은

자바8을 처음 접하려는 사람이나, 나같이 이미 사용하고 있는 사람들에게도 또 한번 생각해줄만한 계기가 될 수 있겠다.

(어렵다면 다음 책을 한번 읽고 다시 읽어보면 좋을듯 : http://www.hanbit.co.kr/ebook/look.html?isbn=9788979149678 )


신고

Effective Unit Testing / 한빛미디어

life/book 2014.10.27 00:21 posted by dev.bistro



제목만으로도 이 책은 선택할만한 가치를 가지고 있다. Effective로 시작하는 책들이 가진 무게감이며, 그간의 경험을 통해서 알고 있기 때문이다.

크게 3부분으로 나누고 있다.
Part1에서는 이 책이 말하고자 하는 '좋은 테스트 코드'를 이해하기 위한 기본을 설명해주고 
Part2에서는 샘플코드-개선방법-결과 3단계로서 반복적으로 실 사례를 보여주며,
Part3에서는 좀 더 고급화된 소주제들과 팁들을 공유해주고 있다.

시작부터 중요한 얘기를 들려준다
100퍼센트의 코드 커버리지는 좋겠지만 실제로 중요한 것은 아니라는 점. 어느 점이 지나가면 테스트를 작성하는 비용대비 이점이 거의 없어진다는 얘기를 들려준다. 가장 중요한 제품 코드의 테스트 코드를 먼저 작성하며, 뒤로 갈수록 중요도가 하락하거나, 코드 커버리지를 위한 의미없는 테스트 코드가 작성되기 떄문이다.

이러한 테스트코드의 가치를 유지하는 방법은 제품의 품질을 위한 테스트코드 작성이 아니라, 설계를 위한 테스트코드 작성을 하라 조언해주고 있다. 하지만 이 부분이 말은 쉽다. '실패하는 코드를 작성하고 그걸 왜 완성시켜야 하지? 처음부터 잘 짜여진 코드를 작성하면 되지' 라고 생각하는 많은 개발자 들이 품질관리용에서 설계목표로 넘어가지 못한다. 
(나 역시 너무나도 당연한 '실패 테스트'에서 시작하라는거에 반감이...-ㅇ-)

여튼, 이러한 테스트코드는 제품코드 만큼 중요하다.  품질검증과 설계목적인 테스트코드 역시 제품을 만들어가는데 중요한 요소이며, 이를 관리하는 리소스역시 일정에 포함된다. 좋은 테스트코드가 필요한 이유이다. "어쩌면" 당연한 내용을 2부에 걸쳐서 예제로 보여준다. "당연하지만" 당연하게 하지 않는 것들이다. 그냥 쭉 읽으니 감동이 느껴지지 않아서 만들고 있던 specs2 code들을 대입해보며 읽으니 좀 더 느낌이 왔다.

이후 생각치도 못한 아이디어도 3부에서 얻게되었다.
java로 프로젝트를 진행할 때는 java-junit을... scala 프로젝트에는 specs2로 테스트코드를 작성하였는데, 생각의 전환을 일꺠워 줬다. 왜 groovy를 여기에 쓸 생각을 못했지?


정리하며...
흔히 말하는 TDD를 위한 책은 아니다. 그 부분은 1부에서 잠깐 소개되며, 친절하게도 다른 래퍼런스들을 소개해준다. 이 책은 TDD를 위한 '좋은 테스트 코드를 작성하는 방법'을 위한 책이다.  초급자를 위한 책은 아니며, 어느 정도 테스트 코드의 중요성을 알고있는 사용자에게 적합한 책이라 생각된다. 

책은 300페이지 정도로 결코 두껍지는 않다. 2부가 지겹다면 과감히 스킵하고 1부만을 봐도 좋을듯 하다.
1부를 보고 엉망인 테스트 코드를 직접 적용해나가도 보면 2부의 케이스를 찾아보며 적용하게 될것이다.


링크 : http://www.hanbit.co.kr/book/look.html?isbn=978-89-6848-062-1



신고

특히 자료구조나 알고리즘의 경우에는 업무의 실제적인 기본이 될 뿐만 아니라... 더 좋은 곳을 향한 '이직의 기본내공'이다 ^^; (내가 면접을 볼때도... 면접관으로 참여할떄도... 자료구조의 이해와 알고리즘은 좋은 얘깃거리이다)

새 언어를 배울때 자료구조 부분은 꼭 해보는게 좋다고 생각한다 (솔직히 직접 구현은 안하고 import /include만 하기때문에  주기적으로 까먹는다-.-)
Basic을 시작으로 Pascal, C, Java, Python, 마지막에는 Scala, Groovy로 이 주제를 학습해왔고, 이번에는 Javascript로 복습을 하자는 생각을 하게 되었다. 

지금껏 사용해왔던 Javascript는 Jquery나, angularjs처럼 client영역에서 대부분 이었다. (개인적으로 Node.js는 관심분야가 아니다) 책에서 설명하는 '자바스크립트 환경'은 책을 진행하기에 어려움이 많다. REPL이라기에는 어시스트도 제대로 되지 않고 에디트도 쉽지 않고... 그래서 우선은 환경 설정부터 따로 진행하였다.


1) http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/ 에서 jsshell 다운로드 및 설치
2) .profile에서 PATH 설정 후 js 실행되는지 확인
3) http://www.jetbrains.com/webstorm/ 에서 webstorm 설치
4) 실행후 프로젝트 하나 생성 App.js파일 하나 만들고 print 한줄을 쓰자
5) 실행할때 Node Interpreter 옵션을 SpiderMonkey의 js로 지정...

V8 기반의 Node와 SpiderMonkey는 문법이 조금 다르다.. 그래서 어시스트등의 IDE기능을 100% 사용을 할 수는 없지만... 무식하게 js-shell에서 진행하거나 그냥 에디터에서 진행하는것보다는 나을것 같아서 이렇게 진행하였다. (더 좋은 방버이 있을것 같지만... 진행에 전혀 문제가 없기에 ...)

완전하지는 않지만 이게어디냐...



이렇게 환경을 설정하고 2장부터는 일반적인 자료구조론의 내용이다. 배열을 시작으로 리스트, 스택,큐등을 진행하고 좀 더 심화과정으로 딕셔너리, 트리, 그래프가 나온다. 마지막으로 약간의 알고리즘으로 책이 끝난다...

전체적으로 잘되어 있는 번역과, 다르게 해석될수 있거나, 영어 자체가 더 익숙한 단어들에는 '원 단어'를 표시해주어  오해를 할만한 부분을 해소시켜 주었다.


책을 읽고 나서 장단점을 몇가지 적어본다면...

#1. 이 책 열심히 따라 하더라도 일반적인 브라우저/Node.js 에서 작동이 안된다... (문법이 달라...)
(위의 스샷의 for each 문법은 일반적인 브라우저나 Node.js에서 안먹힌다... ㅠ ㅠ
참고 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for_each...in )

#2. 좀 더 친절한 예제 수행방법이 있었으면 좋지 않았을까? (실제로 다른 리뷰를 찾아보니 실행에 어려움을 겪으신듯 하다)

#3. https://github.com/oreillymedia/data_structures_and_algorithms_using_javascript 에 예제코드는 올려져 있지만.. 연습문제에 대한 솔루션은 제공하지 않고, 구하는 방법도.. 못찾았다. (내가 못찾은 것일수도 있다) 이건... 있어야하지 않을까...? 

#4 이 책의 단점은 아니지만... Javascript와 자료구조론이라는게 궁합이 맞을까라는 의문이 든다...
[1,100,2].sort()의 결과에서 보는것처럼 (이건 Node.js마찬가지)  자료구조라는 포커스보다. Javascript의 언어적 특수성에 의한 구현물이 발생하기 떄문이다...

#5. server-side를 전혀 해본적이 없는 javascript developer가 자료구조를 학습하기에 좋다. (그런데  javascript 딱 1개만 할 수 있는 자료구조 학습희망자가 있을지는 모르겠다.)

#6. 번역에 불만이 없다. 특히 오해할 수 있는 단어에는 영어 단어를 같이 노출해주는 배려가 좋았다.


마지막으로...

http://shop.oreilly.com/product/0636920029557.do#PowerReview 에 있는 리뷰처럼  표준을 벗어난 구현과, 세련된것 같지는 않은 구현이다.
책을 충실히 번역하는 것도 중요하지만, 책자체가 미흡하다면 그 부분에 대한 보강은 블로그등을 통해서 해주는게 좋지 않을까 한다.  (예를 들면 출판 전 현업 리뷰를 통해서 1장의 환경 설정 하는 방법을 블로깅 해서 공유한다던지, 뒤에 7장 정도의 실제 따라하기를 유튜브를 통해 공개한다던지..)


신고



작년에도
'파이썬 라이브러리를 활용한 데이터 분석'  를  읽은적이 있다. 얇지는 않은 책이였지만, 나름 재미있게 본 기억이 있기에 이번에도 비슷하리라 생각하고 이 '파이썬을 활용한 베이지안 통계' 를 다시 한번 집어 들었다. 

omg


그간 읽어왔던 책에 비해 매우 얇은 두께와, (잘하지는 않지만) 생소하지 않은 파이썬이라는 언어에 혹해서 쉽게 쉽게 넘어갈 줄 알았는데....  ==> 이렇게..

베이지안을 전혀 모른채 이 책을 선택했기에 어느 정도 사전 학습이 필요로 하였다. (뭐.. 예를 들면 제일 처음 만나는 코드를 작성하기 위해서 이정도를 알아야한다. )

하지만  문제의제기 & 필요한 개념의 소개 &  풀이에 필요한 함수&계산식과 & 풀이로 이어지는 짧은 단계로 인해서 큰 어려움없이 진행 할 수 있었다.




1,2 장에서는 Pmf라는  단순한 딕셔너리 클래스로서 문제를 풀어나가고, 이후에는 Suite를 이용한다. ( 아 물론 이 파일은 책 앞부분을 보면 제공을 하고 있고, 타이핑이 귀찮은 분들을 위해 책에 있는 소스 코드도 함께 제공해준다)
대부분 이 코드를 많이 사용하였고, 후반부정도가면 numpy 등이 추가로 사용되어 진다.

Suite.class



막 외우거나 이해하기 보다는 '파이썬 라이브러리를 활용한 데이터 분석' 처럼 다양한 케이스들을 소개하면서 독자에게 사례를 보여주는 느낌의 책이다.  책을 다 읽고나서도 ... 뭐가 내머릿속에 남았지? 라고 하면 선뜻 대답을 할 수 없다. (그도 그럴것이 베이지안이 머지 ?  정도로 책을 읽기 시작했...) 
그렇다고 해서 도움이 되지 않았다고는 말할 수 없다. 이러한 것들이 있고, 다음에 업무에서 이 책에서 본 내용이 조금이라도 떠 올려진다면 이 책의 가치는 나에게 충분하다고 본다.

현업에서 로그 적재와 분석에 고민을 하고 있다. 좀 더 많은 이론적인 학습이 필요하다고 뼈저리게 느꼇다.

자장, 짬뽕 셋트의 느낌이다.



개인 환경 : Python 2.7.8 & PyCharm  on Mac
학습 시간 : 약 2시간 * 10일 정도


신고

회사에서의 룰이나, 개인적으로 진행하고 있는 일과도 전혀 관게 없는 것이, '게임'이다 하지만. 하루에 1-2시간. 일주일에 10시간은 꼬박꼬박 게임을 즐기고 있다. 국민학생때, 즐기던 갤러그 때문에 프로그래밍을 시작한것은 어이없기도 한 사실이다.  실제로 '매우 조잡'한 알카로이드를 GWbasic으로 만든 기억도 아직 남아있다. 이 정도면 게임에 대해 좀 더 알아주는게 예의가 아니겠는가?

지난번에 읽은 책  만들면서 배우는 AndEngine 게임 프로그래밍: 하루에 하나씩 완성하는 안드로이드 게임 프로그래밍 ( http://www.hanbit.co.kr/book/look.html?isbn=978-89-6848-058-4 ) 처럼 이 책 역시 그러한 개인적 관심에 의해서 읽게 되었다. 


(다른 책은 읽어 보지 못했다) 이 책은 주제에 따라 여러책으로 출간되었다.  내가 읽어본 책은 제목처럼 '퍼즐 게임'에서 사용하는 상황과 알고리즘에 대해서 설명해주고 있다. 

게임을 만드는 방법을 소개해주는 책이 아니다. 게임에서 게임이 필요한 알고리즘에 대해서 어떻게 풀어나가지는지에 집중하고 있다.  '상황의 소개' -> '처리할 방법의 소개' -> '알고리즘의 설명' -> '코드의 구현' 으로 각 사례를 보여준다.

목차 : http://www.hanbit.co.kr/book/look.html?isbn=978-89-6848-070-6#binfo3 에서 보는것처럼, 시작은 아주 심플한 캐릭터의 이동으로 시작한다. 그 이후 이 캐릭터가 만날 수 있는 상황(막다른길, 아래로 떨어지기, 다른 장애물에 부딪쳤을때 )를 점진적으로 해결해 나가는 방법을 보여준다. 

이렇게 1장이 끝나면, 2장에서는 물건의 낙하 3장에서는 연결처럼 계속 퍼즐 게임에서 처리해야할 상황, 처리하는 방법, 진화를 보여주고 있다.  쉽게 이해 할 수 있게 말이다. 예제코드 역시 어렵지 않아서 C++를 사용한지 7년이 넘은 나 조차가 무리없이 코드를 이해할 수 있었다.


이러한 상황을 해결해 나가는 이 순서는 개인적으로도 많은 도움이 되었다. 생각치도 못한 이슈를 제안해주기도 했고, 생각치도 못한 방법으로 해결을 해나가기도 했다. 내가 얼마나 잘하는지도 중요하지만, 얼마나 더 좋은 방법이 있는가, 남들은 어떻게 하는가를 아는것도 중요한데, 마치 한명의 개발자가 일해 나가는 방법을 뒤에서 지켜보는 것 같아서 만족스러웠다. 




단, 아쉬운점이 있다면 실제로 실무에서도 해당 알고리즘을 그대로 이용하는가? 에 대해선 조금 아쉬움이 남는다. 
예를 들면 96페이지에서 나오는 '테트리스의 낙하지점을 미리 표시해주는'기능의 경우, 떨어질 좌표를 계산해서 그곳에 회색으로 표시해준다. 라고 설명을 해준다. '기본적인 알고리즘을 이해'하는데에는 매우 훌륭하지만, 실제로 예제에서 보여주는 코드는 효율적이지는 않다. 실무에서도 이렇게 쓸거 같지는 않다. 책의 각 말미에 '현업에서는 이 알고리즘을 실제로 이렇게 쓴다' 라는 한장정도의 텍스트가 추가로 있었으면 매우 좋지 않을까 생각되었다.

그럼에도 불구하고
,  게임 알고리즘에 대해 환상?을 가지고 있던 내게 많은 도움이 되었다. 이 책에 당장 나에겐 조금의 도움도 되지 않는다. 하지만 이 책에서 상황에 맞는 다양한 알고리즘을 적용하는 방법은 내 업무에서도 많은 도움이 될것임은 확신한다. 

이후 시리즈 중 하나인 슈팅 게임 알고리즘을 한 번 더 보고 싶다. 물체의 동시처리, 충돌점의 처리등. 평소에 궁금한 것들을 해결해 주는 방법을 나에게 알려줄 것 같아서이다.






신고

이것이 레디스다 / 한빛미디어

life/book 2013.12.29 22:56 posted by dev.bistro

책 링크 : http://hanb.co.kr/book/look.html?isbn=978-89-6848-059-1

redis 는 최근의 트랜드중에서 나름 상위권을 차지하고 있으며, 실무에서도 캐시레이어나 데이터 스토리지로 많이 쓰이고 있다. ( 참고 - http://db-engines.com/en/ranking

허나, 그 만큼 이슈도 많기에 릴리즈 버전이 쉴새 없이 올라가고 있고, ( 코드에 오타 있어서 버전업이 되기도 한다, 참고 - http://download.redis.io/redis-stable/00-RELEASENOTES ) 래퍼런스가 체계화되어 있지는 않은 것 같기에 구글링이나 앞서 적용한 이들의 노하우를 들으면서 참고하는 형편이었다. 그 와중에 좋은 책이 출간되었다 하여 2-3일만에 다 보았다.


2,3,4 장을 통해서 redis가 무엇인지 처음 접해보는 사용자에게 초기진입을 쉽게 유도한다. 뿐만 아니라 6장에서 설명해주는 '내부구조' 챕터에서 어떻게 구현되어있는가를 설명해준다.  개인적으로 어떤 기술을 사용하려면 최소한 그 내부가 어떻게 생겨먹었는지는 알아야 한다고 생각하는데 이 책은 입문-내부-활용이라는 순서에 맞추어 진행해주고 있었다. 

7장 역시 좋은 내용이다. '빠르고' , '단순' 한 redis 이기 떄문에 '휘발성', '싱글스레드', '불안정' 이라는 단점을 이겨내고 어디에 써먹을 수 있을까? 라는 의문이 많이 들었는데 7장의 사례를 통해 많은 도움이 되었다. 여기서 특히 'redis 를 어디에 어떻게 써야하는지 잘 모르겠다면 그것은 redis를 사용하기에 적합하지 않다'라는 아주 귀중한 한줄의 내용을 터득하였다. redis를 어디에 쓰지?가 아닌 여기엔 redis를 써야겠구나 인데. 너무 redis에 포커싱을 맞추고 책을 읽었던 것 같다



redis는 단순함이 그 장점이다.  

redis.io 에 들어가서 설치하고 깨작깨작 읽으면서 명령어 몇 개를 날리다보면 아 쉽네 ~ 다 배웠네. 라고 생각하기 쉽다. 하지만 어디에 써야하는지는 감이 오지 않는다. 이 책은 이러한 redis를 어떻게 쓰고, 어떻게 생겼고, 어떻게 활용하고, 어떻게 잘 쓸수 있는지 까지 순서대로 보여준다. redis를 깨작깨작 써봤거나 keys를 부담없이 날렸던 사용자라면 다시 한번 읽어보라 권하고 싶다.


참고로 우리의 redis 사용에 대해서 얘기해보면  포털의 검색쿼리를 처리해야한다. 우리팀에서는 처음 도입하였고,  자체개발 , redis, 딴거 중에서 결정하였다. 

현재 진행 프로젝트는 6개월 정도 진행되고 있으며, 6개월 정도 뒤에 안정화 될것 같다. X대의 redis instance를 올리고 있고, main data의 vadliation을 위한 sub storage 의 포지션을 가지고 있다. (메인은 MySQL), 빠른 응답 속도, 공개된 소스코드, 사용하기에 단순함, 빠른 이슈처리와 릴리즈 등이 마음에 들지만... '버그', '너무 빠른 릴리즈-_-' , '단순함' 역시... 아쉬움으로 남는다. 플젝의 팀원 한명이 redis를 맡아 이슈를 해결하고.. 센티넬을 쓸 수 없는 환경이라  센티넬을 만들면서  진행중이다.
이번 플젝에서는 극도로 신중히 redis를 결정했다면, 다음 프로젝트부터는 당당히 아키텍쳐 구성 후보에 올릴 것 같다. (한 줄 :안쓸땐 몰랐는데, 써보니 괜찮네 )






신고

Elemental Design Patterns / 한빛 미디어

life/book 2013.11.30 14:28 posted by dev.bistro

아래 리뷰를 보는데 참고가 될것 같아서 제 소개를 짧게 해보면

 - 8년차 개발자 / Java Backend  FrontEnd Developer / 그외 Scala, Python등을 추가로 사용하며

 - 오픈소스, 선행기술에 관심이 있다.





디자인 패턴은 항상 회자되며, 이야기거리의 중심이 되곤 한다. 하지만, 이 패턴이라는것의 모호한 개념만을 가진채 '아 ~ 난 디자인 패턴을 적용하고 있는건가?' '이게 이 패턴이 맞는건가?' 라는 고민을 항상 가졌다


그러던 와중에 이 책을 알게 되었다. GoF의 패턴을 몇년전에 읽고 감동을 받았지만, 실제로 현업에서는 적용 할수 없었다. 아니 적용은 모르게 계속 하고 있었지만 이게 그 패턴인지도 몰랐다가 정확한 표현같다 하나의 패턴을 적용하기엔 너무 다양한 변수와 환경, 심지어는 언어 조차도 달랐기 때문이다


엘리멘틀 디자인 패턴(EDP)는 이런 패턴을 쪼개어서 최소한의 단위로 살펴본다.  ( 5장의 실제 EDP를 소개하는 첫 부분에서는 '갱체생성', '변수가져오기', '상속'등 아주 기본적인것도 패턴이라 정의한다. )


이 책은 솔직히 어렵다. 기존의 기술서적이 재미있게 한장 한장 넘겼다면, 이 책은 조용한 도서관에서 한 줄 한줄 곱씹어 보면서 책을 봤다. 그래서 이해가 안되어서 형광펜으로 줄을 그으면서 다시보고 다시보고... 심지어는 다 보지도 못했다.-_- 책의 내용을 뭐라 설명하는게 미안할 정도로 내가 이해하는게 맞나? 라는 불확신도 들고....


그래도 

- 가장 기본이 되는 EDP 4종 되부름, 위임, 리디렉션, 병합이라는 개념은 몰랐지만, 내가 하루에 몇개씩 생산해내며, 수십번씩 보고 있다는 것을 알았고, 이것들을 EDP라는 최소한의 패턴으로 정의를 해놓았다는 것을 알았다.

- 내가 암기나 학교에서 배운것들을 단순히 암기나 현장의 경험으로 통해 익혀서, 무자각적으로 '판단'없이 적용해 버렸다는 사실을 깨닫았다.

- 그리고 패턴은 언어의 종류와 상관없다 라고 하지만 이 책에서는 '자신이 구현할 언어가 디자인 패턴을 표현할 방법을 선택하는데 가장 큰 영향을 미친다'라고 한다.   (5장 첫부분 137Page - 패턴자체를 언어레벨에서 구현하는 경우등이 존재)


책을 읽고 나서 당장 무엇인가를 바꿀만한 임팩트는 없다. 하지만 몇가지의  깨닫음을 얻었고, 그것으로 충분했다. 나같은 포지션 뿐 아니라, 어느 정도 정체기를 격고 있거나, 패기 충분한 신입개발자도 읽어보면 도움이 될것 같다.  특히 1 ~ 5장은 꼭 읽었으면 하는 바램이다.






신고

[BOOK] 자바 성능 튜닝 이야기 - 이상민

life/book 2013.10.30 20:20 posted by dev.bistro


알라딘 : http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8966260926




제목은 달라졌지만  '자바 성능을 결정짓는 코딩 습관과 튜닝 이야기' ( 링크 ) 의 개정판 겪이다.   (분명히 산 기억이 있는데 오래전이라.. 찾지를 못하겠다-.-) 

책이 나온지 몇일 안되는지라 다른 분들이 선택하는데 도움이 되었으면 하는 마음에 아주 짧은 후기를 쓴다.






송창현님이 이번 DEVIEW 키노트에서 말씀하셨듯이, 알고 쓰는 것은 중요하다. 하지만 면접을 진행할때나 팀내 세미나를 보면 이러한 기본보다는 유행에 더 민감해진거 같다.  (최근에 함께 일할 팀원들을 몇일 동안 면접을 진행해본서 느낀것)

문법을 알려주거나, 프레임웍의 사용법을 알려주는 책은 많지만 이처럼 무서운 습관에 의해서 쓰는 Sysout이나, static에 관해서는 (장애가 나기전까지는) 조언을 얻기 힘들다. 한번은 꼭 읽어보길 추천한다.  처음부터 죽어라 안읽어도 된다 중간에 펼쳐서 20페이지를 읽더라도 많은걸 얻을수 있을것이다. 


PS1. 15장 이전까지는 자바 코드레벨에서 이야기를, 그 이후는 GC나 튜닝 측면이 자리잡고 있다.  후반부 이야기를 완전히 덜어낸채 전반부 내용 * 2로 채웠으면 개인적으로는 좀 더 만족스러웠을 듯하다. 내가 저자의 책을 다 들고 있어서 그런건지도-_-?)

신고


티스토리 툴바