|
|
 피리부는 리챠드 스톨만 아저씨 자유소프트웨어는 상호경쟁을 통한 생존이 아닌 삶과 관련된 운동이다. 즉 상호협력, 자유, 생태와
관련된 운동이며, 이념적으로는 반자본주의, 반시장주의, 친환경적이며 사회주의에 가까운 운동이라고 할 수 있다. 운동자체에
정치적이고 도적적인 동기들을 내포하고 있음을 알 수 있다. 자유소프트웨어 운동의 제창자인 피리부는 아저씨 리챠드 스톨만의 글들을 보면, 그의 반자본주의 반시장주의적 정치성향을 분명하게 확인할 수 있을 것이다.
즉 자유소프트웨어라는 것은 단지 프로그램과
그 코드들, 다시 말해서 정보를 자유롭게 공유하자라는 것 이상의 의미를 가지고 있음을 알 수 있다. 그러므로 자유소프트웨어운동이
활발하게 일어나기 위해서는 우선적으로 그러한 사회적 환경이 만들어져 있어야 할 것이다. 단지 p2p 프로그램이 많이 깔리는 것
이상의 의미를 가지고 있다는 점이다.
이런 점에서 봤을때, 우리나라에서 자유소프트웨어운동이 활발하지 못한 것은 당연한 현상이라고 볼 수 있다. 천민자본주의,
돈이최고, 최고의 가치인 돈을 더 얻기 위해서 무한경쟁을 당연시하게 강요하는 사회에서 자유소프트웨어가 설 공간은 없는 것이다.
과연 이러한 사회에서 사회적인 협력, 공유, 나눔, 생태가 우선인 자유소프트웨어 운동이 뿌리를 내릴 수 있을까.
예컨데, 왜 (그렇게 좋다고 하는)자유소프트웨어 운동을 하지 않는가라고 물어보면 다들 하는 말이 "살아남기도 힘든 판국에 그런걸 !?", "그런거 한다고 딱히 뭐 이익될게 있나요?"이다. 심지어는 학생들 조차 마찬가지다.
시간이 부족하다.. 이말은 즉 시간==금이라는 자본주의 마인드에서 나오는 것으로, 시간이 금이니 분단위로 나누어서 써도 부족할 지경인데, 자기에게 직접적으로 돈으로 환산될 수 있는 가치를 지니지 않은것에 쓸 시간따위는 없다는 얘기인 것이다.
게다가 이러한 사회에서의 공유는 본래의 기능을 하지 못하는 경우가 생긴다. 공유가 앎에 대한 공유가 아닌, 돈을
지향하는 가치의 공유가 이루어진다. 돈을 아끼기 위한 방편으로의 정보공유가 그것이다. 문화라든지 삶, 다른사람의 가치든지 하는건
모두 뒷전. 우리나라가 불법소프트웨어, 불법복제의 천국이라는 오명을 뒤집어 쓰는 것도 이런 이유에서가 아닐까. 천민자본주의의
전형적인 모습을 보여준다는 중국역시 같은 현상이 일어나고 있는 것을 단지 우연이라 할 수는 없을 것이다.
우리나라에서 자유소프트웨어 환경이 자리를 잡기 위해서는 사회가 문화적 토양이 우선 만들어져야 할 것으로 생각된다. :::

드디어 기다리고 기다리던 리눅스 차세대 데스크탑 - 거창하다 -인 KDE4가 발표되었다. 생각할 필요도 없이 일단 설치해보기로 했다. 아직 ubuntu용으로 패키징 되지는 않은 모양인데, KDE 기반의 kubuntu는 이미 패키징이 완료되어서 라이브 CD까지 배포되고 있다. 다행히도 이미 kubuntu 를 설치해서 사용하고 있으니 500M가 넘는 CD를 받을 필요도 없이, 지금의 KDE3.5를 업그레이드 시키기로 했다.
업그레이드 과정은 다음과 같다.
- 일단 기존의 kde4 패키지를 제거한다.
# sudo apt-get remove kdelibs5 kde4base-data kde4libs-data
- KDE4 패키지를 다운로드 받기 위한 사이트목록을 추가한다.
# sudo echo "deb http://ppa.launchpad.net/kubuntu-members-kde4/ubuntu gutsy main" >> /etc/apt/sources.list
- 이제 kde5 패키지를 인스톨 한다.
# sudo apt-get install kde4-core
kde4를 인스톨하면, 인증되지 않은 패키지라는 경고가 뜨는데 무시하고 설치하면 된다.
우.. 그리고, 태어나서 난생처음으로 데스크탑 사용기를 비디오로 작성해보았다. 온라인 비디오건, 오프라인 비디오이건 간에 처음 만들어보는 작품?이다. recordmyDesktop이라는 프로그램을 이용해서 ogg 포맷으로 뜬다음 mpeg로 변환시켜서 youtube에 등록시켰다.
좀 조악한 작품이지만 그려러니 하고 봐주면 될거 같다. 백그라운드로 recordmyDesktop 어플리케이션이 실행되는 중이라 화면전환이라든지 하는 것들이 좀 끊기는 감이 있는데, 실제는 맥OS의 환경처럼 매우 부드럽다.
만들고 보니, 해상도를 크게 잡아서 내용이 잘 보이지 않는것 같다. 나중에 혹시 동영상을 만들기회가 생긴다면, 해상도등을 고려해서 작성해야 겠다.
눈에 띄게 달라진 점이라면
- 편리해진 윈도객체 접근 인터페이스
맥 OS가 이미 가지고 있는 기능들로, 단축키로 모든 가상화면에 실행된 애플리케이션 윈도우의 섬네일을 보여준다든지, 각
가상화면을 하나의 화면에 보여주고 애플리케이션을 관리할 수 있도록 하는 기능이 추가되었다. 예전에는 Compiz, Beryl
등을 어렵게설치해서, 이런 환경을 구축해야 했는데, 이젠 기본 기능이다.
- 바탕화면위에 뜨는 모든 것들이 객체화
- 메뉴바가 윈도우의 폭포식에서, 애플의 분류식으로 변경
일단 분류식으로 메뉴를 그룹핑해서 보여주는게 멋져보이기는 한데, 멋져보이는 만큼 편리한지는 아직 모르겠다. 폭포식 메뉴에 익숙해져서 인듯 싶다. 자주 실행되는 프로그램이 북마크형태로 따로 관리되는건 상당히 편한것 같다.
- Dolphin 이라는 새로운 파일관리자가 포함되었다. 예전에는 konqueror을 파일관리자로까지 확장해서 사용했는데, 지나치게 기능이 많으면서 - 즉 무거우면서 - 막상 세부적인 기능에 있어서는 불만족 스럽다라
는 불만이 많았었다. 해서 아예, 파일관리자를 분리시켜 버린거 같다. 이건 괜찮은 시도인것으로 보인다. 웹브라우저 기능 -
그것도 꽤 부실한 - 까지 포함하면서 파일관리자의 기능까지 부실한 애매모호한 konqueror를 쓰는 것보다는, Dolphin
+ firefox 조합을 쓰는게 낫지 싶다. konqueror에 비해서 가볍고, 사용하기 쉽다. 특히 마음에 드는 점은 미리보기
인터페이스가 매우 좋았졌다는것.
근데, 몇가지 문제점이 눈에 띈다.
- 한글입력이 안된다. : scim을 입력기로 사용하고 있는데, 4.0으로 업그레이드 되면서 한글입력이 안된다.
- 자잘하지만 많은 버그들 : 간혹 버벅된다든지, CPU를 갑자기 소모해버린다든지, 전역 단축키가 먹통이 된다든지 하는 문제.
일단 한글입력이 안되는 문제가 좀 크다. CJK 입력과 관련된 문제가 KDE개발 커뮤니티에 전달이 된 상태이니, 조만간
해결되겠지싶다. 아마 안정적으로 사용할려면 4.1 버전정도는 되어야 하지 않을까 싶다. 물론 나는 해오던대로 KDE만 사용할
게다. KDE 무려 beta 0.4 부터 사용해 왔었는데, 이정도 쯤이야. :::

