iOS 앱을 개발하다보면 Xcode에서 기기를 제대로 인식하지 못해서 연결이 되었다 말았다 하는 증상을 보일 때가 있다. Xcode나 기기를 껐다 켜면 해결된다는 글을 예전에 보고 그렇게 해왔는데 한참 개발하고 있을 때 문제가 생기면 엄청 번거롭다. 케이블이 문제라는 글도 있었는데 결국 다 변죽 울리는 얘기고 문제는 usbd였다.

이전에 연결되어 있던 usbd이 죽지 않고 정지된 상태로 대기중일 때 이런 문제가 발생한다. 터미널에서 다음 명령어로 해당 데몬을 끄면 정상적으로 동작한다.

$ sudo killall -STOP -c usbd

Jake Poznanski의 글 Debugging Behind the Iron Curtain을 번역했다.


세르게이는 소비에트 연방의 초기 컴퓨터 산업 전문가였습니다. 저는 지난 몇 년 간 그 사람과 함께 일한 덕분에 많이 배울 수 있었습니다. 함께 하는 시간 동안 임베디드 프로그래밍과 인생에 대해 어느 학교에서도 가르치지 못할 만큼 많이 배웠습니다. 가장 인상적인 가르침은 1986년 늦가을에 있던 이야기였습니다. 그 이야기는 세르게이가 가족과 함께 소비에트 연방에서 이주하게 되는 계기가 되기도 합니다.

PDP-11 마이크로 컴퓨터

1980년대, 세르게이는 SM-1800(PDP-11 소비에트 버전)에서 사용하는 소프트웨어를 개발하고 있었습니다. 스베르들롭스크는 당시 소비에트 연방의 주요 물류 센터가 자리 잡고 있었는데 이 인근 기차역에 이 미니컴퓨터가 설치되던 시기입니다. 새 시스템은 기차 차량과 화물을 의도한 목적지까지 어떻게 보낼 것인가를 디자인하는 일을 수행했습니다. 다만 무작위로 작업 수행에 실패하고 시스템이 충돌해버리는 지저분한 버그가 존재했습니다. 이 충돌은 모두가 집에 간 밤중에 꼭 나타났습니다. 오랜 시간 꼼꼼하게 조사했지만 컴퓨터는 다음날 수동으로 테스트하든 자동으로 테스트하든 상관 없이 전혀 문제가 나타나지 않았습니다. 이런 경우엔 경쟁 상태(race condition)나 아니면 다른 동시성 관련 버그인 것이 일반적입니다. 이런 경우는 해당 문제를 특정 상황에서만 재현할 수 있습니다. 매번 늦은 밤에 전화받는 일에 지쳐버린 세르게이는 이 문제를 밑바닥까지 파헤치기로 마음먹었습니다. 가장 먼저 한 일은 어떤 상태에서 이 문제가 발생하는지 파악하기 위해 충돌이 발생했을 때의 배차 상황을 확인하는 것이었습니다.

세르게이는 먼저 예기치 않게 발생한 모든 충돌 기록을 일자와 시간을 기준으로 달력에 표시했습니다. 당연히 어떤 패턴으로 문제가 나타나는지 명확하게 보였습니다. 며칠 간의 활동을 살펴보기만 해도 앞으로 언제 문제가 발생하는지 쉽게 예측할 수 있었습니다.

세르게이는 그렇게 기차역 컴퓨터가 언제 오작동하는지 알아냈습니다. 문제는 우크라이나 북부와 러시아 서부에서 인근에 있는 도살장에 가축이 도착했을 때만 나타났습니다. 세르게이는 이 사실이 이상하다고 느꼈습니다. 사실 이 지역 도살장은 더 가까이 있는 카자흐스탄 농장에서 가축을 공급받아왔었기 때문입니다.

아시다시피 1986년에 발생한 체르노빌 원전 사고로 인해 치명적인 수준의 방사선 뿜어져 나왔고 현재까지도 인근 지역은 거주가 불가능합니다. 이 방사능으로 인해 우크라이나 북부, 벨라루스, 러시아 서부 등 광범위한 지역이 오염되었었습니다. 세르게이는 도착 열차와 고농도의 방사선이 연관이 있다고 가설을 세우고 이 문제를 확인하기로 했습니다. 하지만 당시에는 개인이 방사선 측정기를 소지하는 것은 소비에트 정부에 의해 금지되어 있었습니다. 그래서 세르게이는 먼저 기차역에서 근무하는 군인 몇 명과 함께 술을 마셨습니다. 그렇게 보드카를 몇 잔을 마신 후에 한 군인을 설득할 수 있었습니다. 세르게이는 어떤 열차 차량이 수상한지 지목했고 군인과 함께 그 차량의 방사선을 측정했습니다. 그 차량에서는 정상 수치를 넘는, 매우 높은 방사선이 나오고 있는 것을 확인할 수 있었습니다.

