2012년 5월 29일 화요일

Ubuntu에서 쓸만한 Twitter app. - Hotot!

우분투에서 Gwibber를 쓰다가 안되겠다 싶어서 다른 트위터 애플리케이션을 찾았다. 이름하여, Hotot. 하탓(?) 이라고 읽어야 하나?



여하튼 Gwibber는 Unity indicator에 포함된다는 점 빼고는 장점이 거의 없다. UI도 불편하고, quote retweet도 안된다. 화면 스크롤도 이상하다. 반면, Hotot은 UI도 우분투스럽게 괜찮고, Unity indicator에도 추가가 된다. 위에 보이는 외계인같은 아이콘이 Hotot이다.

Hotot은 기본 저장소에 없으므로 ppa를 별도로 추가해줘야 한다.

$ sudo add-apt-repository ppa:hotot-team
$ sudo apt-get update
$ sudo apt-get install hotot
출처: http://www.omgubuntu.co.uk/2011/02/hotot-twitter-app-adds-indicator-applet-again/

2012년 5월 23일 수요일

NanoQplus 2.5.0 배포의 변

ETRI에 들어온지 어언 4년차. 학부 4학년 시절 졸업작품 준비하다 NanoQplus 만난게 인연이 되어 UST 석사과정 2년, 계약직 연구원 1년이 지나 2년차가 진행중이며, 올해도 절반 정도가 훌쩍 지나갔으니 어언 4.5년이라고 해야 정확할 듯 싶다.

ETRI에서 내가 하는 일은 NanoQplus 운영체제를 개발하는 일이다. NanoQplus를 소개하자면 8비트(AVR), 16비트(MSP430), 그리고 32비트(ARM Cortex-M series) 급 마이크로컨트롤러에 적합한 초소형 임베디드 장치용 운영체제이다. 예전에는 센서 네트워크용 운영체제라고 표현을 했지만 요새는 Internet of Things용이라고 해야 조금 더 트렌디하게 느껴지려나?ㅋ 여하튼 용도를 보면 느껴지겠지만 무선 네트워크 응용을 쉽게 개발할 수 있도록 라이브러리들도 지원하고 있다.





무선 좀 지원한다고 뭐 거창하게 운영체제까지 필요하냐라는 질문이 들어올 수 있다. 하지만 필요하다. 무선 송수신 칩을 제어해서 바로 옆의 장치와 안정적으로 통신하기 위한 MAC에서도 운영체제는 필요하고, 다수의 장치들이 하나의 네트워크를 만들고 서로 멀티홉으로 메시지를 주고 받기 위해서는 타이머, 인터럽트 처리 등등 운영체제에서 제공하는 많은 기능들이 필요하다. 이젠 그 운영체제로 그 조그마한 장치에서, 그 별거 아닌 듯한 무선으로 인터넷(IPv6)까지 지원받아 초소형 무선 웹서버까지 만들 수 있으니 필요하지 않다고 말할 수 없을 것이다. 게다가 사용자 응용은 나날이 복잡해져 여러 태스크들을 동시적으로 수행해야 한다. 이런 이유들에도 불구하고 여전히 필요하지 않다고 하는 사람들은 순수 펌웨어 레벨에서 프로그래밍할 때의 고충을 모르는 사람일 것이다.

NanoQplus는 소스코드가 공개되어 있다. 아쉽게도 전부 공개도 아니고 순수 오픈소스 프로젝트도 아니지만, 그래도 임베디드나 운영체제를 전공 또는 취미로 공부하고 싶은 사람들을 위해 공개하였다. 상업용은 기술이전을 받아야 한다. 그래야 우리도 먹고 산다.ㅋ 2007년 9월 처음 공개 버전은 2.3이었고, 2009년 4월 2.4가 공개되었었다. 그리고 바로 오늘 2.5의 베타버전을 공개하였다. 물론 중간에 ETRI 내부 조직 개편의 소용돌이와 함께 배포 서버도 사라지면서 공식적인 채널도 사라졌었지만 그래도 우리팀의 소수는 묵묵히 NanoQplus 개발을 멈추지 않고 계속 하고 있었고 다시 공식적으로 배포할 수 있기까지 끊임없이 노력해왔다.

