목록컴퓨터 (52)
살아가는 이야기
C 프로그램을 작성하다 보면 자신이 작성한 파일이 아닌데도 라이브러리의 특정 헤더 파일에서 오류가 나는 경우가 있다. 특히 오류 메시지가 이 글 제목처럼 syntax error before numeric constant 이라면 #define 문을 잘못 사용했을 수 있다. 즉 특정 헤더 파일에서 사용하는 이름(identifier)과 같은 이름을 #define 상수로 정의한 경우에 위와 같은 오류가 발생한다. 이럴 경우에는 오류가 난 헤더 파일을 찾아서 오류 위치를 확인한다. 그러면 자신이 무엇을 잘못 정의했는지 쉽게 판단할 수 있다.
컴퓨터 프로그램의 시간 복잡도를 계산할 때, 가장 많이 사용되는 것은 최악 시간 복잡도(worst-case time complexity)다. 어떤 입력이 들어왔을 때, 가장 오래 걸리는 시간을 추정하는 것이다. 그 다음으로 많이 사용되는 것은 평균 시간 복잡도(average-case time complexity)다. 시간을 가장 많이 끄는 입력이 천 번에 한 번꼴로만 발생한다면 모든 입력을 최악 조건으로 생각할 필요는 없기 때문이다. 할부 시간 복잡도(amortized time complexity)는 각 입력의 처리시간을 고려한다는 점에서 평균 시간 복잡도와 유사하다. 그러나 각 입력이 들어올 빈도를 별도로 고려하지 않는다는 점에서 평균 시간 복잡도와는 차이가 있다. 할부 시간 복잡도를 계산할 때는 각 ..
프로그래밍 언어를 구현하는 방법 중에서 인터프리터(해석기) 방식이 있다. 사용자가 입력한 프로그램을 읽고 값을 계산한 다음 출력하는 일을 반복한다. 이렇게 읽고(read), 계산하고(evaluate), 출력하는(print) 반복 구조를 REPL(read-eval-print loop)이라고 한다. REPL을 REPL 루프라고 부르기도 한다. 외가를 외갓집으로 부르는 것처럼 루프란 말을 반복하여 부른다. REPL은 CPU의 fetch-decode-execute 사이클과 유사하다(최홍석 2008). 따라서 인터프리터는 사실 하드웨어를 높은 수준으로 끌어올린 것이라고 할 수 있다. 그래서 바이트코드를 수행하는 인터프리터를 가상기계(virtual machine)이라고 부르기도 한다. 가상기계는 JVM(Java 가..
윈도우의 명령 프롬프트(cmd)를 그냥 실행하면 윈도우 제목이 다음과 같이 나온다. C:\WINDOWS\system32\cmd.exe 별로 보기에 좋지 못할 뿐만 아니라 거의 도움이 되지 않는 제목이다. 명령 프롬프트의 제목을 바꾸고 싶다면 명령 프롬프트 창 안에서 다음과 같은 명령어를 수행하면 된다. > title Compiler 또 명령 프롬프트를 실행할 때 제목을 지정할 수도 있다. 다음과 같이 /k title 옵션을 사용하면 된다. > cmd /k title Compiler 이렇게 제목을 바꿔 놓으면 Alt-Tab으로 윈도우를 선택할 때 큰 도움이 된다.
Microsoft Visual Studio 6.0의 Common/Tool 폴더에 depends.exe라는 도구가 있다. 이 도구를 사용하면 실행파일이 필요로 하는 dll을 검사해 준다. 예를 들어서 hello.exe가 어떤 dll을 사용하는지 파악하려면 다음과 같이 사용하면 된다. > depends hello.exe명령어 패스가 없다는 오류가 나온다면 다음 vcvars32.bat 파일을 먼저 수행하자. > vcvars32vcvars32.bat 파일은 VC98/Bin 폴더에 있다.
이틀에 걸쳐 beamer를 설치하고 시험가동에 성공하였다. beamer는 LaTeX으로 슬라이드를 만들 때 사용하는 패키지다. 본래 LaTeX에는 slitex이 있지만, 여기에 애니메이션 효과, 동영상 삽입 등 여러 다양한 기능을 할 수 있다고 한다. 자동 패키지 업데이트가 되는 TeX 시스템을 사용한다면 그냥 예제 tex 파일만 컴파일해도 패키지가 자동으로 설치된다. 그렇지 않은 시스템은 다음 방법에 따라 설치한다. 1. CTAN 사이트에서 beemer.zip 파일을 다운로드하여 \texmf\tex\latex\beamer 폴더에 풀어 놓는다. http://www.ctan.org/tex-archive/macros/latex/contrib/beamer/ 2. CTAN 사이트에서 xcolor.zip 파일을 ..
오랫만에 LaTeX을 사용하다가 다음과 같은 제목과 같은 오류가 발생했다. algorithmicx 패키지에서 발생하는 오류인데, 아무리 봐도 오류 원인을 찾을 수 없었다. 오류 내용을 조금 자세히 적으면 다음과 같다. ! Missing \endcsname inserted. \protect l.636 \algnewlanguage{default} % 원인은 hangul 패키지였다. hangul 패키지와 algorithmicx 패키지가 충돌하는 것이 원인이다. 원인을 해결하려면 hangul 패키지 대신 kotex 패키지를 사용하거나 hfont를 사용하면 된다. 그러나 hfont를 사용하면 전체 레이아웃이 바뀌기 때문에 완전한 해결 방법이라고 볼 수는 없다.