tag: 개발 잡동사니

트윗덱 메모

2018년 3월 1일

그동안 트위터 공웹을 사용했었는데 트윗덱으로 바꿨다.

  • 공앱이랑 디자인이 거의 비슷하다. 그냥 공앱인데 다른 버전 쓰는 느낌 정도다.
  • 공앱 같은데 광고가 (아직) 없다. 최고.
  • Home을 숨기고 리스트만 보이게 만들었다. 그동안 단축키로 리스트를 왔다갔다 했는데(G-i) 리스트 오가는 귀찮음이 줄었다.
  • 키워드 뮤트도 가능하고, 각 리스트마다 별도의 exclude를 지정할 수 있어서 추가적으로 더 걸러낼 수 있다.
  • 순서라든지 크기라든지 리스트, 노티, 검색결과 등 개인화 할 수 있는 부분이 많아 좋다.
  • 다른 계정 같이 사용하는 경우에 편하다.
  • Ready to Tweet? 체크박스를 활성화해서 쓰는데 쓰기 전에 맞춤법도 다시 보고 트윗 계정이 맞는지도 보기 쉽고 좋다.
  • 의외로 리트윗 숫자랑 마음 숫자가 바로 보이는 것이 정보를 읽는데 있어서 편향을 만드는 것 같다. 별거 아닌데도 숫자가 크면 왠지 읽어야만 할 것 같은 기분도 들고 그러는데 트윗덱은 그런 표시가 목록서는 보이지 않는다.
  • 예약 트윗이 가능하다. 아직 쓰진 않았지만 이거 하려고 buffer 썼던거 생각하면 편리하다.

tweetdeck input

계정 표시 방법도 3개나 제공하고.

얼마 전에 트위터가 처음으로 흑자 냈다는 얘기가 있었는데 계속 잘 되었음 좋겠다.

Dell Latitude E7240 Archlinux 설치하기

2018년 1월 27일

맥북 프로 키보드에 불만족스러워서 그런지 회사에서도 미팅 때마다 사람들이 들고 들어온 노트북을 계속 눈여겨 보게 되었다. 3년 전까지는 델 납품을 받았는데 그 이후로는 레노보를 사용하고 있어서 Dell Latitude랑 XPS, Lenovo Thinkpad 13, Thinkpad T740, 요가 시리즈 정도를 대부분 들고 다녔다. Acer 쓰는 사람도 좀 있었고. 그 중에 sysadmin 하는 분들이 노트북에 리눅스 설치하고 다니는거 보고는 나도 하나 그런 노트북 있으면 좋겠군 싶어서 검트리에서 적당한 가격에 이것저것 설치하고 놀 수 있는 노트북을 찾고 있었다.

그러다가 Dell Latitude E7240를 $100에 구입했다. 원래 $150에 구입하기로 했고 판매자가 보기로 한 장소에 나갔는데 판매자가 약속을 잊었다고 미안하다고 할인해주고 다음 날 집 앞으로 가져다줬다. 40도 넘는 더위를 뚫고 갔다가 돌아오는게 좀 짜증나긴 했지만 역시나 막상 받고나니 다 기분이 풀렸다.

구입한 모델은 i3긴 했지만 8GB 램에 128GB SSD였다. 좀 지난 모델이긴 하지만 울트라북이고 가벼워서 만족스러웠다. $300에 구입했던 인스피론보다 훨씬 안정적이고 빨라서 너무 만족스럽다. TN 패널인게 아쉽지만 찾아보니 IPS로도 모델이 있길래 교체에 문제가 없을 것 같아 IPS 패널도 하나 주문했다.

그런 후에 무슨 배포판을 설치할까 고민했다. 뭘 설치할 일이 있으면 늘 고민 없이 우분투를 설치했었다. Archlinux 좋다는 얘기를 계속 듣기도 했고 arch를 사용하지 않아도 그 위키에서 도움을 받은 적이 많아서 이번엔 arch를 설치하기로 했다. lxde나 그놈을 사용했는데 KDE로 설치해보기로 했다.

