l5code icon indicating copy to clipboard operation
l5code copied to clipboard

오탈자 신고해 주세요.

Open appkr opened this issue 9 years ago • 42 comments

책을 읽다가 오탈자를 발견하시면 신고해 주세요. 이 글에 댓글로 써 주세요.

  • 페이지 번호
  • 오탈자 내용

을 써 주시면 됩니다.

혹시라도 이 책을 다시 찍게 된다면, 후배 독자들이 더 완성도 있는 책을 읽을 수 있을 겁니다. 이 저장소는 깃허브가 서비스를 접을 때까지, 삭제하지 않을 것이므로 여러분들의 기여가 영구적으로 보관됩니다.

고맙습니다.

page 29 by @appkr
-ul>li*3>a + Tab을 입력하고 Tab 키를 누르면
+ul>li*3>a를 입력하고 Tab 키를 누르면
page 52 by @mAKEkr
// 코드 7-1
public function down() {
-    Schema::drop('posts'); 
+    Schema::dropIfExists('posts'); 
}
page 53 by @mAKEkr
-Schema::drop(string $table) 테이블을 지운다.
+Schema::dropIfExists(string $table) 테이블을 지운다. 
page 64 by @namo429
// 표 8-1
-ArticlesController@delete
+ArticlesController@destroy
page 64 by @appkr
// 표 8-1 라라벨 5.2까지는 RESTful 리소스 라우트에서 복수형의 라우트 파라미터를 쓰다가 5.3부터 단수로 바뀌었습니다.
-{articles}
+{article}
page 72 by @show0910
// 그림 9-1 웹 브라우저의 마지막 쿠키 기록 부분
-expires=zzz
+expires=aaa
page 89 by @mAKEkr
// 콘솔 10-7
+2번 사용자가 없으면 1번 사용자를 이용한다. App\User::find(1)->articles()->...
>>> App\User::find(2)->articles()->create([ 
... 'title' => 'Second article',
... 'content' => 'Second content',
... ]);
page 101 by @show0910
-코드 12-3을 참고해서 포럼 글 목록을 포시할 뷰를 만들자.
+코드 12-3을 참고해서 포럼 글 목록을 표시할 뷰를 만들자.
page 122 by @mAKEkr 
// 코드 블록 제목
-코드 14-4 app/Http/Listeners/ArticlesEventListener.php
+코드 14-4 app/Listeners/ArticlesEventListener.php
page 123 by @mAKEkr 
// 코드 블록 제목
-코드 14-6 app/Http/Events/ArticleCreated.php
+코드 14-6 app/Events/ArticleCreated.php
page 129 by @dspaudio
-wehreEmail()은 동적 메서드다
+whereEmail()은 동적 메서드다
page 137 by @corean
-string g iven
+string given
page 223 by @namo429
// 코드 블록 타이틀
-코드 23-14 app/Events/ArticleCreated.php
+코드 23-14 app/Events/UserCreated.php

