솔직히 말해서, 

Subversion 이후로 새로운 버전 관리 툴이 필요할 거라는 생각을 하지 않았다. 그래서 Git(깃)이 세상에 나왔을 때 나는 분노했다. 뭣하러? 새로운 톨이 나오고, 사람들이 열광하고, 아쉬울 것 없던 내가 Git을 배우게 된 걸까?

하지만, Git에 대해 요모조모 알고난 지금, 난 누구에게도 자신있게 Git을 권할 수 있다. 이제 Subversion과 Git 중에 하나 고르라고 하면 Git을 추천한다.


GitHub

- SourceForge와 Google Code를 빠르게 앞서고 있는 오픈소스 프로젝트 근거지

- 단순한 소스 호스팅 뿐 아니라 개발자들끼리의 SNS로 기능하고 있음

- Subversion (SVN)을 오픈소스 호스팅 기반으로 사용하는 SourceForge와 달리 Git을 소스 호스팅 도구로 사용

- 코드 생산자가 아니라 소비자로 활동하기에도 좋다


Git

- Git은 2006년경 BitKeeper라는 리눅스 커널 개발에 쓰던 분산형 패치 도구에 대한 대안으로 리누스 토발즈가 직접 개발한 분산형 소스 콘트롤(Source Control Management) 시스템

- Offline으로 동작 가능하며 거의 모든 기능의 반응 속도가 기존 버전 관리 툴을 압도 (Why Git is Better than X 참고)

- GitHub를 쓰기 위해 Git을 사용하는 사람이 늘고 있음 (GitHub가 활성화 되었음을 의미)


참고자료

