멍청하게 실수한 내용을 정리해서 나중에 똑같은 반복을 하지 않기 위해 기록 디카들로 찍은 사진을 손쉽게 정리하기 위해 디카 사진 정리 도구 FPO(Family Photo Organizer)를 만들어 쓰고 있다. 한땀 한땀 만든 코드라, 버그가 없다고 착각생각하며 쓰고 있었는데…치명적인 버그를 발견했다.실수로 Exif에서 GPS 위치 정보를 삭제하도록 만든 것이다. 더 미치는 건, 깔끔하게 GPS 정보를 날리는 게 아니라 계산 오류로 GPS 정보 필드를 반토막… lllorz 1. 아이 클라우드 일단 PC로 복사하고 폰에서 삭제한 사진들의 백업본을 뒤져봤다.잡스 느님의 은혜로우신 작품 아이 클라우드가 있어 사진들이 다 백업되어있…을줄 알았다.하지만, 뒤져보니 70장 정도밖에 백업이 안 되어있었다. 일단 이 ..
한 집안에 있는 카메라가 끽해야 두어대이던 시절이 있었다. 수학여행 간다고 아버지가 애지중지하시던 카메라를 빌려갔던 기억도 난다. 그런데, 요즘은 디지털카메라가 넘쳐난다. 우리 집만 해도 디카와 폰카를 다 합치니 여섯 대가 나온다. 난 사진을 날짜/시간순으로 정렬하고 폴더에 정리하는데, 디카가 여러대인데다 사진 장수도 많아 쉽지가 않다. 더군다나, 디카마다 시간이 미묘하게 다른데, 이게 가끔 신경이 쓰인다. 1. 동영상 변환 아이폰/아이패드 처럼 동영상을 mp4/H.264로 깔끔하게 떠주는 디카는 아직도 많지 않다. 여전히 AVI/mjpeg의 커다란 파일로 만들어주는 경우가 더 많다. 화질에 대비해 파일의 크기가 너무 크다… 그래서, iDevice용 동영상 변환기 iTrans v10.3a를 사용한다. 변..
라즈베리 파이의 활용도는 무궁무진하지만, 난 애초부터 XBMC 설치해 매체 재생기로 쓰는 게 목적이었다. 그리고, 계속 Raspbmc를 설치한 상태로 1년 이상 사용해왔다. 그러다 어디선가 줏어들은 "Raspbmc도 좋아! 하지만, OpenELEC가 짱이야!"에 필 받아 OpenELEC으로 갈아탔다. 현재 XBMC의 빌드가 12.x 대인데, 조만간 13.0(Gotham)이 나올 예정이라 연습삼아 한번 손 대고 싶기도 했고… 하지만, 막상 설치해보니, 별다른 차이를 느낄 수 없었다. 무엇보다 기본 스킨인 Confluence를 다른 걸로 바꾸기 어려우니 화면부터 그대로다… 미묘한 차이들이 좀 있어 스크랩 차원에서 기록… 1. 영상 재생시 Raspbmc보다 약간 빨리 뜨는 기분 편견일 수도 있지만, 영상이 살..
아이폰에서 인저스티스 갓즈 어몽 어스(이하 인저스티스)를 계속 하고 있다. 애들도 좋아하고 해서 셋이서 모여서 하다 보니, 기본 미션은 예전에 다 끝냈고, 계속 캐릭터들을 모으고 있다. 하다보니 떠오른 여러가지 잡생각들… 1. 수퍼맨의 수인 번호는 키를 의미 iOS 용에선 제대로 나오지 않지만, 정부 수퍼맨은 마지막에 감옥에 갇힌다. 이 때의 수인번호는 SM-61411인데, 이건 그의 키를 의미한다(6' 4" = 193cm). 공식 설정은 6' 3"(190cm)인 것 같은데, 픽션 캐릭이니 더 이상 따지는 건 무의미한 것 같다. 2. 솔로몬 그런디의 묘비는 생전의 이름임 솔로몬 그런디의 생전 이름은 사이러스 골드다. 그가 내리치는 묘비에서 그의 이름을 읽을 수 있다. 더불어, 그는 1895년에 죽었고, ..
요즘 대세(?)인 반응형 스킨이 티스토리용으로도 나왔다.그 중 Ungki(H 님)님이 만든 두비두를 선택했다.1단(두비두)과/2단(스파이더웹)을 모두 배포하는데, 1단의 깔끔함이 더 좋아 이 쪽으로 선택. 그런데, (어느 스킨이나 다 그렇듯) 이 스킨 역시 아주 약간 손 댈 필요가 있다. - 모바일웹 스킨 OFF로 설정 - 헤더 이미지 교체헤더 이미지는 당연히 교체해야 되고, 크기를 바꾼다면 지침에 따라 css를 약간 수정해야 한다. - 애드 센스애드 센스를 설치한 경우 반응형에 맞는 애드 센스를 설치하는 것이 좋다. - 오류 수정본 스킨엔 아주 약간의 버그가 있다.모바일 모드에선 이미지 아래의 캡션 정렬이 조금 이상하고, 슬라이드쇼의 버튼 배열도 어색하다.또, 일부 브라우저에서 각주 등이 오동작하거나,..
VS2012에서 구버전 VS의 프로젝트를 사용할 때 가끔 다음과 같은 메시지를 만날 수 있다. warning C4005: '__useHeader' : macro redefinition warning C4005: '__on_failure' : macro redefinition 이 문제는 VC11의 헤더와 SDK 7.1a의 헤더가 달라서 발생하는 것이라고 한다. .rc 파일 맨 앞부분에 다음 내용을 추가하면 이 메시지를 볼 일이 없다. #define _USING_V110_SDK71_ 1 참고 사이트: stackoverflow
2014/03/08 - 이미지 파일 크기 축소에 대한 단상 이전 글에서 언급했듯, PNG 압축의 대마왕 tinyPNG는 pngquant의 웹 프론트엔드이다.재미있는 건 tinyPNG는 유료 플러그인도 판매되고 있지만, 정작 pngquant는 오픈소스라는 점. - 소스는 github에서 공개되고 있으며, 라이센스는 BSD-like License. - 소스는 C99로 작성되어 있기 때문에 Visual Studio 2013 이상으로만 컴파일 가능함. OTL - 소스는 실행파일/라이브러리 모두 제공함 - 실행파일도 별도로 공개하고 있으며, 윈도우 용은 여기서 받을 수 있음. - Floyd-Steinberg 디더링 여부를 선택할 수 있는데, 안 쓰는 쪽이 좀 더 자연스럽다는 느낌. - 압축 후에 OptiPNG 등..
지난 3월 5일 모질라에서는 mozjpeg라는 프로젝트를 발표했다. 이것은 기존 JPEG의 규격을 그대로 유지하면서 JPEG 압축률을 대폭 향상시키는 프로젝트다. 즉, 구글 WebP의 커다란 걸림돌이 나타난 것이다. 이번에 발표된 1.0을 직접 컴파일해보니 VS에서는 약간의 오류 수정이 필요했다. 제대로 동작하게 하려면 두 개의 파일을 수정해야 한다. 1. CMakeLists.txt 488행은 다음과 같다. SOURCES libjpeg-turbo.nsi) 이것을 아래와 같이 수정해야 한다. SOURCES libmozjpeg.nsi) 2. jcparam.c 741행부터는 다음과 같다. GLOBAL(void) jpeg_simple_progression (j_compress_ptr cinfo) { if (ci..
인터넷 환경이 아무리 빨라지더라도 그 바닥(?) 중요 테마 중 하나는 전송량을 줄이는 것이다.그리고, 전송량 중에서 이미지가 차지하는 비중은 굉장히 높다. 다양한 이미지 포맷이 있지만, 인터넷(특히 웹)에서는 JPEG과 PNG이 압도적으로 많이 쓰인다. JPEG가 1992년, PNG이 1996년에 발표됐으니 20년정도 지났고, 나올만한 기술은 다 나왔다고 봐야 된다. 즉, 이제 두 포맷의 압축률은 거의 한계점이라 보는 것이 정설이다. 많은 사람들이 그런 줄 알았다… 하지만, 현실은 언제나 외계인이 지배하는 법… 1. PNG 압축의 여력이 더 큰 쪽은 PNG이다.기본적으로 PNG은 무손실 압축이기 때문에 전처리를 거의 하지 않는다. 필터링 단계가 있기는 하지만, 큰 영향을 주는 정도는 아니다. PNG 파일..
종종 메모장2 mod에서 설정이 잘 저장되지 않는다는 제보를 해주신다.그리고, 그 때마다 "관리자 계정으로 실행하세요"라는 답을 했다. 이건 올바른 답은 결코 아니고, 미봉책으로 그런 답을 한 것이다. 1. 문제의 진짜 원인 이건 근본적으로 메모장2 자체의 문제이다. 메모장2에서 설정파일(Notepad2.ini)을 찾는 순서는 다음과 같다. 프로그램 설치 폴더 → Application Data → PATH 그리고, Notepad2.ini를 찾지 못하면 프로그램 설치 폴더에 Notepad2.ini를 생성하려고 한다. 따라서, 설정파일을 저장하려면 UAC를 안 쓰거나 관리자 권한으로 실행해야 되는 것이다.워낙 많은 사용자들이 UAC를 끄고 살기 때문에 대체로 잘 되는 건 사실이지만… 물론, 다른 방법으로는 ..
이전 포스트에서 예고(?)했듯이, Notepad2-mod의 새 버전이 즉각 튀어나왔다. 이번 버전에서는 Scintilla가 3.3.9로 업데이트 되었다. 3.3.8에는 외부 lexer 연결시 다운되는 치명적 버그가 있었는데, 사실 수정된 내용은 몇 줄 되지 않는다. 물론 그 몇 줄이 굉장히 심각한 내용이란 걸 모르는 바는 전혀 아니고, 그냥 그렇다는 얘기다. r902는 아래 링크에서 다운받을 수 있다. 그리고, 언제나 그렇듯이, 한/영 x86/x64 버전이 모두 들어있다.
메모장2-mod의 2014년 첫번째 공개.무엇보다 2014년을 맞이하여 아이콘이 리뉴얼되었다. 이번에도 메모장2-mod의 아이콘을 디자인해주신 c6248님께 감사드립니다. 꾸벅. 이번에 수정된 내용은 아래와 같다. - 아이콘 교체- Scintilla를 3.3.8로 업데이트- CSS 키워드에 text-overflow 추가 r901은 아래 링크에서 다운받을 수 있다.그리고, 언제나 그렇듯이, 한/영 x86/x64 버전이 모두 들어있다.
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. 2013/01/12 - 키보드 보안 프로그램을 찾아서 지우는 프로그램 공개 근 1년만의 업데이트... 뱅킹이 끝나고나면 설치되는 활동적 X 기반의 쓰레기들을 하나씩 제거해주는 프로그램을 살짝 업데이트했다. 바로 위의 링크에서 다운받을 수 있으며, 이번 버전 역시 실행한 뒤 모두 제거 버튼만 클릭하면 된다. 이번 버전에서 살짝 바뀐 부분은 아래와 같다. - 제거 대상 프로그램 추가 (IssacW**, KeySh*** Ce** 등) - 철자오류 수정 (Elemenator → Eliminator) - 컴파일러를 Visual Studio 2012 Update4로 교체 - 아이콘 변경 본 프로그램이 제거하는 프로그램은 아래와 같다. [키보드 보안 프로그램]..
이 블로그에서 공개되는 메모장2 mod는 XhmikosR이 공개하는 Notepad2-mod를 기반으로 한다. 하지만, (당연하게도) 한글 IME 처리부분 수정을 포함하여 다양한 수정이 적용되어있다. 지금까지 적용한 수정 내용들을 정리해봤다. 1. 한글 입력 IME가 정상적으로 동작하도록 수정(관련 포스트)말이 필요없는 한글화 버전의 가장 기본이며 가장 중요한 기능임.단, 현재 배포되는 버전의 코드는 위 포스트와는 조금 다름. 2. 젠코딩 입력 기능 추가(관련 포스트)굉장히 간단하게 HTML/XML 코드를 구성해주는 젠코딩 기능을 추가했음. 3. 포트란 스키마 추가(관련 포스트)아주 가끔 쓸 일이 있던 포트란 스키마를 추가했음.현재는 나도 아예 안 쓴다는 함정이… 4. 날짜/시간 삽입시 순서를 날짜-시간으..
2013/12/01 - Notepad2-mod r887 (7254c1a) 한글화 버전 공개 지난 포스팅에서 언급한 문제를 해결한 기념으로 포스팅. 해결이라고 거창하게는 썼지만, 사실 해결까지는 아니고, 64비트 버전은 WDK로 컴파일한 것을 공개하기로 했다. 따라서, 이번 버전부터는 윈도우 8.1을 완벽하게 지원한다. 수정된 내용은 아래와 같다. - x86 버전은 VS2012 update4로, x64 버전은 WDK 7.1로 컴파일 - Scintilla를 3.3.7 [c818dc]로 업데이트 r891은 아래 링크에서 다운받을 수 있다. 그리고, 언제나 그렇듯이, 한/영 x86/x64 버전이 모두 들어있다.
2013/12/01 - Notepad2-mod r887 (7254c1a) 한글화 버전 공개 이전 포스트에서 얘기했듯이, Notepad2-mod엔 묘한 버그가 하나 있다.32비트 어플리케이션에서 64비트 Notepad2-mod로 드래그앤드롭을 하면 오류가 발생한다는 것이다. 이 문제는 사실 몇 가지 조건이 만족되는 경우에만 발생한다. 1. Windows 8.1에서만 발생함 (Win7은 발생하지 않고, Win8은 확인하지 못함)2. 32비트 Shell에서만 발생함 (Total Commander, XYplorer 등)3. Visual Studio, ICL 로 컴파일할 때만 발생함 (WDK에선 발생하지 않음) 무엇이 문제인지 분석하기 위해 드래그앤드롭을 처리하는 부분의 소스를 찾아봤다. case WM_DROPF..
2013/09/23 - Notepad2-mod r876 (89d33e9) 한글화 버전 공개 특별한 개선 사항은 없지만, Windows 8.1을 정식 지원한다고 하니 덩달아 공개… 그러나… 일단, 수정된 내용은 아래와 같다. - 컴파일러를 Visual Studio 2012 Update4로 변경- manifest에 Windows 8.1 ID 포함 그렇다. 공식적으로 Windows 8.1을 지원한다(고 한다). 그런데, 사실은 문제가 살짝 있다.64비트 Windows 8.1에서 32비트 어플을 통해 64비트 메모장2 mod에 드래그 앤 드롭을 하면 오류가 발생한다.상세한 내용은 별도로 포스팅 예정인데, WM_DROPFILES를 제대로 처리하지 못하는 것 같다. 이 문제는 이 버전만의 문제는 전혀 아니며, 이전..
Static duration means that the object or variable is allocated when the program starts and is deallocated when the program ends.- MSDN iTrans 버그 리포트 중에 아주 이상한 내용을 하나 들었다.같은 자막을 두 번 변환하면 가 추가된다는 것… 제보해주신 분들과 연락을 해보니 static으로 선언한 어떤 부분의 데이터가 깨지는 게 원인이었다. bool CSami2Srt::convISO88591(LPCTSTR lp, TCHAR &tc, int &len){ static LPCTSTR lpEntityNames[] = { _T("quot"), _T("apos"), _T("amp"), _T("lt"), _T..
어플이 실행되는 OS의 버전을 인식하게 하려면 GetVersionEx() 함수를 쓰면 되었다. 그런데, Windows 8.1에서는 여러가지 이유로 이 함수를 deprecate 시켰다. 대신 VersionHelpers라는 API를 통해 훨씬 간단하게 OS 버전을 확인하도록 만들었다. 그럼에도 불구하고, 굳이 GetVersionEx()로 버전을 정확히 인식하려면 매니페스트에 몇 줄을 추가하면 된다. 위와 같은 파일을 하나 만들어 적절한 위치에 저장한 뒤에 이를 추가 매니페스트로 지정하면 끝임. 덧. 원래 iTrans의 문제를 해결하려고 시작했지만, 정작 OS 정보는 레지스트리에서 직접 읽었다는 게 함정
iTrans에서 함께 배포하는 mp4box의 버전은 0.4.6-DEV이다. 이 프로그램은 변환 최종단계에서 비디오와 오디오/자막을 합치는(muxing), 가장 중요한 툴이다. 그런데, 현재 정식 배포되는 버전은 0.5.0이고, 0.5.1이 하루에도 몇번씩 업데이트되고 있다. 그럼에도 불구하고, 구버전을 함께 배포하는 이유는 간단하다. 최신버전들에선 구버전에 없던 오류가 계속 발생하기 때문이다. 그간 만난 굵직한 오류들은 대략 다음과 같다. - avi+AC3 오디오 파일에서 비디오를 추출하지 못함 - 5.1ch AAC 오디오를 muxing하면 결과 파일을 아무런 프로그램으로도 읽을 수 없음 너무나 흔하게 발생하는 상황인데, 이를 처리하지 못한다. 어쩌면 프로그램이 안정화가 덜된 게 아니라, 핵심 개발자가 ..
Visual Studio 2010/2012에선 도구상자가 분실(?)되는 사건이 종종 발생한다. 이 문제를 해결하려면 다음 순서를 따르면 된다. 1. 도구 상자 다시 설정 - 도구 상자에서 오른쪽 클릭을 한 뒤 도구 상자 다시 설정(E)를 클릭한다. 2. Visual Studio 종료 3. 탐색기에서 다음 위치로 이동해 .TBD 파일들을 삭제 [사용자 폴더]\AppData\Local\Microsoft\VisualStudio\[VS버전] 4. 레지스트리 편집기에서 다음 키들의 내용을 삭제 HKCU\Software\Microsoft\VisualStudio\[VS버전]\ToolboxControlsInstaller_AssemblyFoldersExCacheHKCU\Software\Microsoft\VisualStu..
Visual C++에서 개발하다 보면 리소스 ID가 종종 꼬이는 문제가 생긴다.리소스 ID를 수작업으로 정리하며 이런 툴을 하나 만들어볼까 했는데… 아니나 다를까 이미 있었다. Riverblade에서는 Code Project에는 VC 5.0/6.0/.Net 용을 2001년에 공개했고…이후, 이를 ResOrg라는 이름으로 업그레이드해서 상용 버전으로 공개했다. 상용 버전은 플러그인 형태로 VS2012에도 적용할 수 있고, 공개 버전 역시 VS2012에서 사용 가능하다.
2013/08/06 - Notepad2-mod r875 (c85ca22) 한글화 버전 공개 (비공개로 전환) 지난 릴리즈를 비공개처리한 뒤 다시 1달여만에 새 버전을 공개함. 수정된 내용은 아래와 같다. - Scintilla를 3.3.5로 업데이트(물론, 지난 포스트에서 언급된 내용 포함)- 한글 입력 부분 코드 개선- 컴파일러를 Visual Studio 2012 Update 3으로 교체- Shift+마우스휠에 가로 스크롤 기능 지정- Ctrl+Shift+마우스휠에 페이지 스크롤 기능 지정 r876는 아래 링크에서 다운받을 수 있다.그리고, 언제나 그렇듯이, 한/영 x86/x64 버전이 모두 들어있다.
앞 포스팅에서도 얘기했듯이, VCi가 iTrans로 이름을 바꿨다.그리고, 수많은 변화가 있었다. 그 중 굵직한 변화들을 정리하면 아래와 같다. 1. 일반 사항 - 개발 환경을 Visual Studio 2012로 변경 - FFMPeg을 1.2로 업데이트, MediaInfo를 0.7.54로 업데이트 ※ FFMpeg 확인시 .\fonts\fonts.conf 및 빌드 날짜 확인 - MkvExtract, m2ts, norm.exe 제거 - 지원 형식에 real media, ts, tp, m2ts 추가 - 레지스트리 저장 위치 변경 (HKCU\Software\BLUEnLIVE\iTrans) - 싱크를 추가로 보정하는 DC 파일 생성 기능 제거 - 블로그용 비디오 생성 기능 제거 - 인식하는 윈도우 버전에 8.1 ..
난 여전히 VC++ 6.0을 사용해왔다. 컴파일된 실행파일을 어떤 윈도우(물론 2K 이상)에서도 실행할 수 있다는 점이 가장 큰 이유다. 물론, 정적 라이브러리에서 MFC 사용으로 설정하면 되지만, 실행파일의 크기가 너무 커진다. 그런데, 이제 보니 컴파일러 설정 등을 조금만 손대면 VS2005 이상에서도 유사한 결과를 만들 수 있었다. 우선, targetver.h을 수정한다. XP에서 동작하는 프로그램을 원하면 이 정도면 된다. #pragma once #include #define _WIN32_WINNT _WIN32_WINNT_WINXP #include 그리고, 프로젝트 속성에서 다음 부분을 손대면 된다. - 일반 → MFC 사용: 표준 Windows 라이브러리 사용 - C/C++ → 코드 생성 → 런..
그동안 10년 넘게 생사고락을 함께한 Visual C++ 6.0을 버리기로 했다. 새로운 파트너는 Visual Studio 2010. 그런데, VS2010은 그냥 쓰기엔 뭔가 살짝 아쉬워서 몇 가지를 준비해야 했다. 1. 인텔리센스 끄기 뭔가를 많이 도와준다는데, 너무 느리다. 마치 허접한 컴퓨터의 보안을 도와주기 위해 설치한 nProtect와 키보드 보안 프로그램의 느낌. 인텔리센스를 끄려면 메뉴에서 Tools → Options → Text Editor → C++ → Advanced를 찾아가서… Disable Database와 Disable IntelliSense를 False로 설정한다. ※ 이렇게 인텔리센스를 끄면 리소스뷰와 클래스뷰가 제대로 나오지 않는 치명적 버그가 있음. ㄷㄷㄷ 2. 빌드 넘버 ..
2013/07/08 - Notepad2-mod r865 (12e4cc8) 한글화 버전 공개 한 달 사이에 r875까지 업데이트가 되었다. 수정된 내용은 아래와 같다. - Scintilla 라이브러리를 3.4.0(6ccaef)으로 업데이트(지난 포스트에서 언급된 내용이 포함되어있음)- 컴파일러를 Visual Studio 2010 SP1으로 교체- Shift+마우스휠에 가로 스크롤 기능 지정- Ctrl+Shift+마우스휠에 페이지 스크롤 기능 지정 r875는 아래 링크에서 다운받을 수 있다.그리고, 언제나 그렇듯이, 한/영 x86/x64 버전이 모두 들어있다. ※ Scintilla 3.4.0의 버그때문에 Scintilla 3.4.0 및 notepad2-mod r875가 제거돼 이 배포본도 비공개 처리