반응형

 

인사이트에서 진행하는 신간 리뷰어로 선정되어서 책을 읽게 되었다. 

 

C++ 이지만 이해할 수 있다.

 

대부분의 알고리즘 책들이 그렇듯이 이 책도 C++ 코드로 설명이 되어있다. 프로그래밍 경진대회에서 가장 높은 비율로 많이 사용되는 언어인데 효율적이며 표준 라이브러리에 많은 양의 자료 구조와 알고리즘이 포함되어 있기 때문이라고 한다. 나같은 경우는 java 만 주로 하고 C++ 은 대학때 이후로 안했지만 책을 이해하는데에는 어려움이 없었다. 우선 소스코드가 길지 않고 문법상 큰 차이가 없다. 그리고 코드에 대한 설명이 글과 그림을 통해서 자세히 설명이 되어있다. 오히려 다른 언어(나같은 경우는 java)를 사용해서 C++ 로 구현된 코드를 변경해 보면서 공부를 하면 더 도움이 된다. 

 

프로그래밍 기법에 대한 설명

 

알고리즘 문제를 풀기 위해서는 문제에 대한 이해도 필요하지만 이해한 내용을 코드로 옮기는 능력도 필요하다. 연필로 종이에 써가면서 문제 푸는 방법은 알았는데 이걸 코드로 옮기지 못하면 못푼거나 마찬가지 이다. 이때에 필요한 것들이 프로그래밍 기법이다. 자주 나오는 몇가지 들이 있는데 알고 있으면 정말 많은 도움이 된다. 그중에 하나로 나도 전에 알고리즘 시험볼때 자주 썼던 건데 바로 나머지 연산이다. 

 

전에 나머지 연산을 위와 같은 방법으로 사용할 때에는 그냥 모르고 사용을 했다. 그냥 공식을 외운거였다. 그런데 고맙게도 이 책에서 설명을 해준 덕분에 이해를 할 수 있었다. 이런 기법들은 있는지도 모를 뿐더러 찾기도 어렵다. 하지만 모르는 순간 다푼 문제가 시간초과를 겪거나 자릿수가 너무 많아져서 에러가 나는 경험을 하게 된다. 그래서 이책에서 알려주는 몇가지 기법들은 문제를 푸는데 꿀팁처럼 도움이 된다. 

 

문제에 대한 자세한 설명

 

나는 문제풀때 가장 어려웠던 분야가 동적계획법(DP:Dynamic Programming)이었다. 점화식을 구하면 50줄도 안되는 코드만 써도 문제가 풀리지만 그걸 도출해내지 못하면 그냥 포기해야 했다. 그런데 고맙게도 이 책에서 이렇게 자세히 설명을 해주면서 알려주고 있다. 어떤 책들은 그냥 말로만 설명해주고 끝나는 경우가 있는데 이 책에서는 그림과 공식을 설명해 주고 어떻게 도출되는지 과정도 설명을 해주고 있다.

 

그리고 다른 챕터들도 마찬가지 이지만 처음에는 트리, 동적계획법, 정수, 행렬등 기본적인 개념을 설명을 해주기 때문에 문제의 유형에 대해서도 파악을 할 수 있다. 

 

수학에 대한 작은 부록

 

책 마지막 부분에는 이렇게 수학공식과 기본적인 내용이 담겨져 있다. 페이지 수는 그렇게 많지는 않다. 하지만 내가 생각하기에는 그 내용이 고등학교 정석책 기준으로 상당한 분량을 차지할거라 생각이 된다. 가끔 문제를 풀다 보면 분명 중,고등학교 때에 배운건데 기억이 나지않을때가 있다. 그 공식만 알면 풀릴것 같은 문제인데 도저히 생각이 안날때가 있다. 이 부록을 통해서 조금이나마 그런 내용들을 기억 속에서 되살리는데 도움이 될거라 생각된다. 

 

 

결론

