어느날 갑자기 "알 수 없음."이라는 에러가 발생할 때.

  윈도 XP 를 사용하던 중 어느날 갑자기 일부 프로그램에서 "알 수 없음."(Unknown) 에러가 발생했습니다. 원인을 도무지 알 수 없어서 OllyDbg 를 이용해서 해당 에러가 발생하는 시점을 확인해보니, "Microsoft Jet data engine"이라는 말이 눈에 띄었습니다.   그래서 관련 부분을 검색했는데, 다음의 글을 발견했습니다. Resolving Microsoft Jet Error 'Unknown'   저는 방법 2에서 "msjtes40.dll"만 레지스트리에 다시 등록하고 컴퓨터를 재부팅하니까 증상이 사라졌습니다. 혹시나 같은 문제로 고민하고 계실 분들이 있을지도 몰라서 해결 방법을 아래에 정리(번역)해 두었으니 참고하시기 바랍니다. ^_^ 1. 증상   어느날 갑자기 일부 프로그램에서 "알 수 없음."(Unknown) 이라는 에러가 발생.   (윈도 XP에서 확인. 상위 버전의 윈도에서도 발생하기도 하는 듯.) 2. 증상이 발생하는 프로그램   데이터베이스 (DB)로 마이크로소프트의 엑세스(Access) 를 사용하고 있는 프로그램. (DB 파일의 확장자가 .mdb 임.)   예:  Mybible(성경 읽기 프로그램), 벧엘3(교인, 재정 관리 등) 3. 원인   Microsoft Jet data engine 관련 레지스트리가 손상된 것으로 추정. 4. 해결 방법 # 방법 1: 드라이버 재설치. 제어판에서 프로그램 추가/제거를 실행. Microsoft Access Database Engine 2007 driver가 있으면 삭제합니다. 다음의 링크에서 Microsoft Access Database Engine 2010 재배포 패키지를 받아서 설치합니다. Microsoft Access Database Engine 2010 재배포 가능 패키지 증상이 해결되었는지 확인합니다. # 방법 2: 레지...

VirtualBox 업데이트 후 블루스크린 문제.

  VirtualBox를 업데이트 했는데, 그 후부터 가상 머신을 실행하면, 거의 매번 블루스크린이 뜨는 것이 아니겠어요?! 일하다가 컴퓨터가 갑자기 재부팅 되어 버리니, 겁이 나서 가상 머신을 쓸 수가 없었습니다.   한동안은 다시 예전 버전을 설치해서 쓰다가, 새로운 업데이트가 나와서 이제는 괜찮겠지라는 생각에 업데이트 했는데... 왠걸요. 똑같습니다..   여기 저기 해매다가 마침내 해결법을 알아냈는데요, 가상 머신 설정에서 "시스템 -> 가속"으로 간 후, "네스티드 페이징 사용하기"를 비활성 했더니 이후로는 한번도 그런 문제가 발생하지 않았습니다.  

