목록리눅스 (36)
Linux Programmer
현재 vim-powerline보다는 vim-airline이 좀 더 괜찮습니다. 저도 현재는 vim-airline을 사용하고 있습니다. 설치 방법은 비슷합니다.(왜냐하면 vim-powerline으로부터 파생되었기 때문입니다.) - 2014.06.15 fedora22 부터는 RPM 패키지로 제공되므로 RPM 패키지로 설치하는 방법을 참고하기 바랍니다. - 2016.03.13 - "페도라 23에서 vim powerline 설치하기" http://sunyzero.tistory.com/241 vim-powerline은 하단의 상태바(status bar)를 예쁘게 꾸며주는 플러그인이다. powerline을 사용하면 vim의 일반 모드, 입력 모드와 같이 모드가 바뀔 때 색상을 다르게 표시해줘서 가독성을 높여준다. ..
Advanced 리눅스 시스템 네트워크 프로그래밍 오탈자 정오표(최근 업데이트 목록은 맨 아래의 history를 참고해 주시기 바랍니다.) * p.126 3번째 문단 수정전 수정후 posix_madvise는 addr부터 len까지의 메모리 공간에 대해 ...생략... advise에 사용 가능한 힌트는 표 4.5에 정리해보았다. posix_madvise는 addr부터 len까지의 메모리 공간에 대해 ...생략... advise에 사용 가능한 힌트는 표 5.5에 정리해보았다. * p.156 4번째 문단 수정전 수정후 이 기능은 기존 세마포어와는 역으로 작동하여 세마포어 값이 0이면 깨어나고 양수면 잠복하게 된다. 이런 다양한 기능 덕분에 ISI 세마포어는 아직도 많이 사용되는 기능이다. 이 기능은 기존 세마..
리눅스나 유닉스에서 사용되는 메시지큐는 XSI와 POSIX 두가지 방식이 있다. 이 두 메시지큐의 모델과 프로그래밍 방식에 대해 간략하게 살펴보자. 1. 유닉스 표준과 IPC 현재 유닉스 계열(리눅스 포함)은 OpenGroup의 SUS(Single UNIX Specification) 표준을 따르고 있다. SUS는 기존에 나왔던 유닉스 계열의 다양한 표준인 POSIX, SVR4(SysV Release4), BSD 등의 표준을 통합했기 때문에 같은 기능이 중복된 경우가 꽤 있다. 그 중에서도 IPC(Inter-Process Communication) 기법이 대표적이다. IPC는 좁은 의미로는 세마포어, 공유메모리, 메시지큐를 다루고 넓은 의미로는 파일, 소켓, 메모리맵 등을 포함한다. 하지만 일반적으로 IP..
vmware로 작동하는 시스템을 사용할 일이 생겼는데, 해상도가 이상했다. 모니터 자체의 해상도는 1920x1080인데 리눅스 시스템 설정의 해상도 리스트에 1920x1200까지만 있고 1920x1080가 없었다. 그래서 xorg 패키지의 버그인가 해서 이것저것 패키지를 업데이트 해보기도 했는데 결국 안됐다. 검색해보니 해결책이 있었다. (http://pastebin.com/ZjuHkK44) 원문을 보기 귀찮은 사람을 위해 요약하자면 /etc/X11/xorg.conf 파일에 다음과 같은 코드를 넣어두면 시스템 설정의 해상도 리스트에 1920x1080이 나타난다. Section "Device" Identifier "Configured Video Device" EndSection Section "Monito..
gettimeofday는 유닉스, 리눅스 시스템 프로그래밍에서 시간을 구할 때 쓰던 함수이다. 마이크로초(백만분의 1초)단위로 구할 수 있는 기능을 가지고 있어서 많이 사용되는 함수이다. 그러나 앞으로는 gettimeofday는 사용하지 말아야할 함수가 되었다. 왜냐하면 gettimeofday는 2008년도 유닉스 표준인 SUSv4-2008에서 앞으로 제거될 구식(obsolescent) 함수로 지정했기 때문이다. 물론 하위 호환성을 위해서 gettimeofday 함수는 계속 제공될 것이다. 하지만 기본 시스템 라이브러리에서는 제거되고, 구식 라이브러리를 따로 포함해야 사용할 수 있게 될지도 모르기 때문에 차후에는 gettimeofday는 쓰지 않는 편이 좋다. 참고로 지금까지의 표준안의 행보로 봤을 때 ..
Advanced 리눅스 시스템 네트워크 프로그래밍 (2nd Edition) 예제 소스 코드 예제 소스 코드 파일 : (2014년 8월 16일 수정판) * 압축을 풀면 하위 디렉토리가 생성됩니다. * 생성된 하위 디렉토리에서 make를 명령하면 하위 모든 예제가 컴파일 됩니다. * make clean을 하면 하위 모든 컴파일된 예제의 바이너리가 청소(삭제)됩니다. 2014-08-1610장 리얼타임 확장 : aio_list.c aio_list_sig.c에서 치명적인 버그가 발견되어 수정되었습니다. 자세한 내용은 정오표에 업데이트 될 것이니 참고하시기 바랍니다. * 2판은 약 200여 페이지가 새로 추가되어 부득이하게 책 무게가 늘었습니다. 또한 기존 내용중에서도 수정, 보완된 것으로 인해 4~50% 정도가 ..
원본 이미지 출처 : http://blog.insightbook.co.kr/217 원본 이미지 크기 : 3472x2546 , 2710x1751 "손에 잡히는 vim" 책 맨 뒤에 있는 vim 키맵 단축키 모음입니다.(인터넷에 돌아다니는 이미지를 인사이트에서 예쁘게 재편집한 것입니다.) 인사이트 출판사에서 제작한 원본 이미지의 바탕이 아름다운 블랙 바탕이라 출력, 복사할 때 토너 범벅이 됩니다. 그래서 옅은 회색, 흰색으로 변경한 이미지를 올려둡니다.1. 명령어 단축키 2013.1.7 숫자 0과 닫힌 소괄호의 오류 수정함 (zelon님) 2. 이동 단축키 바탕 화면으로 저장해두면 딱 좋을 듯 합니다. 이외의 참고 사이트 : http://saelly.tistory.com/category/%E2%97%88%2..
얼마전 무심코 mpstat 명령을 실행했는데 시스템에 아직 설치가 안된 상태였다. 그런데 그냥 명령어가 실패했나부다 했는데........ 다음과 같은 친절한 메시지가 나온다. # mpstat bash: mpstat: command not found... Install package 'sysstat' to provide command 'mpstat'? [N/y] * Running.. * Resolving dependencies.. * Downloading update information.. mpstat명령이 들어있는 sysstat 패키지를 설치할 것이냐고 물어보는 것이 아닌가? 언제부터 추가된 기능인지는 모르겠으나 새삼 편리해서 놀랬다. 리눅스가 이렇게 친절해도 되는건가? ^^ 왠지 까칠한 리눅스가 더 ..
얼마전 스티브 잡스가 눈을 감았는데, 그 보다 더 위대한 업적을 남기신 데니스 리치(Dennis Ritchie)도 눈을 감았다.(향년 71세, 1941년 9월 9일 – 2011년 10월 12일) 일반인들에게는 애플을 창업한 스티브 잡스가 더 위대하고, 더 많이 알려져있겠지만, 업적으로만 보면 스티브 잡스보다 훨씬 훌륭한 분이 바로 데니스 리치이다. (위키 참조: http://en.wikipedia.org/wiki/Dennis_Ritchie) 그의 가장 큰 업적은 많은 사람들이 알고 있는 C언어로서 이것이야말로 현대적인 컴퓨팅 환경을 있게한 프로그래밍 언어의 조상이며 살아있는 전설이다. 만일 C언어가 없었다면 이렇게 발전된 컴퓨팅 환경이 오기 힘들었을 것이다. 지금의 리눅스, 윈도우즈, 맥의 OSX 등등 ..
우리가 사용하는 수 많은 에디터들 중에 가장 좋은 에디터란 어떤 것일까? 하지만 이런 질문은 좀 잘못된 질문이다. 왜냐하면 가장 좋은 에디터라는 것은 특정 분야에 따라서 달라지기 때문이다. 그렇다면 이번에는 질문을 바꿔서 general하게 사용할 수 있는 2위의 쓸만한 에디터는 무엇일까? 이에 대한 답으로 위의 4컷 만화가 생각난다. 이는 vim.org에 있는 만화인데, 너무 심플하지도 않고 너무 무겁지도 않은 에디터가 좋다는 것을 보여주고 있다. 개인적으로 2위의 쓸만한 에디터가 갖춰야 하는 조건부터 나열해보자.(이건 개인적인 생각이다. 하지만 많은 동료들도 공감했던 이야기이다.) 1) 가벼워야 한다. 2) 많은 플랫폼에 포팅되어 있어야만 한다. 3) 텍스트 환경에서도 가능해야 한다. 4) 확장이 가능..
예전에 위키에 TS(Thread-Safety) 내용중에 잘못된 내용이 있는 것을 알게되었다. 까맣게 잊고 있다가 누구에게 TSF(Thread-Safe-Function)알려주다가 위키를 참고하라고 했다. 문득 생각이 나서 다시 위키 내용을 보았다. http://en.wikipedia.org/wiki/Thread_safety 위 링크를 가보면 재진입(reentrant)에 대해 잘못 올라와 있는 내용은 삭제되었다. 잘못된 내용이란 재진입은 만족하지만 쓰레드 안전(thread-safety)은 만족하지 않는 코드가 있다고 하는 것이었다. 하지만 실상은 재진입은 쓰레드 안전을 충족하고 나아가 비동기 시그널에서도 제대로 작동하는 더 엄격한 규약을 만족하는 코드를 말한다. 히스토리를 살펴보니 reentrant에 대해 ..
이 글은 2008년도에 개정된 POSIX.1-2008 표준에 추가된 함수, dprintf에 대해 소개하는 글입니다. TOC 1. 형식화된 입출력에서 printf 란? 2. printf와 고수준 파일 처리 3. 새로운 형식화된 출력 dprintf 4. 결론 과거 타자기부터 컴퓨터까지 수 많은 발전 중에 가장 중요한 것중에 하나는 데이터를 정확하고 멋드러지게 출력하는 것이었다. 그러다보니 프로그래밍에서 빠질 없는 것이 바로 형식화된 입출력(Formatted Input/Output)이다. (형식화된 입출력이란 데이터의 형태를 변환하여 읽거나 출력하는 것으로 로케일 변환, 자릿수 맞춤, 들여쓰기(tab) 등등의 기능을 말한다.) 1. 형식화된 입출력에서 printf 란? 형식화된 입출력에서 printf는 출력 ..
* 개요 taglist (http://www.vim.org/scripts/script.php?script_id=273)는 소스 코드를 분석해주는 vim 플러그인입니다. 이 플러그인은 ctags 기능을 사용하므로 시스템에 필히 ctags가 있어야 합니다. 리눅스나 유닉스 계열은 대부분 ctags가 설치되어있는 경우가 많습니다. 따라서 taglist 플러그인을 설치하는 것이 간단하지만, ctags를 사용하지 않는 윈도계열에서는 ctags를 따로 설치해줘야만 합니다. "손에 잡히는 vim"에서는 이에 대한 부분이 언급되어있지 않았기에 따로 적어두도록 하겠습니다. * 윈도에서 ctags 설치 윈도 계열에서 ctags가 없으면 tagList는 그림처럼 "Taglist: Exuberant ctags (http://..
"손에 잡히는 vim" 책 소개는 출판사 블로그(http://blog.insightbook.co.kr/217)를 참고해주세요. 책에서 오탈자나 내용상의 오류를 발견하시면, 여기에 댓글로 남겨주시거나, 메일로 보내주시면 정리해서 올리도록 하겠습니다. * 오탈자 리스트 (마지막 변경 : 2018년 5월 20일) (페이지 17) Note 부분 오류 부분 정정 후 현재 작업 강제 종료 (디버깅용) 현재 작업 강제 종료 (디버깅용) * 참고 : CTRL-Q는 터미널의 스크롤락 정지(CTRL-S)를 resume하는 기능입니다. (페이지 50) 표 3.7 입력 모드 예 부분 오류 부분 정정 후 :help i_ :help i_CTRL-N (페이지 89) 표 5.4 창 분할 명령어 정리의 vnew 부분 (표의 가장 아랫..
Fedora13에서는 spin 배포판 지원이 활발해졌습니다. 여러 다양한 목적에 맞게 spin된 배포판을 http://spins.fedoraproject.org/에서 볼 수 있습니다. (spin에는 데스크탑 화면에 따른 형태, 모바일 최적화, 보안 강화판등 여러 용도의 페도라가 지원됩니다.) * 설치 방법 추가 인터넷을 이용해서 설치하는 방법이 추가되었습니다. 사용자는 http://boot.fedoraproject.org 에서 작은 부트 이미지로 부팅하면 나머지는 필요에 따라서 인터넷으로 바로 다운받아서 설치합니다. 혹 Fedora 설치에 앞어서 try out 하려면 live CD (약 700M남짓)으로 부팅해보기 바랍니다. 그리고 마음에 맞는다면 설치 DVD로 설치해보세요. live CD는 http:/..
*TCP auto tuning 네트워크 라인 속도가 충분히 빠르다면 TCP 소켓의 버퍼가 클수록 전송속도에서 유리해진다. 그러나 프로그래머가 일일히 네트워크 라인 속도를 체크하여 소켓 버퍼를 조정하도록 프로그래밍 하는 것은 매우 귀찮은 일이다. 따라서 리눅스나 최근 운영체제들은 운영체제에서 전송속도를 감지하여 자동으로 소켓 버퍼의 크기를 늘려주거나 반대로 줄여주어 쓸데없는 메모리 낭비를 막아주는 기능이 도입되었다. 리눅스에서는 이를 TCP auto tuning이라고 하며 Linux 2.4.16 or 2.6.8 이후부터 제공되었다. TCP auto tuning의 리눅스 커널 설정 항목 값 설명 net.ipv4.tcp_moderate_rcvbuf boolean : 0=off, 1=on 수신버퍼에 TCP au..