- 스킨 임시 변경 4
- MacOSX로의 스위칭 16
- 전산물리개론 8
- 버림의 미학 14
Daybreakin Things
※ 아래 영문으로 먼저 작성한 글의 한글 버전입니다.
이번 구글코리아의 태터앤컴퍼니 인수건과 관련, 오해하기 쉬운 몇 가지 사실들을 정리하고자 합니다.
우선 텍스트큐브1는 오픈소스 블로깅 도구로서 TNF2와 그 핵심 조직인 Needlworks3가 개발하였고, TNC가 스폰싱을 해오고 있습니다. TNC 구성원들 중에도 물론 이 오픈소스 프로젝트에 기여하신 분들이 있습니다.
이번 인수에 텍스트큐브 및 그 개발자 그룹인 TNF/Needlworks는 포함되지 않고, TNC가 텍스트큐브를 바탕으로 개발한 서비스형 블로그인 텍스트큐브닷컴이 그 대상입니다. 따라서 이번 소식을 언급할 때 텍스트큐브 뒤에 '닷컴'을 표기하는 것은 이 두 프로젝트를 구분하는 데 아주 중요한 요소입니다. 혼란을 피하기 위해 두 프로젝트를 모두 언급해야 할 경우 오픈소스 프로젝트 텍스트큐브 뒤에 '.org'를 붙이는 것도 좋겠습니다.
텍스트큐브는 원래 태터툴즈로 알려져 있었고, 정재훈님이 최초로 개발하셨지만 당시에는 오픈소스가 아니었습니다. 노정석님이 TNC를 설립하고 태터툴즈 1.0을 발표하시면서 오픈소스화되었고, 저는 그때부터 참여하기 시작했지요. TNC는 태터툴즈와 그 후신인 텍스트큐브를 이용해 티스토리와 텍스트큐브닷컴을 개발하여 각각 다음과 구글에 피인수되었습니다. 이번에는 회사 전체와 이올린 등 모든 서비스가 함께 인수되었습니다.
태터툴즈는 현재 '프로젝트 태터툴즈'를 뜻하고, 태터툴즈라는 블로그 소프트웨어는 텍스트큐브로 이름이 바뀌었습니다. 프로젝트 태터툴즈는 TTXML4을 통한 데이터 호환성을 갖춘 소프트웨어들의 집합을 의미하는데, 지금 현재에는 태터툴즈·텍스트큐브로부터 파생된 프로그램들 외에는 지원하는 프로그램들이 없습니다. 물론 나중엔 그렇게 되길 바라고 있지만요.
한편 TNC는 워드프레스의 아키스멧에 비견할 수 있는 안티스팸 API인 이올린 안티스팸 서비스를 텍스트큐브 플러그인 형태로 제공해오고 있습니다.
니들웍스와 저는 TNC와 긴밀한 관계를 가지고 있지만 인수 협상의 내용은 보안 문제로 저한테도 알려지지 않아서 저도 거의 모릅니다. 앞으로 TTXML/TTSKIN 등의 규격 표준화 작업이나 프리미엄 스폰서가 구글로 바뀌는 등의 변화는 있을 수 있겠지만, TNF/Needlworks는 비영리단체로, 텍스트큐브는 오픈소스 프로젝트로 계속 남아있을 것입니다. 설치형 사용자 분들은 걱정하지 않으셔도 됩니다. :)
추가: 티스토리의 경우 현재 다음에서 완전히 인수하여 운영하는 서비스로, 프로젝트 태터툴즈의 일원으로서 표준화 논의 등에는 참여할 수 있지만 이번 인수와는 전혀 관련이 없습니다.
텍스트큐브의 표기는 한글 '텍스트큐브' 영문 'Textcube'를 써주시기 바랍니다. '택스트큐브', '텍스트규브', '덱스트큐브' 및 'Text Cube', 'TextCube'는 잘못된 표현입니다. ↩
한국에서 가장 큰 오픈소스 커뮤니티 중 하나입니다. ↩
TNF 중에서도 가장 핵심적인 개발자 및 프로젝트 관리자를 모은 그룹입니다. TNC로부터 스폰싱을 받아왔고, 향후 구글로 바뀔 수도 있습니다. ↩
XML을 이용해 만들어진 텍스트큐브의 백업 포맷입니다. 티스토리와 텍스트큐브닷컴도 지원하고 있고, 저는 현재 이 규격의 표준화에 참여하고 있습니다. ↩
고등학교 때 정말 수박 겉핥기 수준으로 C++을 다뤄보긴 했지만, 그동안 학교 수업들 및 개인 프로젝트 등을 진행하며 본격적으로 쓸 일이 없었기에 따로 공부하지도 않았던 C++에 대해 살펴보고 있다.
미투데이에서도 언급했었지만, 어쨌든 OOP 언어로서 지대한 위치를 가지고 있는 C++을 공부해보니 Java를 통해 OOP 언어들을 접한 나로서는 너무나 당연한 것이 당연한 것이 아닌 게 꽤나 많았다.
아직 그 깊고 깊은 템플릿의 세계까지는 가지 않았지만, 몇 가지 특이할 만한 것으로는 다음과 같은 것들을 들 수 있겠다.
지금 보는 책에선 클래스에서 static을 사용했을 경우의 상속에 대해 자세히 설명하고 있지 않은데, Java나 Python 등과 어떤 차이점이 있는지 좀더 알아봐야겠다. 특히 php 5.3에서 late static binding이라는 것이 추가되었다길래 뭔가 알아보니 이 역시 '당연히 되어야 하는 것 아닌가'의 범주에 있던 거라서 C++에서는 또 다를 수도 있기 때문. -_-;;; (사실, php도 이런 점에서 상당히 황당한 경우가 좀 많다.)
예전에, OS 프로젝트를 하면서 (C++이 아닌 C이긴 했지만) static 함수들의 의미가 무엇인지 궁금했는데, 디버깅 과정에서 static 함수들은 최적화되어(!) 함수 호출이 inline으로 처리되어 있는 것을 본 적이 있다. 알고보니 일반 함수에 static을 쓰면 '그 파일 안으로 유효 범위 제한'이라는 뜻이 있단다.
아무래도, C/C++ 쪽 언어들을 제대로 책을 한 번 읽어보면서 쭉 정리를 해나가야 할 것 같다. STL은 또 그 자체로 꽤 큰 주제일 텐데... 하아;
어제 분당에서 제로보드 오픈소스 간담회가 있었다. 제로보드는 원래 zero라는 닉네임을 쓰시던 고영수님이 1999년 무렵부터 개발해오다가 2000년대 들어 제로보드4를 발표한 뒤로 정체 상태였는데, zero님이 장병규 선배가 창업하신 첫눈으로 가신 후부터 제로보드5를 개발하였고, 다시 첫눈이 NHN에 인수된 후부터 NHN측의 전폭적인 지원으로 제로보드XE를 개발해오고 있는 상황이다.
세션은 "XE의 현재와 미래"라는 주제로 zero님이 직접 발표하신 것에 이어 "XE의 주고와 개발 방법론"이란 제목으로 하늘님이 발표하시고, 마지막으로 제로보드의 기존 사용자층이 아직 웹표준에 익숙하지 않다는 것을 인식해서인지 후니님의 "웹표준의 이해와 접근"까지 이렇게 3개로 이루어졌다.
온라인으로 신청한 사람은 얼마나 될 지 모르겠지만 실제 참가한 사람들은 대충 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 덕분에 막연하게 가졌던 폐쇄적인 이미지와 달리 '오픈'에 대해 굉장한 의지를 가지고 있다는 점이 다행이기도 하고 또한 동시에 제로님에게 많은 과제를 안겨주고 있는 것 같다. 텍스트큐브와는 분명히 다른 방향의 툴로 나아가겠지만 함께 선의의 경쟁을 할 수 있는 환경이 형성되었으면 좋겠다. (제로님한테 농담으로 '염탐하러 왔다'고 하니 얼마든지 좋은 부분은 가져가도 된다고 하시던 모습이 생각난다.)
마지막으로, 앞으로 비슷한 행사를 다시 연다면 이런 점이 개선되었으면 좋겠다.
태터캠프 현장 중계(?). 원래 여기선 보안 문제로 인터넷이 안 되었었는데 오늘은 누군가 공유기로 인터넷을 사용 가능하게 해주어 잘 쓰고 있다. :) 가져온 카메라와 카드리더기로 현장 사진을 올려본다. 텍스트큐브 공지사항 블로그에 적용된 실시간 모바일 블로깅 사진들도 참고.
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.
태터캠프 준비 중. 사람들이 슬슬 모이고 있음.
정규님의 TNF 세션 마무리
하고 싶은 이야기 포스트잇
누가 그린 거지;;
꼬날 님의 실시간 블로깅
바로 이 분! =3==3=3
태터캠프 현수막과 참가자들
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.
IE8 Screenshot (photo by아침놀)
영화 보기 인터페이스
24인치로 추정되는 트리플 모니터.
이제 이런 화면을 보면서 희열을 느끼는 수준에 도달하고 있다.
이번 학기 듣는 수업 중에 전산물리학개론이라는 과목이 있다. 물리과에서도 아주 괴짜로 소문난(?) 모 교수님의 수업인데, 보통 전산물리학이라고 하면 수치해석적 기법들에 대해 다루지만 이 수업은 자기가 모델링한 것이나 기존 이론들을 컴퓨터로 '재빠르게' visualize함으로써 어떤 insight를 빨리 얻는 것을 목표로 하고 있다.
이 과목에서는 각자 개인별로 주제 발표를 하나씩 해야 하는데, 전산물리학 수업 시간에 배운 기법들을 동원하여 어떤 물리적 현상에 대한 것을 다루는 것이다. 수업 시간에 지금까지 배운 것들은 Excel, Excel+VBA, Visual Basic 6.0, VC++ MFC를 모두 약간씩 맛보았으니(교수님의 모토가 '필요한 것만 그때그때 배워서 쓰면 된다'라서 그냥 닥치고 따라해보기 식의 수업이다-.-) 그 중에서 무엇을 고를 것인가가 문제다.
나는 초등학교 6학년때부터 중학교, 고등학교때까지도 많이 썼던 Visual Basic 6.0을 골랐다. Java나 Python 같은 OOP 언어로 짜다가 오랜만에 VB6으로 프로그램을 짜보니 갑자기 왤케 안 되는 것이 많던지.. (VB도 OOP 언어이지만 언어적 기능이 다소 딸리는 편이다.) 연산자 재정의라든가 오브젝트 생성시 인자 넘기는 것이라든가 안 되는 것이 좀 있었지만 어쨌든 프로그램은 금방 짤 수 있었다.
내가 잡은 주제는 그 유명한 만델브로트 집합. 워낙 유명한 거라서 카오스의 '카' 자라도 들어봤다면 다들 한번쯤 본 적이 있을 바로 그 그림이다.; 프로그램 짜놓고 혼자 감상하면서, 정말이지 어떻게 그런 간단한 식으로부터 그런 복잡하고 아름다운 그림이 나오는지 신기했다.
저 몇 줄 안 되는 코드로 이런 그림을 그릴 수 있다.
사실 이 프로그램을 중학교 때 한 번 짜려고 시도했던 적이 있는데, 그때는 Picture Box와 복소 평면 사이의 좌표변환 개념을 제대로 이해하지 못해서 중도에 그만두었던 기억이 있다.
요즘 수리물리 시간에 Complex Analysis에 대해 배우고 있는데, 복소수의 세계는 정말 오묘하다. 특히 conjugate를 취한 z*를 z와 서로 다른 변수로 취급할 수 있다는 사실과, 복소함수의 singularity들을 보면서 추상화와 일반화의 힘이 어떤 것인가 체험하고 있다.
아무튼 결론은 잡담이었다는 것과 전산물리 발표 잘 끝났으면 좋겠다는 거.
그림 추가 : 결국 말려서... 색깔 기능까지 업그레이드! -_-
Julia 집합. Multiple color scale을 적용한 것으로 왼쪽으로 갈수록 확대된 것이다.
Mandelbrot 집합에서, 1pixel = 10E-12 정도로 확대했을 때 나타나는 Julia 집합.
와, 얼마만의 정식(?) 블로그 포스팅인지 모르겠다.
요 근래 OS 프로젝트를 하느라 거의 밤샘하다시피하면서 폐인 생활을 계속했었는데, 딱 하나 잘못 생각했던 것 때문에 거의 2일 이상을 날려먹었음을 깨닫고 그동안 짰던 priority donation 코드를 싹다 버리고 새로 짰다. -_- 2일 동안 밤새서 만든 코드보다 양도 더 적고 버그도 적었다.
그렇다면 그동안 했던 삽질이 헛수고냐라고 묻기 쉬운데 잘 생각해보면 꼭 그런 것 같지만은 않다. 그렇게 삽질을 하면서 어떤 버그나 문제가 발생했을 때 잠재적인 원인을 유추하는 스킬이 생기고 특히 이번 프로젝트를 통해 gdb 사용법을 좀더 자세히 알게 되었다.
어제의 작업 화면. 현재 버전에선 가운데 화면의 코드 중 절반 이상이 바뀌었다.
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