내가 이 책을 읽으면서 들었던 느낌은 "어! 이 책 제법 재미있네!" 였다. 읽으면서도 왠지 노트를 꺼내서 연필로 코드를 짜봐야 할것 같고 맞는지 틀린지 실행을 해봐야 할것 같은 느낌이 들었다. 위에서도 말했듯이 실제로 C++ 로 설명된 코드를 Java 로 옮겨보면서 책을 읽어가고 있다. 길지않는 챕터에 핵심과 요점들이 가득 담겨 있어서 나는 정말 만족하면서 읽고 있다. 물론 이건 사람마다 차이가 있을 수는 있다. 하지만 분명한건 어느 정도 코드를 작성할 수 있고 이해할 수 있는 사람이 알고리즘 책을 추천해 달라고 한다면 이 책을 추천해주고 싶다. 

 

728x90
반응형
반응형

 

우리가 살고 있는 지금 이 순간에도 알게 모르게 알고리즘의 영향을 받고 있다. 인터넷을 통해 검색을 한다든지 쇼핑몰에서 제품을 검색한다든지, 그 순간 순간 마다 우리는 모르지만 알고리즘에 의해서 우리의 행동들이 하나 둘씩 어딘가에 쌓이고 있다. 그리고 가끔 브라우저에 보이는 광고를 보고 놀라게 된다. 왜냐하면 내가 최근에 관심있어 했던 물건들의 광고들이 자주 보이기 때문이다. 

 

이처럼 알고리즘은 내가 의식하지 못한 곳에서 나에 대해서 많은 것을 배우고 있고 알아가고 있다. 

 

그중 내가 이 책에서 흥미로웠던 부분에 대해서 이야기 하자면 바로 넷플릭스에 대한 내용이었다. 

 

넷플릭스가 배달을 통해서 서비스 할 때에는 사람들의 성향을 파악하는 데에 제품에 대한 평점을 중요한 정보로 취급을 했다. 하지만 여기에는 몇가지 한계가 있었다. 사람들이 영화를 보고 싶은 그 순간 부터 영화가 배달되는 그 시점까지는 딜레이가 존재할수 밖에 없다. 영화가 배달되기까지 시간이 걸리기 때문이다. 그러면 그 영화에 대한 평점이 영향을 받을 수 도 있다. 또 평점의 대상이 모든것을 퉁쳐서 하나로 하면 간단하지만 영상, 음향, 스토리 등으로 세분화 해서 평점을 받기는 쉽지가 않다. 그게 바로 기존의 한계 였다. 


지금의 넷플릭스에서는 영화를 추천을 해주지만 그 기준에는 평점은 존재하지 않는다. 사용자들이 시청한 시간, 끝까지 봤는지 여부, 중간에 멈춘 시간, 앞으로 돌리거나 뒤로 돌리는 행위등 모든 것들이 추천의 기반이 된다. 그만큼 지금은 영화를 보는 사용자에 대해서 많은 정보를 얻을 수 있고 그것을 기반으로 한 추천들이 매우 효과적이다는 것이다. 

유효 계산 가능성

책에 자주 언급된 단어인데 내가 이해한 바로는 이렇다. 
데이터들을 모이게 되면 이 데이터를 가지고 계산을 할 수 있게 된다. 숫자를 모아 놓지는 않았지만 계산이 가능한 형태가 된다. 그리고 여러 분야, 상황에 대해서 데이터가 쌓이게 되면 계산을 할수 있는 범위도 확장이 되고 예측이 가능해진다.  그리고 그것을 하고 있는게 바로 알고리즘이다.

 

이렇게 내가 몰랐던 부분에 대해서 설명을 해주고 있어서 읽는 동안 고개를 끄덕이는 경우가 많았다. 그런데 그만큼 아쉬웠던 점도 있었다.

 

- 책에서 예로든 몇가지 사례들이(그녀, 스타트랙, 하우스 오브 카드) 내가 보지 않았기 때문에 이해하기가 어려웠다. 

- 문장이 매끄럽지 않다는 느낌을 많이 받았다. 문장 길이가 길고 번역한 형태의 문장들이 많아서 읽고 있는데 무슨 말이지?? 라는 생각을 많이 했다. 

 

문장은 그렇다 치더라도 내용에 대해서는 내가 저 작품들을 보고 난 후에 다시 읽어본다면 이 책을 이해하는데 더 도움이 될거라 생각이 되었다. 

 

728x90
반응형
반응형

