목록컴퓨터, 풀어그림 (352)
살아가는 이야기
일주일쯤 전에 Windows에서 프로그램 수행 시간을 재는 방법을 게시하였다. timeit이라는 유틸리티 프로그램을 이용하는 방식이었는데, timeit을 이용하려면 Windows 2003 Resource Kit을 설치해야 하는 번거로움이 있었다. 프로그램 설치가 귀찮다면 이미 Windows에 설치되어 있는 PowerShell을 이용하는 방법도 있다. PowerShell의 Measure-Command라는 명령어를 이용하면 프로그램 수행 속도를 잴 수 있다. 예컨대 다음과 같이 Measure-Command를 사용할 수 있다. Measure-Command { echo "Hello?" } 여러 메시지가 나오지만 출력의 맨 끝 행만 확인하면 된다. PowerShell을 사용할 때 단점은 입력 재지정(input r..
choco(Chocolatey, 쵸콜라티)는 Windows용 설치 관리자이다. 데비안의 apt나, 레드햇의 yum, 아치리눅스의 pacman과 유사하다고 생각하면 된다. 다만 이를 사용하려면 별도로 설치해야 하는데, 한 번 choco를 설치한 후에는 이후 choco를 통해 설치하는 여러 프로그램에 대해서는 별도로 PATH를 지정하지 않아도 되므로 매우 편리하다. choco를 설치하기 위해서는 먼저 PowerShell을 관리자용으로 실행해야 한다. 윈도우 검색 창(없으면 Win+S키를 누름)에서 "power"를 입력하여 Windows PowerShell을 검색한 후 관리자로 실행 메뉴를 클릭한다. 그리고 나타나는 사용자 계정 컨트롤 창―경우에 따라서는 작업 표시줄에 방패 모양만 깜빡일 수도 있는데, 이를 ..
교정용 원고를 출력할 때에는 줄 간격을 두 배(double space)로 조절하는 것이 좋다. 그리고 표 등 삽입물의 줄간격을 필요에 맞게 조정해야 할 수도 있다. 이를 할 수 있는 LaTeX 패키지로 setspace가 있다. 프리앰플에 setspace를 사용하도록 설정한 다음 필요한 부분에서 \begin{spacing}{간격} ... \end{spacing}으로 지정하면 된다. \usepackage{setspace} \singlespacing \begin{document} ... \begin{spacing}{1.125} … \end{spacing} ... \end{document} 문서 전체의 줄간격을 조정하고 싶다면 프리앰블(\begin{document} 위)에 \singlespacing, \oneh..
워드 프로세서 한글(HWP, HNC 오피스) 프로그램을 사용하다 보면 철자 검사로 인해 나타나는 빨간 줄 때문에 불편한 경우가 있다. 특히 파일의 일부를 캡처해야 할 때, 빨간 줄은 제거하고 캡처하는 것이 좋다. 이 글은 이런 경우를 위한 글이다. HWP에서 빨간 줄을 제거하려면 "도구→환경 설정(톱니바퀴)" 메뉴를 선택한다. 그럼 다음과 같은 대화창이 나타나는데, 여기에서 "편집" 탭의 "편집" 섹션, "맞춤법 도우미 작동"의 체크를 해제한다. 그리고 가볍게 "설정" 버튼을 누르면 다음과 같이 빨간 줄이 사라진다. 이제 원하는 대로 깔끔하게 캡처할 수 있다.
C의 gets는 매우 사용하기 편리하지만, 초기 설계의 문제로 인해 버퍼 오버플로(buffer overflow: 지정한 영역을 넘어 기록하는 현상)가 발생한다는 치명적 오류가 있다. 그래서 지속적으로 지원 중단 예정(deprecated) 함수로 지정되었다가 C11 이후로는 아예 지원되지 않는다. 문제는 이전에 gets를 이용하여 사용하던 코드의 경우 다시 작성해야 하는데, 이때 fgets를 사용해야 한다. fgets의 프로토타입은 다음과 같다. char *fgets(char *버퍼, size_t 크기, FILE *입력스트림); 따라서 gets로 다음과 같이 작성된 코드가 있다고 하면 gets(line); 다음과 같이 다시 작성해야 한다. fgets(line, sizeof line, stdin); 다만 줄..
프로그램 수행 성능을 알아 보기 위해서는 실제 수행 시간을 재는 것이 가장 확실한 방법이다. 물론 실제 수행 시간은 시행 시마다 다를 수 있지만, 여러 번 반복하여 재면 해당 프로그램의 수행 시간을 얼추 가늠할 수 있다. 10회 정도의 수행 시간을 잰 후 평균 수행 시간을 계산하면 비슷한 다른 프로그램의 수행 시간을 비교하는 데 사용할 수 있다. 대부분의 운영체제에는 프로그램의 수행 시간을 재는 유틸리티 프로그램이 존재하는데, 윈도(Windows)의 경우에는 어떻게 시간을 잴 수 있을까? 과거 윈도 서버 2003(Windows Server 2003)에는 Resource Kit Tools라는 도구 모음에 timeit이라는 유틸리티가 제공되었다고 한다. timeit은 수행 시간 정보뿐 아니라 시스템 호출 수..
2021년 추석 기념으로 프로그래밍 언어 인기도를 게시한다. 한동안 저장하지 못했던 프로그래밍 언어 인기도를 올해는 생각이 나서 측정해 보았다. 최근 게시글과 마찬가지로 TIOBE 인덱스(https://www.tiobe.com/tiobe-index/) 기준이다. 작년에 비해 조금 낮아지긴 했지만 아직 C가 부동의 1위이다. Fortran과 Delphi, Visual Basic의 약진이 놀랍다. 이후 50개의 인기 언어는 다음과 같다. 상위 10위 표에 작년 순위가 함께 게시되어 있어서 다행이라고 생각했었는데, 장기간 순위가 별도로 나와 있었다. 그래서 그것도 함께 게시한다. 장기간 순위를 보면 C/C++와 Java의 영향력이 독보적이다. 아직 대세는 C 언어 그룹임을 알 수 있다. 배우기 쉬운 BASIC..
C로 작성된 운영체제답게 Unix에서는 프로세스의 반환 값(종료 코드)을 이용하여 여러 명령어를 조합할 수 있다. 종료 코드는 정수 값인데, 그래서 초기 C에서는 함수 정의 시 타입을 적지 않으면 int로 간주했었다. 여튼 프로세스의 종료 코드는 여러 가지로 유용하다. bash에서는 변수 $?의 값을 통해 종료 코드를 알 수 있다. 다음은 Msys2에서 종료 코드를 확인한 화면이다. 그럼 Windows에서는 프로세스의 종료 코드를 어떻게 확인할 수 있을까? 정확히 어느 버전부터인지는 몰라도 %errorlevel%이라는 변수를 통해 확인할 수 있다. 실제 변수명은 errorlevel이고 이를 사용하려면 변수명을 %로 감싸야 한다. 초기 너무 돈을 밝힌다는 비난 때문인지 몰라도, 환경 변수를 참조할 때 Wi..