1. 어플리케이션 생성

아래와 같이 rails를 실행하여 루비온레일즈 어플리케이션을 생성할 수 있습니다.

rails application_name (-d database)

  • application_name: 생성될 어플리케이션이름(패스)입니다. 상위 디렉토리의 생성이 필여하면 자동으로 생성합니다.
  • -d database: 사용할 데이터베이스를 설정합니다. 입력하지 않으면 sqlite3가 기본 데이터베이스로 설정합니다.
이제 서버의 적당한 패스에서 아래와 같이 입력하여 www란 어플리케이션을 생성합니다. 실행되면 새로 생성되는 디렉토리와 파일들의 목록이 출력됩니다.

> rails www -d mysql

완료되면 어플리케이션이 생성된 디렉토리로 들어 갑니다. 아래와 같이 파일과 디렉토리들이 생성되어 있습니다.
 

README 파일에는 레일즈 어플리케여션에 대한 소개와 전반적인 사용방법에 대한 간단한 설명이 있습니다. 처음 사용하시는 분들은 한번씩 읽어 보시는 것이 좋습니다.


2. Rails 프레임워크 디렉토리 구조
생성된 각각의 디렉토리는 아래의 용도로 사용됩니다. 아래의 내용들은 위의 README 파일과 아주 잠깐 살펴 보았던 경험을 참조하였습니다.

[?] 로 되어 있는 부분은 아직 한번도 살펴 본적이 없어 용도를 정확히 모르는 곳입니다. 부족하고 틀린 내용들은 조금씩 해 보고 배우면서 계속 보완해 나가고 [?] 를 제거해 나가겠습니다.

/app
어플리케이션의 model, view, controller가 위치하는 폴더 입니다. 사용자가 작성하는 대부분의 코드는 이곳에 위치합니다.

/controller

컨트롤러들이 위치하는 곳 입니다. 컨트롤은 ApplicationController의 서브클래스이며 *_controller.rb와 같은 파일명으로 저장됩니다.

/helpers [?]
핼퍼들이 위치하는 곳입니다. 핼퍼들은 *_helper.rb와 같은 파일명으로 저장되어 있습니다. 핼퍼는 아직 정확한 용도를 모르며 존재여부와 뷰와 연관이 있다고 짐작만 하고 있습니다.

/models
모델들이 위치하는 곳입니다. 모델은 대부분 ActiveRecord의 서브클래스이며, 데이터베이스와 연동하여 데이터에 접근하고 관리하는 역활을 합니다.

/views

HTML 출력을 위한 템플릿 파일들이 위치하는 곳입니다. 각각의 템플릿 파일들은 views 밑에 연관된 컨트롤러 이름으로 된 서브 디텍토리에 위치하며, *html.erb와 같은 파일명으로 저장됩니다.

/layouts

뷰에서 사용하는 header, footer등의 일반적인 레이아웃 템플릿 파일들이 위치하는 곳입니다.

/config

Rails 환경하의 속성, 라우팅, 데이터베이스, 배포등의 설정에 관한 파일들이 위치합니다.

/environments
[?]
배포모드에 따른 설정 파일들이 위치해 있는 것 같습니다.

/initializers
[?]
초기 설정들이 위치해 있는 것 같습니다.

/db
DB 테이블을 생성하는 schema.rb가 위치하는 곳입니다.

/migrate

DB 스키마의 모든 마이그레이션 정보를 가진 파일들이 위치하는 곳입니다.

/doc
[?]
자동으로 생성되는 문서들이 위치하는 곳 같습니다.

/lib
내부적으로 사용되는 라이브러리들이 위치하는 곳이며, 실행시에 기본으로 path내에 포함되어 있습니다.

/tasks
[?]

/log
실행로그들이 위치하는 곳입니다.

/public
document root에 해당하는 웹환경에서 기본이 되는 폴더 입니다. 사이트의 일반적인 구성요소인 html, javascript, stylesheet, 이미지 파일들이 위치합니다.

/images

사용하는 이미지들이 위치하는 곳입니다.

/javascripts

자바스크립트파일(*.js)들이 위치하는 곳입니다.

/stylesheets

스타일쉬트파일(*.css)들이 위치하는 곳입니다.

/script
rails 프레임워크에서 사용하는 각종 스크립트들이 위치하는 곳입니다.

/performance
[?]
성능측정 도구들이 위치하는 곳 같습니다.

/process
[?]
프로세서들을 관리하는 도구들이 위치하는 곳 같습니다.

/test [?]
유닛, 기능, 통합 테스트등에서 사용되는 곳 같습니다.

/fixtures
[?]
·····················

/functional
[?]
기능 테스트시 사용되는 곳 같습니다.

/intergration
[?]
통합 테스트시 사용되는 곳 같습니다.

/unit
[?]
유닛 테스트시 사용되는 곳 같습니다.

/tmp [?]
레일즈에서 사용하는 임시파일들이 저장되는 곳입니다. 아직 어떤 용도로 사용되는지 확인하지 못했습니다.

/cache
[?]
캐쉬가 저장되는 곳 같습니다.

/pids
[?]
프로세스아이디와 관계된 곳 같습니다.

/sessions
[?]
세션이 저장되는 곳 같습니다.

/sockets
[?]
소켓에서 사용하는 곳 같습니다.

/vendor
어플리케이션에서 사용하는 외부 라이브러리 위치하는 곳입니다.

/plugins
[?]
플러그인이 위치하는 곳 같습니다.

부실한 내용과 곳곳에 위치한 [?] 를 보시면 현재 저의 상태(?)와 많은 관심과 애정이 필요하다는 것을 아실 수 있습니다. 많은 지도 부탁 드리겠습니다. ^^;;

'기타' 카테고리의 다른 글

구글 안드로이드 소스 공개와 마켓 오픈  (2) 2008.10.23
3. Rails 어플리케이션 기본 설정  (4) 2008.10.21
1. Ruby on Rails 설치 및 설정  (4) 2008.10.15
아이팟 터치 2세대  (8) 2008.10.10
OS X 루트계정 활성화  (6) 2008.10.08
AND

Ruby on Rails로 회사 홈페이지를 만들어 보기로 했습니다. Ruby는 몇가지 예제만 만들어 보았고 Rails 역시 간단한 샘플만 따라 해 본 정도입니다.

현재 'rails www'로 프로젝트를 만들어 놓고 관망중인 상태입니다. 실질적으로 만들어 볼려고 하니 경험이 없어 막히는 부분도 많고 진도가 잘 나가지 않네요.

주위에 편하게 물어 볼 사람도 없고 혼자서 계속 삽질만 하고 있습니다. 잘 쓰시는 분들로 부터 지도편달도 받고 배워가는 것을 정리도 하고 동기부여도 할겸 공개적으로 삽질과정을 블로그에 올릴려고 합니다.

제가 설치한 환경은 아래와 같습니다.

  • 리눅스(CentOS 5)
  • Apache 2
  • MySQL 5

아래의 관련 사이트들에서 자료와 문서들을 구할 수 있습니다.


필요한 설치 파일들은 루비온레일즈 다운로드 페이지에 소개되고 링크되어 있습니다. 아래의 방법외에 사용하시는 리눅스 배포본예 따라 yum이나 apt-get을 이용하여 간편하게 설치할 수 있습니다.


1. ruby 설치
루비의 다운로드 페이지에서 최신버젼을 다운로드 받습니다. 현재 안정된 최신 버젼은 1.8.7입니다.

1) 설치
> wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p22.tar.bz2
> tar -xvjf ruby-1.8.7-p22.tar.bz2
> cd ruby-1.8.7-p22
> ./configure
> make
> make test
> make install

2) 확인
쉘상에서 irb를 실행하여 확인할 수 있습니다. irb는 대화형 루비쉘입니다.

> irb
irb> puts "hello"
hello
=> nil
irb> quit


2. RubyGems 설치
RubyGems는 루비 패키지 관리툴입니다. RubyGmes로 루비 프로그램이나 라이브러리등을 손쉽게 설치할 수 있습니다.

> wget http://rubyforge.org/frs/download.php/43985/rubygems-1.3.0.tgz
> tar -xvzf rubygems-1.3.0.tgz
> cd rubygems-1.3.0
> ruby setup.rb


3. Rails 설치
Rails는 위에 설치한 RubyGems로 아래와 같이 간편하게 설치할 수 있습니다.

> gem install rails --include-dependencies


4. MySQL/Ruby 설치
루비에서 MySQL을 사용할 수 있도록 사용할 수 있게 해주는 모듈입니다. 루비에서 공식적으로 지원하는 다른 방법이 있는지는 모르겠습니다.

1) 설치
> wget http://tmtm.org/downloads/mysql/ruby/mysql-ruby-2.8.tar.gz
> tar -xvzf mysql-ruby-2.8.tar.gz
> cd mysql-ruby-2.8pre4
> ruby extconf.rb --with-mysql-dir=/usr/local/mysql
> make
> make install

