11

17 Clojure Metadata

^{:debug} 👈 옆의 코드처럼, 메타 데이터를 form에 넣을 수 있다. 아래와 같은 문법으로 사용가능. 메타데이터를 세팅해두고 특정한 메타데이터가 세팅된 form만 가져오거나, form에 추가 정보를 넣는것이 가능함.

user=> (def ^{:debug true} five 5)
#'user/five
user=> (meta #'five)
{:ns #<Namespace user>, :name five, :column 1, :debug true, :line 1, :file "NO_SOURCE_PATH"}

17-2 vim jumplist

:h jumplist로 설명을 볼 수 있음. , 가 궁금해서 찾아봤다.

17 tmux change working directory

요새 tmux에서 동시에 여러 session을 띄어놓고 사용중인데, 처음 tmux server를 만들었던 곳의 디렉토리가 pane, window에 다 설정되어서 실수도 하게 되고 좀 힘들었다. 아래 링크를 그걸 해결하는 방법이고 아래 명령어를 tmux에서 입력하면 working directory를 바꿀 수 있음.

attach-session -c "#{pane_current_path}"

How do I change the starting directory of a tmux session?

16 - with-redef

spy를 쓰고 싶다고 했더니 with-redef를 알려줬다. 이렇게 쓸 수 있음..

(let [spy-atom (atom {})
  (with-redef sut/IwantASpy #(reset! spy-atom %)
    ; 여기서 IwantASpy를 호출하는 함수를 호출하고 검증하면 됨..
  )
]

15 - Deref, defmulti

신선하이 코드에서 보이던 @, defmulti 를 찾아봄. @는 "Deref"라고 부르며 reference에서 값을 읽어오는 것. defmulti는 동료가 한번 설명해줬던 클로저의 다형성(Polymorphism). 함수 오버라이딩과 비슷함. 잊지 말아야지.