본문 바로가기

Reading FITS File FITS(Flexible Image Transport System)는 과학분야에 이미지등으로 사용되는 디지탈 파일 포맷이다.여기서 중요한건 FITS를 설명하려는 것이 아니니 FITS의 자세한 내용은 위키백과를 참조하세요. 사실 FITS를 사용하게 된 계기는 NASA에서 제공하는 SDO 영상을 처리하기 위함이었지만, 여기서는 C언어에서 사용하는 라이브러리에 대한 간단한 FITS 파일 읽는 절차만 (정말 절차만.. 소스도 없다!) 소개하겠다. SDO 영상과 다른 영상의 해상도 비교 (출처: NASA) 관련 라이브러리 CFITSIO 라는 라이브러리가 있으며, IDL에서는 자체적으로 FITSIO 함수를 제공하고 있으며, C언어와 Fortran의 서브모듈로써 라이브러리를 제공하고 있다. 그밖에 기타 언어(C++,.. 더보기
GDI Leak/ CreateXX 함수와 DeleteXX함수 사건 오늘 아침 황당한 일을 격었다. 전날 켜놓은 프로그램이 죽어 있었다. 1. 프로그램 내에 모니터링하는 윈도우가 화면에 보이지 않으면 죽지 않음 2. 위의 모니터링 윈도우가 보이는 중에 약 3시간 후에 프로그램이 죽음 실마리 * 디버깅 중에 GDI객체가 줄지 않는 것을 발견하였다. * 하나의 APP에서 GDI객체는 램 2.5GB의 Windows 기준으로 10,000개 이상 생성을 하지 못한다. 디버깅 * 소스코드를 살펴보던 중에 사용하지 않던 DC핸들을 생성은 하면서 해제해주는 코드가 없었다. * CreateCompatibleDC 사용. DeleteDC 부재. 사족 이것 때문에 프로그램이 죽어버렸음... Sleep(900) 으러 걸어두고 약 3시간 정도 지난후 프로그램 죽음. Sleep(1)로 걸어두.. 더보기
Memory Leak/ 메모리릭이 일어난 지점 탐색 프로젝트를 개발 중에 메모리릭이 난다면? 보통은 new 할당을 해놓고 delete 호출하지 않는 경우나 스레드를 돌려놓고 제대로 종료시키지 않는 경우가 대부분이 지만... 이거 참 찾기 곤란하다. 작은 프로젝트에서 메모리 릭이 발생했다면, 시간을 조금 드린다면 문제를 찾는데 어려움이 없지만.. (상황에 따라 다르겠다..) 규모가 큰 프로젝트에서 그런 문제점이 발생하면 찾기 곤란해 진다. 가장 좋은 방법은. 개발하면서 Memory Leak이 발생하지 않게 신경쓰면서 만들면 된다. Thread를 생성할때도 종료과정을 잘 고려하면서 개발한다면 문제가 되지 않는다. 그리고 항상 테스트 해본다. 그래도. 항상 예외는 있는 법. 아무리 저렇게 고려 한다고 하여도, 혹은 프로젝트 일정에 못 맞추어 일단, 고객에게 보.. 더보기