Friday, May 20, 2005

split, join, strip in C++

Python에서 하던 일을 C++로 하기 위해서 만들었다.

 1 vector<string> mt_split(string str, string del)
2 {
3 int pos, old_pos=0;

4 string item;
5 vector<string> ret_vector;
6 while(1){
7 pos = str.find(del, old_pos);
8 if ( pos == string::npos ) {
9 item = str.substr(old_pos);
10 if(item.size()) ret_vector.push_back(item);
11 break;
12 }
13 item = str.substr(old_pos, pos-old_pos);
14 if (item.size()) ret_vector.push_back(item);
15 old_pos = pos+del.size();
16 }
17 return ret_vector;
18 }
19
20 string mt_join_inner(vector<string>::iterator b, vector<string>::iterator e, string j)
21 {
22 if (b != e-1 ){
23 return *b + j + mt_join_inner(b+1, e, j);
24 }
25 return *b;
26 }
27
28 string mt_join(vector<string> &v, string j)
29 {
30 return mt_join_inner(v.begin(), v.end(), j);
31 }
32
33
34
35 bool mt_isSpace(char ch)
36 {
37 if(ch == ' ' ch == '\t' ch == '\n' ch == '\r')
38 return true;
39 else return false;
40 }
41
42 string mt_remove_dup_space(string& instr)
43 {
44 if ( instr.size() < 2 ) return instr;
45 if ( mt_isSpace(instr[0]) && mt_isSpace(instr[1]) ){
46 return mt_remove_dup_space(instr.substr(1));
47 }
48 else return instr[0] + mt_remove_dup_space(instr.substr(1));
49 }
50
51 string mt_strip(string& instr)
52 {
53 // string outstring;
54
55 if(instr.size()==0) return "";
56
57 string::iterator fi;
58 for(fi=instr.begin();fi!=instr.end();fi++){
59 if (!mt_isSpace(*fi)) break;
60 }
61
62 string::iterator ri;
63 for(ri=instr.end()-1; ri!=instr.begin(); ri--){
64 if (!mt_isSpace(*ri)) break;
65 }
66
67 string outstring(fi, ri+1);
68 return outstring;
69 }

주인의식과 나그네의식

우리나라 기독교 신앙을 가진 사람들은 이스라엘이 하나님께서 선택하신 민족이듯이 동양의 선민으로 우리 민족을 생각하고 있다. 일본 사람도 마찬가지로 자기 민족이 선택받은 민족이라고 생각하고 있을 것이다. 중국 사람들도 마찬가지로 중화라는 개념을 만들어 냈다.

그런데 구약시대의 이스라엘은 다른 생각을 가진 듯하다. 선민의식을 가진 것은 분명하지만 이 땅에 대해서는 주인의식이 없다는 것이다. 빼앗은 땅에 국가를 세우고 또 땅을 빼앗겨 포로로 끌려가고 하는 과정에서 선민의식으로 인한 주인의식 보다는 나그네의식이 더 강하다.

우리는 어느 조직에 들어가든지 주인의식을 갖아달라고 요청을 받는다. 서양 사람들에게는 그런 느낌이 없다. 주인의시과 나그네의식은 조직의 문화를 만들어가는데 많은 차이를 내는 것이 틀림없다.

하늘나라의 주인의식과 이 땅의 주인의식의 차이라고 생각할 수 있겠다. 우리는 이땅의 주인이고자하여 배타성을 가지게 되고, 또한 이스라엘 사람들은 하늘나라의 주인이고자 배타성을 가지게 된다. 신기하다 정 반대되는 개념이 같은 배타성으로 나타나는 것이다. 이것은 사람들의 일그러진 모습때문에 그럴 것이다. 두 개념 모두 포용과 관용의 정신을 담고 있는 것인데, 이것이 배타성으로 나타나다니.

Thursday, May 19, 2005

전원 생활 정말 좋은가?

