GREAT CODE: 하드웨어의 이해

조엘이 C를 배우라고 하는 이유에서 가장 많이 강조한 부분은
진짜로 직접 실행되는 코드가 어떤건지 구조를 알지 못하면,
하이레벨에서 사소한 잘못된 선택으로도 치명적인 속도 저하나
프로그램 문제를 일으킬 수 있다는 그런 이유였습니다. 물론
반론은 상당히 많은 주장이지만, 그 주장에 감명을 받아서
“나도 이제 저수준 세상을 알고 싶어!”라는 사람에게 시간은
되도록 적게 들고 손쉽게 익힐 수 있는 책으로
《Write Great Code》를 서점에서 처음 봤을 때, 아 딱 그책이군! 하는
느낌이 들었습니다.

이 책은 처음에는 1권만 쓰고 반응을 보려는 듯 부제를 무지
조그맣게 썼는데, 결국 이번 달 중으로 2권이 나온다고 합니다.
1권은 “Understanding the Machine”이고 2권은 “Thinking Low-Level, Writing High-Level”입니다.
1권이 7월에 에이콘 출판사에서 번역판이 나왔습니다.
서점에서만 원서를 약간 보다가 번역판을 사서 자세히 봤습니다.
원서는 너무 비싸서 T-T..

예를 들면 파이썬에서 “0.3 더하기 0.3을 했는데 왜 0.6이 아니라
0.59999998이 나오나요.” 하는 파이썬 프로그래머는 정밀도가
요구되는 계산에서도 float타입으로 0.3을 계속 더해서 결국
천 번만 더해도 눈에 띄게 오차가 나버리는 심각한 상황을 맞기
십상입니다. IEEE-754가 어떤 것인지 얼핏이라도 알고 있는
프로그래머라면 그렇게 계산하면 당연히 오차가 누적되는 것을
알고 적절한 조치를 취했겠지만요~ 이런 문제는 우연히 하나씩
숨어있는 것이 아니라 살다보면 수도 없이 만나기 마련인데,
바로 그런 문제를 이 책의 앞쪽에서 설명하고 있습니다.
수치 표현이나 스트링 표현, 인코딩, 캐릭터셋, 비트연산,
논리게이트 같은 컴퓨터과학 전공 1~2학년에서 대체로 배우지만
정작 시험치고 숙제할 때만 쓰고, 실전에 그게 연관이 있구나
하고 연관이 잘 안 되고 뇌 여기 저기에서 따로 따로 놀고 있는 것들~

그 뒷부분에서는 CPU, 인스트럭션, 스택, 힙, I/O를 다루고 있습니다.
물론 각각이 컴퓨터구조, 컴퓨터시스템, OS, 파일처리론 같은 과목들에서 다루는 것이기는 하지만, 학교에서 배우는 식으로 하는 게 아무래도 현업 프로그래머들에게는 너무 시간이 많이 든다는 것을 고려해 보면, 이렇게 책 하나로 다 묶어버려서 요점만 설명하는 것도 괜찮은 접근인 것 같습니다. 흐흐;;

그런데 하나 얘기를 안 할 수가 없는 것은.. 제책과 편집..
글씨는 지금까지 봤던 컴퓨터 책 중에서 가장 작고..
한 페이지에 거의 40줄씩 나오는데다가.. 편집도 상당히
90년대 초반 교학사에서 나온 컴퓨터책들처럼 되어있어서
책을 읽고 있으면 “아아 내가 공부하고 있구나” 생각이 강하게
들게 해 줍니다. 게다가 자간도 좁고 책 크기도 너무 커서
(B5 풀 사이즈) 들고다니면서 흔들리는 곳에서 보기에
아주 곤란합니다. 막 고3의 심정으로 옆에 지나가는 사람들
다 붙잡고 “나 공부하고 있어요 주르륵” 하소연이라도 해야할
것 같은..
책 값이 25000원이면서도 제책 품질이 이렇게 떨어지고
품위가 없게 나온 것은 아무래도 우리나라 출판 사정이 점점
어려워지고 있다는 뜻일까요.. -_.-;;
적어도 읽고 싶은 마음이라도 나게 만들어주면 좋겠군요..

그럼에도 불구하고 책의 내용은 다음의 사람들에게는 아주
유익할 듯 합니다.

  • 컴퓨터과학을 전공했지만 졸업하면서 책을 다 버리거나 후배들 줘버린 사람
  • 컴퓨터과학을 전공하지는 않았지만 모르는 말이 나와도 별로 두렵지 않은 사람
  • 책을 장 단위로 쪼개들고 다니면서 보기 때문에, 제책이 어떻든 신경 안 쓰는 사람
  • 회사에서 책 사라고 공지가 나왔는데 뭘 사야할 지 딱히 정해둔 것이 없는 사람

흐흐;

번역본 제책이 아쉬운 한편.. 2권 “저수준으로 생각하면서 고수준 코드를 짜기”가 기대가 됩니다. 1권을 보고 약간 아쉽다 생각이 드는 경우에는 Miguel도 추천한
Computer Architecture: A Quantitative Approach를 같이 보면 좋을 듯 합니다~

