2008년 12월 11일 목요일

DNP3 프로토콜

DNP3프로토콜을 C로 구현했다.
PC용으로 개발했지만 C를 사용했기 때문에 통신부분만 수정하면 MCU나 다른 장비로 이식이 용이하다.
지금은 Windows, DSP32/33, ARM9 에서 사용중이다.


Debug 모드에서 Selftest 캡쳐

2008년 11월 6일 목요일

이탈리아 반뇨레죠







반뇨레죠는 이태리 동쪽 내륙으로 조금 들어간 곳에 있어요.

이곳은 聖보나벤뚜라의 고향이어서 많은 카토릭 신자들이 찾는 곳이기도 합니다.

중세시대의 건물이 현대에도 그대로 보존되어 있고, 지금도 그곳 주민들은 옛날 건물에서 그대로 생활하고 있습니다.

그래서 중세시대 영화나 드라마를 촬영할 때 이 반뇨레죠 지방을 자주 이용 한다고 합니다.

파도 치는 구릉들 중에 높다랗게 성채 처럼 서있는 반뇨레죠 지방의 집들!! 동화의 세계가 아직도 현존하고 있는 것처럼 보이지요?

聖보나벤뚜라(1217~ 1274)

보나벤뚜라 성인은 이탈이아의 반뇨레조에서 출생, 17세에 성프란치스코 수도회에 입회하였고 빠리대학에서 수학 한 후에 그곳에서 강의를 하였습니다.

37세에 프란치스코 수도회의 총장이 되었고 제2차 리용 공의회(1274년)에 참석, 교황은 그를 추기경으로 임명하였으나 리용공의회 회기 중에 운명 하였습니다. (1482년 시성)



고색이 창연한 이 식당은 약 600년 된 식당이라고 합니다.
물론 메뉴도 옛날의 전통음식이 나온다고 해요.

출처 : http://kr.blog.yahoo.com/savinayoo/14823

2008년 1월 14일 월요일

JAVA Font Metrics




public void paintComponent (Graphics g) {

    Graphics2D g2 = (Graphics2D)g;

    String ss = "Pjw";
    int baseline1 = 230;
    int baseline2;
    int x1=30, x2, y1, y2, y3, y4;

    Font ft = new Font ("serif", Font.BOLD, 200);
    FontMetrics fm = g.getFontMetrics (ft);
    g.setFont (ft);

    x2 = x1 + fm.stringWidth (ss);
    y1 = baseline1 - fm.getAscent ();
    y2 = baseline1 + fm.getDescent ();
    y3 = baseline1 + fm.getDescent () + fm.getLeading ();
    baseline2 = baseline1 + fm.getHeight();
    y4 = baseline2 - fm.getAscent ();

    g2.setPaint (new Color(0x000000));
    g.drawString(ss,x1,baseline1);

    g2.setPaint (new Color(0x000080));
    g.drawLine(x1-20,y1,x2+20,y1);
    g2.setPaint (new Color(0x0000FF));
    g.drawLine(x1-20,baseline1,x2+20,baseline1);

    g2.setPaint (new Color(0x008000));
    g.drawLine(x1-20,y2,x2+20,y2);

    g2.setPaint (new Color(0x00FF00));
    g.drawLine(x1-20, y3, x2+20, y3);

    g2.setPaint (new Color(0x606060));
    g.drawString(ss, x1, baseline2);
    g.drawLine(x1-20,baseline2,x2+20,baseline2);

    g2.setPaint (new Color(0xFF0000));
    g.drawLine (x2-20, y4, x2+20, y4);

    g2.setPaint (new Color(0x800080));
    g.drawLine (x1, y1-20, x1, y4+20);
    g2.setPaint (new Color(0x008080));
    g.drawLine (x2, y1-20, x2, y4+20);

}

2008년 1월 3일 목요일

Java 메모리 사용량 알기

Java 에서 사용하고 있는 힙 크기 측정방법

// Runtime 개체를 받아온다.
Runtime rt = Runtime.getRuntime();

// 할당된 힙 메모리
rt.totalMemory()

// 힙 내에서 남아있는 메모리
rt.freeMemory()

// 힙 내에서 사용중인 메모리 구하는 방법
rt.totalMemory()-rt.freeMemory()

// Java 카비지 컬렉터를 실행한다.
rt.gc (); // 또는 System.gc()

* 위 함수는 힙 크기만을 측정할 뿐이며 Java 내부적으로 사용된 메모리는 측정되지 않는다.