한글입력기를 구름입력기로 변경

Mac을 2007년부터인가 쓴 것 같은데,
항상 불편했던게 한영전환과 한글입력이었다.

윈도우를 쓸 때부터 한영전환은 shift+space로 사용하고 있었는데,
Mac은 OS 버전이 메이저 업데이트 될 때마다 shift+space로 설정하는 방법이 달랐다.

이번 Monterey 에서는 한영 전환을 시도하면 화면 중간에 다음과 같은 보기 싫은 작은 투명 윈도우가 생기기도 하고, 한영 전환 딜레이가 생기기도 하며, 항상 첫글자는 전환되기 전의 언어가 입력이 된다.

한영 전환시 화면에 뜨는 귀찮은 반투명 윈도우

그래서 한영 변환을 해서 한 템포 쉬고, 한 글자를 친 다음에 backspace로 그 글자를 제거한 후에 원래 입력하고 싶었던 문자들을 쳐 넣고는 했다.
Monterey로 처음 업데이트하고 나서 무척 당황스러웠지만, 며칠 쓰고 나니 그렇게 적응이 되어갔다.

그저께 갑자기 첫글자가 내 맘대로 입력이 안 되는 상황이 짜증이 났다.
아마 그 동안 짜증이 났던 것이 쌓여 있다가 한꺼번에 터져나온 것일 수도 있다.

그래서 구글링을 통해서 구름입력기의 존재를 알게 되고 설치를 했다.

곰곰이 생각해보니, 2007년엔가 한영 전환이 힘들어서 바람입력기를 썼던 기억이 났다.
그래서 한 때는 한영전환 및 한글 입력에 어려움을 겪지 않았던 적도 있었던 것 같다.
그러다가 바람입력기가 언제부터 관리되지 않았고, 나는 OS 기본 입력기에 재정착을 하게 된 것 같다.
사실 너무 오래 전 일이라 기억도 잘 나지 않지만, 바람입력기를 사용했던 적은 있었다.

구름입력기를 써보니 무척 편하다.

  1. 구름입력기 1.12.0 버전을 설치한 후에
  2. 시스템 환경설정 -> Input sources 에서 Han 2set을 추가해주고,
  3. 시스템 환경설정 -> Shortcuts -> Input Sources에서 'Select the previous input source'의 단축기를 Ctrl+Shift+Space로 설정하고 체크한다. 혹시나 umlaut 등을 입력할 일이 있을까봐... 아직 구름입력기에서 umlaut를 입력하는 방법은 모르기 때문에...
  4. 메뉴바에서 Input Source를 구름입력기로 선택한 다음,
  5. 구름입력기 환경설정에 들어가서, '한글/로마자 바꾸기 단축키'를 Shift+Space로 설정한다. 혹시나 싶어서 '오른쪽 키로 언어 전환'을 Command 키로도 설정해 놓았다.

구름입력기가 다 좋은데, WordPress의 WP Githuber MD랑은 궁합이 잘 안 맞는 것 같다. WP Githuber MD에서 한 글자가 완성되기 전에 그 글자는 제대로 보이지 않는다.

2022년 4월 24일 추가

Silicon Mac의 iTerm2에서 shift+space 입력할 때 space가 하나 추가되는 버그가 있는 것 같아서, 연구실 Mac에서는 기본 한글 입력기로 다시 돌아가서 쓰고 있다.

plist 파일을 수정해서 select next input source in input menu에서 Shift+Space로 만들었더니, 이제는 예전과 같은 문제가 발생하지 않아서 그냥 기본입력기를 쓰련다.

Intel Mac의 iTerm2에서는 별 문제 없이 구름입력기가 작동해서 구름입력기를 사용중이다.

Synology NAS에 afp 활성화

연구실 NAS에는 webdav를 이용해서 파일을 공유하고 있었으나, 무척 느렸다.
1MB 정도되는 작은 파일도 복사 시간이 한참 걸렸다.

그래서 오늘은 afp를 활성화했다.

584번 포트를 방화벽에서 열었는데, 별 일 없겠지.

이제는 집에서도 NAS에 원활하게 접속해서 작업을 할 수 있을 것 같다.

[MySQL] INTO OUTFILE 문으로 파일 내보낼 때 컬럼명 넣기

SELECT GROUP_CONCAT(CONCAT("'",COLUMN_NAME,"'"))
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_NAME = 'tmp3'
 ORDER BY ordinal_position;
SELECT 'appln_id',
       'docdb_family_id',
       'filing_year',
       'appln_title',
       'GRANTED',
       'doc_std_name',
       'doc_std_name_id',
       'person_ctry_code',
       'applt_seq_nr',
       'invt_seq_nr',
       'earliest_filing_year',
       'priority',
       'person_address_id',
       'company_name',
       'firm_id',
       'person_state',
       'person_country',
       'person_lat',
       'person_lng',
       'clean_person_address',
       'country',
       'capital',
       'firm_id2',
       'hq_state',
       'hq_country',
       'hq_lat',
       'hq_lng',
       'hq_address'
 UNION ALL 
SELECT DISTINCT *
  FROM tmp3
 WHERE firm_id2 = 383
 ORDER BY earliest_filing_year,
          docdb_family_id,
          applt_seq_nr,
          invt_seq_nr
  INTO OUTFILE '/tmp/schott_solar.txt';

update 삽질

현도와 쓰는 논문의 데이터 분석을 거진 마치고 마지막 하나만 추가분석을 하면 되는 찰나에 갑자기 R을 업데이트하고 싶은 욕망이 들끓었다.

