혼자 공부하는 C 언어 - 1:1 과외하듯 배우는 프로그래밍 자습서 혼자 공부하는 시리즈
서현우 지음 / 한빛미디어 / 2019년 6월
평점 :
구판절판


혼자공부하는C언어 - 때론 혼자 때론 같이



- 서평시작


“처음 C 언어를 독학할 때 느꼈던 답답합을 생각하여 ‘처음 공부하거나 한 번쯤 실패 한 경험이 있는’ 독자를 기준으로 설명하고자 했다.” - 저자 인터뷰에서


나는 실패한 경험이 있는 걸까?

공부한 적은 있지만 실무 경험은 없다.


- 왜 C언어 인가?


“메모리 관리를 개발자가 직접 해야하는 언어를 공부하면서 실제 OS, HW 레벨에서 메모리 관리하는 법, 포인터 옮기는 법 등을 배우면서 메모리는 이렇게 관리되는구나, 이렇게 하면 메모리 누수가생길 수 있겠구나, 이래서 자바와 C#은 거의 모든게 포인터구나 하는 것을 느껴야한다. 


코딩을 하면서 이 코드는 이렇기 때문에 느릴 수 밖에 없구나(데이터 복사가 많이 일어남, 메모리 해제가 많이 일어남, 메모리 해제를 줄이기 위해선 어떻게 해야할까에 대한 고민 등)라는 생각을 할 수 밖에 없다. 이러한 개념없이 성장하는 개발자와의 성장속도 차이는 엄청날 것이다. ” 

- 포프tv (프로그래머로 살아남기 위해 필요한 언어 둘 )


라는 이야기를 듣고 다시금 C언어를 공부하고 싶어졌다.


그리고 예전에 리뷰했던 [실습과 그림으로 배우는 리눅스 구조] 책에서 나온 예제코드 중 잘 이해되지 않는 부분이 있어서 그렇기도 하다. 이책을 읽고 다시 복습할 예정이다.


- 캐릭터 


졸라맨 비슷한 캐릭터. 은근히 귀엽다.


- 포인터 포인터


책을 받고, 처음 페이지를 펼친곳은 9장 포인터 부분이다.

누구나가 이야기 한다. C언어는 포인터를 알면 끝이라고. 다만 어려울 뿐.

9장을 읽고15장 응용포인터 까지 단숨에 읽었는데, 의외로 쉽게 이해가 되어 놀라웠다. 물론 C언어를 공부한적도 있었지만, 하도 고리적의 이야기이고 포인터는 그냥 어려워 이렇게만 생각하고 있었는데 읽어가면서 별것 없네 라고 생각하고 있었다. 사실 개념 자체야 단순한 것이다. 그리고 “혼자공부하는C언어” 책은 단순하지만 복잡한 개념을 참 친절히도 잘 설명해 주고 있다.


- 친절한 설명과 그림의 예시


저자의 설명이 돋보이는게 이중 포인터를 설명할 때 의 그림을 보면 인터넷에서 이중포인터라고 검색했을 때 나오는 다른 설명들과 많이 비교가 된다.




- IF GOTO


“이런 의문이 든다면 9장을 다시 한번 살펴보고 오길 권합니다.” - p.421

공부를 하다보면 앞장 에서 진행했던 내용이 기억이 안나거나, 현재 장에서 나온 내용에 대해서 어디서 나왔는지 다시 한번 확인할 필요가 있는 경우가 있다. 


물론 이를 위해서 인덱스가 있는 것이지만 저자가 친절하게 이런식으로 어디를 다시 보고 오라 던지, 아니면 “미리 말해두자면, 13장을 학습하려면 함수와 포인터에 대한 이해가 있어야해” 하는 식으로 친절하게 설명하는 부분이 많다. 작은 배려가 돋보인다.


- 헷갈릴 땐 그림으로


“헷갈릴 때는 직접 그림으로 그려보는 것도 좋은 방법이야” - p.436