전원 생활에 대한 회의가 들고 있다.
전원 생활이 정말 좋을까? 정원에 나가 풀 뽑고 꽃나무 심는 일을 즐기는 것 보다 게으른 생활을 즐기는 것을 더 선호하지는 않을까? 아무것도 없이 울창한 숲 옆에 사는 것 보다, 빽빽한 아파트 단지지만 그 옆에 시청에서 가꾸어 놓은 수목원이 있는 것도 더 좋지 않을까?

집은 비록 마천루에 있지만 온라인으로 전 세계를 다닐 수 있는데 공간의 제약이 뭐 그리 큰 불만이 될까? 저녁에 노을지는 하늘을 보고 싶으면 잠깐 걸어 나가서 공원에 앉던지 차를 잠깐 몰고 나가서 엑스포 근처 갑천변에서 즐기는 것이 더 훌륭하지 않을까?

Wednesday, May 18, 2005

h10 Posted by Hello

Code to HTML converter

Code to HTML converter

소스코드 포스팅을 위한 좋은 도구, Code2HTML Online

setw(int)

C++ reference: ostream

c++의 iostream에 setw를 이제야 써본다. ios_base에서 상속받은 멤버인데 출력할 글자의 필드 크기를 지정해 주고, 오른쪽으로 줄을 맞추어준다.
cout<<setw(2)<<newpos<<setw(30)<<lex<<
setw(4)<< wlist[3]<<setw(4)<<wlist[4]<<endl;


위와 같이 사용한다.

MP3 Player

빨간색 iRiver H10를 주문했다. 생각지도 않은 기술료가 나왔기 때문이다.

주문 버튼을 누르기 바로 전에 psp가 생각이 났다. 이걸 사야하는거 아닌가 고민을 했는데, 5G라는 스토리지를 생각하니 H10가 맞는 것 같다. 가격도 20만원 정도로 반값밖에 하지 않고...

집사람이 좋아할까? 외부 마이크를 가지고 녹음하는 것을 어떻게 생각할지 궁금하다. 빨간색이 예뻐서 좋아할 거 같기도 하다.


헉, 그런데 H10이 외부 마이크 녹음이 크래들을 필요로 한다는 것을 알았다. 주문취소다.

pod casting

인터넷 라디오의 개념이 진화하고 있다. MP3 Player에 라디오 프로그램을 담아 듣는 사람들이 늘어 나고 있는 것 같다. 블로그를 오디오로 만들어 놓는 방식인데 이것이 라디오 방송과 같은 효과를 내는 것 같다. 블로그가 여러 장르에 걸쳐 만드어 지는 것과 같이 여러 장르의 라디오 프로그램이 만들어 질 수 있을 것이다.

만일 내가 포드 캐스팅을 한다면 조선일보, 한겨레신문 비평 약간과 slashdot과 wikipedia에서 흥미있게 봤던 기사들을 이야기할 수 있을 것이고 혹은 연구소에서 하루 일했던 일들을 목소리로 담길 수 있을 것이다.

블로그에 멀티미디어 성격이 추가되는 방향으로 나아갈 것 같다. 휴대전화나 mp3 player에서 사진과 음성이 담긴 블로그를 작성해 인터넷이나 USB cable을 통해서 자기 블로그 사이트에 올려놓는 일들이 가능해 질 것이다.

pod casting은 rss로 자동으로 생성되는 프로그램을 다운로드해준다. 이것을 mp3 player의 화일 관리자로 sync 맞추면 가지고 다니면서 자기가 좋아하는 라디오 프로그램을 들을 수 있을 것이다.

미국의 공중파 라디오들에서 이러한 방식으로 시청자를 늘이려는 시도를 하고 있다. 우리는 라디오같은 경우는 무료로 지난 회 방송을 들을 수 있도록 해 놓고 있으니 rss만 연동시키면 간단하게 지원할 수 있을 것으로 보인다.
ipodder가 rss aggregator로 사용되고 있는데, 여기에 bit torrent 채용하는 것 같다. 그러면 굉장히 속도가 빨라질 것이다.