R-4.1.3으로 업데이트를 했고,
패키지들을 update.packages() 명령으로 업데이트했더니 역시나 패키지들이 제대로 작동하지 않는다.

그래서 /Library/Frameworks/R.framework 디렉토리를 통째로 지우고
R-4.1.3을 새로 설치하고
마음에 드는 패키지들만 우선 설치를 해 두었다.

다음 차례는 emacs 패키지들 업데이트.
init 파일 조금 손보고 패키지를 업데이트하고 난 후에 아무 생각없이 Homebrew를 통해서 emacs를 28.1로 업데이트했다.

그랬더니, 터미널에서 화면이 무지 깨지는 불상사가 발생.

다시 27.2로 돌아가려고 했지만 이미 homebrew repo에는 27.2 버전을 내린 상황...

소스코드를 갖고 컴파일을 하자니 의존성 문제 때문에 하루 이상은 걸릴 것 같고, 이리저리 서핑을 해보니brew extract 명령으로 설치가 가능한 것 같았다.

https://www.44bits.io/ko/post/install-specific-version-package-homebrew#%ED%8A%B9%EC%A0%95-%ED%8C%A8%ED%82%A4%EC%A7%80%EC%9D%98-%EA%B5%AC-%EB%B2%84%EC%A0%84%EC%9D%84-%EB%A0%88%EC%8B%9C%ED%94%BC-%ED%8C%8C%EC%9D%BC%EB%A1%9C%EB%B6%80%ED%84%B0-%EC%A7%81%EC%A0%91-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

그러나 역시 제대로 설치가 되지 않아 구글링을 더 하다가, 다음 링크에서 emacs-27.2를 제대로 배포한다는 것을 알아냈다.
그러나 역시 daemon을 수도 없이 띄우는 버그가 있었다.
https://github.com/daviderestivo/homebrew-emacs-head

일이 바쁘니 우선은 28.1로 쓰다가, 조만간 28.2가 나오면 업데이트하거나 아니면 27.2로 다운그레이드를 제대로 하는 법을 알아봐야겠다.

다시 emacs-28.1을 사용해보니 화면이 깨지는 경우는 딱 한가지였는데, 한글 입력이 불완전한 경우였다(사실 이 경우는 무엇인지 제대로 파악을 못 했지만). 이 한글 입력을 제대로 다시 했을 때 화면이 깨지는 문제는 사라졌다.

그래서 다시 emacs-28.1을 잘 쓰고 있다.

Finder.app의 해당 디렉토리에서 iTerm2 열기

예전에는 Go2Shell이라는 앱으로 잘 되었었는데,
OSX가 메이저 업데이트 되면서 Go2Shell 관리는 안 하는 것인지 제대로 작동을 안 한다.

그래서 구글링을 하다가 찾은 해결책은 다음과 같다.
해결책 원본은 https://gist.github.com/pdanford/158d74e2026f393e953ed43ff8168ec1

  1. Automator를 켜고 파일 -> 새로 만들기 에서 Application을 선택한다.
  2. Automator에서 라이브러리 -> 유틸리티 -> 애플스크립트 실행을 더블 클릭한다.
  3. 이 글의 제일 아래 있는 AppleScript를 복사해서 붙여넣는다.
  4. Desktop 디렉토리 등에 iTermOpenHereScript.app라는 이름으로 저장한다. 그리고 iTermOpenHereScript.app을 ~/Library/Services에 복사한다. (파인더에서 Shift+Command+G를 눌러서 ~/Library/Services 를 입력하면 해당 디렉토리가 열린다.)
  5. 파인더 -> 응용프로그램의 iTerm2.app을 클릭해서 Command+i 를 쳐서 info 창이 나오면 iTerm2 아이콘을 클릭해서 복사(Command+C)한다.
  6. ~/Library/Services에 있는 iTermOpernHereScript.app을 클릭해서 Command+i 를 쳐서 info 창이 나오면 Automator 아이콘을 클릭하고 붙여넣기(Command+V)를 해서 아이콘 모양을 예쁘게 바꿔놓는다.
  7. Command+Option 키를 누른 상태에서 iTermOpenHereScript.app을 드래그해서 Finder.app의 툴바로 끌어다 놓는다.
  8. iTerm2의 환경설정 -> General -> Startup에 가서 Windows restoration policy를 Only Restore Hotkey Window로 선택한다.
  9. iTerm2의 환경설정 -> General -> Closing에 가서 Quit when all windows are closed의 체크표시를 없앤다. 그래서 기동이 빨라진다.

AppleScript

on run {input, parameters}
    set frontApp to (path to frontmost application as Unicode text)
    if (frontApp does not contain "Finder.app") then
        -- Finder does not have focus.
        return
    end if

    tell application "Finder"
        set listSize to count of (every window)
        if listSize is equal to 0 then
            -- The Finder desktop has focus and no windows anywhere else. default to home dir.
            set dir_path to "~"
        else
            try
                set dir_path to quoted form of (POSIX path of (folder of the front window as alias))
            on error errMsg
                -- This is a special dir (e.g. Network or "machine name"). default to home dir.
                set dir_path to "~"
            end try
        end if
    end tell

    CD_to(dir_path)
end run

on CD_to(theDir)
    tell application "iTerm"
        set term_window to (create window with default profile)
        set sesh to (current session of term_window)
        tell sesh to write text "cd " & theDir & ";clear"
    end tell
end CD_to