XE v1.7에서 음성 파일 재생 불가 문제 해결법.

   XE 1.7을 사용하고 있는 사이트에서 문제가 발생했습니다.   게시판에서 음성 파일을 첨부한 후, 게시물에 삽입하면, 다른 웹 브라우저에서는 음성 파일이 잘 재생되나, IE8(혹은 그 이하)에서는 음성 파일이 재생되지 않는 문제였습니다.   아마도 XE가 업데이트되면서 음성 파일 처리에 HTML5 태그인 audio 태그를 쓰도록 수정된 것 같습니다. 하지만, 다행히도 audio 태그를 플래시 플레이어로 변환시켜 주는 애드온이 있었습니다. 그 애드온의 이름은 "HTML5 AUDIO to FLASH"입니다.[1] 이 애드온 덕분에 문제를 잘 해결할 수 있었습니다. ... 이걸로 끝이면 좋았겠지만, 적용해놓고 보니, 정작 중요한 IE8에서는 플레이어가 나타나지 않는 것이었습니다. (산 넘어 산...)   이상한 것은 해당 애드온의 바탕이된 자바스크립트를 개발한 사이트[2]에 가서 데모를 구동해봤는데, IE8에서 플레이어도 잘 보이고, 재생도 잘 되었습니다. 그래서 저는 애드온을 의심하고,코드를 낱낱이 살펴보았습니다. 하지만 특별한 문제점은 없었습니다.. 다음으로는 jQuery나, html5.js와의 충돌을 의심했으나, 모두 아니었습니다.   그러다가 놀라운 글을 발견했습니다.[3] 결론부터 말씀드리자면, p 태그 안에 audio 태그가 있으면, 그런 오류가 발생한다는 것입니다. 그리고 실제로, 게시물에서 p태그를 제거하자 음성 파일이 잘 재생되었습니다.   몇 가지 연구 끝에 IE8[4]에서는 node.outerHTML, innerHTML 함수가 태그에 따라서 안먹히는 경우가 있기 때문에, 이런 문제가 발생했다는 것을 알게 되었습니다. 그렇다면 게시글에서 p 태그만 지우면 되는데, 중요한 문제는 게시판의 WYSIWYG 편집기가 자동으로 p 태그를 입력해버린다는 것이었습니다. 그래서 audio.js (애드온이 사용하는 라이브러리)에서 outerHTML, innerHTML을 사용하지 ...

c000021a unknown hard error 조치법

  윈도 XP 부팅 중 XP 로고 화면이 표시된 이후에 시스템이 재부팅되는 문제가 발생했습니다. 블루스크린이 표시되지 않았기에 F8을 열심히 눌러서 "시스템 오류 시 자동으로 다시 시작 안함"을 선택해서 부팅해보니, 블루스크린이 나타나고, "c000021a unknown hard error"라는 에러 메시지가 표시되었습니다.   찾아보니, 주된 원인은 윈도 파일 중 ws2help.dll가 바이러스에 걸려서 발생한다고 합니다.[1]그래서 하드디스크를 다른 PC에 연결한 후,동일한 버전의 XP (home/pro, sp1/sp2/sp3)의 ws2help.dll을 복사해 덮어 씌웠지만 증상이 해결되지 않았습니다.   고민하던 차에 [2]의 글을 발견하였고, 다음과 같이 하여 문제를 해결했습니다. 문제가 발생한 컴퓨터의 하드디스크를 다른 컴퓨터에 연결한다. 연결된 하드디스크에서 system32 폴더를 통째로 백업한다. (system32 폴더를 통째로 압축하는 것이 편함) 가상 머신이나 여분의 컴퓨터에 동일한 버전의 XP를 임시로 설치한다. 위 "3"의 컴퓨터에서 system32 폴더 안의 파일/폴더를 모두 복사하여 위 "1"의 하드디스크에 덮어씌운다. 단, config라는 폴더는 복사하지 않는다. 위 "1"의 하드디스크를 다시 원래의 컴퓨터에 연결한 뒤 정상적으로 부팅되는지 확인한다. 안되면 포기하고 윈도를 재설치하거나 "2"에서 백업한 파일들을 이용해 이전 상태로 되돌리고 다른 방법을 찾아본다. 참고   [1] "c000021a Unknown Hard Error 해결", http://foreal.tistory.com/68, 2014-11-18 확인   [2] "STOP : c000021a Unknown Hard Error 해결방법", http://intumyself.tistory.com/137, ...

c++ 변환생성자

