Daybreakin Things

Posted
Filed under 컴퓨터

※ 아래 영문으로 먼저 작성한 글의 한글 버전입니다.

이번 구글코리아의 태터앤컴퍼니 인수건과 관련, 오해하기 쉬운 몇 가지 사실들을 정리하고자 합니다.

우선 텍스트큐브1는 오픈소스 블로깅 도구로서 TNF2와 그 핵심 조직인 Needlworks3가 개발하였고, TNC가 스폰싱을 해오고 있습니다. TNC 구성원들 중에도 물론 이 오픈소스 프로젝트에 기여하신 분들이 있습니다.

이번 인수에 텍스트큐브 및 그 개발자 그룹인 TNF/Needlworks는 포함되지 않고, TNC가 텍스트큐브를 바탕으로 개발한 서비스형 블로그인 텍스트큐브닷컴이 그 대상입니다. 따라서 이번 소식을 언급할 때 텍스트큐브 뒤에 '닷컴'을 표기하는 것은 이 두 프로젝트를 구분하는 데 아주 중요한 요소입니다. 혼란을 피하기 위해 두 프로젝트를 모두 언급해야 할 경우 오픈소스 프로젝트 텍스트큐브 뒤에 '.org'를 붙이는 것도 좋겠습니다.

텍스트큐브는 원래 태터툴즈로 알려져 있었고, 정재훈님이 최초로 개발하셨지만 당시에는 오픈소스가 아니었습니다. 노정석님이 TNC를 설립하고 태터툴즈 1.0을 발표하시면서 오픈소스화되었고, 저는 그때부터 참여하기 시작했지요. TNC는 태터툴즈와 그 후신인 텍스트큐브를 이용해 티스토리와 텍스트큐브닷컴을 개발하여 각각 다음과 구글에 피인수되었습니다. 이번에는 회사 전체와 이올린 등 모든 서비스가 함께 인수되었습니다.

태터툴즈는 현재 '프로젝트 태터툴즈'를 뜻하고, 태터툴즈라는 블로그 소프트웨어는 텍스트큐브로 이름이 바뀌었습니다. 프로젝트 태터툴즈는 TTXML4을 통한 데이터 호환성을 갖춘 소프트웨어들의 집합을 의미하는데, 지금 현재에는 태터툴즈·텍스트큐브로부터 파생된 프로그램들 외에는 지원하는 프로그램들이 없습니다. 물론 나중엔 그렇게 되길 바라고 있지만요.

한편 TNC워드프레스아키스멧에 비견할 수 있는 안티스팸 API인 이올린 안티스팸 서비스를 텍스트큐브 플러그인 형태로 제공해오고 있습니다.

니들웍스와 저는 TNC와 긴밀한 관계를 가지고 있지만 인수 협상의 내용은 보안 문제로 저한테도 알려지지 않아서 저도 거의 모릅니다. 앞으로 TTXML/TTSKIN 등의 규격 표준화 작업이나 프리미엄 스폰서가 구글로 바뀌는 등의 변화는 있을 수 있겠지만, TNF/Needlworks는 비영리단체로, 텍스트큐브는 오픈소스 프로젝트로 계속 남아있을 것입니다. 설치형 사용자 분들은 걱정하지 않으셔도 됩니다. :)

추가: 티스토리의 경우 현재 다음에서 완전히 인수하여 운영하는 서비스로, 프로젝트 태터툴즈의 일원으로서 표준화 논의 등에는 참여할 수 있지만 이번 인수와는 전혀 관련이 없습니다.


  1. 텍스트큐브의 표기는 한글 '텍스트큐브' 영문 'Textcube'를 써주시기 바랍니다. '택스트큐브', '텍스트규브', '덱스트큐브' 및 'Text Cube', 'TextCube'는 잘못된 표현입니다. 

  2. 한국에서 가장 큰 오픈소스 커뮤니티 중 하나입니다. 

  3. TNF 중에서도 가장 핵심적인 개발자 및 프로젝트 관리자를 모은 그룹입니다. TNC로부터 스폰싱을 받아왔고, 향후 구글로 바뀔 수도 있습니다. 

  4. XML을 이용해 만들어진 텍스트큐브의 백업 포맷입니다. 티스토리와 텍스트큐브닷컴도 지원하고 있고, 저는 현재 이 규격의 표준화에 참여하고 있습니다. 

Posted
Filed under 컴퓨터

고등학교 때 정말 수박 겉핥기 수준으로 C++을 다뤄보긴 했지만, 그동안 학교 수업들 및 개인 프로젝트 등을 진행하며 본격적으로 쓸 일이 없었기에 따로 공부하지도 않았던 C++에 대해 살펴보고 있다.

미투데이에서도 언급했었지만, 어쨌든 OOP 언어로서 지대한 위치를 가지고 있는 C++을 공부해보니 Java를 통해 OOP 언어들을 접한 나로서는 너무나 당연한 것이 당연한 것이 아닌 게 꽤나 많았다.

