동시성 문제를 해결하기 위한 MySQL 잠금 두가지

InnoDB를 사용하면서 동시성(Concurrency)을 고려하지 않고 개발을 하면 큰 문제가 생길 수 있다. 아래에 게임 속 플레이어 간 골드를 넘기는 간단한 로직을 살펴보자. ...

1월 1, 2013 · 3 분 · Sangheon Han

우분투 컴피즈(Ubuntu Compiz) 엣지가 동작하지 않는 문제

우분투 컴피즈 관리자를 통해 화면의 각 엣지(Edge)에 마우스 커서를 둘 경우 다양한 동작을 하도록 설정 할 수 있다. 하지만, 종종 이 엣지가 부팅 후에는 동작을 하지 않는 문제가 있다. 이 문제를 해결하는 완전하지는 않지만 손쉬운 방법이 있다. 다만 12.10에서는 이 방법으로 안 된다고 한다. ...

12월 27, 2012 · 1 분 · Sangheon Han

PHP: 분석에 유용한 도구들

정적 분석 php-sat php-ast PHP Depend PHP CodeSniffer PHP Parser Online PHP lint PHPLint phpCallGraph PHP Mess Detector phc 디버거 Xdebug 문서화 phpdoc doxygen 프로파일러 xhprof

12월 23, 2012 · 1 분 · Sangheon Han

보다 빠른 echo를 위하여

PHP 언어에서 print 보다 echo가 빠르다는 것은 널리 알려진 사실이다. 이런 차이는 print의 경우 반환값이 존재하기 때문인데, 물론 이런 반환값 때문에 수식 내에서 사용 할 수 있다는 장점도 있다. 예를 들어 $result = ($n > 1) ? $n : print $n;처럼 쓸 수 있다. ...

12월 1, 2012 · 2 분 · Sangheon Han

PHP: 클래스 매직메소드 __get(), __set() 문제

매직메소드 __get, __set에 대해서는 크게 두가지 의견이 있는데, 하나는 OO를 해치기 때문에 getter, setter를 정의해서 사용하라는 것이고, 또다른 하나는 스크립트 언어의 특성이므로 적극 활용을 해야 한다는 것이다. ...

11월 26, 2012 · 3 분 · Sangheon Han

린 스타트업: 실리콘밸리를 뒤흔든 IT 창업 가이드

작년이었던 것 같다. 한 스타트업 관련 블로그에서 린 스타트업이란 말을 처음 보았다. 그 뒤로 린 스타트업이란 말은 내 주요 관심사 중에 하나가 되었다. 그도 그럴 것이 스타트업에서 일하고 있었고, 어떻게 사업을 해야 할지에 대해 나를 비롯한 사내 구성원들이 많은 고민을 하던 중이었다. ...

11월 17, 2012 · 2 분 · Sangheon Han

맨먼스 미신(The Mythical Man-Month)

부끄러운 일이다. 이 유명한 고전을 이제야 읽었다. 한국어 번역서가 뒤늦게 나온 것을 핑계로 삼고 싶지만, 번역서도 2007년에 나왔으니 핑계로 쓰기 마땅치 않다. ...

10월 18, 2012 · 1 분 · Sangheon Han

자신만의 개인 라이브러리 또는 프레임웤이 필요할까

프로그래머는 자신만의 라이브러리 또는 프레임웤(이하 라이브러리만 표기)를 갖춰야 한다는 이야기가 있다. 경력이 쌓인 개발자라면 효율을 높이고 자신만의 무기(?)를 갖추기 위해서 필요하다는 것이다. ...

9월 26, 2012 · 2 분 · Sangheon Han

PHP로 서버(데몬) 만들기

PHP는 웹에 특화된 언어다. 그렇게 때문에 애플리케이션이나 시스템 프로그래밍을 할 때 필요한 기능이 부족하다. 하지만 서비스를 만들다 보면 서버(데몬)처럼 웹을 벗어난 것이 필요 할 때가 생긴다. 이럴 때는 아파치(Apache)나 crond를 이용해 문제를 해결 할 수 있다. 그러나 아파치나 crond를 이용한 방법은 어느 정도 한계가 있기 때문에 경우에 따라 해결책이 되지는 못 한다. 이런 경우 백그라운드로 동작하는 데몬을 만드는 것이 깔끔하다. 데몬을 만드는 방법은 널리 알려져있기 때문에 거기에 맞춰 코드를 작성해도 되지만, 굳이 바퀴를 다시 발명 할 필요는 없을테니 System_Daemon PEAR 모듈을 이용하면 된다. System_Daemon 모듈을 사용한 간단한 예제를 우선 살펴보자. ...

9월 25, 2012 · 2 분 · Sangheon Han

멀티 프로세스끼리 간단한 데이터 공유 방법 – mmap()

멀티 프로세스끼리는 멀티쓰레드처럼 직접 변수에 접근하기 어렵기 때문에 공유 메모리 등과 같은 IPC를 이용해서 데이터를 주고 받는데, 복잡하고 다양한 기능이 필요없다면 메모리맵을 통해 서로 간단히 데이터를 공유 할 수 있다. ...

9월 23, 2012 · 1 분 · Sangheon Han