발생일: 2014.08.08 키워드: git, 파일명, 대소문자, capitalization 문제: 대부분의 프로젝트는 작업은 맥에서 하지만 운영은 CentOS에서 하고 있다. 작업할 때 가끔 실수로 파일명의 대소문자가 틀릴 때가 있는데, 맥에서는 대소문자를 구분하지 않기 때문에 오류가 나지 않아서 배포 후에야 대소문자를 구분하는 CentOS 환경에서 발견하곤 한다. 맥에선 대소문자를 변경해 커밋해도 같은 파일로 인식하기 때문에, 늘 다른 이름으로 변경했다가 커밋하고, 다시 대소문자를 변경한 후에 커밋하는 방법으로 해결하고 있었다. 번거롭다. 더 간단한 방법은 없을까? 해결책: `git mv`에 `--force` 옵션을 사용하면 한 번에 처리할 수 있다! 예) `git mv --force myfile M..
발생일: 2014.03.17 키워드: 포커스, focus, div 문제: 시각 장애인이 키보드로 레이어 팝업을 띄웠을 때, 리더 디바이스에서 레이어 본문의 내용을 바로 읽을 수 있도록 처리하려고 한다. 해당 레이어에 포커스를 주면 된다고 하는데, 그럼 자바스크립트로 div 엘리먼트에 어떻게 포커스를 줄 수 있을까? 해결책: http://snook.ca/archives/accessibility_and_usability/elements_focusable_with_tabindex 포커스를 주고자 하는 엘리먼트에 tabindex=“1” 속성을 주고, el.focus()를 호출한다.
발생일: 2014.04.11 키워드: backface-visibility, CSS3 필터, CSS3 filter 문제: 현재 서비스에 CSS3 blur 필터를 적용한 부분이 있다. 원본 이미지 아래에 블러가 적용된 이미지를 배경으로 넓게 표시하고 있는데, 대략 아래와 같은 태그 구조를 갖고 있다. `backface-visibility` 속성에 대한 설명은 아래 링크를 참고하자. https://developer.mozilla.org/en-US/docs/Web/CSS/backface-visibility
발생일: 2014.05.27 키워드: awk 문제: 쉘 스크립트에서 정규식으로 특정 부분을 가져와 처리하려고 한다. `awk`로 간단히 처리할 수 있다고 알고 있는데, 이참에 정확한 사용 방법을 알아봐야겠다. 해결책: awk ‘/정규식 패턴/ {액션} /정규식 패턴/ {액션}’ file 1. awk 명령은 매 라인 단위로 실행되며, 정의한 정규식과 액션을 순서대로 수행한다. 2. 싱글 쿼테이션은 해당 값이 커맨드로 인식되지 않도록 하는 역할을 한다. 3. 정규식이 매칭될 때에만 해당 액션을 수행한다. 4. 정규식이 매칭되지 않으면 아무 액션을 수행하지 않는다. 5. 액션이 정의되어 있지 않으면 기본적으로 print를 수행한다. 예) $ awk ‘/foo/ /bar/‘ sample.txt foo와 bar가..
발생일: 2014.07.26 키워드: 커버로스, kerberos 문제: 쉘 스크립트로 커버로스 로그인을 자동으로 처리하려고 한다. 아이디와 로우 패스워드만 받을 수 있는 환경이라, 직접 패스워드를 전달하는 방식으로 작성해야 한다. 어떻게 하면 될까? 해결책: `kinit`에 `password-file` 옵션이 있다. 아래와 같이 echo로 password 출력 후, 표준입력으로 건내주면 된다. echo | knit --password-file=STDIN 추가) 위 코드는 Mac OS에서 테스트한 것이었는데, Cent OS의 kinit 에서는 password-file 옵션을 제공하지 않는다. 참고: http://apple.stackexchange.com/questions/50653/how-can-i-use..
발생일: 2014.08.14 키워드: jquery, nodeName 문제: 코드 리뷰 중에 이벤트가 발생한 엘리먼트의 태그를 비교하는 구문에 대한 의견이 나왔다. el.nodeName === ‘DIV’ 과 같은 코드였는데, 브라우저에 따라 대소문자가 다른 경우가 있어 아래처럼 대소문자를 맞춰줘야 한다는 의견이었다. el.nodeName.toLowerCase() === ‘div’ 이 코드는 불필요하게 장황한데다 더 간단한 방법이 있어 메모해둔다. 해결책: 간단하게 jquery의 `$.nodeName()`을 사용할 수 있다. $.nodeName(el, name) 꼭 성능이 중요한 부분이 아니라면, $(el).is(‘name’) 과 같이 셀렉터로 비교하면 더 읽기 편한다. http://jsperf.com/jq..
발생일: 2014.08.12 키워드: iOS, webkit, safari, touch highlight, 터치 하이라이트, 웹킷, 아이폰, hover 문제: 전체 화면을 터치했을 때 특정 액션이 일어나도 처리하려고 한다. 헌데, iOS 웹킷에서는 터치할 때마다 hover 효과처럼 터치 하이라이트가 보인다. 그냥 하이라이트 없이 이벤트만 할당하고 싶은데, 어떻게 하면 될까? 해결책: 웹킷에는 탭 하이라이트 컬러를 설정할 수 있는 `-webkit-tap-highlight-color`라는 CSS 속성이 있다. 이 속성의 opacity를 100%로 설정하면, 터치 하이라이트를 제거할 수 있다. -webkit-tap-highlight-color: rgba(0, 0, 0, 0); http://davidwalsh.n..
발생일: 2014.05.23 키워드: bash, shell, shell script, sub shell, 서브쉘 문제: 쉘 스크립트에서 다른 명령을 실행하려고 하는데, 현재 쉘의 환경에서 해당 스크립트의 결과도 함께 출력되도록 하고 싶다. 어떻게 하면 될까? 해결책: 기존에는 다른 스크립트를 실행하려고 할 때 `명령`이나 $(명령) 과 같이 호출해왔었다. 이렇게 호출할 땐, 서브쉘에서 실행하는 거라 아웃풋을 현재 쉘에서 받을 수 없었는데, 찾아보니 현재 쉘에서 실행할 수 있는 방법이 있더라. $(명령) - 서브쉘에서 실행 { 명령; 명령; } - 현재 쉘에서 실행 위 문제 상황에서는, 서브 쉘에서 실행하는 것보다 현재 쉘에서 실행하는 게 더 적합했던 터라, { 명령; } 처럼 호출하는 걸로 처리했다.
발생일: 2014.03.15 키워드: ssh, 도메인, 호스트 문제: ssh로 특정 서버에서 접속하는데, 옆자리 M은 도메인 정보 없이 호스트 이름만 입력해서 접속하고 있는 거다! 예를 들어, foo.server.com 서버에 접속해야 하는데, 아래처럼 전체 경로를 넣는 대신, $ ssh username@foo.server.com 이렇게 간단하게만 넣어 접속하더라. $ ssh username@foo 어떻게 한 거지?! 해결책: System Preferences > Advanced > Network 설정에서 DNS 설정을 추가해주면 된다고 한다. 예를 들어, 접속 대상 서버가, foo.server1.com bar.server2.com baz.server3.com 라고 가정한다면, 아래 설정 창에서 Sear..
발생일: 2014.01.28 키워드: 젠킨스, jenkins, jshint 문제: 젠킨스에서 자바스크립트 프로젝트의 정적 검사 빌드를 돌리고 있다. JSHint 플러그인을 사용하고 있는데, 환경이 완벽하게 맞진 않더라. 진행하면서 삽질했던 것들을 메모해뒀다. 해결책: JSHint 결과 파일을 젠킨스에서 보여주기 http://stackoverflow.com/questions/20211896/integrate-jshint-into-jenkins-without-using-the-checkstyle-or-jslint-reporter checkstyle 플러그인을 설치하고. 그런트 빌드로 jshint 리포트 파일을 생성하고, 해당 파일을 젠킨스의 checkstyle에서 가져와 보여주도록 한다. https://wi..