지금까지 git을 숱하게 사용했지만 한글 파일명은 문제가 생긴다는 사실을 이제야 알았다.

다음처럼 core.quotepath를 끄면 commit, status 등에서 한글 출력이 정상으로 돌아온다. 이 설정은 일반적이지 않은 문자를 탈출문자로 처리하는 기능을 수행한다. 그래서 한글 앞에 탈출 문자를 붙인 탓에 이런 문제가 발생했다.

git config --global core.quotepath false

관련 링크

근래 화웨이나 DJI와 같이 대단한 제품을 만드는 중국 기업이 눈에 띈다. 멋진 제품으로 승부하는 이런 회사는 갑작스레 출현했다기 보다는 든든한 중국 제조업의 질적 성장으로 외연이 넓어지면서 자연스럽게 들어나게 된 것은 아닌가 생각한다. 여전히 중국산 제품 중에는 말도 많고 탈도 많은 제품이 많을지 몰라도 더이상 저렴하고 질 낮은 제품과 동의어라고 쉽게 이야기하기 어려워졌다. 게다가 중국 브랜드가 새겨진 중국 키보드 하나 구입한 경험이 이 생각을 더 단단하게 만들었다. 이 글은 Ajazz Geek AK33 기계식 키보드를 구입하고 느낀 점을 정리한 글이다.

이 키보드는 사무실에서 사용하려고 구입했다. 알리 익스프레스에서 45.74달러(한화 52,000원 정도) 정도로 저렴하게 판매하길래 구입했다. 더 저렴한 기계식 키보드도 많이 있었지만 게이밍 키보드라는 점을 강조하고 싶었는지 각인이 다 이상해서 그나마 깔끔하고 무난한 이 키보드를 골랐다. 흰색과 검정 두 색상과 청축과 흑축 중 하나를 선택할 수 있다.

일단 사용하고 있는 키보드가 있기 때문에 급하게 부를 필요가 없어 무료 배송으로 받았다. 1달 여 시간이 지나서 키보드를 받았다. 상자에는 키보드와 중국어로 된 품질보증서로 추정되는 용지가 들어 있다. Zorro 스위치를 사용했고 82키 레이아웃에 LED가 내장되어 있다. 여태 알리에서 구입한 물건 중에 패키지가 가장 깔끔하고 튼튼해서 마음에 들었다.

Ajazz Geek AK33

키보드 기판이 노출되지 않도록 하는 부분을 하우징(housing)이라고 하는데 이 키보드는 하우징이 일반 키보드와 조금 다른 형태로 구현되었다. 사진으로 봤을 때는 키가 쉽게 뽑힐 것 같은 모습이었는데 생각보다 잘 결합이 되어 있고 키를 뽑지 않는 이상 청소하기 어려웠던 이전 키보드와 달리 쉽게 먼지를 털어낼 수 있는 점도 장점이다.

Ajazz Geek AK33 LED를 켠 모습

숫자 자판이 없는 텐키리스인데다 미니 키보드 레이아웃이라서 메타키가 우측에 세로로 나열되어 있다. 처음에는 방향키 레이아웃이 마음에 드는 형태가 아니라서 구입 전에도 망설였지만 방향키 크기가 다른 키에 비해서 충분히 커서 잘못 눌리지 않아 엄청 만족스럽다. 그래도 잘못 누르면 귀찮고 맥에서 자주 사용하는 메타키도 아니라서 비활성화했다.

  • 리니어 방식이라서 눌리는 느낌이 갈축, 멤브레인 키보드와도 다르다. 키가 반발력이 있어서 입력하고 나면 손가락을 밀어 올리는데 흑축 키보드를 사용하고 나서 다른 키보드를 사용하면 키를 누르고 나서 손가락을 의도적으로 들어 올리는 기분이 든다. 특히 이 키보드 쓰고 나서 애플 키보드를 사용하면… 이상해.
  • 키를 꾹꾹 눌르면 확실히 스위치 밀어 올리는 힘이 강하다. 나는 살살 입력하는 편이라서 크게 손이 아프거나 하지 않았다.
  • 갈축 키보드 소리에 익숙해서 그런지 시끄러운 느낌은 전혀 들지 않는다. 그래도 일반 멤브레인이랑 비교하면 소리가 많이 다르다.
  • LED는 끌 수 있다. 맥북 에어 키보드 조명처럼 은은할 줄 알았는데 무슨 파티 조명 같다. 둠칫둠칫. 금요일에 켜놓고 일해야지.
  • 오른쪽 시프트 키를 많이 사용한다면 방향키랑 가깝고 키가 작아서 좀 불편할 수 있다.
  • 폭이 넓은 키 중에 보강 스위치? 같은게 달린 키가 있는데 키감이 아무래도 좀 다르다. 특히 엔터 키가 좀 이질감이 있다.

