- 0x0000007b
- 2차세계대전
- 3.20해킹
- 4대강
- 502 error
- 53빌딩
- 7840hs
- 88체육관 수영장
- ABI
- abortive close
- abortive shutdown
- AHCI
- akmods
- ALC1220
- alma linux
- alternatives
- AM4 메인보드
- AMD
- amd 7840hs
- amd 그래픽 게임용
- amd 내장 그래픽 최적화
- anonymous file
- API
- apple.com
- APT
- apt-get
- Armagnac
- Asrock
- ASTALIFT
- audacious player
- Today / Yesterday
- /
- Total
목록유닉스 (17)
Linux Programmer
셸의 발전 순서대로 보면 다음과 같다. (shell의 한글 표기로 쉘이라고 적는 경우도 있지만 요새는 셸을 더 많이 쓰는 것 같아서 shell을 셸이라고 표기하겠다)Bourne shell : /bin/sh - POSIX shellC shell : /bin/csh - Sun microsystem (BSD)Korn shell : /bin/kshbash : /bin/bashzsh : /bin/zsh 1. bash 이전의 셸들가장 유명한 셸은 초기 유닉스에서 쓰였고, 아직까지도 현역으로 쓰이는 본셸(Bourne shell)이 있다. Steve Bourne이 만들었고, 그 이전에 유닉스의 아버지가 만들었던 Thompson shell이 있지만 지금은 쓰이지 않는다.본셸은 POSIX 표준에 기본 셸로 정해져서 POS..
vim quickfix 기능 vim에는 컴파일 에러 메시지를 빠르게 수정할 수 있도록 도와주는 기능이 있습니다. 이를 quickfix라고 부르는데, 개발자들이 좋아하는 기능입니다. vim의 quickfix는 make 명령어와 연동되어 사용되며 :mak 혹은 :mak %< 라고 치면 현재 디렉터리나 편집중인 코드를 빌드하면서 에러메시지를 수집합니다. 아래는 quickfix list의 기능을 보여주는 스크린샷입니다. quickfix command:mak [make argv ] [ make target ] 에러 발생시 해당 라인으로 자동 이동을 해주고 컴파일 에러 메시지를 보여주는 창을 보여줄 수 있습니다. 에러 메시지를 보여주는 창에서 각각의 에러사이를 이동할 수도 있습니다. 손에 잡히는 vim 을 공부하신..
정규표현식 (Regular Expression - REGEX) 강의 발표 자료입니다. * 정규표현식은 문자열 패턴을 찾거나 수정하는데 사용되는 표준 입니다. C, C++, 쉘 프로그래밍, perl, python, java, ruby, 비주얼베이직, C# 등 거의 대부분의 언어가 지원하고 있으며 vi, vim, ultra editor등 다수의 에디터에서도 지원하고 있습니다. 아래와 같은 패턴 표현식이 정규표현식의 대표적인 예입니다. EBNF 표기법을 배우셨다면 어떤 형태인지 쉽게 인지할 수 있습니다.a.cdef? [a-zA-Z]+ .*boy (caret|dalar) \(.*/\)[^/]* ^Do.*\?$ http://\([a-zA-Z0-9.-]\)/.* http://.*\?(.*) 정규표현식의 패턴을 카테..
이 글은 2014년도에 쓰여진 글로서 CentOS 6.4 에서 설치했던 글이다. CentOS 7.1까지는 동일한 방법으로 설치할 수 있지만 Fedora 22 이후라면 좀 구식의 방법이다. Fedora22 이후의 버전이라면 2016년에 포스팅한 "Fedora22에서 vim 플러그인 관리 Vundle.vim" 글을 참고하라. 1. Vundle.vim이란? vim에서 plugins의 설치, 삭제를 도와주는 플러그인이다. Vundle.vim이 없이 vim plugin을 설치하려면 직접 다운로드를 받고 적절한 위치에 복사해야 한다. 하지만 이 과정이 생각보다 귀찮다. 그래서 리눅스의 패키지 관리자들처럼 플러그인의 이름이나 위치만 적어주면, 자동으로 다운로드를 한 뒤에 설치까지 해주는 기능이 탄생했는데, 대표적으로..
실무에서 쓰이지 않지만 시험에서만 출제되는 C언어 시험 문제의 세계를 고발(?)하고자 한다. 고발이라고 하면 좀 자극적이긴 하지만 사실 특별한 내용은 아니다. 대부분 C언어 하시는 분들은 예전부터 생각해온 것일지도... 사실 요새 몇몇 기관의 시험문제를 출제, 감수 하면서 현실과 동떨어진 시험의 세계를 느낀 후 적는 글이다. 어떤 시험을 출제하느냐고 묻지는 말았으면 한다. 보안서약상 구체적인 기관이나 정보를 이야기할 수는 없다. 시험 문제 출제를 할 때면 출제를 요구하는 기관에서 과목, 출제 목표, 세부사항 등을 일일히 정해준다. 따라서 누가 문제를 내든지 비슷한 형태가 나올 수 밖에 없다. 예를 들면 다음과 같은 요구 사항이 있다고 치자. 과목 대분류 소분류 세부 사항/출제 목표 C언어 예약어 연산자 ..
* TOC부모와 자식 프로세스의 관계fork와 fork-execvfork와 문제점posix_spawn의 등장2줄 결론 fork란?fork는 유닉스/리눅스 계열에서 새로운 프로세스를 만드는 표준 함수이다. 그런데 fork는 새로운 프로세스를 만들 때 기존 프로세스를 복제하는 방식을 사용한다. 이 때 원본 프로세스를 부모 프로세스(parent process)라고 부르고 새로 복제된 프로세스를 자식 프로세스(child process)라고 부른다. 1. 부모와 자식 프로세스의 관계현실 세계에서 부모와 자식은 끊을 수 없는 강한 연결점이 있지만, 유닉스 계열의 부모와 자식 프로세스는 그런 것과는 상관이 없이 이름이 지어졌다. 그냥 유전자가 복제되듯이 정적 자원 만을 복제하는 것이라고 생각하면 된다.정적 자원에는 ..
현재 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의 일반 모드, 입력 모드와 같이 모드가 바뀔 때 색상을 다르게 표시해줘서 가독성을 높여준다. ..
리눅스나 유닉스에서 사용되는 메시지큐는 XSI와 POSIX 두가지 방식이 있다. 이 두 메시지큐의 모델과 프로그래밍 방식에 대해 간략하게 살펴보자. 1. 유닉스 표준과 IPC 현재 유닉스 계열(리눅스 포함)은 OpenGroup의 SUS(Single UNIX Specification) 표준을 따르고 있다. SUS는 기존에 나왔던 유닉스 계열의 다양한 표준인 POSIX, SVR4(SysV Release4), BSD 등의 표준을 통합했기 때문에 같은 기능이 중복된 경우가 꽤 있다. 그 중에서도 IPC(Inter-Process Communication) 기법이 대표적이다. IPC는 좁은 의미로는 세마포어, 공유메모리, 메시지큐를 다루고 넓은 의미로는 파일, 소켓, 메모리맵 등을 포함한다. 하지만 일반적으로 IP..
gettimeofday는 유닉스, 리눅스 시스템 프로그래밍에서 시간을 구할 때 쓰는 함수이다. 마이크로초(백만분의 1초)단위로 구할 수 있는 기능을 가지고 있어서 많이 사용되는 함수이다.그러나 앞으로 gettimeofday는 지양해야 할 함수가 되었다. 왜냐하면 gettimeofday는 2008년도 유닉스 표준인 SUSv4-2008에서 앞으로 제거될 구식(obsolescent) 함수로 지정했기 때문이다. 물론 하위 호환성을 위해 gettimeofday 함수는 계속 제공될 것이다. 하지만 몇몇 시스템에서는 기본 라이브러리에서 제거되고, 구식 라이브러리를 따로 포함해야 사용할 수 있게 될지도 모르기 때문에 멀티 플랫폼 용으로 개발된다든지 하는 경우라면 gettimeofday를 쓰지 않는 편이 좋다. 참고로 ..
원본 이미지 출처 : 손에 잡히는 vim 인사이트 출판사 원본 이미지 크기 : 3472x2546 , 2710x1751"손에 잡히는 vim" 책 맨 뒤에 있는 vim 키맵 단축키 모음입니다.(인터넷에 돌아다니는 이미지를 인사이트에서 예쁘게 재편집한 것입니다.) 인사이트 출판사에서 제작한 원본 이미지의 바탕이 아름다운 블랙 바탕이라 출력, 복사할 때 토너 범벅이 됩니다. 그래서 옅은 회색, 흰색으로 변경한 이미지를 올려둡니다. (인사이트 출판사에 올려진 블랙 바탕의 이미지에는 오타가 있으니 각 그림 파일의 수정 내역을 참고하시기 바랍니다)1. 명령어 단축키📌 그림 파일의 수정내역2013.01.07 숫자 0과 닫힌 소괄호")"의 오류 수정함 (zelon님)2024.12.03 원본 그림 파일 재업로드 2. 이..
얼마전 스티브 잡스가 눈을 감았는데, 그 보다 더 위대한 업적을 남기신 데니스 리치(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 부분 (표의 가장 아랫..
*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..