2004년 12월 5일 일요일

주차게임.. 2단계 통과



각고의 노력 끝에 2단계 통과.. ㅡㅡ;;
면허 없다보니 넘 어렵군요....
http://www.mousebreaker.com/games/parking/parking_1.swf

KlipFolio


사용중인 Klipfolio



'먀' 님이 사용하던 klipfolio를 설치해 보았습니다.
RSS 리더기로 블로그나 사이트에 글이 올라오거나 수정되는 경우 알려주는 기능을 갖고 있습니다.(많은 분들이 알고 계시는 내용이지만요. ^^;;;;)

헌데, '먀'님은 한글이 나오는데 저는 안나오더군요.
그래서 구글을 검색해보니 한글을 볼 수 있게 하려면 설정 창에서 한글로 변경해서 되는건 아니고 Feed Viewer를 따로 설치해야 하더군요. 혹시 모르시면 참고하시면 좋을 듯 ^^;;;

Moo님의 블로그에서 얻은 정보입니다.
- http://mooo.egloos.com/165751

원더풀 라이프(After Life)


PDBox에 올라온 원더풀 라이프의 소개글을 본 지 2주일이 지나서야 겨우 영화를 봤습니다.

"삶에서 가장 행복했던 순간을 택해야 한다면 당신은 가장 행복했던 순간은 언제입니까?"

라는 자막과 함께 나오는 영화의 배경음악이 너무나 마음에 들어서 무척 기대를 하고 봤습니다만, 영화소개에서 나오던 음악은 전혀 나오지 않고, 오히려 영화 전체에서 배경음악이 거의 나오지 않는 영상들을 보여줍니다.

'코레에다 히로카즈' 감독은 영화에서 재미난 설정을 보여줍니다. 사람이 죽으면 먼저 '림보' 역에 도착하고 거기에서 일주일간을 머물며 자신의 삶에서 가장 소중했던 기억 중 하나만을 선택해야 합니다. 토요일이 되어서 떠나게 될 때 선택한 한가지의 기억만을 갖고 갈 수 있기 때문입니다.

월요일부터 수요일까지 회상을하며 기억을 선택하면, 목요일에서 금요일까지는 선택한 기억만으로 한편의 영화를 만들어 줍니다. 현실의 기억만을 본다면 모든 것이 행복하지 않을 수도 있기때문에, 자신만이 알고있는 행복한 기억만을 남겨주려고 하는 듯이요.

영화가 완성이 되면 토요일에 모두 모여서 시사회를 합니다. 시사회를 하며 사람들은 자신의 기억을 보게 되고 영화가 끝날 때 쯤이면...모두들 사라집니다. 자신이 기억하고 싶은 자신만의 기억?안고서..

영화 자체에서도 사람들을 보여주고 그 사람들의 인생을 들으며 어떠한 순간이 가장 행복했던가를 보여줍니다. 영화 자체의 스토리가 어찌보면 2시간 넘는 시간동안 약간은 지루한 면이 없지는 않습니다.

그러나 영화 끝날 때 쯤에는 내가 내 삶에서 가장 행복했던 순간이 언제인지를 생각하게 될 때 이 영화의 가치가 드러나는 것이 아닐까 하는 생각이 듭니다.


감독 : 고레에다 히로카즈
주연 : 나이토 타케토시, 아라타, 오다 에리카, 테라지마 스스무
상영시간 : 118분
제작년도 : 1998
국가 : 일본

해미읍성 갔다오기..(2002년 12월 13일)


  해미읍성(海美邑城)
  • 지정번호 : 사적 제 116호

  • 소재지 : 충청남도 서산시 해미면 읍내리

  • 시  대 : 성종22년(1491년) 축조

  • 크  기 : 둘레 1,498 m, 성 높이 5m, 성 안 넓이 6만 4350 m2

  • 본래규모 : 성곽둘레 6,630척, 높이 13척, 치성 380첩, 옹성2개소, 동서남문, 객사 2동, 포루 2동, 동헌 1동, 총안 380개소, 수상각 1개소, 신당원 1개소 등

  • 복원규모 : 동서남문, 객사 2동, 동헌 1동, 망루 1개소, 포루 2동, 등 11동의 관아건물



   성의 유래

  이성은 조선 태종 18년(1418)에 충청도 병마절도사영성으로 축조하여 세종3년(1421)부터 충청도 육군의 본영으로 사용되다 효종 3년(1652) 청주로 이설된 이후에는 해미읍성으로 이용된 유서 깊은 유적이다. 성의 둘레는 1,498m 로 북동쪽의 낮은 구릉을 끼고 넓은 평지를 이용하여 축조하였다. 성벽의 아래 부분은 큰석재를 사용하였고 위로 오를수록 크기가 작은 석재를 사용하여 쌓았다.


