금화 나누기 문제
지난 주 금요일에 구입한 “승자의 저주"에 나왔었던 내용이기도 하고, 그 이전에 읽었던 “행동 경제학"에서 다뤘던 문제이기도 한데. 아주 재밌는 문제가 있다. 마침 yundream의 프로그래밍 이야기에서 “구글 입사자 문제”라는 제목으로 올라온 포스팅에 비슷한 문제가 있어서 같이 소개해봅니다. 우선 _간단한 버젼_입니다. (가능하면 해당 포스팅의 문제도 답을 펴기전에 미리 보시는게 :D ) 100개의 금화가 있다. A, B 두 명이 이를 나누는데, A가 분배 비율을 결정하고 B가 분배를 “승낙할지"를 결정한다. 승낙하지 않으면 둘에게는 금화가 지급되지 않고, 승낙하면 A가 정한 비율로 분배가 이루어진다.
C++: 포인터 vs. 참조자
C++ 프로그래밍 언어에서는 객체를 간접적으로 접근하게 해주는 수단으로 크게 2가지를 제공해준다. 한가지가 포인터; pointer고 나머지 하나가 – C 언어에는 없는 – 참조자; reference 다. 사실 이 둘은 거의 비슷한 용도로 쓰인다. 크기가 커서 직접 전달하는게 힘든 함수 인자 혹은 멤버 변수 전달용 값에 의한 전달; pass by value 로 할 수 없는 일의 처리 (예: swap 함수) 다형성; polymorphism 이 사용되어야 하는 상황 C++ faq-lite 에서 설파하고 있듯이 – 혹은 스캇 마이어스; Scott Meyers의 More Effective C++1 에서 설명하고 있듯이,
멀티스레딩과 STL
C++은 일반화 프로그래밍; generic programming 을 지원하는 언어다. 임의의 타입 T에 대한 클래스, 함수 등을 지정할 수 있고, 이를 컴파일 타임에 코드를 만들어내서1 사용할 수 있게 해준다. 사실 이런 부분이 가장 잘 반영되어 있는 것이 standard template libaray; STL 이고, 얼마 전에 확정된 tr1에 포함된 수많은 boost library 들이다. 이 중에서 STL과 멀티스레딩; multithreading 에 관해 한 가지 얘기를 해보려한다.IRC 채널에 STL의 스레드 안전성에 관한 뻘글, 또 다른 뻘글의 링크가 올라오기도 했었고, 오늘은 GPG 스터디 포럼에 STL 메모리 단편화 문제에 관한 질문이 올라 오면서 멀티스레딩 얘기가 잠깐 나오기도 했다 (중간의 답변글 중 하나가 너무 간단히 스레드 안전하지 않아 라고 말하고 있다).
한국의 웹에서 살아간다는 것
소위 IT 강국이라는 한국의 web웹 환경에서 살아간다는 것 (SW 개발이 가능한 곳이 게임회사 일부, 포탈 일부인 나라에서 저런 소리는 웃기지도 않지만) …편하지도 않은 MS IE를 써야하고, ActiveX를 설치해야하고, 원치않는 flash UI에 괴로워해야하고, MS IE에서만 실행되는 페이지에 절망하는 것 원룸 방세를 내기위해 국민은행 페이지에 접속. …인증이 안되네? IE 7.0이라 이거지. 이러면 탭하나 써보겠다고 버젼 올린 의미가. 어서 openweb 쪽의 소송에서 승리해서 이런 ㅄ같은 은행 사이트가 개편되었으면 좋겠다. yes24에 주문한 – God Delusion 원서가 싸더라 – 상품 페이지를 확인하러 들어갔다.
IEEE 802.11n 제품이 등장하기 시작
펀샵에서 보내오는 메일을 보다가, 이런 항목을 보고 조금 놀랐음 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 의 속도 밖에 나오지 않는다.
Web 2.0 광고 하나
어제 저녁에 썼던 글에 달린 reed 님의 댓글을 따라갔다가, 블로그 하단에서 UNIQLOCK이란 것을 발견. 뭔가 익숙한 이름이다 했더니 일본의 의류제조업체인 UNIQLO + clock의 합성어인듯? 이 포스팅에도 달아놔봤음 (클릭해서 따라가보면 개인 블로그에 달기 위한 자바 스크립트 링크를 생성해주는 곳이 있음; [캡쳐][1]) 플래쉬 영상을 클릭해보니 이런 페이지로 옮겨지는데, 화면 구성은 일단 이렇다. 각 원의 짙은 부분이 블로그에 이 광고를 삽입한 사용자 수 / 옅은 부분이 본 횟수에 비례해서 커지는데, 세계 여기저기에 이런 광고를 달고 있는 사람이 이렇게 많다는 것은 꽤나 재밌다.
블로그 광고에 대한 재밌는 글 하나
WordPress dashboard (관리자 화면 첫 페이지) 에 링크되는 몇 몇 포스팅 중에 하나에서 재밌는 글을 발견. 블로그에 자동으로 삽입되는 광고들 – 구글 애드센스나 다음 애드클릭 같은 것들 – 에 대한 글인데, 내 블로그에는 광고를 삽입하지 않지만 나름 재미있게 읽어서 소개해볼까 한다. 내용을 요약하자면, 정기적으로 찾아오는 사람들 – 이글에서는 줄곧 your friends라고 표현 – 에게는 광고를 보여주지 말자. 정기적으로 찾아오고/댓글도 달아주지만 _아마 광고를 보여준다고 클릭하진 않는다_라는게 글쓴이의 생각 RSS 피드나 메일로 자동으로 받아서 보는 사람들 페이지에 광고를 삽입하지 말자 – 근데 이런데도 애드센스 삽입하나?
인코딩과 문자집합: C/C++
이전에 다뤘던 내용들에 이어서, 이번엔 C/C++에서 이런 것들을 어떻게 다루고 있는지 얘기해보려한다. 모든 문자집합/인코딩 들을 다루려면 길어질테니 크게 세 가지만 가지고 얘기해보겠다. euc-kr을 사용한 문자열 (혹은 다른 DBCS를 쓰는 경우들) Unicode를 사용하고 UTF-8 인코딩을 사용한 경우 Unicode BMP를 사용하고 UCS2를 사용한 경우 1, 2는 데이터를 저장하기 위해 보통 char를 사용하고, 3은 wchar_t를 쓴다. (이 이하는 그렇게 가정하고 진행) 문자열을 다룬다는 행동은 어떤 것들일까? 일단 데이터 교환을 위해서 서로 알고 있어야하는 것과 일반적인 연산은 다음과 같다고 생각한다.
About
이 블로그는 그때그때 프로그래밍, 읽은 책, 플레이해 본 게임이나 일상의 이야기를 적는 공간입니다. 블로그의 모든 글은 별다른 언급이 없다면 Create Commonse License 3.0 (attribution/share-alike; 저자 표기 필요함, 동등 조건 배포 시 상업/비상용 여부와 관련 없이 허용)를 사용합니다. 다만 추가적인 작업 없는 복사 행위는 곤란하며, 개인적으로 보관하고 싶다면 노트 서비스나 블로그 서비스의 “비공개 글” 기능을 사용하시기 바랍니다. 또한 모든 경우에 대해서 블로그 주소가 아닌, 블로그 개별 글 주소를 적시해주셨으면 합니다. Contact 연락은 Bluesky 혹은 email 로 부탁드립니다.
인코딩과 문자집합: Unicode
이전 포스팅에서 인코딩과 문자집합; encoding and charset 그리고 그 자체를 저장하기 위한 데이터 형에 대해서 간략히 설명했었는데, 실제로 구현된 예를 들어보도록 하겠음 앞에서도 말했듯이, 특정 언어가 갖는 문자들을 숫자값들로 변환하는게 문자집합; charset의 개념 캐릭터의 숫자값들을 비트 패턴으로 저장할 수 있게 해주는게 인코딩 그리고 인코딩된 비트들을 저장하는게 기반 데이터 타입 (C/C++의 char 혹은 wchar_t) 로 되어 있다. 지구 상에 존재하는 언어가 몇 개인지는 알지 못하지만, 그걸 표현하기 위한 문자집합의 수가 매우매우 많다는 것은 간단한 예를 들 수 있다.