Backends PHP

PHP에서 데이터를 파일로 캐싱(Caching)하기

성능좋은 인프라와 빠른 속도의 DB Query로 아무리 구성하고자 노력한다 하더라도, 캐싱은 여전히 웹프로그램의 성능을 향상시키기 위한 가장 고전적이면서 가장 가성비 높은 해법입니다. PHP에서는 APC와 같은 모듈을 활용하는 것이 일반적이지만, 특정 웹페이지에서 사용하는 데이터를 핀포인트로 캐싱할 때는 이를 직접 구현해보는 것도 선택가능한 대안입니다.

이번 포스팅에서는 일반적으로 PHP에서 변수에 담긴 데이터를 파일로 캐싱하는 방법을 다양한 예제코드를 통해 설명합니다. 이 과정에서 실무에 적용가능한 수준의 예제코드를 몇 가지 선보이고자 합니다. 마지막 단계에서는 PHP의 파일시스템 함수들을 조합하여, 충분한 시간이 지나면 캐싱이 만료되는 TTL(Time to Live)의 구현방법을 모색해볼 것입니다.

(more…)

Continue reading

Backends PHP

PHP 예제로 살펴보는 즉시실행함수의 필요성과 구현방법

즉시실행함수(IIFE, Immediately-Invoked Function Expression)는 소스코드 중간에 익명함수를 실행하여, 임시로 사용할 변수들을 지역변수로 선언하여 사용하는 디자인 패턴을 말합니다. 즉시실행함수가 즐겨 활용되어 온 대표적인 언어는 자바스크립트이지만, 최근에 PHP에서도 7버전에 익명함수가 등장하면서 사용이 가능해졌습니다.

이번 포스팅에서는 먼저 전역변수의 위험성을 살펴봄으로써, 즉시실행함수가 왜 필요한지를 설명합니다. 이어서 자바스크립트와 PHP7에서 작성한 소스코드를 통해 즉시실행함수의 사용방법에 대하여 설명합니다. 마지막으로 즉시실행함수를 사용할 수 없는 PHP5 및 PHP4에서 유사한 효과를 가질 수 있는 소스코드를 소개할 것입니다.

(more…)

Continue reading

Backends Data Mining PHP R

PHP 소스코드에서 R 스크립트 실행하기

데이터와 통계분석에 활용되는 R을 웹 언어에서 실행한다면, 강력한 시너지 효과를 기대할 수 있을 것입니다. 그러나 많은 개발자들의 도전에도 불구하고 이것은 쉽지 만은 않은 과제였는데, 그 이유는 바로 R을 Input File 없이 커맨드라인에서 실행할 수 있는 방법이 녹록치 않았기 때문입니다.

이번 포스팅에서 소개하는 PHP 클래스는, 인자로 받은 R 스크립트를 임시파일로 만들어 쉘 커맨드로 R을 실행한 결과를 반환합니다. 이를 통해서 PHP에서 R 스크립트를 문자열로 만들어 그대로 실행할 수 있습니다. 본 클래스는 리눅스 OS에서 작동하는 것을 전제로 합니다.

(more…)

Continue reading

Backends Frontends Javascript PHP

코멧(Comet) #3 – Ajax 롱폴링(Ajax Long polling) 채팅방 예제로 배우기

코멧을 구현하는 두 번째 방법은 롱폴링(Long Polling)이라고 하는 기법으로, 그 중에서도 금번 포스팅에서는 Ajax를 기초로 한 롱폴링 기법을 소개합니다. 이것은 지난 포스팅에서 소개한 Ajax 폴링 기법에서 일부분을 변형하여서, HTTP 통신이 일어나는 빈도를 줄인 것입니다. Ajax 폴링과 이 기법 사이의 결정적인 차이점은 서버측에서 특정한 상태값이 변하기 전까지는 응답을 미루는 것이라고 할 수 있습니다.

금번 포스팅에서는 지난 포스팅에서 Ajax 폴링으로 구현한 채팅방 예제를 롱폴링으로 수정하여, Ajax 폴링과 대조되는 롱폴링의 작동원리를 살펴볼 것입니다. 따라서 지난 포스팅을 읽어보지 않은 분께서는 금번 포스팅을 읽기에 앞서 일독을 권합니다.

(more…)

Continue reading

Python

Linux에 Django 설치하기

DjangoPython을 언어로 사용하는 웹개발 프레임워크입니다. 금번 포스팅에서는 제가 Linux에서 Django를 설치하고, 첫 프로젝트를 생성했던 과정을 소개하고자 합니다.

금번 설치과정을 거친 서버는 운영체제로 CentOS 6.5를 사용하고 있으며, LAMP 환경의 웹서버가 이미 작동하고 있는 서버였음을 먼저 밝힙니다. 아울러 이 글에서 소개하는 Linux 명령어는 모두 root 계정에서 실행되었음을 첨언하여 두고자 합니다.

(more…)

Continue reading