Ajazz Geek AK33 흑축 스위치

레오폴드 FC700RT 갈축을 구입해서 집에서 사용하고 있는데 스위치 매커니즘이 달라 직접적인 비교는 어렵겠지만 레오폴드와 함께 봐도 별로 뒤떨어진다는 느낌이 들지 않는다. 더군다나 시중 기계식 키보드보다 1/3 가격 정도에 구입할 수 있다는 점이 큰 매력이다. 저렴한 가격의 입문용 기계식 키보드를 찾고 있다면 이 키보드로 시작해도 좋을 것이다.

맥에서 몇가지 키를 수정해서 사용하고 있다. 이 설정은 Karabiner를 사용했다. 이 키보드는 알리익스프레스에서 구입할 수 있고 내가 구입한 링크는 요기다.

작업을 하다 보면 작은 코드 스니핏을 공유해야 하는 경우가 있다. 간단하게 텍스트 파일을 작성해서 메일이나 메신저를 통해서 공유할 수도 있고 GitHub의 gist 서비스를 이용해서 공유할 수 있다. 이 gist에 코드를 올리는 작업을 브라우저 없이 터미널에서도 가능하다. 서비스 이름과 동일하게 명령도 gist다.

OS X에서는 Homebrew로 바로 설치할 수 있으며 루비로 작성한 도구라서 gem으로도 설치 가능하다. apt-get에도 올라와 있는데 우분투에서 설치하고 나서 제대로 동작하지 않아 gem으로 설치했다.

$ brew install gist # OS X에서 homebrew를 사용하는 경우
$ gem install gist # gem이 설치되어 있는 경우

설치를 한 다음, gist 명령을 입력하면 프롬프트가 출력되서 바로 코드를 작성할 수 있다.

$ gist
(type a gist. <ctrl-c> to cancel, <ctrl-d> when done)
// 코드를 바로 입력. cat과 같이 동작함.
console.log("Hello World");
// <ctrl-d>를 입력해 저장.
# https://gist.github.com/bc7c51a5d5bef0465c67b38c39f29b7e
$

아직 로그인을 하지 않았기 때문에 입력한 내용이 익명 계정으로 등록된다. 로그인은 --login 플래그를 사용해서 할 수 있다.

$ gist --login
Obtaining OAuth2 access_token from github.
Github username: haruair
Github password:
Success! https://github.com/settings/applications
$

간단하게 이미 작성한 파일을 올리는 것도 가능하다.

$ gist hello.js
$ gist index.js index.jade style.css # 여러 파일을 올릴 때

파일명은 -f 또는 --filename으로 지정 가능하다. 파일명을 지정한 경우에는 STDIN으로 올리려는 파일을 지정할 수 있다. 그리고 업로드한 주소를 바로 사용할 수 있도록 복사하는 -c, --copy 플래그도 존재한다.

다음 명령에서는 hello.js 파일을 index.js로 gist에 업로드하고 그 주소를 바로 복사한다.

$ gist -c -f index.js < hello.js
# https://gist.github.com/69872a365b9b073eb94ac14e87eb469e

이외에도 기존에 올린 코드를 수정하거나 private 모드로 올리기, embed 코드를 반환하는 등 다양한 플래그가 있다. 이 도구에서 제공하는 모든 기능은 --help로 확인할 수 있다. ruby로 작성되어 있어서 만약 ruby로 개발한다면 코드에서 사용할 수 있는 라이브러리 형태로도 제공한다. 엔터프라이즈 사용자를 위한 설정도 존재하는데 상세한 내용은 defunkt/gist 문서에서 확인하자.

터미널에서 작업을 하다보면 메모리 사용량이나 스토리지 사용량을 확인하기 위해 free -m 또는 df -h를 사용해본 경험이 있을 것이다. 명령을 입력하고 엔터를 누르는 순간에 명령을 처리하고 그 결과를 반환하기 때문에 지속적으로 변하는 결과를 살펴보기엔 불편하게 느껴질지도 모른다. 그런 상황에서 사용할 수 있는 명령이 바로 watch다. 이 명령으로 간격을 두고 반복적으로 결과를 확인하고 싶은 명령을 손쉽게 사용할 수 있다.

