초등학교에서 수업시간에 코딩 교육을 한다고 한다. 5,6학년 2년을 합쳐 17시간이니 그리 많은 시간을 할애하는 것은 아니지만, 정규 교육 과정에 코딩이 들어간다는 것 자체가 큰 의미가 있는 것 같다.

 

그런 흐름을 타고 코딩 학원이나 코딩에 관한 책 들이 마구 쏟아져 나오고 있다. 제일 많이 사용하는 것이 스크래치와 엔트리이다. 하지만 일시적인 유행이나 흐름을 타고 그저 상품을 팔아먹기에만 급급한 것이 현실인듯 하다.

 

이 책의 저자이신 김종훈 교수님은 이런 유행이 있기 한참 전 부터 초등학생 및 초등교사를 위해서 스크래치 강의를 해오신 분으로 , 책을 통해서   단순한 스크래치 사용법 뿐만 아니라 코딩교육의 실제 목적인 문제해결 능력과 창의성을 기를 수 있도록 하고 있다.

 

책은 기본적인 스크래치에 대한 설명과 스크래치를 사용 하여 프로젝트를 만드는 방법으로 시작 한다.

 

스크래치에 대한 첫 인상은 생각보다 쉽지 않지만, 그렇다고 또 어렵지는 않다는 점이다. 각각의 동작이나 제어, 이벤트에 관한 블록을 선택하고 끌어다 연결하여 일련의 동작을 만들어내는 것은 실제 타이핑을 하지는 않지만 의사코드를 사용하여 프로그램을 하는 것과 비슷하다는 생각이 들었다. (굳이 제일 비슷한 것을 찾아 보자면 파워포인트에서 애니메이션 순서를 정하고 꾸미는 것이 가장 비슷해 보인다.)

 

의사코드를 사용해서 프로그램을 할 때는 머리속으로만 결과를 예상하는 방식으로 문제를 해결 해야 하는데, 스크래치에서는 실제 화면의 스프라이트를 동작시키는 방식으로 결과를 보여 주기 때문에 좀더 직관적이고 편하기는 하다.

 

책에서는 스크래치 뿐 아니라 코딩을 할 때 일반적으로 알아야 하는 개념인 변수, 리스트, 재귀, 이벤트 등에 대한 설명도 담고 있다. 초등학교 학생에게는 어려운 단어 인거 같기도 하지만 필요한 만큼의 설명을 최대한 친절한 방식으로 알려 주고 있다.

 

코딩을 처음 시작하는 초등학생이 바로 보기에는 약간 힘들어 보이기는 하지만, 코딩을 처음 시작하는 엄마나 아빠와 함께 읽으며 같이 입문하기에는 참 좋은 책이다. 다만 책띠의 카피문구는 사실 좀 낯간지럽기는 하다.

 

파이썬 자료구조와 알고리즘

 

파이썬은 세계에서 가장 인기있는 프로그래밍 언어 중 하나 이다.

