이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
라라벨로 배우는 실전 PHP 웹 프로그래밍
김주원
제이펍 2016.11.26.
베스트
IT 모바일 top100 10주
가격
30,000
10 27,000
YES포인트?
1,500원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

이 분야의 이벤트

상세 이미지

책소개

목차

PART 1 라라벨 입문 _1
CHAPTER 01 라라벨 설치 _ 2
1.1 새로운 라라벨 프로젝트 만들기 _ 2
1.2 라라벨 프로젝트 구조 _ 4
1.3 라라벨 작동 원리 _ 7
1.4 버전 관리 _ 8

CHAPTER 02 전역 환경 설정 _ 9
2.1 dotenv 파일이 하는 일 _ 9
2.2 APP 환경 설정 _ 11
2.3 마치며 _ 12

CHAPTER 03 라우팅 _ 13
3.1 URL _ 13
3.2 라우팅 만들기 _ 16
3.3 URL 파라미터 _ 18
3.4 라우트 이름 _ 19
3.5 마치며 _ 20

CHAPTER 04 뷰와 데이터 바인딩 _ 21
4.1 뷰 반환 _ 21
4.2 데이터 바인딩 _ 22
4.3 마치며 _ 23

CHAPTER 05 블레이드 _ 24
5.1 변수를 이용한 문자열 보간 _ 25
5.2 주석 _ 25
5.3 제어 구조 _ 26
5.4 템플릿 상속 _ 28
5.5 조각 뷰 삽입 _ 31
5.6 마치며 _ 33

CHAPTER 06 데이터베이스와 모델 _ 34
6.1 데이터베이스 준비 _ 35
6.2 REPL _ 36
6.3 데이터베이스 쿼리 _ 37
6.4 쿼리 빌더 _ 40
6.5 엘로퀀트 ORM _ 43
6.6 마치며 _ 49

CHAPTER 07 데이터베이스 마이그레이션 _ 50
7.1 마이그레이션 만들기 _ 51
7.2 마이그레이션 실행 _ 55
7.3 롤백 _ 56
7.4 열 추가 _ 57
7.5 초기화 및 새로고침 _ 58
7.6 마치며 _ 59

CHAPTER 08 컨트롤러 _ 60
8.1 컨트롤러 만들기 _ 60
8.2 RESTful 라우트와 컨트롤러 _ 61
8.3 마치며 _ 70

CHAPTER 09 사용자 인증 _ 71
9.1 HTTP의 무상태 특성 _ 71
9.2 기본기 다지기 _ 73
9.3 라라벨 내장 사용자 인증 _ 79
9.4 마치며 _ 81

CHAPTER 10 엘로퀀트 ORM _ 82
10.1 일대다 관계 _ 82
10.2 다대다 관계 연결 _ 86
10.3 마치며 _ 91

CHAPTER 11 데이터베이스 시딩 _ 92
11.1 시더 만들기 _ 92
11.2 모델 팩토리 _ 93
11.3 마스터 시더 _ 97
11.4 마이그레이션과 시딩 _ 99
11.5 마치며 _ 99

CHAPTER 12 즉시 로드와 페이징 _ 100
12.1 즉시 로드 _ 100
12.2 페이징 _ 104
12.3 마치며 _ 106

CHAPTER 13 입력값 유효성 검사 _ 107
13.1 유효성 검사 기본기 _ 108
13.2 트레이트의 메서드 이용 _ 114
13.3 폼 리퀘스트 클래스 이용 _ 115
13.4 마치며 _ 117

CHAPTER 14 이벤트 시스템 _ 118
14.1 기본기 다지기 _ 119
14.2 이벤트 레지스트리 _ 120
14.3 이벤트 리스너 클래스 _ 121
14.4 이벤트 클래스 _ 122
14.5 실용적인 이벤트 시스템 _ 124
14.6 라라벨 내장 이벤트 채널 _ 126
14.7 마치며 _ 129