고리타분한 이야기 같긴 하지만, 처음 C언어를 배울 때 는 책상위에 컴퓨터를 놓고 실습하지 않고, 노트에 코드를 적고 결과를 예측 하는 식으로 공부 했었다. 반복문등이 나올 때면 디버거를 실행하는 것 처럼 각 변수들의 값을 표를 그려가며 적었다.


실제로 처음 공부하면서 헷갈릴 때에는 이런식으로 그림 혹은 표를 그려가며 공부하는 방법은 여러가지로 도움이 된다. 코드만 딱 입력해놓고 왜 이게 이렇게 되지 라고 이해 하지 못하면 공부하는 의미가 없다.


배열이나 포인터를 설명할 때에도 눈에 보이지 않는 메모리 영역을 그림으로 알아보기 쉽게 표현해주셔서 오랜만에 보는데도 쉽게 이해할 수 있었다.


- 디버깅에 대한 자세한 설명이 있었으면 어땠을까?


다만 초보자를 위해 아쉬운 점이 있다면 디버깅을 단순이 구문오류 있는 곳을 더블클릭하면 오류난 곳으로 커서가 이동하는 것이라고 설명하는것 말고 - p.015, 반복문 등을 설명하면서 VS의 강력한 디버깅기능을 사용하는 방법에 대해서 간단하게 나마 설명하는 곳이 있었으면 어땠을까 싶다. 물론 툴소개를 하는 책은 아니다.


- 서평끝


고리타분한 C책만 봤었는데,  이렇게 산뜻하고 친절한 C책도 있다.

다음번에 나오는 책은 혼자 공부하는 C 자료구조 였으면 좋겠다.


카페에서 혼공씨 자료구조라고 되어있는 게시글을 읽어 봤는데

단순히 구현만 있는 소스여서 약간 실망했다.



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
알쏭달쏭 자바 200제 - 텍스트 출력부터 예외 처리까지 하나씩 만들어보는 기초 자바 프로그래밍 알쏭달쏭 시리즈
시바타 보요.유리 가오루 지음, 김완섭 옮김 / 한빛미디어 / 2019년 5월
평점 :
절판


알쏭달쏭 자바 200제 - 예제가 풍부한 자바 기본서


- 서평시작

기본서라는 것은 항상 지루하기 마련이다. 보기에 생소한 단어나 문법을 가지고 뭔가 알아듣지 못할 이야기를 해대는 기본서는 사실 두꺼우면 두꺼울 수록 한번을 끝까지 보기가 어렵고 끝까지 본다고 해도 내용이 머리속에 잘 남아있는 경우가 드물다. 그래서 보통 기본서를 추천 할 때 되도록 얇은 책을 한권 공부 하고 그 다음에 두꺼운 책을 보는 것을 추천 하곤 한다.


이 책에 대한 첫인상은 상당히 두껍다는 것이다. 그리고 알쏭달쏭 자바 200제 라는 타이틀을 보고 자바 퍼즐러 같은 책이라고 생각 했는데, 목차를 보니 완전히 기본서의 목차였다.


사족으로, 원제목을 찾아보니 “新 풀어가면서 배우는 자바” 라고 한다. 


목차도 기본서고 사실 내용도 기본서다. 다만, 지루한 문법부터 소개 하는 것이 아니라, 각 장마다 풀어야할 큰 문제를 내고 문제 해결의 기본 소스코드를 보여주고 해당 내용에 대한 문법적인 설명을 한다.




예를 들자면 위와 같이 먼저 문제를 내고

아래에 코드를 쓰고

소스 설명이 필요한 부분에 대해서는 블록을 지정 하여 설명 한다.


소스 설명 부분에서 자바 문법에 관한 설명을 같이 하는데, 클래스 초기화 와 인스턴스 초기화가 1)  구문 해석도를 통하여 어떠한 형태를 지니는지 보여주고, 2) 언제 3) 왜 사용 되는지 자세하게 설명 한다.


설명에 관해서는 소스와 구문 해석도 그리고 필요에 따라서는 순서도 등을 사용하여 설명 하기 때문에 알아듣기가 쉽다.