(2019 설문 기준으로 자바를 넘어 섰다. https://insights.stackoverflow.com/survey/2019

 

파이썬이 인기 있는 이유 중 하나가 일반적으로 사용 하는 언어와 닮아 있다는 점인데, 불행이도 한국어를 사용하는 사람에게 적용되는 이유는 아닌듯 하지만 그만큼 나의 생각을 코드로 표현하기가 쉽다는 점이 파이썬의 장점이며 강점이다. (특히나 초보자에게)

 

다만, 아무리 쉽다 하더라도, 단순한 문법을 배우는 것만으로는 프로그래밍언어를 가지고 원하는 내용을 만들어 내는 것은 쉬운 일이 아니다. 더군다나 자료구조라던지 알고리즘 이라던지 일반적인 말로 해도 알아듣기 어려운 내용에 대해서 새로 배운 언어로 표현하는 것은 생각보다 귀찮고 어렵고, 어떤 식으로든 필요한 내용을 찾아 볼 방법이 필요 하다.

 

보통은 블로그나 github 을 통해서 필요한 내용을 찾아보는 것을 주로 했는데, 이번에 읽은 “파이썬 자료구조와 알고리즘” 책은 그 역할에 딱 적당한 책이다.

 

일반적으로 보통 레퍼런스 북이라면 베게로 쓰기에 딱 적당한 두툼한 두께의 평소에는 거의 찾아볼일이 없지만, 일단 폼으로 한권 사 두고 정말로 필요할 때 한번정도 들춰보는 그런책을 상상하기 마련이지만, 이 책은 매우 얇은 두께의 적당한 판형으로 작은 가방에도 쏙 들어가는 사이즈이다. 

 

그럼에도 불구하고 파이썬의 자료구조에 대한 기본적인 내용 부터 파이썬을 사용하여 추상데이터 타입 (큐, 힙, 해시테이블 등) 을 다루는 방법 또한 정렬, 검색, 그래프 같은 내용까지 간단하게나마 전부 다루고 있다. (퀵소트나 레드 블랙 트리 등과 같은 내용에 대해서는 다루고 있지 않다.)

 

자료구조에 대한 기본적인 이해가 있고 파이썬을 공부하기 시작한 사람이라면, 한번 쭉 읽어두고 (그럴만큼 얇은 책이다.) 필요할 때 한번 더 필요한 내용에 대해서 찾아보면서 읽어 볼 수 있는 좋은 책이다.

 

head first agile

  • 어서와 애자일은 처음이지?

 

 

애자일이 뭘까요?

  • 소프트웨어 팀이 특정 문제를 해결하는데 도움을 주기 위해 최적화된, 단순함을 유지해서 상대적으로 간단하게 개발하는 일련의 방법 또는 방법론

 

애자일이 인기를 얻은 이유?

  • 팀이 애자일에 적응하면 마감일을 지키기가 아주 쉬워진다

  • 소프트웨어 버그를 실제로 줄일 수 있다

  • 코드의 유지보수도 훨씬 쉬워진다

  • 사용자는 훨씬 만족 하고, 덕분에 모든 사람의 삶이 편해진다

  • 무엇보다 애자일 팀이 효과적으로 일한다면 합리적인 시간대에 퇴근할 수 있고 주말 근무를 할 필요가 없어지기 때문에 삶의 질이 개선 된다.

 

책에서는 애자일 선언문을 시작으로 애자일의 가치와 원칙에 대한 이해를 이야기 하고, 각 방법론 (스크럼, XP, 린/칸반)에 대한 개략적인 설명을 이어 나간다.

 

헤드퍼스트 책 답게 (헤드 퍼스트 시리즈를 매우 좋아함!) 지루한 설명을 이어나가는 것이 아니라 큰 주제어와 대화체 그리고 그림으로 이해하기 편하게 해준다.

 

PMI-ACP 시험 준비 부분에 관해서는 솔직히 관심 밖이라서 읽지는 않았는데, 시험 자체가 정해진 정답 외워서 찍는 것이 아니라 주어진 상황에 대한 이해와 실제 상황에서 팀이 애자일 도구, 기법, 개념을 어떻게 활용하는지를 잘 알아야 한다고 하니 관심 있는 분들께는 많은 도움이 될 듯 하다.

 

실제로, 나의 현업에서 애자일 방법론을 적용할 수 있을 지에 대해서는 미지수이지만, 수십년 전에 배운 (그보다 더 수십년 전에 개발된 ) 폭포식 소프트웨어 개발 방법론 이후 오래간만에 개발 방법론에 대해서 배워보고, 좀더 나은 개선을 위해 무엇을 할 수 있을지에 대해서 잠시나마 생각해 볼 수 있는 좋은 기회 였다.

 

 

알쏭달쏭 자바 200

 

알쏭달쏭 자바 200제 - 텍스트 출력부터 예외 처리까지 하나씩 만들어보는 기초 자바 프로그래밍

프로그래밍 문제를 풀며 자연스럽게 자바를 배울 수 있는 초/중급 개발자를 위한 코드 중심의 자바 입문서로 총 16개 장, 200개의 프로그램 문제와 1,115개 실전 문제로 구성되어 있다. 각 장에서 출제되는 코드를 ...

www.aladin.co.kr

- 서평시작

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

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

사족으로, 원제목을 찾아보니 “新 풀어가면서 배우는 자바” (新・解きながら学ぶJava)라고 한다.

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

 

책 내용 예시

예를 들자면 위와 같이 먼저 문제를 내고
아래에 코드를 쓰고
소스 설명이 필요한 부분에 대해서는 블록을 지정 하여 설명 한다.

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

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

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

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


- 서평 끝
워낙에 두꺼운 책이고 이런저런 사정상 통독을 하지는 못했지만
관심있는 몇몇 장을 발췌해서 읽으면서 의외로 모르고 있는 부분도 많이 알게 되었고 이미 사용은 하고 있었지만 왜 그렇게 사용해야 했는지에 대해서 잘 모르는 부분에 대해서도 알게 된것이 많았다.

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

- 서평시작

앱에서 사용할 데이터를 데이터를 가져오기 위해서 아주 간단히 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 을 통해 데이터를 저장 하는 법을 다룬다.

 

 

 

나의 첫 안드로이드 - 어서와 안드로이드는 처음이지?

 

1) 서평시작

 

