발생일: 2015.01.02 키워드: Date, toTimeString(), toISOString(), toUTCString() 내용: Date 객체에는 `toString()` 말고도 다양한 문자열 출력 메서드를 갖고 있다. - toTimeString(): 날짜를 제외하고 시간만 출력한다. (ECMA3 부터 지원) - toISOString(): ISO8601 포맷으로 출력한다. (ECMA5 부터 지원한다. IE9~) - toUTCString(): UTC 포맷으로 출력한다. 참고: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toTimeString
발생일: 2014.03.04 키워드: jenkins, id_rsa, private key permission 문제: 젠킨스 빌드에서 SSH로 원격 서버에 접속해서 명령을 날리던 중, 아래와 같은 오류가 발생한다. 뭔가 문제일까? 해결책: Permissions 0644 for ‘/var/lib/jenkins/.ssh/id_rsa’ are too open. 에러 메시지에서처럼, 젠킨스의 프라이빗 키 파일의 권한이 644로 설정되어 있었기 때문이다. 프라이빗 키의 공개 범위가 너무 넓어서 해당 키를 사용하지 않겠다는 얼럿이다. 644(-rw-r—r—) 로 설정되어 있었던 키 파일의 권한을, 600(-rw———) 으로 변경하는 것으로 해결했다. $ chmod 600 id_rsa
발생일: 2015.04.28 키워드: 인증서, 크롬, Chrome, 문제: 크롬 브라우저에서 https://story.kakao.com 에 접속하면, 언제부턴가 아래처럼 노란 삼각형 에러가 표시된다. 인증서 만료일이 아직 도래하지 않았는데, 왜 경고 표시가 나오는 걸까?인증서를 클릭해보면 아래와 같은 문구나 나온다. The identity of this website has been verified by Thawte SSL CA but does not have public audit records.The site is using outdated security settings that may prevent future versions of Chrome from being able to safely acc..
발생일: 2015.04.22 키워드: IE8, bubbling, 버블링 문제: 버블링 되기 전에 타겟 엘리먼트를 삭제한 경우, IE8에선 버블링에 의한 이벤트가 발생하지 않는다. 해결책: 아래와 같은 구조를 가지고 있다고 했을 때, button 아래 스크립트는 IE8과 다른 브라우저 간 동작이 다르다. // 하위 엘리먼트에서 이벤트를 받아 바로 삭제한다. $('#btn').on('click', function (e) { $(e.target).remove(); }); $('#wrap').on('click', function (e) { alert(e.target.innerHTML); // IE8에서는 이 코드가 실행되지 않는다. 이 외 브라우저에서는 동작한다. }); http://jsbin.com/yukok..
발생일: 2015.04.15 키워드: IE8, last-child, first-child 문제: :last-child 슈도 클래스를 적용해서 엘리먼트에 스타일을 줬는데, IE8에선 적용되지 않는다. 어랏. first-child 랑 같이 모두 지원되던 거 아니었나? 해결책: 아니었다. -_- :last-child 는 IE9부터 적용되었다고 한다. :first-child 를 사용하는 방법으로 우회해 해결했다. 참고: http://stackoverflow.com/questions/8840802/first-child-and-last-child-with-ie8
발생일: 2015.04.15 키워드: IE8, getBoundingClientRect 문제: `Element#getBoundingClientRect()`로 엘리먼트의 사이즈를 가져와 처리하는 코드를 작성했는데, IE8에선 동작하지 않는다. 왜일까? 해결책: `getBoundingClientRect()` 의 width 와 height 속성은 IE9부터 지원한다. 또한, IE8 이하에서 getBoundintClientRect() 의 리턴된 rect 객체는 읽기 전용이기 때문에, 다른 속성을 할당하는 것만으로도 오류가 발생한다. rect.height = 100; //—> IE8에서 오류 발생 편의를 위해 아래와 같은 유틸리티를 만들어서 사용하는 방식으로 처리했다. var getBoundingClientRect..
발생일: 2015.03.21 키워드: slack, jenkins, 슬랙, 젠킨스 문제: Slack 에 젠킨스를 통합해서 빌드 전/후로 메시지를 받으려고 한다. 어떻게 하면 될까? 해결책: 1. Slack Integrations 페이지에서 Jenkins CI를 찾아 추가하고 토큰을 생성한다. https://my.slack.com/services/new 2. 젠킨스 플러그인 페이지에서 Slack Notification Plugin 을 추가한다. https://github.com/jenkinsci/slack-plugin 3. 젠킨스 관리 > 시스템 설정 플러그인 관리 페이지에서 발급받은 토큰을 추가한다. 4. 프로젝트 구성에서 Slack Notifications 옵션을 추가한다. 주의할 점 - 채널을 명시하지..
발생일: 2015.03.18 키워드: slack, hubot, 슬랙, 휴봇 문제: Slack 에 휴봇을 통합하려고 한다. 어떻게 하면 될까? 해결책: 1. Slack Integrations 페이지에서 휴봇을 추가하고 Access Token을 발급받는다. https://my.slack.com/services/new/hubot 2. 통합하면 채널에서 바로 hubot 을 초대할 수 있다. 원하는 채널에서 아래 명령을 실행해 초대한다. /invite @hubot 3. 발급받은 토큰으로 휴봇을 구동한다. $ HUBOT_SLACK_TOKEN=[토큰] ./bin/hubot --adapter slack 참고: http://eng.rightscale.com/2014/09/17/hubot-unix-server.html
발생일: 2015.01.16 키워드: Google Analytics, 구글 애널리틱스 문제: 구글 애널리틱스를 살펴보다가, 코드에 재밌는 부분이 있어 메모해둔다.ㅎㅎ 해결책: 애널리틱스 코드를 보면서 `script` 문자열을 왜 파라미터로 전달할까… 라고 생각했었는데, 풀어놓은 코드의 주석을 보니 변수 선언에 대한 바이트 절약 때문이란다. 오오… 최적화를 많이 고민했구나. /** * Creates a temporary global ga object and loads analy tics.js. * Paramenters o, a, and m are all used internally. They could have been declared using 'var', * instead they are declare..