포루입니다.

  성문은 동, 서, 남, 북 4곳에 있는데, 네모지게 잘 다듬은 무사석으로 쌓았으며, 주 출입구인 남문은 아치모양으로 이루어져 있다. 남문과 서문 사이에는 적이 성벽으로 기어오르는 것을 막기 위하여 성벽에서 밖으로 돌출시켜 설치한 2개소의 포루가 축조되어 있으며, 성안의 물을 밖으로 유출시키기 위한 수구가 서문 바로 남쪽에 시설되어 있다. 성벾 바깥으로 깊은 해자(도랑)를 팠던 자국이 남아 있으며, 조선시대에는 성벽과 해자(도랑)사이에 탱자나무를 심어 적이 쉽게 접근하지 못하도록 하여 탱자성이라 불리기도 했다.

 성안에서는 고종3년(1866)에 천주교를 탄압하면서 교도를 천여 명을 처형했던 역사적 사건이 일어나기도 하였다. 이 성은 본디 왜구를 막기 위하여 쌓은 것으로 서해안의 방어를 담당하고 있었으며 몇 차례에 걸쳐 수축을 하였다. 성은 폐성된 지 오래되어 성곽의 일부가 허물어지고, 성안의 건물이 철거되어 그 자리에 해미초등학교와 우체국, 민가 등이 들어서는 등 옛 훼손이 되었는데, 1973년부터 복원사업을 실시하였다. 현재는 성의 원형이 잘 보존되고 있어 성곽연구에 많은 자료를 제공하고 있다.

   해미읍성 찾아가기

주말에 포항집으로 내려갈 일이 생겨서 내려가면서 가 볼만한 곳을 찾다가 누나가 있는 천안 부근의 해미로 가기로 결정했습니다. 서울 남부터미널에 도착하여서 해미가는 차를 알아보니 서산이나 해미 부근으로 가는 차들은 거의 대부분 해미를 거쳐가서인지 차는 많은 것 같더군요. 서울에서 해미까지는 7,400원으로 제법 비싸더군요. (해미에서 천안은 무려 6,900원이나 하더군요. 기차가 훨씬 싸진듯합니다. ㅠ.ㅠ) 게다가 버스가 서울을 벋어나자말자 교통사고가 발생하여서 왜이리 막히는지 해미읍성을 제대로 볼 시간이나 있을까 하는 생각이 들더군요.


해미읍성 찾아가는 길



성의 남문입니다.

1시간 50분 정도(보통은 1시간 30분정도 걸린다고 하네요.) 걸려서 도착하니 터미널이라는 것은 눈에 전혀 보이지 않고 그냥 길에 내려(?)주더군요. 집에갈 때 어떻게 가야하나 하는 생각을 뒤로하고서는 해미읍성을 찾아갔습니다. 표지판이 제대로 눈에 뛰지 않아서 무작정 걷다보니 해미읍성 표지판이 도로표지판에 있더군요. 해미읍성에 도착하고 보니 겨울에다 비수기라서인지 사람들은 전혀 없더군요. 맞은편 가게에서만 시끄럽게 틀어놓은 음악소리가 들리고 성 앞에 한개의 포장마차만 서있었습니다. 성자체는 생각외로 작아서 아담(?)하다는 생각도 들었습니다.


관아문입니다.

