Laravel Collection 메소드 중 concat과 push의 차이

라라벨 5.8.8에서 쿼리 빌더에 forPageBeforeId 메소드가 추가되었습니다. 뭔지 알아보려고 PR을 보는데, 예제에서 컬렉션 메소드 중 concatpush를 쓰더군요.

$posts = new Collection;

$posts = $posts->concat(ChatPost::forPageBeforeId(15, $focused->id)->get()->reverse());

$posts = $posts->push($focused);

$posts = $posts->concat(ChatPost::forPageAfterId(15, $focused->id)->get());

둘 다 제가 잘 안쓰던 메소드들이라 메뉴얼을 찾아봤는데, 읭? 둘이 똑같아 보이는 겁니다.

push 메소드는 컬렉션의 마지막에 아이템을 추가합니다:

concat 메소드는 주어진 배열 또는 컬렉션의 마지막에 값을 추가합니다:

그래서 소스를 봤는데, 소스를 보니 차이점을 알겠더라구요.

     * Push all of the given items onto the collection. 
     * @param  iterable  $source
     * @return static
    public function concat($source)
        $result = new static($this);

        foreach ($source as $item) {
            $result->push($item);   // 주어진 아이템들을 push를 사용해서 추가

        return $result;

push는 하나의 아이템을 컬렉션의 마지막에 추가하는 거고, concatpush 메소드를 이용해서 여러 아이템을 한 번에 추가하는 거였어요.

뭐 별로 중요한 얘기는 아니었습니다 하핫

조만간 앱이 없어도 푸시를 보내는 것이 가능해지려나?

사파리7에 네이티브 푸시 노티피케이션이 들어갔다고 한다. Demo of the first public website using Safari’s new native push notifications feature [Video]

Unlike HTML5 push notifications, which have been used by some browsers for some time now, native push notifications act like any other installed application’s notifications: they are branded for the web app rather than the browser, they can be used even when you aren’t on the website, and they can even pop up when Safari isn’t running.

HTML5의 푸시 노티피케이션과 다르게 웹사이트에 방문하지 않은 상태이거나, 웹 브라우저를 구동하고 있지 않은 상태에서도 푸시 노티피케이션이 가능하다.

또한 위 글의 댓글을 통해 알게된 것인데, 크롬 또한 Google Cloud Messaging for Chrome 라는 것을 가지고 있다. 모바일 크롬도 이 기능을 지원하는지는 모르겠지만 현재 제공되고 있지 않더라도 시간의 문제일 뿐, 곧 제공할 것이라 예상할 수 있다.

Google Cloud Messaging for Chrome (GCM) is a service for signed-in Chrome users that helps developers send message data from servers to their Chrome apps and extensions. The service is intended to wake up an app or extension, and/or alert a user. For example, calendar updates could be pushed to users even when their calendaring app isn’t open.

사파리와 크롬, 안드로이드 기본 브라우저 세 가지 정도만 네이티브 푸시를 지원한다면 앱이 없이도 푸시를 보내는 세상이 되었다고 이야기 할 수 있을 것 같다.