영화 “일본침몰”을 보고난 후 짧은 생각

아시아 경제대국, 일본제국은 지형적 불안정으로 1년안에 수몰될 운명에 처하게 됩니다. 그 1년 동안 엄청난 자연재해로 급속도로 일본은 바다 속으로 수몰되어져 갑니다. 스나미.. 화산폭팔.. 지진 등으로 정부에서는 자국의 국민을 중국, 미국 등의 나라로 이주시키게 된다는 내용이 있는데… 이 영화에서 일본이 바라보는 각 나라의 관점이 참으로 흥미롭습니다.


먼저 중국을 바라보는 일본의 시각은 “호의” 그자체입니다. 만약 일본침몰이 실제로 일어난다면 일본 국민이 이주할 최적의 나라는 중국이다라는 감독의 관점이 엿보입니다. 영화속 어디에도 중국에 대한 비관적인 면은 찾아 볼 수 없었습니다.


그리고 미국. 처음에 일본에 대한 미국의 관점은 긍정적이였지만, 후반부에는 “올 것이 왔다!”는 미국의 내적 의구심을 폭팔시킵니다. 일본은 미국이라는 나라는 단지 일본이 잘.. 나갈때나 동반자지.. 일본침몰이라는 재앙 이후에 그 태도가 반드시 돌변한다는 관점을 가지고 있었습니다.


그리고 마지막으로… 우리 한반도, 지금의 남한과 북한입니다. 영화 어디에도, 많은 이주 국가 리스트에 한반도는 거론되지 않습니다. 일본과 가장 가까운 나라가 한반도임에도 절대 거론되지 않습니다. 이주국으로 거론되기는 커녕… 한국과 북한으로 갈 경우, 불법 채류로 간주 한다는 대사가 아주 짧막하게 나올뿐입니다. 일본이 한반도를 바라 보는 시각이 여실이 들어나는 대목입니다.

여기서 저는, 우리가 일본을 바라보는 국민의 관점이, 일본이 우리를 바라보는 관점과 크게 다르지 않다고 생각되었습니다. 만약 일본침몰의 감독, 하구치 신지가 강경파이면서 호전적인 성격의 인물이였다면 재앙에 따른 자국민의 보호를 위해서 단순한 국민이주가 아닌, 가장 가까운 나라인 한반도 침략하는 시나리오로 영화를 전개시키지 않았을까 하는 생각이 들었습니다. 만약 그랬다면 훨씬 영화는 재미있었을 것이고, 좀더 솔직한 영화가 아니였을까 하는 아쉬움이 남습니다. 끝으로 국가에 대한 애국이 아닌, 한 여자와 가족을 위해 자신을 희생으로 이끈 젊은 청년에 대한 마음은 무척 감동스러웠습니다.

폴리곤에 대한 삼각형 Mesh 생성(Triangulation)

2D GIS 데이터인 벡터 데이터(Shape)를 3D API를 이용해서 그리고자 할 경우에, 폴리곤은 볼록해야한다는 3D API의 전제조건으로 2D 도형 데이터를 쉽게 표시하기가 힘들다.

다행이 OpenGL의 경우는 Tessellation 기능을 이용해 폴리곤을 삼각형으로 구성된 Mesh로 재구성 해줄 수 있다. 하지만 Direct3D의 경우는 이러한 지원이 전혀 없으므로, 개발자가 직접 구현해서 적용해줘야 한다. 그러나 OpenGL 역시 매우 복잡한 폴리곤에 대해서는 삼각형 Mesh를 생성하지 못하는 경우가 많다.

이러한 문제로 인해, 회사에서 맡은 프로젝트 중에 폴리곤에 대한 삼각형 Mesh를 생성해주는 기능이 필요하여 작업한 결과물에 대한 화면이다.

[입력 데이터]

[위의 입력데이터에 대한 결과]

[Hole이 있는 폴리곤에 대한 결과]

[삼각형의 최대 넓이 제약 조건을 지정한 경우]

