PHP의 예외 클래스 이해하기 2부

today 2017-01-15 face Posted by appkr turned_in Work & Play forum 0

지난 1부에서는 예외의 기본적인 개념과 사용법, 그리고 프레임워크 없이 PHP 프로젝트를 할 때 사용할 수 있는 몇 가지 테크닉을 살펴봤다.

이번 포스트에서는 라라벨로 만든 예제 프로젝트를 통해 사용자 정의 예외 클래스를 선언하고 사용하는 코드를 구현해 볼 것이다. PHP/라라벨 만의 특수한 내용은 일부에 불과하며, 다른 언어나 프레임워크에서도 사용할 수 있는 일반적인 내용이라 생각한다.

PHP의 예외 클래스 이해하기

today 2017-01-07 face Posted by appkr turned_in Work & Play forum 0

국어 사전에서는 ‘일반적인 규칙이나 정례에서 벗어나는 일’을 예외라고 정의하고 있다.

컴퓨터에서 예외란 ‘프로그램을 실행하는 중에 발생하는 비정상적인 상황’으로 프로그램의 일반적인 실행 흐름을 바꾼다. 예를 들어 함수에 허용하지 않는 인자가 전달되었다거나, 디스크에서 무언가를 읽거나 써야 하는데 디스크에 접근할 수 없다거나, 메모리 공간이 부족해서 변수 값을 저장할 수 없는 경우 등을 들 수 있다.

개발자는 프로그래밍을 할 때 발생할 수 있는 예외 상황을 미리 식별하고, 앞서 말한 상황이 발생하면 예외를 던지고(Throw 또는 Raise), 잡은 예외를 개발자 자신만의 방식으로 핸들링할 수 있다(Catch 또는 Rescue). 개발자가 예상치 못한 예외라면 런타임(PHP의 경우라면 PHP 엔진)이 프로그램의 실행을 멈추고 오류 메시지를 출력하는 등의 일을 할 것이다.

위 그림은 Objective-C 쪽 얘긴데, 사실 PHP에서 완전 반대다. 어쨌든 PHP 7부터는 try {...} catch {...} 구문에서 예외(Exception) 뿐만 아니라, 오류(Error)도 캐치할 수 있도록 지원하고 있다.

이 포스트에서는 PHP의 예외 클래스(Exception Class)를 사용하는 기본적인 방법을 설명한다.

모바일 푸쉬 메시지(FCM)를 위한 PHP 서버 구현 2부

today 2016-12-24 face Posted by appkr turned_in Work & Play forum 0

이 포스트는 2016년 12월 24일 첫 포스트 이후, 2017년 1월 24일, 2018년 7월 2일에 코드 리팩토링 내용을 반영하여 변경되었습니다.

FCM(Firebase Cloud Message)은 Android, iOS, Web 등의 클라이언트에 푸쉬 메시지를 보내기 위한 서비스다. 과거 GCM(Google Cloud Message)이 진화한 것이다.

Firebase Logo

지난 1부에서는 푸쉬 메시지를 받을 모바일 단말 애플리케이션이 구글 FCM 서버로 부터 받은 고유 식별 토큰을 애플리케이션 서버로 전달해 등록하는 과정을 구현했다. 이번 포스트에서는 등록한 토큰으로 푸쉬 메시지를 쏘는 기능을 구현한다.

모바일 푸쉬 메시지(FCM)를 위한 PHP 서버 구현 1부

today 2016-12-18 face Posted by appkr turned_in Work & Play forum 0

FCM(Firebase Cloud Message)은 Android, iOS, Web 등의 클라이언트에 푸쉬 메시지를 보내기 위한 서비스다. 과거 GCM(Google Cloud Message)이 진화한 것이다.

Firebase Logo

PubNub, Pusher 등의 메시징 서비스와 FCM이 다른 점은 단말기가 꺼져 있거나, 잠김 모드에 있거나, 메시지를 받을 애플리케이션이 실행 중이지 않을 때도 메시지를 보낼 수 있다는 점이다.

FCM을 이용한 푸쉬 메시징 시스템을 구성하라면 다음 두 가지가 필요하다.

  • 푸쉬 메시지를 받을 모바일 단말용 애플리케이션
  • 푸쉬 메시지를 전송할 모바일 단말을 선별하고, 원하는 메시지와 함께 구글 FCM 서버에 메시지 전송 요청을 부탁할 애플리케이션 서버(구글 공식 문서에서는 “앱 서버”라고 칭하기도 한다).

이 포스트에서는 애플리케이션 서버를 구현하는 과정을 기술해본다. 모바일 단말용 애플리케이션은 이 포스트에서 다루지 않는다.

RPC - Apache Thrift 입문 2부

today 2016-12-10 face Posted by appkr turned_in Work & Play forum 0

앞서 1부에서는 다음 내용을 다루었다.

  • RPC 시스템에 대한 이해와 여러 가지 RPC 프레임워크의 특징
  • Thrift IDL(Interface Definition Language)를 이용해서 API 규격 만드는 방법
  • API 규격을 다양한 언어로 컴파일하고 라이브러리화 하는 방법
  • API 서버 프로젝트에 라이브러리를 플러그인하고 API 규격에 맞춘 서비스를 개발하는 방법
  • API 클라이언트가 서버에 접속하여 Thrift 프로토콜로 통신하는 방법

1부에서 언급했다시피, Thrift 요청과 응답은 Thrift 프로토콜 안쪽에서 (역)직렬화 된다. 1부의 내용만으로는 디버깅이 어려워 서비스를 개발하기가 수월치 않다. 그래서 2부에서는 다음 내용을 다룬다.

  • Thrift 프로토콜 안쪽에서 작동하는 미들웨어를 만들어서 Thrift 요청을 핸들링하고 그 과정에서 발생한 예외를 잡고 소비하는 방법
  • 책임 연쇄(Chain of Responsibility) 패턴의 이해
  • 통합 테스트(Integration Test) 구현
keyboard_arrow_up