새 랩탑 도착
지난 달 초에 주문한 맥북이 어제 도착. 원래 쓰던 랩탑 (2012년 맥북에어)에서 이전 작업을 한 기록을 여기에 남긴다. Migration Assistant 시도 (1차): 실패하고 두 대 모두 제어 불가능한 상태가 되서 리붓. 2차 시도: 새 맥북에서 맥북에어는 보이는데 반대가 안되어서 똥망 -_- 3차 시도: 이전이랑 같음. 여기서 GG치고 수동 복사 시작. 대략 다음과 같은 애들을 수동으로 옮겼다: 작업 디렉터리 및 문서 디렉터리. 작업물 디렉터리에서 현재 손 안댄 것은 과감히 제외 (그래도 복사한 용량 10기가 수준).
오랜만에 확인해본 FeedBurner 통계
Google 사용량 통계 메일 (매달 오는듯?) 보다가 FeedBurner가 아직 살아있는 것 보고 반가운 마음에 (???) 들여다본 결과. Google Reader가 2013년 7월 1일 부로 서비스 종료한 이후로 구독자 수 / 도달률 모두 거의 붕괴한 상황이다. 내가 블로그를 덜 읽고, 글도 덜 쓰게 된 것도 대충 저것과 유사한 흐름인 것 같기도 하구나.
프로그래머의 일상: 소프트웨어 패키징하기
지금 일하는 회사에서 판매하는 제품은 대략 개별 linux 에서 쓸 수 있는 패키지로 생성한다. 원래는 Ubuntu 12.04 기반에서 시작한 작업이 Ubuntu 14.04가 나왔고, CentOS 7을 지원하기 시작했고, 그러다가 -_- Centos 6.x 지원도 포함된 상황. 하여간 그래서 겪는 문제가: 서비스를 띄우는 방법이 다르다Ubuntu 12.04 / 14.04, CentOS 6.x는 upstart 기반 (혹은 init script를 써야); 반면에 CentOS 7은 systemd 기반 패키징 방식의 차이: 아시다시피 Ubuntu는 .deb, CentOS는 .rpm 기반 툴 체인 차이 (컴파일러나 cmake 류의 툴의 버전 차이) 라이브러리 버전 문제 / 없는 라이브러리 문제 이걸 해결하려면 대략:
블로그 서비스 이전 준비 중
이 블로그는 만든 이래로 계속 동아리 서버 신세를 지고 있는데 이젠 옮길 때가 된 듯하여 — SSL + SNI 문제라거나 — 옮길 곳을 찾는 중. 대략 EC2 도쿄리전 아니면 GMO 쪽으로 옮기지 않을까 싶은데; (대략 월 2만 이하 가격; 트래픽은 크지 않음…) 뭔가 써 보신 분들은 추천 좀. 대략 다음과 같은 부분을 생각 중: https-only w/ HSTS .kr / .net / … 도메인에 대해서 SNI 설정이 가능해야 함 (.kr …) VM 접근 권한이 다 있으면 좋지만, 안되면 스태틱 파일만 내보내는 것도 생각 중 (하지만 disqus 류는 느려서 괴로울지도) 한 달 사용료 2만 안쪽으로… DNS 서버 제공해주면 좋고 싼 인증서 패키지 (…이건 약간 카테고리가 다른 듯) 하지만 과연 나의 귀차니즘을 이길런지는.
2014 년, 내 프로그래밍 언어는 …
블로그 옮길까 말까 / 정리할까 말까 고민하다가 이전 글 보고 기록 남기기. 2012년 말에 쓴 글 참고. 2014년에 주로 썼던 언어는 대략, Python C++ Shell script (bash) HTML / JavaScript 인 듯. 2012 년 NCsoft 퇴사 이래로 (일부러) 회사 코드에는 C++ 안 쓰고 있던게 대략 2년 지나니 별 문제 없겠지 싶어서 C++ 코드도 작성 시작 / 이쪽 일이 많아져서 분량이 늘어난듯. 회사에서 만드는 프로덕트가 대략, C++ 기반의 게임 서버 엔진 (C++) 엔진을 띄우기 위한 기타 플랫폼 코드 (C++, python, shell script) 엔진과 같이 도는 웹 서비스 코드들 (Python, HTML / JavaScript) 라서 실제로 저렇게 된 것 같다.
MS Visual C++ 에서 함수에 임시 객체를 (non const) reference로 넘기기
작년 하반기에 VisualStudio 2013 기준으로 작성된 C++ 프로젝트를 linux (+ GCC)로 옮기는 작업을 했다. 그 때 제일 충격적이었던 것은 — 한 2년넘게 Windows 환경 작업을 (직업적으로는) 안한 탓이 크겠지만 — 이 글 제목의 그것: void func(X &x); // ... func(X()); 이런 코드가 문제없이 컴파일되고 동작하는 것. 문제는 이 코드는 GCC 혹은 clang 에서 제대로 빌드되지 않는다; 게다가 저게 단순히 저런 함수 꼴 하나였으면 참 좋았을텐데, template + perfect forwarding이 섞인 코드라 반쯤 돌아버리는 줄 알았음.
Scrapy로 웹사이트 크롤링 해보기
웹 사이트 몇 개(=네xx카페)를 지속적으로 크롤링 할 일이 생겨서 몇 가지 라이브러리를 뒤적여봤다. 처음 시도한 것은 selenium. 하지만 UI 요소에 의미있는 텍스트가 없거나, 반복해서 나타나는데 문맥 의존적으로 해석하게되면 완전 노가다. 그리고 내가 아는 범위 내에선 서버 데몬을 따로 띄우지 않고는 안되는 녀석이라 따로 돌리기 불편해서 중도 포기. 다음으론 항상 잘 써먹던, 비교적 규모가 작은 웹사이트에서 잘 써먹던 requests + html5lib. 근데 이것도 UI 요소에 의미있는 클래스나 아이디가 없어서 불편하긴 하더라. 그리고 동적으로 링크를 발견하고, 이걸 다시 특정 형태로 크롤링하게 하려니 작업량이 많아서 작업 중단.
Unixstickers에서 스티커 사 봄
$40이상 사면 ems로 보내준다길레 하나 더 추가하고 맞춰서 주문. Linux, vim, C++, python 그리고 글라이더.
덜 번잡하게 git branch를 지울 방법이 없을까?
현재 상황: git + gerrit 사용 중 submit 할 때 rebase 해서 merge가능하면 자동으로 rebase (gerrit 옵션) 문제: 다른 커밋들과 거의 무관해서 일련의 내 커밋이 git rebase 되어서 mainline에 “rebase + fast-forward” 됨. 해당 기능의 로컬 branch를 지우려고 하면 merge되지 않았다고 “git branch -D {branch}” 하라고 나옴 git show {branch} 해서 대략적으로 바뀐 부분을 찾고, git diff master..{branch} — {바뀐 위치} 로 겹치지 않는 diff가 있나 확인하고 나서 지움; 매우 번잡함 원하는 해결책:
NDC 2014: 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
오늘 NDC 세션으로 발표한 슬라이드 덱 아쉬운 점: 신청할 때 내 잘못으로 50분 대신 25분 세션으로 신청해서 시간이 모자랐다. 원래는 문제 / 문제 원인 / 왜 이런 해결책을 선택했나를 설명하고 싶었는데, 시간도 짧고 해서 문제 / 대략적인 해결만 얘기한 듯. 보고 계시던 분 중 한 분이 “어디에도 낙원은 없다” 정도의 얘기를 하셨다는데, 내 감상만 얘기하자면 처음 개발/운영 시작할 때만해도 힘들었지만 지금은 꽤 편하다는 것. 하드웨어 인프라를 프로그래머 손 위에서 다루게만 해줘도 사람 손이 덜 가게되고, 자동화하는 영역이 늘었다는 얘기를 얘기할 자리가 생겼으면 좋겠음.