BBC에서 선구적인 방법으로 인터넷으로 자기들이 가진 비디오를 공유할 수 있도록 준비하고 있다고 한다. 현재 시범서비스를 하고 있다. 어쩌면 실시간 방송말고 재방송은 이제 인터넷으로 화일을 다운로드 받아 듣는 것이 좋을 것 같다. HDTV 방송도 토렌츠를 통해서 받는 것이 컨텐츠 공급자에게 매우 우리하다 자기 네트워크 대역폭과 소토리지를 절약할 수 있는 획기적인 방법이다.

Monday, May 16, 2005

번역 지원 포탈 비지니스 모델 : 자유 번역 운동 vs. 상용 번역 서비스

번역 지원 소프트웨어에 대한 비지니스 모델이 생각이 났다. Open Source를 지향하면서 이익을 창출할 수 있는 모델에 대한 궁리를 많은 사람들이 해오고 있다. MySQL과 Zope는 소프트웨어는 무상으로 공개하여 사용할 수 있도록 하고 기술지원은 계약을 통해 보수를 요구한다.

나의 번역 지원 소프트웨어에 대한 비지니스 모델도 단순하다. 인터넷에는 같이 번역하여 공유하고 싶은 문서들이 매우 많다. 예를 들어 위키백과사전은 같은 경우는 번역의 충동을 너무 많이 느끼게 한다.
또한 쿠텐베르그 프로젝트의 결과물들을 보면 “이러한 고전이 쉬운 우리말로 번역되어 있다면 우리 사회에 엄청난 반향이 있을 것 같은데”라는 생각이 든다. 이러한 문서는 모두 오픈 소스로 번역을 했으면 좋겠다. 웹 기반 번역 지원도구에서 이런 문서에 대한 번역 작업 워크 벤치를 제공하여 다수의 인터넷 사용자가 소프트웨어를 공동 개발하듯이, 또는 위키백과사전에 기여하듯이 번역을 수행할 수 있을 것이다. 또한 이미 나와 있는 번역을 개정하기 위하여 노력할 수 있을 것이다. 이것을 '자유번역운동'이라고 부르자.

자유번역운동은 영어로 된 문서를 한국어로 번역하는데 이용될 수 있을 것이다. 한국 리눅스 문서 프로젝트 (KLDP)와 같은 운동은 번역 지원 소프트웨어 없이도 태동되어 아직도 운동이 지속되어 오고 있다. 쿠텐베르그 프로젝트 같은 것부터 시작하여 번역되어 있는 않은 한문으로 된 고전을 번역하고 미국의 주요 일간지를 번역하는 팀이 만들어질 가능성도 있다. 한국의 신세대는 유아기에서부터 영어를 배우는 영어를 이해하는 세대이므로 이러한 거대한 그룹이 만들어질 가능성이 있다. 또한 한문으로 되어 있는 고문헌을 한국어로 다시 쓰는 운동도 벌어질 수 있다. 번역이라는 지적인 노동은 현재까지 매우 전문적인 능력을 갖춘 사람들만이 할 수 있는 것이었지만 컴퓨터와 인터넷의 발전은 이제 아무나 언어적 소양이 있는 사람이라면 할 수 있는 일이 되고 있다. 이렇게 자유번역운동을 통해서 오픈 소스 정책에 부합하는 사전과 문장/문단 단위 정렬된 이중언어 코퍼스를 얻을 수 있을 것이다. 이것은 인류의 새로운 자산이다. 이 자산은 공개되어 지고 상업적 이용을 촉진하는데 이용될 수 있을 것이다.