```diff
page 223 by @namo429
// 코드 23-14
-class UserCreated extends Event
+class UserCreated
page 228 by @corean 
-코드 23-21를 참고하여
+코드 23-12와 다음 코드 블록을 참고하여
page 232 by @namo429
// 코드 23-27 비밀번호 변경 로직 누락분 추가
public function postReset(Request $request)
{
    $this->validate($request, [
        'email' => 'required|email|exists:users',
        'password' => 'required|confirmed',
        'token' => 'required'
    ]);

    $token = $request->get('token');

    if (! \DB::table('password_resets')->whereToken($token)->first()) {
        return $this->respondError('URL이 정확하지 않습니다.');
    }

+    \App\User::whereEmail($request->input('email'))->first()->update([
+        'password' => bcrypt($request->input('password'))
+    ]);

    \DB::table('password_resets')->whereToken($token)->delete();

    return $this->respondSuccess(
        '비밀번호를 바꾸었습니다. 새로운 비밀번호로 로그인하세요.'
    );
}
page 233  by @namo429
// 코드 23-29
-class PasswordRemindCreated extends Event
+class PasswordRemindCreated
page 250 by @namo429
// 코드 25-1
-parent::boot($router);
+parent::boot();
page 262 by @dalicom
// 코드 25-18 아래 설명
-$gate->define('update', function ($user, $model) {...})
+Gate::define('update', function ($user, $model) {...})
page 266 by @dalicom
// 코드 25-25 아래 설명
-$gate->before(function ($user, $ability) { ... }
+Gate::before(function ($user, $ability) { ... })
page 285 by @namo429
// 코드 27-13
-{{ $file->filename }} ({{ $file->bytes }})
+{{ $attachment->filename }} ({{ $attachment->bytes }})
page 287 by @namo429
// 코드 블록 제목
-코드 27-17 routes/web.php
+코드 27-17 resources/views/articles/partial/form.blade.php
page 305 by @namo429
// 코드 28-13
-public function boot(Router $router)
+public function boot()
-parent::boot($router);
+parent::boot();
page 327 by by @namo429
// 코드 29-12
-class CommentsEvent extends Event
+class CommentsEvent
page 347 by @namo429
// 코드 블록 제목
-코드 29-40 app/Http/Controller/Cacheable.php
+코드 29-40 app/Http/Controllers/Cacheable.php
// 코드 29-40
-namespace App\Http\Cacheable.php;
+namespace App\Http\Controllers;
page 352 by @dalicom
// 코드 30-4의 파일 경로가 틀렸고, 편집 오류로 2개의 코드 블록으로 분리되어야 합니다.
-resources/lang/ko/comments.php
+resources/lang/ko/forum.php
page 407 by @dalicom
// 코드 34-3
-public function transform(\App\Article $item)
+public function transform(\App\Article $article)
page 497 by @tiher
-PSR-2 표준 권고안은 어디까지나 elsif다
+PSR-2 표준 권고안은 어디까지나 elseif다
page 512 by @nosent79
// 코드 C-13 박스 제목
-Writing.php
+Post.php

이상의 내용은 곧 나올 2쇄에 모두 반영되었습니다.


page 109 by @dalgonafactory 
-유효성 검사 오류가 발생하면 컨트롤러는 lluminate\Support\MessageBag 인스턴스를 만들어
+유효성 검사 오류가 발생하면 컨트롤러는 Illuminate\Support\MessageBag 인스턴스를 만들어
page 237 by @harryhan24
-갓허브
+깃허브
typo_237
page 510 by @luritas
// 코드 C-10
-new Post('Lorem ipsum dolor sit amet')->save();
+(new Post('Lorem ipsum dolor sit amet'))->save();
page 125 by @dalicom
- 우리가 앞에서 이 클래스의 boot() 메서드 본문에 $events->listen()으로 여러 번 ...
+ 우리가 앞에서 이 클래스의 boot() 메서드 본문에 \Event::listen()으로 여러 번 ...

이상의 내용은 3쇄에 모두 반영되었습니다.


page 363 by @YongukMoon
- $timezone = (auth->user->timezone) ?: config('app.timezone');
+$timezone = (auth()->user()->timezone) ?: config('app.timezone'); 

appkr avatar Dec 08 '16 12:12 appkr

  • 페이지 번호 : 497
  • 오탈자 내용 : PSR-2 표준 권고안은 어디까지나 elsif(X) elseif(O) 다.

tiher avatar Dec 09 '16 00:12 tiher

page 223

-코드 23-14 app/Events/ArticleCreated.php +코드 23-14 app/Events/UserCreated.php

-class UserCreated extends Event +class UserCreated

namo429 avatar Dec 12 '16 05:12 namo429

page 72 쿠키를 이용한 세션 유지 메커니즘에서 웹브라우저 쪽 마지막 쿠키 저장소에 기록에서 expires=zzz -> expires=aaa 일것 같습니다.

show0910 avatar Dec 12 '16 06:12 show0910

page 101 코드 12-3을 참고해서 포럼 글 목록을 포시할 뷰를 만들자. -> 표시할 뷰를 만들자. 일것 같습니다~

show0910 avatar Dec 12 '16 15:12 show0910

page 233 코드 23-29 -class PasswordRemindCreated extends Event +class PasswordRemindCreated

------- extends Event 를 삭제하지 않을경우 아래와 같은 오류 발생합니다 ---------- FatalErrorException in PasswordRemindCreated.php line 13: Class 'App\Events\Event' not found

namo429 avatar Dec 12 '16 18:12 namo429

page 232 코드 23-27 비밀번호 업데이트 하는 부분 누락 ( Git Hub 소스에도 해당하는 부분이 없는 것 같습니다 ) 저는 아래와 같이 추가해서 동작 되게 했습니다.

$email = \DB::table( 'password_resets')->whereToken( $token)->first()->email; \DB::table('users')->whereEmail( $email)->update(['password' => bcrypt( $request->input( 'password'))]);

그리고 토큰 뿐만 아니라 이메일도 일치하는지 확인해야 하는 것 같습니다.

namo429 avatar Dec 12 '16 19:12 namo429

@namo429 @show0910 신고 고맙습니다. 이벤트 클래스에 extends Event가 붙어 있는 것은 라라벨 5.2때 원고를 썼다가, 5.3이 나오고 원고를 고치하는 과정에 꼼꼼이 살피지 못해서 라라벨 5.2의 찌꺼기가 남아 있는 것입니다. @namo429 님이 지적하신 비밀번호 변경 로직 누락 부분! 완전 고맙습니다.

appkr avatar Dec 13 '16 01:12 appkr

page 250 코드 25-1 -parent::boot($router); +parent::boot(); ------------- 에러 발생 ------------ ErrorException in RouteServiceProvider.php line 28: Undefined variable: router

namo429 avatar Dec 14 '16 09:12 namo429

page 64 표 8-1

-ArticlesController@delete +ArticlesController@destroy

-> 이부분이 php artisan route:list 로 출력하면 ArticlesController@destroy로 나옵니다. 그런데 소스 전반적으로 destroy로 되어있습니다. 혹시 delete 로 작성해도 되는 것인지는 모르겠습니다만..

namo429 avatar Dec 14 '16 22:12 namo429

P512에 코드 C-13 제목에 Writing.php -> Post.php 가 되야할거 같아요.

nosent79 avatar Dec 14 '16 23:12 nosent79

@namo429 라우팅 정의 파일에서 Route::resource('articles', 'ArticlesController')로 정의하고, $php artisan make:controller ArticlesController --resource로 컨트롤러를 만들면, 책에 쓴대로 DELETE /articles/{article} URL은 자동으로 ArticlesController::destroy()로 연결됩니다.

직접 하나씩 하나씩 정의한다면 컨트롤러 메서드 이름은 delete로 쓰셔도 됩니다. 예를 들어

<?php // routes/web.php

Route::delete('articles/{article}', 'ArticlesController@delete');
<?php // app/Http/Controllers/ArticlesController.php

class ArticlesController ... {
    public function delete($article)
    {
        // HTTP 요청 처리 로직
    }
}

처럼이요.

appkr avatar Dec 15 '16 07:12 appkr

page 285 코드 27-13 -{{ $file->filename }} ({{ $file->bytes }}) +{{ $attachment->filename }} ({{ $attachment->bytes }})

namo429 avatar Dec 18 '16 10:12 namo429

page 287 -코드 27-17 routes/web.php +코드 27-17 resources/views/articles/partial/form.blade.php

namo429 avatar Dec 18 '16 11:12 namo429

page 305 코드 28-13 -public function boot( Router $router) +public function boot() -parent::boot($router); +parent::boot();

namo429 avatar Dec 18 '16 21:12 namo429

page 327 코드 29-12 -class CommentsEvent extends Event +class CommentsEvent

namo429 avatar Dec 20 '16 07:12 namo429

page 343 dd('캐싱되면 출력 안됨'); 등의 문장을 넣어 놓고.. -> dd 로 했을경우 다음 return 문에 도달하지 못해서요, echo나 var_dump 등의 문장을 넣어 놓고.. 로 바꾸어야 할 것 같습니다.

namo429 avatar Dec 20 '16 13:12 namo429

page 347 코드 29-40 -namespace App\Http\Cacheable.php; +namespace App\Http\Controllers;

namo429 avatar Dec 20 '16 14:12 namo429

오탈자가 왜 이리 많죠 ㅜㅜ @namo429 님 꼼꼼이 봐주셔 정말 고맙습니다. 평일 낮에 삼성역 근처를 지나실 기회가 있으면 페북 메시지로 꼭 한번 연락 주세요. 신고해 주신 3건은 내일 아침에 볼게요~

appkr avatar Dec 21 '16 12:12 appkr

page 137 중간 -string g iven +string given

corean avatar Dec 21 '16 12:12 corean

page 228 -코드 23-21를 참고하여 +코드 23-12를 참고하여

corean avatar Dec 21 '16 15:12 corean

@namo429 page 343의 캐싱에서 dd()를 찍는 부분은 책 내용이 맞습니다.

class Controller extends BaseController
{
    protected function cache($key, $minutes, $query, $method, ...$args)
    {
        // ...
        return \Cache::remember($key, $minutes, function () use ($query, $method, $args) {
            // 캐시 저장소에 만료되지 않은 $key가 있다면 이 콜백은 실행되지 않습니다.
            dd('캐싱되면 출력 안됨');
            return $query->{$method}($args);
        });
    }
}

appkr avatar Dec 22 '16 01:12 appkr

page 52 코드설명줄

    public function down()
    {
        Schema::drop('posts');
    }

부분을

    public function down()
    {
        Schema::dropIfExists('posts');
    }

로 고쳐주셔야될것같습니다 ^^; artisan make로 실행해도 dropIfExists로 생성되네요.

page 88번째 10.2.2 관계확인 tinker 커맨드라인 에제

>>> App\User::find(2)->articles()->create([

로 된 부분을

>>> App\User::find(1)->articles()->create([

로 수정해야될것같아요. 이전 예제에서 User모델로 생성한 데이터가 1건밖에 없는데 2번째 데이터를 찾으려고 하니 오류가 뜨네요.

mAKEkr avatar Dec 23 '16 07:12 mAKEkr

또하나 발견했습니다. page 122 예제코드 14-4의 코드경로

app/Http/Listeners/ArticlesEventListener.php

app/Listeners/ArticlesEventListener.php

로 변경

page 123 예제코드 14-6의 코드경로

app/Http/Events/ArticleCreated.php

app/Events/ArticleCreated.php

로 변경해야될듯하네요

mAKEkr avatar Dec 27 '16 09:12 mAKEkr

263p public function edit()는 있는데, update()는 권한 체크가 없어서 왜 여기서 권한 체크를 안할까?라고 생각해서 Repository의 해당 소스(app/Http/Controllers/Articelscontroller.php)를 찾아보니 update()에는 적용이 되어 있습니다.

corean avatar Jan 02 '17 01:01 corean

@corean 그냥 지면을 아끼기 위해 생략한 것이라 보시면 되겠습니다. 고맙습니다.

appkr avatar Jan 02 '17 03:01 appkr

262p 코드 25-18 의 Gate::define 부분인데, 아래 설명부분에는 $gate->define('update', ~~~) 으로 되어 있습니다.

dalicom avatar Feb 01 '17 01:02 dalicom

266page 262p 와 마찬가지 오타입니다. 코드 25-25 의 Gate::define 부분의 아래 설명에서 $gate->define 으로 되어 있습니다.

dalicom avatar Feb 01 '17 02:02 dalicom

352page 코드 30-4 의 파일명이 resources/lang/ko/comments.php 가 아닌 resource/lang/ko/forum.php 입니다.

dalicom avatar Feb 03 '17 05:02 dalicom

407page 코드 34-3 에서 public function transform(\App\Article $item) 부분이 public function transform(\App\Article $article) 로 바뀌어야 합니다.

$item 변수명이 잘못되어 있네요.

dalicom avatar Feb 07 '17 00:02 dalicom

129p wehreEmail()은 동적 메서드다 -> whereEmail()은 동적 메서드다

dspaudio avatar Feb 23 '17 00:02 dspaudio