CHAPTER 15 예외 처리와 디버깅 _ 130
15.1 전역 예외 처리기 _ 130
15.2 실용적인 예외 처리 _ 132
15.3 디버깅 _ 136
15.4 디버깅 방법 _ 140
15.5 마치며 _ 143

CHAPTER 16 이메일 보내기 _ 144
16.1 지메일로 메일 보내기 _ 145
16.2 메일건으로 메일 보내기 _ 147
16.3 심화 학습 _ 150
16.4 테스트 환경 _ 153
16.5 마치며 _ 153

CHAPTER 17 컴포저 _ 154
17.1 컴포저란? _ 155
17.2 로컬 컴포넌트 레지스트리 둘러보기 _ 156
17.3 컴포넌트 가져오기 실습 I _ 158
17.4 컴포넌트 가져오기 실습 II _ 160
17.5 install? update? _ 164
17.6 문제 해결 _ 164
17.7 오토로드 _ 165
17.8 좋은 컴포넌트 찾기 _ 166
17.9 마치며 _ 167

PART 2 실전 프로젝트 I - 마크다운 뷰어 _169
CHAPTER 18 모델 _ 170
18.1 파일시스템 _ 170
18.2 모델 만들기 _ 171
18.3 테스트 _ 173
18.4 예외 처리 _ 174
18.5 마치며 _ 175

CHAPTER 19 컨트롤러와 도우미 함수 _ 176
19.1 사용자 정의 도우미 함수 _ 176
19.2 컨트롤러 _ 177
19.3 뷰 _ 178
19.4 마치며 _ 180

CHAPTER 20 다듬질 _ 181
20.1 서버 측 캐싱 _ 181
20.2 이미지 응답 _ 183
20.3 클라이언트 측 이미지 캐싱 _ 187
20.4 마치며 _ 191

CHAPTER 21 엘릭서와 프런트엔드 _ 192
21.1 필요 프런트엔드 리소스 _ 192
21.2 필요 도구 설치 _ 193
21.3 엘릭서 _ 194
21.4 빌드 스크립트 작성 _ 196
21.5 활용 사례 _ 201 21.6 마치며 _ 204

PART 3 실전 프로젝트 II - 포럼 _205
CHAPTER 22 계획과 준비 _ 206
22.1 기능 요구 사항 목록 _ 206
22.2 데이터베이스 모델링 _ 207
22.3 프로젝트 준비 _ 209
22.4 마스터 레이아웃 _ 210
22.5 마치며 _ 213

CHAPTER 23 사용자 인증 재구성 _ 214
23.1 라우팅 정의 _ 214
23.2 컨트롤러 _ 216
23.3 사용자 등록 구현 _ 216
23.4 사용자 로그인 구현 _ 225
23.5 비밀번호 바꾸기 구현 _ 229
23.6 마스터 레이아웃 _ 234
23.7 마치며 _ 234

CHAPTER 24 소셜 로그인 _ 236
24.1 소셜라이트 컴포넌트 _ 236
24.2 작동 원리 _ 237
24.3 깃허브 설정 _ 239
24.4 라우트 정의 _ 241
24.5 마이그레이션 _ 241
24.6 로그인 처리 로직 _ 242
24.7 네이티브 로그인 처리 수정 _ 245
24.8 소셜 로그인 링크 _ 247
24.9 다듬질 _ 248
24.10 마치며 _ 249

CHAPTER 25 아티클 기능 구현 _ 250
25.1 라우트 모델 바인딩 _ 250
25.2 글 목록 _ 251
25.3 글 상세 보기 _ 256
25.4 글 수정 _ 257
25.5 글 삭제 _ 260
25.6 인증과 인가 _ 261
25.7 다듬질 _ 264
25.8 마치며 _ 266

CHAPTER 26 태그 기능 구현 _ 267
26.1 태그 데이터 _ 267
26.2 태그 선택 _ 270
26.3 태그 출력 _ 272
26.4 다듬질 _ 276
26.5 마치며 _ 277

