Create TOC

2011년 10월 11일

Linux/kernel 3.0에서 conky가 동작하지 않을 때

kernel 3.0 에서 conky를 실행할 때 아래와 같은 에러가 발생하면서 실행되지 않는다.

$ conky
Conky: /home/markboy/.conkyrc: 56: config file error
Conky: can't open '/sys/class/hwmon/hwmon0/temp1_input': No such file or directory
please check your device or remove this var from Conky

~/.conkyrc파일을 살펴보면 아래와 같이 hwmon에서 값을 얻어오는 것이 문제가 된다.

 ${color}core0: ${hwmon 0 temp 1}°C $alignr${color}core1: ${hwmon 1 temp 1}°C
 ${color}core2: ${hwmon 2 temp 1}°C $alignr${color}core3: ${hwmon 3 temp 1}°C
 ${color}temp1: ${hwmon 4 temp 1}°C $alignr${color}temp2: ${hwmon 4 temp 2}°C
 ${color}fan1: ${hwmon 4 fan 1}rpm $alignr${color}fan4: ${hwmon 4 fan 4}rpm

sysfs구조가 변경된 것 때문에 발생하는 문제이다. 기존에는 /sys/class/hwmon/hwmon? 디렉토리 밑에 파일이 존재했는데, 이 경로가 /sys/class/hwmon/hwmon?/device으로 변경되었다. 변경된 경로 및 파일 이름을 확인하고 아래와 같이 수정하면 문제가 해결된다.

 ${color}core0: ${hwmon 0/device temp 2}°C $alignr${color}core1: ${hwmon 0/device temp 3}°C
 ${color}core2: ${hwmon 0/device temp 4}°C $alignr${color}core3: ${hwmon 0/device temp 5}°C
 ${color}fan1: ${hwmon 1/device fan 1}rpm $alignr${color}fan4: ${hwmon 1/device fan 4}rpm

2011년 10월 7일

OS/X - CLI 환경에서 이미지 편집

sips는 OS/X에서 제공하는 CLI image processing 도구이다.

자세한 사용법은 man page를 보면 되고, 자주 사용할 만한 내용을 아래 적어둔다.

크기 조절

sips -z 높이 너비 원본파일 [--out 저장할이름]
sips --resampleWidth 너비 원본파일 [--out 저장할이름]
sips --resampleHeight 높이 원본파일 [--out 저장할이름]

--resampleWidth, --resampleHeight를 사용해서 크기를 변경할 때는 배율이 유지된다.

--out 저장할이름을 생략하면 원본파일을 수정한다.

회전

sips -r 각도(시계방향) 원본파일 [--out 저장할이름]

형식 변환

sips -s format 형식 원본파일 --out 저장할이름

형식에는 jpeg, tiff, png, gif, jp2, pict, bmp, qtif, psd, sgi, tga이 들어갈 수 있다. 아래는 간단한 예제이다.

$ sips -s format png image.jpg --out image.png

2011년 10월 6일

Python/python-twitter 설치 및 설정

package 설치

아래 명령을 통해서 패키지를 설치한다.


$ sudo easy_install simplejson
$ sudo easy_install python-twitter

인증 키 발급

https://dev.twitter.com/apps/new 에 로그인 해서 새로운 application을 등록하고 cusumer key, consumer secret, access token key, access token secret 를 받는다.

access 설정 후 token 받음

테스트

아래와 같은 테스트 코드를 작성해서 확인해본다.

import twitter

api = twitter.Api(consumer_key='받은 키',
            consumer_secret='받은 값',
            access_token_key='받은 키',
            access_token_secret='받은 값')

statuses = api.GetUserTimeline(id='아이디')
for s in statuses :
    print s

2011년 9월 28일

OS/X - 네트워크 연결을 통해 .DS_Store 파일 생성을 방지하는 방법

원문 : http://support.apple.com/kb/HT1629?viewlocale=ko_KR

터미널을 열고 아래 명령을 실행한 후, 재부팅하거나 다시 로그인한다.

$ defaults write com.apple.desktopservices DSDontWriteNetworkStores true

2011년 9월 24일

Debian/Gnome-Shell에서 바탕화면에 아이콘 표시하기

gnome-shell 환경에서 ~/Desktop 폴더 내용을 바탕화면에 표시하지 않는다. 아래 명령을 입력하고 gnome-shell을 재시작하면 바탕화면에 ~/Desktop 폴더 내용이 표시된다.

