Rev. 2.73

얼마 전(지난 오월 초) 웹 기반 IDE인 클라우드9(개인 사용자용)의 코드베이스의 아키텍처가 업그레이드되는 대대적인 마이너 업데이트가 있었습니다. 설치방법과 실행방법 그리고 소소하게 UI 등에 변동사항이 있어 주요한 내용을 기록합니다.

0.7.x부터는 자체적으로 빌드해서 사용해 오던 node-builds-v4를 더이상 사용하지 않습니다. 이것은 실행 환경에 문제가 발생하면 대처하기 어려운 부분을 해결한 것입니다. 그래서 Node.JS 0.6.15 이상, NPM 1.1.16 이상을 필요로 합니다. 그리고 sm(Sourcemint)를 이용하여 소스상태를 관리하고 설치 및 갱신 하도록 변경되었습니다. 참고로 Sourcemint는 테스트 및 배포를 이롭게 하기 위해 프로젝트를 빌드하는데 필요한 소스와 패키지를 자체적으로 관리하며, 소스 리포지토리에서 설치, 변동 사항 반영 등이 처음부터 끝까지 완전히 자동화된 소프트웨어 구축 환경을 제공합니다.(참 멋진 녀석이군요!)

다음과 같이 간단하게 설치할 수 있습니다:

# npm install -g sm
# sm clone --dev https://github.com/ajaxorg/cloud9/tree/master cloud9

또는

# git clone https://github.com/ajaxorg/cloud9.git cloud9
# cd cloud9
# sm install

그리고 실행합니다:

# cd cloud9
# bin/cloud9.sh

프로젝트 폴더를 지정할 수도 있습니다:

# bin/cloud9.sh -w ~/git/myproject

물론 포트를 변경할 수도 있습니다(기본 포트는 3131):

# bin/cloud9.sh -p 80

아쉽게도 호스트네임(Hostname)은 변경을 할 수 없게 되어있지만 configs/default.js 파일의 20라인부터 다음과 같이 수정해 주면 -h 옵션으로 호스트네임을 변경할 수 있습니다.

변경 전:

var projectDir = (argv.w && path.resolve(process.cwd(), argv.w)) || process.cwd();
var fsUrl = "/workspace";

var port = argv.p || process.env.PORT || 3131;