CHAPTER 27 파일 첨부 기능 구현 _ 278
27.1 파일 업로드 _ 278
27.2 UI 개선 _ 285
27.3 다듬질 _ 291
27.4 마치며 _ 293

CHAPTER 28 댓글 기능 구현 _ 294
28.1 다형적 다대다 관계 _ 294
28.2 댓글 UI _ 300
28.3 서버 측 구현 _ 305
28.4 투표 기능 _ 309
28.5 마치며 _ 317

CHAPTER 29 다듬질 I _ 319
29.1 아티클 검색, 정렬, 조회 수, 댓글 수 _ 320
29.2 이메일 알림 _ 326
29.3 고아 첨부 파일 청소 _ 330
29.4 댓글 소프트 삭제 _ 334
29.5 모델 쿼리 캐싱 _ 338
29.6 캐시 저장소 변경 _ 343
29.7 마치며 _ 349

CHAPTER 30 다듬질 II _ 350
30.1 다국어 지원 _ 350
30.2 오류 알림 _ 363
30.3 마치며 _ 367

PART 4 실전 프로젝트 III - RESTful API _369
CHAPTER 31 기본기 익히기 _ 370
31.1 RESTful이란? _ 370
31.2 RESTful API 모범 사례 _ 371
31.3 개발 항목 _ 376

CHAPTER 32 구조 설계 _ 377
32.1 HTTP 요청 분기 _ 377
32.2 HTTP 응답 분기 _ 380
32.3 마치며 _ 386

CHAPTER 33 클라이언트 인증 _ 387
33.1 HTTP 기본 인증 _ 388
33.2 JWT 인증 _ 392
33.3 마치며 _ 402

CHAPTER 34 데이터 트랜스폼 _ 404
34.1 트랜스포머 작동 원리 _ 405
34.2 트랜스포머 컴포넌트 _ 408
34.3 컨트롤러 다듬질 _ 413
34.4 다국어 지원 _ 415
34.5 마치며 _ 417

CHAPTER 35 다듬질 I _ 418
35.1 클라이언트 측 캐싱 _ 418
35.2 응답 필드 선택 _ 424
35.3 마치며 _ 425

CHAPTER 36 다듬질 II _ 426
36.1 CORS _ 426
36.2 사용량 제한 _ 429
36.3 리소스 아이디 난독화 _ 434
36.4 마치며 _ 438

PART 5 코드 배포 _439
CHAPTER 37 서버 준비 _ 440
37.1 계정 발급 _ 440
37.2 서버 만들기 _ 441
37.3 서버 접속하기 _ 445
37.4 웹 서버 만들기 _ 447
37.5 마치며 _ 459

CHAPTER 38 코드 배포 _ 461
38.1 엔보이 _ 461
38.2 깃허브 _ 463
38.3 코드 배포 _ 467
38.4 배포 전략과 엔보이 배포 스크립트 _ 470
38.5 마치며 _ 474

APPENDIX 부록 _475
APPENDIX A 운영체제별 개발 환경 준비 _ 476
A.1 코드 에디터 준비 _ 477
A.2 Mac _ 477
A.3 우분투 데스크톱 _ 480
A.4 Windows _ 482

APPENDIX B 속성 PHP 프로그래밍 입문 _ 489
B.1 PHP 스크립트의 작동 원리 _ 489
B.2 PHP 언어 기본 _ 491
B.3 변수와 상수 _ 491
B.4 연산자 _ 493
B.5 데이터 타입 _ 494
B.6 조건문 _ 496
B.7 반복문 _ 498
B.8 함수 _ 499
B.9 클로저 _ 500
B.10 PHP 설명서 _ 502

APPENDIX C 속성 객체 지향 프로그래밍 입문 _ 503
C.1 클래스 _ 503
C.2 생성자 _ 504
C.3 메서드 _ 505
C.4 게터와 세터 _ 506
C.5 캡슐화 _ 507
C.6 상속 _ 508
C.7 추상 클래스 _ 509
C.8 의존성 주입 _ 511
C.9 인터페이스 _ 513
C.10 마치며 _ 515

