Sublime Text 2에서 브라우저 열기

간만에 괜찮은 텍스트 에디터 발견한듯. Emacs를 주로 사용하려고 노력해도 뭔가 맞지 않는 부분이 있고, 이걸 커스터마이징하는 노력이 너무 크다. 무난하면서도(일반적인 에디터의 이동, 편집 convention을 가진) 어느 정도 커스터마이징과 확장 가능성이 있는 에디터가 어디 없나 찾았었는데, sublime text가 그런 용도에 맞는거 같다는 느낌이 든다.

자세히는 모르겠지만 확장 인터페이가 python을 통해 구현할 수 있다. emacs는 elisp이었는데, 비슷한 개념인듯. 첫번째 커스터마이징(물론 구글링 후 copy&paste 한거지만).

Windows, Mac, Linux 모두 지원하는것도 강점. Mac에서만 써 봤는데 Windows나 Linux는 어떨지? 그리고 유료이긴 하지만 무료로 기능 제한이 없고(?) 대신 가끔 저장하려면 구매하라는 alert이 뜨는 정도.

Emacs에서 가장 아쉬운 점은 html과 같이 하나의 major-mode만으로 사용하기 힘든 환경에서는 일반적인 에디터보다 오히려 생산성이 떨어지는 느낌이 든다는 점이다. 물론 방법이 있는거 같은데, 내 손에 맞는걸 찾는데 까지가 넘 힘들어서…

현재 파일을 브라우저에서 열기

source : http://www.sublimetext.com/forum/viewtopic.php?f=2&t=3851

Tool > New Plugin 선택하고, 아래 코드 붙여 넣기

import sublime, sublime_plugin
import webbrowser

class OpenBrowserCommand(sublime_plugin.TextCommand):
    def run(self,edit):
        url = self.view.file_name()
        webbrowser.open_new(url)

Tools > Command Palette 에서 “Key Bindings – User” 선택. Suggest 해 주니 쉽게 찾을수 있음. 배열 제일 마지막에 아래 코드 붙여 넣기. 원래 있던 마지막 항목 끝에 ‘,’ 붙이는거 잊지 말것.

{ "keys": ["ctrl+shift+b"], "command": "open_browser" }

ctrl+shift+b 키에 open_browser 명령을 바인딩하는 것이니, 입맛에 맞춰 단축키 변경하면 됨. 참고로 Mac에서 command 키는 super 이고, 화면에 출력되지 않는 키들은 이름이 부여되어 있는거 같음. 파일을 보면서 확인 가능.

키 바인딩에서 명령을 "open_browser"라고 했는데 해당 클래스 이름은 OpenBrowserCommand이다. 아마도 매핑하는 컨벤션이 있는듯.

2011년의 마무리.

뭐 새삼스럽게 마무리할건 없고… 그냥 몇가지 되짚어 보면.

서울시장 야권, 민주당(?) 후보 경선 투표 – 첫번째 적극적 정치 참여.
통합진보당 당원 가입 – 정치 참여. 뭐 얼마나 참여할지는 모르겠음. 오늘 극적(ㅋㅋ)으로 가입.
시사인 정기 구독 – 빨랑 했어야 했는데 늦장 부렸다 오늘에서야 신청
카페 안드로이드 앱 프로젝트 – 첨으로 PM 해봤고 지금까지 결과 좋다고 자평(그런가?).
팀원들이랑 마니 친해졌고.

정치 얘기가 많아진건 순전히 나꼼수 때문임.

내년 목표 명확해 졌음… ??? …

“2011년 목표”라고 했었는데… 결과.

2011년 나의 목표

라고 했었는데, 역시나 이룬게 별로 없군.

필수
  • SICP 모든 내용 학습하기
    3장까지만 봤음. 50% 달성. 그리고 “모든 내용”이 마스터의 의미는 아니었겠지? 3장까지 다시 봐도 새로울거 같어…
    그리고, HTDP를 새롭게 시작했기 때문에 내년은 이걸 목표로!!!
  • 개인 프로젝트 2개 진행하기
    뭐 하나 진지하게 한건 없음. 그냥 쫌 하다 말고… 쩝. 이건 내년에 다시 목표로 잡기.
  • 100권 책 읽기
    지금 보니 40권 정도인데 일부는 읽다 말고 한것들도 있고, 다 읽었지만 읽었다고 할 수 없는것들도 있고. 쩝. 역시나 책을 읽는 나만의 방법을 찾는게 시급해 보임. 그리고 교과서(?, 기술서적) 이것도 여기다 세야 하나? 애매함.
  • 정규표현식 공부하기-실무에서 겁없이 쓸수 있는 수준으로
    첨에 목표로 잡고 책 한권 읽은게 다이네. 역시나 아직은 copy&paste 방식이고 그나마 기회도 별로 없는듯. 일단 내년 목표는 아님.
최대한 노력
  • clojure를 나의 주 언어로 만들기
    뭔가 많이 늘긴 했는데 수준을 가늠하기 어려움. 역시나 프로젝트가 필요함.
  • 순수 함수형 언어 학습 – clojure/javascript와 비교 차원, clojure 이해를 위해 필요한 부분일 듯.
    전혀 못했다고 봐야 하고, 내년에는 Haskell 공부를 해야 할거 같음.
  • 30편 영화 보기
    카운트 불가. 근데 30편은 아닌 듯. 역시나 무리!
했으면
  • 운전하기 – 차 살 수 있을까?
    전혀 못함. 내년은… 사실 하고 싶지 않다.
  • PMP 공부/준비
    이걸 왜 하려고 한거지??? 일단 목표서 제외

Last Updated: 2011. 1. 4

The Node Beginner Book 후기

갑자기!!! node.js 공부중이다. 초보자를 위한 – 물론 JavaScript는 안다는 가정 – 책이 있어 소개.

책 제목은 The Node Beginner Book.

배운점

  1. Node는 single thread이고, application은 async로 동작하게끔 짜야 한다. 이 부분에 대해 잘못된 사례를 들며 친절히 설명하고 있음.
  2. 최종적으로 이미지를 업로드하는 web application을 하나 만드는데, server, router, handler의 구조를 가진다. 왜 이러한 구조가 되는지 하나씩 따라가면서 개념을 익힐 수 있다. 중간에 소개하는 아래 참조 글들도 숙독할 필요 있음.

참고 article

javascript this

http://javascriptweblog.wordpress.com/2010/08/30/understanding-javascripts-this/

// 1.
alert(this);

var a = {
    b: function() {
        return this;
    }
};

// 2.
a.b();

// 3.
a['b']();

var c= {};
c.d = a.b;

// 4.
c.d();

// 5.
a.b.apply(c);

// 6.
a.b.call(c);

var foo = a.b;

// 7.
foo();

var x = {
    y: function() {
        var z = function() {
            return this;
        };
        return z();
    }
};

// 8.
x.y();

var s = {
    t: function() {
        return (function() { return this; })();
    }
};

// 9.
s.t();

var A = function() {
    this.toString = function(){return "I'm an A"};
};

// 10.
new A();

// 11.
alert(eval('this==window'));

var i = {
    j: function() {
        eval('alert(this == i)');
    }
};

// 12.
i.j();