Bookworm’s Archive 잡동사니 속에 숨겨진 보물 찾기

1Mar/12

윈도우 데스크탑 컴퓨터를 업그레이드 하다

회사에는 Acer Aspire 5552G 노트북에 우분투 리눅스를 설치해서 일을 하고 있고, 커피숍에서 맥북에어로 이것저것 합니다만 집에서 쓰는 컴퓨터는 뭐니 해도 윈도우 데스크탑이 주력입니다. 그도 그럴 것이 현재 윈도우로 제일 많이 하는 일이 게임(와우)이기 때문이죠. :cool:

오래 전에 산 ASUS P5K 보드에 인텔 울프데일 E6300, 그리고 PC5300 DDR2 1G 메모리 4개를 지금까지 사용하고 있어습니다. ATI HD 6850 그래픽 카드와 인텔 SSD X-25M과 비교 해보면, 아무래도 컴퓨팅 파워 쪽이 많이 딸리는 상황이었네요.

올 봄에 디아블로 3도 나온다고 하고, 요즘 와우에서 레이드 찾기로 25인을 다니면서 데스윙의 광기 진행시 초당 10 프레임 미만으로 떨어지는 상태라 업그레이드를 해야겠다는 생각이 간절 했습니다. 여유롭지 않은 상황이지만 컴퓨터는 제가 제일 오랬동안 그리고 자주 사용하는 물건이니 과감히 투자를 하기로 하고, 메인보드, CPU, 램만 교체하는 부분 업그레이드를 이번에 진행했습니다.

제일 처음 고른 것은 CPU입니다. 작년부터 눈독을 들여온 것이 있기에 선택하는데 오래 걸리지 않았습니다. 인텔 i5 2500K. 다만 작년 가을 때 보다 가격이 거의 그대로인 점이 좀 아쉬웠습니다. 그 정도의 시간이면 약간은 가격이 하락했으리라 생각했는데 그대로거나 소소하게 더 비싸진 느낌마저 듭니다. 약간의 가격 차이에도 불구하고 2500K를 선택한 것은 오버클럭킹에 대한 여지를 남겨두고 싶어서 입니다. 보통 오버클럭킹을 거의 하지 않는 편이지만, 만약 더 많은 컴퓨팅 파워가 필요한 상황에서 업그레이드의 여유가 없다면 오버클럭킹을 시도 해보고 싶었기 때문입니다.

두번째로 고른 것은 램입니다. 램은 대부분 성능이 대동소이 하기 때문에 게임용 램으로 이름이 널리 알려진 지스킬 4G를 2 개 구매했습니다. 요즘은 아예 두 개를 한 조로 해서 패키징이 되어 있더군요. 아직 16 G 정도의 램이 필요하지는 않기 때문에 8 G로 구성 했습니다.

세번째로 가장 고심한 것인 메인보드입니다. 처음에는 P68 정도를 생각했는데, 브릿지 칩셋의 여러가지 기능 제약 때문에 점점 눈이 높아져서 결국 Z68로 칩셋을 결정하게 됐습니다. 원래 사고 싶었던 ASUS를 찾아보니 보드 가격이 예상 보다 비싸서 주저하게 됐습니다. 결국 저렴하면서 많이 쓰는 ASRock 보드를 살까 했으나, 리뷰에 키보드/마우스 호환성에 문제가 생기는 경우가 종종 있다고 하여 포기했습니다. 제가 리얼포스를 쓰고 있기 때문에 키보드 호환성이 그렇게 좋은 편이 아니었기 때문입니다. 최종적으로 다시 ASUS P8Z68-V/GEN3 모델로 돌아갔습니다.

이렇게 해서 지난 주 설 연휴 전에 부품을 배송받아 조립을 마치고, 그동안 AHCI를 지원하지 않아 IDE 모드로 설치한 윈도우 7을 밀어버리고 AHCI 모드로 클린 설치를 했습니다. 처음에 SSD의 윈도우 성능 점수가 제대로 나오지 않아 긴장했지만, 메인보드에 딸려 온 드라이버를 모두 설치하자 제대로 된 점수가 나오더군요. 결국 윈도우 성능 점수는 7.5 점이고, CPU가 제일 낮음 점수를 기록 했습니다. 아마 오버클럭킹을 하면 좀 더 올릴 수 있겠지만, 당장 컴퓨팅 파워가 딸리는 것은 아니기에 그냥 두었습니다.

오랬만에 단행한 업그레이드인데 별 문제 없이 잘 이뤄져서 좋았습니다. 보통 업그레이드 하면 꼭 말썽이 생겨서 굉장히 고생을 많이 했었습니다.

이번 업그레이드로 예산에 큰 구멍이 나는 바람에 한동안은 긴축 재정을 하게 될 듯 합니다. :-(

24Jan/12

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

PHP에는 __get(), __set()이란 특별한 매직메소드가 있습니다. 이 매직메소드의 사용에 대해서 여러 논란이 있기는 하지만, 개인적으로 적절히 사용을 한다면 매우 유용하다고 생각합니다. 매직 메소드를 구현하는 방법은 여러가지이지만 그 중 간단하면서도 유용한 코드 하나를 소개 합니다.

public function __get($name) {
    if ( property_exists($this, $name) ) {
        return $this->{$name};
    }
    $method_name = "get_{$name}";
    if ( method_exists($this, $method_name) ) {
        return $this->{$method_name}();
    }

    trigger_error("Undefined property $name or method $method_name");
}

public function __set($name, $value) {
    if ( property_exists($this, $name) ) {
        $this->{$name} = $value;
        return;
    }
    $method_name = "set_{$name}";
    if ( method_exists($this, $method_name) ) {
        $this->{$method_name}($value);
        return;
    }

    trigger_error("Undefined property $name or method $method_name");
}

보여드린 코드는 이름이 맞는 변수가 있으면 그것을 get 또는 set 하고, 만약 변수가 없지만 get_foobar(), set_foobar()와 같은 메소드가 있으면 그것을 호출하는 방식입니다.

특별한 기능이 필요하지 않다면 위 메소드를 클래스에 넣어두는 것만으로 기본적인 프로퍼티에 대한 get, set 메소드의 구현은 끝나게 됩니다.

만약 프로퍼티 보다 get_foobar(), set_foobar()에 우선을 두어 동작시키고 싶다면 매직메소드 내에서 프로퍼티를 찾는 부분과 메소드를 찾는 부분의 if 문 위치를 서로 바꾸어 주면 됩니다. 이렇게 할 결우 특정한 메소드의 get, set 동작만 특별하게 변형시키고 싶을 때 유용합니다.

19Jan/12

윈도우 7 날씨 가젯

윈도우 7에 기본으로 들어있는 가젯 중 날씨 가젯은 정상적으로 동작하지 않습니다. 이 문제는 비스타 때부터 있는 것인데도 아직까지 고쳐지지 않고 있습니다.

이를 해결하기 위해 한동윤님이 새로운 날씨 가젯을 만드셨고, 마이크로소프트 홈페이지를 통해서 쉽게 설치 할 수 있었습니다. 어제 윈도우 7을 다시 설치하고 날씨 가젯을 설치하러 홈페이지에 가 보니 이제 더 이상 가젯 갤러리를 제공하지 않는다고 안내를 하고 있습니다.

어렵게 구글링을 통해서 비교적 최신 버전의 날씨 가젯 파일을 다운로드 할 수 있었습니다. 혹시 필요하신 분이 계실지도 몰라 이곳을 통해 공유 합니다.

윈도우 7 날씨 가젯 다운로드