단순히 운송되는 가축이 방사선에 심각하게 오염된 상태인 것뿐만 아니라 지나치게 높은 방사선량으로 인해 SM-1800의 메모리에서 비트 플립(bit-flipping)이 발생하고 있었던 것입니다. 컴퓨터가 기차선로 인근 건물에 설치되어 있었을 뿐인데 말이죠.

소비에트 연방에는 종종 심각한 기근이 있었고 정부 계획 하에 체르노빌 지역에서 생산한 가축으로 만든 육류를 그 외 지역의 육류와 섞는 방식으로 해결하려고 했습니다. 이 방식으로 육류의 평균 방사선 수치를 낮추는 동시에 귀한 자원을 낭비하지 않는 것이죠. 이 “발견”으로 세르게이는 당장 이민 서류를 꾸려 어디든 이민을 받아주는 곳으로 당장 떠났습니다. 시간이 지나 방사능 수치가 낮아지자 컴퓨터에서 발생한 충돌 문제는 저절로 고쳐졌습니다.

우리가 갔을 때도 비가 왔다. 차가운 공기. 상상했던 그런 날씨.

이제 앞으로 더 바빠질 예정이라서 9월, 10월도 얼른 적는다.

  • 이번 학기에 생각보다 어려워서 괴로워하고 있다. 예전 학기는 어려워도 시간을 많이 쓰면 뭔가 해결이 되는 기분이었는데 이번 학기에는 유독 어렵게 느껴진다. 이 상황에서 좋은 점수 내는 애들 보고 있으면 내가 어디를 어떻게 놓치고 있는 것인지 싶기도 하고. 결국은 또 시간을 많이 써서 점수 만드는 방법 밖에는 없구나 생각도 들고. 그 사이에 아픈 날도 있었어서 흐름을 제대로 타지 못한 것도 있는 것 같다. 건강하자.
  • 시애틀에 다녀왔다. 민경 씨가 2년 전에 만들어둔 스케줄이 있었는데 판데믹 탓에 지금까지 미뤄져서 이번 틈에 잠시 다녀왔다. 탄탄한 계획 덕분에 고민 없이 모든 일정이 즐거웠다. 반가운 사람들도 만나고 커피도 많이 마셨다. 자연 속에 있는 도시라 녹음을 어디서나 볼 수 있어서 좋았다. Pacific Northwest 라고 부르는 것도 귀여웠다. 여행에서는 비가 번거롭기만 한 날씨지만 나나 민경 씨나 비를 워낙 좋아하고 또 비가 전혀 오지 않는 도시에 살아서 일정 내에 온 비가 얼마나 반갑던지, 좋은 장소에 즐거운 기억 만들고 왔다. (한동안 그레이 아나토미를 본 탓에, 아 이 도시 어디엔가 그런 병원이 있을 것만 같네, 생각도 들었다.)
  • 임플란트를 하게 되었는데 탓에 한동안 트럼펫 연습도 못할 것 같다.
  • 어쩌다가 식물 유튜브를 보게 되어서 또 집에 있는 식물들 물꽂이하고 난리를 시작했다. 습도가 워낙 낮은 지역인데다 집안은 더 건조한 편이라 그냥 유튜브에서 알려주는 것만 따라해서는 부족한걸 배웠다. 어떻게 관찰하고 부족한 부분을 채우는지 조금 알게 되었다. 이번에는 좀 제대로 화분에도 옮겨 심고 제대로 키우고 싶다.

이제 올해도 2달 밖에 남지 않았는데 남은 2달이 더 바쁠 예정이라서 조금 걱정이다. 연말에는 제대로 한 해 되돌아보고 즐거웠다고 성장했다고 얘기할 수 있었으면 좋겠다.

