발생일: 2015.02.25 키워드: nginx, 엔진엑스, proxy_pass, ssl 문제: nginx로 리버스 프록시를 구성할 때, upstream 디렉티브에서 https 서버를 사용해 설정하고 싶다. 해결책: upstream 으로 정의할 때, 포트를 정의해주면 된다. 리버스 프록시를 호출할 때엔 https 로 정의한다. upstream example_api { server example.com:443; } location … { proxy_pass https://example_api; }
발생일: 2015.02.07 키워드: bash_profile, bash 문제: 서버의 .bash_profile 스크립트를 수정했다. 해당 스크립트에서 오류가 있었는지, 쉘로 접속하면 바로 터미널이 종료된다. 헐.... 어떻게 하지... 해결책: .bash_profile 을 사용하지 않는 다른 쉘로 접속하면 된다. $ ssh -t username@hostname /bin/sh 살았다.ㅎㅎ 참고: http://serverfault.com/questions/94503/login-without-running-bash-profile-or-bashrc
발생일: 2014.09.11 키워드: css, user-select, prevent selection, 선택되지 않도록 문제: 텍스트를 사용자가 선택하지 못하게 하려고 한다. 해결책: 아래와 같이 user-select 속성을 none 으로 설정해주면 된다. .prevent_selection { -webkit-user-select: none; /* Chrome/Safari */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* IE10+ */ /* Rules below not implemented in browsers yet */ -o-user-select: none; user-select: none; }
발생일: 2014.07.10 키워드: node, 노드, 문자열 인코딩, 디코딩, euc-kr, utf-8 문제: 노드에서 euc-kr 문서를 읽어 utf-8 로 변경해 처리하려고 한다. 해결책: 노드의 네이티브 인코딩에는 euc-kr 이 포함되어 있지 않다. 대안으로 iconv 라이브러리를 이용해 처리할 수 있다. 1. euc-kr 로 인코딩된 문서는 바이너리로 읽어온다. 2. 새 버퍼에 대상 문자열을 할당한 후, iconv 로 변경한다. function eucKrToUtf8(str) { var iconv = new Iconv('euc-kr', 'utf-8'); var buf = new Buffer(str, 'binary'); return iconv.convert(buf).toString(); } 논의:..
발생일: 2014.05.25 키워드: relative protocol path, 프로토콜 생략 문제: IE8에서 CSS가 두 번씩 요청된다. 해결책: CSS 경로에 프로토콜을 생략하고 사용하고 있었기 때문이었다. 프로토콜을 생략하면 해당 페이지의 프로토콜에 맞게 요청되는 장점이 있어 사용하고 있었다. 하지만, link 태그나 @import 구문에서 사용할 경우, IE7/IE8 에서 두 번 요청되는 이슈가 있다고 한다. 논의: 이제는 https로 리소스를 요청해도 성능 이슈가 거의 없다고 한다. 가능한 경우 모두 https 로 작성해주는 게 좋겠다. 참고: http://www.paulirish.com/2010/the-protocol-relative-url/ http://www.stevesouders.com..
발생일: 2014.04.14 키워드: nginx, 웹 폰트, web font, mime type, 마임 타입 문제: 서버에 웹 폰트 리소스를 올려두고 서빙하려고 하는데, nginx 가 제대로 응답하지 못해 웹 폰트가 적용되지 않는다. 해결책: nginx 의 기본 마임 타입에 웹 폰트 리소스의 타입이 포함되어 있지 않기 때문이다. nginx의 conf/mime.types 파일에 아래 타입을 추가해주면 된다. font/ttf ttf; font/opentype otf; application/font-woff woff; application/vnd.ms-fontobject eot; - 기본 타입에 `eot` 확장자는 `application/octet-stream`으로 정의되어 있는데, 이 라인은 삭제해준다. -..
발생일: 2014.04.10 키워드: 그런트, Grunt, build, 빌드 문제: 그런트 빌드 시 커맨드라인 옵션으로 깃 해시를 넘기고 있는데, 간헐적으로 빌드에 실패한다. 예를 들어, 아래와 같은 식이다. $ grunt build --gitHash=9e14492 원인이 뭘까? 해결책: 빌드 코드에서는 아래와 같이 `option()`으로 옵션을 가져오고 있었다. grunt.option('gitHash’) 옵션 처리를 위해 Grunt 내부에서 `nopt`라는 라이브러리를 사용하는데, 이 라이브러리에서 자동으로 타입을 결정하고 있었던 것이 원인이었다. 해당 라이브러리에서 문자열로 넘어온 '3.10'이나 '9e123' 같은 옵션이 Number로 판단해 처리했기 때문이다. nopt 에는 knownOpt를 미리..