Archlinux는 위키에 모든 단계가 잘 정리되어 있어서 따라하기만 하면 된다! 는 생각보다 좀 환상이었다. 설치하기 위해서는 이거 이거 보면 된다 그러고 링크를 누르면 또 엄청난 분량의 설명이 나온다. 그래서 설치하면서 했던 단계를 간단하게 정리했다. 기본적으로는 설치 가이드와 동일하다.

설치 전

archlinux iso를 받아서 usb에 설치한다. Etcher를 사용하면 손쉽게 이미지를 usb에 넣을 수 있다. 이 usb를 노트북에 꽂고 부팅한다. bios에서 부팅 순서를 확인하고 usb를 가장 먼저 읽도록 설정한다.

부팅이 다 되면 root 계정에 로그인 된다. 먼저 인터넷을 연결한다. wiki 설치 안내에서는 안나오는데 wifi 접속할 수 있는 dialog 스크립트를 제공한다.

# wifi-menu

만약 wifi 드라이버를 인식하지 못하면 스크립트가 동작하지 않는데 그럼 위키에서 설명하는 방식 따라서 직접 연결해야 한다.

파티션 설정은 cfdisk 또는 fdisk를 사용한다.

# cfdisk

내 경우에는 sda1 (bootable), sda2 (50GB, home), sda3 (4GB, swap)으로 설정했다.

# mkfs.ext4 /dev/sda1
# mkfs.ext4 /dev/sda2
# mkswap /dev/sda3
# swapon /dev/sda3

드라이버를 마운트한다.

# mount /dev/sda1 /mnt
# mkdir /mnt/home
# mount /dev/sda2 /mnt/home

설치

본격적인 설치 전에 가까운 미러 서버를 선택한다. /etc/pacman.d/mirrorlist 열어서 가까운 서버를 최상단으로 옮긴다. 내 경우는 swin.edu.au를 가장 위로 올렸다.

이제 호스트 드라이브에 리눅스를 설치한다.

# pacstrap /mnt base base-devel

설정한 디스크 설정을 호스트 드라이브에 저장한다.

# genfstab -U /mnt >> /mnt/etc/fstab

chroot로 호스트에 접속한다.

# arch-chroot /mnt

일단 사용에 필수적인 패키지를 설치한다. vim은 필수고, wifi_menu는 dialog에 의존성이 있고 WPA를 사용하면 wpa_supplicant도 설치해야 한다.

# pacman -S vim wpa_supplicant dialog

이제 타임존 설정이 필요하다. /usr/share/zoneinfo/ 안에 적합한 타임존을 찾아서 링크를 추가한다.

# ln -sf /usr/share/zoneinfo/Australia/Melbourne /etc/localtime

하드웨어 시간을 맞춘다.

# hwclock --systohc --utc

로케일을 설정한다.

# locale-gen
# echo LANG=en_AU.UTF-8 > /etc/locale.conf
# export LANG=en_AU.UTF-8

hostname 설정과 host를 설정한다.

# echo "ed-dell" > /etc/hostname
# echo "127.0.0.1 ed-dell" >> /etc/hosts

Grub 설치한다. bootable로 지정한 첫 파티션에 grub을 설치하면 된다.

# pacman -S grub
# grub-install /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg

root 비밀번호를 설정한다.

# passwd

설치된 패키지를 최신 버전으로 갱신한다. 미러에서 바로 설치했기 때문에 실제로는 별다른 내용 없이 지나가지만 그래도 한다.

# pacman -Syu

이제 종료하고 USB를 제거하고 켜면 설치된 arch를 사용할 수 있다.

# exit
# reboot

KDE 설치

KDE 페이지를 보고 설치하면 된다. 임시로 wifi-menu를 사용해서 인터넷을 연결한다. 그리고 아래 패키지를 설치한다.

xf86-video-intel은 그래픽카드 드라이버인데 본인에게 맞는걸 설치해야 한다. 목록은 Xorg를 참조한다.

# pacman -S xorg
# pacman -S xf86-video-intel
# pacman -S sddm
# pacman -S plasma-desktop
# pacman -S kde-applications
# pacman -S kdeplasma-addons # 네트워크 매니저가 포함됨

root 대신 사용할 계정을 생성한다.

# useradd -d /home/edward edward
# passwd edward
# echo "edward   ALL=(ALL) ALL" >> /etc/sudoers

sddm을 설정한다.

