2017/03/18 - Guetzli: 구글이 만든, mozjpeg보다 더 압축률이 높은 jpeg 라이브러리 이전 포스팅에서 Google에서 공개한 Guetzli를 소개했다. mozjpeg에 참가하는 pornel 씨는 120배 느리다는 얘기를 했지만, 어쨌거나 동작도 하고 쓸만한 것 같다는 생각이 들었다. 그런데, 어느 정도 더 향상이 있는지 확인을 해보고 싶어졌다. 동일한 원본을 놓고 처리한 뒤 파일 크기와 PSNR을 비교함으로써 성능의 차이를 확인해보기로 했다. 대상 이미지는 아무런 기준 없이(ㅋㅋㅋ) 해상도 별로 3개를 선정했다. 1. 작은 크기(635×443) / 51.6KB 2. 중간 크기(3264×2448) / 1.17MB 3. 큰 크기(9803×6998) / 2.52MB 이 3개의 이미지에 ..
최근에 개발된 이미지 포맷이 많지만, 여전히 널리 쓰이는 포맷은 jpeg와 png이다. 아무래도 '바퀴를 다시 발명하는 것을 싫어하는' 본능도 한몫 했을 것 같고… 그리고, jpeg 압축률의 최강은 mozjpeg이었다. 적어도 어제까지는… 그런데, 구글이 또 뭔가를 저지른 것 같다… 2017.3.16 구글은 블로그를 통해 Guetzli라는 라이브러리를 공개했다. jpeg 표준을 만족시키는 범위에서 더욱 높은 압축률을 보여주는 솔루션이다. 그런데, 이전의 Zopfli와 Brotli가 그랬듯, 이번에도 빵 종류에서 이름을 따왔다. 아직 초기 단계라 그런지 정상적으로 동작만 하는 수준이고 무척이나 느리다. (mozjpeg보다 120배 느리다고) 직접 돌려보니 대략 아래와 같은 결과를 볼 수 있었음. 1. 느린..
아래아 한글(이하 한/글)이 처음 알려진 건 월간지 '89년 1월호였다.이찬진 씨가 '글자 모양에 관한 글'을 연재하면서 '곧 워드프로세서를 공개할 예정'이란 내용을 언급하면서였다. 이후 윈도우 용 한/글이 출시되면서 뭔가 어색함이 느껴지기 시작했는데, 다름 아닌 글꼴 처리.이찬진 씨가 썼던 글 제목이 무색하게 글꼴을 처리하는 것이 어색하기 짝이 없었다.'95년 3월에 윈도우용 3.0b가 출시된 이후 무려 22년동안 이 문제는 해결될 기미가 보이지 않았다. 예컨데, 같은 글꼴(KoPub 돋움체)을 한/글과 메모장2에서 각각 적어보면 아래와 같다. 힌팅 처리를 해서 뭔가 그럴싸한 메모장2와 달리 한/글에서는 굵기가 들쑥날쑥이다. 이 부분에 대해 한글과컴퓨터 사에 정식으로 수정을 요청해봤다.하지만, 돌아오는..
개인용으로 NAS를 구축하는 많은 분들은 시놀로지 제품을 사용한다. 하지만, 가난한(?) 난 그런 거 없다… 이번에 친구가 사용하던 ipTIME NAS3를 하나 업어오게 됐다. NAS3는 나름 토렌트도 지원되고, WebDAV도 지원되는, 그야말로 될 건 다 되는 저가형 NAS이다. 그리고, ipTIME 제품 답게 한 2년 쓰고 나면 수시로 다운이 되는 전원부 결함도 그대로 갖고 있는 제품이다. 인터넷을 검색해보니 의외로 손쉽게 근본적인 수리가 가능하다. 분해해서 보드에 달린 모든 커패시터를 교체하는 것. 일단 검은색 등판을 분리하면 아래와 같은 모양을 볼 수 있다. 조심조심 뜯어내면(?) 아래와 같이 기판의 윗면을 볼 수 있다. 교체해야 할 커패시터는 총 10개. 10V 220㎌ 6EA 16V 220㎌ ..
트위터에 재미있는 문제와 답이 올라왔었다. 컵라면 뚜껑을 몇 도로 접으면 가장 부피가 클 것인가... 식과 풀이는 틀린 데가 없지만, 그래도 이걸 Wolfram Alpha에 집어넣으면 어떻게 나오나 봤다. 참고로, 쿼리에는 아래와 같이 적으면 된다. V(θ) = pi/3*((2*pi-2θ)/(2*pi)*r)^2*sqrt(1-(((2*pi)-2θ)/(2*pi))^2)*r 위의 풀이에 나와있는 식을 그대로 입력하면 아래와 같이 정리해준다. 그리고, 아래와 같이 자동으로 최대값을 구해준다. \(r \neq 0\)이므로 \(\theta = \pi - \sqrt { \frac 2 3 } \pi\)일 때 부피의 최대값은\(V _{max} = \frac {2 \pi r^3} {9 \sqrt{3}}\)가 나온다. 그리..
모 과학 팟캐스트를 듣다가 반가운 이름이 하나 나왔다. 그레이스 호퍼 제독. 사실, 컴돌이들에겐 호퍼라는 이름은 최초의 컴파일러 개발자, 코볼의 어르신 정도로 유명한 이름이다.하지만, 이 분의 업적은 그보다는 더 훨씬 더 많다. 반가운 마음에 생각나는 것들 이거저거 끄적여본다… 1. 태어날 때의 이름은 그레이스 브루스터 머리(Grace Brewster Murray) 2. 결혼 후 남편(빈센트 포스터 호퍼, Vincent Foster Hopper)의 성을 따라 그레이스 호퍼(Grace Hopper)로 이름이 바뀜 3. 대학원 전공은 수학 (석사는 수학, 박사는 수리물리학이었다고…) 4. 졸업 후 2차 대전 발발로 해군에 입대하여 컴퓨터를 처음으로 접함 5. 최초의 컴파일러 창시자 (A-0 언어) 6. 최초..
이미지 리샘플링 정도로는 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에서 이렇게 큰 메모리를 사용할 때는 큰 ..
여러 사람의 손을 거친 MS Excel 파일에선 온갖 예측할 수 없는 일들이 벌어지곤 한다.그 중 특이한 경우 중 하나가 스타일이 깨지는 것. 보통의 Excel 파일에서 스타일 탭을 클릭하면 아래와 비슷한 모습을 볼 수 있다. 하지만, (특히 회사에서) 여러 사람의 손을 거친 파일을 보면 저렇지 않다. 종종 이와 같이 전혀 정체를 알 수 없는 스타일들이 잔뜩 들어있는 걸 볼 수 있다.심지어 일부는 글자가 깨져 적용할 수도, 삭제할 수도 없는 경우를 만날 수 있기도 하다.셀을 합치려고 해도 스타일이 너무 많다는 이유로 셀도 합칠 수 없는 사태가 벌어지기도 한다. 이런 경우에 기본 스타일만을 남기고 몽땅 삭제하려면 간단하게 아래와 같은 매크로를 실행하면 된다. Sub StyleKill() Dim styT A..
비교적 최근에 새롭게 추가된 최상위 도메인 중에 .kim이 있다.마침 검색해보니 따느님 이름의 도메인은 아직 무주공산이다. 이번 도메인은 Amazon Route 53에서 구입하기로 했다. 도메인을 구입하고 티스토리 블로그 및 네이버 웍스에 연결하는 과정은 대략 아래와 같다. Amazon 계정을 생성한 뒤에 AWS Console 화면에서 Route 53을 선택한다. 화면에 보이는 Register domain 메뉴에서 원하는 도메인을 등록한다.비용은 15$라고 하는데, 부가세 포함하면 16.5$. 결재를 마치고 나면 이제부터 도메인에 대한 설정을 해야 한다.우선 Hosted zones을 선택. 여기서 Hosted Zone을 생성한다.Comment는 적절히 입력하면 되고, Type는 기본값인 Public Ho..
회사에서 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로 변환하는 동안 오류가 발생했습니다. 파일이 잘못..
Visual Studio 2015 Update 3 RC가 공개되었다.언제나 그렇듯이 많은 오류들이 수정되었다고 한다. 그런데, 막상 설치한 뒤 컴파일을 해보니 제대로 컴파일되지 않았다.Known Issues를 확인해보니 아래와 같은 내용이 눈에 띄었다. 본 블로그에서 배포하는 프로그램들은 Windows XP에서도 실행이 가능하도록 v140_xp PlatformToolset을 사용하고 있다.그런데, Update 3 RC에선 이걸 사용하려면 Include, Library 폴더에 위와 같은 내용을 추가해야 된다. 어차피 MS의 공식 지원도 종료된 Windows XP인지라 사실 그것보단 귀차니즘으로 v140 PlatformToolset을 쓰기로 했다.따라서, 향후 배포되는 어떤 프로그램도 Windows XP를 ..
부동소수점 계산시 곱하기가 나누기보다 빠르다는 얘기를 듣고서 실제로 어떤지 측정해봤다. 환경은 AMD A8-3870 + Windows 10 + Visual Studio 2015. 측정 내용은 간단하다. 1. x *= 2, x *= 3, x /= 2, x /= 3을 10억번씩 반복 수행한 뒤 시간을 측정 2. 같은 연산을 부동소수점 및 정수에 대하여 곱하기, 나누기 및 더하기 각각 수행 (x *= 2.0, x *= 2, x /= 0.5, x += x) 3. float, double에서 각각 수행 4. 수행시 /fp:precise(기본)과 /fp:fast를 지정 1. x *= 2 사실상 별 차이 없다. 아래 그래프를 언뜻 보면 차이가 있어보이지만, 측정 결과는 최대 0.01초밖에 차이나지 않는다. 2. x ..
토렌트와 그 이외의 인터넷 서비스를 동시에 쾌적하게 사용하는 것이 의외로 쉽지 않다. 토렌트 사용량이 늘어나면 전체적인 인터넷 대역폭에 영향을 미칠 수 밖에 없기 때문이다. 아래와 같은 과정으로 쾌적한 환경을 구축해봤다. 1. 인터넷 성능 확인 가장 우선적으로 할 일은 인터넷의 성능 자체를 확인하는 것이다. speedtest.net, myspeedtest.co.kr 등 많은 사이트에서 인터넷 속도를 확인할 수 있으며, 결과는 당연히 대동소이함. 2. 토렌트 설정 μTorrent®의 설정에서 연결과 대역폭을 조정한다. (다른 클라이언트도 대동소이함) 우선 연결 메뉴에서 아래와 같이 설정했다. 사용 포트는 한번 무작위로 지정한 뒤 변경하지 않으며, 지정한 값을 DD-WRT에 저장해야 하므로 별도로 메모해둔다..
1. 배경 ipTIME으로 대표되는 국산 유무선 공유기들은 보안성을 신뢰할 수 없다는 지적이 많았다.리눅스 및 오픈소스 기반이지만 한국식으로 라이센스 같은 거 모르겠고, 소스 비공개로 운영되는 건 덤이고. 게다가, 특히 ipTIME은 제품 자체 및 전원 어댑터의 내구성 문제가 수시로 지적되어왔다. 이번 기회에 좀 더 믿을 수 있는 녀석으로 바꿔보기로 했다. 2. 제품 선정 많이 팔리고, 성능도 만족스러우며, 가격도 합리적인 TP-LINK의 Archer C7을 선택했다.성능도 성능이지만, DD-WRT를 끼얹을 수 있다는 점이 더욱 중요했다. 3. 구동 Archer C7은 2.4GHz/5GHz 듀얼밴드를 지원하는 1Gbps 유무선 공유기이고, 2개의 USB 포트를 제공한다.이를 제대로 지원할 수 있는 충분한..
1. WoW64 환경인지 확인하는 법 대략 아래와 같은 코드를 사용하면 된다.상세한 설명은 MSDN: IsWow64Process function 참고. typedef BOOL(WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); LPFN_ISWOW64PROCESS fnIsWow64Process; bool isWow64() { #ifdef _WIN64 return true; #endif BOOL bIsWow64 = FALSE; //IsWow64Process()가 모든 윈도우에 구현된 건 아니기 때문에 //이런 방식을 사용해야 함 fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle(TEXT("kernel..
윈도우 10에 포함된 MS Edge는 IE에 비해 많은 향상이 있는 브라우저다.속도나 웹표준 준수 등 여러모로 발전된 게 사실이다. 그런데, 여기저기에서 실전 적용이 어렵다는 판단을 하게 되는 점들이 발견된다.이번에 크게 눈에 띈 점 하나는 깃허브에 공개된 내용을 사용하기 너무 어렵다는 점. 파이어폭스나 크롬 등의 브라우저로 깃허브를 띄운 뒤 소스를 선택하면 아래와 같이 선택된다. 그런데, Edge로 선택하면 아래와 같이 선택된다. 물론, 소스를 직접 다운받고 활용하는 방법이 있기는 하지만, 굉장히 불편한 게 사실이다.MS Edge… 아직 갈 길이 멀다…
요즘 컴퓨터에서 관리되는 시간은 굉장히 정확하다. 메인보드에는 RTC 칩이 있어 전원을 꺼도 시간은 확인되고, 시간 정보는 수시로 타임 서버와 동기화한다. 코인 배터리로 RTC가 동작되기 때문에 배터리 누액으로 인해 메인보드가 망가질 일도 거의 없다. OS에서는 타임 서버/RTC의 시간을 시간대와 함께 계산해서 관리해준다. 그런데, 처음부터 시간이 이렇게 정확하게 관리됐던 게 아니다. 오히려, 정확하기는 커녕 시간 자체가 제대로 관리되지 않았다. 내가 처음으로 접했던, MSX와 연계된 RTC의 기억들은 아래와 같다. 1. MSX 내가 처음 가져본 컴퓨터는 금성전자에서 판매한 FC-30이었는데, 이건 시간 개념이 없던 제품이라 패스. 제대로 시간 개념이 있는 컴퓨터를 처음 가져본 것이 대우전자에서 판매한 ..
C/C++에서 memset()은 종종 최적화에 대한 얘기가 종종 나오는 테마이다.이론적으로는 내용들에 동감은 하는데, 과연 실제로 영향이 있는지 확인해봤다. 비교 대상은 memset(), 단순무식, 8바이트 정렬 고려한 최적화, 버클리 구현 소스 등. - memset() : 그냥 Visual C++에 내장된 함수- 단순무식 : 루프 돌리는, 일반상식에 기반한 코딩- 8바이트 단위 쓰기 : 루프를 8바이트 단위로 돌리면서 uint64_t 단위로 쓰기 (참조 사이트) - 8바이트 단위 정렬 최적화 : 메모리에 쓸 때 주소가 8바이트 단위면 CPU가 조금 더 최적화한다는 점을 고려한 쓰기- 버클리 구현 : 8바이트 단위 정렬 최적화의 버클리 버전 (참조 사이트) 이 코드를 디버그 모드에서 돌렸을 때의 결과는 ..
프로그램을 만들 때 아이콘은 대부분 자작하는 편이다.그러다 삽질한 내용을 까먹지 않기 위해 기록. 내가 아이콘을 만드는 과정은 대략 아래와 같았다. 1. 적절한 이미지 선택2. 프로그램을 써서 주변을 적당히 잘라냄3. paint.net의 아이콘 플러그인을 이용해서 저장 문제는 2, 3번에서 모두 발생했는데…2번: 잘라낸 뒤에 투명한 영역의 색을 (0, 0, 0)으로 변경 → 나름 파일의 크기를 조금 줄이겠다는 심산이었는데, 리사이징에 심각한 악영향3번: 플러그인의 리사이징 품질 자체가 좋지 않음 결국, 투명 영역의 색을 그대로 유지하고 직접 리사이징 한 뒤, ImageMagick을 사용해서 아이콘을 생성하는 것으로 변경. 오늘의 교훈: 불투명도가 0이라고 그 색이 무의미한 게 결코 아님. 특히 리사이징 ..
키보드를 GTune MBF100 PLUNGER로 바꾸고 보니 한영/한자 키의 위치가 일반 키보드와 다르다. 레이아웃이 한국식 106키가 아니라 US-International 103키와 거의 같기 때문에 한영/한자 키의 위치가 굉장히 낯설다. 그래서 오랜만에 예전에 쓰던 트릭을 꺼내들기로 했다. Shift/Ctrl + Space로 한영/한자 키를 대신하는 것. 이 트릭을 적용하려면 다음과 같이 하면 된다. 우선, 레지스트리 편집기로 아래 위치로 이동해보면 대략 아래 캡쳐화면과 같이 되어있다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters 여기서 표시된 두 부분의 값을 각각 다음과 같이 바꿔주고 재부팅하면 끝난다. 바뀐 부분..
난 키보드 덕질은 안 하지만, 은근 기계식 키보드에 대한 로망 같은 게 있었다. 고민 끝에, 멤브레인과 기계식의 중간쯤이라고 얘기되는 플런저 키보드를 하나 사기로 했다. 선택한 제품은 한성컴퓨터에서 나온 GTune MBF100 PLUNGER. 이 제품은 독특한 특징이 몇 있다. 1. 비용은 상당히 저렴함. 특히, 기계식과 비교하면 하늘과 땅 차이 2. 당연한 얘기지만, 누르는 감이 충분히 괜찮음. 살짝 사각거리는 소리도 은근 기계식 필이 느껴짐 3. LED가 적절히 은은하며, 색과 밝기를 쉽게 조절할 수 있음 4. 키보드 레이아웃은 완전히 US-인터내셔널 레이아웃임. 즉, 스페이스 바 왼쪽에 3개, 오른쪽에 4개의 키만 있음 5. Scroll Lock 램프가 없고, 그 자리엔 Game Mode 램프가 위..
처음으로 컴퓨터를 밤새며 돌렸던 작업이 뭐였나 생각해봤다.아마도, 처음으로 그렇게 돌렸던 작업은 80년대 중반 MSX에서 Mandelbrot 프랙탈을 그려본 것 같았다. 월간 마이크로 소프트웨어에 소개된 기사를 읽고서 (개념을 제대로 이해도 못하면서) MSX Basic으로 돌려본 것이었다.굉장히 낮은 해상도임에도 화면 하나를 채우려면 몇 시간 돌려야 했기 때문에 자기 전에 좌표를 지정하고 돌린 뒤에 아침에 결과를 확인했었다. 이후 CPU가 비약적으로 향상된 MSX Turbo R에서 조금 더 빠르게 동작하는 솔루션도 나왔지만, 그래봤자 아래와 같은 수준… 결국 HW와 SW 모두 장족의 발전을 하고, Mandelbrot 그래픽은 몇 초 내에 결과를 보여주는 세상이 왔다. 다음으로 밤을 새서 돌린 건 90년대..
그간 써오던 케이스를 새로운 케이스로 바꾸기로 했다.선택한 케이스는 독일 Nanoxia 사의 Deep Silence 2. 기존 케이스는 저렴한 가격이라 산 케이스인데, 무엇보다 얇은 철판으로 인해 진동을 잡기가 너무 어려웠다. 살짝 뜯어보니 먼지가 좀 많이(ㅡ.ㅡ;) 쌓여있다… 조심해서 분해해서 부품들을 다 꺼냈다.메인보드+CPU, 그래픽 어댑터, 하드 디스크 4개 그리고, ODD. 새로 산 케이스의 포장지를 제거했다.케이스는 일단 깔끔(단순?)하다. 혹자는 냉장고라고… 전면 상단에 USB 3.0 포트 2개, 2.0 1개가 있는데, 이 케이스를 선택한 이유 중 하나다. 케이스 내부는 외부와 동일하게 채색되어있다.케이스 뿐만 아니라 나사 하나하나도 마찬가지. 나사, 케이블 등등은 별도의 상자에 포장되어있다..
갑자기 브라우저를 띄우면 bing.com이 뜨는 문제가 생기기 시작했다. 악성코드가 원인인가도 생각했지만, 찾아보니 그건 아니고, 이미 알려진 윈도우8의 문제였다. 정확한 원인은 아직 얘기되는 게 없지만, 해결책은 나와있다. 레지스트리를 간단하게 수정하면 된다. - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet에서 - EnableActiveProbing(DWORD)의 값을 0으로 설정 간단하게, 아래의 내용을 레지스트리로 저장해서 실행해도 된다. Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\N..
Visual Studio 계열은 C++ 표준인 std::string 보다는 CString을 더 많이 사용한다. 그런데, VC6의 CString::Replace()는 뭔가 문제가 있었던 것 같다. VC6에서 Unicode 프로젝트를 돌리며 여러번 확인했었는데, Replace()는 문자열 치환을 한 번만 수행했다. 즉, CString cs = _T("Hello World !"); cs.Replace(_T(" "), _T(" dirty ")); MessageBox(cs); 를 실행하면 Hello dirty World ! 가 출력되었다. 도움말을 찾아보지도 않고 그러려니하고 써왔었는데, 우연한 기회에 VS2013에서 테스트해보니 정상적으로 동작했다. 속으로 '아… MS가 이런 변화를 별도로 공지하지 않았나…' ..
iTrans나 Any to MP3 등은 내부적으로 배치파일을 만들어 돌린 결과를 리다이렉트해서 화면에 출력하도록 만들었다.배치파일은 오로지 ANSI 포맷으로만 만들 수 있었기때문에 8.3 이름을 추출해서 배치파일을 생성한다. 그런데, 알고 보니 그 제약은 XP까지만 존재했고, 비스타 이후는 UTF-8 포맷의 배치파일도 인식하도록 수정되었다.무려 8년이나 지난 얘기를 이제야 알았다니… 그래서 두 프로그램 모두 이 내용을 반영해서 수정 중이다.이제 윈도우 비스타 이상에서는 어떠한 파일명의 미디어 파일라도 정상적으로 처리가 가능한 거시다!!
한 집안에 있는 카메라가 끽해야 두어대이던 시절이 있었다. 수학여행 간다고 아버지가 애지중지하시던 카메라를 빌려갔던 기억도 난다. 그런데, 요즘은 디지털카메라가 넘쳐난다. 우리 집만 해도 디카와 폰카를 다 합치니 여섯 대가 나온다. 난 사진을 날짜/시간순으로 정렬하고 폴더에 정리하는데, 디카가 여러대인데다 사진 장수도 많아 쉽지가 않다. 더군다나, 디카마다 시간이 미묘하게 다른데, 이게 가끔 신경이 쓰인다. 1. 동영상 변환 아이폰/아이패드 처럼 동영상을 mp4/H.264로 깔끔하게 떠주는 디카는 아직도 많지 않다. 여전히 AVI/mjpeg의 커다란 파일로 만들어주는 경우가 더 많다. 화질에 대비해 파일의 크기가 너무 크다… 그래서, iDevice용 동영상 변환기 iTrans v10.3a를 사용한다. 변..
VS2012에서 구버전 VS의 프로젝트를 사용할 때 가끔 다음과 같은 메시지를 만날 수 있다. warning C4005: '__useHeader' : macro redefinition warning C4005: '__on_failure' : macro redefinition 이 문제는 VC11의 헤더와 SDK 7.1a의 헤더가 달라서 발생하는 것이라고 한다. .rc 파일 맨 앞부분에 다음 내용을 추가하면 이 메시지를 볼 일이 없다. #define _USING_V110_SDK71_ 1 참고 사이트: stackoverflow
지난 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..
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..