이렇게 공개된 자원을 토대로 오픈 소스 소프트웨어 회사들이 이미 추구하고 있는 비지니스 모델이 만들어 질 수 있다. 위의 자원을 사전과 번역 메모리로 이용하는 상용 서비스를 제공하는 것이다. 자유번역 운동에 의해서 만들어지는 언어적 자원과 번역 지원 소프트웨어들은 상용 번역 서비스에 바로 사용될 수 있을 것이다. 여기에는 그 번역 프로젝트에 맞는 전문가와 번역가들이 참여하여 보수를 지급받게 될 것이다. 보통 이러한 프로젝트는 현재의 번역 용역과 마찬가지로 번역 내용이 비밀에 부쳐질 수 있을 것이며 이 서비스의 고객이 되는 기업은 번역에 대한 비용을 부담하게 된다. 여기에서 부산물로 생겨나는 언어 자원, 전문용어 사전과 병렬 말뭉치는 계약에 따라서 활용 범위가 결정될 것이며 이것에 따라서 번역의 비용이 차이가 날 수도 있을 것이다. 새로운 번역 비지니스 모델이 생겨날 것이다.

현재 트라도스라는 번역 메모리 지원 소프트웨어가 유럽어권에서 아주 좋은 호응을 얻고 있다. 하지만 아직 한국 실정에 맞는 서비스를 제공하고 있지 못하다. 이것은 우리나라의 번역 업체 / 언어처리 업체들의 틈새시장이다. Zope 기반의 ZBabel과 유사한 프로젝트를 수행하여 좋은 결과물을 만들어 내면 이 틈새시장에 뿌리를 내린 번역 회사가 탄생할 가능성이 있을 것이다. Logos Research System에서 제공하는 성경 연구 도구가 번역 소프트웨어에서 벤치마킹해 볼 만안 기능들이 많이 들어 있다. 또한 번역에 필요한 자료들(주석, 헬라어 원문, 문화인류학 논문)이 포함되어 있다. 단순히 번역 지원 에디터로서의 역할이 아니라 번역 지식을 가지고 있는 것이다. 실제로 성경번역 선교사들이 이 소프트웨어를 이용하여 성경을 번역하고 있다. 이 정도의 수준에 이르면 모든 번역가들은 10-20년의 경험이 번역 지식 기반(사전과 병렬 코퍼스를 토대로 만들어진)으로 변화될 것이다.

이러한 운동은 번역운동을 대중화시켜서 한국 사회가 세계화 및 정보화 시대에서 전세계를 대상으로 한 정보를 빠르게 입수하는 계기가 될 것이다. 또한 저개발 국가들 또는 정보의 소외 계층에도 인류가 함께 만들어온 교양과 과학기술이 번역되어 소개되면 사회발전에 기폭제로 작용할 것으로 기대한다. 자동번역은 이제 그 기술적 실용성의 문제로 잠깐 우선순위를 뒤로 놓을 때가 된 것 같다. 자유번역운동에 근거한 번역에 촛점을 맞추어 인류 공통의 문제는 정보 불평등을 해소하고 인터넷이 약속했던 정보화 혁명을 일상 언어 생활의 혁명으로 연결 시킬 때가 된 것 같다.

Thursday, May 12, 2005

하고 싶은 프로젝트

나에게 시간이 허락된다면 번역 지원 웹 사이트를 만드는 일을 해보고 싶다. Plone을 기반으로 해서 웹에서 번역을 할 수 있도록 지원하는 일이다. 현재 ko.wikipedia.org에서 '등소평'을 번역하고 있는데, 주석안에 원문을 넣고 번역을 하는 작업을 하고 있다. 이것을 편리하게 할 수 있었으면 좋겠다. 시나리오를 생각해 보자.

1. 번역할 File을 선택한다.
a. URL을 지정하면 가져와서 저장한다.
b. Text File을 upload한다.
c. Copy paste 혹은 직접 문장을 넣도록 한다.

2. 문단 혹은 문장별로 분리하여 한 화면에 번역할 부분이 나타나게 한다.