저자 소개

저자 : 김주원
H.O.T와 젝스키스가 한참 활동하던 시절, C와 펄(Perl) 언어로 웹 프로그래밍을 시작했다. 대학시절에 취미로 시작했던 웹 프로그래밍을 접고 이후 10년간 휴대 전화 제조사, 반도체 설계 회사, 미디어 스트리밍 솔루션 개발사 등 여러 분야를 거치며 솔루션 아키텍트 및 프로젝트 매니저로 지내다 몇 년 전에 다시 개발자로 돌아왔다. 지금은 물류 솔루션 개발사에서 서버 소프트웨어를 개발하고 있으며, 데브옵스와 풀 스택 웹 프로그래머로서 백발 코딩하는 꿈을 꾸며 산다.
절제할 때를 알고 술을 즐기는 애주가다. 평정심을 찾고 싶을 때는 클래식 기타를 연주하거나 우주과학 다큐멘터리를 보고, 아드레날린이 필요할 때는 격렬하게 테니스를 친다. 서울 중랑구에서 사랑하는 아내와 두 딸아이와 함께 살고 있다.

관련 분류

수상내역 및 미디어 추천 분류
카테고리 분류

품목정보

발행일
2016년 11월 26일
쪽수, 무게, 크기
548쪽 | 1062g | 188*245*26mm
ISBN13
9791185890623

만든이 코멘트

안녕하세요 이 책의 저자입니다.
2016-11-28
원본 글은 여기에 있습니다. 글자 수 제한에 맞게 축약한 버전을 좀 전에 드렸습니다. http://blog.appkr.kr/work-n-play/laravel-paper-book-published/
안녕하세요 이 책의 저자입니다.
2016-11-28
이 책은 웹 프로그래밍을 다룹니다. 웹 프로그래밍을 위한 도구로는 PHP 언어로 작성된 라라벨 프레임워크를 사용합니다.

생활 코딩 오프라인 수업에 조교로 수 차례 참여하고, 여덟 번의 8~14시간 짜리 라라벨 입문 강의를 통해 입문자와 예비 독자들을 만나며, 여러분들이 어려워하거나 실수하기 쉬운 내용을 캐치하고 책의 내용과 구성에 반영했습니다.

라라벨은 모범 웹 개발 방법론의 결정체입니다. 라라벨에서 배운 라우팅, 템플릿, 마이그레이션, ORM, 의존성 관리, 객체 지향 설계등의 지식은 다른 프레임워크를 시작할 때도 그대로 이식할 수 있습니다. 반대로 다른 웹 프레임워크를 해 보신 분이 라라벨을 시작하신다면 이미 절반은 알고 계신거나 마찬가지입니다.