책보다 먼저 동영상을 보았다. 오랜기간 동안 여러 강의를 진행 하신 경험이 있으셔서 그런지 차분하고 설득력 있는 목소리의 훌륭한 강의 였다.

강의 내용중 처음에 이런 질문을 하셨다.

 

"개발을 잘 하는 방법, 어떻게 하면은 개발을 잘 할까?"

 

강사님의 답변은

 

"개발을 많이 하면 잘한다. 손으로 학습 한다."

 

개발책을 소설책이나 기타 학습책 처럼 줄치면서 읽어봐야 소용없다고 말씀하신다.
리뷰나 공부등을 위해 여러 개발책을 보았는데, 강사님 말씀대로 소설처럼 읽어서 개발 실력이 늘지 않은듯 하다.

 

"백문이 불여일打"

 

처음 개발 공부할 때 배운 격언인데, 까먹고 있었다.

 

2) 책의 구성


무작정 소스를 보고 키보드를 두드리기 전에 내가 배울 것이 무엇인지 어떻게 구성되어 있는지 파악 하는 것은 필수다.

 

책은 기본적인 자바문법을 알고 (필수!) 안드로이드를 처음 배우기 시작한 사람들을 위한 내용을 가지고 있다.
다만 안드로이드의 모든 내용을 다루고 있지는 않기 때문에 저자는 기본적인 내용을 학습 한 후 심화를 위한 책을 한권 더 읽기를 권한다.

 

처음에 개발을 위한 안드로이드 스튜디오 설치 부터, 안드로이드 개발에 필요한 용어 및 개념 (액티비티, 위젯, 레이아웃, 뷰컨테이너, 프래그먼트, 인텐트 등)을 설명한 뒤 단순 앱 개발 예제를 통해 실습을 하도록 유도 한다.

 

그리고 마지막으로 추가로 이 책을 학습한 후 추가로 어떤 것들을 더 학습해야 하는지에 대한 부분을 제시한다. (안드로이드에 대한 심화적 내용과 배워야할 서버쪽 기술에 대한 설명)

 

각 용어 및 개념에 대한 설명이 자세하고 필요한 경우에는 그림과 캡쳐로 적절하게 사용 한다.

그리고 무엇이 중요한지 확실하게 알려 준다.

 

