2025년 3월 29일 토요일

텔레그램 채널 추천

베스트 게시물 모아보기

- 다양한 커뮤니티의 베스트 게시물 제공

https://t.me/best_article


인문 상식과 인문 정보 채널

- 가볍고 쉬운 인문 두리 상식이나 정보를 모아 올림

https://t.me/saramgal


대한민국 정책브리핑 알리미

- 정책브리핑 보도자료에 대해 제목 및 내용에 대해 AI로 키워드 추출하여 하루 한번 알림

https://t.me/korean_gov_policy_brief


오늘의아이유(IU)

- 아이유

- https://t.me/iuuuuu


뉴스타파 채널

- 뉴스타파 채널

- https://t.me/newstapa


main news

- 각 신문사 메인 기사 제목

https://t.me/mainnews



2019년 4월 4일 목요일

스폿라이트를 이용해서 PDF 파일 내에 작성해 놓은 주석 내용 검색 (Finding contents in PDF annotations using Spotlight)

스폿라이트를 이용해서 PDF 파일 내에 작성해 놓은 주석 내용 검색 (Finding contents in PDF annotations using Spotlight)

PDF로 된 문서를 읽다가 내 생각, 내용 요약 등을 파일 내의 노트기능 (또는 annotation, comment)을 이용해 적어두어 필요할 때 찾아보는데, 뭐 당연히 이 노트에 적어둔 주석은 PDF 파일 뷰어의 검색 기능을 통해 찾아볼수 있다.
근데 문제는,
노트에 적어 둔 주석의 검색은 그 노트가 있는 PDF 파일을 뷰어로 열어야만 검색이 가능하다는 것이다.
즉, 내가 찾고자 하는 주석이 어떤 파일에 있는지 알아야 한다는 것인데, 이건 뭐 검색의 의미 자체가 사라지는 것이고,
더더욱 문제는 맥의 spotlight나 FoxTrot Professional Search 등 검색 앱을 활용해서는 주석을 검색하지 못한다는 것이다. (뭐 내가 몰라서 일수도 있다. 내가 뭘 몰라서 이러는 것이라면 누군가가 꼭 알려줬으면 좋겠다.)

이를 해결하기 위해서 몇가지 시도를 했었는데,
대표적으로
  • PDF 주석을 검색해 줄 수 있는 앱 -> 못찾겠다.
  • Alfred 앱의 Workflow 활용 -> 못찾겠다.
뭐 잘은 모르겠지만, 위의 두 가지 경우는 기술적으로 안되는 것일지도 모르겠다. 주석 자체에 대한 index 생성 자체가 안되는 것 같으니.

이를 해결하기 위해서 PDF 파일의 주석을 별도의 파일로 생성하게 해서 spotlight indexing이 가능하도록 하는 방법을 생각했다.
그렇다면 딱 떠오르는 것이
  • AppleScript를 직접 이용하거나, 또는 Hazel, KeyboardMaestro 등의 자동화 앱과 script를 이용 -> 파일 변화를 감지하여 자동으로 주석을 별도의 파일로 생성하게 하는 방법
이 있을 것이고,
구글링 해보면 유사사례가 있긴한데, 아래 두 가지 이유로 뭐 따라 해봐도 잘 못하겠다.
  • 웹에 있는 script가 제대로 안먹힌다. 그렇다고 내 상황에 맞는 script를 만들기에는 내 실력으로는 아주아주 많은 시간이 들어갈 것 같기도 하고.
  • Skim app이 script를 지원하여 이를 이용하는 방법 -> 문제는 Skim app 내에서 주석을 관리하는 방식이 다른 PDF 뷰어와는 달라서, 앱에서 PDF 파일을 불러올때 Skim 앱에 맞추어 파일을 변환해야 하고 (여기까지는 괜찮은데), 그렇게 되면 그 PDF 파일을 다른 PDF 뷰어에서 불러오면 주석이 다 날아간다.

그래서 완전 자동화는 포기하고 ㅠㅠ,
한 단계 번거롭기는 하지만, 주석 파일을 자동으로 생성해주는 앱을 이용하기로했다.
그것이 Highlights app.
앱 이름을 보면 Highlights app은 PDF 파일에 주석달고 뭐 그런 것에 특화된 앱 같다.
실제로 홈페이지 소개에 보면

Highlights for Mac is the PDF reader that summarizes for you.
Extract highlighted text, notes and images from PDFs into neat summaries that you can share via email, archive to Evernote or save to disk.

이렇게 되어 있다.
실제로 주석 관리를 위한 별도의 인터페이스가 존재한다.
그리고 중요한 기능이 주석 파일을 자동으로 생성해 주는 옵션이 있다는 것이다!!
Preferences > General 에 보면 "Sidecar-file" 이라는 항목이 있고, 이를 체크하면 자동으로 주석에 대한 .md (markdown) 파일을 생성해준다.
뭐 다들 잘 아는 것처럼, md 파일은 컨텐츠에 대한 spotlight indexing이 가능하다.