나는 매주 로또를 산다. 45개의 숫자를 가지고 그중 6개의 숫자를 선택을 한 후에 한주를 기다린다. 숫자를 선택 할 때에는 그저 손이 가는데로 선택을 한다. 한줄은 이렇게 또 다른 한줄은 저렇게. 그리고 나서 토요일 저녁 경건한 마음으로 숫자를 맞춰보지만 3줄을 사서 내가 맞춘 숫자는 몇개 되지 않는다. 그런데 놀랍게도 매주 로또는 10명 이상 당첨자들이 꾸준히 나온다. 어떻게 이럴수 있을까?? 

 

로또가 당첨될 확률은 800만이 넘는다. 매년 판매되는 숫자는 다르겠지만. 당첨될 확률보다 훨씬 많은 수량이 팔리기 때문에 기대값이 약 8이 된다고 한다. (2016년 기준) 그렇기 때문에 매주 8명 정도는 당첨자가 나올수 있다는 것이다. 

 

우리가 어떤 선택을 할 때에 이와 같이 데이터와 수치를 가지고 분석을 해 본다면 좀더 나은 선택을 할수 있지 않을까라는 생각을 하게 된다. 이 책에서는 이렇게 우리가 알수 있는 수치와 데이터를 가지고 어떠한 선택이 좋은 선택인지 또는 나쁜 선택인지 찾아보는 내용을 담고 있다. 

 

수치에 대한 내용을 다루기 때문에 이 책에는 여러가지 수식들이 나온다. 기초적인 계산이나 쉬운 내용들은 보는데 무리가 없었다. 하지만 특정 기호나 공식에 대해서는 푸는 방법에 대해서 중간중간 찾아보는 노력이 필요했다. 이런 데이터나 수치에 대한 내용의 책들을 읽을 때에 내용 이해를 위해서는 피할수 없는 부분인것 같다. 

 

그리고 선택한 주제들 자체가 무겁지 않은 우리가 일상 생활에서 자주 접할수 있는 내용들이어서 좋았다. "그냥 그렇겠지" 라고만 생각했던 나의 일상들이 수치화 해서 표현하는 순간 나에게 보여주는 결과물 들이 전혀 예상치 못했던 것들을 보고 "오~~ 그렇구나" 라고 고개를 끄덕이게 해주었다. 

 

책 표지에 써있듯이 합리적인 선택을 위해서 데이터를 읽는 방법을 알고 싶은 독자들에게 충분히 재미있고 도움이 될수 있는 책이라고 생각한다. 

728x90
반응형
반응형

요즘에 한참 클라우드 관련 내용들을 공부하고 도커, 쿠버네티스 에 대한 내용을 보다보니 마이크로 서비스에 대한 내용들을 자주 접하게 되었다. 컨테이너를 사용한 환경에서 어플리케이션을 배포하고 관리 하려면 아무래도 덩치가 큰것 보다는 좀더 작게 모듈화 해서 배포 하는것이 나을 것이다. 어플리케이션의 크기가 작아진다는 것은 간단히 생각해봐도 배포시간이 줄어들고 그렇게 되면 다운 타임 또한 줄어들게 된다. (물론 배포 전략에 따라서 이런 부분들은 없도록 하는게 맞다.) 그래서 나 또한 마이크로 서비스에 대해서 다시 관심을 갖게 되었고 이것저것 책을 찾아보고 읽어보고 있었다. 전부터 관심이 있어서 한번 읽어봐야겠다고 생각은 하고 있었는데 길벗 개발자 리뷰어에 선정되어서 이렇게 책을 접할수 있게 되었다. (베타리더때도 신청을 했었지만 그때에는 선정되지는 못했었다. ^^;)



목차는 아래와 같이 구성이 되어있다.


1장 스프링, 클라우드와 만나다.

2장 스프링 부트로 마이크로 서비스 구축

3장 스프링 클라우드 컨피그 서버로 구성 관리

4장 서비스 디스커버리

5장 나쁜 상황에 대비한 스프링 클라우드와 넷플릭스 히스트릭스의 클라이언트 회복성 패턴

6장 스프링 클라우드와 주울로 서비스 라우팅

