2009년 11월 22일 일요일

피칸파이

이 블로그를 개설한 목적과는 틀리게 개발에 대한 포스트는 처음에 딸랑 하나...
자꾸 잡다한 포스트만 올리게 된다.

 아래 사진은 어제 올만에 만든 호두파이... 대부분의 제빵류는 사서먹는게 더 싼데 이넘은 만들어 먹는게 더 맛있고 싸다.
제일 비싼 재료는 버터... 그 다음에 호두... 호두는 마트에서 1만원 정도에 깐 호두 한봉지 사면 4-5회 이상 사용할 수 있고, 버터는 400g 무염버터(약 6000원) 사면 2번 정도 쓸 수 있다.
이렇게 만든 호두파이의 크기는 지름 20cm 정도?


파이나 타르트류 좋아하시는 분들은 FAT(DOS의 파일 시스템 이름이 아님) 걱정하시길...
돌아다니는 레시피만 봐도 알겠지만 밀가루 반죽을 물로 하는게 아니라 버터로 한다는 사실을...

궁금하신 분은 칼로리 계산해보시길...ㅎㅎㅎ
버터 150g, 깐 호두 한줌, 밀가루 150g, 계란 4개, 아가베시럽 적당량, 등등..(레시피를 보면서 만든게 아니라... 눈대중으로 만든거라... 너무 적당하다..-_-)

2009년 11월 20일 금요일

ELECOM EHP-IN210WH

항상 그렇지는 않지만 노트북 주변기기를 구입할 때 엘레컴 제품을 선호한다.
제품이 좋아서 그렇기 보다는 개인적인 취향을 반영하는 제품들 중 가장 저렴한 편이기 때문이다.

현재 마우스/키패드/USB 허브를 사용하고 있는데, 이번에 사용하던 소니 이어폰이 사망하셔서 엘레컴 제품으로 구입해봤다.

제품번호는 EHP-IN210(WH) 으로 따로 제품명은 없는 듯 하고...
가격이 가격이다 보니 사용하던 저가형(?) 커널타입 이어폰들과 별차이를 느끼진 못했다...
(1만원 짜리에 기대는 하는넘이 이상하겠지...)

구입기준이 단지

1. 맥북과 어울리게 흰색일 것
2. 커널타입일 것
3. 이어폰을 잘 해먹기 때문에 저렴할 것

이기 때문에...-_-

장점이 있다면... 더 써봐야 알겠지만 이어폰 본체와 실리콘이 사용하던 소니 이어폰에 비해 헐렁(?) 거리지 않아 분실의 위험이 적다는 것...(커널타입 이어폰을 새걸로 바꾸게 되는 가장 큰 이유... 하지만 쓰다보면 헐렁해질지도 모른다.) 그래도 혹시 몰라서 여분으로 들어있는 대형/소형 실리콘을 가방 깊숙한 곳에 넣어 두었다.

단점은 Y형 코드라... 이어폰을 목 뒤로 돌리는 버릇을 가진 나에게는 조금 불편하게 느껴졌다는 것...
그리고 플러그가 굽어지지 않고 1자라 이동시에 파손의 위험이 있다는 것... 정도이다.


인터넷 쇼핑몰 등지에서 1만원정도면 구매 가능하니 이어폰을 막 쓰시는 분들은 참고하시라.
아래는 다나와에 나와있는 제원이다.

기본사양

케이블 길이

1.2m

자체 볼륨 조절

미지원

색상

화이트,레드,블랙

무게

5g(코드 제외)

세부사양

유닛 크기

10mm

임피던스

16Ω

감도

97dB/1mW

주파수 응답

20Hz ~ 20kHz

최대 입력

60mW(JEITA 규격)

기타

밀폐형

고정 실리콘 고무(S,M,L 3 사이즈 부속)

단자

커넥터

3.5mm 크롬 도금 스테레오 미니 플러그


2009년 11월 19일 목요일

MacBook MC240KH/A

얼마전에 구매한 맥북... 투여된 프로젝트가 막장까지 간 것 불끄는 프로젝트라... 산지 꽤 됐는데 이제야 자랑을 한다. 하지만... 처음 사는 맥북이라 알아보지도 않고 어리부리 구입하여 새 맥북이 나오기 몇일 전에 구형을 질러버렸다...-_-

맥북상자

역시 패키징에도 많은 신경을 썼다.


바디

역시 벌레먹은 사과가...


오픈

뚜껑 연 모습


자판

부족하면서도 불편해 보이는 자판... 디자인을 위해서라면...


