독서는 절대 나를 배신하지 않는다”, 사이토 다카시, 걷는나무, 2015 에서 내용 발췌



솔직히 책을 많이 읽다 보면 읽은 사실 자체가 헷갈리게 되는 경우도 있고, 좋은 책이었지만 ‘이건 정말 최고의 책이다’라는 강렬한 느낌을 준 게 아니라면 어땠는지 전혀 기억이 나지 않을 때도 있다. 사람의 기억이 한정적이기 때문에 벌어지는 현상이니 어쩔 수 없지만 아주 간단하게라도 책 정보와 2~3줄의 간단한 메모를 곁들이는 방식으로 정리를 하면 좋다. 지금 내 홈페이지에 공개해 둔 일부를 소개하겠다.


“밤과 안개” 빅터 프랭클, 미스즈쇼보, 2008 

- 유대인 강제수용소에서 살아남은 한 심리학자의 감동적 체험 기록. 현대사의 생생한 단면에 할말을 잃었다. 삶에 대한 의지와 희망은 어떻게 인간을 구원하는 가에 대한 답.


보이는 대로 매우 간단한 기록이다. 책 제목, 저자명, 출판사명 등을 간단하게 적고 짧게 평을 쓴 게 끝이다. 여기서 포인트는 영화 평론가들이 별점과 함께 10자평을 쓰는 것처럼 간결하게 쓰되 책의 주제와 감상을 핵심만 적는 것이다. 마치 다른 사람에게 소개하는 느낌으로 적기 때문에 부담도 없고, 어떻게 하면 촌철살인의 한마디로 정리할 수 있을지 고민하는 재미가 쏠쏠하다.



책을 좀 읽기는 읽는 것 같은데 크게 머리속에 남는게 없는거 같다.

뭔가 좀 남기는 의미로 나의 독서 10자평을 써보자.



자바로 배우는 핵심 자료구조와 알고리즘



- 서평시작


“자료구조를 왜 배워야 하는지 모르겠다!”


입사하고 얼마 안되어 “학생 때 배운걸(자료구조, 알고리즘 등) 써먹어 본적이 있는가? “ 라고 나에게 질문을 던지던 회사 선배가 갑자기 떠올랐다. 그 때의 내 대답은 자세히 기억나진 않지만 아마 별로 없다라고 했던것 같다.


실제로 그 이후로 실무 프로젝트를 경험 하면서도 라이브러리나 프레임워크 사용에만 급급해서 자료구조 같은 것에 대해서 생각해 본적도 별로 없긴하다. ‘이미 만들어져 있는걸 간단히 불러와서 사용 할 수 있는데 왜?‘ 라고 생각하면서 말이다.


하지만, 간단한 하던 복잡하던 프로그램을 작성 하면 가끔 왜 라는 질문에 부딪힐 때가 있다. ‘왜 이걸 사용해야 하나? 다른걸 쓰면 안되나?’

사실 상 이유를 분석할 능력이 없어서 ‘이제까지 그냥 쓰던 거니까’ 하고 별 생각 없이 하던 방식을 답습해 왔다.  


옮긴이는 책의 처음에서 “자료구조와 알고리즘에 대한 이해는 소프트웨어의 품질을 높이는 아주 기본적인 작업이다.” 라고 이야기 하며 자료구조를 배워야 하는 이유를 설명 하고 있다.

물론 내가 이미 구현된 레거시 소프트웨어의 병목을 분석 한다던지 하는 일은 없을 것 같지만,  어떤 자료구조를 어떤 상황에서 왜 사용 했는 지 에 대해서 생각해 볼 수 있는 계기는 된듯 하다. (이 책에서는 몇가지 자료구조들에 대한 설명과 이를 구현하기 위한 가이드와 함께 성능을 측정 하는 방법 (단순한 실행 시간 비교가 아닌 계산을 통한 예측) 까지 소개 하고 있다.)


책의 구성 중 모든 구현을 다 소개 하지 않고 가이드만 제공하는 부분은 참 좋았다. 직접 코드를 구현하지 않고 책만 읽어 나가기에는 좀 귀찮은 면도 있었지만, 이 책을 제대로 읽으려면 직접 코드를 작성해 보고, 책에 나오는 외부링크를 같이 읽을 필요가 있어 보인다. (외부링크가 모두 영문이긴 하지만)