2) 확인
아래와 같이 test_db.rb 파일을 만들고 쉘상에서 ruby test_db.rb로 실행하여 확인하실 수 있습니다.

require "mysql"
db = Mysql::new("HOST", "USER_ID", "PASSWORD", "DATABASE")
res = db.query("select * from TABLE_NAME")
res.each_hash do |row|
  puts row['FIELD_NAME']
end 


5. passenger 설치
rails는 자체 웹서버를 구동할 수 있지만 아파치와 연동해서 가상 호스트로 사용하는 것이 편하기 때문에 passenger를 설치합니다. passenger외에도 다양한 웹서버가 존재하지만 설치가 가장 간편하기 때문에 passenger를 선택했습니다.

개발시에는 로그나 오류메시지를 친절하게 보여주는 Webrick이나 Mongrel을 사용하는 것이 더 편할 것 같습니다.

1) 설치
현재 버젼은 2.0.3이며 gem으로 설치할 수 있습니다.

> gem install passenger
> passenger-install-apache2-module

2) httpd.conf 파일 수정
메시지를 확인해 보시고 엔터를 입력합니다. 아파치 httpd.conf에 아래의 내용을 추가합니다. (서버의 환경과 버젼에 따라 수정해야될 부분이 있을 수도 있습니다)

LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.0.3/ext/apache2/mod_passenger.so

PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.0.3
PassengerRuby /usr/local/bin/ruby

3) 가상 호스트 등록
httpd-vhosts.conf에 사용할 호스트를 추가하고 아파치를 재시작 합니다. 도메인과 디렉토리는 환경에 맞게 수정합니다.

<VirtualHost *:80>
    ServerName DOMAIN
    DocumentRoot /home/zzerr/www/public
</VirtualHost>


6. 테스트

1) 프로젝트 생성
이제 적당한 디렉토리에서 아래와 같이 실행하여 rails 프로젝트를 생성합니다.

> rails www -d mysql

2) 확인
웹브라우져에서 아파치에 가상호스트로 등록했던 도메인을 입력하여 아래와 같은 메시지가 나오는지 확인합니다.



이제 본격적으로 삽질할 준비를 완료했습니다. 루비온레일즈 초보자의 설치기를 올려 보았는데, 뭐 좋은 거(?) 알고 계신 분들은 많은 조언 부탁드리겠습니다.

'기타' 카테고리의 다른 글

3. Rails 어플리케이션 기본 설정  (4) 2008.10.21
2. Rails 어플리케이션 생성  (0) 2008.10.20
아이팟 터치 2세대  (8) 2008.10.10
OS X 루트계정 활성화  (6) 2008.10.08
nib 파일 둘러보기  (7) 2008.09.01
AND

기타 2008. 10. 10. 15:08
아이팟 터치 2세대 8GB를 구입하고 이틀 써보았습니다. 28만원이란 가볍게 여길 수 없는 가격이지만 여지껏 제가 산 디지털 제품중에 이만큼 가격대비 만족을 주었던 제품은 없었던 것 같습니다.


iCal의 일정들과 주소록에 있던 연락처들을 아이튠즈를 통해 동기화를 시켜 들고 다니면서 맥과 패밀리룩의 UI에서 확인할 수 있다는 것 하나로 본전은 뽑았다는 생각이 들었습니다. 음악이나 동영상 기본적인 멀티미디어 파일을 플레이할 수 있어 좋고, 가속도 센서를 이용한 게임들도 아기자기하게 재미있는 것들이 많네요. 요즘 왠만한 곳에선 Wi-Fi로 연결되니 사파리나 이메일등 인터넷을 사용하는데도 큰 불편함은 없는 것 같습니다.

가장 감동적인 부분은 역시나 UI 였습니다. 물론 터치패드로 동작하지만 단 하나의 홈 버튼은 매우 직관적이며 사용을 쉽게 합니다. (눈에 잘 안뛰게 전원, 볼륨조절 버튼은 있습니다) 입력하는 부분이 걱정되었는데, 오히려 지금 사용하는 QWERTY 키보드를 내장한 애니콜 블랙잭 보다 더 편했습니다. 터치시 효과나 패스워드 입력시에는 잠시 입력된 내용을 확인할 수 있도록 한 후에  * 로 변환되는 모습은 참 인상적이였습니다. 그외 화면전환이나 곳곳에서 보이는 섬세한 에니메이션 효과도 감동적이었고요.

아이팟 터치, 모바일 미, 맥의 아이튠즈, 아이포토등의 어플리케이션과의 찰떡궁합이 사용하는 즐거움을 더 해주는 것 같습니다. 아이폰을 당장 구매할 수 없는 아쉬움을 달래려고 구입했는데, 터치에 핸드폰, 카메라, GPS등의 기능이 추가된 아이폰이 더욱 아쉬워집니다.

아이폰 개발자 등록은 생각지 않고 있었는데, 더 재미있게 가지고 놀기 위해선 이제 등록을 해야 할 것 같습니다. 아이팟 터치의 메뉴얼은 애플의 iPod 메뉴얼 사이트에서 받을 수 있습니다.

'기타' 카테고리의 다른 글

2. Rails 어플리케이션 생성  (0) 2008.10.20
1. Ruby on Rails 설치 및 설정  (4) 2008.10.15
OS X 루트계정 활성화  (6) 2008.10.08
nib 파일 둘러보기  (7) 2008.09.01
OS X의 번들(Bundle) 둘러보기  (2) 2008.08.28
AND

기타 2008. 10. 8. 18:17
루트계정을 활성화 할려고 했더니 10.5는 10.4에서 사용하던 NetInfo가 보이지 않았습니다. 검색을 해보니 어플리케이션/유틸리티 폴더에서 '디렉토리 유틸리티'에서 변경이 가능했습니다. OS X의 각 버젼별로는 애플에서 제공하는 Enabling and using the "root" user in Mac OS X 문서에 잘 설명되어 있습니다.
디렉토리 유틸리티를 실행하고 좌측하단의 자물쇠를 클릭한 후, 이름과 암호를 입력합니다. 메뉴의 편집에서 Root 사용자 활성화를 클릭합니다.



Root 계정의 패스워드를 입력하고 승인 버튼을 클릭합니다.


이제 터미널에서 root로 로그인이 가능합니다. sudo를 사용하면 OS X에서는 root 계정으로 로그인이 필요하지 않지만, root 계정이 편하신 분들은 활성화 해놓고 사용하시면 될 것 같습니다.

'기타' 카테고리의 다른 글

1. Ruby on Rails 설치 및 설정  (4) 2008.10.15
아이팟 터치 2세대  (8) 2008.10.10
nib 파일 둘러보기  (7) 2008.09.01
OS X의 번들(Bundle) 둘러보기  (2) 2008.08.28
맥 OS X에서 CHM 파일 보기  (4) 2008.08.19
AND

기타 2008. 9. 1. 13:21
1. nib 파일이란?
Nib는 코코아 어플리케이션에서 사용하는 파일로 인터페이스빌더에서 생성한 윈도우, 메뉴, 컨트롤과 사용자가 만든 오브젝트들의 레이아웃과 속성등의 정보와 오브젝트간의 연결과 바인딩등의 정보를 포함하고 있는 파일입니다.

윈도우즈의 rc 파일과 개념이 비슷하지만 소스코드에서 처리하던 메시지 처리함수 연결과 바인딩등의 더 포괄적인 정보를 가지고 있습니다.

Xcode 3.1에서는 개발과정에선 nib 대신 xib란 XML 포멧의 파일을 사용합니다. (개발이 완료되고 릴리즈된 후에 nib의 역활은 이전과 동일합니다.) 3.1 이전의 자료에서는 Xcode에서 nib를 더블클릭하여 관련된 nib를 인터페이스 빌더로 실행하는 것으로 나와 있지만, 현 3.1 버젼에서는 xib를 더블클릭하여 실행합니다.


2. MainMenu.nib
사용자 삽입 이미지
MainMenu.nib는 어플리케이션에서 사용하는 메뉴, 메인윈도우, Application등 기본적인 오브젝트를 포함하고 있습니다. MainMenu.nib의 File's Owner는 NSApplication이며 또는 사용자가 생성한 NSApplication의 서브클래스를 지정할 수 있습니다. 그렇기 때문에 MainMenu.nib는 NSApplication에 의해 실행 초기(이벤트 루프에 들어 가기 전)에 자동으로 로딩됩니다.

그러므로 가능하면 다른 오브젝트나 컨트롤, 윈도우등은 모듈별로 각각의 nib를 만들어 작게 유지하며, 해당 모듈의 실행 시에만 메모리에 올라 오도록 하는 것이 좋습니다. MainMenu.nib가 많은 오브젝트나 리소를 가지고 있으면, 초기 런칭 속도가 느려지며 처음부터 많은 메모리를 사용하게 됩니다. 

MainMenu 외에 사용자가 직접 nib를 로딩해야 할 경우에는 NSBundle을 사용하여 아래와 같이 호출합니다.

