Top

[Easy Start!]
웹 개발 2.0 루비 온 레일스

  • 지은이황대산
  • ISBN : 9788960770003
  • 28,000원
  • 2007년 03월 10일 펴냄
  • 페이퍼백 | 432쪽 | 185*235mm
  • 시리즈 : 웹 프로페셔널

책 소개

즐겁고 빠른 웹 개발!
차세대 웹 개발 프레임워크 레일스와 함께!

강력하고 편리하지만 접근이 쉽지만은 않은 레일스,
이 책은 레일스를 즐겁고 쉽게 배우기 위한 지름길이다.


♦ 레일스 최신 버전인 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 : 완성된 블로그 애플리케이션 소스코드

저자/역자 소개

[ 저자 서문 ]

웹 개발은 종합 예술입니다. 웹 개발을 시작하기 위해서는 우선 셀 수 없이 많은 기술을 익혀야만 합니다. HTML/CSS는 물론이고, 프로그래밍, 데이터베이스, HTTP, 자바스크립트, 브라우저 호환성, 웹 표준 등과 관련한 지식을 마스터해야 하고, Ajax, 웹 서비스 등과 같은 최신 기술을 익히는 일도 게을리 할 수 없습니다. 실무에서는 각종 서버의 설정 및 다양한 프레임워크의 사용법을 익히는 것 또한 필수입니다.
단지 기술을 사용할 줄 안다는 것만으로 개발자의 역할은 끝나지 않습니다. 변덕스럽게 바뀌는 기획에 발맞춰갈 수 있고, 장기적인 프로젝트 로드맵을 염두에 둔 시스템을 설계한다는 것은 얼마나 어려운 일인지요. 때로는 아주 조그마한 것을 하나 바꾸기 위해서도 수백 줄의 코드를 변경해야만 합니다.

웹 개발의 여러 기술 요소들은 서로 간에 밀접한 관계를 맺고 있기 때문에, 업무를 분담해 작업하는 것 또한 쉽지 않습니다. 어떤 이들은 개발자의 수를 늘리면 프로젝트도 그만큼 빨리 끝나리라는 착각을 하곤 합니다만, 한두 번 경험해본 게 아닌 우리 개발자들은 이러한 생각이 얼마나 순진한 것인지 잘 알고 있습니다. 개발자들 사이에서 널리 알려진 “브룩스의 법칙”(일정이 지체된 개발 프로젝트에 추가 인력을 투입하면 일정이 더욱 늦어진다)을 굳이 들먹이지 않는다고 해도 말입니다.
개발자 수를 늘려 업무 능률을 개선할 수 있는 게 아니라면, 대안은 시스템 설계의 일관성을 높여 구조를 단순화하고 가능한한 많은 개발 작업을 자동화하는 것뿐입니다. 이는 한 사람의 개발자가 관리할 수 있는 복잡성이 지극히 한정되어 있기 때문입니다. 시스템의 복잡성을 줄이고 반복적인 작업을 자동화할 수 있다면, 개발 생산성은 획기적으로 높아질 것입니다. 레일스는 바로 이러한 점에 착안하여 만들어진 웹 개발 프레임워크입니다.

레일스에서는 개발의 일관성을 높이기 위해 ‘관례’를 중시합니다. 관례란 사회가 효율적으로 운영되도록 만들어 놓은 핵심 기능입니다. 버스 정류장에서 사람들이 차례를 지켜 버스에 올라 타고 운전할 때 마주오는 차를 걱정하지 않아도 되며 도서관에서 조용히 책을 읽을 수 있는 것은 모두 이러한 관례 덕분입니다. 똑똑한 관례를 만들어서 개발의 요소요소에 도입하면 놀라운 일이 일어납니다. 레일스에서 관례는 시스템의 구조를 직관적으로 만들어 줬으며, 개발자가 작성해야 하는 소스 코드의 양을 상당 부분 줄여주고 있습니다.
레일스는 중복적인 개발 작업을 줄이기 위해 개발 작업을 자동화하는 다양한 기능을 제공하고 있습니다. 여러분은 레일스의 이러한 기능을 활용하여 많은 코딩 작업을 자동화할 것입니다. 그리하여 반복적인 코드를 작성하는 번거로운 작업을 더 이상 되풀이하지 않아도 될 것입니다.