일본 LLDN (경량언어낮과밤)

한국의 대안언어축제
비슷한 성격의 일본의 축제인 LLDN 2005가 8월 27일에 있었다고 합니다. 우리도 비슷한 행사를 하고 있으니 관심을
가지고 좀 찾아보았습니다. 🙂

예산과 행사 조직

대안언어축제 초기에도 LLDN에 대한 얘기가 좀 있긴 했는데,
LLDN은 기존에 잘 꾸려진 커뮤니티들이 연합하여 하는 것이지만
대안언어축제는 유명무실한 커뮤니티들 사람들 몇몇이 임시로
모여서 하는 거라 좀 다른 면이 있습니다. 그리고 대안언어축제는
지원을 정부기관에서 했지만, LLDN은 O’Reilly Japan이나
여러 다른 출판사, 신문사, 소프트뱅크 같은 곳에서 지원을
하고 있습니다.

LLDN은 2003년부터 계속 이름이 바뀌어 왔는데,
2003년엔 LLSaturday로 토요일에 했고, 2004년에는
LLWeekend로 주말에 이틀간 했고, 올해는 LLDay&Night로 해서
낮과 늦은 밤까지 한 것 같습니다. 낮에는 아카데믹하게,
밤에는 축제적인 요소를 가미했다는군요. 대안언어축제도
1박을 하는 바람에 예산이 걷잡을 수 없이 엄청나게 불어난
것을 생각해 보면, 늦은 밤까지 해버리는 것도 괜찮은 것 같습니다. 🙂

세션 구성

LLDN의 낮 세션에는 “아카데믹”을 정말 그대로 실현하기 위해서인지
각 언어별로 1개씩 세션을 빼곡히 채워놓았습니다. awk, curl,
gauche, haskell, ml, perl, php, python, ruby, squeak 모두 10개나 되네요. 대안언어축제에 비해서 확실히 다양성이 있는게 무척 부럽습니다. 그리고, 대안언어축제에서는 언어보다는
언어 독립적인 것들을 많이 발표 세션에 배치한 반면에, LLDN은
발표 세션은 모두 각 언어별로 배정이 되어 있군요.

독특한 세션 – 낮

발표 세션을 제외하고 독특한 포맷의 세션을 보자면, LLDN의
대표적인 두가지 “체제 대결”과 “너라면 어떻게 쓰겠니?”가 있네요.
“체제 대결”에서는 RoR, Kahua, Sledge 세가지 웹 프레임워크의
전문가들이 나와서 발표를 하고서 사회자의 진행으로 열띤 토론을
하는 것 같습니다. 대안언어축제에서도 사실은 원래 이런 걸
해 보고 싶었는데, 사람이 모자라다보니 못한게 좀 아쉽네요..
그리고, “너라면 어떻게 쓰겠니?”는 각 언어의 참가자들이
하나씩 규정연기와 자유연기 중 선택 또는 둘 다 시연을 하게되는데,
관중이나 다른 참가자들이 “너라면!” 상황에서 구현한 것을
서로 비교해보는 정말 살떨리게 재미있을 것 같은 세션일 것 같습니다. 🙂

독특한 세션 – 밤

그리고, 축제의 자리인 Night에서는 “안돼 자랑”, “데모 자랑”, “선물 대회”가 있는데,
“안돼 자랑”에서는 보통 금지되어 있는 흑마법들을 이렇게도 할 수 있다!
하면서 “으아아아~ 안돼~~~” 하는 거라고 합니다. 다른 언어 유져들에게는 숨겨온것들은 자진해서 얘기하자는 거라는군요.. (설명해 주신 미쓰님 감사!) 그리고, “데모 자랑”에서는 백문이불여일견으로 자기가 자기 언어나 툴킷/프레임워크에서 자랑하고 싶은 것을 나와서 보여주고 다른 사람들이 “우와~~” 해주는 행사라고 합니다.
역시 재미있을 것 같습니다. 하아~

대안언어축제와는..

LLDN은 대안언어축제와 매우 유사한 주제를 다루고 있음에도 불구하고
매우 다른 형식과 규모, 조직성을 갖고 있다는 점에서 서로 배우거나 가르쳐줄 것이 많은 사이인 것 같네요. 대안언어축제의 코드레이스, 야외활동, 로제타카드는 정말 자랑할 만 한데요.. ^^
그리고, 아무래도 LLDN은 사람 수가 너무 많고 장소가 강의용 장소라서 페어나 실습은 크게 못해보는 것 같네요.

LLDN 홈페이지에 올라와 있는 블로그 트랙백을 보면 참가자들 수십명이 자기 블로그에 글을 쓰고 트랙백 보내는 걸 보면 참 부럽습니다. 우리도 내년엔! 우후훗.;

하나 희망적인 것은 LLDN은 참가자가 수백명인데 여성참가자가 한명도 없었다는군요.. (그래서 그런지 LLDN 홈페이지를 보면 페이지 마다 의미없는 여성 모델이 나오는 이미지 컷이 -_-;;)


(그런데, LLDN 블로그 소프트웨어가 OpenLook과 같은 coreblog라서 매우 반갑습니다. 크크 _-_)

