<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>rein&#39;s world</title>
    <link>https://rein.kr/</link>
    <description>Recent content on rein&#39;s world</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Sun, 03 May 2026 20:43:19 +0900</lastBuildDate><atom:link href="https://rein.kr/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>해외 출장 중에 한국 게임하기 위한 WireGuard 설정</title>
      <link>https://rein.kr/posts/2026-05-03-biztrip-with-wireguard-for-gaming/</link>
      <pubDate>Sun, 03 May 2026 20:43:19 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2026-05-03-biztrip-with-wireguard-for-gaming/</guid>
      <description>넥슨에서 서비스 중인 게임들은 대부분 해외에서의 접속을 차단하고 있다. 작년에 회사 워크샵 갔을 때 가서는 로밍으로 잘 하다가, 돌아오는 비행기 안에서 게임에 접속해보려 했다가 실패했던 기억이 있다.
sequenceDiagram actor User as 📱 내 폰 participant Plane as ✈️ 비행기 participant Starlink as 🛰️ Starlink 위성 participant Station as 🗼 지상국&amp;lt;br/&amp;gt;(미국 / 일본) participant Backbone as 🌐 인터넷 participant Game as 🎮 게임 서버 User-&amp;gt;&amp;gt;Plane: 기내 Wi-Fi 연결 Plane-&amp;gt;&amp;gt;Starlink: 위성 uplink Starlink-&amp;gt;&amp;gt;Station: 위성 downlink Station-&amp;gt;&amp;gt;Backbone: (L3) Backbone-&amp;gt;&amp;gt;Game: 접속 시도 → 차단 ❌ 기내 Wi-Fi는 Starlink 위성을 거치고 CloudFlare Warp를 쓰거나하면 미국이나 일본 지상국을 통해 나오다 보니, 게임 서버 입장에서는 해외 접속이라고 끊어버린다.</description>
    </item>
    
    <item>
      <title>다 쓴 git worktree 간편하게 제거하기</title>
      <link>https://rein.kr/posts/2025-05-06-git-worktree-gone/</link>
      <pubDate>Tue, 06 May 2025 10:50:09 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2025-05-06-git-worktree-gone/</guid>
      <description>git gone을 써서 merge된 branch를 제거하고 있는 것처럼, 더 쓰지 않을 worktree를 제거할 간편하게 제거할 방법이 없을까 하다가 간단한 도구가 없어서, &amp;ldquo;없으니 내가 짠다&amp;rdquo; 모드로 짧은 스크립트를 작성했다.
내가 쓰는 git gone 의 원본이 된게 eed3si9n의 쉘 스크립트인데, 여기서 remote에서 없어진 branch를 어떻게 감지하고 처리하는지 &amp;ndash; origin/.*: gone] 을 정규표현식으로 찾음 &amp;ndash; 따라해서 스크립트 작성했다.
이 스크립트를 활용해서 git-worktree-gone 을 하면 remote에서 없어진 branch에 해당하는 worktree를 찾을 수 있고, git-worktree-gone --prune 을 하면 해당 디렉터리를 모두 제거한다.</description>
    </item>
    
    <item>
      <title>git worktree를 활용해서 일하기</title>
      <link>https://rein.kr/posts/2025-05-04-work-with-git-worktree/</link>
      <pubDate>Sun, 04 May 2025 21:47:39 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2025-05-04-work-with-git-worktree/</guid>
      <description>지난 몇 달(6? 12?) 사이의 프로그래밍 작업은 아래와 같은 식으로 주로 진행했다.
새로운 작업에 대해서 git worktree 로 작업 공간을 준비한다. git worktree add -b feature-foo-1 ../feature-foo-1 origin/main 새 작업 공간에서 작업을 수행한다.1 해당 작업 공간은 feature-foo-1 branch 에 해당하고, 여기서 필요한 수정/테스트를 진행한다. 새 작업 공간에서 한 작업을 mainline에 반영한다. 1에서 만든 작업 공간을 제거한다: git worktree remove --force ../feature-foo-12 이 작업 방식이 꽤 잘 맞았는데,
git worktree list 로 동시에 진행하고 있는 작업을 바로 알 수 있다.</description>
    </item>
    
    <item>
      <title>TIL: TLS 인증서 만료 날짜 확인하기</title>
      <link>https://rein.kr/posts/2025-02-12-til-check-certificate-expiration/</link>
      <pubDate>Wed, 12 Feb 2025 22:29:05 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2025-02-12-til-check-certificate-expiration/</guid>
      <description>지난 수 년간 TLS 인증서를 발급하는데 사용해온 Let&amp;rsquo;s Encrypt에서, 6월부터 인증서 만료 안내 이메일을 더 이상 보내지 않을 거라고 한다.1 해당 글에서 안내하는 것처럼 Red Sift 쪽에 만료 안내 설정을 걸긴했는데, 생각만큼 편해 보이지 않아서 명령행에서 할 방법을 찾아봤다. 아래와 같이 했고 잘 된다.
# On macOS date -jf &amp;#39;%b %d %H:%M:%S %Y %z&amp;#39; $(curl -Ivk https://prgmr.dev 2&amp;gt;&amp;amp;1 \ | grep &amp;#39;expire &amp;#39; \ | cut -d: -f2- \ | gsed -e &amp;#39;s/^ *//&amp;#39; -e &amp;#39;s/ GMT/ +0000/&amp;#39;) Wed May 7 16:41:35 KST 2025 macOS라서 date 명령 인자를 주렁주렁 주고, sed 대신 gsed를 써야하는게 불편하긴 하지만 이 정도면 만족.</description>
    </item>
    
    <item>
      <title>샵메일 그 이후 (2025)</title>
      <link>https://rein.kr/posts/2025-02-02-%EC%83%B5%EB%A9%94%EC%9D%BC-%EA%B7%B8-%EC%9D%B4%ED%9B%84/</link>
      <pubDate>Sun, 02 Feb 2025 19:26:50 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2025-02-02-%EC%83%B5%EB%A9%94%EC%9D%BC-%EA%B7%B8-%EC%9D%B4%ED%9B%84/</guid>
      <description>Bsky에서 미 NTSB가 이메일 대신 (구)트위터에서만 최근의 두 항공 사건 관련된 보도를 한다는 얘기가1가 나왔고 관련해서, &amp;ldquo;샵메일로 공식 채널을 민영화하려는 것과 비슷하다&amp;quot;는 의견을 쓰다가, 샵메일이 어떻게 되었나 궁금해져서 정리해봤다.
2014년에 내가 아직 예비군 훈련을 가야하던 시절에 통지서를 샵메일로 보내려고 해서 굉장히 싫어했었던 흔적이 있어서 해당 시기 근처부터 이전 기사들을 검색해서 정리했다.
3줄 요약 예측 수요가 과대했고, 이에 크게 못 미침 일부 공공기관 등에서 썼으나 수요가 없어서 정리 공인전자문서중계자의 등장으로 대체 사용량 예측치 대비 실사용량 더불어민주당 홍정민 의원(전; 21대 경기 고양시병) 자료2를 재정리해서 쓰면 아래와 같다.</description>
    </item>
    
    <item>
      <title>TIL: email 테스트하기</title>
      <link>https://rein.kr/posts/2025-01-01-til-email-testing/</link>
      <pubDate>Wed, 01 Jan 2025 19:04:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2025-01-01-til-email-testing/</guid>
      <description>최근에 가계부 자동화 한다고 용쓰는 중인데, 그러다보니 이메일로 온 결제 내역을 테스트할 일이 생겼다. 네이버 페이 결제를 하면 내역을 이메일로 받을 수 있는데, 해당 메일을 받으면 내가 만든 API에 쏴주는 iOS 자동화1를 만드는 게 그것. 이걸 보내는 부분이 내 기대처럼 동작 안해서, 그리고 이메일 내용을 뽑아내는 부분이 블랙박스라 결국 수동으로 테스트하게 되었다. 그렇다고 테스트할 때 마다 뭘 살 수는 없고, 이미 받은 메일을 다시 보낼 방법이 없을까 찾게 되었다.
원본 메일 추출하기 네이버 페이 결제 내역을 Gmail로 받고 있어서, 이건 &amp;ldquo;원본 보기&amp;rdquo; 빠른 메뉴로 확인할 수 있다.</description>
    </item>
    
    <item>
      <title>새 키보드: Realforce RC1</title>
      <link>https://rein.kr/posts/2024-12-21-realforce-rc1/</link>
      <pubDate>Sat, 21 Dec 2024 15:37:49 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-12-21-realforce-rc1/</guid>
      <description>2007년 쯤 부터 Realforce 101키를 쓰고 있었는데, 아마 쓰기 시작하고 맘에 들어서 바로 하나 더 샀던 것으로 기억. 그 이후에도 생일 선물로 87키 (저소음, 차등)을 사고, 그 이후에 87키 (차등, 흰색)을 중고로 넘겨받아서 쓰고 있다. 101키에서 87키로 넘어간건 어깨가 아파서였는데, 마우스 쓰는 쪽 손/어깨 선이 덜 벌어져야 덜 아프더라고. 비슷한 이유로 더 좁은 키보드가 있었으면 좋겠다고 생각해서 HHKB도 시도해봤지만, function키가 있는 줄이 없어서 Fn + &amp;hellip;로 입력하는게 불편해서 적응하지 못했다.</description>
    </item>
    
    <item>
      <title>새 트랙볼: Kensington Expert Mouse</title>
      <link>https://rein.kr/posts/2024-11-09-kensington-expert-mouse-trackball/</link>
      <pubDate>Sat, 09 Nov 2024 13:21:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-11-09-kensington-expert-mouse-trackball/</guid>
      <description>이전 마우스 글에 이어서.
두 달 전에 구입한 Slimblade Pro를 쓰고 있는데, 그 이후로 비슷한 형식의 트랙볼을 하나 더 살지말지는 고민하고 있었는다. 지난 수요일의 미 대선 결과 보고 우울한 마음에 새 트랙볼을 주문했다 &amp;ndash; 이날 저녁엔 양념 치킨을 제로 아닌 일반 콜라랑 같이 먹었다. 🤬
여하간 이게 도착해서 두 개 나란히 놓고 써봤다. 왼쪽이 새로 받은 Kensington Expert Mouse, 오른쪽이 두 달 째 쓰고 있는 Slimblade Pro. 두 트랙볼 모두 큰 공을 써서 엄지가 아니라 다른 긴 손가락 네 개를 모두 쓸 수 있고, 작은 트랙볼보다 좀 더 조작도 잘 되는 느낌도 여전하다.</description>
    </item>
    
    <item>
      <title>뱅크샐러드 가계부 재시도</title>
      <link>https://rein.kr/posts/2024-09-30-bank-salad-%EC%9E%AC%EC%8B%9C%EB%8F%84/</link>
      <pubDate>Mon, 30 Sep 2024 21:35:17 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-09-30-bank-salad-%EC%9E%AC%EC%8B%9C%EB%8F%84/</guid>
      <description>7월 말에 썼던 것처럼, 새로 가계부를 쓰기 시작했고, 아직까지는 잘 쓰고 있다. 이번 주말엔 아마 처음으로 분기 결산을 한다.
AppStore 추천 금융앱 목록을 보다가 그래도 제일 오래 썼던 가계부인 뱅크샐러드가 보여서 요즘은 어떤가 하고 다시 설치해봤다.
나아진 부분 네이버 페이 처리 네이버 페이를 써본 앱 중에 제일 정확하게 표시해주더라 (네이버 앱 제외). 네이버 머니(실제로 다시 이체할 수 있는 것)와 네이버 포인트로 구분해서 잔액과 사용량을 정리해주는데, 예를 들면 아래와 같다.
네이버 페이를 간편 결제 수단 중 제일 빈번하게 쓰고 있는데, 머니랑 포인트를 구분해서 입력하는건 도저희 여력이 안되어서 하나로 뭉뚱그려서 입력하고 있는데, 뱅샐은 이걸 잘 구분해서 보여준다.</description>
    </item>
    
    <item>
      <title>마우스, 마우스, 더 많은 마우스</title>
      <link>https://rein.kr/posts/2024-09-28-mouse-mouse-mouse/</link>
      <pubDate>Sat, 28 Sep 2024 22:42:44 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-09-28-mouse-mouse-mouse/</guid>
      <description>사회인이 되고나서 지금까지 사본적 있는 마우스 혹은 유사(?) 포인팅 장치가 대략 아래만큼인 것 같다.
Microsoft Wireless Laser 6000 Natural Mouse (2007): ★★★★★ - 아마 내가 써본 모든 마우스 중에서 가장 사랑하는 마우스. 내 손에 제일 잘맞고, 손목 안아프고, 각도가 아주 적당해서 문명부터 WoW랑 Quake 3, Unreal Tournament 2 까지 두루두루 플레이했다. Microsoft Touch Mouse (2012) ★★ - 컨셉은 재밌었지만, 마우스 버튼 클릭이 힘들고 이건 아마 표면이 손에 잘 안붙는 모양새라. 🤷‍♂️ Microsoft Arc Touch Mouse (2013) ☆ - 스크롤 휠의 햅틱 피드백은 저 시점에선 매우 신선한 기능.</description>
    </item>
    
    <item>
      <title>TIL: ImageMagick으로 (임시) 텍스트 로고 만들기</title>
      <link>https://rein.kr/posts/2024-09-28-text-logo-with-image-magick/</link>
      <pubDate>Sat, 28 Sep 2024 18:00:22 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-09-28-text-logo-with-image-magick/</guid>
      <description>외부 API 연동을 할 일이 생겼는데, 연동 요구 사항 중에 &amp;ldquo;로고 이미지&amp;quot;가 있더라. 이건 아직 준비된게 아니라서 글자만 만든 로고를 급조해서 넘어갔다. ImageMagick text display라는 블로그 글만 읽고 아주 간단한 로고를 만들었다. 해당 글에선 다양한 테크닉을 다루고 있지만, 텍스트를 이미지로 만드는 기초적인 플래그만 가져다가 썼다.1
magick -size 480x240 \ -font Apple-SD-Gothic-Neo-Bold \ -gravity center \ label:&amp;#39;한글 로고\nApple SD Gothic&amp;#39; \ logo-apple-sd-gothic-neo.png 이런 로고가 나온다.
사용 가능한 폰트 목록 확인 magick -list font \ | grep &amp;#39;family:&amp;#39; \ | cut -d: -f2 | sort \ | uniq 0xProto Apple SD Gothic Neo Arial Helvetica .</description>
    </item>
    
    <item>
      <title>TIL: git-gone</title>
      <link>https://rein.kr/posts/2024-09-27-til-git-gone/</link>
      <pubDate>Fri, 27 Sep 2024 22:55:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-09-27-til-git-gone/</guid>
      <description>10년쯤 전에 gerrit을 한창 쓰던 때에 더 필요치 않은 local branch 지우는게 불편하다고 글을 썼었다.
지금 일하는 회사에서는 GitHub PR 기반으로 작업하고 있어서, 이 문제가 좀 더 쉽게 풀 수 있는데, git-gone 이란 CLI 도구를 쓸 수 있다.
# 더 이상 upstream이 없는 (있었다가 merge하거나 닫아서 없어진) branch 확인 $ git gone list branch-foo branch-bar # 이에 해당하는 branch들 제거; 만약 다른 worktree 등에서 참조 중이면 지우지 않는다. $ git gone prune Deleted branch-foo (restore with `git checkout -b branch-foo &amp;lt;commit hash&amp;gt;`) Skipped deleting branch-bar due to Error { code -1, klass: 4, message: &amp;#34;.</description>
    </item>
    
    <item>
      <title>블로그 새 글 Bluesky로 보내기</title>
      <link>https://rein.kr/posts/2024-09-22-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%83%88-%EA%B8%80-bluesky%EB%A1%9C-%EB%B3%B4%EB%82%B4%EA%B8%B0/</link>
      <pubDate>Sun, 22 Sep 2024 20:16:56 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-09-22-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%83%88-%EA%B8%80-bluesky%EB%A1%9C-%EB%B3%B4%EB%82%B4%EA%B8%B0/</guid>
      <description>WordPress로 블로그를 운영하던 시절에는, WP에 포함되어있는 Jetpack 기능으로 새 글을 자동으로 twitter로 보내게 했었다.1 Hugo 기반으로도 슬슬 글을 몇 개 쓰고나니 더 간단하게 공유할 수 없을까 싶어서 방법을 찾아봤다.
mattn/bsky CLI에서 글만 올릴 수 있으면 되겠다 싶어서 찾아보니 bsky가 이미 잘 만들어져있더라. 그런데 -q 로 블로그 글을 임베드할 수 있나 싶어서 보는데 안되더라. 오늘 코로나에서 좀 회복되어가는 김에 코드를 들여다보니, URL이 들어있으면 자동으로 embeded card를 만들어주고, URL은 그대로 놔두더라. (관련 코드)</description>
    </item>
    
    <item>
      <title>TIL: delta를 git pager로 쓰기</title>
      <link>https://rein.kr/posts/2024-09-21-til-delta%EB%A5%BC-git-pager%EB%A1%9C-%EC%93%B0%EA%B8%B0/</link>
      <pubDate>Sat, 21 Sep 2024 19:23:49 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-09-21-til-delta%EB%A5%BC-git-pager%EB%A1%9C-%EC%93%B0%EA%B8%B0/</guid>
      <description>블로글 고치다 보니 diff가 기대한 대로 안나오고 길게 나오길레 뭐가 문젤까 잠시 고민하다보니 이 랩탑에서 별다른 pager를 쓰지 않고 있다는걸 깨달았다.
위 diff 결과에서 다른 부분은 문장 맨 마지막의 ((오른쪽 모니터에... 부분이 [^1] 로 바뀐 것인데, 이걸 제대로 단어 diff로 판별하지 못했다.
그래서 delta를 설치하고, ~/.gitconfig 를 고쳐줬다. 고칠 부분은 delta 저장소의 .gitconfig 예시를 따라하면 된다.
그런 뒤에 다시 diff를 보니 기대한 대로 나오더라. 배경색도 diff스럽게 바뀌는데 이것도 delta가 수정하는 것.</description>
    </item>
    
    <item>
      <title>hugo-paper에 tag cloud 추가하기</title>
      <link>https://rein.kr/posts/2024-09-15-hugo-paper-theme-tag-cloud/</link>
      <pubDate>Sun, 15 Sep 2024 21:32:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-09-15-hugo-paper-theme-tag-cloud/</guid>
      <description>Blog 이전하기 (2023)에서 썼던 것처럼 hugo로 블로그를 옮기긴했는데, 내가 원하는 기능을 모두 만족하는 theme이 없더라.
Light theme 지원 - 이젠 내가 어두운 화면으로 글 읽기가 힘들다. Syntax highlight을 사용 중인 Solarized 를 쓸 수 있을 것. Tag 및 category 지원. Dark theme 지원 (되면 좋고&amp;hellip;) 생각 외로 hugo를 쓰는 사용례가 많은지, 단순 개인 블로그 아닌 용도의 theme도 많고, 저걸 다 지원하는 경우가 없더라. 처음 옮겼을 때는 Paper로 시작했는데, tag 페이지가 동작하지 않아서, hugo-paper에 기능을 추가로 올렸다는 hugo-PaperMod로 옮겨갔다.</description>
    </item>
    
    <item>
      <title>TIL: OpenSSL로 SAN 확인하기</title>
      <link>https://rein.kr/posts/2024-09-14-check-san-openssl/</link>
      <pubDate>Sat, 14 Sep 2024 15:22:25 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-09-14-check-san-openssl/</guid>
      <description>Bluesky 핸들을 내가 쓰는 도메인의 서브 도메인인 jinuk.prgmr.dev 를 사용하는데, 저 주소를 입력하면 Bluesky로 자동으로 옮겨지도록 설정해서 쓰고 있다. 이걸 위해서 웹 서버를 따로 돌리는건 아니고, 원래 쓰던 서버에 추가로 subject alternative name (SAN)으로 저 서브 도메인을 추가해서 쓰고 있다.
대강 3개월마다 갱신해야하는 &amp;ldquo;Let&amp;rsquo;s Encrypt&amp;rdquo; 인증서를 쓰고 있는데, 접속하자마자 HTTP 302로 Bksy로 보내버려서 브라우저에서 확인하긴 쉽지 않다. 그래서 이번 기회에 CLI로 확인할 방법을 찾아보니 Stackoverflow 답변이 바로 나와서 잘 썼다.</description>
    </item>
    
    <item>
      <title>macOS Rectangle</title>
      <link>https://rein.kr/posts/2024-08-31-macos-rectangle/</link>
      <pubDate>Sat, 31 Aug 2024 16:34:17 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-08-31-macos-rectangle/</guid>
      <description>dwm 같은 tiling window manager를 쓰고 있는 건 아니지만 작업에 따라선 화면을 적당한 비율로 나눠서 사용하는데, Microsoft Windows의 ⊞ Win+← 같은 기능으론 좀 부족한 감이 없지 않다. 그래서 근 10여년간 내 주 터미널 환경인 macOS에서 이것보다 아주 조금더 나은 단축키로 moom이란 프로그램을 썼었다.
이직한 후에 프로그램 설치하다가 팀 동료 분에게 rectangle이란 비슷한 작업을 해주는 자유/오픈소스 소프트웨어를 소개받아서 그 이후론 쭉 이걸 써왔다. 최근에 평가 기준에 따라서 문서 읽고 리뷰를 쓸 일이 있었는데 이 때 유용하게 쓴 김에 여기서 정리.</description>
    </item>
    
    <item>
      <title>TIL: qpdf로 pdf 파일에 걸린 암호 해제하기</title>
      <link>https://rein.kr/posts/2024-08-18-til-qpdf-decrypt/</link>
      <pubDate>Sun, 18 Aug 2024 21:44:31 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-08-18-til-qpdf-decrypt/</guid>
      <description>금융 기관이나 서비스 업체에서 보내는 메일들에 대해서 가능한 경우엔 항상 &amp;ldquo;암호화없이 전송&amp;quot;을 선택하고 있는데, 걔중에는 그런 옵션을 제공하지 않는 곳이 있다. 대부분의 경우 &amp;ndash; 사실 내가 아는 모든 경우 &amp;ndash; 생년월일(6자리 혹은 8자리)을 암호로 쓰는데 이건 유의미한보안을 제공하지 않기 때문이다.1
예를 들어서 KT에서 보내는 고지서에는 6자리 생년월일로 되어있고, 확인해보면 아래의 Encrypted 항목처럼 암호화 되어있다.
pdfinfo -upw ${생년월일} \ &amp;#39;2024년 7월 KT email 명세서(문서열기암호：주민번호 앞 6자리).pdf&amp;#39; Producer: iText® 5.5.6 ©2000-2015 iText Group NV (KT; licensed version) (KT; licensed version) (KT; licensed version) CreationDate: Thu Jul 11 10:15:35 2024 KST ModDate: Thu Jul 11 10:15:35 2024 KST Custom Metadata: no Metadata Stream: no Tagged: no UserProperties: no Suspects: no Form: none JavaScript: no Pages: 3 Encrypted: yes (print:yes copy:yes change:no addNotes:no algorithm:RC4) Page size: 595 x 842 pts (A4) Page rot: 0 File size: 88281 bytes Optimized: no PDF version: 1.</description>
    </item>
    
    <item>
      <title>TIL: VIM에서 단어 수 쉽게 보기</title>
      <link>https://rein.kr/posts/2024-08-17-til-nvim-wc/</link>
      <pubDate>Sat, 17 Aug 2024 12:37:12 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-08-17-til-nvim-wc/</guid>
      <description>반기 초에 자아 비판(self review)랑 동료 평가(peer review)를 써야하는데, 이번 평가 부터는 단어 수 제한을 빡빡하게 한다고해서 어떻게 하면 편하게 쓸까하던 차에 stack overflow에서 &amp;ldquo;Get live word count for document in vim&amp;rdquo;이란 질문을 찾았고, 이 글에서 채택한 답변을 가져다가 유용하게 썼다.
vim 의 laststatus=2 인 상태에서 (아니라면 :set laststatus=2) :set statusline+=%{wordcount().words}\ words 설정 이러면 단어 수를 바로바로 볼 수 있어서 저때랑 저 이후에도 유용하게 썼다.</description>
    </item>
    
    <item>
      <title>후잉 사용 시작</title>
      <link>https://rein.kr/posts/2024-07-30-whooing/</link>
      <pubDate>Tue, 30 Jul 2024 18:34:53 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-07-30-whooing/</guid>
      <description>지금까진 가계부를 안쓰고 뱅크샐러드 앱이나 네이버 페이 앱의 사용 내역 기능을 썼다. 그리고 반기에 한 번정도 계좌 확인해서 잔고 점검하는 정도만 했다. 그런데 이게 더 이상 내 생각대로 동작하지 않기 시작했다. 2년 정도 전부터 아내가 가족 카드를 쓰기 시작했는데, 여기서 쓴 내역은 뱅샐 앱이나 네이버 페이 혹은 다른 오픈 뱅킹 기반 앱들에서 제대로 내역이 나오지 않는다. 그래서 자주 카드 사용된 것 즉시 정산 해버려서 개략적인 사용액만 파악했는데, 이걸로는 &amp;ldquo;이번 분기에 얼마나 외식비를 썼지?</description>
    </item>
    
    <item>
      <title>재택 작업 환경 개선하기</title>
      <link>https://rein.kr/posts/2024-05-19-wfh-setups/</link>
      <pubDate>Mon, 20 May 2024 21:02:03 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2024-05-19-wfh-setups/</guid>
      <description>시력이 점점 나빠지고 있어서 더 큰 모니터를 사고 작업환경을 재정돈했다. 정리하는 김에 근 5년간 사용했던 구성들을 찾아봤다.
이게 5년 전에 이사하고 나서 설정했던 환경인데, 이 때는 24&amp;quot; + 27&amp;quot; 이렇게 썼었다 이 설정으로 좀 쓰다가 코로나 기간에 돌입했던 듯.
코로나 기간 동안 27&amp;quot; 모니터 1개만 쓰는 설정으로 옮겨갔다. 저 모니터 (DELL U2718Q) 가장자리가 빛샘이 너무 심해서 교환을 받았던 듯 하다. 그리고나서 2년여를 더 사용.
작년 말쯤부터 시력이 확실히 안좋아져서 더 큰 모니터로 옮기기로 결정.</description>
    </item>
    
    <item>
      <title>Golang 테스트 편하게 하기</title>
      <link>https://rein.kr/posts/2023-10-02-golang-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%8E%B8%ED%95%98%EA%B2%8C-%ED%95%98%EA%B8%B0/</link>
      <pubDate>Mon, 02 Oct 2023 11:20:22 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2023-10-02-golang-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%8E%B8%ED%95%98%EA%B2%8C-%ED%95%98%EA%B8%B0/</guid>
      <description>언제나처럼 테스트 좀 편하게 실행할 방법이 없나 찾다가 gotestsum 이라는 괜찮은 프로젝트를 발견했다. 내가 원하는 것들을 상당 수 갖추고 있더라.
CLI 환경 기반1 테스트 성공/실패를 쉽게 알아 볼 수 있을 것2 Watch 기능- 구현 코드나 테스트를 변경하면 테스트 실행. 가능하다면 바꾼 부분에 영향 받는 것만. 두번째 항목이 조금 부족하긴한데, gotestsum/contrib 에 있는 기능과 macOS terminal-notifier를 같이 쓰면 쓸만하다. VSCode에서 코드를 수정하고 저장하면 watch 모드로 돌고 있던 테스트들을 실행하고, 성공/실패는 알림 메시지로 받는다.</description>
    </item>
    
    <item>
      <title>새 MacBook 설정(2023)</title>
      <link>https://rein.kr/posts/2023-08-27-%EC%83%88-%EB%A7%A5%EB%B6%81-%EC%84%A4%EC%A0%95/</link>
      <pubDate>Sun, 27 Aug 2023 20:11:22 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2023-08-27-%EC%83%88-%EB%A7%A5%EB%B6%81-%EC%84%A4%EC%A0%95/</guid>
      <description>회사 랩탑 이전한 기록을 정리.
MacBook Pro 16″ (intel)을 쓰다가, 지난 달 부터 M2 Pro로 옮길 수 있다고 해서 옮김. 다만 기기에 미리 설치된 소프트웨어가 처리하는게 있어서 기기 간 동기화 기능 없이 이전했다. 이전 과정에서 기존 소프트웨어 설정, 명령어나 웹 방문 기록을 옮기려고 했고, 상당히 의도대로 된 것 같다. 특히 원했던 게 명령어나 웹 서비스 방문 기록들을 최대한 유지하는 것이었다. 이건 자주 쓰는 명령어면 script로 빼놓고 자주 방문하는 주소면 북마크로 남겨놓지만, 그렇지 않은건 history에만 남아있는거라 이 부분을 놓치지 않으려고 했다.</description>
    </item>
    
    <item>
      <title>Blog 이전하기 (2023)</title>
      <link>https://rein.kr/posts/blog-migration-2023/</link>
      <pubDate>Wed, 16 Aug 2023 22:06:32 +0900</pubDate>
      
      <guid>https://rein.kr/posts/blog-migration-2023/</guid>
      <description>10년도 더 전에 static site generator를 쓰는 것으로 이전해보겠다했었는데, 정작 이제야 실행에 옮겼다. 모든 걸 다 옮긴 것은 아니고 아래처럼 옮겼다.
2011년 및 그 이후의 (거의 모든) 글들. 그 이전 글들은 draft상태로 저장만 해놨는데 언제 살릴진 모르겠다. 페이지로 작성한 글들. 아직 공개하지 않았고 차차 살릴 생각. 이전 permalink. /blog/archives/{numeric-post-id} 형식의 링크는 모두 유지. 이걸로 Google 검색은 가능한 범위 내에서 안깨보려고 노력했다. 댓글 포함한 일정 부분은 포기. DB 백업이 있으니 되살릴 순 있지만 당장은 계획이 없다.</description>
    </item>
    
    <item>
      <title>2022년 돌아보기</title>
      <link>https://rein.kr/posts/2022-12-31-2022%EB%85%84-%EB%8F%8C%EC%95%84%EB%B3%B4%EA%B8%B0/</link>
      <pubDate>Sat, 31 Dec 2022 21:49:11 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2022-12-31-2022%EB%85%84-%EB%8F%8C%EC%95%84%EB%B3%B4%EA%B8%B0/</guid>
      <description>2021년에는 창업하고 8년간 다녔던 회사를 떠나고, 아예 다른 업게인 스타트업 회사에 들어갔다. 새 회사에서 받은 느낌들을 여기 정리해보겠다. (입사 첫 해에 반 년 다닌 걸로는 내가 새로운 환경에 신나서 쓰는 것과 구분이 안될것 같아서 올해 몰아서 쓴다) 아래는 떠오르는대로 쭉 써본 내용.
게임 회사랑 게임 관련된 것을 만드는 회사를 다니다가 웹 서비스 만드는 회사로 가면서 걱정은 좀 했는데, 생각보다 바뀌는 것은 없더라. 프로세스나 VM이 죽었을 때 신경을 훨씬 덜 써도 되는 정도의 차이가 있고.</description>
    </item>
    
    <item>
      <title>macOS에서 음원 파일 노동요 모드로 재생하기</title>
      <link>https://rein.kr/posts/2022-06-12-macos%EC%97%90%EC%84%9C-%EC%9D%8C%EC%9B%90-%ED%8C%8C%EC%9D%BC-%EB%85%B8%EB%8F%99%EC%9A%94-%EB%AA%A8%EB%93%9C%EB%A1%9C-%EC%9E%AC%EC%83%9D%ED%95%98%EA%B8%B0/</link>
      <pubDate>Sun, 12 Jun 2022 22:53:53 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2022-06-12-macos%EC%97%90%EC%84%9C-%EC%9D%8C%EC%9B%90-%ED%8C%8C%EC%9D%BC-%EB%85%B8%EB%8F%99%EC%9A%94-%EB%AA%A8%EB%93%9C%EB%A1%9C-%EC%9E%AC%EC%83%9D%ED%95%98%EA%B8%B0/</guid>
      <description>집중하기 어려울 때 후크송(?)이나 전파계(?) 음원을 빠른 템포로 반복 재생하면 좀 나아서 그런 음원 검색해서 듣곤 했다. 그런데 오늘 macOS의 afplay 명령을 보다가 좋은 옵션을 발견했다. man 페이지엔 별거 없던데 -h 플래그론 쓸모 있는 옵션이 꽤 나오더라.
&amp;gt; afplay -h Audio File Play Version: 2.0 Copyright 2003-2013, Apple Inc. All Rights Reserved. Specify -h (-help) for command options Usage: afplay [option...] audio_file Options: (may appear before or after arguments) {-v | --volume} VOLUME set the volume for playback of the file {-h | --help} print help { --leaks} run leaks analysis {-t | --time} TIME play for TIME seconds {-r | --rate} RATE play at playback rate {-q | --rQuality} QUALITY set the quality used for rate-scaled playback (default is 0 - low quality, 1 - high quality) {-d | --debug} debug print output -r 을 1보다 큰 값을 주면 그만큼 빨리 재생하고, -q 1 을 주면 품질 손실이 심각하진 않더라.</description>
    </item>
    
    <item>
      <title>Vim에서 XML 포맷팅하기</title>
      <link>https://rein.kr/posts/2022-01-26-vim%EC%97%90%EC%84%9C-xml-%ED%8F%AC%EB%A7%B7%ED%8C%85%ED%95%98%EA%B8%B0/</link>
      <pubDate>Wed, 26 Jan 2022 20:49:14 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2022-01-26-vim%EC%97%90%EC%84%9C-xml-%ED%8F%AC%EB%A7%B7%ED%8C%85%ED%95%98%EA%B8%B0/</guid>
      <description>적당히 큰 (100 MiB 초과 1 GiB 이하 정도) XML 파일을 종종 봐야할 일이 생겼다. 그런데 이게 포맷팅이 전혀 안되어있어서 — 사람 읽으라고 만든 파일이 아닌듯 — 불편하다. 이걸 vim으로 전부 블럭 잡고 = 로 포맷팅하니 느려서 쓰기 어려워서 다른 방법을 찾아봤다.
CLI를 찾다가 xmllint 를 발견. 이걸 써서 vim buffer를 수정하니 속도도 빠르고 꽤 쓸만했다. 실제 명령어는 이렇게 줬다:
:%!xmllint --format - </description>
    </item>
    
    <item>
      <title>TIL: ffmpeg으로 비디오 채널 분리하기</title>
      <link>https://rein.kr/posts/2021-12-30-til-ffmpeg%EC%9C%BC%EB%A1%9C-%EB%B9%84%EB%94%94%EC%98%A4-%EC%B1%84%EB%84%90-%EB%B6%84%EB%A6%AC%ED%95%98%EA%B8%B0/</link>
      <pubDate>Thu, 30 Dec 2021 13:49:13 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2021-12-30-til-ffmpeg%EC%9C%BC%EB%A1%9C-%EB%B9%84%EB%94%94%EC%98%A4-%EC%B1%84%EB%84%90-%EB%B6%84%EB%A6%AC%ED%95%98%EA%B8%B0/</guid>
      <description>며칠 전에 고속도로 정체로 서 있다가 뒷차가 추돌하는 일을 당했다. 보험금 청구(?)를 위해서 대시캠 영상을 달라고 해서 그 영상을 가져와보니, 3개 채널로 된 미디어 파일이더라. mediainfo 로 열어보면 아래와 같다.
General Complete name : SomeFileName.avi Format : AVI Format/Info : Audio Video Interleave File size : 49.2 MiB Duration : 20 s 301 ms Overall bit rate : 20.3 Mb/s Video #1 ID : 0 Format : AVC Format/Info : Advanced Video Codec Format profile : High@L4.</description>
    </item>
    
    <item>
      <title>블로그 설정 개편: ECDSA 인증서 체인</title>
      <link>https://rein.kr/posts/2021-06-03-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%84%A4%EC%A0%95-%EA%B0%9C%ED%8E%B8-ecdsa-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%B2%B4%EC%9D%B8/</link>
      <pubDate>Thu, 03 Jun 2021 11:27:06 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2021-06-03-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%84%A4%EC%A0%95-%EA%B0%9C%ED%8E%B8-ecdsa-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%B2%B4%EC%9D%B8/</guid>
      <description>지난 달에 이어서 블로그 설정 개편 계속.
지난 5월엔 HTTP2 / TLS 1.3 / ECDSA 인증서 발급을 했다 이 시점에는 웹 서버가 사용하는 공개키는 ECDSA 키지만, 이걸 서명하는 중간 단계 인증서는 Let’s Encrypt의 RSA 인증서(R3)를 썼다. 이제 그걸 ECDSA 인증서로 교체하는 작업을 진행했다.
지난 달에 Let’s Encrypt production ECDSA allowlist 에 등록 신청을 했다. 시점은 대략 블로그 글을 작성했던 2021-05-14 즈음. 그리고 이거에 대한 완료 메일을 오늘 아침에 받아서 적용해 봤다.</description>
    </item>
    
    <item>
      <title>구직 과정 기록(3): 선택의 시간</title>
      <link>https://rein.kr/posts/2021-05-27-%EA%B5%AC%EC%A7%81-%EA%B3%BC%EC%A0%95-%EA%B8%B0%EB%A1%9D3-%EC%84%A0%ED%83%9D%EC%9D%98-%EC%8B%9C%EA%B0%84/</link>
      <pubDate>Thu, 27 May 2021 08:32:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2021-05-27-%EA%B5%AC%EC%A7%81-%EA%B3%BC%EC%A0%95-%EA%B8%B0%EB%A1%9D3-%EC%84%A0%ED%83%9D%EC%9D%98-%EC%8B%9C%EA%B0%84/</guid>
      <description>지금이 2010-2011년 사이의 모바일 관련 소프트웨어 서비스가 폭발하던 시기 이후로 다시 찾아온 소프트웨어 개발자의 구인난 시기 같다. 이런 이유에서, 끝까지 진행한 모든 회사에서 오퍼를 받을 수 있었다.
이것에 대해서 몇 가지를 고려해서 개별 선택지를 평가했다. 다만, 내가 평가한 방법은 내 취향의 문제 라고 이해해주면 좋겠다. 그러니 “읽는 분 본인의 선택의 시간”이 왔을 때 유사한 척도가 아닌 적절한 척도를 세워서 평가하시기 바란다.
내가 하고 싶은 일인지 / 같이 일하는 사람들에게 내가 배울 수 있는 게 많을지 연봉 및 기타 옵션(스톡옵션, 복지 혜택).</description>
    </item>
    
    <item>
      <title>코딩 테스트에 대한 생각</title>
      <link>https://rein.kr/posts/2021-05-26-%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%97%90-%EB%8C%80%ED%95%9C-%EC%83%9D%EA%B0%81/</link>
      <pubDate>Wed, 26 May 2021 12:26:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2021-05-26-%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%97%90-%EB%8C%80%ED%95%9C-%EC%83%9D%EA%B0%81/</guid>
      <description>며칠 간 구직 활동 관련한 글을 썼다. 그 중에서 “코딩 테스트”에 대한 부분은 쓰다보니 길어져서 이렇게 별도 글로 쓴다.
나는 코딩 테스트는 당연히 필요하다는 입장이다. 다만, 어떤 방식을 쓸지, 어떤 문제가 더 좋은 문제인지에 대해선 개선할 부분이 있다고 생각한다. 그 생각을 이번 구직 활동 기간 동안의 경험과 함께 써보려고 한다. 크게 세 종류의 코딩 테스트를 경험했다.
온라인 자동화 테스트
온라인 공유 문서를 통한 코딩 테스트 (컨퍼런스 콜 중에 공유 도구 사용)</description>
    </item>
    
    <item>
      <title>구직 과정 기록(2): 단계별 진행</title>
      <link>https://rein.kr/posts/2021-05-26-%EA%B5%AC%EC%A7%81-%EA%B3%BC%EC%A0%95-%EA%B8%B0%EB%A1%9D2-%EB%8B%A8%EA%B3%84%EB%B3%84-%EC%A7%84%ED%96%89/</link>
      <pubDate>Wed, 26 May 2021 08:27:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2021-05-26-%EA%B5%AC%EC%A7%81-%EA%B3%BC%EC%A0%95-%EA%B8%B0%EB%A1%9D2-%EB%8B%A8%EA%B3%84%EB%B3%84-%EC%A7%84%ED%96%89/</guid>
      <description>구직하는 동안 총 11개 회사에 지원하거나 문의 메일을 보냈다 — 문의 메일에 3개월 째 답장이 없는 카카오는 (당연히) 진행을 못 했다. 라인플러스는 입사 원서 쓰고나서 코딩 테스트 이메일 받기까지 4주+ 걸리더라. 이거 통과하고 나서 3주일 넘게 메일이 없어서 문의 메일 보내니 그제야 면접 일정 잡자고 해서 중간에 포기. 실제론 총 9개의 회사에 지원하거나 / 여기서 일해보면 어떨지를 얘기하는 정도까지 진행했다.
게임업계에 대한 회의와 동종업계 취업 제한 때문에 이 중 3곳은 초기 단계까지만 얘기하고 더 진행하지 않았다.</description>
    </item>
    
    <item>
      <title>구직 과정 기록(1): 준비하기</title>
      <link>https://rein.kr/posts/2021-05-25-%EA%B5%AC%EC%A7%81-%EA%B3%BC%EC%A0%95-%EA%B8%B0%EB%A1%9D-%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0/</link>
      <pubDate>Tue, 25 May 2021 08:27:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2021-05-25-%EA%B5%AC%EC%A7%81-%EA%B3%BC%EC%A0%95-%EA%B8%B0%EB%A1%9D-%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0/</guid>
      <description>앞선 글 “회사를 떠나며”에 이어서. 이직 결심을 굳히고는 이에 대한 준비를 시작했다. 마지막으로 이직을 한 게 2012년의 일이라 준비할 게 많더라.
먼저 이력서를 준비했다. 예전에 투자 받는 준비할 때 마지막으로 수정한 거 끄집어내서 이걸 어디 넣으려니 적당한 포맷이 없더라. 최근 일했던 방식대로 마크다운 문서 하나 만들면 좋겠지만 적어도 아직은 그렇게 하는 사람이 흔할 것 같지 않아서 포기. 그래서 야크 털 깎기의 전통에 충실하게 이력서 작성하기 위한 LaTeX 환경 찾고, 적당한 템플릿 찾는 데 몇 시간 쓰고 그랬다.</description>
    </item>
    
    <item>
      <title>회사를 떠나며</title>
      <link>https://rein.kr/posts/2021-05-24-%ED%9A%8C%EC%82%AC%EB%A5%BC-%EB%96%A0%EB%82%98%EB%A9%B0/</link>
      <pubDate>Mon, 24 May 2021 08:26:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2021-05-24-%ED%9A%8C%EC%82%AC%EB%A5%BC-%EB%96%A0%EB%82%98%EB%A9%B0/</guid>
      <description>2013년 5월 1일에 회사를 시작했었다.(준비 과정까지 세면 그 몇 주 전부터) 그 때 시작한 일들을 지난 달 말일(2021-04-30)로 마무리했다. 벌써 만으로도 8년이 지난 셈. 지금은 새 출근 일정을 확정하고, 집에서 쉬면서 아이들 수업하는 거 지켜보거나 근처 카페에서 커피 사오는 일상을 보내고 있다. 14년 만에 돌아온 방학도 겨우 2주일 남았지만. 이직 생각이 없었던 오래 전에 “다음 일을 하기 전엔 여행도 가고 쉬겠다”고 계획했던 것은 COVID19 때문에 다 포기.
사회 생활을 처음 시작하며 다녔던 회사나 지금 회사나 – 중간에 다녔던 회사에서 스핀오프한 모양새라 구성원이 비슷해서 그 회사 내용은 생략 – 팀이 싫어서 떠나는건 아니라는 점에서 참 감사하게 생각한다.</description>
    </item>
    
    <item>
      <title>근로소득과 세금 &#43; 준조세에 대한 생각</title>
      <link>https://rein.kr/posts/2021-05-20-%EA%B7%BC%EB%A1%9C%EC%86%8C%EB%93%9D%EA%B3%BC-%EC%84%B8%EA%B8%88-%EC%A4%80%EC%A1%B0%EC%84%B8%EC%97%90-%EB%8C%80%ED%95%9C-%EC%83%9D%EA%B0%81/</link>
      <pubDate>Thu, 20 May 2021 10:18:20 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2021-05-20-%EA%B7%BC%EB%A1%9C%EC%86%8C%EB%93%9D%EA%B3%BC-%EC%84%B8%EA%B8%88-%EC%A4%80%EC%A1%B0%EC%84%B8%EC%97%90-%EB%8C%80%ED%95%9C-%EC%83%9D%EA%B0%81/</guid>
      <description>지난 며칠간 서류 정리하면서 들었던 생각 정리. 근로소득으로 사는 직장인이 부담하는 세금 및 준조세는 아래와 같다. (불로소득은 여기서 생각하지 않겠음)
근로소득에 대한 국세 및 지방세 국민연금 건강보험 고용보험 연봉 액수와 부양 가족에 따라서 매달 떼가는 액수가 다르며, 각각 별도의 일정(2월의 연말정산이나 4월의 건강보험료 정산)에 따라서 실제 부과액과 매달 가져간 액수의 차이를 바로 잡는다. 이 중에 직접세인 소득세만 누진제를 사용하고 있으며, 상대적으로 낮은 요율(0.8%)인 고용보험만 상한액이 없다. 국민연금은 2021년 기준으로 월급 524만원 혹은 연봉 62xx만원까지만 내는 액수가 증가하고, 그 이상은 동일한 액수(월 226,350원)를 낸다.</description>
    </item>
    
    <item>
      <title>macOS에서 한글 파일/디렉터리 잘 다루기</title>
      <link>https://rein.kr/posts/2021-05-17-macos%EC%97%90%EC%84%9C-%ED%95%9C%EA%B8%80-%ED%8C%8C%EC%9D%BC-%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC-%EC%9E%98-%EB%8B%A4%EB%A3%A8%EA%B8%B0/</link>
      <pubDate>Mon, 17 May 2021 11:08:29 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2021-05-17-macos%EC%97%90%EC%84%9C-%ED%95%9C%EA%B8%80-%ED%8C%8C%EC%9D%BC-%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC-%EC%9E%98-%EB%8B%A4%EB%A3%A8%EA%B8%B0/</guid>
      <description>어쩌다보니 macOS / linux / MS Windows를 모두 사용하고 있는데, macOS만 유니코드(특히 한글) 파일/디렉터리 이름을 다루는 방식이 달라서 괴롭다. 현대 OS는 다들 유니코드를 사용한다. 그런데 개별 OS에서 주로 사용하는 표현 방식이 다르기도 한데, 이 중 macOS가 특히 다른 것.
배경을 좀 더 설명하자면, 유니코드로 동일한 의미의 글자를 표현할 방법이 네 가지가 있고 이를 normalization form 이라고 부른다.
NFD: 정준 분해 형식. 예를 들어 &amp;ldquo;한글&amp;quot;이라는 단어는 &amp;ldquo;ㅎㅏㄴㄱㅡㄹ&amp;rdquo; 처럼 저장한다. 총 6개의 코드 포인트란 의미.</description>
    </item>
    
    <item>
      <title>블로그 설정 개편 (2021-05)</title>
      <link>https://rein.kr/posts/2021-05-14-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%84%A4%EC%A0%95-%EA%B0%9C%ED%8E%B8-2021-05/</link>
      <pubDate>Fri, 14 May 2021 10:19:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2021-05-14-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%84%A4%EC%A0%95-%EA%B0%9C%ED%8E%B8-2021-05/</guid>
      <description>퇴사하고 시간이 남은 김에 예전부터 하려고 하던 것 해보는 중. 그래서 여태껏 해보고 싶었던 (호환성이 좀 부족한) 것들을 적용해봤다.
우선 HTTP2 적용. 사용 중인 nginx 설정에 http2를 넣어준 것으로 해결.
server { listen 443 ssl http2 default_server; # ... } 그리고 TLS 1.3 적용을 위해서 모질라의 TLS 설정 생성기의 intermediate 설정을 골라서 적용했다. 최신(modern)으로 했더니 TLS 1.3만 사용하는 방식으로 동작하고, 이것 때문에 WordPress의 JetPack 연동 기능이 동작을 안해서 호환성 모드로 갔다.</description>
    </item>
    
    <item>
      <title>Pytest 테스트 결과 좀 더 편하게 보기</title>
      <link>https://rein.kr/posts/2020-12-28-pytest-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EA%B2%B0%EA%B3%BC-%EC%A2%80-%EB%8D%94-%ED%8E%B8%ED%95%98%EA%B2%8C-%EB%B3%B4%EA%B8%B0/</link>
      <pubDate>Mon, 28 Dec 2020 09:19:27 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2020-12-28-pytest-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EA%B2%B0%EA%B3%BC-%EC%A2%80-%EB%8D%94-%ED%8E%B8%ED%95%98%EA%B2%8C-%EB%B3%B4%EA%B8%B0/</guid>
      <description>내가 하는 일 중의 상당 시간은 C++로 소프트웨어를 만드는 일이다. 이중 프로세스 하나의 범위를 벗어난 부분은 C++에서 mocking하거나 혹은 좀 더 넓은 의미로 test-double 을 만드는게 단순하지 않은 것들이 있다. (그리고 C++에서 이런 mock을 작성하는게 그렇게 생산성이 높은 것 같지도 않다)
그래서 잘 만들어진 python 테스트 프레임웍인 pytest를 가져다 쓰기로 했다. 그리고 pytest에서 아래와 같은 식으로 테스트를 한다.
테스트 환경 (DB, redis, &amp;hellip;) 초기화; test-suite 혹은 pytest fixture기준으로 모듈마다 실행 C++로 작성한 프로세스들을 구동 (이것도 모듈마다) 테스트 케이스 실행; 그리고 이 때 일부 외부 프로세스는 python으로 흉내낸다.</description>
    </item>
    
    <item>
      <title>gflags (C&#43;&#43;) uint32 지원 &#43; ubuntu 16.04</title>
      <link>https://rein.kr/posts/2020-12-08-gflags-c-uint32-%EC%A7%80%EC%9B%90-ubuntu-16-04/</link>
      <pubDate>Tue, 08 Dec 2020 17:40:39 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2020-12-08-gflags-c-uint32-%EC%A7%80%EC%9B%90-ubuntu-16-04/</guid>
      <description>Ubuntu 18.04 (bionic) 에서 작업한 부분이 CI 도구에서 실패하더라. 원인을 추적해보니 ubuntu 16.04에서 빌드가 실패. (16.04, 18.04, … 등을 지원하는 프로그램에 대한 CI 설정이었음)
그래서 찾아보니 DECLARE_uint32 가 ubuntu 16.04에 없는 매크로여서 생긴 문제. 그래서 찾아봤다. uint32 플래그 타입 지원 추가 커밋 2016년 4월 6일자 커밋. _2016. 04에 릴리즈한 ubuntu 16.04_에 포함되어있을리가 없는 기능이었다. (Feature freeze 는 2016-02-18이었음)</description>
    </item>
    
    <item>
      <title>동영상 파일 미리보기 이미지로 쪼개기</title>
      <link>https://rein.kr/posts/2020-10-26-%EB%8F%99%EC%98%81%EC%83%81-%ED%8C%8C%EC%9D%BC-%EB%AF%B8%EB%A6%AC%EB%B3%B4%EA%B8%B0-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A1%9C-%EC%AA%BC%EA%B0%9C%EA%B8%B0/</link>
      <pubDate>Mon, 26 Oct 2020 19:16:42 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2020-10-26-%EB%8F%99%EC%98%81%EC%83%81-%ED%8C%8C%EC%9D%BC-%EB%AF%B8%EB%A6%AC%EB%B3%B4%EA%B8%B0-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A1%9C-%EC%AA%BC%EA%B0%9C%EA%B8%B0/</guid>
      <description>외부 전시회에 나갈 때 종종 고객사 동영상을 재생한다(만드는게 게임 서버 백엔드 도구들이라 뭔가 시선을 끌게 없으니 이런걸 재생함). 그런데 이런걸 틀어놓으면 &amp;ldquo;이 동영상이 무슨 게임이냐&amp;quot;라는 질문을 종종 받는다.
그래서 동영상을 수 초 간격으로 (동영상 길이에 따라서 3 - 5 초 정도마다) 이미지로 저장해서 화면을 보고 이름을 알려줄 수 있게 저장해봤다.
동영상을 아주 거칠게 단순화 하면 (이전 프레임들을 이용해서 만들어낼 수 있는) 이미지를 넣어놓은 데이터 파일이다. 실제로 각 이미지를 전부 따로따로 들고있는 건 아니지만, 중간의 key frame부터 시작하면 그 이후의 변경 분을 올려서 중간 이미지들을 재구성 할 수 있다.</description>
    </item>
    
    <item>
      <title>VS Code 로 넘어가기 (2019)</title>
      <link>https://rein.kr/posts/2019-09-09-vscode-%EB%A1%9C-%EB%84%98%EC%96%B4%EA%B0%80%EA%B8%B0/</link>
      <pubDate>Mon, 09 Sep 2019 07:13:05 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2019-09-09-vscode-%EB%A1%9C-%EB%84%98%EC%96%B4%EA%B0%80%EA%B8%B0/</guid>
      <description>올해 소소한 목표로 vim / neovim 아닌 에디터를 GUI 쓸 때 기본 에디터로 써보자로 하고 vscode (for mac, linux) 를 써보는 중.
대략 위 내용을 작년 1월에 얘기했었는데, 대략 올해 늦봄에야 vim이 아닌 주 개발 환경을 구성. 변명을 하자면 작년엔 출장이 잦았고 그러다보니 로컬에서 GUI로 VSCode를 쓰는게 어려웠음. 그러다 늦봄 (5월쯤) VSCode Insider Preview와 원격 개발 확장 기능 쓰는 걸로 이전.
이전까지 주로 사용한 것은 SSH 위에서 vim/neovim 를 썼고 이걸 대체할 non-VIM환경을 시도해봤는데 — 로컬 CLion / VSCode 혹은 몇가지 원격 환경을 시도 — 항상 뭔가 맘에 안드는게 있더라.</description>
    </item>
    
    <item>
      <title>이사 &#43; 네트워크 설정하기</title>
      <link>https://rein.kr/posts/2019-07-06-%EC%9D%B4%EC%82%AC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/</link>
      <pubDate>Sat, 06 Jul 2019 23:16:27 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2019-07-06-%EC%9D%B4%EC%82%AC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/</guid>
      <description>지난 달 초에 (또) 이사. 네트워크 새로 구성한 내용 정리.
AP와 작업실 허브의 분리 여러 개의 AP 눈에 보이는 선 최소화 대략 이런 목표.
우선 유/무선 분리. 이번에 실행에 옮기진 못했지만 vlan 쪼개서 별도 게스트 네트워크 구성하려고 함. 그리고 AP 보안 패치 끊겨도 편하게 바꾸려고. 이전 집이나 지금 집이나 벽이 좀 두꺼워서 벽 두 개 지나면 신호 감쇄가 너무 심하다. 안방과 서재는 괜찮은데 애들 방에서 잘 안잡힘. 그러니 그냥 AP 두 개로.</description>
    </item>
    
    <item>
      <title>macOS 에서 외장 모니터 레터박스 문제 해결</title>
      <link>https://rein.kr/posts/2019-01-17-macos-%EC%97%90%EC%84%9C-%EC%99%B8%EC%9E%A5-%EB%AA%A8%EB%8B%88%ED%84%B0-%EB%A0%88%ED%84%B0%EB%B0%95%EC%8A%A4-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0/</link>
      <pubDate>Thu, 17 Jan 2019 23:05:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2019-01-17-macos-%EC%97%90%EC%84%9C-%EC%99%B8%EC%9E%A5-%EB%AA%A8%EB%8B%88%ED%84%B0-%EB%A0%88%ED%84%B0%EB%B0%95%EC%8A%A4-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0/</guid>
      <description>2015년에 나온 맥북을 델 U2713H 에 연결하니 화면 꽉차도록 출력하는게 아니라 주변이 검게 레터박스처럼 나오더라.
모니터 주변부가 화면 출력없이 검게 나온 상태
해상도를 잘못 설정하고 있나 봤는데, 우선 위 사진에서 처럼 정상적인 해상도고 모니터 상태 정보에서도 원하는 해상도 (2560 × 1440 @ 60㎐) 로 나오고 있다.
흔히 생각하는 케이블 문제는 아니고 — 얼마 전에 썼던 글에서 새로 구입한 케이블과 동일한 HDMI 2.0 스펙의 케이블을 구매했다 — 뭐가 문제일까 어리둥절. 혹시나 하는 마음으로 화면을 한 번 90도 돌려봤다.</description>
    </item>
    
    <item>
      <title>TLS 연결 디버깅: Forward Secrecy 재확인하기</title>
      <link>https://rein.kr/posts/2018-12-31-tls-%EC%97%B0%EA%B2%B0-%EB%94%94%EB%B2%84%EA%B9%85-forward-secrecy-%EC%9E%AC%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0/</link>
      <pubDate>Mon, 31 Dec 2018 08:24:06 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2018-12-31-tls-%EC%97%B0%EA%B2%B0-%EB%94%94%EB%B2%84%EA%B9%85-forward-secrecy-%EC%9E%AC%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0/</guid>
      <description>앞선 글과 같이 쓰려고 했던 내용 정리. 글이 길어지고 쓸 시간도 모자라서 쪼개서 옮긴다.
SSL/TLS 연결로 메시지를 주고 받는 서버/클라이언트를 디버깅하는 작업이라 우선 wireshark 를 써서 덤프를 떴다. 아래 내용은 해당 디버깅 세션의 덤프는 아니고, 임의로 비슷한 TLS 설정을 쓰고, 거기서 HTTP GET을 보내고 응답을 받는 과정을 실행해서 해당 덤프를 얻었다. 이 메시지 덤프를 분석해서 “왜 이 메시지를 wireshark 에서 디코딩 할 수 없는지” 그리고 “TLS의 이런 기능 덕분에 우리의 사생활이 더 잘 키져지는지” 를 정리해보겠다.</description>
    </item>
    
    <item>
      <title>TLS 연결 디버깅: 인증서 오류를 찾아서</title>
      <link>https://rein.kr/posts/2018-12-30-tls-%EC%97%B0%EA%B2%B0-%EB%94%94%EB%B2%84%EA%B9%85-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%98%A4%EB%A5%98%EB%A5%BC-%EC%B0%BE%EC%95%84%EC%84%9C/</link>
      <pubDate>Sun, 30 Dec 2018 09:20:59 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2018-12-30-tls-%EC%97%B0%EA%B2%B0-%EB%94%94%EB%B2%84%EA%B9%85-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%98%A4%EB%A5%98%EB%A5%BC-%EC%B0%BE%EC%95%84%EC%84%9C/</guid>
      <description>몇 주 전이 아니라 거의 석달 아니면 넉달 전 일인데, TCP 기반 서비스의 SSL/TLS 를 사용한 연결이 제대로 동작하지 않는 문제를 확인할 일이 생겼다. 문제 자체는 굉장히 단순했다. 나는 TLS 연결 문제를 확인할 때 주로 OpenSSL 의 opeenssl s_client 명령을 이용하는데, 첫 문제는 이 명령어 한 번으로 찾을 수 있었다.
잘못된 TLS 설정을 사용하는 nginx 서버에 openssl s_client -connect 10.0.12.34:443 -servername hub.prgmr.net 명령을 실행하면 아래와 같은 로그를 출력한다. 테스트를 위해서 실제 서버가 아니라 10.</description>
    </item>
    
    <item>
      <title>새 모니터와 맥북 그리고 HDMI 문제</title>
      <link>https://rein.kr/posts/2018-12-29-%EC%83%88-%EB%AA%A8%EB%8B%88%ED%84%B0%EC%99%80-%EB%A7%A5%EB%B6%81-%EA%B7%B8%EB%A6%AC%EA%B3%A0-hdmi-%EB%AC%B8%EC%A0%9C/</link>
      <pubDate>Sat, 29 Dec 2018 22:33:45 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2018-12-29-%EC%83%88-%EB%AA%A8%EB%8B%88%ED%84%B0%EC%99%80-%EB%A7%A5%EB%B6%81-%EA%B7%B8%EB%A6%AC%EA%B3%A0-hdmi-%EB%AC%B8%EC%A0%9C/</guid>
      <description>몇 년 만의 가전 제품 교체 이후의 일.
얼마 전에 집에 사용 중인 모니터 하나를 교체했다. 내 모니터는 아니어서 쓸일이 없었는데, 11월 말 – 12월 초에 독감으로 집에서 일하다가 잠시 이 4k지원 모니터를 맥북에 연결해서 써봄. … 잘 나오더라? 이전에 회사에서 2560 × 1600 모니터 (아마도 Dell U2713HM) 에서 레터박스가 나와서 쓰는걸 포기하고 그 이후에는 Dell 24″ 만 연결해서 사용했는데 이건 왜 문제 없지? 라고 생각. 며칠 후에 애플 홈페이지를 확인해보니 사용 중인 맥북 (2015년 버전) 에서 4K 출력이 가능하다는 것.</description>
    </item>
    
    <item>
      <title>리뷰: 아톰 익스프레스</title>
      <link>https://rein.kr/posts/2018-12-27-%EB%A6%AC%EB%B7%B0-%EC%95%84%ED%86%B0-%EC%9D%B5%EC%8A%A4%ED%94%84%EB%A0%88%EC%8A%A4/</link>
      <pubDate>Thu, 27 Dec 2018 07:49:03 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2018-12-27-%EB%A6%AC%EB%B7%B0-%EC%95%84%ED%86%B0-%EC%9D%B5%EC%8A%A4%ED%94%84%EB%A0%88%EC%8A%A4/</guid>
      <description>알라딘 링크
고대 그리스의 철학자들이 “만물의 가장 작은 단위는 무엇인가” 를 생각한 것에서 시작해서 “이건 단순히 사고 영역이었다” 라는 내용을 다룬다. 그리고 나서 근대 화학에서 실험적으로 유용한 틀로써 원자론을 다루는게 나온다.
플로지스톤이 틀린 이론으로 밝혀지는 과정 전기 화학의 탄생, 그리고 이때 생기는 각 분자들이 원자론으로 설명하기 쉬운 것 화학 반응에서 일정 성분비의 법칙, 기체 부피가 일정 비인 것을 원자론으로 설명할 수 있다는 얘기 그리고 이 틀을 써서 나오게 된 각 원자량을 정밀하게 측정하는 시도들 이 시도들이 합쳐져서 나오게 된 멘델레예프의 주기율표 이런 실험적인 토대 위에서 이론 물리학자들이 생각해낸 변화의 방향성 (엔트로피) 이나 열 기관의 효율성 최대치 (카르노 기관), 그리고 이를 설명하기 위한 (이상) 기체 상태 방적식에 대해서 설명한다.</description>
    </item>
    
    <item>
      <title>소규모 팀으로 멀티플레이어 게임 개발하기</title>
      <link>https://rein.kr/posts/2018-12-26-%EC%86%8C%EA%B7%9C%EB%AA%A8-%ED%8C%80%EC%9C%BC%EB%A1%9C-%EB%A9%80%ED%8B%B0%ED%94%8C%EB%A0%88%EC%9D%B4%EC%96%B4-%EA%B2%8C%EC%9E%84-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0/</link>
      <pubDate>Wed, 26 Dec 2018 09:14:30 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2018-12-26-%EC%86%8C%EA%B7%9C%EB%AA%A8-%ED%8C%80%EC%9C%BC%EB%A1%9C-%EB%A9%80%ED%8B%B0%ED%94%8C%EB%A0%88%EC%9D%B4%EC%96%B4-%EA%B2%8C%EC%9E%84-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0/</guid>
      <description>이번 달 12일에 홍릉에 있는 콘텐츠진흥원 인재캠퍼스에서 발표한 내용.
요약하자면,
팀이 작다면 모두 만드는 건 불가능 =&amp;gt; 최대한 외부에서 가져다 쓰자(아웃소싱) 멀티플레이어 게임을 개발하려면 서버 쪽에 클라이언트 로직을 복제 하고 이를 비교하는 코드가 필요한데, 클라이언트 엔진의 데디케이티드 서버 기능을 쓰면 이 부분은 필요하지 않음 게임 서버 쪽에선 상점, 커뮤니티, 메일함 같은 비지니스 로직과 게임 시작을 위한 매치메이킹에 집중 / 게임 컨텐츠는 데디케이티드 서버 기반 구조에 집중 이런 방법은 단순히 요즘 시작된게 아니라 과거 (25년 전의 DOOM) 부터 시작 된 것.</description>
    </item>
    
    <item>
      <title>M.2 인터페이스 쓰는 SSD 설치하기</title>
      <link>https://rein.kr/posts/2018-07-03-m-2-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EC%93%B0%EB%8A%94-ssd-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/</link>
      <pubDate>Tue, 03 Jul 2018 23:38:14 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2018-07-03-m-2-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EC%93%B0%EB%8A%94-ssd-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/</guid>
      <description>메인보드가 M.2 지원하는지만 보고 샀다가 설치하느라 땀 좀 뺌. 그거에 대한 후기.
메인보드로 Gigabyte H170 Gaming 3 (DDR3버전)을 쓴다. 이전에 펌업하다가 보드 날려먹어서 급하게 업그레이드한다고 DDR4로 못 넘어갔더니 오늘의 삽질에 지대한 공헌을. 새 디스크 — 더 이상 디스크 가 들어있진 않은데 디스크라고 불러도 괜찮은가? — 로 샘숭 EVO 960 (M.2 인터페이스) 구입. 현재 디스크로 SSD x 2 (샘숭 830 PRO, 840 PRO 하나씩) + HDD 하나 연결. (모두 SATA3) 이 상태에서 새로 산 M.</description>
    </item>
    
    <item>
      <title>몇 년 만의 가전 제품 교체</title>
      <link>https://rein.kr/posts/2018-06-09-%EB%AA%87-%EB%85%84-%EB%A7%8C%EC%9D%98-%EA%B0%80%EC%A0%84-%EC%A0%9C%ED%92%88-%EA%B5%90%EC%B2%B4/</link>
      <pubDate>Sat, 09 Jun 2018 22:40:36 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2018-06-09-%EB%AA%87-%EB%85%84-%EB%A7%8C%EC%9D%98-%EA%B0%80%EC%A0%84-%EC%A0%9C%ED%92%88-%EA%B5%90%EC%B2%B4/</guid>
      <description>결혼한지도 이제 거의 10년이라 작년 - 올해 사이에 가전 제품들을 몇몇 교체하게 되었다. 작년에 교체한 건 전부 생활 가전이었지만 올해는 다르다 올해는 (???).
이번 주에는 의도치않게(?) 모니터 중 한 대와 PC용 스피커 교체. 교체한 것에 대한 간단한 리뷰.
우선 집에서 Dell U2408 과 Dell U2410 을 각각 아내와 내가 썼는데, U2408 쪽을 LG 27UD88 로 교체. 교체하면서 느낀 점을 두서 없이 정리하면,
역시 고해상도 모니터를 써야한다. 현 세대 모니터들은 대부분(?) 베젤이 얇고 16:9 이 경우가 많아서, 책상 위 공간 차지하는 부분에선 Dell U2408 랑 거의 비슷함.</description>
    </item>
    
    <item>
      <title>Linux 게임 서버 성능 평가 (eBPF &#43; BCC)</title>
      <link>https://rein.kr/posts/2018-03-29-linux-%EA%B2%8C%EC%9E%84-%EC%84%9C%EB%B2%84-%EC%84%B1%EB%8A%A5-%ED%8F%89%EA%B0%80-ebpf-bcc/</link>
      <pubDate>Thu, 29 Mar 2018 22:24:36 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2018-03-29-linux-%EA%B2%8C%EC%9E%84-%EC%84%9C%EB%B2%84-%EC%84%B1%EB%8A%A5-%ED%8F%89%EA%B0%80-ebpf-bcc/</guid>
      <description>어제 발표에 썼던 슬라이드.
Linux 커널의 내장 트레이싱 기능인 eBPF 와 이를 위한 BCC 툴킷을 써서 동작 중인 프로세스를 분석해서 성능 문제를 찾는 방법을 설명했다. 머지 않은 미래에 안드로이드 성능 측정도 이걸로 할 수 있을 듯하니, 서버 뿐만 아니라 안드로이드 기기에서 개발하는 분들도 한 번 보시라.
eBFP +BCC 는 간단히 요약하면, python (혹은 go, lua) 으로 통계 처리 및 초기화, 몇줄 안되는 C코드로 커널 내부에서 후킹/통계 수집을 하고, 수집할 수 있는 범위가 넓어서 (커널 함수부터 유저 함수까지) 성능 분석 / 디버깅 쪽에 유용한 툴이다.</description>
    </item>
    
    <item>
      <title>iPhone 배터리 교체</title>
      <link>https://rein.kr/posts/2018-03-17-iphone-%EB%B0%B0%ED%84%B0%EB%A6%AC-%EA%B5%90%EC%B2%B4/</link>
      <pubDate>Sat, 17 Mar 2018 09:35:59 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2018-03-17-iphone-%EB%B0%B0%ED%84%B0%EB%A6%AC-%EA%B5%90%EC%B2%B4/</guid>
      <description>지난 설에 양가 방문하고 나니 도저히 이대로는 못 버티겠다 싶어서, 3월 초에 배터리 교체를 받았다. 사용 중인 아이폰 6S는 특정 시기 생산품에 대해서 무상 교체를 하는데, 그 대상이라 공짜로 교체 받긴 했다. 가장 가까운 서비스 센터가 판교 일렉트로 마트 안에 있어서 휴일에 판교역에 갔다와야 했다. Orz. 배터리 교체는 생각보다 얼마 안걸렸고 — 대략 20분 내외? — 잠시 대기 줄에서 기다린 시간이 한 15분 정도였던듯. 근데 이건 문열자 마자 뛰어가서 그렇고, 실제로는 이보다야 더 걸리겠지.</description>
    </item>
    
    <item>
      <title>리뷰: 콘클라베</title>
      <link>https://rein.kr/posts/2018-03-15-%EB%A6%AC%EB%B7%B0-%EC%BD%98%ED%81%B4%EB%9D%BC%EB%B2%A0/</link>
      <pubDate>Thu, 15 Mar 2018 22:06:34 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2018-03-15-%EB%A6%AC%EB%B7%B0-%EC%BD%98%ED%81%B4%EB%9D%BC%EB%B2%A0/</guid>
      <description>로버트 해리스 의 장편 소설. 흔히 팩션 이라고 말하는 장르의 소설이다. 내가 본 상당 수의 팩션은 로버트 해리스 작인듯 – 이니그마, 당신들의 조국, 고스트 라이터, 아크엔젤, 어느 물리학자의 비행 등등. 덤으로 키케로 3부작 (이 이름이 맞나?) 도 있고.
제목에서 바로 알 수 있듯이, &amp;ldquo;교황 선종&amp;rdquo; – &amp;ldquo;새 교황 선출&amp;rdquo; 까지의 짧은 기간을 배경으로 한 소설이다. 직전 몇 대 교황 실명이 나오긴하지만 소설 자체는 정말로 픽션. 배경과 이전 교황이름만 현실에서 가져왔다.</description>
    </item>
    
    <item>
      <title>Jenkins 2.x DSL 적용기</title>
      <link>https://rein.kr/posts/2018-02-19-jenkins-2-x-dsl-%EC%A0%81%EC%9A%A9%EA%B8%B0/</link>
      <pubDate>Mon, 19 Feb 2018 23:19:58 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2018-02-19-jenkins-2-x-dsl-%EC%A0%81%EC%9A%A9%EA%B8%B0/</guid>
      <description>설 직전에 사용 중인 jenkins 서버가 버전이 올라갔다. 그리고 악몽(?)의 시작…
대략,
플랫폼 별 병렬 빌드를 위해 사용하던 buildflow 플러그인 결과물이 사라지는 현상 프로젝트 설정에서 buildflow 스크립트를 확인하거나 편집할 수 없는 현상 이 생겼다.
근데 최악의 문제는 아니었던게, 결과물이 보이지만 않고 서버 머신의 디스크에는 남아있더란; 비슷하게, buildflow 스크립트도 display: none 로 처리하고 있어서 스타일 수정하고나니 보이긴하더라.
Jenkins wiki에서는 새 DSL인 pipeline plugin으로 넘어가라고 한다. 그래서 이전 작업을 시작;
Buildflow 의 병렬 빌드에 해당하는 parallel 태스크는 있다.</description>
    </item>
    
    <item>
      <title>Docker 로 Linux 없이 Linux 개발하기</title>
      <link>https://rein.kr/posts/2016-10-22-docker-%EB%A1%9C-linux-%EC%97%86%EC%9D%B4-linux-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0/</link>
      <pubDate>Sat, 22 Oct 2016 23:51:28 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2016-10-22-docker-%EB%A1%9C-linux-%EC%97%86%EC%9D%B4-linux-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0/</guid>
      <description>Linux 머신 없이 linux에서 개발하기
지난 달 말 발표에 썼던 슬라이드.
Windows + VisualStudio / macOS + Nuclide 환경에서 내부에 같이 띄운 docker container에 접근해서 C++ 프로그래밍을 디버깅 하는 내용을 다뤘다. 기록 차원에서 블로그 글로도 남긴다.</description>
    </item>
    
    <item>
      <title>리뷰: “코스믹코믹: 빅뱅을 발견한 사람들”</title>
      <link>https://rein.kr/posts/2016-10-22-%EB%A6%AC%EB%B7%B0-%EC%BD%94%EC%8A%A4%EB%AF%B9%EC%BD%94%EB%AF%B9-%EB%B9%85%EB%B1%85%EC%9D%84-%EB%B0%9C%EA%B2%AC%ED%95%9C-%EC%82%AC%EB%9E%8C%EB%93%A4/</link>
      <pubDate>Sat, 22 Oct 2016 23:37:53 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2016-10-22-%EB%A6%AC%EB%B7%B0-%EC%BD%94%EC%8A%A4%EB%AF%B9%EC%BD%94%EB%AF%B9-%EB%B9%85%EB%B1%85%EC%9D%84-%EB%B0%9C%EA%B2%AC%ED%95%9C-%EC%82%AC%EB%9E%8C%EB%93%A4/</guid>
      <description>대략 &amp;ldquo;파인만&amp;quot;이나 &amp;ldquo;로지코믹스&amp;rdquo; 같은 느낌의 책이다. 로지코믹스 때는 좀 덜했는데, 이 책과 파인만은 내용이 좀 비어있는 기분. (아래 사진이 두 책)
그리고 전자책으로 구매했는데 폰으로 보기엔 좀 불편해서 결국 데스크탑으로 옮겨서 봄 — 종이책 살걸 ㅠㅠ. 개략적인 얼개는 빅뱅이론의 나오기까지의 이론적/실험적 증거를 찾아가는 여러 사람의 얘기를 좀 가볍게 다룬다. 예를 들어
아인슈타인의 일반상대론과 정상 우주론, 그리고 팽창하는 우주에 관한 얘기 허블이 관측한 다른 은하들의 적색 편이 αβγ 페이퍼. (농담같은 이름이지만 빅뱅의 핵합성을 다룬다) 벨 연구소의 윌슨과 펜지어스가 발견한 모든 방향에서 동일한 배경 잡음 같은 얘기를 모아서 빅뱅 이론이 성립되어간 과정을 이론/실험적 증거로 얘기한다.</description>
    </item>
    
    <item>
      <title>Docker &#43; C&#43;&#43; IDE  개발환경 꾸려보기</title>
      <link>https://rein.kr/posts/2016-09-27-docker-c-ide-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EA%BE%B8%EB%A0%A4%EB%B3%B4%EA%B8%B0/</link>
      <pubDate>Tue, 27 Sep 2016 07:30:46 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2016-09-27-docker-c-ide-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EA%BE%B8%EB%A0%A4%EB%B3%B4%EA%B8%B0/</guid>
      <description>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라는게 있다.</description>
    </item>
    
    <item>
      <title>Linux 용 데스크탑 앱 훑어보기</title>
      <link>https://rein.kr/posts/2016-09-20-linux-%EC%9A%A9-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%83%91-%EC%95%B1-%ED%9B%91%EC%96%B4%EB%B3%B4%EA%B8%B0/</link>
      <pubDate>Tue, 20 Sep 2016 12:30:45 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2016-09-20-linux-%EC%9A%A9-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%83%91-%EC%95%B1-%ED%9B%91%EC%96%B4%EB%B3%B4%EA%B8%B0/</guid>
      <description>요즘은 web 대신 app 으로 나오는게 유행인 것 같기도 하다. 모바일만 그런게 아니고 데스크탑도 약간 그런 것 같은데, 내가 쓰는 툴 중에 자주 쓰는 것 몇 가지도 이런 식.
이 중 두 가지가 내게 익숙한 .deb1 형식이길래 두 가지를 뜯어봤다. 하나는 slack 이고, 나머지 하나는 WordPress.com 이다.
dpkg-deb -R 명령으로 아카이브된 것을 까보면, 대략 다음과 같은 파일들이 있다:
desktop 앱을 위한 파일들 (wpcom.desktop, slack.desktop) node_modules (와 .asar 파일들) elctron libffmpeg.so 특이하게도 slack 쪽엔 cron.</description>
    </item>
    
    <item>
      <title>Interop Madness</title>
      <link>https://rein.kr/posts/2016-09-08-interop-madness/</link>
      <pubDate>Thu, 08 Sep 2016 20:57:55 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2016-09-08-interop-madness/</guid>
      <description>클라이언트 서버간 암호화 관련해서 개념 증명 + 몇 가지 성능 측정을 해야해서 몇 가지 언어 + 플랫폼에서 libsodium 1 을 호출해봤다. 그 와중에 겪은 일 정리.
C++ 이쪽은 평범한 C/C++ 인터페이스니 문제 없이 끝.
Python 위에서 구현한 부분을 클라이언트 쪽 구현을 (빨리) 만들어서 테스트하는 작업을 했다.
여기서부터 문제가 생기기 시작. Ubuntu 16.04 (xenial) 이 제공하는 libsodium 래퍼가 python-nacl 2 인데, 써보니 내가 쓰려는 함수가 여럿 없다. 특히 crypto_stream* 류 함수가 없더라.</description>
    </item>
    
    <item>
      <title>Docker for Mac 베타 사용기</title>
      <link>https://rein.kr/posts/2016-05-08-docker-for-mac-%EB%B2%A0%ED%83%80-%EC%82%AC%EC%9A%A9%EA%B8%B0/</link>
      <pubDate>Sun, 08 May 2016 23:44:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2016-05-08-docker-for-mac-%EB%B2%A0%ED%83%80-%EC%82%AC%EC%9A%A9%EA%B8%B0/</guid>
      <description>연휴 내내 하루 빼고 일하다가 드디어 짬이 났다. 그래서 한 달 반쯤 전에 공개된 Docker for Mac 을 써보기 시작. 베타용 토큰도 지난 주에 받아서 사실 그 전엔 시간 났어도 못 써봤겠지만.
일단 내 희망 사항인 linux 툴들과 Mac 용 GUI 툴을 같이 쓰는 걸 시도해봤다. 대략 docker volume 으로 로컬 디렉터리를 컨테이너에 마운트해서,
MacOSX 환경에서 GUI 툴을 가져다 쓸 수 있을 것: 예를 들어 git mergetool 로 p4merge 를 쓴다거나 linux 몇 가지 distro.</description>
    </item>
    
    <item>
      <title>프로그래머의 일상: 험난한 python 패키징</title>
      <link>https://rein.kr/posts/2016-01-26-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%ED%97%98%EB%82%9C%ED%95%9C-python-%ED%8C%A8%ED%82%A4%EC%A7%95/</link>
      <pubDate>Tue, 26 Jan 2016 23:34:58 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2016-01-26-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%ED%97%98%EB%82%9C%ED%95%9C-python-%ED%8C%A8%ED%82%A4%EC%A7%95/</guid>
      <description>제목처럼 거창한 건 아니지만.
웹 페이지에서 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 &amp;#34;setup.py&amp;#34;, line 77, in &amp;#39;jwt = jwt.</description>
    </item>
    
    <item>
      <title>2015 년, 내 프로그래밍 언어는 …</title>
      <link>https://rein.kr/posts/2016-01-23-2015-%EB%85%84-%EB%82%B4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EB%8A%94/</link>
      <pubDate>Sat, 23 Jan 2016 10:37:04 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2016-01-23-2015-%EB%85%84-%EB%82%B4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EB%8A%94/</guid>
      <description>2014 년, 내 프로그래밍 언어는 … 에 이어서.
작년 한 해 동안 주로 사용한 언어는,
C++ (제한적인 C++1x,y,z) Python &amp;hellip;과 거의 비등한 양의 bash shell script 회사에서 만들고 있는 게임 서버 엔진 (+ 이걸로 만드는 게임 서버 혹은 게임 서버 개발 지원) 으로 거의 C++ 만 쓰고 지낸 듯 하다. 그래도 엔진 자체만 빼고는 C++11 이후를 써도 되서 꽤 편하게 짠 듯.
Python은 대략 이전에도 썼던 log 분석, 웹 서비스 stub 등에서 많이 썼고, bash 는 패키징 (.</description>
    </item>
    
    <item>
      <title>프로그래머의 일상: 어떤 디스크 풀</title>
      <link>https://rein.kr/posts/2016-01-20-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EC%96%B4%EB%96%A4-%EB%94%94%EC%8A%A4%ED%81%AC-%ED%92%80/</link>
      <pubDate>Wed, 20 Jan 2016 12:37:20 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2016-01-20-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EC%96%B4%EB%96%A4-%EB%94%94%EC%8A%A4%ED%81%AC-%ED%92%80/</guid>
      <description>커널 보안 취약점 때문에 회사에서 쓰는 VM들을 패치하고 있는데, 디스크 풀이 뜬다.
?!?!?!?!
디스크 풀은 다른 방식으로 감지하고 있어서 대체 뭘까 하고 고민하다가, 같이 일하는 수원님이 &amp;ldquo;inode 풀 아니냐&amp;rdquo; 라고 하시기에,
$ 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 그것이 실제로 일어났습니다?</description>
    </item>
    
    <item>
      <title>Python 으로 JSON 빨리 처리하기</title>
      <link>https://rein.kr/posts/2016-01-01-python-%EC%9C%BC%EB%A1%9C-json-%EB%B9%A8%EB%A6%AC-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0/</link>
      <pubDate>Fri, 01 Jan 2016 23:40:35 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2016-01-01-python-%EC%9C%BC%EB%A1%9C-json-%EB%B9%A8%EB%A6%AC-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0/</guid>
      <description>지난 며칠 동안 모 모바일 게임의 알파테스트가 있었다. 그리고 갑이 뽑아달라는 ad-hoc 통계를 뽑느라 로그 처리를 왕창 할 일이 있었다.
대략,
로그 데이터는 하나의 JSON 문서로, 각 파일에 한 줄씩 차지하고 있다 파일은 날짜 별로 쪼개져서 서버 로그 디렉터리에 남아있다 내부 테스트나 첫날 정도까지는 로그 처리가 순식간에 끝날 수준이라 (k초 수준; k &amp;lt; 10) 별로 신경 안 썼는데, 막상 데이터가 커지기 시작하니 오래 걸리기 시작. (오래 걸린다 == 실행하고 결과 나올 때까지 걸리는 시간이 내 집중력이 유지되는 시간보다 길다) 그리고 ad-hoc 통계를 뽑으려다 보니 내가 실행하는 횟수가 계속 늘어서 걸리는 시간 줄이려고 삽질한 기록이 아래와 같다.</description>
    </item>
    
    <item>
      <title>nginx &#43; ngx_pagespeed</title>
      <link>https://rein.kr/posts/2015-10-13-building-nginx-pagespeed-as-debian-package/</link>
      <pubDate>Tue, 13 Oct 2015 23:04:01 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-10-13-building-nginx-pagespeed-as-debian-package/</guid>
      <description>꽤나 예전에 동아리 서버에는 적용해봤는데 — 동아리 서버는 apache 웹서버를 써서 구글에서 바이너리로 배포하는 mod_pagespeed 를 썼지만 — 이 블로그가 쓰는 웹 서버는 nginx를 써서 적용 못하고 있었다. Nginx 는 다 좋은데 동적으로 로드 가능한 모듈을 지원하질 않아서 소스에 넣고 빌드해줘야하는 것. 개인 웹 서버라 개발툴 없이 돌리는 상태를 유지하고 싶어서 회사 개발머신을 빌려 데비안 패키지만 만들고 옮겨서 설치하는 것으로. 아래는 그 기록.
빌드 기록 빌드 과정은 소스에서 ngx_pagespeed 빌드하기 를 따라하되 nginx 소스코드와 빌드 자체는 ubuntu 14.</description>
    </item>
    
    <item>
      <title>리뷰: 마션 – 리들리 스콧</title>
      <link>https://rein.kr/posts/2015-10-11-%EB%A6%AC%EB%B7%B0-%EB%A7%88%EC%85%98-%EB%A6%AC%EB%93%A4%EB%A6%AC-%EC%8A%A4%EC%BD%A7/</link>
      <pubDate>Sun, 11 Oct 2015 09:54:05 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-10-11-%EB%A6%AC%EB%B7%B0-%EB%A7%88%EC%85%98-%EB%A6%AC%EB%93%A4%EB%A6%AC-%EC%8A%A4%EC%BD%A7/</guid>
      <description>2D로 보고 옴. 나쁘진 않았지만 — 영상만 보면 훌륭한 편이었고 — 맘에 썩 드느냐 하면 그건 아니라서 좀 아쉬운 영화. 원작 유지에 목 매는게 아니고, 볼거리도 많은 편인라면 볼만함. 특히 하드SF 류를 좋아한다면 더더욱 추천.
이하엔 원작 (마션 – 앤디 위어) 과 영화의 내용에 대한 스포일러가 포함되어있으니 주의
원작에서 워트니가 독백하는 부분이 많은데 대략,
자신이 ㅈ 되었음에 대한 한탄 그리고 이 상황에 대한 과학적 분석 이런 계산이 되니까 가능은 하다 가 있고, 이거랑 대비되는 NASA 측 인물들의 생각이 나오는 부분이 있는데 이 부분 처리를 어떻게 하나했는데, 대부분을 지워버림.</description>
    </item>
    
    <item>
      <title>TLS: SHA1 해시의 종말이 다가오고 있다</title>
      <link>https://rein.kr/posts/2015-10-09-tls-sha1-%ED%95%B4%EC%8B%9C%EC%9D%98-%EC%A2%85%EB%A7%90/</link>
      <pubDate>Fri, 09 Oct 2015 09:39:31 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-10-09-tls-sha1-%ED%95%B4%EC%8B%9C%EC%9D%98-%EC%A2%85%EB%A7%90/</guid>
      <description>ars technica: SHA1 암호학적 해시가 연말 전에 (쉽게) 무력화된다 라는 글이 올라왔다. (2015-10-08)
저 글에서도 나오고, 이 블로그의 이전 글에서 링크한 Bruce Schneier의 2012년 예측 에서는 2018년이면 조직범죄자들 정도의 재정이면 충분히 깰 수 있는 수준이 될거고 예측했었다. 하지만 새로 나온 논문에 따르면 이미 현재 기준으로 $75k ~ $125k 정도면 충돌을 찾을 수 있다 라는 것. (이전 예측치는 2018년에 $175k 정도)
즉, 지금이라도 어느 정도의 재정 규모가 되는 정부건 정부 단체건, 혹은 조직범죄자들이건 이걸 깨려는 시도를 할 수 있는 수준으로 계산 비용이 내려와 있다는 얘기.</description>
    </item>
    
    <item>
      <title>리뷰: The Dark Forest – Liu Cixin</title>
      <link>https://rein.kr/posts/2015-10-05-%EB%A6%AC%EB%B7%B0-the-dark-forest-liu-cixin/</link>
      <pubDate>Mon, 05 Oct 2015 08:27:42 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-10-05-%EB%A6%AC%EB%B7%B0-the-dark-forest-liu-cixin/</guid>
      <description>얼마 전에 읽었던 삼체 – 류츠신 의 후속작. &amp;ldquo;지구의 과거 3부작&amp;rdquo; 이 정식 명칭이긴 한데 다들 &amp;ldquo;삼체 3부작&amp;quot;이라고 부르는 듯. 하여간 여기의 2편. 원제는 &amp;ldquo;黑暗森林&amp;quot;이니 &amp;ldquo;어두운 숲&amp;rdquo; 정도로 번역 될려나. 씨리즈 2권이니 만큼 이하 내용은 전부 스포일러 포함 (전작이든, 이 책 자체든)
전작 엔딩에서 삼체인의 함대가 출발하고, 그 전에 광속으로 쏜 Sophon (양성자에 담긴 삼체인이 슈퍼컴퓨터) 이 지구로 날아오는 상태. 그리고 이 sophon 이 입자 물리학에서 인간이 과학 기술을 발전시키는 걸 방해한다.</description>
    </item>
    
    <item>
      <title>리뷰: The End of All Things – John Scalzi</title>
      <link>https://rein.kr/posts/2015-10-04-%EB%A6%AC%EB%B7%B0-the-end-of-all-things-john-scalzi/</link>
      <pubDate>Sun, 04 Oct 2015 18:12:25 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-10-04-%EB%A6%AC%EB%B7%B0-the-end-of-all-things-john-scalzi/</guid>
      <description>존 스칼지의 &amp;ldquo;노인의 전쟁&amp;rdquo; 씨리즈 최신작. 노인의 전쟁 3부작, 조이의 일기, 휴먼 디비전을 생각하면 시리즈 여섯번째 작품.
휴먼 디비전이 뭔가 스토리를 풀다만 — 특히 &amp;ldquo;적이 누군가?&amp;ldquo;를 풀지 않고 — 상태로 맺어져서 매우 찝찝했던 걸 생각하면 다시금 짜증이 나지만 이 시리즈를 읽고나면 해결이 됨. 게다가 &amp;ldquo;마지막 행성 (Last Colony)&amp;rdquo; 나 &amp;ldquo;조이의 일기&amp;quot;에서 콘수가 deus ex machina 로 스토리를 마무리 지어버리는 거에 비하면 훨씬 나은 마무리. 노인의 전쟁 씨리즈 팬이라면 꼭 읽어봐야할 내용.</description>
    </item>
    
    <item>
      <title>리뷰: 삼체 – 류츠신</title>
      <link>https://rein.kr/posts/2015-09-14-%EB%A6%AC%EB%B7%B0-%EC%82%BC%EC%B2%B4/</link>
      <pubDate>Mon, 14 Sep 2015 22:57:32 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-09-14-%EB%A6%AC%EB%B7%B0-%EC%82%BC%EC%B2%B4/</guid>
      <description>2015년 휴고 상 수상과 관련된 논란이 있었는데 하여간 기사보다가 휴고 상 수상자가 중국인이란 내용을 보게 되었다. 그러고보니 무려 휴고 상 수상되기 전에 한국에 번역된 특이 케이스인 것도 확인.
오늘 출/퇴근 길 + 저녁 후 시간에 읽어서 완독. 꽤나 속도감 있게 읽을 수 있었다.
이 이하의 내용엔 스포일러 성 내용도 있음. 아주 짧게 요약하면
중국의 문화대혁명 시기에서 얘기가 시작되고 현대까지 이어지는 이야기 이데올로기 배포 수단으로 컴퓨터 게임이 이용됨(!) 삼체 문제 가 이야기의 중요한 소도구 &amp;hellip;라고하면 뭔지 알 수 없긴한데 여하간 추천작.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;14: lambda 함수의 캡처 목록</title>
      <link>https://rein.kr/posts/2015-09-14-c14-lambda-%ED%95%A8%EC%88%98%EC%9D%98-%EC%BA%A1%EC%B2%98-%EB%AA%A9%EB%A1%9D/</link>
      <pubDate>Mon, 14 Sep 2015 12:18:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-09-14-c14-lambda-%ED%95%A8%EC%88%98%EC%9D%98-%EC%BA%A1%EC%B2%98-%EB%AA%A9%EB%A1%9D/</guid>
      <description>C++11 lambda 함수에 값을 전달하는 방법은 복사/참조 두 가지 뿐이라서 expression 을 전달하진 못한다. lambda를 아주 거칠게 묘사하면 특정 인자를 받는 functor struct를 자동으로 생성하고 이거의 타입 추론을 자동으로 해주는 정도다. 그러니 생성자에 해당하는 lambda 캡처 목록에 &amp;ldquo;생성자에 해당하는게 있는데 왜 expression은 생성자에 못 넘기고, 변수 혹은 변수의 참조만 넘길까&amp;rdquo; 라고 생각하는건 매우 타당한 의문인 것.
예를 들어 C++11 에서 매우 거대한 std::unordered_map&amp;lt;k , v&amp;gt; 를 캡처한다고 치면 정말 복사를 해야 한다.</description>
    </item>
    
    <item>
      <title>TLS cipher suite 읽는 법</title>
      <link>https://rein.kr/posts/2015-09-11-tls-cipher-suite-%EC%9D%BD%EB%8A%94-%EB%B2%95/</link>
      <pubDate>Fri, 11 Sep 2015 09:46:54 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-09-11-tls-cipher-suite-%EC%9D%BD%EB%8A%94-%EB%B2%95/</guid>
      <description>작년부터 시작해서 보안 버그가 일종의 PR 결전장이 된 것 같은데 — 매우 핫한 이름을 붙여가면서 — 그런 류의 글에 나오는 TLS/SSL cipher suite 읽는 법을 간략히 정리.
TLS (혹은 옛이름(?)인 SSL) cipher suite은 아래와 같은 형태로 쓴다:
이전 글의 국민은행이 사용하던 RSA_WITH_AES_256_CBC_SHA 라거나, 현재 위키백과 설정인 ECDHE_ECDSA_WITH_AES_128_GCM, 이 블로그의 현재 설정 값인 ECDHE_RSA_WITH_AES_128_GCM 이라거나. 이 각각의 기능 구분은 아래와 같다
키 교환: 밑의 벌크 암호화 알고리즘에서 사용할 키를 교환할 방법 인증: 상대방이 정말로 스스로가 생각하는 상대방이 맞는지 확인할 방법 벌크 암호화: 대칭키를 써서 실제로 메시지를 암호화 하는 방법 메시지 인증: 이 메시지가 정말로 상대방이 보낸게 맞는지 확인할 방법 이렇게 4 부분으로 쪼개진다.</description>
    </item>
    
    <item>
      <title>은행은 왜 이렇게 오래된 인증서 알고리즘 / 암호화 알고리즘을 쓰는 걸까</title>
      <link>https://rein.kr/posts/2015-09-09-%EC%9D%80%ED%96%89%EC%9D%80-%EC%99%9C-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EC%98%A4%EB%9E%98%EB%90%9C-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%95%94%ED%98%B8%ED%99%94-%EC%95%8C/</link>
      <pubDate>Wed, 09 Sep 2015 20:11:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-09-09-%EC%9D%80%ED%96%89%EC%9D%80-%EC%99%9C-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EC%98%A4%EB%9E%98%EB%90%9C-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%95%94%ED%98%B8%ED%99%94-%EC%95%8C/</guid>
      <description>Disclaimer: 작성자 본인은 암호학 전문가가 아닙니다. 이글에선 무엇도 보장하지 않고 이글을 참고해서 하는 일에 대해선 어떤 책임도 지지 않습니다.
국민은행이 모던 브라우저에서 인터넷 뱅킹이 된다기에 시험 해 봄. 근데 들어가자마자 뜨는 워닝이 너무 우울해서 몇 가지를 확인.
인증서가 SHA1 해시를 이용 인증서가 유효한지 확인하기 위해서는 해당 인증서가 유효한지 확인하기 위해 인증서의 해시 값을 구하고, 이를 서명해둔다. 이 때 암호화 해시 함수; cryptographic hash function 을 이용하는데, 여기서는 SHA1 해시 함수를 쓰고 있더라.</description>
    </item>
    
    <item>
      <title>카톡에서 쓰는 것으로 보이는 user-agent 가 눈에 띄기에</title>
      <link>https://rein.kr/posts/2015-09-08-%EC%B9%B4%ED%86%A1%EC%97%90%EC%84%9C-%EC%93%B0%EB%8A%94-%EA%B2%83%EC%9C%BC%EB%A1%9C-%EB%B3%B4%EC%9D%B4%EB%8A%94-user-agent-%EA%B0%80-%EB%88%88%EC%97%90-%EB%9D%84%EA%B8%B0%EC%97%90/</link>
      <pubDate>Tue, 08 Sep 2015 18:34:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-09-08-%EC%B9%B4%ED%86%A1%EC%97%90%EC%84%9C-%EC%93%B0%EB%8A%94-%EA%B2%83%EC%9C%BC%EB%A1%9C-%EB%B3%B4%EC%9D%B4%EB%8A%94-user-agent-%EA%B0%80-%EB%88%88%EC%97%90-%EB%9D%84%EA%B8%B0%EC%97%90/</guid>
      <description>얼마 전부터 대략 이렇게 생긴 user-agent 가 웹 서버 접근 로그에 남는다:
*.*.*.* - - [07/Sep/2015:??:??:?? +0000] &amp;#34;GET /archives/3454 HTTP/1.1&amp;#34; 200 9925 &amp;#34;-&amp;#34; &amp;#34;facebookexternalhit/1.1;kakaotalk-scrap/1.0;&amp;#34; IP 주소에 대한 whois 정보 역시 Daum 소유의 것으로 나옴. Facebook 용으로 og:* metatag 류의 태그를 지정하는 경우 가 왕왕 있어서 그런 정보를 쉽게 가져가려고 facebook 외부 접근 에이전트 (facebookexternalhit/1.1) 호환이라고 내보내는 모양.
카카오 톡에 링크 공유하면 미리보기 띄우는 용도일듯? (Facebook 역시 그런 용도 + alpha 로 저걸 쓰는 듯 하니.</description>
    </item>
    
    <item>
      <title>리뷰: 셜록 홈즈: 모리어티의 죽음 – 앤터니 호로비츠</title>
      <link>https://rein.kr/posts/2015-09-08-%EB%A6%AC%EB%B7%B0-%EC%85%9C%EB%A1%9D-%ED%99%88%EC%A6%88-%EB%AA%A8%EB%A6%AC%EC%96%B4%ED%8B%B0%EC%9D%98-%EC%A3%BD%EC%9D%8C-%EC%95%A4%ED%84%B0%EB%8B%88-%ED%98%B8%EB%A1%9C%EB%B9%84%EC%B8%A0/</link>
      <pubDate>Tue, 08 Sep 2015 06:34:47 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-09-08-%EB%A6%AC%EB%B7%B0-%EC%85%9C%EB%A1%9D-%ED%99%88%EC%A6%88-%EB%AA%A8%EB%A6%AC%EC%96%B4%ED%8B%B0%EC%9D%98-%EC%A3%BD%EC%9D%8C-%EC%95%A4%ED%84%B0%EB%8B%88-%ED%98%B8%EB%A1%9C%EB%B9%84%EC%B8%A0/</guid>
      <description>둘째 태어나기 좀 전에 &amp;ldquo;셜록 홈즈: 실크하우스의 비밀&amp;quot;을 읽었던 것 같은데 그 후속이 나왔다. 이번에 다루는 부분은 &amp;ldquo;마지막 사건&amp;quot;과 &amp;ldquo;빈 집의 모험&amp;rdquo; 사이 이야기다. 즉, 라이헨바흐 폭포에서 셜록 홈즈와 제임스 모리어티가 싸워 추락사하고, 홈즈의 귀환까지의 공백 기간으 다룬 얘기.
이 책에서도 셜록 홈즈와 모리어티가 육체적으로 싸워야한 부분을 비꼬는 느낌이 좀 들긴하는데, 어쨌든 그 공백을 훌륭하게 살려낸 느낌. 주인공 격인 애설니 존스와 프레데릭 체이스 조합도 굉장히 잘 맞는 느낌이라 — 홈즈 + 왓슨 만큼 — 흥겹게 읽을 수 있더라.</description>
    </item>
    
    <item>
      <title>리뷰: 야경 – 요네자와 호노부</title>
      <link>https://rein.kr/posts/2015-09-07-%EB%A6%AC%EB%B7%B0-%EC%95%BC%EA%B2%BD-%EC%9A%94%EB%84%A4%EC%9E%90%EC%99%80-%ED%98%B8%EB%85%B8%EB%B6%80/</link>
      <pubDate>Mon, 07 Sep 2015 09:34:35 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-09-07-%EB%A6%AC%EB%B7%B0-%EC%95%BC%EA%B2%BD-%EC%9A%94%EB%84%A4%EC%9E%90%EC%99%80-%ED%98%B8%EB%85%B8%EB%B6%80/</guid>
      <description>고전부 시리즈 (애니메이션 빙과의 원작) 은 읽었었는데 나오키 상 후보였다는 말 + 알라딘 굿즈 (…) 에 눈이 멀어서 주문해봄. 장편이라고 생각했는데 — 왜 이렇게 착각했는지는 지금도 모르겠음 — 첫 단편인 야경이 휙 하고 끝나버려서 멍.
본격적인 추리물이라고 하기보단 미스테리 물에 가까운 단편들이 수록되어 있다.
고전부 시리즈는 뭔가 굉장히 편안한 일상 미스테리 물이었는데 이건 정말 본격적으로 묵직한(…) 내용이 나옴 — 그러니까 살인, 괴담스러운. 필체도 약간 달라진 느낌이지만 여전히 취향(..)이니 이 작가 책을 몇 개 더 주문해 봐야.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;1x: std::map 초기화하기</title>
      <link>https://rein.kr/posts/2015-09-07-c1x-stdmap-%EC%B4%88%EA%B8%B0%ED%99%94%ED%95%98%EA%B8%B0/</link>
      <pubDate>Mon, 07 Sep 2015 08:30:35 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-09-07-c1x-stdmap-%EC%B4%88%EA%B8%B0%ED%99%94%ED%95%98%EA%B8%B0/</guid>
      <description>C++03 을 쓰던 시절에 가졌던 불만 중 하나는 std::map 처럼 dictionary 타입을 쓸 때 선언 즉시 초기화하기 번잡한 것. 순서가 중요하지 않을 때 성능이 떨어지는 것도 그렇고. 예를 들어, &amp;ldquo;Jan&amp;rdquo; -&amp;gt; 1, &amp;ldquo;Feb&amp;rdquo; -&amp;gt; 2, …, &amp;ldquo;Dec&amp;rdquo; -&amp;gt; 12 와 같은 관계를 표현하고 싶을 때 C++03 에서 std::map 에 간단히 표현할 방법은 없다. 추가적인 초기화함수를 선언해서 써야한다.
const static std::map&amp;lt;std::string, int&amp;gt; kMonths = InitializeMonthDict(); static std::map&amp;lt;std::string, int&amp;gt; InitializeMonthDict() { std::map&amp;lt;std::string, int&amp;gt; rv; rv.</description>
    </item>
    
    <item>
      <title>boost::scoped_ptr 를 기억하십니까?</title>
      <link>https://rein.kr/posts/2015-09-04-boostscoped_ptr-%EB%A5%BC-%EA%B8%B0%EC%96%B5%ED%95%98%EC%8B%AD%EB%8B%88%EA%B9%8C/</link>
      <pubDate>Fri, 04 Sep 2015 19:03:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-09-04-boostscoped_ptr-%EB%A5%BC-%EA%B8%B0%EC%96%B5%ED%95%98%EC%8B%AD%EB%8B%88%EA%B9%8C/</guid>
      <description>어제 스마트 포인터 관련 글을 썼는데 여기에서 boost::scoped_ptr 는 다루지 않았다. 그건 scoped_ptr 가 반쯤 구현된 unique_ptr 라서. 두 개의 스마트 포인터의 차이는,
scoped_ptr 는 지금의 unique_ptr 처럼 오직 1명의 소유자 인 코드를 짤 때 유용하다. unique_ptr 는 move 를 적극적으로 활용해서 만들어진 표준 라이브러리다. (C++11) unique_ptr 는 release() 라는 소유권을 포기하는 멤버 함수를 제공한다. 정도다. 그래서 mutable 함수인 release() 만 못쓰게 막으면 되기 때문에 — 즉, const unique_ptr 를 쓰면 되기 때문에, scoped_ptr 의 유용성이 없어진 것.</description>
    </item>
    
    <item>
      <title>delete 쓸 일 없는 C&#43;&#43;</title>
      <link>https://rein.kr/posts/2015-09-03-delete-%EC%93%B8-%EC%9D%BC-%EC%97%86%EB%8A%94-c/</link>
      <pubDate>Thu, 03 Sep 2015 18:00:09 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-09-03-delete-%EC%93%B8-%EC%9D%BC-%EC%97%86%EB%8A%94-c/</guid>
      <description>지난 몇 달간 모 게임의 서버를 새로 만든다고 다시 C++ 을 한창 썼는데, 그 간의 경험을 정리하는 글을 몇 개 써볼까한다.
우선 delete 쓸 일 없는 C++. 적어도 전통적으로 쓰던 &amp;ldquo;메모리 해제&amp;quot;의 의미 로 delete 를 쓰는 일은 이제 거의 없는 듯 하다. 메모리를 할당하는 순간 (아주 과격하게 말하면) std::unique_ptr 혹은 std::shared_ptr 중 하나에 저장하면 된다. 선택할 때 판단할 근거도 간단하다.
이 메모리를 어느 객체가 가지고 있는지 명확한가 =&amp;gt; std::unique_ptr (반대로) 이 메모리를 여러 객체가 공동 소유해야하는가?</description>
    </item>
    
    <item>
      <title>맥북 (2015) 사용기</title>
      <link>https://rein.kr/posts/2015-09-01-%EB%A7%A5%EB%B6%81-2015-%EC%82%AC%EC%9A%A9%EA%B8%B0/</link>
      <pubDate>Tue, 01 Sep 2015 19:59:37 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-09-01-%EB%A7%A5%EB%B6%81-2015-%EC%82%AC%EC%9A%A9%EA%B8%B0/</guid>
      <description>세달쯤 전에 새로 나온 레티나 맥북이 도착. 업무용으로 사서 사용하면서 느낀 점을 기록
무게가 가벼워진건 정말 좋음. 13″ 맥북에어 (2012) 쓰고 있었는데도 확실히 무게가 줄었단 느낌 요즘 밤에 코딩할 때 글자가 잘 안보이고 그랬는데 이런 문제는 해결된듯 메모리가 적다 (8 GiB). 아무리 랩탑이라도 이건 너무 적지 않나. 삼년전부터 쓰던 애도 같은 용량인데… CPU 느림. 삼년전 맥북에어 수준. 요즘 C++ 빌드만 줄창하는데 ccache 아니었다면 해탈했을듯 (cpu는 추가 업그레이드 했음) 디스크는 미묘하게 빨라짐.</description>
    </item>
    
    <item>
      <title>연재물 전자책이 개선되면 좋겠다</title>
      <link>https://rein.kr/posts/2015-06-17-%EC%97%B0%EC%9E%AC%EB%AC%BC-%EC%A0%84%EC%9E%90%EC%B1%85%EC%9D%B4-%EA%B0%9C%EC%84%A0%EB%90%98%EB%A9%B4-%EC%A2%8B%EA%B2%A0%EB%8B%A4/</link>
      <pubDate>Wed, 17 Jun 2015 09:57:22 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-06-17-%EC%97%B0%EC%9E%AC%EB%AC%BC-%EC%A0%84%EC%9E%90%EC%B1%85%EC%9D%B4-%EA%B0%9C%EC%84%A0%EB%90%98%EB%A9%B4-%EC%A2%8B%EA%B2%A0%EB%8B%A4/</guid>
      <description>딱 맥북 / 맥북에어 정도만 들어가는 가방을 들고다니 시작해서, 그리고 늦봄부터는 자전거 통근을 해서; 요즘 통근 중의 책은 거의 리디북스나 레진코믹스에 의존 중. (물론 얇은 문고판 책이나 추가 케이블; 그리고 지갑정도는 들어가지만 그런 책이 항상 있는건 아니라서)
리디북스에서 연재물을 읽고 있는데 — 200화 가까이 연재된 걸 대충 120화부터 따라 잡아서 읽고 있는듯 — 이게 딱히 편하질 않다. 그래서 뭐가 대안일까가 궁금했는데, 최근에 John Scalzi의 신작, End of the all things의 연작 중편을 예약 구매로 사보다가 훨씬 나은 경험을 했다.</description>
    </item>
    
    <item>
      <title>새 랩탑 도착</title>
      <link>https://rein.kr/posts/2015-06-04-%EC%83%88-%EB%9E%A9%ED%83%91-%EB%8F%84%EC%B0%A9/</link>
      <pubDate>Thu, 04 Jun 2015 07:53:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-06-04-%EC%83%88-%EB%9E%A9%ED%83%91-%EB%8F%84%EC%B0%A9/</guid>
      <description>지난 달 초에 주문한 맥북이 어제 도착. 원래 쓰던 랩탑 (2012년 맥북에어)에서 이전 작업을 한 기록을 여기에 남긴다.
Migration Assistant 시도 (1차): 실패하고 두 대 모두 제어 불가능한 상태가 되서 리붓. 2차 시도: 새 맥북에서 맥북에어는 보이는데 반대가 안되어서 똥망 -_- 3차 시도: 이전이랑 같음. 여기서 GG치고 수동 복사 시작.
대략 다음과 같은 애들을 수동으로 옮겼다:
작업 디렉터리 및 문서 디렉터리. 작업물 디렉터리에서 현재 손 안댄 것은 과감히 제외 (그래도 복사한 용량 10기가 수준).</description>
    </item>
    
    <item>
      <title>오랜만에 확인해본 FeedBurner 통계</title>
      <link>https://rein.kr/posts/2015-05-07-%EC%98%A4%EB%9E%9C%EB%A7%8C%EC%97%90-%ED%99%95%EC%9D%B8%ED%95%B4%EB%B3%B8-feedburner-%ED%86%B5%EA%B3%84/</link>
      <pubDate>Thu, 07 May 2015 12:40:07 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-05-07-%EC%98%A4%EB%9E%9C%EB%A7%8C%EC%97%90-%ED%99%95%EC%9D%B8%ED%95%B4%EB%B3%B8-feedburner-%ED%86%B5%EA%B3%84/</guid>
      <description>Google 사용량 통계 메일 (매달 오는듯?) 보다가 FeedBurner가 아직 살아있는 것 보고 반가운 마음에 (???) 들여다본 결과.
Google Reader가 2013년 7월 1일 부로 서비스 종료한 이후로 구독자 수 / 도달률 모두 거의 붕괴한 상황이다. 내가 블로그를 덜 읽고, 글도 덜 쓰게 된 것도 대충 저것과 유사한 흐름인 것 같기도 하구나.</description>
    </item>
    
    <item>
      <title>프로그래머의 일상: 소프트웨어 패키징하기</title>
      <link>https://rein.kr/posts/2015-04-24-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%ED%8C%A8%ED%82%A4%EC%A7%95%ED%95%98%EA%B8%B0/</link>
      <pubDate>Fri, 24 Apr 2015 08:34:09 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-04-24-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%ED%8C%A8%ED%82%A4%EC%A7%95%ED%95%98%EA%B8%B0/</guid>
      <description>지금 일하는 회사에서 판매하는 제품은 대략 개별 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 류의 툴의 버전 차이) 라이브러리 버전 문제 / 없는 라이브러리 문제 이걸 해결하려면 대략:</description>
    </item>
    
    <item>
      <title>블로그 서비스 이전 준비 중</title>
      <link>https://rein.kr/posts/2015-01-26-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%9D%B4%EC%A0%84-%EC%A4%80%EB%B9%84-%EC%A4%91/</link>
      <pubDate>Mon, 26 Jan 2015 23:22:16 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-01-26-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%9D%B4%EC%A0%84-%EC%A4%80%EB%B9%84-%EC%A4%91/</guid>
      <description>이 블로그는 만든 이래로 계속 동아리 서버 신세를 지고 있는데 이젠 옮길 때가 된 듯하여 — SSL + SNI 문제라거나 — 옮길 곳을 찾는 중. 대략 EC2 도쿄리전 아니면 GMO 쪽으로 옮기지 않을까 싶은데; (대략 월 2만 이하 가격; 트래픽은 크지 않음…) 뭔가 써 보신 분들은 추천 좀.
대략 다음과 같은 부분을 생각 중:
https-only w/ HSTS .kr / .net / … 도메인에 대해서 SNI 설정이 가능해야 함 (.kr …) VM 접근 권한이 다 있으면 좋지만, 안되면 스태틱 파일만 내보내는 것도 생각 중 (하지만 disqus 류는 느려서 괴로울지도) 한 달 사용료 2만 안쪽으로… DNS 서버 제공해주면 좋고 싼 인증서 패키지 (…이건 약간 카테고리가 다른 듯) 하지만 과연 나의 귀차니즘을 이길런지는.</description>
    </item>
    
    <item>
      <title>2014 년, 내 프로그래밍 언어는 …</title>
      <link>https://rein.kr/posts/2015-01-26-2014-%EB%85%84-%EB%82%B4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EB%8A%94/</link>
      <pubDate>Mon, 26 Jan 2015 08:05:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-01-26-2014-%EB%85%84-%EB%82%B4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EB%8A%94/</guid>
      <description>블로그 옮길까 말까 / 정리할까 말까 고민하다가 이전 글 보고 기록 남기기.
2012년 말에 쓴 글 참고.
2014년에 주로 썼던 언어는 대략,
Python C++ Shell script (bash) HTML / JavaScript 인 듯.
2012 년 NCsoft 퇴사 이래로 (일부러) 회사 코드에는 C++ 안 쓰고 있던게 대략 2년 지나니 별 문제 없겠지 싶어서 C++ 코드도 작성 시작 / 이쪽 일이 많아져서 분량이 늘어난듯.
회사에서 만드는 프로덕트가 대략,
C++ 기반의 게임 서버 엔진 (C++) 엔진을 띄우기 위한 기타 플랫폼 코드 (C++, python, shell script) 엔진과 같이 도는 웹 서비스 코드들 (Python, HTML / JavaScript) 라서 실제로 저렇게 된 것 같다.</description>
    </item>
    
    <item>
      <title>MS Visual C&#43;&#43; 에서 함수에 임시 객체를 (non const) reference로 넘기기</title>
      <link>https://rein.kr/posts/2015-01-25-ms-visual-c-%EC%97%90%EC%84%9C-%ED%95%A8%EC%88%98%EC%97%90-%EC%9E%84%EC%8B%9C-%EA%B0%9D%EC%B2%B4%EB%A5%BC-non-const-reference%EB%A1%9C-%EB%84%98%EA%B8%B0%EA%B8%B0/</link>
      <pubDate>Sun, 25 Jan 2015 23:13:14 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2015-01-25-ms-visual-c-%EC%97%90%EC%84%9C-%ED%95%A8%EC%88%98%EC%97%90-%EC%9E%84%EC%8B%9C-%EA%B0%9D%EC%B2%B4%EB%A5%BC-non-const-reference%EB%A1%9C-%EB%84%98%EA%B8%B0%EA%B8%B0/</guid>
      <description>작년 하반기에 VisualStudio 2013 기준으로 작성된 C++ 프로젝트를 linux (+ GCC)로 옮기는 작업을 했다. 그 때 제일 충격적이었던 것은 — 한 2년넘게 Windows 환경 작업을 (직업적으로는) 안한 탓이 크겠지만 — 이 글 제목의 그것:
void func(X &amp;amp;x); // ... func(X()); 이런 코드가 문제없이 컴파일되고 동작하는 것.
문제는 이 코드는 GCC 혹은 clang 에서 제대로 빌드되지 않는다; 게다가 저게 단순히 저런 함수 꼴 하나였으면 참 좋았을텐데, template + perfect forwarding이 섞인 코드라 반쯤 돌아버리는 줄 알았음.</description>
    </item>
    
    <item>
      <title>Scrapy로 웹사이트 크롤링 해보기</title>
      <link>https://rein.kr/posts/2014-09-12-scrapy%EB%A1%9C-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%ED%81%AC%EB%A1%A4%EB%A7%81-%ED%95%B4%EB%B3%B4%EA%B8%B0/</link>
      <pubDate>Fri, 12 Sep 2014 06:42:49 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-09-12-scrapy%EB%A1%9C-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%ED%81%AC%EB%A1%A4%EB%A7%81-%ED%95%B4%EB%B3%B4%EA%B8%B0/</guid>
      <description>웹 사이트 몇 개(=네xx카페)를 지속적으로 크롤링 할 일이 생겨서 몇 가지 라이브러리를 뒤적여봤다.
처음 시도한 것은 selenium. 하지만 UI 요소에 의미있는 텍스트가 없거나, 반복해서 나타나는데 문맥 의존적으로 해석하게되면 완전 노가다. 그리고 내가 아는 범위 내에선 서버 데몬을 따로 띄우지 않고는 안되는 녀석이라 따로 돌리기 불편해서 중도 포기.
다음으론 항상 잘 써먹던, 비교적 규모가 작은 웹사이트에서 잘 써먹던 requests + html5lib. 근데 이것도 UI 요소에 의미있는 클래스나 아이디가 없어서 불편하긴 하더라. 그리고 동적으로 링크를 발견하고, 이걸 다시 특정 형태로 크롤링하게 하려니 작업량이 많아서 작업 중단.</description>
    </item>
    
    <item>
      <title>Unixstickers에서 스티커 사 봄</title>
      <link>https://rein.kr/posts/2014-09-05-unixstickers%EC%97%90%EC%84%9C-%EC%8A%A4%ED%8B%B0%EC%BB%A4-%EC%82%AC-%EB%B4%84/</link>
      <pubDate>Fri, 05 Sep 2014 18:01:53 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-09-05-unixstickers%EC%97%90%EC%84%9C-%EC%8A%A4%ED%8B%B0%EC%BB%A4-%EC%82%AC-%EB%B4%84/</guid>
      <description>$40이상 사면 ems로 보내준다길레 하나 더 추가하고 맞춰서 주문. Linux, vim, C++, python 그리고 글라이더.</description>
    </item>
    
    <item>
      <title>덜 번잡하게 git branch를 지울 방법이 없을까?</title>
      <link>https://rein.kr/posts/2014-08-14-%EB%8D%9C-%EB%B2%88%EC%9E%A1%ED%95%98%EA%B2%8C-git-branch%EB%A5%BC-%EC%A7%80%EC%9A%B8-%EB%B0%A9%EB%B2%95%EC%9D%B4-%EC%97%86%EC%9D%84%EA%B9%8C/</link>
      <pubDate>Thu, 14 Aug 2014 08:01:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-08-14-%EB%8D%9C-%EB%B2%88%EC%9E%A1%ED%95%98%EA%B2%8C-git-branch%EB%A5%BC-%EC%A7%80%EC%9A%B8-%EB%B0%A9%EB%B2%95%EC%9D%B4-%EC%97%86%EC%9D%84%EA%B9%8C/</guid>
      <description>현재 상황:
git + gerrit 사용 중 submit 할 때 rebase 해서 merge가능하면 자동으로 rebase (gerrit 옵션) 문제:
다른 커밋들과 거의 무관해서 일련의 내 커밋이 git rebase 되어서 mainline에 &amp;ldquo;rebase + fast-forward&amp;rdquo; 됨. 해당 기능의 로컬 branch를 지우려고 하면 merge되지 않았다고 &amp;ldquo;git branch -D {branch}&amp;rdquo; 하라고 나옴 git show {branch} 해서 대략적으로 바뀐 부분을 찾고, git diff master..{branch} — {바뀐 위치} 로 겹치지 않는 diff가 있나 확인하고 나서 지움; 매우 번잡함 원하는 해결책:</description>
    </item>
    
    <item>
      <title>NDC 2014: 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기</title>
      <link>https://rein.kr/posts/2014-05-28-ndc-2014-%EB%AA%A8%EB%B0%94%EC%9D%BC-%EA%B2%8C%EC%9E%84%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%82%AC%EC%84%A4-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EA%B5%AC%EC%B6%95%EC%9A%B4/</link>
      <pubDate>Wed, 28 May 2014 21:34:15 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-05-28-ndc-2014-%EB%AA%A8%EB%B0%94%EC%9D%BC-%EA%B2%8C%EC%9E%84%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%82%AC%EC%84%A4-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EA%B5%AC%EC%B6%95%EC%9A%B4/</guid>
      <description>오늘 NDC 세션으로 발표한 슬라이드 덱
아쉬운 점:
신청할 때 내 잘못으로 50분 대신 25분 세션으로 신청해서 시간이 모자랐다. 원래는 문제 / 문제 원인 / 왜 이런 해결책을 선택했나를 설명하고 싶었는데, 시간도 짧고 해서 문제 / 대략적인 해결만 얘기한 듯.
보고 계시던 분 중 한 분이 &amp;ldquo;어디에도 낙원은 없다&amp;rdquo; 정도의 얘기를 하셨다는데, 내 감상만 얘기하자면 처음 개발/운영 시작할 때만해도 힘들었지만 지금은 꽤 편하다는 것. 하드웨어 인프라를 프로그래머 손 위에서 다루게만 해줘도 사람 손이 덜 가게되고, 자동화하는 영역이 늘었다는 얘기를 얘기할 자리가 생겼으면 좋겠음.</description>
    </item>
    
    <item>
      <title>프레젠테이션 미니어처 요약본 만들기</title>
      <link>https://rein.kr/posts/2014-05-25-%ED%94%84%EB%A0%88%EC%A0%A0%ED%85%8C%EC%9D%B4%EC%85%98-%EB%AF%B8%EB%8B%88%EC%96%B4%EC%B2%98-%EC%9A%94%EC%95%BD%EB%B3%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0/</link>
      <pubDate>Sun, 25 May 2014 23:48:16 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-05-25-%ED%94%84%EB%A0%88%EC%A0%A0%ED%85%8C%EC%9D%B4%EC%85%98-%EB%AF%B8%EB%8B%88%EC%96%B4%EC%B2%98-%EC%9A%94%EC%95%BD%EB%B3%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0/</guid>
      <description>발표 자료 만들 때 모 채널에서 “Summarizing your presentation with miniature slides”라는 글을 링크해줘서 따라해봤다. 프레젠테이션 마지막 페이지를 “Thank you” 같은 걸로 의미없이 낭비할 게 아니라, 전체 발표 내용을 요약해서 보여주면서 그 페이지에서 추가적인 논의를 하거나 질문 받거나 하라는 것. 그 방법으론 bullet-style로 글로 요약하거나, 주요 슬라이드를 미니 페이지 형식으로 모아서 보여주는 걸 제시한다.
지난 번 발표 때는 첫번째 방법을 써 봤고, 이번엔 두번째 방법을 시도 해봤다. 그런데 저 글에 나와있는 키노트에서 미니어처 슬라이드 만드는 방식이 대략,</description>
    </item>
    
    <item>
      <title>NDC 2014에서 발표하게 되었습니다</title>
      <link>https://rein.kr/posts/2014-05-22-ndc-2014%EC%97%90%EC%84%9C-%EB%B0%9C%ED%91%9C%ED%95%98%EA%B2%8C-%EB%90%98%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4/</link>
      <pubDate>Thu, 22 May 2014 18:56:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-05-22-ndc-2014%EC%97%90%EC%84%9C-%EB%B0%9C%ED%91%9C%ED%95%98%EA%B2%8C-%EB%90%98%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4/</guid>
      <description>둘째 날 (수요일) 오후 1:30에 발표합니다.
발표 제목은 &amp;ldquo;모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기&amp;rdquo;. 내용은 작년에 창업한 회사에서 만든 프로덕트 개발/운용하면서 생겼던 일들 요약(?).
NDC 2014 Private Cloud Summary</description>
    </item>
    
    <item>
      <title>마우스 증식 중</title>
      <link>https://rein.kr/posts/2014-05-11-%EB%A7%88%EC%9A%B0%EC%8A%A4-%EC%A6%9D%EC%8B%9D-%EC%A4%91/</link>
      <pubDate>Sun, 11 May 2014 11:35:26 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-05-11-%EB%A7%88%EC%9A%B0%EC%8A%A4-%EC%A6%9D%EC%8B%9D-%EC%A4%91/</guid>
      <description>오래된 (아마 2005년 쯤?) 산 로지텍 MX510, MS Touch Mouse, Apple Magic Mouse, MS Arc Touch Mouse 인 듯. (벽장을 뒤지면 그냥 아크 마우스도 있을 듯?)
게임용은 MX510뿐이고, MS 마우스 두 개는 이도저도 아닌 물건. 애플 마우스도 OmniGraffle 용(?).
가장 맘에드는 마우스는 이전에 얘기한 이건데, 회사에서 쓰는 중. 하지만 단종.
키보드는 리얼포스 쓰기 시작한 이래로 그대로인데 마우스는 왜 이거다 하는 게 없을까.</description>
    </item>
    
    <item>
      <title>그래프 가지고 장난치지 말자 #2</title>
      <link>https://rein.kr/posts/2014-05-08-%EA%B7%B8%EB%9E%98%ED%94%84-%EA%B0%80%EC%A7%80%EA%B3%A0-%EC%9E%A5%EB%82%9C%EC%B9%98%EC%A7%80-%EB%A7%90%EC%9E%90-2/</link>
      <pubDate>Thu, 08 May 2014 15:07:52 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-05-08-%EA%B7%B8%EB%9E%98%ED%94%84-%EA%B0%80%EC%A7%80%EA%B3%A0-%EC%9E%A5%EB%82%9C%EC%B9%98%EC%A7%80-%EB%A7%90%EC%9E%90-2/</guid>
      <description>며칠 전에 트위터를 떠돌던 모 그래프를 보고.
나는 이런 그래프에 굉장히 불만이 많은데 (이전 글 참고), 그래프를 그린이의 의도에 완전히 좌우된 듯한 인상을 준다.일단 밑부분이 잘려나간것 자체가 최악.
그리고 인용하는 사람들의 문맥도 의도가 너무 들여다보인다. 나도 리트윗 했던 것 같지만.
저 그래프에 나온 소스를 찾아가서 그 데이터로 한 번 그래프를 다시 그려봤다. (참고: OECD 통계 데이터 사이트)
일단 저 데이터가 2007년까지의 데이터만 있는데 그 이후로도 한국의 상황은 좀 더 나아졌다.</description>
    </item>
    
    <item>
      <title>“음식배달 주문앱의 진실” 류의 글을 읽고</title>
      <link>https://rein.kr/posts/2014-04-17-%EC%9D%8C%EC%8B%9D%EB%B0%B0%EB%8B%AC-%EC%A3%BC%EB%AC%B8%EC%95%B1%EC%9D%98-%EC%A7%84%EC%8B%A4-%EB%A5%98%EC%9D%98-%EA%B8%80%EC%9D%84-%EB%8B%A8%EC%83%81/</link>
      <pubDate>Thu, 17 Apr 2014 19:23:49 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-04-17-%EC%9D%8C%EC%8B%9D%EB%B0%B0%EB%8B%AC-%EC%A3%BC%EB%AC%B8%EC%95%B1%EC%9D%98-%EC%A7%84%EC%8B%A4-%EB%A5%98%EC%9D%98-%EA%B8%80%EC%9D%84-%EB%8B%A8%EC%83%81/</guid>
      <description>이런 류의 글에 대한 단상.
난 저게 왜 원시적이고 &amp;ldquo;진실&amp;quot;을 따지는 문제인지 모르겠다. 새로운 형태의 산업이 생기는 그 순간의 일일 뿐이라고 생각한다.
엄청 오래된 글을 하나 끄집어내 보자.
Strategy Letter II: Chicken and Egg Problems by Joel Spolsky
Ah. Now back to bill presentment. Remember bill presentment? The chicken-egg problem is that you can only get your Con Ed bills, so you won&amp;rsquo;t use the service. How can you solve it?</description>
    </item>
    
    <item>
      <title>GameTech 2014: 모바일 게임용 PaaS/BaaS 구현사례와 디자인 트레이드오프</title>
      <link>https://rein.kr/posts/2014-04-15-gametech-2014-%EB%AA%A8%EB%B0%94%EC%9D%BC-%EA%B2%8C%EC%9E%84%EC%9A%A9-paasbaas-%EA%B5%AC%ED%98%84%EC%82%AC%EB%A1%80%EC%99%80-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8A%B8%EB%A0%88%EC%9D%B4%EB%93%9C%EC%98%A4/</link>
      <pubDate>Tue, 15 Apr 2014 14:08:42 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-04-15-gametech-2014-%EB%AA%A8%EB%B0%94%EC%9D%BC-%EA%B2%8C%EC%9E%84%EC%9A%A9-paasbaas-%EA%B5%AC%ED%98%84%EC%82%AC%EB%A1%80%EC%99%80-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8A%B8%EB%A0%88%EC%9D%B4%EB%93%9C%EC%98%A4/</guid>
      <description>GameTech 2014 에서 발표한 내용.
슬라이드 덱은 여기에서.
요 몇 달간 몇몇 게임 서비스를 만들면서 느낀 점과 생각한 점을 모아서 얘기해봤음.</description>
    </item>
    
    <item>
      <title>Windows XP 지원 종료에 따른 (업무용 서버) SSL/TLS 설정 변경</title>
      <link>https://rein.kr/posts/2014-04-15-windows-xp-%EC%A7%80%EC%9B%90-%EC%A2%85%EB%A3%8C%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%97%85%EB%AC%B4%EC%9A%A9-%EC%84%9C%EB%B2%84-ssltls-%EC%84%A4%EC%A0%95-%EB%B3%80%EA%B2%BD/</link>
      <pubDate>Tue, 15 Apr 2014 09:14:33 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-04-15-windows-xp-%EC%A7%80%EC%9B%90-%EC%A2%85%EB%A3%8C%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%97%85%EB%AC%B4%EC%9A%A9-%EC%84%9C%EB%B2%84-ssltls-%EC%84%A4%EC%A0%95-%EB%B3%80%EA%B2%BD/</guid>
      <description>The End-of-Life of Windows XP and SSL/TLS Configurations 를 보고 쓰는 글. (참고로 해당 블로그의 저자는 Linux Programming Interface 라는 훌륭한 책을 썼다)
요약하자면:
Windows XP 지원 중단 (2014-04-08) Windows XP 를 사용하는 PC는 더더욱 malware/botnet의 일부일 가능성이 높음 등등의 이유로 Windows XP와 SSL/TLS 통신한다고 넣었던 약한 암호화 방식을 빼고 더 나은 SSL/TLS 설정을 쓰자는 것 이 경우에 perfect-forward-secrecy + 좀 더 나은 암호화 방식을 쓰느게 가능해진다 라는 것.
회사에서 작성한 대부분의 코드가 유저와 상호작용하는 부분이 대부분 SSL, 특히 https 를 통해서 웹 서버와 상호 작용한다.</description>
    </item>
    
    <item>
      <title>예비군 통지서를 샵메일로 보내는 것 혹은 그거에 대해 권장하는 행위에 대해 해야할 일</title>
      <link>https://rein.kr/posts/2014-03-07-%EC%98%88%EB%B9%84%EA%B5%B0-%ED%86%B5%EC%A7%80%EC%84%9C%EB%A5%BC-%EC%83%BE%EB%A9%94%EC%9D%BC%EB%A1%9C-%EB%B3%B4%EB%82%B4%EB%8A%94-%EA%B2%83-%ED%98%B9%EC%9D%80-%EA%B7%B8%EA%B1%B0%EC%97%90-%EB%8C%80/</link>
      <pubDate>Fri, 07 Mar 2014 17:18:08 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-03-07-%EC%98%88%EB%B9%84%EA%B5%B0-%ED%86%B5%EC%A7%80%EC%84%9C%EB%A5%BC-%EC%83%BE%EB%A9%94%EC%9D%BC%EB%A1%9C-%EB%B3%B4%EB%82%B4%EB%8A%94-%EA%B2%83-%ED%98%B9%EC%9D%80-%EA%B7%B8%EA%B1%B0%EC%97%90-%EB%8C%80/</guid>
      <description>국방부에서 예비군 통지서를 샵메일1을 사용하겠다는 보도가 있다.
국방부는 이번 예비군훈련 소집통지 샵(#)메일 체계를 국방동원업무체계와 연동, ‘13년 10월말까지 구축하고 금년 말까지 시범사업을 추진할 계획이다
○ 이를 위해 현재 예비군중 희망자와 매년 전역하는 약 22만명의 신규편성 예비군을 대상으로 샵(#)메일 통지 체계를 구축할 계획이며 앞으로 예비군들이 샵(#)메일 체계를 이해하고 이용을 확대할 수 있도록 적극 홍보할 계획이다
심지어 예비군 훈련 받으러가니 이메일도 번거롭고 전화도 번거로우니 수신 확인되는 이 멍청한 방식을 사용하려하니 이걸 권장한다고 말하더라. (예비군 동대장인듯?</description>
    </item>
    
    <item>
      <title>상경길에 느끼는 무선 인터넷 지연 시간과 응용 프로그램 차이</title>
      <link>https://rein.kr/posts/2014-02-03-%EC%83%81%EA%B2%BD%EA%B8%B8%EC%97%90-%EB%8A%90%EB%81%BC%EB%8A%94-%EB%AC%B4%EC%84%A0-%EC%9D%B8%ED%84%B0%EB%84%B7-%EC%A7%80%EC%97%B0-%EC%8B%9C%EA%B0%84%EA%B3%BC-%EC%9D%91%EC%9A%A9-%ED%94%84%EB%A1%9C/</link>
      <pubDate>Mon, 03 Feb 2014 14:07:33 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2014-02-03-%EC%83%81%EA%B2%BD%EA%B8%B8%EC%97%90-%EB%8A%90%EB%81%BC%EB%8A%94-%EB%AC%B4%EC%84%A0-%EC%9D%B8%ED%84%B0%EB%84%B7-%EC%A7%80%EC%97%B0-%EC%8B%9C%EA%B0%84%EA%B3%BC-%EC%9D%91%EC%9A%A9-%ED%94%84%EB%A1%9C/</guid>
      <description>설 연휴에 처가 방문하고 집으로 올라가는 중.
KTX의 무선 인터넷을 쓰는데 감상이 묘하다.
회사 일이 좀 밀려있어서 코드 리뷰하고 내 코드도 merge하고 그러는 중인데, 현대의 웹 기술(?)에 감탄하는 중이다.
Vim 혹은 고전적인 vi 같은 도구는 network latency가 커져도 매우 잘 동작하는 편인데1 노트북 — (wifi) — VPN — 회사에 있는 내 PC — 테스트 용 가상 서버군 으로 연결했더니 좀 괴롭더라.
반대로 링크나 하나 짧긴 하지만 &amp;ldquo;노트북 — (wifi) — VPN — 서버&amp;quot;로 연결한 gerrit code review 툴은 그다지 느리지 않단느낌.</description>
    </item>
    
    <item>
      <title>Ethernet pause 프레임 flooding</title>
      <link>https://rein.kr/posts/2013-11-20-ethernet-pause-%ED%94%84%EB%A0%88%EC%9E%84-flooding/</link>
      <pubDate>Wed, 20 Nov 2013 20:32:42 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-11-20-ethernet-pause-%ED%94%84%EB%A0%88%EC%9E%84-flooding/</guid>
      <description>오후에 사무실 네트워크가 뜬금없이 사망.
네트워크 스위치를 리셋하니 잠시 되다가 안되기를 반복하더라. 랜 선을 하나씩 꽂으면서 테스트하는데 특정 데스크탑을 연결하면 wireshark 로그가 좀 심하게 많이 오는 걸 발견.
http://ask.wireshark.org/questions/19559/pause-frame-flood
여기서 말하는 것과 같은 현상.
해당 pause 프레임을 받는 쪽에선 지정한 시간동안 전송을 못한다.(ethernet flow-control 때문에). 근데 이 프레임이 브로드캐스팅으로 무한정 날아와서 네트워크를 쓰지도 않는데 통신이 이뤄지지 않는 것. (그러니까 같은 브로드캐스팅 도메인 전체가 스위치 죽는 거랑 똑같은 상황)
해당 PC는 Windows 8 사용 중이고 인텔 보드였는데 저 위 링크처럼 소스 맥 주소가 REALTK의 ASCII 값에 해당하는 내용이더라.</description>
    </item>
    
    <item>
      <title>사무실 이사</title>
      <link>https://rein.kr/posts/2013-11-15-%EC%82%AC%EB%AC%B4%EC%8B%A4-%EC%9D%B4%EC%82%AC/</link>
      <pubDate>Fri, 15 Nov 2013 07:43:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-11-15-%EC%82%AC%EB%AC%B4%EC%8B%A4-%EC%9D%B4%EC%82%AC/</guid>
      <description>회사 사무실이 선릉에서 판교로 이전. 오늘이 이전 후 출근 삼주차.
판교의 좋은 점은 근처에 지인들이 많고 (이전 직장 2개가 이전했거나 이전 중이거나) 그럭저럭 조용한 동네.
나쁜 점은 참 많아서 뭐라고 해야할까.
멀어. 너무 멀다. 서울에서 출퇴근하기에 강남구 아니면 너무 오래 걸림. 천호역 근처에서 출발하는데 집에서 나와서 사무실에 앉을 때까지 50분~ 한시간 20분. (최악의 경우는 중간에 사고차가 막아서 생긴거라쳐도) 버스+광역버스 / 지하철 + 경기버스 조합을 다 써보고 있는데 그다지 편한 조합이 없다 Orz.</description>
    </item>
    
    <item>
      <title>Gerrit 메모리 릭 우회하기</title>
      <link>https://rein.kr/posts/2013-09-29-gerrit-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%A6%AD-%EC%9A%B0%ED%9A%8C%ED%95%98%EA%B8%B0/</link>
      <pubDate>Sun, 29 Sep 2013 12:02:45 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-09-29-gerrit-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%A6%AD-%EC%9A%B0%ED%9A%8C%ED%95%98%EA%B8%B0/</guid>
      <description>코드 리뷰 도구로 gerrit을 사용 중이다.
5월 말?쯤에 gerrit-2.6.x-rc? 로 올렸는데 이 때 부터 문제가 생기기 시작했다. 해당 머신에 할당한 메모리에 따라 다르지만, 대략 3일~일주일 후면 heap 공간이 꽉차서 GC하느라 반응이 없거나, 아니면 아예 OOM으로 죽거나. 그래서 포기하고 crontab에서 아예 restart 하게 수정 (이건 실제로 작업하는 시간대가 명확해서 가능한거고 분산된 팀이면 적용하기 괴로울 듯)
Gerrit 메일링 말고 다른 쪽에서 검색한 바로는 apache sshd의 세션이 제대로 안 날아가서 생기는 문제라는 얘기도 있던데 여하간 해결이 난망해 보였음.</description>
    </item>
    
    <item>
      <title>NDC 2013: DVCS와 코드리뷰, 자동화를 통한 쾌속개발</title>
      <link>https://rein.kr/posts/2013-05-07-ndc-2013-dvcs%EC%99%80-%EC%BD%94%EB%93%9C%EB%A6%AC%EB%B7%B0-%EC%9E%90%EB%8F%99%ED%99%94%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%BE%8C%EC%86%8D%EA%B0%9C%EB%B0%9C/</link>
      <pubDate>Tue, 07 May 2013 08:38:11 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-05-07-ndc-2013-dvcs%EC%99%80-%EC%BD%94%EB%93%9C%EB%A6%AC%EB%B7%B0-%EC%9E%90%EB%8F%99%ED%99%94%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%BE%8C%EC%86%8D%EA%B0%9C%EB%B0%9C/</guid>
      <description>올해 NDC에서 발표한 슬라이드
파일은 여기에서: 슬라이드 덱</description>
    </item>
    
    <item>
      <title>리뷰: 코딩호러의 이펙티브 프로그래밍</title>
      <link>https://rein.kr/posts/2013-04-06-%EB%A6%AC%EB%B7%B0-%EC%BD%94%EB%94%A9%ED%98%B8%EB%9F%AC%EC%9D%98-%EC%9D%B4%ED%8E%99%ED%8B%B0%EB%B8%8C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/</link>
      <pubDate>Sat, 06 Apr 2013 07:31:21 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-04-06-%EB%A6%AC%EB%B7%B0-%EC%BD%94%EB%94%A9%ED%98%B8%EB%9F%AC%EC%9D%98-%EC%9D%B4%ED%8E%99%ED%8B%B0%EB%B8%8C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/</guid>
      <description>스택오버플로우의 공동 창업자인 제프 앳우드의 글 모음. http://www.codinghorror.com/ 에 연재된 글을 정리한 것도 있고, 새로운 내용도 있다.
인상깊었던 부분을 몇 가지 추려보자면:
회사의 관점에서 스택 오버플로우를 운영하는 것에 대해 커티스 암스트롱의 조언(?)을 이용
저 길로 가, 총알같이 빠르게. 눈앞에 뭐가 나타나면 방향을 틀어 Go that way, really fast. If something gets in your way, turn.
그리고 팀 오라일리가 래리 페이지를 인용한 것을 재인용한 부분:
래리 페이지는 이렇게 말했다. &amp;ldquo;속도와 좋은 결정 사이에 존재하는 관련성… 빠르고 좋은 결정은 있지만, 느리고 좋은 결정은 없다.</description>
    </item>
    
    <item>
      <title>Moving on</title>
      <link>https://rein.kr/posts/2013-04-06-moving-on/</link>
      <pubDate>Sat, 06 Apr 2013 07:12:31 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-04-06-moving-on/</guid>
      <description>4월을 마지막으로 넥슨에서 퇴사. 옮겨갈 곳은 아직 미확정이지만 구직 의사는 없음.
작년에 엔씨소프트에서 넥슨으로 옮겼을 때처럼 몇 가지 장/단점을 애기해보자면:
장점:
장비는 잘 사준다. 2년마다 칼 같이 갈아 주는 걸 몇 번 봤음. 감가상각이 4년이라 4년 단위로 교체해준다던 (물론 난 그 기간에 교체 못 받았다) 곳과는 좀 비교되더라; 프로젝트 특성 때문에 머신이 좀 많이 필요했는데 거의 원하는 댓수만큼 신청해서 잘 썼다. 개발 머신에서 인터넷 접근이 잘 되니 정말 좋았음; 근데 이건 부서마다 다르다.</description>
    </item>
    
    <item>
      <title>gerrit 남은 리뷰 수 시각화하기</title>
      <link>https://rein.kr/posts/2013-02-03-gerrit-%EB%82%A8%EC%9D%80-%EB%A6%AC%EB%B7%B0-%EC%88%98-%EC%8B%9C%EA%B0%81%ED%99%94%ED%95%98%EA%B8%B0/</link>
      <pubDate>Sun, 03 Feb 2013 23:48:59 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-02-03-gerrit-%EB%82%A8%EC%9D%80-%EB%A6%AC%EB%B7%B0-%EC%88%98-%EC%8B%9C%EA%B0%81%ED%99%94%ED%95%98%EA%B8%B0/</guid>
      <description>회사에서 gerrit 이라는 git 기반의 코드 리뷰 도구를 쓴다.
gerrit 최근 버전들이 RESTful API를 제공하기 시작했는데, 이를 이용해서 각 날짜 별로 남아있는 리뷰 수를 보여주는 스크립트를 작성했다.
예를 들어 android 프로젝트의 하위 프로젝트인 platform/sdk 에 대해서 그려보면 이런 그래프가 나온다.
대략 작년 1월부터 오늘까지 남은 리뷰 수 통계다 — 실제론 merge 된 것만 계산해서 최근 통계는 좀 안 맞을 수도 있다.
해당 코드는 https://github.com/reinkim/gerrit-graph 에 올려두었다. 좀 naive하긴하지만 편하게 하려니 svg로 그렸다.</description>
    </item>
    
    <item>
      <title>신규 웹 서비스 뒷조사(?)해보기</title>
      <link>https://rein.kr/posts/2013-02-02-%EC%8B%A0%EA%B7%9C-%EC%9B%B9-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%92%B7%EC%A1%B0%EC%82%AC%ED%95%B4%EB%B3%B4%EA%B8%B0/</link>
      <pubDate>Sat, 02 Feb 2013 22:55:32 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-02-02-%EC%8B%A0%EA%B7%9C-%EC%9B%B9-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%92%B7%EC%A1%B0%EC%82%AC%ED%95%B4%EB%B3%B4%EA%B8%B0/</guid>
      <description>며칠 전 트위터 타임라인에서 https://urigit.com 이란 서비스에 대해 초대권 받는다는 글이 보여서 뒷조사(?)한 후기.
내가 쓰는 방식이 상식적인 방법인진 모르겠지만, 여하튼 대략 다음과 같은 걸 읽어본다.
1. DNS 주소 정보 urigit.com은 올해 1/19에야 등록이 되었고 (그러니까 최종적인 서비스 명칭은 이 시점에야), 등록자는 애조로 스튜디오란 이름이었다.
소개 페이지의 내용도 그렇고 메일 주소가 daum.net 인걸로 봐선 다음 제주 본사에 근무 중인 개발자가 주축인 것으로 보인다.
그리고 DNS 서버는 AWSDNS-* 이다. 서버도 AWS 위에서 돌리고 있음.</description>
    </item>
    
    <item>
      <title>한국에서 Windows Live ID로 MacOSX 용 Skype 쓰기</title>
      <link>https://rein.kr/posts/2013-02-02-%ED%95%9C%EA%B5%AD%EC%97%90%EC%84%9C-windows-live-id%EB%A1%9C-macosx-%EC%9A%A9-skype-%EC%93%B0%EA%B8%B0/</link>
      <pubDate>Sat, 02 Feb 2013 22:18:08 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-02-02-%ED%95%9C%EA%B5%AD%EC%97%90%EC%84%9C-windows-live-id%EB%A1%9C-macosx-%EC%9A%A9-skype-%EC%93%B0%EA%B8%B0/</guid>
      <description>부모님이 손자들과 전화대신 영상 통화하게 하려고 아버지가 구입한 노트북에 Skype 설치. 그리고 iPhone이랑 영상 통화 시도하니 잘 되더라. 폰 들고있기가 좀 불편해서 맥북에도 설치하려고 하는데 큰 문제가 있다. (이건 사실 Windows 7 이전도 공통일 듯) 이 문제 해결하려고 30분 가까이 날렸음. 어흑.
원인: 한국 서비스를 담당한다는 대성 스카이프라는 뭣 같은 놈들이 있다 koscom 공시 정보만 보고 말하자면 시총 1200억원 정도의 &amp;ldquo;가스 제조 및 공급업&amp;rdquo; 으로 분류된 회사더라. 여하튼 이 회사가 대성-스카이프란 이름으로 서비스(?</description>
    </item>
    
    <item>
      <title>SQLite를 in-memory DB로 쓰기</title>
      <link>https://rein.kr/posts/2013-01-16-sqlite%EB%A5%BC-in-memory-db%EB%A1%9C-%EC%93%B0%EA%B8%B0/</link>
      <pubDate>Wed, 16 Jan 2013 00:50:32 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-01-16-sqlite%EB%A5%BC-in-memory-db%EB%A1%9C-%EC%93%B0%EA%B8%B0/</guid>
      <description>회사에서 같이 일하는 분이 테스트 프로그램에서 실제 데이터베이스 대신에 SQLite를 쓰는데 문제가 있다는 얘길 하시더라. (실제 데이터베이스에 비해) 너무 느려서, 데이터베이스 쪽과 연동된 코드들이 원하는대로 동작하지 않는다는 것.
그래서 어느 부분이 병목인지 시험해볼 수 있는 팁을 하나 알려드렸다. (SQLite 자체가 문제인지, 아니면 주변 로직이 문제인지 검사하는 팁이라고 좀 더 정확하겠다) SQLite 연결을 생성할 때 파일 경로 대신에 :memory: 를 주는 것. 이러면 in-memory DB 처럼 동작한다.
다만 여기엔 거대한 문제가 있다.</description>
    </item>
    
    <item>
      <title>Linux 데스크탑에 ssd &#43; hdd 구성이면 파티션은 어떻게?</title>
      <link>https://rein.kr/posts/2013-01-16-linux-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%83%91%EC%97%90-ssd-hdd-%EA%B5%AC%EC%84%B1%EC%9D%B4%EB%A9%B4-%ED%8C%8C%ED%8B%B0%EC%85%98%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C/</link>
      <pubDate>Wed, 16 Jan 2013 00:06:15 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-01-16-linux-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%83%91%EC%97%90-ssd-hdd-%EA%B5%AC%EC%84%B1%EC%9D%B4%EB%A9%B4-%ED%8C%8C%ED%8B%B0%EC%85%98%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C/</guid>
      <description>내일 입사하시는 분이 사용할 용도로 데스크탑 머신 + 모니터(U2412M) 두 대가 왔다.
포장 풀고, 등록된 MAC 주소가지고 도메인 주소 설정하고, PXE 로 OS 설치 시작.
현재 설정된 preseed가 작년에 지급되던 데스크탑(i7-2600, hdd 구성) 기준이라, 이번에 지급되기 시작한 데스크탑(i5-3750, ssd + hdd 구성) 이랑 좀 안 맞아서 수동 설치를 해봤다.
좀 고민하다가 결국엔
/ 와 swap 용으로 hdd를 (boot flag 걸고) /home 용으로 ssd를 설정했다.
빌드를 하거나 뭘 하거나 대부분은 ssd에서 할테고, 프로그램 류는 한 번 page cache에 올라가선 아마 안 내려올테니 그냥 잘 돌거라고 믿기로 했다.</description>
    </item>
    
    <item>
      <title>Python 기반의 static page 생성기로 블로그를 옮기려는 중</title>
      <link>https://rein.kr/posts/2013-01-13-python-%EA%B8%B0%EB%B0%98%EC%9D%98-static-page-%EC%83%9D%EC%84%B1%EA%B8%B0%EB%A1%9C-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%98%AE%EA%B8%B0%EB%A0%A4%EB%8A%94-%EC%A4%91/</link>
      <pubDate>Sun, 13 Jan 2013 00:52:13 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2013-01-13-python-%EA%B8%B0%EB%B0%98%EC%9D%98-static-page-%EC%83%9D%EC%84%B1%EA%B8%B0%EB%A1%9C-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%98%AE%EA%B8%B0%EB%A0%A4%EB%8A%94-%EC%A4%91/</guid>
      <description>원래 내 의도는 최근에 읽은 책 (=&amp;ldquo;해커를 위한 디자인 레슨&amp;rdquo;) 과 게임 (=&amp;ldquo;어쌔신 크리드 2 및 그 확장팩, 3)에 대한 리뷰를 쓰려는 거였다. 하지만 블로그 관리자 페이지 로딩이 너무 느려서 — WordPress 버전이 올라갈 수록 더 심한듯? — 좀 괴롭다.
(일반 유저가 볼) 페이지 로딩 자체는 큰 차이가 없어서 그냥 쓸 생각이 많았는데 오늘 좀 추가 많이 기운 듯 하다.
그래서 Pelican 이란 도구를 다음과 같은 이유로 시도해봤다: (이 순서대로 고려한 것은 아님)</description>
    </item>
    
    <item>
      <title>2012, 내 프로그래밍 언어는...</title>
      <link>https://rein.kr/posts/2012-12-31-2012-%EB%82%B4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EB%8A%94/</link>
      <pubDate>Mon, 31 Dec 2012 21:34:23 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-12-31-2012-%EB%82%B4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EB%8A%94/</guid>
      <description>작년에 이어, 올해에도 twitter에 적은 #code212에 덧붙여 글 하나 쓰기.
올해 주로 사용한 언어는,
Python Bash script C++ JavaScript C# Go 정도의 순서인 듯 하다.
작년의 순서와는 상당히 달라졌는데 그 배경은 역시 이직.
Windows 에서 C++ 코드베이스에서 작업하던 환경에서, linux 위에서 python 코드베이스를 작업하니 바뀐 게 많지.
Python
회사를 옮긴 이후로 C++ 코드는 한 줄도 안 짜고 python을 주 언어로 작업했다.
분산 서비스 (w/ restful interface)와 그 프런트엔드에 해당하는 웹 앱, 그리고 이를 테스트하는 코드들을 다 python으로 구성했다.</description>
    </item>
    
    <item>
      <title>WebApp 안에 다른 WebApp 넣어서 보여주기</title>
      <link>https://rein.kr/posts/2012-12-30-webapp-%EC%95%88%EC%97%90-%EB%8B%A4%EB%A5%B8-webapp-%EB%84%A3%EC%96%B4%EC%84%9C-%EB%B3%B4%EC%97%AC%EC%A3%BC%EA%B8%B0/</link>
      <pubDate>Sun, 30 Dec 2012 23:10:26 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-12-30-webapp-%EC%95%88%EC%97%90-%EB%8B%A4%EB%A5%B8-webapp-%EB%84%A3%EC%96%B4%EC%84%9C-%EB%B3%B4%EC%97%AC%EC%A3%BC%EA%B8%B0/</guid>
      <description>최근 몇 일간 이미 만들어진 WebApp A안에 다른 WebApp B이 하나의 페이지처럼 들어가 보이도록 하는 작업을 했다. 사용자는 A에는 접근할 수 있지만, B에는 (대부분) 접근할 수 없는 상태.
정석(?)은 사실 이런 식으로 해야 할 것 같지만:
B를 RESTful API 혹은 어떤 web API를 갖는 서비스로 작성하고 (Service B) B의 RESTful API를 보여주는 view에 해당하는 WebApp을 작성하고 (App B) A는 &amp;lsquo;Service B&amp;rsquo;를 써서 특정 페이지를 만든다 하지만 그렇게 하지는 않고, 여름에 인턴으로 잠시 일했던 puzzlet군이 사용했던 방법을 좀 고쳐서 썼다.</description>
    </item>
    
    <item>
      <title>MacBook Air 설정 기록</title>
      <link>https://rein.kr/posts/2012-12-29-macbook-air-%EC%84%A4%EC%A0%95-%EA%B8%B0%EB%A1%9D/</link>
      <pubDate>Sat, 29 Dec 2012 16:52:32 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-12-29-macbook-air-%EC%84%A4%EC%A0%95-%EA%B8%B0%EB%A1%9D/</guid>
      <description>크리스마스 선물로 마느님께서 MacBook Air를 하사.
여하튼 이제 Lion 부팅하고 1분 정도는 쓰기 괴롭고 + 파워케이블 뽑은 순간 꺼지는 MacBook1은 과거 속으로.
대략 다음과 같은 순서로 설정했다. 나중에 밀고 다시 설치할 일 있으면 참고해야.
AppStore를 통해서 설치했던 프로그램들 재설치 (iA Writer, OmniFocus, OmniGraffle, Caffeine, Caffeinated, Keynote, …); 이 글은 iA Writer에 남겼던 메모를 토대로 썼다. Google Chrome 설치; 이후부터는 웹 브라우저를 써야 설치할 수 있는 애들이. Firefox 및 ChatZilla 설치 iTerm2 설치; solarized theme으로 재설정 /usr/local 밑에 bash-4.</description>
    </item>
    
    <item>
      <title>자유롭게 말하고 생각할 권리를 위해 투표하겠다</title>
      <link>https://rein.kr/posts/2012-12-18-%EC%9E%90%EC%9C%A0%EB%A1%AD%EA%B2%8C-%EB%A7%90%ED%95%98%EA%B3%A0-%EC%83%9D%EA%B0%81%ED%95%A0-%EA%B6%8C%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%B4-%ED%88%AC%ED%91%9C%ED%95%98%EA%B2%A0%EB%8B%A4/</link>
      <pubDate>Tue, 18 Dec 2012 22:36:54 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-12-18-%EC%9E%90%EC%9C%A0%EB%A1%AD%EA%B2%8C-%EB%A7%90%ED%95%98%EA%B3%A0-%EC%83%9D%EA%B0%81%ED%95%A0-%EA%B6%8C%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%B4-%ED%88%AC%ED%91%9C%ED%95%98%EA%B2%A0%EB%8B%A4/</guid>
      <description>내가 대학(원)을 다니고 사회 초년생 시절이었던 몇 년간에 대해 떠올려보자면 몇 가지는 보장된 것 같다. 적어도, 내가 생각하고, 그 생각을 말하는데 뭔가를 신경 쓸 일은 (없거나) 적었던 것 같다.
하지만 지난 몇 년은 생각이야 막을 수 없지만 내가 생활하는 공간 (오프라인/온라인 모두) 에서 생각을 말하는 것 자체를 `스스로&amp;rsquo; 검열하게 되더라.1
최근 뉴스에 따르면 한국은 ITU 총회에서 `인터넷을 검열하는 안&amp;rsquo;2에 대해 찬성했다. 그나마 미국, 영국, 유럽 연합, 캐나다 등의 자유주의 국가들이 반대에도 불구하고 일단 일부 국가는 사인했다 — 여기에는 러시아, 중국 등 자국민에게 억압적인 정부들이 포함되어 있다.</description>
    </item>
    
    <item>
      <title>KGC2012: Avoiding Developer Taxes</title>
      <link>https://rein.kr/posts/2012-10-08-kgc2012-avoiding-devloper-taxes/</link>
      <pubDate>Mon, 08 Oct 2012 20:55:19 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-10-08-kgc2012-avoiding-devloper-taxes/</guid>
      <description>GDC 2012의 “Robustification Through Introspection and Analysis Tools (Avoiding Developer Taxes” 와 유사한 내용인 듯.
강연 내용에 해당하는 코드(clang-extract)는 https://github.com/sk-havok/clang-extract 에서 볼 수 있다.
내용 요약:
고질적인 게임 개발 비용들(taxes)
직렬화
메모리 정보 보기
스크립트 바인딩
버전 관리
Reflection
C++로 개발할 때 reflection 을 이용해서 푼다. 여기엔 이런 문제가 있다:
어떻게 리플렉션을 만들까? 어떻게 (소스 코드와 데이터에) 싱크가 맞을까? 견고성 (robustness) 수동으로 처리하는 것은 문제가 많다. (buggy!)
regex 등으로 헤더를 처리하는 것도 마찬가지.</description>
    </item>
    
    <item>
      <title>이사 삽질</title>
      <link>https://rein.kr/posts/2012-10-05-%EC%9D%B4%EC%82%AC-%EC%82%BD%EC%A7%88/</link>
      <pubDate>Fri, 05 Oct 2012 21:24:04 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-10-05-%EC%9D%B4%EC%82%AC-%EC%82%BD%EC%A7%88/</guid>
      <description>8월 말에 새 집으로 이사를 했다. 다만 전입 신고는 이번 주에야 했음. 어쩌다 그렇게 되었나를 적어보자면 이전 집 임대인이 “집도 안 나가는데 보증금을 어떻게 주냐” 따위의 소리나 하고 있어서. 아니 법대로 하자며. 게다가 전세금을 올려놔서 (1.2억이던 전세금을 1.5억에 내놨다) 안 나가고 있었음.
그래서 다음과 같은 파란 만장한 일정을. 어흑.
6월 초에 이사 가겠다고 이전에 살던 집 임대인에게 통보함. 7월 중순에 8월 말에 이사 갈 집 전세 계약. 8월 말에 이사. 그리고 이전 집의 계약 만료.</description>
    </item>
    
    <item>
      <title>새 PC 조립</title>
      <link>https://rein.kr/posts/2012-09-18-%EC%83%88-%EB%8D%B0%EC%8A%A4%ED%81%AC-%ED%83%91-%EC%A1%B0%EB%A6%BD/</link>
      <pubDate>Tue, 18 Sep 2012 07:36:47 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-09-18-%EC%83%88-%EB%8D%B0%EC%8A%A4%ED%81%AC-%ED%83%91-%EC%A1%B0%EB%A6%BD/</guid>
      <description>이미 3주 다 된 일이지만 정리하는 시점이 Orz.
이사할 때까지 큰 지출은 없애자고 해서 이사 직후까지 버티다가 새 컴을 조립.1 언젠가부터 직접 조립하기 귀찮아서 조립비(=10,000~15,000원쯤?) 내고 조립해서 보내게 했는데, 당일 마감 시한 지났다고(…) 조립비를 적립금으로 돌리고 보낸 ezguide 잊지 않겠다.
부품 사양 검색하는 것도 귀찮아서 대략 ars technica 연재글들만 스크랩했다가 봤다. 연재 시기 때문에 포럼 게시물도 같이 봤음.
Ars Technica system guide: December 2011 Ars System Guide: May 2012 update 간략히 요약하자면, 저 둘 사이의 차이는</description>
    </item>
    
    <item>
      <title>거대 PDF 변환삽질</title>
      <link>https://rein.kr/posts/2012-09-15-%EA%B1%B0%EB%8C%80-pdf-%EB%B3%80%ED%99%98%EC%82%BD%EC%A7%88/</link>
      <pubDate>Sat, 15 Sep 2012 11:36:59 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-09-15-%EA%B1%B0%EB%8C%80-pdf-%EB%B3%80%ED%99%98%EC%82%BD%EC%A7%88/</guid>
      <description>지난 여름 인턴들이 만들고 간 포스터를 웹 페이지 게시할 수준의 이미지로 변환하는 동안 한 삽질기. 포스터는 A1 크기의 pdf 파일로 보관하고 있었다. 크기는 4 MiB에서 90 MiB쯤.
ImageMagick으로 가로 1024px로 변환. 속도도 빠르고 다 좋은데 색감이 이상해졌음. 무슨 문제인지 찾을 수 없어서 다른 방법을 찾기 시작. inkscape으로 열어서 bitmap 내보내기를 하니 색감이 인쇄물과 비슷한 느낌으로 나오더라. 그래서 변환하기 시작. 대략 파일 하나 여는데 30~120 초쯤 걸리더라. 하지맘 일부 작은(=4 MiB 쯤) 파일을 열었더니 가용 메모리 8 GiB 를 다 쓰고 17 G 쯤 할당하다 죽더라.</description>
    </item>
    
    <item>
      <title>새 마우스 구입</title>
      <link>https://rein.kr/posts/2012-09-13-%EC%83%88-%EB%A7%88%EC%9A%B0%EC%8A%A4-%EA%B5%AC%EC%9E%85/</link>
      <pubDate>Thu, 13 Sep 2012 07:51:38 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-09-13-%EC%83%88-%EB%A7%88%EC%9A%B0%EC%8A%A4-%EA%B5%AC%EC%9E%85/</guid>
      <description>잘 써오던 MS Natrual Wireless Laser Mouse 6000 (이름 한 번 길다) 이 완전히 단종되었는지 한국이나 미국 MS 사이트에선 구입할 수 없는 상태가 되었다. 그래서 새로 나온 MS Touch Mouse 란 녀석을 질러 봄.
어떤 의미론 Apple Magic Mouse랑 비슷한 계열(?)의 제품인데, 내가 더 좋아하는 제품 마감 상태는 MS 마우스 쪽인지 이쪽이 더 마감 상태는 마음에 듬. 하얀 제품은 아무래도 쓰다 보면 색이 좀 이상해지기 때문에 (…).
코엑스에 있는 링코에서 샀는데, 무려 브로셔(?</description>
    </item>
    
    <item>
      <title>OnLive 단상</title>
      <link>https://rein.kr/posts/2012-08-18-onlive-%EB%8B%A8%EC%83%81/</link>
      <pubDate>Sat, 18 Aug 2012 20:19:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-08-18-onlive-%EB%8B%A8%EC%83%81/</guid>
      <description>(한국 시간으로) 오늘 새벽 ~ 오후에 걸쳐서 OnLive 관련 기사가 여기저기서 나오고 있다. 상세한 내용은 Pig-Min에 정리된 내용 &amp;ldquo;온라이브(Onlive) 대량 해고. 아직 파산은 아닌 듯? 동접자 1,800명설?&amp;rdquo;을 참조하자.
간단히 소개하자면 OnLive는 다음과 같은 컨셉으로 되어있다.
패캐지/온라인 게임 (PC) 를 서버에서1 띄우고 이를 OnLive의 custom chipset으로 인코딩하고 인터넷 회선을 통해 개별 클라이언트 — PC, Mac, iOS/Android 기기 — 에서 플레이 할 수 있게 제공 한다는 것.
처음 이 서비스에 대한 얘기를 들었을 때 내 생각은 &amp;ldquo;그냥 hype이나 되면 잘 된 거겠지&amp;rdquo; 였는데 결론은 역시나 인듯.</description>
    </item>
    
    <item>
      <title>프로그래머의 일상: git 저장소 권한 관리</title>
      <link>https://rein.kr/posts/2012-08-16-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-git-gerrit/</link>
      <pubDate>Thu, 16 Aug 2012 21:01:08 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-08-16-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-git-gerrit/</guid>
      <description>지금 일하는 곳에선 linux 개발환경을 쓰고, 소스 저장소로는 git을 쓴다. 그리고 여기에 코드 리뷰 도구인 gerrit2를 이용하는데, 이 조합으로 작업하면서 느낀 점을 간단히 써본다.
git이 DVCS이긴 하지만 그래도 canonical 저장소는 있어야 한다. 근데 git 특성(?)상 권한관리의 개념이 희박하다.1 저장소가 전체 쓰기가 가능하거나/읽기만 가능하거나/접근할 수 없거나 정도의 권한 수준만 있다. 그래서 많은 프로젝트의 canonical git 저장소는 linux kernel처럼 hierachical하게 패치/메일로 merge하거나, github.com의 pull request처럼 한 명, 혹은 소수가 gate-keeper의 역할을 맡아서 이를 대신한다.</description>
    </item>
    
    <item>
      <title>Cgames 서비스 단상</title>
      <link>https://rein.kr/posts/2012-07-18-c-games-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%8B%A8%EC%83%81/</link>
      <pubDate>Wed, 18 Jul 2012 23:30:23 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-07-18-c-games-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%8B%A8%EC%83%81/</guid>
      <description>오후에 잠시 Cgames 사업 설명회에 다녀왔다.
이 이하는 내 의견; 그러니까 내 현재 고용주와는 상관 없는 얘기.
서비스 구성은 대략 다음과 같다:
LG U+가 서비스 사업자 대만의 ubitus에서 만든 클라우드에서 게임을 실행하고, 이걸 스트리밍하는 솔루션을 사용함 클라우드를 구성하기 위한 하드웨어는 nvidia의 GeForce GRID 기반 관심 있는 부분에 대해서 정리하자면 대략 아래와 같음.
서비스가 현실성 있는 이유 (nvidia GM): 클라우드에서 실제 게임 클라이언트에 표시될 때 까지 걸리는 지연 시간이 대략 서버 단에서 60ms, 네트워크에서 &amp;lt; 30ms, 실제 클라이언트에서 30~60ms.</description>
    </item>
    
    <item>
      <title>프로그래머의 일상: IRQ 충돌</title>
      <link>https://rein.kr/posts/2012-07-17-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-irq-%EC%B6%A9%EB%8F%8C/</link>
      <pubDate>Tue, 17 Jul 2012 22:05:21 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-07-17-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-irq-%EC%B6%A9%EB%8F%8C/</guid>
      <description>오늘 퇴근이 한 시간 가까이 늦어진 건 몇 주전의 일도 제대로 기억 못하는 내 기억력 탓 Orz.
퇴근시간 즈음해서 오늘 받은 머신의 MAC 주소가 등록되었나 확인하고 설정 시작.
BIOS에서 네트워크 부팅을 활성화하고 어째서인지 secondary LAN card인 intel GBE도 네트워크 부팅하려 시도하길래 끄고 OS 설치한 후 네트워크 설정 확인하고 필요한 팩키지들 설치 시작 ?! Secondary LAN card로 통신 불가 tshark 으로 덤프 떠 봐도 뭐 보이는 거 없음 재 부팅하고 재시도 (…) 스위치에서 포트 바꾸고 재시도 (…) (결국) syslog/dmesg 보기 시작 수상쩍은 irq 충돌 메시지 흑흑, 대략 2주?</description>
    </item>
    
    <item>
      <title>근황 보고 2012-07-10</title>
      <link>https://rein.kr/posts/2012-07-10-%EA%B7%BC%ED%99%A9-%EB%B3%B4%EA%B3%A0-2012-07-10/</link>
      <pubDate>Tue, 10 Jul 2012 23:11:40 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-07-10-%EA%B7%BC%ED%99%A9-%EB%B3%B4%EA%B3%A0-2012-07-10/</guid>
      <description>가장 최근에 쓴 글이 한 달 반 전이라니 Orz
일단 그 사이에 3 개월 수습 기간이 종료. 달라진 거라면 복지 카드가 나온다 정도인 것 같지만 (…). 이젠 대략 적응이 끝나간다. 서점이 매우 먼 것 (지하철 한 정거장, 혹은 도보 20분) 이 좀 슬프다. 책 사러 가는 게 꽤 큰 일이 되어버렸다. 흑흑.
6월 중순에 제주도에도 두 번 다녀오긴 했지만 아들이 아파서 데리고 가고 + 데리러 간 일이라 그다지 휴가 같은 일은 없었다.</description>
    </item>
    
    <item>
      <title>dput (sftp) &#43; inotify = FAIL</title>
      <link>https://rein.kr/posts/2012-05-27-dput-sftp-inotify-fail/</link>
      <pubDate>Sun, 27 May 2012 07:40:15 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-05-27-dput-sftp-inotify-fail/</guid>
      <description>내부적으로 사용하는 apt 저장소에서는 dput이 incoming으로 올린 데이터를 crontab 을 이용해서 실제 배포용 디렉터리에 복사하고 / .db 업데이트하고 / … 등을 처리하게 했다.
crontab을 써서 사실 상 polling하는 구조가 맘에 안들어서, linux의 inotify를 이용해서 이걸 우회하려고 지난 주 후반부에 뭔가 진행해봤다. 대략 chroot jail에 sftp만 허용한 계정을 만들고 여기에 대해서 upload를 감지하자는거였는데 대략 다음과 같이 진행했다.
scp로 업로드한 파일을 inotify가 인지하고 이에 대해서 처리하는 코드 테스트 (정상 작동) sftp 로 업로드한 파일에 대해선 inotify가 인지못하고 crontab이 처리 ?</description>
    </item>
    
    <item>
      <title>django 기반 웹 사이트 배포 방법?</title>
      <link>https://rein.kr/posts/2012-05-23-django-%EA%B8%B0%EB%B0%98-%EC%9B%B9-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EB%B0%B0%ED%8F%AC-%EB%B0%A9%EB%B2%95/</link>
      <pubDate>Wed, 23 May 2012 20:39:28 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-05-23-django-%EA%B8%B0%EB%B0%98-%EC%9B%B9-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EB%B0%B0%ED%8F%AC-%EB%B0%A9%EB%B2%95/</guid>
      <description>django 기반의 웹 사이트를 배포해야 하는데, 타겟 머신이 확정되지 않은 상태에서도 설치할 파일들은 저장할 수 있어야하고 + 설치 시기도 적당히 제어할 수 있어야 하는 상황.
일단 다음과 같은 가정으로 설치하게 했다:
(Dev) django app은 데비안 패키지(.deb)로 묶는다 (Deploy) .deb은 chroot-jailed sftp에 전송 (Deploy) 올린 애를 apt 저장소 형식으로 내보냄 (Service front-end) 이걸 자동으로 받거나, 원격 스크립트, 혹은 로컬에서 직접 설치 (Service front-end) 설치 작업 자체는 .deb의 postinst 를 이용한다: 사이트 실제 코드는 .</description>
    </item>
    
    <item>
      <title>2012-05-23</title>
      <link>https://rein.kr/posts/2012-05-23-2012-05-23/</link>
      <pubDate>Wed, 23 May 2012 19:36:43 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-05-23-2012-05-23/</guid>
      <description></description>
    </item>
    
    <item>
      <title>NDC 참관기: 덤프 파일을 통한 사후 디버깅 실용 테크닉</title>
      <link>https://rein.kr/posts/2012-05-02-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EB%8D%A4%ED%94%84-%ED%8C%8C%EC%9D%BC%EC%9D%84-%ED%86%B5%ED%95%9C-%EC%82%AC%ED%9B%84-%EB%94%94%EB%B2%84%EA%B9%85-%EC%8B%A4%EC%9A%A9-%ED%85%8C%ED%81%AC%EB%8B%89/</link>
      <pubDate>Wed, 02 May 2012 08:02:54 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-05-02-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EB%8D%A4%ED%94%84-%ED%8C%8C%EC%9D%BC%EC%9D%84-%ED%86%B5%ED%95%9C-%EC%82%AC%ED%9B%84-%EB%94%94%EB%B2%84%EA%B9%85-%EC%8B%A4%EC%9A%A9-%ED%85%8C%ED%81%AC%EB%8B%89/</guid>
      <description>슬라이드는 &amp;ldquo;NDC2012 덤프 파일을 통한 사후 디버깅 실용 테크닉&amp;ldquo;에서 볼 수 있음.
넥슨 김이선 님의 발표.
내용 요약: 돈을 벌기 전에는 배포 전 디버깅이 중요하다. 라이브 상황에서는 배포 후 디버깅이 더 중요해진다.
덤프 파일 특정 상황 — 특히 안좋은 상황 — 에서 프로세스 상태를 디버깅 용으로 남기는 것. 풀 메모리 덤프를 남기면 좋지만 커서(…) 미니 덤프를 남긴다. 상용 서비스까지 갔다면 미니덤프를 남기고 이를 수집해서 디버깅하는 시스템은 필수.
하지만 미니 덤프 디버깅의 현실은…</description>
    </item>
    
    <item>
      <title>NDC 참관기: 실시간 HTTP 양방향 통신에 붙여…</title>
      <link>https://rein.kr/posts/2012-05-02-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EC%8B%A4%EC%8B%9C%EA%B0%84-http-%EC%96%91%EB%B0%A9%ED%96%A5-%ED%86%B5%EC%8B%A0%EC%97%90-%EB%B6%99%EC%97%AC/</link>
      <pubDate>Wed, 02 May 2012 08:01:35 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-05-02-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EC%8B%A4%EC%8B%9C%EA%B0%84-http-%EC%96%91%EB%B0%A9%ED%96%A5-%ED%86%B5%EC%8B%A0%EC%97%90-%EB%B6%99%EC%97%AC/</guid>
      <description>이전 글에 안 써놓은 감상을 여기에.
HTTP 자체가 프로토콜 적으로 한계를 갖기 때문에 여러 가지 보완 방법이 제시되고 있는데, 현재 상태를 다른 수단으로 극복하기 위한 몇 가지 시도에 대해서 논해서 재밌었다.
구현이 궁금했지만 까본 적은 없었던 몇 가지 구현체 — FB 메신저, gmail에 달린 google talk — 를 분석하고 이에 대한 단점 (장점이야 HTTP 한계 극복이니) 을 논한 점은 +. html5의 web-socket을 좀 더 자세히 다뤄줬으면 좋았겠지만 이건 스코프를 벗어나는 문제인 듯 하니 어쩔 수 없겠지.</description>
    </item>
    
    <item>
      <title>NDC 참관기: 실시간 HTTP 양방향 통신</title>
      <link>https://rein.kr/posts/2012-04-26-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EC%8B%A4%EC%8B%9C%EA%B0%84-http-%EC%96%91%EB%B0%A9%ED%96%A5-%ED%86%B5%EC%8B%A0/</link>
      <pubDate>Thu, 26 Apr 2012 09:24:49 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-04-26-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EC%8B%A4%EC%8B%9C%EA%B0%84-http-%EC%96%91%EB%B0%A9%ED%96%A5-%ED%86%B5%EC%8B%A0/</guid>
      <description>수요일(2012-04-25) 오후에 있었던 이승재 군의 발표.
발표 자료는 http://ricanet.com/new/view.php?id=blog/120425 에서.
HTTP Protocol의 한계 http는 request/response protocol이다. 이로 인해서 클라이언트 쪽의 이벤트는 서버 쪽에 쉽게 전달할 수 있지만, 서버 쪽의 이벤트는 클라이언트가 요청하기 전에는 전달할 수 없다.
그런데 현재의 웹 쪽 트렌드를 보자면, twitter나 facebook, google mail (or talk) 같은 경우 실시간으로 메시지를 보낸다. 어떻게 하는걸까?
이를 극복하기 위한 기법들 기본적으로 꼼수다. 프로토콜의 한계 때문에.
Polling
웹 브라우저에서 주기적으로 요청을 보낸다. (클라이언트 쪽 타이머 이용) 문제:</description>
    </item>
    
    <item>
      <title>프로그래머의 일상: 적응하기</title>
      <link>https://rein.kr/posts/2012-04-20-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EC%A0%81%EC%9D%91%ED%95%98%EA%B8%B0/</link>
      <pubDate>Fri, 20 Apr 2012 23:34:15 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-04-20-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EC%A0%81%EC%9D%91%ED%95%98%EA%B8%B0/</guid>
      <description>짧은 방학이 끝나고 다시 출근하기 시작한지도 벌써 3주. 그 간에 있었던 일을 간략히 정리하는 의미에서 글 하나.
새 팀에 들어가서 개발 환경에 적응하기 모드 다행히 OS는 익숙한 ubuntu desktop이라 편하다. 키보드도 내 realforce (101 key; ps/2) 들고갔고. 외부 인터넷 연결이 있는 linux desktop은 정말 개발하는데 편하다. 반쯤은 apt 와 pip (PyPI?) 덕분인듯 Windows에서 binutils 포팅된 것 설치하고 삽질한 거나 폐쇄망에 물린 linux 머신에 패키지 설치하는 삽질에 비하면 ㅠㅠㅠㅠ
(DELL U2412M + intel i7-2600 + RAM 8GiB) 조합으로두 대 받았는데, 데스크 탑 환경으로 고른 녀석이 내장 사운드 카드 출력에 잡음이 낀다 ㅠㅠ.</description>
    </item>
    
    <item>
      <title>방학 끝</title>
      <link>https://rein.kr/posts/2012-04-01-%EB%B0%A9%ED%95%99-%EB%81%9D/</link>
      <pubDate>Sun, 01 Apr 2012 19:41:17 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-04-01-%EB%B0%A9%ED%95%99-%EB%81%9D/</guid>
      <description>3주 좀 안되게 반백수 생활을 했다. 회사 옮기는 사이의 휴가 소진 모드.
큰 아들과 시간을 보내려고 노력했다. 아들 어린이집 통원을 같이 했음. 십 분도 안 걸리는 짧은 길에서도 말문 트인 아이는 매우 재밌음. 감기로 병원도 다섯 번쯤가고, 공원도 가고 키즈카페도 가고 그랬음. 평일 오후엔 집에 없는 내가 있어서인지 잘 놀더라. 이제부턴 주말아니면 이 정도 놀아주는 것도 쉽지 않겠지. 육아 휴직을 하기엔 모아둔 돈도 없고, 육아 휴직비는 쥐꼬리고 에휴.
운전 면허 학원을 다녔다.</description>
    </item>
    
    <item>
      <title>블로그 로딩 시간 줄이기</title>
      <link>https://rein.kr/posts/2012-03-31-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EB%A1%9C%EB%94%A9-%EC%8B%9C%EA%B0%84-%EC%A4%84%EC%9D%B4%EA%B8%B0/</link>
      <pubDate>Sat, 31 Mar 2012 23:32:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-03-31-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EB%A1%9C%EB%94%A9-%EC%8B%9C%EA%B0%84-%EC%A4%84%EC%9D%B4%EA%B8%B0/</guid>
      <description>주말 저녁에 블로그 패이지 뜨는 속도가 이상하리만치 느려서 최적화하기로 결정했다 — 심지어 구글은 페이지 랭크에 로딩 속도를 반영한다.
사용한 도구는 Chrome용 Pagespeed 확장기능. 여기서 네트워크 탭을 이용해서 오래걸리는 기능을 하나씩 제거했다. 최적화 하기 이전 측정치는 다음과 같다.
WordPress JetPack 관련
이 플러그인엔 적어도 두 가지 문제가 있다. 우선 통계 플러그인이 제 3자인 quantcast 쪽에 js파일을 큰 쿠키를 던져 요청하고, 이걸 실행한다. 위에서 quant.js, pixel;… 에 해당하는 내용. 이게 적어도 500ms는 걸리더라.</description>
    </item>
    
    <item>
      <title>VS 2010 빌드 속도 올리기</title>
      <link>https://rein.kr/posts/2012-03-28-vs-2010-%EB%B9%8C%EB%93%9C-%EC%86%8D%EB%8F%84-%EC%98%AC%EB%A6%AC%EA%B8%B0/</link>
      <pubDate>Wed, 28 Mar 2012 21:24:35 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-03-28-vs-2010-%EB%B9%8C%EB%93%9C-%EC%86%8D%EB%8F%84-%EC%98%AC%EB%A6%AC%EA%B8%B0/</guid>
      <description>C++만 가지고 쓰는 얘기.
작년에 지급 받은 머신 셋팅을 수정해서 어떻게 빌드 속도를 올렸는지 정리. 아마 한동안 업으로 Win32에서 C++ 할 일은 없을 것 같아서 기억이 사라지기 전에 정리. 저 머신 자체가 내 손을 이미 떠나서 틀린 부분이 있을테니 발견하면 지적 좀 해주시길.
머신 스펙은 대략,
CPU: intel i7-2600 DRAM: 16 GiB Storage: intel SSD 80 GB + SATA HDD 500 GB 그리고 SSD 용량이 적어서 아래 같은 일을 추가로 했다.</description>
    </item>
    
    <item>
      <title>다른 회사로 옮깁니다</title>
      <link>https://rein.kr/posts/2012-03-15-%EB%8B%A4%EB%A5%B8-%ED%9A%8C%EC%82%AC%EB%A1%9C-%EC%98%AE%EA%B9%81%EB%8B%88%EB%8B%A4/</link>
      <pubDate>Thu, 15 Mar 2012 20:39:20 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-03-15-%EB%8B%A4%EB%A5%B8-%ED%9A%8C%EC%82%AC%EB%A1%9C-%EC%98%AE%EA%B9%81%EB%8B%88%EB%8B%A4/</guid>
      <description>이번 달 말까지만 현재 회사에 출근하고, 아마도 다음 달 부터는 다른 회사로 출근할 예정. 현재는 휴가 소진 중. 대략 그 동안 첫째랑 태어난지 얼마 안된 둘째 돌보고, 운전 면허도 따고 하려는 중.
옮기게 된 계기는 회사에서 짜증났던 것들이 최근의 몇 가지 일로 임계점을 지난 것. 회사에서 필요한 걸 안해주면, 내 돈으로라도 떼운단 생각이었는데, 그게 허용되는 일이 아니더라. 자비로 모니터 2대, 메모리 16GiB 증설, 키보드/마우스 구입해서 썼는데, 이걸 사용하는 과정에서 몇 가지 규정으로 문제삼자 제대로 폭발했음 -_-.</description>
    </item>
    
    <item>
      <title>node.js 혹은 CPS 단상</title>
      <link>https://rein.kr/posts/2012-03-03-node-js-%ED%98%B9%EC%9D%80-cps-%EB%8B%A8%EC%83%81/</link>
      <pubDate>Sat, 03 Mar 2012 14:30:19 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-03-03-node-js-%ED%98%B9%EC%9D%80-cps-%EB%8B%A8%EC%83%81/</guid>
      <description>지난 주에 둘째 태어나서 병원에 있는 동안 SNS와 블로고스피어를 스쳐지나간 글 중 제일 눈에 띄는 부분이 &amp;ldquo;CPS와 node.js&amp;rdquo; 관련된 내용이었다.
iPhone은 정리에는 그다지 좋은 기기라고 못하겠다. 내가 생각하던 문맥을 저장하기엔 내 활용 방법의 문제거나 기기가 부족하거나; 여하튼 기억나는 글들을 여기 정리하자면 (twitter는 정리가 불가능하니 제외),
웹 서버 아키텍처와 프로그래밍 모델의 진화 http://ricanet.com/new/view.php?id=blog/110903 (node.js의 I/O 모델을 점검하기에 좋은 글)
Node.js의 소개글 들에 대한 유감 http://himskim.egloos.com/3810574
이에 대한 홍민희 님의 글 http://blog.dahlia.kr/post/18300740247</description>
    </item>
    
    <item>
      <title>리뷰: The Art of Readable Code</title>
      <link>https://rein.kr/posts/2012-02-22-%EB%A6%AC%EB%B7%B0-the-art-of-readable-code/</link>
      <pubDate>Wed, 22 Feb 2012 09:40:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-02-22-%EB%A6%AC%EB%B7%B0-the-art-of-readable-code/</guid>
      <description>&amp;ldquo;어떻게 하면 읽기 쉬운, 혹은 이해하기 쉬운 코드를 짤 것인가&amp;quot;에 관한 책. 짧은 에세이 몇 편이라고 생각하면 된다. 180 페이지 정도 밖에 안됨…
크게 세 가지 주제를 다룬다:
표면적인 것 개선하기 (Surface-level improvements): 변수 명 짓기, 코멘트 달기/달지 말기, 반복문과 로직 단순하게 만들기 (Simplifying loops and logic): 읽기 쉬운 구조로 짜기; 중간 변수 뽑기; 거대한 expression쪼개기 등등 코드 재조직하기 (Reorganizing your code): 리팩터링에 가까운 이야기들; 한 번에 하나의 일만 하게 코드 뽑아내기 등등 (덤.</description>
    </item>
    
    <item>
      <title>회사에서 사용하는 모니터 구성 변경</title>
      <link>https://rein.kr/posts/2012-01-18-%ED%9A%8C%EC%82%AC%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%AA%A8%EB%8B%88%ED%84%B0-%EA%B5%AC%EC%84%B1-%EB%B3%80%EA%B2%BD/</link>
      <pubDate>Wed, 18 Jan 2012 21:32:48 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-01-18-%ED%9A%8C%EC%82%AC%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%AA%A8%EB%8B%88%ED%84%B0-%EA%B5%AC%EC%84%B1-%EB%B3%80%EA%B2%BD/</guid>
      <description>오늘 오후까지는 회사에서 삼성 모니터 3대 (TN 23&amp;quot;, 2048 by 1152 두 대; TN 17&amp;quot;, 1280 by 1024 한 대) 구성으로 사용하고 있었다. 개발 머신에서 17&amp;quot; + 23&amp;quot;을 쓰고, 인터넷 연결된 머신에서 23&amp;quot;를 한 대 쓰는 구성으로 했다.
사실 이런 구성이 된 건 예전에 Dell UltraSharp U2407 을 얻어서 사용했는데, 이게 맛이 가면서 삼성 SyncMaster 2343BWX (TN 패널) 을 받게 되어서 임. 이거 하나랑 17” 두 개 쓰다가 17” 하나를 동일한 23”로 바꿔서 현재까지의 상태가 된 것.</description>
    </item>
    
    <item>
      <title>절전 정책인지 뭔지</title>
      <link>https://rein.kr/posts/2012-01-06-%EC%A0%88%EC%A0%84-%EC%A0%95%EC%B1%85%EC%9D%B8%EC%A7%80-%EB%AD%94%EC%A7%80/</link>
      <pubDate>Fri, 06 Jan 2012 22:55:41 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-01-06-%EC%A0%88%EC%A0%84-%EC%A0%95%EC%B1%85%EC%9D%B8%EC%A7%80-%EB%AD%94%EC%A7%80/</guid>
      <description>최근 회사에서 아주 죽을 맛이다.
정부의 절전시책인가 뭔가로 회사에서 냉방기 — 난방기 아님 — 사용을 금지하고, 공조 시설 가동을 최소화 한단다. 그 결과가 뭐냐하면, 이 한겨울-_-에 28도까지 올라가서 일하기 괴로운 사무실.
고성능 CPU/GPU의 면적당 발생하는 열은 항성 표면에 준하는 수준인데 이런걸 2~3개씩 달고 있는 PC를, 사람마다 k개 (2~5?), 그리고 팀 별로 공용 장비로 들고있는 것 까지 생각하면 발생하는 열은 좀 삭막한 수준; 이 정부가 친환경 성장 정책에 전혀 관심이 없다고 느껴지는게,</description>
    </item>
    
    <item>
      <title>위키백과의 BMP페이지에서</title>
      <link>https://rein.kr/posts/2012-01-01-%EC%9C%84%ED%82%A4%EB%B0%B1%EA%B3%BC%EC%9D%98-bmp%ED%8E%98%EC%9D%B4%EC%A7%80%EC%97%90%EC%84%9C/</link>
      <pubDate>Sun, 01 Jan 2012 08:10:15 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2012-01-01-%EC%9C%84%ED%82%A4%EB%B0%B1%EA%B3%BC%EC%9D%98-bmp%ED%8E%98%EC%9D%B4%EC%A7%80%EC%97%90%EC%84%9C/</guid>
      <description>Basic Multilingual Plane 페이지를 보다가 나온 대목:
Sometimes, the terms “astral plane” and “astral characters” are used informally to refer to the planes above the Basic Multilingual Plane (planes 1–16) and their characters.
(강조는 내가 넣은 것)
아스트랄 플레인이라니!! 사실 슬레이어즈는 유니코드 문자셋의 앞쪽 코드 포인트들이 뒷쪽 코드 포인트(아스트랄 플레인)를 사용한 암투인 것.</description>
    </item>
    
    <item>
      <title>2011, 내 프로그래밍 언어는…</title>
      <link>https://rein.kr/posts/2011-12-31-2011-programming-language-used-by-rein/</link>
      <pubDate>Sat, 31 Dec 2011 20:35:13 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-12-31-2011-programming-language-used-by-rein/</guid>
      <description>twitter에 #code2011 에 덧붙여 글 하나 쓰기. 2011년에 주로 사용한 언어는,
C++ Python C# JavaScript SQL Lua Go 순으로 쓴 것 같다. (트윗에는 Lua를 못 적었음)
C++ 우선 주 언어로 쓴 C++. 내년에 공개될 모 서버를 작성했다. 사내 테스트까지 나간 것 중 C++11을 사용한 것으론 처음일듯. 그리고 옮겨간 팀의 서버 역시 C++로 작성하고 있다. 크래시 보고 도구도 밑 단은 C++…
내가 주목한 특징을 꼽자면,
바위에 끌로 새기는 것 같이 작업함 – 집중해서 빡쎄게; lambda로 이전에 boost 쓰는 걸 대체 – C++11 만세!</description>
    </item>
    
    <item>
      <title>디스크 공간이 부족하다</title>
      <link>https://rein.kr/posts/2011-12-26-%EB%94%94%EC%8A%A4%ED%81%AC-%EA%B3%B5%EA%B0%84%EC%9D%B4-%EB%B6%80%EC%A1%B1%ED%95%98%EB%8B%A4/</link>
      <pubDate>Mon, 26 Dec 2011 23:33:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-12-26-%EB%94%94%EC%8A%A4%ED%81%AC-%EA%B3%B5%EA%B0%84%EC%9D%B4-%EB%B6%80%EC%A1%B1%ED%95%98%EB%8B%A4/</guid>
      <description>작년 가을에, Google BreakPad를 써서 크래시 덤프를 보낼 수 있겠다고 썼다. 여하튼 이걸 위해 간단한 웹 서비스를 만들었었다. 팀 내에서 이걸 쓰다가 좀 확장해서 같은 스튜디오 내의 다른 팀에도 약간 적용했음. 대략
매일 매일 얼마나 많은 덤프가 나오는지, 가장 많이 발생한 원인 (WinDbg의 버킷 비슷한 것) 은 뭔지, 같은 원인으로 죽은 덤프는 어떤지, 각각의 덤프 별 콜 스택 플랫폼 정보 (OS 버전, 각 모듈 별 버전) 는 어떤지 가 나오는 페이지를 만들었다.</description>
    </item>
    
    <item>
      <title>Windows 서비스를 시작하지 못하는 문제 디버깅</title>
      <link>https://rein.kr/posts/2011-12-14-windows-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC-%EC%8B%9C%EC%9E%91%ED%95%98%EC%A7%80-%EB%AA%BB%ED%95%98%EB%8A%94-%EB%AC%B8%EC%A0%9C-%EB%94%94%EB%B2%84%EA%B9%85/</link>
      <pubDate>Wed, 14 Dec 2011 21:54:17 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-12-14-windows-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC-%EC%8B%9C%EC%9E%91%ED%95%98%EC%A7%80-%EB%AA%BB%ED%95%98%EB%8A%94-%EB%AC%B8%EC%A0%9C-%EB%94%94%EB%B2%84%EA%B9%85/</guid>
      <description>연초에 .NET 4.0으로 작성한 Windows 서비스가 하나 있다. 이걸 개발 팀 – 운영 팀 사이에서 쓰고 있는데, 지난 주 목요일에 이게 동작하지 않는다고 연락이 왔다. 그에 해당하는 시점이 &amp;ldquo;시스템 업데이트를 위해 머신 재 시작 후&amp;quot;라서 그게 문젤까 의심했는데, 문제가 생기도록 변경된 부분이 딱 하나였다.
운영 팀에서 &amp;ldquo;서비스와 데스크톱 상호 작용 허용&amp;rdquo; (allow service to interact with desktop) 설정을 켰음 – 이유는 모르겠지만, 대부분의 개발팀이 이 설정을 요구한다고; 계정은 로컬 시스템 계정 (local administrator) 였고; 여하튼 이 설정이 켜져서 문제가 된 부분은 대략 이렇다:</description>
    </item>
    
    <item>
      <title>Python Jinja2</title>
      <link>https://rein.kr/posts/2011-12-05-python-jinja2/</link>
      <pubDate>Mon, 05 Dec 2011 23:44:41 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-12-05-python-jinja2/</guid>
      <description>한 동안 포스팅을 못했다. 그간 있었던 일을 요약하자면,
팀이 바뀌었다 모 게임의 서버를 새로 짜는 작업을 하고 있다 회사에서도 linux 서버를 만지기 시작 첫 번째 일과 두 번째는 사실 한 몸이고; 나머지에 대해서 기록;
저 linux 서버 위에 예전에 짰던 크래시 덤프 수집하는 녀석을 올렸다. Windows + IIS + MSSQL Server + WSGI (isapi 사용) application 이던 걸 linux + apache2 + MySQL (or CouchDB) + WSGI (mod_wsgi) 로 옮겼다. 실제 서버는 아마 nginx proxying + gunicorn 같은 애를 쓰게 되지 않을까 싶지만.</description>
    </item>
    
    <item>
      <title>VS 2010 소스 서버 설정과 홈 디렉터리 문제</title>
      <link>https://rein.kr/posts/2011-10-27-vs-2010-%EC%86%8C%EC%8A%A4-%EC%84%9C%EB%B2%84-%EC%84%A4%EC%A0%95%EA%B3%BC-%ED%99%88-%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC-%EB%AC%B8%EC%A0%9C/</link>
      <pubDate>Thu, 27 Oct 2011 23:53:56 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-10-27-vs-2010-%EC%86%8C%EC%8A%A4-%EC%84%9C%EB%B2%84-%EC%84%A4%EC%A0%95%EA%B3%BC-%ED%99%88-%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC-%EB%AC%B8%EC%A0%9C/</guid>
      <description>최근에 받은 머신에서 크래시 덤프 디버깅 하다 겪은 일.
VisualStudio 2010에서 포스트모텀 디버깅 &amp;ndash; 혹은 사후 디버깅. 크래시 덤프를 가지고 진행하는 디버깅 &amp;ndash; 할 때 심볼 서버, 소스 서버를 이용해서 디버깅하는데, 얘가 소스 서버에서 파일을 안 가져온다. 그래서 내가 추적한 순서
svn.exe 가 있는가 – 없으면 svn.exe cat … 이 실행 안될테니
심볼 서버 접근이 잘 되는가 – 안 그러면 .pdb 에서 소스 리스팅을 못할테니
.pdb에 소스 정보가 없는가 – 없으면 못 찾아올테니</description>
    </item>
    
    <item>
      <title>Rest in peace, dmr</title>
      <link>https://rein.kr/posts/2011-10-13-rest-in-peace-dmr/</link>
      <pubDate>Thu, 13 Oct 2011 21:11:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-10-13-rest-in-peace-dmr/</guid>
      <description>Dennies MacAlistair Ritche (dmr) 사망. (실제 날짜는10/8일이라 한다)
여기서 그의 명복을 빌어본다.
지난 주의 스티브 잡스 사망도 슬픈 일이지만, 개인적으로는 데니스 리치의 사망이 더 임팩트 큰 일.
간단히 말해서, 우리가 현재 쓰고 있는 SW의 가장 밑 바닥을 지탱하는 기술과 개념이 데니스 리치 손에서 태어났다.
시스템 프로그래밍의 가장 널리 쓰이는 C 언어의 창시자다; 우리가 쓰는 linux, Windows는(아마?)는 C 기반의 커널로 되어 있다. 대표적인 웹 서버 (아파치나 nginx) 역시 C로 만들었다. 그리고 이 C로 Unix를 재 작성(!</description>
    </item>
    
    <item>
      <title>리뷰: LHC, 현대 물리학의 최전선</title>
      <link>https://rein.kr/posts/2011-09-02-%EB%A6%AC%EB%B7%B0-lhc-%ED%98%84%EB%8C%80-%EB%AC%BC%EB%A6%AC%ED%95%99%EC%9D%98-%EC%B5%9C%EC%A0%84%EC%84%A0/</link>
      <pubDate>Fri, 02 Sep 2011 09:09:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-09-02-%EB%A6%AC%EB%B7%B0-lhc-%ED%98%84%EB%8C%80-%EB%AC%BC%EB%A6%AC%ED%95%99%EC%9D%98-%EC%B5%9C%EC%A0%84%EC%84%A0/</guid>
      <description>LHC에 관한 책을 딱 한 권만 읽고 싶다면? 에 나온 책 “LHC, 현대 물리학의 최전선”을 읽다 느낀 점. 대학과 대학원을 거치는 동안 물리학이라곤 4학점 * 2학기 과목을 교양과목으로 신입생 때 들은 것 뿐이라 내 이해수준이 매우 조야하다는 것이 제일 컸고(…).
내 조야한 이해 수준에도 불구하고, 책은 매우 즐겁게 읽었다. 얇지 않은 책이지만 대략 이틀 만에 다 봄. “엘리건트 유니버스”를 읽고 나서 LHC가 만들어진다는 점에 대해 꽤나 관심이 있었는데, 여기에 더 궁금하게 만들고 `왜 중요한지’에 대해서 설명해준 덕에 LHC에 대한 관심이 더 커진 듯.</description>
    </item>
    
    <item>
      <title>Project Dark Star 그 후는?</title>
      <link>https://rein.kr/posts/2011-08-11-project-dark-star-%EA%B7%B8-%ED%9B%84%EB%8A%94/</link>
      <pubDate>Thu, 11 Aug 2011 20:22:47 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-08-11-project-dark-star-%EA%B7%B8-%ED%9B%84%EB%8A%94/</guid>
      <description>작년 2월에 Sun Microsystems (이제는 Oracle) 에서 개발하던 Java 기반 게임 서버 프레임워크인 Project Dark Star가 접히고, 오픈 소스 프로젝트로 fork 했다는 얘길 했다.
현재 상황은 대략 망해가는 프로젝트인 것 같다.
마지막 stable version이 작년 12월에 릴리즈. 다운로드 수는 누적으로 70회;
마지막에 등록된 티켓(trac issue)이 올해 2월.
위키 최종 편집 시간이 6월 &amp;ndash; 그 이전에 올해 들어와서 수정된 페이지가 6개 , 그리고 각각 1번씩만 수정 &amp;ndash; 포럼에만 활동이 약간 있는 정도.</description>
    </item>
    
    <item>
      <title>내 생산성의 장애물</title>
      <link>https://rein.kr/posts/2011-08-09-%EB%82%B4-%EC%83%9D%EC%82%B0%EC%84%B1%EC%9D%98-%EC%9E%A5%EC%95%A0%EB%AC%BC/</link>
      <pubDate>Tue, 09 Aug 2011 23:28:36 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-08-09-%EB%82%B4-%EC%83%9D%EC%82%B0%EC%84%B1%EC%9D%98-%EC%9E%A5%EC%95%A0%EB%AC%BC/</guid>
      <description>프로그래밍하다보면 부드럽게 달리다가 턱에 퍽하고 걸린다고 느낄 때가 있다.
유닛 테스트(혹은 기능 테스트)를 돌렸는데 끝이 안난다거나 컴파일러 메시지가 쭉 뜨고있거나 혹은 링커/코드 생성 메시지에서 끝이 안나고 있다거나 빌드 서버에서 끝없이 노란 불(=빌드 중)이 들어가 있거나 안티바이러스 스캐닝이 하드 디스크를 긁고 있거나 ((물론 이 경우에는 정말 아무 것도 할 수 없기 때문에, 수단과 방법을 가리지 않고 안티 바이러스를 종료한다. 안 꺼지면 파워 버튼을 연타)) 여하튼 이런 일에 신경이 쓰이면 뭔가 발이 잡힌 것 같고, 집중이 퍽하고 깨진다.</description>
    </item>
    
    <item>
      <title>파일 대신 SQLite 쓰기</title>
      <link>https://rein.kr/posts/2011-08-07-sqlite%EB%A5%BC-%ED%8C%8C%EC%9D%BC-%EB%8C%80%EC%8B%A0-%EC%93%B0%EA%B8%B0/</link>
      <pubDate>Sun, 07 Aug 2011 17:34:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-08-07-sqlite%EB%A5%BC-%ED%8C%8C%EC%9D%BC-%EB%8C%80%EC%8B%A0-%EC%93%B0%EA%B8%B0/</guid>
      <description>최근에 홍민희님이 링크한 sqlite는 fopen()대신이다란 글이 있다.1 최근에 모 개발 중인 서버에서 시작시점에 데이터 파일 읽는 부분을 SQLite로 바꿔봤다.
원래의 구현은 엑셀 파일(.xls)을 서버 시작시점에 읽어서 특정 시트를 각 시트에 맞는 데이터 타입으로 바꿔서 저장하는 것. 이를 위해 Microsoft Office용 일부 dll (MS Visual Studio 2010 Tools for Office Runtime, AccessDatabaseEngine_x64)을 필요로 함. 이걸 써서 OLE로 값을 읽는다. 그리고 좀 엄하게도(…) 일부 셀은 리스트, 그것도 구조체 비슷한 것의 리스트를 적당한 토큰으로 구분해놨다.</description>
    </item>
    
    <item>
      <title>Blog 재설치</title>
      <link>https://rein.kr/posts/2011-08-06-blog-%EC%9E%AC%EC%84%A4%EC%B9%98/</link>
      <pubDate>Sat, 06 Aug 2011 20:07:40 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-08-06-blog-%EC%9E%AC%EC%84%A4%EC%B9%98/</guid>
      <description>WordPress의 비쥬얼 에디터가 제대로 동작하지 않아서 WordPress 자체를 재 설치. 이 글은 비쥬얼 에디터에서 쓰고 있다.
MS Windows에서 글 쓰는 거라면 Windows Live Writer가 워낙 훌륭해서 되거나 말거나 크게 신경 안 썼는데, 요즘 Windows 부팅하는 시간이 너무 적어서 결국 불편함을 못 견디고 재설치했다.
설치는 다음과 같은 순서로 진행했다.
기존 디렉터리 백업 (blog 디렉터리를 백업 디렉터리로 변경) 새로 설치 (svn checkout 으로 통채로 blog 디렉터리에 가져다 설치) 기존 설정 파일 복사 (wp-config.</description>
    </item>
    
    <item>
      <title>svnserve를 흉내내는 git 저장소를 만들 수 있을까?</title>
      <link>https://rein.kr/posts/2011-08-03-svnserve%EB%A5%BC-%ED%9D%89%EB%82%B4%EB%82%B4%EB%8A%94-git-%EC%A0%80%EC%9E%A5%EC%86%8C%EB%A5%BC-%EB%A7%8C%EB%93%A4-%EC%88%98-%EC%9E%88%EC%9D%84%EA%B9%8C/</link>
      <pubDate>Wed, 03 Aug 2011 23:14:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-08-03-svnserve%EB%A5%BC-%ED%9D%89%EB%82%B4%EB%82%B4%EB%8A%94-git-%EC%A0%80%EC%9E%A5%EC%86%8C%EB%A5%BC-%EB%A7%8C%EB%93%A4-%EC%88%98-%EC%9E%88%EC%9D%84%EA%B9%8C/</guid>
      <description>git 저장소 (혹은 git 호환 구현체)에서 svn 서버인척하려면 필요한 걸 리스팅 하는 중.
최근에 알게된 dulwich 프로젝트 덕분에 svn 프로토콜 일부를 구현하면 아마 기존 저장소를 git으로 옮기고, svn 클라이언트 쓰는 사람들에겐 &amp;lsquo;여전히 svn 저장소로 보이도록&amp;rsquo; 만드는게 가능하지 않을까 싶다.
일단 떠오르는 것만 간단히. 잘못된 부분이나 추가할 사항 있으면 댓글로 좀.
svn은 revision 번호가 존재함. git에서 (내부적으로) 적당히 tag달아서 그걸 기준으로 해석해서 보내주면 되려나? (클라이언트 동작이긴하지만 git svn을 생각하면 어렵지 않을듯)</description>
    </item>
    
    <item>
      <title>연간 계획 잘 되어가는가?</title>
      <link>https://rein.kr/posts/2011-06-30-%EC%97%B0%EA%B0%84-%EA%B3%84%ED%9A%8D-%EC%9E%98-%EB%90%98%EC%96%B4%EA%B0%80%EB%8A%94%EA%B0%80/</link>
      <pubDate>Thu, 30 Jun 2011 22:22:46 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-06-30-%EC%97%B0%EA%B0%84-%EA%B3%84%ED%9A%8D-%EC%9E%98-%EB%90%98%EC%96%B4%EA%B0%80%EB%8A%94%EA%B0%80/</guid>
      <description>올해 초에 올렸던 내용에 대한 중간 평가를 해보자.
GTD로 업무처리하기 가장 잘 되고 있는 부분인듯 하다. 예전에 말한 것처럼 도구의 힘을 빌려 잘 하고 있다. 다만 포모도로 타이머 대신 pomodairo란 걸로 데탑 앞에서 정리하는 용도로 쓰고 있는게 차이?
NoSQL 솔루션으로 데이터 스토어 써보기 아 망했어요.
대략 이걸 쓸 기회자체가 안 생길거 같은 기분이 든다. 다음 항목과 더불어 좀 더 시도해보면 잘 될지도 모르지만 과연?
아니 그 전에 새 데스크 탑이 도착해야 기존 컴을 linux 테스트 용으로 써가면서 시험해보던가 할텐데 이건 정말 망?</description>
    </item>
    
    <item>
      <title>이번 주 팀 세미나: NDC 2011 마영전 서버 세션 정리</title>
      <link>https://rein.kr/posts/2011-06-15-%EC%9D%B4%EB%B2%88-%EC%A3%BC-%ED%8C%80-%EC%84%B8%EB%AF%B8%EB%82%98-ndc-2011-%EB%A7%88%EC%98%81%EC%A0%84-%EC%84%9C%EB%B2%84-%EC%84%B8%EC%85%98-%EC%A0%95%EB%A6%AC/</link>
      <pubDate>Wed, 15 Jun 2011 23:26:03 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-06-15-%EC%9D%B4%EB%B2%88-%EC%A3%BC-%ED%8C%80-%EC%84%B8%EB%AF%B8%EB%82%98-ndc-2011-%EB%A7%88%EC%98%81%EC%A0%84-%EC%84%9C%EB%B2%84-%EC%84%B8%EC%85%98-%EC%A0%95%EB%A6%AC/</guid>
      <description>이전에 여기에 올려 놓은 내용이지만, 팀 세미나 시간에 간략히 정리해서 짧게 얘기했던 슬라이드 정리.
이전 글을 다 보신 분은 굳이 읽지 않아도 됩니다. 밑의 링크는 HTML5 지원하는 웹 브라우져에서 봐야 함.
NDC2011 – 마비노기 영웅전 서버 관련 세션 정리
Beamer — LaTeX .sty 중 하나 — 로 처음 작성한 슬라이드. 예전에 타카하시 메서드로 발표한 적이 있긴 하지만, ‘준비&amp;rsquo;만 따지고 보면 이게 이제까지 써본 툴 중 제일 쉬웠던 듯. MacOSX용 키노트가 쓰기 편한 툴이긴 하지만, 내 영혼은 아무래도 *nix 터미널에 묶여있는 듯 하다.</description>
    </item>
    
    <item>
      <title>프로그래머의 일상: race-condition, 글쓰기, …</title>
      <link>https://rein.kr/posts/2011-06-13-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-race-condition-%EA%B8%80%EC%93%B0%EA%B8%B0/</link>
      <pubDate>Mon, 13 Jun 2011 20:21:36 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-06-13-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-race-condition-%EA%B8%80%EC%93%B0%EA%B8%B0/</guid>
      <description>Race condition 5월 말에 예비군 훈련을 다녀오고나니, 내가 작성한 C++/Win32 기반의 서버 런타임에 문제가 발생했더라. 정확한 요인은 모르겠지만, 메모리 사용량이 팍 뛰었고, 32bit 프로세스의 한계로 사망 -_-
다행히 ipkn이 작성한 부하 테스트 툴로 원인을 좁힐 수 있었다. 해당 프로세스에 미리 할당하는 소켓 수 이상으로,
연결을 계속해서 맺고 과다한 트래픽을 흘려보내고, 다시 끊고 이 동작을 수 시간 반복하면 서버가 크래시하더라.
이미 수 개월 동안의 라이브 서비스 동안 별 문제 없어서 안정화 끝났다라고 생각했는데 그게 아니었던 모양.</description>
    </item>
    
    <item>
      <title>그래프 가지고 장난치지 말자</title>
      <link>https://rein.kr/posts/2011-06-12-%EA%B7%B8%EB%9E%98%ED%94%84-%EA%B0%80%EC%A7%80%EA%B3%A0-%EC%9E%A5%EB%82%9C%EC%B9%98%EC%A7%80-%EB%A7%90%EC%9E%90/</link>
      <pubDate>Sun, 12 Jun 2011 19:30:16 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-06-12-%EA%B7%B8%EB%9E%98%ED%94%84-%EA%B0%80%EC%A7%80%EA%B3%A0-%EC%9E%A5%EB%82%9C%EC%B9%98%EC%A7%80-%EB%A7%90%EC%9E%90/</guid>
      <description>http://goo.gl/G97AW : 6월 3일자 매일경제의 기사다. &amp;lsquo;0을 포함하지 않는 그래프&amp;rsquo;를 그리고 있다. 이걸 실제로 0을 포함하는 그래프로 그리면 아래와 같은 형태가 된다.
이 그래프를 놓고보면 인구 10만명 당 자살 사망자 수가 급격히 증가한 것으로 보인다. 이걸 내가 다시 그려봤다. 다만 &amp;ldquo;정직한 연구자라면 마땅히 해야할 것 같은&amp;rdquo; 형태로 해봤다.
이렇게 그리면 인구 10만명 당 자살 사망자 수는 증가세인 건 마찬가지지만, 그 증가세는 훨씬 작아 보인다.
내가 대학원 시절에 배운 그래프 그리는 기본 원칙 중 하나는 다음과 같다.</description>
    </item>
    
    <item>
      <title>멀티코어 활용할 방법이 정말 멀티스레딩 뿐이라고?</title>
      <link>https://rein.kr/posts/2011-06-07-%EB%A9%80%ED%8B%B0%EC%BD%94%EC%96%B4-%ED%99%9C%EC%9A%A9%ED%95%A0-%EB%B0%A9%EB%B2%95%EC%9D%B4-%EC%A0%95%EB%A7%90-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9-%EB%BF%90%EC%9D%B4%EB%9D%BC%EA%B3%A0/</link>
      <pubDate>Tue, 07 Jun 2011 21:32:20 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-06-07-%EB%A9%80%ED%8B%B0%EC%BD%94%EC%96%B4-%ED%99%9C%EC%9A%A9%ED%95%A0-%EB%B0%A9%EB%B2%95%EC%9D%B4-%EC%A0%95%EB%A7%90-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9-%EB%BF%90%EC%9D%B4%EB%9D%BC%EA%B3%A0/</guid>
      <description>예전에 &amp;lsquo;Multicore의 concurrency를 위해선 멀티스레딩 뿐인가?&amp;quot; 라는 글을 썼다.
OpenMP나 tbb, 혹은 MS의 Parallel Patterns Library 모두 일을 더 쉽게 만들어주는게 아니다. 그네들은 병렬 프로그래밍을 쉽게해주는 기능을 제공해 주긴 한다. 하지만 당연히 싱글스레드 프로그래밍보다 어렵다. 즉, 원래 목표여야 하는 &amp;ldquo;병렬 하드웨어 활용을 쉽게해주는 것&amp;rdquo; 이 아니다. 이 툴들의 목적은 현재 단일 스레드로 작성한 프로그램을 , 어떻게 멀티스레드 프로그램으로 수정하면 병렬 하드웨어를 좀 더 잘 쓸 수 있을까 하는 경우를 해결하는 것이다.</description>
    </item>
    
    <item>
      <title>NDC 참관기: Server Burner: 범용 네트워크 스트레스 테스트 툴</title>
      <link>https://rein.kr/posts/2011-06-07-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-server-burner-%EB%B2%94%EC%9A%A9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%8A%A4%ED%8A%B8%EB%A0%88%EC%8A%A4-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%88%B4/</link>
      <pubDate>Tue, 07 Jun 2011 08:20:41 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-06-07-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-server-burner-%EB%B2%94%EC%9A%A9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%8A%A4%ED%8A%B8%EB%A0%88%EC%8A%A4-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%88%B4/</guid>
      <description>NDC 2011 2일 차(5/30)에 있었던 하재승 군의 세션.
이하는 내용 요약
게임 오픈 혹은 대규모 패치 후에 서버가 폭주(?)하는 사례가 많다.
네트워크 스트레스 테스트 툴이 필요하다? 예상되는 스트레스 상황 테스트 / 반복 실행 미리 문제를 찾고 해결하자 Pros.
쉽게 테스트 작성 대량의 테스트 진행 테스트 진행 중 데이터 자동 수집 / 모니터링 미리 작성된 테스트 시연 간단한 채팅 서버를 가지고,
1 명 들어와서 채널에 메시지 말하고 나가기 100 명 들어와서 같은 동작 테스트 동안 모니터링한 결과 보여주기 잘 알려진 올해의 게임 Minecraft를 가지고,</description>
    </item>
    
    <item>
      <title>NDC 참관기: 네트워크 비동기 통신, 합의점의 길목에서</title>
      <link>https://rein.kr/posts/2011-06-03-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%B9%84%EB%8F%99%EA%B8%B0-%ED%86%B5%EC%8B%A0-%ED%95%A9%EC%9D%98%EC%A0%90%EC%9D%98-%EA%B8%B8%EB%AA%A9%EC%97%90%EC%84%9C/</link>
      <pubDate>Fri, 03 Jun 2011 23:40:14 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-06-03-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%B9%84%EB%8F%99%EA%B8%B0-%ED%86%B5%EC%8B%A0-%ED%95%A9%EC%9D%98%EC%A0%90%EC%9D%98-%EA%B8%B8%EB%AA%A9%EC%97%90%EC%84%9C/</guid>
      <description>넥슨 마비노기 2팀 김재석 씨의 강연이었다.
_네트워크 통신 일반론_이 아니라 이전에 참관기를 쓴 마영전 서버 구조를 생각하면서 내용 요약을 읽어주기 바란다. 네트워크 프레임웍 개발을 목표로 데브캣 스튜디오의 게임을 개발하면서 얻은 경험에대한 설명이었다. 강연 중에도 부연 설명한 부분이지만, 이 이하에서 주로 얘기하는 두 개의 주체는 다음 의미다
서비스: 비동기 네트워크 메시지를 처리하는 주체 클라이언트: 비동기 네트워크 메시지를 보내는 주체 이하는 강연 요약.
목표
네트워크 코딩 스트레스를 주지 말자 지나친 하위 레이어의 지식을 요구하지 말자 문제가 되는 부분은,</description>
    </item>
    
    <item>
      <title>NDC 참관기: 변화량 추적을 중심으로 한 저비용 고효율의 지속적인 코드퀄리티 관리법</title>
      <link>https://rein.kr/posts/2011-06-03-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EB%B3%80%ED%99%94%EB%9F%89-%EC%B6%94%EC%A0%81%EC%9D%84-%EC%A4%91%EC%8B%AC%EC%9C%BC%EB%A1%9C-%ED%95%9C-%EC%A0%80%EB%B9%84%EC%9A%A9-%EA%B3%A0%ED%9A%A8%EC%9C%A8%EC%9D%98/</link>
      <pubDate>Fri, 03 Jun 2011 16:00:04 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-06-03-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EB%B3%80%ED%99%94%EB%9F%89-%EC%B6%94%EC%A0%81%EC%9D%84-%EC%A4%91%EC%8B%AC%EC%9C%BC%EB%A1%9C-%ED%95%9C-%EC%A0%80%EB%B9%84%EC%9A%A9-%EA%B3%A0%ED%9A%A8%EC%9C%A8%EC%9D%98/</guid>
      <description>6/1일자 오후 세션이었던 네오플의 송창규 님의 강연입니다.
이하는 간략한 요약.
게임 업계의 패러다임 변화: 새 게임 만들기 =&amp;gt; &amp;lsquo;성공한 게임&amp;rsquo;의 개선, 유지
그런 이유로 지속 가능성이 중요하다
코드 퀄리티 관리 깨진 창문 효과: 관리되지 않는다는 느낌을 주면 안된다.
하지만, 라이브 서비스의 경우, 그 규모에 압도 되서 (코드 베이스가) 슬럼화될 수 있다. 청소 메타포: 매일 매일 청소할 게 생기고, 하지 않는다고 못 버티는건 아니지만, 계속 해서 불편해짐..
코드 퀄리티 관리와 비슷하다. 그러나 프로젝트가 시간이 흘러 코드 베이스는 계속 해서 (무한정) 커지지만, 거기에 투입할 수 있는 프로그래머 수에는 한계가 있다는 점은 큰 차이</description>
    </item>
    
    <item>
      <title>NDC 참관기: 게임 애셋 스트리밍 패치</title>
      <link>https://rein.kr/posts/2011-06-01-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EA%B2%8C%EC%9E%84-%EC%95%A0%EC%85%8B-%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D-%ED%8C%A8%EC%B9%98/</link>
      <pubDate>Wed, 01 Jun 2011 13:10:40 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-06-01-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EA%B2%8C%EC%9E%84-%EC%95%A0%EC%85%8B-%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D-%ED%8C%A8%EC%B9%98/</guid>
      <description>이승재 (http://ricanet.com) 군의 발표. 여기서 들은 내용을 간략히 정리해 보았다.
프론티어 팀에서 데스크탑 히어로즈(이하 DH)를 개발하면서 얻은 경험을 공유했다. 여기서 애셋은 그래픽 리소스, 사운드 등등의 게임 내 리소스를 말한다.
왜 스트리밍 패치를 했는가? 설치 용량 10 MiB 이하인 게임을 원해서 애셋 스트리밍 패치를 구현. 그 결과,
작동을 위한 &amp;lsquo;최소한의 파일&amp;rsquo; 만 받게 함 (다만 이 리소스를 사람이 수동으로 고르지는 않게) 게임 패쳐를 내장해야 한다 어떻게 했는가? DH는 스테이지 단위로 쪼개져 있다.</description>
    </item>
    
    <item>
      <title>NDC 참관기: 메이플스토리 개발스토리 – 더 잘되는 게임을 위한 라이브 코어 개발</title>
      <link>https://rein.kr/posts/2011-05-30-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EB%A9%94%EC%9D%B4%ED%94%8C%EC%8A%A4%ED%86%A0%EB%A6%AC-%EA%B0%9C%EB%B0%9C%EC%8A%A4%ED%86%A0%EB%A6%AC-%EB%8D%94-%EC%9E%98%EB%90%98%EB%8A%94-%EA%B2%8C%EC%9E%84/</link>
      <pubDate>Mon, 30 May 2011 22:13:26 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-05-30-ndc-%EC%B0%B8%EA%B4%80%EA%B8%B0-%EB%A9%94%EC%9D%B4%ED%94%8C%EC%8A%A4%ED%86%A0%EB%A6%AC-%EA%B0%9C%EB%B0%9C%EC%8A%A4%ED%86%A0%EB%A6%AC-%EB%8D%94-%EC%9E%98%EB%90%98%EB%8A%94-%EA%B2%8C%EC%9E%84/</guid>
      <description>훌륭한 엔지니어인 황의권 군의 발표. 오늘 들은 세 개 세션 중 가장 재밌게 들었다.
내용 요약: 라이브 서비스이기 때문에, 제일 중요한 것은 &amp;lsquo;방어&amp;rsquo;. 그렇지만 &amp;lsquo;공격적인 업데이트&amp;rsquo;를 통해서(빅뱅 업데이트) 재탄성 했다. 이를 위해 지속적인 개선과정과 그에 따른 이슈 처리가 필요했다.
창모드와 해상도 확장 DX8이 화면 주파수 동기화가 안되는 문제. 그리고 일부 고성능 머신의 GPU의 경우, 과부하가 걸리는 문제가 생겼음. 그래서 DX 9으로 이전하고, 잘 점검하고 실험하는걸로 해결.
해상도 확장의 경우 게임 화면, View-port, 툴, 데이터를 변경하는 문제가 있어서 생각보다 일이 컸다고 한다.</description>
    </item>
    
    <item>
      <title>NDC 참관기: 마비노기 영웅전 자이언트 서버의 비밀</title>
      <link>https://rein.kr/posts/2011-05-30-ndc-vindictus-giantserver-arch/</link>
      <pubDate>Mon, 30 May 2011 21:58:28 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-05-30-ndc-vindictus-giantserver-arch/</guid>
      <description>오늘 들은 세번째 세션.
Managed runtime (정확히는 C#) 위에서 작성한 (아마도) 최초의 MO/MMORPG 서버인 마영전에 관한 일종의 포스트모템이었다. 기대했던 얘기를 다 들은건 아니지만 나름대로 &amp;lsquo;생각한 문제점&amp;rsquo;들에 대한 얘기를 많이 듣게 되었다.
요약이나 기타 내 촌평이 잘못된 부분에 대한 지적은 매우매우 환영한다.
요약 단일 서버: 기술적 도전과제로, 개발 초기에는 MORPG였음 (그로 인해 약간 구조가 빗나간 점도 있는 듯 하다)
목표:
Scale-out (horizontal-scaling) 서비스라는 아주 작은 기능을 하는 단위로 역할 분담 Operation (트랜잭션?</description>
    </item>
    
    <item>
      <title>다시 또 1년</title>
      <link>https://rein.kr/posts/2011-05-23-%EB%8B%A4%EC%8B%9C-%EB%98%90-1%EB%85%84/</link>
      <pubDate>Mon, 23 May 2011 08:20:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-05-23-%EB%8B%A4%EC%8B%9C-%EB%98%90-1%EB%85%84/</guid>
      <description>한 해 한 해 지난다고 마음이 가벼워지는게 아니다. 나는 작년보다 더 나은 자유를 누리며 살고 있는가? 그런 자유를 누릴 수 있도록 노력하는가?</description>
    </item>
    
    <item>
      <title>지연시간 – 대역폭 곱</title>
      <link>https://rein.kr/posts/2011-05-12-%EC%A7%80%EC%97%B0%EC%8B%9C%EA%B0%84-%EB%8C%80%EC%97%AD%ED%8F%AD-%EA%B3%B1/</link>
      <pubDate>Thu, 12 May 2011 20:36:59 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-05-12-%EC%A7%80%EC%97%B0%EC%8B%9C%EA%B0%84-%EB%8C%80%EC%97%AD%ED%8F%AD-%EA%B3%B1/</guid>
      <description>학부 데이터 통신 / 네트워크 수업과 대학원 석사 과정동안 배운 많은 개념 중에 내가 가장 감명 깊게 생각했던 부분 중 하나가 대역폭 지연시간 곱 (bandwidth delay product).
이게 무슨 의민가?
End-to-end에서 아주 간략하게 생각하자면 하나의 링크에 대해 양쪽 끝 단 사이에 &amp;ldquo;날아가고 있는&amp;rdquo; 데이터의 총량이다. ((중간이 몇 hop인지는 중요치 않다)) 그러니까 둘 사이에 존재하는, 보냈지만 아직 도착하지 않은 데이터의 &amp;lsquo;용량&amp;rsquo;이란 의미. 이 이상 넣어봐야 실제로 네트워크 위에 있는게 아니라 양쪽 시스템의 버퍼 위 어딘가가 될 것이란 것.</description>
    </item>
    
    <item>
      <title>요즘의 하루하루</title>
      <link>https://rein.kr/posts/2011-05-11-%EC%9A%94%EC%A6%98%EC%9D%98-%ED%95%98%EB%A3%A8%ED%95%98%EB%A3%A8/</link>
      <pubDate>Wed, 11 May 2011 22:48:34 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-05-11-%EC%9A%94%EC%A6%98%EC%9D%98-%ED%95%98%EB%A3%A8%ED%95%98%EB%A3%A8/</guid>
      <description>예전에 적은 것처럼 요즘의 하루하루는 출근하는 날이면 TODO 리스트 위에서 돌아가는 듯; 다만 iPhone 위에서 돌리던 타이머 대신 PC 화면에서 돌아가는 딴 타이머를 쓰게 되었다. &amp;ldquo;땡&amp;quot;하는 소리 대신 90년 대 모 애니의 차화예고(…제목 그대로)가 흘러나오는 점이 차이랄까;
&amp;ldquo;하려던 일&amp;quot;들은 원래 잘(?)하고 있던 듯 하지만; &amp;ldquo;귀찮아 하는 일&amp;quot;은 TODO에 올려놓으니 약간 더 잘 챙기게 된 듯. 특히 일일 보고라거나 일일 보고라거나 일일 보고라거나. ((이건 반복되는 일 등록하는 기능으로 등록해서 쓰고 있음. 근데 이게 좀 미비해서, 주 중만 지정한다거나 하는 게 안 됨.</description>
    </item>
    
    <item>
      <title>PSN과 농협 사태 잡상</title>
      <link>https://rein.kr/posts/2011-05-07-psn%EA%B3%BC-%EB%86%8D%ED%98%91-%EC%82%AC%ED%83%9C-%EC%9E%A1%EC%83%81/</link>
      <pubDate>Sat, 07 May 2011 18:28:01 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-05-07-psn%EA%B3%BC-%EB%86%8D%ED%98%91-%EC%82%AC%ED%83%9C-%EC%9E%A1%EC%83%81/</guid>
      <description>최근 국내외에서 대형 전산 사고가 몇 건 터졌다. 그 중에 관심이 가는 몇몇 건에 대한 잡상. 이 이하의 내용은 허구이며 나 자신 혹은 내 고용주와 무관하다. 진지하게 받아들이면 지는 거임.
현대 캐피털 해킹 사건은 돈을 노리고 했다는 정황이 명확해 보인다. 돈을 요구했고, 이에 따라 사태가 열심히 진행 (중?) 한듯하니… 그와 반대로 농협의 이번 전산 사고나 Sony의 PSN 해킹 사고는 방향이 약간 다른 것 같다. 두 곳 모두 금전적인 요구 혹은 기타 요구가 전혀 없었다.</description>
    </item>
    
    <item>
      <title>On ubuntu 11.04</title>
      <link>https://rein.kr/posts/2011-05-01-on-ubuntu-11-04/</link>
      <pubDate>Sun, 01 May 2011 22:17:29 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-05-01-on-ubuntu-11-04/</guid>
      <description>얼마 전에 &amp;ldquo;요즘 게임도 안 하는데 왜 계속 윈도우즈 쓰고 있나&amp;rdquo; 싶어서, 제일 만만한 ubuntu 10.10 (Maverick Meerkat) 설치하고 썼다.
그러다 4월말이 되었으니 11.04 가 나왔다 싶었고, Update Manager에도 뜨길래 설치했다. 나온 당일에는 갖가지 오류 — 아마도 접속 폭주? — 로 설치 실패하고, 그 다음 날에 설치…
일단 눈에 띄는 점은 MacOSX 비슷한 Windows 7처럼 런처 부분이 독립적으로 뜬다는 것. 다만 기본 위치가 화면 왼쪽 사이드바로 지정되어있고, 바꾸지도 못함. 혹시 바꾸는 법 아시는 분은 얘기해주세요.</description>
    </item>
    
    <item>
      <title>봄날</title>
      <link>https://rein.kr/posts/2011-04-17-%EB%B4%84%EB%82%A0/</link>
      <pubDate>Sun, 17 Apr 2011 21:07:28 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-04-17-%EB%B4%84%EB%82%A0/</guid>
      <description>금요일에 휴가 쓰고 3일 연휴로 가족 나들이 모드.
3일짜리 여행을 갔다 온 건 아니고, 그날 그날 외출하고, 외식하고 했음. 잠실 역 딘타이펑, 키즈카페, 안산, 올림픽 공원, 빕스(…)로 이어지는 3일 간의 외출.
토, 일은 안산과 올림픽 공원을 다녀왔다. 안산(鞍山)은 약간 선선해서 그런지 벚꽃은 그다지 피지 않고, 매화는 잘 피었더라. 이 밑은 안산에서 찍은 사진 – 내가 찍은 건 아니고 아내가 찍은 사진임.
벚꽃은 아래처럼 아직 피려고 하고 있거나, 응달 진 곳은 심지어 아직 꽃망울만… 벚꽃을 찍어보려고 이거 저거 찍긴 했는데, 활짝 핀 게 없더라 ㅠㅠ</description>
    </item>
    
    <item>
      <title>평범하지 않게 파일 복사하기</title>
      <link>https://rein.kr/posts/2011-04-13-%ED%8F%89%EB%B2%94%ED%95%98%EC%A7%80-%EC%95%8A%EA%B2%8C-%ED%8C%8C%EC%9D%BC-%EB%B3%B5%EC%82%AC%ED%95%98%EA%B8%B0/</link>
      <pubDate>Wed, 13 Apr 2011 21:52:06 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-04-13-%ED%8F%89%EB%B2%94%ED%95%98%EC%A7%80-%EC%95%8A%EA%B2%8C-%ED%8C%8C%EC%9D%BC-%EB%B3%B5%EC%82%AC%ED%95%98%EA%B8%B0/</guid>
      <description>외부에서 버전을 붙이는 디렉터리가 있다. 이 디렉터리를 특정 컴퓨터 A에서 B로 복사하는 일을 해보자. 버전을 붙인다는 점을 좀 더 이용하면 – 즉, 이전 버전 데이터가 있는 디렉터리가 있다면 – 좀 더 적게 복사하고, 빠르게 복사할 수 있을 거다. 만약 이 데이터가 아주 간략하게 하기엔 좀 큰 수준 – 대충 10GiB에서 30GiB 정도? – 라면 뭔가 최적화하면 좋지 않을까?
대략 다음과 같은 정도로?
이전 버전 디렉터리에 똑같은 파일이 있으면 해당 컴퓨터 안에서 복사한다.</description>
    </item>
    
    <item>
      <title>프로그래머의 일상: 빌드 시간 얻기, 하드 링크, ...</title>
      <link>https://rein.kr/posts/2011-04-06-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EB%B9%8C%EB%93%9C-%EC%8B%9C%EA%B0%84-%EC%96%BB%EA%B8%B0-%ED%95%98%EB%93%9C-%EB%A7%81%ED%81%AC/</link>
      <pubDate>Wed, 06 Apr 2011 22:04:30 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-04-06-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EB%B9%8C%EB%93%9C-%EC%8B%9C%EA%B0%84-%EC%96%BB%EA%B8%B0-%ED%95%98%EB%93%9C-%EB%A7%81%ED%81%AC/</guid>
      <description>빌드한 시간 얻어오기 팀에서 작성하는 실행 파일 (.exe, .dll) 에는 버전 정보를 넣는데, 여기엔 논리적인 버전 정보 + 소스 저장소 revision만 들어간다. 그래서 파일 실행할 때 이 버전 정보만 보고 언제 빌드한 건지 알기가 힘들더라.
파일을 실제로 빌드한 시간을 알 수 있으면 좋지 않을까 하고 구글에 검색해보니 이런 게 뜨더라: stackoverflow: C# – displaying the build date
원리는 간단(?)하다. Windows PE 포맷에 따르면, 파일 헤더에 linker timestamp가 찍혀있는데, 이 값을 읽어오는 것.</description>
    </item>
    
    <item>
      <title>병목은 어디에?</title>
      <link>https://rein.kr/posts/2011-03-18-%EB%B3%91%EB%AA%A9%EC%9D%80-%EC%96%B4%EB%94%94%EC%97%90/</link>
      <pubDate>Fri, 18 Mar 2011 21:37:39 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-03-18-%EB%B3%91%EB%AA%A9%EC%9D%80-%EC%96%B4%EB%94%94%EC%97%90/</guid>
      <description>2월 말부터 시작해서, 게임 리소스를 네트워크 너머로 배포하는 유틸리티를 작성하고 있다. C# 공부를 겸해서 틈틈이 짜고 있는데, 요 며칠간은 어떤 골치거리에 매여있는 터라 주로 성능 평가만 했는데, 병목현상이 생기는 곳이 좀 예상치 못한 곳이더라.
개념적으로 보내는 쪽(이하 S), 받는 쪽(이하 R) 두 개의 entity로 구성되며, 대략 다음과 같이 동작한다
S에서 보낼 디렉터리 전체의 요약 정보 — 이름 크기 md5 hash — 를 담은 Merkle tree를 만든다. R 쪽에서도 이걸 구하고 이 tree를 비교해서 어떤 파일이 없고, 어떤 파일이 다른지 판단한다.</description>
    </item>
    
    <item>
      <title>프로그래머의 일상: 테스트, C#, 스테이징, ...</title>
      <link>https://rein.kr/posts/2011-03-18-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%ED%85%8C%EC%8A%A4%ED%8A%B8-c-%EC%8A%A4%ED%85%8C%EC%9D%B4%EC%A7%95/</link>
      <pubDate>Fri, 18 Mar 2011 20:48:25 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-03-18-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%ED%85%8C%EC%8A%A4%ED%8A%B8-c-%EC%8A%A4%ED%85%8C%EC%9D%B4%EC%A7%95/</guid>
      <description>테스트 내가 게임 서버를 만들고 있는 모 게임의 사내 테스트가 있었다. 아직 서버에 별 기능이 안 들어가서 그런지 죽지 않고 무사히 끝났다. 스테이징의 개념이 없는 ??? / ??? 덕분에 아주 심장이 쫄깃해지는 경험을 몇 번했지만 무사히 끝났다.
하루 테스트가 끝날 때마다, log4cxx를 이용해서 디스크에 저장하는 log를 통째로 해석하는 작업도 했다. Python의 re — regular expression package — 로 일부 통계 정보에 해당하는 부분만 걸러낸 뒤, 해석해서 csv로 저장하게 했다. 소규모의 사내 테스트라 그런지 대략 수 메가 수준의 로그였고, 일반적인 데스크 탑에서 수 초안에 결과가 나온다.</description>
    </item>
    
    <item>
      <title>JetPack: WordPress.com의 기능을 설치 형 블로그에서도</title>
      <link>https://rein.kr/posts/2011-03-13-jetpack-wordpress-com%EC%9D%98-%EA%B8%B0%EB%8A%A5%EC%9D%84-%EC%84%A4%EC%B9%98-%ED%98%95-%EB%B8%94%EB%A1%9C%EA%B7%B8%EC%97%90%EC%84%9C%EB%8F%84/</link>
      <pubDate>Sun, 13 Mar 2011 18:41:31 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-03-13-jetpack-wordpress-com%EC%9D%98-%EA%B8%B0%EB%8A%A5%EC%9D%84-%EC%84%A4%EC%B9%98-%ED%98%95-%EB%B8%94%EB%A1%9C%EA%B7%B8%EC%97%90%EC%84%9C%EB%8F%84/</guid>
      <description>WordPress는 GPL v3 에 따라 배포되는 Free/Open Source SW다. 이걸 개발하고 있는 Automattic은 설치 형 블로그로 WordPress를 제공하고, 이와 별개로 WordPress.com 을 통해 무료 및 유료 서비스도 한다. 얘네 핵심 사업 모델이 이 WordPress.com 인데, 설치 형 WordPress에서도 이 사이트에서만 제공되는 기능 중 일부를 쓸 수 있다. 예를 들어 WordPress.com 의 통계 기능1 을 설치 형 블로그에서도 그냥 쓸 수 있게 해준다 – 다만 무료라도 WordPress.com 계정이 있긴 해야 함. 스팸 댓글 혹은 트랙백을 막는 Akismet 의 서비스도 일정 규모 이하의 사이트에서는 공짜다.</description>
    </item>
    
    <item>
      <title>리뷰: 용의자 X의 헌신</title>
      <link>https://rein.kr/posts/2011-03-09-%EB%A6%AC%EB%B7%B0-%EC%9A%A9%EC%9D%98%EC%9E%90-x%EC%9D%98-%ED%97%8C%EC%8B%A0/</link>
      <pubDate>Wed, 09 Mar 2011 21:36:29 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-03-09-%EB%A6%AC%EB%B7%B0-%EC%9A%A9%EC%9D%98%EC%9E%90-x%EC%9D%98-%ED%97%8C%EC%8B%A0/</guid>
      <description>히가시노 게이고의 원작을 바탕으로 한 영화. 어제 저녁에 아내랑 같이 DVD로 봤음. 책에 대한 리뷰는 쓰지 않았지만 – 탐정 갈릴레오 연작은 다 읽었지만 리뷰는 하나도 안 썼음(…) – 이하 리뷰는 책을 읽은 사람의 관점으로만 주 – 우욱.
원작을 잘 살렸다는 느낌? 이시가미(주인공의 대척점?)가 좀 미남으로 나왔다면서 아내는 불평했지만(…), 연기자들의 연기도 괜찮았다는 느낌이고, 소설을 그대로 영화로 옮겼다면 군더더기가 될 부분을 잘 잘라내서 영화화 했다고 생각한다. 소설을 즐겁게 읽었기 때문에 이 점들은 확실히 +.</description>
    </item>
    
    <item>
      <title>Continuous Delivery, Staging, ... and Reality</title>
      <link>https://rein.kr/posts/2011-03-09-continuos-delivery-staging-and-reality/</link>
      <pubDate>Wed, 09 Mar 2011 21:32:22 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-03-09-continuos-delivery-staging-and-reality/</guid>
      <description>근 1년여를 유행하는 buzz-word 중에 &amp;ldquo;Continuous Delivery&amp;quot;라는 게 있다, 혹은 상당히 유사한 의미로 Continuous Deploy도 있다. ((물론 내면적으론 Continuous Deploy –&amp;gt; Continuous Delivery이고, 그 역은 아니란 차이가 있지만))
여하튼 요는 적정 수준의 자동화된 테스트(unit-test, acceptance-test, …)가 있을 때,
코드 베이스의 변경 사항이 테스트와 Q/A를 통과하면 실제 프로덕션 서버에 릴리즈 한다
라는 것. 즉, 변경 사항을 incremental 하게 반영하되, 내부적으로는 적절한 staging을 거쳐서, 최대한 문제없이 내보낸다는 것. 다만 실제 서비스에서 문제가 일어나면, 바로 이전 릴리즈로 되돌리고, 근본 원인을 찾아서 다시 릴리즈 하라는 것.</description>
    </item>
    
    <item>
      <title>C# 잡상: 2011-03-04</title>
      <link>https://rein.kr/posts/2011-03-04-c-%EC%9E%A1%EC%83%81-2011-03-04/</link>
      <pubDate>Fri, 04 Mar 2011 22:16:51 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-03-04-c-%EC%9E%A1%EC%83%81-2011-03-04/</guid>
      <description>지난 번 글에 이어서. 이번 주에 든 생각 몇 가지 정리.
이번 주에는 대략 3일(반나절 단위로 세면 2일?) 정도는 C#을 가지고 프로그래밍 했다. 이때 했던 생각들 정리. 하루 종일 편두통에 시달리고 있으니 정말 간단간단히만 쓴다. 내일 기력을 회복하면 첨언 할지도 모름.
ArraySegment&amp;lt;T&amp;gt;의 기괴한 인터페이스 T[] 형식의 배열을 (배열, 시작 offset, 개수) 형식으로 저장하는 wrapper struct인데, 당연히 지원되리라 생각한 IEnumerable 인터페이스가 지원되지 않는다. 왜?
이걸 C#에 없는 pointer 연산에 대한 대용물 정도로 생각했는데 (C/C++이라면 그냥 begin, end 형태로 줄 테니까) 실제로도 그런 건 아니어서 인가; 그래서 ArraySegment 비슷한 일을 하는 다른 래핑 클래스를 만들고 IEnumerable&amp;lt;T&amp;gt; 를 구현했다.</description>
    </item>
    
    <item>
      <title>NEIS 유감</title>
      <link>https://rein.kr/posts/2011-02-25-neis-%EC%9C%A0%EA%B0%90/</link>
      <pubDate>Fri, 25 Feb 2011 21:56:11 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-02-25-neis-%EC%9C%A0%EA%B0%90/</guid>
      <description>어머니가 서울에 오셨다. 손주 보러 오신 거였는데, 근무하고 계신 학교 쪽에 행정 처리할 게 있어서 neis 페이지를 들어가야 하는데 이게 정말 가관이더라.
일단 며칠 전에 새로 열었다는 시스템에 들어갔다. 당연하다는 듯이 Windows 7(x64) + ie8 에선 안됨. 아내의 Windows 7 (x86)에서도 마찬가지.
&amp;ldquo;이정도로 굴복할 수는 없다&amp;quot;를 외치고 가상 머신으로 재시도. Active X control을 대략 1x회 설치하고도 계속 다시 설치하려고 하길래 포기. 어차피 자료 조회만 하면 어찌어찌 할 수 있는 일이어서, 조회만 된다는 이전 시스템에 접속했다.</description>
    </item>
    
    <item>
      <title>C#이 예전 기억만큼 편하지 않다</title>
      <link>https://rein.kr/posts/2011-02-24-c%EC%9D%B4-%EC%98%88%EC%A0%84-%EA%B8%B0%EC%96%B5%EB%A7%8C%ED%81%BC-%ED%8E%B8%ED%95%98%EC%A7%80-%EC%95%8A%EB%8B%A4/</link>
      <pubDate>Thu, 24 Feb 2011 20:46:04 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-02-24-c%EC%9D%B4-%EC%98%88%EC%A0%84-%EA%B8%B0%EC%96%B5%EB%A7%8C%ED%81%BC-%ED%8E%B8%ED%95%98%EC%A7%80-%EC%95%8A%EB%8B%A4/</guid>
      <description>근 일주일 동안, 새로 만들어야 하는 도구 – 라 고는 해도 서버 바이너리 3개 – 의 proof-of-concept 구현을 했다. 일단 기억을 되살리는 의미로 C#으로 짜(려고 해)ㅆ다.
예전 기억 – 아직 학생이던 2000년대 초반의 일 – 으로는 C#은 꽤나 편안한 언어였다. 그 최신 버전(.net framework 4.0)으로 프로그래밍하는데 생각만큼 편하지 않더라. 이건 왤까? 일단 내가 생각하는 원인 두 가지.
우선 C++이 지난 몇 년간 매우 발전했다. 특히 요즘 추가된 C++ 0x의 closure — 그러니까 lambda 문법 — 와 auto 같은 몇 가지 syntactic sugar 가 매일매일의 작업에 매우 도움이 됐다.</description>
    </item>
    
    <item>
      <title>요즘 일하는 방식</title>
      <link>https://rein.kr/posts/2011-01-30-%EC%9A%94%EC%A6%98-%EC%9D%BC%ED%95%98%EB%8A%94-%EB%B0%A9%EC%8B%9D/</link>
      <pubDate>Sun, 30 Jan 2011 23:35:49 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-01-30-%EC%9A%94%EC%A6%98-%EC%9D%BC%ED%95%98%EB%8A%94-%EB%B0%A9%EC%8B%9D/</guid>
      <description>요즘 일하는 방식을 살짝 바꿨다. 이건 반쯤 휴대폰을 바꾸고 생긴 변화이긴 하다. 전에는 노트패드 ((MS Windows의 그것 말고 노란 실물 메모장)) 와 데스크 탑 위젯을 이용해서 일을 기록하고, 하나하나의 일을 어떻게 진행하나 추적했다. 요즘은 그 중 거의 대부분이 휴대폰으로 옮겨 왔다.
우선 _거시적인 일정 관리_는 구글 달력을 써서 하고, 이걸 쪼갠 세부 태스크(?)는 팀 공용 화이트 보드에 붙여서 처리했었다. 이젠 세부 태스크 관리는 OmniFocus에 맡기고 아침에 일어나서 이걸 한 번 리뷰하고, 퇴근한 뒤 한 번 되돌아 보는 식으로 바꿨음.</description>
    </item>
    
    <item>
      <title>리뷰: Driving Technical Change</title>
      <link>https://rein.kr/posts/2011-01-24-%EB%A6%AC%EB%B7%B0-driving-technical-change/</link>
      <pubDate>Mon, 24 Jan 2011 06:01:54 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-01-24-%EB%A6%AC%EB%B7%B0-driving-technical-change/</guid>
      <description>저자는 &amp;ldquo;새 기술/도구/방법론 등등을 도입하려면 어떻게 하는 게 좋을까?&amp;ldquo;라는 질문에 대해 그다지 두껍지 않은 책으로 풀어놓았다.
책 전반부에서는 사람들이 왜 기술에 반대하는지 설명하고, 후반부에는 이 사람들에게 어떤 방법을 써야 효과적으로 설득할 수 있는 지에 대해서 설명한다. 그리고 몇 가지 주의점?으로 마무리 한다.
우선 사람들이 기술에 왜 회의적인지를 크게 7가지로 분류해놨다.
해당 정보가 없는 경우 (the uninformed) 끌려가는 군중 (the herd) 냉소자 (the cynic) 이미 데인 사람 (the burned) 시간 없는 경우 (time crunched) 보스 비합리적인 경우 (the irrational) 이름만 보면 대충 알 수 있고, 마지막 경우는 좀 … 이긴 하다.</description>
    </item>
    
    <item>
      <title>[릴레이] 내가 서울시장이라면...</title>
      <link>https://rein.kr/posts/2011-01-23-%EB%82%B4%EA%B0%80-%EC%84%9C%EC%9A%B8%EC%8B%9C%EC%9E%A5-%EC%9D%B4%EB%9D%BC%EB%A9%B4/</link>
      <pubDate>Sun, 23 Jan 2011 20:38:24 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-01-23-%EB%82%B4%EA%B0%80-%EC%84%9C%EC%9A%B8%EC%8B%9C%EC%9E%A5-%EC%9D%B4%EB%9D%BC%EB%A9%B4/</guid>
      <description>고어핀드가 던진 바통을 잡아 쓰는 글.
주제를 &amp;ldquo;육아와 출산을 경험한 입장&amp;quot;으로 줄여놔서 쓰는 말이라 범위가 좀 좁다. 사실 나는 세제나 종교 문제 등으로 쓸 말이 많지만…
&amp;ldquo;서울 시내 보건소의 임신/출산/영유아 관련 지원해주는 일들을 상향 평준화 하라&amp;rdquo;
가 일단 내 생각.
현재 사는 곳이 송파구…이긴 한데 강동구에 훨씬 더 가까운 곳이라(특히 구청/보건소), 강동 보건소에 좀 더 자주 간다. 하지만 안내장?은 거의 송파구의 것이 옴.
이걸 보면 좀 짜증나면서 한숨 나오는 게, 양쪽 구에서 지원하는 수준이 다르다.</description>
    </item>
    
    <item>
      <title>2011년 새해 목표</title>
      <link>https://rein.kr/posts/2011-01-16-2011%EB%85%84-%EC%83%88%ED%95%B4-%EB%AA%A9%ED%91%9C/</link>
      <pubDate>Sun, 16 Jan 2011 21:27:48 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-01-16-2011%EB%85%84-%EC%83%88%ED%95%B4-%EB%AA%A9%ED%91%9C/</guid>
      <description>1월도 반이나 지난 시점에 세우는 새해 목표.
GTD로 업무 처리하기 지난 해에 꽤나 만족스러웠던 부분은 GTD. 이걸 좀 더 잘해보자. 제일 안된 부분은 일단 세부 계획을 정말 ‘한 번에&amp;rsquo; 할 수 있는 액션 단위로 쪼개는 일. 지금처럼 일을 정말하려고 할 때야 &amp;ldquo;이건 너무 크군&amp;rdquo; 이라고 생각하고 쪼개지 말고 가능한한 미리 보자.
NoSQL 솔루션으로 로깅과 몇 가지 데이터 스토어 써보기 일단 MongoDB C++ 드라이버로 logger 백엔드 만들어 프로토타입 만드는 중. 지금 쓰는 로거 뒷 단으로 쓰면 적당할 것 같다.</description>
    </item>
    
    <item>
      <title>2010년 기년회</title>
      <link>https://rein.kr/posts/2011-01-09-2010%EB%85%84-%EA%B8%B0%EB%85%84%ED%9A%8C/</link>
      <pubDate>Sun, 09 Jan 2011 22:51:49 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-01-09-2010%EB%85%84-%EA%B8%B0%EB%85%84%ED%9A%8C/</guid>
      <description>2010년 기년회에 참가했다.
굉장히 에너지 넘치는 자리였다. 선배, 동기, 후배들 모두 굉장히 재밌는 발표를했다. ㅈㄱㅅ 선배님 발표와 t군 발표는 정말 재밌게 시간 가는 줄 모르고 봤다. 망년회보다 &amp;ldquo;작년에 뭘 했는지 기억하자&amp;quot;는 의미의 기년회는 훨씬 더 재미있는 듯. 더불어 얘기하고 나서 요즘 하는 일들에 관해 저녁 먹으면서 대화한 것도 좋았음.
&amp;ldquo;의미있는 창조적인 기여&amp;quot;를 하기 위한 조건에 대한 p군의 얘기도 괜찮았음. 확실히 여유 시간(및 기타 등등)이 삶에는 필요하다.
기타 재밌는 발표가 많았지만, 해당 사람의 동의 없이 쓰기 힘든 내용이라 여기에 옮기진 못하는게 꽤나 아쉽다.</description>
    </item>
    
    <item>
      <title>xkcd volume 0 도착</title>
      <link>https://rein.kr/posts/2011-01-07-xkcd-volume-0-%EB%8F%84%EC%B0%A9/</link>
      <pubDate>Fri, 07 Jan 2011 17:07:42 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2011-01-07-xkcd-volume-0-%EB%8F%84%EC%B0%A9/</guid>
      <description>지난 수요일에 주문한 책들 — xkcd vol. 0, MongoDB the definitive guide, 그리고 Driving Technological Change — 이 도착. 다음 주 수요일에 도착할 걸로 나왔는데 좀 빨리 온 듯. xkcd vol. 0 인증 샷. </description>
    </item>
    
    <item>
      <title>WinDbg의 !analyze 가 강력한 이유</title>
      <link>https://rein.kr/posts/2010-12-21-windbg%EC%9D%98-analyze-%EA%B0%80-%EA%B0%95%EB%A0%A5%ED%95%9C-%EC%9D%B4%EC%9C%A0/</link>
      <pubDate>Tue, 21 Dec 2010 10:33:59 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-12-21-windbg%EC%9D%98-analyze-%EA%B0%80-%EA%B0%95%EB%A0%A5%ED%95%9C-%EC%9D%B4%EC%9C%A0/</guid>
      <description>당연한 얘기지만, 그 만큼의 수고와 끊임 없는 개선이 따랐기 때문. 이미 10년이 넘은 이 툴은… WER 팀의 작년 논문(작년 10월의 SOSP09, http://www.sigops.org/sosp/sosp09/papers/glerum-sosp09.pdf)에 따르면,
!analyze is roughly 100,000 lines of code implementing some 500 bucketing heuristics, with roughly one heuristic added per week.
!analyze 명령 (WinDbg)는 대략 십만 줄의 코드로 만들어져 있고, 이는 500 개의 버킷팅 휴리스틱을 구현한다. 그리고 개략적으로 매주 1개의 휴리스틱이 추가된다.
라 한다.1
프로그래머가 직접 실행하기도 하는 부분이지만(windbg !</description>
    </item>
    
    <item>
      <title>팀 릴리즈 서버 준비</title>
      <link>https://rein.kr/posts/2010-12-18-%ED%8C%80-%EB%A6%B4%EB%A6%AC%EC%A6%88-%EC%84%9C%EB%B2%84-%EC%A4%80%EB%B9%84/</link>
      <pubDate>Sat, 18 Dec 2010 00:31:41 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-12-18-%ED%8C%80-%EB%A6%B4%EB%A6%AC%EC%A6%88-%EC%84%9C%EB%B2%84-%EC%A4%80%EB%B9%84/</guid>
      <description>지지난 주에 적당한 CPU 파워의 잉여 머신이 하나 생겨서, 시험 삼아 릴리즈 서버를 하나 구축했다. OS 새로 올리고 프로그램 좀 설치하다 보면 부팅도 안되더라고 Orz
그래서 지난 주에 머신을 교체하고 (E8400이 Q8300이 되었다?), 이번 주 목요일에 설정을 끝냈다. 대략 다음의 툴을 깔아야 했다.
개발 도구 위주로 쓰면,
VS 2005/2008/2010 및 여기에 해당하는 Service Pack과 hotfix Collabnet Subversion Server (Client 모듈만) Debugging Tools For Windows (x64) ActivePerl1 CruiseControl.NET 1.5 ((1.6이 Release가 있긴 한데, 뉴스 페이지엔 없어서 일단 1.</description>
    </item>
    
    <item>
      <title>리뷰: Lara Croft and the Guardian of Light</title>
      <link>https://rein.kr/posts/2010-12-05-%EB%A6%AC%EB%B7%B0-lara-croft-and-the-guardian-of-light/</link>
      <pubDate>Sun, 05 Dec 2010 22:09:22 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-12-05-%EB%A6%AC%EB%B7%B0-lara-croft-and-the-guardian-of-light/</guid>
      <description>8월 말에 Xbox 라이브 아케이드로 출시되었지만, 일단 PC에서 하려고 기다리다(…) 나온 걸 놓치고, 어제 발견하고선 Steam에서 데모 플레이 후 바로 구매; 그리고는 오늘 엔딩 크레딧을 봤다(…). Metacritic score 85점. 플레이 소감으로도 꽤 괜찮게 만든 게임이다.
인증 샷(…)
다만 Tomb Raider 시리즈와는 약간 궤를 달리한다는 점이 기존 시리즈의 팬들은 호오가 좀 갈릴 듯.
Tomb Raider 시리즈에서 흔히 볼 수 있는 퍼즐 점프 – 특정 빈 틈을 타고 올라가거나, 굴뚝 점프(좁은 공간을 좌우로 디디면서 점프해 올라가는 것), 경사면을 타고 가다 점프 등등 – 는 전부 제거.</description>
    </item>
    
    <item>
      <title>Gccgo in GCC mainline</title>
      <link>https://rein.kr/posts/2010-12-05-gccgo-in-gcc-mainline/</link>
      <pubDate>Sun, 05 Dec 2010 11:51:10 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-12-05-gccgo-in-gcc-mainline/</guid>
      <description>Go 프로그래밍 언어는 크게 두 종의 컴파일러를 가지고 있다. 하나는 gc라고 통칭해 부르는 플랫폼 별 8g, 6g, 5g, … 등의 컴파일러고, 다른 하나는 GCC의 프런트 엔드인 Gccgo 라는 컴파일러다. 이 두 개는 크게 몇 가지 차이를 갖고 있다.1
gccgo와 gc가 goroutine 을 다루는 방식이 상이하다. gccgo는 goroutine당 1개의 OS 수준 thread를 써야 한다 반대로 gc는 적정 수(runtime.GO_MAX_PROCS( ))의 OS 수준 스레드 위에 goroutine들을 multiplexing한다. gccgo는 GCC에서 만드는 linkage들을 활용할 수 있다 – C 뿐만 아니라 C++링크도 가능하다; 반면에 gc는 cgo를 통한 C 언어 모듈들만 링크할 수 있다.</description>
    </item>
    
    <item>
      <title>BlogPress 구입기</title>
      <link>https://rein.kr/posts/2010-12-03-blogpress-%EA%B5%AC%EC%9E%85%EA%B8%B0/</link>
      <pubDate>Fri, 03 Dec 2010 22:27:17 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-12-03-blogpress-%EA%B5%AC%EC%9E%85%EA%B8%B0/</guid>
      <description>처음으로 돈 주고 산 아이폰 앱은 어쩌다 보니 블로깅 툴이 되었다. WordPress 공식 앱이 있긴 하지만 좀 많이 부족했다. 댓글 관리 빼고는 별로 쓸 수 있는 수준의 기능이 없었다.
사진 혹은 그림의 위치를 수정 하기도 번잡하고, 무엇보다 그나마 입력하기 편한 가로보기 상태에서 편집 창 크기가 너무 작다. 아이패드라면 모를까 아이폰에선 정말 좌절.
대략 이런 화면. 실제로 글을 쓰기 위한 입력 창의 크기가 너무 작다. 글 쓰는 동안 별 의미도 없는 타이틀 바나 휴대폰 자체의 상태 표시 부분이 많은 공간을 잡아먹는다.</description>
    </item>
    
    <item>
      <title>TLS, DLL, 그리고 Legacy Windows</title>
      <link>https://rein.kr/posts/2010-12-01-tls-dll-%EA%B7%B8%EB%A6%AC%EA%B3%A0-legacy-windows/</link>
      <pubDate>Wed, 01 Dec 2010 22:54:09 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-12-01-tls-dll-%EA%B7%B8%EB%A6%AC%EA%B3%A0-legacy-windows/</guid>
      <description>오늘 같은 팀 선배가 당한 일 하나.
이미 2년 정도 클라이언트 쪽에서 사용할 라이브러리를 작성하는데, 이 라이브러리를 사용하는 다른 프로젝트 k개는 잘 동작하는 상황. 근데 이걸 최근에 적용한 다른 팀에서 이런 보고가 들어왔다
“예제로 주신 프로그램은 잘 동작하는데, 저희 프로그램에서 사용하면 바로 크래시 합니다”
?!
제목을 보고 유추했을 지도 모르지만 – 그리고 클라이언트 라이브러리 문제란 점에서 감을 잡았다면 더더욱 추측할 수 있을 듯 – 다음과 같이 잘 알려진 문제다. 1 요약 하자면 이런 경우다.</description>
    </item>
    
    <item>
      <title>일반 사용자용 제품에 당연히 기대해야 하는 것</title>
      <link>https://rein.kr/posts/2010-11-25-%EC%9D%BC%EB%B0%98-%EC%82%AC%EC%9A%A9%EC%9E%90%EC%9A%A9-%EC%A0%9C%ED%92%88%EC%97%90-%EB%8B%B9%EC%97%B0%ED%9E%88-%EA%B8%B0%EB%8C%80%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94-%EA%B2%83/</link>
      <pubDate>Thu, 25 Nov 2010 22:52:39 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-11-25-%EC%9D%BC%EB%B0%98-%EC%82%AC%EC%9A%A9%EC%9E%90%EC%9A%A9-%EC%A0%9C%ED%92%88%EC%97%90-%EB%8B%B9%EC%97%B0%ED%9E%88-%EA%B8%B0%EB%8C%80%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94-%EA%B2%83/</guid>
      <description>일반 사용자 용(consumer grade) 제품이라면 당연히 기대하는 몇 가지가 있다.
별다른 매뉴얼 없이도 바로 쓸 수 있을 것 어지간한 일로는 작동을 멈추지 않을 것 SW의 경우 업그레이드나 기능 개선에 사용자가 직접 해야 하는 부분이 없거나 적을 것1 Microsoft Windows 가 진정한 일반 사용자 제품이 되었다고 느낀 건, 대략 이런 이유에서 Windows Vista가 처음이었다(7 쪽은 더 큰 개선이 있긴 하지만). 특히 세 번째 항목 때문.
이전에 Windows 새 버전을 설치하려면 대략,</description>
    </item>
    
    <item>
      <title>Python으로 Windows Service 제작해보기</title>
      <link>https://rein.kr/posts/2010-11-04-python%EC%9C%BC%EB%A1%9C-windows-service-%EC%A0%9C%EC%9E%91%ED%95%B4%EB%B3%B4%EA%B8%B0/</link>
      <pubDate>Thu, 04 Nov 2010 07:04:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-11-04-python%EC%9C%BC%EB%A1%9C-windows-service-%EC%A0%9C%EC%9E%91%ED%95%B4%EB%B3%B4%EA%B8%B0/</guid>
      <description>지난 주에 breakpad로 간단한 크래시 리포팅 툴을 작성했다. 이 리포트를 받는 툴을 python으로 작성했는데, 이걸 서비스로 띄우기 위해 어제 했던 삽질을 간략히(?) 정리 해보는 차원에서 글 하나.
우선 아주 간단한 웹 서버를 예로 쓰겠다. localhost:8000에서 HTTP GET으로 요청이 들어오면, 이 GET 경로를 그대로 text/plain으로 보내주는 서버다. 예를 들자면 http://127.0.0.1/path;param?var=value#frag 요청에 대해서 /path;param?var=value 가 웹 페이지에 찍힌다.
import BaseHTTPServer from SocketServer import ThreadingTCPServer class EchoHandler(BaseHTTPServer.BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header(‘Content-Type&amp;#39;, &amp;#39;text/plain; charset=UTF-8′) self.</description>
    </item>
    
    <item>
      <title>Breakpad 로 CrashReporter 만들기</title>
      <link>https://rein.kr/posts/2010-10-28-breakpad-%EB%A1%9C-crashreporter-%EB%A7%8C%EB%93%A4%EA%B8%B0/</link>
      <pubDate>Thu, 28 Oct 2010 08:00:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-10-28-breakpad-%EB%A1%9C-crashreporter-%EB%A7%8C%EB%93%A4%EA%B8%B0/</guid>
      <description>최근 한 3주 정도 바쁘더니, 어제 오늘은 좀 여유가 생겨서, 얼마 전에 코드를 읽어 본 google-breakpad를 써서 C++ 코드로 동작하는 바이너리의 crashdump를 특정 서버에 보고하는 간단한 라이브러리(래퍼) + 툴을 작성했다.
내가 이걸 필요로 하는 건, 팀에서 만드는 각종 서버 바이너리를 팀 외부의 여러 곳에서 쓰고 있는데, 이에 대한 덤프를 전달 받는다거나 하는 게 너무 번잡하기 때문 – 실제 라이브 서비스가 되면 다른 얘기지만, 그 전의 개발하고 테스트하는 단계에선 피드백 단위가 너무 크다.</description>
    </item>
    
    <item>
      <title>난 아직도 커맨드라인이 더 편하다</title>
      <link>https://rein.kr/posts/2010-10-18-%EB%82%9C-%EC%95%84%EC%A7%81%EB%8F%84-%EC%BB%A4%EB%A7%A8%EB%93%9C%EB%9D%BC%EC%9D%B8%EC%9D%B4-%EB%8D%94-%ED%8E%B8%ED%95%98%EB%8B%A4/</link>
      <pubDate>Mon, 18 Oct 2010 10:12:29 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-10-18-%EB%82%9C-%EC%95%84%EC%A7%81%EB%8F%84-%EC%BB%A4%EB%A7%A8%EB%93%9C%EB%9D%BC%EC%9D%B8%EC%9D%B4-%EB%8D%94-%ED%8E%B8%ED%95%98%EB%8B%A4/</guid>
      <description>대학(원)을 떠나 회사에 다닌 지도 벌써 4년이 다 되어 간다. 하지만 여전히 커맨드라인 환경(on *nix)이 몸에 더 익은 건 어쩔 수 없나 싶다. Win32 GUI 환경의 이런저런 개발 도구를 쓰긴 하지만, 정작 자주 하는 작업은 죄다 커맨드라인으로 하게 되더라.
예를 들어, 소스 코드를 수정한 후 커밋하기 까지 다음과 같은 과정을 거친다.
소스 트리 전체 리빌드 소스 트리 내의 유닛 테스트 실행 소스 트리 diff 보기 3의 결과를 보면서 커밋 로그 쓰기 이 작업을 어떻게 하느냐고?</description>
    </item>
    
    <item>
      <title>TCP segment 가 전송되지 않는다면 어딜 의심할까?</title>
      <link>https://rein.kr/posts/2010-10-09-tcp-segment-%EA%B0%80-%EC%A0%84%EC%86%A1%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94%EB%8B%A4%EB%A9%B4-%EC%96%B4%EB%94%9C-%EC%9D%98%EC%8B%AC%ED%95%A0%EA%B9%8C/</link>
      <pubDate>Sat, 09 Oct 2010 11:16:51 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-10-09-tcp-segment-%EA%B0%80-%EC%A0%84%EC%86%A1%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94%EB%8B%A4%EB%A9%B4-%EC%96%B4%EB%94%9C-%EC%9D%98%EC%8B%AC%ED%95%A0%EA%B9%8C/</guid>
      <description>A서버에서 B서버로 대용량 데이터를 전송하는 네트워크 프로그래밍을 하나 한다고 치자. 이런 저런 삽질 끝에 프로그램을 한 쌍 — 보내는 쪽과 받는 쪽 — 만들었다. 이제 이 프로그램을 실험해 볼 차례다.
실험 결과, A 서버에서 네트워크 send() 호출하는 게 충분히 빠르지 않은 것 같다 – 사실 정말 그런진 모르겠고, send-queue가 너무 빨리 늘어나는데 반해, 실제 네트워크 사용률도 그리 높지 않아서 어느 쪽이 문제인지 모르겠다고 쳐보자.
어디가 문제라고 판단해야 할까? 근데 설상가상으로 B 서버에 직접적으로 붙어서 디버깅하거나 할 순 없는 상황이라고 치자(…).</description>
    </item>
    
    <item>
      <title>IPv6 를 대비한 코드를 짤 때 가끔 보는 실수</title>
      <link>https://rein.kr/posts/2010-09-19-ipv6-%EB%A5%BC-%EB%8C%80%EB%B9%84%ED%95%9C-%EC%BD%94%EB%93%9C%EB%A5%BC-%EC%A7%A4-%EB%95%8C-%EA%B0%80%EB%81%94-%EB%B3%B4%EB%8A%94-%EC%8B%A4%EC%88%98/</link>
      <pubDate>Sun, 19 Sep 2010 21:51:11 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-09-19-ipv6-%EB%A5%BC-%EB%8C%80%EB%B9%84%ED%95%9C-%EC%BD%94%EB%93%9C%EB%A5%BC-%EC%A7%A4-%EB%95%8C-%EA%B0%80%EB%81%94-%EB%B3%B4%EB%8A%94-%EC%8B%A4%EC%88%98/</guid>
      <description>현재 인터넷의 주소 체계는 IPv4다. 이 IPv4로 쓸 수 있는 주소는 곧 동이 난다.1
그래서인지, 요즘 네트웍 쪽 코드를 읽다보면 몇 가지 방법으로 IPv4 –&amp;gt; IPv6 전환하기 위한 대비를 해둔걸 보게 된다. 크게 두 가지 방식을 보게 된다.
문자열로 주소를 전달한다 – IPv4 or IPv6 인지는 신경쓰지 않고, 그 밑의 네트웍 라이브러리나 코드 단에서 처리하게 한다.
미리 IPv6 일 때 사용할 인자 혹은 메모리 등을 예약(reserve)해 둔다 – IP 주소를 특정 데이터 타입으로 전달한다고 할 때, 추가로 공간을 할당한다면 여기에 IPv6 주소를 넣어서 보낼 수 있다.</description>
    </item>
    
    <item>
      <title>팀 세미나: Go Programming Language #4</title>
      <link>https://rein.kr/posts/2010-09-10-%ED%8C%80-%EC%84%B8%EB%AF%B8%EB%82%98-go-programming-language-4/</link>
      <pubDate>Fri, 10 Sep 2010 17:12:31 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-09-10-%ED%8C%80-%EC%84%B8%EB%AF%B8%EB%82%98-go-programming-language-4/</guid>
      <description>어쩌다보니 세 번째 했던 건 안 올려놨다는 사실을 확인. 일단 그 내용은 대부분 지난 번 성능 평가 관련 글의 내용이라 일단 나중에 기회 되면 올리기로…
이번에는 Go 를 가지고 UDP 데이터그램을 적당히 변조해주는 프로그램인 troll을 재 구현하고, 그에 대한 기록을 남겨봤다.
Introduction to Go Programming Language #4</description>
    </item>
    
    <item>
      <title>C&#43;&#43;의 유일한(?) implicit const_cast</title>
      <link>https://rein.kr/posts/2010-08-25-c%EC%9D%98-%EC%9C%A0%EC%9D%BC%ED%95%9C-implicit-const_cast/</link>
      <pubDate>Wed, 25 Aug 2010 09:45:28 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-08-25-c%EC%9D%98-%EC%9C%A0%EC%9D%BC%ED%95%9C-implicit-const_cast/</guid>
      <description>C++에는 (아마도 유일한) 묵시적 const_cast 가 있다. 바로,
char* str = &amp;#34;hello, world&amp;#34;; 이건 C++이 (최대한) C와의 하위 호환성을 가지려다 보니 나온 문제다. C 표준 라이브러리의 수많은 문자열 처리 함수들이 char* 을 인자로 받긴하지만, 의미 상으론 const char* 인 경우가 대부분이기 때문.
만약 const char* –&amp;gt; char* 을 명시적으로 바꿔야 한다면 많은 수의 C 코드가 C++ 컴파일러에서 컴파일되지 않게 된다. 그래서 이건 묵시적으로 const_cast&amp;lt;char*&amp;gt; 을 해 버린다.
하지만 모든 C 문자열 처리 함수가 const char* 의 의미로 동작하는건 아니다.</description>
    </item>
    
    <item>
      <title>svn tag 만들 때 svn:externals 리비젼 고정하기 (2)</title>
      <link>https://rein.kr/posts/2010-08-17-svn-tag-%EB%A7%8C%EB%93%A4-%EB%95%8C-svnexternals-%EB%A6%AC%EB%B9%84%EC%A0%BC-%EA%B3%A0%EC%A0%95%ED%95%98%EA%B8%B0-2/</link>
      <pubDate>Tue, 17 Aug 2010 11:03:51 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-08-17-svn-tag-%EB%A7%8C%EB%93%A4-%EB%95%8C-svnexternals-%EB%A6%AC%EB%B9%84%EC%A0%BC-%EA%B3%A0%EC%A0%95%ED%95%98%EA%B8%B0-2/</guid>
      <description>얼마 전에 svn 에서 tagging 할 때, svn:externals 로 링크(?)된 저장소들의 리비젼을 고정하는 스크립트를 작성했다. pysvn 이 있고 python 이 깔려있으면, svn copy 후, svn:externals 를 하나씩 찾아서 리비젼을 고정시키는 스크립트다.
이 스크립트의 문제: SVN은 svn:externals 문법이 하나가 아니고, 저 스크립트에선 해당 문법을 전부 지원하는건 아니다. 일단 1.5+를 생각하면 (최신은 1.6.x) 두 가지 형태의 문법이 있다.
example_lib –r 100 svn://example.com/repos/subdir 처럼 local-directory [-r rev] svn-repository-uri 형태 file:///home/johndoe/repos/subdir johndoe_lib 처럼 [-r rev] svn-repository-uri local-directory 형태 일단 순서가 바뀐다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43; 0x 와 VS 2010 관련해서</title>
      <link>https://rein.kr/posts/2010-08-10-c-0x-%EC%99%80-2010-%EA%B4%80%EB%A0%A8%ED%95%B4%EC%84%9C/</link>
      <pubDate>Tue, 10 Aug 2010 12:18:19 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-08-10-c-0x-%EC%99%80-2010-%EA%B4%80%EB%A0%A8%ED%95%B4%EC%84%9C/</guid>
      <description>신입 사원 대상으로 발표한 내용.
C++0x와 VS2010
왠지 팀 세미나에서 걸렸던 시간을 생각해서 빨리했더니 예정 시간 절반에 끝나버렸다 Orz
라이브 팀이 많아서인지 생각 외로 당장 VS 2010 을 쓰는 인원은 많지 않을 듯… </description>
    </item>
    
    <item>
      <title>리뷰: 노인의 전쟁 3부작</title>
      <link>https://rein.kr/posts/2010-07-29-%EB%A6%AC%EB%B7%B0-%EB%85%B8%EC%9D%B8%EC%9D%98-%EC%A0%84%EC%9F%81-3%EB%B6%80%EC%9E%91/</link>
      <pubDate>Thu, 29 Jul 2010 09:49:51 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-07-29-%EB%A6%AC%EB%B7%B0-%EB%85%B8%EC%9D%B8%EC%9D%98-%EC%A0%84%EC%9F%81-3%EB%B6%80%EC%9E%91/</guid>
      <description>이렇게 불러도 되는건진 모르겠지만, 한국에서도 저렇게 부르고, Amazon.com 에서도 Old Man’s war trilogy 같은 표현이 있는 듯 하니 일단 그렇게 쓴다.
SF 소설로, 지난 일주일 정도 동안 열심히 봤다. 사실 이건 빌려놓고 제대로 안 읽고 있다가 막상 돌려줘야 할 때가 되서 + Windows Vista-&amp;gt;7 업그레이드 때문에 손놓고 있던 두 시간 정도의 여유 때문(???).
‘노인의 전쟁’을 다 읽고나니, 이 후속작도 있다는 소릴 듣고 열심히 읽고, 아마존 검색 결과 그 다음권도 있길래 냉큼 사서 봤음.</description>
    </item>
    
    <item>
      <title>프로토콜을 만드는 자세</title>
      <link>https://rein.kr/posts/2010-07-27-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC%9D%84-%EB%A7%8C%EB%93%9C%EB%8A%94-%EC%9E%90%EC%84%B8/</link>
      <pubDate>Tue, 27 Jul 2010 10:10:10 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-07-27-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC%9D%84-%EB%A7%8C%EB%93%9C%EB%8A%94-%EC%9E%90%EC%84%B8/</guid>
      <description>프로토콜을 만드는 경우는 라이브러리와 비슷하다고 생각한다. 적어도 내가 대학원에서 배운 프로토콜들을 생각할 때1 이 둘을 만드는 자세는 꽤나 비슷한 거 같다. 그런 점에서 Coders At Work의 한 구절(좀 길지만) – Joshua Bloch 와의 인터뷰 – 를 인용해보겠다. 각종 강조도 내가 남긴 것.
Seibel: What is your proces for desiging software? Do you fire up Emacs and start writing code and then move it around until it looks right? Or do you sit down on your couch with a pad of paper?</description>
    </item>
    
    <item>
      <title>Google Go: 간단한 성능 평가</title>
      <link>https://rein.kr/posts/2010-07-20-google-go-%EA%B0%84%EB%8B%A8%ED%95%9C-%EC%84%B1%EB%8A%A5-%ED%8F%89%EA%B0%80/</link>
      <pubDate>Tue, 20 Jul 2010 02:09:55 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-07-20-google-go-%EA%B0%84%EB%8B%A8%ED%95%9C-%EC%84%B1%EB%8A%A5-%ED%8F%89%EA%B0%80/</guid>
      <description>수요일에 있을 팀 세미나 준비하면서, Google Go로 간단한 병렬 프로그램을 짜고, 직렬(serial;sequential) 구현과 성능을 비교 해봤다. 일단 간단히 여기에 정리. 모든 테스트는 x64 버젼의 MacOSX 를 돌리는 MacBook(2008년)/dual-core 에서 이루어 졌다.
매우 간단하게 병렬화 되는 알고리즘인, quicksort를 가지고 성능 테스트를 했다. pivot을 그냥 순열 중간에서 찍어내는 단순 무식한 방법으로 만들었음.
이하에선 대략 배열 길이가 512 보다 작으면 그냥 순차 알고리즘만 동작하게 했음.
Naïve 하게 시작 우선 처음엔 fork-join 하는 형태로 좀 많이 naïve 하게 짜봤다: 정수 400만개 정렬 시켰더니, goroutine 수가 너무 많다고 뻗음.</description>
    </item>
    
    <item>
      <title>스팸의 한국어가 좀 더 세련되게 변했네요</title>
      <link>https://rein.kr/posts/2010-07-19-%EC%8A%A4%ED%8C%B8%EC%9D%98-%ED%95%9C%EA%B5%AD%EC%96%B4%EA%B0%80-%EC%A2%80-%EB%8D%94-%EC%84%B8%EB%A0%A8%EB%90%98%EA%B2%8C-%EB%B3%80%ED%96%88%EB%84%A4%EC%9A%94/</link>
      <pubDate>Mon, 19 Jul 2010 23:46:40 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-07-19-%EC%8A%A4%ED%8C%B8%EC%9D%98-%ED%95%9C%EA%B5%AD%EC%96%B4%EA%B0%80-%EC%A2%80-%EB%8D%94-%EC%84%B8%EB%A0%A8%EB%90%98%EA%B2%8C-%EB%B3%80%ED%96%88%EB%84%A4%EC%9A%94/</guid>
      <description>블로그를 열어보니 보이는 스팸 두 통.
멋진 장소? 식의 괴악한 한국어를 벗어나 &amp;ldquo;공유해 주셔서 감사합니다. 정말이야!&amp;ldquo;라니…
그나마 한국어의 탈을 쓴 듯한 스팸이 오네요. 그래봐야 akismet에 걸린 듯 하지만…</description>
    </item>
    
    <item>
      <title>리뷰: The Design of Design</title>
      <link>https://rein.kr/posts/2010-07-03-%EB%A6%AC%EB%B7%B0-the-design-of-design/</link>
      <pubDate>Sat, 03 Jul 2010 23:37:16 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-07-03-%EB%A6%AC%EB%B7%B0-the-design-of-design/</guid>
      <description>The Myhtical Man-Month 의 저자 Frederick Brooks 의 신작이다.
일단 이 책은 부제인 “Essay from a Computer Scientist”에 나와 있듯, 일종의 에세이다. 저자의 사고를 일정한 순서로 풀어놓고, 이를 묶어서 책으로 만든 느낌이다.
이 책에서는 “디자인”을 어떻게 하는가 – 그러니까 디자인(설계)을 어떻게 설계해야 하는가 – 를 다룬다. 좀 불명확하긴 하지만, 디자인이 뭔지, 그리고 여기에 들어가는 사람들이 어떻게 사고하며 (이를 위한 SW는 어떤지, 이걸 써본 결과는 어땠는지), 그리고 어떻게 상호작용하는 지도 다룬다. 더불어, 디자인에 영향을 주는 요소들 – 자원(예산), 제약 사항 등등 – 도 다룬다.</description>
    </item>
    
    <item>
      <title>팀 세미나: Go Programming Language #2</title>
      <link>https://rein.kr/posts/2010-06-29-%ED%8C%80-%EC%84%B8%EB%AF%B8%EB%82%98-go-programming-language-2/</link>
      <pubDate>Tue, 29 Jun 2010 08:47:04 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-06-29-%ED%8C%80-%EC%84%B8%EB%AF%B8%EB%82%98-go-programming-language-2/</guid>
      <description>지난 번에 이어, 팀 세미나에서 얘기했던 내용을 업로드.
Introduction to Go Programming Language #2
지난 번에 받은 느낌은 C버젼의 Erlang 비슷한 언어였는데, 좀 더 쓰다보니 대략 Python 을 연상케한다.
Syntactic sugar라거나, http 모듈 구현 방식이라거나, duck-typing이나 다름 없는 interface 구조라거나 하지만 python 을 컴파일 언어로 만들긴 힘드니, 상당한 제약이 들어가 있다 그럼에도 불구하고 꽤나 편하게 만질 수 있었다 (System Programming 언어를 표방하는 애들 중엔 제일…) C 랑 매우 잘 붙는 것도 거의 C 와의 인터페이스로 쓰는 C pseudo-package 도 왠지 ctypes가 생각 나는 것이… …이런 느낌?</description>
    </item>
    
    <item>
      <title>Google Chrome 확장 기능 만들기</title>
      <link>https://rein.kr/posts/2010-06-28-google-chrome-%ED%99%95%EC%9E%A5-%EA%B8%B0%EB%8A%A5-%EB%A7%8C%EB%93%A4%EA%B8%B0/</link>
      <pubDate>Mon, 28 Jun 2010 00:55:09 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-06-28-google-chrome-%ED%99%95%EC%9E%A5-%EA%B8%B0%EB%8A%A5-%EB%A7%8C%EB%93%A4%EA%B8%B0/</guid>
      <description>아내가 egloos 육아 밸리에 누군가(…) 계속 보기 싫은 글 올린다고 불평을 하길래, 주말을 맞이해서 간단한(?) 플러그 인을 짜봤다. 그렇게 완성 시킨 걸 구글 크롬 확장 기능 페이지에 올려놨다.
Google Chrome 확장 기능은 개념적으로 매우 단순한 구조를 가지고 있다. 다만 보안 상의 이유로 몇 가지 제약 사항이 있어서 짜는데 삽질을 해야 했지만;;
전체적으로는 몇 개의 파일을 묶어서 플러그 인이 되게 한다. manifest.json라는 파일을 포함해야 하는데, 여기에 구글에서 정의한 기능 단위로 어느 파일이 어떤 기능을 하는지 정의 한다.</description>
    </item>
    
    <item>
      <title>리뷰: REWORK</title>
      <link>https://rein.kr/posts/2010-06-10-%EB%A6%AC%EB%B7%B0-rework/</link>
      <pubDate>Thu, 10 Jun 2010 07:30:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-06-10-%EB%A6%AC%EB%B7%B0-rework/</guid>
      <description>Signal vs. Noise 라는 이름으로 37signals ((Ruby on Rails 를 만든 회사이기도 하고, 몇 개의 사용하기 쉽고 간결한 툴들을 만든다. 사실 저 프레임웍 자체도 이 툴들 중 하나를 만들다 나온 것.)) 에서 운영하는 블로그가 있다. 여 튼 이 블로그에 글을 쓰는 사람 중 두 명이, 상당 부분 블로그 내용에 가깝게 책을 썼고, 이게 3월에 발매되었다. 이 책을 산 이유 중 하나는 광고 문구로, “각 종 사업을 시작해보려는 사람, 사업 중인 사람, 혹은 전혀 그럴 생각이 없는 사람들을 대상으로 썼다” 라고 되어 있길래 대체 무슨 소린가 해서.</description>
    </item>
    
    <item>
      <title>Google Go on Android/nacl?</title>
      <link>https://rein.kr/posts/2010-06-07-google-go-on-android-or-nacl/</link>
      <pubDate>Mon, 07 Jun 2010 09:44:17 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-06-07-google-go-on-android-or-nacl/</guid>
      <description>Google 의 Go Programming Language 의 빌드 상태 페이지를 발견하고, 적당히 살펴봤다.
Google Go 의 타겟 플랫폼으로 알고 있던 게, linux x86/x64, darwin(MacOSX) x86/x64, arm 이었는데, 몇 가지가 더 보이더라. 그 중 내 눈길을 끈게 있었다.
일단 linux-arm-android 가 있고, 추가로 nacl 386 이 있다. 좀 놀란 이유는 며칠 전 구글 I/O 에서,
Android 지원은 가능하지만(arm 에서 빌드가 되니), 아직 높은 우선 순위는 아니다
라고 답한 거였는데 … (정확히는 FAQ 목록이지만) 그리고 이 빌드가 한참된거라서 (올해 1월부터 있다; Fail이 좀 많긴 하지만)</description>
    </item>
    
    <item>
      <title>팀 세미나: Go Programming Language #1</title>
      <link>https://rein.kr/posts/2010-05-29-%ED%8C%80-%EC%84%B8%EB%AF%B8%EB%82%98-go-programming-language-1/</link>
      <pubDate>Sat, 29 May 2010 15:01:42 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-05-29-%ED%8C%80-%EC%84%B8%EB%AF%B8%EB%82%98-go-programming-language-1/</guid>
      <description>팀에서 매 주 한 번씩, (회사 일 이외에) 자기가 관심 갖는 주제에 대해 발표하는 시간을 가지고 있다.
나는 이 시간에 Google 에서 만드는 오픈 소스 프로그래밍 언어인 Go 에 대해 하기로 했다. 요즘 심심풀이로 만지는 언어가 Go라서…
여기 그 때 썼던 자료를 게시한다. export를 잘못했는지 슬라이드 노트들은 없다.
Introduction to Go Programming Language
사용한지 기껏해야 한달 좀 넘었지만, 기본적인 구조는 C를 따르고, 여기에 몇 가지 제약을 가하고 기본 타입과 concurrency primitive 를 더해서,1 Erlang 비슷한 언어가 되었다는 느낌.</description>
    </item>
    
    <item>
      <title>밑 글에 이어, C&#43;&#43; 0x lambda를 사용한 closure 예제</title>
      <link>https://rein.kr/posts/2010-05-14-%EB%B0%91-%EA%B8%80%EC%97%90-%EC%9D%B4%EC%96%B4-c-0x-lambda%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-closure-%EC%98%88%EC%A0%9C/</link>
      <pubDate>Fri, 14 May 2010 18:39:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-05-14-%EB%B0%91-%EA%B8%80%EC%97%90-%EC%9D%B4%EC%96%B4-c-0x-lambda%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-closure-%EC%98%88%EC%A0%9C/</guid>
      <description>바로 전 글에 이어, 두 개의 예제 차이(?)를 들어보겠다.
class SomeObject { int m_value; public: SomeObject() : m_value(0) {} int Get() const { return m_value; } void Reset() { m_value = 0; } void Increment(int addend) { m_value += addend; } }; 이런 클래스의 객체 so가 있고. 이 so의 Increment() 멤버 함수를 인자로 지역 변수 x를 넣어, 미래의 특정 시점에 호출하려고 Closure로 만든다고 치자. 우선 기존 구현체를 쓴다면 다음과 같은 코드가 필요하다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;0x를 써서 Closure 다시 만들기</title>
      <link>https://rein.kr/posts/2010-05-13-c0x%EB%A5%BC-%EC%8D%A8%EC%84%9C-closure-%EB%8B%A4%EC%8B%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0/</link>
      <pubDate>Thu, 13 May 2010 23:04:19 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-05-13-c0x%EB%A5%BC-%EC%8D%A8%EC%84%9C-closure-%EB%8B%A4%EC%8B%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0/</guid>
      <description>예전에 포스팅 한 것 처럼, 2 년 전, 이맘 때 쯤, boost 라이브러리를 이용해서 C++ 용 Closure 구현체를 만들었다. 이걸 만들 때 겪었던 어려운 점들은 다음과 같다.
함수의 타입을 인식해야 하기 때문에 가변 인자 템플릿을 만들어야 했고, 이를 위해 boost::preprocessor 의존성이 생겼다 인자의 생명 주기를 추정할 수 없기에, 간단한 가정을 하고 모든 참조형 인자(T&amp;amp; 타입)를 강제로 원래 타입으로 지정(T 타입)해서 저장하도록 했다. 함수를 ‘저장’하기 위해 boost::function 을 사용했다. (std::tr1::function 과 동일함) C++ 0x 에는 lambda function 문법이 있다.</description>
    </item>
    
    <item>
      <title>The Design of design 읽던 중에</title>
      <link>https://rein.kr/posts/2010-04-26-the-design-of-design-%EC%9D%BD%EB%8D%98-%EC%A4%91%EC%97%90/</link>
      <pubDate>Mon, 26 Apr 2010 11:25:40 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-04-26-the-design-of-design-%EC%9D%BD%EB%8D%98-%EC%A4%91%EC%97%90/</guid>
      <description>부끄러워져서 다짐하는 의미로 글 한 토막.
Mythical Man Month 의 Freidric Brooks 의 신작(작년에 나왔지만) The Design of design 을 요즘 읽고 있다. 반 쯤 읽은 상탠데, 반복해서 강조하는 내용 중 하나가,
디자이너는 자기 분야의 “모범적인 예제(exemplar)”들을 탐구하고, 연구하고, 그 안에 담긴 원리(rationale)를 이해하고 상황에 맞게 해석해야 한다.
의 내용이다.
좀 더 자세히 쓰자면, 해당 분야의 이론이 되는 근거들(컴퓨터 공학이라면 수학/논리학/전기 공학 …)를 충분히 배우는 것도 중요하고 실무의 내용도 알아야 하며, 이를 이해하기 위해 역사적인 모범 예제들을 탐구하라는 것.</description>
    </item>
    
    <item>
      <title>svn tag만들 때 svn:externals 리비젼 고정하기</title>
      <link>https://rein.kr/posts/2010-03-23-svn-tag%EB%A7%8C%EB%93%A4-%EB%95%8C-svnexternals-%EB%A6%AC%EB%B9%84%EC%A0%BC-%EA%B3%A0%EC%A0%95%ED%95%98%EA%B8%B0/</link>
      <pubDate>Tue, 23 Mar 2010 22:36:06 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-03-23-svn-tag%EB%A7%8C%EB%93%A4-%EB%95%8C-svnexternals-%EB%A6%AC%EB%B9%84%EC%A0%BC-%EA%B3%A0%EC%A0%95%ED%95%98%EA%B8%B0/</guid>
      <description>요즘 특정 바이너리를 배포할 때 마다 아래의 과정을 반복하고 있다.
svn tag 생성 svn copy trunk tags/version-identifier 로 태그를 생성한다 svn:extenrals 로 연결된 외부 의존성1 의 revision을 고정한다. 예를 들어 library_AAA svn://some_host/some_dir/trunk/ 인 svn:externals 를, library_AAA –r 1000 svn://some_host/some_dir/trunk/ 하는 식으로 revision 을 고정한다. 만약 이 revision 고정하는 부분을 건너 뛰면, 소스 서버를 따로 쓴다면 모르겠지만, 그렇지 않은 경우 나중에 버그 트래킹할 때 귀찮아진다. 태깅된 소스 트리 자체야 버젼이 맞지만, svn:externals 의 revision이 고정되지 않은 경우, 해당 저장소의 최신 버젼을 가져오게 되기 때문에 바이너리와 소스 트리 사이의 버젼이 달라져서 제대로 디버깅하기 힘들다.</description>
    </item>
    
    <item>
      <title>내가 서로 다른 언어로 프로그래밍할 때의 느낌</title>
      <link>https://rein.kr/posts/2010-03-16-%EB%82%B4%EA%B0%80-%EC%84%9C%EB%A1%9C-%EB%8B%A4%EB%A5%B8-%EC%96%B8%EC%96%B4%EB%A1%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%ED%95%A0-%EB%95%8C%EC%9D%98-%EB%8A%90%EB%82%8C/</link>
      <pubDate>Tue, 16 Mar 2010 09:20:53 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-03-16-%EB%82%B4%EA%B0%80-%EC%84%9C%EB%A1%9C-%EB%8B%A4%EB%A5%B8-%EC%96%B8%EC%96%B4%EB%A1%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%ED%95%A0-%EB%95%8C%EC%9D%98-%EB%8A%90%EB%82%8C/</guid>
      <description>회사에서, 혹은 집에서 일상적으로(…) 프로그래밍할 때 사용하는 언어는 C++, Python 이다. 가끔 PHP 코드를 고치고(=WordPress 자체 혹은 플러그인 수정하거나 만들 때), JavaScript 를 만지작 거리지만(역시 WP 가지고 놀 때), lua는 요즘 찬밥이고(…). 일단 내 일상에서는 저 두 가지가가장 흔하고(?), 가장 상반된 느낌을 준다.
어제 IRC 모 채널에서 얘기한 내용이지만, 거의 같은 내용을 여기에 다시 써 본다.
Python 으로 프로그래밍하는 일은 거의 편한 연습장에, 내가 즐겨 쓰는 연필이나 샤프로 슥슥 써내려가는 느낌이다.</description>
    </item>
    
    <item>
      <title>리뷰: 천사와 악마</title>
      <link>https://rein.kr/posts/2010-03-16-review-on-angels-and-demons-by-dan-brown/</link>
      <pubDate>Tue, 16 Mar 2010 08:50:20 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-03-16-review-on-angels-and-demons-by-dan-brown/</guid>
      <description>작년에 개봉한 영화를 ((다빈치 코드를 책으로 읽고 영화는 차마 볼 수가 없었다. 이 경우에도 비슷한게 성립할듯 하다)) 이제야 본거긴한데; 여튼 짤막한 감상.
영화 자체는 댄 브라운이 쓴 글 답게 진행된다. 뭔가 영화 만들작정으로 쓴 것인지 구성 자체도 영화만들기 좋게 되어있었음; 약 5시간 동안 벌어지는 일들을, 천주교의 콩클라베(Papal conclave) 를 배경으로 삼아 진행된다. 전체적인 구도는 천주교단 + 로버트 랭던 교수(=이하 주인공 측) vs. 비밀결사인 일루미너티의 형태로 진행된다.
일루미너티가 폭탄(무려 반물질이라니(…))을 설치하고, 네 명의 추기경을 납치하고 이를 차례로 죽이려는 시도를 하고, 이걸 주인공측에서 막으려는게 큰 줄기.</description>
    </item>
    
    <item>
      <title>리뷰: 프로젝트가 서쪽으로 간 까닭은</title>
      <link>https://rein.kr/posts/2010-03-09-%EB%A6%AC%EB%B7%B0-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EA%B0%80-%EC%84%9C%EC%AA%BD%EC%9C%BC%EB%A1%9C-%EA%B0%84-%EA%B9%8C%EB%8B%AD%EC%9D%80/</link>
      <pubDate>Tue, 09 Mar 2010 23:05:06 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-03-09-%EB%A6%AC%EB%B7%B0-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EA%B0%80-%EC%84%9C%EC%AA%BD%EC%9C%BC%EB%A1%9C-%EA%B0%84-%EA%B9%8C%EB%8B%AD%EC%9D%80/</guid>
      <description>작년 졸트 어워드를 받은 “Adrenaline Junkies and Template Zombies”의 번역이다. 역자는 Joel on Software, 초난감 기업의 조건 등등을 번역한 박재호 님과 이해영 님.
책 제목이 참 괜찮게 한글화 된 듯하다. 그래서 산거지만.
일단 86 가지의 “팀 (행동) 유형”에 관해서 4 명의 저자들이 (어떻게 보면 굉장히) 가볍게 다룬다. 각 항목마다,
항목의 제목(과 그에 해당하는 원본 책의 제목) 그에 해당하는 사진 혹은 그림 수 단어 ~ 수 줄 수준의 간단한 어구 인용, 혹은 내용 요약 본 내용 1~3 페이지 정도.</description>
    </item>
    
    <item>
      <title>전역</title>
      <link>https://rein.kr/posts/2010-03-07-%EC%A0%84%EC%97%AD/</link>
      <pubDate>Sun, 07 Mar 2010 01:05:03 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-03-07-%EC%A0%84%EC%97%AD/</guid>
      <description>Global variable / function 할 때의 그 전역은 아니고, 전문연구요원으로 복무하는 기간이 끝났다.
2007년 3월 7일부터 2010년 3월 6일(토요일이라 실질적으론 전날인 5일까지)까지로 끝. 병무청 홈페이지에서 정말 끝난건가 싶어서 뭔가 조회해보려고 했더니 가상 PC에선 거의 뭐가 안되는군.
유일하게 조회되는건 아직 데이터가 없다고 나온다. 이건 월요일되야 업데이트되나… 사실 이거 캡쳐해서 넣으려고 했는데 아직임.
사실 전문연구요원 신분을 벗어나 민간인이 되는거라고해도 바뀌는거라곤 해외 나갈 때 절차가 단순화되는 거 밖에 없는듯하지만; 개인적으로 자축 겸, 정리 겸 해서 글을 쓴다.</description>
    </item>
    
    <item>
      <title>프로그래머의 일상: 다시 ActionScript 삽질</title>
      <link>https://rein.kr/posts/2010-02-13-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EB%8B%A4%EC%8B%9C-actionscript-%EC%82%BD%EC%A7%88/</link>
      <pubDate>Sat, 13 Feb 2010 13:12:55 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-02-13-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EB%8B%A4%EC%8B%9C-actionscript-%EC%82%BD%EC%A7%88/</guid>
      <description>사실 이건 ActionScript 2.0 이라서 하는 삽질이다.
예전에 했던 작업을 동면에서 깨워, 다시 진행해야하는 상황이 되었다(이미 2.x주 전의 얘기). 그래서 요즘 C++ + ActionScript(2.0; Flash 8) 으로 작업하고 있는데, 나는 플래시 저작툴 라이센스가 하나도 없어서 MotionTwin 의 툴셋을 쓰고 있다. 덤으로 ASUnit 2.5 도 다시 끄집어 내서 사용 중.
예전에 Flex 로 액션스크립트 테스트를 한다는 글을 읽고, 다음에 이 쪽을 또하면 이용해보자란 생각을 했었다. 그렇지만 여전히 ActionScript 2.0 (≠Flex SDK)라서, 이걸 사용하는건 불가능.</description>
    </item>
    
    <item>
      <title>Project DarkStar 는 왜 실패했을까?</title>
      <link>https://rein.kr/posts/2010-02-04-project-darkstar-%EB%8A%94-%EC%99%9C-%EC%8B%A4%ED%8C%A8%ED%96%88%EC%9D%84%EA%B9%8C/</link>
      <pubDate>Thu, 04 Feb 2010 10:50:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-02-04-project-darkstar-%EB%8A%94-%EC%99%9C-%EC%8B%A4%ED%8C%A8%ED%96%88%EC%9D%84%EA%B9%8C/</guid>
      <description>1. 게임 서버는 게임 제작 기간의 임계 경로(critical path)가 아니다 게임 서버는 대부분의 경우 “게임 제작 시작”과 동시에 작성되기 시작하는 경우는 거의 없다. 그래서 엔진을 사서 얻을 수 있는 이익 중 하나인 “시간 단축”으로 인한 효과가 적거나 없다. 물론 상대적으로 안정화된 코드 베이스를 빨리 얻을 수 있다는 이점은 존재 한다.
2. 게임 서버 구조에 대한 컨센서스가 없다. 게임 클라이언트는 각 모듈들 – 게임 로직, 렌더링, AI, … – 이 어느 정도 잘 분해되어 있다 – 적어도 그런 종류의 고민이 많이 끝난 상태다.</description>
    </item>
    
    <item>
      <title>Project Dark Star 개발 중단 및 오픈 소스화</title>
      <link>https://rein.kr/posts/2010-02-04-project-dark-star-%EA%B0%9C%EB%B0%9C-%EC%A4%91%EB%8B%A8-%EB%B0%8F-%EC%98%A4%ED%94%88-%EC%86%8C%EC%8A%A4%ED%99%94/</link>
      <pubDate>Thu, 04 Feb 2010 06:45:32 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-02-04-project-dark-star-%EA%B0%9C%EB%B0%9C-%EC%A4%91%EB%8B%A8-%EB%B0%8F-%EC%98%A4%ED%94%88-%EC%86%8C%EC%8A%A4%ED%99%94/</guid>
      <description>Sun Microsystems 의 Java 기반 MMORPG 서버 프로젝트인 Project Dark Star 가 개발 중단되고, github 와 구글 포럼으로 소스 저장소/포럼을 이전한다고 공지되었다 – via gamedev.net
Project Dark Star 의 포럼 공지에 따르면,
Today is a difficult day for all of us associated with Project Darkstar. Regretfully, we must inform our community members that Sun Labs engineering effort is no longer being applied to Darkstar development. You will hear from the individual engineers about what this means for them, but the organized lab project will not be moving forward.</description>
    </item>
    
    <item>
      <title>Blog 이사 아닌 이사</title>
      <link>https://rein.kr/posts/2010-01-29-blog-%EC%9D%B4%EC%82%AC-%EC%95%84%EB%8B%8C-%EC%9D%B4%EC%82%AC/</link>
      <pubDate>Fri, 29 Jan 2010 22:48:52 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-01-29-blog-%EC%9D%B4%EC%82%AC-%EC%95%84%EB%8B%8C-%EC%9D%B4%EC%82%AC/</guid>
      <description>도메인 주소 구입 + 블로그 디렉토리 이전으로 몇 가지 삽질을 했다. 아래는 이틀 간의 삽질 기록.
2009년 12월 27일을 끝으로 만료된 rein.kr 도메인을 구입했다 – 물론 만료 후 한 달이 지나야 다른 사람이 등록할 수 있기에 어제 구입. 구매할 때 상당히 많은 개인정보를 요구하는건 유감이지만 — .kr 도메인이 아니고서야 한국 내에서 살 이유가 없으니 – 어쨌든 도메인 주소가 대폭 짧아졌다. 여기까지 해서 http://rein.upnl.org/wordpress 를 https://rein.kr/wordpress/ 로 이전.
도메인 주소가 짧아지고나니, wordpress 라는 블로그 디렉토리 이름이 묘하게 길어보이기 시작했다.</description>
    </item>
    
    <item>
      <title>Blog 도메인 이전 및 기타 등등</title>
      <link>https://rein.kr/posts/2010-01-29-blog-%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%9D%B4%EC%A0%84-%EB%B0%8F-%EA%B8%B0%ED%83%80-%EB%93%B1%EB%93%B1/</link>
      <pubDate>Fri, 29 Jan 2010 00:30:27 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-01-29-blog-%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%9D%B4%EC%A0%84-%EB%B0%8F-%EA%B8%B0%ED%83%80-%EB%93%B1%EB%93%B1/</guid>
      <description>rein.upnl.org → rein.kr 이전 + /wordpress/ → / 이전이 진행 중.
일부 디렉토리가 접근이 안된다거나, 특정 그림/사진이 안보인다거나, 링크가 잠시 접근이 안된다거나 할 수 있는 상황.
주말까지 간헐적으로 문제가(혹은 폭발적으로?) 생길 예정..
&amp;lt;IfModule mod_alias.c&amp;gt; Redirect 301 /wordpress /blog &amp;lt;/IfModule&amp;gt; 로 일단 수정. 과연 이걸로 끝?</description>
    </item>
    
    <item>
      <title>Adobe FlashSocketPolicyDaemon (python) 코드의 버그</title>
      <link>https://rein.kr/posts/2010-01-22-bug-in-adobe-flash-socket-policy-daemon-written-in-python/</link>
      <pubDate>Fri, 22 Jan 2010 07:58:46 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-01-22-bug-in-adobe-flash-socket-policy-daemon-written-in-python/</guid>
      <description>예~~~~전에 작성한 ActionScript 코드 및 이것과 통신하는 C++ 서버 코드가 있는데, 이걸 다시 창고(…)에서 꺼낼 일이 생겼다. 전부 다시 빌드하고 – 그동안 라이브러리는 업데이트 되었는데, 이 녀석은 손 안 대서 수정할 게 좀 있더라 – 테스트 코드를 돌리기 위해서 python 서버들을 띄우고, C++ 서버를 띄우고, 테스트 클라이언트(.swf)를 연결했다.
그런데 소켓 정책 파일(flash socket policy file)을 얻어오지 못하는 게 아닌가?1
한참 고민하고 + 코드 리뷰하고 나서야 문제를 파악했는데, 내 C++ 코드나, ActionScript 적응단 문제가 아니라 Adobe 에서 제공하는 flashsocketpolicyd 의 python 구현체 일부에 문제가 있는 코드가 있었다.</description>
    </item>
    
    <item>
      <title>프로그래머의 일상: C&#43;&#43; 삽질, Python 삽질</title>
      <link>https://rein.kr/posts/2010-01-22-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-c-%EC%82%BD%EC%A7%88-python-%EC%82%BD%EC%A7%88/</link>
      <pubDate>Fri, 22 Jan 2010 00:05:31 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-01-22-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-c-%EC%82%BD%EC%A7%88-python-%EC%82%BD%EC%A7%88/</guid>
      <description>연말에 10일간의 휴가가 꿈결처럼 지나가고 나서, 2주간의 야근, 그리고 이번 주에도 업무량이 많아서 괴로워하고 있다.
이번 주 업무량에 + α를 더해준 버그들을 소개해보겠다.
C++ 삽질 작년 끝 무렵에 팀에 합류한 후배 i 군이 서버 군을 대상으로 테스트를 돌리는 툴을 만들었다. 이걸로 몇몇 서버를 테스트했는데, 타이머 이벤트 처리하는 부분에서 메모리 릭이 생기거나 크래쉬가 나는 것이다 Orz. 덕분에 어제 야근.
삽질했던 이유는, 기존에 별도 라이브러리였던 타이머 구현체를, 기본 라이브러리 안으로 가져오면서 boost 의존성을 뺐는데, 이때 boost::shared_ptr 를 코어에서 빼내었다.</description>
    </item>
    
    <item>
      <title>프로그래머의 책상 위 모습이 궁굼합니다</title>
      <link>https://rein.kr/posts/2010-01-12-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%B1%85%EC%83%81-%EC%9C%84-%EB%AA%A8%EC%8A%B5%EC%9D%B4-%EA%B6%81%EA%B5%BC%ED%95%A9%EB%8B%88%EB%8B%A4/</link>
      <pubDate>Tue, 12 Jan 2010 09:27:03 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2010-01-12-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%B1%85%EC%83%81-%EC%9C%84-%EB%AA%A8%EC%8A%B5%EC%9D%B4-%EA%B6%81%EA%B5%BC%ED%95%A9%EB%8B%88%EB%8B%A4/</guid>
      <description>jacking 님이 &amp;ldquo;책상 위 모습을 사진 찍어서 트랙백을 쏴보자&amp;quot;는 글을 썼다. (아래는 그 글 인용)
어제 트위터에 올라온 글을 보니 그래픽 디자이너의 일하는 자리를 찍은 사진을 투고하는 이벤트를 하더군요. 그 글을 보니 회사에서 프로그래머의 책상 위는 어떤 모습을 하고 있을지 궁금하더군요. 혹시 자신의 자리를 사진을 찍어서 올릴 수 있는 분들은 트랙백이나 덧글을 통해서 자신의 자리를 구경 시켜주세요
라 쓰셨길래 예전에 찍은 사진을 링크.
작년 8월(2009/08)에 찍은 사진인데, 지금은 왼쪽 안 보이는 부분에 앉은뱅이 책장을 올려버리고, 그 밑에 데탑을 보관 중.</description>
    </item>
    
    <item>
      <title>리뷰: Coders at Work</title>
      <link>https://rein.kr/posts/2009-12-22-%EB%A6%AC%EB%B7%B0-coders-at-work/</link>
      <pubDate>Tue, 22 Dec 2009 08:55:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-12-22-%EB%A6%AC%EB%B7%B0-coders-at-work/</guid>
      <description>Peter Seibel 의 coders at work 완독. 현업에 있는 / 있었던 유명 프로그래머 – 이쪽 업계에선 여러가지 의미로 슈퍼 스타 – 들의 인터뷰 15개를 엮어놓은 책이다.
인터뷰한 사람들의 면면을 살펴보면, 학계에 있던 사람부터 시작해서 (Knuth 교수라거나 haskell 의 Simon. Peyton-Jones, Guy Steel 등등), 업계에서 처음부터 지금까지 일해온 사람들(Live Journal을 만든 Fitzpatrick, 넷스케이프의 Zawanski, JSON의 Crockford, JavaScript의 Eich, Java Collections 의 저자 Bloch 등등) 혹은 양쪽 다에서 업적을 쌓은 사람들(AI 책의 저자이면서 구글의 리서치 디렉터인 Peter Norvig, UNIX와 C의 Ken Tompson 등등) 을 포함한다.</description>
    </item>
    
    <item>
      <title>라이브러리를 사용하는 프로젝트를 테스트할 때의 seam</title>
      <link>https://rein.kr/posts/2009-12-13-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%A0-%EB%95%8C%EC%9D%98-seam/</link>
      <pubDate>Sun, 13 Dec 2009 22:29:44 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-12-13-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%A0-%EB%95%8C%EC%9D%98-seam/</guid>
      <description>Working Effectively With Legacy Code에서 말하는 seam이란 개념이 있다.
A seam is a place where you can alter behavior in your program without editing in that place.
프로그램에서 해당 지점을 수정하지 않고도 동작을 바꿀 수 있는 지점.
흔히 API가 정의되는 지점인 library 경계에서 seam을 사용하려니까 link seam이 참 편하다는걸 최근 몸으로 느꼈다. 요즘 작성하는 프로그램에서, 팀 내에서 작성한 몇 몇 라이브러리를 사용한다. 근데 이걸 test-harness 밑에서 돌리려니 mock 객체를 만들어야겠고, 그러다보니 적당한 seam을 찾아야하는데, 결국 도달하는 곳은 항상 link seam 이었다.</description>
    </item>
    
    <item>
      <title>Peter Norvig 이 생각하는 TDD</title>
      <link>https://rein.kr/posts/2009-12-02-peter-norvig-%EC%9D%B4-%EC%83%9D%EA%B0%81%ED%95%98%EB%8A%94-tdd/</link>
      <pubDate>Wed, 02 Dec 2009 09:45:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-12-02-peter-norvig-%EC%9D%B4-%EC%83%9D%EA%B0%81%ED%95%98%EB%8A%94-tdd/</guid>
      <description>최근 출퇴근 길에 “Coders at Work”의 eBook을 읽고 있다. 거의 내 맘대로 순서를 정해서 보고있는데, 오늘 출근 길에 읽은 Peter Norvig1의 인터뷰 중에, 어떻게 프로그램을 짜는게 좋은가에 관한게 나온다.
이 이하의 인용은 Norvig 이 인터뷰한 내용. 모든 저작권은 Seibel 및 출판사에 있다.
Norvig: I thik one of the most important things is being able to keep everythin in your head at once. If you can do that you have a much better chance of being successful.</description>
    </item>
    
    <item>
      <title>C&#43;&#43; style guide - from google, from naver</title>
      <link>https://rein.kr/posts/2009-11-30-c-style-guide-from-google-from-naver/</link>
      <pubDate>Mon, 30 Nov 2009 23:16:15 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-11-30-c-style-guide-from-google-from-naver/</guid>
      <description>C++ 은 이미 수십년째 사용되고 있는 언어지만, 많은 분야에서 work-horse로 사용되고 있다. 그렇지만 수십년의 역사가 담겨 있고, 원래 시스템 프로그래밍 언어였던 C의 확장으로 만들어졌기에, 저레벨의 포인터 연산부터, 고레벨의 템플릿 메타 프로그래밍 류에 이르기까지 매우 많은 영역을 다루고 있다. 덕분에 이를 적당히 제약하고, 많은 프로그래머(?)들이 읽을 수 있게 스타일 가이드를 정해서 사용하는 회사가 많다.
널리 알려진 스타일 가이드 중 하나는 Google 에서 제공하는게 있다.https://google.github.io/styleguide/cppguide.html 에서 찾아볼 수 있는데, 이를 검증(?)하는 python 체커인 cpplint.</description>
    </item>
    
    <item>
      <title>내가 원하는 test-runner 의 조건</title>
      <link>https://rein.kr/posts/2009-11-27-%EB%82%B4%EA%B0%80-%EC%9B%90%ED%95%98%EB%8A%94-test-runner-%EC%9D%98-%EC%A1%B0%EA%B1%B4/</link>
      <pubDate>Fri, 27 Nov 2009 00:00:48 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-11-27-%EB%82%B4%EA%B0%80-%EC%9B%90%ED%95%98%EB%8A%94-test-runner-%EC%9D%98-%EC%A1%B0%EA%B1%B4/</guid>
      <description>주말에 작성한 google test 용 GUI runner를 오늘까지 4일간 회사에서 사용해봤다. 개밥먹기답게 몇 가지 문제점을 파악할 수 있었고, 내가 원하는 것들이 뭔지도 좀 더 알 수 있게 되었다. 일단 적당히 적어보자면,
Test 가 변화하면 자동으로 샐행되야 한다. 일일이 실행하는건 참 귀찮은 일이다. 기왕이면 JUnitMax 처럼 좀 더 지능적으로 실행 순서까지 골라주면야 좋겠지만..
Test filtering이 되어야 한다. 아주 간단한 형태로 실행할 테스트의 부분집합을 고를 수 있어야 한다. 이건 사실 PyUnit gui runner의 “Enter test name” 의 입력창 값을 가져다가 gtest_filter 에만 넘겨줘도 될듯함.</description>
    </item>
    
    <item>
      <title>주말 코딩: Google test 용 GUI runner</title>
      <link>https://rein.kr/posts/2009-11-23-%EC%A3%BC%EB%A7%90-%EC%BD%94%EB%94%A9-google-test-%EC%9A%A9-gui-runner/</link>
      <pubDate>Mon, 23 Nov 2009 07:28:26 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-11-23-%EC%A3%BC%EB%A7%90-%EC%BD%94%EB%94%A9-google-test-%EC%9A%A9-gui-runner/</guid>
      <description>팀에서는 C++ 테스트 프레임웍으로 구글 테스트(gtest)를 사용한다. 여기에 불만스러운게 좀 있다면, 다름 아니라 GUI test-runner가 없다는 것. x-unit 류의 GUI Test-runner에서 흔히 볼 수 있는 녹색 테스트 프로그레스 바가 보고싶다는 점에서 python 프로그램을 하나 작성하게 되었다.
작업의 단초는,
pyunit의 GUI runner. 이걸로 GUI를 돌려보자 gtest 는 –gtest_list_tests 로 해당 실행 파일의 테스트 케이스를 볼 수 있다 더불어, some_gtest_exe.exe –gtest_output=xml:some_file_name 하면 XML 형태의 결과를 쓸 수 있다 정도?
일단 간단한 python wrapper로,</description>
    </item>
    
    <item>
      <title>Sun Compiler 에서 Transactional Memory 지원 시작</title>
      <link>https://rein.kr/posts/2009-11-21-sun-compiler-%EC%97%90%EC%84%9C-tm-%EC%A7%80%EC%9B%90-%EC%8B%9C%EC%9E%91/</link>
      <pubDate>Sat, 21 Nov 2009 22:02:45 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-11-21-sun-compiler-%EC%97%90%EC%84%9C-tm-%EC%A7%80%EC%9B%90-%EC%8B%9C%EC%9E%91/</guid>
      <description>실험적이지만 Sun의 Sun Studio C++ 컴파일러에 트랜잭션 메모리(transactional memory) 기능을 지원하기 시작했다고 TM &amp;amp; Languages 그룹에 새 글이 올라왔다.
인용하면,
Daniel Nussbaum – Sun Microsystems – Burlington United States
Sun Microsystems is happy to announce experimental support for Transactional Memory in C++. The C++ compiler with Transactional Memory support is based on the Sun[TM] Studio 12 Update 1 C++ compiler. This experimental release is available for SPARC-based systems only
란다.</description>
    </item>
    
    <item>
      <title>Library 구성 삽질</title>
      <link>https://rein.kr/posts/2009-11-09-library-%EA%B5%AC%EC%84%B1-%EC%82%BD%EC%A7%88/</link>
      <pubDate>Mon, 09 Nov 2009 22:52:16 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-11-09-library-%EA%B5%AC%EC%84%B1-%EC%82%BD%EC%A7%88/</guid>
      <description>지난 주말에 출근해서 하루간 삽질한걸 가지고 오늘 연동 테스트를 하는데, Azyu 컴퓨터에서 네트웍에서 온 패킷을 처리못하는 상황이 발생.
네트웍으로 온 데이터를 길이와 아이디를 이용해서 의미단위로 쪼갠 후 몇 가지 기본 타입의 조합으로 바꾼 후, 윗단으로 전달 하는 일련의 과정을 거친다.
근데 3 단계에서 raw binary stream을 C++이 인식하는 각종 타입으로 바꾸는 과정에서 에러가 났다. 정확히는 특정 구조체를 뽑아내는 부분으로 넘어가질 않는다. 심지어, 디버그 모드에서 break-point 조차 설정할 수 없는 이상한 상태 Orz</description>
    </item>
    
    <item>
      <title>GPGStudy 포럼의 대안에 관해</title>
      <link>https://rein.kr/posts/2009-10-15-gpgstudy-%ED%8F%AC%EB%9F%BC%EC%9D%98-%EB%8C%80%EC%95%88%EC%97%90-%EA%B4%80%ED%95%B4/</link>
      <pubDate>Thu, 15 Oct 2009 10:47:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-10-15-gpgstudy-%ED%8F%AC%EB%9F%BC%EC%9D%98-%EB%8C%80%EC%95%88%EC%97%90-%EA%B4%80%ED%95%B4/</guid>
      <description>한국어를 사용하는 게임 개발자들의 포럼 중 가장 유명한 것을 꼽자면 단연 Game Programming Gems 를 번역한 류광님이 운영하는 GPGStudy.com 이다. 원래는 책 자체에 대한 Q&amp;amp;A 였다는데, 좀 더 일반적인 게임 프로그래밍(프로그래밍 일반, 그래픽스, AI 등등)에 관한 포럼으로 성장했다.
하지만 얼마 전에 류광님이,
12월 1일부로 대부분의 게시판들을 읽기 전용으로 전환하고, &amp;ldquo;GPG 시리즈 독자 질문&amp;amp;토론 게시판(이하 독자 게시판)&amp;ldquo;를 개설합니다. 독자 게시판은 기존처럼 비회원 쓰기를 허용할 것입니다(질문 하나 하려는 독자에게 가입을 요구할 수는 없으니까요).</description>
    </item>
    
    <item>
      <title>패킷 직렬화 / 핸들링 라이브러리</title>
      <link>https://rein.kr/posts/2009-10-09-%ED%8C%A8%ED%82%B7-%EC%A7%81%EB%A0%AC%ED%99%94-%ED%95%B8%EB%93%A4%EB%A7%81-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/</link>
      <pubDate>Fri, 09 Oct 2009 00:39:43 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-10-09-%ED%8C%A8%ED%82%B7-%EC%A7%81%EB%A0%AC%ED%99%94-%ED%95%B8%EB%93%A4%EB%A7%81-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/</guid>
      <description>What a Wontaeful World: 요즘의 삽질 #1 에서 트랙백
리카넷: 가짜블로그 – 패킷 직렬화/핸들링 라이브러리에서 트랙백
IRC 에서도 몇 가지 사항을 논의 했던걸 덤프. 일단 발당군이 IRC에서 말했던, 각 메시지 타입 별로 비지터 패턴(visitor pattern)을 쓰는 것의 문제
각각의 패킷 핸들러마다 클래스를 정의 해줘야하는 문제 — 익명 클래스로 약간 단순화는 할 수 있음 패킷 구조(메시지에 담긴 데이터들의 형태?)가 바뀌는 경우, 비지터 패턴은 정말 적응하기 힘들다. (타입이 바뀐다!!) 그래서 다음과 같은, 약간 google protocol buffer를 마이너하게 따라한거 같은 구조를 쓰고 있다.</description>
    </item>
    
    <item>
      <title>멤버 함수 포인터의 크기</title>
      <link>https://rein.kr/posts/2009-10-04-%EB%A9%A4%EB%B2%84-%ED%95%A8%EC%88%98-%ED%8F%AC%EC%9D%B8%ED%84%B0%EC%9D%98-%ED%81%AC%EA%B8%B0/</link>
      <pubDate>Sun, 04 Oct 2009 20:15:38 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-10-04-%EB%A9%A4%EB%B2%84-%ED%95%A8%EC%88%98-%ED%8F%AC%EC%9D%B8%ED%84%B0%EC%9D%98-%ED%81%AC%EA%B8%B0/</guid>
      <description>C 에서 함수포인터의 크기는 아주 예외적인 경우를 제외하고는 void* 의 크기와 같다. 즉, 모든 포인터의 크기가 CPU word 크기다1 하지만 멤버 함수 포인터의 경우는 조금 다른 얘기가 된다.
지지난 주에 우연히 발견하게 된 사실인데 — Visual Studio 2005의 데이터 visualization 버그인듯 함 — 멤버 함수 포인터를 저장하고, 이걸 가지고 모종의 작업을 하는 템플릿 라이브러리를 짰는데 — 2년 전에 작성해놓고 그 동안 잘 쓰던 녀석 — 이 녀석을 쓰는 코드를 디버깅하다가 생각없이 실행 스택을 따라 내려갔는데, 멤버 함수 포인터 배열에 3단위(12 bytes)로 뛰어넘으면서 접근하는게 아닌가!</description>
    </item>
    
    <item>
      <title>時代遺憾</title>
      <link>https://rein.kr/posts/2009-09-17-%E6%99%82%E4%BB%A3%E9%81%BA%E6%86%BE/</link>
      <pubDate>Thu, 17 Sep 2009 00:16:15 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-09-17-%E6%99%82%E4%BB%A3%E9%81%BA%E6%86%BE/</guid>
      <description>서태지의 노래 제목이기도 하고, 오후부터 싱숭생숭한 마음으로 계속 듣고있기도 하지만; 여튼 요 며칠 간 한 생각. 요약하자면 저 노래의 가사가 되어버릴 것 같지만; 덤으로 이 블로그의 일반적인 주제가 아닌 내용이기도 하다. 그렇지만 요 며칠 간 방문자가 갑자기 늘어서 안 하고 있다가, 다시 줄어든 틈을 타서 쌓아놓은 소리를 좀 풀어보자.
이 나라가 &amp;ldquo;인구가 줄어든다&amp;rdquo;, &amp;ldquo;아이를 안 낳아서 큰 일이다&amp;rdquo; 라고 하지만 아이 낳는데 드는 비용이 너무 많다. 별로 법석 떤 것도 없는 우리 부부의 경우 대충 들어간 돈이,</description>
    </item>
    
    <item>
      <title>독서 잡담: 2009년 9월 11일</title>
      <link>https://rein.kr/posts/2009-09-11-%EB%8F%85%EC%84%9C-%EC%9E%A1%EB%8B%B4-2009%EB%85%84-9%EC%9B%94-11%EC%9D%BC/</link>
      <pubDate>Fri, 11 Sep 2009 01:46:26 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-09-11-%EB%8F%85%EC%84%9C-%EC%9E%A1%EB%8B%B4-2009%EB%85%84-9%EC%9B%94-11%EC%9D%BC/</guid>
      <description>셜록홈즈 전집 Amazon Kindle 용으로 나온 셜록 홈즈 전집 (4대 장편과 단편집 모음)이 싸길래(USD 0.99) 질러놓고 읽고 있다.
가장 좋아하는 단편들 — 보헤미아 스캔들, 빈집 사건, 춤추는 인형, 빨강머리 클럽 — 을 일단 읽고나서 지금은 장편 중에서 가장 좋아하는 4개의 서명 ((여기엔 예전에도 인용했던 문장인 “How often have I said to you that when you have eliminated the impossible, whatever remains, however improbable, must be the truth?” 가 나온다.)) 을 2/3쯤 본 상태.</description>
    </item>
    
    <item>
      <title>웹서버 로그로 본 내 블로그</title>
      <link>https://rein.kr/posts/2009-09-08-%EC%9B%B9%EC%84%9C%EB%B2%84-%EB%A1%9C%EA%B7%B8%EB%A1%9C-%EB%B3%B8-%EB%82%B4-%EB%B8%94%EB%A1%9C%EA%B7%B8/</link>
      <pubDate>Tue, 08 Sep 2009 09:57:41 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-09-08-%EC%9B%B9%EC%84%9C%EB%B2%84-%EB%A1%9C%EA%B7%B8%EB%A1%9C-%EB%B3%B8-%EB%82%B4-%EB%B8%94%EB%A1%9C%EA%B7%B8/</guid>
      <description>물론 아파치 로그를 직접 까보는 일은 회사 들어온 이래로 졸업했고 (…) 요즘은 심심풀이로 awstats / wordpress.com / google analytics 분석결과만 본다. 딱히 돈을 벌어주거나하는 블로그는 아니지만 — 이 블로그는 OB와 동아리 돈으로 IDC에 집어넣은 서버 위에서 동작한다. 즉 운영할 수록 내 돈이 깨진다 — 그래도 나름대로 생각을 정리하고, 다른 사람의 의견을 묻는 의미로 사용하고 있어서, 어느 정도의 트래픽 유입이 필요하다(…). 여튼, 오늘 아침 출근하고 까본 결과를 얘기해보겠다.
Apache gzip-compression 을 걸고나니 8월 부터 블로그 페이지들에 gzip 압축(deflate)을 걸기 시작했는데, 덕분에 awstats에 표시되는 웹 서버 네트웍 사용량이 절반 이하로 줄었다.</description>
    </item>
    
    <item>
      <title>잡상: many-core 시대의 프로그래밍</title>
      <link>https://rein.kr/posts/2009-08-31-%EC%9E%A1%EC%83%81-many-core-%EC%8B%9C%EB%8C%80%EC%9D%98-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/</link>
      <pubDate>Mon, 31 Aug 2009 11:57:46 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-08-31-%EC%9E%A1%EC%83%81-many-core-%EC%8B%9C%EB%8C%80%EC%9D%98-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/</guid>
      <description>이미 한참 된 글이지만, 얼마 전에 DDJ에 H. Sutter가 Design for Manycore Systems란 글을 썼다.
개괄에 해당하는 내용을 아주 간단히 요약하자면,
요즈음의 시스템에서 가장 큰 어려움은 CPU와 메모리의 속도 차이고 이를 극복하기 위해서 CPU 벤더들이 접근한 방식은 더 복잡한 코어를 만들어내거나 더 많은 코어를 제공해서 CPU &amp;lt;-&amp;gt; 메모리 사이의 속도차이를 “보이지 않게&amp;quot; 만드는 것 그리고 나선 SUN 나이아가라 CPU의 변화등을 예로 들면서, 현재까지 (클락 속도를 올리기 위해) 취해왔던 “더 복잡한 코어&amp;quot;를 만들어서 메모리 접근 시간을 “프로그래머에게 보이지 않게&amp;quot; 하는 일은 이미 한계에 다달았고 — 이미 프로그래머에게 transparent하지 않은 방법: OOE 같은 것이 나타났고, 이는 병렬 프로그래밍에서 꽤나 골치 아픈 일이다 — 이에 따라 병렬 프로그램을 쉽게 짜고 + 메모리 접근 속도를 할 적당한 방법은</description>
    </item>
    
    <item>
      <title>intel TBB를 써서 메모리 할당하기</title>
      <link>https://rein.kr/posts/2009-08-25-intel-tbb%EB%A5%BC-%EC%8D%A8%EC%84%9C-%EB%A9%94%EB%AA%A8%EB%A6%AC-%ED%95%A0%EB%8B%B9%ED%95%98%EA%B8%B0/</link>
      <pubDate>Tue, 25 Aug 2009 23:19:42 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-08-25-intel-tbb%EB%A5%BC-%EC%8D%A8%EC%84%9C-%EB%A9%94%EB%AA%A8%EB%A6%AC-%ED%95%A0%EB%8B%B9%ED%95%98%EA%B8%B0/</guid>
      <description>월 초에 포스팅한 내용이지만, 약간 내용을 추가해보는 의미로 글 하나 남기기.
intel TBB 2.2 부터는 Windows 환경이나 linux 환경에서 intel TBB를 써서 기본 할당자(malloc/free, 그리고 new/delete)를 덮어 쓸 수 있게 되었다. 그래서 어떻게 하는지 + 약간의 성능 비교를 해봤다.
프로그래머가 직접 malloc/free 혹은 new/delete를 덮어 쓰는 좀 안 이쁜 방법말고, hoard allocator 같은 방법을 제공할 것 같아서 새로 추가된 헤더들을 뒤져보니 이런 코드가 있다.1
그냥 link 시점에 malloc/free 부분을 해당 lib의 그것으로 치환하고 실제 실행 시점에 호출되게 바꾸는 형태 (debugger를 붙여보니 tbbmalloc_proxy.</description>
    </item>
    
    <item>
      <title>내 책상 위에 있는 것</title>
      <link>https://rein.kr/posts/2009-08-16-%EB%82%B4-%EC%B1%85%EC%83%81-%EC%9C%84%EC%97%90-%EC%9E%88%EB%8A%94-%EA%B2%83/</link>
      <pubDate>Sun, 16 Aug 2009 17:26:26 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-08-16-%EB%82%B4-%EC%B1%85%EC%83%81-%EC%9C%84%EC%97%90-%EC%9E%88%EB%8A%94-%EA%B2%83/</guid>
      <description>예~~전에 쓴 글에 이어서.
예전에 샀던 투명 정리대(?)는 집에서 쓰고 있다. 회사에선 책상 위에 별걸 안두기 모드
사진을 찍어 놓고 보면,
키보드/마우스, 전화기, 모니터 3대 빼고는 뭐 안올라오게 바꿨음.1
물론 티슈, Kindle, iPod 정도는 올라가 있다. 그래봐야 모니터 뒤에 보이는 아스트랄한 케이블 덩어리들을 보면 /한숨.
내가 원하는 이상적인 배치로는 여기에 추가로(…), 문제 풀 수 있는 공간이 있으면 좋겠는데, 지금 그러려면 서랍이 들어있는 부분을 치워버리고 거기를 써야할 상황. 음 한 20%쯤만 더 넓어지면 되겠는데.</description>
    </item>
    
    <item>
      <title>C&#43;&#43; 0x 위에 트랜잭션 구문 만들기</title>
      <link>https://rein.kr/posts/2009-08-10-c-0x-%EC%9C%84%EC%97%90-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EA%B5%AC%EB%AC%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0/</link>
      <pubDate>Mon, 10 Aug 2009 23:00:32 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-08-10-c-0x-%EC%9C%84%EC%97%90-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EA%B5%AC%EB%AC%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0/</guid>
      <description>DDJ에 흥미로운 기사가 실렸다. Intel, IBM, Sun 등이 모여서 C++ 0x 스펙 위에 Transaction 을 가능케 해주는 C++ 구문과 attribute들을 추가하는 것에 관해서 논의 하고 있다고 한다.
일단 간단히 훑어본 바로는,
transaction 키워드가 추가된다. 여기에는 atomic 혹은 relaxed attribute이 붙을 수 있다. 그리고 해당 구문은 원자적으로 실행하게 해주는 메커니즘을 제공하고, transaction_cancel 명령으로 중간에 이를 취소할 수도 있다 어떤 C++ statement, compound statment, function은 transaction_safe 혹은 transaction_unsafe attribute이 지정될 수 있으며, 이는 컴파일러가 자동적으로 추론할 수도 있다 또한 트랜잭션의 nesting을 제어하는 구문이 추가된다 정도이다.</description>
    </item>
    
    <item>
      <title>intel tbb 2.2 released</title>
      <link>https://rein.kr/posts/2009-08-05-intel-tbb-2-2-released/</link>
      <pubDate>Wed, 05 Aug 2009 11:59:53 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-08-05-intel-tbb-2-2-released/</guid>
      <description>서버 프로그래밍 하면서 유용하게 쓰고 있는 intel의 threading building block의 새 버젼이 릴리즈되었다. 자세한 사항은 직접 가서 보시고(…), 내가 제일 먼저 관심을 가졌던 부분만 써보겠다.
예전 글에서 썼던 내용이지만, 당연히 느려야할 병행 객체(tbb::concurrent_hash_map)가 오히려 sequential code 용의 map이나 hash_map 객체 보다 빨라서 놀랬던 적이 있다.1
hoard allocator라는 상당히 scalable한 메모리 할당자가 있는데, 이게 굉장히 쓰기 좋아 보였던게, C-runtime의 malloc/free 등을 링크 시간에 덮어써서 자동으로 모든 메모리 할당을 가속시켜준다는 점 때문이었다. 이번에 업데이트된 intel TBB 2.</description>
    </item>
    
    <item>
      <title>잘못 걸려온 Fax 때문에 떠오른 기억</title>
      <link>https://rein.kr/posts/2009-07-24-%EC%9E%98%EB%AA%BB-%EA%B1%B8%EB%A0%A4%EC%98%A8-fax-%EB%95%8C%EB%AC%B8%EC%97%90-%EB%96%A0%EC%98%A4%EB%A5%B8-%EA%B8%B0%EC%96%B5/</link>
      <pubDate>Fri, 24 Jul 2009 10:02:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-07-24-%EC%9E%98%EB%AA%BB-%EA%B1%B8%EB%A0%A4%EC%98%A8-fax-%EB%95%8C%EB%AC%B8%EC%97%90-%EB%96%A0%EC%98%A4%EB%A5%B8-%EA%B8%B0%EC%96%B5/</guid>
      <description>출근한 시점(대략 오전 8:5x)부터 시작해서, 지금 이 순간까지 팀장님 전화기가 울리고 있다. 대략 3분 간격으로 규칙적으로 울린다.
원인: 누군가 외부에 보내야 할 팩스를 그냥 내선으로 보내고 있다
반 년에 한 번은 이런 일을 목격하게 되는 것 같은데, 건물에 처음 이사왔을 때엔 총무팀에서 사용법 공지를 잘 해줘서인지 이런 일 없었는데 뭔가 요즘은 Orz.
하지만 난 대학원 시절에 이보다 더 무서운 일을 봤다.
연구실 프린터가 뭔가 주기적으로 수상쩍은 깨진 문자들을 잔뜩 달고 있는 뭔가를 뱉고 있던 것.</description>
    </item>
    
    <item>
      <title>C&#43;&#43; 0x draft에서 Concept이 빠지다</title>
      <link>https://rein.kr/posts/2009-07-23-c-0x-draft%EC%97%90%EC%84%9C-concept%EC%9D%B4-%EB%B9%A0%EC%A7%80%EB%8B%A4/</link>
      <pubDate>Thu, 23 Jul 2009 10:47:55 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-07-23-c-0x-draft%EC%97%90%EC%84%9C-concept%EC%9D%B4-%EB%B9%A0%EC%A7%80%EB%8B%A4/</guid>
      <description>via Sutter&amp;rsquo;s Mill: Trip Report: Exit Concepts, Final ISO C++ Draft in ~18 Months
via DDJ The C++ 0x &amp;ldquo;Remove Concept&amp;rdquo; decision
H. Sutter는 C++ 0x 최종 드래프트가 내년에 나오려면 올 겨울 안에 — 앞으로 최종 커멘트가 달릴 — 드래프트가 나와야 하고, 이에 따라 Concept이 미뤄져다고(defer) 설명하고 있다. 덤으로 B. Stroustrup은 이게 꽤나 불만이 많은 듯. 이건 안중요하지만 나도 그닥 맘에 안든다.
B. Strousrup의 표현을 빌자면,
C++이 좀 더 단순한 언어로 남아서 기뻐하는 사람들조차 보인다</description>
    </item>
    
    <item>
      <title>Quiz: C&#43;&#43; casting 연산자</title>
      <link>https://rein.kr/posts/2009-07-09-quiz-c-casting-%EC%97%B0%EC%82%B0%EC%9E%90/</link>
      <pubDate>Thu, 09 Jul 2009 01:00:37 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-07-09-quiz-c-casting-%EC%97%B0%EC%82%B0%EC%9E%90/</guid>
      <description>사실 오늘의 삽질 이라고 제목 붙여야 하지만(?). 아래와 같은 클래스 계층이 있다고 치자.
struct B { int b_x; B() : b_x(-1) {} }; struct D : public B { D() : B() {} virtual int Get() const = 0; }; struct C : public D { virtual int Get() const { return 3; } }; 이제 아래 코드를 실행한다고 하자.
C* c = new C(); printf(&amp;#34;%8p %d %d\n&amp;#34;, c, c-&amp;gt;b_x, c-&amp;gt;Get()); 띄워놓은 터미널에서 실행시킨 결과,</description>
    </item>
    
    <item>
      <title>서버 설치 기록 post-mortem</title>
      <link>https://rein.kr/posts/2009-07-04-%EC%84%9C%EB%B2%84-%EC%84%A4%EC%B9%98-%EA%B8%B0%EB%A1%9D-post-mortem/</link>
      <pubDate>Sat, 04 Jul 2009 19:51:48 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-07-04-%EC%84%9C%EB%B2%84-%EC%84%A4%EC%B9%98-%EA%B8%B0%EB%A1%9D-post-mortem/</guid>
      <description>밑 포스팅에 정리해보면서 생각한거지만 참 문제가 많다.
1. DB 이전할 때 인코딩 문제 Linux 쪽에서 쓸 때는 금방 눈치 챘는데, table 문자집합이 latin1이다. 아니 왜 이게 기본값이야 Orz.
그래서 mysqldump 한 값이 엉망이길래, 구글링을 좀 하고 이런걸 찾았다 – mantis upgrade
이걸 참조해서
mysqldump -u root -p --default-character-set=latin1 -–skip-set-charset bitnami_redmine 로 백업했는데, skip-set-charset 이 MySQL이 기본적으로 삽입하는 SET NAMES 문자집합 구문을 빼버리기 때문에 문자열을 해석안하고 그대로 덤프해서 latin1인양 들어가있던 UTF-8 문자열들이 살아서(?</description>
    </item>
    
    <item>
      <title>개발 머신 설치 기록</title>
      <link>https://rein.kr/posts/2009-07-04-%EA%B0%9C%EB%B0%9C-%EB%A8%B8%EC%8B%A0-%EC%84%A4%EC%B9%98-%EA%B8%B0%EB%A1%9D/</link>
      <pubDate>Sat, 04 Jul 2009 19:22:08 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-07-04-%EA%B0%9C%EB%B0%9C-%EB%A8%B8%EC%8B%A0-%EC%84%A4%EC%B9%98-%EA%B8%B0%EB%A1%9D/</guid>
      <description>오늘 오후(실제로 이 글의 draft를 쓴 2009년 7월 2일)엔 팀에서 사용 중인 공용 서버들을 통합하는 작업을 했다.
Windows 2008 Server…로 추정되는 머신 위에 가상 서버를 얹고(일단 3대), 각 2G의 물리 메모리가 할당되었다. 그 중 2개의 기능인 이슈 트래커랑 일일 빌드(정확히는 CI서버) 서버를 내가 설치했다. 다음은 그 로그.
서버 스펙은 Xeon x5560 코어가 하나 할당되고, 2G 물리 메모리, 180G 정도의 HDD가 할당되었다. Xeon x5560은 내가 써본 라이브가 아닌 서버 중엔 제일 비싼 CPU인듯(…).</description>
    </item>
    
    <item>
      <title>Programming Erlang 을 읽다 든 생각</title>
      <link>https://rein.kr/posts/2009-06-20-programming-erlang-%EC%9D%84-%EC%9D%BD%EB%8B%A4-%EB%93%A0-%EC%83%9D%EA%B0%81/</link>
      <pubDate>Sat, 20 Jun 2009 21:45:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-06-20-programming-erlang-%EC%9D%84-%EC%9D%BD%EB%8B%A4-%EB%93%A0-%EC%83%9D%EA%B0%81/</guid>
      <description>얼마 전에 Pragmatic Version Conrol using Git 이랑 같이 구입한 Programming Erlang을 읽는 중이다. 읽다가 드는 생각은, 멀티스레드 프로그래밍 혹은 병행 프로그래밍(concurrent programming)은 그 &amp;ldquo;원칙&amp;quot;에서 거기서 거기구나란 느낌이 든다.
Erlang에서 병행 프로그래밍이 쉽고/성능이 잘 나온다는 이유로 강조하는게,
변수 대입에 부가 효과(side-effect)가 없다 (erlang에선 변수에 한 번 대입하고 나면 끝이다) 스레드/프로세스 간 동기화는 메시지 패싱을 통해서만 이루어진다 스레드간 통신은 비동기적이다 분산 환경(RPC-like distributed env.) 구축이 쉽다 side-effect가 없는1 함수형 언어 정도였다.</description>
    </item>
    
    <item>
      <title>실패할 인터넷 광고 – 테레비 (a.k.a spam)</title>
      <link>https://rein.kr/posts/2009-06-12-%EC%8B%A4%ED%8C%A8%ED%95%A0-%EC%9D%B8%ED%84%B0%EB%84%B7-%EA%B4%91%EA%B3%A0-%ED%85%8C%EB%A0%88%EB%B9%84-a-k-a-spam/</link>
      <pubDate>Fri, 12 Jun 2009 17:33:41 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-06-12-%EC%8B%A4%ED%8C%A8%ED%95%A0-%EC%9D%B8%ED%84%B0%EB%84%B7-%EA%B4%91%EA%B3%A0-%ED%85%8C%EB%A0%88%EB%B9%84-a-k-a-spam/</guid>
      <description>요즘 블로그 댓글류로 &amp;ldquo;이런 서비스를 시작하니 한 번 와보세요&amp;rdquo; 하는 해당 글 내용과는 전혀 상관없는 댓글이 달리는걸 보는데, 이번 경우는 좀 심한게 하나 걸렸다.
예전엔 사람이 하는 경우가 많아서 그나마 관련있는 블로그의 관련글, 혹은 관련있는 블로그의 관련없는 글(…이미 무개념이지만)에 댓글이 달렸다. 하지만 요즘은 아주 무차별적으로 달리더라. 오늘 달린 무게념 광고는 테레비초콘지 뭔지하는 듣도보도 못한 잡 서비스.
이런 댓글이 달렸다 — 물론 Akismet이 알아서 스팸처리 했다. 즉, 대부분의 워드프레스 기반 블로그에서는 스팸처리 되고 있을 것이다.</description>
    </item>
    
    <item>
      <title>git svn 동작이 거지같게 느껴지던 이유</title>
      <link>https://rein.kr/posts/2009-06-08-git-svn-%EB%8F%99%EC%9E%91%EC%9D%B4-%EA%B1%B0%EC%A7%80%EA%B0%99%EA%B2%8C-%EB%8A%90%EA%BB%B4%EC%A7%80%EB%8D%98-%EC%9D%B4%EC%9C%A0/</link>
      <pubDate>Mon, 08 Jun 2009 23:27:21 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-06-08-git-svn-%EB%8F%99%EC%9E%91%EC%9D%B4-%EA%B1%B0%EC%A7%80%EA%B0%99%EA%B2%8C-%EB%8A%90%EA%BB%B4%EC%A7%80%EB%8D%98-%EC%9D%B4%EC%9C%A0/</guid>
      <description>실제론 svn으로 버젼관리를 하는 상황에서, git을 그 위에 쓰다보니 몇 가지 문제를 겪어야 했다.사실 몇 가지 점에서 git 의 동작을(혹은 git-svn의 동작을) 이해할 수가 없었는데, 최근에 Pragmatic Version Control using Git 을 구입해서 읽고나니 약간은 이해할 수 있게 되었다.
svn은 본질적으로 선형적인(linear) 이력(history) 를 갖는다. 즉,
최초의 repository 상태가 있고, 이 위에 새로운 변경 rev 2 그 위에 새로운 변경이 더해져 rev 3 … 마지막 변경이 가해져서 rev n 이 되는 형태다.</description>
    </item>
    
    <item>
      <title>프로그래머에게 배움이란</title>
      <link>https://rein.kr/posts/2009-05-26-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%97%90-%EB%B0%B0%EC%9B%80%EC%9D%B4%EB%9E%80/</link>
      <pubDate>Tue, 26 May 2009 15:48:14 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-05-26-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%97%90-%EB%B0%B0%EC%9B%80%EC%9D%B4%EB%9E%80/</guid>
      <description>중요하면서도 좋은 것입니다.
Warning treated as error &amp;amp; STL 에서 트랙백
바로 밑의 글도 읽고나서 읽으시면 됩니다.
Warning을 무시해도 된다는 얘긴 아닙니다. 원글에서 중점을 두고 얘기한건 배열 길이 계산에 관한 문제 — 지극히 C 적인 코드 — 인데 그걸 C++ 차원에서 컴파일하고 / 해석하는건 좀 심하다고 생각해서 글을 썼을 뿐입니다. 그리고 왜 Joel 블로그를 링크해 주셨는지는 이해가 안가는군요. 전 C/C++의 포인터 형 변환에 관한 설명을 한거 뿐입니다.
OS 커널 같이 binary interface가 중요한게 아니면 C++은 충분히 이식성 있는(portable)한 언어이고, 굳이 C 수준 라이브러리에 얽혀있는 글을 쓸 필요는 없다는 의미에서 아랫 글을 작성했습니다.</description>
    </item>
    
    <item>
      <title>당신 역시 초보일 수 있습니다</title>
      <link>https://rein.kr/posts/2009-05-26-%EB%8B%B9%EC%8B%A0-%EC%97%AD%EC%8B%9C-%EC%B4%88%EB%B3%B4%EC%9D%BC-%EC%88%98-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4/</link>
      <pubDate>Tue, 26 May 2009 01:08:41 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-05-26-%EB%8B%B9%EC%8B%A0-%EC%97%AD%EC%8B%9C-%EC%B4%88%EB%B3%B4%EC%9D%BC-%EC%88%98-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4/</guid>
      <description>자려는데 대략 C/C++ 프로그래머의 혼을(…) 소환하는 글이 있어서.
…
&amp;ldquo;http://lymose.egloos.com/4958036 당신도 초보일 수 있습니다.&amp;rdquo; 에 트랙백.
저 글에서 트랙백한 원본 글에 나와있는 다음과 같은 코드가 있다.
char *dim = { 3, 1, 5, 9, 7 }; foo(dim); /* 5개 합산 -&amp;gt; 정상 */ 의미론적으로 문제가 좀 있긴 하지만, C 코드라고 놓고 보면 하등의 문제가 없는 코드다 — 적어도 C99의 범위에서 생각하면 말이다.
C언어는 integer-like type을 정말 조용히 pointer-type으로 바꿔주는 언어이기에 위 코드는 경고야 몇 개 뜨겠지만 별탈없이 컴파일된다.</description>
    </item>
    
    <item>
      <title>sqlcmd: MSSQL 서버의 커맨드라인 인터페이스</title>
      <link>https://rein.kr/posts/2009-05-23-sqlcmd-mssql-%EC%84%9C%EB%B2%84%EC%9D%98-%EC%BB%A4%EB%A7%A8%EB%93%9C%EB%9D%BC%EC%9D%B8-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4/</link>
      <pubDate>Sat, 23 May 2009 12:45:48 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-05-23-sqlcmd-mssql-%EC%84%9C%EB%B2%84%EC%9D%98-%EC%BB%A4%EB%A7%A8%EB%93%9C%EB%9D%BC%EC%9D%B8-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4/</guid>
      <description>내 경우엔 프로그래밍 경험을 *nix 에서 시작해서1 커맨드라인 툴에 좀 더 익숙하다.
최근에 어떻게든 MSSQL 서버에 직접 접속안하려고 SQLite로 우회하는 일도 해봤고. 여튼 최근에 사용 중인 방법은 sqlcmd 라는 MSSQL Server express 에디션에도 포함된 툴을 쓰는 것.
개략적으로,
command line 기반으로 로컬 혹은 원격 서버에 접속이 가능하다: sqlcmd -S host -U id -P password 형식 역시나 별도 파일에 있는 sql 쿼리를 실행시켜주는 구문도 존재 라는 내가 원하던 기능이 있어서 쓰고 있다.</description>
    </item>
    
    <item>
      <title>Redmine 설정 중의 뻘짓</title>
      <link>https://rein.kr/posts/2009-05-10-redmine-%EC%84%A4%EC%A0%95-%EC%A4%91%EC%9D%98-%EB%BB%98%EC%A7%93/</link>
      <pubDate>Sun, 10 May 2009 00:57:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-05-10-redmine-%EC%84%A4%EC%A0%95-%EC%A4%91%EC%9D%98-%EB%BB%98%EC%A7%93/</guid>
      <description>Windows 에서 BitNami 스택으로 설치하는데 DB 설정 실패 이 녀석이 설치 후에(Apache/MySQL/Rails/Ruby/Redmine을 설치한다), MySQL에 테이블을 만드는데, 설치 디렉토리에 공백이 있으면 테이블을 만들지 못한다. 덕분에 지우고 재설치 ㄳ.
상대적으로 나머지 설정은 금방 끝났다.
*nix 에서 한글이 깨지다 한글이 뭔가 제대로 안나와서 원인을 분석해보니 — 마일스톤(=Redmine에선 버젼이라고 부른다)을 만들다 알게되었다 — MySQL 테이블의 collation이 latin1이더군. MySQL 에서 테이블을 생성할 때 collation 을 강제할 수 있는데 이걸 쓰지 않은 모양? 이거 수정하고나니 제대로 쓸 수 있게 되었다.</description>
    </item>
    
    <item>
      <title>이슈 트래커: Redmine</title>
      <link>https://rein.kr/posts/2009-05-10-%EC%9D%B4%EC%8A%88-%ED%8A%B8%EB%9E%98%EC%BB%A4-redmine/</link>
      <pubDate>Sun, 10 May 2009 00:36:17 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-05-10-%EC%9D%B4%EC%8A%88-%ED%8A%B8%EB%9E%98%EC%BB%A4-redmine/</guid>
      <description>학교에서 / 회사에서 이슈 트래킹 툴로 Trac을 써왔다.
Trac이 갖는 기능이, 소스 코드 관리툴(SCM)과의 연동 – 소스 저장소 들여다보기 / 변경사항(diff) 제공 이슈 관리 일정/마일스톤 관리 (내장) 위키 페이지 이다. 현재 나름대로 잘 써먹는 중.
하지만 가지고 있는 단점이,
하나의 Trac은 하나의 프로젝트(=소스 저장소 1개)에 대해서만 동작한다 웹 기반 관리가 추가되긴 했지만(0.11 버젼에 내장, 0.10에 플러그인), 웹에서 모든 관리가 가능한건 아니다 보안 기능1 이 좀 부실하다. 역할 기반(role-based) 관리가 가능하지만 이는 좀 잔 작업이 많이 필요하다 확실히 존재 한다.</description>
    </item>
    
    <item>
      <title>코드 정적 분석: CI 툴에 추가할만한듯?</title>
      <link>https://rein.kr/posts/2009-05-03-continuous-integration-%ED%88%B4%EC%97%90-%EC%B6%94%EA%B0%80%EB%A1%9C-%EB%B6%99%EC%9D%BC%EB%A7%8C%ED%95%9C-%EA%B2%83/</link>
      <pubDate>Sun, 03 May 2009 21:46:44 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-05-03-continuous-integration-%ED%88%B4%EC%97%90-%EC%B6%94%EA%B0%80%EB%A1%9C-%EB%B6%99%EC%9D%BC%EB%A7%8C%ED%95%9C-%EA%B2%83/</guid>
      <description>VS 2005를 쓰고 있긴하지만, 팀 시스템이 아니라서 static code analysis 기능은 없다. 정정 분석(static code analysis)은 *nix 시절의 lint 비슷한 툴을 생각하면 된다. 소스 코드를 입력으로 받아서 실제 실행없이 버그가 있음직한 곳을 찾아서 경고해주는 기능을 하는 도구다. 예전에 팀 동료인 Azyu 군이 VS 2005 (w/o TS)에서도 정적 분석이 된다고 해서, 좀 찾아봤는데 이건 뭔가 좀 불충분(?)해보여서 관뒀는데, cppcheck 란 툴을 발견하고 좀 써보기로 했다.
대략,
커맨드라인 툴이고 실행 속도는 적당히 빠른 편 – CPP 소스 94개 정도의 파일 공유 웹서버 프로젝트를 분석하는데 1분 미만.</description>
    </item>
    
    <item>
      <title>LiveWriter로 WordPress 에 글을 못 쓰는 문제에 대한 임시 해결책</title>
      <link>https://rein.kr/posts/2009-04-16-livewriter%EB%A1%9C-wordpress-%EC%97%90-%EA%B8%80%EC%9D%84-%EB%AA%BB-%EC%93%B0%EB%8A%94-%EB%AC%B8%EC%A0%9C%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9E%84%EC%8B%9C-%ED%95%B4%EA%B2%B0%EC%B1%85/</link>
      <pubDate>Thu, 16 Apr 2009 10:31:46 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-04-16-livewriter%EB%A1%9C-wordpress-%EC%97%90-%EA%B8%80%EC%9D%84-%EB%AA%BB-%EC%93%B0%EB%8A%94-%EB%AC%B8%EC%A0%9C%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9E%84%EC%8B%9C-%ED%95%B4%EA%B2%B0%EC%B1%85/</guid>
      <description>지난 달에 왜 일부 서버에선 Windows Live Writer로 워드프레스에 글을 쓸 수 없는지 이유를 알게 되었다.
팩키지 시스템으로 프로그램 업데이트를 관리하는 서버에서 내 블로그를 굴리고 있기 때문에, 저 때 쓸 수 있던 방책을 하나도 쓰지 못했다. 그런데 오늘 보니까 이걸 “우회&amp;quot;하는 방법이 나와있었다 — 그것도 플러그인 하나만 설치하면 되는걸로!
여튼 플러그인 설치하고 글을 쓰니 잘 되는듯하다. (이 글도 Live Writer에서 쓰고 있다)
사실 근본적인 해결책이야 이전 글에 나온 방법을 써야하지만, 그렇다고 PHP 를 컴파일해서 올리고 이걸 관리하는 것도 엄한 짓이고, 일단 WP 한정으로 우회한다는 아이디어 자체는 괜찮아 보인다.</description>
    </item>
    
    <item>
      <title>MD6 그리고 약간의 자랑질</title>
      <link>https://rein.kr/posts/2009-04-15-md6-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%95%BD%EA%B0%84%EC%9D%98-%EC%9E%90%EB%9E%91%EC%A7%88/</link>
      <pubDate>Wed, 15 Apr 2009 11:02:06 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-04-15-md6-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%95%BD%EA%B0%84%EC%9D%98-%EC%9E%90%EB%9E%91%EC%A7%88/</guid>
      <description>모종의 코드에서 특정 메시지에 대한 응답이, 정말로 응답이 맞는지(…) 확인하려고 몇 개의 cryptographic hash funciton &amp;ndash; 몇 가지 암호학적으로 좋은 성질을 갖는 해시 함수들 &amp;ndash; 을 찾다가 SHA-3 프로포졀로 올라가 있는 MD6를 좀 끄적거려봤다.1 MD5와는 달리 digest 크기를 조절 할 수 있고2, multi/many-core를 염두에 두고 작성된 알고리즘이다. 여튼 이 녀석의 reference implmenetaion을 구해다가 몇 가지 테스트를 했다. 다른 해쉬 알고리즘은 — 예를 들어 MD5나 SHA-2 의 SHA-256 같은 녀석들 — 그냥 python hashlib 가지고 예제값을 만들어다가 테스트했는데, MD6는 나온지 얼마 되지도 않았기에 그런게 없다(일단 OpenSSL에 없으니…).</description>
    </item>
    
    <item>
      <title>Windows Live Messenger 에 수상한 메시지가 왔다</title>
      <link>https://rein.kr/posts/2009-04-08-windows-live-messenger-%EC%97%90-%EC%88%98%EC%83%81%ED%95%9C-%EB%A9%94%EC%8B%9C%EC%A7%80%EA%B0%80-%EC%99%94%EB%8B%A4/</link>
      <pubDate>Wed, 08 Apr 2009 09:47:54 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-04-08-windows-live-messenger-%EC%97%90-%EC%88%98%EC%83%81%ED%95%9C-%EB%A9%94%EC%8B%9C%EC%A7%80%EA%B0%80-%EC%99%94%EB%8B%A4/</guid>
      <description>오전에 회사에서 Windows Live messenger(MSN)에 로그인했더니
Windows Live(TM) Messenger Service Staff says:
Important service announcement: As part of a recent system enhancement, we need you to change your e-mail address to continue signing in to the Windows Live(TM) Messenger Service.
To ensure that your access is not blocked and to learn more, go to http://support.microsoft.com/gp/Messenger/en
이런 메시지가 왔다.
신종 피싱인가하고 여기저기 확인해보는데, 피싱치곤 이상한 점이 몇 가지(?).
Live Messenger에서 Microsoft 를 직접 언급하는건 일반적으로 불가능하다 아이디로도 해당 단어를 못쓴다 결국 가야하는 링크도 MS 사이트다 로그인 아이디를 바꾸려면 https 로그인 인증(혹은 live suite 인증)을 통해 변경해야 한다 즉, 실제로 수상한 메시지는 아니었던 것 같았다.</description>
    </item>
    
    <item>
      <title>프로토타입 서버에 SQLite 사용하기</title>
      <link>https://rein.kr/posts/2009-04-02-%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85-%EC%84%9C%EB%B2%84%EC%97%90-sqlite-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/</link>
      <pubDate>Thu, 02 Apr 2009 00:01:49 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-04-02-%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85-%EC%84%9C%EB%B2%84%EC%97%90-sqlite-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/</guid>
      <description>대부분의 게임 서버 류의 응용에서는 DB 연결이 필요하다. 근데 이게 복잡한 SQL query 사용이 없거나 적다 — join 연산이 매우 적다. 그리고 프로토타입 개발 중일 때는 일부 성능 검사 때 빼곤 DB에 큰 부하가 걸리지도 않는다. 게다가 데이터 베이스에 저장할 내용도 좀 뻔하다(타입면에서나 테이블 구조면에서나…).
그런 연유로 개발 중인 프로토타입 서버에서 DB 연결을 직접 안만들고 — 보통 이 동네도 3–tier 라 중간층을 두는데 여기서 adapt 하게 했다 — SQLite DB 객체가 미들웨어 연결인 것처럼 속여서 쓰게 해봤다.</description>
    </item>
    
    <item>
      <title>VS 프로젝트 쉽게 설정하기 &#43; log4cxx 빌드 삽질</title>
      <link>https://rein.kr/posts/2009-03-27-vs-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%89%BD%EA%B2%8C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-log4cxx-%EB%B9%8C%EB%93%9C-%EC%82%BD%EC%A7%88/</link>
      <pubDate>Fri, 27 Mar 2009 22:09:38 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-03-27-vs-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%89%BD%EA%B2%8C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-log4cxx-%EB%B9%8C%EB%93%9C-%EC%82%BD%EC%A7%88/</guid>
      <description>Visual Studio (C++; 2005/2008) 에서 프로젝트 설정 쉽게하기 *nix 에서 프로그래밍하다가 VS에서 작업하면서 제일 짜증나던 것 중에 하나가, include path / library(linker) path를 프로젝트 단위로 관리해줘야 했던 것. *nix 에서는 흔히,
$(CC) -c filename.cc -I$(SOME_PATH) -L$(ANOTHER_PATH)
형식으로 per-file로 하되, 미리 지정한 값으로 지정해서 쉽게 관리할 수 있다.
근데 VS로 작업하다보면 프로젝트 단위로 include path / library path를 지정해 줘야하는데, 단일 프로젝트가 아니라 비슷한 설정을 공유하는 복수의 프로젝트에서 이걸 일일이 지정해주려니 영 죽을 맛이더라(…)</description>
    </item>
    
    <item>
      <title>반면교사</title>
      <link>https://rein.kr/posts/2009-03-25-%EB%B0%98%EB%A9%B4%EA%B5%90%EC%82%AC/</link>
      <pubDate>Wed, 25 Mar 2009 16:16:48 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-03-25-%EB%B0%98%EB%A9%B4%EA%B5%90%EC%82%AC/</guid>
      <description>요즘 모종의 코드 — 부모가 버려버린(?) — 을 보고있는데 참 보고 배울게 많다(?).
서버 로직에서 네트웍과 로직 부분을 분리하라 이 둘이 같이 붙어있으면 사실 상 리팩터링하는 수 밖에 없다. 둘을 따로 테스트 할 수도 없고, 그냥 지뢰밭이 된다. 고치는건 살얼음길…
프로토콜 메시지의 형태(C++의 struct/class)가 그대로 서버 로직과 같이 움직이면 이건 어쩌자는거냐. 즉, 프로토콜 메시지 형태를 바꾸는 일 == 전체 서버의 재컴파일 및 로직 부분을 리뷰해야하는 사태가 생기는 코드를 보고 있자니 느는건 한숨이오 Orz</description>
    </item>
    
    <item>
      <title>svn 위의 git 맛보기</title>
      <link>https://rein.kr/posts/2009-03-16-svn-%EC%9C%84%EC%9D%98-git-%EB%A7%9B%EB%B3%B4%EA%B8%B0/</link>
      <pubDate>Mon, 16 Mar 2009 21:00:10 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-03-16-svn-%EC%9C%84%EC%9D%98-git-%EB%A7%9B%EB%B3%B4%EA%B8%B0/</guid>
      <description>회사에서 두 가지 SCM을 쓰고 있는데 —_ 물론 각기 다른 프로젝트에서_ — 다른건 다 제쳐놓고 소스 리포지터리 공간만 따지고 보면 거대한 공간을 쓴다. 작년에 만들어진 소스 저장소 서버가 반 년 후에 하드 용량이 2배가 되었고(꽉차서 하드풀이 났음), 다시 1년 후에 약 6배의 용량으로 증설되었다.
이유는 매우 단순하다. branch 기능 때문 perforce나 subversion(svn) 모두 branch나 tag(perforce는 COW 같은 일을 하기 때문에 무조건 늘어나는 것은 아니지만)를 만들면 사실상 해당 파일들을** 복사**해버리기 때문에 용량이 쭉쭉 늘어난다.</description>
    </item>
    
    <item>
      <title>LiveWriter로 WP에 글을 못쓰던 문제</title>
      <link>https://rein.kr/posts/2009-03-11-livewriter%EB%A1%9C-wp%EC%97%90-%EA%B8%80%EC%9D%84-%EB%AA%BB%EC%93%B0%EB%8D%98-%EB%AC%B8%EC%A0%9C/</link>
      <pubDate>Wed, 11 Mar 2009 08:03:35 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-03-11-livewriter%EB%A1%9C-wp%EC%97%90-%EA%B8%80%EC%9D%84-%EB%AA%BB%EC%93%B0%EB%8D%98-%EB%AC%B8%EC%A0%9C/</guid>
      <description>직전 글에서 C++ 코드를 붙여넣다 느낀건데, Windows Live Writer; WLW에서 글을 쓰는게 아니라 WordPress에 기본으로 포함된 WYSWYG 에서 글을 쓰려니 힘든 점들이 좀 있다. 일단 말했듯이 코드 붙여넣기가 좀.
대략 2달? 정도 WLW를 못쓰고 있는데, 최근에서야 그 이유를 알게 되었다. 내가 겪던 문제가 WLW 에서 글을 쓰고 이걸 WP 쪽에 발행하면, 글의 모든 태그(HTML이든 뭐든)가 날아가버리는 문제가 있었다. 그래서 주 초에 맘잡고 검색해보니 — 사실 이걸 고치지 않아도 그냥 글을 쓰면 되었었으니 — WordPress 개발자 중 한 명인 Joseph Scott의 블로그에 관련된 글이 있었다.</description>
    </item>
    
    <item>
      <title>boost::program_options를 사용한 UnitTest&#43;&#43; 커맨드라인 인터페이스</title>
      <link>https://rein.kr/posts/2009-03-10-boostprogram_options%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-unittest-%EC%BB%A4%EB%A7%A8%EB%93%9C%EB%9D%BC%EC%9D%B8-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4/</link>
      <pubDate>Tue, 10 Mar 2009 08:33:08 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-03-10-boostprogram_options%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-unittest-%EC%BB%A4%EB%A7%A8%EB%93%9C%EB%9D%BC%EC%9D%B8-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4/</guid>
      <description>어제 포스팅에서 불편하단 소릴 하긴했지만, 작년 한 해 동안 작성한 테스트 케이스는 전부 이 녀석으로 작성했고, 지금도 잘 돌아가고 있다. _ 수 시간 전에 빌드서버에서 실행된 애들도 있을듯…_
다음과 같은 인자를 받아서 이를 해석하는데, 방식은 *nix의 getopt와 비슷하다. 즉, --help 에 도움말이 나오고 --long-option or -s 처럼 긴 옵션과 짧은 옵션이 같은 의미를 같게 짝 지어져 있고, 대부분의 UNIX 명령어 같은 느낌으로 돈다 여튼 내가 만든 녀석은,
--suite 혹은 -s 로 실행할 테스트 스윗을 받고 (없으면 몽땅) --testcase 혹은 -t 로 실행할 테스트 케이스 이름을 받고 (역시 없으면 몽땅) --output 혹은 -o 로 테스트 리포트를 받는다.</description>
    </item>
    
    <item>
      <title>UnitTest 프레임웍을 슬슬 바꿀 시점인가?</title>
      <link>https://rein.kr/posts/2009-03-09-unittest-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8D%EC%9D%84-%EC%8A%AC%EC%8A%AC-%EB%B0%94%EA%BF%80-%EC%8B%9C%EC%A0%90%EC%9D%B8%EA%B0%80/</link>
      <pubDate>Mon, 09 Mar 2009 10:23:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-03-09-unittest-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8D%EC%9D%84-%EC%8A%AC%EC%8A%AC-%EB%B0%94%EA%BF%80-%EC%8B%9C%EC%A0%90%EC%9D%B8%EA%B0%80/</guid>
      <description>회사에서 C++로 작성하는 프로그램의 이런저런 유닛테스팅 용도로 UnitTest++을 사용해왔다. 굉장히 간결한 라이브러리이고 (header file 몇 개 + 라이브러리 하나), 전체 테스트 스윗이나 테스트 케이스 설정도 다음과 같은 형태라 무척 간단한다.
SUITE(SomeSuite) { TEST(Test1) { CHECK( … ); } // ... } 이 UnitTest++을 꽤나 편하게 쓰고 있었는데 굉장히 맘에 안드는 점이 몇 가지 있다.
테스트 케이스를 선별적으로 실행하기 힘들다 / 테스트 실행 인터페이스가 기본적으론 제공되지 않는다 기본적으로 제공되는 외부 인터페이스가 1갠데, 테스트를 실행하는 함수인 UnitTest::RunAllTest() 함수가 그 것이고 다음과 같은 인자를 받는다.</description>
    </item>
    
    <item>
      <title>텍스트 필터링용 trie 구현하기</title>
      <link>https://rein.kr/posts/2009-02-25-%ED%85%8D%EC%8A%A4%ED%8A%B8-%ED%95%84%ED%84%B0%EB%A7%81%EC%9A%A9-trie-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0/</link>
      <pubDate>Wed, 25 Feb 2009 23:35:09 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-02-25-%ED%85%8D%EC%8A%A4%ED%8A%B8-%ED%95%84%ED%84%B0%EB%A7%81%EC%9A%A9-trie-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0/</guid>
      <description>&lt;p&gt;자료구조 시간에 배우게 되는 자료 구조 중 가장 특이한 애를 꼽자면 해쉬 테이블과 &lt;a href=&#34;http://en.wikipedia.org/wiki/Trie&#34; title=&#34;trie&#34;&gt;트라이(trie)&lt;/a&gt;였다. n-ary tree 처럼 “비교”라는 직관적인 방식을 쓰는게 아니라서 그렇게 느꼈던듯 싶다.&lt;/p&gt;
&lt;p&gt;지난 주 후반~오늘까지 텍스트 필터링을 만들면서 이 trie의 일종을 구현하고 테스트했다. 그 와중의 기억을 정리해보는 의미로 여기에 덤프.&lt;/p&gt;
&lt;p&gt;필요한 부분이,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;가능한 범위 내에서 속도가 빠를 것&lt;/li&gt;
&lt;li&gt;메모리를 적게 쓸 것&lt;/li&gt;
&lt;li&gt;longest-prefix matching; LPM 이 가능할 것&lt;/li&gt;
&lt;li&gt;Unicode (UCS2 or UTF-16LE)를 지원할 것&lt;/li&gt;
&lt;li&gt;가능하면 MBCS/UTF-8&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;를 지원하거나 지원하기 쉬울 것&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;정도. 덤으로 상황(환경?)은 대충 다음과 같다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;전처리 시간은 따로 뺄 수 있다&lt;/li&gt;
&lt;li&gt;전체 데이터는 메모리에 올릴 수 있는 수준(disk-access 이런거 없음)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;그리고 후보였던 자료 구조는 3가진데,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;(기존에 있던) map/binary-tree 기반의 자료구조&lt;/li&gt;
&lt;li&gt;trie 기반의 자료구조&lt;/li&gt;
&lt;li&gt;hash-table 기반의 자료구조&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;이 중에 기존에 있던 녀석은 메모리 사용량은 그렇다치고(데이터 중복이 많은 편이라 낮지는 않음), 동작 속도의 worst-case가 눈에 띄게 높아서 –_- 일단 보류하고 나머지를 좀 생각했다. hash-table의 경우 imperfect-hashing(=key collison이 있는 경우) 은 trie 보다 느릴 수 있는데, 이번엔 전처리 해도 무방해서 &lt;a href=&#34;http://en.wikipedia.org/wiki/Perfect_hashing&#34;&gt;perfect-hashing&lt;/a&gt;을 만들어낼 수 있다. 하지만 LPM엔 부적합해서 일단 trie를 쓰기로 했다.&lt;/p&gt;
&lt;p&gt;Trie 는 &lt;em&gt;비교를 이용하지 않는다&lt;/em&gt; 는 면에서 효율성이 나오는데, 대신 공간은 매우 비효율적으로 쓴다. 노드 자체에 어떤 데이터가 있는지 기록하는 형태가 아니라, 노드 간의 연결이 있고/없음에 데이터의 일부가 기록되는 형태라서, 없는 데이터를 표현하는 공간의 낭비가 심하다. 예를 들어 char 기반의 문자열들을 저장한다고 했을 때, 데이터가 a로 시작하는 단어 100개와 b로 시작하는 단어 100개가 있는 집합이라면, 최상위 노드(root)에서 a, b 항목을 뺀 나머지 공간(적어도 254개 정도)은 쓸모가 없어진다.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description>
    </item>
    
    <item>
      <title>C&#43;&#43; 객체에 (흔히) Initialize/Finalize 같은 함수가 있는 이유</title>
      <link>https://rein.kr/posts/2009-02-12-c-%EA%B0%9D%EC%B2%B4%EC%97%90-%ED%9D%94%ED%9E%88-initializefinalize-%EA%B0%99%EC%9D%80-%ED%95%A8%EC%88%98%EA%B0%80-%EC%9E%88%EB%8A%94-%EC%9D%B4%EC%9C%A0/</link>
      <pubDate>Thu, 12 Feb 2009 18:31:11 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-02-12-c-%EA%B0%9D%EC%B2%B4%EC%97%90-%ED%9D%94%ED%9E%88-initializefinalize-%EA%B0%99%EC%9D%80-%ED%95%A8%EC%88%98%EA%B0%80-%EC%9E%88%EB%8A%94-%EC%9D%B4%EC%9C%A0/</guid>
      <description>KLDP 쪽에 관련 스레드가 있길래 든 생각.
안녕하세요.
문득 궁금한 점이 생겼습니다.
C++에서 객체에대한 초기화(Initialize) 나 해제(Finalize) 메소드를 구현하는 이유는 뭘까요?
얼핏 생각해보면 그냥 생성자나 소멸자를 이용해도 좋을 것 같은데…
물론 정의하고 구현하기 나름이겠지만..
혹시 반드시 이렇게 클래스를 정의할 필요가 있거나, 이런 방식으로 객체를 보다 효율적으로 관리할 수 있는 특수한 경우가 있나요?
궁금합니다.
라는 질문이 올라왔다. 이중 Initialize() 함수에 관한 답변들이,
자원 할당 해제 자유 공간(free space)에 할당/해제하는 부담 때문에 등등인데 이건 좀.</description>
    </item>
    
    <item>
      <title>CI에 ActionScript Unit test 포함하기</title>
      <link>https://rein.kr/posts/2009-02-02-ci%EC%97%90-actionscript-unit-test-%ED%8F%AC%ED%95%A8%ED%95%98%EA%B8%B0/</link>
      <pubDate>Mon, 02 Feb 2009 10:27:07 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-02-02-ci%EC%97%90-actionscript-unit-test-%ED%8F%AC%ED%95%A8%ED%95%98%EA%B8%B0/</guid>
      <description>Google Testing Blog에도 자주 글을 쓰고 있는, 구글 안에서 자동화된 테스팅 쪽에서 일하는 Miško Hevery의 글: CI 빌드에서 어떻게 Flex Unittest를 하는가
내용은 간단하다. Adobe AIR 라는 플래쉬 플레이어가 있다. 이걸 써서 CI(continuous integration) 툴 쪽에서 빌드할 때, Flash(actionscript) 혹은 flex 응용(이 경우엔 UnitTest)을 만들어내고(adobe air용으로) 이 UnitTest를 실행하고 실패한 테스트 갯수를 세서 CI 툴에 반환하고(프로그램 종료 코드로), 덤으로 XML 파일로 테스트 리포트도 보내버리기 라는 것. 사실 첫번째는 별거 아니고(CI 쪽 툴 좀 만져봤으면 뻔하고+ 자동화된 빌드야 뭐…), 두번째랑 세번째는 Adobe Flash Player의 기본적인 특성, 즉 안전한 샌드박스 위에서 동작하기 때문에 손댈 수 있는게 거의 없다는 점을 피할 수 있어서 가능한 것.</description>
    </item>
    
    <item>
      <title>새 컴퓨터가 말썽</title>
      <link>https://rein.kr/posts/2009-01-08-%EC%83%88-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B0%80-%EB%A7%90%EC%8D%BD/</link>
      <pubDate>Thu, 08 Jan 2009 12:18:24 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2009-01-08-%EC%83%88-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B0%80-%EB%A7%90%EC%8D%BD/</guid>
      <description>혹은 다른 무언가가 말썽.
집에서 쓸 새 보조용 컴퓨터를 새로 주문했다.
울프데일 E7300 + 4GiB RAM 에 케이스 + 파워서플라이만 주문하고 HDD는 있는 거 하나 떼서 / 그래픽카드는 Azyu의 안 쓰는(?) 그래픽 카드를(nVidia GeForce 7600GS) 쓰기로 했다. 모니터는 기존에 서브 모니터로 쓰던 19″ LCD를 쓰기로.
근데 OS를 설치하려고 보니 모니터 출력이 되질 않는 것이다. 처음엔 그래픽 카드 문젠가 했는데 그것도 아니었다. 델 모니터에 연결해보니 잘 나와서 모니터가 슬슬 죽어가나 싶어서 이러저러 테스트 하다보니 또 나온다 출력 조건이 뭔가 엄한데(…) 요약해보면,</description>
    </item>
    
    <item>
      <title>프로그래밍 언어가 종교라면</title>
      <link>https://rein.kr/posts/2008-12-18-%EC%9E%A1%EB%8B%B4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EA%B0%80-%EC%A2%85%EA%B5%90%EB%9D%BC%EB%A9%B4/</link>
      <pubDate>Thu, 18 Dec 2008 12:13:45 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-12-18-%EC%9E%A1%EB%8B%B4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4%EA%B0%80-%EC%A2%85%EA%B5%90%EB%9D%BC%EB%A9%B4/</guid>
      <description>과 게시판에 있던 링크를 납치. (게시판 자체가 로그인 기반/비공개라서 링크는 따로 안함)
프로그래밍 언어가 종교라면
간단히 요약 + 감상. 현재 널리 쓰이는 프로그래밍 언어들을 역시 널리 알려진 지구 상의 각 종교들에 비유했다. rein 본인은 종교를 갖지 않는 사람이라 종교적인 편향이 없음을 미리 말해둔다 :p C는 유대교 – 누구나 그 법칙을 알고 널리 퍼져있음. 사실 C에 기반하지 않은 무언가가 있는지 Java는 기독교 원리주의 – 이건 말 안해도 잘 알듯. C와 같지만 엄격한 법칙들로 재창조.</description>
    </item>
    
    <item>
      <title>잡담: 2008년 12월 8일</title>
      <link>https://rein.kr/posts/2008-12-08-%EC%9E%A1%EB%8B%B4-2008%EB%85%84-12%EC%9B%94-8%EC%9D%BC/</link>
      <pubDate>Mon, 08 Dec 2008 16:04:48 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-12-08-%EC%9E%A1%EB%8B%B4-2008%EB%85%84-12%EC%9B%94-8%EC%9D%BC/</guid>
      <description>기시감 @rein | 업데이트된 리비젼이 404인걸 보고 @rein | 없는 리비젼이라고 잠시 고민한 나는 @rein | 무엇인가 @rein | … …
HTTP 404 코드는 page not found(없는 페이지/URI). SVN revision은 1에서 시작해서 계속 단조 증가하는 정수. 일력 Peanuts의 코믹스트립이 하나씩 나와있는 일력을 써왔다. 이제 슬슬 12월도 1/3쯤 지난 시점. 거의 밑바닥까지 걷어내서 몇 장 안남은 일력을 보니 올해도 다 갔구나 싶다. 근데 문제는 내년도 Peanuts 일력은 못 샀다. 😢</description>
    </item>
    
    <item>
      <title>Concurrent Programming and `Linearization’</title>
      <link>https://rein.kr/posts/2008-12-05-concurrent-programming-and-linearization/</link>
      <pubDate>Fri, 05 Dec 2008 09:30:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-12-05-concurrent-programming-and-linearization/</guid>
      <description>Concurrent Programming 혹은 병행 프로그래밍에서 겪게되는, 혹은 고민하게 되는 문제가 있다.
동시에 복수의 스레드가 뭔가 실행하고 있을 때 &amp;ldquo;순서&amp;quot;라는건 어떤 의미인가?
두 개 이상의 프로세서가 있는 시스템에서, 두 스레드가 하나의 공유 queue에 아이템을 집어넣었다. 이 두 스레드의 enq() 호출이 같은 시점에 호출되었다면 &amp;ldquo;순서&amp;quot;는 어떤 개념이 되는가?
각 순간을 적당히 잘라서 말하면 다음과 같은 순서라고 치자. (편의상 두 스레드를 A, B라고 치고 이 둘은 x, y를 빈 상태인 큐 q에 넣는다고 하겠다)</description>
    </item>
    
    <item>
      <title>C/C&#43;&#43; on Adobe Flash</title>
      <link>https://rein.kr/posts/2008-11-21-cc-on-adobe-flash/</link>
      <pubDate>Fri, 21 Nov 2008 09:28:20 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-11-21-cc-on-adobe-flash/</guid>
      <description>via DDJ – Adobe Alchemy
농담이 아니라, Adobe Flash Player 위에서 (물론 정확히는 Adobe VM 이지만) C/C++ 로 작성된 코드가 동작하게 하는 툴인 Alchemy 가 release preview로 나왔다. DDJ에 나온 내용을 따오자면,
Alchemy, which can be downloaded here is primarily intended to be used with C/C++ libraries that have few operating system dependencies. Targeting computation-intensive use cases, such as audio/video transcoding, data manipulation, XML parsing, cryptographic functions or physics simulation, performance can be considerably faster than ActionScript 3.</description>
    </item>
    
    <item>
      <title>G☆ 2008 참관기</title>
      <link>https://rein.kr/posts/2008-11-17-g-2008-%EC%B0%B8%EA%B4%80%EA%B8%B0/</link>
      <pubDate>Mon, 17 Nov 2008 09:27:52 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-11-17-g-2008-%EC%B0%B8%EA%B4%80%EA%B8%B0/</guid>
      <description>지난 금요일에 G☆ 2008에 갔다왔음.
잠실/삼성역 &amp;ndash; KINTEX 셔틀을 타고 갔다왔는데, 잠실에서 사람을 왕창 태우고 와서 삼성역에서 못타는 경우도 생기는 &amp;ldquo;!@#$%&amp;ldquo;한 경우 KINTEX가 멀긴 하더라. 근데 정말 관람객을 끌여들이고 싶다면 비싸도 COEX에서 해야하는거 아니냐.
대략 10시 좀 넘어서 출발해서 11~3시? 경까지 참관하고 저녁 먹고 서울로 돌아오니 6:30쯤되더라.
참가한 업체가 대형 업체 위주로 새면 입구부터 시작해서 대략 한빛, NC, Nexon, 한게임, 피망, … 이 있었던 듯 싶다. 다만 플레이 할만한 상태의 게임을 가장 많이 내놓은 곳은 넥슨 부스 였던 기분.</description>
    </item>
    
    <item>
      <title>Wait-free vs. lock-free</title>
      <link>https://rein.kr/posts/2008-11-04-wait-free-vs-lock-free/</link>
      <pubDate>Tue, 04 Nov 2008 13:54:30 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-11-04-wait-free-vs-lock-free/</guid>
      <description>밑의 글(Lock-free stack과 성능)에서 글꼬리에 **&amp;ldquo;wait-free 와 lock-free의 포함 관계는 어떤가?&amp;rdquo;**와 그 의미를 물었다. 정답자도 나왔고하니, 간단히 설명. 영문 위키 백과에 이에 대한 설명이 있는데, 의미 부분만 간단히 짤라서 인용하면,
Wait-freedom is the strongest non-blocking guarantee of progress, combining guaranteed system-wide throughput with starvation-freedom. An algorithm is wait-free if every operation has a bound on the number of steps it will take before completing.
이다. 한글로 다시 말하자면, 어떤 알고리즘의 모든 연산이 완료될 때 까지 밟는 단계(명령어 수로 봐도)가 유한한(상수는 아님에 주의) 경우 wait-free이다.</description>
    </item>
    
    <item>
      <title>Lock-free stack과 성능</title>
      <link>https://rein.kr/posts/2008-11-03-lock-free-stack%EA%B3%BC-%EC%84%B1%EB%8A%A5/</link>
      <pubDate>Mon, 03 Nov 2008 09:41:59 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-11-03-lock-free-stack%EA%B3%BC-%EC%84%B1%EB%8A%A5/</guid>
      <description>대부분의 플랫폼에서 compare-and-swap 이라 부르는 연산을 지원한다.1 이 명령어는 CAS( address, expected_value, new_value ) 의 형태로 쓰이는데, address의 값이 expected_value 이면 new_value로 바꾸고, 그렇지 않으면 바꾸지 않는다. 그리고 성공 여부나 이전 값을 반환하는 형태로 되어있다. 이런 원시적인(…) 동기화 명령어를 사용하면 링크드 리스트 기반의 스택을 락(lock)없이 만들 수 있다. 즉 top 이 스택의 맨 위를 가리키는 구현이라 할 때, push 같은건 아주 naive하게 만들면, 다음처럼 구현하면 된다. (절대로 이 스택 구현을 바로 쓰지 말 것.</description>
    </item>
    
    <item>
      <title>C&#43;&#43; 0x draft 등장</title>
      <link>https://rein.kr/posts/2008-10-29-c-0x-draft-%EB%93%B1%EC%9E%A5/</link>
      <pubDate>Wed, 29 Oct 2008 11:43:36 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-10-29-c-0x-draft-%EB%93%B1%EC%9E%A5/</guid>
      <description>Sutter&amp;rsquo;s Mill 에서 가져온 소식.
프로그래밍 언어인 C++ 의 새 표준안인 C++ 0x의 초안(working draft)이 지난 9월 ISO C++ commitee에서 발행되었다. 실제로 이 초안을 가지고 토론 / 버그 픽스 / 모호한 부분의 수정을 거쳐 내년 이맘 때 최종안이 나온다고 한다.
C++ 98 때도 그렇지만 큰 수정은 아마 없을 것이고 , 최종안은 유료일테니 이걸 일단 가지고 있다 투표전 최종 드래프트를 보면 될법하다.
이제까지 알려진대로, template에서 특정 기능이 존재하는 타입임을 강제하는 concept 의 등장 같은 굵직한 변화 외에는 라이브러리 추가 등이 주가 된다.</description>
    </item>
    
    <item>
      <title>다른 svn 저장소를 svn 저장소 밑에 링크하기</title>
      <link>https://rein.kr/posts/2008-10-28-%EB%8B%A4%EB%A5%B8-svn-%EC%A0%80%EC%9E%A5%EC%86%8C%EB%A5%BC-svn-%EC%A0%80%EC%9E%A5%EC%86%8C-%EB%B0%91%EC%97%90-%EB%A7%81%ED%81%AC%ED%95%98%EA%B8%B0/</link>
      <pubDate>Tue, 28 Oct 2008 21:43:31 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-10-28-%EB%8B%A4%EB%A5%B8-svn-%EC%A0%80%EC%9E%A5%EC%86%8C%EB%A5%BC-svn-%EC%A0%80%EC%9E%A5%EC%86%8C-%EB%B0%91%EC%97%90-%EB%A7%81%ED%81%AC%ED%95%98%EA%B8%B0/</guid>
      <description>내가 주로 진행하는 프로그래밍 작업인 G가 있고, 부가적으로 진행했던 작업 A가 있다. 근데 A가 G의 라이브러리 부분을 거의 다 가져다가 쓰지만, G의 소스트리와 공유되기는 좀 힘들었던 점이 있었다. 일단 G의 소스트리는 다음처럼 생겼다.
Externals/ log4cxx boost Lib/ Library1 Library2 Projects Project G/ Libraries under Project G (Other projects)/ (Project A 가 여기에 있어야하겠지만, 사정상 다른 svn에 있음) A는 Projects에 있는게 적합하긴 하지만, 실제로 같은 트리에 통합되는건 좀 무리라 이 트리에 직접 추가하진 않았다.</description>
    </item>
    
    <item>
      <title>심심풀이 C 언어 퀴즈에 도전</title>
      <link>https://rein.kr/posts/2008-10-25-%EC%8B%AC%EC%8B%AC%ED%92%80%EC%9D%B4-c-%EC%96%B8%EC%96%B4-%ED%80%B4%EC%A6%88%EC%97%90-%EB%8F%84%EC%A0%84/</link>
      <pubDate>Sat, 25 Oct 2008 01:08:25 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-10-25-%EC%8B%AC%EC%8B%AC%ED%92%80%EC%9D%B4-c-%EC%96%B8%EC%96%B4-%ED%80%B4%EC%A6%88%EC%97%90-%EB%8F%84%EC%A0%84/</guid>
      <description>&amp;ldquo;Jong10++:: 심심풀이 C 퀴즈 하나&amp;rdquo; 에서 트랙백
C 언어에서 포인터를 사용했을 때 주소 계산과 관련된 문제다. C 언어는 죽었다 깨도 강타입 언어라고 부르기 힘들다는 점을 이용한 문제.
포인터인 어떤 p에 대해서,
p + int_type 과 int_type + p 의 결과는 같고 배열 인덱스 계산에서도 이런 종류의 교환 법칙 비슷한게 성립한다. 즉 a[index] = index[a] 정도가 성립한다.
이를 이용하면 int* a에서 a + 2, 2 + a, &amp;amp;a[2], &amp;amp;2[a] 는 모두 같은 주소를 가리킨다.</description>
    </item>
    
    <item>
      <title>C/C&#43;&#43; bit shift 연산</title>
      <link>https://rein.kr/posts/2008-10-18-cc-bit-shift-%EC%97%B0%EC%82%B0/</link>
      <pubDate>Sat, 18 Oct 2008 10:51:13 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-10-18-cc-bit-shift-%EC%97%B0%EC%82%B0/</guid>
      <description>Monaca: [퀴즈] 비트 이동 연산의 결과는 어떻게 될까? 에서 트랙백.
bit 를 직접 다루는 몇 몇 연산자(명령어?)들의 경우엔 꽤나 의외의 결과를 낳는 경우가 있다. (특히 컴퓨터 구조에 대한 관심이 적을 경우 더욱 그렇다) 물론 기본적인 키워드도 이해 못해서 삽질하는 경우도 많은 세상이니 알아두면 알아둘수록 &amp;ldquo;의외다&amp;rdquo; 라고 말하는 경우는 줄어든다. 여튼 본론으로 넘어가자.
monaca 님이 낸 문제의 답은 32bit Fedora / GCC 에서 다음과 같은 답이 나온다.
32 16 32
이건 intel asm 에서 저 명령어가 31(하위 5bit이 1인 값)과 and 연산된 shift 길이를 쓰기 때문에 그랬던 것이고.</description>
    </item>
    
    <item>
      <title>trac wiki 변환 삽질기</title>
      <link>https://rein.kr/posts/2008-10-10-trac-wiki-%EB%B3%80%ED%99%98-%EC%82%BD%EC%A7%88%EA%B8%B0/</link>
      <pubDate>Fri, 10 Oct 2008 22:55:07 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-10-10-trac-wiki-%EB%B3%80%ED%99%98-%EC%82%BD%EC%A7%88%EA%B8%B0/</guid>
      <description>모종의 번역 작업을 소스코드 형상 관리도구(SCM)인 trac을 사용해서 진행했다.
오늘 기나긴1 회사 업무의 막바지에 틈이 생긴지라, trac을 전달 가능하다고 생각하는 형태 — 독립된 HTML 페이지라거나, RTF 형태라거나, PDF라거나, MS Word 형식이라거나 — 로 바꾸는 작업을 진행했다. 처음으로 trac을 썼었던 0.9 버젼 때만 하더라도 text/rtf 로 변환하는 옵션이 있었던 것 같은데! 막상 오늘 하려고보니 (현재 trac 0.11stable 사용 중) 없더라.
뭐 별 수 있나하고 trac-hacks를 뒤지기 시작. export 태그 밑에 적당한게 몇 개 있길래 시도해보기 시작.</description>
    </item>
    
    <item>
      <title>간단한 플래쉬 게임이 더 재밌는 이유</title>
      <link>https://rein.kr/posts/2008-10-03-%EA%B0%84%EB%8B%A8%ED%95%9C-%ED%94%8C%EB%9E%98%EC%89%AC-%EA%B2%8C%EC%9E%84%EC%9D%B4-%EB%8D%94-%EC%9E%AC%EB%B0%8C%EB%8A%94-%EC%9D%B4%EC%9C%A0/</link>
      <pubDate>Fri, 03 Oct 2008 15:27:21 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-10-03-%EA%B0%84%EB%8B%A8%ED%95%9C-%ED%94%8C%EB%9E%98%EC%89%AC-%EA%B2%8C%EC%9E%84%EC%9D%B4-%EB%8D%94-%EC%9E%AC%EB%B0%8C%EB%8A%94-%EC%9D%B4%EC%9C%A0/</guid>
      <description>아마 지금의 개임 개발사/개발자들이 게임이 주는 &amp;ldquo;재미&amp;quot;에 치중하지 않고 &amp;ldquo;그래픽&amp;quot;이나 &amp;ldquo;전체 플레이 시간&amp;rdquo; 같은데 얽매이고 있어서 그런게 아닐까? 그리고 그렇게 메인스트림 게임들이 개발되고 있기 때문인 것 같기도 하고.
여튼 이 생각이 떠오르게 만든 오늘자 xkcd.com의 코믹스트립(CCL 2.5 license – Attribution / Non-commercial)
나는 분명히 문명(Civilization) 씨리즈라거나 WoW 같은 MMO, 그리고 에이스 컴뱃 같은 슈팅/액션 게임에 열광한다. 사실 그런 게임을 즐기기 위해 그 시기에 꽤나 하이엔드에 속할 CPU/RAM/GPU. 물론 앞의 2가지는 &amp;ldquo;컴파일이 빨라요!</description>
    </item>
    
    <item>
      <title>Talk on “Parallel Programming Patterns” by Ralph Johnson</title>
      <link>https://rein.kr/posts/2008-09-26-talk-on-parallel-programming-patterns-by-ralph-johnson/</link>
      <pubDate>Fri, 26 Sep 2008 15:18:49 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-09-26-talk-on-parallel-programming-patterns-by-ralph-johnson/</guid>
      <description>via Sutter&amp;rsquo;s Mill: Ralph Johnson on Parallel Programming Patterns
UIUC의 교수이자, 허브 서터가 언급한 것 처럼 GoF ((Design Patterns의 저자 4명을 Gang of Four 라고 부른다)) 의 한 사람인 Ralph Johnson의 세미나. UIUC의 온라인 세미나로 제공되고 있다.
약 한 시간 짜리 톡인데, 초반에 약간 지루한 부분이 있지만 참고 넘어가니 꽤 들을만 했음. 물론 아쉬움도 한가득.
이 이하는 적당히 요약한 것 + 개인적인 논평 약간.
About Patterns
패턴은 은탄환1 이 아니며, 경험 그 자체를 대체하지도 못한다.</description>
    </item>
    
    <item>
      <title>Flash Socket Policy 설정</title>
      <link>https://rein.kr/posts/2008-09-22-flash-socket-policy-%EC%84%A4%EC%A0%95/</link>
      <pubDate>Mon, 22 Sep 2008 20:29:27 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-09-22-flash-socket-policy-%EC%84%A4%EC%A0%95/</guid>
      <description>Adobe Flash의 소켓 정책(socket flash or flash policy or cross-domain (socket) policy)은 Flash Player 의 소켓 연결과 관련된 보안 정책을 처리하는 방법을 기술한다. 특히 이종 도메인간의 연결은 이 것 없인 불가능하다.
이런걸 기술하는 파일의 정식 명칭은 corss-domain policy file 이며, 여러개의 도메인에 걸쳐 데이터를 가져올 수 있게1 — 어떤 의미론 통신할 수 있게 — 해주는 기능을 한다. 물론 이 기능 때문에, 예전에 Flash 소켓 정책이 돌아가는 구조를 몰랐을 때 삽질했던 적이 있다.</description>
    </item>
    
    <item>
      <title>WordPress 2.7에 추가될 기능 목록</title>
      <link>https://rein.kr/posts/2008-09-19-wordpress-27%EC%97%90-%EC%B6%94%EA%B0%80%EB%90%A0-%EA%B8%B0%EB%8A%A5-%EB%AA%A9%EB%A1%9D/</link>
      <pubDate>Fri, 19 Sep 2008 09:40:46 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-09-19-wordpress-27%EC%97%90-%EC%B6%94%EA%B0%80%EB%90%A0-%EA%B8%B0%EB%8A%A5-%EB%AA%A9%EB%A1%9D/</guid>
      <description>현재 전세계에서 가장 많은 사용자가 있는1 블로깅 툴인 WordPress의 새 버젼(=2.7 hemorrhage) 기능 목록을 주 개발자 중 한 명인 Ryan이 정리해놨다.
내가 써 본 것 위주로 적당히 스크린샷을 따봤다.
새로운 관리자 UI 몇 번 언급했었던 사항인데, 2.6 버젼에서 크게 바뀌었던 관리자 UI가 다시 한 번 꽤 큰 변화를 맞는다. 2.6 개발하는 동안 시험용 브랜치였던 CrazyHorse 의#160; UI가 새 UI로 결정되었다.
새로운 포스트 편집 메뉴/기능 편집 메뉴의 각종 부가 정보 박스(meta box)들을 숨기거나, 꺼내거나, 쉽게 설정하고 + 필요에 따라 보이게/안보이게 할 수 있게 만들었다.</description>
    </item>
    
    <item>
      <title>일과 놀이 사이</title>
      <link>https://rein.kr/posts/2008-09-17-%EC%9D%BC%EA%B3%BC-%EB%86%80%EC%9D%B4-%EC%82%AC%EC%9D%B4/</link>
      <pubDate>Wed, 17 Sep 2008 13:45:28 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-09-17-%EC%9D%BC%EA%B3%BC-%EB%86%80%EC%9D%B4-%EC%82%AC%EC%9D%B4/</guid>
      <description>놀이 대신 흥미/취미/ 등등 원하는 단어로 바꿔서 생각해도 뜻은 통한다.
오늘자 xkcd.com 의 코믹 스트립. (CCL attribution/non-commercial)
할머니에게 메일을 타이프라이터로 작성하는 과정에서, cnn, reddit, 구글 뉴스그룹, boingboing, bbc, slashdot 등을 방문하려고 입력한1 노트를 그려낸 것. 참 geek스러운 장면. 뭔가 내가 일 할 때, 혹은 일이라 부를만한 주 작업을 할 때 순간적으로 다른 문맥 — 예를 들어 HanRSS를 열어 다른 블로그를 본다거나, 알라딘이나 toonk.com에 가서 새로 나온 책/만화책을 확인한다거나… — 으로 왔다갔다한다.</description>
    </item>
    
    <item>
      <title>금주의 책 읽기: 클로디아의 비밀, 오다 노부나가</title>
      <link>https://rein.kr/posts/2008-09-01-%EA%B8%88%EC%A3%BC%EC%9D%98-%EC%B1%85-%EC%9D%BD%EA%B8%B0-%ED%81%B4%EB%A1%9C%EB%94%94%EC%95%84%EC%9D%98-%EB%B9%84%EB%B0%80-%EC%98%A4%EB%8B%A4-%EB%85%B8%EB%B6%80%EB%82%98%EA%B0%80/</link>
      <pubDate>Mon, 01 Sep 2008 09:38:07 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-09-01-%EA%B8%88%EC%A3%BC%EC%9D%98-%EC%B1%85-%EC%9D%BD%EA%B8%B0-%ED%81%B4%EB%A1%9C%EB%94%94%EC%95%84%EC%9D%98-%EB%B9%84%EB%B0%80-%EC%98%A4%EB%8B%A4-%EB%85%B8%EB%B6%80%EB%82%98%EA%B0%80/</guid>
      <description>요새 바쁜 척 하면서(…) 책을 좀 적게 읽고있는듯하지만, 일단 이 번 주에 다 읽은 녀석 두 권의 간단한 감상.
클로디아의 비밀 어렸을 때 읽었던 책이었는데 다시 생각난 김에 구입. 내가 읽었던 것은 아마 &amp;ldquo;집나간 아이&amp;quot;던가 하는 제목으로 뭔가 전집류에 끼어있던 녀석을 읽었던 듯? 이 책의 기본적인 설정이 참 매력적이다. 물론 그래서 동화인지는 모르겠지만;
뉴욕 교외에 살던 사남매 중에 맏딸과 둘째 아들이 가출을 해서 뉴욕 메트로폴리탄 미술관에 숨어지내다가 새로 들어온 조각상의 비밀을 추적하게 된다는게 기본 내용인데, 어렸을 때 읽었을 때는 무척 길었던 것 같은데 다시 읽으니 꽤나 짧구나; 뭔가 미술관의 분위기라거나, 묘사는 연상이 잘 되서 즐거웠음.</description>
    </item>
    
    <item>
      <title>무선랜 훔쳐쓰기</title>
      <link>https://rein.kr/posts/2008-08-26-%EB%AC%B4%EC%84%A0%EB%9E%9C-%ED%9B%94%EC%B3%90%EC%93%B0%EA%B8%B0/</link>
      <pubDate>Tue, 26 Aug 2008 09:24:42 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-08-26-%EB%AC%B4%EC%84%A0%EB%9E%9C-%ED%9B%94%EC%B3%90%EC%93%B0%EA%B8%B0/</guid>
      <description>Geek을 위한 웹코믹인 xkcd.com의 지난 주 금요일 코믹 스트립.
We need a special holiday to honor the countless kind souls with unsecured networks named ‘linksys&#39; ‘linksys&amp;rsquo;란 이름의 비보안 네트웍을 사용하는(제공하는) 수많은 영혼들을 위한 특별휴일이 필요하다 from http://xkcd.com CCL 2.5 attribution / non-commerical
무선랜 기술 (IEEE 802.11 의 변형들) 의 경우 기본적인 수준의 보안 개념만 존재하며, 실제로 이걸 적용해서 쓰는 사람들은 꽤나 드물다. 보통은 저 웹코믹에서 비꼬는(?) 것 처럼 linksys ((cisco의 자회사로 네트웍 장비 — 특히 공유기 — 를 판매한다)) 라고 네트웍 이름이 보이는 공유기/무선 AP의 기본 상태 ((제조사 이름이 기본적으로 공유기나 AP 이름 (=네트웍이름) 으로 쓰임)) 로 놔두는 경우가 태반이다.</description>
    </item>
    
    <item>
      <title>SW 리뷰: Perforce</title>
      <link>https://rein.kr/posts/2008-07-28-sw-%EB%A6%AC%EB%B7%B0-perforce/</link>
      <pubDate>Mon, 28 Jul 2008 16:27:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-07-28-sw-%EB%A6%AC%EB%B7%B0-perforce/</guid>
      <description>소프트웨어 프로젝트에서 흔히 &amp;ldquo;소스코드 관리툴 (Source Code Management Tool;SCM)&amp;ldquo;이라고 부르는 물건들을 쓰게 된다. 사실 안 쓰면 망하기 딱 좋다.
학부생/대학원생 시절에, 그리고 회사 입사한 이래로 subversion (SVN) 이라는 오픈소스 도구를 써왔는데, 지금 하는 프로젝트에서 소스관리툴을 Perforce라는 상용 도구로 바꾸게 되었다. 근 몇 주가 쓰면서 느낀 점을 정리해보겠다.
속도가 빠르다. 특히 크기가 큰 바이너리 파일도 꽤나 빠르게 전송한다. SVN도 1.5.0 버젼에서 속도가 약간 빨라진 것 같지만 &amp;ndash; 아직 일부 프로젝트는 SVN 기반으로 관리됨 &amp;ndash; perforce 쪽이 더 빠른 느낌?</description>
    </item>
    
    <item>
      <title>WordPress 2.6 출시</title>
      <link>https://rein.kr/posts/2008-07-15-wordpress-26-%EC%B6%9C%EC%8B%9C/</link>
      <pubDate>Tue, 15 Jul 2008 06:48:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-07-15-wordpress-26-%EC%B6%9C%EC%8B%9C/</guid>
      <description>WordPress 의 2.6 버젼이 곧 공식적으로 릴리즈 됩니다.
개발 버젼의 trunk1의 버젼이 오늘 새벽에 2.6-RC1에서 2.6으로 변경되었으니, 이게 최종적으로 WordPress.org 를 통해서 릴리즈되면 출시가 완료.
전번에 썼던 베타 버젼까지 공개된 기능들, 기능들2 를 일단 참고.
개발자 Ryan의 홈페이지에서 언급된 베타 3이후에 변경된 부분은 대략,
이미지에 캡션 달기/편집 기능 업데이트된 플러그인 수를 Plugins 메뉴 위에 풍선 메뉴2 로 표시해 줌 미디어 업로더를 2.5부터 추가된 플래쉬 업로더와 웹 브라우져 자체 업로더 중에 고를 수 있게 해줌 몇 개의 버그 픽스 정도.</description>
    </item>
    
    <item>
      <title>생활 패턴 바꾸기</title>
      <link>https://rein.kr/posts/2008-07-10-%EC%83%9D%ED%99%9C-%ED%8C%A8%ED%84%B4-%EB%B0%94%EA%BE%B8%EA%B8%B0/</link>
      <pubDate>Thu, 10 Jul 2008 08:39:27 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-07-10-%EC%83%9D%ED%99%9C-%ED%8C%A8%ED%84%B4-%EB%B0%94%EA%BE%B8%EA%B8%B0/</guid>
      <description>학부 4년/대학원2년 그리고 작년부터의 회사생활 동안에 당연한다는 듯이 생겨난 생활 패턴은,
일어나서 씻고 학교로/회사로 일/공부/… 점심식사 일/공부/… 저녁 식사 잔업을 하거나 책을 읽거나 … 잠 의 반복이었는데 지난 주 부터 시작해서 생활패턴을 바꿔보는 중.
가능한한 일찍 일어나서, 메일을 읽고 신문도 좀 훑어본 후 출근을 하고, 아침을 먹고 책을 좀 읽다가 — 출근 시간까진 대략 한 시간도 넘는 시간이 … — 오전 분량 작업을 시작. 대략 완료되면 커밋하고, 점심먹고, 오후일과.
그리고 저녁에 커밋 한 번 더하고, 가능한한 칼퇴근을 하고 집에가서 책을 읽거나 등등.</description>
    </item>
    
    <item>
      <title>C&#43;&#43; 0x의 초안이 나옵니다</title>
      <link>https://rein.kr/posts/2008-07-08-c-0x%EC%9D%98-%EC%B4%88%EC%95%88%EC%9D%B4-%EB%82%98%EC%98%B5%EB%8B%88%EB%8B%A4/</link>
      <pubDate>Tue, 08 Jul 2008 07:04:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-07-08-c-0x%EC%9D%98-%EC%B4%88%EC%95%88%EC%9D%B4-%EB%82%98%EC%98%B5%EB%8B%88%EB%8B%A4/</guid>
      <description>via Sutter’s Mill: Trip Report: June 2008 ISO C++ Standards Meeting
C++ 표준위원회의 일원이기도 한 Hurb Sutter의 블로그에 C++ 0x의 초안에 관한 포스팅이 올라왔습니다. 오는 9월에 초안이 나올 예정이라고 합니다. 초안이긴해도 현재의 C++ 표준은 돈 주고 사야해서 보통은 공짜로 볼 수 있는 초안을 보는 현실을 감안하면 큰 차이가 없으니 그걸 새 표준으로 생각하면 될듯도. …그리고 많은 컴파일러 제조사들도 일단 그걸 기준으로 컴파일러를 만들어낼테니.
일단 이전 포스팅 – 주로 Hurb Sutter 의 – 내용이랑 이번 포스팅 내용을 보면,</description>
    </item>
    
    <item>
      <title>업데이트된 몇몇 블로깅 도구들</title>
      <link>https://rein.kr/posts/2008-06-28-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%EB%90%9C-%EB%AA%87%EB%AA%87-%EB%B8%94%EB%A1%9C%EA%B9%85-%EB%8F%84%EA%B5%AC%EB%93%A4/</link>
      <pubDate>Sat, 28 Jun 2008 23:24:28 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-06-28-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%EB%90%9C-%EB%AA%87%EB%AA%87-%EB%B8%94%EB%A1%9C%EA%B9%85-%EB%8F%84%EA%B5%AC%EB%93%A4/</guid>
      <description>…도구라고 부르니 좀 어색하긴하지만 카테고리를 하나로 쪼갤 수 없는 것들이 공교롭게되 몇 주 사이에 업데이트가 되어서.
우선 사용 중인 블로그 도구인 WordPress가 beta2에 돌입했다. 좀 더 있으면 RC;release-candidate를 거쳐서 최종 출시까지 갈듯. 다만 일주일 정도 후인 7/7에 출시 예정이었는데 14일로 fall-back 할지 모른다고 적혀있을 정도라서(…).
게다가 남은 티켓1 이 이 만큼이나 있다
그리고 애용 중인 WordPress 플러그인인 Genie – 알라딘의 책 정보 링크 / 책 표지 등을 손쉽게 표시할 수 있게 도와준다 – 도 업데이트 되었다.</description>
    </item>
    
    <item>
      <title>(게임) 서버 정기 점검이 필요한 이유</title>
      <link>https://rein.kr/posts/2008-06-26-%EA%B2%8C%EC%9E%84-%EC%84%9C%EB%B2%84-%EC%A0%95%EA%B8%B0-%EC%A0%90%EA%B2%80%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0/</link>
      <pubDate>Thu, 26 Jun 2008 18:48:58 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-06-26-%EA%B2%8C%EC%9E%84-%EC%84%9C%EB%B2%84-%EC%A0%95%EA%B8%B0-%EC%A0%90%EA%B2%80%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0/</guid>
      <description>…반쯤은 유머니 적당히 해석합시다(먼산).
후배인 (전직) 게임 개발자 i 모군(대역;가명)과의 대화 :$
[18:38:26] &amp;lt;i&amp;gt; 먼가 만들것좀주실분 ㅠ [..] [18:38:54] &amp;lt;rein&amp;gt; ... [18:38:58] &amp;lt;rein&amp;gt; 자동 코딩 머신이 필요함 [18:39:07] &amp;lt;rein&amp;gt; 기왕이면 멀티스레드 응용에서 레이스 컨디션도 좀 잡아주고 [18:39:11] &amp;lt;rein&amp;gt; 데드락 프리딕션도 좀 해주고 [18:39:12] &amp;lt;rein&amp;gt; ... [18:39:20] &amp;lt;i&amp;gt; ㅇㅇ [18:39:21] &amp;lt;i&amp;gt; 저도필요함 [18:39:31] &amp;lt;i&amp;gt; 쓰레드기능은 없어도괜찮음 [18:39:40] &amp;lt;rein&amp;gt; 아 안돼 [18:39:41] &amp;lt;rein&amp;gt; ... [18:39:57] &amp;lt;rein&amp;gt; new BYTE[ length ] [18:39:58] &amp;lt;rein&amp;gt; 해놓고 [18:40:04] &amp;lt;rein&amp;gt; 또 new BYTE[ length ] [18:40:05] &amp;lt;rein&amp;gt; 하고 있네 [18:40:06] &amp;lt;rein&amp;gt; .</description>
    </item>
    
    <item>
      <title>WordPress 2.6 Beta1 출시</title>
      <link>https://rein.kr/posts/2008-06-25-wordpress-26-beta1-%EC%B6%9C%EC%8B%9C/</link>
      <pubDate>Wed, 25 Jun 2008 08:41:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-06-25-wordpress-26-beta1-%EC%B6%9C%EC%8B%9C/</guid>
      <description>이 블로그를 현재 구동 중인 툴인 WordPress가 beta1에 돌입했다.
요즘 회사에서는 SSH를 못써서, 관심을 좀 끄고있었는데(…), 오전에 Windows Live Writer로 글을 전송하는데 전송이 안되서(…), 개발 로그를 들여다보니 몇 가지 변화 + Beta1 시작을 확인할 수 있었다.
WordPress 주 개발자 중 한 명인 Ryan의 블로그에 정리된 것을 적당히 읊어보자면,
Post 버젼 간 비교. 이전에 포스팅한 것처럼 위키백과나 각종 위키, 혹은 프로그램 소스코드 관리 툴에서 흔히 보게되는 diff 개념의 저장 버젼간 차이를 비교해주는 기능이 추가 되었다.</description>
    </item>
    
    <item>
      <title>오늘 전해받은 막장 SW 개발기</title>
      <link>https://rein.kr/posts/2008-06-24-%EC%98%A4%EB%8A%98-%EC%A0%84%ED%95%B4%EB%B0%9B%EC%9D%80-%EB%A7%89%EC%9E%A5-sw-%EA%B0%9C%EB%B0%9C%EA%B8%B0/</link>
      <pubDate>Tue, 24 Jun 2008 10:04:47 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-06-24-%EC%98%A4%EB%8A%98-%EC%A0%84%ED%95%B4%EB%B0%9B%EC%9D%80-%EB%A7%89%EC%9E%A5-sw-%EA%B0%9C%EB%B0%9C%EA%B8%B0/</guid>
      <description>SW가 막장인게 아니라 개발 과정이 막장인 무언가에 관한 얘기. 출근해서 IRC 쪽으로 얘기를 하는데 딴 회사에서 병특 중인 ㅊ 님의 얘기.
[09:11:07]	&amp;lt;ㅊㅎ&amp;gt;	후우 [09:11:12]	&amp;lt;ㅊㅎ&amp;gt;	python은 포기해야하나... [09:11:28]	&amp;lt;ㅊㅎ&amp;gt;	expat 진짜 압박이네... euc-kr지원을 안하니... [09:12:41]	&amp;lt;rein_실진맥&amp;gt;	rmsep [09:12:42]	&amp;lt;rein_실진맥&amp;gt;	근데 [09:12:45]	&amp;lt;rein_실진맥&amp;gt;	euc-kr 로 [09:12:47]	&amp;lt;rein_실진맥&amp;gt;	XML을 쓰는 [09:12:50]	&amp;lt;rein_실진맥&amp;gt;	정신나간 곳은 어디임 [09:12:51]	&amp;lt;rein_실진맥&amp;gt;	... [09:12:52]	&amp;lt;ㅊㅎ&amp;gt;	skt [09:12:56]	&amp;lt;ㅊㅎ&amp;gt;	openapi [09:13:04]	&amp;lt;ㅊㅎ&amp;gt;	당연히 utf-8일줄알았는데 [09:13:07]	&amp;lt;ㅊㅎ&amp;gt;	wsdl보니 [09:13:10]	&amp;lt;ㅊㅎ&amp;gt;	전부 euc-kr [09:13:19]	&amp;lt;ㅊㅎ&amp;gt;	그래서 utf-8로 바꿔서 해봤더니 [09:13:23]	&amp;lt;ㅊㅎ&amp;gt;	응답은 [09:13:27]	&amp;lt;ㅊㅎ&amp;gt;	전부 euc-kr로 날아옴 [09:13:28]	&amp;lt;ㅊㅎ&amp;gt;	.</description>
    </item>
    
    <item>
      <title>C언어 문자열을 가능한한 피해야하는 이유</title>
      <link>https://rein.kr/posts/2008-06-19-c%EC%96%B8%EC%96%B4-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EA%B0%80%EB%8A%A5%ED%95%9C%ED%95%9C-%ED%94%BC%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0/</link>
      <pubDate>Thu, 19 Jun 2008 22:48:59 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-06-19-c%EC%96%B8%EC%96%B4-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EA%B0%80%EB%8A%A5%ED%95%9C%ED%95%9C-%ED%94%BC%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0/</guid>
      <description>C++에서 C 언어 스타일로 — 메모리 할당만 빼고 — 문자열을 복사하는 코드다. 여기에는 버그가 숨어있다.
void some_function(const char* str) { int len = ::strlen(str); // str은 안전한 문자열임 char* pBuffer = new char[len]; ::memset(pBuffer, 0, len); ::strcpy_s(pBuffer, len, str); // 원본 코드는 ::memcpy_s 였음 // blah blah blah. uses pBuffer 어제 코드베이스에 같이 일하는 팀과 연동하기 위해 받아온 리소스 로더 코드를 넣었다. 위의 코드는 거기에 있던 유틸리티 함수 격인 코드에 있던 일부분 — 을 버그있는 부분만 축약한 — 이다.</description>
    </item>
    
    <item>
      <title>iterator: C&#43;&#43;의 포인터 추상화</title>
      <link>https://rein.kr/posts/2008-06-17-iterator-c%EC%9D%98-%ED%8F%AC%EC%9D%B8%ED%84%B0-%EC%B6%94%EC%83%81%ED%99%94/</link>
      <pubDate>Tue, 17 Jun 2008 22:10:41 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-06-17-iterator-c%EC%9D%98-%ED%8F%AC%EC%9D%B8%ED%84%B0-%EC%B6%94%EC%83%81%ED%99%94/</guid>
      <description>제목은 거창하지만, C++에서 흔히 사용되는 포인터의 추상화는,
STL 컨테이너의 iterator — 일반화된 알고리즘;generic algorithm 을 포인터 없이 표현하기 위해, 그리고 템플릿 간의 상호적응;adaptation을 위해 iterator라는 추상화 단계를 뒀다 auto_ptr&amp;lt;T&amp;gt; — TR1 이전의 C++표준에 있던 유일한 스마트 포인터다. 현재로썬 특수한 경우가 아니면 쓸 일이 없다 shared_ptr&amp;lt;T&amp;gt;, weak_ptr&amp;lt;T&amp;gt; — boost 혹은 C++ TR1의 일부인 스마트 포인터 템플릿이다. 멀티스레딩 환경에서도 상당히 편하게 쓸 수있는 구조로 되어있고, auto_ptr&amp;lt;T&amp;gt;의 _소유권 문제_를 겪지 않는다 정도가 존재 한다.</description>
    </item>
    
    <item>
      <title>두 집합에 공통으로 들어있는 원소에 대한 연산</title>
      <link>https://rein.kr/posts/2008-06-16-%EB%91%90-%EC%A7%91%ED%95%A9%EC%97%90-%EA%B3%B5%ED%86%B5%EC%9C%BC%EB%A1%9C-%EB%93%A4%EC%96%B4%EC%9E%88%EB%8A%94-%EC%9B%90%EC%86%8C%EC%97%90-%EB%8C%80%ED%95%9C-%EC%97%B0%EC%82%B0/</link>
      <pubDate>Mon, 16 Jun 2008 18:06:01 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-06-16-%EB%91%90-%EC%A7%91%ED%95%A9%EC%97%90-%EA%B3%B5%ED%86%B5%EC%9C%BC%EB%A1%9C-%EB%93%A4%EC%96%B4%EC%9E%88%EB%8A%94-%EC%9B%90%EC%86%8C%EC%97%90-%EB%8C%80%ED%95%9C-%EC%97%B0%EC%82%B0/</guid>
      <description>일종의 삽질기.
두 개의 집합 A, B 가 있는데, A가 B의 부분집합이다. A의 크기는 대략 m, B의 크기는 N이고, 이때 앞의 조건에 의해 m ≤ N 이다.
그리고 C++의 표현으로 하자면,
set&amp;lt;T&amp;gt; A map&amp;lt;T, V&amp;gt; B 가 있다. 여기에서 A랑 B에 모두 들어있는 원소만 특정 함수를 호출하려면 무슨 짓을 해야할까;
첫 구현은, A 의 모든 원소에 대해 B에서 찾아서 특정 함수 F를 호출.
for each (const T&amp;amp; t in A) F(B[t]) 이러면 시간 복잡도는 O(log N) * θ(m).</description>
    </item>
    
    <item>
      <title>House edge</title>
      <link>https://rein.kr/posts/2008-06-07-house-edge/</link>
      <pubDate>Sat, 07 Jun 2008 01:12:06 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-06-07-house-edge/</guid>
      <description>선배 라피즈 옹과 후배 감자와 강원도를 갔다왔음 — 목적은 주문진가서 회 먹기(…).
8:20분쯤 과천에 모여서 출발했는데, 상당히 막혀서 12시 반쯤에야 주문진 도착. …하고 적당히 술마시고 일어나서 점심으로 회 + 매운탕을 먹고 그냥 돌아오진 못했고, 강원랜드를 갔다왔음.
내 개인적으로는 로또라거나 하는 류의 복권류, 그리고 카지노의 여러 도박류를 상당히 싫어하고 믿지 않는다 — 아주 기초적인 수준의 확률/통계 지식으로도 그 것들의 기대값은 음수거든.
카지노에서 카지노가 플레이어에 대해서 확률/통계적으로 얻을 수 있는 이익의 비율을 house edge (혹은 house advantage) 라고 부르는데, 제일 간단한 예로,</description>
    </item>
    
    <item>
      <title>프로그래머를 위한 안전띠</title>
      <link>https://rein.kr/posts/2008-05-31-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%95%88%EC%A0%84%EB%9D%A0/</link>
      <pubDate>Sat, 31 May 2008 21:49:36 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-31-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%95%88%EC%A0%84%EB%9D%A0/</guid>
      <description>spatialguy의 얼음집: &amp;ldquo;소년이여 신화가 되어라!&amp;ldquo;의 ruby on rails에서 test를 쓰지 않으면, 실제로 반도 안 쓰는 것 에서 트랙백.
요즘의 프로그래머들이 다뤄야하는 현실의 문제는 매우 복잡하다. 뭐하나 간단(?)한 것만 짜려고해도,
네트웍 통신: 수많은 예외사항 (예기치않은 연결 종료, 과부하로 디바이스 드라이버 사망, DNS 주소 문제, 인터페이스 선택 문제)이 한 가득 암호화된 통신: 민감한 정보나, &amp;ldquo;내가 누구다!&amp;ldquo;라고 주장하는 것에 대한 challenge등등 DB: 대부분의 시스템에는 보이던, 그렇지 않던 뒷단에는 거의 DB가 있다 분산된 부하 관리: 한 두대의 머신으로는 보통 감당 안되는 부하들을 처리해야 한다 등등, 산적한 현실의 벽과 싸워야 한다.</description>
    </item>
    
    <item>
      <title>숙련자와 초짜의 차이</title>
      <link>https://rein.kr/posts/2008-05-30-%EC%88%99%EB%A0%A8%EC%9E%90%EC%99%80-%EC%B4%88%EC%A7%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4/</link>
      <pubDate>Fri, 30 May 2008 09:49:50 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-30-%EC%88%99%EB%A0%A8%EC%9E%90%EC%99%80-%EC%B4%88%EC%A7%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4/</guid>
      <description>[Signal vs. Noise 에서 스크랩 –][1] Christopher Alexander on the difference between a fifty-year-old carpenter and a novice
건축이나 모터싸이클 수리 같은 _아날로그 시대부터의 전통_이 있는 분야가 컴퓨터 공학의 프로그래밍 쪽의 메타포로 자주 사용되는데1 그 중 자주 인용되는 크리스토퍼 알렉산더의 &amp;ldquo;A Pattern Language&amp;quot;에서 따온 부분이 37 Signals에 있더라.
Along the way, he compares the work of a fifty-year-old carpenter with the work of a novice. The difference: The experienced craftsman plans less because he has learned to do things in a way that lets him make small mistakes.</description>
    </item>
    
    <item>
      <title>Python &#43; Psyco</title>
      <link>https://rein.kr/posts/2008-05-25-python-psyco/</link>
      <pubDate>Sun, 25 May 2008 19:49:32 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-25-python-psyco/</guid>
      <description>취미 생활로1 하는 일 중에 하나가 프로젝트 오일러 라고 부르는 프로그래밍/수학 문제 웹사이트의 문제들을 푸는 것인데.
프로젝트 오일러에선,
2의 1000 제곱의 각 자리수 합을 구하라 0, 1, 2, 3, 4, 5, 6, 7, 8, 9로 만들 수 있는 사전식 순열 (lexicographic permutation) 중 백만번째로 나오는 것은 무엇인가 오일러 파이 함수 (euler phi-function)의 값이 n의 permutation인 것을 조사하라 다음과 같은 상황의 최단경로를 구하라 라는 식의 약간의 수학 + 알고리즘 문제들을 잔뜩 가지고 있다.</description>
    </item>
    
    <item>
      <title>Locality 그리고 false-sharing</title>
      <link>https://rein.kr/posts/2008-05-24-locality-%EA%B7%B8%EB%A6%AC%EA%B3%A0-false-sharing/</link>
      <pubDate>Sat, 24 May 2008 21:34:19 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-24-locality-%EA%B7%B8%EB%A6%AC%EA%B3%A0-false-sharing/</guid>
      <description>object님의 art.oriented 블로그에서 얼마 전에 false-sharing이 일어날 경우에 성능이 떨어지는 것에 관해 퀴즈를 내고 / 정답과 설명을 한 적이 있다. 퀴즈에서는 false-sharing이 아주 극단적으로 일어나는 경우를 보여주고, 실제 실행시켜보면 성능이 크게 떨어지는 것을 확인할 수 있다 — 물론 multi-core CPU 여야 하지만 :)
False-sharing 은 현대의 멀티코어 CPU가 메모리에서 데이터를 읽어올 때 Word 단위 (=native int 의 크기) 로 읽어오는게 아니라, 메모리 I/O의 효율성을 위해 cache에 저장하는 단위1 로 읽어오면서 생기는 문제다.</description>
    </item>
    
    <item>
      <title>리뷰: 소프트웨어, 누가 이렇게 개떡같이 만든거야</title>
      <link>https://rein.kr/posts/2008-05-22-%EB%A6%AC%EB%B7%B0-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EB%88%84%EA%B0%80-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EA%B0%9C%EB%96%A1%EA%B0%99%EC%9D%B4-%EB%A7%8C%EB%93%A0%EA%B1%B0%EC%95%BC/</link>
      <pubDate>Thu, 22 May 2008 09:24:39 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-22-%EB%A6%AC%EB%B7%B0-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EB%88%84%EA%B0%80-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EA%B0%9C%EB%96%A1%EA%B0%99%EC%9D%B4-%EB%A7%8C%EB%93%A0%EA%B1%B0%EC%95%BC/</guid>
      <description>https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=2000590
원제는 &amp;ldquo;Why Software Sucks&amp;rdquo;.
표지에서 보이는 장면처럼 상당히 유쾌(?)하고 읽기 편한 책이었다.
저자가 컨설턴트/연사/엔지니어이긴 하지만 SW 엔지니어 관점이 아니라 일반 사용자의 관점에서 &amp;ldquo;왜 소프트웨어가 이렇게 사용하기 힘든가?&amp;rdquo; 에 관해서 분석하고, SW 엔지니어들이 흔히 착각하는 것, 실수하는 것, _그리고 하지 말아줬으면 하는 것_들에 관해서 설명하고 있다.
우선 사용자 인터페이스에 관해서 설명한 부분이 맘에 들었는데,
사용자가 뭔가 하려고 한다면 그게 뭔가 엄청난 문제를 불러일으키는 / 혹은 파괴적인 행동 이 아닌 이상 바로 할 수 있게 하라 — 즉 pop-up 같은 거 띄워도 물어보지 말아 사용자의 행동에 대해서 undo / 되돌리기 기능을 지원하라.</description>
    </item>
    
    <item>
      <title>잡담: 2008년 5월 20일</title>
      <link>https://rein.kr/posts/2008-05-20-%EC%9E%A1%EB%8B%B4-2008%EB%85%84-5%EC%9B%94-20%EC%9D%BC/</link>
      <pubDate>Tue, 20 May 2008 23:07:45 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-20-%EC%9E%A1%EB%8B%B4-2008%EB%85%84-5%EC%9B%94-20%EC%9D%BC/</guid>
      <description>어떤 디버깅 &amp;lt;rein_&amp;gt; 덤프도 없이 &amp;lt;rein_&amp;gt; 미니덤프 로그랑 &amp;lt;rein_&amp;gt; (덤프도아님) &amp;lt;rein_&amp;gt; 모듈 주소정보랑 &amp;lt;rein_&amp;gt; 해당 리비젼 빌드한 맵파일만 가지고 &amp;lt;rein_&amp;gt; 추측디버깅중(…) &amp;lt;rein_&amp;gt; + 재연안됨 &amp;lt;rein_&amp;gt; orz &amp;lt;zzl&amp;gt; *이건 뭐 실진맥도 아니고* 결국 제대로 된 덤프를 남기게 변경했지만, 여튼 서버 코드를 내 손에서 한참 벗어난 곳에서 디버깅해야할 줄은. 이건 다 경험 문제겠지.
문제 찾기 육체적인 문제에서 정신적인 문제 영역으로 갈 수록, 잘하는 사람과 그렇지 않은 사람의 격차는 확연이 벌어진다. 그렇지만 그 격차가 충분히 유의미하지 않을 수도 있는 새내기(…)들의 영역에서 적당한 문턱값을 갖는 문제를 찾는다는 건 참 애매한듯 -_-;; 그런 의미에서 su-doku가 참 좋은데 이건 웹 여기저기에 너무 많은 해답이 알려져 있다.</description>
    </item>
    
    <item>
      <title>논문 읽기: C/S 혹은 P2P 구조에서 치팅을 막는 동기화 방법</title>
      <link>https://rein.kr/posts/2008-05-19-%EB%85%BC%EB%AC%B8-%EC%9D%BD%EA%B8%B0-cs-%ED%98%B9%EC%9D%80-p2p-%EA%B5%AC%EC%A1%B0%EC%97%90%EC%84%9C-%EC%B9%98%ED%8C%85%EC%9D%84-%EB%A7%89%EB%8A%94-%EB%8F%99%EA%B8%B0%ED%99%94-%EB%B0%A9%EB%B2%95/</link>
      <pubDate>Mon, 19 May 2008 22:43:28 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-19-%EB%85%BC%EB%AC%B8-%EC%9D%BD%EA%B8%B0-cs-%ED%98%B9%EC%9D%80-p2p-%EA%B5%AC%EC%A1%B0%EC%97%90%EC%84%9C-%EC%B9%98%ED%8C%85%EC%9D%84-%EB%A7%89%EB%8A%94-%EB%8F%99%EA%B8%B0%ED%99%94-%EB%B0%A9%EB%B2%95/</guid>
      <description>뭔가 내가 아는게 부족하기도 하고, 좀 제대로 알 필요가 생겨서 GPG 3권부터 시작해서 논문과 아티클을 훑어보는 중. 그 작업 중 일부로 읽었던 논문을 간략히 소개하겠다.1
원제로
N. Baughman, M. Liberatore and B. Levine, “Cheat-Proof Playout for Centralized and Peer-to-Peer Gaming,” Feb. 2007, IEEE/ACM Transactions on Networking
실제로는 2001년 INFOCOM에도 냈던 논문의 연장선인데2, 다루는 내용은 크게 세가지.
현존하는 동기화 방식의 문제 흔히 사용하게 되는 lock-step (frame-locking)과 bucket syncrhonization에 대해서 초점을 맞추고 얘기하고 있다.</description>
    </item>
    
    <item>
      <title>잡담: 2008년 5월 18일</title>
      <link>https://rein.kr/posts/2008-05-18-%EC%9E%A1%EB%8B%B4-2008%EB%85%84-5%EC%9B%94-18%EC%9D%BC/</link>
      <pubDate>Sun, 18 May 2008 21:20:10 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-18-%EC%9E%A1%EB%8B%B4-2008%EB%85%84-5%EC%9B%94-18%EC%9D%BC/</guid>
      <description>일반사용자를 위한 프로그래밍 내가 지금까지 작성한 프로그램들은 크게 — toy program을 빼면 — 대략,
*nix 쉘에서 동작하는 스크립트 류 — 시스템 관리나, 다른 작업 보조용 데이터를 관리하기 위한 웹페이지 — 아주 간단한 블로깅 툴…비슷한 것도 짰지만; 시뮬레이션 툴들 벤치 마크 네트웍 연결을 처리하는 서버 프로그램들 정도일텐데, 생각해보니 보통 사람이 쓸 법한 녀석은 하나도 없구나 하는 생각이 든다.
&amp;ldquo;소프트웨어, 누가 이렇게 개떡 같이 만든 거야&amp;rdquo; 읽다가 또 다시 든 생각인데, 내가 짜는/짜왔던 프로그램들은 대상이 프로그래머라서 괜찮았던건가 하는 느낌이 팍팍.</description>
    </item>
    
    <item>
      <title>프로그래머란</title>
      <link>https://rein.kr/posts/2008-05-17-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EB%9E%80/</link>
      <pubDate>Sat, 17 May 2008 19:44:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-17-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EB%9E%80/</guid>
      <description>혹은 SW 엔지니어란건, ((Num3rs 2시즌 18화 All&amp;rsquo;s Fair 에서 캡쳐. 전산이나 수학 전공자가 보고 있다보면 (어이없어서) 웃게 되는 얘기가 꽤 있지만, 그래도 나름대로 재밌게 보고있는 드라마.))
…인 사람이 아니라,
…인 사람이란 느낌. 근데 후자가 훨씬 재밌지 않나요
&amp;ldquo;소프트웨어, 누가 이렇게 개떡 같이 만든거야; why software sucks&amp;rdquo; 가 오늘 도착해서 읽는 중인데 초반부에 나오는
수동 변속기가 달린 차를 구매할 생각이 있냐?
라는 질문에 프로그래머들은 평균적으로 60% 이상, 그렇지 않은 사람 중엔 1/8 정도가 그렇다고 답한다는 것, 그래서 프로그래머들이 보통 사람이 쓰기 힘든 프로그램을 만드는 경우가 많다고 설명하는 부분이랑 뭔가 비슷한 느낌;</description>
    </item>
    
    <item>
      <title>WordPress 편집기의 새 기능: 문서 버젼 간 비교</title>
      <link>https://rein.kr/posts/2008-05-15-wordpress-%ED%8E%B8%EC%A7%91%EA%B8%B0%EC%9D%98-%EC%83%88-%EA%B8%B0%EB%8A%A5-%EB%AC%B8%EC%84%9C-%EB%B2%84%EC%A0%BC-%EA%B0%84-%EB%B9%84%EA%B5%90/</link>
      <pubDate>Thu, 15 May 2008 10:29:10 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-15-wordpress-%ED%8E%B8%EC%A7%91%EA%B8%B0%EC%9D%98-%EC%83%88-%EA%B8%B0%EB%8A%A5-%EB%AC%B8%EC%84%9C-%EB%B2%84%EC%A0%BC-%EA%B0%84-%EB%B9%84%EA%B5%90/</guid>
      <description>WordPress 에서는 포스팅을 자동으로 저장해주는 기능이 있기도하고, 이전에 작성했던 포스팅이나 페이지를 수정할 수도 있다. 그러면 이 개별 저장한 문서들을 &amp;ldquo;revision 몇 번&amp;rdquo; 이라고 부르는데 이런 revision1 간의 비교 기능이 WordPress 편집기에 추가되었다. 다만 아직 일반 사용자들이 접근하는 곳에서 제공되는 것은 아니고 2.6 test-branch 2 를 사용하고 있는 테스터들만 볼 수 있는 화면이다. 물론 테스터는 아무나 할 수 있기 때문에 미리 받아서 사용할 수 있긴하다 :p
일단 스샷. 어제 오전에 작성했던 글을 오후에 좀 손봤는데, 그 자국이 남아있다.</description>
    </item>
    
    <item>
      <title>WinZip 의 Unicode 지원 시작</title>
      <link>https://rein.kr/posts/2008-05-14-winzip-%EC%9D%98-unicode-%EC%A7%80%EC%9B%90-%EC%8B%9C%EC%9E%91/</link>
      <pubDate>Wed, 14 May 2008 09:01:28 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-14-winzip-%EC%9D%98-unicode-%EC%A7%80%EC%9B%90-%EC%8B%9C%EC%9E%91/</guid>
      <description>미카엘 카플란1의 블로그에서 WinZip이 Unicode를 지원하기 시작–할 예정 — 한다는 포스팅을 읽었다.
흔한 현존하는 압축 파일 포맷 중 가장 흔한 것은 .zip, .rar, .gz, .bz2, .7z 정도이다. 이 중에서 .bz2와 .gz 는 단일 파일을 압축하기 위한 것이라 다국어 지원을 좀 빼고 생각하면2, archiving 기능이 있는 .zip, .rar, .7z 중에 공식적으로 Unicode 를 지원하는 것은 .7z 와 .rar 뿐이었다.
예전에 .zip 과 .rar 을 비교하면서, .zip 도 RAR 흉내를 내면 상대적으로 손쉽게 유니코드를 지원할 수 있을 것 같다고 말했었는데 완전히 같은 방식은 아니겠지만,3, 유니코드 지원이 없어서 다른 코드 페이지의 MS Windows 혹은 다른 인코딩의 *nix-like OS 에서 묶어온 파일들의 압축을 풀 때마다 괴로워했던 일이 이젠 없어지게 될지도 모른다.</description>
    </item>
    
    <item>
      <title>ASUnit 사용기</title>
      <link>https://rein.kr/posts/2008-05-13-asunit-%EC%82%AC%EC%9A%A9%EA%B8%B0/</link>
      <pubDate>Tue, 13 May 2008 21:22:33 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-13-asunit-%EC%82%AC%EC%9A%A9%EA%B8%B0/</guid>
      <description>이름만으로도 반쯤 알 수 있는 프레임웍 — ActionScript (2.0, 3.0 모두 지원) 기반의 xUnit 류의 유닛테스트 프레임웍이다.
몇 일간 써본걸 토대로 간략히 장단점을 논하자면.
장점 xUnit 류의 인터페이스라는 것. 덕분에 xUnit 계통을 다른 언어에서 써본 사람이라면 일단 한 번만 전체 구성이 나오면, 별 어려움없이 바로 사용할 수 있다. setUp(), test테스트이름(), tearDown() 으로 이어지는 테스트 준비, 개별 테스트, 테스트 뒷처리의 형태는 일단 익숙하고 / 바로 사용할 수 있어서 상당한 장점이라고 생각한다.1</description>
    </item>
    
    <item>
      <title>ActionScript: Shock and awe</title>
      <link>https://rein.kr/posts/2008-05-09-actionscript-shock-and-awe/</link>
      <pubDate>Fri, 09 May 2008 19:38:33 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-09-actionscript-shock-and-awe/</guid>
      <description>C…더 이상 이 주제로 글을 쓰고 있지만 아마도, 그리고 기원하건데 마지막 글일 듯.
지역 변수의 스코프 문제 지역 변수의 선언이 유효한 범위(local variable scope) 가 굉장히 괴악하다. 다음은 너무나도 적절한 mtasc.com에서 제시하는 예제.
function f() { var x = 1; if (true) { var x = &amp;#34;hello&amp;#34;; // ... } trace(x+1); } trace 의 결과가1 좀 충격적이다. 일반적인 프로그래밍 언어2에 익숙한 사람이라면 출력되는 결과를 &amp;ldquo;2&amp;rdquo; 라고 생각할 것이다.
하지만 결과는 hello1 … 생각없이 짜다 또 한 방 먹었고 Orz</description>
    </item>
    
    <item>
      <title>ActionScript – 개발환경을 정말 이렇게 밖에 못 만드나</title>
      <link>https://rein.kr/posts/2008-05-06-actionscript-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD%EC%9D%84-%EC%A0%95%EB%A7%90-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EB%B0%96%EC%97%90-%EB%AA%BB-%EB%A7%8C%EB%93%9C%EB%82%98/</link>
      <pubDate>Tue, 06 May 2008 14:47:23 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-05-06-actionscript-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD%EC%9D%84-%EC%A0%95%EB%A7%90-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EB%B0%96%EC%97%90-%EB%AA%BB-%EB%A7%8C%EB%93%9C%EB%82%98/</guid>
      <description>앞에서 언급한 것 처럼 ActionScript 를 가지고 삽질 중.
ActionScript 파일 (.as) 들을 묶어서 클라이언트 응용을 띄우고, 서버 응용과 통신을 하게 되는데 (XML 교환이 가능) 이게 좀 가관이다. 앞에서 말한 &amp;ldquo;오프라인으로 FlashPlayer 를 설정할 수 없는 문제&amp;quot;를 차치하고라도, 단 하나의 클라이언트-서버 연결을 테스트하기 위해 다음과 같은 것이 필요하다.
클라이언트 응용이 컴파일된 .swf 파일 혹은 이에 해당하는 바이너리 — 내 경우엔 mtasc로 컴파일한 .swf .swf 를 서비스할 웹 서버 — 서버와 통신하려면 이 수단 밖엔.</description>
    </item>
    
    <item>
      <title>메신저 서버를 만든다면</title>
      <link>https://rein.kr/posts/2008-04-30-%EB%A9%94%EC%8B%A0%EC%A0%80-%EC%84%9C%EB%B2%84%EB%A5%BC-%EB%A7%8C%EB%93%A0%EB%8B%A4%EB%A9%B4/</link>
      <pubDate>Wed, 30 Apr 2008 18:39:22 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-04-30-%EB%A9%94%EC%8B%A0%EC%A0%80-%EC%84%9C%EB%B2%84%EB%A5%BC-%EB%A7%8C%EB%93%A0%EB%8B%A4%EB%A9%B4/</guid>
      <description>후배 d* 가 물어본 질문.
d | d | 질문 d | 메신저를 개발한다고 했을 때 d | 염두에 둬야 할 점은 뭐가 있을까요? d | 음… 일단 다른 메신저의 소스는 구해놨고, 네트워크 좀 더 공부해야 하려나… …여기에 대한 몇몇 의견.
p | 부가기능 어디까지 지원하나요 d | 그냥 노멀하고 스탠다드한 메신저라고 가정하지요. p | 파일전송이 되냐 안되냐, 게임(…)이 되냐 안 되냐에 따라서 p | 레이어가 차이가 있을 것 같지만 p | 저도 네트워크를 잘 아는 건 아니므로 ㅃ | 1:1 대화에서 다대다 대화가 될 경우를 염두에 두면 좋지 않을까 내 경우에는 보통 이런 결정을 내린다 — 특히 개발 기간이 짧아야 한다거나 한 경우에는 더더욱.</description>
    </item>
    
    <item>
      <title>PV와 댓글의 상관관계</title>
      <link>https://rein.kr/posts/2008-04-26-pv%EC%99%80%EB%8C%93%EA%B8%80%EC%9D%98-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84/</link>
      <pubDate>Sat, 26 Apr 2008 22:00:53 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-04-26-pv%EC%99%80%EB%8C%93%EA%B8%80%EC%9D%98-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84/</guid>
      <description>지난 수 개월간의 page view (PV)
하지만 그 기간 동안 댓글은,
PV가 1/3 정도인 달에 비해 거의 늘어나지 않는다[…..]
사실 상 상관이 없는듯</description>
    </item>
    
    <item>
      <title>Test, Fixture and Persistency</title>
      <link>https://rein.kr/posts/2008-04-25-test-fixture-and-persistency/</link>
      <pubDate>Fri, 25 Apr 2008 22:43:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-04-25-test-fixture-and-persistency/</guid>
      <description>이번 주에 프로그래밍 하면서 제일 괴로웠던 부분.
일종의 비동기 작업을 실행하는 class 가 있는데, 이 녀석을 test-framework 이랑 같이 쓰는 부분에서 문제가 산적 Orz.
DLL과 TLS 문제 사실 이건 비동기라서 터진건 아니지만, 내부적으로 사용된 Windows의 __declspec(thread) 선언이 테스트가 DLL로 링크되서 실행된다는 면에서 터져서 (원본이야 그냥 실행 바이너리지만…) 일단 테스트 방법 자체를 뒤집어 엎었고..
비동기 문제 연초에 테스트를 어떻게 할지 생각하면서 내린 결정 중에, &amp;ldquo;동기화 객체들은 테스트 프레임웍이 관리하고 / 싱글 스레드로 동작해도 옳은 결과가 나온다&amp;quot;가 있다.</description>
    </item>
    
    <item>
      <title>MSBuild로 suffix rule 흉내내기</title>
      <link>https://rein.kr/posts/2008-04-24-msbuild%EB%A1%9C-suffix-rule-%EB%94%B0%EB%9D%BC%ED%95%98%EA%B8%B0/</link>
      <pubDate>Thu, 24 Apr 2008 23:31:26 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-04-24-msbuild%EB%A1%9C-suffix-rule-%EB%94%B0%EB%9D%BC%ED%95%98%EA%B8%B0/</guid>
      <description>Microsoft VisualStudio 2005 / .net Framework 2.0과 함께 배포되기 시작한 빌드 유틸리티로 MSBuild란 녀석이 있다. MS의 악명높은(…) 커맨드라인 빌드 유틸리티인 nmake를 대체하려는 목적도 포함한 녀석이다.
뭐 이 얘기를 다 하려는 것은 아니고 내가 프로그래밍을 시작했던 *nix환경에는 make라는 command-line 툴로 대부분의 빌드 작업이 이루어진다. 그 기능 중에 하나가 suffix rule이란 건데, 파일 확장자를 보고 일련의 법칙을 따라 자동으로 빌드를 수행하는 녀석이다.
간단하게 C source코드를 컴파일하는 규칙1은 이런 식이다.2
.SUFFIXES : .o .</description>
    </item>
    
    <item>
      <title>UPnL Workshop: Introduction to Concurrent Programming</title>
      <link>https://rein.kr/posts/2008-04-20-upnl-workshop-introduction-to-concurrent-programming/</link>
      <pubDate>Sun, 20 Apr 2008 23:49:05 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-04-20-upnl-workshop-introduction-to-concurrent-programming/</guid>
      <description>9회차의 UPnL 워크샵 발표 자료. 처음으로 Apple Keynote를 써봤는데, 대학원 2년 동안 빡쎄게 썼던 MS 파워포인트보다/OOo Impress보다 나름대로 인터페이스도 편하고 템플릿도 적당한듯하고, 전체적으로 괜찮았다 — 템플릿에서 고른 해상도가 와이드 모니터 기준으로되서 4:3 해상도였던 프로젝터에서 좀 꽝이었던 것만 빼면 Orz
발표한 주제는 Concurrent programming에 대한 간략한 소개.
프리젠테이션 내용을 간략히 설명하자면, 이쪽 문제들 중에 가장 간단한 것 — data-parallelism을 써먹을 수 있는 것 — 을 골라서 예제로 썼다. 2D 이미지에서 median filter를 적용시키는 문제를 설명했는데, &amp;ldquo;이런 과정으로 구현했다&amp;ldquo;는 것을 보였다.</description>
    </item>
    
    <item>
      <title>입사시험에서 보게 됨직한 것들</title>
      <link>https://rein.kr/posts/2008-04-16-%EC%9E%85%EC%82%AC%EC%8B%9C%ED%97%98%EC%97%90%EC%84%9C-%EB%B3%BC%EB%A7%8C%ED%95%9C-%EA%B2%83%EB%93%A4/</link>
      <pubDate>Wed, 16 Apr 2008 21:56:25 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-04-16-%EC%9E%85%EC%82%AC%EC%8B%9C%ED%97%98%EC%97%90%EC%84%9C-%EB%B3%BC%EB%A7%8C%ED%95%9C-%EA%B2%83%EB%93%A4/</guid>
      <description>…이 뭐가 있을까하는 중.
어제 저녁에 Azyu 님이 NHN 공채 pre-test를 본다고 뭐가 나올 것 같냐고 물으시길래 내가 봤던 시험 얘기, rica, 아사 등등의 얘기가 나왔었다.
대충 C/C++ 관련된 얘기로 나온게, (그러니까 이건 총집편)
extern &amp;ldquo;C&amp;quot;의 의미 C++으로 swap 짜기1 virtual 함수의 의미 가상 소멸자의 필요성 or 가상 생성자가 불가능한 이유 binary search2 문자열 뒤집기 (이건 C문제?) 이 정도였는데. 사실 이거 Effective C++ 만 정독해도 다 풀수있는데 이런 문제로 걸러낼 수 있다는건 전반적인 C/C++ 지식 없이 사회에 나오게 된다는 소리 같은데3.</description>
    </item>
    
    <item>
      <title>바뀐 병역특례법 관련 잡담</title>
      <link>https://rein.kr/posts/2008-04-13-%EB%B0%94%EB%80%90-%EB%B3%91%EC%97%AD%ED%8A%B9%EB%A1%80%EB%B2%95-%EA%B4%80%EB%A0%A8-%EC%9E%A1%EB%8B%B4/</link>
      <pubDate>Sun, 13 Apr 2008 23:15:35 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-04-13-%EB%B0%94%EB%80%90-%EB%B3%91%EC%97%AD%ED%8A%B9%EB%A1%80%EB%B2%95-%EA%B4%80%EB%A0%A8-%EC%9E%A1%EB%8B%B4/</guid>
      <description>후배인 *t군과 저녁을 먹다가 나눈 얘기 한 토막
*t 가 이번에 산업기능요원을 시작했는데, 시작하기까지 우여곡절이 좀 있더랬다.
작년(2007년) 하반기 병특을 노렸으나 (3학기 다닌 상태로 오모사에서 일했음) 싸이 사건이 터지면서 IT쪽 산업기능요원 TO가 안나왔음 올 상반기 초반까지 일하다가 결국 학교근처이 ㅇ 모회사에서 TO준다고 일하기 시작. 이건 싸이사건 반년 후부터 다시 나오기시작한 TO 그러나 바뀐 법에선 해당 전공 _4학기 이상 등록_을 요구함. 이건 싸이 사건 이후 바뀐 사항 중 하나 하지만 4학기 등록을 하면 산업기사 자격이 필요.</description>
    </item>
    
    <item>
      <title>Concurrent programming을 시작하는 단계</title>
      <link>https://rein.kr/posts/2008-04-13-concurrent-programming%EC%9D%84-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%8B%A8%EA%B3%84/</link>
      <pubDate>Sun, 13 Apr 2008 23:06:23 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-04-13-concurrent-programming%EC%9D%84-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%8B%A8%EA%B3%84/</guid>
      <description>GPG 스터디 포럼에 이런 글 — 멀티코어에서 동기화관련 고민 — 이 올라왔다.(제목이랑 좀 관련이 적긴하다)
질문자의 반응은 약간 뻘타고, 여기서 댓글들을 잘 읽어보자. (특히 multithreaded/concurrent 프로그래밍을 시작한다면) 내가 생각하기에 멀티스레드 프로그래밍을 처음 접하는 사람이 하는 가장 큰 실수는, 스레드가 2개 이상인 코드를 일단 짜는데에 있다. 싱글스레드도 쉽지 않다. 오류는 거의 거기서 나온다. 그리고 이게 멀티스레딩에서는 다른 오류와 섞이기 시작할 것이다. 대부분의 우리는 평범하다. 한 번에 하나의 문제만 해결하는게 한계다. 그런 의미에서 내가 생각하는 프로그래밍 방식은.</description>
    </item>
    
    <item>
      <title>Multi-core의 Concurrency를 위해선 멀티스레딩 뿐인가?</title>
      <link>https://rein.kr/posts/2008-04-10-concurrency%EB%A5%BC-%EC%9C%84%ED%95%B4%EC%84%A0-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9-%EB%BF%90%EC%9D%B8%EA%B0%80/</link>
      <pubDate>Thu, 10 Apr 2008 00:43:19 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-04-10-concurrency%EB%A5%BC-%EC%9C%84%ED%95%B4%EC%84%A0-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9-%EB%BF%90%EC%9D%B8%EA%B0%80/</guid>
      <description>답은 아니다라고 생각한다 — 실제 현실도 그런 것 같고. 명확히 정리된 생각은 아니지만, 어제~오늘 생각했던 얘기를 풀어보겠다. 응용에 따라선 다른 방식으로 하드웨어(특히 CPU)의 concurrency를 끌어다 쓸 수 있을 것 같으니.1
멀티코어 / 멀티 CPU 머신이 시대의 흐름인 것은 거의 확실하다. 적어도 앞으로 수 년 정도 범위에서 CPU 기술의 방향은,
메모리와의 통신 효율성 재고 — 현재 최대의 병목은 CPU – 메모리 통신이다 캐쉬 용량 증대 — 앞에서 말한 효율성의 개선 CPU 코어 수 증가 — CPU 클럭을 올리는게 힘들어지지만 당분간은 트랜지스터 수는 늘릴 수 있으니 이 쪽일 것이다 일 거라고 생각한다.</description>
    </item>
    
    <item>
      <title>리뷰: 수학의 사생활</title>
      <link>https://rein.kr/posts/2008-04-07-%EB%A6%AC%EB%B7%B0-%EC%88%98%ED%95%99%EC%9D%98-%EC%82%AC%EC%83%9D%ED%99%9C/</link>
      <pubDate>Mon, 07 Apr 2008 09:02:58 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-04-07-%EB%A6%AC%EB%B7%B0-%EC%88%98%ED%95%99%EC%9D%98-%EC%82%AC%EC%83%9D%ED%99%9C/</guid>
      <description>반쯤은 사이언티픽 아메리칸 북클럽 선정 도서라는 제목에 낚여서 산 책 – 그렇지만 즐겁게 읽을 수 있었으니 뭐.
처음의 1/6 정도의 내용이 정말로 재미가 없어서 괴로워하면서 봤는데, 후반의 절반 정도는 꽤나 재미있게 읽은듯하다.
처음 1/6 정도가 정말로 &amp;ldquo;수학자의 사생활&amp;quot;에 가까운 가십거리들 위주로 짜여져 있어서 Orz 를 외치고 있었는데, 후반부에는 어디서 줏어들었거나, 학교에서 배웠던(그런게 있다고(…)) 내용들이 적절히 나와주면서 수학과 공학, 그리고 우리가 사는 세계의 접점들이 적당히 언급되서 재밌게 읽을 수 있었다.
언급되는 문제 중에 기억나는게,</description>
    </item>
    
    <item>
      <title>log4cxx 0.10.0 released</title>
      <link>https://rein.kr/posts/2008-04-04-log4cxx-0100-released/</link>
      <pubDate>Fri, 04 Apr 2008 12:38:01 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-04-04-log4cxx-0100-released/</guid>
      <description>Apache Software Foundaion에서 진행하는 logger project중 한 갈래인 log4cxx &amp;ndash; C++를 위한 log4j port &amp;ndash; 가 릴리즈되었다.
이전 릴리즈였던 0.9.7버젼이 굉장히 오래된 녀석이고(4년 다되감), 이번이 첫 apache release이기도 해서 어서 나오길 기다리고 있었다. 일단 나왔으니 내가 사용하는 프로그래밍 환경들에서 각각 빌드해봐야할듯. 회사에서 사용중이던 log4cxx도 리비젼 따라가는걸 포기하고 중간 dev-snapshot1 을 썼었는데, 0.10.0으로 올려봐야할듯.
로거처럼 필요는 한데, 처음부터 만들기는 — 특히나 범용/멀티스레딩 지원이 되는 — 것은 좀 괴로운데, ASF처럼 믿음이 가는 소프트웨어 재단에서 만드는 걸 편하게 가져다 쓰는 것은 ((물론 Apache License가 상용 소프트웨어에서 쓰기 편하기도 하지만, 로거는 주로 서버 응용에서 써서, GPL이라도 큰 차이는 없긴하다)) 꽤나 즐거운 일이다 — 유지 보수에 신경을 덜 써도 되거든.</description>
    </item>
    
    <item>
      <title>C&#43;&#43; 0x 새소식 – lambda 와 closure</title>
      <link>https://rein.kr/posts/2008-03-30-c-0x-%EC%83%88%EC%86%8C%EC%8B%9D/</link>
      <pubDate>Sun, 30 Mar 2008 13:49:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-30-c-0x-%EC%83%88%EC%86%8C%EC%8B%9D/</guid>
      <description>Hurb Sutter의 블로그인 Sutter&amp;rsquo;s Mill에 이런 포스팅이 올라왔음
The ISO C++ committee met in Bellevue, WA, USA on February 24 to Mar 1. Here’s a quick summary of what we did (with links to the relevant papers to read for more details), and information about upcoming meetings.
Lambda functions and closures (N2550) For me, easily the biggest news of the meeting was that we voted lambda functions and closures into C++0x.</description>
    </item>
    
    <item>
      <title>Flash ActionScript 사용기 – 두번째 삽질</title>
      <link>https://rein.kr/posts/2008-03-29-flash-actionscript-%EC%82%AC%EC%9A%A9%EA%B8%B0-%EB%91%90%EB%B2%88%EC%A7%B8-%EC%82%BD%EC%A7%88/</link>
      <pubDate>Sat, 29 Mar 2008 18:45:07 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-29-flash-actionscript-%EC%82%AC%EC%9A%A9%EA%B8%B0-%EB%91%90%EB%B2%88%EC%A7%B8-%EC%82%BD%EC%A7%88/</guid>
      <description>아무리 현재 구현인 Flash 9 / ActionScript 3.0이 아니라지만 (Flash 8/ActionScript 2.0임) 이렇게 쓰기 괴로운 스크립트 언어는 처음이다. Python 을 처음 접했을 때 느꼈던 편안한 프로그래밍 같은 거랑은 거리가 멀다.
Class 는 무조건 별도의 파일로 .fla 에서 class 키워드를 썼더니 — 밑에서 언급하는 문제를 검사하려고 — class는 외부에 선언해라! 라는 오류 메시지만…
Class 는 하나의 파일에 1개만 x.as 에는 class x만 선언할 수 있다. (이름이 맞지 않으면 그것도 오류) 그리고 x.</description>
    </item>
    
    <item>
      <title>Flash ActionScript 사용기</title>
      <link>https://rein.kr/posts/2008-03-28-flash-actionscript-%EC%82%AC%EC%9A%A9%EA%B8%B0/</link>
      <pubDate>Fri, 28 Mar 2008 21:26:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-28-flash-actionscript-%EC%82%AC%EC%9A%A9%EA%B8%B0/</guid>
      <description>사용기라고 하니 뭔가 거창하지만, 오전에 Flash CS3 trial을 받고, 오후에 코드 제네레이터 초안까지 잡았으니 일단 사용기는 사용기.
C++과 통신할 수 있는 ActionScript 모듈을 만들어내는게 목표였는데, 사용하다 괴로운 점이 한 두가지가 아니었다.
약 타입 언어주제에 제한이 많다 완전히 동적 타입이라 사용하기 쉬운 것도 아니고, 그렇다고 함수형 언어의 강력한 정적 타입 검사랑은 비교도 안되는 주제에 이런 저런 안되는게 왜 그리 많은. 게다가 타입 지정이 기본도 아님. 타입을 지정하지 않고도 변수를 사용해도 되고, 경고도 없다.</description>
    </item>
    
    <item>
      <title>TCP 기반의 소켓 통신 101</title>
      <link>https://rein.kr/posts/2008-03-27-tcp-%EA%B8%B0%EB%B0%98%EC%9D%98-%EC%86%8C%EC%BC%93-%ED%86%B5%EC%8B%A0-101/</link>
      <pubDate>Thu, 27 Mar 2008 22:47:42 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-27-tcp-%EA%B8%B0%EB%B0%98%EC%9D%98-%EC%86%8C%EC%BC%93-%ED%86%B5%EC%8B%A0-101/</guid>
      <description>좀 더 명확히 하자면 production level code 101 이라고 해야겠지만.1
TCP가 믿을 수 있다고(reliable)하지만 이건 &amp;ldquo;연결이 살아있으면 언젠가는 전송될 수도 있다&amp;rdquo; 란 의미다.2 허술한 추상화에 속지 말 것 TCP 소켓에 send를 했을 때, 해당 함수 호출로만 전부다 전송될 거라고 절대로 믿지 말아라 — 반환값을 확인하고 적절한 처리를 해줘라3 TCP 소켓에서 recv를 했을 때는 반드시 버퍼링을 해야한다 — 절대로 특정 길이만큼은 올거라고 가정하지 말아라. 특정 길이보다 길게는 안 올거라고 믿어서도 안된다 얼마 전에 세번째 항목이 고려되지 않은 코드를 봐야했는데, 참 보고있기 괴로웠다.</description>
    </item>
    
    <item>
      <title>알라딘 해외도서 배송 리뷰</title>
      <link>https://rein.kr/posts/2008-03-25-%EC%95%8C%EB%9D%BC%EB%94%98-%ED%95%B4%EC%99%B8%EB%8F%84%EC%84%9C-%EB%B0%B0%EC%86%A1-%EB%A6%AC%EB%B7%B0/</link>
      <pubDate>Tue, 25 Mar 2008 10:48:56 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-25-%EC%95%8C%EB%9D%BC%EB%94%98-%ED%95%B4%EC%99%B8%EB%8F%84%EC%84%9C-%EB%B0%B0%EC%86%A1-%EB%A6%AC%EB%B7%B0/</guid>
      <description>구입한 책이 아니라 알라딘의 해외도서 배송 자체에 대한 사용기.
올해 1월에 알라딘에서 해외도서 구입을 아주 강력하게(?)밀고나가기 시작했는데, 반송이나 환불같은건 안받아봐서 정확히 어떻게 동작하는지 모르겠지만, 3달간 써본봐로는 일단 합격점을 줄 수 있을 것 같다.
1월~3월초까지 총 3권의 원서를 주문했고, 3번다 예정시간 혹은 그 보다 1~3일 정도 일찍 책을 받아볼 수 있었다. 알라딘에서 고지하고 있는 &amp;ldquo;업무일 7일 이내 배송&amp;quot;은 모두 지켜진셈.
1월 29일 저녁에 주문한 Windows via C/C++는 2/11일 한국에 도착할 예정이었으나 2/5일에 도착.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;: 객체를 생성해낸다는 것</title>
      <link>https://rein.kr/posts/2008-03-25-c-%EA%B0%9D%EC%B2%B4%EB%A5%BC-%EC%83%9D%EC%84%B1%ED%95%B4%EB%82%B8%EB%8B%A4%EB%8A%94-%EA%B2%83/</link>
      <pubDate>Tue, 25 Mar 2008 00:52:03 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-25-c-%EA%B0%9D%EC%B2%B4%EB%A5%BC-%EC%83%9D%EC%84%B1%ED%95%B4%EB%82%B8%EB%8B%A4%EB%8A%94-%EA%B2%83/</guid>
      <description>&lt;p&gt;C++에서 객체를 &lt;strong&gt;생성&lt;/strong&gt;한다는 것은 크게 2 단계의 작업이 필요하다. 코드에선 이 두 연산이 하나의 구문처럼 보이지만 별개다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;객체를 저장하기 위한 메모리 공간을 확보하는 것&lt;/li&gt;
&lt;li&gt;객체 자체가 &amp;ldquo;초기화&amp;rdquo; 되는 것&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이렇게 두 가지이고, C++에서는 이 두 가지를 구분할 수 있는 문법적인 도구를 제공한다.&lt;/p&gt;
&lt;p&gt;예제로 사용하기 위해서, 이런 클래스가 하나 있다고 하자.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#586e75;background-color:#eee8d5;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859900&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#cb4b16&#34;&gt;Base&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#859900&#34;&gt;protected&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#859900;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#268bd2&#34;&gt;x&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#859900&#34;&gt;public&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#268bd2&#34;&gt;Base&lt;/span&gt;() {&lt;span style=&#34;color:#268bd2&#34;&gt;x&lt;/span&gt; = &lt;span style=&#34;color:#2aa198;font-weight:bold&#34;&gt;1&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#859900&#34;&gt;virtual&lt;/span&gt; ~&lt;span style=&#34;color:#268bd2&#34;&gt;Base&lt;/span&gt;() { }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#859900&#34;&gt;virtual&lt;/span&gt; &lt;span style=&#34;color:#859900;font-weight:bold&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#268bd2&#34;&gt;DoSomething&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#268bd2&#34;&gt;cout&lt;/span&gt; &amp;lt;&amp;lt; &lt;span style=&#34;color:#2aa198&#34;&gt;&amp;#34;Base:&amp;#34;&lt;/span&gt; &amp;lt;&amp;lt; &lt;span style=&#34;color:#268bd2&#34;&gt;x&lt;/span&gt; &amp;lt;&amp;lt; &lt;span style=&#34;color:#268bd2&#34;&gt;endl&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;메모리-할당--초기화를-동시에&#34;&gt;메모리 할당 + 초기화를 동시에&lt;/h4&gt;
&lt;p&gt;우선 두 단계가 &amp;ldquo;동시에&amp;rdquo; 일어나는 코드를 하나 보자.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Base* x = new Base();&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;new가 메모리를 할당해주고, Base() 함수가 데이터를 초기화한다.&lt;/p&gt;
&lt;h4 id=&#34;메모리-할당과-초기화를-분리&#34;&gt;메모리 할당과 초기화를 분리&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;전역 new 함수를 호출해서 메모리를 할당하고&lt;/li&gt;
&lt;li&gt;할당된 메모리에 초기화를 수행하는&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;예제를 하나 들어보면 이런 것.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#586e75;background-color:#eee8d5;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#268bd2&#34;&gt;Base&lt;/span&gt;* &lt;span style=&#34;color:#268bd2&#34;&gt;y&lt;/span&gt; = &lt;span style=&#34;color:#859900&#34;&gt;new&lt;/span&gt; (&lt;span style=&#34;color:#859900&#34;&gt;static_cast&lt;/span&gt;&amp;lt;&lt;span style=&#34;color:#268bd2&#34;&gt;Base&lt;/span&gt;*&amp;gt;(&lt;span style=&#34;color:#859900&#34;&gt;operator&lt;/span&gt; &lt;span style=&#34;color:#859900&#34;&gt;new&lt;/span&gt;(&lt;span style=&#34;color:#859900&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#268bd2&#34;&gt;Base&lt;/span&gt;)))) &lt;span style=&#34;color:#268bd2&#34;&gt;Base&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#93a1a1;font-style:italic&#34;&gt;// or equivalent allocation/initialzation
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#93a1a1;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#268bd2&#34;&gt;Base&lt;/span&gt;* &lt;span style=&#34;color:#268bd2&#34;&gt;p&lt;/span&gt; = &lt;span style=&#34;color:#859900&#34;&gt;static_cast&lt;/span&gt;&amp;lt;&lt;span style=&#34;color:#268bd2&#34;&gt;Base&lt;/span&gt;*&amp;gt;(&lt;span style=&#34;color:#859900&#34;&gt;operator&lt;/span&gt; &lt;span style=&#34;color:#859900&#34;&gt;new&lt;/span&gt;(&lt;span style=&#34;color:#859900&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#268bd2&#34;&gt;Base&lt;/span&gt;))); &lt;span style=&#34;color:#93a1a1;font-style:italic&#34;&gt;// 생성
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#93a1a1;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#859900&#34;&gt;new&lt;/span&gt; (&lt;span style=&#34;color:#268bd2&#34;&gt;p&lt;/span&gt;) &lt;span style=&#34;color:#268bd2&#34;&gt;Base&lt;/span&gt;(); &lt;span style=&#34;color:#93a1a1;font-style:italic&#34;&gt;// 초기화(생성자호출)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>성능평가의 비직관성</title>
      <link>https://rein.kr/posts/2008-03-20-%EC%84%B1%EB%8A%A5%ED%8F%89%EA%B0%80%EC%9D%98-%EB%B9%84%EC%A7%81%EA%B4%80%EC%84%B1/</link>
      <pubDate>Thu, 20 Mar 2008 22:01:23 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-20-%EC%84%B1%EB%8A%A5%ED%8F%89%EA%B0%80%EC%9D%98-%EB%B9%84%EC%A7%81%EA%B4%80%EC%84%B1/</guid>
      <description>거창한 얘기를 하려는 것은 아님. 일반론을 좀 벗어난 단순한 사례를 하나 소개해보겠다.
지난 주말에 intel 에서 제공하는 threading building block1 의 해쉬 맵(tbb::concurrent_hash_map)과, MS VS 2005에서 제공하는 해쉬 맵(stdext::hash_map)의 성능을 비교하려고 간단한 프로그램을 짜기 시작했다. 성능평가를 위해 테스트할 순서를 다음과 같이 정했다.
싱글 스레드에서 임의 삽입, 탐색으로 성능 비교 싱글 스레드에서 임의 삽입, 탐색. 다만 stdext::hash_map은 spin-lock을 하나 잡았다 놨다는 한다. 멀티 스레드에서 임의 삽입, 탐색으로 성능 비교 개략적으로 내가 원했던 것은,</description>
    </item>
    
    <item>
      <title>과학소설의 Big Three가 모두 떠나간 세계</title>
      <link>https://rein.kr/posts/2008-03-19-%EA%B3%BC%ED%95%99%EC%86%8C%EC%84%A4%EC%9D%98-big-three%EA%B0%80-%EB%AA%A8%EB%91%90-%EB%96%A0%EB%82%98%EA%B0%84-%EC%84%B8%EA%B3%84/</link>
      <pubDate>Wed, 19 Mar 2008 16:26:30 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-19-%EA%B3%BC%ED%95%99%EC%86%8C%EC%84%A4%EC%9D%98-big-three%EA%B0%80-%EB%AA%A8%EB%91%90-%EB%96%A0%EB%82%98%EA%B0%84-%EC%84%B8%EA%B3%84/</guid>
      <description>오늘부터 우리는 Science Fiction의 위대한 세명의 거장(Big Three) — 로버트 하인라인 (Rovert A. Heinlein), 아이작 아시모프 (Isaac Asimov), 그리고 아서 클라크 (Sir. Arthur C. Clarke) — 를 모두 잃어버린 세계에서 살게 되었습니다.1
2008년 3월 19일 보도로 마지막으로 살아있던 거장 아서 클라크가 스리랑카의 자택에서 사망하면서 이제 세 거장의 새로운 글들을 보게될 일은 앞으로 없겠군요. 무척 아쉬운 일입니다. 그의 상상력(특히나 HAL이라거나)은 지금의 rein이 존재하는데 — 특히 컴퓨터 공학을 전공하는데 — 상당한 영향을 줬습니다.</description>
    </item>
    
    <item>
      <title>WordPress 2.5 RC1 상태로 변경</title>
      <link>https://rein.kr/posts/2008-03-18-wordpress-25-rc1-%EC%83%81%ED%83%9C%EB%A1%9C-%EB%B3%80%EA%B2%BD/</link>
      <pubDate>Tue, 18 Mar 2008 17:39:19 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-18-wordpress-25-rc1-%EC%83%81%ED%83%9C%EB%A1%9C-%EB%B3%80%EA%B2%BD/</guid>
      <description>2.5 버젼의 경우 로드맵에 예정된 날짜는 3/17일. (물론 이것도 1주 연기된 것)
1시간 전 svn 로그에 이런게 있다.
이제 안정화 작업1 을 거치고 나면 새 버젼을 볼 수 있게되겠다.
Updated: 로드맵에 예정된 WP 2.5의 릴리즈가 3월 21로 연기되었다. 그때까지 RC 태그를 때어낼 수 있을까?
변경사항 초간단 요약 개발 블로그로부터 요약한 내용들 from http://wordpress.org/development/2008/03/25-sneak-peek/)
대쉬보드 설정 기능 여러 파일 동시 업로드 – 덤으로 이미지, 플래쉬, 팟 캐스팅 등을 관리하는 미디어 라이브러리 기능이 추가되었다 갤러리 기능 추가 (라이트박스 추방?</description>
    </item>
    
    <item>
      <title>리뷰: 어쌔신 크리드</title>
      <link>https://rein.kr/posts/2008-03-17-%EB%A6%AC%EB%B7%B0-%EC%96%B4%EC%8C%94%EC%8B%A0-%ED%81%AC%EB%A6%AC%EB%93%9C/</link>
      <pubDate>Mon, 17 Mar 2008 21:48:03 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-17-%EB%A6%AC%EB%B7%B0-%EC%96%B4%EC%8C%94%EC%8B%A0-%ED%81%AC%EB%A6%AC%EB%93%9C/</guid>
      <description>주말을 불태웠던 게임 어쌔신 크리드 (Assassin&amp;rsquo;s Creed)의 리뷰
톰 클랜시의 레인보우 식스, 고스트 리콘, … 그리고 파 크라이와 PS2로 리메이크된 (재창조된?) 페르시아 왕자1 그리고 레이맨의 제작사인 Ubisoft Montreal의 작품이다.
개인적으로는 페르시아 왕자 (PS2로 플레이했던) 의 기억을 떠올리며 구입한 게임이었는데, 초기 조작 빼고는 크게 유사하지는 않았다. 아무래도 전투/암살에 중점을 둔 어쌔신 크리드와 _퍼즐을 푸는 것 같은 이동에 중점을 둔 페르시아 왕자_의 차이일지도?
게임의 전반적인 느낌은 어제 포스팅한 것처럼 양키센스 닌자. (시노비의 닌자처럼 맥주병이기도 하고)</description>
    </item>
    
    <item>
      <title>프로그램이 동작한다고 믿으려면 무엇이 필요한가?</title>
      <link>https://rein.kr/posts/2008-03-14-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%B4-%EB%8F%99%EC%9E%91%ED%95%9C%EB%8B%A4%EA%B3%A0-%EB%AF%BF%EC%9C%BC%EB%A0%A4%EB%A9%B4-%EB%AC%B4%EC%97%87%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C%EA%B0%80/</link>
      <pubDate>Fri, 14 Mar 2008 22:42:33 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-14-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%B4-%EB%8F%99%EC%9E%91%ED%95%9C%EB%8B%A4%EA%B3%A0-%EB%AF%BF%EC%9C%BC%EB%A0%A4%EB%A9%B4-%EB%AC%B4%EC%97%87%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C%EA%B0%80/</guid>
      <description>제목은 거창하지만, 조엘 온 소프트웨어의 실질적인 2기라고 생각하는 조엘의 &amp;ldquo;소프트웨어 블로그 베스트 29선&amp;quot;을 다시 읽으면서 되새김질 하는 중에 쓴 글.
11번째로 실린 글은 Thinking in Java/C++ 의 저자이기도 한 브루스 에켈(Bruce Eckel)의 &amp;ldquo;타입검사와 테스트(Strong-type and Strong-testing)&amp;ldquo;다. 여기에서 주장하는 것은,
동적 타입 검사인지1 정적 타입 검사인지2는 중요하지 않다 프로그램의 동작에서 타입 검사가 차지하는 부분은 매우 작다 결국 프로그램의 신뢰성은 테스트로 보장해야 한다 라는 것들. C++도 그렇고, 타입검사가 그렇게 강점이라는 nML도 그렇고 타입 검사는</description>
    </item>
    
    <item>
      <title>Software 관련 잡담: 2008년 3월 13일</title>
      <link>https://rein.kr/posts/2008-03-13-software-%EA%B4%80%EB%A0%A8-%EC%9E%A1%EB%8B%B4-2008%EB%85%84-3%EC%9B%94-13%EC%9D%BC/</link>
      <pubDate>Thu, 13 Mar 2008 23:55:45 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-13-software-%EA%B4%80%EB%A0%A8-%EC%9E%A1%EB%8B%B4-2008%EB%85%84-3%EC%9B%94-13%EC%9D%BC/</guid>
      <description>WordPress 2.5 출시가 일주일 연기 전번 포스팅에 댓글로도 달아놨지만, 3월 10일에 출시될 예정이된 WP 2.5가 17일로 연기. 남은 티켓들을 처리하고 있지만, 17일까지 처리하기엔 좀 많지 않나 싶기도 하다. 그렇지만 열심히 작업하고 있을 커미터들에게 응원을.
관리자 페이지도 디자인이나 색감이 좀 바뀌어서 현재 개발 중인 버젼은 이런 상태다. 예정대로라면 몇 일 후엔 최종 버젼을 볼 수 있겠다. 원래 회색조였던 헤더 부분이 푸른 색 계통으로 바뀌고, 오렌지 색으로 나왔던 Right Now 부분도 푸른색 계통으로 변경 되었다.</description>
    </item>
    
    <item>
      <title>그들이 지켜보고 있다</title>
      <link>https://rein.kr/posts/2008-03-13-%EA%B7%B8%EB%93%A4%EC%9D%B4-%EC%A7%80%EC%BC%9C%EB%B3%B4%EA%B3%A0-%EC%9E%88%EB%8B%A4/</link>
      <pubDate>Thu, 13 Mar 2008 17:19:39 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-13-%EA%B7%B8%EB%93%A4%EC%9D%B4-%EC%A7%80%EC%BC%9C%EB%B3%B4%EA%B3%A0-%EC%9E%88%EB%8B%A4/</guid>
      <description>지난 달 말에 삼성 SDS에서 만든 보안 솔루션을 신나게 씹어대는 글 (인캅스 써도 소용없으니 도입하지 말라는 글)을 썼다. 그러고나니 그 글의 리퍼러 중 하나로 최근 블로고스피어에서 위명을 떨치는(?) 이름이 눈에 띄더라.
정확한 리퍼러 주소를 읽기 쉬운 형태로1 바꿔보면
http://samsung.net/service/ml/RecvController?cmd=detail msgno=166 foldername=Sent msguid=12758 subject=2008. 3. 13 LCD총괄 바이러스 뉴스레터 status=0 showOrg= receiverListStr=imailitsecurity.lcd@samsung.comIT보안 name=IT보안 선임/정보전략파트(LCD)/삼성전자 email=itsecurity.lcd@samsung.com date=2008-03-13 09:09 mtrkey=20080313000813187@itsecurity.lcd mailtype=personal recipientCnt=28 charset=euc-kr 같은게 되더라.
e-mail 에 있는 링크를 통해서 방문한 것이고, 받는 사람들은 삼성전자 정보전략파트(LCD총괄)의 IT 보안 선임들 (숫자는 아마 28명?</description>
    </item>
    
    <item>
      <title>테스트가 주는 안정감</title>
      <link>https://rein.kr/posts/2008-03-12-%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80-%EC%A3%BC%EB%8A%94-%EC%95%88%EC%A0%95%EA%B0%90/</link>
      <pubDate>Wed, 12 Mar 2008 21:51:04 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-12-%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80-%EC%A3%BC%EB%8A%94-%EC%95%88%EC%A0%95%EA%B0%90/</guid>
      <description>최근에 하고 있는 프로젝트(대충 12월?)에 사용하고 있는 서버 객체 중의 하나를 작성하고 있는데, 이 부분이 실제로 동작할 때 통신해야하는 다른 서버 객체(이하 객체랑 마구 혼용)가 4종류나 되서 아예 작정하고 가짜 객체(mock-object)를 사용한 TDD를 시험해보고 있다.
가짜 네트웍 레이어를 만들었다 네트웍 데이터를 큐잉해주고, 이걸 해당하는 서버 객체랑 연결해서 메시지를 전달하게 했다. 네트웍 특유의 비동기적인 상황이 싹 정리되고 나니
&amp;ldquo;내 네트웍 코드도 이랬으면 좋겠어!&amp;rdquo;
싶은 단순한 소켓 레이어가 나오더라. 여튼 그 녀석을 통해서 서버 객체를 연결하는 작업을 했다.</description>
    </item>
    
    <item>
      <title>pthread 프로그래머가 Win32에서 밟기 쉬운 지뢰 하나</title>
      <link>https://rein.kr/posts/2008-03-11-pthread-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EA%B0%80-win32%EC%97%90%EC%84%9C-%EB%B0%9F%EA%B8%B0-%EC%89%AC%EC%9A%B4-%EC%A7%80%EB%A2%B0-%ED%95%98%EB%82%98/</link>
      <pubDate>Tue, 11 Mar 2008 00:43:52 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-11-pthread-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EA%B0%80-win32%EC%97%90%EC%84%9C-%EB%B0%9F%EA%B8%B0-%EC%89%AC%EC%9A%B4-%EC%A7%80%EB%A2%B0-%ED%95%98%EB%82%98/</guid>
      <description>미리 밝혀두지만 rein이 정말 본격적으로 Windows 시스템 프로그래밍을 한 것은 작년 부터다. 그런 의미에서 겪었던 삽질 하나를 밝혀둔다.1
Linux system에서 널리 사용되는 posix thread (이하 pthread) 라이브러리의 가장 기본적인 동기화 메커니즘은 pthread_mutex_t 라는 타입으로 불리는 일종의 mutex다.2 이걸 쓰던 사람이 Windows의 CRITICAL_SECTION 이나 Win32 mutex를 사용할 때 가장 실수하기 쉬운 것.
Win32의 CRITICAL_SECTION이나 mutex는 recursive하게3 lock을 잡는 것을 허용한다.4
거꾸로 Win32 프로그래머가 linux pthread를 쓴다면 주의할 것,
pthread의 mutex는 기본적으로 recursive–locking을 허용하지 않는다</description>
    </item>
    
    <item>
      <title>WordPress 2.5의 때가 오고 있다</title>
      <link>https://rein.kr/posts/2008-03-10-wordpress-25%EC%9D%98-%EB%95%8C%EA%B0%80-%EC%98%A4%EA%B3%A0-%EC%9E%88%EB%8B%A4/</link>
      <pubDate>Mon, 10 Mar 2008 23:34:03 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-10-wordpress-25%EC%9D%98-%EB%95%8C%EA%B0%80-%EC%98%A4%EA%B3%A0-%EC%9E%88%EB%8B%A4/</guid>
      <description>2.5 마일스톤1 대충 due까지는 - 주 개발자들이 있는 시간대 중 가장 늦을 시간대인 - PDT기준으로 18시간 정도가 남았다. (Daylight Saving Time가 이제 시작이니 19시간이 맞나?)
많은 SW 프로젝트가 그렇듯이 - 그리고 이제까지의 WordPress 릴리즈들이 그랬던 것 처럼 - 대충 1주일 정도 늦어질 것이고, 남아있는 이슈 중 일부는 폐기되거나, 다음 릴리즈(2.6 이후)로 미뤄질 것이다. 어쨌든 아마 앞으로 일주일(내일~다음주 초) 안에는 2.5 버젼과, 2.5 버젼의 관리자 인터페이스를 보게 되지 않을까 한다.
이 참에 SW 릴리즈의 일반적인 진행에 관해 간단히 소개한다면 - 물론 내가 알고있거나, 학교/대학원에서 경험한게 주가 되겠지만 - 한 번의 SW 릴리즈에는 다음 의사 결정이 필요하다.</description>
    </item>
    
    <item>
      <title>병렬 혹은 멸망</title>
      <link>https://rein.kr/posts/2008-03-09-%EB%B3%91%EB%A0%AC-%ED%98%B9%EC%9D%80-%EB%A9%B8%EB%A7%9D/</link>
      <pubDate>Sun, 09 Mar 2008 13:03:46 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-09-%EB%B3%91%EB%A0%AC-%ED%98%B9%EC%9D%80-%EB%A9%B8%EB%A7%9D/</guid>
      <description>병렬 혹은 멸망(Parallel or Bust)라는 제목의 SD West 키노트.1
intel의 Reinders의 키노트를 간략히 요약하자면 (DDJ의 요약(?)도 간단하지만), 현재 우리는 기가 헤르츠(GHz)의 시대를 지나 멀티코어 시대로 진입했으며, 시장에 출시된 상태로는 현재 4-core CPU를 쓰고 있으며 곧 8-core CPU가 출시된다.2
이런 병렬화된 CPU를 써먹기 위해선 뭐가 준비되어야하는가?
Scaling Debugging Future Proofing 이 세 가지가 준비되어야한다. 이 중 가장 미묘한 부분이 첫번째 항목. 4코어에서 잘 최적화 되었다는게 8코어, 16코어 가도 그렇다는 보장은 없으며, 암달의 법칙에 따라 감소하는 이득을 생각할 때 — 특히나 병렬화 되는 부분이 작다면 — 특정 코어 수 이상에선 속도 향상이 없을 수 있다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43; 프로그래머의 일상: 2008년 3월 6일</title>
      <link>https://rein.kr/posts/2008-03-07-c-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-2008%EB%85%84-3%EC%9B%94-6%EC%9D%BC/</link>
      <pubDate>Fri, 07 Mar 2008 00:12:12 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-07-c-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-2008%EB%85%84-3%EC%9B%94-6%EC%9D%BC/</guid>
      <description>역시나 디버깅 일기.
Berryz WebShare – RAR 플러그인 디버깅 Berryz WebShare 에서 동작하는 RAR 플러그인의 디버깅을 했다. 사실 문제가 좀 마이너하고 간단한거였는데, RAR로 묶어서1 전송하는 플러그인이 있는데, 묶인걸 풀고보면 파일 시간이 이상하게 표시되는 것.
예를 들자면 2008-03-01 PM 04:42 에 수정된 파일이, 수정 시간 2010-10-28 AM 07:03 으로 나오는 것. RAR 포맷에 대한 정보를 확인해보니 답은 바로 나오더라.
RAR은 파일의 시간을 4bytes로 표시한다. 표시 형식은 DosDataTime 이라는 MS에서 정의한 형태다 이 포맷은 두 개의 16bit 값으로 이루어져 있다 (각각 날짜/시간).</description>
    </item>
    
    <item>
      <title>C&#43;&#43; 프로그래머의 일상: 모종의 디버깅</title>
      <link>https://rein.kr/posts/2008-03-02-c-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EB%AA%A8%EC%A2%85%EC%9D%98-%EB%94%94%EB%B2%84%EA%B9%85/</link>
      <pubDate>Sun, 02 Mar 2008 18:54:21 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-02-c-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%9D%98-%EC%9D%BC%EC%83%81-%EB%AA%A8%EC%A2%85%EC%9D%98-%EB%94%94%EB%B2%84%EA%B9%85/</guid>
      <description>Berryz WebShare의 RAR 다운로드 플러그인에서 생기던 버그를 수정하는데 성공. + 약간의 버그를 추가로 잡았음.
Format 문자열이 당신을 속일지라도 노여워 말라 vsnprinf_s를 이용해서 로그 문자열을 출력하는 코드가 있다. 이걸 래핑한 함수가
WriteLog(const char* fmt, ...); 처럼 생겼는데, 포맷 문자열인 fmt 값으로 HTTP 요청으로 들어온 URI를 넣는 부분이 있더라. (WriteLog(URI) 모양)
URI에 ASCII 영역을 벗어나는 문자가 있다면 이 문자는 &amp;ldquo;%e3%80%90…&amp;rdquo; 하는 모양이 된다. vsprinf 류의 함수들은 %s 처럼 %와 일부 영문자가 연속으로 오는 것을 어떤 &amp;ldquo;형식화된 출력&amp;rdquo; 문자로 간주한다.</description>
    </item>
    
    <item>
      <title>VisualStudio &#43; UnitTest&#43;&#43;에서 abort() 처리하기</title>
      <link>https://rein.kr/posts/2008-03-01-visualstudio-unittest%EC%97%90%EC%84%9C-abort-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0/</link>
      <pubDate>Sat, 01 Mar 2008 18:56:12 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-03-01-visualstudio-unittest%EC%97%90%EC%84%9C-abort-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0/</guid>
      <description>전에 포스팅했던 Native C++ 코드 테스팅의 문제에서 계속.
일단 내가 파악한 VS 자체가 죽어버리는 — 그래서 VisualUnitTest++ (이하 VUTPP)가 처리하지 못하는 — 코드는 abort() 뿐인 듯 하다.1 그래서 MSDN을 좀 들여다보고는 abort() 가 *nix 시스템들 처럼 SIGABRT를 전달하는 방법으로 구현되어있…는 것처럼 보이는 정보를 얻었다.
그래서,
abort() 를 호출하는 UnitTest++ TEST 를 만들고, SIGABRT를 처리하는 함수2를 단순히 std::exception(&amp;quot;CRT called abort()&amp;quot;) 를 던지는(throw) 함수로 작성 _set_abort_behavior(0, _WRITE_ABORT_MSG) 로 화면에 팝업(MessageBox)가 뜨는걸 방지 테스트를 실행 Bingo!</description>
    </item>
    
    <item>
      <title>막장 SW 리뷰: 삼성 SDS의 인캅스</title>
      <link>https://rein.kr/posts/2008-02-29-%EB%A7%89%EC%9E%A5-sw-%EB%A6%AC%EB%B7%B0-%EC%82%BC%EC%84%B1-sds%EC%9D%98-%EC%9D%B8%EC%BA%85%EC%8A%A4/</link>
      <pubDate>Fri, 29 Feb 2008 21:18:04 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-29-%EB%A7%89%EC%9E%A5-sw-%EB%A6%AC%EB%B7%B0-%EC%82%BC%EC%84%B1-sds%EC%9D%98-%EC%9D%B8%EC%BA%85%EC%8A%A4/</guid>
      <description>삼성 SDS에서 개발한 인캅스(INCOPS)라는 툴이 있다.[^1] 사내 보안용 솔루션의 탈을 쓰고 있지만 설명하는 기능 중 대부분(그것도 가장 중요한 것들)은 사실 상 의미가 없다. 그리고 시스템 사용자에겐 성능, 시스템 관리, 프로그램 개발 차원에서 여러가지 불이익을 안겨주는 프로그램이다. 그런 차원에서 간단히(?) 리뷰를 진행해보겠다.
문제점 많은 수의 개발툴들이 인캅스와 충돌한다. 주위에 이 솔루션(인캅스)를 도입한 회사에 다니는 사람이 있다면 좀 물어봐라. 내가 경험한, 혹은 알고 있는 것들은 이런 것들이다 (그렇지만 아직 해당 회사에 남아있거나 하는 사람이 있으니 직접적인 출처는 여기엔 안 쓰겠다)</description>
    </item>
    
    <item>
      <title>WordPress용 레몬펜 플러그인 업데이트</title>
      <link>https://rein.kr/posts/2008-02-28-wordpress%EC%9A%A9-%EB%A0%88%EB%AA%AC%ED%8E%9C-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8/</link>
      <pubDate>Thu, 28 Feb 2008 01:45:21 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-28-wordpress%EC%9A%A9-%EB%A0%88%EB%AA%AC%ED%8E%9C-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8/</guid>
      <description>전에 작성한 레몬펜 플러그인(LemonPen-Footer) 포스팅에 이런 레몬펜 쪽지가 달렸다.
&amp;ldquo;single page 일때만 보여주는 이유가 있나요?&amp;rdquo;
라는 것인데. 플러그인을 제작할 당시만 해도 paging되고있는 페이지 (예를 들어 https://rein.kr/page/2)인거랑 그냥 직접 포스팅을 접근한 거랑 레몬펜이 구분하질 못했다. 그래서 그냥 한 개의 포스팅이 나올 때만 레몬펜을 사용할 수 있게 설정했었다.
그 이후 오픈마루 스튜디오의 추가적인 작업으로 레몬펜 기능이 강화되었기 때문에, 서로 다른 URI에서 접근해도 같은 내용의 페이지를 인식하게 만들 수 있는 방법이 존재한다. 그런 의미에서(?</description>
    </item>
    
    <item>
      <title>VisualUnitTest&#43;&#43;: Native Code라서 겪는 문제</title>
      <link>https://rein.kr/posts/2008-02-27-visualunittest-native-code%EB%9D%BC%EC%84%9C-%EA%B2%AA%EB%8A%94-%EB%AC%B8%EC%A0%9C/</link>
      <pubDate>Wed, 27 Feb 2008 09:45:09 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-27-visualunittest-native-code%EB%9D%BC%EC%84%9C-%EA%B2%AA%EB%8A%94-%EB%AC%B8%EC%A0%9C/</guid>
      <description>계속해서 VisualUnitTest++을 사용 중. (이하 VUTPP라고 부르겠음)
내가 이해하는 작동 구조가,
Compiler.Preprocessor.Definition1에 특정 값(VUTPP_UNITTEST++)이 있는지 확인하고 있으면, 해당 프로젝트의 파일들을 해석해서 SUITE(), TEST() 매크로가 있나 확인하고, 전체 테스트를 실행하거나, 선택한 테스트를 실행하면, (빌드가 필요하면 빌드를 하고) VS AddIn으로 떠있던 VUTPP에서 DLL 파일을 링크 &amp;amp; 실행 실행 중에 적절한 callback을 호출해서 결과값을 받음 최종적으로 결과값(성공/실패여부 등등) 표시 인데, 4에 약간의 문제가 있다.
테스트되는 코드가 native C++이라 생기는 어쩔 수 없는 문제에 가까운 것인데.</description>
    </item>
    
    <item>
      <title>log4cxx 0.10 RC2 공개</title>
      <link>https://rein.kr/posts/2008-02-26-log4cxx-010-rc2-%EA%B3%B5%EA%B0%9C/</link>
      <pubDate>Tue, 26 Feb 2008 01:05:03 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-26-log4cxx-010-rc2-%EA%B3%B5%EA%B0%9C/</guid>
      <description>사용 중인 C++ 용 logging 라이브러리인 log4cxx에 대해 예전에 포스팅한 글에 질문이 붙어서 간만에 메일링을 좀 뒤졌다.1
2008년 2월 23일자 메일링에 이런게 있다.
log4cxx 0.10.0 RC2 is now available for review for release on the unofficial builds area. This release candidate is strictly provided for consideration for release, may be withdrawn and will be removed from the publication location at the conclusion of the voting period. RC2 is currently available at: &amp;hellip;</description>
    </item>
    
    <item>
      <title>2008-02-25: 할 일 목록</title>
      <link>https://rein.kr/posts/2008-02-25-2008-02-25-%ED%95%A0-%EC%9D%BC-%EB%AA%A9%EB%A1%9D/</link>
      <pubDate>Mon, 25 Feb 2008 09:30:51 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-25-2008-02-25-%ED%95%A0-%EC%9D%BC-%EB%AA%A9%EB%A1%9D/</guid>
      <description>WordPress용 레몬펜 플러그인에 어떤 페이지(is_home(), is_page(), is_single() … )에서 레몬펜을 사용할지 지정하는 옵션을 추가해야 책 관리용 페이지 작성 – python + sqlite로 쓱쓱 만들고 있는 중 Berryz WebShare RAR 플러그인이 특정 디렉토리 구조를 처리 못하는 문제 (everclear가 report) 처리 Safari에서 Berryz WebShare의 새 플러그인 인터페이스를 통해서 RAR 다운로드가 안되는 문제 Berryz WebShare 통계 페이지 리뉴얼 으 PHP 귀찮은 것 Orz / WebShare 관련 이슈가 많구나 Orz
왠지 이렇게 정리해놓고 자신을 채찍질하지 않으면 오래걸리게 될 것 같다[…]</description>
    </item>
    
    <item>
      <title>Windows Fiber API</title>
      <link>https://rein.kr/posts/2008-02-21-windows-fiber-api/</link>
      <pubDate>Thu, 21 Feb 2008 12:59:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-21-windows-fiber-api/</guid>
      <description>서버의 특정 부분에서 써보자는 얘기가 나와서 사실 관계랑 rein의 개인적인 견해를 정리.
Windows API에는 *nix 에서 user–level thread라고 부르기도하는 &amp;ldquo;fiber&amp;quot;에 대한 API가 존재한다. 사실 이 Fiber(섬유)란 단어 자체가 말장난이기도한데1, 크게 보면 다음과 같은 구성이 된다.2
각각이 별도의 메모리(=주소 공간)를 사용하는 프로세스;process 하나의 프로세스 안에서 메모리를 공유하는 스레드;thread들. 역시 하나의 프로세스 안에서 메모리를 공유하지만 스레드가 실행해줘야 돌아가는 fiber. 그리고 OS 커널;kernel의 관점에선 보이지 않는다.3 Fiber는 ::ConverThreadToFiber, ::CreateFiber, ::DeleteFiber, ::SwitchToFiber 등의 API를 통해서 제어되는데, 그 시작, 종료 그리고 **Fiber간의 contex-switching을 사용자가 조절할 수 있다(스케쥴링)**는 점에서 스레드랑 가장 차이가 난다.</description>
    </item>
    
    <item>
      <title>동시성 – 켄트 벡의 &#34;구현 패턴&#34;을 보던 중에</title>
      <link>https://rein.kr/posts/2008-02-20-%EB%8F%99%EC%8B%9C%EC%84%B1-%EC%BC%84%ED%8A%B8-%EB%B2%A1%EC%9D%98-%EA%B5%AC%ED%98%84-%ED%8C%A8%ED%84%B4%EC%9D%84-%EB%B3%B4%EB%8D%98-%EC%A4%91%EC%97%90/</link>
      <pubDate>Wed, 20 Feb 2008 22:55:25 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-20-%EB%8F%99%EC%8B%9C%EC%84%B1-%EC%BC%84%ED%8A%B8-%EB%B2%A1%EC%9D%98-%EA%B5%AC%ED%98%84-%ED%8C%A8%ED%84%B4%EC%9D%84-%EB%B3%B4%EB%8D%98-%EC%A4%91%EC%97%90/</guid>
      <description>원래는 어제 도착해야했을 책이지만 모종의 일로 하루 늦어져서 오늘 오전에 도착.
리뷰는 한참 뒤에나 쓸 것 같지만, 오늘 회사에서 점심시간에 잠깐 읽은 부분이 맘에 들어서 발췌.
내가 동시성 문제를 해결하는 방법은 언제나 동시성 문제를 지니고 있는 부분을 애플리케이션의 다른 부분과 분리시키는 것이었다. 이 방법을 통해 대부분의 동시성 문제를 해결할 수는 있으나, 나는 그에 대해 설명을 할 자신이 없다.
— 켄트 벡의 구현 패턴 1장
켄트 벡이 자기가 아는 것만 설명하겠다라고 말한 후에, 그런 이유에서 동시성(concurrency)에 대해서는 설명하지 않고 넘어간다라고 한다.</description>
    </item>
    
    <item>
      <title>잡상: 서버 코드 테스트 하기</title>
      <link>https://rein.kr/posts/2008-02-15-%EC%9E%A1%EB%8B%B4-%EC%84%9C%EB%B2%84-%EC%BD%94%EB%93%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%95%98%EA%B8%B0/</link>
      <pubDate>Fri, 15 Feb 2008 23:01:26 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-15-%EC%9E%A1%EB%8B%B4-%EC%84%9C%EB%B2%84-%EC%BD%94%EB%93%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%95%98%EA%B8%B0/</guid>
      <description>작년 여름까지 작성했던 서버를 테스트하는 코드들은 대부분 이런 형태였다
클라이언트 API들을 래핑하는 부분을 만들고, 래핑된 클라이언트 API들을 호출해서 서버의 특정 부분이 동작하게하고, 클라이언트 단에서 서버의 반응을 관찰해서 제대로 동작하는지 확인하는 형태 이 방법의 문제는,
실제로 가능한 서버의 상태(state) 수에 비해 클라이언트에서 목격? 할 수 있는 상태 수가 턱없이 작다 서버의 특정 버그를 고립시키기 힘들다. 혹은 서버의 특정 버그가 어느 코드 부근에서 나타나는지 확정하기 힘들다. 등등의 문제가 있다. 대충 떠오른게 이정도니 좀 더 있겠지?</description>
    </item>
    
    <item>
      <title>Windows Character Encoding: UCS2? UTF-16?</title>
      <link>https://rein.kr/posts/2008-02-12-windows-character-encoding-ucs2-utf-16/</link>
      <pubDate>Tue, 12 Feb 2008 23:40:07 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-12-windows-character-encoding-ucs2-utf-16/</guid>
      <description>예전에 문자집합;character-set 과 인코딩에 관해서 일련의 포스팅을 했다(#1, #2, #3). 그런데 어제부터 Windows via C/C++ 이란 책을 읽고있는데, 내가 잘못 알고 있던 부분을 발견해서 이전 포스팅에 대한 정정 포스팅.
Windows에서는 UCS-2 인코딩을 사용한다
라고 했었는데 사실이 아닙니다.
Windows는 2000과 그 이후의 버젼들에서 모두 UTF-16 기반으로 동작하며, 그 이전의 NT 커널들만 UCS-2 기반. 여튼 그런 연유로 저 둘을 다시 부연 설명하자면,
둘 다 기본적으론 글자당 2bytes 를 할당하는 형태 UCS-2는 글자당 무조건 2bytes만 쓴다.</description>
    </item>
    
    <item>
      <title>Segfault의 느낌</title>
      <link>https://rein.kr/posts/2008-02-08-segfault%EC%9D%98-%EB%8A%90%EB%82%8C/</link>
      <pubDate>Fri, 08 Feb 2008 12:27:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-08-segfault%EC%9D%98-%EB%8A%90%EB%82%8C/</guid>
      <description>From xkcd.net (CCL 2.5, Attribution, Non-commercial)
해석해놓으면.
C(omputer) : 좋아, 인간 H(uman) : 어? C : &amp;#34;Compile&amp;#34;이라고 치기전에, 일단 들어 C: 네가 잠이 들려고 할 때, 그리고 걷거나 뭔가 하는걸 상상하고 있다고 치자 C: 그런데 갑자기 발을 헛_**딛**_고, 비틀거리다가 &amp;#34;확&amp;#34; 깨어났다고 치자? H: 예에! C: 그래, 그게 바로 Segfault의 느낌이야 C: 네 저주받을 빌어먹을 포인터(damn pointers) 두 번 체크해놔, 알겠지? Segmentation fault (Win32 프로그래머라면 access violation 쪽이 더 익숙하겠지만) 는 유효하지 않은 메모리 공간을 읽거나 쓸 때 발생하는 오류.</description>
    </item>
    
    <item>
      <title>24&#34;의 자유로움(?)</title>
      <link>https://rein.kr/posts/2008-02-04-24%EC%9D%98-%EC%9E%90%EC%9C%A0%EB%A1%9C%EC%9B%80/</link>
      <pubDate>Mon, 04 Feb 2008 01:04:27 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-04-24%EC%9D%98-%EC%9E%90%EC%9C%A0%EB%A1%9C%EC%9B%80/</guid>
      <description>작년에 Xbox360을 위해서 24&amp;quot; LCD를 지르는 엄한 짓(…)을 했었다. 그렇지만 24&amp;quot; LCD + 듀얼 모니터를 쓰면 이런 웹서핑이 가능해진다. (당연히 프로그래밍하기에도 편한 환경이…)
Firefox를 띄우고, Split Pannel로 와이드 모니터에서는 버티컬 스플릿 서브 모니터에서 덤으로 쓰는 페이지 띄우기 사실 Firefox의 버티컬 스플릿을 제공하는 AddOn 중에는 &amp;ldquo;이거다&amp;rdquo; 하고 맘에드는게 아직 없긴함. 그래도 와이드 해상도(16:10 or 16:9) 모니터가 좀 더 대중화되면 편하게 버티컬 스플릿을 쓸 수 있게 되지 않을까 하는 중.
ps. 근데 애플 씨네마 30&amp;quot;같은 걸 지르면 수평 해상도가 2560이니 메인 모니터 쪽에서 1280 폭으로 두 개를 볼 수 있게된다는 건데…</description>
    </item>
    
    <item>
      <title>OS의 가상 메모리에 대한 첨언</title>
      <link>https://rein.kr/posts/2008-02-03-os%EC%9D%98-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%97%90-%EB%8C%80%ED%95%9C-%EC%B2%A8%EC%96%B8/</link>
      <pubDate>Sun, 03 Feb 2008 21:13:23 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-03-os%EC%9D%98-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%97%90-%EB%8C%80%ED%95%9C-%EC%B2%A8%EC%96%B8/</guid>
      <description>가상 메모리 체계에 대한 설명이 부족한 것 같아서, 짧게 설명.
현존하는 주요 OS에서 우리가 일반적으로 사용하는 영역 – 부팅 시간이라거나 특정한 OS라거나 등등을 제외한 곳 – 에서는 언제나 가상 메모리를 쓰고 있다. 가상메모리란 개념은 사실 &amp;ldquo;가상 주소&amp;rdquo; 때문에 존재하게 되는 개념인데 저 가상 주소는 프로그래밍의 편의를 위해서 있게 된다. OS에서 물리 메모리를 각 응용 프로그램(혹은 OS자체)에 할당해서 사용할 수 있게 해주는데, 이런 가상 주소/가상 메모리 체계를 사용하면
프로그래머가 실제로 해당 주소가 물리 메모리에 있는지 신경쓰지 않아도 되고 하드 디스크 스왑핑을 OS에서 해줄 수 있게 되고 OS가 부가적인 보안 기능1이나 보호 기능2을 수행 하는 등의 장점들이 생긴다.</description>
    </item>
    
    <item>
      <title>가상 메모리 != 하드디스크 스왑핑</title>
      <link>https://rein.kr/posts/2008-02-03-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC-%ED%95%98%EB%93%9C%EB%94%94%EC%8A%A4%ED%81%AC-%EC%8A%A4%EC%99%91%ED%95%91/</link>
      <pubDate>Sun, 03 Feb 2008 20:55:24 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-03-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC-%ED%95%98%EB%93%9C%EB%94%94%EC%8A%A4%ED%81%AC-%EC%8A%A4%EC%99%91%ED%95%91/</guid>
      <description>컴퓨터 부품이나 기타 컴퓨터와 연동되는 무언가를 설명하는 글들을 볼 때 가끔 자기도 모르는 단어를 아는 것처럼 설명에 스리슬쩍 끼워넣어서 사용하는 경우가 있다.
바로 이런 상황
PC용 메모리는 &amp;lsquo;용량이 깡패&amp;rsquo;라는 속어가 있듯이 속도보다는 그 용량을 우선시합니다. 아무리 빠른 메모리가 있다고 해도 읽어들인 데이터 양이 많아 가상 메모리를 쓰게 되면 성능이 크게 떨어지기 때문입니다.
라는 대목이 있는데.
물리 메모리(보통은 DRAM을 쓰는 영역)가 모자라는 것을 지금 당장 쓰이지 않 – 을 것으로 보이 – 는 영역을 하드디스크에 옮겨 쓰고 남는 공간을 써서 해결하는 것은 하드 디스크 스왑핑;HDD swapping 이라고 부른다.</description>
    </item>
    
    <item>
      <title>리뷰 : 생각의 기차</title>
      <link>https://rein.kr/posts/2008-02-02-%EB%A6%AC%EB%B7%B0-%EC%83%9D%EA%B0%81%EC%9D%98-%EA%B8%B0%EC%B0%A8/</link>
      <pubDate>Sat, 02 Feb 2008 22:15:01 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-02-%EB%A6%AC%EB%B7%B0-%EC%83%9D%EA%B0%81%EC%9D%98-%EA%B8%B0%EC%B0%A8/</guid>
      <description>알라딘 링크
과학적 발견의 역사를 각 발견이나 발견한 사람들이 주고받은 영향, 공동 연구 등의 관점에서 따라가보는 책이다. 과학 전반에 걸쳐서 발견에 대해서 상당히 균형있게 다루고 있으며, 그 내용도 흔히 볼 수 있는 얕은 깊이가 아니라서 꽤 재미 있다. 특히나 역사를 따라 발전해가는 – 정확히는 영향을 주는 – 과정을 보면 과학 발견의 근대화 처럼 보이는 무언가가 읽힌다는게 참 멋지달까 -_-a
가설이 생기고, 부정되거나 근거가 추가되고, 최종적으로 어떤 주류 이론으로 굳어져가는 방식을 몇 개의 발견과 세워진 가설들로 풀이하는데 (예를 들어 우주선;cosmic ray의 발견이 광물에 대한조사, 기구를 타고 대기 중에서 조사, 호수 속에서 조사&amp;hellip;) 이런 식으로 &amp;ldquo;하나의 발견&amp;rdquo; 이라고 알고있던 것이 실제로는 여러 개의 발견과 가설 끝에 나온 다는 것을 설명해줘서 &amp;ldquo;새로운 시선&amp;quot;을 제공해주는게 아닌가 싶다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;을 위한 MS VC&#43;&#43;확장 키워드 몇 가지</title>
      <link>https://rein.kr/posts/2008-02-01-c%EC%9D%84-%EC%9C%84%ED%95%9C-ms-vc%ED%99%95%EC%9E%A5-%ED%82%A4%EC%9B%8C%EB%93%9C-%EB%AA%87-%EA%B0%80%EC%A7%80/</link>
      <pubDate>Fri, 01 Feb 2008 17:45:01 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-02-01-c%EC%9D%84-%EC%9C%84%ED%95%9C-ms-vc%ED%99%95%EC%9E%A5-%ED%82%A4%EC%9B%8C%EB%93%9C-%EB%AA%87-%EA%B0%80%EC%A7%80/</guid>
      <description>작년 9월에 C++에서 상속받을 수 없게 만든 class (=Java의 final class 류)에 관한 글을 소개했었다 – 상당히 불편한 방법으로 final 키워드 기능을 흉내낸다.
오늘 회사에서 (다른 팀이) 이전에 작성한 코드를 보다가, final keyword에 해당하는 MS VC++ 확장 키워드를 발견했다. MS VC++에서는 class의 상속에 관련되서 몇 가지 추가된 키워드를 가지고 있다.
abstract – 추상 클래스를 선언할 수 있게 해주는 키워드. 이 클래스의 인스턴스;instance를 만들 수 없게 한다 override – 특정 멤버 함수를 선언할 때 해당 선언이 기반;base 클래스의 멤버 함수를 override 한 것일 때만 유효하게 한다 sealed – 특정 멤버 함수 혹은 클래스에 대해 해당 함수를 하위 클래스들이 override할 수 없게 막는다.</description>
    </item>
    
    <item>
      <title>CruiseControl.NET 삽질 정리</title>
      <link>https://rein.kr/posts/2008-01-29-cruisecontrolnet-%EC%82%BD%EC%A7%88-%EC%A0%95%EB%A6%AC/</link>
      <pubDate>Tue, 29 Jan 2008 21:53:28 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-29-cruisecontrolnet-%EC%82%BD%EC%A7%88-%EC%A0%95%EB%A6%AC/</guid>
      <description>어제를 기점으로 작업이 마무리 되어서, 그 동안 CruiseControl.NET을 처음 깔아보면서 할 법한 실수들을 정리해보았다. 우선 설치 과정 전체는 KAISTIZEN 님의 CruiseControl.NET 설치 일지 를 따라 갔다. 전체 과정이 잘 정리되어있으니 매우 유용한 페이지다.
IIS 설정 삽질 IIS 설정에서 ASP.net 의 버젼을 1.1.x 대신에 2.0.x 이상을 사용해야 한다. 그렇지 않으면 IIS에 등록한 파일 형식이 이상하다는 식의 에러를 뱉는다(그것도 로컬 접속에서만 볼 수 있는 형태)
통계 기능 사용하기 기본적으로 이 기능이 꺼져있는데,, 이 기능을 통해서 구현되는 페이지 – 각 프로젝트(ccnet.</description>
    </item>
    
    <item>
      <title>리뷰: 스티브 워즈니악 (iWoz)</title>
      <link>https://rein.kr/posts/2008-01-27-%EB%A6%AC%EB%B7%B0-%EC%8A%A4%ED%8B%B0%EB%B8%8C-%EC%9B%8C%EC%A6%88%EB%8B%88%EC%95%85-iwoz/</link>
      <pubDate>Sun, 27 Jan 2008 22:08:48 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-27-%EB%A6%AC%EB%B7%B0-%EC%8A%A4%ED%8B%B0%EB%B8%8C-%EC%9B%8C%EC%A6%88%EB%8B%88%EC%95%85-iwoz/</guid>
      <description>토요일에 하카다 분코에 돈코츠라멘을 먹고 + 홍대입구역에서 만화책 / 라이트노벨 몇 권을 구입하고 돌아왔다. 이동시간이 슬퍼할만큼 길어져서 손도 안댄책을 한 권 꺼내서 가지고 갔다. …갔다왔다 했더니 한 권을 다 읽을 수 있더라 -_-; 여튼그렇게 읽었던 책이 스티브 워즈니악의 자서전인 iWoz의 한국어판.
역사상 가장 성공적인 주식 공개 중에 하나였던 Apple 의 주식공개를 이끌어냈던 Apple II 컴퓨터의 설계를 수행했던 엔지니어인 스티브 워지니악의 이야기인데, 약간의 자기자랑이 섞여있긴하지만[…] 재능있는 엔지니어의 행복한 엔지니어링이랄까. 북미 전화망을 프릭킹해서 공짜전화를 걸기도하고, 가장 적은 수의 부품만으로 &amp;ldquo;컴퓨터&amp;quot;를 설계하는(도면 위에서) _취미_를 가져보기도하고 …</description>
    </item>
    
    <item>
      <title>지정문답: &#34;boost 라이브러리&#34;</title>
      <link>https://rein.kr/posts/2008-01-23-%EC%A7%80%EC%A0%95%EB%AC%B8%EB%8B%B5-boost-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/</link>
      <pubDate>Wed, 23 Jan 2008 20:46:15 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-23-%EC%A7%80%EC%A0%95%EB%AC%B8%EB%8B%B5-boost-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/</guid>
      <description>고어핀드의 망상천국에서 넘겨받은 지정문답 : boost library
이 블로그에는 처음 넘어온 바톤을 처리합니다. (사실 전에 lazhu가 넘겼었지만 차마 못하고 넘어간게 있지만 …)
■ 바톤을 받는 5명, 절대로 5명! (지정과 함께)
Rica : 게임 프로그래밍 → 지정문답: (게임) 프로그래밍 일념 : 책 (장르 불문; 만화 포함 :) ) → 피앙 : 애니메이션 → 지정문답 : &amp;ldquo;애니메이션&amp;rdquo; Muzeholic : 헬게이트 – 런던 → 지정문답 : &amp;ldquo;Hellgate : London&amp;rdquo; 飛烏 : 요리 (와인을 포함해서 :p) → 지정문답 : &amp;ldquo;요리&amp;rdquo; 이 마이너 블로그에 자주 찾아오는 사람들이라면 알 확률이 높겠지만(모르신다면 + 프로그래머라면 지금부터라도 늦지 않았습니다!</description>
    </item>
    
    <item>
      <title>C&#43;&#43; tr1에는 MPL이 없다</title>
      <link>https://rein.kr/posts/2008-01-22-c-tr1%EC%97%90%EB%8A%94-mpl%EC%9D%B4-%EC%97%86%EB%8B%A4/</link>
      <pubDate>Tue, 22 Jan 2008 19:14:25 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-22-c-tr1%EC%97%90%EB%8A%94-mpl%EC%9D%B4-%EC%97%86%EB%8B%A4/</guid>
      <description>저녁을 jstrane과 함께 먹었는데, 먹다가 나온 얘기 중에 C++이 표준화된 이래 추가된 가장 큰 라이브러리 뭉치인 tr1 (technical report 1) 에 관한 내용이었다. 입사한 이래로 MS Windows + VS 환경에서만 개발을 하고 있었다. 최근에 VS 2008에 tr1의 베타 릴리즈가 추가되었고, 이런 추세로라면 곧 tr1은 &amp;ldquo;있다고 가정하고 쓸 수 있지 않겠느냐&amp;rdquo; 라고 생각했다. 그래서
rein: tr1이 추가되면 지금 빌드 트리에 올라간 boost 를 제거할 수 있겠네
jstrane: mpl은 tr1에 없어서 그건 유지해야할걸요?</description>
    </item>
    
    <item>
      <title>암달의 법칙 깨기 by 허브 서터</title>
      <link>https://rein.kr/posts/2008-01-21-%EC%95%94%EB%8B%AC%EC%9D%98-%EB%B2%95%EC%B9%99-%EA%B9%A8%EA%B8%B0/</link>
      <pubDate>Mon, 21 Jan 2008 09:00:25 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-21-%EC%95%94%EB%8B%AC%EC%9D%98-%EB%B2%95%EC%B9%99-%EA%B9%A8%EA%B8%B0/</guid>
      <description>DDJ에 실린 허브 서터의 아티클을 요약. 전번에 썼던 직렬 실행 최적화의 시대가 끝나가고 멀티코어를 홭용하는 방향으로는 가야겠는데, 그렇다면 어떻게 해야 좋은 성능을 낼 수 있겠는가에 관한 글이다.
어제 작성했던 글이나, 멀티 코어 용 라이브러리 관련된 포스팅을 했던 것 처럼, 이런 &amp;ldquo;멀티코어를 활용할 수 있는 환경&amp;quot;은 점점 더 잘 구축되어가고 있고…인데. 허브 서터는 이런 점을 이용해서 병렬처리에서 말해온 &amp;ldquo;암달의 법칙; Amdahl&amp;rsquo;s Law&amp;quot;를 깨뜨릴 수 있다고 말하고 있다.
암달의 법칙을 병렬 처리 관점에서 말하면 – 사실 이게 원본(?</description>
    </item>
    
    <item>
      <title>공짜 점심의 끝</title>
      <link>https://rein.kr/posts/2008-01-20-%EA%B3%B5%EC%A7%9C-%EC%A0%90%EC%8B%AC%EC%9D%98-%EB%81%9D/</link>
      <pubDate>Sun, 20 Jan 2008 12:13:22 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-20-%EA%B3%B5%EC%A7%9C-%EC%A0%90%EC%8B%AC%EC%9D%98-%EB%81%9D/</guid>
      <description>암달의 법칙 깨트리기!; Break Amdhal&amp;rsquo;s Law! 라는 제목의 아티클이 금요일 오전(KST 기준)으로 DDJ에 올라왔다. 아티클의 저자는 허브 서터;Hurb Sutter였다. 일단 그거랑 관련된 얘기로, 2005년에 &amp;ldquo;The Free Launch Is Over: A Fundamental Turn Toward Concurrency in SW&amp;ldquo;라는 글을 통해 SW 개발자/엔지니어들의 공짜 점심에 해당하는 것들
CPU 클럭의 증가 – 2000년대 초반까진 exponential 하게 증가했음 CPU 실행 시간 최적화 – CPU 명령어의 순차 실행 최적화 (파이프라인, 분기예측, Out-of-order-execution 등) Cache 크기 증가 을 통해서 우리가 일반적으로 짜는 SW – Single Process/Single threaded – 의 속도가 &amp;ldquo;공짜로&amp;rdquo; 증가했다고 설명한다.</description>
    </item>
    
    <item>
      <title>작업 환경 재설치</title>
      <link>https://rein.kr/posts/2008-01-18-%EC%9E%91%EC%97%85-%ED%99%98%EA%B2%BD-%EC%9E%AC%EC%84%A4%EC%B9%98/</link>
      <pubDate>Fri, 18 Jan 2008 22:52:02 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-18-%EC%9E%91%EC%97%85-%ED%99%98%EA%B2%BD-%EC%9E%AC%EC%84%A4%EC%B9%98/</guid>
      <description>새로이 구성된 마이크로소프트 Windows 환경에서 필요해서 설치한, 혹은 설치해야하는 프로그램, 라이브러리, 툴들의 목록. 물론 이 목록은 rein 자신의 작업 환경에 매우 의존적이고, 현재 상황에만 필요할 수도 있는 애들도 있지만, 다음에도 참고할 목적으로 포스팅을 하나.
PuTTY 및 관련 유틸리티(pscp, plink, …) 설치 gvim for Windows 설치 Python 설치 – 현재 2.5 x86-64 Python setuptools 설치 tortoise svn, subversion 설치 Visual Studio 설치. 이건 그때그때 가지고 있는 라이센스에 따라 설치하게 될듯 C++ 용 라이브러리 설치 (python보다 나중에 해야 boost::python이 제대로 설치됨) boost library – 얘없이 살기엔 아직 인생은 험난하다 intel TBB – …뭐 일단은 설치 DirectX SDK – 이걸 빼먹는 것도 좀 곤란한듯 UnitTest++ 빌드.</description>
    </item>
    
    <item>
      <title>OS 재설치 중에 제일 무서운 과정</title>
      <link>https://rein.kr/posts/2008-01-17-os-%EC%9E%AC%EC%84%A4%EC%B9%98-%EC%A4%91%EC%97%90-%EC%A0%9C%EC%9D%BC-%EB%AC%B4%EC%84%9C%EC%9A%B4-%EA%B3%BC%EC%A0%95/</link>
      <pubDate>Thu, 17 Jan 2008 23:44:03 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-17-os-%EC%9E%AC%EC%84%A4%EC%B9%98-%EC%A4%91%EC%97%90-%EC%A0%9C%EC%9D%BC-%EB%AC%B4%EC%84%9C%EC%9A%B4-%EA%B3%BC%EC%A0%95/</guid>
      <description>현존하는 배포판 linux나 Windows XP 이후의 Windows OS들의 경우는 설치 과정 자체는 매우 단순하다. 특이한 하드웨어가 있거나하지만 않으면야 몇 번의 클릭과 아이디 설정 정도로 설치가 끝난다. 정말 무서운 것은 후폭풍들.
방금까지 한 삽질, 그리고 아직 끝나지 않은 삽질을 열거해보면,
미디어 플레이어 (내 경우엔 음악; iTunes만) 를 다시 설치하고, 미디어들을 재등록 시키는 과정. Vista를 설치했더니 My Documents에 해당하는 곳이 XP랑 미묘하게 달라서 그걸 다시 잡아주고(thanx Vim w/ reg exp) 드라이브 문자가 바뀐 것을 재설정 … 하는데 리붓 3번 한듯 개발툴 설정 개발툴을 설치하고, 환경 변수를 확인하고, 스크립트 툴을 설치하고, 스크립트 확장자를 등록하고 … 지금 python 하나 설치해놓은 상태인듯.</description>
    </item>
    
    <item>
      <title>VisualStudio 광고에 등장한 Master Chief</title>
      <link>https://rein.kr/posts/2008-01-17-visualstudio-%EA%B4%91%EA%B3%A0%EC%97%90-%EB%93%B1%EC%9E%A5%ED%95%9C-master-chief/</link>
      <pubDate>Thu, 17 Jan 2008 09:27:14 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-17-visualstudio-%EA%B4%91%EA%B3%A0%EC%97%90-%EB%93%B1%EC%9E%A5%ED%95%9C-master-chief/</guid>
      <description>오늘 출근하고, RSS 리더가 뱉어낸 Dr. Dobb&amp;rsquo;s Journal 에 실린 글을 읽고 있는데, 광고 영역에 뭔가 익숙한 캐릭터가 보인다.
Bungie Studio의 잘 알려진 Xbox 타이틀인 Halo 의 주인공은 Master Chief 의 모습이.
MS의 Visual Studio TeamSystem 의 광고인데, 플래쉬를 클릭하면 Halo를 따라하려다만듯한 웹 사이트(www.defyallchallenges.com)가 하나 나온다. 이런 웹 광고에 게임 캐릭터와 분위기를 쓸 수 있다는 것도 신선하지만, FPS를 즐기는 개발자 수가 상당하다는 얘기가 되는 것 같아서 참.</description>
    </item>
    
    <item>
      <title>intel TBB: concurrent hash table</title>
      <link>https://rein.kr/posts/2008-01-14-intel-tbb-concurrent-hash-table/</link>
      <pubDate>Mon, 14 Jan 2008 22:27:44 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-14-intel-tbb-concurrent-hash-table/</guid>
      <description>C++에 익숙한 프로그래머가 멀티스레드;multi-threaded 프로그래밍을 배울 때 느끼게되는 의문점 중 하나는,
&amp;ldquo;싱글 스레드;single-threaded 프로그래밍에선 STL 컨테이너가 매우 유용한데, 멀티스레딩으로 가면 왜 int 수준의 스레드안전성;thread-safety 만을 보장해주는가&amp;rdquo;
라는 것이다. 어쩔 수 없이 어떤 락;lock 을 사용해서 STL 컨테이너 – vector&amp;lt;T&amp;gt;, queue&amp;lt;T&amp;gt;, map&amp;lt;T&amp;gt;나 tr1의 unordered_set&amp;lt;T, HashFunction &amp;gt; / unordered_map&amp;lt;K, V, HashFunction&amp;gt; 등등 – 를 보호하면서 사용하게 된다. 이를테면,
// concurrent_hash_map&amp;lt;K, V&amp;gt; table { get_read_lock( &amp;amp;table ); // ... operation with table (w/o writing) .</description>
    </item>
    
    <item>
      <title>log4cxx 빌드하기</title>
      <link>https://rein.kr/posts/2008-01-12-building-log4cxx/</link>
      <pubDate>Sat, 12 Jan 2008 01:23:44 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-12-building-log4cxx/</guid>
      <description>예전에 포스팅 했던 것 처럼, log4cxx라는 log4j 프로젝트의 하위 프로젝트로 존재하는 C++ 용의 로깅 라이브러리가 있다. 다음의 내용은 이 라이브러리의 현재 HEAD 리비젼인 611128 (2008-01-10 15:26:45 +0900)을 빌드하는 과정의 이야기이다. 좀 길어서 두 개로 나눠서 정리했다.
빌드환경은,
Microsoft Visual Studio 2005 Windows XP w/ SP2 32bit edition Subversion 1.6 (Win32) Apache Ant 1.7.0 Java SDK 1.6.0_03 에서 여기에 서술되지 않은 툴들을 설치하면서 진행된다.
일단 목표는 다음과 같은 빌드 파일을 만들어내는 일이다.</description>
    </item>
    
    <item>
      <title>멀티코어로의 길</title>
      <link>https://rein.kr/posts/2008-01-09-%EB%A9%80%ED%8B%B0%EC%BD%94%EC%96%B4%EB%A1%9C%EC%9D%98-%EA%B8%B8/</link>
      <pubDate>Wed, 09 Jan 2008 09:31:07 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-09-%EB%A9%80%ED%8B%B0%EC%BD%94%EC%96%B4%EB%A1%9C%EC%9D%98-%EA%B8%B8/</guid>
      <description>작년 10월 (그러니까 2007년 10월) MSDN 매거진을 보니 &amp;ldquo;Managed code 를 멀티 코어 머신에서 최적화하기&amp;quot;라는 기사가 있더라. MS의 Task Parellel Library; TPL이라는 라이브러리를 소개한 글인데 개략적인 내용은,
for (int i = 0; i &amp;lt; 100; i++) { a[i] = a[i]*a[i]; } 이런 코드 블럭이 있을 때 이런 형태를 코어 수에 맞게 managed code 레벨에서 쪼개서 실행해주겠다는 것이다. 위에 제시한 for 문의 경우 각 a[i] 들이 다른 a[j] (where i != j) 에 의존성이 없기 때문에, 동시에 실행해도 무방하다.</description>
    </item>
    
    <item>
      <title>2008 목표</title>
      <link>https://rein.kr/posts/2008-01-01-2008-%EB%AA%A9%ED%91%9C/</link>
      <pubDate>Tue, 01 Jan 2008 20:12:55 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2008-01-01-2008-%EB%AA%A9%ED%91%9C/</guid>
      <description>일단 직업적인 면에서 내가 원하는 것들.
TDD를 제대로 해보자. 내가 담당하는 업무는 _멀티 스레딩 기반의 C++ 서버 응용이다. 멀티스레딩_에서 TDD가 제대로 되려면 대체 뭐가 필요한지 파악하고, 적용 좀 제대로 해보자. 고칠 때마다 &amp;ldquo;스레드 부분에선 뻑 안나겠지&amp;rdquo; 라고 고민해야하는 것은 너무 하지 않은가. 학부 3학년 때 쯤 정점에 달했다가 지금은 좀 나아가는 병인 것 같지만, &amp;ldquo;미리 최적화 하려는 습관&amp;quot;을 제거하자. 명백한 증거 와 필요성 없이는 절대로 최적화하려는 욕구를 억눌러야. Trac 좀 더 잘 써보자.</description>
    </item>
    
    <item>
      <title>Google Chart API</title>
      <link>https://rein.kr/posts/2007-12-31-google-chart-api/</link>
      <pubDate>Mon, 31 Dec 2007 03:50:48 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-31-google-chart-api/</guid>
      <description>12월 6일에 공개된 API이니 이미 좀 된 얘기지만, 이글루스의 연말 블로그 통계 결산을 보면서
&amp;ldquo;저런식의 통계를 쉽게 못낼까&amp;rdquo;
라고 생각하다가, 월 초에 봤던 Google Chart API가 떠올랐다. 그래서 좀 만지작만지작 대다가 이 앞 두 포스팅이 나오게 된 것.
쓰면서 느낀 점, 특히 강점은 우선 별다른 클라이언트 코드가 필요치 않다는 것. 가끔 쓰는 정도면 별도의 툴이나 스크립트 없이 손으로 쓱쓱 작성하고 웹에 링크하 - 고 잊어버리 - 면 된다. 그리고 웹로깅 툴의 통계툴이나 간단한 그래프를 그릴 때에는 복잡한 과정없이 그래프를 그릴 수 있다는 점이 좋다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43; template 함수의 타입 추론</title>
      <link>https://rein.kr/posts/2007-12-29-c-template-%ED%95%A8%EC%88%98%EC%9D%98-%ED%83%80%EC%9E%85-%EC%B6%94%EB%A1%A0/</link>
      <pubDate>Sat, 29 Dec 2007 00:53:35 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-29-c-template-%ED%95%A8%EC%88%98%EC%9D%98-%ED%83%80%EC%9E%85-%EC%B6%94%EB%A1%A0/</guid>
      <description>몇 일 전에 연이어서 C++로 일종의 지연된 함수호출 객체를 만드는 코드에 관해 포스팅했었다. (#1, #2, #3 참조)
마지막 포스팅에서도 해결 못했던 문제가 아래 코드에 나와있는 템플릿 함수를 사용할 때, void Foo::Bar(int&amp;amp;, int, int) 같은 함수를 func 자리에 전달할 경우에 생기는 문제였다.
template&amp;lt;typename T, typename R , typename A0 , typename A1&amp;gt; Closure* MakeClosure(T&amp;amp; obj, R (T::*func)(A0 a0 , A1 a1), A0 a0, A1 a1) { return new Closure2&amp;lt;T, R , A0 , A1&amp;gt; (obj, func , a0 , a1); } C++에서 템플릿 함수의 인자 T를 다음과 같은 타입으로 추정한다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;로 지연된 함수콜 구현하기</title>
      <link>https://rein.kr/posts/2007-12-24-c%EB%A1%9C-%EC%A7%80%EC%97%B0%EB%90%9C-%ED%95%A8%EC%88%98%EC%BD%9C-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0/</link>
      <pubDate>Mon, 24 Dec 2007 23:51:17 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-24-c%EB%A1%9C-%EC%A7%80%EC%97%B0%EB%90%9C-%ED%95%A8%EC%88%98%EC%BD%9C-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0/</guid>
      <description>지난 2일 간
C++로 지연된 함수콜 구현하기 (closure-like interface) boost preprocessor 라이브러리로 다변수 템플릿 코드 생성하기 관해서 포스팅했다. 오늘 이걸 실제로 광범위하게 적용시켜봤는데, 그러다 보니 문제점들이 확실히 보였다.
테스트 하는 동안 가장 문제가 되었던 것은 참조형으로 넘겨준 변수 문제였다. (포인터로 넘겨주는 일은 &amp;ldquo;없다고 가정하는 상황&amp;quot;이라서 일단 그 문제는 넘어가자)
class A : private boost::noncopyable { public: A() {} virtual ~A() {} void Do3(int a, int b, int&amp;amp; c) { cout &amp;lt;&amp;lt; &amp;#34;A::Do3(&amp;#34; &amp;lt;&amp;lt; a &amp;lt;&amp;lt; &amp;#34;, &amp;#34; &amp;lt;&amp;lt; b &amp;lt;&amp;lt; &amp;#34;, &amp;#34; &amp;lt;&amp;lt; c &amp;lt;&amp;lt; &amp;#34;)&amp;#34; &amp;lt;&amp;lt; endl; } }; void foo() { A a; int tmp_val = 3; shared_ptr&amp;lt;Closure&amp;gt; c = MakeClosure&amp;lt;A, void, int, int, int&amp;amp;&amp;gt;(a, &amp;amp;A::Do3, 1, 2, tmp_val); c-&amp;gt;Execute(); tmp_val = 0; c-&amp;gt;Execute(); } foo 의 실행결과는 다음과 같다.</description>
    </item>
    
    <item>
      <title>Boost::preprocessor 로 템플릿 코드 생성</title>
      <link>https://rein.kr/posts/2007-12-23-boostpreprocessor-%EB%A1%9C-%ED%85%9C%ED%94%8C%EB%A6%BF-%EC%BD%94%EB%93%9C-%EC%83%9D%EC%84%B1/</link>
      <pubDate>Sun, 23 Dec 2007 22:57:59 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-23-boostpreprocessor-%EB%A1%9C-%ED%85%9C%ED%94%8C%EB%A6%BF-%EC%BD%94%EB%93%9C-%EC%83%9D%EC%84%B1/</guid>
      <description>어제 일종의 지연된 함수 호출 클래스 구현에 관해서 포스팅을 했다. (제한된 Closure라기보단 이 쪽 의미에 가까운 것 같다) 거기에다가 &amp;ldquo;뭔가 인자 수에 따라 다 정의해야 하는 것을 피할 방법이 없는가?&amp;rdquo; 라고 썼었는데, Boost 라이브러리에 있는 매크로 메타프로그래밍 라이브러리인 Boost::PP를 소개 받았다.
일단 boost::preprocessor를 사용해서 구현한 코드는 다음과 같다.
#define ClosureMemberDecl( z, n, unused ) A##n m_A##n; #define ClosureMemberEnum( z, n, unused ) A##n a##n #define ClosureMemberInit( z, n, unused ) m_A##n( a##n ) // Create Closure0, Closure1, .</description>
    </item>
    
    <item>
      <title>C&#43;&#43;기반의 closure</title>
      <link>https://rein.kr/posts/2007-12-22-c%EA%B8%B0%EB%B0%98%EC%9D%98-closure/</link>
      <pubDate>Sat, 22 Dec 2007 23:44:46 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-22-c%EA%B8%B0%EB%B0%98%EC%9D%98-closure/</guid>
      <description>요즘 하고 있는 일 중에 굉장히 제한적으로 사용되는 closure를 구현할 일이 생겼다 — 물론 C++ 기반이다. Python기반이면 이런 걱정은 안해도. Orz
Closure를 정의하자면, (from wikiepdia)
In computer science, a closure is a function that is evaluated in an environment containing one or more bound variables.
이런 애가 되는데, 좀 더 내가 필요로하는 응용에서 생각하면, 대략 함수와 이를 호출하기 위한 데이터(특히나 lexical 정보들)이 될 것이다.
개략적으로 그려보면 이렇게 생겨먹은 Closure _객체 인스턴스_를 만들어낼 수 있으면 된다.</description>
    </item>
    
    <item>
      <title>작은 메모리 할당을 빨리하려면?</title>
      <link>https://rein.kr/posts/2007-12-20-%EC%9E%91%EC%9D%80-%EB%A9%94%EB%AA%A8%EB%A6%AC-%ED%95%A0%EB%8B%B9%EC%9D%84-%EB%B9%A8%EB%A6%AC%ED%95%98%EB%A0%A4%EB%A9%B4/</link>
      <pubDate>Thu, 20 Dec 2007 21:53:45 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-20-%EC%9E%91%EC%9D%80-%EB%A9%94%EB%AA%A8%EB%A6%AC-%ED%95%A0%EB%8B%B9%EC%9D%84-%EB%B9%A8%EB%A6%AC%ED%95%98%EB%A0%A4%EB%A9%B4/</guid>
      <description>요즘 생각하는 문제 중 하나는 작은 메모리 영역, 대략 16 bytes ~ 64bytes 정도의 영역을 엄청나게 자주, 그리고 길지 않은 시간동안 할당하고 해제하는 작업이다. 물론 멀티스레딩 환경에서 해야하는 작업이라, 여러 개의 작업 스레드 – 아마도 4개 이상 12개 미만 – 에서 원활히 메모리 할당해제가 이루어져야 한다.
즉, 요약하면 이런 문제다.
Win32환경 복수의 스레드_에서 메모리 할당 해제가 이뤄진다 할당 단위는 _미리 알려진 고정길이_이고 그 크기는 16 bytes에서 64 bytes 수준 메모리를 할당한 스레드에서 해제까지 한다는 보장은 없다 할당/해제 속도가 충분히 빨라야하며, 상위 레이어에서 락 문제를 신경쓰게 만들어서는 안된다 메모리 할당~해제까지 걸리는 시간은 한정된 시간으로 제한 된다.</description>
    </item>
    
    <item>
      <title>멀티스레드 프로그래밍 할 때 기억해야할 것</title>
      <link>https://rein.kr/posts/2007-12-19-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9-%ED%95%A0-%EB%95%8C-%EA%B5%AC%EB%B6%84%ED%95%B4%EC%95%BC%ED%95%A0-%EA%B2%83/</link>
      <pubDate>Wed, 19 Dec 2007 17:02:58 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-19-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9-%ED%95%A0-%EB%95%8C-%EA%B5%AC%EB%B6%84%ED%95%B4%EC%95%BC%ED%95%A0-%EA%B2%83/</guid>
      <description>멀티스레드 프로그래밍을 하다보면 다음 두 가지가 잘 구분 되어야하고, 이 둘이 모두 보장되야 한다.
객체의 생명 주기 객체의 일관성 유지 (동기화 문제) 구체적으로 말하면 이런 차이가 있다.
객체의 생명 주기라는 것은, 특정 객체가 _살아있고, 접근해서 쓸 수 있는 상태_인 시간에 대한 표현이다. 예를 들어서 서버 응용을 만드는데, 클라이언트에 연결된 소켓의 생명 주기란 것은 &amp;ldquo;클라이언트와 연결되고 ~ 클라이언트와 연결이 종료되고&amp;rdquo; 라는 두 가지 이벤트 사이의 시간이 된다. 그리고 이 주기는 의미상으로 그리고 프로그램적으로 안전하고 유효한 접근인가 에 관한 것을 결정하게 된다.</description>
    </item>
    
    <item>
      <title>회사 책상 위에 올라와 있는 것들</title>
      <link>https://rein.kr/posts/2007-12-17-%ED%9A%8C%EC%82%AC-%EC%B1%85%EC%83%81-%EC%9C%84%EC%97%90-%EC%98%AC%EB%9D%BC%EC%99%80-%EC%9E%88%EB%8A%94-%EA%B2%83%EB%93%A4/</link>
      <pubDate>Mon, 17 Dec 2007 12:47:40 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-17-%ED%9A%8C%EC%82%AC-%EC%B1%85%EC%83%81-%EC%9C%84%EC%97%90-%EC%98%AC%EB%9D%BC%EC%99%80-%EC%9E%88%EB%8A%94-%EA%B2%83%EB%93%A4/</guid>
      <description>지난 주에 주문한 BoardPlus가 도착해서 일단 회사에 설치해본 상태 (집에서 쓰려는 목적으로 산거라 퇴근할 때 분해해서 가져가겠지만).
보드플러스란건 이런 물건인데, (이미지는 물건을 구입한 funshop에서)
설치하고 회사 책상위에 올려놓으면서 관찰해보니(…) 회사 책상 넓이에 비해 올려놓고 쓰는 물건이 무척 적은 듯 함;
일단 LCD 3 개. 17&amp;quot; 2개 20&amp;quot; 1개를 17 – 20 – 17 순으로 쫙 맞춰놓고 쓰고 있다. 키보드 1개 마우스 1개. 그리고 이걸 2대 의 컴퓨터(책상 밑에 있다)에 연결해주는 마우스/키보드 스윗치1 달력 2개와 전화기.</description>
    </item>
    
    <item>
      <title>레몬펜 베타서비스</title>
      <link>https://rein.kr/posts/2007-12-15-%EB%A0%88%EB%AA%AC%ED%8E%9C-%EB%B2%A0%ED%83%80%EC%84%9C%EB%B9%84%EC%8A%A4/</link>
      <pubDate>Sat, 15 Dec 2007 22:06:56 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-15-%EB%A0%88%EB%AA%AC%ED%8E%9C-%EB%B2%A0%ED%83%80%EC%84%9C%EB%B9%84%EC%8A%A4/</guid>
      <description>IRC 채널에서 대화하다가,
[21:22:59] &amp;lt;ㅊㅊㅅ_mobile&amp;gt; 헐 [21:23:02] &amp;lt;ㅊㅊㅅ_mobile&amp;gt; 워드프레스; [21:23:07] &amp;lt;ㅊㅊㅅ_mobile&amp;gt; 쪽지도되나요; [21:23:20] &amp;lt;rein_home&amp;gt; 쪽지요? [21:23:26] &amp;lt;rein_home&amp;gt; 무엇을 말씀하시는건지(…) [21:23:29] &amp;lt;ㅇㅋ_mobile&amp;gt; 말풍선 달린거 [21:23:32] &amp;lt;rein_home&amp;gt; … [21:23:33] &amp;lt;rein_home&amp;gt; 님하그거 [21:23:34] &amp;lt;rein_home&amp;gt; 레몬펜
오픈마루 스튜디오의 &amp;ldquo;레몬펜&amp;quot;이 오픈 베타 서비스에 돌입했다는 사실을 알게 되었음.
레몬펜 서비스는 블로그라든가 어떤 웹페이지의 특정 문맥(그러니까 단어나 줄)에 형광펜으로 밑줄을 긋고, 거기에 덧글을 쓰는 서비스인데, 자신의 생각을 정리하거나(rein의 경우 현재로는 이 용도가 주임), 혹은 다른 사람의 블로그‡에 덧글(포스트잇 비슷한 레몬펜 메모)을 달거나 달린 레몬펜 메모에 덧글을 달 수 있게 된다.</description>
    </item>
    
    <item>
      <title>게임 서버 관련된 책들을 보면</title>
      <link>https://rein.kr/posts/2007-12-14-%EA%B2%8C%EC%9E%84-%EC%84%9C%EB%B2%84-%EA%B4%80%EB%A0%A8%EB%90%9C-%EC%B1%85%EB%93%A4%EC%9D%84-%EB%B3%B4%EB%A9%B4/</link>
      <pubDate>Fri, 14 Dec 2007 22:14:40 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-14-%EA%B2%8C%EC%9E%84-%EC%84%9C%EB%B2%84-%EA%B4%80%EB%A0%A8%EB%90%9C-%EC%B1%85%EB%93%A4%EC%9D%84-%EB%B3%B4%EB%A9%B4/</guid>
      <description>모든 책이 그런 것은 아마 아니겠지만 (사실 아닐꺼라고 믿고 싶다) 대부분 기초적인 네트웍 프로그래밍 – 소켓 사용, Win 32 혹은 소수지만 버클리 소켓 사용 – 이나 단순한 수준의 멀티스레드 프로그래밍에 그 내용 중 상당량을 소진한다. 그리고 정작 중요한 modern한 I/O 모델을 이용한 서버 프로그래밍에 관한 설명은 정말이지 미흡하기 그지없다.
사실 게임 서버, 특히나 애들 장난감이 아니라 _MMOG, MMORPG_의 서버를 만드는 법을 맛보게라도 해주려면 이런 내용들을 다뤄야 할 것이다.
대용량 네트웍 I/O를 다루는 법.</description>
    </item>
    
    <item>
      <title>SGS에 대한 실망, 감상</title>
      <link>https://rein.kr/posts/2007-12-11-sgs%EC%97%90-%EB%8C%80%ED%95%9C-%EC%8B%A4%EB%A7%9D-%EA%B0%90%EC%83%81/</link>
      <pubDate>Tue, 11 Dec 2007 23:00:23 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-11-sgs%EC%97%90-%EB%8C%80%ED%95%9C-%EC%8B%A4%EB%A7%9D-%EA%B0%90%EC%83%81/</guid>
      <description>얼마 전에 Sun Microsystems의 CGO가 – 무슨 약자인지는 알아서 상상을 :p – SGS†라는 물건을 팔러왔다.
나름대로 기대도 하고 질문할 꺼리도 준비하고 보내준 자료도 분석하면서 이것저것 고민하고 질문 목록과 함께 미팅에 나갔다†. 그렇지만 결과는 요약하자면 포스팅 제목처럼 실망. 일단 실망한 것을 요약하자면,
Sun은 한국에 R&amp;amp;D 직이 없는 관계로 프로젝트를 진행하는 북미 엔지니어라도 오겠거니 했는데 온 것은 Sun CGO 한 명 달랑. 그리고 한국 Sun의 기술 영업 한명 + 영업 2명. 일단 발표 자체는 발표 자료 수준.</description>
    </item>
    
    <item>
      <title>리뷰: 초난감 기업의 조건</title>
      <link>https://rein.kr/posts/2007-12-06-%EB%A6%AC%EB%B7%B0-%EC%B4%88%EB%82%9C%EA%B0%90-%EA%B8%B0%EC%97%85%EC%9D%98-%EC%A1%B0%EA%B1%B4/</link>
      <pubDate>Thu, 06 Dec 2007 09:00:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-06-%EB%A6%AC%EB%B7%B0-%EC%B4%88%EB%82%9C%EA%B0%90-%EA%B8%B0%EC%97%85%EC%9D%98-%EC%A1%B0%EA%B1%B4/</guid>
      <description>지른지 거의 2주가 되어가는 초난감 기업의 조건을 완독. 사실 그 사이에 이런 책이라거나 저런 책이라거나를 찝적댄 관계로 =,=
책 자체는 예전에 포스팅한 것처럼 &amp;ldquo;기업/경영&amp;quot;으로 분류될 정도의 내용도 많이 포함되어 있다. 경영이나 자기 계발서 쪽의 책들을 보면 &amp;ldquo;이렇게 하면 성공한다!&amp;rdquo; 같은 내용을 다루는 책이 주이고, 이런 형태의 책은 흔치않다.(그렇지만 이런 쪽이 더 재밌다는 점은…)
책 부제가 &amp;ldquo;기업 마케팅 노하우&amp;quot;가 들어가 있는 수준이지만 실제 내용을 들여다보면,
잘못된 제품 포지셔닝 – 이건 개발과 마케팅이 반반 잘못된 코드 재작성 – …이건 사실상 개발 + 경영 결정 잘못된 권한 부여 – 이건 개발(…) 같은 이슈들이 상당수 섞여있고, 조엘 온 소프트웨어에서 읽었던 조엘의 주장도 다시 한 번 들을 수 있었다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;이후 세대의 언어로 대용량 게임 서버 만들기?</title>
      <link>https://rein.kr/posts/2007-12-01-c%EC%9D%B4%ED%9B%84-%EC%84%B8%EB%8C%80%EC%9D%98-%EC%96%B8%EC%96%B4%EB%A1%9C-%EB%8C%80%EC%9A%A9%EB%9F%89-%EA%B2%8C%EC%9E%84-%EC%84%9C%EB%B2%84-%EB%A7%8C%EB%93%A4%EA%B8%B0/</link>
      <pubDate>Sat, 01 Dec 2007 23:49:34 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-12-01-c%EC%9D%B4%ED%9B%84-%EC%84%B8%EB%8C%80%EC%9D%98-%EC%96%B8%EC%96%B4%EB%A1%9C-%EB%8C%80%EC%9A%A9%EB%9F%89-%EA%B2%8C%EC%9E%84-%EC%84%9C%EB%B2%84-%EB%A7%8C%EB%93%A4%EA%B8%B0/</guid>
      <description>요즘 저거에 대해서 생각을 좀 하게 되었는데 – 특히 Java를 써서 - 실제 가능성 여부는 둘째치고 일단 대용량 게임 서버를 만든다면 필요한게,
대용량 I/O. 특히 서버 쪽에서 처리하기 쉬운 형태일 것 서버 쪽에서 사용 가능한 스크립트 레이어가 있을 것 – 자체 제작도 좋고 Lua, GameMonkey 같은 류의 스크립트랑 연동이 가능할 것 Multi-threaded 환경에서의 적정 수준의 locking-primitive가 제공될 것 속도 – 해당 서버의 패러다임에서 충분한 성능(eg. 접속자 수, 반응 시간 등)을 얻어낼 수 있을 것 게임의 규모가 커졌을 때의 대응 방식 정도일 것 같은데.</description>
    </item>
    
    <item>
      <title>리뷰: 똑똑하고 100배 일잘하는 개발자 모시기</title>
      <link>https://rein.kr/posts/2007-11-30-%EB%A6%AC%EB%B7%B0-%EB%98%91%EB%98%91%ED%95%98%EA%B3%A0-100%EB%B0%B0-%EC%9D%BC%EC%9E%98%ED%95%98%EB%8A%94-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%AA%A8%EC%8B%9C%EA%B8%B0/</link>
      <pubDate>Fri, 30 Nov 2007 16:19:43 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-11-30-%EB%A6%AC%EB%B7%B0-%EB%98%91%EB%98%91%ED%95%98%EA%B3%A0-100%EB%B0%B0-%EC%9D%BC%EC%9E%98%ED%95%98%EB%8A%94-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%AA%A8%EC%8B%9C%EA%B8%B0/</guid>
      <description>Rica로부터 대여한 조엘 스폴스키의 &amp;ldquo;똑똑하고 100배 일잘하는 개발자 모시기&amp;quot;를 읽었다.
일단 몇 가지를 지적하고 넘어가자면,
책 내용도 그렇고, Rica가 이미 지적한 것처럼 절대로 &amp;ldquo;조엘 온 소프트웨어&amp;rdquo; 시즌2가 아니다. 내용은 모두 &amp;ldquo;뛰어난 개발자를 어떻게 채용해야하는가&amp;rdquo; (혹은 그 이유에 대한 설명)에 대한 글이다. 번역은 평이하다. (눈에 걸리는 것은 없지만 조엘 온 소프트웨어처럼 맛깔스럽진 않다) 일단 이정도.
책 내용이 뛰어난 개발자를 어떻게 뽑을지에 대한 _조엘 자신이 생각하는/사용하는 방법_에 몰려있어서 개발자들이 직접 보기엔 좀 재미없을지도 모른다.</description>
    </item>
    
    <item>
      <title>C/C&#43;&#43;의 예외 모델 차이</title>
      <link>https://rein.kr/posts/2007-11-29-cc%EC%9D%98-%EC%98%88%EC%99%B8-%EB%AA%A8%EB%8D%B8-%EC%B0%A8%EC%9D%B4/</link>
      <pubDate>Thu, 29 Nov 2007 16:08:44 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-11-29-cc%EC%9D%98-%EC%98%88%EC%99%B8-%EB%AA%A8%EB%8D%B8-%EC%B0%A8%EC%9D%B4/</guid>
      <description>try { throw } catch {} &amp;amp; do { break } while (false) 에서 트랙백. C++의 예외 처리가 느리기 때문에 do while을 이용한 코드 블럭 탈출 / setjmp/longjmp를 이용한 함수간 예외 전달을 다뤘길래 문제가 있다고 생각하는 점을 지적하려고 포스팅.
C에서는 예외의 발생을 일반적으로 에러 번호를 통해서 전파하며, 특정 블럭의 실행을 끝내기 위해서
do { // do some thing } while ( 0 ); 같은 코드 블럭에서 break 문을 사용하는 방법을 많이 쓴다.</description>
    </item>
    
    <item>
      <title>리뷰: 라프 코스터의 재미이론</title>
      <link>https://rein.kr/posts/2007-11-29-%EB%A6%AC%EB%B7%B0-%EB%9D%BC%ED%94%84-%EC%BD%94%EC%8A%A4%ED%84%B0%EC%9D%98-%EC%9E%AC%EB%AF%B8%EC%9D%B4%EB%A1%A0/</link>
      <pubDate>Thu, 29 Nov 2007 10:17:21 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-11-29-%EB%A6%AC%EB%B7%B0-%EB%9D%BC%ED%94%84-%EC%BD%94%EC%8A%A4%ED%84%B0%EC%9D%98-%EC%9E%AC%EB%AF%B8%EC%9D%B4%EB%A1%A0/</guid>
      <description>흔히 울온이라고 부르기도하는 울티마 온라인;Ultima Online의 수석 기획자였던 라프 코스터;Raph Koster의 재미 이론을 다 읽었다. 원제가 &amp;ldquo;A theory of fun for game design&amp;rdquo; 인 것이 말해주듯이 컴퓨터/비디오 게임에서 재미란 어떤 것이고, 그것을 구성하는 것은 무엇이며, 우리 – 이 책에서 표현되는 _&amp;ldquo;우리&amp;quot;는 게임 디자이너;기획자_에 가깝다 – 가 해야할 일은 무엇인가에 관한 내용들이 담겨 있다. [genie 8995527617]
사실 게임의 전반을 이루는 재미라는 요소에 대해서 깊게 생각해보거나 배울 기회는 없었다. 친구나 동료들과 얘기할 때에도 보통은 &amp;ldquo;이런 점 때문에 이 게임이 재밌다/재미없다&amp;rdquo; 라는 형식의 대화를 하게 되고, 학부 컴퓨터 게임 수업1에서 배우는 내용도 기술적인 부분과 서사적인 부분에 중점을 두고 있다.</description>
    </item>
    
    <item>
      <title>SSH 터미널, SCP에서 한글 사용</title>
      <link>https://rein.kr/posts/2007-11-28-linux-%EC%84%9C%EB%B2%84%EC%97%90%EC%84%9C-%ED%95%9C%EA%B8%80-%EC%82%AC%EC%9A%A9/</link>
      <pubDate>Wed, 28 Nov 2007 00:13:53 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-11-28-linux-%EC%84%9C%EB%B2%84%EC%97%90%EC%84%9C-%ED%95%9C%EA%B8%80-%EC%82%AC%EC%9A%A9/</guid>
      <description>이 글은 동아리 linux 서버 사용을 위한 도움글로 작성되었습니다. MS Windows 환경에서 널리 사용되는 SSH 터미널인 PuTTY와 SCP 클라이언트인 WinSCP 를 기준으로 설명합니다.
현재 가동 중인 linux 서버인 그랑엘베르(IDC), 유리엘(넬방) 2대는 기본 설정에서 한국어(UTF-8)으로 설정되어 있다. 이 상태에서 쓴다고 가정하면 우선 터미널 셋팅은, (PuTTY 기준으로)
Window - Translation의 캐릭터 셋 항목을 UTF-8으로 해준다. (반면에 한국어 euc-kr; ko_KR.EUC-KR 을 쓰면 font encoding으로) Window - Appearance의 font를 한글이 가능한 _고정폭 폰트_로 설정한다. 그리고 스크립트가 한글인지 확인한다.</description>
    </item>
    
    <item>
      <title>마법사 책 한국어판</title>
      <link>https://rein.kr/posts/2007-11-23-%EB%A7%88%EB%B2%95%EC%82%AC-%EC%B1%85-%ED%95%9C%EA%B5%AD%EC%96%B4%ED%8C%90/</link>
      <pubDate>Fri, 23 Nov 2007 21:01:05 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-11-23-%EB%A7%88%EB%B2%95%EC%82%AC-%EC%B1%85-%ED%95%9C%EA%B5%AD%EC%96%B4%ED%8C%90/</guid>
      <description>오전에 회사로 알라딘에서 주문한 &amp;ldquo;컴퓨터 프로그램의 구조와 해석&amp;rdquo;1과 &amp;ldquo;라프 코스터의 재미 이론&amp;rdquo;2 이 도착.
두께가 좀 두꺼워지고(양장이니), 판형도 조금(Orz) 커졌지만, 책 내용 어디가겠습니까; 저는 들을 기회가 없었지만, 지금 학부생들은 많이 듣고 있을 마이광근 교수님의 프로그래밍의 원리 교재이기도 하고 그리고 널리 읽히는 책이라고 생각했었는데 한국어판이 나와서 기쁘군요.
책의 장점은 잘 알려져 있습니다. IBM DeveloperWorks의 연재 - 해커 문화의 뿌리를 찾아서 - 를통해서도 볼 기회가 있었고, 프로그래밍에 관한 본질적인 내용을 잘 다루는 책이라고도 하고요.</description>
    </item>
    
    <item>
      <title>서점에서 겪은 일</title>
      <link>https://rein.kr/posts/2007-11-22-%EC%84%9C%EC%A0%90%EC%97%90%EC%84%9C-%EA%B2%AA%EC%9D%80-%EC%9D%BC/</link>
      <pubDate>Thu, 22 Nov 2007 21:59:50 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-11-22-%EC%84%9C%EC%A0%90%EC%97%90%EC%84%9C-%EA%B2%AA%EC%9D%80-%EC%9D%BC/</guid>
      <description>기분 전환 겸, 읽을 책이 떨어져가는 것도 있고해서 겸사겸사 서점에 갔습니다.
사려고 했던 책은 바로 &amp;ldquo;초난감 기업의 조건&amp;rdquo;. 발매일이 2일 전이기 때문에 안심하고 갔습니다 – 반디앤루니스 코엑스 서점엔 전날 나온 책이 가끔 없는 경우가 있어서 아마 오프라인 서점들이면 비슷할 것 같지만; 박재호 님, 이해영 님 이렇게 두 분이 번역하는 경우1 번역의 질도 좋고해서 기대 만빵인 상태로 서점에 도착. 익히 가던(…) 전산/컴퓨터관련 책들을 훑는데 없습니다. 검색해보니 이게 왠 걸, 기업/경영 부분에 있다고 합니다.</description>
    </item>
    
    <item>
      <title>전자레인지, 무선랜, 그리고 Xbox 360 무선 컨트롤러의 공통점</title>
      <link>https://rein.kr/posts/2007-11-19-%EC%A0%84%EC%9E%90%EB%A0%88%EC%9D%B8%EC%A7%80-%EB%AC%B4%EC%84%A0%EB%9E%9C-%EA%B7%B8%EB%A6%AC%EA%B3%A0-xbox-360-%EB%AC%B4%EC%84%A0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC%EC%9D%98-%EA%B3%B5%ED%86%B5/</link>
      <pubDate>Mon, 19 Nov 2007 22:15:08 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-11-19-%EC%A0%84%EC%9E%90%EB%A0%88%EC%9D%B8%EC%A7%80-%EB%AC%B4%EC%84%A0%EB%9E%9C-%EA%B7%B8%EB%A6%AC%EA%B3%A0-xbox-360-%EB%AC%B4%EC%84%A0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC%EC%9D%98-%EA%B3%B5%ED%86%B5/</guid>
      <description>무선랜을 우리가 흔히 사용하는 IEEE 802.11 시스템으로 생각했을 때 이 세 가지는 적어도 한 가지, 그리고 서로에게 지대한 영향을 주는 한 가지 공통점이 있는데, 과연 그것은?
정답은 같은 주파수의 전자기파를 사용한다/방출한다.
사실 뭔가 블로깅은 해야겠는데, 뭘 블로깅할까 고민하다 일주일 전 쯤에 lapiz씨와의 대화가 생각나서.
Xbox 360을 처음 사왔을 때 무선 컨트롤러가 인식이 안되서, JStrane의 무선 컨트롤러를 강탈해다가 테스트를 했었는데, 역시 인식이 안되서 본체를 교환했다. 그 얘기를 lapiz씨한테 했더니,
&amp;ldquo;야 그거 옆 집에서 전자레인지 돌리는거 아냐?</description>
    </item>
    
    <item>
      <title>리뷰: 프로그래밍 유니버스</title>
      <link>https://rein.kr/posts/2007-11-14-%EB%A6%AC%EB%B7%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%9C%A0%EB%8B%88%EB%B2%84%EC%8A%A4/</link>
      <pubDate>Wed, 14 Nov 2007 18:59:22 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-11-14-%EB%A6%AC%EB%B7%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%9C%A0%EB%8B%88%EB%B2%84%EC%8A%A4/</guid>
      <description>월요일 저녁에 구입했던 책 &amp;ldquo;프로그래밍 유니버스&amp;quot;를 오전 출근길에 다 읽었다. 번역도 깔끔했고 – 역시 해당 분야를 아는 사람이 번역을 해야 좋다 – 내용도 무척 흥미로웠다.
우선 초반~중반까지는 대학 교양으로 배우는 수준의 전산 이론(정보이론에 가까운 것들)과 열역학에 대해서 설명하고, 엔트로피의 정보 이론적인 의미에 대해서 주로 이야기 한다. 덤으로 컴퓨터를 만들기위한 기초가 되는 논리 회로와 모든 논리식을 표현하기 위한 조건을 다룬다.
그리고 모든 물리계는 정보를 보관하고 처리한다 라는 내용으로 끌고간다. 여기에서 양자 계산 과정과 양자 역학에 따라 물리계가 변하는게 같다는 것을 설명하고, 그런 이유에서 우주는 거대한 양자 컴퓨터 라는 저자의 결론 중 하나가 나온다.</description>
    </item>
    
    <item>
      <title>오늘의 삽질: boost::shared_ptr&lt;T&gt; 이렇게 쓰면 망한다!</title>
      <link>https://rein.kr/posts/2007-11-13-%EC%98%A4%EB%8A%98%EC%9D%98-%EC%82%BD%EC%A7%88-boostshared_ptrt-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EC%93%B0%EB%A9%B4-%EB%A7%9D%ED%95%9C%EB%8B%A4/</link>
      <pubDate>Tue, 13 Nov 2007 22:58:32 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-11-13-%EC%98%A4%EB%8A%98%EC%9D%98-%EC%82%BD%EC%A7%88-boostshared_ptrt-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EC%93%B0%EB%A9%B4-%EB%A7%9D%ED%95%9C%EB%8B%A4/</guid>
      <description>강력하고 C++ 패러다임에 잘 부합하기로 유명한 라이브러리로 Boost의 일련의 라이브러리들이 있다. 그 중에서도 유명한 것을 꼽으라면 STL의 generic programming 패러다임 중 특히 함수 객체(함수자; function object; functor)를 잘 활용하게 해주는 boost::lambda 라거나, 정규식 팩키지로 사용되는 boost::regex, 그리고 이 포스팅의 주인공인 boost::shared_ptr 를 포함한 스마트 포인터 팩키지가 있다. 물론 이외에도 C++ TR1 에 포함된 많은 라이브러리들이 있으니 직접 https://boost.org 를 방문해 볼 것을 권한다 :)
Boost의 메모리 관련 라이브러리 중에서도 포인터의 참조 카운트에 기반해서 동작하는 스마트 포인터인 shared_ptr&amp;lt;T&amp;gt;는 그 편리함과 거의 포인터에 유사한 동작을 제공하며, 별도의 라이브러리를 빌드할 필요도 없고 단순히 헤더파일만 추가해주면 되서 쓰기가 편하다.</description>
    </item>
    
    <item>
      <title>Peanuts</title>
      <link>https://rein.kr/posts/2007-11-09-peanuts/</link>
      <pubDate>Fri, 09 Nov 2007 13:08:28 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-11-09-peanuts/</guid>
      <description>흔히 찰리 브라운Charlie Brown과 스누피Snoopy 로 말하면 많은 사람들이 알아듣는 찰스 M. 슐츠(Charles M. Schulz)의 Peanuts는 사실 rein이 가장 좋아하는 코믹 스트립이다.
어제 뜬금없이 이게 다시 보고싶어져서 국내에 발행된 것(신영 미디어를 통해 발간된게 있다)을 찾아봤으나 역시나 품절. 그래서 아마존을 찾아보니 멋진 물건이 있다.
조금 더 뒤져보니 2004년부터 2016년까지 순차적으로 Peanuts 스트립을 묶어서 양장본으로 발간하고 이 것들을 2권씩 묶어서 매년 10월에 박스셋으로 내놓는다고 한다. 현재 8개의 볼륨 = 4개의 박스셋이 나와있는 상태.</description>
    </item>
    
    <item>
      <title>intel Threading Building Block</title>
      <link>https://rein.kr/posts/2007-11-06-intel-threading-building-block/</link>
      <pubDate>Tue, 06 Nov 2007 17:59:59 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-11-06-intel-threading-building-block/</guid>
      <description>멀티스레드 프로그래밍을 할 때마다 느끼는거지만, 실제로 겪게 되는 작업 중 상당수가 굉장히 저수준low-level의 무언가라고 느낄 때가 많다. 특히 일일이 락lock을 잡고 락 순서 문제를 해결하고, 각각의 동기화된 작업들을 연동도 시켜줘야하고, 특정 컨테이너들이 동시 접근할 때 어떻게 처리되어야 할지도 일일이 결정해줘야 한다. 이런 방식의 문제는 이렇게 일일이 안해주면 성능이 안나오는 경우가 있다 라는 것인데, 저수준 작업을 최대한 줄이고, C++ 패러다임에 맞는 형태로 프로그래밍하려는 노력으로 intel에서 제공하는 intel Threading Building Block (이하 intel TBB ) 이라는 라이브러리가 있다.</description>
    </item>
    
    <item>
      <title>사용중인 Live Writer 플러그인 버그</title>
      <link>https://rein.kr/posts/2007-10-02-live-writer-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-%EB%B2%84%EA%B7%B8/</link>
      <pubDate>Tue, 02 Oct 2007 22:50:04 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-10-02-live-writer-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-%EB%B2%84%EA%B7%B8/</guid>
      <description>&lt;p&gt;대략 한 달 넘게 Live Writer로 글을 쓰다보니, 워드프레스에 있는 코드 입력 플러그인을 쓰지 않게 되었다. 그래서 Live Writer 용 플러그인을 좀 찾아봤는데, C++까지 지원되는 Syntax Highlighter라는 걸 발견했다. 그러나 링크를 하지 않는 이유가 있다(…).&lt;/p&gt;
&lt;p&gt;ASCII 범위를 벗어나는 문자를 입력하면 캡쳐된 화면처럼 깨진 문자가 표시되고, 입력을 계속하고 있으면 각 키 입력마다 깨진 문자가 2배씩 늘어난다.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Python string.find()의 성능</title>
      <link>https://rein.kr/posts/2007-09-30-python-stringfind%EC%9D%98-%EC%84%B1%EB%8A%A5/</link>
      <pubDate>Sun, 30 Sep 2007 22:16:31 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-30-python-stringfind%EC%9D%98-%EC%84%B1%EB%8A%A5/</guid>
      <description>바로 직전에 C++ STL의 std::string.find()의 성능을 테스트했다. 그리고 실망했다. 이번에는 요즘 널리 사용되고 있는 스크립트 언어 중 하나인 Python의 문자열을 가지고 테스트를 진행해봤다.
이전 테스트와 동등한 머신에서 WindowsXP/Python2.5을 사용하여 테스트를 수행하였다. Python의 문자열 검색이 일정 길이 이상에선 STL의 문자열 검색보다 월등히 빨랐다. 테스트 범위의 문자열에서 100ms초 이하에 검색이 끝나는 결과를 보여줬다 – 짧은 길이에서는 너무 빨리 결과가 나와서 100번 정도 루프를 돌리고 시간을 측정해야 했다. 그리고 가장 중요한 것, 문자열 길이를 늘려가는 것에 대해(이전 테스트처럼 원본 문자열과 패턴 문자열을 모두 증가) 선형으로 복잡도가 증가했다.</description>
    </item>
    
    <item>
      <title>std::string.find() 의 성능</title>
      <link>https://rein.kr/posts/2007-09-30-stdstringfind-%EC%9D%98-%EC%84%B1%EB%8A%A5/</link>
      <pubDate>Sun, 30 Sep 2007 17:16:08 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-30-stdstringfind-%EC%9D%98-%EC%84%B1%EB%8A%A5/</guid>
      <description>얼마 전에 jstrane군이 std::string.find()가 느리다고 불평하면서 linux/g++로 성능을 테스트해서 포스팅한 것이 있다. Win32/VC++ 환경에서도 테스트를 진행해봤다. 여기의 그래프가 WindowsXP/VC++2005를 가지고 테스트한 결과다. (테스트 설계는 jstrane 블로그를 참조하자; naive 입력에 대해서 최악의 성능을 뽑아내는 방식이다)
길이에 대한 std::string.find()의 실행 시간 그래프가 2차 곡선을 그리고 있다. 즉, 원본 문자열의 길이가 m, 찾으려는 패턴의 길이가 n일 때 O(mn) 의 시간 복잡도를 갖는다.
jstrane이 테스트한 경우에도 그랬지만 STL의 string.find() 함수 구현이 _naive한 형태_이기 때문에 생기는 문제다.</description>
    </item>
    
    <item>
      <title>Live Writer manifest 파일을 보면서</title>
      <link>https://rein.kr/posts/2007-09-29-live-writer-manifest-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EB%B3%B4%EB%A9%B4%EC%84%9C/</link>
      <pubDate>Sat, 29 Sep 2007 21:12:15 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-29-live-writer-manifest-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EB%B3%B4%EB%A9%B4%EC%84%9C/</guid>
      <description>Windows Live Writer는 블로그 설정을 자동으로 읽어오는 기능이 있다. 단 해당 블로깅 툴에서 특정 파일(wlwmanifest.xml)을 제공해줘야한다. 이 블로그의 경우엔 이런 xml 파일로 제공되고 있다. 이 파일을 잘 사용하면 블로그 개발자와 Live Writer 쪽 개발자의 일이 잘 쪼개지게되고, 사용자의 부담도 줄어들 수 있는 것 같다. 그래서 포스팅을 하나.
이 파일이 Live Writer 쪽에서 사용되기 시작한 것은 베타 2 부터인데 (현재 베타 3) manifest 파일에 관한 MSDN의 설명에 따르면,
블로깅 툴에서 사용 가능한 기능들의 목록을 알려줄 수 있다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;에는 final 키워드가 있는가?</title>
      <link>https://rein.kr/posts/2007-09-27-c%EC%97%90%EB%8A%94-final-%ED%82%A4%EC%9B%8C%EB%93%9C%EA%B0%80-%EC%9E%88%EB%8A%94%EA%B0%80/</link>
      <pubDate>Thu, 27 Sep 2007 00:31:33 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-27-c%EC%97%90%EB%8A%94-final-%ED%82%A4%EC%9B%8C%EB%93%9C%EA%B0%80-%EC%9E%88%EB%8A%94%EA%B0%80/</guid>
      <description>Java 프로그래밍 언어를 처음 접한게 아마 학부 1학년 2학기의 컴퓨터 프로그래밍 수업이었던 것 같다. 당시 Java의 기능 중에 마음에 들었던 것이 final 키워드의 존재였다.
Java의 final 키워드는 해당 함수를 static 하게 바인딩(binding)하게 해주거나, 상속받지 못하게 하거나 등등의 역할을 하는데, 주목했던 부분은 바로 상속을 금지하는 것. C++의 특성상, 특정 class를 상속받지 못하게하는게 필요할 때가 있다. 예를 들어서 virtual function table (가상 함수 테이블; 일명 vtable) 포인터를 위한 포인터 공간이 아까워서(매우 작은 데이터 클래스가 필요한 경우) 이러는 경우도 있고, 라이브러리의 요구사항에 의해서 그런 경우도 있을 수 있다.</description>
    </item>
    
    <item>
      <title>밴티지 마스터 택틱스의 추억</title>
      <link>https://rein.kr/posts/2007-09-26-vantage-master-tactics-review/</link>
      <pubDate>Wed, 26 Sep 2007 14:55:50 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-26-vantage-master-tactics-review/</guid>
      <description>고어핀드군의 파랜드 택틱스(FT) 포스팅을 보고 삘받아서 나도 밴티지 마스터 택틱스(VMT)에 관한 포스팅을 하나.
Falcom에서 제작했으며 시기를 1998년에 발매되어 한동안 즐겼었던 게임이다. 일본식 RPG의 명가 Falcom에서 제작되어서인지 SRPG에 속한다고 주장하고 있으나 실상은 일종의 턴방식 전략 시뮬레이션 게임.
게임 자체는 구조가 굉장히 단순하다. 우선 자기 자신의 아바타인 &amp;ldquo;마스터&amp;quot;가 있으며, 이 마스터는 네이티얼이라는 소환수를 소환하여 전투를 벌이게 된다. 4 속성의 소환수와 그 안에서의 상성관계, 그리고 각 계열의 다양한 소환수를 사용할 수 있다. 자원은 딱 하나 마나인데, 이 마나는 점령한 마법석 수에 마스터의 마법 능력에 관한 상수를 곱해서 일정 턴마다 들어오게 된다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;의 연산자는 내장 연산자가 아닐 수 있다</title>
      <link>https://rein.kr/posts/2007-09-24-c%EC%9D%98-%EC%97%B0%EC%82%B0%EC%9E%90%EB%8A%94-%EB%82%B4%EC%9E%A5-%EC%97%B0%EC%82%B0%EC%9E%90%EA%B0%80-%EC%95%84%EB%8B%90-%EC%88%98-%EC%9E%88%EB%8B%A4/</link>
      <pubDate>Mon, 24 Sep 2007 11:02:09 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-24-c%EC%9D%98-%EC%97%B0%EC%82%B0%EC%9E%90%EB%8A%94-%EB%82%B4%EC%9E%A5-%EC%97%B0%EC%82%B0%EC%9E%90%EA%B0%80-%EC%95%84%EB%8B%90-%EC%88%98-%EC%9E%88%EB%8B%A4/</guid>
      <description>C++ 의 연산자들은 overloading 될 수 있고, 이에 따라 동작이 변할 수 있다. 내가 몇 일전에 KLDP 질문 글에 답변을 올리다가 저지른 실수를 적어보겠다.
사실 질문글 자체는 간단했는데, C-style 문자열을 위한 메모리를 동적으로 할당하는데 strlen 으로 bytes 길이를 구한게 아니라 sizeof(char* type pointer)로 포인터의 크기를 구한 후에 문자열을 복사해서 런타임 오류가 발생하는 문제였다. 그래서 &amp;ldquo;strlen( )&amp;rdquo; 쓰세요로 답변 끝.
문제는 여기에서 시작. 다른 한 명이 &amp;ldquo;delete로 char* 배열을 제거할 때와, delete[] 로 배열을 제거할 때 차이가 나지 않았다&amp;rdquo; 라고 추가 질문을 해서, &amp;ldquo;내장 타입에선 차이가 없다&amp;rdquo; 라고 답변을 달았다.</description>
    </item>
    
    <item>
      <title>금화 나누기 문제</title>
      <link>https://rein.kr/posts/2007-09-22-%EA%B8%88%ED%99%94-%EB%82%98%EB%88%84%EA%B8%B0-%EB%AC%B8%EC%A0%9C/</link>
      <pubDate>Sat, 22 Sep 2007 17:48:32 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-22-%EA%B8%88%ED%99%94-%EB%82%98%EB%88%84%EA%B8%B0-%EB%AC%B8%EC%A0%9C/</guid>
      <description>지난 주 금요일에 구입한 &amp;ldquo;승자의 저주&amp;quot;에 나왔었던 내용이기도 하고, 그 이전에 읽었던 &amp;ldquo;행동 경제학&amp;quot;에서 다뤘던 문제이기도 한데. 아주 재밌는 문제가 있다. 마침 yundream의 프로그래밍 이야기에서 &amp;ldquo;구글 입사자 문제&amp;rdquo;라는 제목으로 올라온 포스팅에 비슷한 문제가 있어서 같이 소개해봅니다.
우선 _간단한 버젼_입니다. (가능하면 해당 포스팅의 문제도 답을 펴기전에 미리 보시는게 :D )
100개의 금화가 있다. A, B 두 명이 이를 나누는데, A가 분배 비율을 결정하고 B가 분배를 &amp;ldquo;승낙할지&amp;quot;를 결정한다. 승낙하지 않으면 둘에게는 금화가 지급되지 않고, 승낙하면 A가 정한 비율로 분배가 이루어진다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;: 포인터 vs. 참조자</title>
      <link>https://rein.kr/posts/2007-09-20-c-%ED%8F%AC%EC%9D%B8%ED%84%B0-vs-%EC%B0%B8%EC%A1%B0%EC%9E%90/</link>
      <pubDate>Thu, 20 Sep 2007 18:49:05 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-20-c-%ED%8F%AC%EC%9D%B8%ED%84%B0-vs-%EC%B0%B8%EC%A1%B0%EC%9E%90/</guid>
      <description>C++ 프로그래밍 언어에서는 객체를 간접적으로 접근하게 해주는 수단으로 크게 2가지를 제공해준다. 한가지가 포인터; pointer고 나머지 하나가 – C 언어에는 없는 – 참조자; reference 다.
사실 이 둘은 거의 비슷한 용도로 쓰인다.
크기가 커서 직접 전달하는게 힘든 함수 인자 혹은 멤버 변수 전달용 값에 의한 전달; pass by value 로 할 수 없는 일의 처리 (예: swap 함수) 다형성; polymorphism 이 사용되어야 하는 상황 C++ faq-lite 에서 설파하고 있듯이 – 혹은 스캇 마이어스; Scott Meyers의 More Effective C++1 에서 설명하고 있듯이,</description>
    </item>
    
    <item>
      <title>멀티스레딩과 STL</title>
      <link>https://rein.kr/posts/2007-09-19-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9%EA%B3%BC-stl/</link>
      <pubDate>Wed, 19 Sep 2007 00:16:27 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-19-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9%EA%B3%BC-stl/</guid>
      <description>C++은 일반화 프로그래밍; generic programming 을 지원하는 언어다. 임의의 타입 T에 대한 클래스, 함수 등을 지정할 수 있고, 이를 컴파일 타임에 코드를 만들어내서1 사용할 수 있게 해준다. 사실 이런 부분이 가장 잘 반영되어 있는 것이 standard template libaray; STL 이고, 얼마 전에 확정된 tr1에 포함된 수많은 boost library 들이다.
이 중에서 STL과 멀티스레딩; multithreading 에 관해 한 가지 얘기를 해보려한다.IRC 채널에 STL의 스레드 안전성에 관한 뻘글, 또 다른 뻘글의 링크가 올라오기도 했었고, 오늘은 GPG 스터디 포럼에 STL 메모리 단편화 문제에 관한 질문이 올라 오면서 멀티스레딩 얘기가 잠깐 나오기도 했다 (중간의 답변글 중 하나가 너무 간단히 스레드 안전하지 않아 라고 말하고 있다).</description>
    </item>
    
    <item>
      <title>한국의 웹에서 살아간다는 것</title>
      <link>https://rein.kr/posts/2007-09-18-%ED%95%9C%EA%B5%AD%EC%9D%98-web%EC%97%90%EC%84%9C-%EC%82%B4%EC%95%84%EA%B0%84%EB%8B%A4%EB%8A%94-%EA%B2%83/</link>
      <pubDate>Tue, 18 Sep 2007 00:01:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-18-%ED%95%9C%EA%B5%AD%EC%9D%98-web%EC%97%90%EC%84%9C-%EC%82%B4%EC%95%84%EA%B0%84%EB%8B%A4%EB%8A%94-%EA%B2%83/</guid>
      <description>소위 IT 강국이라는 한국의 web웹 환경에서 살아간다는 것 (SW 개발이 가능한 곳이 게임회사 일부, 포탈 일부인 나라에서 저런 소리는 웃기지도 않지만)
…편하지도 않은 MS IE를 써야하고, ActiveX를 설치해야하고, 원치않는 flash UI에 괴로워해야하고, MS IE에서만 실행되는 페이지에 절망하는 것
원룸 방세를 내기위해 국민은행 페이지에 접속. …인증이 안되네? IE 7.0이라 이거지. 이러면 탭하나 써보겠다고 버젼 올린 의미가. 어서 openweb 쪽의 소송에서 승리해서 이런 ㅄ같은 은행 사이트가 개편되었으면 좋겠다.
yes24에 주문한 – God Delusion 원서가 싸더라 – 상품 페이지를 확인하러 들어갔다.</description>
    </item>
    
    <item>
      <title>IEEE 802.11n 제품이 등장하기 시작</title>
      <link>https://rein.kr/posts/2007-09-17-80211n-%EC%A0%9C%ED%92%88%EC%9D%B4-%EB%93%B1%EC%9E%A5%ED%95%98%EA%B8%B0-%EC%8B%9C%EC%9E%91/</link>
      <pubDate>Mon, 17 Sep 2007 20:36:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-17-80211n-%EC%A0%9C%ED%92%88%EC%9D%B4-%EB%93%B1%EC%9E%A5%ED%95%98%EA%B8%B0-%EC%8B%9C%EC%9E%91/</guid>
      <description>펀샵에서 보내오는 메일을 보다가, 이런 항목을 보고 조금 놀랐음
IEEE 802.11n 용 무선 라우터 … 라기보단 AP가 등장한 것. (IEEE 802.11x라고 쓰기 귀찮으니 이 이후는 802.11x로)
사실 802.11b 혹은 802.11g 가 좀 오래 사용된 감이 있다. 802.11n은 좀 빨리 나오긴 한 느낌 (사실 저 제품은 draft만 가지고 만들어서 내놨겠지만)
사실 802.11b/g는 모두 비슷한 기반 기술 – 여기서는 안테나 수에 의미를 둔다 – 을 사용하고 있고, DSSS + CCK를 사용한 802.11b의 경우 지금의 기준으로 보면 겨우 최대 11MBits/s 의 속도 밖에 나오지 않는다.</description>
    </item>
    
    <item>
      <title>Web 2.0 광고 하나</title>
      <link>https://rein.kr/posts/2007-09-13-web-20-%EA%B4%91%EA%B3%A0/</link>
      <pubDate>Thu, 13 Sep 2007 08:39:34 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-13-web-20-%EA%B4%91%EA%B3%A0/</guid>
      <description>어제 저녁에 썼던 글에 달린 reed 님의 댓글을 따라갔다가, 블로그 하단에서 UNIQLOCK이란 것을 발견. 뭔가 익숙한 이름이다 했더니 일본의 의류제조업체인 UNIQLO + clock의 합성어인듯?
이 포스팅에도 달아놔봤음 (클릭해서 따라가보면 개인 블로그에 달기 위한 자바 스크립트 링크를 생성해주는 곳이 있음; [캡쳐][1])
플래쉬 영상을 클릭해보니 이런 페이지로 옮겨지는데, 화면 구성은 일단 이렇다.
각 원의 짙은 부분이 블로그에 이 광고를 삽입한 사용자 수 / 옅은 부분이 본 횟수에 비례해서 커지는데, 세계 여기저기에 이런 광고를 달고 있는 사람이 이렇게 많다는 것은 꽤나 재밌다.</description>
    </item>
    
    <item>
      <title>블로그 광고에 대한 재밌는 글 하나</title>
      <link>https://rein.kr/posts/2007-09-12-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B4%91%EA%B3%A0%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9E%AC%EB%B0%8C%EB%8A%94-%EA%B8%80-%ED%95%98%EB%82%98/</link>
      <pubDate>Wed, 12 Sep 2007 20:41:38 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-12-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B4%91%EA%B3%A0%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9E%AC%EB%B0%8C%EB%8A%94-%EA%B8%80-%ED%95%98%EB%82%98/</guid>
      <description>WordPress dashboard (관리자 화면 첫 페이지) 에 링크되는 몇 몇 포스팅 중에 하나에서 재밌는 글을 발견. 블로그에 자동으로 삽입되는 광고들 – 구글 애드센스나 다음 애드클릭 같은 것들 – 에 대한 글인데, 내 블로그에는 광고를 삽입하지 않지만 나름 재미있게 읽어서 소개해볼까 한다.
내용을 요약하자면,
정기적으로 찾아오는 사람들 – 이글에서는 줄곧 your friends라고 표현 – 에게는 광고를 보여주지 말자. 정기적으로 찾아오고/댓글도 달아주지만 _아마 광고를 보여준다고 클릭하진 않는다_라는게 글쓴이의 생각 RSS 피드나 메일로 자동으로 받아서 보는 사람들 페이지에 광고를 삽입하지 말자 – 근데 이런데도 애드센스 삽입하나?</description>
    </item>
    
    <item>
      <title>인코딩과 문자집합: C/C&#43;&#43;</title>
      <link>https://rein.kr/posts/2007-09-12-%EC%9D%B8%EC%BD%94%EB%94%A9%EA%B3%BC-%EB%AC%B8%EC%9E%90%EC%A7%91%ED%95%A9-cc/</link>
      <pubDate>Wed, 12 Sep 2007 17:11:45 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-12-%EC%9D%B8%EC%BD%94%EB%94%A9%EA%B3%BC-%EB%AC%B8%EC%9E%90%EC%A7%91%ED%95%A9-cc/</guid>
      <description>이전에 다뤘던 내용들에 이어서, 이번엔 C/C++에서 이런 것들을 어떻게 다루고 있는지 얘기해보려한다. 모든 문자집합/인코딩 들을 다루려면 길어질테니 크게 세 가지만 가지고 얘기해보겠다.
euc-kr을 사용한 문자열 (혹은 다른 DBCS를 쓰는 경우들) Unicode를 사용하고 UTF-8 인코딩을 사용한 경우 Unicode BMP를 사용하고 UCS2를 사용한 경우 1, 2는 데이터를 저장하기 위해 보통 char를 사용하고, 3은 wchar_t를 쓴다. (이 이하는 그렇게 가정하고 진행)
문자열을 다룬다는 행동은 어떤 것들일까? 일단 데이터 교환을 위해서 서로 알고 있어야하는 것과 일반적인 연산은 다음과 같다고 생각한다.</description>
    </item>
    
    <item>
      <title>About</title>
      <link>https://rein.kr/about/</link>
      <pubDate>Wed, 12 Sep 2007 13:33:07 +0900</pubDate>
      
      <guid>https://rein.kr/about/</guid>
      <description>이 블로그는 그때그때 프로그래밍, 읽은 책, 플레이해 본 게임이나 일상의 이야기를 적는 공간입니다.
블로그의 모든 글은 별다른 언급이 없다면 Create Commonse License 3.0 (attribution/share-alike; 저자 표기 필요함, 동등 조건 배포 시 상업/비상용 여부와 관련 없이 허용)를 사용합니다. 다만 추가적인 작업이 없는 복사 행위는 허용하지 않으며, 개인적으로 보관하고 싶다면 노트 서비스나 블로그 서비스의 &amp;ldquo;비공개 글&amp;rdquo; 기능을 사용하시기 바랍니다.
또한 모든 경우에 대해서 블로그 주소가 아닌, 블로그 개별 글 주소를 포함해주시기 바랍니다.</description>
    </item>
    
    <item>
      <title>인코딩과 문자집합: Unicode</title>
      <link>https://rein.kr/posts/2007-09-12-%EC%9D%B8%EC%BD%94%EB%94%A9%EA%B3%BC-%EB%AC%B8%EC%9E%90%EC%A7%91%ED%95%A9-unicode/</link>
      <pubDate>Wed, 12 Sep 2007 07:30:17 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-12-%EC%9D%B8%EC%BD%94%EB%94%A9%EA%B3%BC-%EB%AC%B8%EC%9E%90%EC%A7%91%ED%95%A9-unicode/</guid>
      <description>이전 포스팅에서 인코딩과 문자집합; encoding and charset 그리고 그 자체를 저장하기 위한 데이터 형에 대해서 간략히 설명했었는데, 실제로 구현된 예를 들어보도록 하겠음
앞에서도 말했듯이,
특정 언어가 갖는 문자들을 숫자값들로 변환하는게 문자집합; charset의 개념 캐릭터의 숫자값들을 비트 패턴으로 저장할 수 있게 해주는게 인코딩 그리고 인코딩된 비트들을 저장하는게 기반 데이터 타입 (C/C++의 char 혹은 wchar_t) 로 되어 있다.
지구 상에 존재하는 언어가 몇 개인지는 알지 못하지만, 그걸 표현하기 위한 문자집합의 수가 매우매우 많다는 것은 간단한 예를 들 수 있다.</description>
    </item>
    
    <item>
      <title>RAF 발음(?) 알파벳</title>
      <link>https://rein.kr/posts/2007-09-11-raf-phonetic-alphabet/</link>
      <pubDate>Tue, 11 Sep 2007 21:14:08 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-11-raf-phonetic-alphabet/</guid>
      <description>밑에 쓴 라디오 알파벳 글의 고어핀드 군 댓글을 읽다가 어떤 방식이 Able company, Easy company 같은게 나오는 발음 알파벳을 사용했을 까 알아보게 되었음. 찾아보니 RAF 발음 알파벳; RAF phonetic alphabet 이란게 있더군.
대영제국 왕실 공군; United Kingdom Royal Air Force; RAF 의 무선 통신에서 사용되었던 방법이라는데, 1924~42 / 1942~43 / 1943~56 / 1956 이후 이렇게 기간을 나눠서 변화한 경향을 보여줌
Band of brothers에서 사용되던 각 중대 명칭들 – Able, Easy 같은 것들 – 을 1943~56년에 사용된 방식에서 찾아볼 수 있었는데, 대략 다음 목록임 (1956년 이후엔 이전 글에서 썼던 NATO 발음 알파벳으로 통합)</description>
    </item>
    
    <item>
      <title>라디오 알파벳</title>
      <link>https://rein.kr/posts/2007-09-11-radio-alphabet/</link>
      <pubDate>Tue, 11 Sep 2007 15:40:52 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-11-radio-alphabet/</guid>
      <description>라디오 알파벳; Radio alphabet 이란 것이 있다. 위키페디아를 찾아본 결과 NATO phonetic alphabet이라고 부르는 것 같다.
가끔 전화로 메일 주소를 알려준다거나 할 때 발음을 알아듣지 못해서 곤란해한 경험은 한 두번쯤은 있을 것이다 – 불러주다 불러주다 안되서 문자로 보내는 일이 잦아서 아예 처음부터 &amp;ldquo;이 번호로 문자 보내면 될까요?&amp;ldquo;라고 해버린다. 특히나 L, M, N 같이 우리말 발음 차이가 전화로 구분하기 힘든 것들이 섞이게 되면 정말 괴롭다 Orz
요즘은 이런 식으로 문자 데이터를 보내기가 쉬워져서 어느 정도 회피할 수 있지만 예전에는 어떤 방법을 써야했을까?</description>
    </item>
    
    <item>
      <title>인코딩과 캐릭터셋</title>
      <link>https://rein.kr/posts/2007-09-11-charset-and-encoding/</link>
      <pubDate>Tue, 11 Sep 2007 00:04:50 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-11-charset-and-encoding/</guid>
      <description>예전에 인코딩과 캐릭터셋; encoding and character set 이란 주제로 페이지를 작성하고 있었는데, 쓰기 시작하고 얼마 안지나서 대학원 일이 늘어나 쓰기를 관뒀던 주제를 다시 써보려고 한다.
굳이 프로그래밍 언어를 딱 골라잡아서 얘기하지 않아도, 현재 주류에 해당하는 언어들에는 – 몇몇 예외가 있긴하지만 – 다국어를 표현하기 위한 개념이나 요소들이 조금씩 들어가 있다. 현재 주류 언어 중에 가장 오래되었다고 / 그리고 가장 기본적이라고 할 수 있는 C언어의 경우에는 특정 &amp;lsquo;문자&amp;rsquo;를 저장하는 단위로 두 가지 타입을 사용하고 있다.</description>
    </item>
    
    <item>
      <title>PS/2 키보드 문제</title>
      <link>https://rein.kr/posts/2007-09-10-keyboard-problem-alt-printscreen-operation-ps2/</link>
      <pubDate>Mon, 10 Sep 2007 12:20:56 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-10-keyboard-problem-alt-printscreen-operation-ps2/</guid>
      <description>집에서 사용 중인 키보드는 리얼포스 101 키 (영문) 이고 사용 중인 보드는 intel DP35 (P35 chipset) 를 사용 중이다. 문제는 이 메인 보드에 PS/2 포트가 없다는 것이다. – 그래서 OS 설치할 때 하마의 HHK2Lite를 빌려다가 설치.
설치한 후에는 PS/2 키보드 + 마우스를 묶어서 USB 포트 하나로 맵핑해주는 케이블을 구입해다가 쓰고 있다 – 마우스가 USB 전용이라 키보드만 연결해서 쓰지만 사실 이 케이블로 연결해서 잘 쓰고 있었는데 주말에 좀 황당한 일을 당했다. ALT + PrintScreen 키를 이용해서 다이얼로그 박스 단위로 화면을 캡쳐하는 기능이 동작하지 않는 것이다.</description>
    </item>
    
    <item>
      <title>Windows Live Writer (Beta3) 사용 중</title>
      <link>https://rein.kr/posts/2007-09-08-windows-live-writer-beta3-%EC%82%AC%EC%9A%A9-%EC%A4%91/</link>
      <pubDate>Sat, 08 Sep 2007 00:03:45 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-08-windows-live-writer-beta3-%EC%82%AC%EC%9A%A9-%EC%A4%91/</guid>
      <description>Windows Live Suite의 일부로 제공되는 Windows Live Writer를 사용하기 시작했음 (메일 aggregation/툴바/메신저 등등 스윗에는 이것저것 많지만 관심가는게 이거 하나인 것은; /먼산)
아직 모든 블로그가 지원되는 것은 아닌 것 같다. 기본적으로 잘 알려진 XMLRPC 기반의 API를 가진 블로그들을 지원하는 것으로 보이는데 – 혹은 MS에서 서비스하는 것들이거나 – , 지원되는 블로그들은 일단 MS의 Live space, Sharepoint 그리고 잘 알려진 블로그 툴들인 WordPress, Blogger, MovableType/LiveJournal, TypePad 등이다1.
한국에서 많이 사용되고 있는 – 나는 개인적으로 WP를 쓰지만 Orz – tistory, TT 등도 잘 알려진 API 셋을 구현한 것으로 알고 있으니 쓸 수 있지 않을까;</description>
    </item>
    
    <item>
      <title>Creative Commons License를 사용하는 이유</title>
      <link>https://rein.kr/posts/2007-09-05-creative-commons-license%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0/</link>
      <pubDate>Wed, 05 Sep 2007 11:56:46 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-05-creative-commons-license%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0/</guid>
      <description>이 블로그는 현재 CCL 2.0 Korea (저작자 표시 / 비영리 / 동일조건변경허락) 를 사용하고 있다.
이런 라이센스를 사용하고 있는 이유를 설명하자면, 웹이라거나 지면이라거나 일단 글을 쓰면 – 계약에 따라 이전될 수는 있지만 – 저작권이 생기게 된다. 이런 저작권을 일일이 확인받지 않고도 확장된 작업이나 공유를 쉽게 하기 위해서 일단 사용하고 있다. 그리고 내가 생각하는 공유의 원칙은 좀 미묘(?)한데, 일단 다음과 같다.
공유를 목적으로 하는 것이라면 링크를 사용하자. PermaLink는 이런 목적에 매우 적합하다.</description>
    </item>
    
    <item>
      <title>금요일에 지른 물건</title>
      <link>https://rein.kr/posts/2007-09-02-%EA%B8%88%EC%9A%94%EC%9D%BC%EC%97%90-%EC%A7%80%EB%A5%B8-%EB%AC%BC%EA%B1%B4/</link>
      <pubDate>Sun, 02 Sep 2007 22:57:01 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-09-02-%EA%B8%88%EC%9A%94%EC%9D%BC%EC%97%90-%EC%A7%80%EB%A5%B8-%EB%AC%BC%EA%B1%B4/</guid>
      <description>금요일 퇴근 길에 코엑스 반디앤루니스에 들렸다가 지른 책 두 권.
우선 박노자의 &amp;ldquo;우리가 몰랐던 동아시아&amp;rdquo; : 당분간 출퇴근 시간에 얼마 전에 지른 살라딘 과 함께 읽게될듯함.
두번째로는 애거서 크리스티의 &amp;ldquo;비밀 결사&amp;rdquo;.
황금가지에서 애거서 크리스티 전작품을 새로? 번역해서 내놓고 있다 – 물론 나는 고향집에 가면 해문에서 출판했던게 50권 정도 있을텐데 -_-;;; – 그런 이유로 맘에 드는걸 사려고하는데, 대략 어제 &amp;ldquo;비밀 결사&amp;quot;가 나온걸 확인하기 전까지는 &amp;ldquo;토미 &amp;amp; 터펜스&amp;rdquo;; Tommy &amp;amp; Tuppence 가 나오는 작품이 한 개도 발행되지 않았었다.</description>
    </item>
    
    <item>
      <title>WordPress 2.3 Beta1 사용시작</title>
      <link>https://rein.kr/posts/2007-08-30-wordpress-23-beta1-%EC%82%AC%EC%9A%A9%EC%8B%9C%EC%9E%91/</link>
      <pubDate>Thu, 30 Aug 2007 12:11:25 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-08-30-wordpress-23-beta1-%EC%82%AC%EC%9A%A9%EC%8B%9C%EC%9E%91/</guid>
      <description>어제 오후부터 WordPress 2.3 Beta1으로 블로그 페이지가 개편된 상태.
사실 플러긴이나 페이지 출력, 기타 등등의 큰 변화는 없는 것 같고 – 그랬으면 메이저 버젼 넘버가 바뀌었겠지만 – 가장 많이 변화한 것으로 보이는 것은 크게 2가지.
우선 각 블로그 포스트에 태그를 달 수 있게 변경 되었음 (현재는 플러그인을 사용해서 태그/태그 클라우드를 찍어내고 있음). 그런데 태그 클라우드라거나 태깅 관련된 페이지/옵션이 없어서 좀 난감함 -_-;; 아마 이에 맞춰서 테마들도 다시 나와야할텐데 이것도 좀 골치아플지도?</description>
    </item>
    
    <item>
      <title>블로그 검색어를 살펴보다가</title>
      <link>https://rein.kr/posts/2007-08-19-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B2%80%EC%83%89%EC%96%B4%EB%A5%BC-%EC%82%B4%ED%8E%B4%EB%B3%B4%EB%8B%A4%EA%B0%80/</link>
      <pubDate>Sun, 19 Aug 2007 23:13:54 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-08-19-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B2%80%EC%83%89%EC%96%B4%EB%A5%BC-%EC%82%B4%ED%8E%B4%EB%B3%B4%EB%8B%A4%EA%B0%80/</guid>
      <description>바로 밑의 글의 작업을 하다가 발견한 사실 하나
주요 리퍼러를 살펴보면 모든 검색 리퍼러를 살펴보면 구글 / 네이버 / 다음 순인데, 구글은 웹 페이지 검색과 블로그 검색에서 (그러니까 유입 순서) 들어온 것이었고, 다음의 경우에는 블로그 검색으로 유입된 것이었다.
그런데 네이버는 왜 웹 페이지 검색으로만. 해당하는 검색어로 블로그를 검색해도 나오지 않는다. 뭐 블로그가 웹 페이지의 부분 집합이긴 한데, 그래도 해당 분류 검색에 안나오는건 대체. 이글루, 티스토리, 태터툴즈만 블로그인 듯하다.
최근의 네이버 복사 방지 시스템 네이버 블로그 우선 검색 시스템에 따라 얼마 후면 어차피 네이버 쪽에 이 블로그 내용이 나오지도 않을 것 같으니 신경 끌까.</description>
    </item>
    
    <item>
      <title>검색어 인코딩 문제</title>
      <link>https://rein.kr/posts/2007-08-19-%EA%B2%80%EC%83%89%EC%96%B4-%EC%9D%B8%EC%BD%94%EB%94%A9-%EB%AC%B8%EC%A0%9C/</link>
      <pubDate>Sun, 19 Aug 2007 19:30:22 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-08-19-%EA%B2%80%EC%83%89%EC%96%B4-%EC%9D%B8%EC%BD%94%EB%94%A9-%EB%AC%B8%EC%A0%9C/</guid>
      <description>현재 이 블로그는 wordpress 2.x 버젼으로 운영되고 있다. 한국어 번역 판이 있다는 것을 알지 못해서 그냥 영문판으로 쓰기 시작했었고, 그런 의미에서 계속해서 그렇게 운영되고 있다.
그렇지만 UTF-8 기반이기 때문에 한국어 인코딩 문제는 없다 – 덤으로 서버로 사용되고 있는 유리엘이 최근 재설치 후에 기본 인코딩이 UTF-8이 되어서 파일 시스템 쪽과 호환성 문제도 없다. 사실 그래서 UTF-8이 아닌 방식으로 – 예를 들어 시스템 로케일(한글윈도우의 경우 UHC) 로 – URI를 보내는 구형 웹브라우져를 쓰는 경우 (혹은 호환성 모드에서 강제로 옛날방식으로 사용하는 경우), 이 홈페이지 전체에 있는 한글 이름 파일들 – 당연히 UTF-8으로 인코딩 된 이름 – 에 접근할 수 없게 된다.</description>
    </item>
    
    <item>
      <title>Win32 멀티스레드 프로그래밍에서 아쉬운 것</title>
      <link>https://rein.kr/posts/2007-08-19-win32-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%93%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%97%90%EC%84%9C-%EC%95%84%EC%89%AC%EC%9A%B4-%EA%B2%83/</link>
      <pubDate>Sun, 19 Aug 2007 12:56:26 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-08-19-win32-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%93%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%97%90%EC%84%9C-%EC%95%84%EC%89%AC%EC%9A%B4-%EA%B2%83/</guid>
      <description>Windows Server 2003까지 아쉬운 거라고 해야 맞겠지만 아직 2008이 내 손에 넘어온 것은 아니므로 일단 토픽은 저렇게;
Win32 API가 pthread 라이브러리에 비해서 가장 부족하다고 – 그리고 아쉽게 생각하는게 – 느껴지는게, conditional variable의 존재다. Event 라는 객체를 제공해주긴 하는데 2% 부족하다. 일단 Event는 두 가지 형태로 생성이 될 수 있다 – manual reset event (signaled -&amp;gt; non-signaled 전환이 수동) 와 auto reset event 2가지.
그리고 signaled state로 변환시키는 함수가 2가지 존재한다.</description>
    </item>
    
    <item>
      <title>Lock, lock, lock … #2</title>
      <link>https://rein.kr/posts/2007-08-16-9/</link>
      <pubDate>Thu, 16 Aug 2007 19:54:27 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-08-16-9/</guid>
      <description>Rica가 내 이전 글에 링크로 올려 준 beautiful code의 일부분에 해당하는 글을 지금 막 (제대로) 읽었음. 기억해 둬야할 점 + 읽다가 떠오른 것들을 정리해본다.
기억해야 할 것들 – lock이 좋지 않은 이유
(필요한 것 보다) 적은 수의 lock을 얻는 것은 문제가 된다 (필요한 것 보다) 많은 수의 lock을 얻는 것은 문제가 된다 – 심하면 데드락, 안 심해도 성능에 피해를 준다. 엉뚱한 lock을 잡고 있을 수 있다 – lock과 데이터 사이엔 명확히 정의되는 상관관계가 있는 것이 아니다.</description>
    </item>
    
    <item>
      <title>Windows 키 맵핑 바꾸기</title>
      <link>https://rein.kr/posts/2007-08-15-windows-%ED%82%A4-%EB%A7%B5%ED%95%91-%EB%B0%94%EA%BE%B8%EA%B8%B0/</link>
      <pubDate>Wed, 15 Aug 2007 08:26:46 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-08-15-windows-%ED%82%A4-%EB%A7%B5%ED%95%91-%EB%B0%94%EA%BE%B8%EA%B8%B0/</guid>
      <description>회사/집에서 Realforce 101 key를 쓴다.
이 키보드는 101키라서 때문에 흔히 쓰는(?) 한/영 전환 키와 윈도우즈 키가 존재하지 않는다. 한영키는 원래 잘 안 쓰고(shift+space 애용) 있어서 크게 문제가 안되었지만, 윈도우즈 키는 Win + R, Win + E를 꽤 쓰기 때문에 좀 불편해졌다. 그래서 찾은 방법이 registry에 등록된 키보드 Scancode map을 수정하는 것.
HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout 에 새로운 문자열 값 Scancode Map (binary data)를 추가하고,
00 00 00 00 00 00 00 00 02 00 00 00 5B E0 3A 00 00 00 00 00 를 데이터로 써준다.</description>
    </item>
    
    <item>
      <title>Lock, lock, lock …</title>
      <link>https://rein.kr/posts/2007-08-14-lock-lock-lock/</link>
      <pubDate>Tue, 14 Aug 2007 12:08:37 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-08-14-lock-lock-lock/</guid>
      <description>멀티 스레드 프로그램을 작성하는 경우 – 웹 서버처럼 스레드 상호간의 연관성이 적은 경우를 빼면 – 스레드 간에 공유 자원에 접근하는 부분은 언제나 문제가 된다.
제대로 작성하는 방법은 크게 2가지다.
Lock을 써서 해당 영역을 하나의 스레드만 접근하게 한다 – 적절한 난이도 Lock-free 한 구성을 만들어 낸다 – 잘 정의된 몇 가지 경우를 제외하고는 적용하기가 매우 힘들다. 우선 그나마 적절한 난이도를 갖는 lock을 사용한 프로그래밍에 관해서 이번 포스팅에서 몇 가지를 설명하려고 한다. Lock은 일종의 문처럼 동작하는데, 특정 스레드가 해당 문에 들어가면서 + 동시에 문을 잠글 수 있는 기능을 한다 (사실 이게 비유로는 조금 부적절한게, 문을 통하지 않고도 들어갈 수 있기 때문에 --; 모두가 규칙을 지켜줘야한다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;: const keyword는 어떻게 쓸까?</title>
      <link>https://rein.kr/posts/2007-08-09-c-const-keyword%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%93%B8%EA%B9%8C/</link>
      <pubDate>Thu, 09 Aug 2007 09:42:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-08-09-c-const-keyword%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%93%B8%EA%B9%8C/</guid>
      <description>C나 C# 그리고 Java 같은 언어와 C++이 가장 많이 다른 점 중에 하나는 const 라는 키워드를 지원한다는 점이다. (Java의 final이 살짝 비슷하긴 하지만 목적과 기능이 확실히 다르다)
const 키워드가 지정할 수 있는 것은 2가지다.
대상(변수)이 변하지 않는 무언가라고 지정한다. 동작(함수, 연산자)이 동작의 주체를 변화시키지 않는다. 가장 간단한 예가 다음과 같은 거다.
void foo(const int bar); 이런 함수의 내부(body)에서는 bar의 값을 바꿀 수 없다.
직접적으로 변수가 아니라 포인터에 const가 붙게 되면 상수성을 부여할 수 있는 곳이 2가지가 된다.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;에 대한 이해란…</title>
      <link>https://rein.kr/posts/2007-08-07-c%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%ED%95%B4%EB%9E%80/</link>
      <pubDate>Tue, 07 Aug 2007 17:57:18 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-08-07-c%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%ED%95%B4%EB%9E%80/</guid>
      <description>종종 블로그의 검색어 리퍼런스를 들여다본다. C++ 상속이라는 키워드로 검색해서 들어온게 있어서 확인해보는데, 같은 검색 페이지내의 글들을 보다 정말 &amp;ldquo;이건 아니잖아!&amp;ldquo;를 외치게하는 해석들을 보고. 그리고 검색된 내 포스팅은 C++의 class 들은 기본 상속 타입이 private이란 내용.
앞으로 몇 번 정도 이 비슷한 얘기를 해보려고 한다. 우선 알려주고 싶은 것은, 내가 보는 상속(inheritance)의 관점이란 것은 – 특히나 완전한 상속(public inheritance)은 – , interface의 공유를 통한 기능의 분류가 필요할 때 사용하는 무언가란 것이다. 가장 고전적인 예로 나오는 WYSIWYG 에디터에서 글자, 그림, 기타 등등이 &amp;ldquo;출력되는 부분&amp;quot;들을 필요로 할 때, 이 때를 위한 화면 출력, 크기 계산, … 등을 하나의 인터페이스로 생각하고, 이를 각각에 맞게 분류해서 – 글자는 찍고(?</description>
    </item>
    
    <item>
      <title>새로 지른 마우스</title>
      <link>https://rein.kr/posts/2007-08-02-%EC%83%88%EB%A1%9C-%EC%A7%80%EB%A5%B8-%EB%A7%88%EC%9A%B0%EC%8A%A4/</link>
      <pubDate>Thu, 02 Aug 2007 09:43:32 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-08-02-%EC%83%88%EB%A1%9C-%EC%A7%80%EB%A5%B8-%EB%A7%88%EC%9A%B0%EC%8A%A4/</guid>
      <description>MS Wireless Laser 6000 Natural 을 질렀습니다.1
현재 사용 시작 1시간 후의 감상
일단 손에 잡히는 느낌은 집에서 쓰고있는 Logitech MX 510 (wired; optical) 보다 살짝 떨어지지만 손목은 편한것 같기도함 (그렇지만 키보드를 수십배 많이 쓰는 직업인데다가 물건 도착하고 처음 써본거라 플라시보 효과일 확률이 99.89%쯤; 좀 더 자세한(?) 결론은 퇴근하고) 배터리를 (AA건전지×2) 마우스에 끼워서 쓰는 방식(충전식이 아님) 살짝 무겁지 않을까 했는데 그건 아닌 것 같은 느낌이라 만족 중 버튼은 왼쪽 버튼/오른쪽 버튼/틸트 휠(4방향 휠)/휠 클릭/앞/뒤 이렇게 있는데, 기본으로 설정된 버튼 맵핑이 조금 다르다.</description>
    </item>
    
    <item>
      <title>Civilization IV: Beyond the sword</title>
      <link>https://rein.kr/posts/2007-07-30-civilization-iv-beyond-the-sword/</link>
      <pubDate>Mon, 30 Jul 2007 11:55:00 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-07-30-civilization-iv-beyond-the-sword/</guid>
      <description>…질렀다(…)
새하얗게 불태웠어. 아마존에서 알아봤었던 문명 4/문명 4 확장팩이, 확장팩 부분이 북미/APO/FPO 주소만 된다고 나와서 깔끔하게 포기하고 구매대행을 알아봤음.
아마존 기준 $29.99가 구매대행을 거치면 58,000원이라니 운송료가 들어가있다지만 폭리다. (사실 지금 사고싶은 원서가 2권 있어서 그거사는김에 같이 지를까 했는데 GG)
그래서 모 구매대행 사이트(가격이 비싸서 소개해주고 싶진 않다)에서 Civilization IV + Civ. IV exp. &amp;ldquo;Beyond the sword&amp;quot;를 구입(합계 10.3만)
오는데 한참 걸릴테니(확장팩은 북미에서 한국오고 다시 택배로 배송되야할 듯함) 이것도 괴로운 일인듯;</description>
    </item>
    
    <item>
      <title>log4cxx</title>
      <link>https://rein.kr/posts/2007-07-24-log4cxx/</link>
      <pubDate>Tue, 24 Jul 2007 23:23:17 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-07-24-log4cxx/</guid>
      <description>Apache Software Foundation(ASF)의 log4cxx는 유명한 java 기반 logging library인 log4j 의 C++ 버젼이다. 사실 log4j도 ASF 산하의 프로젝트고, log4net, log4php 등등의 자매 프로젝트들이 널려 있는, MT지원이 잘 되는 로깅 라이브러리들이다.
이걸 써보려고 몇 가지 테스트(?)겸 해서 돌아가던 소스에 붙여 봤다. 일단 장점 몇 가지,
설정이 간편하다 – 쌩노가다로 코드에 구조를 쳐 넣을 수도 있지만, log4j 및 기타 자매 프로젝트들과 동일한 형식을 갖는 설정 파일 혹은 xml 로 표현된 설정파일을 읽어서 로거의 출력 구조를 결정할 수도 있다.</description>
    </item>
    
    <item>
      <title>오전에 IRC 쓰지 않기</title>
      <link>https://rein.kr/posts/2007-07-19-%EC%98%A4%EC%A0%84%EC%97%90-irc-%EC%93%B0%EC%A7%80-%EC%95%8A%EA%B8%B0/</link>
      <pubDate>Thu, 19 Jul 2007 23:31:39 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-07-19-%EC%98%A4%EC%A0%84%EC%97%90-irc-%EC%93%B0%EC%A7%80-%EC%95%8A%EA%B8%B0/</guid>
      <description>오늘 Trac – timeline 을 보다가 느낀 점: 오전 시간에 작업한 량이 적다 – 오전 10시 이후(출근은 9시) ~ 오후 1시 사이의 commit이 그 이후 시간대 commit보다 적다 (10시 이전 commit은 아마 전 날 작업 마무리한 것 혹은 svn move를 위한 사전 작업이라고 판단됨)
결심: 오전에도 충분한 효율?이 나올 때 까지 오전(혹은 점심 먹고 오기 전)에 IRC 접속하진 말아야지(적어도 앞으로 7월 남은 기간 동안에는)
아무래도 출근 시간 지하철에 스트레스 받은 것 + 오전이라 좀 졸린 것으로 인해서 생각안하고 잡담을 하게 되는 느낌이니 좀 줄이고 프로그래밍을 하거나 책을 읽거나 코드 리뷰를 하려고 함.</description>
    </item>
    
    <item>
      <title>빌드는 한 방에 이루어져야 한다</title>
      <link>https://rein.kr/posts/2007-07-19-%EB%B9%8C%EB%93%9C%EB%8A%94-%ED%95%9C-%EB%B0%A9%EC%97%90-%EC%9D%B4%EB%A3%A8%EC%96%B4%EC%A0%B8%EC%95%BC-%ED%95%9C%EB%8B%A4/</link>
      <pubDate>Thu, 19 Jul 2007 23:19:19 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-07-19-%EB%B9%8C%EB%93%9C%EB%8A%94-%ED%95%9C-%EB%B0%A9%EC%97%90-%EC%9D%B4%EB%A3%A8%EC%96%B4%EC%A0%B8%EC%95%BC-%ED%95%9C%EB%8B%A4/</guid>
      <description>대부분의 프로젝트는 달랑 한 개의 결과물 – 배포할 프로그램 바이너리일지, 웹 페이지와 디비 등등등일지, 묶여있는 게임 팩키지 일지는 프로젝트마다 다르겠지만 – 만을 내놓는 경우는 없다.
예를 들어서 문자열을 처리하는 라이브러리를 만든다고 하자.
blah, blah, blah … 하는 기능을 지원하고(그렇다 치자) utf-8 기반 문자열 버젼과 UCS2기반 문자열 버젼을 제공한다 static library (.a / .lib)와 shared library (.so / .dll)를 제공한다 Debug 정보를 포함한 버젼과 그렇지 않은 버젼을 제공한다 이제 가능한 조합은 총, 2 × 2 × 2 = 8 가지이다.</description>
    </item>
    
    <item>
      <title>최근 저지른 C&#43;&#43; 타입 변환 삽질</title>
      <link>https://rein.kr/posts/2007-07-13-%EC%B5%9C%EA%B7%BC-%EC%A0%80%EC%A7%80%EB%A5%B8-c-%ED%83%80%EC%9E%85-%EB%B3%80%ED%99%98-%EC%82%BD%EC%A7%88/</link>
      <pubDate>Fri, 13 Jul 2007 20:19:06 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-07-13-%EC%B5%9C%EA%B7%BC-%EC%A0%80%EC%A7%80%EB%A5%B8-c-%ED%83%80%EC%9E%85-%EB%B3%80%ED%99%98-%EC%82%BD%EC%A7%88/</guid>
      <description>회사생활을 하면서 각 프로그래밍언어들 중 가장 많이 사용하고 있는 것이 대충 C++, python, lua, MS-DOS batch 파일 정도 되는 것 같다. 그러다 보니 이런 삽질도 한다.
// inheritance : C++ class impl : abst // abstrct base class abst. { // blah, blah, blah ... }; // blah, blah, blah, ... abst *x = dynamic_cast&amp;lt;abst*&amp;gt;(&amp;amp;impl_type_var); 사실 이 코드를 보면 위화감을 느껴야 한다. 컴파일해보면 VS2005에서는 &amp;ldquo;컴파일은 되는거지만 무조건 런타임 에러다!&amp;rdquo; 라고 warning이 뜬다.</description>
    </item>
    
    <item>
      <title>Spin buffer explained : Part 2</title>
      <link>https://rein.kr/posts/2007-07-08-spin-buffer-explained-part-2/</link>
      <pubDate>Sun, 08 Jul 2007 11:51:59 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-07-08-spin-buffer-explained-part-2/</guid>
      <description>전번에 들고 나왔었던 스핀 버퍼 (spin buffer) 에 대한 설명. 스핀 버퍼 정의대로 3개의 동일한 버퍼 배열들을 가지고 진행하게 되며, 앞에서 설명한 busy 여부는 Free 상태만 non-busy로 생각하면 된다. 그리고 빗금친 버퍼는 데이터가 들어있는 것이다.
생산자-소비자 모델 (consumer-producer model)에서, 생산자가 1 개의 아이템을 버퍼에 집어 넣은 형태가 다음이라고 하자. (다음 다이어그램부턴 여기에 대한 연속)
생산자가 버퍼 1개를 쓰고 나면 다음 스핀 버퍼(여기선 다음 줄 정도로 생각하면 된다) 가 Free 상태이므로 거기로 옮겨가게 되고, 읽을게 없는 소비자도 2번째 줄로 옮겨오게 된다.</description>
    </item>
    
    <item>
      <title>Spin buffer explained…</title>
      <link>https://rein.kr/posts/2007-06-29-spin-buffer-explained/</link>
      <pubDate>Fri, 29 Jun 2007 15:02:43 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-06-29-spin-buffer-explained/</guid>
      <description>이번 달 초에 Dr. Dobb&amp;rsquo;s Journal (DDJ)을 보다가 multi-thread 용으로 구현된 흥미로운 링버퍼(ring buffer; circular buffer)에 관한 글을 발견(http://www.ddj.com/dept/architect/199902669)
간략히 설명하자면 기존의 링버퍼는 1개의 1차원 배열을 사용하고 여기의 양 끝에 각각 접근하는 consumer-producer modle을 사용했습니다. 각각은 이 1차원 배열에 접근해서 데이터를 추가하거나(producer part), 데이터를 꺼내가는(consumer part) 작업을 수행하는데 이 동작에 대해 1차원 배열을 접근하는 것을 동기화해서 (lock을 걸던 mutex를 쓰던), 1차원 배열이나 내부적인 book-keeping을 위한 포인터들이 오염되는 것을 막는다.
이 새로운 자료구조는 다음과 같은 방식을 사용해서 문제를 해결한다.</description>
    </item>
    
    <item>
      <title>2008 대선 후보들…</title>
      <link>https://rein.kr/posts/2007-06-21-2008-%EB%8C%80%EC%84%A0-%ED%9B%84%EB%B3%B4%EB%93%A4/</link>
      <pubDate>Thu, 21 Jun 2007 23:20:39 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-06-21-2008-%EB%8C%80%EC%84%A0-%ED%9B%84%EB%B3%B4%EB%93%A4/</guid>
      <description>오늘이 사실 상, 후보 이름을 거론하면서 지지하거나 반대할 수 있는 마지막 날인 관계로 (아직 자정은 지나지 않았다 :p) 일단 포스팅.
개인적으로, 이번 대선에 누가 나올진 궁굼하긴하지만 높은 순위의 관심사는 아니다. 그렇지만 바라는게 하나 있다면 제발 박모 독재자의 딸인 모근혜가 후보로 나오게되거나 – 개인적으로 떠올리기 싫을 정도로 혐오스로운 일이지만 – 대통령에 당선되는 불상사가 생긴다거나 하는 일은 제발 일어나지 말았으면 하는 것이다.
이건 내 편견일지 모르겠지만 박근혜를 지지선언한 사람 중엔 내가 제일 싫어하는 부류의 사람들 – 뇌물 수수, 대부분의 손자가 한국국적이 아닌 것을 고의적으로 선택한 등의 일을한 전국방장관 들 – 이 섞여 있기도하고, 인류에게 가장 도움이 안되는사상 중 하나라고 생각하는 – 뭐 필요악일 순 있지만 그렇게 높은 우선순위의 가치는 아니라고 믿는다 – 전체주의의 대두를 보게될것이라고 생각한다 – 박근혜 지지세력의 상당 수가 박모 독재자시절이 좋았지 하는 식의 말을 하는 사람이 많고, 그 때의 집단주의 적인 무언가를 찬양하는 모습을 보게 되기 때문이다.</description>
    </item>
    
    <item>
      <title>boost::python</title>
      <link>https://rein.kr/posts/2007-06-17-boostpython/</link>
      <pubDate>Sun, 17 Jun 2007 15:20:58 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-06-17-boostpython/</guid>
      <description>한 3주 쯤 전부터 Python/C++을 같이 쓰려고 삽질 중이었는데, 지난 주 초에 boost::python을 발견하고 이 둘을 쉽게 연결하기 시작 – 이어지는 내용은 UPnL 워크샵(2007/6/16)에서 발표했던 것의 요약입니다. 그 내용을 기반으로 해서몇일 정도 포스팅을 하려고 합니다.
사용하려는 플랫폼에 대해 초보적인 수준의 library사용 경험만 있으면(동적바인딩 라이브러리 빌드/링킹 관련) boost::python을 사용했을때 편한 점들은 일단,
Python C interface를 상세히 알지 못하는 상황에서도 C++ 인터페이스를 python module로 내보내기 쉽습니다. Python embedding – C++ 쪽에서 python 코드를 실행시키는 것 – 을 쉽게 구현할 수 있습니다.</description>
    </item>
    
    <item>
      <title>Python: Shock and Awe</title>
      <link>https://rein.kr/posts/2007-05-23-python-shock-and-awe/</link>
      <pubDate>Wed, 23 May 2007 13:24:21 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-05-23-python-shock-and-awe/</guid>
      <description>어제 오후 + 오늘 오전해서 python으로 XML 파싱해서 뭔가를 하는 작업을 했습니다. 사실 lua로 시작했지만 SAX/SAX-like는 자유도가 떨어져서 DOM이 구현되어 있는 python으로 구현하게 되었습니다.(사실 제가 사용한 xml.dom.minidom도 DOM spec. 1까지만 구현되어 있습니다. Spec. 2의 기능을 쓰려면 PyXML을 받아야합니다.)
그래서 작업을 마치고 하나로 합치려고 팩키지 간의 의존성을 확인하는데, 대충 평소에 많이 쓰던 애들과 python 자체의 근간이 되는 것들이 포함되고 – 예를 들어 copy, copy_reg, types.py등, xml관련된 대부분의 팩키지들이 포함됩니다.(여기까지해서 20kb정도)
그리고 마지막 의존성이 Expat이었는데, 이건 expat.</description>
    </item>
    
    <item>
      <title>어제 일 &#43; 병특 실사 관련</title>
      <link>https://rein.kr/posts/2007-05-22-%EC%96%B4%EC%A0%9C-%EC%9D%BC-%EB%B3%91%ED%8A%B9-%EC%8B%A4%EC%82%AC-%EA%B4%80%EB%A0%A8/</link>
      <pubDate>Tue, 22 May 2007 10:26:11 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-05-22-%EC%96%B4%EC%A0%9C-%EC%9D%BC-%EB%B3%91%ED%8A%B9-%EC%8B%A4%EC%82%AC-%EA%B4%80%EB%A0%A8/</guid>
      <description>결국 그냥 저걸 복사해서 내긴 찜찜해서 해당 지점에 가서 다시 입출금내역을 뽑았음
은행갔다 받은 충격과 공포: 은행 9시 반부터 하는구만 …잠깐 그럼 이놈들 9시 반~3시 반근무해보겠다고?
이거야 그렇다치고 사실 이렇게 급하게 처리해야했던건 검찰에서 바로 가져오라는 소릴 해대선데 (정확히는 서울 동부지방검찰청) 이 것들은 지들만 일하는 줄 아냐.
사실 더더욱 엽기적인 것은 그 다음에 있다. LG다니는 A모군의 경우에는 주민등록등본과 학위 증명서도 떼오라고 했다고. A모군의 경우엔 학위 받은 학교가 코 앞이니 그렇다 치고, KAIST나 포스텍 나온 사람한테도</description>
    </item>
    
    <item>
      <title>여유의 계절(?)</title>
      <link>https://rein.kr/posts/2007-04-17-%EC%97%AC%EC%9C%A0%EC%9D%98-%EA%B3%84%EC%A0%88/</link>
      <pubDate>Tue, 17 Apr 2007 00:17:04 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-04-17-%EC%97%AC%EC%9C%A0%EC%9D%98-%EA%B3%84%EC%A0%88/</guid>
      <description>지난 2월 5일부터 출근하기 시작해서 대략 2달 반이 지났습니다.
회사 다니면서 (회사 이외의 일로) 즐거운걸 따지자면 일단 생활이 규칙적이 된 것 – 대학원 생활은 뭔가 좀 불규칙했음 그리고 회사에서 퇴근하면서 서점에 들르기가 쉬워졌다는 것.
회사가 포스코사거리 근처인지라 퇴근할 때 선택지는 2곳 – 2호선 선릉역, 삼성역 – 인데 삼성역까지가 대략 5분 정도 가까운 관계로 피곤하면 이쪽, 안그러면 선릉을 선택하는데, 삼성역엔 코엑스 몰이 있고 거기엔 반디앤루니스 본점이 있음; 덕분에 퇴근시간에 종종 들리곤하는데 10:30에 문닫는것도 몇 번 봤다곤 말 못함 원서매장도 있고, 섹션 별로 보기가 편해서 – 개인적으론 서가 높이가 눈 높이 이하인게, 특히 낮은 상 위에 표지가 보이게 진열된게 좋음 – 맘에 듭니다.</description>
    </item>
    
    <item>
      <title>우리가 서글퍼 해야하는 일</title>
      <link>https://rein.kr/posts/2007-03-09-%EC%9A%B0%EB%A6%AC%EA%B0%80-%EC%84%9C%EA%B8%80%ED%8D%BC-%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94-%EC%9D%BC/</link>
      <pubDate>Fri, 09 Mar 2007 01:03:30 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-03-09-%EC%9A%B0%EB%A6%AC%EA%B0%80-%EC%84%9C%EA%B8%80%ED%8D%BC-%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94-%EC%9D%BC/</guid>
      <description>중앙일보 영화 `괴물&amp;rsquo;관련 보도
영화 &amp;lsquo;괴물&amp;rsquo;이 NF쏘나타 3869대를 만들어내는 효과와 맞먹는 것으로 나타났다. 지난해 관객 1300만 명을 동원해 역대 흥행 1위를 기록한 &amp;lsquo;괴물&amp;rsquo;의 총수입은 911억원
역대 흥행 1위를 기록한 &amp;lsquo;괴물&amp;rsquo;의 총수입은 `겨우&amp;rsquo; 911억원
반면에, YWCA 등의 정체가 뭔지 참 궁굼한 곳에서 탄압에 가까운 일을 당하멵서 성장한 국내 N모사의 작년 실적은 4/4 분기에만 902억원. 년간 NF 소나타 15000 대 생산에 이르는구만
그러나 우리나라 정부가 영화 산업에 쏟아붇는 돈은 연간 약 4천억원, 게임 분야에 대해서는 약 110억원.</description>
    </item>
    
    <item>
      <title>출근 2일째!</title>
      <link>https://rein.kr/posts/2007-02-07-%EC%B6%9C%EA%B7%BC-2%EC%9D%BC%EC%A7%B8/</link>
      <pubDate>Wed, 07 Feb 2007 00:03:52 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2007-02-07-%EC%B6%9C%EA%B7%BC-2%EC%9D%BC%EC%A7%B8/</guid>
      <description>…라지만 실제론 출근 1일차나 다름 없는 하루가 지나갔습니다.
어제는 하루 종일 회사 생활의 각종 부분에 대한 소개(복지라거나 결재 시스템이라거나 등등)랑 보안 교육으로 하루가 저물었고[…], 오늘 사원 등록 끝내고 제가 쓸 컴퓨터에 대한 설정을 했습니다.
일반적인 의미의 인터넷이 되는 애 한 대랑, 개발망(폐쇄망)에 연동되는 한 대를 설정했습니다. 제가 윈도우 도메인 시스템을 잘 몰라서 그러는데, 폐쇄망에서 윈도우즈 업데이트는 어찌해야할까요?
두 대 모두 GeForce가 달려있다는게 가슴이 아프지만(6년째 ati VGA 카드만 쓰고있음) , 개발용 컴은 듀얼 코어라 좋네요.</description>
    </item>
    
    <item>
      <title>앞으로 가야할 길</title>
      <link>https://rein.kr/posts/2006-12-29-%EC%95%9E%EC%9C%BC%EB%A1%9C-%EA%B0%80%EC%95%BC%ED%95%A0-%EA%B8%B8/</link>
      <pubDate>Fri, 29 Dec 2006 19:04:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2006-12-29-%EC%95%9E%EC%9C%BC%EB%A1%9C-%EA%B0%80%EC%95%BC%ED%95%A0-%EA%B8%B8/</guid>
      <description>학부 4년, 석사 2년,
길지도 짧지도 않은 시간을 보내고 학교를 떠나게 됩니다. 뭐 6년간 컴퓨터 공학 – 내지는 통신/통신망 – 을 공부하고, 이제는 병역 특례로 3년 정도(군복무기간 단축되면 이것도 비례해서 단축하니 약간 줄어들지도 모릅니다)를 일하게 됩니다. 아마도 3년 이상을 일하게 될 것이고요
병역특례(전문연구요원) 자리를 얻기 위해 몇 군데의 회사나 연구소를 알아보고, 그 중 2곳 – 삼성전자 정보 통신 총괄과 NC Soft – 의 채용 과정을 거쳐서 삼성전자로부터 약 2주 전에 연락을 받았고, 어제 NCSoft의 내정 사실을 전해 듣게 되었습니다.</description>
    </item>
    
    <item>
      <title>액년, 액월, 액일</title>
      <link>https://rein.kr/posts/2006-12-04-%EC%95%A1%EB%85%84-%EC%95%A1%EC%9B%94-%EC%95%A1%EC%9D%BC/</link>
      <pubDate>Mon, 04 Dec 2006 14:13:57 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2006-12-04-%EC%95%A1%EB%85%84-%EC%95%A1%EC%9B%94-%EC%95%A1%EC%9D%BC/</guid>
      <description>지난 주 화요일에 논문 심사가 있었다.
문제는 전 날 대전 ETRI 출장을 갔다가 돌아와서, 논문 심사 때 쓸 PPT 보고 수정하다가 늦게 잤다는 것
늦잠자다가 덕분에 심사 늦을 판이라 후다닥 올라갔는데, 심사 받으러 뛰다가 계단에서 굴러서, 노트북 액정이랑 핸드폰 액정을 깨먹었음
그래서 지난 토요일에 애니콜 서비스 센터가서 액정을 바꾸려는데
&amp;ldquo;이 정도로 깨지면 보드도 검사해봐야 되요&amp;rdquo;
해서 검사를 받았음
&amp;ldquo;보드도 깨졌네요&amp;rdquo;
…
그 길로 대리점 가서 휴대폰 새로 사야했다.</description>
    </item>
    
    <item>
      <title>RAR vs. Zip format</title>
      <link>https://rein.kr/posts/2006-04-17-rar-vs-zip-format/</link>
      <pubDate>Mon, 17 Apr 2006 13:25:41 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2006-04-17-rar-vs-zip-format/</guid>
      <description>내가 일상생활에서 흔히 사용하는 압축 포맷은 MS Windows에서는 rar이고, *nix에서는 tar.gz / rar / zip 순서 정도인 것 같다.
MS windows에서야 압축 속도 문제 때문에 1차적으로 rar을 쓰고 있었는데, (물론 압축 푸는 속도에 있어서도 느려터진 알집이랑은 좀 비교하기가 그렇고, 파일 종류에 따라 다르지만 빵집보다도 상당히 빠른 것 같다) 지난 주에 stania가 보내준 파일들 (집에서 쓰는 컴의 윈도우 쪽에서 받았음)을 연구실에서 쓰고있는 리눅스 데스크탑으로 보내면서 다시 좀 생각할 거리가 생겼음
stania군이 보내준 파일들은 zip파일 하나로 압축되어 있었는데 (사실 압축되어 있다기 보다는 묶여있었다 정도지만), CP949 (euc-kr비슷한 형태의 인코딩) 로 파일이름들이 인코딩 되어있다.</description>
    </item>
    
    <item>
      <title>euc-kr로 인코딩한 곡명이 깨지고 있다</title>
      <link>https://rein.kr/posts/2006-03-24-euc-kr%EB%A1%9C-%EC%9D%B8%EC%BD%94%EB%94%A9%EB%90%9C-%EA%B3%A1%EB%AA%85%EC%9D%B4-%EA%B9%A8%EC%A7%80%EA%B3%A0-%EC%9E%88%EB%8B%A4/</link>
      <pubDate>Fri, 24 Mar 2006 10:06:39 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2006-03-24-euc-kr%EB%A1%9C-%EC%9D%B8%EC%BD%94%EB%94%A9%EB%90%9C-%EA%B3%A1%EB%AA%85%EC%9D%B4-%EA%B9%A8%EC%A7%80%EA%B3%A0-%EC%9E%88%EB%8B%A4/</guid>
      <description>BMP (beep-media-player)를 사용해서 음악을 듣고 있는데, 곡명 중에 원래 한글 내지는 euc-kr (cp949) 호환으로 되어있던 곡명들이 깨지고 있었다. 근데 화면에 나오는 에러메시지가 &amp;lsquo;유효하지 않은 UTF-8&amp;rsquo; 이어서 출력할 때 사용하는 encoding을 알 수 있었고 (지금와서 보니 LANG / LC_ALL가져다 쓰는 것 같지만), 윈도우 파티션에서 euc-kr로 된 태그들을 수정하는 코드를 짜기 시작했다.
taglib (http://developer.kde.org/~wheeler/taglib.html)과 POSIX iconv를 사용해서 슥슥 짰더니 대충 돌기시작 ID3v1 tag는 album 이름 부분에서 약간 문제가 있는 듯 하지만, 나머지는 잘 돌고 있음.</description>
    </item>
    
    <item>
      <title>Fedora Core 5로 이주</title>
      <link>https://rein.kr/posts/2006-03-22-fedora-core-5%EB%A1%9C-%EC%9D%B4%EC%A3%BC/</link>
      <pubDate>Wed, 22 Mar 2006 16:06:37 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2006-03-22-fedora-core-5%EB%A1%9C-%EC%9D%B4%EC%A3%BC/</guid>
      <description>내가 연구실에서 사용 중인 컴퓨터에는 Fedora Core 4가 깔려있다. Core 5가 나온 관계로 이미지 받아서 굽고 설치했음
파일 시스템 문제인지 모르겠지만 원인이 불명확한 커널 패닉이 일어나서 리눅스 파티션 싸그리 날라고 다시 설치했는데, 이번에도 문제를 일으키는 건 bmp (beep-media-player).
bmp설치하고 mp3 재생을 위한 플러그인을 설치했는데, 플러그인 목록에 해당 플러그인이 나타나지를 않는 -_-; 로그를 보니 다음과 같은 메시지가
Failed to load plugin (/usr/lib/bmp/Input/libmpg123.so): /usr/lib/bmp/Input/libmpg123.so: reloc 후에 prot 세그먼트를 복구할 수 없습니다: 허가 거부됨</description>
    </item>
    
    <item>
      <title>WoW 북미 포럼을 보다 느낀 것</title>
      <link>https://rein.kr/posts/2006-03-02-wow-%EB%B6%81%EB%AF%B8-%ED%8F%AC%EB%9F%BC%EC%9D%84-%EB%B3%B4%EB%8B%A4-%EB%8A%90%EB%82%80-%EA%B2%83/</link>
      <pubDate>Thu, 02 Mar 2006 15:24:48 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2006-03-02-wow-%EB%B6%81%EB%AF%B8-%ED%8F%AC%EB%9F%BC%EC%9D%84-%EB%B3%B4%EB%8B%A4-%EB%8A%90%EB%82%80-%EA%B2%83/</guid>
      <description>점심도 못 먹고 수업 듣고 온 후 심심하던 차에 WoW 북미 포럼 스레드 뒤지다가 본 것
한 명이 한국 포럼 -&amp;gt; 북미 포럼 번역된 글을 링크 했는데, 그 밑에 답글로
The real question is, why does their site look 1000x better than ours?
Answer to come
달리고, 그 밑에는 그에 대한 답글로
because it&amp;rsquo;s korean, therefore the entire site must be made in flash
라고 달리더군.
사실 우리나라 사이트 들이 플래쉬를 사용해서 만들어진 예가 적지 않은 것은 아닌데 (심심하면 w3m이나 lynx같은 텍스트 기반 브라우져로 돌아다녀보면됨), 최근들어 그런 경향이 너무 심한 것 같음.</description>
    </item>
    
    <item>
      <title>Interoperability</title>
      <link>https://rein.kr/posts/2006-02-13-interoperability/</link>
      <pubDate>Mon, 13 Feb 2006 19:51:08 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2006-02-13-interoperability/</guid>
      <description>해당 응용프로그램 분야에서 2위로 출발하는 응용 프로그램들을 살펴보면 어떤 새롭고 편리한 기능을 제공하는 것만큼이나 중요한게, 이전의 1위 프로그램으로부터 &amp;lsquo;이전 가능한가?&amp;lsquo;라는 것이다. 간단한 예로 mozilla firefox/thunderbird는 IE/Outlook 으로부터의 import를 지원한다. OOo (OpenOffice.org) 역시 MS office와의 호환성을 보장해준다.
그리고 1위 프로그램은 자기 자신의 구버젼과도 경쟁하는 처지에 놓이기 때문에, 이전 버젼과의 호환성과, 현재 버젼의 결과물을 이전 버젼에서도 어느 정도 사용할 수 있게 변경시킬 수 있는 기능 등을 대부분 지원하게 된다.
태터툴즈가 무슨 생각으로 1.</description>
    </item>
    
    <item>
      <title>근황</title>
      <link>https://rein.kr/posts/2005-10-25-%EA%B7%BC%ED%99%A9-2/</link>
      <pubDate>Tue, 25 Oct 2005 16:12:52 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2005-10-25-%EA%B7%BC%ED%99%A9-2/</guid>
      <description> ETRI 프로젝트에 쪼임 당하고 있음 – 아 정말 하기 싫다 내가 제안할 수 있던 부분도 알고리즘 전체 중 일부의 tcp rate control 뿐이고. 활자 중독 증상은 갈수록 악화일로 – 아무리 피곤해도 책을 좀 읽지 않으면 잠이 오지 않는다 Orz 대빈민 모드 발동 개시 – 이번 달 지출이 너무 많다 Orz 다음 달 이후를 위해선 지출을 대폭 줄여야. </description>
    </item>
    
    <item>
      <title>태터툴즈 설치 했습니다.</title>
      <link>https://rein.kr/posts/2005-06-21-%ED%83%9C%ED%84%B0%ED%88%B4%EC%A6%88-%EC%84%A4%EC%B9%98-%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4/</link>
      <pubDate>Tue, 21 Jun 2005 10:50:34 +0900</pubDate>
      
      <guid>https://rein.kr/posts/2005-06-21-%ED%83%9C%ED%84%B0%ED%88%B4%EC%A6%88-%EC%84%A4%EC%B9%98-%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4/</guid>
      <description>흔하디 흔한 아이디를 써서 어디에도 블로그 서비스를 개설하지 못하고 유리엘에 얹혀서 개설했습니다.
대부분의 CGI들이 그렇듯 이 서비스도 암호가 외부에 좔좔 공개되어있는게 아쉽지만 일단 깔아놨으니 이런 저런 수정을 가해야 할 듯합니다.1
(2023-08-18) 개설 시점에는TLS를 쉽게 쓸 수 없었다. TLS 인증서를 유료로만 만들 수 있었고, TLS+SNI 가 동작하지 않아서 공용 서버에서 쓰기 어려웠다.&amp;#160;&amp;#x21a9;&amp;#xfe0e;</description>
    </item>
    
  </channel>
</rss>
