이 글은 Phoronix 벤치마크 하기 에 대한 글 입니다. Phoronix 는 리눅스 벤치마크 테스트 툴 입니다. 이툴은 하드웨어 벤치마크와 소프트웨어 벤치마크를 모두 지원 합니다. 하드웨어 벤치마크는 새로운 사양의 서버가 들어왔을때에 CPU, RAM 대역폭, DISK I/O 성능들을 측정을 말하며 소프트웨어 벤치마크는 GCC 컴파일러, Kernel 성능들을 측정하는 것일 말합니다. Phoronix 의 성능측정 결과는 HTML 파일로 저장이 되며 https://openbenchmarking.org 자동으로 포스팅하는 기능이 있어 여러사람과 결과를 공유할 수 있습니다. Installation 설치환경은 CentOS 6 입니다. CentOS 의 경우에 Epel Yum 저장소를 추가하면 다음과 같이 Phoronix […]
powerline vim 플러그인 설치
vim 를 사용하다보면 상태바에 많은 정보를 표시해주면 좋습니다. 이를 위해서 .vimrc 에다가 많은 설정을 사용해서 사용하지만 이것을 아예 Plugin으로 할 수 있도록 제공해주고 있습니다. Vundle 설치 vim 플로그인을 쉽게 설치하고 제거하기를 도와주는 플로그인 매니저중에 Vundle 를 사용하겠습니다. 설치는 다음과 같이 해줍니다.
1 2 3 |
$ mkdir -p ~/.vim/bundle $ cd ~/.vim/bundle $ git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim |
설치는 이와같이 Vundle.vim 파일을 넣어주면 끝납니다. .vimrc 파일 수정 인터넷을 보면 다양하게 .vimrc 파일이 있습니다. 이 파일에는 어떤 플러그인을 할지도 정의되어 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
syntax on set nocompatible set hls set scs set visualbell set ignorecase "set laststatus=2 "set statusline=%<%F%h%m%r%h%w%y\ %{strftime(\"%Y/%m/%d-%H:%M\")}%=\ col:%c%V\ ascii:%b\ pos:%o\ lin:%l\,%L\ %P filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'gmarik/Vundle.vim' Plugin 'Syntastic' Plugin 'Shougo/neocomplete' Plugin 'Shougo/neosnippet' Plugin 'Shougo/neosnippet-snippets' Plugin 'vim-addon-manager' Bundle 'davidhalter/jedi-vim' Bundle 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'} call vundle#end() filetype plugin indent on " required! "let g:syntastic_python_checkers = [ 'pep8' ] let g:syntastic_python_checkers = [ 'flake8' ] let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 " powerline "language en_US.UTF-8 "let g:Powerline_symbols = 'fancy' set guifont=DejaVu\ Sans\ Mono\ for\ Powerline\ 9 set laststatus=2 syntax on " Solarized stuff let g:solarized_termtrans = 1 set background=dark colorscheme solarized |
위의 내용에 필요한 것들을 하나씩 설치해야 합니다. vim Plugin 설치하기 이제 필요한 것들은 모두 되었습니다. […]
Ubuntu 에 zsh 설정하기
zsh 을 이용하면 다양한 테마를 사용할 수 있고 이 테마들은 각 작업때마다 터미널에 관련 작업 상태들을 표시해주어 편리합니다. 예를들어 git 를 사용하시는 분들은 zsh 를 설치하고 테마를 설정해주면 터미널에 git 관련 상태들이 프롬프트에 표시되어 편리합니다. 이 문서는 Ubuntu 에 zsh 설정하기 에 관한 글 입니다. zsh 설치 Ubuntu 의 경우 zsh 설치는 아주 쉽습니다. apt-get 을 이용해서 설치합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# apt-get install zsh Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: zsh-common Suggested packages: zsh-doc The following NEW packages will be installed: zsh zsh-common 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 2,726 kB of archives. After this operation, 11.4 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main zsh-common all 5.0.2-3ubuntu6 [2,119 kB] Get:2 http://archive.ubuntu.com/ubuntu/ trusty/main zsh amd64 5.0.2-3ubuntu6 [607 kB] |
테마 설치 및 설정 테마는 각 계정당 해줍니다. 사용할 계정에 설정을 해주시면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
$ wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh --2015-09-16 16:54:57-- https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh Resolving github.com (github.com)... 192.30.252.129 Connecting to github.com (github.com)|192.30.252.129|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh [following] --2015-09-16 16:54:58-- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 103.245.222.133 Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|103.245.222.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 2331 (2.3K) [text/plain] Saving to: ‘install.sh’ 100%[=========================================================================================================================================>] 2,331 --.-K/s in 0s 2015-09-16 16:54:58 (214 MB/s) - ‘install.sh’ saved [2331/2331] $ sh install.sh Cloning Oh My Zsh... Cloning into '/home/salt/.oh-my-zsh'... remote: Counting objects: 680, done. remote: Compressing objects: 100% (552/552), done. remote: Total 680 (delta 15), reused 508 (delta 3), pack-reused 0 Receiving objects: 100% (680/680), 418.75 KiB | 301.00 KiB/s, done. Resolving deltas: 100% (15/15), done. Checking connectivity... done. Looking for an existing zsh config... Using the Oh My Zsh template file and adding it to ~/.zshrc Copying your current PATH and adding it to the end of ~/.zshrc for you. Time to change your default shell to zsh! Password: __ __ ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed! Please look over the ~/.zshrc file to select plugins, themes, and options. p.s. Follow us at http://twitter.com/ohmyzsh. p.p.s. Get stickers and t-shirts at http://shop.planetargon.com. ➜ ~ |
마지막에 기본쉘을 바꾸기위해서 사용자 계정의 패스워드를 물어보고 […]
AWS Kinesis
이 글은 AWS Kinesis 이 무엇인지에 대한 개념적인 글입니다. 다음의 자료를 기반으로 작성되었습니다. Introducing Amazon Kinesis (SlideShare) Introduction to Amazon Kinesis (Youtude) Big Data 인터넷의 발전으로 인해서 하루에도 계산하기 힘든 데이터가 쏟아집니다. 과거와는 달라진 이러한 환경을 우리는 간단히 Big Data 시대라고 하지요. 어찌보면 과거에도 Big Data 는 있었지만 요즘과 구별되는 것은 누구든지 Data 를 생산할 수 있다는데에 있습니다. 그러다보니 과거와는 다르게 쏟아지는 데이터를 분석해서 유의미한 데이터를 뽑아내는 기술이 필요하게 되었는데 이게 바로 Big Data 의 진정한 의미 중에 하나 입니다. 누구나 생산해내는 […]
SaltStack 시작하기.
이 글은 SaltStack 시작하기 에 관한 글입니다. SaltStack 은 자동화 시스템 관리 프로그램입니다. 서버의 설정파일, 패키지 관리, 시스템 명령어등을 한번에 많은 서버에 할 수 있습니다. Chef, Puppet 등과 동일합니다. 단지 이 녀석은 Python 으로 개발이 되었고 역활을 지시하는 sls 파일 문법이 YAML 이며 Jina Template 을 이용해서 sls 에 프로그래밍을 할 수 있습니다. SaltStack 은 서버와 클라이언트로 모델입니다. 서버역활을 담당하는 SaltStack 을 마스터(Master)라고 하고 클라이언트 역활을 담당하는 SaltStack 을 하녀(Minion)이라고 부릅니다. 마스터의 경우 파일 전송을 할 수 있게 파일서버역활도 같이 […]
서로 다른 RabbitMQ 버전으로 Cluster 구성 테스트.
RabbitMQ 는 인기있는 메시지 브로커 입니다. 비동기 메시지를 다루는데 있어서 RabbitMQ 는 많이 사용되어 집니다. 거기다 RabbitMQ 는 여러 RabbitMQ 를 하나로 묶는 Cluster 기능을 제공합니다. 그런데, 언제나 그렇지만, 서로다른 RabbitMQ 버전끼리 하나로 묶을 수 있을까하는 의문이 들었습니다. 테스트를 해보았습니다. 환경 세팅 master, slave 라 불리는 2개의 서버를 준비했고 각각 3.5.4 버전과 3.1.5 버전을 설치했습니다. 모든 버전은 Epel 저장소에서 RPM으로 설치를 했습니다. 그리고 다음과 같이 RabbitMQ 를 설정했습니다. master 의 쿠키 파일를(/var/lib/rabbitmq/.erlang.cookie) slave에 복사했습니다. 양쪽모두 호스트네임을 /etc/rabbitmq/rabbitmq-env.conf 에 지정해줬습니다.
1 |
NODENAME=rabbit@master |
[…]
RabbitMQ 통계 보기.
RabbitMQ 는 AMQP 를 지원하는 Message Queue 프로그램 입니다. 여러 솔루션에서 함께 쓰이고 있는 매우 인기있는 프로그램입니다. 언제나 그렇지만 RabbitMQ 또한 각종 통계자료를 제공 합니다. 이를 통해서 RabbitMQ 건강상태를 체크할 수 있습니다. 이 문서는 이에 대해 간략히 다룹니다. 통계정보를 보는 방법으로는 CLI 를 통해서 볼 수도 있지만, 웹을 통해서 GUI 환경에서 쉽게 볼수 있습니다. 이를 위해서는 GUI Management Plugin 을 활성화해줘야 합니다.
1 |
sudo rabbitmq-plugins enable rabbitmq_management |
이렇게 하면 웹브라우저를 통해서 RabbitMQ 를 관리할 수 있으며, 간략한 통계정보를 볼 수 있습니다. 이 통계정보를 이해하기 […]
git 파일 삭제후 복구.
git 를 사용하다 보면 local 저장소에서 실수로 파일을 삭제하는 실수를 저지를 수 있다. 이때 파일을 되살린다고 ‘git pull’ 이나 ‘git fetch’를 해봐도 나오는 메시지는 최신판(Already up-to-date)라는 것이다. 이를 이용하는 경우에 어떻게 해야하나? 먼저 삭제한 디렉토리로 이동한다. 그리고 다음과 같이 입력을하면 삭제한 파일 목록을 얻을 수 있다.
1 |
]$ git ls-files -d |
사실 삭제된 파일은 다시 checkout 받으면 된다. 다음과 같이 말이다.
1 |
]$ git checkout a.py |
리눅스를 잘 다루는 사람이라면 이것을 한번에 할수 있다.
1 |
]$ git ls-files -d | xargs git checkout -- |
Better VACCUM FULL For PostgreSQL 9.0
원문:https://wiki.postgresql.org/wiki/What’s_new_in_PostgreSQL_9.0#Better_VACUUM_FULL 지금까지 VACUUM FULL 은 매우 느렸다. 이 구문(Statement)는 테이블로부터 빈공간을 확보하고 그것의 크기(Size)를 줄였지만 VACUUM 은 만족할만큼 빠르게 동작하지 않았다. 이것이 느린 이유는 동작 방법에 문제가 있었기 때문이다. 레코드를 그들의 소스블럭으로부터 테이블에 시작점에 가까운 블럭으로 하나하나씩 읽어서 옮겼었다. 그리고 테이블에 끝이 빈공간이면 그 부분을 지웠다. 전략적으로 이러한 방법은 매우 비효율적(Inefficient) 이다. 레코드를 하나하나씩 옮기는 것은 랜덤 I/O를 발생시킨다. 게다가, 인덱스(Index)를 재구성하는 동안에 그것을 유지하고, 더 많은 비용이 들어가는, 인덱스는 파편화된다. 이럴바에는 VACUUM FULL이 다 끝나고 나서 재인덱스(reindex)를 하는 것이 […]
PostgreSQL 과 문자셋
PostgreSQL 도 문자셋에 관해서 많은 옵션들을 제공한다. 그런데, 대부분은 이에 대해서 잘 모르는 듯해서 여기서 정리해 본다. PostgreSQL 에서 문자셋 지정을 처음 하는 부분은 바로 설치를 마친후에 initdb 명령어를 사용하면서 부터다 대충 다음과 같이 사용한다.
1 |
su -l postgres -c "/usr/local/pgsql9.1/bin/initdb -E UTF8 --locale=ko_KR.UTF-8 --pgdata='$PGDATA' " |
문제는 저러한 문제셋 설정이 과연 향후 PostgreSQL 을 사용하는데 있어 어떤 영향을 주는가 하는 것이다. 먼저 PostgreSQL 은 ISO C 와 POSIX 등의 언어표현에 관해 지원 한다. Locale 보통 initdb –locale=ko_KR.UTF-8 로 사용되어지는 것으로 운영체제에 종속적이다. 운영체제에서 지원하는 locale 만 사용할 수 있는데, 리눅스의 […]