새 삶 모 만 싶

dWkorea |  2010. 7. 15. | 태그:  interview | 댓글(0)  |  방문(472)

이만용 | 오픈소스놀리지 대표 겸 CTO 
yong@os-k.co.kr 

이만용

근황에 대해 간단히 소개해 주세요.
2005년 오픈소스놀리지(Open Source Knowledge, 이하 OSK)라는 회사를 설립했고, 이제 1년 반 정도 됐습니다. 전 직장(리눅스 코리아)을 떠나면서 몇 가지 고민을 했습니다. 스스로에게도 도전 가치가 있어야 하고 다른 사람에게도 도움이 되며 사업적 가능성도 있는 일을 하고 싶었거든요. 이제는 OSK를 통해 오픈소스라는 넓은 들에서 다양한 수확을 거둬보려 합니다. OSK는 개발 작업의 약 99%를 오픈소스 프로그래밍 언어인 파이썬으로 진행하고 있는데 2006년에 좋은 성과를 많이 얻었고 이를 발판으로 2007년은 도약의 해로 삼을 계획입니다.

 
오픈소스라는 말이 매체의 유행어가 되기 전부터 이 세계의 역사를 지켜보셨죠. 지금까지의 오픈소스 발전사를 어떻게 정리해 볼 수 있을까요. 
오픈소스는 전 세계적인 흐름이 됐습니다. 역사적으로 볼 때 IT 산업에 많은 부가 축적되던 시기가 있었습니다. 그런데 정작 기술은 큰 발전이 없었죠. 확립된 기술 위에 부만 쌓인 셈입니다. 그리고 한두 가지 기술이 시장에서 지배적인 위치에 올라서면서 개발자들에게는 재미가 없어지고 다양성도 충족되지 못했습니다. 학계 역시 산학의 균형이 흔들리면서 피해를 입죠. 이론적으로 새로운 것을 창안하기가 어려워졌습니다.
하지만 발전에 대한 욕구는 계속 있어 왔고 인터넷 출현이 그 계기가 됐습니다. 거기에 더해 리눅스로 대표되는 오픈소스가 기폭제 구실을 한 거죠. 리눅스는 지금은 수많은 오픈소스 중 하나이지만 초창기에는 아파치를 비롯한 다른 오픈소스 소프트웨어들에 큰 혜택을 주었습니다. 그 이후 지금까지 오픈소스 세계는 양적 팽창을 계속해 오고 있죠.

그러면, 앞으로 오픈소스 세계에 어떤 변화가 필요할까요.
현 시점은 또 다른 발전을 위해 다시 응축이 필요한 때라고 생각합니다. 또 공개한다고 전부 잘 되는 것은 아니라는 점에 주의해야 합니다. 가까운 예로 똑같이 소스가 공개됐지만 솔라리스는 리눅스에 비해 상대적으로 관심을 얻지 못하고 있습니다. 과거 넷스케이프의 경우도 모질라 프로젝트로 소스를 공개했지만 지지부진하다 파이어폭스가 나오면서 상황이 달라졌죠. 단순한 공개를 넘어 생명력을 불어넣어야 합니다. 또한 그 과정에서 열정적인 개인이나 작은 그룹의 돌파력이 엄청난 변화를 이끌어 냈음을 주목해야 합니다.

오픈소스 세계에서 주목할 만한 경향은 어떤 것들이 있을까요. 
얼마 전까지 하급 기술로 취급됐었던 웹 기술의 변화가 눈에 띕니다. 뛰어난 웹 프레임워크들이 등장한 덕분에 코드 조각을 짜깁기 하는 게 아니라 일관되고 체계적인 웹 애플리케이션을 만들고 있다는 느낌이 듭니다.
앞으로의 변화에 대해서는 구체적으로 감이 오는 것은 없고 찾는 중입니다. 웹 2.0 바람이 한동안 계속 불겠지만 좀더 신선한 발전이 필요할 것 같습니다. 아키텍처적 혁신이나 이론적 돌파 같은 것들이요.