자료구조 공부를 위해서는 자료구조의 알고리즘 설명을 듣고 그걸 내 머리속으로 이해 한뒤 그 내용을 내 코드로 옮기는 기술이 필요 한데, 그걸 익히게 하는데 도움을 많이 주었다.


소스 코드를 github 을 통해서 제공하는 점도 마음에 들었다. 개발자를 위한 책에서 코드를 제공하는 방식은 당연히 이렇게 되어야 하지 않나 싶을 정도 이다.


- 인상적이었던 부분


요약하면 알고리즘 분석은 자료구조를 선택하는 지침을 제공하지만, 오직 다음 조건일 때만 유효합니다.


1. 응용프로그램의 실행시간이 중요하다.

2. 응용프로그램의 실행시간이 선택한 자료구조에 의존한다.

3. 증가차수에 따라 어느 자료구조가 나은지 실제로 예측할 수 있을 만큼 문제크기가 충분히 크다.


여러분은 오랜 시간 소프트웨어 엔지니어로 일하면서도 이러한 상황을 접하지 못하였을 수도 있습니다.

네 말 그대로 입니다.


- 소감


뭔가 새로운 것을 배우는 것도 아닌데 희안하게 재미있는 책이다.

두께도 두껍지 않아서 (다른 자료구조 책들과 비교해 보자!) 부담감도 적다.


- 서평 끝



1. 어댑터 설정 변경 바로 열기


네트워크 및 인터넷설정 열기 ->네트워크 및 공유센터 -> 어댑터 설정 변경


윈10 기준으로 위와 같은 화면을 보려면 위와 같이 3번의 과정을 거쳐야 한다.

이게 다 귀찮다면 실행 창을 열고 아래와 같이 입력 하면 된다.


control netconnections


2. 어댑터 사용/사용하지 않기 설정


netsh interface set interface name="inline" admin=disabled

netsh interface set interface name="inline" admin=enabled

interface name 은 어댑터 설정 변경에서 바꿀 수 있다.


3, IP 변경


netsh -c int ip set address name="inline" source=static addr=192.168.63.150 mask=255.255.255.0 gateway=192.168.63.1 gwmetric=0

netsh -c int ip set dns name="inline" source=static addr=168.126.63.1 register=PRIMARY


좀 더 자세한 내용을 알고 싶으면 이쪽을 참조 한다.

파이썬 정복


매년 새로운 언어를 최소 하나는 배워라.

다른 언어는 동일한 문제를 다르게 푼다. 몇 개의 서로 다른 접근법을 알면 사고를 확장하고 판에 박힌 사고에 갇히는 걸 예방하는 데에 도움이 된다. - 실용주의 프로그래머 중에서



- 서평시작

“파이썬 입문용으로 기획되었습니다. 프로그래밍 언어의 기본 개념과 논리를 익히고 연습하는데 최우선의 목표를 두고 쓰여졌습니다.” - 머리말에서


세상에 존재하는 여러 프로그래밍 언어들 중에서 파이썬은 어떤 언어 보다도 쉽게 배울 수 있고 별도의 컴파일이 필요하지 않은 스크립트형 언어의 편리함으로 인해 처음 프로그래밍을 배우는 입문자 사이에서 매우 인기 있는 언어 이다. 그래서 그런지 파이썬 입문에 관한 책이 굉장히 많이 나온다.


입문자는 아니지만 오랜만에 처음 코딩을 배우는 심정으로 읽어 보았다. 이전 부터 파이썬을 한번 배워보고 싶었던 것도 있지만, 시험공부나 일이 아니라고 생각하니 부담이 없어서인지 더욱 재미있었다.


- 1~10장에서는 파이썬의 설치 및 실행 방법 그리고 프로그래밍의 기본을 다루고 있다. 이미 코딩을 경험한 사람한테는 기본적인 내용으로 다른 언어와 파이썬의 차이점만을 비교하며 금방 읽을 수 있게 되어 있고, 입문 하는 사람은 예제를 타이핑 해가면서 차분하게 읽다 보면 이런게 코딩이구나 라는걸 충분히 느낄 수 있다.


- 9장과 10장에서는 자칫 딱딱해 질 수 있는 자료구조(리스트, 튜플, 사전, 집합)에 대한 내용을 비교적 쉬운 언어와 그림을 사용 하여 이해하기 쉽게 설명해 주었다.