PyPy 0.7.0 릴리스

멋지구리 파이썬 해커들이 파이썬으로 만드는 파이썬
PyPy
0.7.0이
릴리스
되었습니다.

그동안은 뜨는데 몇십분이 걸리고 그랬는데, 이제는 인내력이
별로 없는 사람도 어느 정도는 해 볼 수 있을 정도는 됐군요. 🙂

릴리스 노트에서도 밝히듯이 어디까지나 연구목적의 프로젝트이기
때문에, 너무 성능을 진지하게 받아들이면 안 되겠지만.. 🙂
언젠가는 더 나을지도 모를일~ 한동안 구체적으로 보지는 못했지만
이번 릴리스에서 특이한 점은. Armin이
“C로 구현된 두번째 파이썬을 소개합니다.”라고 PyPy를 소개했다는 점~
자세히 보니까, LLVM(Low-Level Virtual Machine)이란 것이
새로 도입되었는데, 기존의 CPython이 VM과 런타임, 표준 라이브러리가
혼란스럽게 섞여있는 반면에, PyPy에서 LLVM을 백엔드로 선택하는
경우에는 VM만을 저수준으로 격리해서 C로 구현된 것을 돌리고,
런타임과 표준 라이브러리, 컴파일러 등은 파이썬으로 만든 것을
돌릴 생각인 것 같군요.

유럽연합의 지원을 충분히 받으면서 재미있는 프로젝트를 하고
있는 것 같아서, 무척 부럽습니다. 🙂 기대가 되는군요!

실용주의 프로그래머


그동안 김창준님의 글을 보다보면, 유난히 많이 언급되는
책 중의 하나가 바로 이 《The Pragmatic Programmer》였습니다.
책 제목에서도 모르는 단어가 나오는 것에(어휘력이 짧다 –;)
멋있게 뭔가 단정적으로 제목이 달려 있어서 인용문을 유심히
보지 않더라도 풍겨나오는 포쓰에 압도를 당해서 아직 읽어보지
못하고 있었습니다. (^^) 그런데, 얼마전에 드디어 한국어
번역판이 깔끔하게 나왔군요~

이 책은 실용적인 프로그래머가 일반적인 다른 프로그래머들에
비해서 어떤 것이 다른가에 대한 설명이 주를 이루는데,
아무래도 프로그래머가 원래는 실용적인 사람이어야 하는 만큼
스타일 문제, 문제 접근법, 아키텍처 디자인, 코드 제너레이션이나 빌드 자동화 같은 개발 기법, 효율적인 코딩을 위한 테크닉,
리팩터링, 테스트 방법 등 골고루에 대해서 얘기를 하고 있습니다.
즉, 학교에서는-안-가르쳐-주지만-회사에서는-필요한 류의
것들을 많이 알려주고 있습니다.

물론, 그런 류의 책도 이미 상당히 많이 나와 있는 편이지만
이 책이 돋보일 수 있는 이유는 아무래도 프로그래머의 일생을
기준으로 한 조언을 해주는 것 때문이 아닌가 싶네요.
학교에서는-안-가르쳐-주지만-회사에서는-필요한 책들도 대체로
이런건-몰랐지 류로 열심히 놀래켜 주는 것으로 그냥 끝맺는
경우가 많은데, 이 책에서는 프로그래머가 프로그래머로 계속
살아가는데 있어서 프로그래밍에서 보람을 얻고, 프로그래밍에
대해서 꾸준히 열정을 갖고 있을 수 있는 실제적인 방법들을
소개하고 있습니다. 그렇다고 직접적으로 “매일 아침 동쪽 하늘에
절을 하고 프로그래밍신에게 어쩌고저쩌고~” 이런 거는 아니고
고인 물을 깨끗히 하기
위해 매년 한가지씩 새로운 언어를 배워라.. 라던지 텍스트 처리에
좋은 언어를 배워서 프로그래밍과 디버깅이 지겹지 않도록 하라
이런 조언들이 있어서,
늘 하는 일인데 프로그래밍이 지겹고 싫어질 때
내가 그래서 지겨웠구나 하고 깨닫게 될 수 있는 좋은 책입니다. 🙂

GUI의 장점은 WYSIWYG(What You See Is What You Get), 즉 여러분이 보는 것이 여러분이 얻는 것이라는 것이다. 단점은 WYSIAYG(What You See Is All You Get), 즉 여러분이 보는 것이 얻는 전부라는 것이다.
실용주의 프로그래머, p. 139

명세서가 안심용 담요 역할을 해서 개발자들이 코드 작성이라는 무서운 세상으로부터 보호받는 기간이 길어질수록 진짜 코드 작성단계로 옮겨가기는 더욱 힘들어진다. 이런 명세의 순환에 빠지지 말라. 언젠가는 코딩을 시작해야 하기 때문이다! 여러분 팀이 따뜻하고 편안한 명세서 속에 푹 싸여있는 것을 보거든, 밖으로 끄집어내라. 프로토타이핑을 해보거나, 예광탄 개발을 고려해보자.
실용주의 프로그래머, p. 344