여러분의 개발 생산성은 획기적으로 높아질 것이고 그로 인해 생겨난 여가 시간을 좀더 창의적인 업무에 투자하고 휴식을 취하거나 혹은 가족과 함께 시간을 보내는 데 사용할 수 있을 것입니다. 하지만 중요한 것은 단지 시간이 절약되었다는 것만이 아닙니다. 개발 작업에서 단순하고 반복적인 작업이 줄어들고 다른 새로운 일에 몰두할 수 있게 되면, 개발 업무에 대한 여러분의 만족도 또한 높아져 웹 프로그래밍은 더욱 즐거워질 것입니다.
여러분은 기존에는 서너 명의 개발자가 필요했던 프로젝트를 혼자서 더 빨리 끝내게 될 것입니다. 어느 두 명의 개발자는 합심하여 벤처 회사를 차릴지도 모르겠습니다. 단순하고 중복적인 작업에서 해방되어, 이제 여러분은 더 중요하고 거시적인 문제 해결에 집중할 수 있게 될 것입니다. 모쪼록 이 책이 여러분의 열정을 실현하는 데 많은 도움이 되기를 바랍니다.


[ 저자 소개 ]

황대산

고1 때 미국으로 건너가 예일대에서 수학을 전공했으며 최우수 졸업자에게 수여하는 DeForest 수학상을 수상했다. 어려서부터 프로그래밍에 관심이 많아 대학 졸업 후 귀국하여 산업기능요원으로 3년간 복무한 후 진로를 선회한 저자는 현재 프리랜서 개발자로 활동하며 개인 사업을 준비 중이다. 루비/레일스 에반젤리스트를 자임하며 틈틈이 블로그나 잡지 등에 관련 글을 기고하는 등 활발히 활동하고 있으며, ‘beyond the status quo(http://beyond.daesan.com/)’란 개인 블로그에 프로그래밍과 삶에 대한 小考를 정리하고 있다. 물리학이나 철학에도 관심이 많으며, 언젠가는 비행기 조종을 배워볼 소박한 꿈도 지니고 있다.

목차

목차
  • 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년 덴버 컨퍼런스에 이어 두번째로 참석하는 루비 컨퍼런스인데요, 루비의 성장세를 반영하듯 갈수록 호텔이 럭셔리해지는군요. :)

사용자 삽입 이미지
위 사진은 호텔 방에서 바라본 호텔 뒷편 풍경입니다. 야외 수영장과 호텔에 딸린 골프장이 보입니다. 골프를 치지 않는 저에게는 그저 산책코스일 뿐이네요.^^ 플로리다는 아직도 꽤 따뜻해서 오후에는 기온이 30도 가까이 올라가니, 수영장 옆에서 썬탠을 즐기는 사람들도 꽤 있더군요.

사용자 삽입 이미지
재작년의 덴버 컨퍼런스는 참가 인원을 250명으로 제한해서 컨퍼런스 등록 개시 4시간만에 등록이 마감되는 진기록을 세우기도 했는데요, 이번에는 좀더 많은 사람들이 참석할 수 있게 정원을 500명으로 늘렸다고 합니다.
 

사용자 삽입 이미지
컨퍼런스 첫날 오전 루비의 창시자인 유키히로 마츠모토씨의 기조 연설을 열심히 듣는 루비 개발자들의 모습입니다.

