몇일 전 아마존에서 도서 추천 메일을 받았습니다. 맥과 아이폰 프로그래밍에 관련해서 나온 신간들인데, 대부분 아직 출시는 되지 않았고 예약을 받고 있었습니다. 새로 나올 관련 도서와 저자들을 대충 보면 아래와 같습니다.

Core Animation for Mac OS X and the iPhone
- $23.07
- Pragmatic Bookshelf
- Bill Dudney
- 188page

저자는 iPhone SDK Development의 공동저자중 한사람인 Bill Dudney입니다. 소개하는 책중에서 유일하게 아마존에서 현재 판매중인 책입니다. 페이지도 얼마 안되고 내년 초쯤에 구입해 볼까 생각중입니다.


RubyCocoa
- $23.07
- Pragmatic Bookshelf
- Brian Marick
- 300page

이전에 한번 제 블로그에서도 포스팅 했었던 RubyCocoa에 관련된 서적이 나올 예정에 있습니다. Brian Matrick은 애자일 방법론 컨설던트이며, Kent Beck, Andrew Hunt등과 함께 애자일 선언서의 작성자중 한명입니다. 이런 주제의 책이 벌써 나올 수 있다는 것이 신기하고 부럽기도 합니다.


iPhone SDK Application Development
- $23.09
- O'Reilly Media, Inc.
- Jonathan Zdiarski
- 250page

오렐리에서 나오는 대부분의 아이폰 개발 서적을 쓴 Jonathan Zdziarski의 신간입니다. 책 제목과 표지를 봐서는 아이폰 SDK의 교과서적인 책이 아닐까 생각됩니다.


Learn Objective–C on the Mac
- $26.39
- Apress
- Mark Dalrymple, Scott Knaster
- 350page

우리나라에 OS X 프로그래밍 서적중 유일하게 번역되어 나온 코코아 프로그래밍의 원저자인 Aaron Hillegass의 Big Nerd Ranch에서 근무하고, Advanced Mac OS X Programming 의 공동저자인 Mark Dalrymple의 신간입니다. Scott Knaster는  Hacking Mac OS X TigerMacintosh Programming Secrets의 저자이며 현재 구글의 애플팀에서 근무하고 있다고 합니다.

이와 비슷하게 아래의 Dave Mark가 쓴 Learn Cocoa on the Mac도 출간을 앞두고 있습니다.


Beginning iPhone Development
- $26.39
- Apress
- Dave Mark , Jeff LaMarche
- 536page

90년대 초 파스칼과 C의 맥 프로그래밍 관련 서적을 쓴 오래된 맥 프로그래밍 저자인 Dave Mark와  iphonedevelopment 블로그 운영자인 역시나 경험 많은 개발자인 Jeff LaMarche가 쓴 책입니다.


iPhone in Action
- $26.39
- Manning Publication
- Christopher Allen, Shannon Appelcline
- 350page

iphonewebdev.com의 운영자인 Chritopher Allen과 게임 RPG 시나리오 작가인 Shannon Appelcline이 공저로 아이폰 어플리케이션에 관한 내용도 있지만, 아이폰에 적합한 웹 사이트를 만드는데 치중한 책인 것 같습니다.


iPhone Programmer's Road Map
- $26.39
- Addison-Wesley Professional
- Michael Juntao Yuan, Sam Griffith, Norm Richards
- 288page

Cocoa와 Objective-C, 모바일 프로그래밍의 전문가들이 공동으로 집필한 책입니다. 아이폰 개발에 관한 전반적인 내용을 다루고 있는 것 같습니다.

(이미지 출처:아마존)



코코아 프로그래밍, 특히 아이폰 개발에 관한 책들이 다수 나오고 있습니다. 출판사 사이트들을 들어가 보면 이외에도 준비하고 있는 책들이 많이 있었습니다. 아직은 원서로 밖에 볼 수 없는 것이 아쉽기도 하고 이중 몇개의 책들이 번역이 되서 나올지 모르겠네요.

