목록리눅스 (36)
Linux Programmer
랩탑(노트북)에는 터치패드를 켜고 끌 수 있는 펑션키가 존재한다. 랩탑의 펌웨어가 펑션키를 표준적인 방법으로 작동시키는 경우라면 윈도, 리눅스 어디서든지 잘 작동한다. 하지만 비표준적인 방법으로 작성된 경우라면 윈도에서만 작동되고, 리눅스에서는 제대로 작동되지 않을 수도 있다. 예를 들어 아래 삼성 갤럭시북3 사진에 보면 F5 펑션키에 터치패드 그림이 그려져 있는 것을 볼 수 있는데, 아쉽게도 리눅스에서 작동되지 않는다. 다시말해 삼성의 갤럭시북3 랩탑의 Fn-F5 키는 윈도에서는 잘 작동하지만, 리눅스에서는 해당 키를 눌러도 아무런 반응이 없다. 따라서 Fn-F5키 대신에 Ctrl-Super-F5를 누르는 방식으로 우회하는 기능을 만들어보자. 참고로 Super는 키보드의 "윈도키"를 말한다. 0. 작업..
리눅스에서 키크론(keychron) 계열이나 각종 커스텀 키보드 사용시 Function 키인 F1~F12키가 이상 작동하는 경우가 있다. 이상 작동 현상이란 F11키를 눌렀더니 사운드 볼륨이 줄어들거나 하는 것을 말한다. F5를 누르면 키보드 불빛을 제어한다든지 하는 기능도 있다. 예를 들어 아래 사진처럼 키보드 키캡의 Function key 위쪽에 아이콘 그림이 그려있다면 멀티미디어나 특수 기능이 맵핑되어있는 것이다. F10키의 스피커 모양은 볼륨을 끄는 것이고, F11키 스피커 소리가 작은 것은 볼륨을 줄이는 기능, F12키의 스피커 소리가 큰 것은 볼륨을 키우는 기능이다. 이 기능들은 원래 Fn키와 조합해서 사용하는 기능으로 Fn+F11키가 사운드 볼륨을 줄이고, Fn+F12키는 사운드 볼륨을 키우..
touchegg는 애플리케이션별로 three, four finger swipe나 pinch in/out(꼬집는 것처럼 오므리거나 반대로 펴는 행동), tapping을 설정할 수 있어서 매우 편리한 유틸리티이다. 특히 같은 제스처도 애플리케이션별로 다르게 지정할 수 있으므로 매우 편리하다. 여기서는 주로 세손가락 제스처를 사용할 것이므로 GNOME3 기본 제스처랑 충돌이 날 수 있다. 따라서 앞서 작성한 1편의 내용인 GNOME3 swipeTracker.js 설정하고 와야만 한다. 물론 반대로 GNOME3 기본 제스처인 세손가락을 쓰지 않고 모두 4손가락을 touchegg에서 사용한다면 1편의 설정을 무시해도 된다. 다만 아래 touchegg.conf 설정에서 3손가락 설정을 모두 4손가락으로 변경해야만 ..
CentOS7.9의 vim 7.4의 python3 지원 패키지 설치 및 빌드 CentOS 7.9에 설치되는 vim-enhanced 패키지는 python 2.x만 지원하고, python 3는 지원하지 않도록 빌드되어있다. 따라서 python3를 이용하는 플러그인 사용시 에러가 발생한다. 이를 해결하기 위해 vim 소스 파일을 다운 받아서 빌드해도 되지만, 그렇게 되면 패키지 버전 관리도 안되고, 빌드를 위해 각종 라이브러리와 헤더를 설치해야 하므로 귀찮아진다. 따라서 미리 빌드된 CentOS 7.9용 RPM 패키지를 올려둔다. 패키지 압축 파일과 설치법은 조금 아래에 적어두었다. 1. 배경 CMake, make 및 C 관련 프로그래밍 툴 강의를 갔는데, CentOS 7.9에서 당연히 vim ultisnip..
Fedora 31 upgrade 뒤에 한글 입력기가 이상하게 작동하는 문제가 생기는 경우가 있다. 아마 내 기억에 29에서 30으로 업그레이드 했을 때도 마찬가지였던 것 같다. 이게 xkb-options 부분을 커스터마이징 한 경우나 혹은 몇몇 추가 기능을 커스터마이징 한 경우에만 발생하므로 보편적인 일은 아니다. 이 문제의 증상은 구글 크롬(google chrome)에서 쌍자음을 타이핑할 때 문제가 생긴다. 예를 들어 "있"을 타이핑하려고 하면 보통 "이"에서 "shift + ㅅ"을 누르는데, shift를 누르는 순간 단어가 완성되고 "이ㅆ"으로 변경되어버린다. 마찬가지로 "닦"을 타이핑하려고 하면 "다ㄲ"이 되어버린다. 이 문제는 ${HOME}/.config/dconf/user 파일이 꼬여서 문제가 ..
셸의 발전 순서대로 보면 다음과 같다. (shell의 한글 표기로 쉘이라고 적는 경우도 있지만 요새는 셸을 더 많이 쓰는 것 같아서 shell을 셸이라고 표기하겠다) Bourne shell : /bin/sh - POSIX shell C shell : /bin/csh - Sun microsystem (BSD) Korn shell : /bin/ksh bash : /bin/bash zsh : /bin/zsh 1. bash 이전의 셸들 가장 유명한 셸은 초기 유닉스에서 쓰였고, 아직까지도 현역으로 쓰이는 본셸(Bourne shell)이 있다. Steve Bourne이 만들었고, 그 이전에 유닉스의 아버지가 만들었던 Thompson shell이 있지만 지금은 쓰이지 않는다. 본셸은 POSIX 표준에 기본 셸로 정..
Linux를 쓰다보면 caps lock 키를 쓸 일이 별로 없어서 control 키로 변경해서 사용하는 편이다. 그리고 caps lock은 left shift + right shift로 lock하는 기능을 쓴다. 이 설정을 쉽게 하기 위해서는 gnome-tweaks가 설치되어있어야 한다. 텍스트 모드에서 하는 방법도 있지만 매우 귀찮아진다. gnome-tweaks를 실행한 뒤에 키보드 부분으로 이동한다. 여기서 "추가 배치 옵션" 부분을 들어가면 다음과 같은 화면을 볼 수 있다. 그림에서 보이듯이 Ctrl 위치 메뉴에서 "Caps Lock키를 Ctrl키로"를 체크해주면 된다. 그러면 진짜 caps lock을 사용할 일이 있으면 어떻게 해야 하는가? 바로 위에서 말했듯이 양쪽 shift를 동시에 누르는 방..
CentOS7 리눅스 한글 입력기 설정CentOS 7 리눅스의 한글 입력기를 설정하는 방법을 살펴보겠다. 설정은 로그인 할 때 하는 것과 로그인 후에 제어판(control panel)에서 하는 방법이 있다. 어차피 로그인 후에 제어판에서 다시 설정하는 부분이 있으므로 제어판 설정까지 완료해야 제대로 작동한다.참고로 CentOS에서 사용하는 한글 입력기는 ibus-hangul이다. 간혹 해당 패키지가 설치되지 않아서 문제가 생기는 경우도 있으므로 그럴 경우에는 "yum -y install ibus-hangul" 명령어를 실행하여 설치하면 된다. 1. 처음 로그인에서 설정하는 부분우선 CentOS7을 설치시 한글로 설치하면 최초 로그인할 때 한글 설정 창이 나타난다. 이 과정은 큰 의미가 없다. 어차피 뒤에..
리눅스 아재력 or 할배력 테스트 (2023-06-28일 업데이트) 이 테스트는 리눅스 옛날 명령어만 알고 있는지, 아니면 대체된 새로운 명령어도 알고 있는지 알려줍니다. deprecated된 옛날 명령어(일명 아재명령어 or 할배명령어)만 알고 있다면 이제 새로운 명령어와 기능들도 열심히 배우도록 합시다. 0. 사용방법 아래 명령어나 기능 중에 a가 가장 오래된 기능이고, 이후 보기들(b,c,d)은 대체된 새로운 기능이거나 명령어입니다. 예를 들어 문항에서 a, b, c를 모두 알고 있다면 최근 새로운 기능까지 모두 알고 있는 것입니다. Part 1 : 기초 명령어, 셸 1-1. 터미널 화면 clear (or scroll up) a) clear b) 아직도 화면을 지우기 위해 clear를 타이핑하고 있..
Advanced 리눅스 시스템 네트워크 프로그래밍 3판 (2016년 4월 출간) 예제 소스 코드 * 예제 소스 코드 파일 : (2018년 2월 6일 버전) * 압축을 풀면 하위 디렉토리가 생성됩니다. (소스 코드는 xz로 압축되었습니다. tar의 대문자 J 옵션으로 풀 수 있습니다. 아래 명령어를 참고하세요.) 압축 해제 명령 : tar xfJ alsp_3rd_20180206.tar.xz* 생성된 하위 디렉토리에서 make를 명령하면 하위 모든 예제가 컴파일 됩니다.* make clean을 하면 하위 모든 컴파일된 예제의 바이너리가 청소(삭제)됩니다. * 목차 CHAPTER 00 들어가기 전에헤더 파일과 묵시적 선언Feature test macro와 표준유닉스 역사와 표준안, 용어 및 정의 CHAPTER..
* 이 글은 페도라 23 버전에서 제공되는 vim 플러그인 패키지를 이용하여 Vundle.vim 관리 플러그인을 설치하는 방법을 다룬다. 기존의 Vundle.vim 설치 방법과 다른 점은 RPM 패키지로 제공되는 플러그인을 먼저 설치하고 Vundle.vim에서는 따로 플러그인을 중복 설치하지 않도록 한 것이다.(이 글을 쓰는 2016년 3월기준으로 페도라 23이 가장 최신 버전이다.) vim powerline이 뭔지 모르겠다면 2014년도에 쓴 글(링크)을 참고하자. * 목차1. vim과 vim 플러그인 패키지 설치2. Vundle.vim의 설치3. powerline의 설치4. jellybeans 컬러스키마 설치 1. vim과 vim 플러그인 패키지 설치Fedora 22부터 DNF 패키지 관리자가 YUM..
vim quickfix 기능 vim에는 컴파일 에러 메시지를 빠르게 수정할 수 있도록 도와주는 기능이 있습니다. 이를 quickfix라고 부르는데, 개발자들이 좋아하는 기능입니다. vim의 quickfix는 make 명령어와 연동되어 사용되며 :mak 혹은 :mak %< 라고 치면 현재 디렉터리나 편집중인 코드를 빌드하면서 에러메시지를 수집합니다. 아래는 quickfix list의 기능을 보여주는 스크린샷입니다. quickfix command:mak [make argv ] [ make target ] 에러 발생시 해당 라인으로 자동 이동을 해주고 컴파일 에러 메시지를 보여주는 창을 보여줄 수 있습니다. 에러 메시지를 보여주는 창에서 각각의 에러사이를 이동할 수도 있습니다. 손에 잡히는 vim 을 공부하신..
손에 잡히는 vim - 강의용 교안 vim은 Bill Joy가 개발한 vi 에디터의 발전된 형태입니다. (vim = vi improved)리눅스나 유닉스 사용자라면 필수로 알아야만 하는 에디터입니다. vim 에디터 강의용으로 작성되었으며 (PDF, PPTX) 형식입니다. 출처표시에 비상업적용도로 재가공, 재배포 등이 가능합니다. * 히스토리2014-11-07 교본 업로드
* 리눅스에서 엔비디아(nvidia) 그래픽 카드의 드라이버 설치 Last updated on Sat 14 May 2022 리눅스를 공부할 때 vmware, virtualbox를 설치한 뒤에 가상머신으로 리눅스를 설치하고 있는가? 만일 가상머신으로 리눅스를 돌리고 있다면, 중급 이상의 리눅스 실력으로 성장하기 힘들다. 왜냐하면 가상머신은 오류가 발생되지 않도록 vmware, virtualbox에서 호환성이 높은 드라이버를 가상으로 제공하기 때문이다. 그래서 오류 메시지를 경험하지 못하고 리눅스를 사용하게 된다. 그러나 회사나 연구실에서 머신러닝(machine learning)을 위해 CUDA를 사용하거나, 혹은 그래픽 처리를 위해 리눅스를 사용한다면 리눅스를 직접 설치해야만 한다. 허나 직접 설치해보면 ..
awk는 "패턴 검색과 처리언어"로서 독자적인 처리 문법과 언어 구성을 갖춘 툴이다. 문자열을 해석, 자르기, 계산, 정규표현식(REGEX) 등등 다양한 기능을 제공하며, 속도도 훌륭하다. 따라서 대부분의 UNIX, Linux, OSX에서 많이 사용되며, 유능한 프로그래머, 시스템 관리자라면 필수적으로 다루는 유틸리티이다. 본인이 속한 증권업계에서는 데이터나 로그를 분석, 전처리, 후처리 가공을 하는 용도로도 많이 사용한다. 특히 grep, sed는 간단한 문자열 치환이나 삭제 정도의 처리만 가능한데 비해 awk는 문자열이나 패턴을 숫자로 파싱하여 계산하는 작업을 지원한다. awk의 장점은 다음과 같다.숫자(정수, 실수)를 지원한다.삼각함수, 지수, 로그, 제곱근, 랜덤변수 등의 수학적 기능을 제공한다...
정규표현식 (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을 설치하려면 직접 다운로드를 받고 적절한 위치에 복사해야 한다. 하지만 이 과정이 생각보다 귀찮다. 그래서 리눅스의 패키지 관리자들처럼 플러그인의 이름이나 위치만 적어주면, 자동으로 다운로드를 한 뒤에 설치까지 해주는 기능이 탄생했는데, 대표적으로..
리눅스 커널 2.6구조와 원리. 타카하시 히로카즈, 오다 이츠로, 야마하타 이사쿠, 이영희 역, 한동훈 감수, 한빛출판사. 리눅스 커널 2.6 구조와 원리야마하타 이사쿠(YAMAHATA ISAKU),타카하시 히로카즈(TAKAHASI HIROKAZU),오다 이츠로(ODA ITUROU)상세보기 1. 책의 저술 목표이 책은 커널 코드를 분석하는 책이 아니라 커널에 쓰인 기법이나 각종 표준들이 어떤 것들인지 러프하게 소개하는 책이다. 따라서 직접 커널을 개발하기 위한 책보다는 참고서에 가깝다고 본다. 그래서 내용면에서 코드보다 도표가 많은 편이다. 코드 구조는 최소화 하려고 했던 흔적이 보인다.즉 이 책은 나무를 보기보단 숲을 보는, 전체적인 조화를 확인하는 용도이다. 그림을 보면 알겠지만 도식을 연속으로 배치..
실무에서 쓰이지 않지만 시험에서만 출제되는 C언어 시험 문제의 세계를 고발(?)하고자 한다. 고발이라고 하면 좀 자극적이긴 하지만 사실 특별한 내용은 아니다. 대부분 C언어 하시는 분들은 예전부터 생각해온 것일지도... 사실 요새 몇몇 기관의 시험문제를 출제, 감수 하면서 현실과 동떨어진 시험의 세계를 느낀 후 적는 글이다. 어떤 시험을 출제하느냐고 묻지는 말았으면 한다. 보안서약상 구체적인 기관이나 정보를 이야기할 수는 없다. 시험 문제 출제를 할 때면 출제를 요구하는 기관에서 과목, 출제 목표, 세부사항 등을 일일히 정해준다. 따라서 누가 문제를 내든지 비슷한 형태가 나올 수 밖에 없다. 예를 들면 다음과 같은 요구 사항이 있다고 치자. 과목 대분류 소분류 세부 사항/출제 목표 C언어 예약어 연산자 ..
* TOC 부모와 자식 프로세스의 관계 fork와 fork-exec vfork와 문제점 posix_spawn의 등장 2줄 결론 fork란? fork는 유닉스/리눅스 계열에서 새로운 프로세스를 만드는 표준 함수이다. 그런데 fork는 새로운 프로세스를 만들 때 기존 프로세스를 복제하는 방식을 사용한다. 이 때 원본 프로세스를 부모 프로세스(parent process)라고 부르고 새로 복제된 프로세스를 자식 프로세스(child process)라고 부른다. 1. 부모와 자식 프로세스의 관계 현실 세계에서 부모와 자식은 끊을 수 없는 강한 연결점이 있지만, 유닉스 계열의 부모와 자식 프로세스는 그런 것과는 상관이 없이 이름이 지어졌다. 그냥 유전자가 복제되듯이 정적 자원 만을 복제하는 것이라고 생각하면 된다. ..