Daybreakin Things
어제는 웹앱스콘에 다녀왔다. 대전에서 올라가는 것은 아니었지만 용인 수지 쪽에서 서울 올라가는 출퇴근길은 교통 정체가 항상 심하기 때문에 행사 시작 2시간 전에 출발하였는데 20분 정도 일찍 도착했다. 행사장 무선랜은 아주 잘 잡혔고 미투데이로 졸음을 달래며(...) 백엔드 세션을 들었다. 작년에는 무엇 때문이었는지 기억나진 않지만 아무튼 안 갔었고, 이번에는 휴학 중인 관계로 중간고사 기간인 다른 카이스트 학생들을 대신(?)하여 참석할 수 있었다;;
Webappscon 2008 on Flickr
백엔드 세션에서 첫번째 순서는 니들웍스에서 활동하고 계시는--그러니까 너무 잘 아는(?)--최호진님의 PHP MVC 프레임워크인 CakePHP에 대한 소개였다. MVC 자체에 대한 개념은 이미 Django를 가지고 많이 써봐서 잘 알고 있었지만 PHP에서는 그것을 어떤 식으로 구현할 수 있을지, 텍스트큐브 2.0 프레임웍 때문에 많이 고민하고 있던 터라 아이디어의 단초를 얻는 데 꽤 도움이 되었다. (사실 CakePHP의 소스 구현은 대충 들여다봤었어도 그걸 사용하는 입장에서 어떤 모양의 코드가 나오는지는 거의 본 적이 없었기 때문이다.)
클라우드 컴퓨팅 세션을 진행하신 한재선님도 NexR 창업 무렵부터 이미 알고 있었던 사이라서 오랜만에 만나 반갑게 인사했다. (스팍스와 미니프로젝트를 잠깐 같이한 적이 있는데 그때 알게 되었다.) 아마존의 EC2나 구글앱스엔진이나 뭐 이미 다 들어본 것이긴 하지만 live demo로 직접 보여주니 한층 더 가깝게 느껴졌다. 한 가지, EC2에서 CentoOS였나 Fedora Core였나 둘 중 하나를 올렸던 것 같은데 Debian 계열도 지원하는지 궁금하다. 미리 세팅된 리눅스 이미지를 만들어서 등록해두면 서비스 요구량에 따라 동적으로 서버 인스턴스를 생성한다는 점과 사용한 만큼 요금을 낸다는 방식이 인상적이었다.
집단지성 프로그래밍의 경우 이미 그 책을 읽고 있었고, 동아리에서 개발 중인 검색엔진인 KSearch에 몇 가지 적용할 아이디어까지 있는 상태라서 생각보다 별로 흥미롭지는 않았다. 하지만 잘 모르는 사람들이나 서비스 기획자와 같은 분들한테는 나름 흥미있는 세미나였을 것 같다.
그러다가 간만에 일찍 일어난 탓에 너무 졸려서(...) 마침 도착하셨다는 inureyes님을 만나러 나왔다. 행사장 안팎에서 미투데이에서 미친으로 알고 있는 StudioEgo님, 하루하루님 등을 만날 수 있었고, 나중엔 대학 친구이자 병특 중인 재성이도 만날 수 있었다. 회사에서 다른 직원들과 함께 보내줬다고 하는데, 2년이나 일했다고 동갑내기인 이 친구가 벌써 대리 직함을 단 것이 재밌었다;; 발표 끝나고 나오신 호진님과 라이트닝토크에 참가하신 ETRI의 김승현님 등도 만났다. 어찌어찌 모여서 점심을 먹고 오랜만에 만난 니들웍스 분들과 이런저런 수다를 떠느라 막상 컨퍼런스는 별로 안 듣고 밖에서 돌아다니며 계속 놀았다;;
오페라 부스를 지키고 있던 분이 알고보니 태터툴즈 포럼 초창기 때 활동하셨던 JCrew님이라는 걸 알게 되어 반가웠다. 2년 동안 병역을 마치고 오페라 소프트웨어 한국지사에 입사하셨다고 한다. 건더기님이 떠나니 다시 돌아오는 분도 있는 것이 역시 만나고 헤어짐이란 계속 이어지는 것 같다. 오페라에서는 하나의 프로젝트 팀이라도 세계 각지에 흩어져있는 지사 직원들이 모이기도 한다면서 국제적인(?) 회사 생활을 한다고 하셨다. 옆에서 같이 부스를 지키고 있던 분은 무려 스웨덴(!) 분이었는데 러시아 여행 때 만난 한국인 누나가 교환학생 생활을 하던 린셰핑 지역에 80명 규모의 오페라 사무실이 있어 거기에 근무하고 있다고 했다. (스톡홀름에도 사무실이 있긴 한데 2명 뿐이라고...-_-)
조엘스폴스키의 강연을 중간부터 들었는데, 이건 뭐 '이런 건 아니다'라고 까고 '이런 식으로 해야 한다'라는 느낌?; 말이 좀 빠른 편이었지만 생각보다 영어가 잘 들려서 별다른 무리 없이 재밌게 들을 수 있었다. 적절하게 재미있게 긴장감있게 진행하는 걸 보니 꽤나 타고난 이야기꾼인 것 같다. 끝나고 사인회가 있었는데 미리부터 조엘을 추적(?)하여 따라간 덕분에 일찍 사인받고 사진도 찍을 수 있었다. 이제 이 책의 소장가치가 한층 높아지겠지;;
여기저기 돌아다니면서 오랜만에 꼬날님도 만났고(꼬날님표 그 해맑고 큼직한 웃음은 여전하시다) 저번에 온라인 상으로 약속한 대로 enswer 명함도 받았다. 그 외에 태터워크샵에 참가하기도 했었던 미니보드 개발자님도 만나고, 얼마 전 IIS7 RewriteModule 테스트 과정 중 웹검색을 통해 홈페이지를 방문해서 질문한 것으로 알게 된 마이크로소프트의 김대우님과도 반갑게 인사를 나누었다.
론치패드 때는 다 보진 못하고 vlaah의 발표만 유심히 보았는데, 플래시 애니메이션으로 만든 감각적인 슬라이드와 발표자로 나오신 shinvee님의 vlaah 색깔 머리 염색이 인상적이었다. 하지만 빡빡한 시간 제약 때문에 너무 긴장하신 탓인지 조금 버벅거리시는 것 같은 느낌도 있었다.;; 이걸 보면서 재성이와 vlaah 서비스 자체에서 노는 것보다 Open API를 통해 외부 서비스와 연동한 취양 정보 수집·가공의 형태로 진화시키면 비즈니스 모델도 만들고 괜찮지 않을까 싶다는 얘기를 했다. 문자로 연락은 주고받았지만 아쉽게 홍민희님과는 엇갈려서 만나보지 못했다; (언제 한 번 강남에서 밥이나 한끼? -_-)
그리고 이어진 라이트닝토크에서 가장 인상적이었던 건 오픈웹 소송을 진행 중이신 김기창 교수님. 생각했던 것보다(?) 젊어 보이시는 분이었다. 오픈웹 소송 자체보다도, hwp 포맷을 폐쇄적으로 비공개하고 시장 독점적 지위를 가지고 있는 한소프트에 대한 소송을 차후 준비할 것이라는 얘기가 사람들 사이에서 반향을 불러일으켰다. 사실 나도 이에 대해 안 좋은 기억이 있는데, 과학고 시절 기숙사관리프로그램(-_-)을 만들면서 hwp 포맷을 XML 형태로 만든 것인 hml이라는 포맷을 이용했었다. 그런데 당시 쓰이던 한글2002와 한글2002SE의 hml 포맷이 상호 호환이 안 되어 두 버전에 대한 코드를 중복 작성해야 했던 것이다. (심지어 한글2002SE에서 저장한 hml 파일을 한글2002에서 열면 아예 프로그램이 죽었다. orz) 포맷에 대한 정보가 없었기 때문에 직접 xml을 뜯어보면서 대충 치환하는 식으로 프로그램을 짤 수밖에 없었다. 하지만 이미 마이크로소프트조차 docx뿐만 아니라 doc 포맷까지 스펙 문서를 공개한 것을 보면 이미 워드프로세서는 포맷에 대한 독점권이 아닌 워드프로세서의 기능에 따른 차별화가 곧 전략이 되고 있음을 알 수 있다. 아무튼 이런 독점을 깨기 위한 소송을 준비하겠다는 일종의 선전 포고와도 같은 것이었다.
오픈소셜이나 오픈ID, 매시업, 제로보드, 웹표준 커뮤니티에 대한 이야기들은 이미 익히(..) 잘 알고 있는 것들이라 복습과 정리하는 정도였을 뿐 뭔가 크게 새로 깨달았다든지 배운 것은 없는 것 같다. 다만 Hadoop에 대한 내용은 얼핏 수박 겉핥기식으로만 들어봤던 것이라 앞으로 이쪽을 필요로 하게 되어 접근한다면 어떻게 시작해야 할지 감을 잡을 수 있게 해주었다. 여자개발자모임은 혹시나 했더니 역시나 김창준님의 강력한 지지가 있었던 모양인데, 이건 다음 달 말에 있을 P-CAMP와 대안언어축제 때 보다 자세히(?) 알 수 있을 것 같다. =3
아무튼 이번 컨퍼런스에서 백엔드 쪽의 주요 이슈는 역시 분산처리라고 할 수 있겠다. 프레임웍 도입은 이미 충분히 주류에 편입되었다고 볼 수 있겠고, 대량의 사용자 데이터로부터 유의미한 가치있는 정보를 뽑아내기 위한 방법들이 점점 낮은 비용으로, 오픈소스로 사용할 수 있게 됨으로써 생길 수 있는 다양한 기회와 가능성, 그리고 what/how to do들에 대한 이야기들이었다. 하지만 아직도 한국에서는 open 자체에 대한 이슈가 여러 곳에서 조금씩 발목을 잡고 있음과 동시에 그래도 점점 나아지고 있다는 것도 느낄 수 있었다. 앞으로도 이 컨퍼런스가 잘 이어져서 웹의 발전이라는 두루뭉실하고 거창한 목표에 한 보탬이 되길 바란다. :)
이 글은 아침놀님의 2008년 10월 15일에서 2008년 10월 17일까지의 미투데이 내용입니다.
이 글은 아침놀님의 2008년 10월 5일에서 2008년 10월 10일까지의 미투데이 내용입니다.
Today is one of national holiday, "Hangul Day". This day is for celebrating creation of Korean alphabets, Hangul. It is a truly wonderful achievement of our nation with almost no illiterat people. Even we have sayings like "One doesn't know Giyeok(ㄱ) with a sickle.", which means the one is a fool because Hangul is so easy that everyone should know.
However, we have very many issues about Hangul in the computer world because typical softwares and operating systems were designed by single-language speaking people such as US Americans. Many foreign computer games like Supreme Commander does not support to type Hangul in them. (Games of Blizzard are the significant exceptions.)
Recently, problems of displaying Hangul became just ignorable for that many softwares now use Unicode and almost all operating systems have Unicode fonts (although some of them are not pretty for native Koreans).
For Latin characters, major operating systems like Microsoft Windows and Apple MacOSX share a set of common fonts--Arial, Times New Roman, Courier, Impact, Comic Sans MS, Georgia, Lucida Console, Lucida Sans, Palatino, Trebuchet MS/Helvetica and Tahoma/Geneva. This fact makes web designs to have diversity and beauty with consistent looks in many different OSs. I think this is why W3C had not worked actively on web fonts specification.
But for Korean font, the situation is very bad. With monopoly of Microsoft Windows, the four major fonts that are the basic fonts of Korean Windows also monopolized. They are Gulim(굴림), Dotum(돋움), Batang(바탕) and Gungseo(궁서). The former two are sans-serif, and the laters are serif. In small sizes like 10pt, they are displayed with bitmaps because in the past anti-aliasing techniques were not good enough to improve readability on complicated Esatern Asian characters including Hangul.
The problem is, the most frequently used Gulim is made from Japanese font, Naru, and has been criticized for destructing native goemetry and beauty of Hangul. Many web designers also doesn't like it, but they have no other option except Dotum, but also not pretty. So using images for titles and brochures became very common to use commercial fonts like YoonGothic(윤고딕). Here, another problem is making a new Korean font requires huge amount of costs and time. You just need design about 100 characters for basic Latin font, but for Unicode Korean, we need 11,172 + alpha characters. If you want make it more perfect, you also have to include common Chinese characters, which may be another thousands. So many good fonts were developed as commercial, non-free, and not popularized, and consequently, web designers couldn't avoid to use images instead of text.
Windows Vista is a very remarkable version for Koreans because it first introduced a new default UI font, Malgun Gothic(맑은 고딕), with clear-type enabled. Yes, finally we "graduated" the bitmap font era. Also many local governments like Seoul and major IT companies are developing new vector fonts and releasing them free to improve their brand images. This will make the situation better, but still it's not good enough like they're embedded in operating systems.
For programmers, separating English font and Korean font is very important to get good readability, because usually auto-selected fonts for monspace Latin font is generally very unreadable. Fortunately, my favorite text editor gVim support this, but SSH client PuTTY didn't. So I had to make a patch--dPuTTY.
All major operating systems provides internationalized input with their own IME subsystems. Especially, CJK1 characters need complicated IME with automata and dictionaries.
On Microsoft Windows, the operating system offers a series of Input Method APIs. They encapsulates the composition process, so applications need to know just whether the composition is begun, being done, finished. Of course, they have to update their text view or edit controls on those events from IME.
If an application does not support IME interaction, Windows will do a fall-back like this:
[Flash] /blog/attachment/9747313015.swf
Compare with this native behaviour:
[Flash] /blog/attachment/8816602530.swf
The later one feels much more comfortable for Korean people. Enabling the application to interact with native IME is very very important for internationalization.
There is another important problem of IME. There are NO operating systems that make user able to know the IME state conveniently. Users must look around or move their eyes to see the IME toolbar to detect whether the current input mode is Hangul or English. Why Microsoft or Apple hasn't changed the color or shape of input cursor according to IME status? I think just they weren't aware of this problem because they don't use IME and don't switch two languages frequently.
There were a few softwares that implemented this feature in the past, but currently we don't have those softwares in our major computing environment. Almost every software uses only Windows' native IME features as provided.
* * *
Internationalizing a software truly involves headaching problems in many cases. There are other problems with file encoding, mp3 tag encoding, ANSI applications with AppLocale and many many. I hope Latin-language speaking developer would consider basic i18n habits more. Sometimes, I imagine what if modern computer or operating systems were designed in Korea. :P
Chinese, Japanese, Korean. It implies that processing these three languages properly is difficult for developers. ↩
왜 무조건 영어로 먼저 입력하게 하는가.에 대한 반론글.
IME1는 기본적으로 운영체제에 종속된 기술이고 그 상태 전환은 온전히 사용자에게 달려있다. 비밀번호 입력란이나 단축키를 사용하는 게임을 즐길 때와 같이 특수한 상황에서는 보통 해당 소프트웨어나 운영체제 스스로 IME를 꺼서 무조건 ASCII 영문으로만 입력하게 하는 경우가 있긴 하지만, 그런 경우 아예 애초부터 한글 등의 비ASCII 문자가 입력될 필요가 없고 입력되었을 때 사후 처리가 곤란해질 수 있는 경우(특히 비밀번호)이기 때문이다. 하지만 검색어, 이름, 댓글 입력란처럼 한글과 영문이 모두 사용될 수 있는 곳은 사용자가 선택한 IME 상태를 그대로 존중해주는 것이 원칙이다.
또한 IME 환경은 한중일과 같이 복잡한 입력기가 필요한 동아시아 문화권뿐만 아니라 유럽권에서도 자체 키보드 배열을 사용하고 있기 때문에 PC의 de facto standard인 미국식 영문 자판과 유럽식 키배열을 함께 사용하고 있는 경우가 있을 수 있고, 베트남과 같이 윈도우가 제공하는 입력기가 아닌 자체적으로 개발한 입력기 프로그램을 붙여 쓰는 경우도 있는 등 각 사용자마다 그 환경이 매우 큰 차이를 보인다.
분명한 건, 일반적으로 웹페이지에서는 비밀번호 입력이 아니라면 IME 상태를 변경하지 말아야 한다. 일반적인 GUI 환경의 프로그램들은 이러한 텍스트 입력란에서 사용자의 명시적 행동 없이 IME 상태 변경을 하지 않고 있는데, 웹브라우저의 Form 요소를 사용할 때도 당연히 이러한 전제를 무의식적으로 깔고 사용하게 마련이다. 이럴 때 자기가 예상하지 못했던 결과가 나타나면 사용자 입장에서는 불쾌함을 느낄 수 있다.
물론 한글 사용을 장려하자는 기본적인 취지는 좋지만(필자도 세벌식을 쓰는 등 나름대로 컴퓨터 환경에서 어떻게 하면 더 한글을 '잘' 쓸 수 있을지 많은 생각을 해왔고, 한글 입력을 지원하지 않는 게임인 Supreme Commander에서 멀티플레이 중 한글 채팅을 가능하게 하기 위해 한글입력기 플러그인을 만들고, PuTTY의 개선 버전인 dPuTTY를 통해 한글 IME 관련 동작을 개선하는 등의 노력을 한 바 있다.), 보다 큰 시야에서 기술을 바라보는 관점이 아쉽다. 생명복제 기술이 있다고 해서 그것을 남용하면 안 되듯이, 일부 운영체제·웹브라우저 환경에서 IME 상태 변경을 지원한다고 해서 그것을 필요 이상으로 남용해서는 안 되는 것이다.
얼마 전, 모 서비스 가입을 할 때도 비슷한 것을 느꼈었다. 휴대전화 번호를 입력하기 위해 3칸으로 나누어진 텍스트 입력상자들이 있었는데, 내 휴대전화 번호가 xxx-yyyy-zzzz와 같이 3-4-4자리였고 나는 당연히 xxx 입력 -> 탭 -> yyyy 입력 -> 탭 -> zzzz 입력 이런 식으로 하려고 했다. 우선 첫 번째 문제는 xxx를 입력하면 자동으로 다음 입력칸으로 넘어가는 스크립트가 들어있어 yyyy를 zzzz 입력해야 할 칸에 입력하게 되었다는 것이 문제였고, 그 다음은 두 번째 칸에 yyyy를 입력하는데 3글자를 넣으니 자동으로 다음 칸으로 넘어가버려서 매우 당황했었다는 것이다. 알고보니 yyyyzzzz 순서대로 다 치고 나면 yyy-yzzzz로 입력되었다가 스크립트가 알아서 두번째 칸에 4자리를 넣어주는 방식이었는데 매우 불쾌한 경험이었다.
나를 기분나쁘게 한 사실은 다음 입력칸으로 이동하는 데 사용하는 탭키의 사용을 내 동의 없이 마음대로 가로챘다는 것과, 어차피 서버에서 받을 때 validation해야 하는 부분을 굳이 웹페이지 자체에서 올바른 형태로 보여지게 만들려고 사용자의 예상을 깨는 동작을 보여주고 있다는 것이다.
분명히 그 가입 페이지를 만든 사람은 사용자들이 탭을 누를 필요가 없고 자동으로 양식을 맞춰주니까 더 좋아할 것이라고 생각했겠지만 실제로는 그렇지 않다는 것. 물론 일부 사용자들은 이런 자동화된 방식을 더 좋아할 수도 있겠지만, 기본적으로 User Interface 설계는 사용자의 예상을 최대한 깨지 않는 방향이 올바른 접근이다. 또한 모든, 혹은 거의 대부분의 웹사이트나 프로그램에서 휴대전화 번호를 입력할 때 위와 동일한 동작을 보인다면 모르겠지만 일반적으로 사용자의 선택에 두는 경우가 많고(특히 해외사이트들은 거의 다 그렇다), 이런 상황을 인지하고 있는 사용자에게는 일관성을 깨뜨리는 것이 된다.
같은 관점에서, 한글 입력을 장려한답시고 웹페이지의 IME 상태를 강제로 바꾸는 일은 사용자가 원래 사용하던 패턴을 깨는 매우 나쁜 UI 설계이다. 게다가 이 방식은 모든 운영체제와 웹브라우저에서 동작하는 것도 아니어서 일관성 원칙 또한 깨뜨린다. 기술에 대한 잘못된 이해와 오용이 불러올 수 있는 하나의 대표적인 사례로 남지 않을까 싶다.
ps. 원글에 달린 반응들 중에 한글 상태일 때와 영문 상태일 때 커서 모양을 다르게 하면 좋지 않을까 하는 의견들이 보인다. 사실 90년대 후반 잠시 반짝했던 워드프로세서 중 삼성에서 만든 훈민정음에서 해당 기능을 지원했었다. 한글 상태면 커서가 검정색이었고, 영문 상태면 빨간색으로 나와서 한영 상태를 바로 알 수 있게 해준 것이다. 이 아이디어가 윈도우 자체나 다른 소프트웨어에서 널리 받아들여지지 않은 것이 매우 아쉽다. (혹시 특허가 걸려 있었을까?)
ps2. 찾아보니 아주 언론 기사까지 떴다. 잘들 놀고 있네 -_-
IME는 단순히 키보드가 보내온 신호 그대로 입력받는 것이 아니라 이것을 중간에서 해석하여 적절한 자판 배치로 변환해주는 중간 프로그램이다. 보통 운영체제와 밀접하게 연관되어 있다. 대표적으로 한글 환경에서는 한글 입력 상태와 영문 입력 상태를 인식하여 한글 입력 상태이면 두벌식·세벌식 등의 자판 배열에 따라 적절하게 글자 조합을 해준다. ↩