아직 사놓고 못 읽은 책들이 많아 올해에 깨끗이 마무리하고, 내년초에 흥미있어 보이는 책들을 주문해 보아야 겠습니다. 

AND

등록신청하고 2주정도만에 겨우 완료했습니다. 단계마다 오류가 있어 애플과 몇번의 메일을 주고 받다가 오늘 무사히 등록했습니다. 등록후에는 아이폰 개발자 포탈에서 iPhone Developer Program Protal User Guide란 문서를 다운로드 받아 설명한대로 진행하니 별다른 어려움 없이 개발환경을 완료할 수 있었습니다.

편하게 사용할려고 App ID 생성시에 번들아이디를 와일드카드(*)로 지정했는데, 터치로 컴파일시에는 문제가 없었습니다. 배포시에는 문제가 될지 모르겠지마, 다시 생성하면 되니 일단은 저 App ID 하나로 쓰기로 했습니다.


모든 인증 완료 후에 아이팟 터치를 아이튠즈에서 동기화를 하고나니, 아래와 같이 설정/일반에 프로파일 항목이 추가되어 있습니다.


테스트를 해볼려고 Xcode를 실행하니 아래와 같은 오류가 났습니다.

SDK를 다시 설치할려다가 자료를 찾아 보니 아이팟 터치 2세대로 개발을 할 때는 아래와 같이 심볼릭 링크를 해주어야 한다고 합니다. 아래와 같이 심볼릭링크를 생성하니 위의 오류 메시지는 없어졌습니다.

> cd /Developer/Platforms/iPhoneOS.platform/DeviceSupport
> ln -s 2.1 2.1.1

프로젝트의 빌드 설정에서 아래와 같이 iPhone Developer를 제 이름으로 설정하고 Profile을 설정하고, 빌드를 하니 제 아이팟 터치에도 잘 올라가고 실행도 잘되네요.


이제는 뭘 만들어서 올리는 일만 남았는데, 뭘 만들어야 할지 모르겠네요.
AND

이번 장에서는 어느 페이지로 이동하던지 사이트 전체에서 상단과 하단의 내용을 동일하게 유지하기 위해, 사이트의 기본 레이아웃을 설정해 보겠습니다.   

1. 레이아웃 설정
어플리케이션 루트폴더에서 레이아웃 폴더(/app/views/layouts)로 이동합니다.

1) general.html.erb 생성
기본 레이아웃인 general.html.erb 파일을 작성합니다. ApplicationController에서 layout을 이 파일로 지정함으로써 모든 페이지에 적용되어 사용할 수 있습니다.

* general.html.erb
<%= render :partial => "layouts/header" %>
<%= @content_for_layout %>
<%= render :partial => "layouts/footer" %>

여기서는 공용으로 사용되는 헤더와 푸터를 출력하고 그 사이에 해당 View의 컨텐츠를 출력합니다. erb 파일에서는 "<%"와  "%>"내에서 eRuby 문법을 사용할 수 있습니다. "<%="는 해당 내용을 출력합니다.

<%= render :partial => "layouts/header" %>
partial의 layouts/header는 app/views/layouts 폴더에서 이름에 밑줄을 붙인 _header.html.erb 파일의 내용을 출력합니다.


2) _header.html.erb 생성
상단에 공통으로 보여질 헤더 템플릿입니다.

* _header.html.erb
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ko">
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META http-equiv="Pragma" content="no-cache">
    <title>:: 내 ROR 홈페이지</title>
    <%= stylesheet_link_tag 'default' %>
    <%= javascript_include_tag :defaults %>
</head>
<body>
<h1 id="site-title">내 ROR 홈페이지</h1>
<ul id="main-menu">
    <li>소개</li>
    <li>앨범</li>
    <li>게시판</li>
</ul>
<div id="contents-body">