사용자 삽입 이미지
기조연설 후에 마츠모토씨와 기념 사진 한방~! 루비 개발자들 사이에선 "마츠"란 이름으로 더 잘 알려져 있죠. 무려 2년만에 보는데도 저를 기억하고 계시더군요. :)

바쁘게 세션을 돌아다니고 발표자들과 이야기를 나누다 보니 사진을 많이 찍지는 못했네요. 마지막 세션이 끝나고 나니 이랬던 하늘이....

사용자 삽입 이미지

이렇게 변해버렸습니다. :)
사용자 삽입 이미지

3일의 일정 중에 이제 하루가 지났습니다. 한국에 돌아가서 더 많은 소식을 전해드리기로 하고, 루비 컨퍼런스 2008 현장 스케치는 여기서 마치겠습니다! 곧 제 블로그 "beyond the status quo"에서 다시 만나 뵙겠습니다. :)
CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

블로터닷넷에 뜬 에이콘 레일스 신간과 미투데이 기사
블로그 기반 온라인 미디어인 블로터닷넷 헤드라인 기사에 저희 신간 『Easy Start! 웹 개발 2.0 루비 온 레일스』기사가 게재되었습니다. 루비 온 레일스로 서비스를 구축한 더블트랙미투데이 사례와도 연계되어 기사화되었습니다.


요즘 저희 책을 무색하게 할 정도로 미투데이가 장안의 화제입니다. 올블로그 추천글 목록을 도배하다시피 하는 와중에 아류 서비스(?)까지 갑자기 등장해서 순식간에 바람몰이를 하고 있습니다.

책이 됐든 서비스이든 어떤 완성된 제품을 만들어 고객에게 고스란히 전달하기까지는 꽤 어려운 고충과 인고의 과정이 필요합니다. 언젠가 제가 블로그에서 언급한 이야기이기도 하지만, 컬럼부스의 삶은 달걀이나 알렉산더가 단칼에 잘라버린 고르디온의 매듭을 언급하지 않더라도 첫 시도라는 것은 여러 의미에서 매우 중요합니다. 저희 출판사가 불모지였던 임베디드나 웹 표준 서적에 과감히 출사표를 내던졌던 것도 마찬가지였겠지요. ;)

책을 평가하는 사람은 저희가 아닙니다. 저희는 그저 할 수 있는 최선을 다해 책을 만들고 최대한의 정보를 제공할 뿐이고, 책에 대한 올곧은 평가는 독자가 내립니다. 화젯거리를 만들어 단박에 사람들의 화두에 오르내리기는 그다지 어려운 일이 아닐 겁니다. 단번에 내달음을 치고 달려 나갈 수도 있습니다. 하지만 세상은 한 걸음 한 걸음 우직하게 내딛는 자들의 것이라고 믿고 싶습니다. 뜻하지 않게 발에 채이는 돌부리를 비껴가느라 마음이 급할 텐데도, 자신들이 그려놓은 청사진을 실현하기 위해 당당하게 한 걸음씩 내딛는 미투데이의 행보에 저희 에이콘도 힘을 실어드립니다.

※ 『Easy Start! 웹 개발 2.0 루비 온 레일스』책을 열심히 만들고자 노력했는데 몇 가지 오류들을 독자분께서 발견해서 알려주셨습니다. 내용을 확인 후에 이 책 도서정보 페이지의 정오표 항목에 올리고 있습니다. 독자분께서 내용을 이해하시는 데 불편함이 없도록 최대한 노력하겠습니다! 책에 대해 궁금한 사항이 있으시면 오류 신고나 토론방에 올려주시면 답변 해드리겠습니다.

CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