[NSBundle loadNibNamed:@"[nib file name]" owner:self];


3. nib 파일 로딩
nib 파일은 로딩 시에 아래와 같은 순서로 처리됩니다.

1) 메모리 로딩
해당 Nib에 등록된 오브젝트, 관련된 리소스(이미지, 사운드 파일등)를 메모리 또는 캐쉬로 불러 옵니다.

2) 오브젝트 Unarchive
nib에 냉동포장 되어있던 오브젝트들을 해동합니다. 인터페이스 빌더의 오브젝트들에게는 initWithCoder 메시지를 발송하며, NSView의 서브클래스들에게는 initWithFrame, 그외 오브젝트들에게는 init 메시지를 발송합니다. 그리고 인터페이스 빌더에서 설정한 정보에 따라 오브젝트들간의 연결(actions, outlet)과 바인딩을 설정합니다.

3) awakeFromNib
nib내의 모든 오브젝트들에게 awakeFromNib 메시지를 발송하여, 오브젝트가 생성이 완료되었음을 알립니다. nib내의 오브젝트들은 이 메시지를 이용하여 초기화와 관련된 처리를 할 수 있습니다.

사용자 삽입 이미지
그리고 nib내의 윈도우중에 인터페이스 빌더의 Window/Behavior내의 'Visible at Launch' 속성이 체크되어 있는 윈도우를 오픈합니다.



4. 로컬라이징
nib 파일의 로컬라이징은 매우 쉽습니다. Xcode 내에서 해당 xib를 마우스 우클릭하여 나온 메뉴중에 'Get Info'를 클릭하여 정보창을 오픈합니다.
사용자 삽입 이미지
하단의 Add Localization 버튼을 클릭하여 해당언어를 추가합니다.

사용자 삽입 이미지
XCode에서 좌측과 같이 Korean이 추가되어 있는 것을 확인할 수 있습니다. 프로젝트 디렉토리내에는 Korean.lproj 디렉토리가 추가되고 그 안에 한국어 버젼의 MainMenu.xib이 위치합니다. 각 nib마다 컨트롤의 타이틀과 텍스트를 해당언어로 변경하면 됩니다.

어플리케이션이 실행되면 시스템에 설정된 현재언어를 우선으로 해당 nib가 존재할 경우에는 그 언어의 nib 파일이 로드됩니다.

nib에 대해 자세한 사항은 ADCResource Programming Guide 문서를 참조하시기 바랍니다.

'기타' 카테고리의 다른 글

아이팟 터치 2세대  (8) 2008.10.10
OS X 루트계정 활성화  (6) 2008.10.08
OS X의 번들(Bundle) 둘러보기  (2) 2008.08.28
맥 OS X에서 CHM 파일 보기  (4) 2008.08.19
ClassDumper - 응용프로그램 Class Viewer  (0) 2008.08.07
AND

1. 번들이란?
번들은 일반 사용자에게는 일반적으로 하나의 파일로 보이지만, 내부적으로 많은 서브디렉토리와 파일을 가지고 있는 특정한 목적에 사용되는 디렉토리 입니다. 번들은 OS X에서 어플리케이션, 동적라이브러리, 플러그인등 실행 가능한 용도외에도 키노트나 페이지의 복잡한 문서구조에도 사용됩니다.

이런 구조는 복잡한 환경과 옵션을 각각의 서브 디렉토리로 저장하고, 내부에서 사용하는 파일들을 번들 내부에 감춤으로써 보다 쉽고 편리하게 관리할 수 있습니다. 

1) 번들의 종류
대표적인 어플리케이션 번들을 포함하여 번들에는 다양한 종류가 있습니다. 번들의 이름은 확장자로 구별이 되기도 하는데 아래는 흔히 볼수 있는 번들의 확장자입니다.

  • .app - 일반적인 어플리케이션 번들입니다.
  • .wgdt - 데쉬보드에서 실행되는 위젯입니다.
  • .framework - 동적 라이브러리와 관련된 *.h, *.dylib와 이미지나 사운드의 리소스와 관련 문서들을 포함한 프레임워크 번들 입니다.
  • .bundle - 필요로 하는 어플리케이션 실행시에 동적으로 로드되고 링크되어 필요한 모듈을 제공하는 번들입니다.
  • .pkg - PackageMaker를 사용하여 시스템에 인스톨되는 패키지 번들입니다.

이외에 다양한 목적들로 사용되는 많은 번들이 있습니다. 번들은 종류에 따라 내부구조가 다르게 구성되어 있습니다.

2) info.plist
실행가능한 대부분의 번들들은 내부에 자신의 정보를 가지고 있는 info.plist란 XML 형식의 파일을 가지고 있습니다. (plist 파일은 /Developer/Applications/Utilities/Property List Editor를 이용하면 편리하게 관리할 수 있습니다) info.plist의 내용들은 시스템들이 관리할 수 있는 정보에 대해서 알려 줍니다. 아래는 Ruby.framework의 info.plist의 내용입니다.

사용자 삽입 이미지

info.plist에는 아이콘, 번들의 종류, 실행파일, 버젼등의 다양한 정보를 가지고 있습니다. 위는 Bundle OS Type code가 FMWK로 이 번들은 프레임워크임을 나타냅니다. (어플리케이션은 APPL입니다)

또한 info.plist에는 실행파일이 처리 가능한 문서들의 타입에 관한 정보도 포함되어 있습니다. 아래는 iTunes의 info.plist의 Document types중 9번째 아이템인 MP3 파일에 관한 정보입니다.

사용자 삽입 이미지

문서의 타입명과 아이콘, 해당 파일의 역활이 설정되어 있습니다. 해당 파일에 대한 어플리케이션의 역활을 Editor, Viewer, Shell등으로 지정할 수 있습니다.


2. 번들의 내부구조
1) FrameWork
아래는 /System/Library/Frameworks/ 아래 있는 Ruby.Framework의 내부구조입니다. inpo.plist 파일은 Versions/1.8/Resources 디렉토리 아래 있습니다.

사용자 삽입 이미지

Headers/
Versions/1.8/Headers의 심볼릭 링크입니다.
Resources/
Versions/1.8/Resources의 심볼릭 링크입니다.
Ruby
Versions/1.8/usr/lib/libruby.1.dylib 파일의 심볼릭 링크입니다.
Versions/
현재 시스템에서 루비 1.8만있기 때문에 1.8 디렉토리만 있으며, Versions 밑에는 여러 버젼의 디렉토리를 포함할 수 있습니다.
1.8/
각 서브 디렉토리에는 헤더파일, 동적 라이브러리, 실행파일과 필요한 리소스등, 프레임워크에서 실제 사용되는 파일들로 구성되어 있습니다.
current/
1.8 디렉토리가 심볼릭 링크가 되어 있으며 현재버젼을 의미합니다.
 
사용자 삽입 이미지

터미널에서 확인해 보면 ruby의 실행파일은 위 루비 프레임워크의 Current에 링크된 버젼을 사용하고 있음을 알 수 있습니다.

2) Application
사용자 삽입 이미지
어플리케이션의 번들은 좌측과 같이 해당 어플리케이션을 우클릭한 후에 '패키지 내용보기'를 클릭하면 확인할 수 있습니다.


아래는 이전에 소개했던 ClassDump라는 어플리케이션의 번들 구조입니다.

사용자 삽입 이미지

Application은 기본적으로 Contents 디렉토리 밑에 info.plist 파일, 실행파일이 위치하는 /MacOS 폴더와 함께 다양한 리소스를 포함하고 있는 /Resource 디렉토리로 구성되어 있습니다. /Resource 디렉토리에는 nib 파일들과 이미지, 사운드, 동영상등의 리소스 파일들이 위치합니다.

또한 /Resource 디렉토리 밑에는 각 언어별로 로컬라이징된 리소스들이 *.lpoj (localized project folder) 확장자를 가진 서브디렉토리들이 위치하고 있습니다. English.lpoj에는 이름과 같이 영문으로된 문자, 이미지, nib등의 리소스가 포함되어 있습니다. English.lpoj만 있기 때문에 이 어플리케이션은 영어외에는 지원하지 않는 것을 알 수 있습니다.

어플리케이션 번들에는 생성툴에서 만들어진 디렉토리, 파일 외에 사용자가 용도에 따라 서브디렉토리를 만들거나 데이터 파일을 저장할 수 있습니다. 위의 Resources/ 디렉토리에는 class-dump란 커멘드라인 유틸리티가 포함되어 있습니다. (아마 GUI 뒷단에서 시스템에 관련된 실질적인 처리를 하고 파이프로 GUI 어플리케이션과 통신을 하는 핵심 유틸리티 같습니다)

이외에 어플리케이션, 프래임워크등의 또 다른 번들도 내부에 포함할 수 있으며, 파이어폭스의 경우에는 윈도우즈 파이어폭스의 폴더내의 파일들이 /MacOS 디렉토리내에 실행파일과 같이 위치하고 있습니다.