Gatsby v4가 얼마 전에 나와서 반영할 생각으로 웹사이트를 정리하기 시작했는데 사용하고 있는 플러그인이 아직 업데이트되지 않아 뒤로 미뤘다. 대신 웹페이지를 전체적으로 정리하는 쪽으로 마음을 바꿨는데, 아무래도 시험 기간이 가까워서 이런 잡다한 작업에 자꾸 손이 가게 된다.

  • 그동안 메뉴도 없이 깔끔한 페이지로 가겠다는 마음이 커서 여백이 가득한 웹페이지로 변경했었는데 막상 사용해보니 너무 불편했다. 메뉴를 추가하고 작은 스크린에서는 모달 형식으로 열리게 작성했다.
    • JavaScript가 비활성화된 브라우저에서도 메뉴에 접근할 수 있도록 noscript에 스타일을 추가했다.
  • 별도로 검색되지 않는 마이크로 페이지를 만들었는데 다 없에고 블로그 쪽으로 이전했다. 블로그에는 그동안 개발 관련 글이나 번역이 많았으니까 구독하고 있는 분들이라면 그런걸 기대하지 않을까 생각해서 마이크로 페이지를 만들었었다. 막상 쓰다보니까 어짜피 다 내 글이고 내 이야기인데 누가 보고 안보고 걱정할 것도 없고 싶어서. 그저 부지런히 작성하는게 더 중요하다는 생각 들어서 정리했다. 애초에 만들었던 계기도 좀 불명확했고. 한쪽으로 다 올리는 대신 분류를 잘 하기로.
  • 카테고리와 태그 구분을 제거했다. 복잡하기만 하지 분류 경계도 모호해지고 워드프레스의 유산 같아서 정리.
  • 영문/국문 페이지 경계가 확연히 나눠져 있었는데 조금 더 유연하게 섞었다. 좀 더 써보고 마음 안들면 되돌리자.
  • 다크 모드를 걷어냈다. 그동안 계속 손보면서 색을 조절해봤지만 너무 주먹구구로 해서 그런지 영 마음에 들질 않았다. 나중에 기회가 된다면 다시 보기로 했다.

앞으로 하고 싶은 부분은,

  • 포스트 외에도 좀 더 체계적으로 정리된 컨텐츠를 작성해보고 싶다. 튜토리얼이라든지.
  • 빈 공간을 미리 많이 만들었는데 시간 날 때마다 조금씩 추가하기로. 잔잔하게 휘발되는 시간들을 어떻게라도 붙잡아서 여기에 묶어놓기.
  • 회고나 조각모음을 제대로된 템플릿 가지고 꾸준히 실행하기.

요즘 늘 바빠서 하고 싶은 것은 많지만 행동으로 이어지는 일이 좀 적어졌다. 시간을 좀 더 밀도 있게 사용하도록, 웹사이트를 그 과정에서 도구로 제대로 사용할 수 있었으면 좋겠다.

리눅스에서 어떤 프로그램을 사용하고 있는지, 어떤 설정을 사용하고 있는지 정리하는 노트입니다. 랩탑에서 메인으로 사용하고 있는데 그래픽 세팅으로 사용하면 아무래도 자잘하게 설정할 것도 많고... 여기에 빵가루를 남깁니다.

사용하는 프로그램

dwm 쓰고 있어서 다른 wm 사용하면 편하게 할 것을 안편하게 쓰고 있는 부분이 많습니다. 더 좋은 것 있으면 언제든지 알려주세요.

  • [Manjaro]: Arch linux 기반.
  • suckless dwm: X용 동적 창 관리자. 화면을 꽉 채우는 방식이 기본이라서 편리. 커스텀을 많이 할 수 있는데 거의 기본으로 사용중.
  • suckless st: 단순한 터미널인데 dwm과 잘 맞음.
  • zsh: oh-my-zsh에서 테마만 바꾸는 수준 ;ㅅ;
  • fcitx: 한글 입력기. 다들 잘 안된다고 불편한 프로그램이라는데 어쩐지 내 컴퓨터에서는 잘 돌아감.
  • nvim: 빔빔빔
  • scrot: 스크린샷 캡쳐 도구
  • go-chromecast: 크롬캐스트 제어할 수 있는 cli
  • nemo: 파일 탐색기. 특별한건 없는데 아이콘 크기를 키울 수 있어서.
  • dictd: cli 사전.
  • evince: PDF 뷰어.

시스템 제어 관련

  • pactl, amixer: 오디오 제어. pactl은 음량 100%을 넘길 수 있음.
    • pactl set-sink-volume @DEFAULT_SINK@ 150%
  • xorg-xbacklight: 디스플레이 밝기 제어.

open 사용하기

맥에서는 open 명령어 사용하는 것처럼 리눅스에서는 xdg-open을 사용할 수 있는데 약간 동작이 다르다. 다음 스크립트로 비슷하게 동작하는 open을 만들 수 있다. /usr/local/bin/open에 아래 내용으로 저장한다.

#!/bin/bash
CMD="xdg-open \"$(pwd)/$1\""
bash -c "$CMD" 2> /dev/null &