7장 마이크로서비스의 보안

8장 스프링 클라우드 스트림을 사용한 이벤트 기반 아키텍처

9장 스프링 클라우드 슬루스와 집킨을 이요한 분산추적

10장 마이크로 서비스의 배포


부록 A 데스크톱에서 클라우스 실행

부록 B OAuth2 그랜트 타입


내가 기존에 알고 있던 내용들은 주로 컨피그 서버나 유레카를 이용한 서비스 디스커버리, 그리고 Zuul 을 사용한 라우팅 정도만 약간 해본 정도였다. 그런데 목차에서 보면 알수 있듯이 그것 이외에 다양한 내용들이 있다. 실패 전략을 통한 복구 패턴(5장), 인증및보안(7장), 그리고 이벤트 처리(8장)가 수록되어있다. 그리고 마이크로서비스 하면 중요하게 생각해야할 모니터링에 대해서 9장에 잘 설명해 주고 있다. 


또 내가 OAuth 2 처음 공부할때에 grant type 이 잘 정의가 안되어서 이해하는데 어려움이 많았었는데 이 내용도 부록을 통해서 설명해주고 있어서 공부하고 있는 입장해서 정말 알찬 구성인것 같다. 



다음은 책 내용을 살펴보자.



코드에 대한 내용과 그 의미들이 코드와 함께 담겨져 있다. 개인적으로 이런 형태의 코드 설명을 좋아하는 편이다. 그냥 종이 위에 코드만 써있는 것보다는 주석 이외에 이렇게 설명을 추가해주면 이해하는데 도움이 많이 된다. 



그리고 내가 읽으면서 가장 맘에 드는 부분이다. 마이크로서비스에 대한 개념과 구성을 거의 빠짐없이 그림으로 설명을 다 해준다. 마이크로 서비스 자체가 작은 단위로 쪼개서 전체 시스템을 구성하기 때문에 머릿속에서 그 큰 그림을 떠올리기는 쉽지가 않다. 어디에서 부터 시작을 해야 할지 막막해질 때도 있다. 그런데 이 책에서 고맙게도 구성, 개념을 알기 쉽게 그림을 통해서 설명을 해준다. 이 부분이 이 책의 가장 큰 장점인것 같다. 


책의 전체적인 내용들을 봤을때에는 초보자들을 위한 책이기 보다는 어느정도 Spring Boot 에 대한 지식을 가지고 있는 개발자에게 도움이 되는 책인것 같다. Spring Boot 에 대한 책이 아니라서 Spring Boot를 모르는 사람이 보기에는 코드부터가 어려울 수 있다. 그래서 Spring Boot 로 개발을 해봐서 코드를 이해하는데에 문제가 없는 분들이 마이크로 서비스를 이해하는데 많은 도움을 줄수 있는 책이라고 생각된다. 



728x90
반응형
반응형


처음에 제목만 보고 생각하기에는 인공지능, 알고리즘등의 내용의 책일꺼라 생각했었는데 예상밖으로 다양한 내용들이 포함되어 있는 책이다. 수학적인 내용보다는 오히려 철학적인 내용들이 많이 포함되어 있다. 그리고 그동안에 내가 생각해 왔던 기계, 인공지능이라는 범주가 얼마나 좁았는지 느끼게 해준 책이었다. 



목차를 살펴보면 본 내용이 총 8장으로 되어있다. 맨 처음 기계에 대한 생각에서 부터 어떻게 발전해 왔고 어떤 실패를 거쳤는지 차근 차근 설명해주고 있다. 그리고 기계가 가지고 있는 한계와 또 그 한계를 극복 하려는 연구들, 윤리적 문제들에 대해서 정말 다양한 내용들이 담겨 있다. 



인공지능의 발전 사에 대해서도 큰 흐름을 콕콕 찝어서 간단히 연대순으로 보여주기도 한다. 


그리고 실제로 연구과정을 거치면서 인터뷰한 사례를 담아서 보여준다. 이런 인터뷰 내용들은 자주 나오는데 사람의 인터뷰 뿐만 아니라 인공지능과 인터뷰 했던 내용들도 있다. 신문 기사를 스크랩 한것 처럼 그당시의 인터뷰 상황을 그대로 보여줘서 더 좋았다. 