아직 그 깊고 깊은 템플릿의 세계까지는 가지 않았지만, 몇 가지 특이할 만한 것으로는 다음과 같은 것들을 들 수 있겠다.

  • virtual로 선언하지 않은 메소드들은 파생클래스 객체라고 해도 부모클래스 타입으로 접근하면 부모클래스의 것으로만 접근이 된다. 즉, 파생클래스가 완전하게 override할 수 있기를 원한다면(Java는 이게 기본이다) virtual 한정자를 선언해줘야 한다. 다시 말해, virtual을 사용하지 않았다면, 인스턴스가 실제로 어떤 클래스인지 관계 없이 현재 사용하는 타입의 정보만 사용해서 접근한다는 뜻이 된다.
    사실 옛날에 프로그래밍 언어 수업을 들을 때 vtable이라는 개념을 배우면서 대충 알고 있긴 했지만 언어 사용자의 입장에서 보니까 또 느낌이 다르다.
  • 비슷한 이유로, 어떤 클래스를 상속받아 사용하려고 하면 소멸자가 virtual로 선언됐는지 확인해야 한다. 부모클래스 타입으로 delete하면 파생클래스의 소멸자가 호출되지 않을 수 있기 때문이다.
  • 부모클래스와 파생클래스에 같은 이름이지만 인자 타입이 다른 오버로드 메소드들이 있을 때, 부모클래스에는 있지만 파생클래스에는 없는 인자 타입으로 접근할 경우 부모클래스의 메소드가 접근되지 않는다. 헉, 이거 보고 황당.. -_-; (사실 이렇게 써본 적이 없긴 한데, 당연히 되어야 하는 거 아닌가.....)
  • 순수 가상 함수, Java로 치면 abstract class의 비어있는 메소드들을 선언하려면 메소드 프로토타입에 ' = 0'을 적으면 된다. 표현 방법이 참 특이하다;;;
  • 복사 생성자와 operator = 함수와의 관계가 미묘(?)하다. C++에 포인터가 아닌 참조가 추가된 이유를 알 것 같다. 기본이 copy-by-value이기 때문에 복사 생성자가 무한호출될 수 있기 때문에 주의가 필요하다.

지금 보는 책에선 클래스에서 static을 사용했을 경우의 상속에 대해 자세히 설명하고 있지 않은데, Java나 Python 등과 어떤 차이점이 있는지 좀더 알아봐야겠다. 특히 php 5.3에서 late static binding이라는 것이 추가되었다길래 뭔가 알아보니 이 역시 '당연히 되어야 하는 것 아닌가'의 범주에 있던 거라서 C++에서는 또 다를 수도 있기 때문. -_-;;; (사실, php도 이런 점에서 상당히 황당한 경우가 좀 많다.)

예전에, OS 프로젝트를 하면서 (C++이 아닌 C이긴 했지만) static 함수들의 의미가 무엇인지 궁금했는데, 디버깅 과정에서 static 함수들은 최적화되어(!) 함수 호출이 inline으로 처리되어 있는 것을 본 적이 있다. 알고보니 일반 함수에 static을 쓰면 '그 파일 안으로 유효 범위 제한'이라는 뜻이 있단다.

아무래도, C/C++ 쪽 언어들을 제대로 책을 한 번 읽어보면서 쭉 정리를 해나가야 할 것 같다. STL은 또 그 자체로 꽤 큰 주제일 텐데... 하아;

Posted
Filed under 컴퓨터

어제 분당에서 제로보드 오픈소스 간담회가 있었다. 제로보드는 원래 zero라는 닉네임을 쓰시던 고영수님이 1999년 무렵부터 개발해오다가 2000년대 들어 제로보드4를 발표한 뒤로 정체 상태였는데, zero님이 장병규 선배가 창업하신 첫눈으로 가신 후부터 제로보드5를 개발하였고, 다시 첫눈이 NHN에 인수된 후부터 NHN측의 전폭적인 지원으로 제로보드XE를 개발해오고 있는 상황이다.

세션은 "XE의 현재와 미래"라는 주제로 zero님이 직접 발표하신 것에 이어 "XE의 주고와 개발 방법론"이란 제목으로 하늘님이 발표하시고, 마지막으로 제로보드의 기존 사용자층이 아직 웹표준에 익숙하지 않다는 것을 인식해서인지 후니님의 "웹표준의 이해와 접근"까지 이렇게 3개로 이루어졌다.

Beginning

시작하기 전 모습. 앞에 서계신 분이 바로 제로님.

온라인으로 신청한 사람은 얼마나 될 지 모르겠지만 실제 참가한 사람들은 대충 40~50명쯤 되는 것 같았다. 기존 제로보드가 여러 곳에서 널리 사용되었던 만큼 다양한 분들이 오셨는데, 교육·공공기관의 홈페이지 작업을 주로 하는 웹에이전시 업체에서 오신 분부터 시작해서 프로그래밍에는 문외한이었지만 회사의 사용자 지원팀에서 제로보드를 쓰다보니 말리게 된(?) 분까지 있었다.

두번째 세션 시간에 노트북으로 ZBXE svn sandbox 소스를 내려받아 살펴보았는데(사실 그동안 자세히 뜯어본 적이 없었음) 아주 깔끔한 구조로 잘 만들어져 있었다. 특히 각 모듈마다 사용되는 DB Query들을 XML 형태로 추상화하여 모아놓은 것이 인상적이었다. (원래 행사장 무선랜이 작동하지 않았지만, myLG070 네트워크에 기본 암호로 접속하는 방법을 후니님이 알려주셔서 살짝 빌려썼다. =3=3) Singleton 형태로 Context 객체를 이용하는 부분이나 Debug 출력을 위한 객체 제공 부분 등은 텍스트큐브에도 도입해야겠다는 생각이 들기도 했다.

한편으론 이런 구조화·모듈화가 프로그래밍 입문자들한테는 더 어려울 수가 있기 때문에 그만큼 코드에 주석도 잘 달아놔야겠다는 생각도 들었다. (근데 주석을 영문으로 달아야 할까 한글로 달아야 할까? -_- 일단 이런 식으로 해놓긴 했는데...)

사용자층이 다양했던 만큼 다양한 요구사항들이 나오기도 했다. 동영상 강의, 쇼핑몰 구축, 위키 시스템 도입 등을 건의하였는데, 사실 직접 모듈 개발을 하면 얼마든지 가능한 부분이라 생각되지만 역시 아직 ZBXE 내부 구조에 익숙한 개발자들이 별로 없다는 점이 문제인 듯 싶다. 이 외에도 성능 개선이나 full-text 검색 지원, 버전 업그레이드시 쉽게 꼬이는 문제 등이 지적되었다.