『Easy Start! 웹 개발 2.0 루비 온 레일스』 포토 스케치!
드디어 조금 전에 따끈따끈한 신간『Easy Start! 웹 개발 2.0 루비 온 레일스』가 저희 손에 들어왔습니다.
에이콘 열혈 독자라면 눈치챌 『예제로 배우는 Adobe 플렉스 2』식 뒷표지입니다.
에이콘 대문 앞에서 기념사진 찰칵!
웹 프로페셔널 시리즈 여섯 권이 옹기종기 모두 모였습니다. 사랑스럽고나~!
특별부록으로 책 맨 뒷 부분에 "레일스 명령어, 메소드 요약표"를 넣었습니다. 생각보다 '절취선'이 살짝 안쪽으로 들어가 있어서 자르실 때 아주 쪼끔 불편하실 수 있을 것 같기는 합니다만, 떼어내셔서 들고 다니시거나 벽에 붙여놓고 활용하시면 "진짜 좋다!"라는 생각이 드실 겁니다. :D
잘 찾아보시면 제 이름도 나와있어요. 하하. ^^V 울 사장님 성함도 함께~ 이 책의 소스코드는 이미 모두 올려놓았으니 여기로 가셔서 다운로드 받아서 사용하세요.
얼굴에 송글송글 맺힌 땀방울 보이세요? 책 나르느라 함께 힘도 써주셨답니다. 옷에 달려있는 아이팟 셔플은 여친이 준 소중한 선물이라는.. :) 이 책을 영문판으로 내고 싶다는 대산님의 소망이 꼭 이뤄지길!
Java Language Specification (3/e) 한국어판』번역을 진행하고 계시는 NHN의 김형준 책임님도 들르신 김에 한컷! 그런데 주인공은 마치 황영주 대리인 듯!ㅎㅎ
책 만드느라 고생한 에이콘 편집팀 양석준씨와 황지영씨와도 기념 촬영!
"우와, 책 좋군요" "정말이군요!" 아마 두 분이 이런 대화를 나누고 계신 듯. ㅎㅎ『조엘 온 소프트웨어』의 역자 박재호님도 오셔서 축하해주셨어요.
팬들의 요청에 싸인 중 싸인"연습"중인 저자 황대산님! 10분 동안 연습만 하셨다나..? Believe It or Not! 저도 방금 직접 대산님이 고맙다고 인사를 적은 책을 받았습니다. 감동이에요!! T^T 흑흑 오늘은 감동모드.

참,『웹 개발 2.0 루비 온 레일스』라는 멋진 제목을 지어주신 분께 감사의 말씀을 드려야겠습니다. 주인공은 바로 "에이콘 웹 프로페셔널 시리즈 에디터"이자 최근 "즐겁고 재미있는 서비스" 미투데이로 웹 세상을 들썩이게 만들고 날마다 상한가를 올리고 계시는 더블트랙의 박수만님입니다. 좋은 추천글도 써주시고 멋진 제목도! 역시 시리즈 에디터다우십니다. 미투데이 화이팅! ^^*

마지막으로 한 마디 남깁니다.
작년 6월에 전화로 인사 나누고 처음 만나 좋은 책 써보자고 의기투합한 게 어언 9개월이에요. 그동안 한마디 한줄 글 다듬어내고 마지막까지 열심히 노력해주신 대산씨, 너무 고생 많았습니다. 정말 고마워요...! 우리 에이콘과의 소중한 인연 곱게 이어나가요~ ^^
이제 독자 여러분께서 사랑해주실 일만 남았군요. 두근두근... ;)
CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

『Easy Start! 웹 개발 2.0 루비 온 레일스』 대공개!

황대산 지음 / 28,000원 / 432페이지 / 2007년 3월 10일 출간 예정
덴마크에서 시작된 작은 오픈소스 프로젝트 하나가 이제는 전 세계 웹 개발자들의 삶을 뒤바꾸고 있습니다. 이제는 제 고향에서 지구 반 바퀴만큼이나 떨어진 한국에서도 레일스에 관심이 있는 분들이 많다는 이야기를 들으니 무척 뿌듯합니다.

