Rev. 2.73

IOS6 업데이트는 다음을 포함한 200가지 이상의 새로운 기능이 포함되어 있습니다. 하지만, 한국에서 사용할 수 없는 일부 기능을 표시해 보았더니, 지역 기반 관련 기능을 대부분 이용할 수 없군요. 3GS부터 계속 그래 왔는데, 나중에는 해 주겠거니 하고 넘어갔지만, 아예 그럴 생각이 없는 거 같습니다. 그리고 iTunes Store도 그대로네요. 이거 왜 이럴까요? 한국 시장이 작아서 그럴까요? 우리나라가 후진국이라 애플이 생까는 걸까요? 아니면 대한민국 법규가 병맛이라서 그런 건가요?

  • 지도
    • Apple이 디자인한 벡터 기반 지도
    • 성으로 방향을 안내하는 턴 바이 턴(Turn-by-turn) 방식의 내비게이션(iPhone 5, iPhone 4S, 2세대 및 3세대 iPad Wi-Fi + 셀룰러)
    • 실시간 교통 정보 미지원
    • 실제 주요 도심 지역과 거의 흡사한 사진 및 대화식 3D 보기를 제공하는 Flyover(iPhone 5, iPhone 4S, 3세대 iPad 및 5세대 iPod touch) 미지원
    • Yelp 사진, 선호도, 리뷰 및 검색 가능한 항목이 포함된 지역 검색 결과 미지원
    • Siri가 통합되어 길을 묻거나 경로를 따라 장소를 찾을 수 있음 미지원
  • Siri 개선사항
    • 스포츠: 야구, 농구, 축구, 미식축구 및 하키 경기의 점수, 선수 정보, 경기 일정, 출전 선수 및 리그 순위 확인 가능
    • 영화: 예고편, 상영시간, 리뷰 및 정보 확인 가능 미지원
    • 음식점: 예약, 리뷰, 사진 및 정보 제공 미지원
    • 트윗 보내기
    • Facebook에 게시물 올리기
    • 응용 프로그램 실행
    • 지원되는 자동차의 경우 Eyes Free 사용 가능
    • Siri가 지원되는 국가의 경우 지역 검색 가능(출시 초기에는 사용이 제한적일 수 있음) 미지원
    • 추가 국가 및 언어 지원: 캐나다(영어 및 캐나다 프랑스어), 중국(중국 표준어), 홍콩(광둥어), 이탈리아(이탈리아어), 한국(한국어), 멕시코(스페인어), 스페인(스페인어), 스위스(이탈리아어, 프랑스어, 독일어), 대만(중국 표준어) 및 미국(스페인어)
    • iPhone 5, iPhone 4S, 3세대 iPad 및 5세대 iPod touch에서 지원
  • Facebook 통합 ...
  • 공유 사진 스트림 ...
  • Passbook ...
  • FaceTime 개선사항 ...
  • 전화 개선사항 ...
  • Mail 개선사항 ...
  • Safari 개선사항 ...
  • App Store 및 iTunes Store 개선사항 음악, 영화, TV 프로그램 컨텐츠 없음
    • 스토어 디자인 업데이트 미지원
    • iTunes 미리보기 내역 미지원
    • 나의 시즌 완성 미지원
    • 나의 앨범 완성 미지원
  • Game Center 개선사항 ...
  • 손쉬운 사용 개선사항 ...
  • 버그 수정 등

Comments

얼마 전(지난 오월 초) 웹 기반 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

머리털나고 처음으로 배포했던 Node.JS용 모듈인 Clog를 0.1.2 버전으로 업데이트했습니다. 이 마이너 업데이트는 종전과 로그 출력방법이 동일하며 새롭게 configure 메서드가 추가되었습니다. 이 메서드를 이용하면 콘솔의 유형 단위로 로그를 필터링 할 수 있습니다. 사용 방법은 다음과 같습니다.

var clog = require('clog');

// display level configration:
clog.configure({'log level': 2});
//=> {'log': true, 'info': true, 'warn': false, 'error': false, 'debug': false}

// custom display level configration:
clog.configure({
  'log level': {
    'log': true,
    'info': true,
    'warn': false,
    'error': true,
    'debug': false
  }
});
//=> {'log': true, 'info': true, 'warn': false, 'error': true, 'debug': false}

configure 메서드는 객체를 인자로 받으며 'log level' 속성에 정의된 디스플레이 래밸의 숫자 또는 커스텀 래밸 플래그들로 구성된 객체를 인식하도록 만들었습니다. 래밸의 수는 log, info, warn, error, debug순으로 허용할 단계를 의미합니다. 즉 2를 기입하면 log와 info만 출력하게 되는 것이죠. 만약 당신이 모든 로그를 제외한 경고만 출력하고 싶다면 다음처럼 작성하면 됩니다.

clog.configure({
  'log level': {
    'log': false,
    'info': false,
    'warn': true,
    'error': false,
    'debug': false
  }
});

// or

clog.configure({'log level': 0});
clog.configure({'log level': {'warn': true}});

또한 configure 메서드는 나중에 다시 정의해도 문제되지 않으며, 커스텀 레이블도 필터링 할 수도 있도록 처리되었습니다. 커스텀 레이블을 사용중이라면 다음과 같이 필터링 할 수 있습니다.

clog('server', 'start listening on port 3000');  // custom head
clog.configure({'log level': {'server': false}});

이 옵션들을 잘 이용하면 운영과 개발 모드를 구분하여 자동으로 필터링하거나 어떤 상황에서 특정 메시지만 출력하도록 하는 동적인 구현도 가능할 거예요. 다음 업데이트에는 사용자 지정 색상을 지원하도록 할 예정입니다만, 언제 실행에 옮길지는 저도 잘 모르겠습니다; 끝으로 GitHub를 통해 이 아이디어를 주신 Antoine Musso씨와 여로모로 전파에 힘써주신 A.J님, Outsider님 그리고 Clog를 애용해 주시는 모든 여러분들께 감사드립니다.

Comments