2015년 3월 5일 목요일

Vim as an IDE

Vim as an IDE(https://github.com/jez/vim-as-an-ide)

이 프로젝트는 2015년 2월 25일 카네기 멜론대에서 있었던 테크 토크를 통해서 시작되었다고 합니다. 한 학생이 과제를 하기 위해 vim을 사용했는데 아무래도 사용하기 쉬운 툴은 아니니 익히는데 몇가지 어려움들이 있었나 봅니다.
  1. vim 의 단축키를 이용해서 텍스트 편집하기
  2. 다양한 플러그인 설치해서 사용하기

사용 방법

샘플 vimrc 파일이 들어있는데 단계별로 수정하면서 vim이 어떻게 달라지는지 보여준다고 합니다. 그래서 first commit 부터 시작해서 각 commit 정보를 확인해보라고 하네요. Table of Content를 보니 저도 vim을 사용하면서 하나 하나 익혔던 순서가 그대로 나오네요! 처음에 vimrc 파일을 만들고 일반적인 설정을 추가하고, 플러그인 매니저를 사용하고, 파일 탐색기를 추가하고...

정리

맨 처음 vim을 접하면 그대로는 사용하기 힘들고 이것저것 설정하는 게 좀 귀찮을 수도 있는데요. 이 프로젝트가 딱 그 부부을 가이드 해주는 것 같습니다. 일을 하다보면 터미널에 접속해서 vim을 사용해야 하는 경우가 있는데요. 이번 기회에 vim 사용법을 배워두는 것도 좋을것 같습니다.

2015년 2월 24일 화요일

websocket을 사용해서 콘솔의 STDIN/OUT을 브라우저로!

websocketd 소개

https://github.com/joewalnes/websocketd

이거 참 아이디어가 좋아보이는데요.
콘솔에서 사용하는 프로그램의 STDIN/STDOUT을 websocket을 통해서 웹브라우저에서 볼수 있도록 해주는 유틸입니다.

잘 생각해보면 활용방안이 많을 것 같습니다.
간단한 예제로는 1 부터 10까지 카운트하는 쉘스크립트를 짜서 웹브라우져에서 결과를 볼수 있는 예제가 있구요.
프로젝트 README 파일에 보면 vmstat 정보(시스템 사용량)를 웹브라우저를 통해서 이쁘게 볼수 있는 예제가 나와있습니다.
실행해보면 실시간으로 그래프가 변하는데
웹소켓을 통한 스트리밍이라 데이터를 저장할 필요도 없고 참 좋은것 같습니다.

2015년 2월 12일 목요일

JuiceSSH 와 Nitrous 사용해서 핸드폰으로 코딩하기

안드로이드용 앱인 JuiceSSH는 핸드폰으로 ssh 접속을 가능하게 해준다.
이걸 이용하면 자신의 nitrous box에 접속해서 자유롭게 개발이 가능하다.

1. ssh 키 생성

먼저 nitrous에 자신의 box가 있다고 가정을 하고
ssh로 접속하려면 ssh key를 생성하는 작업이 필요하다.
리눅스나 맥에서 ssh-keygen 을 사용하면 간단하게 생성이 가능하다.

2. nitrous 에 public key 등록

https://www.nitrous.io/app#/public_keys
위의 주소로 들어가서 자신이 생성한 public key를 등록해준다.

3. private key를 JuiceSSH에 등록

JuiceSSH를 실행하고 Connections로 들어가면
몇가지 메뉴가 나오는데 그중에 Identities로 들어가서 +를 누른다.
Nickname은 아무거나 지정하고 Username의 경우 Nitrous에서 확인한다.

https://www.nitrous.io/app#/boxes 에 접속하면
SSH URIssh://action@apne1.nitrousbox.com:23435
ssh:// 뒤에 action 이 아이디에 해당한다.

Private Key는 아까 생성한 private key를 이메일을 통해 전달해서 복사해 넣는다.

4. JuiceSSH에서 Connection 생성

마지막으로 Connection 메뉴로 가서 + 버튼을 누른다.
Address는 위의 예제에서 apne1.nitrousbox.com 이고
Identity는 아까 생성한 걸로 선택 port는 23435.

이제 핸드폰으로 접속을 해보면 된다.
키보드는 딩굴 키보드 앱을 추천하고 
JuiceSSH에서 tab이나 ctrl같은 기능키를 화면에 제공해주기 때문에
자동완성을 이용하면 은근 개발 할만한것 같다.

소스코드에서 키워드를 추출하는 툴 code-words 소개

소스코드에서 키워드를 추출할 일이 생겨서 구글링을 하다 괜찮은 프로젝트를 발견했다.
https://github.com/npryce/code-words

맨처음 mac에서 테스트 해봤을때는 이상하게 동작해서 이게 뭐지?? 이랬었는데
Readme 파일을 잘 읽어보니 linux에서 제대로 동작 한다고 한다.

C 부터 java, ruby, python, javascript, scala 심지어 Haskell 까지 많은 언어를 지원한다.
나는 java로 된 프로젝트로 테스트를 해보았는데 java의 키워드나 primitive type들을 알아서 처리해주고 필요한 경우 따로 추가해줄 수도 있다.
stop words도 지정해서 불필요한 단어는 제외해줄 수도 있다.

참고로 맨 마지막 파이프에 wordcloud 를 사용하면 위와 같이 태그 클라우드를 이미지 파일로 생성해주고
word-count 를 사용하면 단어별로 카운트를 해준다.

리눅스에서 파이프를 이용하면(소스를 git log 에서 불러온다든지) 다양한 조합이 가능해진다.

2015년 2월 9일 월요일

boot2docker 사용시 프록시 설정 방법

사내에 프록시 서버가 있는 경우 아래와 같은 설정이 필요하다.


* docker 이미지 접속


$ boot2docker ssh
$ sudo vi /var/lib/boot2docker/profile

* 파일을 열고 아래 내용 추가


export HTTP_PROXY=http://your.proxy.name:8080
export HTTPS_PROXY=http://your.proxy.name:8080

* 회사 인증서 파일을 ca-certificate.crt 에 추가


$ cat ca.pem >> /etc/ssl/certs/ca-certificates.crt

* docker 서비스 재시작


$ /etc/init.d/docker restart

2015년 2월 8일 일요일

boot2docker init 할때 x509: certificate signed by unknown authority 문제로 iso 파일 다운로드 못할때 해결 방법

mac에서 docker를 사용하려면 boot2docker를 설치해야한다.
패키지가 제공되어 간단히 설치는 할 수 있는데
설치 후 작업할때 에러가 발생했다.

$ boot2docker init

Latest release for boot2docker/boot2docker is v1.4.1
Downloading boot2docker ISO image...
error in run: Failed to download ISO image: Get https://s3.amazonaws.com/github-cloud/releases/14930729/3de263a4-853f-11e4-9f2b-59bd5ac8d5f3.iso?response-content-disposition=attachment%3B%20filename%3Dboot2docker.iso&response-content-type=application/octet-stream&AWSAccessKeyId=AKIAISTNZFOVBIJMK3TQ&Expires=1423443118&Signature=h%2Fqa9MUAcDPQYFnNsNBDDV2Rh%2Fc%3D: x509: certificate signed by unknown authority

사내에 프록시 서버가 있는 경우는 이런 에러가 많이 발생 할것 같다.
이런경우 침착하게 wget 으로 iso 파일을 다운 받으면 된다.

$ cd ~/.boot2docker
$ wget https://github.com/boot2docker/boot2docker/releases/download/v1.4.1/boot2docker.iso --no-check-certificate

iso 파일 디폴트 경로는 ~/.boot2docker/boot2docker.iso 이다.
이렇게 해주고 다시하면 정상적으로 동작한다.

$ boot2docker init


crontab 사용시 주의사항

오늘 crontab으로 DB 백업 설정을 하다가
이 문제로 삽질을 해서 간단하게 정리해보았다.

내가 작성한 스크립트는 간단하게

mysqldump -uroot screencast > /Users/mickey/backup/$(date +%Y-%m-%d).sql

이렇게 되어있었다.
당연히 스크립트를 그냥 실행했을때는 잘 동작하였고

매일 새벽 1시에 돌게 하려고 crontab에 아래와 같이 등록하였다.

00 01 * * * /Users/mickey/projects/screencast/backup.sh

그런데 나중에 확인해보니 백업 파일 사이즈가 전부 0 이었다!!
당황스러워서 이것저것 구글링을 해보면서 삽질을 하다가
stackoverflow에서 힌트를 찾았다.

http://stackoverflow.com/questions/4995689/mysqldump-creates-empty-file-when-run-via-cron-on-linux

이걸 보면 스크립트 뒤에 2>&1 이걸 붙여서 로그를 확인해보라고 되어있었다.
역시 에러가 날땐 로그를 확인해봐야 하는데 나는 그냥 삽질만 하고 있었다...
그래서 위의 스크립트를 수정해서

mysqldump -uroot screencast > /Users/mickey/backup/$(date +%Y-%m-%d).sql 2>&1

이렇게 하고 돌렸더니 백업 파일에 에러 로그가 나왔다.
mysqldump 파일을 못찾는다는 에러였다.

그냥 bash 에서는 path에 설정이 되어 있어서
잘 동작하였지만 crontab으로 돌릴때는 path 설정이 안 먹히는것 같다.
그래서 아래와 같이 full path로 수정하니 잘 동작하였다.

/usr/local/bin/mysqldump -uroot screencast > /Users/mickey/backup/$(date +%Y-%m-%d).sql

오늘의 교훈은..

1. 에러가 날땐 로그를 잘 확인하자.
2. crontab으로 돌릴때 안전하게 full path를 다 써주자.