스스로를 범용 언어라고 포지셔닝하려하지만, 사실은 태생부터가 웹을 위한 언어였습니다(시작은 C로 짠 템플릿 엔진 수준). 책 머리글에 PHP의 간략한 역사를 포함하고 있으니 참고해주세요. 그래서 웹만 이야기하면 PHP의 인기도와 채택율은 완전 달라집니다. 통계에 따르면 전세계 웹 트래픽의 80% 이상을 PHP 언어가 서브하는 것으로 알려져있습니다(https://w3techs.com/technologies/overview/programming_language/all). 페이스북과 워드프레스의 영향이 크긴하지만 엄청난 수치입니다.

그 동안 여러가지 이유로 PHP를 쳐다보지도 않았다면, 지금은 다시 한 번 쳐다보세요. 웹 서비스에서는 다른 언어 대비 엄청난 성능을 보이고(http://benchmarksgame.alioth.debian.org/), 비일관성이나 코딩 습관은 PSR(PHP Standard Recommendation, JSR처럼) 및 라라벨과 같은 프레임워크가 가이드해줍니다.

책 속으로

입문자뿐만 아니라 중급자에게도 자신 있게 이 책을 권한다. 이 책은 PHP 언어 또는 웹 프로그래밍을 한 번도 접해 보지 않은 독자도 읽을 수 있도록 부록에서 입문 지식을 제공하고 있다. 다른 프레임워크를 사용해 보신 독자라면 라라벨을 더욱 쉽게 배울 수 있으며, 반대로 라라벨을 익힌 사용자는 익스프레스, 레일즈, 장고 등을 학습하는 것이 수월할 것이다. API 서버를 개발하는 실전 프로젝트에서는 HTTP 스펙 등 고급 주제도 다루므로 여러 층의 독자에게 도움이 될 거라 장담한다. _xiv

라라벨은 민감한 설정 정보를 은닉하거나 애플리케이션 동작에 필요한 전역 환경 변수를 쉽게 변경할 수 있는 방법을 제공한다. config 디렉터리 아래에 연관 배열(associative array)을 반환하는 파일을 만들면 애플리케이션 어디서든 config('파일.키');로 설정값을 읽을 수 있다. _12p

라라벨은 완성품에 가까운 사용자 인증 기능을 포함하고 있다. 사람마다 기성품과 맞춤 양복 사이에서 호불호가 갈리듯이, 남이 짠 사용자 인증 로직을 이해하여 고치기란 쉽지 않기 때문에 라라벨 내장 사용자 인증도 호불호가 갈린다. 이러한 라라벨 팀의 오지랖이 입문자 또는 프로토타입을 만드려는 사람들에게는 많은 도움이 된다. _81p

소프트웨어 개발을 집 짓는 일에 비유해 보자. 집 한 채를 지으려면 벽돌, 문짝, 창틀과 창문, 지붕 등의 각종 부품이 필요하다. 의존성을 바로 이 부품들에 빗댈 수 있다. 가령 문짝이란 부품이 하나 빠졌다면, 이 집이 겉으로는 멀쩡할지 몰라도 문짝이 필요한 상황에서는 심각한 문제를 일으킨다. 잠시 소프트웨어로 돌아오면, 우리 코드에서 foo()를 호출했는데 이 함수가 없는 것과 같은 것이다. 이때 우리 코드는 foo()에 의존한다고 말할 수 있다. _154p

사용자의 비밀번호를 테이블에 저장할 때 사용하는 bcrypt() 해시는 복호화가 불가능하므로 관리자조차도 사용자의 비밀번호를 알 수 없다. 참고로 우리가 가진 사용자 정보는 이름과 이메일이 전부다. 이 조합은 다른 사람도 알 수 있는 값이라, 이 정보만 가지고 비밀번호를 변경하도록 허용할 수는 없다. 무엇인가 사용자 신분을 확인할 수 있는 방법이 필요하다. 이 경우 가입 확인에서 실시했듯이 메일을 보내 본인을 확인하는 방법을 응용할 수 있다. _229p

물론, 이것이 완벽한 방법이라 할 수는 없다. 왜냐하면 토큰을 요청할 때는 사용자 인증 정보를 폼 데이터 또는 JSON 형태의 평문으로 서버에 전달해야 하기 때문이다. 웹 페이지를 사용할 때도 로그인 폼을 통해 인증 정보를 평문으로 전달하기 때문에(인증되면 암호화된 쿠키로 로그인 유지) JWT는 웹 페이지와 같은 보안 수준이라 할 수 있다. 그럼에도 HTTP 기본 인증보다는 낫다. 보완책은 HTTPS를 사용하여 암호화된 데이터를 주고받는 것이다. HTTPS를 적용하면, 패킷 스니퍼는 물론이고 네트워크 프록시도 목적지만 제외하고 헤더와 본문을 전혀 읽을 수 없다.

---pp.392~393

리뷰/한줄평9

리뷰

8.4 리뷰 총점

한줄평

9.0 한줄평 총점

클린봇이 부적절한 글을 감지 중입니다.

설정