이미지 리샘플링 정도로는 1GB가 넘는 대용량을 할당받는 경우는 만나지 않을 줄 알았다. 그런 경우는 보기 드문 특이한 경우라고 생각했다… 그런데, \(10,000 \times 10,000\) 이미지를 막상 만나보니 그렇게나 특이한 경우가 아니었다. 일단 이미지는 픽셀당 4개의 요소(RGBA)로 구성되어 있다. 즉, \(10,000 \times 10,000 \times 4 = 400,000,000 = 400MB\) 개로 구성되어 있다. 그리고, 내가 쓰는 리샘플링 코드는 float 단위에서 SIMD2를 사용해서 처리한다. 따라서, \(400MB \times sizeof(float) = 400MB \times 4 = 1.6G\)를 사용한다. Visual Studio에서 이렇게 큰 메모리를 사용할 때는 큰 ..
오디오 파일들을 모아서 아이폰에 넣다보면 관리가 좀 아리송해지는 지점이 나온다. 일단 태그다.아이폰은 파일명은 무시하고, 태그를 중심으로 오디오를 관리하는데, 소스가 서로 다른 경우에 태그가 꼬이는 경우가 허다하다.이런 경우에 가장 편하고 유용하게 쓸 수 있는 프로그램이 바로 Mp3tag다. 프로그램 이름은 비록 Mp3tag지만, 이 프로그램은 mp4 비디오/오디오의 태그도 깔끔하게 관리해준다.파일명에서 태그를 재구성할 수도 있으며, 태그를 이용해서 파일명을 일괄적으로 변경하는 것도 가능하다.커버아트 역시 손쉽게 변경하거나 추출할 수도 있다. 태그와 커버아트를 일괄적으로 변경하는 것도 물론 가능하다.게다가 이 프로그램은 무료다. 태그도 태그지만, 들을 때 거슬리는 건 음량이다.서로 다른 앨범들의 노래들을..
헤비메탈의 아이콘 메탈리카에서 최근(2016.11.18) 10집 앨범인 Hardwired... To Self-Destruct를 발표했다. 그리고, 앨범 홍보 차원으로 메탈리카 스타일의 로고를 생성해주는 사이트를 개설했다: Generate your own Metallica logo.글자를 입력하면 로고를 생성해주고, SNS에 올리거나 다운받을 수도 있다.아래는 이 사이트에서 만들어본 샘플… 덧1. 해당 앨범의 타이틀 곡 뮤직비디오가 아래와 같이 유튜브에 공개돼 있다… 덧2. 본 앨범은 애플 뮤직에도 올라와있다…
2016/10/30 - Depixelizing Pixel Art(픽셀 제거 픽셀 아트) 소개 이전 포스팅에서 소개했던 Depixelizing Pixel Art는 상당한 고품질의 픽셀 아트 확대 능력을 보여줬다. 벡터 포맷인 svg로 만들어주기 때문에 사실상 무한히 큰 파일을 만들 수도 있다. 하지만, 너무 느리다… 찾아보다 유사한 품질의 비트맵 이미지를 생성하는 xBRZ라는 알고리즘을 찾았다. 최대 6배까지 확대를 해주는 알고리즘으로, 아래와 같은 이미지를… 거의 실시간으로 아래와 같이 확대해준다. Depixelizing Pixel Art의 결과와 비교해보면 상당히 비슷하다는 것을 느낄 수 있다. 물론, 전술했듯이 이 쪽은 벡터라 얼마든지 더 크기를 키울 수 있다는 차이가 있다. xBRZ은 source ..
여러 사람의 손을 거친 MS Excel 파일에선 온갖 예측할 수 없는 일들이 벌어지곤 한다.그 중 특이한 경우 중 하나가 스타일이 깨지는 것. 보통의 Excel 파일에서 스타일 탭을 클릭하면 아래와 비슷한 모습을 볼 수 있다. 하지만, (특히 회사에서) 여러 사람의 손을 거친 파일을 보면 저렇지 않다. 종종 이와 같이 전혀 정체를 알 수 없는 스타일들이 잔뜩 들어있는 걸 볼 수 있다.심지어 일부는 글자가 깨져 적용할 수도, 삭제할 수도 없는 경우를 만날 수 있기도 하다.셀을 합치려고 해도 스타일이 너무 많다는 이유로 셀도 합칠 수 없는 사태가 벌어지기도 한다. 이런 경우에 기본 스타일만을 남기고 몽땅 삭제하려면 간단하게 아래와 같은 매크로를 실행하면 된다. Sub StyleKill() Dim styT A..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. PC뱅킹을 하고나면 PC가 미친듯이 느려진다.다름아닌 그 놈의 보안을 위해 설치했다고 하는 쓰레기들 때문이다. 더군다나, 그 놈들을 깐다고 무슨 보안이 강화되는 것도 아니다.뭔가 잔뜩 설치하지만, 보안과는 거리가 먼 활동적엑스(Active-X) 기반의 프로그램들이다.게다가, 데이터는 https 채널이 아닌 http채널에서 돌아다닌다. 국내 최대 규모를 자랑하는 K* 은행에 처음 접속하면 대략 아래와 같은 훈훈한 화면을 만난다. 단 하나의 은행에 접속하는 것만으로 정체를 알 수 없는 프로그램이 5개나 깔리는 것이다.그러니, 뱅킹 한두군데만 하면 대략 PC는 아래와 같은 꼴이 된다. 아는 사람의 눈에만 보이겠지만, 잘 들여다보면…악명높은 nProtec..
2013/12/01 - 이해가 되지 않는 Notepad2-mod의 드래그앤드롭 오류 몇 번 애기한 이슈인데, 메모장2 mod에는 이상한 오류가 있다.32비트 어플에서 64비트 메모장2 mod로 드래그앤드롭을 하면 오류가 발생한다는 것.게다가 이 문제는 윈도우 7에선 발생하지 않고, 윈도우 8 이상에서만 발생해서 더욱 아리송했다. 그런데, 블로그 구독자분께서 단비와도 같은 링크를 답글로 달아주셨다. 스택오버플로우에 이 문제에 대한 해답이 올라와 있었던 것이다! 대략의 내용은 아래와 같다. 1. 이 문제는 순전히 윈도우 8 이상의 버그에 의한 것임2. 컴파일 시 윈도우 8 이상에서 제공되는 High Entropy ASLR을 비활성화하면 간단히 해결 가능3. 잃어버린 HDROP의 상위 32비트 값을 찾아내려면..
이전 글에서 계속… 7. #define VALENCE 수정 pixel_grid.cpp 파일에 아래와 같이 VALENCE()가 정의되어 있다. #define VALENCE(neighbor_mask) __builtin_popcount(neighbor_mask) 이를 아래와 같이 수정한다. #ifdef _MSC_VER #include #define VALENCE(neighbor_mask) __popcnt(neighbor_mask) #else #define VALENCE(neighbor_mask) __builtin_popcount(neighbor_mask) #endif 8. boost lib 폴더 지정 Solution Explorer - depixelize의 설정에서 Library Directories에 아래 ..
이전 글에서 계속… 4. depixelize 컴파일 앞에서도 썼듯이, 몇 가지 튜닝을 해야 정상적으로 컴파일할 수 있다.우선 다운받은 파일을 적절한 폴더에서 압축을 풀면 아래와 같은 구성을 볼 수 있다. 여기서 우선 src 폴더에 저장된 CMakeLists.txt 파일에 Boost 및 OpenCV의 폴더 정보를 추가하여 아래와 같이 수정한다. cmake_minimum_required(VERSION 2.8) project(depixelize) set(BOOST_ROOT c:/_lib/boost_1_62_0) set(BOOST_INCLUDE_DIRS c:/_lib/boost_1_62_0/boost) set(BOOST_LIBRARYDIR c:/_lib/boost_1_62_0/stage/win32/lib) se..
2016/10/30 - Depixelizing Pixel Art(픽셀 제거 픽셀 아트) 소개 앞의 포스트에서 소개한 Depixelizing Pixel Art는 실제로 논문을 읽은 뒤 구현하기엔 쉽지가 않다.뒤져보니 Cary Yang이라는 분께서 C++로 구현한 결과를 깃허브에 올려두셨다. 그런데, 막상 이 소스를 Visual Studio 2015로 컴파일해보려니 쉽지 않다.Boost와 OpenCV를 사용해서 작성되었기 때문에 이를 미리 설치해야 하고, 몇 가지 튜닝이 필요하기 때문이다. 필요한 도구는 Boost, OpenCV 그리고, cmake.우선 각각을 다음 위치에서 다운받는다. - cyang1 / depixelize (github) - Boost 1.62.0 - OpenCV (github)- cma..
이미지를 리사이징할 때 사용하는 필터들에는 다양한 종류가 있다.그 중에서도 가장 안 쓰이는 녀석은 Nearest Neighborhood. 하지만, 이게 특별히 쓰이는 경우가 있는데, 바로 레트로 게임을 고해상도에서 돌리는 경우… 그런데, 이쪽을 찾아보시던 한 트친님이 재미난 정보를 알려주셨다. 픽셀 제거 픽셀 아트(Depixelizing Pixel Art)라는 알고리즘이 있다는 것. 레트로 게임의 저해상도 이미지를 고해상도로 리사이징하는데, 무려 아래와 같은 결과를 만들 수 있다는 것이다. 위 링크의 논문에 상세하게 설명이 되어있는데, 개략의 내용은 아래와 같다.연결되는 픽셀을 이어서 그래프를 그린 뒤 예쁘게 재구성하는 것. 이를 이용하여 슈퍼 마리오 게임을 재구성한 동영상이 유튜브에 올라와있다.
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. 디카 뿐만 아니라 스마트폰, 태블릿 등이 보급되면서 카메라로 활용할 수 있는 장비는 굉장히 많다. 그런데, 사진을 찍고서 PC 한 대로 모으고 나면 정리가 쉽지 않다.Exif의 날짜순으로 정렬해주는 뷰어도 있긴 하지만, 많은 뷰어들은 파일명 순으로 보여준다.그러다보니 사진을 보려면 촬영시간 순이 아니라 카메라 기종별로 보게 되는 경우가 많다. JPEG 포맷의 이미지 파일에는 Exif 정보가 들어있다.이 정보에는 해상도, 플래쉬 여부, 초점 거리, ISO 감도 등과 함께 촬영일자가 포함된다. FPO는 이 Exif에 기록된 촬영일자 순으로 파일명을 수정해주는 프로그램이다. 이 프로그램의 기능은 아래와 같다. - Exif에 기록된 촬영일자 순으로 파일명..
비교적 최근에 새롭게 추가된 최상위 도메인 중에 .kim이 있다.마침 검색해보니 따느님 이름의 도메인은 아직 무주공산이다. 이번 도메인은 Amazon Route 53에서 구입하기로 했다. 도메인을 구입하고 티스토리 블로그 및 네이버 웍스에 연결하는 과정은 대략 아래와 같다. Amazon 계정을 생성한 뒤에 AWS Console 화면에서 Route 53을 선택한다. 화면에 보이는 Register domain 메뉴에서 원하는 도메인을 등록한다.비용은 15$라고 하는데, 부가세 포함하면 16.5$. 결재를 마치고 나면 이제부터 도메인에 대한 설정을 해야 한다.우선 Hosted zones을 선택. 여기서 Hosted Zone을 생성한다.Comment는 적절히 입력하면 되고, Type는 기본값인 Public Ho..
1. 발단 모든 일에는 시작이 있는 법… 발단은 메모장2 mod 포스팅에 달린 댓글 하나였다. 애초에 이 기능을 제대로 써볼 생각도 없었던지라 생각도 못했는데, 소스를 읽다보니 뭔가 많이 이상하다.이 기능은 기본적으로 유니코드 → UTF-8 → UrlEscape 순으로 변환하는 게 일반적이다. 하지만, Edit.c의 해당 부분 코드는 아래와 같다. ////////////////// // 인코딩 ////////////////// cchTextW = MultiByteToWideChar(cpEdit,0,pszText,iSelCount,pszTextW,(int)LocalSize(pszTextW)/sizeof(WCHAR)); //(중략) cchEscapedW = (int)LocalSize(pszEscapedW) ..
메모장2에는 URL Encode/Decode 기능이 있다.그런데, 이 기능이 제대로 구현되지 않은 것을 확인했다. 실제로 이 기능은 유니코드 → UTF-8 → UrlEscape 순으로 변환해야 되는데, UTF-8 변환 부분이 누락되어있다.원작자인 Florian Balmer 님께 여쭤보니 ToDo 목록에 추가하겠다는 답변. 이 기능이 포함된 버전을 공개한다. 아래 링크에서 다운받을 수 있다.언제나 그렇듯 한/영 x86/x64 버전이 모두 들어있다.
이번 버전의 메모장2 mod는 Scintilla v3.6.7 업데이트를 포함한 몇 가지 업그레이드가 반영되었다. - Scintilla v3.6.7 업데이트 반영- NSIS v3.0의 키워드 업데이트- HTML의 img 태그 속성 중 srcset 추가 - 화면 DPI가 100%로 설정된 경우가 아니라도 해상도를 제대로 인식하도록 수정 아래 링크에서 다운받을 수 있다.언제나 그렇듯이 한/영 x86/x64 버전이 모두 들어있다.
excel에서 두 날짜 간의 연도가 차지하는 비율을 계산하는 함수는 YEARFRAC()이다. 그런데, 이 함수가 정확히 어떻게 동작하는지를 찾아보니 제대로 설명된 곳이 별로 없다. YEARFRAC(, , ) 앞의 두 인자는 날짜이고, 세번째 인자인 basis는 계산 유형을 지정하는 것이다. basis에는 0~4가 지정될 수 있고, 생략시는 0. 그런데, 0일 때의 동작방식이 뭔가 모호하다. 한 달을 30일로 가정하고 계산한다는데, 보통 아래와 같은 식으로 표현한다. \(yearfrac = \frac{360 \times(Y_2-Y_1)+30 \times (M_2-M_1)+(D_2-D_1)}{360}\) 즉, 1년을 360일, 한 달을 30일로 가정하고 계산하는 것이다. 그런데… 실제로 해보면 다른 결과가 ..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. 2016/06/06 - 간단히 만들어본 모든 미디어 → mp3로 변환 툴 v2.10a 업데이트 2011년에 모든 미디어를 mp3/m4a로 변환하는 프로그램을 간단히 만들었었다. 물론 iTrans와 유사하게 ffmpeg 등의 프론트엔드. 당시엔 단순히 오디오로 변환하는 것만 집중해서 간단히 만들었었는데, 그간 iTrans에 적용했던 기술들을 좀 추가하기로 했다. 임시파일 생성을 최소화하고 태그 정보를 복제하는 등의 업데이트를 적용했다. 또한, PC에 iTunes가 설치된 경우 기존의 neroAacEnc 외에도 iTunes를 사용하여 AAC로 인코딩하는 기능을 추가했다. 이 프로그램에서 지원하는 미디어 파일의 종류는 다음과 같다. - 비디오: avi,..
회사에서 Visual Studio 2010을 쓰는데, 갑자기 컴파일 도중에 아래와 같은 화면이 뜨면서 컴파일에 실패했다. HiBS ONE Compont 등록 프로그램이라니… 이 놈의 정체를 뒤지다보니 C:\Windows\SysWOW64에 설치된 rc.exe즉, resource compiler rc.exe 대신 이 놈이 실행되는 아햏햏한 경우인 것이다. 이게 뭔지는 모르겠지만, 회사에서 일괄적으로 설치한 프로그램의 일부인 것 같다.난 안 쓰는 프로그램으로 추정되어 파일명 변경으로 무력화. 그런데, 또 컴파일 오류가 나온다. 1>Link: 1> 코드를 생성하고 있습니다. 1> 코드를 생성했습니다. 1>LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못..
2년 쯤 전에 썼던 포스트에 이은 포스팅 1. ffmpeg는 내부적으로 pcm_f32le를 사용 기본적으로 ffmpeg를 사용해 AAC로 변환할 때는 아래와 같이 사용한다. ffmpeg -i test.mkv -vn -acodec pcm_s16le -f wav - | neroAacEnc -lc -if - -ignorelength -of out.aac 그런데, ffmpeg은 내부적으로 pcm_f32le(32비트 부동소수점)을 사용한다. 특히, 추가로 오디오 필터를 적용할 때는 pcm_f32le를 사용하는 것이 좋다. 더불어, neroAacEnc는 pcm_f32le를 잘 인식한다. 즉, 아래와 같이 사용하는 것이 여러모로 더 낫다. ffmpeg -i test.mkv -vn -acodec pcm_f32le -f..
이전 포스트 "GIF 파일의 크기를 더 줄여보자"에서 간단히 언급한 GIFLossy의 GUI를 구현했다. 지원되는 옵션은 -O, --lossy, --rotate* 세 가지다. 주요 기능은 아래와 같다. 1. 소스 파일/폴더는 드래그 앤 드롭으로 지정 가능 2. 폴더를 떨어뜨리면 폴더 전체를 최적화하고, 파일을 떨어뜨리면 지정된 파일을 최적화 3. -O, --lossy, --rotate 세 가지 옵션을 지정 가능함 4. 목표 파일 크기를 지정하면 --lossy로 지정하는 강도를 계속 높이면서 목표 파일 크기에 맞출 때까지 최적화를 반복 즉, 10MB에 맞추면 티스토리에 올릴 수 있을 때까지 시도함 5. gifsicle.exe 와 gifscicle64.exe가 모두 들어있으며 OS가 64비트이면 gifsic..
GIF 포맷이 세상에 나온지도 거의 30년이 되어간다.특허 문제 등으로 시끄럽기도 했지만, 이제 관련 특허도 다 기간이 만료되고, 누구나 쓸 수 있는 포맷이 되었다. 시간이 지나면서 PNG가 GIF를 거의 대체할 수 있고, 유일하게 남은 Animated GIF 기능도 대체 포맷들이 많이 나왔다.하지만, 그래도 GIF는 여전히 많이 쓰이고 있고, 파일의 크기를 더 줄일 수 있는 방법들도 연구되고 있다. 이러한 연구 중 가장 대표적인 프로젝트는 gifsicle이다. 특히 Animated GIF에 대해 프레임 간 압축시 이전 프레임과 겹치는 부분을 비움으로서 시간적 압축 개념을 추가한 것이다.소스는 Gitub에 공개하고 있음. 여기에 화질을 조금 더 떨어뜨리는 기능을 추가해서 파일의 크기를 더 줄이는 프로젝트..
이전 버전(r977)부터 계속 시도해오던 작업은 (johnsonj님이 수정해오신) IME 인라인 및 가상공백을 최적화하여 적용하는 것이었다.드디어 딱 필요한 만큼만 가상공백을 지원하도록 수정한 버전을 공개한다. 이 버전에서는 평소에는 가상공백 모드가 동작하지 않고, Alt+드래그 또는 Ctrl+클릭으로 다중선택할 때만 동작한다.또한, 설정 메뉴에서 IME 인라인을 옵션으로 선택하던 부분을 제거하고, 항상 이렇게 동작하도록 했다. 아래 링크에서 다운받을 수 있다.언제나 그렇듯이 한/영 x86/x64 버전이 모두 들어있다.
지난 포스트에서 공개한 버전에 비해 일부 기능이 수정된 버전을 공개한다.다음의 내용이 추가로 반영되었다. - IME 인라인 모드에서도 마우스 클릭시에는 가상 공백 모드가 동작하지 않도록 수정 - 64비트 버전은 Windows XP를 지원하지 않도록 변경 (32비트는 그대로 XP를 지원함)- Visual Studio 2015 Update 3로 컴파일 환경 변경- 툴바 아이콘 살짝 업데이트 (언제나 C6248님께 감사드립니다) - 페이팔로 기부 기능 추가 ☜ 굉장히 중요 아래 링크에서 다운받을 수 있다.언제나 그렇듯이 한/영 x86/x64 버전이 모두 들어있다.
이제부터 PayPal을 통한 후원을 받기로 했습니다.블로그 상단을 보시면 아래와 같은 후원 버튼이 있습니다. 본 블로그에서 다운받은 프로그램들을 유용하게 사용하신 분들의 많은 후원을 기다리겠습니다. 꾸벅. 덧1. PayPal 결제 버튼 만드는 순서는 아래와 같음 판매 도구에서 판매자 기본설정 클릭 PayPal 버튼의 시작하기 클릭 PayPal 결제 버튼 생성 덧2. 전화 상담 번호가 틀려있음 아래 화면과 같이 65-6510-4650으로 나오는데, 이건 싱가포르 전화번호임.02-3483-1131로 전화해야 함.이 부분은 홈페이지 업데이트 과정에서 추후 갱신될 예정이라고 함. 덧3. 은행 계좌번호 등록시 전화 상담 필수임. 온라인으로만 처리하기엔 뭔가 기능이 다소 미흡함