대부분의 리눅스 환경에는 이미 설치되어 있을 것이다. OS X의 경우에는 homebrew로 설치할 수 있다.

$ brew install watch

간단하게 사용해보자. date를 입력하면 현재 시각을 확인할 수 있다. watch date를 입력하면 매 2초 간격으로 date의 결과를 화면에 표시한다.

$ date
Thu 14 Apr 2016 22:02:59 AEST
$ watch date
Every 2.0s: date        Thu Apr 14 22:03:26 2016
Thu 14 Apr 2016 22:03:26 AEST

화면에서 빠져나오기 위해서 Ctrl + C를 입력한다. 기본적으로 2초의 주기로 설정되어 있는데 2초가 조금 길다면 -n, --interval을 이용해서 그 주기를 조정할 수 있다. -d, --differences를 추가하면 어느 문자가 변하고 있는지 강조된다. 스토리지의 용량을 확인하는 df 명령과 함께 사용하면 다음과 같다.

$ watch -d -n 0.5 df -h
Every 0.5s: df -h           Thu Apr 14 22:03:26 2016
Filesystem      Size   Used  Avail Capacity   iused      ifree %iused  Mounted on
/dev/disk1     931Gi  643Gi  287Gi    70% 168658707   75329829   69%   /
devfs          186Ki  186Ki    0Bi   100%       644          0  100%   /dev
map -hosts       0Bi    0Bi    0Bi   100%         0          0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%         0          0  100%   /home
/dev/disk2s1   1.8Ti  900Gi  963Gi    49%      2253 1009481363    0%   /Volumes/My Passport

만약 두 가지 이상의 명령을 동시에 모니터링하고 싶다면 간단하게 ;로 구분해서 호출할 수 있다. 다음은 현재 디렉토리를 확인하는 ls와 앞에서 본 df를 같이 사용하는 예시다.

$ watch -n 0.5 "ls -al ; df -h"
Every 0.5s: ls -al ; df -h          Thu Apr 14 22:03:26 2016
total 152
drwxr-xr-x@ 10 edward  staff    340 14 Apr 22:15 .
drwxr-xr-x@ 24 edward  staff    816 30 Mar 18:32 ..
-rw-r--r--@  1 edward  staff   2639 29 Mar 02:13 cowsay.md
-rw-r--r--@  1 edward  staff   2163  8 Apr 23:22 figlet.md
-rw-r--r--@  1 edward  staff   2541 14 Apr 21:43 gist.md
-rw-r--r--@  1 edward  staff    179  8 Apr 23:44 slurm.md
-rw-r--r--@  1 edward  staff  48201  8 Apr 23:26 slurm.png
-rw-r--r--@  1 edward  staff   1390  8 Apr 08:31 todo.md
-rw-r--r--@  1 edward  staff   2559 14 Apr 22:15 watch.md
-rw-r--r--@  1 edward  staff   2260  3 Apr 00:02 zsh-bash.md
Filesystem      Size   Used  Avail Capacity   iused      ifree %iused  Mounted on
/dev/disk1     931Gi  643Gi  287Gi    70% 168659745   75328791   69%   /
devfs          186Ki  186Ki    0Bi   100%       644          0  100%   /dev
map -hosts       0Bi    0Bi    0Bi   100%         0          0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%         0          0  100%   /home
/dev/disk2s1   1.8Ti  900Gi  963Gi    49%      2253 1009481363    0%   /Volumes/My Passport

명령을 쌍따옴표로 감싸서 실행했다. ;는 명령행에서 특별한 의미를 갖는 문자이기 때문에 watch 내에서만 실행하도록 전달하기 위해 쌍따옴표를 사용했다. 따옴표 없이 사용하려 한다면 \;와 같이 역슬래시로 탈출문자 처리를 하면 쌍따옴표 없이 동일한 결과를 모니터링 할 수 있다.

이처럼 watch는 아주 간단한 용도로 사용할 수 있는 모니터링 도구다. 즉 메모리나 프로세스를 모니터링 할 때는 htop과 같이 각 필요에 따라서 더 정밀하고 자세한 정보를 제공하는 도구가 많으니 자주 사용한다면 꼭 관련 모니터링 도구를 살펴보자.