- 14장 파일에서는 파일 목록 및 이름 변환을 다루는 예제를 가지고 파이썬의 가능성에 대한 부분을 설명해주는 것이 좋았다.


- 14장 데이터베이스 부분은 너무 겉핥기 식인거 같다.


- 18장 그래픽 및 19장 wxPython 은 생략하고 읽었다. 파이썬에 흥미를 가지고 책을 읽었던 이유는 웹프로그램을 배워보기 위함 이었기 때문에 개인적으로는 장고(Django)나 플라스크(Flask) 에 대한 간단한 소개가 있었으면 어땠을까 싶다.  


- 소감

2018년부터 코딩교육이 의무화 되면서 코딩 열풍이 불고 있다. 전공자나 회사원이 아닌 학생들도 프로그래밍 언어 하나 하는 것 쯤은 기본인 세상이 되어 가는 듯 하다.


어떤 분야던 그렇겠지만 기본서, 입문서가 가장 어려운것 같다. 막상 배워서 익숙해지면 별거 아니다 싶긴 한데, 그걸 모르는 사람에게 쉽게 전달해 주는 것이 가장 어렵지만 입문서가 해야할 제일 큰 역할 이다.


파이썬정복은 그리 많지 않은 페이지로 파이썬입문에 필요한 모든것을 다루고 있다. 프로그래밍을 입문 하는 고등학생 이상의 사람에게 필히 추천 하고 싶다.


- 서평끝

러닝 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 의 모든것을 알려주는 종합서는 아니다.
하지만 얇기에 이런 딱딱한 이야기를 어쨋든 끝까지 읽을 수 있었던것 같다.

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

지난주 까지 잘 사용하던 redmine 이 월요일에 갑자기 실행되지 않았다.

증상은 Bitnami Redmine Stack 프로그램에서 Thin_redmine 과 Thin_redmine2 만 빨간색으로 stop 을 표시하고 있는것


어찌 해야 할지 몰라서 인터넷 검색 결과 아래과 같은 포스트를 발견 했다.


[Redmine] BitNami Redmine Stack 서비스 구동 시 Thin_redmine 서비스만 Stopped 되는 문제


포스트 내용 중 "2. 아래와 같이 redmine 을 기동시킨다." 를 실행 하던 중 아래와 같은 오류가 발생 하였다.


무슨 git source 냐고 생각 하던 중, 지난주에 플러그인 설치를 위해서 plugin 경로에서 git checkout 을 했던 기억이 났다. 그리고 2개 checkout 받은 플러그인중 하나가 정상적으로 작동이 되지 않았었던것을 떠올렸다.


그리고 plugin 경로에 가서 해당 부분을 삭제하고 재기동해 보니 정상적으로 실행 되었다.



1. db 백업

2. files 백업

3. 새로운 redmine 설치

4. MySQL 서버 외에 다른 서버 중지

5. db 복원 

mysql -ubitnami -p패스워드 bitnami_redmine < backup.sql

6. files 복원

7. db 마이그레이션

1) c:\Bitnami\redmine-3.4.4-1\use_redmine.bat 실행

2) cd c:\Bitnami\redmine-3.4.4-1\apps\redmine\htdocs

3) bundle exec rake db:migrate RAILS_ENV=production


cd c:\Bitnami\redmine-3.4.4-1\mysql\bin
SET yyyymmdd=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%

mysqldump.exe -ubitnami -p7b78aa2234 bitnami_redmine > c:\backup\%yyyymmdd%_redmine_database.sql

@pause


스케쥴에 등록 해놓으면 편리 하다.


참고로 파란색 글씨는 순서대로

username, password, database 이다.


데이터베이스 password 확인 위치


c:\Bitnami\redmine-3.4.4-1\apps\redmine\htdocs\config\database.yml




netsh interface set interface name="이더넷" admin=disabled
netsh interface set interface name="Wi-Fi" admin=enabled



bitnami redmine 설치 후 이 기본화면을 보기 싫다면

c:/Bitnami/redmine-3.4.4-1/apache2/htdocs/index.html 을 수정 하면 된다.


하도 오랜만에 새버전을 깔다 보니 까먹었길래 다시 적어 둔다.

아래는 redmine 으로 바로 넘어가게 하는 예제이다.


index.html



+ Recent posts