# sddm --example-config > /etc/sddm.conf

/etc/sddm.conf을 열어서 autologin을 설정한다.

[Autologin]
User=edward
Session=plasma.desktop

KDE를 사용하면 wifi-menu가 더이상 필요 없다. 그 전에 네트워크 매니저 서비스를 켠다.

# systemctl enable NetworkManager.service

bluetooth를 사용한다면 몇가지 패키지를 더 설치한다.

# pacman -S bluez bluez-utils
# systemctl enable bluetooth.service
# systemctl start bluetooth.service

한국어 설정

fcitx로 설치하고 싶은데 제대로 동작을 안해서 일단 ibus를 설치했다.

# pacman -S ibus ibus-hangul

/etc/locale.gen에 ko_KR을 추가한다.

ko_KR.UTF-8 UTF-8

/etc/locale.conf도 변경한다.

LANG=ko_KR.UTF-8
LC_COLLATE=ko_KR.UTF-8

/etc/xprofile를 열어서 다음 내용을 추가한다.

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -d -x

The Big Bang Theory

물론 우분투보다 복잡하게 느껴지긴 하지만 (그게 우분투의 셀링포인트이기도 하고) 직접 설치하지 않으면 전혀 설치가 안되고 설정도 안되는 그런 환경이 OS에 대한 애착을 만드는 기분이다. 만자로를 사용하면 좀 더 쉽게 설치할 수 있다고 한다.

맥북 프로 우측 command키를 언어 전환 키로 사용하기

2017년 8월 27일

시에라 이후로 Karabiner를 쓸 수 없게 되었는데 그나마 Karabiner-elements가 존재해서 그나마 다행이다. 맥에서는 언어 전환을 조합키로 사용하는 설정이 기본이다. 익숙해지면 그래도 괜찮긴 하지만 오늘따라 불편하게 더 느껴져서 어떻게 할 방법이 없나 찾아봤다.

키보드에 존재하지 않는 키를 언어 전환 키로 설정하면 우측 command 키를 해당 키로 설정하는 것으로 가능했다.

내 경우는 F16을 언어 전환키로 설정했다. 먼저 설정에서 Keyboard > Shortcuts > Input Sources > Select the previous input source 를 찾는다. 여기서 ^space 같이 키가 이미 지정되어 있을 것이다.

그리고 터미널을 열고 다음 명령을 실행한다.

sleep 5 ; osascript -e 'tell application "System Events"' \
          -e 'key code 106' \
          -e 'end tell'

키 코드 106 즉, F16 키를 입력하라는 내용의 애플 스크립트를 실행한다. 명령을 입력하면 바로 키를 누르기 때문에 5초 지연을 위해 sleep을 추가했다. 입력 후 5초 이내로 아까 열었던 키보드 설정에서 ^space를 더블 클릭하고 기다린다. 지연되었던 스크립트가 실행되면서 키보드에 존재하지 않는 F16이 입력이 된다.

이제 Karabiner-Elements를 실행한다. Simple Modifications에서 right_command를 f16으로 설정하면 끝난다.

처음엔 키보드에 나오는 F12로 설정해보려고 했는데 볼륨 조절 키로 연결이 되어서 생각처럼 되질 않았다.

개발자가 아닌 개발자

2017년 2월 2일

얼마 전에 okky에 웹 개발자도 개발자라고 할 수 있나요라는 글이 올라왔었다. 원문을 보기 전에 수많은 분들의 반응을 먼저 봐서 그랬는지 몰라도 가볍게 읽고 지나갔다. 이직으로 인한 인수인계에, 책 마무리 작업에, 이상한모임까지 겹쳐 자는 시간 외에는 정말 정신이 없었던 탓이다. 사실 코더랑 프로그래머를 분리해서 이야기하는 사람도 종종 봐왔기 때문에 이런 글은 그렇게 특별하지 않았지만 바쁜 와중에도 이 글이 계속 생각이 났다.