참, 그리고 한빛미디어에서 놓쳐서는 안될 그 책!
《Head First Design Patterns》 번역판을 예약판매하는군요.
요새 좋은 책이 번역이 많이 돼서 참 좋습니다~

그나저나 요새 서점에 놀러가면, 컴퓨터 프로그래밍 쪽 서가에
앉아서 책 보는 사람들의 성비가 늘 거의 1:1에 가깝던데..
요새 무슨 일이 있는 걸까요? ;;;; -0-

대안언어축제를 마치고

사진 중 일부는 박영창씨가 촬영한 것입니다.

2달 전쯤에 블로그에 그냥 버스타고 왔다갔다 하던 꿈을 올렸던
“기민한 언어의 날”
행사가 드디어 현실이 되었습니다.
“대안언어축제”라는 이름으로
8월 20일,21일 양일간 강원도 홍천에 있는 대명비발디파크에서
열렸습니다. “뭔가 하긴 했구나!” 생각이 들어서 참 다행입니다. 🙂

기획/준비 단계

대안언어축제의 첫준비는 6월 23일 강남역에서 있었습니다.
당시에 관심을 보여주신 10분이 모여서 행사의 이름을 정하고,
어떤 형식의 행사가 될지, 내용은 어떤 것을 다룰지, 목적은
어떤 것인지, 행사날짜 등을 정했습니다. (놀랍게도 첫번째
모임에서 날짜가 확정이 되어버렸지요!)

그 이후로는 초기의 “통사” 그룹 분들이 다들 바쁘신데다, 리더격을
정하지 않다보니 제대로 굴러가지 않아서 몇번 만남이 띄엄띄엄
있었습니다. 그래서 결국은 7월말까지 거의 결정된 것 없이
시간이 지나가게 되었는데, 그때
자원봉사자들을 뽑기 시작하면서
자봉분들의 활발한 준비로 장소와 준비물 등이 진행되기 시작하였습니다.
그러나 장소는 여러가지 문제때문에
행사 11일 전에서야 결정이 되었고, 아무래도 이런 형식의 행사가
처음이다보니 시간이 많이 걸려서 행사 직전까지 자봉들은
거의 매일 회의를 해야 할 정도로 바쁘게 준비되었습니다.

행사 전날 선발대 활동

행사 전날인 8월 19일에 미리 가서 행사 준비를 하는 선발대A팀과
진흥원지원부분인 간식과 문구류를 사서 가는 선발대B팀이
출발했습니다. 자봉, 통사, 발표자와 진흥원에서 지원해주시는
이재경씨를 합해서 모두 12명이었습니다.

비발디파크에 도착해보니 참 바깥 경관이 좋아서, 뭔가 컨퍼런스만 하고 있기에는 아깝다는 생각이 좀 들더군요. 크.. 하여간, 얼른 준비 숙소가 있던 오크동 8층에 짐을 풀고, 준비를 시작했습니다. 불과 하루밖에 남지 않았는데 준비가 안 된 것이 많아서 여러모로 불안했는데, 작은 인덱스 카드에 작업을 나눠서 하다보니 사람이 많아서 생각보다 금방금방 끝나더군요. 🙂

저녁엔 본 행사장인 에메럴드룸으로 옮겨서 다음날 개회식에서 쓸
대안언어 도미노를 만들었습니다. 많은 분들이 여러개의 언어로 열심히 만드셔서, 저는 그냥 awk만 만들었습니다. 너무 짧아서 뻘쭘;; _-_

행사 첫날 13:40 – 개회식

드디어 행사 첫날이 되었고, 막판 개회식 준비로 다들 여념이 없었습니다. 역시 바쁘면 안 되는게 많아서.. 도미노는 제대로 안 굴러가는데 막 서울에서는 차가 하나도 안 막혀서 30분 일찍 도착한다고 하니 참 애가 타더군요. 므흐..

막상 주자분들은 일찍 오시는데, 네트워크 설치하는 업체에서는 팔당댐에서 차가 막혀서 3시간째 못오고 있다고 하고.. 그런데 세션이 있는 작은 방들에서는 네트워크 필요한 세션들이 다들 첫번째 세션으로 잡혀있고.. 거의 패닉 상태에 갈 무렵, 30분 정도 지체가 돼서 네트워크 업체가 드디어 도착해서 세팅을 하고 간신히 시작을 했습니다. 원래 주자분들을 도착하자마자 숙소로 안내할 예정이었지만 그마저도 비발디파크측에서 이전 체크아웃 시간이 늦어서 3시는 돼야 들어갈 수 있다고 그러고.. 행사 초기에는 일정 변경이 굉장히 심각했지만, 그래도 별 탈없이 지나갔습니다. ^^;

행사 첫날 15:00 – 첫 번째 멀티트랙 세션