남문을 거쳐서 올라가다보면 우측에 감옥터가 보이고 감옥터를 지나면 관아문이 보입니다. 관아문을 지나 들어가면 동헌, 동헌부속사, 책실을 볼 수 있습니다. 내부를 볼 수 있게 열려있는 곳은 동헌만이었고 나머지 건물은 모두 내부를 볼 수 없게 되어있더군요. 무료(?)라서 동헌유래글 외에는 별로 눈에 뛰는 것은 없고 낙서와 구멍뚫린 문 등만 보이더군요. 동헌을 구경한 후 동헌 우측의 망루(청허정)으로 올라가면 뒤쪽으로 성위로 갈 수 있도록 되어 있더군요. 북쪽으로 시작해서 서문 남문 동문을 구경하고나니 한 40분정도 되더군요. 북쪽에서는 암문을 볼 수 있는데요.

암문으로 추정되는 북문

(정확하게 명칭이 암문이 맞는지는 모르겠습니다. 일반적으로 성에서 적에게 들키지 않게 출입을 할 수 있는 문을 암문이라합니다. ) 암문쪽은 소나무와 대나무로 부근이 둘러 쌓여 있어서 접근이 불가능하였습니다. 서쪽으로 내려오다보면 천주교를 탄압하였던 서문 순교지 터(부정한 것은 서문으로 내버린다고 하여서 서문 쪽에서 처형 하였다고 합니다.)를 볼 수 있으나 바로 접근은 불가능하고 남문으로 나가서 돌아가야 합니다. 남문의 경우 진남문이라고도 하며 서문, 동문과는 달리 단청이나 크기면에서 다르나 페인트로 복원되어서 멋은 좀 떨어지는 것 같군요. 동문은 서문과 거의 동일합니다. 다른점이라고 하면 동문 바깥쪽이 심하게 훼손된 것과 동문 벽쪽에 여러 한자가 세겨져 있다는 것입니다. 정확한 이유는 나와있지 않고 다른 사이트(http://www.sonamoo.or.kr/culture/susan1.htm) 에서 성을 축성할 당시 성을 쌓은 관아가 달라서 책임을 물을 수 있도록 누가 세웠다고 표시하였다고 하는 군요.



서문쪽 순교현양비

성을 둘러본 다음에는 바깥에서 성을 보기위하여 길을 따라 갔으나 서문-남문-동문 쪽만 볼 수있고 북쪽부분은 사유지로 가려져 있어서 볼수가 없었습니다. 또한 동문 쪽을 갔을 때는 낙서로 인하여 심하게 훼손되어 있어서 안타깝다는 생각도 들더군요. 게다가 비수기의 한계(?)인지 화장실은 공사중이라 문을 다 막아버리고 성안의 분수대 물도 잠겨있고 서포루의 경우 공사 중으로 막혀 있더군요. 빠른 개선이 필요하다는 생각도 들더군요. 해미에는 시내버스 주차장이 없기 때문에 내렸던 장소로 돌아오시면 차부슈퍼마켓(주인아주머니 매우 불친절함)을 볼 수 있습니다. 거기에서 버스표를 팔기 때문에 표를 사신다음에 서울 쪽 상행선은 길건너서 하행선은 바로 앞에서 버스를 타시면 됩니다.


동헌

동문의 낙서

순교장의 서문


2004년 12월 4일 토요일

WMF(Windows Metafiles, wmf)

Reference site:
1. libwmf - http://wvware.sourceforge.net/caolan/index.html
2. http://netghost.narod.ru/gff/graphics/summary/micmeta.htm

Windows Metafiles(wmf) – 기본적으로 윈도우 메타 파일은 윈도우의 GDI(Windows Graphics Device Interface)의 호출한 기록을 의미한다. wmf 파일의 특징을 살펴보면 다음과 같습니다.

1. wmf 파일은 반대의 순서로 저장됩니다.

BOOL32 Rectangle
{
HDC32 hdc, //INT32가 32bit이나 이들의 크기는 16bit 단위로 저장됩니다.
INT32 left,
INT32 top,
INT32 right,
INT32 bottom
}

->저장순서 (32bit size of total record | 0x041B | bottom | right | top | left)
레코드는 Microsoft Windows Graphics Device Interface(GDI)의 function 호출을 바이너리로 인코딩 합니다.


2. 파일의 세부구조(File detail – 레퍼런스 자료들을 합쳤다.)

 1) header