$ gsettings set org.gnome.desktop.background show-desktop-icons true

2011년 9월 19일

Debian/로그아웃 없이 Gnome-Shell 재시작

gnome-shell에서 제공하는 명령창(Meta-F2 키를 눌러서 나오는 명령 창)에서 r을 입력하고 엔터를 치면 된다.

2011년 8월 9일

OS/X - iPhone 동기화 때 AddressbookSync가 1GB 이상의 메모리를 사용하면서 종료되지 않을 때

iPhone 동기화 때 AddressbookSync가 1GB 이상의 메모리 (내 시스템에서는 2.3GB)를 사용하면서 동기화가 끝나도 제대로 종료되지 않을 때가 있다.

하나의 주소록에 많은 전화번호가 등록되어 있을 때 발생하는 문제로 보인다. 내 경우 the call 4 iphone 앱을 이용해서 스팸 전화번호를 등록해 두었는데, 등록한 번호를 모두 삭제한 후에 문제가 해결되었다.

2011년 8월 1일

Opera/clien.net 글꼴 변경하기

Opera 10.x 부터 clien.net 사이트에 들어가면 한글 글꼴이 명조로 표시되는 경우가 있다.

User Java Script 기능을 활성화하고 User JavaScript File경로를 지정한 다음, 해당 경로에 아래 내용의 fixclien.user.js 파일을 만들면 clien 글꼴이 나눔 고딕 으로 고정된다.

// ==UserScript==
// @name          fix clien
// @description   fix font for Opera
// @include       http://clien.career.co.kr/*
// ==/UserScript==

(function (){
function addGlobalStyle(css) {
    var head, style;
    head = document.getElementsByTagName('head')[0];
    if (!head) { return; }
    style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
}

var scripts = document.getElementsByTagName('body')[0];
if (!scripts) return;
scripts = scripts.getElementsByTagName('script');
if (!scripts) return;

addGlobalStyle("body, td, p, input, button, textarea, select, td a, .c1, .member, #account dd, .view_content, .ct { font-family: NanumGothic, \"나눔고딕\", sans-serif; }")
})();

적용 전에는 아래와 같지만,

적용 후에는 아래와 같이 변경된다.

2011년 7월 26일

OS/X - "다음으로 열기(Open with)" 메뉴 정리하기

OS/X를 사용하다 보면 삭제된 프로그램이 목록이 Finder의 "다음으로 열기" 메뉴 (영어로는 Open with)에 표시되는 경우가 있다. 이때 아래 명령을 이용해서 정리해주면 된다.

$ /System/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -kill -r -domain local -domain system -domain user

2011년 7월 11일

OS/X - ntfs를 쓰기 가능하게 mount 하기.

Snow leopard부터는 ntfs 파티션을 쓰기 가능하게 mount 할 수 있지만, 기본은 readonly 이어서 NTFS mounter 같은 유틸리티를 사용해야 한다. 그런데 ntfs 파티션을 mount 할 때 mount_ntfs 를 호출하는 것을 이용해서 항상 쓰기 가능하게 mount 하도록 수정할 수 있다.

우선 원래 시스템에 있는 mount_ntfs이름을 변경하고 새로운 mount_ntfs파일을 만든다.

$ sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig
$ sudo vi /sbin/mount_ntfs
$ sudo chmod +x /sbin/mount_ntfs

새로 만드는 mount_ntfs파일 내용은 아래와 같다.

#!/bin/sh
/sbin/mount_ntfs.orig -o rw "$@"

2011년 7월 5일

OS/X - mac port로 pypy 설치하기

이 문서는 OS/X에서 mac port를 사용해 pypy를 설치하는 방법에 대해서 기술한다.

python 2.7 설치

pypy를 사용하기 위해서는 python 2.7을 설치해야 한다. mac port를 이용해서 python 2.7을 설치한다port를 이용해서 python 2.7용 PyQt를 설치하려면 sudo port install py27-pyqt4 하면 된다..

$ sudo port install python27
$ sudo port select --set python python27

python 2.7을 위해서 setuptools도 설치해 둔다.

$ sudo port install py27-setuptools

pypy 설치

아래 명령으로 간단하게 pypy를 설치한다.

$ sudo port install pypy