다만 용어에 관해서는 어떤 책에서도 사실 그렇겠지만 영어 용어와 그걸 번역한 용어를 함께 사용하다 보니 약간은 혼란이 올 수도 있을 것 같다. 


초보자에게 많이 친절하다고 느낀 부분은 javadoc 를 설명하는 부분이다. (책 541page)

기본적으로 javadoc을 만들기 위한 주석을 작성 할 때 방법은 대충 알고 있지만, 안의 각 상세설명들에 대한 자세한 내용을 일부러 찾아보지 않으면 알기 힘든데 (초보자에게는 더더욱이나) 해당 내용들에 대한 설명이 잘 적혀 있다.



- 서평 끝

워낙에 두꺼운 책이고 이런저런 사정상 통독을 하지는 못했지만

관심있는 몇몇 장을 발췌해서 읽으면서 의외로 모르고 있는 부분도 많이 알게 되었고 이미 사용은 하고 있었지만 왜 그렇게 사용해야 했는지에 대해서 잘 모르는 부분에 대해서도 알게 된것이 많았다.


자바를 처음 공부하거나 조금 공부해본 사람에게 꼭 추천 하고 싶은 책이다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
파이썬으로 웹 크롤러 만들기 - 초간단 나만의 웹 크롤러로 원하는 데이터를 가져오는 방법, 2판
라이언 미첼 지음, 한선용 옮김 / 한빛미디어 / 2019년 3월
평점 :
구판절판


- 서평시작

앱에서 사용할 데이터를 데이터를 가져오기 위해서 아주 간단히 BeautifulSoup 를 사용해본적이 있다. 웹페이지 정보를 가져오고 싶은데, 방법을 찾다가 파이썬으로 하면 간단하다고 해서 블로그에서 검색해서 간단히 사용한 적이 있다. 그래서 이 책을 시작 할 때 단순히 BeautifulSoup 사용방법을 배우는 것 만이라면 이정도 책이 필요 없을 것 같은데 하고 생각하였다.


- 용어가 헷깔려?

책 제목이 영어로는  Web Scraping with Python, 한글로는 파이썬으로 웹 크롤러 (Web Crawling) 만들기 이다. 실질적으로 같은 용어이긴 한데, 책 말머리에 저자는 최근에 웹 스크레이핑이라는 용어가 더 널리 쓰이므로 책에서도 이 표현을 사용합니다 라고 적어 두었다. 한글로 웹 크롤러라고 표기한건 아마도 한국에서는 웹 크롤러라는 말을 더 많이 사용하기 때문인 것 같다.


 


1) 첫 번째 웹 스크레이퍼


BeautifulSoup 를 소개 하고 설치 하고 사용 한다.


간단히 웹페이지를 연결 하여 데이터를 가져오고 html 내용을 분석하여 원하는 값을 가져오는 것 만이라면 1장만 읽어도 끝날정도로 간단하다.


부제로도 써놨지만, 사실상 다 만들어져 있다. 


2) 고급 HTML 분석

좀더 복잡하게 BeautifulSoup을 사용하는 방법을 배우고, 필요한 데이터를 찾는데 사용하는 정규표현식에 대한 내용을 다룬다.


3) 크롤링 시작하기

단일 페이지가 아니라, 여러 페이지, 여러 사이트를 이동하는 스크레이퍼를 만든다. (말머리에서 저자는 이것을 특별히 크롤러라고 부르기로 하였다.)


4) 웹 크롤링 모델

단순히 웹사이트의 내용을 가져오는 것이 아니라, 필요한 데이터의 타입을 모델링 하고 이를 최종적으로 데이터베이스에 저장 하는 내용을 다룬다.


 


기술적인 내용도 있지만, 4.4 웹크롤러 모델에 대한 생각 부분이 읽으면서 참 도움이 되었다.


 


-------------------

4.4 웹 크롤러 모델에 대한 생각 (간단 요약)