Unix
AT&T에 의해 1960년대 말에 개발되어 지금까지 사용되고 있는 컴퓨터 운영체제이
다. 마이크로소프트의 MS-DOS, 윈도 3.1, 윈도 95/98 등이 원래는 PC용 운영체제로 개발되어 점차 윈도 NT, 윈도
2000(엔터프라이즈) 등의 서버 시스템용 운영체제로 발전하는 것과 달리, 유닉스는 메인프레임, 중형, 소형 컴퓨터 시스템용
운영체제로 사용되어 오다 최근 PC용 운영체제로 거듭나고 있다. 오랜 역사를 지닌만큼 개발 과정에서 BSD, SYSⅤ와 같은
계열로 분화되었고, SunOS, OSF/1, AIX, HP-UX, 솔라리스(Solaris), IRIX, SCOUNIX, 리눅스(Linux) 등과 같은 다양한 버전의 유닉스 운영체제들이 등장하였다.
출처 : http://www.unix.co.kr
다양한 유닉스들
- BSD(Berkeley Software Distribution) 계열 유닉스
캘리포니아 버클리대학에서 무료로 배포하기 시작한 유닉스 버전들을 일컫는다. BSD 유닉스 개발자들은 가상 메모리 지원, C shell, 작업 제어, TCP/IP 네트워킹 추가 등 여러 가지 기능을 추가해 발전시켰다. 1980년대에 발표된 4.2 BSD와 4.3 BSD는 SYSⅤ 계열의 유닉스에 많은 영향을 끼쳤고, 1993년에는 4.4 BSD가 발표된바 있다.
- 시스템Ⅴ(SYSV: System Five) 계열 유닉스
AT&T에서 초기에 개발한 유닉스 버전은 계속 개선되어 버전 7까지 이르렀고, 이후 1980년대부터는 BSD 계열
유닉스에서 선보인 갖가지 성과를 포함하여 시스템Ⅲ, 시스템Ⅴ로 발전하게 된 유닉스 버전들을 통칭하여 시스템Ⅴ(알파벳 'V'가
아닌 로마자 '5'이다)라고 부른다. 시스템Ⅴ의 후속 버전들은 '시스템Ⅴ 릴리즈4'이므로 간단히 'SVR4'로 표시한다.
1994년 이후부터는, 상용화된 유닉스 계열 운영체제 업체들의 업계 표준화 방침에 따라, 상용 유닉스는 대체로 SYSⅤ 유닉스
계열의 버전을 채택한다.
- POSIX(Portable Operating System Interface for Computer Environment) 유닉스
IEEE/ANSI의 각 위원회가 안을 제시한 개방형 운영체제에 대한 권고안을 토대로 작성한 개념적인 운영체제로, 유닉스 운영체제를 기본으로 하고 있다. 리눅스가 따르고 있는 POSIX(포식스) 1003.1은 유닉스 형태의 운영체제로, 최소의 인터페이스만을 정의하고 있다.
:::

