-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy path01-introduction.md.erb
115 lines (62 loc) · 9.41 KB
/
01-introduction.md.erb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
---
title: 서론
slug: introduction
date: 0001/01/01
number: 1
contents: 미티어의 특징을 알아본다.|이 책에 대한 이야기를 다룬다.|이 책의 구성에 대하여 알아본다.
paragraphs: 35
---
간단한 사고 실험을 해보자. 컴퓨터에서 두 개의 윈도우로 동일한 폴더를 연다.
이제 한 쪽의 윈도우에서 파일을 하나 삭제한다. 다른 창에서도 그 파일이 삭제되었을까?
실제로 어떻게 되는지 해 볼 필요도 없다. 로컬 파일 시스템에서 무언가를 수정하면, 그 변화는 새로 고침을 하거나 콜백을 호출하거나 하지 않아도 어디서나 적용된다. 이것은 그냥 일어난다.
그런데, 동일한 시나리오가 웹에서는 어떻게 되는지 생각해보자. 예를 들어, 두 개의 브라우저 윈도우를 열고 동일한 워드프레스 관리자 사이트를 열어, 그 중 하나의 브라우저에서 새 글쓰기를 한다. 데스크탑에서와 달리, 다른 브라우저 창에서는 아무리 오래 기다려도 직접 새로고침을 하기 전에는 그 변경 내용이 반영되지 않는다.
수 년 동안, 우리는 웹사이트란 간단히 말하면 사용자가 개별 화면들과 통신하는 형태라는 생각에 익숙해져있다.
그러나 미티어는 웹을 실시간이며 반응형으로 만들어 기존의 웹에 도전하는 새로운 흐름의 프레임워크이자 기술이다.
### 미티어(Meteor)란 무엇인가?
미티어는 실시간 웹 앱을 구축할 목적으로 Node.js 기반 위에 구축된 플랫폼이다. 이것은 데이터베이스와 사용자 인터페이스 사이에 자리하여 양쪽이 서로 동기화 상태를 유지하도록 한다.
미티어는 Node.js 기반 위에 구축되어, JavaScript를 클라이언트와 서버 양쪽에서 사용한다. 더욱이, 미티어는 양쪽의 환경사이에서 코드를 공유할 수도 있다.
이런 결과로 미티어는 웹 개발 과정의 많은 일상적인 귀찮고 어려운 일들을 추상화함으로써 매우 강력하면서도 간결한 플랫폼이 되었다.
### 왜 미티어인가?
그렇다면 왜 다른 웹 프레임워크가 아닌 미티어를 배워야 하는가? 미티어의 다양한 기능들은 논외로 하더라도, 결국 이 하나에 이른다고 믿는다: 미티어는 배우기 쉽다.
다른 어떤 프레임워크보다 더욱 그렇듯이, 미티어는 수 시간정도면 실시간 웹 앱을 개발하고 실행하는 것이 가능하다. 그리고 프론트엔드 개발 경험이 있다면, 이미 Javascript에 익숙할 것이므로 새로운 언어를 배울 필요도 없다.
미티어가 독자의 요구에 이상적인 프레임워크일 수도 있고, 아닐 수도 있다. 하지만 며칠 밤의 또는 주말 기간 정도의 코스로 시작할 수 있으니, 스스로 해보고 답을 구해보는 것이 어떨까?
### 왜 이 책인가?
지난 몇 년간, 우리는 웹과 모바일에서 상업적이거나 오픈소스프로젝트에 이르기까지 수많은 미티어 프로젝트를 수행해왔다.
우리는 수많은 것을 배웠다. 그러나 우리의 궁금증에 해답을 찾는 것이 항상 쉬운 것은 아니었다. 우리는 많은 다른 소스를 가져와서 조합해야 했고, 많은 경우에는 직접 개발해야 했다. 그래서 이 책을 통해서 우리는 그 경험을 공유하기를 원했다. 그리고 단계별 안내서를 만들어 독자가 완성된 Meteor 앱을 처음부터 끝까지 따라가면서 구축하도록 하였다.
우리가 구축하려는 앱은 [Hacker News](http://news.ycombinator.com)나 [Reddit](http://reddit.com)과 같은 소셜 뉴스 사이트의 단순화 버전으로, (이 앱의 빅브라더인 미티어 오픈소스 앱 [Telescope](http://telesc.pe)에서 유추하여) Microscope라고 이름을 지었다. 이를 구축하는 동안, 우리는 미티어 앱의 구축에 투입되는 사용자 계정, 미티어 컬렉션, 라우팅 등과 같은 모든 요소들을 다룰 것이다.
### 이 책은 누구를 위한 책인가?
이 책을 저술하는 동안 우리 목표의 하나는 접하기 쉽고 이해하기 쉽게 하는 것이었다. 그래서 여러분이 미티어, Node.js, MVC 프레임워크, 심지어는 일반적인 서버 사이트 코딩에 대한 경험이 없어도 따라갈 수 있을 것이다.
한 편, 우리는 여러분이 기본적인 JavaScript 문법과 개념에 대하여는 잘 알고 있다고 가정한다. 하지만, 여러분이 일부 jQuery 코드를 살펴보았거나 브라우저의 개발자 콘솔로 작업을 해 보는 정도만 되어도 충분하다.
### 이 책은 누구를 위한 것인가?
우리는 이 책을 가까이하기 쉽고 이해하기 쉽게 저술하는 것이 목표였다. 그러니, 독자가 Meteor, Node.js, MVC 프레임워크, 또는 일반적인 서버 쪽의 코딩에 경험이 없어도 그냥 따라갈 수 있을 것이다.
한 편, 우리는 독자가 기본적인 JavaScript의 문법과 개념에는 친숙하다고 가정한다. 만약 독자가 jQuery 코드를 파헤쳐보았거나 또는 브라우저 콘솔에서 놀아보았다면, 이 정도면 되었다.
### 저자 소개
우리가 누군지, 신뢰할만한 지 궁금한 분들을 위해서, 우리에 대한 약간의 배경 설명을 하겠다.
<%= image "tom-photo.jpg", "portrait" %>
**Tom Coleman**은 품질과 사용자 체험에 초점을 두는 웹 개발 샵인 [Percolate Studio](http://percolatestudio.com/)의 일원이다. 그는 [Atmosphere](http://atmosphere.meteor.com) 패키지 저장소의 운영그룹의 일원이며, 또한 많은 다른 미티어 오픈 소스 프로젝트([Iron Router](https://github.com/EventedMind/iron-router)와 같은)를 지원하고 있다.
<%= image "sacha-photo.jpg", "portrait" %>
**Sacha Greif**는 [Hipmunk](http://hipmunk.com)와 [RubyMotion](http://rubymotion.com)와 같은 스타트업에서 제품과 웹 디자이너로 일했다. 그는 [Telescope](http://telesc.pe)와 [Sidebar](http://sidebar.io) (Telescope에 기반한)의 제작자이며 [Folyo](http://folyo.me)의 설립자이다.
### 장과 사이드바
우리는 이 책이 미티어 입문자와 고급 프로그래머 모두에게 유용하도록, 각 장을 두 범주로 구분하였다: 정규 장(1부터 14까지)과 사이드바(.5 숫자).
정규 장은 앱의 구축과정을 독자들이 따라가도록 한다. 그리고 독자들이 너무 상세한 부분에 깊이 빠져들지 않도록 가장 중요한 단계들을 설명하여 가능한 빨리 독자가 조작하도록 할 것이다.
한 편, 사이드바는 미티어의 복잡한 내부를 깊이있게 파고 들어가서 이면의 실제 동작하는 부분에 대한 이해를 높이도록 도울 것이다.
그러니 독자가 입문자라면, 처음 읽을 때에는 사이드바는 건너뛰고, 미티어 전체를 읽어본 후에 나중에 돌아와서 읽어보기 바란다.
### 커밋과 시점별 소스
프로그래밍 책을 따라 읽어가다가 어느 순간 독자가 작성한 코드가 예제와 맞지 않음을 깨닫게 되고 더 이상 제대로 작동하지 않는 것보다 나쁜 경우는 없다.
이렇게 되지 않도록, 우리는 [Microscope를 위한 Github 저장소](https://github.com/DiscoverMeteor/Microscope)를 설치했다. 그리고 모든 코드 변경시마다 이를 커밋한 git에 대한 링크를 제공할 것이다. 또한, 각 커밋은 그 커밋 시점의 앱의 실제 인스턴스에 대한 링크를 제공하여 독자가 자신의 코드와 비교할 수 있게 하였다. 아래는 실제 예제이다:
<%= commit "11-2", "Display notifications in the header." %>
하지만 우리가 이 커밋 버전들을 제공한다고 해서 하나 하나 `git checkout`을 해야 한다는 의미는 아니다. 시간을 들여서라도 직접 코드를 수동으로 타이핑한다면 훨씬 잘 배울 것이다!
### 다른 리소스들
미티어의 특정 부분에 대하여 더 배우길 원하면, [공식 미티어 문서](http://docs.meteor.com/)가 최고의 출발점이다.
또한 문제해결과 질문에 대하여는 [Stack Overflow](http://stackoverflow.com/questions/tagged/meteor)를 추천한다. 그리고 실시간 도움이 필요하다면 #meteor [IRC channel](https://webchat.freenode.net/) 채널을 추천한다.
<% note do %>
### Git이 필요한가?
Git 버전 컨트롤에 익숙해지는 것이 이 책을 따라가는데 반드시 필요한 것은 아니지만, 강력하게 권고한다.
빨리 배우고 싶다면, Nick Farina의 [Git Is Simpler Than You Think](http://nfarina.com/post/9868516270/git-is-simpler)를 추천한다.
독자가 git 입문자라면, [GitHub for Mac](http://mac.github.com/)을 추천하는데, 이것을 사용하면 command line을 사용하지 않고 저장소를 복제하거나 관리할 수 있다.
<% end %>
### 접촉하기
- 독자가 우리와 직접 접촉하기를 원한다면, [[email protected]](mailto:[email protected])로 메일을 보내기 바란다.
- 또한, 책의 내용에서 오탈자나 실수를 발견하면 [submitting a bug in this GitHub repo](https://github.com/DiscoverMeteor/book/issues)로 알려주기 바란다.
- Microscope의 코드에 문제가 있다면, [Microscope 저장소에 오류를 등록](https://github.com/DiscoverMeteor/Microscope/issues)할 수 있다.
- 마지막으로, 모든 다른 질문이 있으면 이 앱의 사이드 패널에 댓글을 달 수 있다.