사용자 삽입 이미지
좌측은 페이지에서 작성된 번들파일의 내용입니다. 페이지는 데이터를 xml 형식으로 gz으로 압축하여 보관하는 것으로 짐작할 수 있습니다.

파인더의 퀵룩에서 빠른 처리를 위해 QuickLook 디렉토리에 썸브네일 이미지를 따로 보관하고 있습니다.

일부만 소개했지만 번들은 이와 같이 OS X에서 다양하게 사용되고, 중요한 부분을 차지하고 있습니다.

코코아에서는 NSBundle을 이용하여 번들에 접근하고 관리할 수 있습니다. 번들 프로그래밍에 대한 자세한 내용은 ADCBundle Programming Guide 문서를 참고하시기 바랍니다.

'기타' 카테고리의 다른 글

OS X 루트계정 활성화  (6) 2008.10.08
nib 파일 둘러보기  (7) 2008.09.01
맥 OS X에서 CHM 파일 보기  (4) 2008.08.19
ClassDumper - 응용프로그램 Class Viewer  (0) 2008.08.07
레밍스와 유사한 게임 - Pingus  (6) 2008.07.23
AND

간혹 euc-kr로된 파일들을 utf-8로 변경할 경우가 있어 파이썬으로 아래와 같이 iconv를 이용하는 간단한 스크립트를 만들어 사용했습니다.

#!/usr/bin/python

import os, sys

for arg in sys.argv[1:]:
    if os.path.isfile(arg):
        os.rename(arg, arg + '.chg')
        command = 'iconv -f euc-kr  -t utf-8 ' + arg + '.chg' + ' > ' + arg
        os.system(command)

파이썬 인자관리의 편리한 기능으로 위와 같이 단순한 코드로도 '*.txt'나 '*'와 같은 와일드카드도 자동으로 처리되어 별다른 불편함 없었습니다.

그런데 이번에는 반대로 utf-8을 euc-kr로 변경할 경우가 생겨 스크립트를 변경하면서 옵션을 추가하여 보았습니다. 몇 번 사용해 보았는데 별 문제가 없어 올려 봅니다. (오류나 잘못된 부분이 있으면 알려주시면 감사하겠습니다. ^^;;) 기본 사용법은 아래와 같습니다.

사용자 삽입 이미지

1) 옵션
  • -h: 위와 같은 사용법을 출력합니다.
  • -r: 서브디렉토리의 파일들도 변환합니다.
  • -f: 디렉토리가 아닌 인자로 넘어 온 파일들을 변경합니다.
  • -x: 이전 파일의 백업파일을 남기지 않습니다.
  • -d: 작업 디렉토리를 지정합니다.
  • -s: 이전 파일을 백업할 파일 확장자를 지정합니다.
  • -e: 변경할 파일의 확장자를 지정합니다.
  • -o: 변경될 파일의 현재 문자셋을 지정합니다.
  • -n: 변경될 문자셋을 지정합니다.

-f는 파일 단위로 -d는 디렉토리 단위로 변환하며, 두 옵션을 같이 사용할 수 없습니다. 현재 파일의 문자셋은 euc-kr로 변경될 문자셋은 utf-8이 기본으로 설정되어 있습니다. -d 옵션에선 사고(?)를 방지하기 위해 변경될 파일의 확장자가 'txt'가 기본으로 설정되어 있으며, 이는 -e[확장자] 옵션으로 변경할 수 있습니다.

이전 파일은 [파일명].chg로 동일 디렉토리에 저장되며, 이 확장자는 -s[확장자] 옵션으로 변경할 수 있습니다. -x 옵션을 사용하면 이전 파일을 저장하지 않습니다.

2) 사용예
* 현재 디렉토리의 data.txt 파일 변경 (euc-kr -> utf-8)
$ chgchar -f data.txt

* 현재 디렉토리의 data.txt 파일 변경 (utf-8 -> euc-kr)
$ chgchar -outf-8 -neuc-kr -f data.txt

* 현재 디렉토리의 *.txt 파일 변경
$ chgchar -f *.txt

* test 디렉토리 내의 모든 txt 파일 확장자를 가진 모든 파일 변경
$ chgchar -d./test -etxt

* 현재 디렉토리 내의 모든 파일과 서브 디렉토리의 파일도 변경
$ chgchar -r -e* -d./

3) 주의사항
파일을 변경하는 위험한(?) 작업인데 테스트와 사용횟수가 부족하기 때문에, 아래의 사항에 유의하시면서 사용하셔야 합니다.
  • 백업파일을 저장하지 않는 '-x' 옵션 사용하지 않는 것이 좋습니다.
  • 와일드카드(*)는 가능한 사용하지 않는 것이 좋습니다.
  • 대상 디렉토리와 파일을 확인하고 실행해 주세요.

4) 다운로드
아래의 압축파일을 다운로드 받아서 압축을 푸시고 'chmod +x ./chgchar'로 파일의 실행권한을 추가하시고 사용하시면 됩니다.

* 2008.10.21 추가
"nakada님으로 부터 파일 접근권한을 설정하지 않은 문제가 있는 것을 알게되었습니다. 자세한 내용은 nakada님의 포스팅을 참조하시기 바랍니다. nakada님이 작업하신 내용은 이곳에서도 변경해 놓았습니다. nakada님께 감사 드립니다. ^^"



* 아래의 'more..'를 클릭하시면 스크립트의 내용을 확인하실 수 있습니다.

'기타 > 자잘한 Tip' 카테고리의 다른 글

sqlite3에서 csv import/export  (0) 2009.08.26
Python에서 sqlite3 사용하기  (1) 2009.08.26
Xcode에서의 Ruby on Rails  (8) 2008.08.20
Dashcode로 올블로그 RSS 위젯 만들기  (2) 2008.05.22
자주 사용하는 MySQL 명령어  (4) 2008.02.28
AND

사용자 삽입 이미지
OS X 10.5에는 Ruby(1.8.6), Rails(1.2.6), SQLite3(3.4.0)가 기본으로 설치되어 있습니다. 그렇기 때문에 추가적인 설치나 설정 없이 편리하게 RoR 환경에서 손쉽게 웹사이트를 만들 수 있습니다.

오늘 오전에 Ruby에 관련된 포스팅을 해서 그런지 문득 Xcode에서도 RoR 환경을 지원하는지 궁금하여 자료를 찾아 보았습니다. ADCDeveloping Rails Applications on Mac OS X Leopard 에서 관련된 내용을 찾을 수 있었습니다. 이 문서를 참조하여 간단히 설명해 보겠습니다.


1. Rails 업그레이드
Xcode에서 사용하기 위해서는 Rails 2.*로 업그레이드를 해야 합니다. (주의: 조금 지난 서적들과 예제들은 Rails 1.*로 설명이 되어 있습니다. 업그레이드를 하시면 변경된 부분 때문에 따라하기 어려울 수 있습니다.)

터미널에서 아래와 같이 명령어를 실행하여 최신버젼으로 업그레이드를 합니다.
$ sudo gem update --system
$ sudo gem install rails
$ sudo gem update rake
$ sudo gem update sqlite3-ruby

설치가 완료된 후에 'rails -v'로 버젼을 보면 현재 '2.1.0'으로 업그레이드 되어 있는 것을 확인할 수 있습니다.


2. 프로젝트 생성
터미널에서 아래의 명령어를 실행하여 프로젝트를 생성합니다. 결과가 출력되면서 해당 디렉토리 밑에 WishList란 디렉토리가 생성되어 있습니다.

$ rails WishList
$ cd WishList

WishList 디렉토리에서 아래와 같이 명령어를 입력하여 MyWish의 scaffold를 생성합니다.

$ script/generate scaffold MyWish name:string price:integer url:string memo:text


3. Xcode Organizer
1) WishList 등록
Xcode를 실행하고 메뉴에서 Window/Organizer를 클릭합니다.   
사용자 삽입 이미지

위와 같이 Organizer가 실행되되면 finder에서 위에서 만든 WishList 디렉토리를 좌측의 PROJECTS & SOURCES가 있는 영역으로 드래그하여 가져다 놓습니다. 아래와 같이 PROEJCTS & SOURCES 아래에 WishList가 등록된 것을 확인합니다.
사용자 삽입 이미지
목록에서 소스파일을 선택하면 좌측 편집창에서 수정할 수 있습니다.
사용자 삽입 이미지

2) migration
추가된 WishList를 클릭한 후에 툴바의 Action을 클릭한 채로 있으면 아래와 같이 실행 메뉴가 나옵니다. db:migrate를 선택합니다.

사용자 삽입 이미지

아래와 같이 성공적으로 실행되었다는 메시지창이 출력됩니다.
사용자 삽입 이미지

3) 웹서버 실행
사용자 삽입 이미지
툴바에서 Run을 실행하면 초기 설정창이 오픈됩니다. 좌측의 하단에 [+] 버튼을 클릭하고 좌측과 같이 'New Shell Script'를 선택합니다.