지금까지의 기업 컴퓨팅 환경은 서비스 중심이였다. 자원에 대한 전적인 권한을 기업이 가지고 있었으며, 서비스 제공자와 서비스 사용자가 엄격히 구분되어 있었다. 이러한 환경에서 기업은 자신들이 분명히 제어할 수 있는 환경을 원하기 마련이다. 그래서 매우 강력한 몇개의 컴퓨터와 이들 컴퓨터에 최적화된 상용 운영체제와 상용 소프트웨어를 이용한 정형화된 컴퓨팅 환경을 선호했었다. 성당모델을 따르는 환경이라고 할 수 있는데, 단지 몇개의 강력한 컴퓨터와 훌륭한 메뉴얼이 제공되는 소프트웨어를 사용하는 것으로 관리의 복잡성을 줄일 수 있었기 때문이다.
그러나 플랫폼 중심의 Web2 환경으로 넘어오면서, 기존의 컴퓨팅 환경도 변화하게 된다.
기존에는 단지 몇대의 강력한 컴퓨터만을 이용해서 데이터를 다루고, 서비스를 할 수 있었으나, 데이터의 양이 극적으로 늘어나면서
수백/수천 심지어는 수만대의 컴퓨터를 이용한 서비스도 심심찮게 볼 수 있게 되었다. 여기에 서비스 제공자와 서비스 이용자가
분리되어 있던, Web1.0 시대와는 달리 MashUP서비스가 늘어나면서, 서비스 제공자와 서비스 이용자의 경계가 애매모호해 지게 되었다.
이제는 누구나 자신의 블로그 혹은 홈페이지를 통해서 맵, 온라인 경매, 온라인 서점, 개인화 검색 서비스, 동영상 서비스를 할 수 있게 되었으며, 가능한 서비스의 갯수도 점점 늘어날 것이다.
여기에서 기존의 컴퓨팅 페러다임에 대한 문제가 발생하게 된다. 일단 처리해야 하는 데이터의 양이, 컴퓨터의 처리능력을 초과해
버렸다. 아무리 강력한 컴퓨터를 사용한다고 하더라도, 단일 컴퓨터로는 입력되는 방대한 양의 처리가 불가능하게 되었다. 때문에
분산/병렬 컴퓨팅 환경을 구성해야될 필요성을 느끼게 된다. 이러한 Web2.0의 환경에서 아래와 같은 이유들 때문에 오픈소스 소프트웨어와 오픈소스 운영체제가 전략적인 요소로 자리매김 하게 될 것이다.
비용
대부분의 기계가 그렇듯이, 성능이 일정 수준이상 넘어가면 성능대비 가격 효율이 급격하게 떨어지게 된다. 10이 달성할 수 있는
최고 성능수준이라고 가정해보자. 3의 성능에서 6의 성능까지 올리는데에는 20의 자원으로 가능했다고 하면, 6에서 9로
올리는데에는 100 이상의 비용이 들어가게 된다. 구축하는데에도 엄청난 비용이 들어가지만, 유지보수 하는 것도 장난이 아니다.
시스템 하나하나가 강력하기 때문에, 하나의 시스템에서 문제가 생길경우, 전체분산시스템의 성능이 크게 떨어질 수 있기 때문이다.
거기에, 컴퓨터의 능력보다 처리해야 하는데이터의 증가속도가 더 빠르기 때문에, 계속적으로 값비싼 시스템을 추가해야 하는 부담까지
떠안게 된다. 이런 시스템은 관련 기술자를 찾는 것도 매우 어렵다는 문제점을 가진다. 분산 환경을 값비싼 소수의 컴퓨터로 구성하게 될경우, 밑빠진 독에 물붓기 식으로 비용이 증가하게 될 것이다. 이렇게 엄청난 비용을 투자해서 시스템을 갖춘다고 해도, 2년도 채 안되어서 구식 시스템이 되어버리는 문제가 생긴다.
이러한 분산환경은 강력한 몇개의 컴퓨터대신에, 적당한 성능을 가진 저렴한 다수의 컴퓨터로 구성하는게 훨씬더 유리하다. 10대의
슈퍼컴퓨터로 분산컴퓨팅 환경을 만드는 것보다 100대의 서버급컴퓨터로 만드는게 훨씬 비용이 적게 든다는 얘기가 된다. 한대
한대의 컴퓨팅 파워가 약하기 때문에, 컴퓨터 몇대에 문제가 생기더라도 전체 분산환경에 미치는 영향도 그리 크지 않다. 또한
저렴하기 때문에 쉽게 시스템을 추가할 수 있으며, 데이터의 증가에도 유연하게 대처할 수 있다. 관련 기술도 쉽게 확보할 수
있다는 잇점을 가진다. 실질적으로 거의 대부분이 분산환경이 저렴한 다수의 컴퓨터를 활용하는 방식으로 구성되고 있다.
이러한 분산환경에서 오픈소스는 진가를 발휘하게 된다. 웹 플랫폼을 위해서 500대의 컴퓨터를 사용해야 한다고 가정해보자. 이
환경을 구성하기 위해서 상용 운영체제를 사용할 것인가 ? 수백만원이 넘는 값비싼 상용 소프트웨어를 사용할 것인가 ? 과거
Web1.0 시대라면, 컴퓨터 자체가 강력하고 워낙에나 비쌌기 때문에 소프트웨어의 가격이 좀 비싸다고 해도, 큰문제가 되지
않았겠지만 수백대의 저렴한 컴퓨터에 사용하기에는 비용이나 효과면에서 너무 비효율적이다. 나라면 Linux 운영체제와 Mysql, Postgresql등의 공개소프트웨어를 이용해서 시스템을 구성할 것이다.
유연성
기존의 패러다임으로 분산환경을 구축하는데에는 비용도 문제가 되지만, 지나치게 경직되어 있다는 근본적인 문제를 가진다. 기존의 상용 운영체제와 소프트웨어들은 자신들이 제시한 환경을 고객에게 강제하는 스타일이다. Web1.0 시대라면 이게 문제가 되지 않는다. 그냥 그들이 원하는 대로 시스템을 꾸리고, 서비스를 거기에 맞게 튜닝하면 되기 때문이다.
그러나 Web2.0환경에서는 그러한 방식이 적용되지 않는다. Web2.0은 사용자에게 서비스를 제공하는 환경이 아닌, 플랫폼을 제공하는 환경으로, 다양한 서비스들과 플렛폼이 유동적으로 연결되는 일종의 EchoSystem(생태계)의 성격을 가지게 된다.
500대의 시스템으로 이루어진 분산환경을 예로들어 보겠다. 분산파일시스템, 분산연산시스템을 만든다면 응용 프로그램에서 뿐만 아니라, kernel
수준에서의 수정작업이 필요할 수 있다. 상용운영체제에서는 불가능하다. 획일화된 서비스가 아닌, 다양한 서비스가 개발되어야 하기
때문에 쉽게 수정이 되며, 분기가능한 소프트웨어가 있어야 한다. 역시 상용 소프트웨어에서는 불가능하다. 제한적으로 가능하다고
하더라도, 별도의 비용과 정치적인 문제로 많은 시간이 소비된다.
상용소프트웨어는 더 안전하고 강력하다고 반론을 제기할 수도 있을 것이다. 물론 상용 소프트웨어는 여전히 쓰일 수 있을 것이다. 그러나 Web2.0에서의 플랫폼은 애시당초 적당히 견고하고, 적당히 강력한 환경의 구성을 지향점으로 하고 있다. 따라서 소프트웨어 역시 적당히 견고하고 적당히 강력하면 된다. 굳이 비싼 비용을 들여서 매우 견고한 환경을 만들 필요는 없다. 정리하자면 적당히 견고하고, 적당히 강력하며, 매우 유연한 환경이 Web2.0 플랫폼의 지향점이다.
오픈소스 소프트웨어는 상용 소프트웨어로는 결코 얻을 수 없는 유연성을 보장한다. 상용 소프트웨어 만큼의 견고함은 아니라
하더라도, 충분한 수준의 견고함을 확보하고 있으며, 표준을 따르며, 소스코드를 직접 제어할 수도 있다. 일정 수준이상의
개발자혹은 커뮤니티를 확보하고 있다면, 상용 소프트웨어보다 훨씬 빠르게 문제점을 찾아서 해결할 수도 있다.
최근 포탈사이트와 Web2.0을 표방하는 기업들을 중심으로 오픈소스 커뮤니티를 직접적으로 지원하며, 관련 개발자를 확보하려는 이유가 여기에 있다.
반론
위의 상황은 Web2.0을 핵심전략으로 삼고 있는 포털급의 규모를 가진 회사에나 적용가능한 것 아닌가라고 반론을 제기할 수도 있을 것이다. 웹서비스, 웹플랫폼은 주변요소가 아닌 핵심요소가 되었다. MS사가 이 흐름에 대항하려고 시도했었지만, 결국은 흐름을 인정하고 방향을 선회했다. 또한 큰 규모의 회사가 움직이면, 산업역시 거기에 맞추어서 재편이 될 수 밖에 없다.
오픈소스에 관심을
우리나라의 경우 오픈소스에 대한 관심과 이해가 취약한게 사실이다. 학생들도 재미삼아서 혹은 보험용으
로 다루는 경우가 많은 것으로 알고 있다. 그러나 앞으로 상황은 바뀌게 될 것이다. 변두리에서 벗어나서 소프트웨어 산업의
핵심요소로 자리매김 하게 될 것이다. 오픈소스에 조금더 관심을 가져보기 바란다. 재미도 있을 뿐더러, 많은 도움이 될 것이다. 이 문서는 수정될 수 있습니다. 최신 문서는 Joinc Wiki에서 :::

