2015 년, 내 프로그래밍 언어는 …
2014 년, 내 프로그래밍 언어는 … 에 이어서. 작년 한 해 동안 주로 사용한 언어는, C++ (제한적인 C++1x,y,z) Python …과 거의 비등한 양의 bash shell script 회사에서 만들고 있는 게임 서버 엔진 (+ 이걸로 만드는 게임 서버 혹은 게임 서버 개발 지원) 으로 거의 C++ 만 쓰고 지낸 듯 하다. 그래도 엔진 자체만 빼고는 C++11 이후를 써도 되서 꽤 편하게 짠 듯. Python은 대략 이전에도 썼던 log 분석, 웹 서비스 stub 등에서 많이 썼고, bash 는 패키징 (.
프로그래머의 일상: 어떤 디스크 풀
커널 보안 취약점 때문에 회사에서 쓰는 VM들을 패치하고 있는데, 디스크 풀이 뜬다. ?!?!?!?! 디스크 풀은 다른 방식으로 감지하고 있어서 대체 뭘까 하고 고민하다가, 같이 일하는 수원님이 “inode 풀 아니냐” 라고 하시기에, $ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvda1 524288 517380 6908 99% / none 127041 2 127039 1% /sys/fs/cgroup udev 125746 388 125358 1% /dev tmpfs 127041 318 126723 1% /run none 127041 1 127040 1% /run/lock none 127041 1 127040 1% /run/shm none 127041 2 127039 1% /run/user 그것이 실제로 일어났습니다?
Python 으로 JSON 빨리 처리하기
지난 며칠 동안 모 모바일 게임의 알파테스트가 있었다. 그리고 갑이 뽑아달라는 ad-hoc 통계를 뽑느라 로그 처리를 왕창 할 일이 있었다. 대략, 로그 데이터는 하나의 JSON 문서로, 각 파일에 한 줄씩 차지하고 있다 파일은 날짜 별로 쪼개져서 서버 로그 디렉터리에 남아있다 내부 테스트나 첫날 정도까지는 로그 처리가 순식간에 끝날 수준이라 (k초 수준; k < 10) 별로 신경 안 썼는데, 막상 데이터가 커지기 시작하니 오래 걸리기 시작. (오래 걸린다 == 실행하고 결과 나올 때까지 걸리는 시간이 내 집중력이 유지되는 시간보다 길다) 그리고 ad-hoc 통계를 뽑으려다 보니 내가 실행하는 횟수가 계속 늘어서 걸리는 시간 줄이려고 삽질한 기록이 아래와 같다.
nginx + ngx_pagespeed
꽤나 예전에 동아리 서버에는 적용해봤는데 — 동아리 서버는 apache 웹서버를 써서 구글에서 바이너리로 배포하는 mod_pagespeed 를 썼지만 — 이 블로그가 쓰는 웹 서버는 nginx를 써서 적용 못하고 있었다. Nginx 는 다 좋은데 동적으로 로드 가능한 모듈을 지원하질 않아서 소스에 넣고 빌드해줘야하는 것. 개인 웹 서버라 개발툴 없이 돌리는 상태를 유지하고 싶어서 회사 개발머신을 빌려 데비안 패키지만 만들고 옮겨서 설치하는 것으로. 아래는 그 기록. 빌드 기록 빌드 과정은 소스에서 ngx_pagespeed 빌드하기 를 따라하되 nginx 소스코드와 빌드 자체는 ubuntu 14.
리뷰: 마션 – 리들리 스콧
2D로 보고 옴. 나쁘진 않았지만 — 영상만 보면 훌륭한 편이었고 — 맘에 썩 드느냐 하면 그건 아니라서 좀 아쉬운 영화. 원작 유지에 목 매는게 아니고, 볼거리도 많은 편인라면 볼만함. 특히 하드SF 류를 좋아한다면 더더욱 추천. 이하엔 원작 (마션 – 앤디 위어) 과 영화의 내용에 대한 스포일러가 포함되어있으니 주의 원작에서 워트니가 독백하는 부분이 많은데 대략, 자신이 ㅈ 되었음에 대한 한탄 그리고 이 상황에 대한 과학적 분석 이런 계산이 되니까 가능은 하다 가 있고, 이거랑 대비되는 NASA 측 인물들의 생각이 나오는 부분이 있는데 이 부분 처리를 어떻게 하나했는데, 대부분을 지워버림.
TLS: SHA1 해시의 종말이 다가오고 있다
ars technica: SHA1 암호학적 해시가 연말 전에 (쉽게) 무력화된다 라는 글이 올라왔다. (2015-10-08) 저 글에서도 나오고, 이 블로그의 이전 글에서 링크한 Bruce Schneier의 2012년 예측 에서는 2018년이면 조직범죄자들 정도의 재정이면 충분히 깰 수 있는 수준이 될거고 예측했었다. 하지만 새로 나온 논문에 따르면 이미 현재 기준으로 $75k ~ $125k 정도면 충돌을 찾을 수 있다 라는 것. (이전 예측치는 2018년에 $175k 정도) 즉, 지금이라도 어느 정도의 재정 규모가 되는 정부건 정부 단체건, 혹은 조직범죄자들이건 이걸 깨려는 시도를 할 수 있는 수준으로 계산 비용이 내려와 있다는 얘기.
리뷰: The Dark Forest – Liu Cixin
얼마 전에 읽었던 삼체 – 류츠신 의 후속작. “지구의 과거 3부작” 이 정식 명칭이긴 한데 다들 “삼체 3부작"이라고 부르는 듯. 하여간 여기의 2편. 원제는 “黑暗森林"이니 “어두운 숲” 정도로 번역 될려나. 씨리즈 2권이니 만큼 이하 내용은 전부 스포일러 포함 (전작이든, 이 책 자체든) 전작 엔딩에서 삼체인의 함대가 출발하고, 그 전에 광속으로 쏜 Sophon (양성자에 담긴 삼체인이 슈퍼컴퓨터) 이 지구로 날아오는 상태. 그리고 이 sophon 이 입자 물리학에서 인간이 과학 기술을 발전시키는 걸 방해한다.
리뷰: The End of All Things – John Scalzi
존 스칼지의 “노인의 전쟁” 씨리즈 최신작. 노인의 전쟁 3부작, 조이의 일기, 휴먼 디비전을 생각하면 시리즈 여섯번째 작품. 휴먼 디비전이 뭔가 스토리를 풀다만 — 특히 “적이 누군가?“를 풀지 않고 — 상태로 맺어져서 매우 찝찝했던 걸 생각하면 다시금 짜증이 나지만 이 시리즈를 읽고나면 해결이 됨. 게다가 “마지막 행성 (Last Colony)” 나 “조이의 일기"에서 콘수가 deus ex machina 로 스토리를 마무리 지어버리는 거에 비하면 훨씬 나은 마무리. 노인의 전쟁 씨리즈 팬이라면 꼭 읽어봐야할 내용.
리뷰: 삼체 – 류츠신
2015년 휴고 상 수상과 관련된 논란이 있었는데 하여간 기사보다가 휴고 상 수상자가 중국인이란 내용을 보게 되었다. 그러고보니 무려 휴고 상 수상되기 전에 한국에 번역된 특이 케이스인 것도 확인. 오늘 출/퇴근 길 + 저녁 후 시간에 읽어서 완독. 꽤나 속도감 있게 읽을 수 있었다. 이 이하의 내용엔 스포일러 성 내용도 있음. 아주 짧게 요약하면 중국의 문화대혁명 시기에서 얘기가 시작되고 현대까지 이어지는 이야기 이데올로기 배포 수단으로 컴퓨터 게임이 이용됨(!) 삼체 문제 가 이야기의 중요한 소도구 …라고하면 뭔지 알 수 없긴한데 여하간 추천작.
C++14: lambda 함수의 캡처 목록
C++11 lambda 함수에 값을 전달하는 방법은 복사/참조 두 가지 뿐이라서 expression 을 전달하진 못한다. lambda를 아주 거칠게 묘사하면 특정 인자를 받는 functor struct를 자동으로 생성하고 이거의 타입 추론을 자동으로 해주는 정도다. 그러니 생성자에 해당하는 lambda 캡처 목록에 “생성자에 해당하는게 있는데 왜 expression은 생성자에 못 넘기고, 변수 혹은 변수의 참조만 넘길까” 라고 생각하는건 매우 타당한 의문인 것. 예를 들어 C++11 에서 매우 거대한 std::unordered_map<k , v> 를 캡처한다고 치면 정말 복사를 해야 한다.