var config = {
    name: "Cloud9",
    tmpdir: __dirname + "/../.architect",
    basePath: __dirname + "/../plugins-server",
    containers: {
        master: {
            title: "Cloud9",
            plugins: [{
                packagePath: "./cloud9.connect",
                port: port,
                host: "localhost"
            }, {
                packagePath: "./cloud9.sourcemint",

변경후:

var projectDir = (argv.w && path.resolve(process.cwd(), argv.w)) || process.cwd();
var fsUrl = "/workspace";

var port = argv.p || process.env.PORT || 3131;
var host = argv.h || process.env.HOST || "localhost";

var config = {
    name: "Cloud9",
    tmpdir: __dirname + "/../.architect",
    basePath: __dirname + "/../plugins-server",
    containers: {
        master: {
            title: "Cloud9",
            plugins: [{
                packagePath: "./cloud9.connect",
                port: port,
                host: host
            }, {
                packagePath: "./cloud9.sourcemint",

이제 호스트네임 옵션이 활성화 되었습니다:

# bin/cloud9.sh -h firejune.io

업데이트는 더욱 간단합니다:

# git pull
# sm update

만약 npm에서 디펜던시(Dependency)가 발생하면 이렇게 해결합니다:

# sm install

아래 보이는 화면은 크롬에서 애플리케이션 모드로 작동하는 Cloud9의 모습입니다. 내비게이션 사이드바가 사라진 대신 상단의 도구영역이 활성화되었으며, 메뉴를 자동 숨김 하는 기능 등이 추가되었습니다.

스크린샷 2012-05-14 오후 2.02.11.png

이번 회사 프로젝트에는 GitHub와 Cloud9 IDE을 도입해서 협업하기로 결정했습니다. Cloud9을 맥OS에 로컬로 설치한 후 백그라운드에서 실행합니다. 그리고 크롬의 애플리케이션 바로가기 기능을 이용해서 Dock에 등록하고 실행하면 브라우저 UI가 모두 사라져 마치 레알(?) 애플리케이션을 실행하는 느낌으로 사용할 수 있습니다. 하지만 아쉽게도 맥OS용 크롬에는 이 기능이 비활성화되어 있기 때문에 Mait Vilbiks씨가 만든 createGcApp.dmg를 이용하여 바로 가기를 생성할 수 있습니다. :)

덧 2012-5-17:

맥OSX에서 탭/윈도 닫기의 단축키는 Command + W 이고 컨벤션인데 클라우드9의 "커런트 탭 클로즈" 단축키는 Option(alt) + W로 되어있어 실제 윈도를 닫아버리는 실수를 자주 합니다. 이 단축키를 변경하려면 plugins-client/ext.tabbehaviors/tabbehaviors.js 파일을 열고 35라인을 아래와 같이 수정하면 Command + W 키를 이용하여 현재 탭을 닫을 수 있습니다. 물론 다른 단축키들도 입맛에 맛게 고칠 수 있습니다.

변경 전:

        ["closetab", "Option-W", "Ctrl-W", "close the tab that is currently active", "Closing active tab.", function(){ return ide.onLine && tabEditors.activepage; }],
        ["closealltabs", "Option-Shift-W", "Ctrl-Shift-W", "close all opened tabs", "Closing all tabs.", function(){ return ide.onLine && tabEditors.activepage; }],
        ["closeallbutme", "Option-Ctrl-W", "Ctrl-Alt-W", "close all opened tabs, but the tab that is currently active", "Closing tabs.", function(){ return ide.onLine && tabEditors.length > 1 }],

변경 후:

        ["closetab", "Command-W", "Ctrl-W", "close the tab that is currently active", "Closing active tab.", function(){ return ide.onLine && tabEditors.activepage; }],
        ["closealltabs", "Command-Shift-W", "Ctrl-Shift-W", "close all opened tabs", "Closing all tabs.", function(){ return ide.onLine && tabEditors.activepage; }],
        ["closeallbutme", "Command-Ctrl-W", "Ctrl-Alt-W", "close all opened tabs, but the tab that is currently active", "Closing tabs.", function(){ return ide.onLine && tabEditors.length > 1 }],

Comments

Got something to add? You can just leave a comment.

  • 쌍피 쌍피

    RT @firejune: 클라우드9 IDE 0.7.x 업데이트와 애플리케이션 모드 firejune.com/1746

    from twitter

  • J2P J2P

    RT @firejune: 클라우드9 IDE 0.7.x 업데이트와 애플리케이션 모드 http://t.co/H4nXUWB5

    from twitter

  • All_IT_News All_IT_News

    [경준호] 클라우드9 IDE 0.7.x 업데이트와 애플리케이션 모드: 얼마 전(지난 오월 초) 웹 기반 IDE인 클라우드9(개인 사용자용)의 코드베이스의 아키텍처가 업그레이드되는 대대적인 마이너 업데이... http://t.co/KJDunHRL

    from twitterfeed

  • 디폴트 포트를 변경해서 사용하는 방법도 있지만, nginx 같은 도구를 써서 버추얼 호스트에 대한 프락싱을 하게 되면 보다 편리한 사용이 가능. 필요한 경우 SSL 도 C9 과 상관없이 사용. ㅋㅋ

    ## nginx.conf
    ...
    http {

    upstream cloud9 {
    server 127.0.0.1:3131;
    }

    server {
    listen 0.0.0.0:80;
    server_name c9.yourdomain.com;
    location / {
    proxy_pass http://cloud9;
    tcp_nodelay on;
    }
    }
    }

    ...

    reply edit

  • mypowerbox mypowerbox

    클라우드9 IDE 0.7.x 업데이트와 애플리케이션 모드 http://t.co/gk2tlDIs

    from Flipboard

  • 컴포지트 컴포지트

    드디어 반가운 소식이 올라왔군요. 자체 빌드 때문에 node v6 이상 환경 구축이 어려웠고 윈도우 환경에서 구축이 더럽게 안됐는데 드디어 정신차린 모양입니다.
    윈도우에 한번 깔아봐야지~
    ... sm 현재 윈도우 지원 안한다니.. 아오..

    reply edit

Your Reaction Time!

captcha

avatar