인터넷에는 너무나 많은 것들이 있고, 당신에게 그것이 필요한지 어떻게 얻을지 항상 명확히 알기는 어렵다.


(1) 여러 도메인에서 유사한 데이터를 수집할 때는 항상 일반화를 시도해야 한다.

(2) 스크레이퍼를 만들 때에는 추후 더 많은 데이터 소스가 추가될 것이라 가정하고, 새 소스를 추가하는데 필요한 노력이 최소화 되어야 한다.

(3) 데이터 조각 간의 연결도 무시해서는 안된다. '유형','크기','주제' 같은 속성이 데이터 원본에 걸쳐 존재하는 정보를 찾고 있다면 이러한 속성을 어떻게 저장,검색,개념화 할 것인가?


-------------------


5) 스크레이피

Scrapy (web에서 데이터를 가져오기 위한 프레임워크) 를 사용한다.


BeautifulSoup는 가져온 데이터(HTML)를 파싱하는 작업만을 하는데 비하여 Scrapy는 페이지에 대한 규칙을 작성 해두면 자동(?) 으로 링크들을 이동 하며 데이터를 가져온다.


6) 데이터 저장

MySql 을 통해 데이터를 저장 하는 법을 다룬다.


댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
실습과 그림으로 배우는 리눅스 구조 - 개발자가 알아야 하는 OS와 하드웨어의 기초
다케우치 사토루 지음, 신준희 옮김 / 한빛미디어 / 2019년 2월
평점 :
구판절판


리눅스를 사용 한다고 해서 리눅스 시스템이 움직이는 원리에 대해서 꼭 알아야 하는 것은 아니다. 하지만 옛말에 아는 만큼 보인다고 했다. 뭐든지 그렇지만 아는 부분이 늘어나면 더욱 재미 있다.


1) 컴퓨터 시스템의 개요

전체적인 컴퓨터 시스템의 개요이다. 책의 모든 내용의 흐름은 개요의 흐름 순으로 진행 한다.


2) 사용자 모드로 구현되는 기능

사용자 모드, 커널 모드, 시스템콜


3) 프로세스 관리

fork() !!


4) 프로세스 스케줄러

시분할 시스템에 대해서 배웠었지만, 굉장히 막연한 느낌이었는데, 친절한 설명을 통해서 조금은 이해하게 된 것 같다.


5) 메모리 관리

고급언어를 사용하여 개발하면서 별로 생각해 보지 않았던 메모리 관리에 대한 부분을 오랜만에 재미있게 보았다. 메모리 할당, 해제, 가상메모리, 단편화, 스왑 까지 메모리에 대해서 알아야할 모든 내용을 다루고 있다. 


6) 메모리 계층

페이지 캐시, 버퍼 캐시등에 대한 내용을 다룬다. 


7) 파일시스템

파일시스템에 대한 전반적인 내용을 다룬다. ext4, XFS 등 파일시스템의 구체적인 내용은 아니고 리눅스의 파일종류, 캐릭터 장치, 디렉토리 등 기초적인 내용과 왜 파일시스템이 존재하는 지에 대한 설명이 잘 되어 있다.


8) 저장 장치

HDD와 SSD의 동작원리에 대해서 설명 한다. 그래프가 너무 많다.


- 실습

머리말에서 저자는 실제로 직접 실습용 프로그램을 빌드 하고 실행 하여  동작을 확인해보길 권한다고 했지만, 여러가지 사정상 실제로 실습을 진행해 보지는 않았다. 다만 코드는 읽어 봤는데, 아무래도 실습코드이다 보니  C 언어 문외한에 가까운 나에게도 그렇게 어려운 내용은 아니었다. OS나 C언어 입문 하는 사람이라면 필히 직접 코드를 입력 하여 테스트 해보기를 권한다.


- 감상

