책 소개
차세대 웹 개발 프레임워크 레일스와 함께!
강력하고 편리하지만 접근이 쉽지만은 않은 레일스,
이 책은 레일스를 즐겁고 쉽게 배우기 위한 지름길이다.
♦ 레일스 최신 버전인 1.2를 기반으로 한 예제 중심의 설명
♦ 레일스 개발에 필요한 루비 튜토리얼 / 레퍼런스
♦ 블로그 애플리케이션 만들기 실전 개발 예제
♦ 언제든 참조할 수 있는 초간단 레일스 레퍼런스 부록
루비 온 레일스는 시스템 설정, 데이터 모델링과 개발, 웹 애플리케이션 개발, 시스템 디플로이까지의 전 과정을 하나의 프레임워크로 제공한다. 새로운 서비스를 빠르게 시장에 내놓고 변덕이 심한 고객의 입맛에 맞추기 위해 시스템을 쉽게 변경할 수 있는 높은 개발 생산성은 루비 온 레일스의 최고의 덕목이다. 이 책으로 반복되는 작업과 복잡한 프레임워크에 지친 개발자들이 이제 루비 온 레일스로 새롭게 열릴 인터넷 서비스 업계의 변화에 한발 먼저 앞서가 기다릴 수 있게 되길 바란다.
[ 한국의 첫 루비/레일스 책 출간을 축하하며 ]
지난 삼년 동안 참 많은 일들이 일어났습니다. 삼년 전 저는 루비라는 새로운 프로그래밍 언어를 익히고 있었지요. 루비를 더 잘 이해하기 위해, 루비로 웹 프레임워크를 하나 구현하여 이런저런 실험을 해보던 중이었습니다. 저는 이 프레임워크에 레일스라는 이름을 붙이고 오픈소스로 공개했습니다. 하지만 레일스에 이처럼 많은 관심이 쏟아지리라고 당시로서는 상상조차 할 수 없었습니다.
덴마크에서 시작된 작은 오픈소스 프로젝트 하나가 이제는 전 세계 웹 개발자들의 삶을 뒤바꾸고 있습니다. 이제는 제 고향에서 지구 반 바퀴만큼이나 떨어진 한국에서도 레일스에 관심이 있는 분들이 많다는 이야기를 들으니 무척 뿌듯합니다. 또한 황대산님이 쓴 한국의 첫 루비/레일스 저서인 『Easy Start! 웹 개발 2.0 루비 온 레일스』에 축하의 인사를 전할 수 있게 되어 매우 영광입니다.
독자 여러분은 이 책을 통해 ‘즐거운 웹 개발’을 지향하는 레일스 세계에 첫 발을 들여놓게 될 것입니다. 레일스는 설정보다는 관례를 더 편리하게 여기고, 중복적인 코드는 결코 작성하지 않는 멋진 신세계입니다.
하지만 독자 여러분께서 기억하셔야 할 것이 하나 있습니다. 한번 루비와 레일스를 접하게 되면, 이제 기존의 프로그래밍 언어와 프레임워크로 돌아가는 일은 너무나 힘겹게 느껴질지도 모른다는 사실입니다. 자, 마음을 단단히 먹고 이 책을 펼쳐 보시기 바랍니다.
즐거운 웹 개발을 기원하며,
데이빗 해너마이어 한슨 / David Heinemeier Hansson
레일스 프레임워크의 창시자
[ 레일스 프레임워크에 대해 ]
레일스는 루비 프로그래밍 언어로 만들어진 웹 개발 프레임워크로 덴마크의 데이빗 해너마이어 한슨(David Heinemeier Hansson)에 의해 2004년 7월 처음 공개되었다. 지난 3년간 레일스는 전 세계적으로 빠르게 확산되어 왔으며, 현재까지 레일스로 구축된 B2C 사이트만도 수백여개에 이르고 있다.
레일스가 이처럼 빠른 성공을 거둘 수 있었던 데에는 몇 가지 이유가 있다. 첫째로 오늘날의 웹 개발은 너무나도 복잡해져서 수많은 개발자들이 웹 개발에 넌더리를 내고 있었다. 자바, PHP, .NET 등 개발 환경을 막론하고 많은 웹 개발자들은 뭔가 새로운 것을 시도해 볼 마음의 채비를 하고 있었다.
둘째로 레일스는 개발자의 생산성을 획기적으로 높여 준다. 레일스는 ORM(객체/관계 매핑, Object/Relational Mapping), 코드 생성(Code Generation), 메타프로그래밍 등 최신 프로그래밍 기법을 사용해 개발자가 코딩에 들이는 시간을 현저히 줄여주고 있다. 비슷한 코드를 계속해서 반복적으로 작성하는 일은 개발자의 사기를 떨어뜨리는 일이다. 레일스는 위에서 언급한 프로그래밍 기법을 활용하여, DRY(반복적인 코딩 작업은 피하시오, Don’t Repeat Yourself) 원칙을 적극적으로 장려하고 있다.
셋째로 레일스는 웹 2.0 애플리케이션의 개발에 최적화된 프레임워크이다. 레일스에는 Ajax와 웹 서비스 개발을 위한 컴포넌트가 포함되어 있어서 웹 2.0 서비스를 구축하는 작업을 매우 편리하게 해준다. 실제로 레일스에서는 Ajax 애플리케이션을 개발하기 위해 자바스크립트를 직접 코딩하는 일은 하지 않아도 된다.
마지막으로 레일스를 사용한 웹 개발은 즐겁다. 지금 이 글을 읽는 독자는 다소 회의적인 생각이 들지도 모르겠지만, 이는 레일스를 접해본 수많은 웹 개발자들의 공통된 반응이다. 이 책을 통해 독자 여러분이 레일스가 선사하는 즐거운 웹 개발의 세계를 발견하게 된다면 필자는 그보다 더 큰 보람이 없을 것 같다.
루비와 레일스
루비는 1995년 유키히로 마츠모토(Yukihiro Matsumoto)가 소개한 객체지향 프로그래밍 언어이다. 루비는 오랫동안 일본 내에서만 사용되다가, 2001년 데이브 토마스와 앤드류 헌트의 『Programming Ruby』 출판을 계기로 전세계에 널리 알려지기 시작했다.
루비가 레일스의 후광으로 인해 하루 아침에 메인스트림에 진입한 것은 사실이지만, 루비는 그 자체로도 출중한 프로그래밍 언어이다. 루비는 객체지향 언어의 아버지라 불리는 스몰토크, 함수형 언어의 시조인 Lisp, 그리고 텍스트 처리에 뛰어난 펄 등의 영향을 받았으며, 그로 인해 C나 자바와 같은 언어에서는 찾아 보기 힘든 여러 가지 강력한 기능을 제공하고 있다.
사실 레일스의 특별함은 모두 루비에 기인한다고 해도 과언이 아니다. 레일스는 루비의 강력한 기능을 십분 활용하여 구현되었으며, 이 덕분에 레일스를 이용한 웹 개발은 정말로 편리해졌다. 흔히 레일스를 이용한 웹 개발은 자바에 비해 5~10배 정도 더 빠르다고들 말한다.
레일스에서의 개발을 편리하게 해주는 또다른 요소는 ‘설정보다는 관례가 더 편리하다’(Convention over Configuration)는 원칙이다. 레일스는 이 원칙을 철저히 따르고 있는데, 이 때문에 레일스를 사용하는 데는 설정이 거의 필요하지 않다. 프레임워크의 모든 부분에서 적절한 디폴트(default) 값을 사용하고 있기 때문이다. 필요하면 얼마든지 세부적인 설정을 할 수 있지만, 복잡한 설정 없이도 바로 개발을 시작할 수 있다는 것은 레일스만이 지니는 커다란 이점 중 하나이다.
[ 소스코드 다운로드 ]
♦ source_codes.zip : 책 전반에 걸친 소스코드
♦ blog_app.zip : 완성된 블로그 애플리케이션 소스코드
목차
목차
- 1장. 레일스 시작하기 27
- 1.1 레일스 설치하기 (윈도우) 29
- 1.2 레일스 설치하기 (맥 OS X 10.4 타이거) 35
- 1.3 웹 전화번호부 만들기 (1) 스캐폴드 43
- 1.4 웹 전화번호부 만들기 (2) CRUD 55
- 1.5 웹 전화번호부 만들기 (3) Ajax 76
- 2장. 루비 프로그래밍 언어 83
- 2.1 루비 시작하기 85
- 2.2 객체지향 프로그래밍이란? 88
- 2.3 문자열 93
- 2.4 숫자 96
- 2.5 조건문 99
- 2.6 배열 102
- 2.7 반복문 106
- 2.8 블록 107
- 2.9 심볼과 해시 110
- 2.10 정규식 113
- 2.11 시간과 날짜 117
- 2.12 클래스와 객체 120
- 2.13 메타프로그래밍이란? 126
- 3장. 레일스 프레임워크 131
- 3.1 레일스와 MVC 133
- 3.2 레일스 애플리케이션의 구성 135
- app/ 137
- config/ 138
- doc/ 138
- log/ 139
- public/ 139
- script/ 139
- test/ 141
- 3.3 레일스의 네이밍 규칙 142
- 3.4 레일스 설정하기 144
- 데이터베이스 설정 144
- 애플리케이션 설정 146
- 라우팅 설정 147
- 3.5 마이그레이션 148
- 3.6 레일스 애플리케이션의 구동 모드 161
- 3.7 레일스 플러그인 162
- 3.8 레일스의 기타 기능 163
- 유니코드 확장 163
- 정수 클래스 확장 165
- 4장. 액티브 레코드 167
- 4.1 액티브 레코드와 데이터베이스 169
- 모델 클래스와 데이터베이스 테이블의 연결 171
- 테이블 필드 접근 메소드 172
- 4.2 액티브 레코드 시작하기 173
- 레코드 생성 177
- 레코드 검색 180
- 레코드 수정 185
- 레코드 삭제 186
- 4.3 모델 데이터의 검증 188
- 4.4 모델 간의 관계 설정 196
- 일대다 관계 197
- 일대일 관계 207
- 다대다 관계 214
- 4.5 콜백 메소드 224
- 5장. 액션 컨트롤러 227
- 5.1 액션 컨트롤러와 액션 메소드 229
- 5.2 HTML 폼 데이터의 처리 233
- 5.3 세션 및 로그인 236
- 5.4 쿠키 241
- 5.5 플래시 243
- 5.6 필터 244
- 6장. 액션 뷰(HTML 템플릿) 249
- 6.1 RHTML 템플릿 251
- 6.2 기본 도우미 메소드 259
- 숫자 및 텍스트를 포맷하는 도우미 메소드 259
- 이미지 태그 도우미 메소드 260
- 링크 도우미 메소드 261
- 6.3 폼 도우미 메소드 262
- 액티브 레코드 모델 데이터를 위한 폼 도우미 메소드 262
- 일반 데이터를 위한 폼 도우미 메소드 267
- 6.4 기타 도우미 메소드 269
- 6.5 페이지 인덱스 270
- 6.6 나만의 도우미 메소드 만들기 272
- 6.7 레이아웃과 조각 템플릿 274
- 7장. 블로그 애플리케이션 만들기 281
- 7.1 개요 283
- 7.2 준비 작업 286
- 테이블 및 액티브 레코드 모델 생성 287
- 모델 간의 관계 설정 291
- 모델 데이터의 검증 293
- 마크다운 라이브러리 설치 296
- 마크다운 코드에서 HTML 코드로의 변환 297
- 7.3 관리자 화면 298
- 라우팅 설정 299
- 운영자 목록 관리 기능 299
- 카테고리 관리 기능 311
- 로그인 기능 315
- 글 관리 기능 321
- 레이아웃 332
- 태그 기능 336
- 7.4 블로그 메인 화면 345
- 라우팅 설정 345
- 블로그 컨트톨러 및 레이아웃 347
- 인덱스/카테고리/태그 페이지 351
- 글 페이지 354
- 7.5 RSS 피드 358
- 라우팅 설정 358
- RSS 피드 플러그인 설치 359
- 피드 컨트롤러 360
- 7.6 블로그 애플리케이션 구동 362
- 프로덕션 환경 세팅 362
- Mongrel 웹 서버 사용법 364
- Apache와 Mongrel을 사용한 가상 호스트 설정 368
- 부록 A. 루비 주요 클래스 API 371
- A.1 배열 373
- A.2 날짜 384
- A.3 정수 391
- A.4 실수 395
- A.5 해시 398
- A.6 구간 404
- A.7 문자열 405
- A.8 시간 413
관련 블로그 글
[황대산의 생생리포트] 루비 컨퍼런스 2008 현장스케치
지금 플로리다 올랜도에서는 지난 11월 6일부터 8일까지 3일간 루비 컨퍼런스 2008이 열리고 있습니다. 이 컨퍼런스에는 2007년 4월 출간되어 아직도 루비온레일스 입문자들을 위한 필독서로 많은 독자께 사랑 받고 있는 『Easy Start! 웹 개발 2.0 루비 온 레일스』의 저자 황대산님이 참석하고 계신데요. (관련 에이콘 블로그 글)
그동안 페퍼코드라는 회사도 창업하고 개인적으로 여러가지 프로젝트를 수행하며 부산하게 움직이시느라 '잠행아닌 잠행'을 하셨었죠.:) 물론 그 사이에 『Dreaming in Code』라는 책을 번역하고, 출국 전날까지도 저희 출판사로 출근하다시피하며 리뷰와 각종 마감 작업에 마무리하느라 고생하기도 하셨죠.
여기서 잠시『드리밍 인 코드』를 소개해드릴까요? 오픈소스 챈들러 프로젝트를 지켜본 Salon.com의 편집자 스콧 로젠버그가 집필한 책으로서 "소프트웨어 프로젝트"를 관조적인 입장에서 마치 소설처럼 전개해나가는 과정이 독자에게 긴장감을 안겨줍니다. 한편 전체 책을 꿰뚫는 "소프트웨어 공학과 역사"에 대한 통찰은 그 어떤 책에서도 맛볼 수 없었던 감동과 지식을 느낄 수 있습니다. 『조엘 온 소프트웨어』의 저자 조엘 스폴스키도 자신의 블로그에서 극찬한 책으로서 얼마 전 저녁식사 때 만나 이야기를 나눌 때도 이 책 한국어판 출간에 즈음해 다양한 이야기를 주고받기도 했었죠. :)
여하튼 대산님이 그동안의 잠행에서 벗어나 곧 대외활동을 시작하는 첫 포문으로 루비 컨퍼런스에 참여하게 되어 현장 스케치를 보내오셨습니다. 기술적인 자세한 이야기는 다시 문을 열게될 "beyond the status quo" 블로그에서 알려드릴 예정이구요. 오늘은 저희 블로그를 위해 특별히 보내온 현장 스케치로 대신하겠습니다. :)
이제부턴 대산님의 이야기를 직접 들어보세요. 저는 대산님께 마이크를 넘깁니다. ^^
에이콘 블로그 독자 여러분 안녕하세요. 『Easy Start! 웹 개발 2.0 루비 온 레일스』의 저자 황대산입니다.
저는 지금 "루비 컨퍼런스 2008"(http://rubyconf.org/)이 열리는 미국 올랜도의 Omni 리조트 호텔에 와 있습니다. 2006년 덴버 컨퍼런스에 이어 두번째로 참석하는 루비 컨퍼런스인데요, 루비의 성장세를 반영하듯 갈수록 호텔이 럭셔리해지는군요. :)
재작년의 덴버 컨퍼런스는 참가 인원을 250명으로 제한해서 컨퍼런스 등록 개시 4시간만에 등록이 마감되는 진기록을 세우기도 했는데요, 이번에는 좀더 많은 사람들이 참석할 수 있게 정원을 500명으로 늘렸다고 합니다.
컨퍼런스 첫날 오전 루비의 창시자인 유키히로 마츠모토씨의 기조 연설을 열심히 듣는 루비 개발자들의 모습입니다.
기조연설 후에 마츠모토씨와 기념 사진 한방~! 루비 개발자들 사이에선 "마츠"란 이름으로 더 잘 알려져 있죠. 무려 2년만에 보는데도 저를 기억하고 계시더군요. :)
바쁘게 세션을 돌아다니고 발표자들과 이야기를 나누다 보니 사진을 많이 찍지는 못했네요. 마지막 세션이 끝나고 나니 이랬던 하늘이....
이렇게 변해버렸습니다. :)
3일의 일정 중에 이제 하루가 지났습니다. 한국에 돌아가서 더 많은 소식을 전해드리기로 하고, 루비 컨퍼런스 2008 현장 스케치는 여기서 마치겠습니다! 곧 제 블로그 "beyond the status quo"에서 다시 만나 뵙겠습니다. :)
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
블로터닷넷에 뜬 에이콘 레일스 신간과 미투데이 기사
요즘 저희 책을 무색하게 할 정도로 미투데이가 장안의 화제입니다. 올블로그 추천글 목록을 도배하다시피 하는 와중에 아류 서비스(?)까지 갑자기 등장해서 순식간에 바람몰이를 하고 있습니다.
책이 됐든 서비스이든 어떤 완성된 제품을 만들어 고객에게 고스란히 전달하기까지는 꽤 어려운 고충과 인고의 과정이 필요합니다. 언젠가 제가 블로그에서 언급한 이야기이기도 하지만, 컬럼부스의 삶은 달걀이나 알렉산더가 단칼에 잘라버린 고르디온의 매듭을 언급하지 않더라도 첫 시도라는 것은 여러 의미에서 매우 중요합니다. 저희 출판사가 불모지였던 임베디드나 웹 표준 서적에 과감히 출사표를 내던졌던 것도 마찬가지였겠지요. ;)
책을 평가하는 사람은 저희가 아닙니다. 저희는 그저 할 수 있는 최선을 다해 책을 만들고 최대한의 정보를 제공할 뿐이고, 책에 대한 올곧은 평가는 독자가 내립니다. 화젯거리를 만들어 단박에 사람들의 화두에 오르내리기는 그다지 어려운 일이 아닐 겁니다. 단번에 내달음을 치고 달려 나갈 수도 있습니다. 하지만 세상은 한 걸음 한 걸음 우직하게 내딛는 자들의 것이라고 믿고 싶습니다. 뜻하지 않게 발에 채이는 돌부리를 비껴가느라 마음이 급할 텐데도, 자신들이 그려놓은 청사진을 실현하기 위해 당당하게 한 걸음씩 내딛는 미투데이의 행보에 저희 에이콘도 힘을 실어드립니다.
※ 『Easy Start! 웹 개발 2.0 루비 온 레일스』책을 열심히 만들고자 노력했는데 몇 가지 오류들을 독자분께서 발견해서 알려주셨습니다. 내용을 확인 후에 이 책 도서정보 페이지의 정오표 항목에 올리고 있습니다. 독자분께서 내용을 이해하시는 데 불편함이 없도록 최대한 노력하겠습니다! 책에 대해 궁금한 사항이 있으시면 오류 신고나 토론방에 올려주시면 답변 해드리겠습니다.
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
『Easy Start! 웹 개발 2.0 루비 온 레일스』 포토 스케치!
에이콘 열혈 독자라면 눈치챌 『예제로 배우는 Adobe 플렉스 2』식 뒷표지입니다.
에이콘 대문 앞에서 기념사진 찰칵!
웹 프로페셔널 시리즈 여섯 권이 옹기종기 모두 모였습니다. 사랑스럽고나~!
특별부록으로 책 맨 뒷 부분에 "레일스 명령어, 메소드 요약표"를 넣었습니다. 생각보다 '절취선'이 살짝 안쪽으로 들어가 있어서 자르실 때 아주 쪼끔 불편하실 수 있을 것 같기는 합니다만, 떼어내셔서 들고 다니시거나 벽에 붙여놓고 활용하시면 "진짜 좋다!"라는 생각이 드실 겁니다. :D
잘 찾아보시면 제 이름도 나와있어요. 하하. ^^V 울 사장님 성함도 함께~ 이 책의 소스코드는 이미 모두 올려놓았으니 여기로 가셔서 다운로드 받아서 사용하세요.
얼굴에 송글송글 맺힌 땀방울 보이세요? 책 나르느라 함께 힘도 써주셨답니다. 옷에 달려있는 아이팟 셔플은 여친이 준 소중한 선물이라는.. :) 이 책을 영문판으로 내고 싶다는 대산님의 소망이 꼭 이뤄지길!
Java Language Specification (3/e) 한국어판』번역을 진행하고 계시는 NHN의 김형준 책임님도 들르신 김에 한컷! 그런데 주인공은 마치 황영주 대리인 듯!ㅎㅎ
책 만드느라 고생한 에이콘 편집팀 양석준씨와 황지영씨와도 기념 촬영!
"우와, 책 좋군요" "정말이군요!" 아마 두 분이 이런 대화를 나누고 계신 듯. ㅎㅎ『조엘 온 소프트웨어』의 역자 박재호님도 오셔서 축하해주셨어요.
팬들의 요청에
참,『웹 개발 2.0 루비 온 레일스』라는 멋진 제목을 지어주신 분께 감사의 말씀을 드려야겠습니다. 주인공은 바로 "에이콘 웹 프로페셔널 시리즈 에디터"이자 최근 "즐겁고 재미있는 서비스" 미투데이로 웹 세상을 들썩이게 만들고 날마다 상한가를 올리고 계시는 더블트랙의 박수만님입니다. 좋은 추천글도 써주시고 멋진 제목도! 역시 시리즈 에디터다우십니다. 미투데이 화이팅! ^^*
마지막으로 한 마디 남깁니다.
작년 6월에 전화로 인사 나누고 처음 만나 좋은 책 써보자고 의기투합한 게 어언 9개월이에요. 그동안 한마디 한줄 글 다듬어내고 마지막까지 열심히 노력해주신 대산씨, 너무 고생 많았습니다. 정말 고마워요...! 우리 에이콘과의 소중한 인연 곱게 이어나가요~ ^^이제 독자 여러분께서 사랑해주실 일만 남았군요. 두근두근... ;)
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
『Easy Start! 웹 개발 2.0 루비 온 레일스』 대공개!
덴마크에서 시작된 작은 오픈소스 프로젝트 하나가 이제는 전 세계 웹 개발자들의 삶을 뒤바꾸고 있습니다. 이제는 제 고향에서 지구 반 바퀴만큼이나 떨어진 한국에서도 레일스에 관심이 있는 분들이 많다는 이야기를 들으니 무척 뿌듯합니다.
또한 황대산님이 쓴 한국의 첫 루비/레일스 저서인 『Easy Start! 웹 개발 2.0 루비 온 레일스』에 축하의 인사를 전할 수 있게 되어 매우 영광입니다. 독자 여러분은 이 책을 통해 ‘즐거운 웹 개발’을 지향하는 레일스 세계에 첫 발을 들여놓게 될 것입니다.
루비 온 레일스의 등장은 웹 애플리케이션 프레임워크의 혁신이다. 이제 여러분은 국내 최초의 루비 온 레일스 저서를 읽으며 그 혁신에 한 발짝 더 다가설 수 있다.
아끼는 후배 개발자를 옆에 앉혀 놓고 자상하게 가르쳐주는 선배처럼 레일스를 기초부터 학습할 수 있도록 꼼꼼하고 친절하게 가이드 해주고 있다. 불필요한 기능과 작업을 최소화하고 핵심에 집중할 수 있게 해주는 레일스와 이 책은 그런 면에서 꼭 닮았다.
이 책은 루비 온 레일스의 입문자들이 루비와 레일스를 이해하고 자신만의 애플리케이션을 손쉽게 만들어 볼 수 있도록 친절한 가이드 역할을 해주고 있다.
장정환 / NHN ㈜ Ajax UI 팀장
#1. 드디어 긴 시간의 여정을 마치고 이제 닻을 내리려 합니다. 그간 몇 달 동안 레일스 책을 적느라 고생하신 저자 황대산님, 에이콘 찜질방 2호(1호는 누굴까나!?)로 며칠 밤 함께 하며 대산님의 새로운 모습(조만간 블로그에 공개해버릴까?)도 발견하고 참 즐거웠습니다. 오늘 새벽까지 함께 편집 마무리를 하고 지금은 조금 먼 거리에 잠시 휴식을 취하러 떠나셨으니 다음 주에 건강한 모습으로 다시 만나요.
#2. 표지를 만드느라 참 고생이 많았습니다. 이런 저런 스타일로도 만들어보고 여러 컨셉에 대해 난상토론도 펼치다가 빨간 루비색의 요요 사진 이미지를 발견하고 과감히 채택했습니다. 가볍고 즐거운 요요, 왠지 레일스와 닮았다고 생각지 않으십니까? (표지 어떠세요? 독자분들 마음에 들었으면 좋겠어요.. ^^)
#3. 늘 편집 마무리는 예상을 깨는 기한 연장, 불쑥 튀어나오는 변수들과의 싸움입니다. 게다가 이번 책은 저희 에이콘의 다섯 번째 저서입니다.(다섯 권을 모두 맞추시는 분께 레일스 책을 상품으로 한 권 걸어볼까요? ^^*) 번역서도 쉬운 일이 아니지만 저서는 그 몇 배로 힘든 만큼 보람도 큽니다. 함께 작업한 우리 사장님과 직원들, 디자인 맡아주신 여상현님께 그간 고생하셨다는 말씀 전하고 싶네요.
#4. 열심히 만들었지만 부족한 점이 많을지도 모르겠습니다. 너른 마음으로 좋게 봐주시고 미흡한 점은 언제든 말씀해주세요.
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
大山님의『Easy Start! 웹 개발 2.0 루비 온 레일스』
며칠 전 더블트랙에서 클로즈 베타 버전의 me2day라는 서비스를 선보여 블로거들의 엔돌핀 증가에 막강한 기여를 하고 있습니다만, 이 me2day라는 서비스도 더블트랙의 codian님이
이렇게 쉽고 빠른 그리고 기민한 웹 개발이 가능한 데에는 바로 루비 온 레일스가 있었기 때문이 아닐까 싶습니다. 레일스는 이처럼 기존의 복잡다단한 웹 개발을 "반복적인 코딩 작업은 피하라!(일명 DRY)"와 "설정보다는 관례가 더 편리하다"는 두 가지 사상을 기조로 하여, 높은 웹 개발 생산성을 기치로 데이빗 해너마이어 핸슨이 만들어낸 차세대 웹 개발 프레임워크입니다.
지금 엄청 꼼꼼한 (하지만 알고보면 매우 엉뚱하고 재미있는) 대산님의 리뷰와 에이콘의 편집작업 등이 남아있는 상태인 『Easy Start! 웹 개발 2.0 루비 온 레일스』는 이번 주말 마감을 목표로 맹렬히 달리고 있습니다.
▶ 『Easy Start! 웹 개발 2.0 루비 온 레일스』는 어떤 책인가요?
기존의 What?만을 나열해놓은 지루한 책이 아니라 400여 페이지 남짓의 속이 꽉 찬 책을 통해 How? & Why?를 알려주는 책입니다. 레일스의 철학과 How to Works를 제대로 파악할 수 있는 책이지요.
▶ 그렇다면 무겁고 지루한 책?
No! 지엽적인 내용은 가능한 배제하고 흐름을 타고 읽어내려갈 수 있게 기술해놓았기 때문에 지하철에서 가볍게 읽어도 좋고 컴퓨터를 앞에 놓고 코드를 하나씩 입력해놓아가며 열심히 공부하며 읽어도 좋은 책입니다. 그야말로 그때그때 달라요!
▶ 이 책의 장점은 무엇일까요?
- 레일스 최신 버전인 1.2.2를 다루고 있음
- 레일스 개발에 필요한 루비 튜토리얼/레퍼런스
- 총 90페이지에 다다르는 블로그 실전 개발 예제
- 벽에 붙여놓고 언제든 참조할 수 있는 초간단 레퍼런스 부록 등
말로 다 할 수가 없습니다. -0-
▶ 누가 읽어야 하나요?
웹 개발을 한 번이라도 해본 사람이라면 누구나 쉽게 읽을 수 있습니다.
특히 새로운 프로젝트를 진행하려는 소규모 팀이나 회사 등 레일스 도입을 고려하고 있는 분들이라면 당연한 필독서겠지요.
자, 에이콘 웹 프로페셔널 시리즈 에디터인 박수만님이 블로그에 올린 추천의 글에서도 좀더 기술적인 내용을 담고 있으니 한번 읽어보시구요.
기존의 지루하고 복잡한 웹 개발 프로세스에 질리고 찌든, 그래서 새로운 활력을 되찾고 싶은 웹 개발자라면 모두 기대하셔도 좋습니다. (이야, 점차 찌라시가 되어가는 듯한.. -0-)
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
도서 오류 신고
정오표
http://www.apple.co.kr/developer/tools/xcode/
→ http://developer.apple.com/tools/xcode/
[ p67 본문 7행 ]
이 객체에 보관된 테이터가 → 이 객체에 보관된 데이터가
[ p71 리스팅 1-14 4행 ]
redirect_to(:action => 'list') → redirect_to(:action => "list")
[ p101 두 번째 코드 1~2행 ]
>> 5 > 3
=> false
→ >> 5 > 3
=> true
[ p125 코드 9번째 행 아래 3행 추가 ]
>> def salary=(value)
>> @salary = value
>> end
[ p132 본문 4행 ]
코드 생성을 → 코딩 작업을
[ p148 참고박스 아래 3행 ]
BlogController의 show 액션 메소드
→ ArticlesController의 show 액션 메소드
[ p148 중간 소스코드 ]
map.connect blog/:id → map.connect 'blog/:id'
[ p169 아래에서 7행 ]
결정므로 → 결정하므로
[ p187 첫 번째 코드 1행 ]
:contitions → :conditions
[ p198 표 4-6 1행 ]
title → subject
[ p200 리스팅 4-4 5행 ]
title → subject
[ p202 세 번째 소스코드 9행 ]
#<User:0x31e4850 @attributes → #<User:0x31e4850 @posts=[], @attributes
[ p212 첫 번째 소스코드 11행 ]
@dhh.birth_record.born_on → @dhh.birth_record.born_on.to_s
[ p261 아래에서 4행 ]
{:popup => ['Help', → {:popup => ['프로필',
[ p264 두 번째 소스코드 영역 ]
<textarea cols="20" id="person_message" name="person[message]"
→ <textarea cols="20" id="person_note" name="person[note]"
[ p308 리스팅 7-16 6행 ]
정말로 삭제하시겠습까? → 정말로 삭제하시겠습니까?
[ p317 리스팅 7-27 5행 ]
<haead> → </head>
[ p318 리스팅 7-27 마지막 행 ]
<html>
→ </body>
</html>
[ p355 아래에서 7행 ]
<% form_for (:comment, :url => {:action => 'comment'}) do |f| %>
→ <% form_for (:comment, :url => {:action => 'comment', :id => @article}) do |f| % >
[ p359 리스팅 7-56 박스 내 1행 ]
map connect ", → map connect '',
※ "(큰따옴표 1개)를 ''(작은따옴표 2개)로 수정
[ p374 [] 메소드 5행 ]
>> arry[2] → >> arr[2]
[ p407~p413 XXX! 메소드 설명 부분 ]
p407 capitalize!, chomp!
p408 downcase!
p409 gsub!
p410 reverse!
p411 strip!
p412 swapcase!
p413 upcase!
배열 자체를 변경한다. → 문자열 자체를 변경한다.