제가 맡은 발표세션인 “동적 네임스페이스”는 별로 이름부터 크게 재미있어 보이지 않는 주제로, 아무래도 썰렁하지 않을까 생각하고 조마조마 세팅을 마치고 기다리고 있었습니다. 흐흐. 처음에 딱 2분이 들어오시고 한 5분동안 썰렁~해서 으하하하 웃으며 있었는데, 알고보니 일정이 쭉 밀려서 늦게 시작한다고 하더군요. 흐흐 그래서 작은 방이 꽉 차게 많은 분들이 오셔서 조금 부담이 되었습니다. ^^; 그런데, 준비를 크게 많이 못해서 그런지 참 설명이 여러모로 꼬여서 고생을 많이 했습니다. 전에도 몇번 리허설을 꼭 해야지 생각을 했는데 이번에도 리허설 안하고 그냥 했다가 낭패를 –;

다행히도 이번 축제에서는 발표 세션에서 발표의 비중을 크게 줄이고 대부분을 페어 실습으로 하는 방향으로 미리 발표자 논의에서 정해두었기 때문에 끝 30분정도를 그냥 실습으로 슬쩍.. 흐흐.. 주자분들이 생각했던 것보다 훨씬 파이썬을 많이 하고 계시고, 파이썬을 안 하는 분들도 쉽게 적응하시는 것 같아서 무척 즐거웠습니다. 🙂

행사 첫날 16:30 – 두 번째 멀티트랙 세션

그 다음에는 두 번째 멀티트랙 세션으로 Ajax와 Esoteric Langauge를 했습니다. 저는 퍼즐릿님이 진행하신 Esoteric쪽에
참가를 했는데, 처음으로 한글로 하는 난해한 프로그래밍 언어 “아희”로 프로그램을 하느라 아주 쏙 빠져서 한참을 “밯맣희”이런 코드를 입으로도 읽고 손으로도 치고 하면서 즐거워했습니다.
거의 20명 넘는 분들이 다같이 “아희”코드를 짜면서 으아아아~~
하고 있는 것을 옆에서 보고 있으려니 정말 재미있었습니다.;;

행사 첫날 20:00 – 코드레이스/코드챌린지/마인드스톰

저녁을 먹고 멀티트랙 놀이시간에 들어갔습니다. 코드레이스는
통사들이 해설과 진행을 맡고 4~5명으로 구성된 팀들이 계속
추가되는 요구조건을 만족시켜가며 순간 순간 점수를 받아서
최종적으로 점수를 많이 받는 팀이 이기는 게임이었습니다.
중간에 요구사항 변경을 팀들이 직접 발표할 수도 있고, 자기의
요구사항 변경을 10분안에 구현하지 못하는 경우의 감점 같은
여러가지 점수 제도 때문에 참가하는 팀이 재미있게 할 수
있었습니다. 또한, 스타리그 중계처럼 앞에 3명이 앉아서
각 팀의 순간순간 전황을 해설하며 얘기를 하고 있는 것도
재미있고, 앞으로도 많이 발전할 수 있는 게임이 확실합니다. 🙂
그런데, 아무래도 코드레이스를 좁은 방에서 참가자들만
있는 채로 해버려서 관중이 없어서 해설해도 공중에 하는
것이다보니 별로 말을 못해서 약간 그렇더군요. 크흐.

옆 방에서는 코드 챌린지와 마인드스톰을 했다고 합니다. 가 보지는 않아서 잘 모르겠지만.. ^^; 코드 챌린지는 여러 정보경시대회 스타일의 문제를 힌트로 해서 숨은 URL 찾기를 하는 놀이인데, 나중에 참가자들의 말을 전해 들으니, 재미있게 진행된 것 같았습니다. 🙂 상품도 좋고~ 마인드스톰에서는 원래 뭔가 만들기를 하려고 했는데, 자봉/통사 중에서도 아무도 마인드스톰을 해 본 사람도 없는데다가, CD를 빼먹고 오는 바람에 결국은 레고놀이로 했다고 합니다 흐흐;;

행사 첫날 22:00 – 양과 치타또는 늑대 놀이

밤 시간에 원래 하려고 했던 장기자랑이 아무래도 분위기를 식힐 것 같다는 판단에, 대신 치타와 양 (몇몇 팀은 늑대와 양) 놀이를 했습니다. “땀 안 흘리는 야외 놀이”를 할 예정입니다. 라는 말에 주자분들은 얼떨결에 밤에 밖에 맨손으로 나가셔서 어리둥절했지만, 규칙을 설명해 드리고 게임을 하고 있으니 막 재미있다고 계속 하자는 분도 계시고.. 🙂 프로그래머들 아니면 누가 이런 게임을 할까 싶지만 프로그래머들에게는 정말 재미있는 게임이었습니다!

행사 첫날 23:15 – OST (Open Space Technology)

첫날의 마지막으로 OST 시간을 가졌습니다. OST는 1200명까지 토론을 할 수 있는 집단 토론 기술로, 벌과 꽃의 메카니즘 같은 재미있는 것을 수용한 재미있는 방법이라고 합니다. 🙂 우선 발제자들 몇 명이 나와서 어느 자리에서 뭘 토론합니다. 하고 화이트보드에 적고 가면, 사람들이 자기가 토론하고 싶은 곳으로 가서 토론을 하다가 아무때나 다른 곳에 가고 싶을 때 여기저기 왔다갔다 하면서 토론을 하는데, 중간에도 계속 화이트보드에 새로운 주제를 낼 수 있기 때문에, 짧은 시간 안에 많은 사람들이 다양한 주제로 토론을 할 수 있습니다. 결국은 프로그래밍 언어와 기호학 , 대안언어 회사에서 쓸 수 있나 같은 주제 외에도 커피에 대한 모든 것, 한국 개발자들의 노동 조건 같은 주제까지도 재미있게 이뤄졌습니다. 🙂