typedef struct _WindowsMetaHeader
{
WORD FileType;
//1=memory, 2=disk, metafile의 위치(location)을 가리킨다.

WORD HeaderSize;
//Size of metafile header in WORDS = always 9

WORD Version;
//Version of Microsoft Windows used 값은 항상 hexadecimal foramt으로 저장
//Windows에 따라 달라지는 값으로 Windows3.0이면 300h를 갖습니다.


DWORD FileSize;
//Total size of the metafile in 16-bit WORDs

WORD NumOfObjects;
//Number of objects in the file

DWORD MaxRecordSize
//The size of largest record in the metafile in WORDs

WORD NoParameters
//Not used, always 0
}


2) 각 레코드의 기본 구조

typedef struct _WindowsMetaRecord
{
DWORD Size;
//Total size of the record in WORDs, including the Size field itself,
//minimum possible size = 3
WORD Fucntion;
//GDI number of the fuction number which defined in WINDOW.H
WORD Parameters[];
//Parameter is an array of the parameters used by the funciton.
//The parameters used by function are stored in the reverse order.
}WMFRecord;


3) 해당 record가 읽히는 순서대로 fuction이 불려집니다. 마지막 record로는 항상 function number of zero를 가지고 있으며 record data의 종료를 의미합니다. 대부분의 wmf 파일 포맷이 동일하지만 일부분은 다릅니다. 기본 record format을 사용하는 GDI method는 다음과 같습니다.



4)다음은 data format에서 data array보다 parameters field를 사용하는 메소드들입니다. 내부 구조는 Microsoft Windows Programmer's Reference Library를 참고하시기 바랍니다.




5) Microsoft Windows 3.0과는 달리 parameter가 변경되거나 수정된 GDI function들 입니다.




모든 GDI function들이 metafile에 포함될 수 있는 것은 아닙니다. 그들의 첫 번째 파라미터로서 device context를 다루는 경우만 유효합니다.


3. Porting WMF Files between applications
메타파일에는 22-byte header를 붙입니다. 이 헤더는 메타파일의 헤더 안에서는 발견되지 않는 정보들을 가지고 있습니다. 그러나 애플리케이션 사이에서 메타파일을 옮기는데 필요한 정보들입니다.

typedef struct _WmfSpecialHeader
{
DWORD Key;
//key는 특별한 헤더의 존재를 알리는 identification value로서 항상
//9AC6CDD7h의 값을 갖습니다.


WORD Handle;
//Handle은 사용되지 않으며 항상 0의 값을 갖는다.

SHORT Left;
SHORT Top;
SHORT Right;
SHORT Bottom;
//이미지의 upper-left와 lower-right 좌표를 나타냅니다.
//이들은 twips로 측정되며, 이 네 개의 점은 RECT 구조체의 필드 값과 일치합니다.


WORD Inch;
//이미지를 나타내는데 사용되는 twips 단위로서
//이미지의 스케일을 변경되는데 사용됩니다.
//720의 값은 보통 크기의 두 배를 의미하며 360은 네 배를,
//2880은 1/2로 축소, 1440은 1:1을 의미합니다.

DWORD Reserved;
//사용되지 않으며 항상 0으로 설정된다.

WORD Checksum;
//Checksum contains a checksum value
//for the previous 10 WORDs in the header,
//calculated by XORing each WORD value to 0

}


※ twips는 모든 디스플레이 시스템에서 동일한 스크린 요소의 비율을 확인하기 위한 스크린 독립적인 유닛을 말한다. twip은 인치의 1/1440으로 정의된다.
※ pixel은 picture element를 기준으로 하는 스크린 의존적인 유닛으로 스크린상에서 그래픽으로 표현되는 가장 작은 수단인 dot를 말한다.

2004년 12월 3일 금요일

12월 구매요청도서 목록

책을 읽자 ~ !



리플로 달아주세요~

==책 제목, 저자, 출판사, ISBN, 가격은 꼭 적어주시구요.==

TrueTypeFont instruction set- instuction glyphs(1)

시작 글