아래와 같이 제목을 'run server'로 변경하고 Directory를 'Top Level Organizer Item'으로 선택합니다. 그리고 Command에 'script/server'를 입력한 후 OK 버튼을 클릭하여 저장합니다.

사용자 삽입 이미지

실행되면 아래와 같이 서버가 3000 포트에서 실행되고 있다는 것을 확인할 수 있습니다.
WEBrick으로 실행될줄 알았는데 친절하게 Mongrel도 이미 설치되어 있는 것 같습니다.
사용자 삽입 이미지

4. 테스트

사파리나 파이어폭스의 주소창에서 'http://localhost:3000/'을 입력하면 아래와 같이 Ruby on Rails의 기본페이지를 확인할 수 있습니다.
사용자 삽입 이미지

이제 다시 주소창에서 http://localhost:3000/my_wishes 를 입력합니다. 목록 하단의 'New my wish'를 클릭하여 아래와 같은 입력폼이 나오면 각 필드를 입력 후에 하단의 'Create' 버튼을 클릭합니다.

사용자 삽입 이미지

목록으로 돌아 오면 아래와 같이 입력한 내용이 등록되어 있음을 확인할 수 있습니다.

사용자 삽입 이미지

터미널에서도 SQLite을 실행하여 테이블과 레코드를 확인할 수 있습니다.

사용자 삽입 이미지

혹시나 RoR을 Xcode를 이용할 수 있는지 알아 보았는데, 제가 아직 방법을 잘 몰라서 그런지 오히려 그냥 터미널에서 개발하는 것 보다 더 불편한 것 같습니다.

짧은 생각으로는 Ruby on Rails + (Prototype + script.aculo.us)가 최상의 웹 개발환경인 것 같은데, 생각 처럼 그렇게 많은 곳에서 사용하지는 않는 것 같습니다. 제가 모르는 어떤 이유가 있는 것 같습니다.
AND

몇일 전에 받은 문서중에서 MS의 CHM(Compiled HTML Help)파일 포맷이 있어 맥에서도 볼 수 있는 툴이 있는지 검색해 보았습니다. 애플의 다운로드 페이지에서 찾아 보니 쓸만한 어플리케이션이 두개가 있었습니다. ArCHMokiCHM이란 어플리케이션 입니다. 많이 사용하지는 못했지만 둘다 UI와 기능은 거의 같아 보입니다.

사용자 삽입 이미지 사용자 삽입 이미지
AND

사용자 삽입 이미지
ClassDumper는 Giant Robot Software에서 제공하는 Objective-C로 제작된 코코아 어플리케이션의 class를 보여주는 무료 툴입니다. 애플의 다운로드 페이지 또는 해당 사이트의 ClassDumper 페이지에서 다운로드 받을 수 있습니다.

아래는 ClassDump가 실행된 모습입니다.
사용자 삽입 이미지

Open with application에서는 생성된 내용을 확인할 에디터를 선택합니다. TextEdit, Xcode, Smultron등 맥에 설치된 다양한 텍스트 에디터중 하나를 선택할 수 있습니다.

Result for architecture에서는 Mach-O 실행파일의 멀티아키텍쳐중 하나를 선택합니다. 결과가 다를 경우가 많지 않기 때문에 선택을 하지 않아도 됩니다.

그리고 그외 옵션을 선택한 후에 원하는 어플리케이션의 아이콘을 드래그 해서 독에 실행된 ClassDumper에 드랍하면 [어플리케이션 이름].h 파일이 위에서 지정된 텍스트 에디터에서 오픈됩니다.

아래는 많이 쓰는 FTP 클라이언트인 Cyberduck을 ClassDump를 이용해 생성한 헤더파일(Cyberduck.h)의 앞부분 일부의 모습입니다.

/*
 *     Generated by class-dump 3.1.2.
 *
 *     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2007 by Steve Nygard.
 */

struct CGFunction;

struct _CTGradientElement {
    float _field1;
    float _field2;
    float _field3;
    float _field4;
    float _field5;
    struct _CTGradientElement *_field6;
};

struct _NSPoint {
    float _field1;
    float _field2;
};

struct _NSRect {
    struct _NSPoint _field1;
    struct _NSSize _field2;
};

struct _NSSize {
    float width;
    float height;
};

struct _NSZone;

/*
 * File: /Applications/Cyberduck.app/Contents/MacOS/Cyberduck
 * Arch: Intel 80x86 (i386)
 */

@protocol NSCoding
- (void)encodeWithCoder:(id)fp8;
- (id)initWithCoder:(id)fp8;
@end

@protocol NSCopying
- (id)copyWithZone:(struct _NSZone *)fp8;
@end

@interface CDListView : NSTableView
{
    BOOL mBrowserWasDoubleClicked;
    int mBrowserEditingColumn;
    int mBrowserEditingRow;
    NSMutableString *select_string;
    NSTimer *select_timer;
    BOOL quickLookAvailable;
}

+ (id)_typeAheadSelectionColumn;
+ (id)_localSelectionColumn;
- (void)awakeFromNib;
- (BOOL)acceptsFirstMouse:(id)fp8;
- (void)dealloc;
- (void)handleBrowserClick:(id)fp8;
- (void)handleBrowserClickOffloaded:(id)fp8;
- (void)handleBrowserDoubleClick:(id)fp8;
- (void)cancelOperation:(id)fp8;
- (void)textDidEndEditing:(id)fp8;
- (id)menuForEvent:(id)fp8;
- (struct _NSRect)previewPanel:(id)fp8 frameForURL:(id)fp12;
- (void)keyDown:(id)fp8;
- (void)selectRow;
- (void)selectRowWithTimer:(id)fp8;
- (void)clearSelectString:(id)fp8;
- (id)dragImageForRows:(id)fp8 event:(id)fp12 dragImageOffset:(struct _NSPoint *)fp16;
- (id)dragImageForRowsWithIndexes:(id)fp8 tableColumns:(id)fp12 event:(id)fp16 offset:(struct _NSPoint *)fp20;

@end

structure와 class의 선언된 모습이 위와 같이 출력되었습니다. 바이너리에 저장되지 않은 메소드의 인자는 원래 이름이 아니라 fp8, fp12, fp16등 스택의 위치로만 표현되는 것 같습니다. Cyberduck의 결과물은 291라인이지만 mail 같은 큰 어플리케이션은 13,240 라인으로 매우 깁니다.

애플의 소프트웨어 같이 잘 만들어진 소프트웨어들의 구조나 클래스 디자인, 명명규칙등을 알아 볼 수 있는 재밌고 유용한 툴입니다.
AND

사용자 삽입 이미지
최근에 애플 사이트에서 다운로드 받아서 시작한 게임입니다. 애플에서 링크된 파일은 인텔맥 전용으로 윈도우 또는 PPC는 핑구스 홈페이지에 가서 각각의 버젼을 다운로드 받으시면 됩니다. 팽귄을 보시면 짐작하시겠지만 GNU GPL을 따르는 무료 게임입니다.

나이가 좀 있으신(?) 분들은 오래전 도스에서 재미있게 플레이 하던 레밍스를 기억하실 것입니다. 해당 사이트의 소개를 보면 1998년 부터 레밍스 게임의 무료 버젼을 만들기 위해서 시작된 프로젝트라고 합니다. 레밍스와 같이 이게임도 팽귄들에게 적당한 기술을 지정하여 난관을 뚫고 집으로 돌아가도록 하는 게임입니다.
 
치 후에 게임을 실행하면 해상도를 설정하는 창이 뜹니다. 적당한 해상도 또는 전체화면을 선택하고 Play 버튼을 클릭합니다. 전체화면이 아닐 경우 800X600에서 최적화 되어 보입니다. 창 크기에 맞게 확대/축소를 하지 않아 800X600이하에서는 화면이 잘려 나오고 그 이상에서는 빈 공간이 나옵니다. 아래는 시작화면 입니다.
사용자 삽입 이미지


작하면 'Tutorial Island' 레벨부터 시작됩니다. 패키지 내부를 보니 levels 디렉토리 밑에 'tutorial'외에 'halloween', 'volcano', 'wip', 'playable'등의 디렉토리가 있습니다. 아마'Tutorial Island'를 클리어 하면 다른 레벨들도 플레이할 수 있을 것 같은데 확실하지는 않습니다. 10년동안 진행된 프로젝트가 아직도 0.7 버젼을 달고 있는 것을 보면 안될 수도 있다는 생각이 듭니다. 튜토리알을 완료해서 확인해보고 포스팅에 추가 하겠습니다.
사용자 삽입 이미지


단 좌측의 'Show Story?' 버튼을 클릭하면 스토리가 소개됩니다. 다 읽지는 않았지만 기온이 따뜻해져 팽귄이 이주 한다는 이야기 인 것 같습니다. 대부분 사람들이 케릭터가 팽귄이고 대규모로 몰려 다녀야 한다면 요새 지구 온난화도 문제가 되니 비슷한 스토리를 생각해 낼 것 같습니다. 스토리에 동화되기 쉽습니다. ^^;;
사용자 삽입 이미지


