• Trailing whitespace is evil. Don't commit evil into your repo. →

    Jared Barboza가 쓴 줄 끝 공백에 관한 글이다.

    난 최근에 다양한 사람/언어/편집기와 함께 많은 프로젝트를 진행해 왔다. 우리들 대부분은 Git 초보자였고, 각 프로젝트는 줄 끝 공백에 관한 문제가 있었다.

    경력 있는 개발자로만 이루어진 팀이라고 해도 이런 문제는 발생하기 마련이다.

    줄 끝 공백은 당신의 저장소에서 상당히 많은 문제를 일으킬 수 있다. 실제로 바뀐 것은 공백일 뿐인데도 그 줄에 변경 사항이 있다는 잘못된 diff를 만든다.

    이는 개발 과정에서 나중에 실제 파일의 변경 사항이 무엇이었는지 찾기 불가능하게 만든다. 대부분의 오픈 소스 프로젝트 대표들은 이를 알고 있고, 그들 대부분은 줄 끝 공백을 없애지 않은 풀 리퀘스트를 거절할 것이다.

    이후 글에서는 Visual Studio와 Sublime Text 2에서 줄 끝 공백을 제거하는 방법과 git hook을 통해 커밋에 줄 끝 공백이 포함되지 않도록 하는 방법을 소개하고 있다.

    나는 Android Studio에서는 파일 저장 시 모든 줄 끝 공백을 지우고, Vim에서는 줄 끝 공백에 하이라이트를 입혀 쓰고 있다.

    highlight ExtraWhitespace ctermbg=red guibg=red
    autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
    autocmd InsertEnter * match ExtraWhitespace //
    autocmd InsertLeave * match ExtraWhitespace /\s\+$/
    if version >= 702
      autocmd BufWinLeave * call clearmatches()
    end
    
  • Twitter Link Bookmarklet →

    Dave Bradford의 트위터에 관한 팁 Twitter Profile Bookmarklet을 봤다. 직접 써 보니 기능이 추가됐으면 더 좋을 것 같아 추가했다.

    일단, 원글에 있는 코드의 기능은 간단하다. 모바일 사파리를 통해 트위터 계정을 보다가 북마크 버튼을 한 번 누르면 Tweetbot에서 볼 수 있게 된다. 여기에 브라우저를 통해 ‘트윗’을 보고 있다면 Tweetbot으로 바로 그 트윗을 볼 수 있게 기능을 추가했다. OS X에서도 동일하게 작동한다.

    var url = document.URL;
    var match = url.match(/status(?:es)?\/(\d+)/i);
    var tweetbotUrl;
    if (match == null) {
        tweetbotUrl = url.replace(/https?:\/\/(mobile\.)?twitter\.com\//, "tweetbot:///user_profile/");
    }
    else {
        tweetbotUrl = "tweetbot:///status/" + match[1];
    }
    window.location = tweetbotUrl;
    

    원리는 간단하다. 현재 페이지 URL에 statusstatuses가 포함되어 있으면 트윗을 열고, 그렇지 않으면 계정을 보여 준다. 아래 코드를 북마크 해두고, 필요할 때 눌러주면 된다.

    javascript:var%20url=document.URL;var%20match=url.match(/status(?:es)?%5C/(%5Cd+)/i);var%20tweetbotUrl;if(match==null)%7BtweetbotUrl=url.replace(/https?:%5C/%5C/(mobile%5C.)?twitter%5C.com%5C//i,%22tweetbot:///user_profile/%22)%7Delse%7BtweetbotUrl=%22tweetbot:///status/%22+match[1]%7Dwindow.location=tweetbotUrl;
    

    기기에 Tweetbot 2와 Tweetbot 3가 모두 깔려 있을 때 Tweetbot 2로 열리는 점은 아쉽다.

    via Yoon Jiman

  • Global Git Ignore →

    usevimAlex Young이 쓴 global gitignore에 관한 글이다.

    나는 몇 년간 .gitignore*.sw?을 넣어 왔는데, Vim을 쓰지 않는 사람들은 특정 편집기를 위한 .gitignore 항목을 보고 싶지 않아 할 수도 있다는 걸 깨달았다. 편집기들은 임시 파일과 복구 파일을 각자 다른 방식으로 관리하기 때문에 이 설정을 모두에게 강요하는 것은 과해 보인다.

    이것보단 global 옵션을 사용하는 것이 낫다. git config --global core.excludesfile ~/.gitignore를 실행해라. 그러면 거기에 *.sw?을, 어쩌면 *~도 넣을 수 있다. 난 .DS_Store를 추가할 텐데, Windows 개발자들은 여기 신경 쓸 필요가 없기 때문이다. 그리고 그들은 아마 Thumbs.db를 추가해야 할 것이다.

  • ropasaurusrex: return-oriented programming 입문서 →

    SkullSecurityRon Bowes가 쓴 return-oriented programming 입문서가 있어 번역했다.

    Read on →

  • Design Details: Paper by Facebook →

    Brian Lovin이 쓴 페이스북 Paper의 디자인 디테일에 관한 글이다.

    페이스북 Paper가 나온 지 하루가 지났고 대부분의 리뷰가 다소 갈리고 있다. 나는 페이스북의 열성적 팬은 아니지만, Paper의 디자인과 디테일에 쏟은 관심은 비길 데 없으며 이는 다른 디자이너들과 공유할 가치가 있다.

    Paper 앱의 애니메이션을 총 23종의 GIF 파일로 기록하고 리뷰해 놓았다. Paper 앱이 출시되고 꽤 시간이 지났지만 앱을 사용하면서 눈치채지 못했던 점이 많아 지금이라도 공유한다.