그리고 마지막 부록에는 위 사진과 같은 인공지능에 대한 재미있는 이야깃 거리들을 모아서 보여주고 있다. 


이제 이책의 장점과 단점에 대해서 말해보려고 한다. 장점에 대해서는 글이 좀 길것 같으니 단점부터 말하겠다.


단점

- 아무래도 상황에 대한 설명과 지식에 대한 설명이 많다 보니 페이지 수가 몇장 안되는 데에도 불구하고 길다라는 느낌을 자주 받았다. 중간중간에 그림이라도 조금 넣어줬으면 더 좋았을것 같다.


장점

- 내가 생각해 볼 만한 철학적 문제들에 대해 많이 던져준다. 

- 내가 생각하지 못했던 인공지능에 대해서 좀더 깊이 있게 알려준다. 


길게 쓴다고 했던 장점을 달랑 2줄만 써서 내가 장점이라고 쓴 부분들을 어느 대목에서 느꼈는지 좀 서술해 보려고 한다. 


인간이 새로운 형태의 인공지능에 더 의지하게 될 수록 아마 인간의 사고방식을 인공지능에 어울리게 바꿔야만 할지도 모른다.


여기에서 새로운 형태의 인공지능은 빅데이터에 기반한 모델들을 의미한다. 수많은 데이터를 분석해서 뽑아낸 결과를 우리들은 받아들이고 있다. 간단한 예로 쇼핑몰의 추천 품목들이 있다. 이 추천 품목이 왜, 어떻게 뽑혔는지는 알수 없다. 내가 사이트에 들어가서 했던 수많은 행동들을 분석해서 나온 결과물일 뿐이다. 그 중간 단계를 인공지능이 어떻게 분석을 했으며 어떻게 연관관계를 맺었는지는 점차 알수 없게 되가고 있다. 물론 알수는 있겠지만 사람이 다 들여다 보기에는 긴 시간이 걸릴것이다. 지능이라고 하기 보다는 조합에 가깝다고 말할 수 있다. 하지만 그 조합의 결과물을 무시할수는 없게 된 상황이다. 지금까지 이런 것들을 인공지능이라고 생각해본적이 없었다. 그냥 데이터 분석 이라고 생각만 해왔다. 하지만 인공지능을 구현하는 방법이 데이터 기반으로 변해가고 있는 이 시점에서 생각해보면 우리는 수많은 인공지능의 도움을 받고 있는것이다. 



딜레마의 상황에서 인공지능은 어떻게 판단을 해야 하나


영화 "아이로봇" 에서 주인공 윌스미스는 차사고가 났는데 지나가던 NS-4 에 의해서 구해진다. 이때 같이 윌스미스와 어린 여자 아이가 죽음의 위기에 처했는데 NS-4는 윌스미스를 구해준다. NS-4 가 판단하기에는 좀더 생존률이 높은 윌스미스를 구한것이다. 하지만 윌스미스는 어린 여자아이를 구했어야 하는게 맞다고 생각한다. 이처럼 우리 생활에는 예상치 못한 선택의 순간들을 직면하게 된다. 이때에 과연 인공지능은 어떻게 판단을 해야 하는지. 정말 어려운 문제다. 

이와 비슷한 문제로 이 책에서는 자율주행에 대해 이야기 한다. 최근 자율주행에 대한 관심이 높아지면서 여기 저기에서 개발을 진행중에 있다. 그리고 실제 필드 테스트도 이루어 지고 있다. 그리고 가끔은 자율주행 차량때문에 사고가 난 기사도 종종 볼수 있다. 예전에는 자율주행을 생각하면 차량이 스스로 움직이면서 사고가 나지 않는게 중요하다고 생각했다. 자율주행에 대한 윤리적 대 전제에 대한 생각은 해본적이 없다. 여기서 말하는 대 전제, 즉 윤리적 원칙이란 이런거다.