닫힌 회사에 오픈소스를 권하는 것이 쉽지 않을 것 같습니다.
MS 윈도 NT가 처음 등장했을 때 당장이라도 유닉스 시대가 끝날 것 같은 분위기였지만 이 두 가지가 시장에서 비슷해지기까지 긴 시간이 걸렸습니다. 오픈소스 역시 마찬가지였지만 변화가 꾸준히 일어나고 있습니다. 업계의 큰 고민은 기술을 선택하고 투자해 3~4년 이상 쓸 수 있느냐는 것인데 오픈소스 솔루션들이 많이 안정됐고 앞으로도 발전 가능성이 크기 때문에 그러한 고민을 해결하는 데 쓰일 수 있습니다.
오픈소스로 프로젝트를 진행할 때는 상대방의 마음을 여는 것이 중요합니다. 성실하고 정직한 대화로 신뢰를 쌓고 노력을 보여주어야 프로젝트 도중 생기는 위기 발생 가능성을 낮출 수 있습니다.

1인 다역을 하시는 걸로 아는데 어떻게 조율을 하시나요.
예. 1인 다역을 하고 있죠. (대표 이사를 맡고 있지만) 개발은 계속 하고 있습니다. 좋아하기 때문이죠. 물론 개발에 쏟는 절대적인 시간은 전에 비해 줄어들었습니다. 요즘은 주로 핵심 기능을 짠다거나 하는 일을 합니다. 고참 개발자로서 제가 해야 할 역할이 그런 것이라고 생각합니다. 한편으로는 개발을 계속 하면서 다른 한편으로는 직원들에게 새로운 것을 제시하고 가르치고 탐구하게 만드는 것이죠.

개발자들이 줄어든다는 이야기를 심심치 않게 듣습니다. 개발자에게 보람 또는 적절한 보상이 없는 현 상황을 반영하는 게 아닐까요.
개발자에게 자기만족 또는 보상이 없다거나 개발자들이 단명한다는 문제 제기는 어제 오늘의 일은 아니고 다른 분야도 비슷합니다만 어느 한 사람이 간단히 해결할 수 있는 문제는 아닙니다. 그래서 요즘에는 스스로 역할 모델이 되어야겠다는 생각을 합니다. 제가 잘 돼서 잘 사는 모습을 보여주고 싶어요. 이전 세대에는 관리직 아니면 은퇴였지만 우리 세대에서 다른 역할 모델을 보여주고 다음 세대에 도움이 되는 활동을 해야 할 필요를 느낍니다. 단 성공이 돈을 많이 버는 것을 말하는 것은 아닙니다. 돈과 성공이 항상 일치하지는 않죠. 같이 일하는 멤버들의 즐거운 얼굴빛에 더 가치를 두고 싶습니다.

요즘 개발자들에게 코드를 짜는 것 못지않게 어려운 문제가 의사소통이라고 합니다. 개발자들이 이 문제를 어떻게 풀어야 할까요.
“난 개발만 할래”하는 태도는 도움이 되지 않습니다. 고급 개발자들을 보면 개발만 하지 않죠. 동료들, 고객들과 많은 대화를 나누는 것을 볼 수 있습니다. 대화 없이 개발되는 소프트웨어는 결국 많은 문제를 일으킵니다. 개발자들에게 대화 능력 같은 사회적 기술은 아주 중요합니다. 외골수 같은 태도는 서로에게 상처만 남길 뿐이죠. 사실 이와 같은 문화는 이전 세대에도 충분치 않았습니다. 어렵겠지만 이제부터 만들어 가야 할 문화죠.

리눅스 세미나나 파이썬 세미나, 최근의 프레임워크 2.1 세미나 등 사람을 키우는 데 관심이 많으시죠. 2007년에는 이와 관련해 어떤 계획이 있으신가요.
저는 '전도사'라는 표현은 좋아하지 않습니다. 그냥 좋아서 하는 일이기 때문입니다. 앞에서도 말했지만 일단 스스로가 잘 되어 모델이 되고 싶습니다. 그렇게 되기 위해 좋은 결과를 자꾸 만들어내야겠죠.
2007년에는 지난해 열린 대안언어축제나 프레임워크 세미나 같은 커뮤니티에서 여는 세미나를 도우려고 합니다. 큰 세미나보다는 작은 세미나를 자주 열어 씨를 많이 뿌리고 싶어요. 개발자 한 명에게 비용을 지원해 주고 파이썬 컨퍼런스에 같이 데려가는 깜짝 이벤트(?)도 마련해 보려고 합니다. 그 외에도 비슷한 생각을 하는 사람들끼리 후배 개발자들을 도울 수 있는 힘을 모아 보는 것과 개인적으로는 한동안 하지 않았던 글쓰기를 다시 시작해 보는 것을 구상하고 있습니다.

앞으로 회사에 대해 어떤 구상이 있으시나요.
오픈소스로 할 수 있는 일들이 다양해졌기 때문에 이것저것 다 하기보다는 재미있고 잘 할 수 있는 한두 가지 분야에 집중하려 합니다. 특히 다른 기술로 실패했거나 구현하기 힘든 분야에서 파이썬을 이용해 좋은 결과를 내서 오픈소스에 대한 신뢰를 쌓아나가고 싶습니다.
회사가 반드시 커져야 한다거나 대박이 나야 한다고 생각하지는 않습니다. 책임의식 있고 자발적이고 민첩한 작은 조직으로 구성, 운영되는 회사를 꾸리고 싶습니다. 5명이 100명 몫을 하는 그런 조직 말이죠. 한 회사 안에서 그렇게 할 수도 있을 테고 또 다른 창업을 할 수도 있으리라 생각합니다. 구글의 20% 프로젝트가 그 선례가 될 수 있겠네요. 성장이나 성공은 차분히 기다리려 합니다. 단 신뢰할 수 있는 성공이어야 합니다.
OSK는 그 출발점입니다. 2006년에 좋은 결과를 냈고 2007년에도 순항하리라 기대합니다.



[이만용 소개] 국내 리눅스 초창기에 많은 사랑을 받은 알짜 리눅스 배포판을 개발했고, 리눅스코리아 CTO를 역임했으며 현재 오픈소스놀리지 대표 및 CTO를 맡고 있습니다. 리눅스 관련 서적들을 집필 및 번역했고 리눅스와 파이썬을 사용해 KT/SK/하나로/두루넷 등 대형 서비스 솔루션을 개발했습니다.
 

NEXT> 이만용님의 인터뷰 대상자 추천
서영진(미지리서치) 
추천 이유: 그동안 미지에서 보여주었던 뛰어난 제품 품질을 높이 살 뿐만 아니라 명석함, 끈기 등 개발자라면 가져야 할 기본기를 갖춘 몇 안 되는 사람이라고 확신합니다.



출처 -  https://www.ibm.com/developerworks/mydeveloperworks/blogs/9e635b49-09e9-4c23-8999-a4d461aeace2/entry/10?lang=ko
Posted by linuxism
,

자바

TAB 또는 End

쿼우팅 같이 자동으로 생성되는 특수문자를 패스하는 기능

 

ctrl + M

최대화

 

ctrl + alt + down()

바로 윗줄 문장 끝에서 실행하면 바로 아랫줄에 복사 됨

 

Ctrl + 1 : 빠른 교정 

문맥에 맞는 소스코드의 교정을 도와준다. 예를 들어 인터페이스를 구현하는 클래스에서 인터페이스에서 선언된 메소드를 구현하고 있지 않을 때, 빨간색 에러가 표시되는데 구현 클래스 명에서 이 단축키를 적용하면 인터페이스에 선언된 메소드의 원형이 구현 클래스에 추가된다.



Ctrl + Shift + O : import!!
문 자동 생성

자동으로 import!!문을 추가해 준다. 그것도 패키지 유형의 분류에 따라. 예를 들어 java.net.URL 클래스를 사용하고자 어딘가에서 URL url = new URL("http://..."); 이런식으로 작성했을 경우, import!!문을 통해 URL이라는 클래스가 인식되지 않기 때문에 에러가 표시되지만 이 단축키를 적용하게 되면 자동으로 문맥에 맞는 import!!문이 삽입된다. 만약 동일한 이름의 클래스가 여러 개 있을 경우 적절한 패키지를 선택할 수 있는 대화상자가 나타난다.


Ctrl + Space bar : Content Assist

따로 설명이 필요 없을 듯.


Alt + Shift + R :
이름변경(클래스, 패키지, 변수, 메소드 등등...)

나는 변수명이나 클래스명, 패키지명, 메소드명 등을 상당히 자주 바꾸는 타입이다. 문맥에 맞지 않거나 조금 의미가 약한 경우 여지없이 이 단축키를 눌러댄다. 거의 Content Assist 만큼이나 자주 쓰는 단축키. 자동으로 참조 정보까지 변경해 주기 때문에 너무 편리하다. ^^


Alt + Shift + V :
이동(클래스, 인터페이스 등..)

역시나 이름변경 단축키와 함께 자주 사용되는 단축키이다. 해당 자원을 원하는 곳으로 이동할 수 있게 해주며, 역시나 자동으로 참조 정보까지 변경해 준다.


Ctrl + Page Up / Ctrl + Page Down :
/우 창 이동

코드 편집 창에 여러개의 창이 띄워져 있을 경우, 각 창 사이를 이 단축키로 왔다리 갔다리 할 수 있다.


F3 :
선언 위치로 이동

이 단축키를 눌러 변수의 경우에는 변수가 선언된 위치로, 메소드의 경우에는 메소드의 본문이 있는 곳으로 이동할 수 있다.


Alt +
/ : 줄 위치 바꿈

문장의 위/아래 위치를 바꾼다. 즉 한 라인을 위로 올리고 싶을 경우, Alt + ↑를 눌러 이동시킬 수 있다.


Ctrl + D :
한줄 삭제

현재 커서가 위치한 라인 전체를 삭제한다.


Ctrl + Shift + Delete :
현재 위치에서 라인 끝까지 삭제

현재 커서가 위치한 곳에서부터 그 라인의 마지막까지의 내용을 삭제한다.


Ctrl + J : Incremental Find

이 단축키를 누르게 되면, 이클립스 창의 하단 상태 표시줄 부분에 Incremental Find라고 표시되며, 한글자씩을 누를 때마다 그곳에 입력된 글자가 보이고 코드내의 일치하는 문자열로 이동하게 된다. 입력을 끝내고 다시 Ctrl + J를 누르면 그 문자열과 일치하는 곳으로 커서가 이동하게 된다.


Alt + Shift + S : Source
메뉴

아래와 같은 source 메뉴의 메뉴가 퀵 메뉴로 나타난다.



Ctrl + / :
주석처리 토글

현재 라인을 주석처리 하거나 주석처리된 부분의 주석을 제거해 준다.


'sysout' + (Ctrl + Space) : System.out.println()
문장 삽입

출력결과 확인할 때 상당히 편리하다. ^^;;


Alt + Shift + Z : Surround With
메뉴

코드를 블록으로 선택한 다음 이 단축키를 적용하면 다음과 같은 퀵 메뉴가 나타나며 선택한 문장으로 블록으로 선택했던 문장들을 감싼다.

 



Ctrl + Shift + F :
코드 포맷팅

코드의 내용을 문법 템플릿에 맞게 포맷팅 해준다. 자바 표준 코딩 스타일을 준수시켜 줄 때 좋다. ^^


Ctrl + F11 :
마지막 Run 구성 실행

마지막으로 실행시켰던 Run 구성을 실행시킨다.


Ctrl + Shift + X :
대문자로 / Ctrl + Shift + Y : 소문자로

 

 

===== 단축키 =====

Ctrl + Shift + F ⇒ 자동 줄맞춤.

Ctrl + W ⇒ 창 끄기.

Ctrl + Shift + F4 ⇒ 모두 닫기.

Ctrl + Shift + L ⇒ 모든 단축키 보기.

Ctrl + 1 ⇒ 에러 자동 해결.

Ctrl + Spacebar ⇒ 문장 자동 완성.

Ctrl + L ⇒ 창에 숫자 입력->원하는 라인으로 이동.

Shift + Alt + R ⇒ 같은 이름 모두 바꾸기.

▶ 블록지정 +Shift + Alt + Z ⇒ 관련된 여러 가지 기능 문들 나옴.

Ctrl + Shift + F ⇒ 알아서 정렬.

Ctrl + Shift + / , \ ⇒ 블록 주석, 풀기.

Ctrl + O ⇒ 해당 소스의 메소드 리스트를 확인

Ctrl + T ⇒ 계층 구조 보기

Ctrl + / ⇒ 한줄 주석

Ctrl + D ⇒ 한줄 삭제

Ctrl + Alt + 방향키 ⇒ 아래나 위 로 하면 그줄이 복사가 된다.

 

 

===== 에디터 변환 =====

 에디터가 여러 파일을 열어서 작업중일때 Ctrl + F6 키를 누르면 여러파일명이 나오고 F6키를 계속 누르면 아래로

 Ctrl + Shift + F6 ⇒ 키를 누르면 위로 커서가 움직인다.

Ctrl + F6 Tab기능(파일단위 이동).

Ctrl + F7 ⇒ 뷰간 전환

 Ctrl + F8 ⇒ 퍼스펙티브간 전환

 F12 ⇒ 에디터로 포커스 위치 

Alt +방향키 ⇒ 소스코드 네비게이션(순서대로 나타나고 닫은창도 버퍼안 있으면 살아남)

Ctrl + F6 ⇒ 소스코드 네비게이션

Ctrl + F7 ⇒ 뷰간 네비게이션

Ctrl + F8 ⇒ 모드(Perspective)창 간의 네비게이션

Ctrl + 마우스커서(혹은 F3) ⇒ 클래스나 메소드 혹은 멤버를 상세하게 검색하고자 할때

 

 

===== 실행 =====

Ctrl + F11 ⇒ 바로 전에 실행했던 클래스 실행.

Shift +Alt + X ⇒ 실행에 관련 된 단축키 나옴

(A ⇒ 애플릿실행, R ⇒ 서버실행, J ⇒ 어플리케이션실행).

Ctrl +Alt +H Call Hierarch.

Run - Run Configurations - Arguments tab - program arguments (매개변수 넣기)

 

===== 문장 자동 기능 사용 시 키워드 =====

sysout System.out.println()

try try~catch문 완성.

for for문 완성 배열에 관련된 변수가 조건문 알아서 들어감.

do do~while문 완성.

while while문 완성.

 

 

===== 중요하진 않지만 알아두면 유용한 팁 =====

F2 ⇒ 컴파일 에러의 빨간줄에 커서를 갖져다가 이 키를 누르면 에러의 원인에 대한 힌트를 제공.

F4 ⇒ 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.

Ctrl + Shift + Space ⇒ 메소드의 가로안에 커서를 놓고 이 키를 누르면 파라미터 타입 힌트를 볼 수 있다.

 

 

 

===== 문자열 찾기 =====

Ctrl + K ⇒ 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.

Ctrl + Shift + K ⇒ 역으로 찾고자 하는 문자열을 찾아감.

Ctrl + J ⇒ 입력하면서 찾을 수 있음.

Ctrl + Shift + J ⇒ 입력하면서 거꾸로 찾아갈 수 있음.

Ctrl + F ⇒ 기본적으로 찾기

 

 

===== 이클립스 기본 설정 =====

Windows - Preferences - Java - Editor - Syntax Coloring - java==>

- Keyword 'return' , Keywords excluding 'return' = (blue)

- Classes - (red)

Windows - Preferences - General - Appearance - Colors and Fonts - Basic -

Text Font ->Tahoma,Verdana, 굵게, 크기12로 조정



 

 

파이썬

shift + enter

쿼우팅 같이 자동으로 생성되는 특수문자를 패스하는 기능


====================================================================================

ctrl + s: 저장 및 컴파일
ctrl + i: 소스 깔끔 정리(인덴트 중심의 자동구문정리)
ctrlctrl + space : 어휘의 자동완성(Content Assistance)

ctrl + E : 열린파일 옮겨다니기

ctrl + shift + E :: 열린파일 띄우기

ctrl + M : 에디터화면 넓게
ctrl + 1 : Quick Fix(Rename에 주로 사용)
ctrl + shiftshift + M : 캐럿이 위치한 대상에 필요한 특정클래스 importimport
ctrl + shift + O : 소스에소스에 필요한 패키지의 자동 임포트
ctrl + /:: 한줄 또는 선택영역 주석처리/제거
ctrl + Q : 마지막 편집위치로 가기
ctrl + L : 특정줄번호로 가기
ctrl + D :: 한줄삭제
ctrl + H : Find 및및 Replace
ctrl + K : 다음찾기(또는, 찾고자찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.)
ctrl ++ shift + K : 이전찾기(또는, 찾고자 하는 문자열을 블럭으로블럭으로 설정한 후 역으로 찾고자 하는 문자열을 찾아감.)
alt ++ shift + j : 설정해 둔 기본주석 달기
Ctrl + 객체클릭(혹은 F3) : 클래스나 메소드 혹은혹은 멤버를 정의한 곳으로 이동(Open Declaration)





ctrl + shift + f : 소스 깔끔깔끔 정리
ctrl + 2 + R :: Rename(리팩토링)
ctrl + shift + / :: 선택영역 block comment 설정
ctrl + shift + \ : 선택영역 block comment 제거
alt ++ shift + up: Enclosing Element 선택(괄호의 열고 닫기 쌍쌍 확인에 유용함)
ctrl + O : Outline창열기Outline창열기

ctrl + T : 상속구조 보기, 한번더한번더 누르면 수퍼타입/서브타입 구조가 토글된다

Alt + ->, AltAlt + <-: 이후, 이전
해당프로젝트에서 alt ++ enter : Project 속성
sysout > CtrlCtrl + Space: System.out.println();
try > Ctrl ++ Space : 기본 try-catch문 완성
for > CtrlCtrl + Space : 기본 for문 완성
템플릿을 수정,추가수정,추가 : Preferences > java > editor > Templates

블럭 씌운상태에서 alt + shift + z : try/catch,try/catch, do/while, if, for, runnable.... 등 블럭씌우기





ctrl + N : 새로운 파일 및 프로젝트 생성
ctrl ++ shift + s : 열려진 모든파일 저장 및 컴파일
alt ++ / : Word Completion
alt + shift + R : RenameRename
ctrl + shift + G : 특정 메써드나 필드를 참조하고 있는있는 곳을 찾는다.
ctrl + shift + B : 현재커서위치에 Break point설정/해제point설정/해제
ctrl + alt + R
ctrl + f11 : 실행
f11f11 : 디버깅 시작

f4 : 상속구조 클래스 보기(메소드, 멤버)
f5f5 : step into
f6 : step over
f8 : 디버깅 계속계속
ctrl + . : 다음오류부분으로 가기
ctrl + , : 이전오류부분으로이전오류부분으로 가기
f12 : 에디터로 커서이동
ALT + UP,DOWN : 현재 줄줄 위치 이동
Ctrl + j : 검색할 단어를 입력하면서 실시간으로 검색검색
Ctrl + Shift + j : 검색할 단어를 입력하면서 실시간으로 거꾸로거꾸로 검색
F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.
ctrl + alt + up/down : 한줄 duplicate
alt ++ shift + 방향 : 선택
ctrl + shift + g :: 객체(변수)가 참조 되는 곳을 찾아 준다

alt + shift ++ m : 코드 중복 해결(중복부분을 블록선택한 다음 단축키를 누르면 이부분을 별도의 메서드로메서드로 뽑아내줌)

ctrl + alt + h : 메서드 호출구조 보기보기  





Posted by linuxism
,

"Access restriction: Class is not accessible due to restriction on required library"  이란 에러가 발생했을때...

* 상황
- A plugin에서 B plunin에 대한 접근에 제한이 존재.
- 컨트롤 클릭으로 쫓아가지는 상태이나 에러로 인해 빌드가 안됨.

* 해결
- Windows -> Preferences -> Java -> Compiler -> Errors/Warnings




출처 - http://rosaria1113.blog.me/63117105

Posted by linuxism
,