또한 황대산님이 쓴 한국의 첫 루비/레일스 저서인 Easy Start! 웹 개발 2.0 루비 온 레일스
에 축하의 인사를 전할 수 있게 되어 매우 영광입니다. 독자 여러분은 이 책을 통해 ‘즐거운 웹 개발’을 지향하는 레일스 세계에 첫 발을 들여놓게 될 입니다.
- 데이빗 해너마이어 한슨 / 레일스 프레임워크의 창시자
루비 온 레일스의 등장은 웹 애플리케이션 프레임워크의 혁신이다. 이제 여러분은 국내 최초의 루비 온 레일스 저서를 읽으며 그 혁신에 한 발짝 더 다가설 수 있다.
박상길 / (주)다음커뮤니케이션 기술혁신센터, likejazz.com 블로그
아끼는 후배 개발자를 옆에 앉혀 놓고 자상하게 가르쳐주는 선배처럼 레일스를 기초부터 학습할 수 있도록 꼼꼼하고 친절하게 가이드 해주고 있다. 불필요한 기능과 작업을 최소화하고 핵심에 집중할 수 있게 해주는 레일스와 이 책은 그런 면에서 꼭 닮았다.
이일민 / 이프릴 대표 컨설턴트, toby.epril.com 블로그
이 책은 루비 온 레일스의 입문자들이 루비와 레일스를 이해하고 자신만의 애플리케이션을 손쉽게 만들어 볼 수 있도록 친절한 가이드 역할을 해주고 있다.

장정환 / NHN ㈜ Ajax UI 팀장

-----------  -----------  -----------  -----------  -----------  -----------
 

#1. 드디어 긴 시간의 여정을 마치고 이제 닻을 내리려 합니다. 그간 몇 달 동안 레일스 책을 적느라 고생하신 저자 황대산님, 에이콘 찜질방 2호(1호는 누굴까나!?)로 며칠 밤 함께 하며 대산님의 새로운 모습(조만간 블로그에 공개해버릴까?)도 발견하고 참 즐거웠습니다. 오늘 새벽까지 함께 편집 마무리를 하고 지금은 조금 먼 거리에 잠시 휴식을 취하러 떠나셨으니 다음 주에 건강한 모습으로 다시 만나요.

#2. 표지를 만드느라 참 고생이 많았습니다. 이런 저런 스타일로도 만들어보고 여러 컨셉에 대해 난상토론도 펼치다가 빨간 루비색의 요요 사진 이미지를 발견하고 과감히 채택했습니다. 가볍고 즐거운 요요, 왠지 레일스와 닮았다고 생각지 않으십니까? (표지 어떠세요? 독자분들 마음에 들었으면 좋겠어요.. ^^)

#3. 늘 편집 마무리는 예상을 깨는 기한 연장, 불쑥 튀어나오는 변수들과의 싸움입니다. 게다가 이번 책은 저희 에이콘의 다섯 번째 저서입니다.(다섯 권을 모두 맞추시는 분께 레일스 책을 상품으로 한 권 걸어볼까요? ^^*) 번역서도 쉬운 일이 아니지만 저서는 그 몇 배로 힘든 만큼 보람도 큽니다. 함께 작업한 우리 사장님과 직원들, 디자인 맡아주신 여상현님께 그간 고생하셨다는 말씀 전하고 싶네요.

#4. 열심히 만들었지만 부족한 점이 많을지도 모르겠습니다. 너른 마음으로 좋게 봐주시고 미흡한 점은 언제든 말씀해주세요.
CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

大山님의『Easy Start! 웹 개발 2.0 루비 온 레일스』
오늘은 모두(!)가 기다리고 계실 황대산님의 루비 온 레일스 책 이야기를 꺼내볼까요? 책만큼 어떻게 진행하고 있는지 몹시 궁금해하실 거라고 생각합니다만.