행사 두째날 10:30 – 세번째 멀티트랙 세션

두째날 아침에는 세번째 멀티트랙 세션으로 김창준님의 EDSL, 승범이의 Squeak이 있었습니다. 저는 DSL(Domain Specific Langauge)가 적용이 가능한 부분에 요새 관심이 많은 터라 EDSL에 참가하였는데, Squeak도 옆에서 들려오는 승범이의 낭랑한 목소리에 아아 아쉽다 아쉽다 하면서 있었습니다. 🙂

EDSL 세션에서는 기존 언어 문법을 거의 그대로 활용하면서도 DSL의 장점을 그대로 쓸 수 있는 방법을 배웠습니다. 실습시간에는 저는 C 선행처리자를 이용한 EDSL을 해 봤는데, CJKCodecs의 ISO2022 코덱이나 multibytecodec 구현에서도 C 선행처리자로 이것저것 지저분하게 많이 해 뒀는데, EDSL 개념을 알고 구현했으면 좀 더 보기 좋은 코드가 나왔을 것 같은 생각이 들더군요~

행사 두째날 12:00 – 폐회식

폐회식도 뭔가 대안적인 방법을 찾아보다가, 자봉단이 장시간 보리차를 마시면서 토의한 결과, 회고를 전지를 놓고 마음껏 그리고 쓰는 것으로 했습니다.
우선 테이블에 앉은 사람들이 글자로 좋았던 점과 개선되었으면 하는 점을 쓴 다음에, 다른 전지를 하나 받아서 크레파스로 말을 전혀 하지 않고 문자도 안 쓰고 그림만 가지고, 느꼈던 점과 다음 행사에 바라는 점 같은 것을 쓰는 것으로 했습니다. 그런데, 그림이 아주 기상천외한 것이 많아서, 다른 테이블 사람은 커녕 옆사람이 봐도 못알아보는 것이 많아서.. 무지 재미있었습니다. 크흐~

행사 두째날 12:30 – 점심식사, 기념촬영

토요일 점심부터 일요일 점심까지 모두 4끼를 먹은 곳은 메이플동 지하의 오리엔탈 익스프레스라는 곳이었습니다. 여기가 제법 비싸기는 하지만, 보통 게를 안 넣는 음식에다가 게를 계속 넣어줘서 인상이 깊었습니다. -ㅇ-; 마지막 점심에는 장어덮밥! 꺅~~;

되돌아보며

이번 행사는 국내에서는 전례가 없던 실험적인 포맷으로 가득 채운 행사이니 만큼 성공할 수 있을지에 대해서 무척 기대가 많았습니다. 특히, 계속 일정이 지연되면서 정작 추진은 안 하면서도 조바심나고 그랬었는데, 여러 자봉분들과 김창준님, 승범군의 헌신적인 준비로 얼마되지 않은 시간동안 큰 일을 이뤄낸 것 같아서 무척 기쁩니다.

코드레이스, 치타와 양 같이 이번에 특히 재미있었던 새로운 형식들은 앞으로 좀 더 재미있게 할 수 있을 것 같다는 확신이 들었고, 일반 세션들도 페어 실습의 비율을 계속 높이는 것으로 하품나는 지루한 발표에서 탈출할 수 있다는 것도 느꼈습니다.

로제타 카드를 이용한 활동이라던지 사람들끼리의 활동을 촉진하는 활동이 뒤에 나오기 시작해서, 앞에서 활발하게 활동하기가 힘든 분위기 였다는 점은 다음에 개선하면 좀 더 흥분되는 행사가 될 것 같습니다.

이번 축제 준비로 정말 수많은 시간과 노력을 한 통사, 자봉 여러분 정말 진심으로 감사하고 있습니다. 그리고, 주자 여러분들도 지금까지 가 본 어떤 행사보다도 열린 마음으로 능동적으로 참여해 주셔서 준비가 미흡했음에도 불구하고 축제가 성공할 수 있었던 점 한동안 잊지 못할 것 같습니다. 🙂

또한 참가비만으로는 도저히 꾸릴 수 없는 행사였기에, 재정적으로 대부분을 지원해 주셨던 한국소프트웨어진흥원과 진행에 많은 도움을 주신 이재경씨께도 참 고맙게 생각합니다. 다음에도 많은 지원 부탁드립니다.;; _-_

시간표 정도는 자동으로

복학 준비를 하면서, 어제 신촌으로 이사도 하고 준비가 착착 되어가고 있습니다~
이제 내일부터는 수강신청인데, 항상 할 때마다 과목끼리 충돌 검사도 하고, 주4를 만들려면 어떻게 해야하나 항상 고민을 하는게 참 귀찮았습니다. 그래서, 아무래도 이런 작업은 사람이 할 일이 아닌 것같아서 자동으로 선호도를 입력하면 시간표를 만들어 주는 스크립트를 하나 만들었습니다. 으흐흐~