학교 다닐 때 OS 수업시간에 의미도 모르면서 달달 외웠던 단어들이 많이 보여서 반가웠다.  혹시 라도 공룡이 그려진 책을 읽어야 할 필요가 있는 사람이라면, 그 책을 읽기 전에 준비운동 하는 기분으로 가볍에 읽어 볼 수 있는 책이다. 꼭 개발자가 아니더라도, 대학새내기로 컴퓨터공학이나 리눅스를 처음 공부하는 사람이 꼭 읽어 봤으면 한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
이것이 Fedora 리눅스다 - 실무 현장 그대로 배우는 페도라 리눅스 서버 & 네트워크(Fedora 28 반영) 이것이 시리즈
우재남 지음 / 한빛미디어 / 2019년 1월
평점 :
절판


1) 서평시작


리뷰를 위해 책을 받아보고 놀랐던게, 이거 어디서 많이 본 구성인데 하는 것이었다. 자세히 저자서문을 읽어 보니, 역시나 같은 저자가 낸 책이었다. 참고로, 내가 보았던 책은 "뇌를 자극하는 RedHat Fedora: 리눅스 서버 & 네트워크" 이다. (2007년 버전인 5쇄)

혼자 리눅스를 공부하면서 여러가지로 도움이 많이 되었던 책이었는데, 12년 만에 같은 책의 증보판을 리뷰하게 되어서 감회가 새롭다.


2) 책의 구성


책의 학습로드맵을 보면 이 책을 통해서 무엇을 배울 수 알 수 있다.


* 리눅스 기본

실습환경구축 -> 페도라 리눅스 소개 -> 페도라 리눅스 설치 -> 기본적인 관리 내용 설명 (X윈도, 명령어, 쉘스크립트)


* 네트워크 서버 구축

원격지 시스템 관리 -> 각각의 서버 설치를 통한 실습 (네임서버, 데이터베이스, 메일서버, 웹서버, 삼바 등)


여러 챕터 중에서 이 책의 백미는 첫 챕터인 실습 환경 구축 부분이다.

리눅스 뿐만 아니라, 이런 환경을 처음 접하는 사람을 위하여 가상머신의 소개 부터 시작하여, 실무서버 구축 밑 테스트를 위한 준비를 확실하게 해주어, 책의 내용을 따라가는 것을 넘어서 책에서 제공하지 않는 부분에 대한 부분도 스스로 쉽게 공부 할 수 있도록 도와 준다. 

예전에 나온 대부분의 리눅스 관련 책이 리눅스 관련 이론에만 치중 했었다면, 이 책은 이론이 아닌 실습을 통한 체험에 중점을 두고 있고, 그 실습을 매우 편리한 방식으로 진행 할 수 있도록 한다.

예전에 리눅스에 오라클 설치를 진행 하다가 뭔가 조금씩 실수를 하고, 실수한 부분을 스스로 복구 할 수 없어서 저장해 두었던 스냅샷을 복구 할 때 그 편리함에 무척이나 감사 했던 기억이 있다. 물론 실무에서는 그렇게 작업을 진행 할 수는 없겠지만, 이 책의 대상인 리눅스 초보자에게는 무척이나 도움이 되리라 본다.


데이터베이스 서버 구축과 운영 같은 챕터는 사실상 개발이나, 데이터베이스에 관한 관련 지식이 없으면 너무 겉핥기 식인 면이 없지 않으나, 리눅스에 이런 프로그램들을 설치 하는 과정을 그렇게나마 처음 접해볼 수 있는건 괜찮은 구성 같다. 


3) 감상


초보자로 시작하여 실무에 진입할 수 있도록 도와준다는 컨셉은 여전히 유효 하다.


이전 책에서 사용한 페도라 버전이 Fedora Core 4 에서 Fedora 28로 바뀌고 (리뷰를 쓰는 시점에는 Fedora 29도 나왔다.) YUM 이 DNF 로 바뀌기도 하고, PXE 설치 서버 같은 전에는 없던 서버가 추가가 되어 내용이 최신을 반영 하고, 더욱 풍성해졌다.


리눅스 실무 입문을 위한 최고의 선택 이라고 추천 하고 싶다.


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo