Rev. 2.73

Cloud9 GitHub에 놀러갔다가 뭔가 심상찮은 변화가 있는 듯하여 "git pull" 때렸더니 소스가 주룩주룩 갱신됩니다. 서브 모듈들도 왕창 업데이트 되었더군요. 참고로 저는 devel 브랜치를 빌드해서 운용합니다. 로그인 기능도 추가하고 새로운 기능들도 맛보고 싶어서지요. Cloud9은 확장기능을 제공하도록 설계되었습니다. 이것은 상단의 메뉴에서 Window > Extension Manager... 패널을 호출하여 사용자 지정 확장기능을 추가하거나 기존기능을 비활성할 수 있습니다. 그런데 뭔가 고장날까봐 잘 안건드리게 되더군요. 이번 패치에는 아래 그림에서 보는 것 처럼 사용자 지정 확장기능과 기본 확장기능이 구분되어있습니다. 뭔가 재미있는 것들이 있을것 같아 조금 살펴보기로 했습니다.

extansions.png

일단 1.6버전으로 운영되는 Cloud9 서비스의 기능과 비교해 보았습니다. 헉! Minimap이라는 쇼킹한 기능이 추가되었습니다! 이것은 소스전체를 작은 미리보기로 나타내고 현재 위치한 화면 영역을 구분하는 멋진 확장기능이었습니다. 상단 메뉴에서 View > Show Minimap을 클릭하여 활성 또는 비활성합니다. GitHub를 뒤져보니 Tane Piper씨가 벌써 훔쳐와 적용했더군요. 이 diff를 적용하면 아래 그림처럼 Minimap 기능이 활성화 됩니다. 신기해서 살짝 들춰보니 Canvas 요소를 이용해서 구현된 것이더라고요.

minimap.png

그런데 이분 코드에서 livecoffee라는 못보던 키워드를 발견합니다. 다시 GitHub에서 검색하니 바로 모습을 드러냅니다. Live CoffeeScript 확장은 커피스크립트로 작성된 코드를 즉시 자바스크립트로 해석해 주는 아주 멋진 녀석이었습니다. 간간히 커피스크립트로 만들어진 소스를 만나면 개짜증을 내며 js2coffee.org를 찾곤 했는데, 이제 그럴필요가 없습니다. Cloud9이 설치된 폴더로 이동하여 다음과 같이 clone하고 ...

git clone git://github.com/tanepiper/cloud9-livecoffee-ext.git client/ext/livecoffee

Extension Manager 패널에서 "ext/livecoffee/livecoffee"를 입력해주면 아래 그림처럼 기능이 활성됩니다.

livecoffee.png

그리고 client/ext 폴더는 ext 라이브러리를 사용했기 때문에 있는줄로 착각했었는데, 그게 아니라 확장기능들을 모아놓은 위치라는 사실도 알게 되었습니다. 웹으로 만들어진 도구로 웹앱를 짜고 Cloud9으로 Cloud9 소스를 머지(merge)하고 앉았으니 참 기분이 오묘합디다. ㅋㅋ

Cloud9 덕분에 좀처럼 변화가 없던 개발관습에 서서히 변화가 나타나고 있습니다. 이제는 Node.JS 코드를 만질때면 습관적으로 크롬을 찾게 됩니다. 코드를 짜는 족족 서버에 반영하고 결과를 즉시 확인하는 이 믿을수 없는 개발환경은 마치 클라이언트-사이드에서 자바스크립트를 다루는 것과 별반 다르지 않습니다. 프로세스를 여러개 실행할 수 있어서 개발용과 배포용을 구분하면 한 대의 서버에서 다양한 프로젝트를 작업할 수 있기 때문이고 더불어 GitHub와 함께하면 소스 리파지토리는 클라우드가 되어버리죠. 이제 Cloud9이 SSH 콘솔만 제대로 갖추면 크롬북이나 아이패드로 작업하는 그야말로 클라우드 개발환경이 만들어질 날도 머지않았습니다. 시와 때를 가리지 않는 미친 개발환경이네요.

Comments

Cloud9은 ajax.org에서 Node.JS를 이용하여 구축한 웹기반 IDE(integrated development environment, 통합 개발 환경)입니다. GitHub와 연동되는 자체 서비스도 있긴 하지만, 오픈 소스이기 때문에 개인서버에 설치해서 사용해도 무방합니다. 얼마전 설치해서 잘 사용해 오던 Cloud9 IDE가 고장났습니다. 웍스페이스로 잡은 위치의 파일이 더이상 열리지 않는 현상입니다. 다시 설치해도 동일한 현상이 지속되길래 최신 버전으로 업데이트하는 퀘스트를 수행하기로 마음먹었습니다. 아래와 같은 방법으로 설치하는 것이 일반적이지만 이경우 0.3.0 버전이 설치 됩니다.