자신을 과대 포장 하라
자신을 있는 그대로 보여줘야 한다고 말한다. 자신을 과장해서 상대방에게 보여주게 되면, 현실적이지 않은 기대감때문에 상대방을 실망시킬 수 있기 때문이라고 말한다. 물론 난 여기에 동의하지 않는다. 특히 그게 자신이 하고 있는 일과 관련되어 있다면 더욱 그렇다.
위치가 사람을 만든다는 말이 있다. 일반적으로 사람은 자기에게 주어진 만큼을 해내게 되어 있다. 대학나온 사람과 대학나오지 않은 사람이 사회에서 성공할 수 있는 차이는 기회에서 온다. 설사 대학나온 사람이 대학나오지 않은 사람 보다 덜 똑똑하다고 해도, 사회는 대학나온 사람에게 더 어려운 일을 할 수 있는 기회를 준다 이러한 사회가 옳은 사회인지 아닌지는 논외로 한다 -. 약간의 근성과 기본적인 지식만 있으면, 왠만큼 어려운일은 해내는게 인간이다. 일의 난이도가 적당한가? 어려운가? 이런건 중요하지 않다. 어려운 일, 가치있는일이 나에게 주어지는가 아닌가가 중요하다. 어려운일이 자신에게 오게 하려면 자신을 광고하고, 과대포장 해야 한다.
아무리 실력이 뛰어난들 상대방에게 어필하지 못해서 기회가 오지 못한다면, 혹은 고만고만한 기회가 온다면 그게 무슨 소용인가.
자신을 과대포장 하는 가장 좋은 방법은 오픈하는 것이다. 오픈 프로젝트에 참여할 수도 있고, 자신의 전문 분야를 위한 블로그, 위키등을 만들 수도 있다. 이러한 일을 하는 것 자체가 자신의 실력을 높여주는 행위이면서, 동시에 타인에게 자신의 가치를 알리는 좋은 방법이기도 하다.
자신이 과대포장 되어서, 자신의 능력을 뛰어넘는 일을 맡게 되었다고 ? 그럼 더 노력해서 능력을 키워서 그 일을 해내면 된다. 좋은 기회 아닌가.
주머니 속의 지식
말이 많아서 이래 저래 욕도 많이 먹긴 하지만 도올 김용옥 선생을 존경한다. 고상한 철학가들은 김용옥 선생을 저급한 저널리즘으로 무장한, 얕은 지식으로 대중의 인기에 영합한 연예인으로 비하하기도 한다. 그들이 말하는 그대로, 그 고상한 철학가들이 김용옥 선생보다 더 뛰어난 지식을 가지고 있을 수도 있다.
그러나 그들이 아무리 뛰어난 지식을 가지고 있다 한들 나에게는 아무 소용이 없는 지식이다. 그들 주머니속의 지식일 뿐이고, 그들이 가르치고자 하는 소수의 집단에게나 필요함직한 지식이다. - 형이상학적인 관점에서 보면 나와 관련이 있을지도 모르지만 현실적으로 - 나와는 아무 관계가 없다. 그러나 김용옥 선생은 주머니 속의 지식을
꺼내어서, 나에게 알려주었다. 그들이 저급하네, 어쩌네 할지 모르지만, 지극히 고리타분하고 졸려보이는 공자왈 맹자왈, 논어가
이러쿵 저러쿵 하는 철학얘기를 매우 재미있게 알려주었고, 나름 관심도 가질 수 있도록 해줬다. 철학도 재미있는 것이라는걸
알려줬으니 이렇게 고마울 데가 없다.
지식이 뛰어나야지만 상대방에게 알려줄 수 있는건 아니다. 리누즈 토발즈가 커널 0.1인가를 만들어서 공개했을 때도, 리누즈의 커널이 세계최고라서 공개한게 아니다. 그보다 훌륭한 많은 운영체제가 있었고, 많은 부분을 참고한 Minix 운영체제도 있었다. 그러나 그는 그다지 뛰어나 보이지 않는 지식을 공개했고, 지금의 리눅스가 있게 만들었다.
파이를 키우기
가끔 이런 말도 듣는다. 공개된 문서들 중 많은 것들은 힘들게 얻은 지식일 건데, 그렇게 알려주면 손해 보는거 아니냐고.
우선 손해보는거 전혀 없다. 경쟁자가 생긴다고 ? 앞에서 언급했듯이, 공개하는 자체가 자신의 가치를 올리는 것이다. 경쟁자가
100명이든 1000명이든지 간에, 공개하는 행위 자체로 - 의도한 것이든 아니든지 간에 - 다른 경쟁자보다 이미 우위에 서있게
된다.
또한 자신의 지식이 일반적인 것이든, 고급스러운 것이든지 간에 그걸 접하는 사람이 많으면 그 기술이 채택될 확률이 더 높아지게 된다. 공개하는 행위가 이를테면 자신의 분야를 광고하는 행위가 되는 것이다. 기술이 더 많은 관심을 받고 채택될 확률도 더 많아지만, 그만큼 그 분야도 발전하게 되고, 더 많은 기술자를 필요로 하게 된다. 아무리 뛰어난 기술이라도 시장이 있어야 할거 아닌가. 회사 기밀에 속할만한 내용이 아니면 일단 공개하자.
서로서로 공부도하고 글쓰기 연습도 하고, 자신의 가치도 높이고, 기회도 얻고, 시장도 키우고 (덤으로 약간이지만 돈도 벌 수 있다) 얼마나 좋은가. :::

