iPhone 배터리 교체
지난 설에 양가 방문하고 나니 도저히 이대로는 못 버티겠다 싶어서, 3월 초에 배터리 교체를 받았다. 사용 중인 아이폰 6S는 특정 시기 생산품에 대해서 무상 교체를 하는데, 그 대상이라 공짜로 교체 받긴 했다. 가장 가까운 서비스 센터가 판교 일렉트로 마트 안에 있어서 휴일에 판교역에 갔다와야 했다. Orz. 배터리 교체는 생각보다 얼마 안걸렸고 — 대략 20분 내외? — 잠시 대기 줄에서 기다린 시간이 한 15분 정도였던듯. 근데 이건 문열자 마자 뛰어가서 그렇고, 실제로는 이보다야 더 걸리겠지.
리뷰: 콘클라베
로버트 해리스 의 장편 소설. 흔히 팩션 이라고 말하는 장르의 소설이다. 내가 본 상당 수의 팩션은 로버트 해리스 작인듯 – 이니그마, 당신들의 조국, 고스트 라이터, 아크엔젤, 어느 물리학자의 비행 등등. 덤으로 키케로 3부작 (이 이름이 맞나?) 도 있고. 제목에서 바로 알 수 있듯이, “교황 선종” – “새 교황 선출” 까지의 짧은 기간을 배경으로 한 소설이다. 직전 몇 대 교황 실명이 나오긴하지만 소설 자체는 정말로 픽션. 배경과 이전 교황이름만 현실에서 가져왔다.
Jenkins 2.x DSL 적용기
설 직전에 사용 중인 jenkins 서버가 버전이 올라갔다. 그리고 악몽(?)의 시작… 대략, 플랫폼 별 병렬 빌드를 위해 사용하던 buildflow 플러그인 결과물이 사라지는 현상 프로젝트 설정에서 buildflow 스크립트를 확인하거나 편집할 수 없는 현상 이 생겼다. 근데 최악의 문제는 아니었던게, 결과물이 보이지만 않고 서버 머신의 디스크에는 남아있더란; 비슷하게, buildflow 스크립트도 display: none 로 처리하고 있어서 스타일 수정하고나니 보이긴하더라. Jenkins wiki에서는 새 DSL인 pipeline plugin으로 넘어가라고 한다. 그래서 이전 작업을 시작; Buildflow 의 병렬 빌드에 해당하는 parallel 태스크는 있다.
Docker 로 Linux 없이 Linux 개발하기
Linux 머신 없이 linux에서 개발하기 지난 달 말 발표에 썼던 슬라이드. Windows + VisualStudio / macOS + Nuclide 환경에서 내부에 같이 띄운 docker container에 접근해서 C++ 프로그래밍을 디버깅 하는 내용을 다뤘다. 기록 차원에서 블로그 글로도 남긴다.
리뷰: “코스믹코믹: 빅뱅을 발견한 사람들”
대략 “파인만"이나 “로지코믹스” 같은 느낌의 책이다. 로지코믹스 때는 좀 덜했는데, 이 책과 파인만은 내용이 좀 비어있는 기분. (아래 사진이 두 책) 그리고 전자책으로 구매했는데 폰으로 보기엔 좀 불편해서 결국 데스크탑으로 옮겨서 봄 — 종이책 살걸 ㅠㅠ. 개략적인 얼개는 빅뱅이론의 나오기까지의 이론적/실험적 증거를 찾아가는 여러 사람의 얘기를 좀 가볍게 다룬다. 예를 들어 아인슈타인의 일반상대론과 정상 우주론, 그리고 팽창하는 우주에 관한 얘기 허블이 관측한 다른 은하들의 적색 편이 αβγ 페이퍼. (농담같은 이름이지만 빅뱅의 핵합성을 다룬다) 벨 연구소의 윌슨과 펜지어스가 발견한 모든 방향에서 동일한 배경 잡음 같은 얘기를 모아서 빅뱅 이론이 성립되어간 과정을 이론/실험적 증거로 얘기한다.
Docker + C++ IDE 개발환경 꾸려보기
Windows / macOS 용 docker를 이용하면 VM을 따로 띄우지 않아도 로컬 환경을 리눅스 개발 환경처럼 쓸 수 있다. 전에도 한 얘기지만, 툴은 가능하면 해당 OS 용의 GUI 도구를 활용하고 싶은게 내 심정. 그래서 (?) 요즘 나오는 좋을 툴들을 써서 Windows / macOS를 쓰는 기기에서 docker + linux 개발환경을 해당 OS 용 IDE 로 개발하게 꾸려보았다. (컴파일은 linux 컨테이너, 디버거 UI는 호스트 OS의 IDE를 쓴단 소리) Windows Widows 의 VisualStudio 확장 기능으로 linux 개발을 지원하는 Visual C++ Tools for Linux라는게 있다.
Linux 용 데스크탑 앱 훑어보기
요즘은 web 대신 app 으로 나오는게 유행인 것 같기도 하다. 모바일만 그런게 아니고 데스크탑도 약간 그런 것 같은데, 내가 쓰는 툴 중에 자주 쓰는 것 몇 가지도 이런 식. 이 중 두 가지가 내게 익숙한 .deb1 형식이길래 두 가지를 뜯어봤다. 하나는 slack 이고, 나머지 하나는 WordPress.com 이다. dpkg-deb -R 명령으로 아카이브된 것을 까보면, 대략 다음과 같은 파일들이 있다: desktop 앱을 위한 파일들 (wpcom.desktop, slack.desktop) node_modules (와 .asar 파일들) elctron libffmpeg.so 특이하게도 slack 쪽엔 cron.
Interop Madness
클라이언트 서버간 암호화 관련해서 개념 증명 + 몇 가지 성능 측정을 해야해서 몇 가지 언어 + 플랫폼에서 libsodium 1 을 호출해봤다. 그 와중에 겪은 일 정리. C++ 이쪽은 평범한 C/C++ 인터페이스니 문제 없이 끝. Python 위에서 구현한 부분을 클라이언트 쪽 구현을 (빨리) 만들어서 테스트하는 작업을 했다. 여기서부터 문제가 생기기 시작. Ubuntu 16.04 (xenial) 이 제공하는 libsodium 래퍼가 python-nacl 2 인데, 써보니 내가 쓰려는 함수가 여럿 없다. 특히 crypto_stream* 류 함수가 없더라.
Docker for Mac 베타 사용기
연휴 내내 하루 빼고 일하다가 드디어 짬이 났다. 그래서 한 달 반쯤 전에 공개된 Docker for Mac 을 써보기 시작. 베타용 토큰도 지난 주에 받아서 사실 그 전엔 시간 났어도 못 써봤겠지만. 일단 내 희망 사항인 linux 툴들과 Mac 용 GUI 툴을 같이 쓰는 걸 시도해봤다. 대략 docker volume 으로 로컬 디렉터리를 컨테이너에 마운트해서, MacOSX 환경에서 GUI 툴을 가져다 쓸 수 있을 것: 예를 들어 git mergetool 로 p4merge 를 쓴다거나 linux 몇 가지 distro.
프로그래머의 일상: 험난한 python 패키징
제목처럼 거창한 건 아니지만. 웹 페이지에서 JSON web token (jwt) 를 쓸 일이 있어서 pyjwt 를 가져다 쓰기 시작했다. 근데 이걸 서비스 중인 vm들에 배포하려면 .deb 패키지로 묶어야 한다. Python 라이브러리를 .deb (간단하게) 패키징 할 때는 python-stdeb 패키지를 이용해서 간단히 묶어 버리고 있다 – 이건 기회가 되면 나중에 설명할 일이 있었으면 한다. 하지만 문제 발생: $ python setup.py --command-packages=stdeb.command bdist_deb ... Traceback (most recent call last): File "setup.py", line 77, in 'jwt = jwt.