며칠 전 더블트랙에서 클로즈 베타 버전의 me2day라는 서비스를 선보여 블로거들의 엔돌핀 증가에 막강한 기여를 하고 있습니다만, 이 me2day라는 서비스도 더블트랙의 codian님이 일주일만에 몇 주만에 뚝/딱/ 레일스로 만들었다는 것으로도 화제가 되고 있습니다. 베타 유저로서 말씀드리는 것이지만, 아마도 me2day는 점점 무거워지고 있는 블로그 월드를 대신할 새로운 서비스로서 블로그와 메신저, SMS를 통합한 텍스트 지향의 쉽고 즐거운 서비스가 될 것 같아 기대가 큽니다. 아마도 촌철 살인을 자랑하는 막강 블로거들의 수정 요청에 힘입어 정식 오픈때까지는 또 어떤 모습으로 탈바꿈하게 될지 그 향보를 지켜보는 것도 매우 흥미롭습니다.

이렇게 쉽고 빠른 그리고 기민한 웹 개발이 가능한 데에는 바로 루비 온 레일스가 있었기 때문이 아닐까 싶습니다. 레일스는 이처럼 기존의 복잡다단한 웹 개발을 "반복적인 코딩 작업은 피하라!(일명 DRY)"와 "설정보다는 관례가 더 편리하다"는 두 가지 사상을 기조로 하여, 높은 웹 개발 생산성을 기치로 데이빗 해너마이어 핸슨이 만들어낸 차세대 웹 개발 프레임워크입니다.

지금 엄청 꼼꼼한 (하지만 알고보면 매우 엉뚱하고 재미있는) 대산님의 리뷰와 에이콘의 편집작업 등이 남아있는 상태인 『Easy Start! 웹 개발 2.0 루비 온 레일스』는 이번 주말 마감을 목표로 맹렬히 달리고 있습니다.

▶ 『Easy Start! 웹 개발 2.0 루비 온 레일스』는 어떤 책인가요?
기존의 What?만을 나열해놓은 지루한 책이 아니라 400여 페이지 남짓의 속이 꽉 찬 책을 통해 How? & Why?를 알려주는 책입니다. 레일스의 철학과 How to Works를 제대로 파악할 수 있는 책이지요.

▶ 그렇다면 무겁고 지루한 책?
No! 지엽적인 내용은 가능한 배제하고 흐름을 타고 읽어내려갈 수 있게 기술해놓았기 때문에 지하철에서 가볍게 읽어도 좋고 컴퓨터를 앞에 놓고 코드를 하나씩 입력해놓아가며 열심히 공부하며 읽어도 좋은 책입니다. 그야말로 그때그때 달라요!

▶ 이 책의 장점은 무엇일까요?
- 레일스 최신 버전인 1.2.2를 다루고 있음
- 레일스 개발에 필요한 루비 튜토리얼/레퍼런스
- 총 90페이지에 다다르는 블로그 실전 개발 예제
- 벽에 붙여놓고 언제든 참조할 수 있는 초간단 레퍼런스 부록
말로 다 할 수가 없습니다. -0-

▶ 누가 읽어야 하나요?
웹 개발을 한 번이라도 해본 사람이라면 누구나 쉽게 읽을 수 있습니다.
특히 새로운 프로젝트를 진행하려는 소규모 팀이나 회사 등 레일스 도입을 고려하고 있는 분들이라면 당연한 필독서겠지요.

자, 에이콘 웹 프로페셔널 시리즈 에디터인 박수만님이 블로그에 올린 추천의 글에서도 좀더 기술적인 내용을 담고 있으니 한번 읽어보시구요.

기존의 지루하고 복잡한 웹 개발 프로세스에 질리고 찌든, 그래서 새로운 활력을 되찾고 싶은 웹 개발자라면 모두 기대하셔도 좋습니다. (이야, 점차 찌라시가 되어가는 듯한.. -0-)

CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

[ p36 본문 8행 ]
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!

배열 자체를 변경한다. → 문자열 자체를 변경한다.