새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. 이제 DSLR 이외의 수많은 장비들이 카메라의 자리를 대신하고 있다. 이러다보니, 여행을 가서 찍은 사진을 모아보면 의외로 정리가 쉽지 않다. 온라인/모바일 환경에선 정렬을 Exif 촬영일자 순으로 하는 경우가 많지만, PC에선 파일명 순인 경우가 일반적이다. 그러다보니 촬영시간 순서는 알기 힘들고 카메라 기종순으로 파일을 보게 되는 경우가 대부분이다. FPO는 HEIF/JPEG의 Exif 정보 중 촬영일자 정보를 읽어 파일명을 수정하고, 최대한 파일을 줄여주는 프로그램이다. mozjpeg를 활용해서 파일 크기를 조금이라도 더 줄이고, 추가로 resample을 적용해서 사진 크기도 축소시켜준다. 또한, 사진과 더불어 함께 저장된 PNG, WebP,..
C++의 자료 구조 중에 map이라는 것이 있다. key와 value를 한 쌍으로 저장하며, key의 중복을 허용하지 않고 정렬하여 저장하는 자료구조이다. 아는 사람은 다 아는 내용이니 map에 대한 설명은 여기까지만 하고... MFC에서는 이러한 경우를 처리하기 위해 CMap이라는 클래스를 만들어두었다. 또한 STL에서는 map과 unordered_map을 구현하여 유사한 기능을 수행하게 해두었다. 여기서 Windows 환경에서 어느 쪽의 구현이 더 빠른가 하는 점이 궁금해졌다. 그런데, 구글링을 해보니 이미 거의 답이 나와있었다. Does MFC CMap have a good performance compared to std::unordered_map or std::map MFC의 CMap 쪽이 근소..
유니코드에서는 한글은 물론이고, 다양한 언어의 다양한 기능을 폭넓게 제공하고 있다. 그리고, 언제나 그렇듯 종종 과유불급 상황이 벌어지곤 한다. 한글과 같은 비영어권 문자는 물론이고, 심지어 영어권 문자 영역에서도 이런 현상을 볼 수 있다. 유니코드에서 U+0085는 NEL(Next Line)으로 정의되어 있다. 이게 뭐냐면... EBCDIC 코드에서 기원한 New Line으로... 그냥 CR/LF와 비슷한 것이다... 그리고, U+00A0은 NBSP(No-Break Space)로 정의되어 있다. SAMI 자막에서 흔히 볼 수 있는 가 바로 이 문자를 의미한다. 적어도 자막으로 한정해서 보면, 사실 이 문자들은 쓸 일이 없다. NBSP가 SAMI에서 사용되는 건 SAMI가 HTML에 기반했기 때문이지 N..
정리 차원에서 간단히 기록... 유닉스/리눅스와 윈도우는 근본적으로 다른 점들이 꽤 있다. 그 중 하나가 시간을 계산하는 기준. 유닉스/리눅스의 Epoch time은 1970년 1월 1일 00:00:00GMT부터 누적된 시간(초)이다. 윈도우 환경에서도 이 Epoch time을 읽는 함수가 있다. 밀리초 이하의 단위를 사용하지 않고, 단순하게 초 단위에서만 계산하려면 아래와 같이 사용하면 된다. #include #include #ifdef _MSC_VER #include #elif __GNUC__ #include #include #endif int main() { #ifdef _MSC_VER time_t ltime; time(<ime); unsigned long long ullEpoch = (unsi..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. SRT 자막 관리 도우미 SRTier를 5.06으로 업데이트했다. 사소하지만 다양한 UI의 오류들을 제거하고, 인터페이스를 튜닝했다. 시간값을 인식하는 기능을 좀 더 똑똑하게 수정했고, 화면비율이 100%가 아닐 때에도 어색하지 않도록 조정했다. 더불어, SAMI 자막 중 같은 괴랄한 자막도 인식하도록 수정했다. 이 프로그램의 주요 기능은 아래와 같다. - SRT 교정: SRT 파일을 읽은 뒤 오류를 수정한 뒤 다시 기록하거나 시간을 조정함 - 자막 변환: SAMI/SSA/ASS 자막을 SRT로 변환, SRT 자막을 SAMI로 변환 - 텍스트 추출: SRT 자막에서 텍스트만 추출 - 텍스트 병합: 기존의 SRT 자막의 시간 코드에 맞춰 텍스트 파일..
SRT나 ASS 등 다양한 자막 포맷이 있지만, 여전히 우리나라에서 널리 사용되는 자막 포맷은 SAMI이다. 태생적인 기능의 한계나 형식의 불명확함 등의 약점에도 불구하고, 워낙에 널리 사용되어 온 포맷이다. The Speaker SAMI 0000 text Le narrateur Texte SAMI 0000 SAMI 1000 text Texte SAMI 1000 SAMI 2000 text Texte SAMI 2000 SAMI 3000 text Texte SAMI 3000 SAMI 포맷은 이제 나온지 25년이 되어가는(1998년 6월 25일에 첫 공개) 포맷이다. MS가 공개한 이 포맷은 아래에서 볼 수 있듯이 HTML에 여러모로 기반을 두었다. 이러다보니, 규격에는 명시되어 있지 않지만, 코드 페이지로 ..
정규식은 문자열을 비교 처리할 때 사용되는 강력한 표현법이다. Perl, JavaScript 등의 언어에서는 대단히 높은 활용도를 보여주고 있다. C++ 언어의 경우 정규식을 처음부터 지원한 건 아니었고, C++11부터 지원하기 시작했다. 표준에 포함되긴 했지만, C++ 언어의 문법 구조상 정규식을 사용하는데는 불편함이 있다. 예컨데, 아래의 정규식은 메일 주소를 확인하기 위한 꽤 흔한 식이다. var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i; 하지만, C++에서 이런 정규식을 사용하려면 식을 문자열로 써야 하고, 이에 따라 \는 한 번이 아니라 두 번 적어야 한다. 마지막에 ..
파이에서 구동되는 OpenDDS 어플은 OpenDDS 본체와 동일하게 크로스 컴파일 해야 한다. 물론, 관련 라이브러리들을 죄다 파이에 올리면 컴파일 못 할 이유는 없지만, 효율이 너무 떨어진다. OpenDDS를 사용하는 어플의 빌드를 위해서는 MPC 또는 CMake를 사용할 수 있다. 난 CMake를 선택했다. sudo apt install cmake 통상적인 내용 외에 cmake 스크립트에 추가적으로 적어줘야 할 내용들은 아래와 같다. - 컴파일러(크로스 컴파일러) - 컴파일 옵션에 -Wno-pasbi 추가 - OpenDDS 관련 디렉토리 - OpenDDS 라이브러리 추가해야 할 라이브러리 등은 Developer's Guide에 잘 나와있기는 개뿔... 그냥 열심히 잘 찾아야 한다. 이걸 찾는 건 그..
라즈베리 파이에서 OpenDDS를 구동하는 방법은 OpenDDS 홈페이지에 잘 설명돼있다. 간단히 말하면 리눅스 환경에서 크로스 컴파일해서 파이에 올리는 것 예전같으면 리눅스 머신을 따로 만들거나, 가상머신 위에 리눅스를 올렸겠지만... 우리에겐 WSL이 있습니다, 휴먼. 파워셸에서 아래와 같이 입력하기만 하면 리눅스를 설치할 수 있다. wsl --install 리눅스 명령창이 뜨고, 계정 정보를 입력하면 일단 설치는 종료됨. OpenDDS 홈페이지의 설명에 따르면 우분투 20.04.3 LTS x86_64 환경에서 테스트되었다고 한다. 설치된 버전은 20.04 LTS이고, 20.04.4 LTS로 업데이트했으니 별 문제 없을 듯. 다음 할 일은 당연한 얘기지만, 개발 환경을 설치하는 것. sudo apt ..
윈도우 PC와 라즈베리 파이 간에 OpenDDS로 통신을 해보기로 했다. 일단 라즈베리 파이에 Raspberry Pi OS를 설치하는 것으로 시작. 64비트 OS를 설치할 수도 있지만, 딱히 필요하진 않아 그냥 32비트 버전을 설치. 라즈베리 파이는 물론 멀쩡한 컴퓨터니까 키보드, 마우스, 모니터 연결해서 그냥 사용해도 된다. 하지만, 공간이 부족하니 모두가 하는대로 원격으로 연결하기로 했다. 당연히 선택한 솔루션은 RDP(원격 데스크톱 연결). 그런데, 왠지 연결에 계속 실패한다. 구글링 해보면 동일한 현상에 대한 얘긴 많은데, 무엇 하나 적용 가능한 해결책이 없었다. 결국은 무난한 솔루션인 VNC으로 최종 결정 TigerVNC 등은 연결이 정상적으로 되지 않아, VNC Viewer로 연결하는 것으로 ..
프로그램을 하나 만들면서 최초 실행부터 난수를 생성하도록 할 일이 생겼다. 당연히도 수많은 강좌에서 사용하라고 강요(?)하는 방식으로 시작했다. srand((unsigned)(time(NULL))); int r = rand(); 물론 프로그램은 정상적으로(?) 동작했고, 특별한 문제는 없었다. 단지 생성된 난수가 너무 규칙적이란 부분 하나만 빼면... C/C++언어에 포함된 rand() 함수가 그다지 품질도 좋지 않고, 속도도 빠르지 않다는 얘긴 많았다. MT(메르센 트위스터)나 WELL을 사용하란 글도 쉽게 찾을 수 있다. 그래도 개인 용도로 사용할 때는 간단하고 편하게 쓸 수 있는 rand()를 사용해왔다. 낌새가 이상해서 VS2022에서 프로그램 하나를 간단히 만들어 돌려봤다. #include #i..
0. 들어가기 앞서 현재 사실상의 동영상 표준 코덱인 H.264와 HEVC는 유료인데다, 라이센스도 복잡하다. 개인이 사용할 때야 아무 문제 없지만, 상용 제품을 만들게 되면 여기부턴 쉽지 않다. 이에 따라 차기 코덱을 자유 라이센스 환경에서 오픈소스로 만들자는 움직임이 있었고, 그래서 만들어진 코덱이 AV1이다. 인텔, 애플, 모질라, 넷플릭스 등등 수많은 회사들이 모여 AOM을 결성하였으며, 스펙은 '18년 6월 25일에 1.0.0이 발표되었다. 그간 libaom을 포함한 인코더들이 있었지만, 인코딩 시간이 너무 오래 걸려 대중화에는 무리가 있어왔다. 그러다, 며칠 전('22.4.22) 인텔이 SVT-AV1 인코더 1.0을 정식으로 공개하였다. 이에 따라 SVT-AV1의 인코딩 성능과 영상 품질이 어..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. PC 뱅킹의 주적은 PC 뱅킹 프로그램이다. PC 뱅킹을 하고 나면 컴퓨터가 미친 듯이 느려지기 때문이다. 키보드 보안 프로그램을 필두로 컴퓨터를 느려지게 만드는 악의 무리들이 너무나 많다. 전통의 명가(?) nProte**부터 컴퓨터 발목잡기의 거목 안* 온라인 시큐**, 그 외에도 수많은 잡 구라들… KISA에서 I사 보안모듈 프로그램에 문제가 있다고 발표할 정도로 완성도가 엉망인 경우도 있다. 보안 취약점을 갖고있는 보안 프로그램이라니… 무슨 열림교회 닫힘도 아니고… 더군다나 이런 프로그램들은 몰래 설치가 되는 것도 아니고 아예 (강제로) 동의를 받아 설치된다. 마치 건물 철거 강제 집행하면서 동의서 서명당하는 기분이다 그래서 간단히 만들었다..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. 오류를 수정하고 다양한 성능 개선이 반영된 버전을 공개한다. 아래 링크에서 다운받을 수 있으며, 언제나 그렇듯 x86/x64/avx2 버전이 함께 들어있다. password: teus.me ▲ 히스토리 2022.3.15: 4.22.03 r4130 공개 - Scintilla Library를 5.2.0으로 업데이트 (관련 사이트) - 오류 수정: 일부 한자 영역 UTF-8 변환 오류 수정 (관련 사이트) - Markdown 링크 처리 기능 개선 - Rust, Markdown lexer 개선 - Swift 키워드 목록을 5.6으로 업데이트 (관련 사이트) - Java 키워드 목록을 JDK 17로 업데이트 (관련 사이트) 2022.3.22: 4.22.03..
이 문제는 의외로 오래 전에(?) 알려졌던 문제이다. 이 프로그램이 설치되고 나면 언인스톨이 깔끔하게 되지 않는데, 이걸 수작업으로 지우면 문제가 터지는 것. nProtect Firewall Core Driver가 일단 설치되면 언인스톨을 하더라도 컴퓨터 어딘가에 숨어서 암약하고 있다. 1. 수작업 제거 1단계 명령행을 관리자 권한으로 실행한 뒤 아래와 같이 입력하면 관련 프로세스가 제거된다. 그리고... 인터넷이 죽는다. sc stop TKFWFV sc delete TKFWFV 2. 수작업 제거 2단계 명령행에서 다음과 같이 입력한다. netcfg -s n 윈도우에 설치된 각종 네트워크 구성 요소들이 화면에 표시되는데, 이 중 아래와 같은 내용을 찾는다. 관리자 권한으로 실행된 명령행에서 아래와..
언젠가부터 지메일이나 유튜브 접속 속도가 묘하게 느려졌다. 구글이 아니더라도 뭔가 느릴 이유가 없는데 접속이 느려보이는 사이트들이 좀 있었다. 그러다 클리앙에서 글을 하나 보고서 따라했더니 효과가 커서 공유. 현재까지 공식적으로 널리 사용되는 HTTP 표준은 2.0이다. 그리고, 이 한계를 극복하기 위해 연구되고 있는 게 3.0. 여기 사용될 기술이 QUIC이라는 프로토콜이다. 골자는 기존 TCP 기반의 한계를 극복하기 위해 UDP 기반으로 더 빠르고 훌륭한 프로토콜을 만든다는 것. 그리고, 이미 구글을 포함한 많은 사이트들이 HTTP 3.0을 시범지원하고 있는데, 여기서 뭔가 문제가 벌어진 듯. HTTP 3.0(QUIC)이 정식으로 지원되고, 안정화가 이루어지기 전까지는 잠시 꺼두어도 괜찮을 것 같다...
깃헙 zlib-ng 라이브러리에 아래와 같은 내용이 반영된 수정이 올라왔다. unaligned access를 허용하지 않는 환경에서는 memcpy(), memcmp()를 사용하고, 허용된다면 직접 비교한다는 것. /* Force compiler to emit unaligned memory accesses if unaligned access is supported on the architecture, otherwise don't assume unaligned access is supported. Older compilers don't optimize memcpy and memcmp calls to unaligned access instructions when it is supported on the arc..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. iDevice용 동영상 변환기를 20.12으로 업데이트 했다. 19.xx대에 있었던 소소한 오류들을 고쳤고, UI 등에 세세한 수정들을 적용했다. 가장 큰 변화는 인코딩 HW에 MainConcept HEVC 인코더를 추가한 점이다. 또 하나의 변화는 오디오 AAC 인코딩 시에 Nero AAC Encoder와 iTunes 외에 libfdk_aac를 추가했다는 점. 이 기능을 사용하기 위해서는 libfdk_aac를 적용하여 직접 컴파일한 ffmpeg.exe가 있어야 한다. 이 ffmpeg.exe를 tools\ffmpeg_fdk_aac에 넣고 실행하면 AAC 인코더로 libfdk_aac도 사용할 수 있다. 변환기는 아래 링크에서 다운받을 수 있으며, 여..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. 오류를 수정하고 다양한 성능 개선이 반영된 버전을 공개한다. 아래 링크에서 다운받을 수 있으며, 언제나 그렇듯 x86/x64/avx2 버전이 함께 들어있다. password: teus.me ▲ 히스토리 2022.1.3: 4.22.01 r4042 공개 - HTML 스크립트 표시 기능 보강 (관련 사이트) - VB 파일에서 # 표시 관련 오류 수정 (관련 사이트) - About 창에서 프로그램 정보를 복사하는 기능 추가 (관련 사이트) - 저작권 연도를 2022년으로 변경 2022.2.13: 4.22.01 r4089 공개 - Markdown lexer를 정식버전의 것으로 대체 (관련 사이트) - Scintilla Library를 5.2.0으로 업데이트..
몇 년 전 WebDAV과 SFTP의 전송속도를 간략하게 비교해본 적이 있었다. SFTP가 WebDAV 보다도 빠른 최강의 성능을 보여줬었다. 그 땐 어쨌거나 WebDAV가 더 많이 쓰이기도 했고, 성능 차이가 아주 큰 건 아니라 WebDAV으로 결론냈었다. 최근에 다시 한 번 간단히 돌려봤는데, 역시 SFTP가 속도도 더 빠르고 랙도 덜 걸렸다. 그래서 차재에 정들었던 WebDAV을 버리고 SFTP로 넘어가기로 했다. PC에서 사용하는 RaiDrive는 설정만 간단히 바꾸면 되지만, 역시 문제는 LibreELEC(KODI). KODI의 기본 구성에 SFTP가 포함되어 있지 않다. SFTP가 설치되지 않은 KODI에 SFTP를 설치하려면 Add-ons에서 찾아서 설치해줘야 한다. 찾을 위치는 다음과 같다:..
드디어 그 날이 오고야 말았다. 구글의 G Suite 서비스는 10년 넘게 무료로 도메인 메일을 제공해주는 고마운 서비스였다. 하지만, Google Workspace라는 유료 서비스로 통합된다는 얘기가 있었고, 드디어 2022년 7월 1일로 고지를... 받았다. 이 서비스를 소규모 회사 등에서 사용하는 건 큰 무리가 없을 것이다. 계정 1개당 6달러이므로 30명 규모 조직이라면 월 180달러라는 꽤 만만한 가격에 훌륭한 서비스를 활용할 수 있다. 하지만, 단지 도메인 메일만을 사용하는 개인이라면 얘기가 다르다. 계정이 2개만 되어도 월 만원 이상의 비용이 나가는데, 은근 부담스럽다. 다음 스마트워크를 사용할까 했다가 이왕 있는 장비를 잘 써먹기 위해 시놀로지 NAS를 활용하기로 했다. Synology M..
HW(그래픽 카드) 전문 사이트들에서는 이미 꽤 다뤄졌던 얘기 같은데, 실제로는 잘못 꽂는 경우가 많아서 포스팅. 대부분의 PC용 파워 서플라이의 사용설명서 등에는 아래와 같이 보조전원에 대한 설명이 나와있다. 간단히 말해 전력 소모가 큰 경우엔 전원 케이블 하나에 보조전원 둘을 동시에 연결하지 말라는 것. 그리고, nVidia의 홈페이지에 가면 아래와 같은 내용을 볼 수 있다. 20시리즈의 경우 RTX 2070 Super는 보조전원을 215W 필요로 한다고 한다. 즉, 2070 Super 이상에선 별도의 전원 케이블 2개를 꽂아야 하는 것 같다. 30 시리즈의 경우 3070Ti가 무려 290W를 사용한다. 즉, 3070Ti 이상에서는 전원 케이블을 별도로 꽂아야 한다는 것 같다. 그런데, 실제로 레퍼런..
이미지 파일 포맷에는 Exif와 ICC Profile을 비롯한 각종 메타 데이터가 포함되어 있다. 이는 여전히 전통의 강호인 JPEG 뿐만 아니라, WebP, HEIF 등등까지 거의 모든 포맷에 해당된다. 심지어 그동안 Exif를 지원하지 않던 PNG도 1.2(2017년 7월)부터 이를 지원하기 시작했다. 나온지 무척 오래 된 규격이라 이 바닥 엔지니어라면 누구나 손쉽고 정확하게 다룰 수 있는 규격... 이기는 개뿔... 실제로 데이터를 만나보면 결코 이게 쉽지가 않다. Exif WebP 이미지에 포함된 Exif 데이터는 다음과 같은 형식으로 저장되어야 한다. WebP 파일에서 Exif 데이터는 EXIF 문자열 뒤에 Exif 영역의 길이가 4바이트 Little endian으로 저장된다. Exif 데이터는..
C/C++ 언어에서 헤더의 중복 선언을 방지하기 위해 #pragma once를 사용한다. 그런데, #pragma once를 써도 링크 오류가 발생하는 경우가 있다. 아래와 같은 간단한 프로그램들을 보자. // CTest1.h: 헤더 파일 // #pragma once class CTest1 { public: int Func(); }; // CTest1.cpp: 클래스 동작을 정의함 // #include "CTest1.h" int CTest1::Func() { return 1; } #include #include "CTest1.h" int main() { CTest1 test1; std::cout
이전 포스팅들에서 OpenDDS를 Visual Studio 환경에서 컴파일하는 법을 정리했다. 이후 OpenDDS 자체의 변경사항도 있고, 뭔가 이상한 점이 확인되기도 해서 좀 더 정리함. 1. 3.18.1 → 3.19 깃허브에 올라온 공식 버전이 3.19로 업데이트 됐다. 그리고, 공식적으로 Visual Studio 2022를 지원한다. 최신 버전을 사용한다면 configure 파일을 수정할 필요가 없음. 2. static 모드 사용 비추 다양한 테스트들을 돌려봤는데, static 모드로 컴파일하면 DDS 통신이 제대로 되지 않는다. TransportRegistry::create_inst() 함수가 오동작하는 것 같은데, 정확한 문제는 더 추적이 필요함. 일단은 정적 라이브러리에서 MFC 사용 옵션은 ..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. PC 뱅킹의 주적은 PC 뱅킹 프로그램이다. PC 뱅킹을 하고 나면 컴퓨터가 미친 듯이 느려지기 때문이다. 키보드 보안 프로그램을 필두로 컴퓨터를 느려지게 만드는 악의 무리들이 너무나 많다. 전통의 명가(?) nProte**부터 컴퓨터 발목잡기의 거목 안* 온라인 시큐**, 그 외에도 수많은 잡 구라들… KISA에서 I사 보안모듈 프로그램에 문제가 있다고 발표할 정도로 완성도가 엉망인 경우도 있다. 보안 취약점을 갖고있는 보안 프로그램이라니… 무슨 열림교회 닫힘도 아니고… 더군다나 이런 프로그램들은 몰래 설치가 되는 것도 아니고 아예 (강제로) 동의를 받아 설치된다. 마치 건물 철거 강제 집행하면서 동의서 서명당하는 기분이다 그래서 간단히 만들었다..
갑자기 Log4j 사태 때문에 관련 업계 쪽에선 폭탄이라도 맞은 분위기인 것 같다. 상당수의 자바 개발자가 사용하는 애드온에 서버의 모든 권한을 가져올 수 있는 오류가 있다니... 정부를 비롯해서 관련 기관/업계에선 부랴부랴 난리가 났고, 이번에도 어김없이 가짜뉴스가 판친다. 해당 오류는 2.x 대에 있는데, 전자정부는 1.2 사용하니까 문제 없다고?? 물론, 답글은 뭐 이런 식이고... 하지만, 이건 조금만 찾아보면 쉽게 진위여부를 확인할 수 있다. 전자정부 표준 프레임워크는 3.1부터 Log4j2.0을 사용하고 있었다. 그리고, 이 3.x는 '14년~'15년부터 사용되었고. 세줄 요약 1. 전자정부 프레임워크는 6년 전 503 시절부터 Log4j 2.x 사용 2. 원 글 올린 사람은 이 사실을 알면서..
10. 프로젝트 설정 당연한 얘기지만, 모든 프로젝트를 선택해서 설정하면 C/C++ 항목이 표시되지 않는다. 이 점을 신경 써서 C/C++ 항목이 표시되는 모든 프로젝트에 대해 다음의 전처리기를 정의한다. 이 부분은 빼도 상관은 없지만, 경고가 너무 많이 표시되어 보기 싫기 때문에 하는 것을 추천. _WINSOCK_DEPRECATED_NO_WARNINGS _CRT_SECURE_NO_WARNINGS 그리고, 하는 김에 다중 프로세서 컴파일을 예(/MP)로 설정한다. 환경에 따라 다르지만 요즘 환경이라면 적어도 2배 이상은 더 빨리 컴파일된다. 11. /bigobj 설정 몇몇 프로젝트는 섹션 수가 한도를 초과한다는 메시지와 함께 컴파일 실패가 발생한다. 이 프로젝트들은 C/C++ 명령줄에서 /bigobj를 ..
7. 수정 #3 다음 수정들은 좀 지저분하다. NetworkConfigMonitor.h 파일에서 다음과 같은 부분을 찾는다. virtual void add_interface(const NetworkInterface& interface) { NetworkInterface::AddressSet addresses = interface.get_addresses(); for (NetworkInterface::AddressSet::const_iterator pos = addresses.begin(), limit = addresses.end(); pos != limit; ++pos) { add_address(interface, *pos); } } virtual void remove_interface(const Net..