Max OS X 터미널에서 ssh 로그인 비밀번호 입력 한방에 하기

ssh에서 패스워드 포함하여 명령을 입력하는 방법은 없기 때문에, 스크립트를 작성하여 입력 상태를 체크한 후에 자동으로 입력해주는 스크립트를 사용해야한다. 하지만 sshpass라는 좋은 툴이 있기 때문에 이를 사용하면 매우 편리하다.

sshpass를 이용하면 sshpass -p 패스워드 ssh 계정@호스트로 로그인이 가능하다.

sshpass를 사용하려면 실제로 컴파일을 해야하지만, 귀찮으므로 brew에서 사용가능한 Formula를 이용하자.

Formula: https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

Mac OS X에서 zsh 사용하기

Mac OS에서 기본적으로 사용하고 있는 bash의 쉘은 GPLv2 기반으로 나온 최종 버젼을 사용하고 있다. Mac OS에서는 GPLv3을 사용하지 않기 때문이다.

Max OS X 10.10.2 (Yosemite)으로 현재 확인해본 결과 bash 3.2.57 버젼을 사용하고 있으며 (2007년도 자유 소프트웨어 재단:FSF 카피라이트가 쓰여있다.), 보편적으로 bash를 많이 쓰는 Ubuntu 14.04.2 LTS에서는 4.3.11 (2013년도 FSF 카피라이트)버젼이며 GPLv3 라이선스가 명시되어 있다.

상업적으로 소프트웨어를 사용하는 애플사 입장에서는 Mac OS 개발을 할 때 라이선스의 제한을 벗어나기 위해 GPLv2가 적용된 최종 버젼을 사용하기 때문에 낙후 되어있다.

zsh를 Mac에서 사용하는 방법으로는 주로 brew를 통한 설치가 가능한 것으로 보인다.

위 과정에서

과 같은 오류가 발생하는 경우에는 /etc/shells의 맨 아랫줄에 which zsh 한 결과 “/usr/local/bin/zsh”를 추가하고 저장한 뒤에 다시 실행한다.

nginx에서 중간단계 인증서 설정하기

간혹 SSL을 설정할때, 기본키 외에 중간 단계의 키 파일을 포함하는 경우가 있다.

본인 도메인 기준으로 생성된 .crt 파일과 중간 단계의 키 파일이 있다면,

cat 본인도메인.crt 중간단계키.crt >> 완전한키.crt

위 과정을 통해 합쳐진 키를 만든 다음에 nginx 설정의 ssl_certificate 항목에 이 두가지 키가 합쳐진 파일을 로드해주면 된다.

단, 합치는 과정은 꼭 기본키 뒤에 중간단계의 키가 위치하여야만 하고 그렇지 않을 경우 오류가 발생할 수 있다.

pymssql과 SQLAlchemy 사용시 유의할 점.

pymssql을 apt-get install python-pymssql로 설치하는 경우 1.0.2 버젼이 설치가 된다. (2013년 8월 22일 기준) 하지만, 제대로 사용하려면 pip install pymssql로 설치하는 것이 좋다. (2013년 8월 22일 기준 2.0.0b1-dev-20130403 버젼)

pymssql을 pip로 설치하는 경우에는 apt-get install freetds-dev 패키지를 먼저 깔아주어야 오류 없이 정상적으로 설치될 수 있다.

* pymssql 버젼 때문에 발생할 수 있는 문제

  • SQL Server의 Version Info를 가져오는데 실패해서 SQLAlchemy의 mssql 플러그인 중 버젼 체크 로직 부분에서 re.match에 None 타입이 파싱할 대상으로 들어가 Exception 발생.

SSL설치용 인증서 만들기

명령어는 root 계정에서 실행.

– 서버용 key 파일을 생성한다. (참고: key 파일은 2048 bit로 생성)
openssl genrsa -des3 -out server.key 2048

– 서버 key 파일을 이용하여 csr을 생성한다.
openssl req -new -key server.key -out server.csr

– 생성한 csr 파일을 이용하여 SSL 인증서를 발급한다.

– 발급 받은 인증서(.crt) 파일을 웹 서버에서 설정.

jQuery에서 $(document).ready(function(){})와 $(function(){})

jQuery에서 흔히 쓰는 $(document).ready(function() {}); 는 $(function(){ }); 와 같다.

jQuery 공식 Docs에서도 위 2가지 표현 방법은 equivalent 하다고 한다.

성능 최적화를 위한 자바스크립트 경량화를 위해서는 후자의 방식대로 표현해도 좋을 것 같다. (아마 별 차이는 안나겠지만) 하지만, 위 두 함수가 같다는 것을 모르는 사람들에게는 맥락이 부족하여 가독성이 떨어질 수 있으니 유의.

MS의 SPLA 라이선스

MS의 서버용 운영체제를 구매하여 웹 서비스를 하는 경우에는 필수적으로 SPLA라는 서비스 공급자용 라이선스 계약을 체결해야 한다. 해당 라이선스는 영구적 계약 체결이 존재하지 않고, 월정액으로만 체결이 가능.

보통 웹 서버 제품군은 1 CPU당, DB 제품군은 2 Core 당 가격으로 계산한다.
여기서 특징적인 것은, DB 제품군 구매시 선택가능한 라이선스인 WEB 라이선스의 경우는 비즈니스 정보가 담긴 ERP나 그룹웨어 등에 사용 불가능하고, 공개된 웹 페이지 제작을 위해서만 사용해야 한다는 점.

MS의 SPLA 라이선스 소개 페이지: http://www.microsoft.com/ko-kr/licensing/licensing-options/spla-program.aspx http://www.spla.co.kr/spla/spla.aspx

HTTP Accept Header

Chrome 28.0.1500.72 m 버전에서는 웹 페이지 요청시 다음과 같이 Accept 헤더를 보낸다.

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept 헤더는 웹 브라우저가 응답을 받았을 경우에, 어떤 Content-Type 으로 해석을 할 것 인지를 결정하는 내용을 담고 있다.

위 예제의 경우에는 text/html과 application/xhtml+xml 순서대로 해석하며, 응답의 Content-Type과 맞지 않는 경우에는 q 값(기본: 1)에 따라서 높은 우선순위의 Content-Type을 선택하여 해석을 진행한다.

위 예제에서는 응답 Content-Type가 text/html이나 application/xhtml+xml이 아닌 경우에 그 다음 순위로 application/xml로 해석을 하게 된다.

HTTP Accept Header Definition: http://tools.ietf.org/html/rfc2616#section-14.1