카테고리 보관물: Tools & Tips

[Tip] Emacs에서 pdb 사용할 때 UnicodeEncodeError

*** UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 168-169: ordinal not in range(128)

Emacs에서 shell을 열고 pdb를 실행 할 때 표시하고자 하는 문자열이 ASCII가 아니라면 발생 할 수 있는 문제인데 emacs의 초기화 파일에 unicode locale 설정을 해주는 것으로 해결할 수 있다. 인터넷 문서들 중에는 LANG, LC_LANG, LC_CTYPE 모두를 설정해 주어야 한다는 내용도 있었으나, 내 terminal에서 LC_CTYPE만 설정해서도 잘 동작되고 있으므로 이를 따라 LC_CTYPE만 UTF-8으로 다음과 같이 설정해 주었다.

;;; **************************************************************
;;; Unicode Encoding
;;; **************************************************************
(setenv "LC_CTYPE" "UTF-8")

Init file을 reload하거나 emac를 재 실행해서 ASCII외의 문자들이 잘 표시 되는지 확인해 본다.

그리고 환경 설정은 GitHub repository에 업뎃. 🙂

[Tip] macOS에서 시작 프로그램 삭제

macOS에서 로그인시 자동으로 시작되는 프로그램을 삭제 하는 방법들은 대략 다음과 같다.

  1. 태스크 바에서 오른 클릭 후 ‘로그인 시 열기’ 해제
  2. 설정 -> 사용자 및 그룹 -> 로그인 항목에서 삭제
  3. /Users/<사용자계정>/Library/LaunchAgents/에서 unload
  4. /Library/LaunchAgents/에서 unload

사용자 계정에 등록된 로그인 항목 unload (위의 3번)

위의 1번과 2번 방법은 인터넷에 많이 있으니, 테스크바에도 등록되어 있지 않고 설정의 로그인 항목에서도 프로그램이 보이지 않는 경우, 사용자 디렉토리 내의 LaunchAgents에서 찾아 삭제를 시도해 볼 수 있다. 다음은 CrashPlan이라는 프로그램을 사용자 계정 시작 항목에서 삭제 하는 예시이다.

$ launchctl unload -w \
/Users/litcoder/Library/LaunchAgents/com.code42.menubar.plist 

시스템 전체로 등록된 로그인 항목 unload (위의 4번)

프로그램에 따라 사용자 계정별이 아닌 시스템 전체의 시작 프로그램으로 등록된 경우도 있다. 이 경우 /Library/LaunchAgents/에서 찾아 삭제를 시도할 수 있다. 다음은 Cisco AnyConnect VPN 프로그램을 시작 항목에서 삭제하는 예시이다.

$ launchctl unload -w \
/Library/LaunchAgents/com.cisco.anyconnect.gui.plist 

[Tip] Mac version docker에서 띄운 (웹) 서버에 접속하기

Mac version Docker에 띄워둔 web server에 host에서 접속하려면 어떻게 해야 할까? 실행할 때 ‘–network=host’를 주면 된다는 얘기가 있어서 해봤는데, Mac에서는 통하지 않았다 이건 linux용이라고… Networking features in Docker Desktop for Mac에 따라 실행할 때 port를 매핑하는 것으로 이 문제를 해결할 수 있다.

Docker의 9090 port에 Mac의 9090 port로 접근하려면 다음과 같이 -p option으로 port를 매핑해서 docker를 띄운 후 서버를 실행한다.

# Port 매핑으로 docker를 실행
MAC$ docker run --rm -ti -p 9090:9090 DOCKER_IMAGE

# Docker에서 웹서버를 띄운다. Python http.server module을 사용.
DOCKER$ python -m http.server 9090
Serving HTTP on 0.0.0.0 port 9090 (http://0.0.0.0:9090/) ...

이제 Mac의 web browser로 해당 포트에 접근할 수 있다.