2011년 6월 25일

Vim/파일을 tab으로 열기

vim으로 파일을 열 때 새 창이 아닌 새 탭으로 열게 하는 방법은 아래와 같다.

OS

Linux

아래와 같은 shell script를 작성하고 gvim으로 저장한다.

#!/bin/bash

GVIM=/usr/bin/gvim

if [ $# -lt 1 ]; then
 $GVIM
 exit 0;
fi;

DIFFMODE=0

params=()
filenames=()

for arg do
 IDX=`expr index "$arg" -`
 if [ $IDX -eq 1 ] ; then
  if [ "$arg" = "-d" ] ; then
   DIFFMODE=1
  fi;
  params+=("$arg")
 else
  filenames+=("$arg")
 fi;
done;

if [ ${#filenames[*]} -eq 0 ]; then
 $GVIM ${params[@]}
else
 if [ $DIFFMODE -eq 0 ]; then
  params+=("--remote-tab-silent")
 fi;
 $GVIM ${params[@]} --remote-tab-silent "${filenames[@]}"
fi;

저장한 파일을 /usr/bin/gvim보다 먼저 실행 할 수 있도록 PATH에서 /usr/bin 앞의 경로에 저장한다. 보통은 $HOME/bin/usr/bin보다 앞에 있도록 설정하고 $HOME/bin에 넣는다.

OS/X

MacVim 설정에서 Open files from applications을 아래 그림처럼 설정해주면 된다.

Windows

레지스트리 HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command에서 gvim.exe 뒤에 --remote-tab-silent을 추가한다. 이 작업이 귀찮다면 vim-tabs.reg 파일을 받아서 레지스트리에 병합한다.

App

cpp check

응용 프로그램에 gvim을 등록하고 명령행을 아래와 같이 설정한다.

--remote-tab-silent "+:(line)" (file)

Opera/Flash 차단하기

Opera 10 .5부터는 flash를 차단할 수 있는 기능이 내장되었다. Opera를 시작하고 주소표시줄에 아래 주소를 입력한 다음 설정을 check 하고 저장하면 된다.

opera:config#UserPrefs|EnableOnDemandPlugin

설정을 저장하고 flash페이지에 들어가보면 아래와 같이 flash가 차단된 것을 확인할 수 있다.

2011년 6월 22일

AppleTV/timezone 설정

AppleTV의 timezone을 서울로 변경하는 방법을 기술한다.

AppleTV는 JB 된 상태여야 하며, ssh로 접속해서 아래와 같은 방법으로 timezone을 변경한다.

$ ssh root@<apple tv ip>
# cd /private/var/db/timezone/
# mv localtime localtime.bak
# ln -s /usr/share/zoneinfo/Asia/Seoul localtime

2011년 4월 26일

Debian/WD Green 하드의 load/unload count 증가 오류 수정

WD Green 하드는 전원 절약을 위해서 9초 이상 I/O 요청이 없으면 자동으로 head를 조정한다. 이때 load/unload count 가 증가하는데, 이 값이 매우 가파르게 증가하는 것을 볼 수 있다.

load/unload count 값은 아래와 같은 명령을 이용해서 확인할 수 있다sdb는 검사하고 싶은 하드디스크의 device 이름을 적으면 된다..

$ udisks --ata-smart-refresh /dev/sdb | grep load-cycle-count

부팅 하드로 쓰는 WD Black 경우에는 전원을 넣어서 사용한 시간이 50.5일이고 load-cycle-count가 628회인데, WD Green 경우에는 145일에 60671회의 매우 높은 값을 보인다.

WD에서는 wdidle3 라는 DOS 툴을 이용해서 펌웨어 설정 값을 수정하는 것을 해결책으로 내놓고 있다.

그러나 본인이 가지고 있는 WD5000AACS (500GB) 모델의 경우 wdidle3 툴이 동작하지 않는다.

이 문제를 해결하기 위해서 아래와 같은 스크립트를 실행하면 5초마다 smart 정보를 요청하기 때문에 load/unload count 가 증가하는 것을 막을 수 있다.

#!/bin/sh

while [ 1 ];
do
	udisks --ata-smart-refresh /dev/sdb > /dev/null
	sleep 5
done;

부팅 시 자동 실행하면 좋은데, 본인은 conky를 사용하기 때문에 ~/.conkyrc 마지막에 아래와 같이 한 줄 추가해 주었다

${execi 5 udisks --ata-smart-refresh /dev/sdb | echo " " }

2011년 4월 25일

Debian/FreeDOS USB 스틱 만들기

FreeDOS를 USB에 부팅가능하게 설치하는 방법을 기술한다.

FreeDOS는 http://www.freedos.org/freedos/files/에서 받을 수 있다.

우선 USB 스틱을 컴퓨터에 꼽는다. 이 문서에서는 sdh 로 장치가 잡힌 것을 가정한다.

qemu를 이용해서 FreeDOS iso 이미지로 부팅해서 FreeDOS를 설치한다.

$ qemu -boot d -cdrom fdbasecd.iso -hda /dev/sdh

CD-ROM 부팅을 선택한다.

FreeDOS 설치를 선택한다.

XFDisk로 파티션을 구성한다

파티션 구성이 끝나면 재부팅해야 한다.

부팅 후 설치 메뉴로 들어오면 HDD 포맷을 물어본다.

포맷이 끝나면 FreeDOS를 설치한다.

설치 화면

설치 완료

만들어진 usb를 테스트하기 위해서 부팅해본다.

$ qemu -boot c -hda /dev/sdh

2011년 4월 23일

AppleTV/XBMC 한글 팩 설치

AppleTV에 XBMC 한글 팩을 설치하는 방법을 기술한다.

AppleTV는 JB 된 상태여야 하며, ssh로 접속해서 아래와 같은 방법으로 XBMC 한글 팩을 설치한다.

$ ssh mobile@<apple tv ip>

우선 mobile계정의 사용자 폴더에 파일을 푼다.

$ wget http://xbmc-korean.googlecode.com/files/xbmc_korean_pack.zip
$ unzip xbmc_korean_pack.zip

푼 파일을 mobile사용자 계정의 XBMC설정 폴더에 복사한다. 이렇게 하지 않고 시스템의 XBMC폴더에 파일을 복사하면 XBMC가 업데이트 될 때마다 매번 한글 팩을 설치해야 한다.

$ mkdir -p ~/Library/Preferences/XMBC/addons
$ mkdir -p ~/Library/Preferences/XMBC/media/Fonts
$ mv ~/xbmc_korea_pack/addons/repository.xbmc-korea.com ~/Library/Preferences/XBMC/addons/
$ mv ~/xbmc_korea_pack/media/Fonts/*.ttf ~/Library/Preferences/XBMC/media/Fonts/

설치 후 XBMC를 재시작하면 addon 소스에 XBMC korean repository가 추가되어 있고, 자막 글꼴을 변경할 수 있다.

마지막으로 받은 파일을 삭제한다.

$ rm  xbmc_korean_pack.zip
$ rm -rf ~/xmbc_korean_pack

11.0 Eden을 사용할 경우 korean repository는 아래 경로에서 받은 것을 사용해야 한다.

http://xbmc-korea-addons.googlecode.com/files/repository.xbmc-korea.com-1.0.4.zip

2011년 4월 5일

iPhone/MobileRSS 캐시 청소

MobileRSS가 캐시 관리를 제대로 하지 않아서 iPhone의 빈 공간이 점점 줄어든다.

iPhone Explorer를 이용해서 수동으로 청소해주면 된다. iPhone Explorer를 실행하고 아래 폴더를 삭제한다.

Apps/MobileRSS/Library/Caches/download/images/계정이름
Apps/MobileRSS/Library/Caches/download/thumbs/계정이름

2011년 3월 18일

Debian/UltraNav 일본어 자판을 위한 키 설정

UltraNav를 사용하고 싶었는데, Win 키가 없어서 UltraNav를 일본어 자판으로 구해서 사용했었다. 일본어 자판의 경우 남는 키가 있어서 이 키를 Win, Menu 키 등에 할당하면 편하게 사용할 수 있다.

Windows 에서는 키 할당을 위해서 Registry를 편집하지만, X-Window 에서는 xkb나 xmodmap을 이용해서 키를 할당하면 된다.

아래 순서대로 키를 매핑한다.

xkb

~/.xkb/symbols/ultranav_jp_kdb파일을 만든다.

partial modifier_keys
xkb_symbols "ultranav_jp_kdb" {
    key   { [ Super_L ] };
	key   { [ Super_R ] };
    key   { [ Menu ] };
    key  { [ backslash, bar ] };
    key  { [ Escape ] };
};

위 설정을 적용하기 위해 적당한 위치에 apply_xkb.sh파일을 만든다.

#!/bin/sh
sleep 3
setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+ultranav_jp_kbd&/' | xkbcomp -I/home/markboy/.xkb - $DISPLAY

사용하는 환경에 따라 시작할 수 있게 apply_xkb.sh을 등록한다.

xmodmap

xmodmxp을 이용할 경우 ~/.Xmodmap파일을 편집해준다.

!keysym Muhenkan = Super_L
!keysym Henkan_Mode = Super_R
add mod4 = Muhenkan Henkan_Mode
keysym Hiragana_Katakana = Menu
keycode 132 = backslash bar backslash bar
keycode 97 = Escape

Linux/캐시 청소

원문

커널 2.6.16부터는 아래 방법을 이용해서 cache를 비울 수 있다.

  1. pagecache
    echo 1 > /proc/sys/vm/drop_caches
  2. dentries and inodes
    echo 2 > /proc/sys/vm/drop_caches
  3. 1, 2 모두
    echo 3 > /proc/sys/vm/drop_caches

2011년 2월 26일

Debian/AirPrint 설정하기

이 문서는 Debian Sid에 iPhone/iPad의 AirPrint로 인쇄 가능하도록 설정하는 방법을 기술한다.

프린터 준비

시스템-관리-인쇄 에서 인쇄 도구를 꺼내 프린터 준비를 한다.

프린터 추가

CUPS-PDF 드라이버를 이용해서 프린터를 등록한다.

이 때 반드시 공유 설정을 켜야 한다.

공유 인쇄 설정

인쇄 도구 또는 cups 설정에서 공유 인쇄 설정을 해야 한다.

인쇄 도구

아래와 같이 공유 인쇄 설정을 해야 한다.

cups 설정

http://localhost:631/admin/에 접속해서 Share printers connected to this system설정을 켜준다.

Avahi 설정

service 추가

https://github.com/tjfontaine/airprint-generate 에서 airpint-generate.py스크립트를 받는다.

아래와 같이 받아온 스크립트를 실행한다.

$ python airprint-generate.py

스크립트를 실행하면 AirPrint-PDF.service파일이 생성되며, 이 파일을 /etc/avahi/services/으로 옮긴다.

$ sudo mv AirPrint-PDF.service /etc/avahi/services/

데몬 재시작

아래 명령으로 관련 데몬을 재시작한다

$ sudo /etc/init.d/cups restart

$ sudo /etc/init.d/aviahi-daemon restart

iPhone에서 프린터 잡기

설정이 완료되면 iPhone에서 추가된 프린터를 볼 수 있다.

확인

iPhone에서 인쇄하고 로그를 보면 아래와 같이 인쇄되는 로그를 확인할 수 있다.

$ sudo tail -f /var/log/cups/access_log

192.168.0.16 - - [26/Feb/2011:15:49:42 +0900] "POST /printers/PDF HTTP/1.1" 200 186 Validate-Job successful-ok

192.168.0.16 - - [26/Feb/2011:15:49:42 +0900] "POST /printers/PDF HTTP/1.1" 200 111063 Print-Job successful-ok

인쇄된 파일은 /var/spool/cups-pdf/ANONYMOUS에서 확인할 수 있다.

해당 디렉토리는 lpadmin 그룹에 속해야 파일 삭제을 할 수 있기 때문에 adduser 명령으로 원하는 사용자를 lpadmin 그룹에 넣어준다.

$ sudo adduser 사용자아이디 lpadmin

2011년 1월 12일

OS/X - 잠금 화면으로 이동

잠금 화면으로 이동할 수 있는 apple script.

do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend"

OS/X - 화면보호기 실행하기

화면 보호기를 바로 실행할 수 있는 apple script.

do shell script "/System/Library/Frameworks/ScreenSaver.framework/Versions/Current/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine"

아래처럼 Finder를 통해서 실행할 수도 있지만... :)

tell application "Finder"
	activate
	open application file "ScreenSaverEngine.app" of folder "Resources" of folder "Current" of folder "Versions" of folder "ScreenSaver.framework" of folder "Frameworks" of folder "Library" of folder "System" of startup disk
end tell