타이틀과 메타태그와 기본 스타일시트와 자바스크립트의 링크를 지정하고 상단에서 항상 출력할 사이트 제목과 메뉴목록을 지정합니다.

<%= stylesheet_link_tag 'default' %>
/public/stylesheets의 default.css 파일을 스타일시트의 링크를 생성합니다.

<%= javascript_include_tag :defaults %>
/public/javascripts에는 레일즈가 생성해 놓은 기본으로 사용하는 자바스크립트 파일들이 있습니다. 위의 설정으로 모든 기본 자바스크립트의 링크가 생성됩니다.


3) _footer.html.erb 생성
페이지의 하단에서 공통적으로 출력될 내용입니다. 여기서는 간단한 인사말만 출력해 봅니다.

* _footer.html.erb
</div>
<div id='footer'>반갑습니다. 여기는 제 홈페이지입니다.</div>
</body>
</html>


4) 레이아웃 지정
app/controllers/application.rb을 열어 아래와 같이 layout 'general'을 추가하여, 위에서 작성한 general 템플릿 파일을 기본 레이아웃으로 지정합니다.

* ApplicationController.rb
class ApplicationController < ActionController::Base
  layout 'general'
  helper :all # include all helpers, all the time

  protect_from_forgery # :secret => 'ccc2786e4f2c9f0b9fd22843cd5fc608'
end


5) 확인
리로드를 하여 현재까지의 작업을 확인합니다.


2. public 폴더 작업
위에서 기본 레이아웃을 위한 템플릿 파일들을 만들어 보았습니다. 이제 스타일시트를 작성해 보겠습니다.
 
1) 자바스크립트
public 폴더의 javascripts 폴더에는 기본적인 자바스크립트 파일들이 ROR에 의해서 생성되어 있습니다. 빈 application.js와 프로토타입, 스크립타큘러스의 js 파일들이 있습니다. 이 파일들은 erb에서 'javascript_include_tag :defaults'를 사용하여 간편하게 모든 자바스크립트 파일들을 링크할 수 있습니다.

* 프로토타입
프로토타입은 1.6.0.1버젼입니다. 최신버젼은 1.6.0.3이며 필요하시면 해당사이트에서 최신버젼을 다운로드 받아 교체할 수 있습니다.

* 스크립타큘러스
기본적인 controls.js, dragdrop.js, effects.js 파일이 설치되며, 몇가지 파일들은 빠져 있습니다. 필요하시면 해당사이트에서 최신버젼을 다운로드 받아 설치할 수 있습니다. 다운로드 받은 후에 압축을 풀고 test 폴더를 웹에서 확인하시면 쉽게 사용방법을 익힐 수 있습니다. 


2) 스타일시트 작성
public 폴더의 stylesheet 폴더에서 기본 레이아웃으로 사용할 default.css를 아래와 같이 또는 변경하여 작성합니다.

* default.css
body {
    padding:10px;
    color:#3f3f3f;
    font-size:10pt;
    font-family:돋움, Gulim, Arial, sans-serif;
}

#site-title {
    color:#64A8C3;
}

#main-menu {
    float:left;
    padding:0;
}

#main-menu li {
    float:left;
    font-size:1.2em;
    font-weight:bold;
    list-style:none;
    margin-right:12px;
}

#contents-body {
    clear:both;
    width:600px;
    margin:20px 0;
    padding:10px;
    border:2px dotted #efefef;
    background-color:#f5f5f5;
}

#footer {
    width:600px;
    text-align:center;
}

3) 확인
이제 리로드를 하여 지금까지의 작업을 확인합니다.

 
사진을 올릴 수 있는 앨범과 간단한 게시판을 하나 만들어 보고 삽질기를 끝낸 후에, 실무 프로젝트에 도입을 해볼려고 합니다. 구현방법이나 용어등에 모두 자신이 없네요. 역시나 많은 지도편달 부탁 드립니다.
AND