이번 공개버전 릴리즈는 개인적으로도 의미가 남다르다. 대략 5년전, 운영체제 개념만 알았지 어떻게 구현해야 할 줄 몰랐던 학부생이 재미로 시작했다가, 어쩌다 보니 연구원에 들어와 직접 코드에 손을 대고, 이렇게 직접 배포를 하게될 줄은 정말 꿈에도 몰랐을 것이다. 물론 세계적으로 유명한 오픈소스 프로젝트인 TinyOS나 Contiki 같은 타 초소형 임베디드 운영체제들과 비교하여 볼 때 직접 만든 NanoQplus의 부족한 기능들이 느껴지지만, 그렇기 때문에 여전히 나에겐 매력적인 운영체제이자 장난감이다.

그러니 졸업작품 준비 중인 대학생 여러분들! 연구 논문 준비 중인 대학원생 여러분들! 취미로 임베디드 하시는 분들! NanoQplus 좀 써주세요.(갑자기 존댓말.ㅋㅋ) 우리 운영체제로 인터넷 연결되는 무선 센서 네트워크, 무선으로 제어할 수 있는 로봇, 무선 웹 서버 등등 각종 임베디드 관련 프로젝트 가능합니다. 우리 운영체제에 관해서는 뭐든 도와드릴테니 관심 좀 부탁 드립니다. 감사합니다. :)

2012년 5월 4일 금요일

한달간 방배동 고시원 생활

좀 치우고 찍었으면 좀 나았을라나? 흠... 별로 그럴 것 같지 않네.ㅋㅋ 뭐.. 있는 그대로의 모습이 중요하니까...ㅋㅋ

한달간 고시원 생활 기념으로 방 빼는 날 아침에 눈 뜨자 마자 (제 정신이 아닌 상태란 얘기) 사진을 찍었다. 태어나서 처음이나 마지막(제발 그러하길...)으로 고시원이라는 답답한 장소에서 버텨본 기념이다.

늘 연구소에 있으면 뭔가 답답하고 좀 루즈해지는 면이 없지 않아 있는데 파견을 통해서 그런 부분에 있어서 많은 해소가 있었다. 특히, 실제 상용화하는 업체에 직접 나가보니 정말 정신없이 바쁜 하루하루들, 그 사람들이 어떤 생각으로 일을 하는 지 직접 느낄 수 있는 계기가 된 점은 아주 좋았다. 그런데 딱 한 가지 날 힘들게 한 것은 바로 저 좁아터진 고시원...ㅎㅎ

침대에 누우면 내 키가 딱 들어 맞는다. 그러고 천장을 바라보면 천장이 내려앉는 기분이 들고, 옆으로 돌아누워 벽을 바라보면 벽이 다가오는 기분이 드는 마법 같은 장소. 누군가에게는 젊은 시절 꿈을 키워갈 장소라고 말할 수도 있겠지만, 난 젊은 청년들을 저런 곳으로 내모는 우리 사회 현실이 참 답답하게만 느껴졌다.

여하튼 이제 고시원 안녕~~~!!

2012년 5월 3일 목요일

TTY로 접근이 거부될 때

Permission denied.

리눅스 쓰다보면 참 흔하게 볼 수 있는 에러메시지이다. 그런데 최근 Ubuntu Linux 12.04 LTS에서부터 그 흔한 tty (윈도로 치면 시리얼포트) 열 때에도 이런 메시지를 뱉는다.

결론부터 이야기하자면 권한 문제.
개인적으로 USB-to-Serial 계열 장치들을 쓸 때가 많은데, 이 장치들이 권한 문제로 터미널 프로그램(screen 또는 minicom 같은...)에서 열리지 않는다.

$ ls -al /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0  5월  3 17:44 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1  5월  3 17:46 /dev/ttyUSB1
crw-rw---- 1 root dialout 188, 2  5월  3 17:44 /dev/ttyUSB2

이렇게 확인해보니 ttyUSB* 장치들의 사용자는 root, 그룹은 dialout 이다. 그렇다면 나는 어떤 그룹에 속해 있을까?

$ id
uid=1000(jsjeong) gid=1000(jsjeong) 그룹들=1000(jsjeong),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)

보니까 dialout 그룹에 속해있지 않다. 그러니 권한이 없다고 나오지. 아래처럼 usermod 명령어로 그룹에 넣어줄 수 있다.

$ sudo usermod -a -G dialout jsjeong

그리고 잊지 말아야 할 것은 재부팅. (재부팅해야 적용되는지 몰라서 하루 종일 삽질했다.)

$ id
uid=1000(jsjeong) gid=1000(jsjeong) 그룹들=1000(jsjeong),4(adm),20(dialout),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)

드디어 dialout 그룹에 들어간 것을 확인할 수 있다.
그나저나 왜 이 그룹을 디폴트 그룹에서 뺀 걸까? 이게 무슨 보안상 위협이라도 되나?;;