3. 단어 번역을 위해 사전을 선택한다.
시사, 일반, 전문분야, 사용자 사전 선택

4. 자동번역을 통해서 초벌 번역을 한다.
a. 자동번역을 수행
b. 번역 메모리 검색

5. 초벌 번역된 것을 다듭는다.
a. 사전을 제공한다.

6. 문장 단위로 align하여 번역 메모리나 사전에 재입력한다.

7. 최종 번역된 문서를 제공한다.

----
Plone과 MySQL을 기반으로 구현한다.

Friday, May 06, 2005

미국과 한국, 그리고 소프트웨어 산업

휴일 저녁에 Microsoft의 MSDN TV와 Blog를 돌아다녔다.

미국이 2억의 인구를 가지고 있고 일본이 1억이다. 우리가 5천만이고 북한이 3천만이니까, 통일되면 미국의 1/3의 인구다. 희망하기는 1/3의 경제력을 가질 수 있다면 우리는 현재 10등 정도의 국가에서 5등안에 들어갈 수 있으리라고 생각된다. 중국의 인적 자원과 시장을 활용할 수 있기 때문에 이러한 상상에 힘을 받혀 주고 있다. 그러나, 문제는 우리가 얼마나 잘하는 가에 달려 있다.

산업 혁명의 시대라면 이러한 일은 꿈도 꾸지 못 했을 것이다. 그러나, 지금은 정보화 혁명의 시대다. 비교적 안정된 사회와 엄청난 교육열은 이것이 가능하게 하는 동력이 되어야 한다. 그러나, 우리가 지금하고 있는 것들을 살펴보면 아직도 조립 생산의 수준을 벗어나지 못하고 있다. 소프트웨어는 피플웨어가 절대적으로 요구되는 산업이다. 우선 충분한 자원을 소프트웨어 인력 양성에 투입을 해야한다. 현재처럼 일회용품 사용하는 것 같이 소프트웨어 기술자를 대우해서는 아무도 전장으로 나가려 하지 않을 것이다.

우리가 텔레비전, 자동자, 냉장고 만들때 다른 나라를 벤치마킹 했던 것처럼 커다란 소프트웨어 회사들을 벤치마킹해야 한다. 물론 충분한 자원이 투자될 때에만 가능한 일이다. 또한 문화적으로도 영어를 생활화 해야한다. 일본인들은 번역하는 전략을 사용했다. 그러나, 이것은 생각해 보면 구시대적이다. 이중언어자들이 얼마나 많은가? 그들의 생산성은 얼마나 높은가? 현재 영어 교육이 초등학교에서부터 이루어 지고 있다. 그 세대가 사회에 나와서 일할 때까지만 우리가 버티어 주면 영어 문제는 해결이 된다고 볼 수 있다. 우리 사회가 미국처럼 혼돈으로 빠지지 않고 그들의 언어와 기술개발 방법론을 받아들여야 한다.

지식 혁명의 시대에 새로운 전략이 필요하다. 이점에서 현재 소프트웨어 산업에 있는 사람들은 선구자적 태도를 갖아야 한다. 관리자들은 미국의 방법론을 배우고, 거기에 우리식 밀어붙이기를 바랄 것이다. 그렇게 해도 우리는 성공할 수 있을 것이다. 기술자들은 미국의 방법론을 배워 그대로 실천하기를 원하지만.

소프트웨서 산업을 일으키려면 아마도 마이크로소프트와 맞짱을 떠야할 것이다. 유비쿼터스 환경을 독점하려는 마이크로소프트와 싸우려면 아직 기반 기술이 없는 우리는 리눅스를 채택하고 여기에 마이크로소프트가 개발하고 있는 응용 프로그램을 대거 만들어 내야 한다. 이것이 벤치마킹해서 그대로 할 수 있는 일이기 때문에 승산이 있을 것이다.

Thursday, May 05, 2005

Long Tongue Posted by Hello