회사에서 일을 하다보니 폰트하고 마주치는 경우가 많이 있더군요. 마주치다보니 폰트란 놈이 꽤 복잡하게 구성되어 있는 것을 알게 되었습니다. 처음에는 무작정 부딪쳤으나 자세히 알지 않으면 안되겠길래 MS의 The TrueType instruction set(http://www.microsoft.com/typography/OTSPEC/ttinst.htm)을 번역하여 조금씩 올리려고 합니다. 컴쟁이들이 일반적으로 쓰는 용어는 그대로 번역없이 한글로 ^^;; 표기 하였습니다. 번역에 문제가 있거나 이상한 부분 있으면 말씀해주세요.


The TrueType instruction set

트루타입 글자가 화면에 그려질 때, 폰트는 폰트파일 안의 명령어들을 사용하여 여러 힌트를 넌지시 알려줍니다. 트루타입 명령어 셑은 Glyph 외곽에 대하여 전체 또는 특정 크기와 해상도를 통제할 수 있는 강력한 수단을 제공합니다. 명령어들은 화면의 해상도에서 읽기 쉽게 보여지는 것이 가장 중요한 문제입니다 다음의 문서들은 트루타입 명령어 셑과 힌트들에 상세하게 다루고 있습니다.


Instruction Glyphs

이 챕터는 Glyph 명령과 관련된 기본적인 작업을 전체적으로 살펴봅니다.


Choosing a scan conversion setting

트루타입 폰트 명령어에서 내릴 수 있는 하나의 결정사안은 스캔 변환 모드(Scan conversion mode)를 선택하는 것입니다. 폰트 디자이너들은 빠른 스캔 변환 모드(fast scan conversion mode)와 드롭아웃 컨트롤 스캔 변환 모드(dropout control scan conversion mode) 사이에서 선택할 수 있습니다. 이 선택은 Graphics State의 scan_control 변수를 설정함으로 이루어집니다. 인터프리터는 드롭아웃 컨트롤 모드가 사용될지를 결정하기 전에 세가지 조건을 고려합니다.

- Glyph이 회전하였는가?
- Glyph이 늘여져(stretched)있는가?
- 현제 설정되?있는 ppem이 특정 ppem 값보다 작은가?

드롭아웃 컨트롤 모드를 완전히 꺼버리는 것 또한 가능합니다.


Controlling ronding

트루타입 인터프리터는 어떠한 값이 라운딩(rounded, 반올림?원형?둥글게? 이하 라운딩 ^^)될지 결정하기 위해서 round_state를 사용합니다. 명령어들은 Graphcis State 변수의 round_state의 값을 사용하여 이를 결정합니다. round_state의 설정은 인터프리터에서 어떻게 라운딩되야할 지를 결정해줍니다.명령어 셑은 미리 정의되어 있는 원형 상태를 grid, pixel centers(half grid)또는 grid 또는 pixel centers 모두에 대하여 라운딩하기 쉽게 만들어져 있습니다. 또한 반올림을 하거나 반내림을 하는 것도 모두 가능하게 되어 있습니다. 만약 미리 정의된 충분한 반올림 옵션이 없는 경우에는 라운딩 메소드(rounding method)에서 면, 경계, 끝의 선택이 가능하게하거나 매우 정확하게 값을 라운딩 값을 처리할 수 있는 SROUND 명령이 제공됩니다. S45ROUND는 SROUND처럼 동일하게 정확한 설정을 허락합니다만 x-y 평면에서 45도 각도의 움직임만을 사용할 수 있게 되어 있습니다.

다수의 명령어들이 특정 지점으로 움직이기 전에 그들이 얻은 값들에 대해서 라운딩합니다.
MDRP, MIRP, MIAP, MDAP, ROUND 등 어떠한 명령어를 사용하더라도 그 효과는 control_value_cut_in과 함께 Graphcis state의 round_state 값에 의하여 영향을 받습니다. ROFF 명령은 라운딩을 끌 수 있으나 명령어가 삽입된 값에 대하여 계속하여 살펴보는 것을 허락합니다.


Points

점의 외곽선은 좌표 그리드에서의 그들의 위치와 커브 포인트(curve points)가 켜지거나 꺼져있는 여부에 따라서 명세됩니다. 점을 다루는 것은 그것의 공간 상에서의 위치와 커브 포인트의 상태를 다루는 것을 의미합니다. 인터프리터는 현재 Glyph을 구성하고 있는 점들의 집합을 다루거나 집합안에 특정 점들을 언급하기 위해서 zones와 레퍼런스를 사용합니다.


Zones

모든 점 폰트 스케일러 인터프리터 참조(Any point the font scaler interpreter references)들은 잠재적으로 Glyph 서술을 만드는 집합인 두 개의 zone 중 한 곳에 있습니다. 이러한 참조되는 점들 중 하나는 zone1(Z1)입니다. Z1에서는 항상 현재 인터프리트되고 있는 Glyph을 가지고 있습니다.

두번째는 zone 0(Z0)라고 부르며 zone1의 어떠한 glyph 안의 실제 점들에 대응하지 못하는 점의 좌표를 일시적으로 저장하기 위해서 사용됩니다. Zone 0는 glyph에 존재하지 않는 점을 생성해야할 필요가 있을 때 또는 만약 임시의 점의 좌표를 기억하고 있을 필요가 있을 때 유용합니다. zone0의 점은 MIAP와 MIRP 명령에 의하여 유용한 점들로 옮겨지고, gep0에서 Z0 포인트로 셑팅됩니다. 때때로, Z0에서 폰트를 위한 key metric positions로 설정하는데 유용할 수 있습니다.


Zone pointers

세 개의 zone 포인터들인 gep0, gep1, gep2는 znoe0 또는 zone1을 레퍼런스하는데 사용됩니다. 초기에는 모든 세 개의 점들이 zone1을 가리킵니다.




Reference points

Zone 포인터들은 점들을 접근하는데 사용된다. 레퍼런스 점들은 그룹내의 특정 점들에 대한 접근을 제공합니다. 인터프리터는 세 개의 번호가 붙여진 레퍼런스 점들을 사용합니다: rp0, rp1, 그리고 rp2. 각각은 zone1의 어떠한 glyph의 외곽 점들 중 하나이거나 zone0 안의 어떠한 점의 값으로 설정될 수 있습니다.

다음의 Figure 2-2에서처럼, 두 개의 레퍼런스 점들이 동일한 외곽 점을 나타낼 수도 있습니다.




총괄하여 zone 포인터들과 레퍼런스 점들은 Graphics State에 속합니다. 이들 값들은 명령어들을 사용하여 변경될 수 있습니다. 많은 TrueType 명령어들은 그들의 동작을 상세히 설명하기 위해서 zone 포인터들과 레퍼런스 점들에 의존합니다.


Phantom points

마이크로소프트의 rasterizer v1.7 또는 이 후의 버전은 폭과 높이를 통제하기 위해서 glyph의 모든 선들의 끝인 네 개의 “유령 점들(phantom point)을 추가하였습니다.

만약 glyph의 외형 전체를 나타내는데 “n”개의 점들이 필요하다면(이 경우, 외형 점들의 숫자는 0부터 n-1이 사용됩니다.), scaler는 n, n+1, n+2, n+3의 점들을 더할 것입니다. 점 “n”에는 문자의 시작점이 위치할 것이고, 점 “n+1”에는 앞쪽 폭(advanced width)의 점이, 점 “n+2”에는 꼭대기의 시작점이, 점 “n+3”에는 앞쪽 높이(advanced height) 점이 위치할 것입니다. Figure2-1과 2-2 그림을 통해서 살펴보면 2-1에서는 (17, 18, 19, 20)이 2-2에서는 (27, 28, 29, 30)이 여기에 해당합니다.




모든 네 개의 점들은 glyph 명령인 side bearing, advance width, advance height에 동반하여 생기는 TrueType 명령어들에 제어됩니다. side bearing과 advance width, advance height들은 이러한 유령 점들을 사용하여 계산됩니다. 그리고 이들은 디바이스의 특징에 의해서 glyph에 따른 폭과 넓이가 grid에 적합한 결과로 반영되기 때문에 디바이스 의존적인 폭과 넓이라 불립니다. 디바이스 의존적인 폭과 넓이들은 유령 점들에 적용된 명령어에 따라 다르거나 똑같을 수 있습니다.

유령 점인 n +2나 n+3과 관련되어 있는 높이를 계산하는 TrueType 명령어들을 사용하기 전에는 GETINFO[]를 사용하여 rasterizer가 MS rasterizer v1.7이상의 버전인지를 체크해야 합니다.