우선 입력값으로 들어가는 것은, 후보 과목들의 기본 정보들과 각 수업의 대체 그룹 (같은 그룹에서는 1과목만 신청하게)을 CSV로 지정해서 그것을 프로그램에서 읽어옵니다. 그리고, 그 외의 정보로 따로 들어오는 것은

  • 신청 학점 (최소, 최대)
  • 주4일 선호 가중치
  • 주3일 선호 가중치
  • 학교에 있는 시간 가중치 (-로 주면 가급적이면 공강을 줄임)
  • 이른 아침 시작 가중치 (-로 주면 아침 수업을 피함)
  • 저녁 수업 가중치 (-로 주면 저녁 수업을 피함)
  • 과목별 선호도 (학점에 곱함)
  • 수업 과집중 가중치 (-로 주면 수업이 너무 많이 몰리는 것을 피함)

으흐흐 그래서 시간표를 몇 개 뽑아 봤더니 직접 손으로 짠 것보다 만족스러운 것이 몇개 나오는군요~ 수강신청 하다가 몇개 꽉 찼을 때도 대안 시간표를 쉽게 새로 생성이 가능!

CSV 파일 형식은 이런 식으로 입력합니다. (그룹,가중치…,학점 순)

소스는 snippets/aratt에 있습니다. (프로그램 이름은 Arranger for the Relaxed Assembly of TimeTable 에서 따왔습니다. -_-;) 라이선스는 언제나 그렇듯 libpng/zlib license를 적용합니다.

구글 수표는 제때 바꿉시다.

요새 이사 가느라고 보증금을 빼고나니 오랜만에 통장이 마이너스로
들어가버려서, 그동안 서랍에 고이 모셔두었던 구글 수표를 현금으로
바꾸려고 은행에 들고 갔습니다.
은행에서도 이게 어떻게 처리하는 건지 모르겠다며 한참 고민을
하더니만 한참 있다가 해외수표매입으로 처리를 해 줬는데, 구글이
그 구글이 맞냐면서.. -O- 하여간 그래서 막 즐거운 마음으로
집에 돌아왔습니다~

그런데 오늘 아침에 씻고있는데 은행에서 전화가 왔습니다.
“고객님 어제 매입하신 수표가 알고보니 지급기한이 지나서…”
으흑 작년 11월에 발행된 수표라서 지급기한인 6개월이 지났다는군요.
그래서 부도처리되었을 수도 있다고.. Y_Y. 엉엉~

구글 수표 받으면 제때제때 바꿉시다~

살다보면 늘 겪게되는 시스템 질문의 일반해

IRC나 메신저나 회사나 여러군데서 컴퓨터를 할 줄 안다는
이유로 워드 질문, 윈도우 세팅 질문, 인터넷이 왜 안되느냐 질문,
메일이 왜 도착 안 하느냐 질문, 다음넷에 왜 로그인이 안 되느냐 질문 등.. 별의 별 질문을 다 받습니다.
“내가 만든 것 아니라 몰라요” 라고 대답할 수도 없고.. -_-;;

하여간.. 그래서 지금까지 했던 답변 중 시스템과 관련된 질문 대부분을 커버할 수 있는
일반해를 하나 고안하였습니다. 시스템 질문 중의 한 80% 정도는 이 일반해
공식으로 해결이 될 것 같군요.. 🙂 물론 워드질문이나 웹사이트 왜 안되느냐 하는 질문에 대한 일반해는 너무 어려워서 아직 만들지 못했습니다. –;;

  • A: XXX가 안 돼요.
    B: XXX가 어떻게 안 되나요?

  • A: 잘 모르겠어요. 그냥 XXX가 안 돼요.
    B: 에러 메시지 없나요?

  • A: 안 보여요 하여간 안 돼요.
    B: 로그에 뭐 안 남나요?

  • A: YYY라고 나와 있어요. (YYY는 단정적인 최종 에러 메시지)
    B: 그 위에는 뭔가 없나요?

  • A: ZZZ라고 나와 있어요. (ZZZ는 에러의 이유 또는 상황)
    B: ZZZ를 따옴표로 감싸서 구글에 쳐 보세요.

  • A: 뭔가 나오긴 하는데 읽기 귀찮아요. 하여간 고쳐줘요.
    B: 첫번째 것에 마우스를 가져간 다음에 왼쪽 버튼을 클릭해 보세요.

  • A: 뭔가 나오긴 하는데 읽기 귀찮아요. 하여간 고쳐줘요.
    B: 그 밑에 써 있는 명령 (또는 환경설정 예시)을 따라 쳐 보세요.

  • A: 오.. 뭔가 되는 것 같긴 한데 그래도 안 돼요.
    B: 그냥 무작정 붙여넣지 말고, 자기 설정에 맞게 바꿔서 쳐보세요.

  • A: 오.. 뭔가 되긴 되네요. 감사합니다. B씨는 역시 천재예요. 다음에도 또 물어볼께요.
    B: 다음부터는 저한테 물어보지 말고 구글한테 물어보세요.

  • A: 몰라요 구글 싫어요.
    B: -_-…