태터툴즈와 텍스트큐브는 아직까진(...2.0은 내가 손수 뒤집고 있음-_-) 구조를 천천히 조금씩 바꾸어오고 있기 때문에 이게 큰 문제가 되지 않았는데, 제로보드4와 XE는 너무나 다르기 때문에 다양한 스킨과 modding을 만들던 사람들이 다 떨어져나가버린 것이 커뮤니티 성장을 늦추고 있는 것 같았다. 텍스트큐브 2.0에선 새로운 스킨 규격을 사용할 예정이지만 기존 스킨도 그대로 호환이 되게 가져올 것이고, 플러그인도 큰 변화 없이 사용할 수 있도록 해야 할 것 같다. (단, DB에 접근하는 플러그인들은 새로운 framework을 이용하도록 바뀌어야 한다.)

뒷풀이에서 많은 이야기가 오갔다. 제로님 또한 텍스트큐브의 성장에 많은 관심을 가지고 계셨고, 오픈소스 커뮤니티를 성장시키고 활기차게 이끌어가는 것이 얼마나 어려운지에 대한 이야기도 나누었다. 결국 오픈소스 프로젝트가 일정 규모 이상으로 커나가기 위해선 영리기업의 후원이 어느 정도 필요하다는 얘기도 했다. 또한 NHN에서 제로보드 개발을 적극 지원하고 있음에도 어느 정도 경험이 있고 제로보드 개발에 관심을 보이는 개발자를 찾기가 쉽지 않아 아쉽다고도 하면서, Needlworks 개발팀이 그런 점에서는 다소 부러운 면도 있다고 이야기하셨다.

어쨌든 그동안 제로보드4 덕분에 막연하게 가졌던 폐쇄적인 이미지와 달리 '오픈'에 대해 굉장한 의지를 가지고 있다는 점이 다행이기도 하고 또한 동시에 제로님에게 많은 과제를 안겨주고 있는 것 같다. 텍스트큐브와는 분명히 다른 방향의 툴로 나아가겠지만 함께 선의의 경쟁을 할 수 있는 환경이 형성되었으면 좋겠다. (제로님한테 농담으로 '염탐하러 왔다'고 하니 얼마든지 좋은 부분은 가져가도 된다고 하시던 모습이 생각난다.)

마지막으로, 앞으로 비슷한 행사를 다시 연다면 이런 점이 개선되었으면 좋겠다.

  • 비가 와서 더 그렇긴 했겠지만, 행사장 분위기가 좀더 밝은 곳에서 했으면 좋겠다. 프로젝터도 약간 어두워서 아쉬웠다.
  • 뒷풀이는 기왕이면 NHN이 쏴주면 어떨까; =3=3 소정의 뒷풀이 비용을 걷었는데 많은 액수는 아니었지만 그래도 학생이기에 약간 아쉬움이 남는 부분.
  • 많은 분들이 이야기하셨듯, 실질적인 Tutorial 세션을 진행하는 것도 괜찮을 것 같다. 아직까지 XE의 설치·설정 과정이나 모듈 개발에 익숙하지 않은 사람이 너무 많은 듯.
Posted
Filed under 컴퓨터

태터캠프 현장 중계(?). 원래 여기선 보안 문제로 인터넷이 안 되었었는데 오늘은 누군가 공유기로 인터넷을 사용 가능하게 해주어 잘 쓰고 있다. :) 가져온 카메라와 카드리더기로 현장 사진을 올려본다. 텍스트큐브 공지사항 블로그에 적용된 실시간 모바일 블로깅 사진들도 참고.

This is a small conference opened by TNF/Needlworks and sponsored by TNC. Today, we have 6 presentations about brief intro & history of TNF, introduction to intelligence service of textcube.com, renewal of Tistory, TAS(Tistory Anti-spam Service), Social Network Services, and Project Tattertools, given by some speakers from TNC/TNF, Daum Communication Corp.. I attended as a volunteering staff from Needlworks.

TatterCamp

태터캠프 준비 중. 사람들이 슬슬 모이고 있음.

Ending of TNF Session

정규님의 TNF 세션 마무리

Requests

하고 싶은 이야기 포스트잇

Comic?

누가 그린 거지;;

On-site Blogging

꼬날 님의 실시간 블로깅

Textcube Store Testing(?)

바로 이 분! =3==3=3

TatterCamp

태터캠프 현수막과 참가자들

Posted
Filed under 컴퓨터

Don't Panic!
I'm currently working on a new skin. Even if you see raw HTML output, everything such as comments will work fine.

Posted
Filed under 컴퓨터
왼쪽은 Ie7 에뮬레이션 모드로 돌린 우리은행 인터넷뱅킹, 오른쪽은 Ie8 모드로 돌린 다음 메인 화면. 내 생각으론 저렇게 깨지는 이유가 뭔가 Css를 지정하지 않았을 때의 기본값이 바뀌었다거나 한 게 아닐까 싶다.

우리은행 인터넷뱅킹의 경우 IE8 모드에선 키보드 보안 프로그램이 설치되어 있어도 이를 인식하지 못해 계속 설치 화면으로 넘어가버리는 문제가 있고, 다음 메인화면 등 몇몇 사이트의 레이아웃이 깨지는 경우가 있다. 하지만 내 홈페이지 프로필 페이지 등 처음부터 strict xhtml을 목표로 작성된 사이트들의 경우 별 문제 없는 것 같다. 네이버 메인 화면 및 뉴스 섹션 등이 전혀 깨지지 않는다는 점에 감탄. (카페는 좀 깨진다고 함.)

다만 Firefox 및 Safari에 맞춰서 PNG Gamma 정보를 제거한 내 홈페이지 메인 화면의 경우 IE8에서는 거꾸로(?) 색보정이 되어 더 색깔이 맞지 않는 문제가 발생하고 있다. orz
Posted
Filed under 컴퓨터
polarnara님의 스킨이 텍스트큐브 1.6 업데이트 이후로 깨지는 현상이 발생하여 기본 스킨으로 회귀합니다...ㅠㅠ;
Posted
Filed under 컴퓨터
방명록 쪽은 스팸 방지 처리가 안 되어 있고 지속적으로 스팸이 올라오며 서버에 부하(?)를 유발하는 관계로 닫아둡니다. 방명록을 남기실 분은 최근 글에 그냥 댓글 달아주세요.;