임이 시작된 모습니다. 좌측에 보이는 팽귄 모양의 버튼들이 각 스테이지에서 사용할 수 있는 팽귄의 기술들입니다. 벽을 파고, 바닥을 뚫고, 자폭하고, 다른 팽귄들이 못가도록 막고, 다리를 놓고, 점프하는 등의 기술을 선택할 수 있으며, 옆의 숫자는 기술을 사용할 수 있는 남은 횟수입니다.

마우스 왼쪽 버튼은 기술이나 해당 팽귄을 선택할 수 있고, 오른쪽 버튼을 클릭한 채로 드래그 하면 맵의 다른 영역으로 이동합니다.
사용자 삽입 이미지

사용자 삽입 이미지
우측 하단에 있는 이 버튼은 게임을 잠시 중지(Pause) 시킬 때 사용합니다.



사용자 삽입 이미지
이  버튼은 빠른 속도로 게임을 진행시킬 때 사용합니다. 팽귄의 진로가 확보되었으면 이 버튼을 클릭하여 빠르게 해당 스테이지를 종료 할 수 있습니다.


사용자 삽입 이미지
이 버튼을 클릭하면 화면상의 모든 팽귄이 자폭 합니다. 게임을 종료할 경우나 진로를 막는 기술(Blocker)이 적용되어 정지된 팽귄들을 제거하여 다음 스테이지로 진행해야될 경우에 사용합니다.

사용자 삽입 이미지
좌측 하단에는 전체 맵의 모습과 현재 위치를 확인할 수 있는 미니맵이 있습니다. 스타크래프트와 동일한 위치에 있어 확인이 쉽습니다.



임 시작 화면에서 Editor를 클릭하면 아래와 같이 스테이지 에디터로 사용자가 직접 스테이지를 작성할 수 있습니다.
사용자 삽입 이미지

* 2008.07.24 추가
초기화면에서 Levelsets란 메뉴를 그냥 넘겨 보았는데, 다시 해보니 이 메뉴가 정식 레벨인 것 같습니다. 클릭하면 Halloween 2007이란 레벨을 선택할 수 있습니다. 8개의 스테이지가 있고 잠깐 해 보았는데 역시 튜토리얼보다 어려운 것 같습니다. 플레이를 더 해보고 내용을 보충하겠습니다. 
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지

캐릭터도 귀엽고 레밍스와 게임방법도 동일하고 텀블벅스에 이어 다시 한번 즐길 수 있는 게임을 찾은 것 같습니다.
AND

digg에서 맥과 PC를 비교한 재미있는 이미지를 보았습니다. 역시나 끝없이 반복되는 민감한 주제라 해당 글타래에선 열띤 논쟁이 벌어지고 있습니다.
사용자 삽입 이미지
(출처:duodito.se)

몇달전 워런티 기간이 지난 맥미니가 고장이 나서 수리를 맡겼습니다. 비용이 많이 들더군요. 파워 아니면 보드 쪽 문제인 것 같은데 위 이미지와 같은 맥미니의 하드웨어 때문에 주위에 교체해서 테스트할 수 있는 하드웨어도 없고 저 혼자서는 어떻게 해볼 수가 없었습니다. 하지만 PC가 문제가 있을 때는 대부분 저 스스로 해결합니다. 이런 점도 PC의 장점이겠죠. 그러나 저 같은 경우에는 맥쪽의 장점이 더 끌리기 때문에 여러 단점을 감수하고 맥을 사용하는 것 같습니다.

위의 이미지가 등장하고 OS에 관해서는 맥 사용자 만큼 열성적인 우분투 사용자들이 가만히 있지는 않았습니다. 곧이어 아래의 이미지의 패러디 버젼이 등장했습니다. 일단 크기에서도 PC와 맥을 합친 것 만큼 자리를 차지하고 있습니다. 그리고 저런 트럭을 뭐라 부르는지는 잘 모르겠지만 역시 Geek스럽다는 생각이 드네요. ^^;;

사용자 삽입 이미지
(출처: ralree.com)

사실 안티 애플, 안티 우분투가 아닌 이상에는 대부분의 PC 사용자들은 이런 공방전에 별 관심이 없는 것 같습니다. 상대적으로 극소수의 OS X와 우분투 사용자들은 항상 관심에 목말라 하는 것 같습니다. ^^
AND

오늘 모바일미를 신청하고 가입했습니다. 어제 가입할려고 했는데 아래와 같은 메시지가 출력되면서 가입을 할 수 없었습니다. 가는 날이 장날이라고 정기점검 시간이었나 봅니다. 메시지가 영어, 독일어, 스페인어, 일어인 것 같은데 맞는지는 모르겠습니다. 늘 느끼는 것이지만 아시아에서는 역시 일본이 애플로 부터 대접을 받네요.

사용자 삽입 이미지

현재 모바일미는 60일 무료 트라이얼로 사용할 수 있습니다. 이 기간내에 서비스 해지를 하지 않으면, 가입시에 입력한 신용카드로 매년 미화로 99달러를 지불하는 것 같습니다. 99달러의 기본 서비스는 총 20GB의 용량하며 메일저장 공간으로 10GB, iDsik에서 10GB의 공간을 사용할 수 있습니다.
사용자 삽입 이미지
149달러의 Family Pack은 20GB의 저장공간에 네명까지 아이디를 제공 받아 사용할 수 있습니다. 각자 5GB씩 사용할 수 있는데 용량이 조금 부족해 보입니다. 기본 용량에서 49달러를 내면 20GB를 99달러는 40GB를 추가로 구입할 수 있습니다.

입력정보와 신용카드 정보를 입력하고 가입을 완료하면 아래와 같은 메시지가 출력됩니다.
사용자 삽입 이미지

맥과 아이폰/터치는 당연한 것이고, 간단한 설명을 보니 아마 PC의 아웃룩과도 동기화가 되는 것 같습니다. 'Mac setup'을 클릭해서 들어가 설명대로 시스템 환경설정으로 가보니 닷맥 아이콘이 있었습니다. 혹시나 해서 소프트웨어 업데이트를 해보니 아래와 같은 업데이트 내역이 있었습니다.

사용자 삽입 이미지

사용자 삽입 이미지
제가 업데이트 주기를 너무 길게 해놔서 그런 것 같습니다. '매일' 확인으로 변경했습니다.

업데이트가 되고 맥이 리부팅 된 후에 다시보니 이쁜 'MobileMe' 아이콘으로 변경되어 있었습니다. (이 부분은 제가 착각한 것 같습니다. 집에 와서 해보니 시스템 설정에서 닷맥을 클릭하고 로그인 하니 업데이트가 진행되었습니다.)

아래와 같이 집에 있는 맥과 동기화할 항목을 설정하고 '지금 동기화'를 클릭했습니다. 이제 양쪽에서 '캘린더'와 '연락처'가 동기화 해서 사용할 수 있다는 것이 가장 편리한 것 같습니다.
사용자 삽입 이미지
맥에서 설정을 완료하고 www.me.com 사이트로 갔습니다. 역시 애플의 제품들과 일괄적인 사이트의 디자인이 이쁘네요.
사용자 삽입 이미지

사용자 삽입 이미지
로그인을 하면 좌측 상단에 모바일미의 기능을 요약해 주는 아이콘들을 볼 수 있습니다. 좌측부터 차례대로 메일, 주소록, 일정, 겔러리, iDisk, 계정설정 아이콘입니다. 각각의 기능들은 아래와 같습니다.


1. 메일
메일로 가보니 환영메일이 한통 와 있었습니다. 각 폴더로 항목들의 드래그엔드랍이 가능하기 때문에 웹상에서의 사용도 그다지 불편한 점이 없습니다. 첨부파일은 20MB까지 가능하며, 기본으로 10GB의 메일 저장 공간이 할당됩니다. 메일 주소는 '[아이디]@me.com'으로 사용할 수 있습니다.

지인에게만 주는 개인명함이 있는데 지메일 주소를 넣었습니다. 미리 나왔다면 모바일미 주소를 사용하였을텐데 아쉽습니다.
사용자 삽입 이미지

한글이 깨지는 것을 방지하기 위해 아래와 같이 'Encode outgoing messages using Unicode (UTF-8)' 항목에 체크를 해주셔야 합니다.
사용자 삽입 이미지

2. 연락처
사용자 삽입 이미지
좌측은 제 맥과 동기화가 된 연락처의 화면입니다. 웹에서도 설정에서 성과 이름의 순서를 변경 옵션이 있어 우리나라의 '성 이름'과 같은 순으로 출력할 수 있습니다.

아주 잠깐 써보았지만 속도이외에는 웹 플랫폼이란 불편함이 그다지 느껴지지 않았습니다. 항목을 드래그앤드랍으로 해당 분류에 저장할 수 있고, 분류에서 클릭이나 엔터를 치면 바로 이름을 변경할 수 있습니다.