올해부터 호주 멜버른에서 IT 개발 직군에 종사하는 한국어 구사자를 위한 Weird Developer Melbourne이 운영되고 있다. 2월 16일 밋업에 발표했던 자료인데 정리해서 올린다고 하고 두 달이나 지나서야 올리게 되었다.

dnx 대신 dotnet으로 변경한다는 이야기가 한참 있었는데 그 이후로 follow up 하지 못했다. 아래 내용은 발표 당시를 기준으로 한 환경 설정이다. 발표에서 Entity Framework을 사용하기 위해 sqlite3도 포함되어 있다.

Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/vivid64"
  config.vm.network "forwarded_port", guest: 5000, host: 8080
  config.vm.network "public_network"
  #config.vm.network :private_network, id: "192.168.33.20"
  config.vm.synced_folder ".", "/home/vagrant/weirdnote"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"
  end
  config.vm.provision "shell", path: "tools/vagrant/provision.sh"
end

의존 패키지 설치

$ sudo apt-get update
# DNX prerequisites
$ sudo apt-get install -y unzip curl libunwind8 gettext libssl-dev \
  libcurl4-openssl-dev zlib1g libicu-dev uuid-dev
# install libuv for KestrelHttpServer
$ sudo apt-get install -y automake libtool
# sqlite3
$ sudo apt-get install libsqlite3-dev
$ curl -sSL https://github.com/libuv/libuv/archive/v1.4.2.tar.gz \
 | sudo tar zxfv - -C /usr/local/src
$ cd /usr/local/src/libuv-1.4.2
$ sudo sh autogen.sh
$ sudo ./configure
$ sudo make
$ sudo make install
$ sudo rm -rf /usr/local/src/libuv-1.4.2 && cd ~/
$ sudo ldconfig

DNVM 설치

# install DNVM
$ curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh \
 | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
# dnvm set as coreclr
$ dnvm upgrade -r coreclr

NodeJS 설치

# nvm install
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh \
| bash
$ source ~/.nvm/nvm.sh
# install node
$ nvm install v5.5.0
$ nvm alias default v5.5.0
# node related
$ npm install -g yo bower grunt-cli gulp
$ npm install -g generator-aspnet

터미널을 사용하다보면 영문자를 아스키 아트로 출력해서 프로그램명이나 제작 크레딧을 멋지게 꾸민 경우를 종종 볼 수 있다. FIGlet은 영문자를 입력하면 아스키 아트로 출력해주는 간단한 도구다. 앞서 살펴본 cowsay도 있지만 이 도구는 문자를 직접 아스키 아트로 출력한다는 점이 다르다.

이 도구도 상당히 오래 전에 개발되었기에 어느 플랫폼이든 손쉽게 설치할 수 있다.

$ brew install figlet
$ apt-get install figlet

사용 방법도 간단하다. figlet 명령과 출력하려는 텍스트를 입력하면 된다.

$ figlet HelloWorld
 _   _      _ _    __        __         _     _ 
