2015년 8월 20일 목요일

실행중인 Virtualbox vm에서 포트 포워딩 설정하기

Mac에서 docker를 사용하다 보면 vm 기반이라 불편한게 좀 많은데
그 중 하나가 포트 포워딩 설정이다.
아래 명령어를 사용하면 실행중인 vm의 포트포워딩 설정을 변경할 수 있다.

VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port8888,tcp,,8888,,8888";

2015년 8월 19일 수요일

Git push 할때 HTTP code = 403 fatal: The remote end hung up unexpectedly 에러 날때

이런 경우 일단 shallow clone 인지 확인해봐야 합니다.
(shallow clone 은 맨 처음 clone 할때 전체를 받아오지 않고
depth 옵션을 주어서 history 일부분만 가져오는 것을 말합니다.)
git log
위의 명령어를 치면 history가 나오는데 그걸 보고 확인합니다.
만약 shallow clone 이면 이렇게 push 가 안되고 에러가 나는 경우가 있습니다.
이때 해결책은 기존 git 정보를 지우고 다시 init 을 하면 됩니다.
rm -rf .git
git init
git add .
git commit
git remote add origin <git repository url>
git push origin master

2015년 7월 30일 목요일

협업의 기술 part1


회사 동료가 이 책이 정말 좋다고 소개를 해줘서 읽게 되었다.
서문에 보면 이 책의 기본적인 아이디어가 나오는데 공감이 많이 되었다.
소프트웨어를 작성하는 것은 팀 스포츠이며, 기술적인 요소만큼이나 인간적인 요소에도 큰 영향을 받는다.

자존심 버리기


나도 자존심이 강한 편인데 개발자들의 경우 특히 그런 케이스가 많은것 같다.
자신이 항상 가장 중요한 사람인 것처럼 행동하는 사람과 일하고 싶은 사람은 아무도 없다. 설령, 논의에 참여한 사람 중 본인이 가장 똑똑한 사람이라고 할지라도 결코 이를 내세워서는 안 된다.
회의 할때 의사결정이 필요한 경우가 많은데 내가 낸 의견이 채택되지 않는 경우 마음이 불편해질때가 생각났다. 좀더 겸손해질 필요가 있는것 같다.

학습을 위한 시간을 아끼지 마라


슈퍼스타 개발자라고 하더라도 어느 순간 뒤쳐지고 있을수 있다.
어떤 집단에서 가장 지식이 풍부한 사람이 되는 것은 재미 있는 일이다. 그리고 다른 사람의 멘토가 됨으로써 많은 보상이 따르기도 한다. 문제는 팀 내에서 최상의 위치에 오르면 학습을 멈추게 된다는 점이다.

주변으로 부터 영향을 받아들여라


모르는것을 모른다고 얘기할 수 있는 용기를 말한다.
매우 완고한 사람과 함께 일하게 될 수도 있다. 많은 사람이 그를 설득하려고 해도 그는 늘 그랬듯이 완강하게 버틴다. 사람들은 그를 외면하고 그 주변만 맴돌 것이다.
주변에 도움을 청하는 것을 자주 해야 좋은것 같다.
누군가 나에게 도움을 요청했을 때를 생각해보면
누군가 나를 필요로 한다는 사실에 기쁜 마음이 들고
내가 문제를 해결해줄 수 있었을때 자기효능감으로 뿌듯한 마음이 생긴다.
내가 다른 사람에게 도움을 요청함으로써 이런 좋은 영향을 줄 수 있다고 생각한다.
당신이 실수했음을 인정하는것은 장기적으로 당신의 위상을 높이는 일이다. 겸손을 대외적으로 표현하는 동시에 당신이 다른 사람의 의견을 믿는다는 표현이다. 그 결과 사람들은 당신의 솔직함과 강건함을 존중하게 된다.

2015년 6월 3일 수요일

mac 에서 bootdocker start 실행할때 docker@localhost's passwored: 이런 메세지 나오는 경우

이게 boot2docker 버전 문제인지 최신 버전을 설치했더니 이런 에러가 발생했다.
해결방법은

1. .ssh/id_boot2docker.pub 파일의 내용을 복사 해둔다.
2. boot2docker ssh 로 접속. 패스워드는 tcuser
3. ~/.ssh/authorized_keys 파일을 열고 아까 복사해놓은 텍스트를 추가.
4. 밖으로 빠져나가서 다시 boot2docker start 하니 잘 동작한다!

2015년 3월 12일 목요일

ruby로 ssh 접속해서 원격으로 커맨드 실행시키기

서버에 명령어를 날릴때 보통 ssh를 이용하는데
ruby 스크립트를 이용해서 자동화 할 수 있다.

https://github.com/sosedoff/net-ssh-session

위의 gem을 사용하면 편리하다.
ruby에서 기본적으로 제공하는 net-ssh 의 경우 커맨드를 날릴때마다
세션 유지가 안되서 좀 불편하다.
예를 들어서 cd 로 디렉토리를 변경하고 ls를 해도 home 디렉토리의 파일이 리스팅 된다.

사용법은 readme가 워낙 잘 되어 있어서 간단하게만 설명하면
gem install net-ssh-session
위의 명령어로 gem을 설치하고
require 'net/ssh/session'

# Initialize a new connection
session = Net::SSH::Session.new(host, user, password)

# Connect to server
session.open

# Execute a remote command
result = session.run("ls")
이런 식으로 사용하면 된다.


2015년 3월 11일 수요일

vim 에서 html 작성할때 굉장히 편리한 플러그인 emmet-vim

그동안 vi에서 html 작성할때마다 너무 귀찮다는 생각을 했었다.
레일즈 개발할때는 haml을 사용해서 괜찮았는데...
그래서 오늘 검색을 해보다 알게된 플러그인이 있는데
사용해보니 생각보다 훨씬 편리했다.

이름은 emmet 이고 주소는 https://github.com/mattn/emmet-vim
나는 vundle을 사용해서 .vimrc 파일에

Plugin 'mattn/emmet-vim'

위에 처럼 한줄만 추가하면 설치가 된다.

간단히 말하면 css selector 문법처럼 쓰고 단축키로 ctrl + y + , 를 누르면 html 태그가 생성된다.
예를 들어서

div#page>div.logo+ul#navigation>li*5>a

위와 같이 입력하고 단축키를 누르면 아래 코드가 생성된다.

2015년 3월 8일 일요일

이클립스 플러그인 설치할때 'unable to find valid certification path to requested target' 에러 나는 경우

이번에도 회사 프록시 서버 때문에 생기는 문제다.

1. 회사 인증서를 java keytool을 사용해서 import

자바가 C:\Program Files\Java\jdk1.7.0_75 여기에 설치되어 있다고 하면
keytool은 bin 디렉토리에 있다.

$ keytool -import -alias proxy
   -file Example.cer
   -keystore C:\Program Files\Java\jdk1.7.0_75\jre\lib\security\cacerts

비밀번호를 새로 설정해준다.

2. 이클립스 설정파일에 추가

이클립스가 설치된 위치에 보면 eclipse.ini 파일이 있는데 이 파일을 열고

-Djavax.net.ssl.trustStore=C:\Program Files\Java\jdk1.7.0_75\jre\lib\security\cacerts
-Djava.net.ssl.trustStorePassword=changeit

위의 코드를 추가한다.
패스워드 부분은 위에서 새로 설정한 패스워드를 넣어준다.

이제 이클립스를 새로 시작하면 플러그인 설치가 잘 될것이다.