"액티비티의 생명주기 메소드에 적절한 코드를 작성하는 것이 우리가 할 수 있는 전부 입니다. 그러므로 생명주기 메소드가 언제 어떻게 호출되는지를 이해하는 것이 가장 중요합니다."

 

3) 감상


소설처럼 개발책을 읽지 말라고 하셨는데, 600쪽에 가까운 책임에도 불구 하고 소설처럼 술술 읽혔다.
다만 실습 부분은 실제로 코드를 치면서 (복사는 의미 없다.) 진행중인지라 아직 덜 읽은 상태이다.

 

인터넷에 여러 가지 앱에 대한 예제 소스가 많이 있는데, 그것들을 읽어 볼 수 있는 기반을 충분히 제시한다.

 

초보자가 가장 넘기 힘든 부분을 넘게 해주는 좋은 책이다.

 

러닝 HTTP/2 - 저는 HTTP 를 잘 모르는데요?



저는 HTTP 를 잘 모르는데요? 그래도 보자.

- 서평 시작
옮긴이의 말 중 "입문자에게는 기초적인 프로토콜 동작 방식 뿐만 아니라 앞으로의 학습방향에 대한 좋은 가이드" 이라는 점에 주안점을 두고 읽었다.
책의 대상 독자에 써놓은 것 처럼 나 또한 웹사이트의 생애 주기를 아주 미세하나마 책임지고 있는 사람임에도 불구 하고 HTTP 및 HTTP/2 프로토콜에 대한 이해가 전무 했다.

- 1장 HTTP의 진화
HTTP 의 역사를 간략히 소개 한다.

- 2장 HTTP/2 맛보기
웹서버를 설치하고 인증서를 발급받아 HTTP/2로 구동 되는 웹서버를 띄웠다. 
생각보다 간단해서 놀랐다.

- 3장 웹을 파헤치는 이유와 방법
웹페이지요청의 구조와 성능에 관해서 이야기 한다.
HTTP 에서 성능향상을 위해 개발한 방법이 HTTP/2 에서는 더이상 적용되지 않는 부분이 흥미로웠다.

- 4장 HTTP/2 로의 전환
실질적으로 HTTP 에서 HTTP/2 로 전환 하는 방법을 알려 준다.
다만 내가 현실적으로 근 몇년 이내에 사용할 일이 있을까...

- 5장 HTTP/2 프로토콜
실제로 HTTP/2가 동작하는 방식을 설명 한다.
책의 내용중 가장 읽기 어려운 부분이었다.
HTTP 와의 비교하여 설명 하는 부분이 인상적이다.
                                                                                                                                             
- 6장 HTTP/2 성능
"무엇이든 최대한 활요하기 위해서는 성능 테스트와 모니터링이 필수 이며 HTTP/2도 예외는 아니다." 라는 구절이 인상적이다.
실제로 HTTP/2 로 전환할 때의 성능테스트를 위한 지침과 안티패턴을 소개 한다.

- 7장 HTTP/2 구현

- 8장 HTTP/2 디버깅하기
chrome 에서 net-internals 와 개발자도구를 사용 하여 모니터링 하고 디버깅 하는 방법 및 예시를 보여 준다.
예제로 알려준 사이드 외에 daum 을 접속해 봤는데 daumcdn 에서 HTTP/2를 이용 하고 있었다.
이것은 이미 활용되고 있는 기술이구나 라는걸 확인 했다.

- 9장 다음은 무엇인가
HTTP/2 이후를 생각할 수 있는가?

책의 목적에 저자가 써놓은 것 처럼 이 얇은 책에서 HTTP/2 의 모든것을 알려주는 종합서는 아니다.
하지만 얇기에 이런 딱딱한 이야기를 어쨋든 끝까지 읽을 수 있었던것 같다.

책에서 읽은 내용이 금방 실무에 적용되거나 하진 않겠지만
앞으로 많이 사용하게될 기술이나 표준에 대한 공부를 해두는 것은 분명히 의미가 있다고 생각 한다.

+ Recent posts