아는 사람이 얘기하길... 모델이 자주 바뀐다니깐... CPU 좀 빠르고 이런저런 것들 좀 차이가 나는것에 대해서는 별 불만이 없는데...

조금 아쉬운점: 모니터가 LED라는 것...
많이 아쉬운점: 배터리가 7시간 간다는 것...

어차피 개발용이니... 18개월에서 24개월 사이에 교체할테고 30만원이나 싸게 샀으니 그냥 만족하면서 쓰는 수 밖에...

일단 노트북 교체할 시기도 됐고 곧 출시할 아이폰 어플리케이션을 개발하기 위해 구매를 한 건데... 이클립스도 깔 수 있으니 안드로이드 개발도 할 수 있어 그냥 그대로 OSX를 쓰고 싶지만...(XCode 좋더라... 이클립스야 원래 내 사랑이고...)

윈도우즈 모바일 개발 덕분에 VirtualBox를 깔아 윈도우도 같이 돌리고 있다.(그지 같은 VS2008, MS야 돈 아까우니 Express 버전에 모바일 개발환경 넣어다오...-_-) 이넘 땜에 4G로 업그레이드 해야할 듯... 일단 그럭저럭 부족함 없이 돌릴 수 있어서 시간되고 여유될때 업그레이드 하기로...


2009년 11월 12일 목요일

[.NET Compact Framework-C#] Reflection을 이용한 인스턴스 생성하기

Reflection 을 이용하여 인스턴스를 생성하는 방법으로 .NET Framework 에서도 공통적으로 사용할 수 있을 것으로 예상되지만 일단 .NET Compact Framework 에서 확인한 사항이다.


1. 일반적인 인스턴스 생성

- 클래스 이름 문자열로 A라는 클래스의 인스턴스를 생성하려면 다음과 같이 한다.(GetType 내의 인자는 클래스의 full path를 사용해야 한다.)


System.Type type = System.Type.GetType("alpha.A");

A a = (A)System.Activator.CreateInstance(type);



- 위 구문은 다음과 같은 작동을 한다.


A a = new A();



2. 외부 DLL 내의 인스턴스 생성

- 클래스 이름 문자열로 import.dll 이라는 외부 DLL내의 B라는 클래스의 인스턴스를 생성하려면 다음과 같이 한다.(GetType 내의 인자는 클래스의 full path를 사용해야 하며 import.dll은 실행파일과 같은 경로에 있다고 가정한다.)


System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom(@".\import.dll");

System.Type type = assembly.GetType("alpha.B");

B b = (B)System.Activator.CreateInstance(type);




3. 활용

아래 예제는 만들어진 Base 클래스를 상속받은 실행파일 내의 R001 클래스와 Import.dll 내의 R002 클래스를 생성하고 실행하는 예제이다. 자세한 내용은 첨부된 소스를 참고한다.


ReflectionTest.zip

예제소스 다운로드

private void buttonRun_Click(object sender, EventArgs e)

{

    textBoxResult.Text = "";


    // 클래스 이름이 입력되었는지 검사한다.

    if (textBoxClassName.Text.Length == 0)

    {

        MessageBox.Show("Must input class name!", "Notice", MessageBoxButtons.OK,MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);

        return;

    }


    Type type = null;

    try

    {

        // Import.dll을 로드한다.

        Assembly assembly = Assembly.LoadFrom(@".\Import.dll");


        // 로딩된 DLL에서 클래스 타입을 얻는다.

        type = assembly.GetType("Kr.Vsys.Test.Reflection." + textBoxClassName.Text);


        // 클래스가 없을 경우 예외를 발생시킨다.

        if (type == null)

        {

            throw new Exception();

        }

    }

    catch (Exception)

    {

        // DLL이 없거나 DLL내에 원하는 클래스가 없을 경우 실행파일에서 클래스 타입을 얻는다.

        type = Type.GetType("Kr.Vsys.Test.Reflection." + textBoxClassName.Text);

    }



    // 실행파일과 DLL에 모두 클래스가 없을 경우 메시지 박스를 출력한다.

    if (type == null)

    {

        MessageBox.Show("Can't find class : " + textBoxClassName.Text, "Notice", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);

        return;

    }


    // 얻은 클래스 타입의 인스턴스를 생성한다.

    Base instance = (Base)System.Activator.CreateInstance(type);


    // 화면에 출력한다.

    string result = "";

    result += "- Class Name(Full Name)\r\n";

    result += "  " + instance.GetType().FullName + "\r\n";

    result += "- Result\r\n";

    result += "  " + instance.run() + "\r\n";


    textBoxResult.Text = result;

}