QuickSilver


QuickSilver은 아는 사람들은 다 알겠지만 설명을 하자면, 키보드으로 파일을 찾기도 하고 프로그램을 실행 하기도 하는 프로그램이다.

간단한 단축키로 QuickSilver을 열고나서 하고 싶은 것을 키보드으로 입력하면 된다. 그러면 QuickSilver은 알아서 원하는 것을 해준다. QuickSilver에 관한 여러가지 내용은 인터넷에 있으니 굳이 여기 QuickSilver에 대해 적지는 않겠다.


Day One


Day One은 일기를 적는 어플이다. 처음에는 아이폰 어플로 있다가 맥으로 옮겨온 어플이다. 따라서 아이폰 어플과 맥 어플은 서로간의 싱크가 잘 된다. 이에 관한 내용도 QuickSilver처럼 인터넷에 있어서 여기서 Day One에 대해 더는 적지 않겠다.


QuickSilver을 통해 Day One에 일지 쓰는 방법


Day One은 맨뉴바에 간단히 일지를 쓸 수 있게끔 해놨다. 하지만 가끔씩은 QuickSilver에서 Day One 일지를 더 간편히 쓸 수 있지 않을까라는 생각을 했다. 결국엔 그 방법을 찾았고 여기에 어떻게 그것을 했는지를 적겠다.

먼저 대략적인 사용 방법을 적자면, QuickSilver에 텍스트를 입력하고 나서 (QuickSilver이 열린 상태에서 . 을 누르면 텍스트를 입력할 수 있다.) “Send to Day One”이라는 “Action”을 고르면 Day One에 일지가 적혀지는 방식이다.

이것을 가능하게 만들려면 두 가지 파일이 필요하다.

첫번째는 Day One의 command line interface (/usr/local/bin/dayone)이 필요하다. 이것을 설치하는 파일은 http://dayoneapp.com/tools/에서 다운로드 받을 수 있다. Command line interface을 통해서 terminal상에서 Day One 일지를 쓸 수 있다. 따라서 이것을 사용하는 방법은 무궁무진하다.

두번째는 “Send to Day One”이라는 스크립트가 필요하다. 이 스크립트는 QuickSilver와 Day One의 command line interface을 연결해주는 스크립트이다.
using terms from application "Quicksilver"
	on process text dayLog
		# 입력 된것을 DayOne에 적는다
		set returnString to do shell script "echo " & quoted form of dayLog & " | /usr/local/bin/dayone new"
		# 추가 된 일지에는 빈줄이 하나가 추가 된다. 빈줄을 없애주기 위해 아래 부분이 필요하다.
		# 추가된 일지의 경로를 찾는다.
		set cleanFileName to split(returnString, "New entry :") as string
		set tempFileName to split(cleanFileName, space)
		set fileName1 to item 2 of tempFileName
		set fileName2 to item 3 of tempFileName
		set fileName to fileName1 & "\\ " & fileName2
		#display dialog fileName
		# 파일을 임시 파일로 복사한다.
		do shell script "cp " & fileName & " " & fileName & ".tmp"
		# </string>을 올바른 위치로 이동 시킨다.
		do shell script "awk '{if($0 != \"<\\/string>\"){current=$0} else {prev=prev\"<\\/string>\";current=\"Tmwlak!!\";};if(prev!=\"Tmwlak!!\"){print prev;};prev=current}' " & fileName & ".tmp" & "> " & fileName
		# 마지막 누락된 줄을 추가한다.
		do shell script "tail -1 " & fileName.tmp & " >> " & fileName
		# 첫 빈줄을 지운다.
		do shell script "sed -i \"\" 1d " & fileName
		# 임시 파일을 삭제한다.
		do shell script "rm " & fileName & ".tmp"
		return nothing
	end process text 
end using terms from

# 스크립트를 위한 추가 함수

to split(someText, delimiter)
	set AppleScript's text item delimiters to delimiter
	set someText to someText's text items
	set AppleScript's text item delimiters to {""} –> restore delimiters to default value
	return someText
end split

이 스크립트를 ~/Library/Application Support/Quicksilver/Actions에 Send to DayOne.scpt 이라는 이름으로 저장하면 제목(Send to DayOne.scpt)이 QuickSilver의 “Action”이 된다.

이로써 QuickSilver을 통해 Day One에 일지를 쓸 수 있다.


참고


Day One과 LaunchBar을 같이 사용하는 법: http://brettterpstra.com/2012/01/16/logging-with-day-one-geek-style/
Advertisements