xdg-open은 mime에 따라 어떤 프로그램으로 실행할지 지정할 수 있는데 xdg-mime으로 현재 설정을 확인하거나 변경할 수 있다. nemo를 파일 탐색기로 사용하려면 다음처럼 지정한다.

$ xdg-mime query default inode/directory # 현재 지정된 프로그램 확인
$ xdg-mime default nemo.desktop inode/directory # nemo로 변경

마우스 커서 크기 변경

~/.Xresources에 다음처럼 입력한다.

Xcursor.size: 48
!Xcursor.theme: Hackneyed !지정하고 싶은 cursor theme

HiDPI / 배경화면 설정

~/.xprofile에 추가한다.

xrandr --dpi 144 # xorg-xrandr 필요

# 단색 설정
xsetroot -solid "#1a1b23" # xorg-xsetroot 필요

# 이미지 설정
feh --bg-scale /path/to/image.jpg # feh 필요

pbcopy, pbpaste 사용하기

맥에서 쓰던 명령어가 손에 익어서 똑같은 기능을 하는 단축어를 만들었다. 터미널에서 시스템 클립보드와 유닉스 파이프로 상호작용이 필요할 때 유용하다. 다음 내용을 .zshrc에 추가한다.

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'

다음처럼 쓸 수 있다.

$ cat hello.md | pbcopy # 시스템 클립보드에 저장됨
$ pbpaste > something.js

청색광 켜고 끄기

청색광 차단 효과는 왈가왈부가 많지만 그래도 밤에 쨍한 화면보는 것보다는 눈이 편하니까 만든 단축어다.

redshift라는 프로그램도 있는데 뭔가 잘 동작하지 않아서 xrandr를 사용하고 있다.

xrandr를 사용해서 감마값을 조정한다. (xorg-xrandr 필요) 먼저 현재 모니터 포트를 확인한다.

$ xrandr --listmointors
 0: +*eDP1 2560/310x1440/170+0+0  eDP1

내 경우에는 eDP1이 해당 출력이다. 다음처럼 .zshrc에 추가한다.

alias daylight_mode="xrandr --output eDP1 --gamma 1:1:1 --brightness 1.0"
alias night_mode="xrandr --output eDP1 --gamma 1:0.72:0.43 --brightness 0.55"

모니터가 여럿이면 --output eDP1 --output eDP2 이런 식.

오피스 파일을 pdf로 변환하기

libreoffice를 사용하면 오피스 파일, 즉, pptx, ppt, docx, doc 등을 pdf로 변환할 수 있다. 다른 도구도 많았는데 중간에 내용이 안나오거나 하는 경우가 종종 있었다. 용도 외로 사용하는 기분이 들긴 하지만 가장 높은 신용도.

.zshrc에 추가한다.

alias to-pdf="libreoffice --headless --convert-to pdf"

사용은 아래처럼.

$ to-pdf lecture_03.pptx
$ to-pdf *.ppt
$ to-pdf essay_mid.docx

충전 어뎁터 연결 시 스크립트 구동하기

acpi를 통해서 스크립트를 구동할 수 있다. /etc/acpi/events에 파일을 추가한다.

event=ac_adapter.*
action=/etc/acpi/ac_adapter.sh %e

이제 acpi에서 해당 이벤트가 발생하면 등록한 스크립트가 실행된다.

내 경우에는 aplay를 이용해서 wav 파일을 재생하도록 했다. 해당 경로에 아래와 같은 스크립트를 추가한다.

#!/bin/bash

case "$1" in
    ac_adapter)
        case "$2" in
            AC*|AD*)
                case "$4" in
                    00000001) # 연결시 1 분리시 0
                        aplay /etc/acpi/ac_adapter.wav 2>&1
                        ;;
                esac
                ;;
        esac
        ;;
esac

wav 파일도 당연히 해당 경로에 필요하다. 그리고 acpid를 다시 시작한다.

$ systemctl restart acpid.service

Caps Lock 키를 한영키로 사용하기

.Xmodmap에 다음 내용을 추가한다.

clear lock
keycode 66 = Hangul

동작하지 않는다면 .xinitrc 에서 해당 파일을 불러오지 않는 경우일 수 있다. 그럴 때는 .xinitrc에 다음을 추가한다.

xmodmap "$HOME/.Xmodmap"