몰라요 구글 싫어요. 라는 말을 들었을 때, 대상별 반응..

  • 자주보는 친구가 “구글 싫어요” 했을 때 => 다음에 밥 사달라고 한다.
  • 띄엄띄엄보는 친구가 “구글 싫어요” 했을 때 => 다음에 내가 부탁할 것이 있는 일도 있겠지 하면서 분을 삭인다;;
  • 친한 친구가 컴퓨터 잘 아는 사람이라고 자기가 아는 사람을 소개시켜 줬다 => 친구한테 내가 낯가림이 많다고 얘기한다.
  • 모르는 사람이 “구글 싫어요” 했을 때 => 모르는 사람이라 다행이라고 생각하고 참는다 -.-;
  • 후배가 “구글 싫어요” 했을 때 => 아직 세상을 잘 모르는구나 생각하고 구글쓰는 법을 가르쳐 준다.
  • 선배가 “구글 싫어요” 했을 때 => 큰일이다. 앞으로 무슨 일이 있을 것 같으면 막 밥먹으러 가려던 참이라고 한다.
  • 부모님이 “구글 싫어요” 했을 때 => 가족애를 생각하고 세대차이를 생각하면 그래도 계속 열심히 가르쳐 드려야겠다는 생각이 든다.
  • 여자친구가 “구글싫어 으아앙T-T 웩” 했을 때 => 귀엽다. 안아준다.

(먼산)

FreeBSD를 위한 ssh 파일 시스템

구글 Summer of Code 프로젝트에 선정된 FreeBSD 학생(?)이
원래 계획대로 FreeBSD로 sshfs를 작업을 한 것이 상당히 진척이
있었다고 합니다.

원래 계획은 sshfs를 직접 구현을 하는
것이었으나, 그게 상당히 노가다 작업인 것을 눈치채고, 리눅스에서
sshfs용으로 많이 쓰이는 FUSE 유저랜드 파일시스템 프레임워크를
FreeBSD로 포팅하는 것으로 대체를 한다고 하는군요. 그렇게 되면
FUSE에서 지원되는 sshfs나 gmailfs같은 여러 유저랜드 파일 시스템을
쓸 수 있게 돼서 여러모로 확장 가능성이 높아져서 괜찮을 것 같기는 합니다. 🙂

그렇지만, FUSE의 커널 부분이 GPL로 선언되어 있는 이상, FreeBSD 커널에 디폴트로 들어올 수가 없게 되었다고 볼 수 있습니다.
게다가 현재 소스 트리에서 gnu/ 쪽을 점점 줄이려는 추세라,
그냥 포트에서 관리될 것 같아서 결국은 커널에서 빌드도 잘 안되는
경우도 많아질 것 같고, 앞으로 험난한 길을 걷게 될 것 같네요.

대단원

드디어 끝났습니다. 🙂

기념으로 FAQ를 해결하는 셀프 인터뷰~

  • 시작한지 엄청나게 오래된 것 같은데 이제서야 끝나나요?
    예. 원래는 2001년 봄에 시작해서 작년에 끝내려고 했는데, 정보처리산업기사 시험에서 2번 떨어져서.. 우하하하;;

  • 끝내고 나니 기분이 어떤가요?
    으흐흐. 물론 좋지요. 이제 회사도 맘대로 옮길 수 있고, 해외여행도 맘대로 가고, 회사에 실사 나온다고 떨고 있을 필요도 없고~ 🙂
  • 회사는 계속 다니나요?
    아니요. 이미 학교에서는 90년대 학번들이 멸종위기를 맞고 있기 때문에, 얼른 복학해서 졸업하려고 합니다. 이제 3학년 2학기로 복학하는데, 4학기 남았지요.. (먼산) 복학하면 미적분학, 일반물리, 일반화학을 재수강할 예정 -_-;
  • 만약 내일 눈 떠보니 갑자기 병역특례가 6년으로 늘어났다면?
    음… 훈련소만 다시 안 보낸다면… -_-;;;;;;;;;;; 훈련소 다시 보낸다고 그러면 그냥 부산에서 헤엄쳐서 일본으로 건너가서 잠적이나.. ㅠ.ㅠ
  • 이제 끝나고 나서 가장 하고 싶은 일은 무엇입니까?
    평일에 놀러다니기, 해외여행 맘대로 가기, 아침에 매일 늦잠자기, 복무기록표 안 쓰는 것 즐기기.. 이힛~
  • 올해에는 오픈소스 활동이 무척 뜸한 편인데, 다시 예처럼 돌아오는 것인가요?
    넵! 앞으로 당분간의 계획으로는 파이썬 collections 모듈에 레드블랙 트리를 집어넣는 것, FreeBSD 바이너리 패키지를 위한 aptitude 클론 같은 것, OpenSSL에 SEED 지원 집어넣기를 생각하고 있습니다.
  • 예~ 그럼 즐거운 민간인 생활 즐기시기 바랍니다.
    아하하 당근!