이 문서는 수정될 수 있습니다. 최신 문서는 Joinc Wiki에서 확인하세요.
1 소개
프로그램을 작성하다 보면, 성능/통계/테스트 측정 데이들이 쏟아져나오게 된다. 예를들어 필자의 경우 최근 검색엔진관련 개발을 하고 있는데, 0.5초 이내에 검색결과가 나오도록 해야 하기 때문에, 성능측정결과를 잘 정리하는게 특히 중요하다.
검색엔진에서 단어를 입력하면, 해당 단어를 포함한 문서의 리스트를 찾아내게 될건데, 문서의 리스트의 증가에 따라서 얼마나
검색시간이 급격하게 증가하는지를 쉽게 확인할 수 있어야 한다. 그러기 위해서는 측정데이터를 그래프화 할 수 있어야 한다. 이렇게
측정데이터가 그래프화 되면 검색시간이 급격하게 증가하는 단어등도 쉽게 찾아낼 수 있으며, 여러가지 조건을 다르게 했을 때,
성능에 어떠한 변화가 있는지도 확인할 수 있다. 결과적으로 개발속도를 단축시킬 수 있게 된다.
GnuPlot은 데이터를 그래프화 하기 위한 목적으로 사용되는 툴이다. Excel과 같은 프로그램이 있긴 하지만, 지나치게 무겁고, (많은 데이터를 처리해야 할경우)매우 느리며, GnuPlot만큼 정확한 정보를 주지 못한다. 데이터가 수십만개가 넘어간다면, 처리자체가 불가능해지게 된다.
GnuPlot와 관련된 메뉴얼은 한글화 된거 까지 포함해서 이미 몇개가 있는데, 쓸데없이? 방대한 내용을 담고 있다. 여기에서는
좀더 개발자적인 입장에서, 실제 개발에서의 적용을 예를 들어가면서 활용에 필요한 부분만 설명하고자 한다.
2 gnuplot 설치
대부분 기본으로 설치되어 있을 것이다. 터미널에서 gnuplot을 입력해 보기 바란다. 만약 설치되어 있지 않다면, 각 배포판의 패키지 관리자나 배포사이트를 통해서 설치하기 바란다. 패키지 설치법은 따로 설명하지 않겠다.
3 검색엔진 개발과 GnuPlot
gnuplot의 활용설명을 위해서 nutch 성능측정을 통한 튜닝포인트 찾기를 실례로해서 차근차근 설명해 보도록 하겠다.
nutch는 lucene검색엔진을 기반으로 하고 있으며, 여기에 분산환경을 지원하기 위한 hadoop분산파일 시스템과 mapreduce프
로그래밍 엔진을 포함하고 있다. lucene은 검색엔진 자체로만 보자면 매우 훌륭한 완성된 엔진이지만, 많은 공개프로젝트의
결과물이 그렇듯이 범용성을 강조하다보니, 특수한 상황에 적용하기 위해서는 많은 튜닝이 필요하다. 특히 대용량의 문서검색을 위해서
nutch를 사용할 경우 더욱 섬세한 튜닝이 필요하다.
3.1 lucene의 성능 확인을 위한 측정데이터 수집
측정데이터는 대부분 수치 정보인데 gnuplot는 공백이나 탭으로 구분된 필드단위로 데이터를 처리한다. 또한 주석을 위해서 #을 사용할 수도 있다. 다음은 gnuplot에 사용되는 데이터의 일반적인 포맷이다.
1 290 2 310 3 270 4 121 5 168 6 765 ....
이제 lucene의 성능측정데이터를 수집해 보기로 하자. 성능 측정 데이터는 다음과 같은 방법으로 수집했다. 이미 웹문서에 대한 수집을 끝내고 색인파일까지 만들어 져 있다고 가정하겠다.
- lucene 색인 테이블로 부터 테스트에 사용할 단어 (Term)을 추출해서 파일로 저장한다. 대략 다음과 같은 내용을 가지게 될 것이다. 파일이름은 Term.dat로 했다.
AJ AJAX AK AK47 AKA AKARIN AKD AKIRA AKKO AKM AKUN AL ALBINO ALBUM ALCO ALDI ALEX ALFEN ALI ALIG ALIGN: ALL ALL=ko ALLEN ALO ....
- nutch의 테스트검색을 위해 제공된 NutchBean.java를 약간 수정해서 Term.dat로 부터 각 단어를
읽어서 검색어로 집어 넣고, 결과가 나올때까지의 시간과 검색결과의 갯수를 측정했다. 다음과 같은 결과가 나왔다.
#검색결과갯수 검색시간(msec) 형태소분석된 검색어::오리지날 검색어 16140 43 #boy::BOY 3805 7 #bt::BT 15282 4 #ba::Ba 159 1 #backgr::Backgr 0 1 #baiken::Baiken 0 1 #baltazar::Baltazar 0 0 #banlie::Banlie 0 1 #barbares6::Barbares6 0 0 #barto::Barto 0 1 #basquiat::Basquiat 0 0 #baye::Baye 0 7 #beachim::BeachIM 2350 42 #becom::Becom 0 1 #beijing::Beijing 0 1 #believeuserbar::BelieveUserBar 0 2 #bera::Bera 0 3 #bernadette::Bernadette 1064 43 #beta2::Beta2 16 5 #betra::Betra 0 1 #bigban::BigBan 0 1 #bilb::Bilb 0 0 #biology::Biology 0 1 #birthdayhasta::BirthdayHASTA 4112 140 #bitmap canvas draw::Bitmap.Canvas.Draw 15261 43 #bla::Bla 16742 8 #ble::Ble 0 1 #blocksignalson::BlockSignalsOn 0 1 #bloodspell::BloodSpell 0 0 #bluenote::BlueNote 1570 71 #bm::Bm 0 1 #bohemia::Bohemia
- gnuplot를 이용해서 제대로된 그래프를 그리기 위해서는 x혹은 y축 중 한쪽이 정렬되어 있어야 한다. 필자는 검색결과갯수를 x축으로하고 정렬하기로 하고, 간단한 정렬 프록그램 하나 만들었다.
#include <map> #include <string> #include <stdio.h> #include <string>
using namespace std; struct Tinfo { int time; char comment[1024]; }; int main(int argc, char **argv) { FILE *fp; char buf[1024]; int a, b; Tinfo dinfo; multimap <int, Tinfo> sdata; multimap <int, Tinfo>::iterator mi; char *sp; fp = fopen(argv[1], "r"); if (fp == NULL) { return 1; } while(fgets(buf, 1024, fp)) { sscanf(buf, "%d %d", &a, &dinfo.time, dinfo.comment); sp = strstr(buf,"#"); sprintf(dinfo.comment, "%s", sp); sdata.insert(pair<int, Tinfo>(a, dinfo)); }
mi = sdata.begin(); while(mi != sdata.end()) { printf("%d %d %s", mi->first, mi->second.time, mi->second.comment); *mi++; } }
- 프로그램을 실행시킨 결과 다음과 같이 정렬된 데이터를 가진 파일을 얻어냈다. 파일명은 TestOne.dat 로 저장했다.
0 2 #achille::ACHILLE 0 1 #aepfe::AEPFE 0 1 #alsce::ALSCE 0 1 #amsposx2::AMSPosX2 0 1 #argazer::ARGAZER 0 1 #actionsc::ActionSc 0 2 #act퇴원::Act퇴원 0 0 #adolescencegundam::AdolescenceGundam 0 1 #afflu::Afflu 0 1 #ageh::Ageh ... 27 34 #vola::vola 27 1 #미남급::미남급 27 39 #바카니발::바카니발 27 4 #비버::비버 27 1 #역질::역질 28 10 #alsw::alsw 28 26 #ey2::ey2 28 6 #litiga::litiga ... 746253 657 #www fire::www.fire 760181 387 #http 3a::http%3A% 767602 232 #기분::기분 768382 613 #www hatena ne::www.hatena.ne 788605 1206 #www beach::www.beach 799505 990 #a 2f 2f202::A%2F%2F202 799592 451 #a ara::a:\ara 799931 608 #a ac kr::a.ac.kr 801479 2611 #an a::an.a 829650 967 #www copyright o::www.copyright.o 843166 2114 #from b::From.B 848638 2312 #ed o a::ED.O.A 881953 269 #필요::필요 901553 1953 #e 9::e=9 948204 1338 #esize 4::eSize*4 969003 528 #x loliweb com::x.loliweb.com 972308 4709 #t 0::t\0 979552 1689 #deptno 3::deptno=3
3.2 측정데이터로 부터 간단한 이미지 얻어내기
gnuplot는 쉘과
비슷한 프롬프트 입력방식이다. 프롬프트에서 명령을 내려서 x축 데이터, y축 데이터를 설정하고, 읽어들일 데이터파일을 설정하는
식으로 해서 그래프를 그린다. 그러나 이렇게 하면 꽤나 작업하기가 귀찮으므로, 보통은 파일을 만들어서 읽어들이는 방식으로
그래프를 그린다. 위의 데이터를 이용해서 그래프를 그리기 위해서 다음과 같은 gnuplot 스크립트 파일을 만들었다. 파일이름은
test1.dem으로 했다.
set ylabel "millisec" set xlabel "searchnum" plot "testone.dat" using 1:2 t "Search Test" with l 8 pause -1 "Hit return to continue"
- set ylabel : y축에 사용될 라벨
- set xlabel : x축에 사용될 라벨
- plot .... : 실제 그래프를 그리는 영역이다. testone.dat파일을 열어서 1번째 필드의 값을 x축으로 2번째 필드의 값을 y축으로 한다. title t는 Search Test라고 하고 선은 line l으로 색은 미리정의되어 있는 8번색으로 그려라고 명령한다. 색은 1부터 10까지 선택해서 사용할 수 있다.
- pause -1 : 입력이 있을 때까지 그래프를 계속 보여준다.
스크립트파일을 작성했다면 다음과 같이 간단하게 실행할 수 있다.
# gnuplot test1.dem
다음은 결과 그래프다.
다음의 명령을 이용하면 그래프를 좀더 편하게 볼 수 있다.
- g : 그래프 영역에 격자(grid)를 표시한다.
- 마우스 드래그 : 마우스 왼버튼을 누르고 범위를 지정하면, 해당 영역을 자세히 볼 수 있다.
- p : 이전 그래프 상태로 되돌아간다.
3.2.1 측정된 데이터로 부터 튜닝 포인트 찾아내기
검색된 문서의 갯수가 많을 수록 시간이 늘어나는 방향의 그래프를 보여주긴 하지만, 중간 중간 심하게 퇴는 부분이 눈에 띈다.
무언가 검색엔진에 문제가 있음을 암시해주고 있다. 그래프의 튀는 점과 testone.dat의 데이터를 확인해본결과 2개 이상의
쿼리가 주어졌을 때 시간이 급격하게 늘어나고 있음을 확인할 수 있었다.
829650 967 #www copyright o::www.copyright.o 843166 2114 #from b::From.B 848638 2312 #ed o a::ED.O.A 881953 269 #필요::필요 901553 1953 #e 9::e=9 948204 1338 #esize 4::eSize*4
www.copyright.o 와 같은 경우 하나의 검색어로 입력이 되었지만 형태소분석을 거치면서 3개의 단어로 분리가 되었다. 때문에 3번의 쿼리가 발생하고 시간지연이 생겼다.
그럼 단일쿼리가 주어질 경우 어떤 그래프를 보여줄지가 궁금해 졌다. 그래서 testone.dat에서 단일 쿼리 결과만 가져오기 위한 perl 프로그램을 하나 만들었다.
#!/usr/bin/perl open ($handle, "$ARGV[0]") or die "File Not Found $ARGV[0]";
while($line = <$handle>) { @list = split(" ",$line); $length = @list; if ($length == 3) { print $line; } }
공백문자로 분리한다음 배열의 갯수가 3인것만 출력하도록 하는 식으로 단일 쿼리 결과만을 추출해 냈다. 파일의 이름은 testtwo.dat로 했다. 다음은 단일쿼리 결과에 대한 그래프 화면이다.
3.2.2 2개의 데이터 비교하기
이런식으로 해서 많은 수의 측정자료가 만들어 졌다. 문제는 이들이 각각의 단일 파일로 존재한다는 것으로 정확한 측정을 위해서 각
데이터를 비교할 때 어려움이 생긴다. 일단 위의 두개의 측정 그래프를 동시에 보고자 할 경우 한눈에 들어오지 않을 것이다. 이
경우는 y축의 스케일이 다르기 때문으로 gnuplot의 명령을 통해서 해결할 수 있지만. 그렇다고 해도, 2개의 그래프를 보는건
아무래도 직관적이지 못하다.
gnuplot는 여러개의 데이터를 하나의 그래프에 쉽게 나타낼 수 있다. 다음은 testone.dat와 testtwo.dat를 하나의 그래프에 나타내게끔 재작성한 gnuplost 스크립트 파일이다.
set ylabel "millisec" set xlabel "searchnum" plot "testtwo.dat" using 1:2 t "Search Test 1" with l 7, "Step100.dat" using 1:2 t "Search Test 2" with l 4
pause -1 "Hit return to continue"
다음은 결과 그래프다. 그냥 ,를 이용해서 쭈욱 나열하면 된다. 그래프의 구분을 쉽게 하기 위해서 title과 색을 달리 했다.
한눈에 쏙들어온다. pharse 쿼리에 대해서 검색시간이 비정상적으로 증가하고
있으므로, 튜닝포인트를 pharse 쿼리 처리하는 쪽에 맞추어야 한다는 것을 알 수 있다. 실제로 제대로 성능이 나오게 하려면,
상당히 많은 부분을 수정해야 하며, 이러한 성능측정 작업을 반복해서 튜닝포인트의 범위를 좁혀나가야 한다. 여기에 대한 내용은
이문서의 범위를 벗어나므로 언급하지 않도록 하겠다.
이걸 Execl 로 그래프를 그렸다고 생각해보라. 시간이 걸리는건 둘째치고 아마 처리자체를 못할 것이다.
:::