도로에서 자율주행 자동차가 운행중이다. 그런데 위험을 감지하고 피하려고 하는데 피하는 순간 또다른 피해가 발생하게 되는 상황이다. 그럼 피하는게 나은것인가 피하지 말아야 하는것인가. 이런 판단에 대해서 대전제가 필요하다는 의미이다. 지금은 자율주행을 연구하는 여러 회사들이 자신들의 알고리즘을 통해서 자율주행 차량을 만들고 있다. A회사의 차량과 B 회사의 차량이 앞에 말한 상황에서 동일하게 행동한다는 보장이 없다. 그렇기에 이런 부분들은 공동적으로 연구가 되어야 하고 서로 공유가 되어야 하는 윤리적 원칙들이 꼭 필요하다는 것이다. 단지 운전자가 운전대를 잡지 않고 책을 읽어도 스스로 움직이는 자동차를 생각하며 그저 좋아하기에는 풀어야 할 숙제들이 정말 많다는 것을 느꼈다. 


이밖에도 정말 많은 부분들에서 내 머리를 탁! 치는 내용들이 많이 있었다. 잠겨있던 내 머리에 창문을 만들어준 느낌이라고나 할까. 리뷰어 책 고를때 정말 넣을까 말까 고민한 책이었는데 고르길 정말 잘했다. 기계나 인공지능에 관심이 없어도 철학이나 윤리에 관심이 있는 사람들에게도 충분히 도움이 되는 책이라고 생각이 된다. 


728x90
반응형
반응형


한빛 미디어에서 진행하는 "나는 리뷰어다"  를 통해서 "아무것도 모르고 시작하는 인공지능 첫걸음" 책을 받게 되었다.  요즘 인공지능, 빅데이터, 딥러닝 등등 AI 관련된 내용들이 굉장히 핫해서 대체 무슨 내용들일까라 궁금증이 생겨 책을 선택하게 되었다. 


먼저 목차를 보면 다음과 같다. 


chapter 1 지능이란 무엇일까?

chapter 2 인공지능의 기초지식을 배워보자

chapter 3 인공지능에게 탐색을 시켜보자

chapter 4 인공지능에게 지식을 가르쳐보자

chapter 5 인공지능을 학습시켜보자

chapter 6 웹사이트&이메일의 구조 이해하기

chapter 7 인공지능과 대화를 해보자



첫걸음이라는 책 제목처럼 아주 기초적인 지식부터 시작을 한다. 인공지능을 말하기 전에 먼저 알아야 하는 내용들을 자세하지만 쉽게 설명을 해놨다. 소설책 읽듯이 읽으면 되고 작가가 던지는 질문에 대해서는 머리로 한번 생각해 보면 될 정도의 내용들이 앞부분에 소개된다. 



위에 사진에서 처럼 내용에 들어가기에 앞서서 독자에게 무언가 관련된 내용에 대해서 생각해볼 거리를 던져준다. 그리고 독자들에게 생각한 것을 적어볼 수 있는 공간도 마련되어 있다. 예전에 학교 다닐때 풀었던 국어 문제집이 생각이 났다. 



한 chapter 가 종료될 때마다 요약내용이 있어서 볼수 있어서 읽었던 내용들을 다시 생각해볼 수 있다. 간단하게 요약이 되어있지만 중요한 부분은 다 들어가있다.


chapter 마지막에는 이렇게 연습문제도 있다.



그리고 내가 이 책을 읽으면서 책 내용을 이해하는데 많이 도움을 받은 부분들이 있다. 




우선 알고리즘에 대해서 설명을 하는 부분을 살펴 보자. 다른 책들 처럼 이 책에서도 그림을 이용해서 설명을 해준다. 그림에는 번호가 붙어있고 그 번호에 대한 설명이 책 페이지를 채우고 있다. 그런데 추가적으로 표를 이용해서 설명을 더해주고 있다. 이 부분은 글로 설명해놓은 것보다 눈에 확 들어와서 내가 알고리즘에 대한 내용을 쉽게 이해할수 있었다. 


책을 읽으면서 아쉬운점이 있었다면 바로 용어에 대한 부분이었다. 위 사진에도 보면 "너비 우선 탐색" 이라고 써있다. 영어로는 Breath First Search (BFS) 로 쓴다. 이렇게 한글 뿐만 아니라 영어로도 알려줬으면 더 좋을것 같다라는 생각이 들었다. 


