C#은 너무 친절해…

C#은 너무 친절해… 그래서 짜증나… 므니다.. 무슨 말씀인고 허니.. C#에서 URL을 통해 웹페이지를 호출하는 코드가 있습니다.. 예를 들어서..

String urlAddress = "http://www.geoservice.co.kr:7070/wms?a|b|c";
WebRequest request = WebRequest.Create(urlAddress);

...

뭐.. 대충 위와 같은 식으로 url을 날렸더니.. url을 구성하는 문자중 |을 자동으로 %7C로 인코딩 해주십니다.. 와우~ 너무 친절하시네.. 하지만 내가 원하는 것은 그냥 | 문자를 고대로 서버로 날려야 합니다. 해서 찾아보니.. url을 문자열 그대로 날리지 않고 Uri라는 클래스를 통해 날리는 방법이 있더군요. 그래서 다음처럼 코딩했습니다.

String urlAddress = "http://www.geoservice.co.kr:7070/wms?a|b|c";
Uri uri = new Uri(urlAddress, true);
WebRequest request = WebRequest.Create(uri);

...

새롭게 추가된 2번 코드가 바로 그 녀석입니다. Uri 클래스 객체를 생성자의 두번째 인자값을 true로 주면 자동으로 |를 %7C 따위로 인코딩해주지 않아.. 제가 원하는 방법입니다. 근데 이 방식이 Deprecated 된 방식이랍니다. ㅡOㅡ;; 그럼 이와 동일한 기능을 하면서 권장하는 방식이 무엇이냐? 라고 열심히 구글링을 해봤지만 모르겠네요.. 아시는 분 계시나요?

여튼.. C#은 내부적으로 자동으로 처리해 주는 것들이 제법 있습니다. C#은 너무 친절합니다.. 그래서.. 가끔씩 맘에 않듭니다..

영화 127시간, 사운드트랙을 들으며..

127시간이라는 영화를.. 몇달전에 본적이 있습니다.. 주인공인 아론이 블루 존 캐년이라는 곳에 홀로 등반을 가.. 길다랐고 좁은 곳에서 갑작스럽게 굴러 떨어진 바위에 팔이 끼고.. 127시간 만에 탈출하게 된다는 영화인데요.. 출근하고 음악을 듣는데 그 영화의 사운드트랙이 흘러나오는군요…

사용자 삽입 이미지
이 영화의 사운드트랙 중.. “Touch of The Sun” 이라는 음악이 있습니다.. 매우 조용한 곳에서.. 해드폰을 통해 조금 볼륨을 높여 눈을 감고 들어보면.. 꼭 한번쯤 들어보시기 바랍니다.. 적막한 소리.. 소리가 적막할 수 있다는 것에 놀라게 되고.. 적막을 깨고 중간에 밀려오는 그 느낌에 감동 받지 않을까.. 생각합니다..

위의 이미지는 바위에 팔이 낀채로.. 물이 거의 떨어질 쯤… 빗물을 받는 모습입니다.. 물이 떨어져 나중에 자기 소변맛도 보는 등.. 처절한.. 결국 탈출은 하게 되는데.. 그 댓가는 바위에 낀 자기 팔을 잘라내는 것이였습니다.. 인적이 전혀 없고.. 127시간 동안 탈진할데로 탈진한터라.. 가장 최상의 선택이라 생각됩니다.. 최선의 선택이죠.. 당연한 선택이고..

최선의.. 최상의.. 당연한.. 가장 좋은 선택.. 가장 현명한 선택임에도.. 그 선택에 따라 행동하지 못하는 것이 무엇일까.. 생각해 보게 됩니다.. “두려움”이 아닐까 합니다.. 두려움을 극복하는 것에서 옳바른 선택을 할 수 있지 않을까.. 합니다…..

네이버 만화, 오늘의 낭만부 중 한컷

억수씨라는 만화가가 그려 네이버만화에 연재되고 있는 “오늘의 낭만부”라는 만화 중 한컷입니다.. 언제라고 하기에도 그렇고.. 제가 가장 부러워 하는 사람이.. 그림을 잘 그리는 사람입니다.. 특히 요즘같은 시대에 컴퓨터 그래픽을 이용해 그림을 그리는 사람.. 잘.. 그리는 사람..

사용자 삽입 이미지
여러 가지 이유가 있겠지만… 단 한컷의 그림을 통해 책 한권 분량이 넘는 많은 의미를 전달할 수 있고.. 다른 사람과 공감할 수 있는 능력을 가진, 능력자이기 때문입니다..

사람의 말.. 그리고 글은.. 매우 구체적으로 상대가 놓치기 쉬운 것들을 빠지지 않도록 치밀하게 해야.. 겨우 그 의미를 전달할 수 있습니다.. 듣고 읽는 사람이 쉽게 지치므로.. 시간을 갖고 또 다시 같은 의미를 설명하기를 반복해야.. 겨우 전달할 수 있습니다.. 하지만.. 그림은.. 보는 사람에게 명쾌하게.. 또 치명적으로.. 그 의미를 전달할 수 있는 방법입니다..

