일하며 배운것 메모
하루 한개
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). 함수 오버라이딩과 비슷함. 잊지 말아야지.