728x90
반응형
반응형


최근에 Spring 관련 서적을 많이 받아볼 기회가 있었다. 베타 리딩을 했던 책들도 출간되어서 여러 종류의 Spring 관련 서적들을 비교해보면서 볼수가 있었다. 그러던 중 스프링 5 레시피 라는 책을 보게 되었다. 페이스북 타임라인에 계속 보던 책이어서 서점에 가면 한번 내용이 어떤지 봐야겠다 라는 생각은 하고 있었는데 이렇게 리뷰어 기회가 찾아왔다. ^^


1. 책구성


책은 총 2권으로 구성이 되어있다. 두꺼운줄은 알고 있었지만 두권으로 나눠져 있을 줄은 몰랐다. 그래서 따라서 연습하면서 코딩 하기도 좀더 수월하다. 한 권이 보통 시중에 나와있는 스프링 서적 한 권하고 두께가 비슷한것 같다. 



2. 내용


책 제목에서 처럼 이 책은 레시피이다. 내가 원하는 레시피를 찾아서 읽어보면 된다. 나같은 경우는 스프링 시큐리티 관련 내용이 궁금했기 때문에 그 부분을 먼저 읽기 시작했다. 목차에서 보이듯이 로그인 부터 인증, 보안 처리 하는 레시피들이 쭉 나열되어있다. 



내가 만들어야 할 레시피 과제가 있고 그에 대한 방법이 잘 설명 되어있다. 그리고 소스코드도 자세히 라인별로 설명이 되어있어서 이해하기 쉽게 되어있다. 

처음에 책 내용의 구성을 보고 "어? 이거 뭐지?" 라는 생각이 들면서 접근 방법이 좀 특이하다 라고 생각을 했었다. 그런데 학교다닐때 각 단원의 맨 처음에 학습 목표라는 것이 있었듯이 그런 주제를 하나 정해주고 만들어가보는 형태를 취한 설명 방법이 괜찮은 방법이구나 라는 생각이 들었다.


3. 장점


- 각각의 주제별로 내용과 소스가 분리 될 수 있어서 좋았다. 기존 책들은 소스코드를 앞에 기초부터 차근차근 만들어가야 후반부에 나오는 내용들을 적용할수 있었던 적이 많았는데 이 책은 각각의 주제마다 분리가 되어있어서 참고하기도 편했다.

- 내가 실제로 구현 해야 하고 필요한 상황을 책에서 바로 찾을 수 있어서 좋다. 책 자체가 기술 주제가 아닌 상황 주제로 나눠져 있어서 좀더 수월했다. 


4. 단점


- 분명 이책도 처음부터 차근차근 할수 있지만 레시피라는 것이라서 기본 부분을 간과할수도 있을것 같다. 그래서 아주 기초지식이 없는 것보다는 조금을 Spring에 대한 기본 지식이 있으면 더 좋은 효과가 있을것 같다. 



728x90
반응형
반응형



요즘은 정말 개인 정보 유출에 대한 사건, 사고들이 많이 발생한다. 하루가 멀다하고 어느 사이트에서 수십, 수백만 건의 사용자 정보가 유출 되었다는 기사를 자주 듣게 된다. 그만큼 개인 정보를 탈취해서 악용 하려는 사람들이 많아지고 있다. 그래서 요즘은 개인 정보를 DB에 저장할 때에는 무조건 암호화를 해야 한다. 권장이 아니라 필수이다. 



이 책에서는 각종 암호화에 대한 이론들에 대해서 설명을 해준다. 어떻게 만들어 졌으며 어떻게 만들어야 하는지에 대해서 자세히 설명해주고 있다. 그리고 암호화 기법에 대한 장,단점과 사용 사례들도 말해준다. 암호화 기법을 설명하면서 암호화 기법이 갖고 있는 장점, 그리고 어떤 부분이 취약한지, 그 취약한 부분에 의해서 어떠한 일들이 발생할 수 있는지 자세히 설명해준다. 그리고 그 부분을 극복 하려면 어떻게 해야 하는지도 설명해준다. 