완벽주의는 최선을 다해 노력하는 것과는 다릅니다. 완벽주의는 완벽하게 살고, 꾸미고, 행동하는 것으로 비난과 비판, 망신의 부끄러움을 최소화하거나 피할 수 있다고 믿는 것입니다. 마치 방패와도 같습니다. 나를 보호한다는 미명 아래 20톤의 방패를 둘러치고 있는 것이죠. 실제로는 그 방패가 우리의 비상을 방해하고 있습니다.

Perfectionism is not the same thing has striving to be your best. Perfectionism is the belief that if we live perfect, look perfect, and act perfect, we can minimize or avoid the pain of blame, judgement, and shame. It’s a shield. It’s a twenty-ton shield that we lug around thinking it will protect us when, in fact, it’s the thing that’s really preventing us from flight.

― 브레네 브라운 (Brené Brown). The Gifts of Imperfection.

Published on September 13, 2021

어쩌다보니 8월 말에 글 제목만 적었는데.

  • 학기가 시작했다. 여기서 마지막 학기인데 원래는 18주였던 학기가 일부 과목 빼고 14주로 단축되었다. 다른 학기와 마찬가지로 걱정이 앞서지만 시간을 많이 써서 성과 내는 것 말고 할 수 있는게 크게 없으니까. 무거운 엉덩이로 결과를 만들자.
  • 조건부 영주권에서 일반 영주권으로 전환되었다. RFE를 요청하는 바람에 놀라서 이것저것 급하게 서류를 모아 보냈다. 내가 어딘가 살아야 할 이유를 남에게 증명하기 위해서 서류를 모으고 정리하는 일이란 정말 피곤하고 힘이 빠지는 일이다. 앞으로 더이상 서류와의 싸움을 하지 않아도 된다는 게 행복하다.
  • 텍사스에 다녀왔다. 매우 짧은 방문이었지만 이번엔 그 틈에 UT Austin을 갔는데 학교도 생각보다 크고 시설도 좋아보였다. 일단 오스틴 자체가 매력이 넘치는 도시인데 과연 여기서 학교를 다니면 어떨까 생각하면서 캠퍼스를 걸으니 기분이 이상했다. 또 다른 도전에 대한 설렘보다는 이사 걱정이나 재정에 대한 고민에 너무 막연한 목표인가 싶어지기도 했고. 일단 하자, 해보자 하는 태도로 임할 수 있었으면 좋겠다.
  • 트럼펫은 계속 연습하고 있다. 시간을 많이 쓰면 지치기만 하고 여기서도 긴장 낮추고 여유 갖는 것이 중요하다고 해서 노력하고 있다.
  • 여름학기 후에 푹 쉬었다. 지나고 나면 정말 얼마 안되는 나머지 여름이었지만 그냥 별 생각 안하고 티비보고 아무거나 하면서 지냈다. 크고 작은 일이 있긴 했지만 올해 남은 시간 해야 할 일을 생각하면 별로 중요하지도 않고. 좋은 결과 낼 수 있음 좋겠다.

성장은 끝이 없다는 것 매일 재확인한다. 결국 노력이 답이다. 가을 문턱이라고 시원한 날은 또 엄청 시원한 바람이 불어온다.

Yerin Baek - Bye bye my blue. Copyrights 2016 ⓒ JYP Entertainment. All Rights Reserved.

Published on August 30, 2021

(Rowena Tsai - 7 life changing mindset habits to soothe the anxious soul & live lighter)

  1. Your world = what you choose to fixate as on
    • think about me - surround world - "world" world - spritiual world
  2. "People are in our life for a reason, season, or lifetime. The pain comes when we put them in the wrong category"
  3. You're never too [fill in the blank] for anything
    • negative self-talk and/or judgemental mindset = projecting insecurity + hurting others and myself
    • "We notice a lot of dislikable people but we never seem to notice our disliking minds" -- Buddha
  4. Don't wait to start living the life you want to live
    • Define first. What is the type of life you want to live?
    • What you need to do for that life? What can you do?
  5. "No one is going to move my leg but me"
    • We are responsible for ourselves, own lives
  6. Instant vs. delayed gratification (ft. cancel culture)
    • extension of "Short-term satisfaction vs. long-term fulfillment"
    • Immediate feeling/judgement are not helpful (social media, cancel culture)
  7. Only we know where our love truly lie
    • Truthfulness, compassion, forbearance
Published on August 26, 2021

Ella and Louis

℗ A Verve Records Release; ℗ 1956 UMG Recordings, Inc.

Released on: 2000-03-07

Published on August 23, 2021

색상을 바꿔요

눈에 편한 색상을 골라보세요 :)

Darkreader 플러그인으로 선택한 색상이 제대로 표시되지 않을 수 있습니다.