# npm install cloud9

그러나 GitHub에 등록되어 있는 버전은 0.5.1 입니다. Cloud9 IDE의 최신버전을 설치해 봅시다.

먼저 GitHub로 부터 Cloud9O3 프로젝트를 클론합니다.

# git clone git://github.com/ajaxorg/cloud9.git
# git clone http://github.com/ajaxorg/o3

Cloud9을 설치합니다. Cloud9이 사용하는 서브모듈들을 다운로드하고 설치하는 과정이 이루어집니다. Cloud9이 위치한 곳으로 이동해서 개발 브랜치로 변경하고 체크아웃 한다음 설치 스크립트를 실행합니다. 아래와 같이 입력하세요. 이 과정은 약 15분정도 소요됩니다.

# cd cloud9
# git branch devel origin/devel
# git checkout devel
# git submodule update --init --recursive
# bin/cloud9.sh

그다음 두 번째로 받았던 O3를 빌드합니다. 다운로드된 곳으로 이동하고 빌드 한 후 Cloud9이 설치된 경로에 복사합니다. O3는 Cloud9을 구동하는데 필요한 C++ 컴포넌트들입니다.

# cd ../o3
# ./tools/node_modules_build
# cp build/default/o3.node ../cloud9/support/jsdav/support/node-o3-xml-v4/lib/o3-xml/

그런데...

안됩니다. bin/cloud9.sh를 구동하는 과정에서 아래와같은 오류가 발생합니다.

# bin/cloud9.sh
Linux 64 bit
support/node-builds-v4/node-linux64: error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directory

빌드하는 과정에서 CPU 종류에 따라 필요로하는 라이브러리가 두 개 있는데 하나는 libssl.so.0.9.8 이고 다른 하나는 libcrypto.so.0.9.8입니다. 다음과 같이 whereis 명령으로 찾아보면 해당 라이브러리의 위치를 알려줍니다.

# whereis libssl.so.0.9.8
libssl.so.0.9: /lib/libssl.so.0.9.8e

64비트이므로 /lib64/ 디렉토리에 있는 것을 사용해야 합니다. 그런데 버전이 0.9.8e 입니다. 그래서 아래와 같이 심볼릭 링크를 만들었습니다.

# cd /lib64/
# ln -s libssl.so.0.9.8e libssl.so.0.9.8
# ln -s libcrypto.so.0.9.8e libcrypto.so.0.9.8
# ll libssl.so.0.* libcrypto.so.0.*
lrwxrwxrwx 1 root root      19  8월 12 17:21 libcrypto.so.0.9.8 -> libcrypto.so.0.9.8e
-rwxr-xr-x 1 root root 1366272 12월 14  2010 libcrypto.so.0.9.8e
lrwxrwxrwx 1 root root      16  8월 12 17:21 libssl.so.0.9.8 -> libssl.so.0.9.8e
-rwxr-xr-x 1 root root  315032 12월 14  2010 libssl.so.0.9.8e

이제는 다른 오류가 나타납니다.

# bin/cloud9.sh
Linux 64 bit
support/node-builds-v4/node-linux64: /lib64/libssl.so.0.9.8: no version information available (required by support/node-builds-v4/node-linux64)
support/node-builds-v4/node-linux64: /lib64/libcrypto.so.0.9.8: no version information available (required by support/node-builds-v4/node-linux64)
support/node-builds-v4/node-linux64: /lib64/libc.so.6: version `GLIBC_2.9' not found (required by support/node-builds-v4/node-linux64)
support/node-builds-v4/node-linux64: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by support/node-builds-v4/node-linux64)
support/node-builds-v4/node-linux64: /lib64/libc.so.6: version `GLIBC_2.6' not found (required by support/node-builds-v4/node-linux64)

이런 젠장, 망했어요. 이게 뭐에요; 이틀동안 개삽질했어요. 헬프~

2011-08-14: 해결했습니다. ^^; 걍 실행해도 돌아가네요. 무시해도 되는 오류인가봐요. 꺄~ 0.5.1 이다~
2011-09-10: connect-basic-auth 모듈 기반 계정 인증 추가

Comments