2012년 9월 22일 토요일

완벽한지 판단하는 방법

"더할 것이 없을 때가 아니라, 뺄 것이 없을 때, 비로소 완벽해졌음을 알 수 있다." - 생떽쥐베리

"You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away." --A. de Saint-Exupery

2012년 9월 21일 금요일

크롬의 웹 어플 만들기 __ 2

https://developers.google.com/chrome/apps/docs/

웹 어플의 개발자 문서입니다.
첫페이지는 개요정도 뿐이고 하단에 2개의 링크가 존재합니다.

앱은 2가지로 나뉜다

웹 어플은 Hosted Apps와 Packaged Apps로 구분이 되는 것 같습니다.
후자인 Packaged Apps는 크롬에서 확장프로그램(Extension)이라고 불리는 것이라 합니다.

그런데, 첫번째 링크는 정상이지만 두번째 링크는 404 Not Found입니다.
그래서 좀 헤멘 결과, 정상으로 보이는 링크를 찾아냈습니다.

두개의 링크를 여기에 다시 기록하겠습니다.
Hosted Apps : https://developers.google.com/chrome/apps/docs/developers_guide
Packaged Apps : http://developer.chrome.com/extensions/docs.html

크롬의 웹 어플 만들기 __ 1

크롬 브라우저는 웹 스토어를 통해 다양한 웹 어플을 제공하고 있습니다.

특정 사이트의 링크 정도로 보이는 단순한 어플에서부터 사무용 프로그램, 멀티미디어, 게임에 이르기까지 이런 것이 웹브라우저에서 가능할까 싶은 것들도 많습니다.

지금까지는 신기하다 생각하고 사용만 해 왔었는데,
문득 나도 만들어 보고 싶다는 생각이 들어 시작을 해 보기로 했습니다.

검색해 보니 별 고민할 필요가 없는 공식 사이트가 나타납니다.
https://developers.google.com/chrome/apps/

구글 디벨로퍼의 웹 어플 페이지

개발을 시작하기 위한 링크들

개발자용 문서 : https://developers.google.com/chrome/apps/docs/index
개발자들을 위한 게시판(Groups) : http://groups.google.com/a/chromium.org/group/chromium-apps
크롬의 최신 정보를 위한 블로그 : http://blog.chromium.org/

이후의 블로깅은 개발자용 문서로부터 시작할 계획입니다.

2012년 9월 5일 수요일

C에서의 Enumerator

enum의 용도는, 일련의 상수들을 나열하여 선언하고, 이들에 순차적으로 상수값을 할당하는 데 있습니다.

주로 같은 목적으로 사용될 상수들이 많이 필요한 경우,
혹은 상수들에 순차적으로 값을 할당해야 하는 경우에 사용되곤 합니다.

애초에 C언어를 만든 커닝핸과 리치가 어떤 목적으로 enum을 만들었는지는 모르겠으나,
순차적인 값으로 할당되는 상수들을 만들기 위해서라기 보다는,
특정한 목적에 사용될 상수들을 명시적으로 분류하기 위해서 만들지 않았을까 생각됩니다.

이러한 목적(명시적인 분류)을 위해서는 아무런 이름도 없이 선언된 enum 보다는 식별자(identifier)가 할당된 enum을 사용하는 것이 바람직합니다.

다음에 있는 코드를 통해 enum을 사용해 보겠습니다.

enum 사용예 (1)

컴파일 결과 (1)
이 코드에서는 enum의 사용에서 궁금했던 것을 모두 시도해 보았습니다.

line 3 : 상수들 사이에 하나의 콤마를 추가하면 할당되는 상수값이 증가하지 않을까 생각했는데 컴파일 에러가 발생했습니다.

line 7 : enum으로 선언된 상수들이 사용될 변수의 타입을 enum의 식별자로 선언해 보니 컴파일 에러가 발생했습니다.

이후에는 변수 자체가 선언되지 않은 것으로 간주되어 에러가 줄줄이 나옵니다.

이 두가지 문제를 다음과 같이 수정하였습니다.

수정한 enum의 사용예 (2)
실행결과
컴파일은 문제없이 완료되었고, 실행도 잘 되었습니다.


하지만, 한가지 짚고 넘어가야 할 문제가 있습니다.
line 10 & line 14에서 아무런 문제가 발생하지 않았다는 점입니다.

분명히 array는 "enum SET"이라는 타입으로 선언이 되었음에도 불구하고, enum SET에는 선언되지 않은 상수인 0과 4를 할당하는 것에 아무런 문제가 없었다는 점입니다.
(C++에서는 이런 결점이 보완되어 있는 것으로 알고 있습니다.)


line 7에서 보듯이 enum의 사용법은 struct, union의 사용법과 흡사합니다.

전적으로 프로그래머의 편의를 위한 것이지만,
enum도 typedef를 사용해서 조금이나마 쉽게 쓰도록 수정해 보았습니다.

typedef를 사용한 enum의 예 (3)