I close the guestbook of this blog because of spams. If you want write on the guestbook, just reply on a recent post.
Posted
Filed under 컴퓨터
한국에 있을 때 보고 싶은 영화는 엄청 많았으나 때를 놓치고 못 본 것이 너무 많아서 여기서라도 영화를 좀 볼까-_-했는데 가격을 알아보니 만만치가 않았다. 사실 영화를 뭐 대단한 취미로 삼고 있는 것도 아니고, 그냥 남들 다 본 거(...) 정도는 재미삼아 가끔 봐주면 좋지 않을까 정도..? 그래서 그 방법을 생각하다가 iTunes Store의 영화 렌탈 서비스가 떠올랐다. (근처에 DVD 빌릴 곳도 없고.. 영화관 가자니 비싸고 시간 많이 들고.. 이럴 때 온라인 서비스가 답이지.)

뭐 문제는 여기서 시작. 다들 잘 알다시피 한국에는 정식 iTunes Store가 없고, 또 영화 렌탈 서비스 등은 애플과 저작권자들과의 계약 문제로 미국 내에서만 서비스가 이루어진다. 따라서 가입을 하려고 해도 미국 은행에서 발급한 신용카드와 미국 내 주소가 없으면 무용지물. 하지만 그것도 다 우회하는 방법이 있으니, 실 물품을 배송받을 주소가 아니라면 나와 상관 없는(...) 미국 내 주소여도 상관 없다는 점(나는 애플 본사의 주소를...쿨럭)과 iTunes Gift Card를 사서 쓰면 신용카드 없이 iTunes Store를 이용할 수 있다는 점을 이용하는 것이다.

옛날에는 PayPal 계정만 있어도 iTunes 계정 생성이 가능했는데, PayPal에도 그곳에 등록한 신용카드가 미국에서 발행된 것인지를 체크하는 기능이 들어가면서 그 방법으로 만든 계정들이 모두 블락되고 새로 만드는 것도 불가능하다. 일단 계정을 만드는 것이 필요한데, 그냥 만들려고 하면 신용카드를 요구하지만 구글링을 조금만 해보면 일종의 이벤트 행사 같은 것을 통해 신용카드 없이 계정 생성이 가능한 방법이 있다.

iTunes gift card는 eBay 같은 곳에서 digital delivery라고 써있거나 판매자의 설명에 email로 배송해준다는 얘기가 있는 아이템을 골라 사면 된다. 직접 결제가 불가능하기 때문에 이 방법을 사용하는 것이고, 또 이게 은근히 미국 외의 나라들에서 수요가 많은지라 보통 실제 gift card의 가치보다 조금 더 높은 가격을 주고 사게 된다. (이건 iTunes 한국 스토어가 생기거나 미국에서 신용카드를 만든다거나 하기 전까진 어쩔 수 없이 감수해야 할 듯하다. ㅜㅜ)

iTunes Screenshot

영화 보기 인터페이스


어쨌든 그렇게 해서 계정을 만들고 $15짜리 gift card 코드를 넣고 Fatastic Four: Rise of the Silver Surfer를 빌렸다. (최신 영화는 한편에 $3.99, 좀 오래된 것들은 $2.99) 빌리면 한 달 내에 재생을 시작해야 하고, 한 번 재생을 시작하면 24시간 내에 다 보아야 하는 제약이 있지만 뭐 한 번 보고 말 영화라면 별로 상관 없지 않은가. 시간 무제한으로 사려면 $9.99를 지불하면 된다. 화질은 대충 DVD급 정도 나오는 것 같다. 온라인으로 서비스한다는 점을 고려했을 때 사실 가격이 조금 비싸다는 생각이 들기도 하지만, 전세계 어디서나 이용할 수 있고(미국에서 다운받는 거지만 꽤 속도가 빨라서 1GB 정도 받는데 30분 정도 걸렸음) 무엇보다 iTunes의 깔끔하고 고급스런 인터페이스를 이용할 수 있다는 점에서는 높은 점수를 주고 싶다. 단점이라면, 미국을 대상으로 하는 서비스이기 때문에 자막이 없다는 점(..뭐 영어공부 하는 거지-_-)과 영화 재생 시 원하는 위치부터 재생은 가능하나 마우스로 찍는 것만 되고 빨리감기 같은 기능이 없다는 것 정도.

그나저나 말로만 듣던 eBay를 직접 써보면서 Bid 메뉴를 보고 작년 봄학기 소프트웨어공학개론의 악몽이 떠올라 눈물이 앞을 가렸다는 후문이... orz

ps. 위 영화에서 부러웠던 부분은...
영화 장면

24인치로 추정되는 트리플 모니터.

Posted
Filed under 컴퓨터
스웨덴 가서 쓸 컴퓨터가 필요했기 때문에, 구입한 지 만 4년이 넘은 LG-IBM XNote LM50-32DK를 뒤로 하고 새 노트북을 구하기로 결정, 결국 맥북프로로 가게 되었다.

그저께 도착해서 한창 이것저것 세팅 중인데, 우선적으로 몇 가지 느낀 점들을 들자면 다음과 같다.