결론적으로,
  • PDF 파일을 읽으면서 필요한 주석 생성. - 나 같은 경우는 PDF 파일을 읽고 주석을 다는 것은 다른 앱들 (PDF Expert, Bookends)을 이용한다.
  • 필요한 주석을 다 달고 난 후에는 Highlights 앱으로 그 파일을 다시 한번 열어서 Save.
  • 검색이 필요하면 Spotlight 또는 Foxtrot Professional Search 앱을 이용해서 관련 문서 찾기.
  • 어떻게든 써먹기.
  • 끝.

한줄요약: Highlights app을 이용해서 markdown 형식의 별도의 주석 파일을 생성하여 저장.

2018년 1월 15일 월요일

나는 Typinator를 어떻게 쓰는가.

나는 Typinator를 어떻게 쓰는가.

Typinator는 손쉽게 상용구 작성 등을 도와주는 앱으로(영어로는 typing shortcut utility라고도 부르는 것 같다.), 미리 지정해 놓은 약어(abbreviation)를 입력하면 미리 입력해 둔 상용구가 자동으로 씌여지도록(expanding) 하는 것이 기본 활용방법이다. TextExpander가 가장 널리 알려져 있는 것 같으며, aText, Keyboard Maestro, Alfred, Dash 등의 앱에서도 유사한 기능을 제공하고 있다. 심지어 맥의 기본 기능에도 이와 유사한 역할을 하는 설정이 있으며(System Preferences (시스템 환경설정) > Keyboard (키보드) > Text (텍스트)), 또한 Microsoft Word 등에서도 “상용구”라는 이름의 메뉴로 이와 유사한 기능을 제공한다. 본 글의 목적은 이러한 앱들의 특징이나 장단점을 분석하는 것이 아니고, 단지 내가 Typinator를 어떻게 사용하는지 정리하는 것에 있다(나는 Typinator를 사랑하니까).

사용 목적 및 abbreviation 설정

  • 나의 경우, Typinator의 사용 목적이 상용구를 빠르게 작성하기 보다는 상용 단어를 빠르게 작성하는데 있다.
  • Typinator를 맨 처음 설치하면 기본적으로 안내하는 약자 지정 방식으로 ”;”+”abbreviation”를 제안하는 것으로 기억한다. 그러나 식별자 ; 를 먼저 적고 abbreviation을 적는 것은, 단어를 작성하는 동안이 아니라 단어를 작성하기 전에 expansion의 활용을 예상해야하기 때문에, 특별한 경우를 제외하고 나는 다음과 같은 방식을 선호한다.
  • 영어 키보드인 경우: “abbreviation”+”`”
  • 한글 키보드인 경우: “abbreviation”+”₩”
  • 영어 키보드인 경우와 한글 키보드인 경우가 다른 이유는 키보드 제일 왼쪽 상단의 1 왼쪽에 있는 키가 영어, 한글 키보드에 따라 ` 또는 ₩로 표시되기 때문이다 (맥 기준)

서식없이 붙여넣기

  • 어딘가에서 텍스트를 복사해서 서식을 다 지우고 그냥 텍스트(plain text)로만 복사해서 붙여 넣을 때 사용
Table 1. 서식없이 붙여넣기 (알파벳 자판)
Abbreviation Expansion Option
`v {clip} Case does not matter
Table 2. 서식없이 붙여넣기 (한글 자판)
Abbreviation Expansion Option
₩ㅍ {clip} Case does not matter
  • 여기서 {clip}이 Typinator에서 제공하는 서식없이 붙여넣기 기능이다.

단순히 자주 쓰는 단어들

  • email 주소라든지... 생각해보니 뭔가를 특별히 정해놓는다기보단 그때 그때 임시로 사용하는 듯 하다. 아래는 email 사용 예.
Table 3. 자주 쓰는 단어 확장하기
Abbreviation Expansion Option
eu` eu.openest@gmail.com Case does not matter

고유명사, 약자 등이어서 영단어에 대소문자가 섞여 있는 경우, 또는 camelCase

  • 자주 쓰면서 영단어에 대소문자가 맘대로 섞여 있어서 shift 키 누르기 귀찮은 경우에 사용
Table 4. 고유명사로, 단어에 대소문자 섞여있는 경우 (1)
Abbreviation Expansion Option
aecosim` AECOsim Case does not matter
Table 5. 고유명사로, 단어에 대소문자 섞여있는 경우 (2)
Abbreviation Expansion Option
landxml` LandXML Case does not matter
Table 6. 약어로, 단어에 대소문자 섞여있는 경우
Abbreviation Expansion Option
lod` LoD Case does not matter
Table 7. IFC entity에 camelCase 적용
Abbreviation Expansion Option
ifcbuildingelement IfcBuildingElement Whole word, Case does not matter
  • Table 7의 경우에는 “`”없이 그냥 단어 전체가 매칭되면 expansion 되도록 하였다.

한글과 영어가 막 섞인 글을 쓸 때

  • 한글로 작성하는 글의 대부분의 경우에 해당. 그래서 abbreviation에 한글자모를 넣어둠. 매우 효과적임. 너무 사랑하는 기능임.