아래가 연락처 입력화면입니다. 맥에서와 같이 연락처의 종류도 설정할 수 있고, 입력 필드도 화면에서 바로 추가할 수 있습니다.
사용자 삽입 이미지

3. iCal - 일정관리
사용자 삽입 이미지
역시 웹상에서도 맥과 거의 동일한 인터페이스를 제공합니다. 시간대와 날짜에서 더블클릭을 하면 맥과 동일하게 바로 입력이 가능합니다. 키보드의 delete키로 바로 삭제도 가능하고, 역시 드래그엔드랍으로 원하는 위치로 이동이 가능합니다. 웹상에서 이렇게 자연스럽고 부드럽게 맥과 비슷한 인터페이스를 제공하는 것이 놀랍습니다.

4. 겔러리
사용자 삽입 이미지
겔러리에서 직접 이미지를 선택해서 올리거나 iPhoto 하단에서 업로드 할 이미지를 선택하고 '웹 겔러리' 버튼을 클릭하면 자동으로 겔러리에 선택한 이미지들이 등록 됩니다.

이미지가 등록되면 리로드 없이 바로 모바일미의 겔러리에 반영이 됩니다. 이미지를 회전하거나 크기를 조절할 수 있는 슬라이더등이 있습니다.
사용자 삽입 이미지

위 이미지의 우측의 URL은 해당 앨범의 URL이며 브라우져에서 주소를 직접 입력하면 아래와 같이 보여집니다. 동호회 모임등의 사진들은 앨범을 따로 만들어 참가자들에게 주소를 알려 주면 편리하게 사진을 감상할 수 있을 것 같습니다.
사용자 삽입 이미지

5. iDisk

iDisk는 기본 10GB를 사용할 수 있는 웹하드입니다. 집과 사무실에서 작업하기 위해 파일을 메일로 보내거나 USB메모리를 이용했는데, 이제는 간단하게 파일을 공유하여 사용할 수 있을 것 같습니다. 아래는 테스트로 제 맥에 있는 파일 하나를 업로드한 후의 모습입니다.
사용자 삽입 이미지

파인더에서도 내장된 하드와 동일하게 사용할 수 있습니다.
사용자 삽입 이미지

또한 주소는 idisk.ma.com/[아이디]-Public의 주소로 웹을 통해 다른사람들과 공유도 가능합니다.
사용자 삽입 이미지

신청하고 잠깐 살펴 보았는데 1년에 12만원 정도를 투자하는 것이 아깝지 않을 만큼 멋진 기능이 많은 것 같습니다. 아쉬운 것은 모바일미라는 이름답게 아이폰이 있어야만 모바일미를 진정으로 이용할 수 있다는 것입니다. 아이폰에서 모바일미의 사용은 생각만 해도 기대가 부풀어 오릅니다. 제발 좀 빨리 나와주었으면 하는 바램입니다.

'기타' 카테고리의 다른 글

레밍스와 유사한 게임 - Pingus  (6) 2008.07.23
PC vs 맥 vs 우분투의 재미있는 이미지  (10) 2008.07.22
스크래치 사이트 한글화  (0) 2008.07.02
각 언어별 Hello World 출력  (0) 2008.05.08
OS X 코드명과 동물이름  (10) 2008.04.22
AND

오늘 스크래치 사이트를 가보니 사이트가 한글화되어 있었습니다. 오랫만에 방문이라 언제부터 한글을 지원했는지 모르겠습니다. 100% 한글화가 된 것은 아니고 영문으로 된 페이지들이 보이지만 생각지도 않았던 한글로된 스크래치 사이트를 보니 반갑네요.

사용자 삽입 이미지

사용자 삽입 이미지
하지만 사이트 상단의 언어 선택에는 좌측의 이미지와 같이 아직 한글이 없습니다. 영문으로 선택했더니 쿠키에 저장되어서인지 그뒤로 사이트를 방문할 때는 계속 영문으로 나오고 한글로 돌아 갈 방법이 없습니다. 해당 쿠키를 삭제해야 할 듯 합니다.

버젼은 같지만 혹시나 하는 마음에 스크래치를 다운로드 받아서 확인해 보았는데 스크래치 자체에서는 여전히 한글을 지원하지 않았습니다. 사실 스크래치의 메뉴나 스크립트의 한글화 보다는 한글의 입력/출력이 먼저 해결되었으면 좋겠습니다.

사이트나 스크래치의 성격상 자원하신 분이 한글화 작업을 하신 것 같은데, 누구신지 모르지만 수고에 감사 드립니다. ^^

'기타' 카테고리의 다른 글

PC vs 맥 vs 우분투의 재미있는 이미지  (10) 2008.07.22
애플 모바일미 (MobileMe) 둘러 보기  (12) 2008.07.21
각 언어별 Hello World 출력  (0) 2008.05.08
OS X 코드명과 동물이름  (10) 2008.04.22
Xcode 3 시연 동영상  (4) 2008.03.26
AND

이전에 올블로그 위젯을 올린 적이 있는데 RSS 리더기나 다른 좋은 관련 툴들이 많이 있어 업그레이드를 하지 않았습니다. 후에 Dashcode를 이용해 다시 만들어 볼려고 했는데 데모 사용기간이 지나 한동안 잊고 있다가 레오퍼드를 사용하면서 다시 Dashcode를 쓸 수 있게 되었습니다.
 
그래서 Dashcode를 사용하여 다시 만들어 볼려고 했는데, RSS 템플릿을 쓰니 다운로드 받고 설치하는 것 보다 그냥 만드는게 빠를 정도로 너무 쉽기 때문에 RSS 템플릿을 사용하여 위젯을 만든는 방법만 간단하게 설명할려고 합니다.

1. 프로젝트 생성
Dashcode를 처음 사용하시는 분들은 이전 관련 포스팅을 참조 하시면 도움이 되실 것 입니다. 먼저 Dashcode를 실행합니다. 아래와 같이 템플릿 선택화면이 나오면 'RSS 템플릿'을 선택하고 우측 하단의 'Choose' 버튼을 클릭합니다.

사용자 삽입 이미지


2. 기본 이미지/아이콘 변경
아래의 이미지를 다운로드 하여 사용하시거나 원하는 디자인으로 직접 배경과 아이콘 이미지를 사용하셔도 됩니다.

아래와 같이 좌측의 Default Image를 선택한 후에 배경파일(all.png)을 드래그 하여 가져다 놓습니다. 동일하게 하단의 Widget Icon을 선택한 후에 Icon.png 파일을 드래그 하여 놓습니다.

사용자 삽입 이미지


3. 전면(front) 설정
사용자 삽입 이미지

상단에서 front를 선택하면 좌측과 같이 front를 구성하고 있는 목록들을 볼 수 있습니다.

이중에서 fontImg, topRectangleShape, bottomRectangleShape, feedTitle을 선택한 후에 delete 키를 눌러 삭제합니다.

 







다시 배경 이미지 파일을 마우스로 드래그 해서 아래와 같이 위치 시킵니다.
사용자 삽입 이미지


4. RSS URL 설정
사용자 삽입 이미지
이제는 RSS를 가져올 주소를 설정해 보겠습니다. 위의 과정은 생략하시고 이 부분만 설정하시면 3초만에 자신만의 RSS 리더기를 만들 수 있습니다.

설정을 위해서 좌측과 같이 Provide RSS feed에서 RSS Properties 앞의 삼각형 버튼을 클릭합니다.



화면에서 Properties 하단의 Feed URL 입력 부분에 아래와 같이 올블로그의 '가장 많이 추천 받은 글'의 RSS주소를 입력합니다.
사용자 삽입 이미지


5. 실행
메뉴에서 'File/Save'를 클릭하여 프로젝트를 저장하고 'File/DeployWidget to Dashboard'를 클릭하여 제작한 위젯을 대쉬보드로 보냅니다. 이제 대쉬보드에서 아래와 같이 올블로그 위젯을 보실 수 있습니다.
사용자 삽입 이미지

사용자 삽입 이미지
하단의 설정버튼(i)을 클릭하면 좌측과 같이 출력될 내용의 길이를 설정 할 수 있습니다.

AND

프로그래밍 언어를 설명하는 대부분의 책이나 강좌에는 "Hello World"를 출력하는 간단한 소스로 시작하는 경우가 많습니다.

The Hello World Collection이란 웹페이지에 프로그래밍 언어별로 이 "Hello World"를 출력하는 소스의 목록이 있습니다. 1994년부터 시작된 이 작업은 전 세계 사람들의 도움으로 무려 366가지 언어(또는 라이브러리, 플랫폼)로 있다고 합니다.

흥미있는 몇가지를 살펴 보면 Objective-C는 아래와 같습니다.
#include <stdio.h>
#include <objpak.h>
int main(int argc,char **argv)
{
    id set = [Set new];
    argv++;while (--argc) [set add:[String str:*argv++]];
    [set do:{ :each | printf("hello, %s!\n",[each str]); }];
    return 0;
}