좋은 점
  • 일단 예쁘고 간지난다. -_-;
  • Expose와 Spaces와 같은 기능들은 너무나 편리하다.
  • 레오파드의 기본 터미널이나 iTerm 등 터미널 환경이 시각적으로 멋지다.
    (레오파드 터미널이 이전 버전에 비해 상당히 좋아졌다고는 하지만 개인적으로 서버별 프로필 관리 기능이 필요하여 iTerm을 쓰게 되었다.)
  • 내가 주로 오픈소스와 관련된, 혹은 오픈소스를 기반으로 하는 개발 환경을 써왔기 때문에 작업 환경 이전에 별 어려움이 없다.
  • 패러렐즈를 이용하니 인터넷 뱅킹이나 오피스 2007 ,한글, 비주얼 스튜디오 2005 등도 아무런 문제 없이 돌릴 수 있다. (4년 된 구형 노트북보다 훨씬 빠르다-_-)
  • 기본 내장된 마이크와 iSight 카메라가 꽤나 유용하다. 확실히 하드웨어랑 OS랑 같이 만들어 팔아서 그런지 쿵딱이 잘 맞는 느낌?
  • iWork의 Keynote는 뭐 두말할 필요 없는 간지 좔좔 프로그램; 깔끔하면서도 화려한 애니메이션 효과 자체도 좋지만, 파워포인트에 비해 클릭한 순간 바로바로 반응이 온다는 미묘한 타이밍 차이가 중독성 있다.
  • TeX 환경 세팅이 윈도우에 비해 상당히 간편하다. 특히 pdf 뷰어가 기본 내장되어 있고 속도도 매우 빨라서 맘에 든다.
  • 내가 쓰던 노트북이 4년이나 되었으니 기술이 발전한 거겠지만, LCD도 상당히 밝고 하드디스크나 시디롬 동작 시 소음이 매우 적게 느껴진다.
좋지 않은 점
  • 마우스가 움직인 것을 그대로 따라가는 윈도우와 달리 마우스를 움직이는 속도에 따라 가속 정도가 다르게 되어 있다. 윈도우에 익숙한 사람이라면 마우스 포인터가 내 맘대로 움직이지 않는다는 느낌을 받을 것이다. 이것도 튜닝해주는 프로그램들이 있기는 있으나 완전하지는 못하고 별도 드라이버를 설치해야 한다고 한다.
  • OSX의 간지나는 겉모습과는 달리, 사용자가 직접 환경설정을 조절할 수 있는 부분이 매우 제한적이다. 관련해서 튜닝을 도와주는 툴들이나 팁들이 나와있지만, 기본 설정에서 벗어날 경우 어플리케이션에 따라 원치 않는 side effect가 발생하는 경우가 있어서 낭패.
    (특히 GUI 프레임웍이 카본에서 코코아로 바뀌면서 그 사이의 호환성 문제가 많은 듯. 결정적으로 가장 많이 쓰는 프로그램인 Firefox 2가 카본 기반이다. 3.0에서는 코코아로 바뀐다는 소문이 있는데...)
  • iTunes에서 monkey's audio (.ape) 파일 재생이 안 된다. (관련 플러그인도 없다)
  • 레오파드로 오면서 애플고딕이 유니코드를 모두 지원하게 된 점은 좋지만, 은돋움이나 맑은고딕에 비해 가독성이 떨어지는 경우가 있다. (특히 bold가 영...)
  • 날개셋 한글입력기를 쓸 수 없다. -_-;; 그래도 기본 한글입력기가 아주 나쁘지는 않다.
    (신정규님의 경우 터미널에서 세벌식 오타내면 깨지는 경우가 있다고 했는데 내가 써보니 별 문제 없는 것 같다.)
  • 쓸만한 압축 관리 프로그램이 별로 없다. 윈도우에서는 오픈소스인 7z을 쓰면 일반적인 압축 파일 해제도 잘 되고 쉘 메뉴에도 들어가서 편리하지만 OSX용은 그런 거 없는 듯. 알집이나 빵집은 당연히 못 쓰고. Stuffit이라는 것이 있긴 하나 쉐어웨어이다. (해제 전용 프로그램은 프리웨어) 뭔가 윈도우에 비해 2% 부족한 느낌.
  • 바탕화면 단축아이콘 대신 Dock을 사용하는 방식인데(단축아이콘은 symbolic link로 만들 수 있다-_-) 윈도우에 비해(?) 많은 것을 넣기는 좀 애매하다. 하지만 오히려 꼭 필요한 것만 꺼내놓게 되는 효과도 있다;
  • 내가 좋아하는 코딩용 글꼴인 Dina를 쓸 수 없다. (fon 형식을 지원하지 않는 듯) 별도 변환을 해야 할 것 같은데 아직은 방법을 모르겠음. 대신 기본으로 들어있는 Monaco를 안티앨리어싱한 것도 그럭저럭 볼 만하다.;
  • 대화상자에 기본 버튼이 지정되어 있을 경우 Tab을 눌러 버튼 사이의 포커스를 왔다갔다 할 수 있도록 설정(기본으로는 안 된다)해놔도 엔터치면 무조건 기본 버튼이 눌러지는 경우가 있다. 마우스를 움직여줘야 하는 귀찮음이 있다-_-;