자신의 생각과 그 의미를 다른 사람들에게 효과적으로 전달할 수 있는 능력자들.. 그들이 부럽습니다..

사용자 삽입 이미지

스트레스 로그

지금 내 스스로가 느끼는 스트레스가 너무 크다.. 사소한 일에도 매우 예민해져 있는 상태…. 이런 상태로 일을 하려하니…. 도통 집중을 할수가 없다…. 마치 세상의 모든.. 나를 향한 영향력이.. 송곳처럼 날카롭게 느껴지기만 한다.. 도저히 견디기가 힘들어 않되겠다 싶다.. [2011년 11월 1일]

마이크로소프트사의 딥줌 이미지(Deep Zoom Image)포맷

사용자 삽입 이미지
위의 툴은 딥줌 이미지 데이터를 만들어주는 마이크로소프트 사의 Deep Zoom Composer입니다. 여기서 말하는 Deep Zoom이란.. 매우 큰 크기의 이미지를 인터넷 상에서 빠르게 보여주도록 하는 형식입니다.

딥줌 형식으로 이미지를 구성해 놓으면 .NET을 이용해 인터넷에서 쉽게 방대한 크기의 이미지를 빠르게 서비스할 수 있기 때문에.. GIS 분야에서 지도 서비스에 응용해 볼만한 기술로 생각됩니다. 비록 지도 좌표계의 개념이 없고.. 방대한 크기라고는 하나.. 크기에 제약이 있는 것으로 판단되는 단점이 있기는 하지만 말입니다.

GIS에서는 이미 타일맵이라는 형식으로 이 딥줌의 기술을 대체해.. 아니 딥줌보다 그 이전부터 사용되어 왔습니다. 하지만.. 딥줌은 마이크로소프트에서 최적화된 뷰어 자체를 제공하며 SilverLight를 통해 인터넷으로 쉽게 서비스할 수 있다는 매우 큰 장점을 가지고 있다고 생각됩니다.

이 글은.. 위에서 보여드린 Deep Zoom Composer를 통해 딥줌 이미지들을 만드는 것이 아닌.. Deep Zoom Composer가 없을지라도 딥줌 이미지들을 만들어 내기 위해 딥줌 이미지들의 구조를 파악해 보는 글입니다. 딥줌 이미지의 구조이므로.. Deep Zoom Composer가 만들어 낸 결과 샘플을 가지고 설명해 보겠습니다.

사용자 삽입 이미지
결과로 만들어진 딥줌의 폴더 구조입니다. 폴더 2개와 4개의 파일이 만들어 집니다. 이 구조는 어떠한 입력 이미지에 대해서도 항상 동일합니다. 그럼 다시 2개의 폴더 내부를 살펴보겠습니다. 먼저 dzc_output_files 폴더 구조입니다.

사용자 삽입 이미지
dzc_output_files 폴더 내부의 서브 폴더입니다. 역시 어떠한 입력 이미지에 대해서도 항상 동일하게 9개의 폴더가 만들어 집니다. 9개에 대한 모든 폴더, 즉 0 폴더에서 8번 폴더 안에는 0_0.png(또는 jpg)라는 이름의 이미지 파일 하나만이 존재합니다. 옵션을 지정하지 않았다면 256×256 크기의 이미지로 0 펄더에는 입력 이미지를 1×1 픽셀 크기로 만들어 놓은 것이고 2폴더는 2×2 픽셀 크기의 이미지가 3번 폴더는 4×4, 그리고 4번 폴더는 8×8 크기의 이미지와 같은 식으로 존재합니다. 다음은 dzc_ouput_images입니다. 이 폴더의 내부 내용은 다음과 같습니다.

사용자 삽입 이미지
입력 이미지 파일명으로 조합된 폴더 하나의 xml 파일 하나입니다. 먼저 xml 파일의 내부를 살펴보면 다음과 같습니다.

사용자 삽입 이미지
매우 단순한 내용이지만 중요한 정보를 담고 있는데요. 타일이미지의 크기와 이미지 형식 그리고 입력 이미지의 전체 크기에 대한 정보 등을 담고 있습니다. 이제 폴더 내부(02726_purplemurmur_2560x1440_files)를 살펴보겠습니다.

사용자 삽입 이미지
이 폴더는 흔히 GIS에서의 타일 구조 형식입니다. 0 폴더 안에는 1×1 픽셀 크기의 이미지 하나가 존재하며 최종적으로 12폴더에서는 입력 이미지를 256×256 크기의 타일 이미지들로 구성해 놓고 있습니다. 타일 이미지의 이름은 Row_Column.png(또는 jpg)로써 예를 들어 아래와 같이 구성되어져 있습니다.

사용자 삽입 이미지
여기서 Row 인덱스 0의 기준은 입력 이미지의 좌상단입니다. 이상으로 간단히 마이크로소프트사에의 딥줌 이미지의 포맷에 대해 설명드렸습니다.