- Github, 코드 개발 기반 소셜 네트웍 (http://channy.creation.net/blog/626)

- 웹 항해일지 - GitHub 특집 (http://occamsrazr.net/tt/254)

- The Git 슬라이드 (http://www.slideshare.net/dalinaum/the-git)

- Why Git is Better than X (http://whygitisbetterthanx.com/)

- Git 사용기 (http://help.github.com/be-social/)

Pro Git (http://dogfeet.github.com/articles/2012/progit.html

: 이 책, "Pro Git"은 꼭 읽어야 한다. Git에 대한 완벽한 안내서. 무려 한글! 내용 충실! 책을 이렇게 공개하면 종이책이 팔리지 않을텐데... 저자가 고마우면서도 걱정되는 복잡한 기분.


(이상)


Posted by ingee

댓글을 달아 주세요

게임 Cut The Rope의 HTML5 버전이 공개됐다. IE를 비롯 Safari, Chrome, Firefox 등 PC 브라우저는 물론, iPhone, iPad, Android Phone, Android Tablet 등 모바일 기기의 브라우저에서도 실행된다. 
이 개발자들.. 멋지게도 귀중한 경험을 후기로 남겼다. 가치 높은 글이라 줄거리를 요약하여 옮겨온다.

게임:  http://www.cuttherope.ie/ 
원본:  http://www.cuttherope.ie/dev/ 

+ 'Cut The Rope' 게임의 Objective-C 코드를 html5 코드로 포팅하기로 결정
+ 쉽지 않은 도전
- 라이브러리를 제외하고 15,000 라인에 이르는 방대한 규모의 프로그램
- 물리엔진, 애니메이션엔진, 드로잉엔진이 타이트하게 결합되어 최적화되어 있는 상태

+ JavaScript에 희망을 검
- 초기의 JavaScript는 스크립트 실행을 위한 느린 언어
- 현재의 JavaScript는 JIT를 이용 native에 근접한 실행속도를 내는 언어

+ JavaScript 프로그래밍을 위해서는 컴파일 언어를 사용할 때와는 다른 mindset이 필요
+ JavaScript는 struct를 미지원
- JavaScript의 Object를 struct 대용으로 사용할 경우 여러가지 어려움을 겪게됨
- JavaScript에서 Object를 함수의 인자로 전달하면 call by reference됨.
- 따라서 callee함수에서 Object 인자를 수정하면 caller에 영향을 줌
- 그리고 JavaScript에서 Object 생성은 무척 비싼 연산
- 그래서 함수 호출시 Object 전체를 파라메터로 넘기는 대신 필요한 field만 넘기는 방법을 선택함
+ JavaScript의 OO(Object Oriented) 개념은 전통적인 OO 언어와 다름
- JavaScript는 prototype에 기반한 OO 개념을 제공하나 이는 Objective-C와 이질적
- 그래서 JavaScript에 class 기반 OO를 가능하게 하는John Ressing (of jQuery)의 공개 라이브러리를 이용하기로 함

+ Objective-C 코드 말고도 OpenGL을 HTML5 Canvas API로 포팅해야 했음
- 이 작업은 순조롭게 진행됐음
- HTML5 Canvas가 하드웨어 가속을 지원하는 브라우저 위에서 놀랄만큼 빠른 rendering 성능을 보였음
- 일부 기능 (예를 들어 anti-alias line 그리기 기능)의 경우, HTML5 Canvas가 OpenGL ES보다 훌륭했음 (성능/기능 측면에서)

+ 최종적으로 브라우저에서 실행되는 15,000라인 규모의 코드를 만들어냄
- 3주가 지난후, 기본적인 물리엔진, 드로잉엔진, 애니메이션을 위한 타이머를 개발함
- 4주가 지난후, 기본적인 마우스 처리가 구현되어 실제 게임을 실행할 수 있게됨
- 물리엔진은 intensive한 연산 덩어리, 하지만 JavaScript가 놀라운 실행성능을 보여줌. 이제 JavaScript가 느린 언어라는 선입견을 버려야함

+ 개발을 위해 사용한 도구
+ 코딩을 위해 Visual Web Developer 2010 (free version 제공됨) 사용
- JavaScript, css 구문에 대한 autocompletion 기능 제공
+ 실행 및 디버깅을 위해 ie9을 비롯한 firefox, chrome, safari 브라우저 사용
- 동일한 HTML5 코드로 모든 브라우저를 지원할 수 있음을 확인
+ ie9의 JavaScript profiler를 사용하여 실행성능을 최적화함
- 코드의 병목 지점을 찾아 개선함으로써 10배 이상 실행 성능을 향상시켰음

+ 산출물
+ resource loader
- 본 게임의 리소스 크기(6MB)는 일반 웹사이트의 리소스 크기(200~300KB)에 비해 매우 큼
- 큰 리소스들을 안정적으로 pre-loading하고 loading schedule을 조정할 수 있는 JavaScript 'resource loader' 라이브러리를 개발함, 그리고 이를 free open source로 공개함

(이상)

Posted by ingee

댓글을 달아 주세요

  1. 나그네 2012.06.28 14:24 신고  댓글주소  수정/삭제  댓글쓰기

    이전부터 읽어보고 싶었던 글이었는데 미뤄두고 있다가 이렇게 요약본을 보니 명쾌 하네요.
    간략하지만 요점잡힌 정리 감사합니다.

  2. 좡이 2012.09.05 11:39 신고  댓글주소  수정/삭제  댓글쓰기

    코드를 포팅하는 과정을 정말 잘 정리 해 주신것 같내요 .. 잘보았습니다 ^^

    • ingee 2012.09.05 13:25 신고  댓글주소  수정/삭제

      제가 쓴 글은 아니고, 영문 블로그 기사를 요약한 겁니다. 모든 대단함은 원글 팀에 속해 있지요. 그래도 도움이 되셨다니 기쁩니다.

HTML5 Device API 분야의 표준화 현황을 정리한다. 현황을 정리하면서 느낀점은 다음과 같다.
- W3C가 부지런히 움직이고는 있지만 Device API는 표준화 초기 단계다 (대부분 Working Draft 단계...)
- 애플보다는 안드로이드 쪽이 그나마 기민하게 반응하고 있다 (오십보 백보지만 그래도...)
 
phone call
- <a href="tel:phone_number"> URI를 통한 전화 걸기 기능
- 표준화 현황: de facto 표준 (W3C 공식 표준 아님)
- 단말 지원 현황: iOS, Android, 블랙베리 등 거의 모든 모바일 기기가 지원함
- 참고 자료: http://www.mobilexweb.com/blog/click-to-call-links-mobile-browsers
 
Indexed DB
- 인덱스가 부여된 Javascript Object 들의 local storage
- W3C가 Web SQL 표준을 폐기하고 대안으로 제시
- 표준화 현황: W3C Working Draft (06-December-2011 규격이 최신: http://www.w3.org/TR/IndexedDB/)
- 단말 지원 현황: 거의 모든 모바일 기기가 지원 않음
- 참고 자료: http://www.html5rocks.com/en/tutorials/indexeddb/todo/

Media Capture
- 카메라, 캠코더, 마이크 연동 규격
- 표준화 현황: W3C Working Draft (14-April-2011 규격이 최신: http://www.w3.org/TR/html-media-capture/)
- 단말 지원 현황: iOS 지원 않음. Android 지원함 (3.0 부터)
- 참고 자료: 
    - http://www.h-online.com/open/news/item/HTML5-Access-to-cameras-and-microphones-1043319.html
    - http://www.wonsuk73.com/19
 
File API
- 로컬 파일 읽기/쓰기 API
- 표준화 현황: W3C Working Draft (20-October-2011 규격이 최신: http://www.w3.org/TR/FileAPI/)
- 단말 지원 현황: iOS 지원 않음. Android 지원함 (3.0 부터)

Touch Event
- 터치 이벤트 규격
- 표준화 현황: W3C Candidate Recommendation
    - Working Draft보다 안정된 상태
    - 15-December-2011 규격이 최신: http://www.w3.org/TR/touch-events/
- 단말 지원 현황: 거의 모든 모바일 기기가 지원함

Contacts API
- 사용자의 연락처 정보에 접근하기 위한 API
- 표준화 현황: W3C Working Draft
    - Stable Draft 상태 (Last Call)
    - 16-June-2011 규격이 최신: http://www.w3.org/TR/contacts-api/
- 단말 지원 현황: 거의 모든 모바일 기기가 지원 않음 (규격의 안정도를 고려할 때 의외)

Calendar API
- 사용자의 일정 정보에 접근하기 위한 API
- 표준화 현황: W3C Working Draft (19-April-2011 규격이 최신)
- 거의 모든 모바일 기기가 지원 않음
 
Task API
- 사용자의 to-do 업무 정보에 접근하기 위한 API
- 표준화 현황: 담당 에디터가 없음, Calendar API에 합쳐질 전망
- 참고 자료: http://www.w3.org/TR/calendar-api/ 

Geolocation API
- 사용자의 위치 정보에 접근하기 위한 API
- 표준화 현황: W3C Candidate Recommendation
    - Working Draft보다 안정된 상태
    - 07-September-2010 규격이 최신 (http://www.w3.org/TR/geolocation-API/)
- 단말 지원 현황: 거의 모든 모바일 기기가 지원

Messaging API
- SMS, MMS, eMail 관련 API
- 표준화 현황: W3C Working Draft (14-April-2011 규격이 최신: http://www.w3.org/TR/messaging-api/)
- 단말 지원 현황: 거의 모든 모바일 기기가 지원 않음
 
 (끝)
 
Posted by ingee

댓글을 달아 주세요