내가 이렇게 RSA관련 부분을 일부 캡쳐를 한것은 업무 할 때에 가장 많이 사용하고 친숙해서 이부분을 먼저 읽었다. 그냥 툴에서 지원해주는 것만 쓸줄 알았지 이게 어떻게 구현되어있는지 생각해본적은 없었는데 이렇게 자세히 설명을 해준다. 



그리고 구현 방법도 알려준다. 그런데 위에 저자도 말했듯이 그런 일은 없길 바래야 할것 같다. 구현을 해봐야겠다는 생각도 안해봤지만 일단 복잡하다. 저자가 충분히 알아듣게 설명을 해주고 있는데도 이해하는데 상당히 어렵다. 


그래서 내가 읽으면서 생각해본 이책에 대한 장,단점은 이렇다.


장점

- 암호화에 대한 내용을 기초부터 심화까지 자세히 알수 있다. 대학교에서 전공 서적으로 사용해도 될것 같다.


단점

- 내용이 어렵다. 암호화라는 것 자체가 쉬운 내용이 아니기 때문에 당연한거다. 그래서 이 책을 읽기 위해서는 수학적 지식도 많이 필요하다. 그렇지 않으면 이해하기가 쉽지 않다. 


그래서 결론적으로 어느정도 암호화에 대해서 알고 있는 사람이 심화로 공부하기에 좋은 책이라는 생각이 들었다. 




728x90
반응형
반응형


요즘 기업에서 코딩 테스트를 중요시 하다 보니 알고리즘 관련 책들이 많이 나오고 있다. 나도 1년전에 회사에서 진행하는 코딩 자격시험 준비때문에 여러가지 알고리즘 책들을 많이 봤었다. 물론 패스하고 난 후에는 좀 안보긴 했지만. 

그런데 알고리즘 공부를 하다 보면 부딪치는게 있다. 바로 수학이다. 특히 확률, 경우의 수와 같은 내용들은 시험에도 응용해서 자주 나오는 편이었다. 분명 중,고등학교때에 배운 내용인데도 지금은 하나도 생각이 안난다. 그래서 수학 공부를 해불까라는 생각도 자주 했다. 그런데 범위가 넓다보니 뭐부터 시작을 해야할지 좀 막막했었다. 그렇다고 수학의 정석을 처음부터 공부할수도 없는 노릇이다. 


1. 나는 알고리즘 공부를 하고 싶다. 

2. 나는 수학도 공부를 하고 싶다. 단 수학에 대한 인물들에 대해서도 좀 알고 싶다. 


이게 바로 내가 바라는 것이었다. 알고리즘 책을 보면 알고리즘 내용만 나오고 , 수학책을 펴면 수학만 나오고. 아직 그걸 연결 시킬정도의 실력은 안되니 어떻게 해야 할지 난감 했는데 이번에 받은 책이 딱 거기에 부합하는것 같다. 



일단 알고리즘 책이니 알고리즘에 대한 내용이 나오는것은 당연하다. 그런데 이렇게 알고리즘을 수학적으로 설명을 해준다. 수학적이라고 해서 그렇게 난이도가 높지는 않다. 그냥 차분히 읽었을때 분명 이해를 할 수 있을 정도이다. 용어에 대한 정의가 생각이 안나서 찾아 볼 수는 있지만 그래도 책 안에서 모든 내용을 이해할 수 있다. 읽다보면 예전에 중,고등학교때에 배웠던 내용들도 생각이 나면서 재미있다.



그리고 주목할 만한 내용으로는 수학이나 알고리즘에 대한 설명만 있는게 아니라 그것을 만든사람, 또는 관련있는 사람에 대해서 짧게나마 설명을 해준다. 내가 위에서 언급했던 2가지 조건을 딱 충족하는 부분이다. 전에 수학에 대해서 책을 좀 볼까 라고 마음 먹고 책을 좀 찾아봤었는데 보통 인물 도감 같은 느낌의 책들이 많았었다. 그런데 이 책은 이렇게 중간중간 내용을 넣어줘서 책을 좀더 재미있게 읽을 있었다.


알고리즘과 수학에 지식을 동시에 충족 시키고 싶은 분들에게 이 책을 추천해주고 싶다. 





728x90
반응형

+ Recent posts