-
국내에서 IPv6 주소를 접하기 어려운 이유Programmer/Computer Science 2014. 3. 14. 15:51
IPv4의 주소 고갈 문제, IPv6의 전환, IPv6와 멀티미디어 데이타의 증가 등의 얘기가 나온지 꽤 오래되었다. 사실 이미 IANA(Internet Assigned Numbers Authority)에서의 할당은 더 이상 없는 상태다. 관련 종사자들은 이미 “왜?”라는 필요성에 대해서는 공감대의 형성은 지났고 지금은 “어떻게?”라는 IPv6로의 전환 방법에 대해서 연구하고 있다. 그런데, 인터넷 콘텐트 전송 서비스를 개발하고 서비스하는 사람으로써 IPv6을 전혀 체감하지 못하고 있다. 개똥이네 금송아지 얘기를 듣는 기분이다. 뭔가 굉장한 것이 있다고는 하는데, 한번도 본적이 없다. 그러면서 개똥이는 자기네 금송아지를 볼 준비를 하라한다. 즉, 실제 서비스 운영에서는 그것의 그림자도 본적이 없는데, 개..
-
현상을 분석하여 문제의 원인을 찾아내라Programmer/Programming 2013. 11. 12. 17:46
현상을 재현하고 로그를 세심하게 살펴보고 필요하면 다른 도구(디버거, 성능 분석 도구 등)를 사용해서 분석한 후에 문제의 원인을 밝혀야 한다. 대충 추론하고 수정하여 적용한 뒤에 결과를 보는 방법은 생각보다 효과적이지 못하다. 소스를 공개하지 않은 상용 소프트웨어의 파일 읽기 플러그인을 개발하였다. 지금까지 탈없이 잘 쓰고 있었는데, 최근에 시스템에 문제가 생기면 플러그인과 상관없는 부분에서 행(hang)이 걸리는 문제가 발생하었다. 처음에는 문제의 원인을 추측하고 수정하고 검증하는 것을 반복하는 방법으로 접근하였다. 문제는 직감에 기반한 추론은 확율이 떨어졌다. 검증할때마다 여전히 문제가 발생하여, 수정과 검증의 과정을 여러번 반복해야 했다. 검증 과정을 준비하고 결과를 분석하는데도 상당한 시간이 들었..
-
GLib의 GHashTable로 알아보는 해시 테이블의 충동 해결 방법Programmer/Computer Science 2013. 9. 17. 11:19
GLib에서 제공하는 해시 테이블(hash table)의 구현인 GHashTable의 충동을 해결하는 알고리즘을 살펴보자. GHashTable은 Open Addressing 방법 중에 Quadratic Probing 알고리즘을 사용하여 충동을 해결한다. 해시의 연산-삽입(Insert), 검색(Lookup), 삭제(Remove)-을 할 때는, 주어진 키에 해당하는 적절한 해시 테이블의 인덱스 번호를 먼저 구해야 한다. GHashTable에서는 g_hash_table_lookup_node() 함수가 이를 수행한다. 이 함수에서 해시키의 충동 해결 알고리즘이 구현되어 있다. static inline guint g_hash_table_lookup_node (GHashTable *hash_table, gconst..
-
뛰어난 실력자보다 별로인 사람들이 세상을 활개치는 이유Life/Society 2013. 9. 8. 17:29
예전 회사에서 선임과 함께 세미나에 참석한 적이 있었다. 여러 강사들이 있었는데, 그 중에 내 선임이 잘 아는 분도 있었다. 그분은 오늘 강의하는 플랫폼에 대한 저서와 강의로 유명했다. 하지만, 선임은 그분을 평가하기를 "실력도 없으면서 말만 많다"고 격멸하듯 말했다. 인지도는 말 그대로 많이 알려졌다는 뜻이다. 인지도와 실력은 항상 비례할 수는 없는데, 종종 우리는 이 둘을 하나로 생각한다. 인지도는 주로 TV나 신문과 같은 미디어 매체를 통하거나 직접 저술한 책을 통해서 이루어진다. 기본적으로 말(또는 글)에 재주가 있어야 한다. TV와 같은 매체에서 유명해지려면 조리있고 알기 쉽게 설명해야 하며, 더불어 유머까지 겸비하면 금상첨화이다. 신문이나 책과 같은 곳에서는 짜임새 있는 구성과 간결한 문장이 ..
-
GLib의 GTree로 알아보는 균형 이진 트리 알고리즘Programmer/Computer Science 2013. 8. 20. 17:31
GLib에서 제공하는 균형 이진 트리(balanced binary tree)의 구현인 GTree의 알고리즘을 살펴보자. GTree는 AVL tree (Adelson-Velskii and Landis' tree) 알고리즘을 사용하였다. 우선 균형 상태에 대한 정의부터 해야하겠다. 트리 A가 균형 상태라고 하면A의 하위 트리(subtree) A(L)과 A(R)이 균형 상태이고A(L)과 A(R)의 높이의 차이가 1 이하이다. abs(height(A(L)) - height(A(R))) balance left->balance left->balance > 0 LR node->balance > 1 node->right->balance >= 0 RR node->right->balance < 0 RL..
-
GLib와 GIO를 이용한 간단한 네트워크 서버와 클라이언트 예제Programmer/Computer Skills 2013. 8. 13. 16:25
예전에 인터넷에서 우연히 발견한 GLib와 GIO를 이용한 간단한 네트워크 서버/클라이언트 예제이다. GLib의 이벤트 루프와 GIO의 네트워크 기능을 활용하여 서버를 개발하는 좋은 샘플이 될 것으로 기대한다. 서버 소스 #include #include static GInetAddress* get_localhost() { /* No clean way to handle IPV6, short of guess/check */ GInetAddress* addr = g_inet_address_new_any(G_SOCKET_FAMILY_IPV4); if (!addr) { addr = g_inet_address_new_any(G_SOCKET_FAMILY_IPV6); } return addr; } /* this fun..
-
행복은 IT 기술의 발전이 아니라 개인의 태도에 달렸다Life/Society 2013. 8. 2. 18:00
IT 기술은 계속 진보한다. 컴퓨터는 서버/터미널, 개인용 데스크탑, 노트북, 스마트폰/태블릿으로 발전하고 있다. 네트워크 역시 대역폭이 증가함에 따라 텍스트에서 멀티미디어로, 유선에서 무선으로 발전하고 있다. 이제는 모바일 기기와 무선 인터넷의 발달로 항상 인터넷에 연결되는 시대가 되었다. quad-head MacBook Air (sorta...) by blakespot 기술의 발전으로 인간은 점점 행복할 것 같다. 언제 어디서나 게임을 할 수 있고, 누군가와 연락하기 위해서 유선망에 접속할 필요가 없다. 기성 언론에서 다루어지지 않는 뉴스들을 SNS에서 볼 수 있고 내 목소리를 낼 수도 있다. 한편으로, 인간이 욕구를 표출하는 다양한 수단들, 예를 들면, 게임, 채팅, 게시글 등은 기술의 발전에 따라..
-
간결하고 효율적인 프로그래밍Programmer/Programming 2013. 7. 22. 15:24
예전에 인터넷에서 중국 격투가의 동영상이 화제가 된 적이 있었다. 정확히 기억이 나지는 않지만 1900년대 중반에 촬영된 것으로 중국의 고수 2명 링에서 실전 격투를 벌이는 영상이었다. 나는 중국의 무술 영화의 한장면을 기대하며 시청했는데, 막상 그들은 무술을 전혀 배우지 않은 사람들처럼 마구잡이 난타전이 벌였다. 눈을 돌려서 최근에 이종 격투기를 살펴보자. 이들의 기술은 단순하고 효율적이다. 실전 격투에서는 화려하기 보다는 간결하고 파괴적인 동작, 이론으로만 존재하는 것이 아니라 실전에서 검증된 기술이 살아남는다. 현대의 이종 격투기와 같이, 중국 무예의 창시자는 대부분 실전 무술가로써 명성을 얻는 경우가 많다. 후대에서는 이 창시자가 어떤 생각을 가지고 무예의 동작과 훈련을 만들었는지는 무시되고, 스..