인자로 이름들을 주면 "hello, 이름" 이런식으로 출력되는 것 같습니다. C와의 차이점을 강조하기 위해 약간 오버한 것 같다는 생각도 들지만, 언어별로 특징을 강조하기 위한 것 같습니다.

Cocoa도 따로 있습니다.
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSLog(@"Hello, World!");
    [pool release];
    return 0;
}

목록중에서 제가 그나마 자신있는 언어인 한국어도 있습니다.
Korean  안녕 세상아   (annyeong, sesangah)

그냥 슥슥슥 내리면서 대충 보았는데 재밌는 것도 있고 생소한 것도 있고, 전혀 이해가 되지 않는 것들도 있네요.

'기타' 카테고리의 다른 글

애플 모바일미 (MobileMe) 둘러 보기  (12) 2008.07.21
스크래치 사이트 한글화  (0) 2008.07.02
OS X 코드명과 동물이름  (10) 2008.04.22
Xcode 3 시연 동영상  (4) 2008.03.26
구글 온라인 강좌 - Google Code University  (1) 2008.03.25
AND

저는 동물 관련 다큐를 굉장히 좋아해서 정규방송이나 케이블 또는 특집 프로등을 자주 봅니다. 그 중 고양이과 맹수들은 많은 동물 관련 프로그램에서 자주 다루는 매력적인 동물들입니다. 저도 물론 좋아합니다.

고양이과 맹수들이 오랜 기간 사냥을 위하여 진화된 날카로운 송곳니와 발톱, 유연하고 빠른 몸을 이용해 자신보다 덩치가 훨씬 큰 동물들을 사냥하는 모습은 경이롭고 두렵기까지 합니다.

사용자 삽입 이미지

애플은 OS X의 코드명에 이 고양이과 맹수들의 이름을 사용하고 있습니다. 현재까지 나온 OS X의 버젼과 코드명은 아래와 같습니다.

  • 10.0 치타(Cheetah)
  • 10.1 퓨마(Puma)
  • 10.2 재규어(Jaguar)
  • 10.3 팬더(Panther)
  • 10.4 타이거(Tiger)
  • 10.5 레퍼드(Leopard)

'10.3 재규어' 부터 공개적으로 마케팅에 코드명을 사용하고 있습니다. 이제 다음 버젼의 OS X는 어떤 고양이과 맹수가 코드명으로 나올지 궁금해집니다. 아직 안나온 대형 고양이과 맹수중엔 당연히 사자(Lion)가 가장 먼저 떠오릅니다. 하지만 위키피디아를 보니 애플은 Lynx(살쾡이)와 Courgar(쿠거)를 트레이드마크로 등록해 놓았다고 합니다.

사용자 삽입 이미지
lion, lynx, cougar외에는 일반인들이 널리 알고 있는 고양이과 동물들의 이름은 대부분 사용한 것으로 보입니다. 제 생각에는 앞으로 4개 남은 10.X대 버젼에선 고양이과 동물을 그대로 유지하지 않을까 생각됩니다. 바로 다음 버젼인 10.6에선 어떤 고양이과 동물을 사용할지 모르겠습니다. 

그리고 만약 애플에서 이런 특정 동물의 이름을 사용하는 전통을 유지한다면 11.X 버젼(OS XI가 될려나요?)에선 어떤 류의 동물들을 사용할지 궁금하네요. 개인적으론 맹금류(eagle, hawk, condor, owl, kite 등)도 괜찮지 않나 생각해 봅니다.

보면 외국(특히 미국) 사람들은 소프트웨어나 관련된 제품에 동물을 많이 활용하는 것 같습니다. 오렐리의 책들 표지에서도 동물들을 활용하거나(OS와 관련된 유명한 공룡책도 있죠), 애플의 OS X의 고양이과 동물 코드명들과 shark, lynx, tomcat, python등 동물이름의 프로그램들, 그리고 리눅스의 팽귄, mysql의 돌고래, 파이어폭스의 여우등의 마스코트에도 다양하게 사용하는 것 같습니다. 

영어의 동물명은 제가 영어에 익숙하지 않아서인지 괜찮게 들리는 것 같습니다. 하지만 우리나라 말로 '사자, 호랑이, 표범'등의 이름은 어플리케이션 이름에 사용하기에 좀 밋밋하지 않나하는 생각이 듭니다. 우리나라 말이 너무 익숙해서 그런 것 같습니다.

만약 다음 세상이 있다면 컴퓨터와는 거리가 먼 동물 다큐멘터리를 촬영하는 사람으로 태어 났으면 좋겠습니다.

'기타' 카테고리의 다른 글

스크래치 사이트 한글화  (0) 2008.07.02
각 언어별 Hello World 출력  (0) 2008.05.08
Xcode 3 시연 동영상  (4) 2008.03.26
구글 온라인 강좌 - Google Code University  (1) 2008.03.25
맥미니 분해 및 업그레이드  (4) 2008.03.14
AND

기타 2008. 3. 26. 15:03
유튜브에서 본 Xcode 3로 계산기를 만드는 동영상입니다. (요즘 이렇게 눈요기만으로 레퍼드로 업그레이드를 참고 있습니다) 아직 완성된 것은 아니고 2부까지만 나온 것 같습니다.

보면서 두가지 생각이 들었습니다. 첫번째는 'Xcode 3을 써보고 싶다' 입니다. 두번째는 multiply, divide 타이핑을 하는데 오늘 오전에 본 댓글 때문에 뜨끔하더군요. ^^;

* Building a Cocoa Calculator Application with XCode 3 for Mac


* Building a Cocoa Calculator App Using XCode 3 (Part 2)
AND

오늘 오랫만에 digg에 들렀다가 Google Code University - Free Training from Google란 내용을 보았습니다. 댓글중에 "It's a google world, we're just livin' in it"란 말이 재미있네요. 하지만 우리나라에서는 아니겠죠.

사용자 삽입 이미지
Googl Code University로 가보니 좌측과 같이 튜토리얼, 동영상 강좌와 강연을 무료로 제공하는 온라인 강좌를 하고 있습니다. 아래와 같은 주제들이 있었습니다.

* AJAX Programming
* Distributed Systems
* Web Security
* Languages


언어 코스에는 C++, Java, Python이 있습니다. 저 세언어가 가장 많이 쓰이는 언어라서 선택된 것인지 구글에서 많이 쓰기 때문인지는 잘 모르겠습니다. 아무튼 인기있는 언어이기 때문이겠죠.

프로그래밍에 유용한 툴들을 소개하는 Tools 101 메뉴에는 현재 Introduction to Databases and MySQLSoftware Configuration Management의 2개의 자료가 있습니다.

앞으로도 다양한 자료들이 많이 올라 왔으면 좋겠습니다. 프로그래밍 공부도 하고 영어 공부도 하고 일석이조네요. ^^
AND

제 개인 블로그에 오래전에 올린 내용인데 조금 편집해서 다시 올려 봅니다.

당시 맥미니(Intel Core Duo 1.83GHz)의 속도에 조금 아쉬운 부분이 있어 업그레이드를 생각했습니다. 기존의 하드 디스크 S-ATA 80GB (5400rpm)를 100GB (시게이트 모멘터스 노트북용/7200rpm/8MB/S-ATA)로 교체하고 메모리는 256MB 2개(512MB)중  하나를 1GB와 교체하여 1.25GB로 업그레이드 하였습니다.

맥미니 분해 및 교체는 생각보다 쉽습니다. 도구는 철물상에서 구해온 도배용으로 쓰이는 퍼티 나이프와 안경 드라이버 정도 입니다.

.0
일단 맥미니의 상판을 보호하고 작은 부품들을 잃어 버리지 않기 위해서, 바닥에 큰 수건을 하나 깔아줍니다. 맥미니를 뒤집고 좌우의 틈으로 위의 퍼티 나이프를 밀어 넣고 좌우로 조금씩 흔들면 쉽게 분리가 됩니다. 좌우 각각 6개, 상단에 3개의 연결고리고 결속이 되어 있었는데 좌우만 분리하면 상단은 자동으로 분리됩니다.

맥미니를 반대로 돌려 위와 같이 남은 나사를 풀어줍니다. 본체를 분리하기 위해서는 아래와 같이 사각 모서리의 4개의 나사를 분리하면 됩니다.

.1
사용자 삽입 이미지

.2
사용자 삽입 이미지

.3
사용자 삽입 이미지

.4
사용자 삽입 이미지

.5
사용자 삽입 이미지

조립은 분해의 역순으로 합니다. 나중에 점퍼선을 다시 끼우는 부분만 잊지 않으면 그다지 어려울 것이 없습니다. 이제 OS X CD를 넣어 부팅한 후에 디스크 유틸리티로 파티션을 잡은 후, OS X를 설치하면 됩니다.

저의 경우에는 업그레이드 후에 체감적으로 성능이 많이 향상된 것 같습니다. 맥미니의 속도가 답답하신 분들은 시도해 보시는 것도 좋을 것 같습니다.
AND