Table 8. 한글 자모로 단어 확장하기
Abbreviation Expansion Option
ㅣㅐㅇ₩ LoD
Table 9. 한글 자모로 단어 확장하기
Abbreviation Expansion Option
ㅠㅑㅡ₩ BIM
  • 근데, 이 경우는 좀 더 추가적인 작업이 필요하다. Typinator가 한글을 지원하지 않기 때문에 이를 가능하게 하기 위해서는 특정 터미널 명령을 실행할 필요가 있다. 명령어는 다음과 같다.
defaults write com.macility.typinator2 allowAllSources 1
  • 이건 내가 알아낸게 아니고 구글링해서 알아낸건데, 사실 난 이거 적용한지도 오래되어서 정확하게 어디서 보고했는지 기억이 잘 안난다. 지금 구글링해보니 아마 ezsnote(2014), typinator에서 한글 이용하기에서 참고하지 않았나 싶다.
  • 그렇지만, 이러한 명령어를 사용해도 한글 자모가 합쳐진, 그러니까 한글 단어인 경우는 abbreviation으로 사용하지 못하고, 한글 자모가 분리된 경우만 가능하다 (물론 expansion에 한글을 넣는 것은 아무 문제 없다.). 정확하지는 않지만 이는 Typinator 자체가 일반 아스키 인코딩을 인식하는 방식, 또는 키 자체를 인식하는 방식이기 때문에 그럴 것으로 추측된다. 너무나도 아쉬운 부분이다.
  • 참고로, 맥의 키보드 > 텍스트 기능에서는 한글 단어 자체를 인식한다. Table 10이 그 예다. 그러나 맥의 이 기능은 속도가 매우 느리고, 잘 안될 때도 많다. 그래서 거의 안쓴다. 아쉽다.
Table 10. 맥의 단어 대치 기능
Replace (입력항목) With (대치항목)
교량₩ bridge

이탤릭체로 작성해야하는 경우

  • 이탤릭체 적용 방식에 대해서는 이전 블로그 글 참조. 즉, 단어의 양쪽에 “-“를 넣어주는 기능이다.
  • 나 같은 경우는, Ifc로 시작하는 단어만 이탤릭으로 처리해 준다 (Ifc가 식별자가 아니고 전문용어이다.). Ifc로 시작하지 않는 단어, 즉, 일반적인 단어들을 이탤릭으로 처리해주어야 하는 경우는 Typinator 쓰지 않고 그냥 단어 앞뒤에 “_” 넣는다.
  • 이건 regular expression을 사용해야하기 때문에, abbreviation set을 “REGULAR EXPRESSIONS” 부분에 생성해 주어야 한다. 이전까지는 모두 “ABBREVIATIONS” 부분에 생성해준 것들이다.
Table 11. 정규식을 이용해서 단어의 양쪽에 _ 기호 넣기
Regular Expression Expansion Option
(Ifc[A-Z0-9a-z]+)([`]) _$1_ Whole word, Case must match,
Combine with previous expansion
  • Table 11에서 $1은 입력 단어의 첫번째 괄호 안의 내용을 출력하라는 Typinator 기능이다. 즉, 위의 경우에서 $1에는 “Ifc[A-Z0-9a-z]+”가 할당되어 있다.
  • “Combine with previous expansion” 옵션은 지금의 expansion을 적용하기 전에 다른 조건에 의해 먼저 expansion이 적용될 필요가 있는 경우에 활용할 수 있다. 예를 들어 내가 ifcbuildingelement` 를 작성했을 때 최종 작성되는 expansion은 다음과 같다.
ifcbuildingelement` > IfcBuildingElement > _IfcBuildingElement_

첫 단어만 대문자로, 또는 전체 단어를 대문자로 변경

  • 말 그대로다. 이 경우도 regular expression을 사용한다. 예를 보자.
Table 12. 첫 단어만 대문자로 변경하는 경우
Regular Expression Expansion Option
([a-z]\w+)([`]`) {/Capital $1} Case does not matter,
Combine with previous expansion
Table 13. 전체 단어를 대문자로 변경하는 경우
Regular Expression Expansion Option
([a-z]\w+)([`]1) {/Uppercase $1} Case does not matter,
Combine with previous expansion
  • 느낌적인 느낌으로 알겠지만, {/Capital}은 capitalization 하라는 Typinator 기능이고, {/Uppercase}는 전체를 대문자로 바꾸는 기능이다.

마치는 말

  • 위에 작성해 놓은 글 이외에도 Typinator의 expansion에는 이미지를 넣을 수 있는 등 여러 기능이 있으며, Predefined Set으로 double caps 수정이라든지, Superscripts로 변경 등도 제공한다. 이리저리 잔머리를 굴려 Typinator를 잘 쓰면 쪼금 더 편한 타이핑 환경을 만들 수 있을 것으로 보인다.
  • 이 글에 대해 Typinator 개발 회사인 ergonis에서는 1원도 주지 않았다. 이런 글이 있는 것 조차도 모를 것이다.
  • 시연

관련 있을 수도 있는 이전 블로그 글