구글 트렌드 이용시 일반 명사 조심

PHP용 Dependency Injection 도구들 중 어떤게 더 인기있나를 알아보기 위해 구글 트렌드를 이용해서 비교를 해본 결과.  pimple 이 압도적이다.

스크린샷 2014-11-26 21.38.48

하지만 하단에 함께 제공되는 관련 검색어. 관련 검색어가 수상하다.

스크린샷 2014-11-26 21.39.06

pimple 이 몰랐는데 (이 나이가 되도록 pimple 도 몰랐다니!) 찾아보니 여드름이라는 일반명사였던 것. 아무리 핫한 프로그래밍 분야 검색어라도 여드름을 이길 수 있는 녀석이 있을까? ㅋ

스크린샷 2014-11-26 21.38.28

여튼 그래서 카테고리를 프로그래밍으로 해서 다시 검색해보니 위와 같은 결과가 나왔다. PHP DI 가 가장 검색량이 많고, 그 다음이 pimple.

구글 트렌드를 이용해서 비교할 때 비교대상 중 일반명사가 포함되어 있는 경우에는 꼭 카테고리를 지정해서 확인하도록 합시다.

PS. Jeffery Way 횽님은 Laravel 을 제외하고는 pimple 이 가장 인기 있다고 하네요. 참고하세요.

 

Laravel 에서 created_at 을 JSON 으로 출력할 때 의도치 않은 값이 나온다면

DB에서 값을 조회한 후 created_at 을 JSON으로 출력했더니 아래와 같이 나오더군요.

"created_at":{
    "date":"2014-10-16 11:53:34.000000",
    "timezone_type":3,
    "timezone":"Asia/Seoul"
}

 

그래서 $promotion->created_at->date 하면 될 줄 알았더니 Unknown getter 라는 에러가 나오네요.

이런 경우에는 $promotion->created_at->format(‘YmdHis’); 와 같은 식으로 포맷팅을 해주시면 됩니다.

 

참고한 링크 

PHP using Laravel 4 and Carbon will not print out a DateTime field from my Database

역시 프로그래밍 서적은 예제소스를 직접 쳐보고 돌려봐야

프로그램 잘 하는 아는 동생이 프로그래밍 책을 볼 때는 좀 바보 같아 보이더라도 예제소스를 일일이 다 손으로 쳐봐야한다고 했는데, 정말 그렇더군요. 요즘 헤드퍼스트 디자인 패턴을 읽고 있는데 책이 사용하는 프로그래밍 언어는 자바고 제가 쓰는 건 PHP여서 예제 코드를 실행 시키는 것 조차 처음엔 쉽지 않더라구요.

이래저래 좀 해매고나서 예제코드를 다 작성하고 실행 시키켜 성공하는 순간! 뭔가 아 이제 알겠다라는 느낌이 퐉! 프로그램을 공부하는 여러분, 머리로 이해한 것 같다고 넘어가지 말고 왜 하나 싶더라도 그냥 타이핑을 합시다.

그리고 헤드퍼스트 디자인 패턴을 공부 중인 PHP 사용자 분들은 Head First Design Patterns in PHP – Weburg.com 를 참고하세요. 한 용자께서 헤드퍼스트 디자인 패턴에 나오는 예제들을 다 PHP로 전환해 두었습니다.

PHP용 데이터베이스 마이그레이션 툴 Phinx 발견!

스크린샷 2014-07-28 21.11.04

저는 Codeigniter와 Laravel 이라는 PHP 프레임워크를 사용해보았는데, 둘 다 migration 기능을 제공하고 있습니다. 프레임워크가 제공하는 마이그레이션 기능을 사용하면 데이터베이스의 변경 이력을 남길 수 있고, 롤백이 가능하며, 특히 개발팀이 PHP 코드를 이용하여 데이터베이스 스키마를 쉽게 동기화 할 수 있게 됩니다.

 

마이그레이션을 통해서 쉽고 안정적으로 데이터베이스를 변경(alter) 할 수 있습니다. 수작업으로 sql을 만들 수도 있지만, 그럴경우 어떤것이 변경되었는지 ,다음 배포때는 어떤것이 수행되어야하는지, 기억하고 있어야 합니다.

데이터베이스 테이블 마이그레이션은 어떤 마이그레이션이 수행되었는지 지속적으로 추적해 주기 때문에, 개발자는 단지 프로그램 파일을 업데이트 하고 $this->migrate->current() 만 호출하면,배포에 필요한 마이그레이션이 수행됩니다.현재버전은 config/migration.php에 있습니다.

http://www.cikorea.net/user_guide_2.1.0/libraries/migration.html

 

프레임워크를 쓰지 않는 레거시 시스템에 사용할 수 있는 데이터베이스 마이그레이션용 라이브러리가 없나 찾아보았는데, 아주 멋진 녀석이 있었네요. Phinx  라는 녀석입니다. 사용방법은 Laravel 의 migration 사용법과 비슷하고, 무료입니다~!

관심있으신 분들은 http://phinx.org 로 고고~

 

MySQL에 FEDERATED 스토리지 엔진 추가하기

FEDERATED 스토리지 엔진을 사용하면 리플리케이션이나 클러스터 기술을 이용하지 않고도 원격의 MySQL 데이터베이스에 접근할 수 있다. 서비스 운영을 위해 여러 데이터베이스를 사용하는데, 한 데이터베이스의 데이터를 다른 데이터베이스들이 참조하여 사용할 때 활용할 수 있다. Oracle의 DBLink와 유사한 기능이라고 한다.

FEDERATED 엔진은 MySQL에 기본으로 설정되어 있지 않기 때문에 이를 사용하기 위해서는 별도의 작업이 필요하다. 검색을 해보면 처음에 설치할 때 부터 –with-federated-storage-engine 옵션을 주어야 한다는 등의 이야기 등이 있지만, 실제로는 재설치를 하거나 할 필요는 없다.

mysql 에 root 로 접속해서 아래 명령어를 입력한다.

install plugin federated soname 'ha_federated.so'

 

이제 show engine 을 해보면 목록에서 FEDERATED Engine 이 나타나지만 꺼져있는 상태이다.

스크린샷 2014-07-21 19.02.28

/etc/my.cnf 를 열어 [mysqld] 아래에 federated 라는 단어를 추가한다.

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

federated

 

MySQL을 다시 실행시킨 후 다시 show engines 를 하면 FEDERATED Engine 이 사용가능하게 된 것을 확인할 수 있다.

스크린샷 2014-07-21 19.02.21

 

[참고 문헌]

[MySQL] Oracle의 DBLink 와 유사한 Federated Engine

MySQL – federated engine

[Mysql] FEDERATED 스토리지 엔진(1)

Add federated to Mysql

14.11 The FEDERATED Storage Engine