의외로 복사 붙여넣기 코드가 저평가 받는다. 붙여 넣어도 돌아갈 만큼 발달하기까지 얼마나 많은 과정이 수반되었는지 생각해야 한다. 3분 카레를 데워 먹는다고 그게 음식이 아니라고 할 수 없다. 음식이 상하지 않도록 하는 포장 기술도, 가열 도구의 발전도 저변에 깔려 있다. 그리고 공개된 조리법을 사용한다고 요리사가 아니라고 할 수 있을까? 파인 다이닝에서 요리하는 셰프가 스스로 레시피를 개발해서 요리한다 한들 그 사실을 동네 중국집 요리사를 요리사가 아니라고 말할 근거로 사용해서도 안된다. 솔직히 이런 부분은 언급할 필요도 없을 정도로 구차하게 느껴진다.

불편하게 느꼈던 부분은 억대 연봉자, 부당 대우에 관한 이야기다. 이 부분은 개인의 능력과는 별개로 산업 전반에서 필요한, 필수적인 논의다. 그 분야에서 대가가 되어야만 발언권을 갖을 수 있다고 생각하는 것 자체가 시장을 저해하는 요소다. 억대 연봉자가 늘어나면 지금 시작하는 사람들도 더 좋은 연봉을 받을 수 있지 않을까? 설령 잘 못하는 사람이 좋은 대우를 받는다면 잘하는 사람은 지금보다도 더 좋은 대우를 받을 수 있지 않을까? 하나는 낙수효과고 다른 하나는 분수효과에 대한 이야기로 어느 쪽이든 오늘의 환경을 개선하는데 일조한다고 생각한다. 그리고 부당한건 이야기하고 논의하고 연대해야 한다. 게임개발자연대와 같은 활동이 더 많아져야 한다. 적어도 엉뚱한 전제로 사다리를 걷어차지 말아야 한다.

오늘 점심은 풀스택 음식점 김밥천국에서 먹고 싶다.

대화가 일을 방해하는 기분이 들 때

2017년 2월 1일

얼마 전 트위터에서 사람마다 집중할 수 있는 환경이 다른데 한 공간에 몰아넣으면 얼마나 효율이 좋을까 하는 트윗을 읽었다. 그 중 유기용님의 트윗이 기억에 남는다.

이 트윗을 읽고 반성했다. 일하는 입장에서 프로답게 생각한다는 말에 너무 공감했다. 그래서 내게 있어서 대화가 방해로 느껴지는 경우를 곰곰히 생각해봤다. 대부분 아래 두 가지 경우였다.

  • 대화로 인해 내 작업 순위에 지속적인 영향을 주는 경우
  • 긴 호흡이 필요한 개발에 집중을 깨는 경우

회사(이제는 전 회사)에서 특히 전자가 심했고 개선해보려고 노력했지만 내 스스로 너무 스트레스를 많이 받았다. 대부분 이렇게 갑작스런 대화로 추가된, 짧은 호흡의 개발이 반복되면 내 자신을 갉아먹는 기분이 든다. 회사에서 이런 작업을 제대로 인지하면 다행인데 원래 해야 했던 일을 못하게 된다는 사실을 알지 못하는 경우가 많다. 다른 작업으로 진행하지 못한 일인데 계획대로 진행하지 못했다고 낮은 평가를 받게 된다면 고스란히 대화 자체에 압박을 받게 된다. 왜 커뮤니케이션의 비용을 작업자가 고스란히 떠맡게 되는 것일까? 이런 탓에 결국 업무 시간이 늘고 야근으로 이어지는 경우도 봐왔다.

나에게 집중은 등산처럼 느껴진다. 일을 하지 않더라도 내일, 이번 주, 이번 달 무슨 일을 할 지 계획에 맞춰 내 뇌는 일하지 않는 시간에도 준비를 한다. 그렇게 일의 순서를 생각하고 출근했는데 아침부터 치고 들어오는 수많은, 다른 일이 있다면 오후가 되어도 쉬이 집중이 되질 않는다. 산을 올라가려고 준비한 집중력을 다른데 다 써버렸으니 어쩌면 당연한 일이지만 스스로 계획하고 생각했던 만큼 올라가지 못해서 또 괴롭게 느껴진다. 오늘 할 일을 예측할 수 없게 될 때, 아침에 일어나면 출근이 두려워진다.