| | | | ___| | | __\ \      / /__  _ __| | __| |
| |_| |/ _ \ | |/ _ \ \ /\ / / _ \| '__| |/ _` |
|  _  |  __/ | | (_) \ V  V / (_) | |  | | (_| |
|_| |_|\___|_|_|\___/ \_/\_/ \___/|_|  |_|\__,_|

-f 플래그로 다른 폰트도 사용 가능하다. 다른 폰트는 FIGlet 사이트에서 폰트를 받아 추가할 수 있다.

$ figlet -f isometric1 jeju

       ___         ___            ___         ___     
      /\  \       /\  \          /\  \       /\__\    
      \:\  \     /::\  \         \:\  \     /:/  /    
  ___ /::\__\   /:/\:\  \    ___ /::\__\   /:/  /     
 /\  /:/\/__/  /::\~\:\  \  /\  /:/\/__/  /:/  /  ___ 
 \:\/:/  /    /:/\:\ \:\__\ \:\/:/  /    /:/__/  /\__\
  \::/  /     \:\~\:\ \/__/  \::/  /     \:\  \ /:/  /
   \/__/       \:\ \:\__\     \/__/       \:\  /:/  / 
                \:\ \/__/                  \:\/:/  /  
                 \:\__\                     \::/  /   
                  \/__/                      \/__/    

사실 이 도구는 cli 외에도 각 프로그래밍 언어마다 이미 구현이 있을 정도다.

이제 터미널로 접속할 때마다 뜨는 메시지, 밋밋한 콘솔의 서비스명을 더 힙하게 표시해보자!

REST API를 테스트하는데 curl과 wget을 사용할 수 있겠지만 좀 더 읽기 쉽고 사용하기 좋은 도구가 있다. HTTPie는 cURL-like tool for humans라는 멋진 태그라인을 갖고 있는 강력한 CLI 도구다. 따지고 보면 curl에서도 모두 가능한 기능이지만 플래그를 주렁주렁 입력할 필요가 없이 간편하게 사용할 수 있고 컬러 스킴이 있어 훨씬 읽기 편하다.

이 도구는 온갖 패키지 관리자에 다 들어있기 때문에 있는 패키지 관리자로 설치하면 된다. 파이썬으로 작성된 도구라서 pip로도 설치 가능하다.

# 하나만.. 다음 중 하나만 설치
$ brew install httpie
$ port install httpie
$ apt-get install httpie
$ yum install httpie
$ pip install httpie

사용 방법은 아주 단순하다.

$ http httpie.org

http [flags] [METHOD] URL [ITEM [ITEM]] 형태로 보낼 수 있다.

# HTTP 메소드와 해더, JSON 데이터 전송
$ http PUT example.org X-API-Token:123 name=John
# 폼 전송
$ http -f POST example.org hello=World
# request 출력
$ http -v example.org
<figure style="width: 722px" class="wp-caption alignnone">
cURL보다 간단하게 사용할 수 있다. 별 내용 아니지만 색깔 이쁘면 보기 좋지 않습니까.

이외에도 세션과 같은 다양한 기능을 제공한다. auth는 auth 플러그인으로 제공하고 있고 외부 json 파일이나 바이너리 파일을 전송하는 기능도 있다. curl만큼 방대한 기능을 제공하고 있으니 HTTPie 리포지터리를 확인해서 어떤 유용한 기능이 있는지 살펴보는 것도 좋겠다.

요즘은 REST API 테스트하는 도구가 워낙 잘 나와서 curl도 잘 안쓰게 되는 편이긴 하다. 그래도 간단한 테스트는 HTTPie로 더 쉽고 간단하게 수행할 수 있어서 요긴하게 사용하고 있어 만족스럽다.

이전에도 iterm을 설치했었지만 키맵이 영 익숙해지지 않고 기본 터미널과 맞추려니 이것저것 찾아보는게 귀찮아서 계속 터미널을 사용하고 있었다. neovim을 설치하는 차에 iterm3 베타가 나왔다는 얘기가 생각나서 iterm도 설치했다.

Opt + 방향키로 단어 사이 이동을 종종 하는 편인데 iterm 키맵엔 이 설정이 포함되어 있지만 쉘에서 추가적인 설정이 필요하다. 구글링 해보면 ~/.inputrc에 다음과 같이 추가하면 동작한다고 하는데 이 방법은 bash를 사용하는 경우에 해당한다.

"\e\e[D": backward-word
"\e\e[C": forward-word

zsh의 경우는 ~/.zshrc에 다음처럼 추가하면 된다.

bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word

추가. 설정할 때는 몰랐는데 iTerms의 키맵이 어떻게 되어 있는가에 따라 다르다. junho85님의 경우는 아래 키맵으로 설정했다고 한다.

bindkey -e
bindkey "^[[1;9C" forward-word
bindkey "^[[1;9D" backward-word

호주에 온지 벌써 5년차에 접어들었다. 아직도 시내를 돌아다가 멜번 온 첫 날에 잠을 청했던 백팩커 숙소 앞을 지나면 그 날이 자연스럽게 생각난다. 받은 카드로 문을 열지 못해서 이걸 어떻게 말해야하나, 우물쭈물 한참을 고민하다가 카운터에 카드를 들고가서 “카드 이스 낫 워킹”을 외치니 “The card is broken, right? no worries mate” 이라고 답하던 그 호주 억양이 아직도 생생하다.

6인실이었던 내 도미토리는 모두가 장기체류였고 그런 탓에 온갖 빨래며 물건들이 널려있었다. 그렇게 짐을 내려놓고 샤워하러 갔을 때 그 소독약 냄새도 아직도 기억 난다. 그때 바깥 네온사인에 제대로 잠을 자지 못하던 기억도, 무얼 어떻게 사먹어야할지, 환율을 매번 계산하면서(그땐 무려 1달러에 1200원 남짓) 한참 고민했던 기억이 난다.

지금까지 지내오면서 크고 작은 일들도 있었고 새로운 사람을 만나는가 하면 오래 알던 사람을 떠나 보내기도 했다. 호주에 온 이후로 온라인을 통해 만난 사람들을 찾아가 직접 만나기도 했고 가족이 나를 보러 호주에 찾아오기도 했다. 여기서 일자리를 찾게 되어 자리를 잡고, 못할 것만 같던 이런 저런 활동에도 참여하고 있고, 무엇보다 작년에 집을 렌트해서 혼자 살게 된 이후로는 또 새로운 도전을 시작한 느낌이다.

타지 생활을 하면서 때로는 가족에게 걱정 끼칠까 쉽게 말할 수 없는 것도 있었고 주변 사람들 각자 자신의 삶에서 고군분투 하는데 짐을 더해주는 것은 아닐까 하고 선뜻 내 어려움을 토로할 수 없었다. 그래도 주변에서 심적으로나 물적으로, 오프라인 뿐만 아니라 온라인에서도 도와준 많은 분들 덕분에 호주에 잘 정착해서 지금까지 지내올 수 있어서 너무나도 감사하다. 그 고마움을 보답할 수 있도록, 그리고 그런 도움을 주변에 줄 수 있도록 더 성장하고 싶다.

여전히 영어도 쉽지 않고 미래에 대한 고민을 많이 한다. 올해에는 고민보다 행동이 우선되는 삶을 살자 다짐했던 것처럼, 고민을 하기 전에 먼저 작게 시작하는 것이 내 삶에 더 필요하다. 호주에 도착했던 그 날을 다시 생각하면서, 무모하게만 보였던 그 도전과 자신감을 오늘 다시 세워본다.

터미널을 사용하다보면 사소하지만 유용한 스크립트를 작성할 때가 종종 있다. 스크립트로 작성한 코드로 결과를 그냥 출력할 수 있지만 다소 밋밋하게 느껴본 적은 없었는지 생각해보자. 빌드가 완료되거나 업스트림에 머지하는 스크립트가 Done.만 출력하면 실용적이긴 하지만 아쉬움이 있다. 그 부족함을 느꼈다면 cowsay를 사용해서 더 터미널 힙스터답게 메시지를 출력할 수 있다!

cowsay는 아스키아트와 함께 원하는 메시지를 출력할 수 있게 해주는 프로그램이다. 1999년부터 있던 프로그램이라서 터미널을 쓴다면 한번쯤은 어디선가 이미 봤을지도 모른다. perl로 작성되었다.

설치는 apt-get, homebrew 등 대부분의 패키지 관리자에서 제공한다.

$ apt-get install cowsay
$ brew install cowsay

사용 방법은 간단하다.

$ cowsay Hello World
 _____________
< Hello World >
 -------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

cowsay는 fortune이랑 자주 나온다. fortune은 포춘 쿠키에 들어있는 쪽지와 같은 내용을 출력하는 프로그램이다. fortune도 apt-get, brew 등으로 설치할 수 있다.

$ fortune | cowsay

-f 플래그를 사용하면 소 이외에도 다른 그림으로 사용할 수 있다. 사용할 수 있는 그림 목록은 -l 플래그로 확인할 수 있다.

$ fortune | cowsay -f sheep
 _________________________________________
/ This night methinks is but the daylight \
| sick.                                   |
|                                         |
| -- William Shakespeare, "The Merchant   |
\ of Venice"                              /
 -----------------------------------------
  \
   \
       __     
      UooU\.'@@@@@@`.
      \__/(@@@@@@@@@@)
           (@@@@@@@@)
           `YY~~~~YY'
            ||    ||

cow 파일을 COWDIR에 추가하면 자신이 직접 만든 메시지로도 사용할 수 있다. cowsay를 검색해보면 이 프로그램 이후에도 정말 다양한 언어로 작성되었다. 포니를 좋아한다면 ponysay도 살펴보자.

점점 각박하게 변해가는(?) GUI의 세계에서, 이 작은 메시지 출력까지도 아름답게 아스키아트로 표현하고야 마는 선현들의 낭만을 배워야 할 필요가 있다. 😀

웹사이트 설정

웹페이지 색상을 선택하세요

Darkreader 플러그인으로 선택한 색상이 제대로 표시되지 않을 수 있습니다.