w3m에 대해서
w3m은 lynx와 같은 텍스트 브라우저 이지만 lynx보다는 훨씬 세련되었다. lynx는 매우 가볍고 빠르며 필요한 텍스트 정보만을 보여주므로 컨텐츠에 집중할 수 있게 도와주기는 하지만 사이트가 약간만 복잡해지면 브라우징 하기가 매우 어려워 진다는 단점을 가지게 된다. 프레임이 사용되거나 조금 복잡한 테이블이 사용되면 어디가 어디인지 도통 감을 잡을 수 없다.
정보에 대한 가독성을 높이기 위해서는 필요한 텍스트만 얻어내는 것도 중요하지만 시각적으로 보기 쉽게 정보를 보여줄수 있어야 하며 사용자 친화적인 인터페이스를 제공할 수 있어야 한다.. lynx는 시각적인 면과 편리한 인터페이스를 충족시키지 못한다.
w3m은 이를테면 필요한 정보로의 집중 빠른 정보접근 시각적인면과 편리한 인터페이스를 모두 충족시킬 수 있는 매우 훌륭한 텍스트 기반 브라우저이다. 특히 정보수집을 목적으로 웹서핑을 하길 원한다면 w3m보다 훌륭한 브라우저가 없다고 감히 주장한다. 개인적으로도 컨텐츠 관리를 위한 웹서핑은 w3m을 사용한다. 특히 textarea 에서 vim을 불러와서 문서편집이 가능하다는게 정말 맘에 든다.
설치하기
왠만한 Linux 배포판은 기본적으로 포함하고 있다. 설치역시 배포판에서 제공하는 패키지 관리 프로그램을 이용하면 간단하게 설치할 수 있다. 이 문서는 Ubuntu를 기준으로 작성되었다.
실행
xterm, konsole, hanterm 같은 터미널 에뮬레이터에서 w3m을 입력하면 된다.
w3m의 특징
- 테이블 렌더링 : 위의 화면을 보면 테이블을 시각적으로 매우 깔끔하게 정리해서 보여주고 있음을 알 수 있다. 자고로 보기좋은 떡이 먹기에도 좋은 법이다.
- 프레임 렌더링 : 놀랍게도 프레임역시 화면에 표시해준다. lynx를 통해서 프레임을 사용하는 웹페이지를 브라우징해본 적이 있다면 이게 얼마나 편리한 기능인지 동감할 것이다.
- 마우스 지원 : w3m은 화면제어를 위해 ncurses를 사용하고 있으며 마우스를 지원한다. 마우스를 통해서 스크롤과 링크를 통한 이동, 입력선택 등이 가능하다.
- textarea에서의 외부편집기 지원 : w3m을 사용하는 가장 큰 이유중 하나다. Firefox나 IE의 빈약한 편집기를 통해서 textarea를 입력해본적이 있다면 그게 얼마나 짜증나는 일인지 잘 알것이다. 때문에 많은 경우 별도의 에디터 프로그램을 띄워서 내용을 작성하고 긁어 붙이는 편법을 동원한다. w3m에서는 vim와 같은 외부 프로그램을 textarea입력시 사용가능하다. 특히 wiki에서와 같이 많은 내용을 편집할 때 빛나는 기능이다.
- SSL 지원 : SSL을 기본 지원한다.
- UTF-8 지원
- vi 키지원 : vim를 주로 사용하는 유저에게는 희소식이다. 화면의 이동/찾기등의 기능이용을 vi키로 할 수 있다. 다음은 화면이동에 사용되는 대표적인 키들이다.
| J |
아래 |
K |
위 |
| H |
오른쪽으로 |
L |
왼쪽으로 |
| shift+^ |
줄의 처음 |
shift+$ |
줄의 마지막 |
- Tab 의 지원 : 모질라를 이용해 봤다면 Tab기능이 상당히 편리하다는데 동의 할 것이다. 여러개의 창으로 인하여 데스크탑이 지저분해지지 않으면서 간단하게 사이트사이를 이동할 수 있기 때문이다. w3m역시 Tab을 지원한다. 역시 너무 편리한 기능이다.
Tab같의 이동은 단축키와 마우스 모두를 통해서 가능하다.
joinc과 w3m은 찰떡궁함
joinc는 몇몇 매우 특별한 경우를 제외하고는 자바스크립트를 사용하지 않으며 순수하게 HTML만 을 사용해서 작성되었다. 프레임을 사용하지도 않았으며, 브라우저 독립적인 HTML테그역시 사용하지 않았다. 그러므로 익스플로어, 넷스케이프, 모질라, lynx, w3m모든 브라우저로 브라우징이 가능하며 특히 w3m을 이용하면 매우 편하게 브라우징 가능하다. * textarea는 다음과 같이 표시된다.
* textarea에서 엔터키(혹은 마우스 클릭)를 누르면 아래와 같이 vi화면이 뜬다.
w3m 사용 메뉴얼
- 도움말을 보고 싶다면 어디에서든지 '?'를 입력하면 된다.
- SPC는 space바, C는 Ctrl을 나타낸다. 예를 들어 C-v는 Ctrl+v가 된다.
- ESC는 escape키다. ESC-v는 escape키를 누른뒤 v를 누르라는 뜻이다.
페이지/커서 이동 관련 단축키
| SPC,+,C-v |
다음 페이지로 이동 |
| ESC-v |
이전 페이지로 이동 |
| l |
커서를 오른쪽으로 이동 |
| h |
커서를 왼쪽으로 이동 |
| j |
커서를 아래로 이동 |
| k |
커서를 위로 이동 |
| K |
한줄씩 위로 스크롤 |
| J |
한줄씩 아래로 스크롤 |
| < |
화면을 왼쪽으로 |
| > |
화면을 오른쪽으로 |
| , |
화면을 한 열씩 왼쪽으로 |
| . |
화면을 한 열씩 오른쪽으로 |
| ^ |
줄의 처음으로 |
| $ |
줄의 마지막으로 |
| G |
지정한 줄번호로 이동 |
| 숫자+G |
숫자 라인으로 이동 |
| w |
다음 단어로 이동 |
| W |
이전 단어로 이동 |
| [ |
첫번째 링크로 |
| ] |
마지막 링크로 |
| DOWN,C-n,TAB |
다음 링크로 |
| UP,C-p,C-u |
이전 링크로 |
| ESC-m |
전체 링크 목록 |
하이퍼링크 관련
| C-f,C-j,C-m,RIGHT |
링크페이지로 이동 |
| d, ESC-C-j,ESC-C-m |
링크를 파일로 저장 |
| I |
이미지 보기 |
| ESC-I |
이미지를 파일로 저장 |
| c |
현재 URL 출력 |
| u |
링크 URL출력 |
| i |
이미지 URL출력 |
| = |
현재 페이지 정보 |
| C-g |
라인번호 출력 |
| L |
모든 링크와 이미지의 목록 출력 |
파일 관련
| U,g |
URL입력창 |
| V |
지역파일 읽어들이기 |
| @ |
쉘명령 실행 |
| # |
쉘명령 실행 |
| | |
문서를 파이프로 보냄 |
버퍼 관련
| LEFT,B,C-b |
이전 버퍼로 이동 |
| s |
버퍼 선택 메뉴 |
| \ |
HTML 소스 출력 |
| ESC-s |
HTML 소스를 파일로 저장 |
| S,p |
렌더링된 페이지를 파일로 저장 |
| E |
현재 문서 편집 |
| ESC-e |
렌더링된 현재 문서 편집 |
| R,C-r |
페이지를 다시 읽기 |
| C-l,C-w |
페이지를 다시 그리기 |
Tab 관련
| T |
새로운 탭 생성 |
| C-q |
현재 탭 닫기 |
| } |
다음 탭으로 |
| { |
이전 탭으로 |
| ESC-t |
탭선택 메뉴 |
북마크 관련
| ESC-b,v |
북마크 보기 |
| a,ESC-a |
현재 페이지를 북마크에 등록 |
찾기 관련
마킹 관련
| C-@ |
mark생성/삭제 |
| ESC-n,N |
다음 마크로 이동 |
| ESC-p,P |
이전 마크로 이동 |
기타등등
| ?,H |
도움말 |
| o |
옵션 설정화면 |
| r |
w3m의 버젼정보 |
| C-k |
cookie 리스트 |
| C-h |
URL 히스토리 |
| m |
마우스 활성화/비활성화 |
| ESC-c |
w3m 명령어 실행 |
| Esc-o |
옵션설정 |
| C-z |
페이지 로딩 중지 |
| q |
w3m 끝내기 |
| Q |
w3m 끝내기(묻지않고) | :::

최근 오픈소스 지원 동향
최근 들어서, 일반기업들이 현설직인방법을 이용해서 오픈소스를 지원하기 시작하는 군요. 예전에도 오픈소스 지원을 하네 마네 하는 말들이 있긴 했었지만 실질적인 지원은 거의 전무했었죠.
대략 google이
한국시장에 뛰어든다고 한 시점을 기준으로 분위기가 많이 바뀐거 같습니다. 구글은 많은 오픈소스커뮤니티를 지원하고 있고, 직접
오픈소스 프로젝트에 참여하고 있기도 하죠. 구글이 아니더라도 그 이전에 국내시장에 진출한 많은 외국계 회사들이 직/간접적으로
오픈소스 프로젝트에 참여하고 있었습니다. Sun, Oracle, HP, Intel, IBM 등등 쟁쟁한 기업들이죠.
그런데 유독 구글이 입성하고 나서 국내 기업들이 오픈소스추세에 발맞추는 이유는 역시
구글이 국내 포털과 직접적인 경쟁관계에 놓여있기 때문일겁니다. 기존의 기업들은 포탈과는 경쟁관계가 아닌 협력관계였던 것과는
차이가 있죠. 이제 OpenAPI니, 메쉬업이니, 롱테일이니 하는 것들도 일상적인 용어가 되어버렸습니다.
이젠 풀타임으로 오픈소스를 지원하는 경우도 찾아볼 수 있습니다. 이중 다음이 가장 적극적인 행보를 보이는 거 같습니다.
얻을 수 있는 이득에 대해서 생각해보자면,
자사에 우호적인 개발자 그룹을 만들 수 있다.
가 첫번째 이유이면서 가장큰 이유가 될거 같습니다.
굳이 우호적인 개발자 그룹을 만들 필요가 있을까? 라는 생각이 들기도 할겁니다. 실제로 그동안 인터넷 서비스를 하는데 있어서 개발자의 의견은 사실상 무시되어 왔습니다. 일반 사용자의 입장만이 중요시 되었고, 이들을 위한 창구만이 열려있었습니다. 인터넷 서비스의 특성상 일반사용자라고 하더라도 IT관련 지식을 가진 경우가 많았었지만, 표면적으로는 개발자의 의견은 신경을 쓰지 않았습니다. 개발자 역시 이를 당연하게 생각해 왔었구요. 소수라고 생각되는 개발자가 마케팅에 직접적인 영향을 끼치기는 힘들 것이라는 생각이 주요한 이유일 거라고 생각이 됩니다.
그러던 것이 갑자기 분위기가 반전되었습니다. 그 전에도 개발자와 소통하려는 흐름이 조금씩 감지되긴 했었는데, 구글의 입성으로 갑자기 수면위로 올라왔던 거라고 볼 수 있을 겁니다.
이러한 흐름이 생기게 된 이유를 생각해보았습니다.
가장 결정적인 이유는 프로그래밍 환경이 매우 쉬워졌다는데 있을 겁니다. 이는 프로그래밍 언어를 익히는게 쉬워졌다는걸 의미하는건 아닙니다. 매우 간단하게 자신이 원하는 서비스를 만들 수 있는 도구가 제공되었다라는 측면에서 보는게 옳을 겁니다.
아마존에서 제공하는 Open API를 이용하면, 별다른 노력없이 자신의 웹사이트에 아마존 분점을 만들 수 있습니다. 구글이 제공하는 API를 이용하면 자신만의 구글맵, 캘린더, 검색엔진, RSS리더기를 손쉽게 구현할 수 있습니다. HTML에 대한 기본지식만 있다면, 스크립트를 가져다 붙이는 정도로 끝입니다.
예전에는 소비자와 개발자가 분리되어 있던게, 이제 소비자 == 개발자로 만들어
버린겁니다. 예전에는? 물론 예전에도 IT기업들도 자신들에게 우호적인 개발자 그룹을 만들려고 노력을 했습니다만.. 개발자 그룹일
뿐이였죠. 잠재적인 소비자라고 볼 수도있겠지만, 직접적인 소비자형태의 효과는 가져다 주질 못했습니다. 지금은 개발자가 직접적인
소비자의 역할을 할 뿐만 아니라, 마케터로써의 첨병역할까지 해내고 있죠.
이러한 정책으로 가장 큰 이익을 본게 구글이겠고, 구글의 서비스 중에서도 가장크게 성공을 거둔게 Adsense입니다. - Adsense도 광고집행 API입니다. - 예전에는 상당한 파워유저나 회사차원에서나 가능했던게 컴맹수준만 벗어나면 누구나 자신의 사이트에 광고를 집행할 수 있게 되어버렸습니다.
구글은 한국에서 절대 성공할 수 없다. 구글의 시장점유율을 봐라 바닥이지 않느냐
라고 하고 있지만, 몇년전만 해도 구글이 있는지도 모르는 사람이 대다수를 차지했습니다. 지금은? (적어도)모르는 사람이
없습니다. 그도 그럴것이 한블로그 건너 하나 꼴로 구글 애드센스가 붙어 있으니 말입니다. 마케팅 차원에서 이름을 알고 있느냐
그렇지 않느냐, 회사의 서비스를 하나라도 받고 있느냐 그렇지 않느냐가 얼마나 중요한지는 말씀드릴 필요도 없을 겁니다.
이들은 미래에 자신의 사이트에 구글 검색엔진을 붙이고, 구글 맵을 서비스하고, 구글 RSS리더기를붙일 확률이 대단히 높은 개발자겸 소비자겸 마케터가 된거죠.
결론은 다음에 서버호스팅 지원을 요청하다
입니다. 내용과 결론이 많이 차이가 있군요!? 원래 이래 저래 잡생각이 많아서요. 어쨋든 그러그러 해서 제가 관리중인 사이트들에
대해서 서버호스팅 지원을 요청했습니다. 개인이 관리하면, 회선/비용/복구/백업 등 신경써야될게 너무 많아서 말이죠.
.. 사이트가 오픈소스 성격에 맞느냐 그렇지 않느냐라는 문제가 있긴 하겠지만, 어쨋든 소스코드도 많이 포함되어 있으니-단순한 이유군요- 좋은 소식이 있지 않을까 기대해 봅니다.
:::

|