[삼각형의 최소 내각의 제약 조간을 지정한 경우]

폴리곤에 대한 삼각형으로 구성된 Mesh를 얻고자 할때, 구성 삼각형에 대한 제약 조건으로 최대 넓이와 최소 내각을 지정하여 더욱 다양한 Mesh를 구성할 수 있다. 이런 기능을 이용한다면 Surface Analysis도 가능하다고 생각된다.

Memory Leak 검출해 주는 오픈소스

예전에 VC6.0을 사용할때 코딩하고 Debug로 컴파일하면 어느 지점에서 메모리 누수(Leak)가 발생하는지 IDE의 출력창에서 알려주었다. 원래 VC6.0이 그랬는지, 아니면 나도 모르게 뭔가를 설치해서 그랬는지는 기억나지 않지만 말이다. 그런데 VS2003 이후로는 메모리 누수에 대한 보고를 해주지 않는 것이다. 난 한동안 아.. 메모리 누수가 발생하지 않게 잘했나보다 했는데.. 그게 아니란것을 알고 난후, 메모리 누수를 검출해주는 툴을 찾다가 괜찬은 녀석 둘을 만났다.

http://www.codeproject.com/tools/visualleakdetector.asp
http://www.codeproject.com/tools/leakfinder.asp

간단히 소개를 하면, 첫번째는 라이브러리를 Link해주고 vld.h라는 헤더파일 하면 include 해주면 메모리 누수 검출의 준비가 끝난다. 누수의 결과는 IDE 창에서 해주게 되는데 아래의 코드를 작성하고 컴파일하면 IDE의 출력창에 누수의 지점과 내용을 출력해준다.

#include "vld.h"

int main()
{
    char *pChar = new char[100];

    return 0;
}

이것은 필자가 VS6.0에서 경험했던 바로 그것이였다. 그러나 단점은 프로젝트의 코드생성이 다중스레드DLL이냐, 그냥 다중스레드냐에 따라 다른 라이브러리를 링크해줘야 한다는 것과 CRT 메모리에 대한 누수만을 검출해주며 COM 메모리 누수는 검출해주지 못한다. 즉, COM군의 함수중에 메모리를 할당해주는 CoTaskMemAlloc 함수에 대한 메모리 누수는 검출해주지 못하는 것이다. 그러나 IDE와 연동되어 IDE의 출력창에서 누수에 대한 정보를 더블클릭하면 누수지점의 코드로 커서가 이동하는 기능은 상당히 매력적이다.

끝으로 두번째는. 하나의 헤더파일과 그에 대한 하나의 소스파일로 구성되는 간단한 구조인데, StackWalker.h 파일을 include 해주고 누수검출 시작과 끝을 지정하는 함수를 호출해줌으로써 메모리 누수 검출의 준비가 끝나게 되어 무척 사용하기가 쉽다. 게다가 CRT 메모리 뿐아니라 COM 메모리에 대한 누수검출까지 가능하다. 또한 메모리 누수에 대한 정보는 3가지로 구분되는데, 간단한 SImple 모드, 좀더 자세한 Advanced 모드, XML 모드이다. 모두 외부 파일을 통해 누수 정보를 개발자에게 Report한다. 하지만 첫번째 소개했던 누수툴과는 달리 IDE와 연동을 지원해주지 않는다는 단점이 있다.

플렛폼이 Windows라는 범위에만 초점을 맞춰볼적에 비록, 최근의 추세가 Garbage Collection에 의한 자동 메모리 정리 기능이 있어, 메모리 누수에 대한 염려가 많이 줄기는 하였지만, .NET에서 지원하는 C++/CLI는 CLR 메모리만이 아니라, CRT, CLR, Stack 메모리에 까지 접근이 가능하므로 메모리 누수에 대해 주의를 요한다는 점에서 아직까지 이러한 메모리 누수 검출 도구는 유용하다고 하겠다.

[참고] 아래 글의 “줘도 못먹는”에 해당하는 오프소스가 아닙니다.