키보드 단축키 관련하여, 적응이 좀 필요한 것들이 있다.
  • Backspace -> Delete (이 키가 IBM 계열 키보드의 backspace 위치에 있다)
  • Delete -> Fn+Delete (별도 delete 키 없음)
  • Alt+F4 -> Cmd+Q
  • Ctrl+F4 -> Cmd+W
  • Alt+Tab -> Cmd+Tab
  • Ctrl+F6 -> Cmt+` (윈도우와 의미가 조금 다르지만 대충...)
  • Ctrl+Tab -> Cmd+Left/Right (프로그램에 따라 Ctrl+Tab을 그대로 쓰기도 함. 예: Firefox)
  • Home/End -> Cmd+Left/Right (Firefox에서 주의할 것이 이게 텍스트 입력창에서는 Home/End로 동작해도 페이지 상에서는 Back/Forward로 동작한다는 점.)
사과 모양이 그려진 Command 키가 존재함으로써 얻는 이점은 터미널을 사용할 때 윈도에서는 Ctrl+C, Ctrl+V가 터미널에서 사용되는 것과 윈도에서 사용되는 것이 서로 충돌을 일으켜 어느 한 쪽(대개는 터미널)만 쓸 수 있는 반면 맥은 Ctrl 키의 대부분을 Cmd 키가 대신하고 있으므로 터미널 상에서 의미 그대로 Ctrl+C, Ctrl+V를 쓸 수 있다는 것이다. (복사·붙여넣기는 Cmd+C, Cmd+V)

그밖에 윈도우와 다른 점은, 대부분 프로그램의 단축키가 같은 의미를 갖는 기능은 거의 90% 같다는 것이고, 환경설정에서 뭔가를 변경했을 때 '확인'이나 '적용'을 누를 필요가 없고 그냥 창을 닫으면 된다는 것 정도다. (쓰다보면 그러려니 익숙해진다)

OSX가 같은 사양에서 돌린다면 XP나 Vista보다 좀 무거운 감이 있는 것 같다. (사실 기본 설정들이 좀 '한 박자 늦게' 되어 있는 것들이 많아서--예: 키 누르고 있을 때 반복 속도--그런 것도 있지만.) 그럼에도 불구하고 유닉스 기반 프로그램들을 거의 그대로 돌릴 수 있다는 점과 화려하고 편리한 GUI를 제공한다는 점은 매력적이다. (나에게 있어 유일한 단점은 Supreme Commander를 할 수 없다는 정도. 인터넷 뱅킹이나 꼭 필요한 윈도 프로그램들은 패러렐즈로 걍 돌리면 된다. 물론 게임도 부트캠프 써서 멀티부팅하면 되기야 되겠지만....)

어쨌든 전에 Mac을 조금조금씩 곁들여 써본 경험도 있고, 노트북에서 우분투로 꽤 오래(?) 버텼기 때문인지 윈도우에 대하 의존성이 많이 줄어서 스위칭하는 게 별로 어렵지는 않을 듯하다.

ps. 물론 앞으로 영원히 Mac만 쓰지는 않을 것이다. 원래 쓰던 Vista 데스크탑은 시간이 없어 팔지 않고 집에 두기로 했고, 결정적으로 가장 좋아하면서 내가 하는 유일한 게임인 Supreme Commander 시리즈가 완전 윈도 전용이기 때문이다.
Posted
Filed under 컴퓨터
제가 오랫동안 잘 써왔던 x-y.net 호스팅이 1월 11일자로 만료됩니다.
이제 이 블로그 및 daybreaker.info 메인 페이지를 제 개인 서버로 옮길 예정입니다.

도메인 설정 수정으로 인해 예전 페이지와 새 페이지가 불규칙적으로 접속되는 등의 불안정 현상이 나타날 수 있으니 참고해주시기 바랍니다.

참고로, 이 블로그를 제외한 daybreaker.info 및 www.daybreaker.info 이하의 모든 하위 서비스 및 URL들은 폐기됩니다.
Posted
Filed under 컴퓨터
내가 하는 동아리가 2개 있는데, 그 중 하나인 SPARCS는 동아리 자체가 원래 컴퓨터를 다루는 목적인데다 전산 전공자들이 많고 이미 몇 가지의 인터넷 서비스를 제공하고 있기 때문에 서버에 대한 걱정을 거의 하지 않아도 된다. 서버 장비도 굉장히 잘 갖추어져 있는 편이고 특히 ftp.kaist.ac.kr 덕분에 정보통신팀으로부터 여러 지원도 받고 있어서 특별히 실수해서 날려먹거나 하지 않는 이상 별다른 문제가 없는 편이다.

그러나 다른 하나인 MR의 경우, 로봇 동아리라서 기계과·전자과 사람들은 꽤 많지만 전산과 사람들이 고르게 분포하지 않고 있다. (매 학년마다 한 사람 정도 있을까 말까 한 수준.) 그래서 서버 관리를 지속적으로 할 인원이 되지 않고, 서버 관리자가 바쁘다거나 할 경우 서버에 문제가 생겨도 바로바로 조치하기가 힘들다. (스팍스의 경우는 서버 관리를 전담하는 관리자 그룹이 있고 이 그룹이 대대로 이어져내려오면서 선후배들끼리 서로 도움을 주고받기도 하기 때문에 누구 한 사람이 바빠도 큰 사고가 나지는 않는다.)

사실 MR의 경우 동아리 홈페이지를 많이 이용하는 것이 아니라서, 홈페이지는 며칠 죽어도 동아리 활동에 크게 지장을 받지는 않는다. 하지만 메일링 리스트는 상대적으로 많이 이용하는 편이고, 특히 8x 학번대부터 수많은 선배들이 동아리 내에 결혼식 초청장을 돌린다거나 구인 광고를 올리는 등의 다양한 용도로 활용되고 있어서 안정적으로 관리하는 것이 중요하다.

문제는, 서버 관리 인력이 적더라도 서버 자체가 안정적으로 돌고 있으면 큰 문제가 되지 않는데, 서버를 운영하기 힘든 환경인 경우다. MR 동아리 서버의 경우 전에 쓰던 것이 서서히 맛이 가기 시작해 지난 여름 새로 서버를 조립했다. (말이 서버지 실제로는 20만원대 초저가형-_- 데스크탑이다.) 처음에는 AMD 계열로 맞췄는데 메인보드가 불량이었는지 여러 배포판의 리눅스는 물론 윈도우조차 설치가 안 되었다. -_- 그래서 쥐쥐치고 하드와 램, 파워, 케이스만 그대로 쓰고 다시 인텔 계열로 맞췄는데(Conroe-L 420 + Gigabyte 945GM S2) 처음 몇 주는 잘 돌아가나 싶더니 여름 방학 동안 동방이 있는 태울관 건물이 수십 차례 정전이 이어지며 결국 이것도 맛이 간 것 같다. orz

태울관의 정전 원인은 정확히 알 수 없으나, 최근 학교 곳곳에서 이루어지는 각종 리모델링 공사로 인해 몇몇 동아리들이 컴퓨터 장비들을 태울관으로 많이 옮겼다는 점과 태울관 자체가 원래 전력 용량이 작게 지어져서 여름철 냉방을 못 버티는 경우가 많다는 것이 합쳐진 것 같다. 내가 동아리방에 자주 가보지는 않았지만 동아리원들 말에 의하면 하루에도 몇 번씩 정전이 됐었다고 하고, 실제로 그 때문에 맛이 간 컴퓨터도 있었다. (결국 서버도 맛 간 거겠지..)

스팍스의 경우는 교양분관 자체가 학부 네트워크를 총괄하는 라우터를 동아리 서버와 함께 두고 있어서 전원 등 여러 면에서 안정적인 환경을 사용하고 있기 때문에, 학교에서 큰 공사를 벌인다거나 1년에 한 번 있는 정도의 전체 전원 점검이 아니면 정전이 일어나지 않는다. 따라서 서버들도 꽤 안정적으로 돌리는 편이다.

그래서 MR 서버는 결국 랜덤한 커널 패닉과 함께 죽는 상황이 되었다. -_- 하드디스크가 맛간 것인지 메인보드가 맛간 것인지 메모리가 맛간 것인지 도저히 원인을 알 수 없을 지경이다.

동아리가 돈이나 많으면 그냥 서버호스팅이라도 쓰면 좋겠지만 동아리비에서 매달 5~10만원 가량 하는 호스팅 비용을 내는 것도 부담스럽고(특히나 올해 재정 상황이 별로 좋지 않다), 새 서버를 사더라도 정전 등으로 인해 또 언제 죽을지 모르기 때문에(꺼졌을 때 다시 켜서 잘 돌면 괜찮지만 하드웨어 자체가 맛가면...) 계속 동아리방에서 서버를 운영하는 것이 곤란한 상황이다. 스팍스처럼 안정적인 서버용 하드웨어를 사용하면 그나마 낫겠지만 동아리에 돈이 없다..ㅠㅠ;

일단 메일링 리스트라도 어떻게 외부 서비스로 옮겨볼까 했지만, 230여명 분량의 개인 메일 주소를 다룰 수 있는 메일링 리스트를 다루는 국내 서비스는 사실상 전무하다. 대체로 그 서비스에 가입을 해서 쓰게 해야 하는 것이 보통인데, 그 많은 선배들한테 특정 서비스에 가입하라고 하는 것은 매우 곤란한 일이다. 그나마 구글 그룹스가 개방적인 편이나 이것도 메일 주소를 그렇게 대량으로 넣으려고 하니 관리자 허가가 따로 필요해지는 등 절차가 복잡했다. 안정적으로 인터넷에 연결된 리눅스 머신 하나만 있으면 그냥 /etc/aliases로 해결되는데... (또 mr.kaist.ac.kr 도메인을 학교 내 IP 주소가 아닌 외부 주소를 쓰게 하려면 동아리 지도교수님과 정보통신팀의 허가가 있어야 한다는 것도 걸림돌이다.)

안정적인 작동을 보장하면서 /etc/aliases 수준의 자유도를 가지는 수백명 분량의 메일링 리스트를 만들 수 있는 방법은 무엇일까? 홈페이지만 있으면 그냥 대충 웹호스팅 하나 사서 쓰면 되겠지만 메일링 리스트와 동아리 내부 자료 FTP가 같이 있다보니 독립 서버를 운영하는 것이 아무래도 편하다. (사실 내가 쓰는 Django 같은 걸 지원하는 웹호스팅도 없고..-_- 꼭 홈페이지를 Django로 만들지는 않겠지만..)

이 문제를 어떻게 해결하는 것이 좋을까?
(사실 돈만 있으면 되긴 한다. -_-)
Posted
Filed under 컴퓨터
요즘 OS 플젝 때문에 새벽 6~7시에 자는 것이 완전 일상화되어버렸다. 룸메 왈 '벌써부터 스웨덴 시간대에 적응하고 있냐?' (....) 물론 그런 말을 하는 룸메도 나와 OS 플젝 같은 조라서 같이 밤샌다. -_-;

User inserted image

이제 이런 화면을 보면서 희열을 느끼는 수준에 도달하고 있다.

웹프로그래밍을 하다가도 심심하면 make check를 치고 싶을 정도가 되었다. -_-; 1번 플젝보다 2번 플젝이 할 만했던 것은 테스트 개수가 총 76개나 됨에도 불구하고 대부분이 간단한 처리만으로 통과할 수 있는 거라서 쭉쭉, 시간에 따라 선형적으로(?) 진행이 되기 때문에 보다 편한 마음으로 할 수 있다는 점 때문인 듯하다.

듀를 5일여 남기고 시작한지라 살짝 불안했었는데 지금은 하루 딜레이해서 완성하는 것보다 당장 내는 것이 점수가 더 높을 정도가 되었다. 헌데 마지막 남은 3개의 테스트가 좀 처리가 난감한 것들이라서 이것들이 언제쯤 완전하게 처리될지는 잘 모르겠다;

계속 달리는 거야- 하얗게 불태우는 거야~ -_-; (점점 정신이 피폐해지고 있다 -_-)

ps. 그러나 프로젝트 3번....은 스탠포드의 reference solution stat을 보니 무려 1500줄 추가... 하아-_-;
Posted
Filed under 컴퓨터

이번 학기 듣는 수업 중에 전산물리학개론이라는 과목이 있다. 물리과에서도 아주 괴짜로 소문난(?) 모 교수님의 수업인데, 보통 전산물리학이라고 하면 수치해석적 기법들에 대해 다루지만 이 수업은 자기가 모델링한 것이나 기존 이론들을 컴퓨터로 '재빠르게' visualize함으로써 어떤 insight를 빨리 얻는 것을 목표로 하고 있다.

이 과목에서는 각자 개인별로 주제 발표를 하나씩 해야 하는데, 전산물리학 수업 시간에 배운 기법들을 동원하여 어떤 물리적 현상에 대한 것을 다루는 것이다. 수업 시간에 지금까지 배운 것들은 Excel, Excel+VBA, Visual Basic 6.0, VC++ MFC를 모두 약간씩 맛보았으니(교수님의 모토가 '필요한 것만 그때그때 배워서 쓰면 된다'라서 그냥 닥치고 따라해보기 식의 수업이다-.-) 그 중에서 무엇을 고를 것인가가 문제다.

나는 초등학교 6학년때부터 중학교, 고등학교때까지도 많이 썼던 Visual Basic 6.0을 골랐다. Java나 Python 같은 OOP 언어로 짜다가 오랜만에 VB6으로 프로그램을 짜보니 갑자기 왤케 안 되는 것이 많던지.. (VB도 OOP 언어이지만 언어적 기능이 다소 딸리는 편이다.) 연산자 재정의라든가 오브젝트 생성시 인자 넘기는 것이라든가 안 되는 것이 좀 있었지만 어쨌든 프로그램은 금방 짤 수 있었다.

내가 잡은 주제는 그 유명한 만델브로트 집합. 워낙 유명한 거라서 카오스의 '카' 자라도 들어봤다면 다들 한번쯤 본 적이 있을 바로 그 그림이다.; 프로그램 짜놓고 혼자 감상하면서, 정말이지 어떻게 그런 간단한 식으로부터 그런 복잡하고 아름다운 그림이 나오는지 신기했다.

User inserted image

저 몇 줄 안 되는 코드로 이런 그림을 그릴 수 있다.

사실 이 프로그램을 중학교 때 한 번 짜려고 시도했던 적이 있는데, 그때는 Picture Box와 복소 평면 사이의 좌표변환 개념을 제대로 이해하지 못해서 중도에 그만두었던 기억이 있다.

요즘 수리물리 시간에 Complex Analysis에 대해 배우고 있는데, 복소수의 세계는 정말 오묘하다. 특히 conjugate를 취한 z*를 z와 서로 다른 변수로 취급할 수 있다는 사실과, 복소함수의 singularity들을 보면서 추상화와 일반화의 힘이 어떤 것인가 체험하고 있다.

아무튼 결론은 잡담이었다는 것과 전산물리 발표 잘 끝났으면 좋겠다는 거.

그림 추가 : 결국 말려서... 색깔 기능까지 업그레이드! -_-

User inserted image

Julia 집합. Multiple color scale을 적용한 것으로 왼쪽으로 갈수록 확대된 것이다.

User inserted image

Mandelbrot 집합에서, 1pixel = 10E-12 정도로 확대했을 때 나타나는 Julia 집합.

Posted
Filed under 컴퓨터

와, 얼마만의 정식(?) 블로그 포스팅인지 모르겠다.

요 근래 OS 프로젝트를 하느라 거의 밤샘하다시피하면서 폐인 생활을 계속했었는데, 딱 하나 잘못 생각했던 것 때문에 거의 2일 이상을 날려먹었음을 깨닫고 그동안 짰던 priority donation 코드를 싹다 버리고 새로 짰다. -_- 2일 동안 밤새서 만든 코드보다 양도 더 적고 버그도 적었다.

그렇다면 그동안 했던 삽질이 헛수고냐라고 묻기 쉬운데 잘 생각해보면 꼭 그런 것 같지만은 않다. 그렇게 삽질을 하면서 어떤 버그나 문제가 발생했을 때 잠재적인 원인을 유추하는 스킬이 생기고 특히 이번 프로젝트를 통해 gdb 사용법을 좀더 자세히 알게 되었다.

User inserted image

어제의 작업 화면. 현재 버전에선 가운데 화면의 코드 중 절반 이상이 바뀌었다.

OS 커널 코딩은 SP 때와 상당히 다른 느낌이다. SP 때는 코딩량 자체가 많았지만, OS는 코딩량은 얼마 안 되어도(Pintos 처음 코드와 현재 내가 고친 코드를 diff 뜬다면 아마 100줄 정도밖에 안 바뀌었을 것이다) 한줄 한줄의 의미와 영향력이 엄청나게 중요해서 정말로 생각을 많이 해야 한다. 모니터를 보며, vi의 ctags로 이리저리 돌아다니며 계속 생각하고 모델링해야 하는 것이다. 또한 내가 처음부터 만드는 프로그램이 아니고 이미 Pintos라는 주어진 OS 골격 안에서 프로그램을 짜야 하기 때문에 다른 사람이 만들어둔 소스를 읽는 스킬도 중요한 것 같다.

SP를 들으며 "Segmentation Fault"에 익숙해졌다면 OS를 진행하면서 "Kernel Panic"에 익숙해졌다. -_- 이제 블루스크린이나 커널패닉이 떠도 개발자가 얼마나 고생했을까 하는-_- 동병상련(?)의 마음이 들 것 같다; 물론 데이터 날려먹으면 화는 나겠지만..;;

SP와 OS를 들으며 느끼는 거지만, 큰 규모의 디버깅이 힘든 프로그램을 짤 때는 다음을 꼭 지켜야 하는 것 같다.

  • 하다가 막히면 일단 쉬자. 게임을 한판 하든 산책을 하고 오든 잠을 자든 다른 짓을 하고 다시 보면 새로운 아이디어가 떠오르는 경우가 많다.
  • 오랫동안 짠 코드라고 버리기를 아쉬워하지 말자. 보다 나은 설계가 있다면 최대한 빨리 적용하고 테스트해보자. (물론 만일에 대비하여 버전관리 시스템을 사용하는 것을 권장한다)
  • 잘 이해가 안 되는 부분이 있다면 다른 사람에게 물어보거나 같이 토론하는 것이 큰 도움이 된다. 직접적으로 답을 제시받지 못하더라도 남에게 설명하기 위해 스스로 문제를 정리하게 되기 때문이다.

이제 오늘 중으로 18개의 test-case 중 남은 2개에 해당하는 nested donation 구현만 끝낸다면 1번 프로젝트는 끝난다. 그러나 2번 프로젝트는 훨씬 더 많은 test-case가 기다리고 있다는 소문이..... OTL