Create TOC

2009년 6월 21일

Debian/WindowsMobile과 Sync

이 문서는 Debian에서 Windows Mobile기기(이하 WM)와 sync 하는 방법을 기술한 문서이다.

SynCE 설치

WM 기기와 sync하기 위해서 SynCE를 설치해야 한다.

$ sudo apt-get install synce-sync-engine synce-hal synce-trayicon

기기 연결

우선 synce-trayicon 프로그램을 실행하면 아래와 같이 tray icon이 보인다.

이후 WM 기기를 연결하면 아래와 같이 tray icon이 보이고 마우스 커서를 가져가면 툴팁으로 현재 기기 상태를 보여준다.

에볼루션과 sync

@todo

남아있는 문제

synce-gvfs 패키지가 없어서 synce:// 프로토콜을 처리할 수 없다.우분투에는 관련 패키지가 존재한다.

2009년 6월 18일

Debian/Opera 브라우저에 대한 몇 가지 팁

한글 글꼴이 깨질때

Debian에서 Opera 9.5 이상 버전을 사용할 때 방법이다.

  1. ~/.opera/opera6.ini에서 아래 내용을 추가한다.
    [User Prefs]
    Enable Core X Fonts=0
    Enable Xft Fonts=1
  2. ~/.opera/fontswitch.ini 파일을 삭제한다.
  3. 가운데 버튼을 윈도우처럼

    오페라에서 가운데 버튼의 기본 동작은 클립보드로 텍스트 복사 이다(이것은 X Window System의 관례). 그러나 Microsoft Windows처럼 스크롤 커서가 나오게 하고 싶다면 아래 그림처럼 환경 설정 - 고급 설정 - 단축키 - 중간 클릭 옵션...에서 패닝 시작 을 선택하면 된다.

2009년 6월 11일

Python/피보나치 수열 구하기

12345678999(123억...)과 99987654321(999억...) 사이의 피보나치 수를 모두 더하면 얼마인가 에 대한 풀이를 해보았다. (원문 )

수의 범위가 매우 크기 때문에 루프 대신 generator를 사용했다. (루프로 코드를 짜보았지만 Quad Core에서도 오랜 시간 계산이 끝나지 않아서 포기했다)

import cProfile
import itertools


def Fibonacci_generator():
    """ 피보나치 수를 구하는 generator """
    yield 0
    yield 1
    prev1 = 0  # n-2
    prev2 = 1  # n-1
    result = 0
    while True:
        try:
            result = prev1 + prev2
            yield result
            prev1 = prev2
            prev2 = result
        except OverflowError:
            break


def solve(start, end):
    """ star ~ end 사이의 피보나치 수의 합을 구하는 함수."""
    total = 0L
    for fib in Fibonacci_generator():
        if fib >= end:
            break
        if fib > start:
            total += fib
    return total


def solve2(start, end):
    """ star ~ end 사이의 피보나치 수의 합을 구하는 함수."""
    return sum(itertools.takewhile(
        lambda fib: fib < end,
        itertools.dropwhile(lambda fib: fib > start,
                            Fibonacci_generator())))

start = 12345678999L
end = 99987654321L
cProfile.run('solve(%d, %d)' % (start, end))
print solve(start, end)
cProfile.run('solve2(%d, %d)' % (start, end))
print solve2(start, end)

결과는 아래와 같다.

$python fibo.py
         60 function calls in 0.000 CPU seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 <string>:1(<module>)
        1    0.000    0.000    0.000    0.000 fibonachi.py:25(solve)
       57    0.000    0.000    0.000    0.000 fibonachi.py:9(Fibonacci_generator)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}


205486422643
         118 function calls in 0.000 CPU seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 <string>:1(<module>)
        1    0.000    0.000    0.000    0.000 fibonachi.py:35(solve2)
        6    0.000    0.000    0.000    0.000 fibonachi.py:37(<lambda>)
       51    0.000    0.000    0.000    0.000 fibonachi.py:38(<lambda>)
       57    0.000    0.000    0.000    0.000 fibonachi.py:9(Fibonacci_generator)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
        1    0.000    0.000    0.000    0.000 {sum}


205486422643