대화를 하지 않으면 당연히 일이 되지 않는다. 하지만 누군가의 우선순위를 바꾸는 대화는 좀 더 조심할 필요가 있다고 생각한다. 급한 일 카드를 남용하면 더 급한 일, 더 더 급한 일 카드도 금방 생겨나기 때문이다. 일의 순서가 바뀌는 상황을 잘 보고 그 일로 다른 업무가 밀리는 상황을 잘 봐야한다. 일을 주는 입장에서는 이 부분을 간과하기 쉽다. 작은 일이라도 이슈 트래커 등 모두가 작업 순서의 변화를 인지할 수 있는 경로를 통해 전달되어야 한다. 급한 일을 대비한 버퍼도 있어야 한다. 끼어드는 일거리의 중요도가 낮다는 이야기가 아니다. 대신 이런 일감을 어떻게 주고 관리하느냐는 회사의 역량이 들어나는 부분이라 생각한다.

대화가 방해가 된다고 느껴진다면 그냥 지나칠 것이 아니라 업무환경 적신호로 느껴야 한다. “대화탈출버튼”을 만들어서 나눠주지 않는다면 누군가는 그 짐을 고스란히 얹고 지내다가 “회사탈출버튼”을 눌러버릴 것이다. 더 빨리 눌렀어야 했다는 생각과 함께 말이다.

Dell XPS 13 정리 후기

2017년 1월 18일

급한 작업이 끝난 이후로 먼지 수집기 역할을 하던 Dell XPS 13을 어제 중고 거래로 정리했다. 검트리에 올렸더니 온갖 사람들이 700불 800불을 깎으려 들어서 한동안 스트레스였는데 한 달 만에 올린 가격에 산다는 사람이 나타났다.

XPS 13도 좋은 노트북이다. 16GB 램도 올릴 수 있고 리눅스를 설치해도 전혀 문제 없이 구동할 수 있었다. 그래서 정을 붙여보려고 애썼는데 몇 가지 거슬리는 부분이 있어서 영 적응을 못했다.

  • 키보드가 좀 이상하다. 키감이 얇은 것 이상으로 뭔가 이상하다. 처음 받았을 때는 몇몇 키가 눌리는 느낌이 없어서 키보드 교체를 받았었다. 눌리지 않은 증상은 개선되었지만 여전히 어색했다.
  • 터치패드. 마우스 연결하기 위해 블루투스 켜는 용으로 달아놓은 수준. 물론 마우스를 들고 다니면 되겠지만…
  • 고주파음이 상당히 거슬렸다. 이전 글에서도 썼지만 조용한 곳에서는 너무 잘 들린다. 노트북은 자기 전에 가장 많이 사용하는데 일정한 고주파음도 아니고 스크롤 할 때마다 노래하듯 나는 소리는 참기 힘들었다.
  • 발열이 상당히 거슬린다. 게다가 펜이 돌기 시작하면 컴퓨터 끄기 전까지는 펜이 멈추지 않는다. 겨울에는 덕분에 따뜻했다.
  • 베터리 인디케이터가 지나치게 들쑥날쑥하다. 이건 하드웨어 문제인지 윈도 문제인지 모르겠는데 남은 퍼센트나 시간 표시만 믿었다가는 들고 나가서 켜자마자 죽는 것을 볼 수 있다.
  • 노트북 무게중심이 잘못된 것인지 한 손으로 뚜껑을 들어올릴 수가 없다.
  • 충전하면 어뎁터에 빛이 들어오는데 상당히 거슬릴 정도로 빛이 밝다. 불 끄면 거의 무드등 수준.

적고 보니 엄청 까탈스러운 사람이 된 기분이다. 물론 좋은 부분도 있었다. 디스플레이도 엄청 좋았고, 화면 터치도 가능했고(거의 쓰진 않았지만), 무엇보다 가격대비 스펙은 상당히 높다. 애써 친해지려고 노력했던 그간의 노력 때문인지 물건 건내주고 돌아오는 동안 쓸쓸한 기분이 들었다. 속도 시원하긴 하지만.

한동안은 크게 노트북 쓸 일이 없으니 이직한 후에 교직원 할인 받아서 애플 제품을 사던지 할 생각이다. 맥북 에어를 사용할 때 단 한번도 생각해보지도 불편하다고 느껴보지도 못한 부분에서 너무 시달린 터라 그냥 맥북을 사게 될 것 같다.