c++ 코딩하다가 매우 당혹스러운 일을 겪었습니다. 함수 파라미터에 특정 객체가 들어가야 하는데, 그만 실수로 문자열을 넣었습니다. 보통은 컴파일 에러가 발생했겠지만, 이번에는 그렇지 않았습니다. 심지어 정상동작했습니다. 혹시나 해서 이름이 같은 다른 함수가 있는지 확인해보았지만 아니었습니다. 너무 이상해서 디버깅을 해보니, 파라미터로 문자열을 넘기는 순간, 그 문자열을 가지고 해당 객체를 생성하는 것이 아니겠어요?   네, 변환생성자 때문에 발생한 소동이었습니다. 사실 해당 객체의 클래스에는 문자열을 파라미터로 받는 생성자가 있었고, 이에 컴파일러가 알아서 객체를 생성한 것이었습니다. 생성자 선언에 explicit 키워드를 추가하면 이와 같은 문제를 예방할 수 있습니다. (예: explicit MyClass(CString csText);) 참고 변환시리즈 정리(변환생성자, 변환함수) MSDN - explicit (C++)

XE 용량 초과로 문제 발생 시 조치법.

XE를 사용 중인 웹사이트에서 용량이 꽉 차버려 사이트가 제대로 동작하지 않는 문제가 발생했습니다. 특히 첨부파일 삭제 기능도 동작하지 않고, 관리자 페이지에 접근하려고 해도 다음의 에러 메시지가 나타나면서 접근이 불가능했습니다. Fatal error: Call to a member function getAction() on a non-object in ...(중략)... DB.class.php ... (생략) 용량 문제는 첨부 파일의 경로를 찾아, 직접 지워서 해결 했는데, 저 오류는 사용 가능 용량이 생겼다고 해서 해결되지 않았습니다. 저는 다음의 방법으로 문제를 해결했습니다. XE 루트/files/cache 폴더의 이름을 변경합니다. (예: cache_bak) XE 관리자 페이지로 접근합니다. (http://웹사이트 주소/xe/?module=admin   또는 http://웹사이트 주소/xe/?module=admin&act=dispAdminConfig) 관리자 페이지에서 캐쉬 재생성 작업을 진행합니다. (※ 관리자 페이지가 제대로 나타나지 않는다면 다른 문제이므로 cache 폴더를 복원하고 다른 방법을 찾아봅니다.) 참고: http://www.xpressengine.com/qna/20701795 - 문제 해결 힌트를 얻은 곳. http://www.xeschool.com/xe/step1_52 - 캐쉬파일 재생성 방법 참고. http://www.xpressengine.com/qna/19689609 - 첨부파일을 직접 삭제할 때 참고.

Visual Studio 2010 pdb 파일을 이용해서 디버깅 하는 방법

Visual Studio 2010에서 빌드하면서 exe 파일과 함께 pdb 파일이 생겼습니다. 디버그에 사용된다는 것 외에는 잘 모르고 있었는데, 현재 실행 중인 프로그램을 디버그 할 일이 생겨서 사용법을 찾아보았습니다. 복잡한 내용은 잘 모르겠지만, 다음과 같은 방법으로 디버깅을 시작할 수 있었습니다. 빌드하면서 생성된 exe 파일과 pdb 파일을 잘 보관합니다. (두 파일은 짝을 이룹니다.) 디버그할 exe 파일을 실행합니다. exe 파일과 같은 위치에 "1."의 pdb 파일을 복사해둡니다. Visual Studio 2010을 실행하고, 해당 프로그램의 솔루션을 엽니다. "Windows 작업 관리자"를 실행합니다. 현재 실행 중인 exe 파일의 프로세스를 찾습니다. 찾았으면, 우클릭해서 "디버그"를 선택합니다. 디버거를 연결하겠냐는 확인 창에서 "디버거 연결"을 선택합니다. 그러면 연결할 디버거를 선택하는 화면이 나타나는데, "4."에서 솔루션을 열어둔 인스턴스(Visual Studio 2010 프로그램)를 선택합니다.  ※ 만약 exe 파일과 pdb 파일이 서로 다른 빌드 때 생성된 것이라면 디버깅할 수 없습니다. 참고 Visual Studio 로 디버깅하는 방법 Debugging With Minidump