우분투 상의 python 2.5.2에서 python-gconf 간단한 예입니다.
배경화면 이미지를 set하며, notify가 제대로 오는지 확인하는 예제입니다.
소스 코드는 다음과 같습니다.
즉, 아래와 같이 첫번째 인자로 'server'를 주면 notify를 기다리기만 하고,
다른 값을 주면 해당 값은 배경화면 파일명을 변경합니다.
cf. gconf 모듈이 gtk thread를 사용하므로 import gtk를 하지 않으면 동작을 안합니다.
배경화면 이미지를 set하며, notify가 제대로 오는지 확인하는 예제입니다.
소스 코드는 다음과 같습니다.
#! /usr/bin/python
import gconf
import sys, time
import gtk
BGPATH = '/desktop/gnome/background/picture_filename'
client = gconf.client_get_default()
client.add_dir('/desktop/gnome/background', gconf.CLIENT_PRELOAD_NONE)
def bg_changed( *args ):
print '[Notify]', client.get_string( BGPATH )
def set_value( value ):
client.set_string(BGPATH , value)
if __name__ == '__main__':
if len( sys.argv ) > 1:
param = sys.argv[1]
if param.lower() == "server":
print "[Server] Waiting........."
client.notify_add(BGPATH, bg_changed)
gtk.main()
else :
print "[Param]", param
set_value( param )
import gconf
import sys, time
import gtk
BGPATH = '/desktop/gnome/background/picture_filename'
client = gconf.client_get_default()
client.add_dir('/desktop/gnome/background', gconf.CLIENT_PRELOAD_NONE)
def bg_changed( *args ):
print '[Notify]', client.get_string( BGPATH )
def set_value( value ):
client.set_string(BGPATH , value)
if __name__ == '__main__':
if len( sys.argv ) > 1:
param = sys.argv[1]
if param.lower() == "server":
print "[Server] Waiting........."
client.notify_add(BGPATH, bg_changed)
gtk.main()
else :
print "[Param]", param
set_value( param )
즉, 아래와 같이 첫번째 인자로 'server'를 주면 notify를 기다리기만 하고,
다른 값을 주면 해당 값은 배경화면 파일명을 변경합니다.
dsp@dsplinux:/view/tmp$ ./gconf_test.py server
[Server] Waiting.........
[Notify] /home/dsp/Pictures/ss22-hires.jpg
[Notify] /home/dsp/Pictures/01641_sandilandslookoutsunset_1680x1050.jpg
[Server] Waiting.........
[Notify] /home/dsp/Pictures/ss22-hires.jpg
[Notify] /home/dsp/Pictures/01641_sandilandslookoutsunset_1680x1050.jpg
dsp@dsplinux:/view/tmp$ python ./gconf_test.py /home/dsp/Pictures/ss22-hires.jpg
[Param] /home/dsp/Pictures/ss22-hires.jpg
dsp@dsplinux:/view/tmp$ python ./gconf_test.py /home/dsp/Pictures/01641_sandilandslookoutsunset_1680x1050.jpg
[Param] /home/dsp/Pictures/01641_sandilandslookoutsunset_1680x1050.jpg
[Param] /home/dsp/Pictures/ss22-hires.jpg
dsp@dsplinux:/view/tmp$ python ./gconf_test.py /home/dsp/Pictures/01641_sandilandslookoutsunset_1680x1050.jpg
[Param] /home/dsp/Pictures/01641_sandilandslookoutsunset_1680x1050.jpg
cf. gconf 모듈이 gtk thread를 사용하므로 import gtk를 하지 않으면 동작을 안합니다.
마음의 소리에 나온 계획표를 보니 문득...

다시 와우가 달리고파 지네요... 흙...
와우는 커녕 워3라도 좀 원없이 해봤으면...
다시 와우가 달리고파 지네요... 흙...
와우는 커녕 워3라도 좀 원없이 해봤으면...
이번에는 소수를 구하는 또다른 방법을 구현해 보겠습니다.
소수는 예전에 구한 방법 이외에도, '에라토스테네스의 체'라는 방법을 이용해서 구할 수도 있습니다.

그림출처: http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
이 알고리즘을 설명하자면,
여러가지 방법을 사용할 수 있겠지만, 딕셔너리를 이용해서 구현하면 다음과 같습니다.
100을 넣고 실행해 보면 결과는 다음과 같습니다.
소수는 예전에 구한 방법 이외에도, '에라토스테네스의 체'라는 방법을 이용해서 구할 수도 있습니다.
그림출처: http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
이 알고리즘을 설명하자면,
- 2에서부터 n까지의 수를 체에 넣고,
- 체에서 가장 작은 값을 소수로 체크하고, 그 수의 배수들을 모두 제외시킵니다.
- 위 2번 과정을 반복합니다.
여러가지 방법을 사용할 수 있겠지만, 딕셔너리를 이용해서 구현하면 다음과 같습니다.
# -*- coding: utf-8 -*-
import sys
if __name__=="__main__":
print( sys.version )
N = int( input("input a number : ") )
#init
sieve = {}
for i in range(2, N+1):
sieve[i] = 0
# Sieve of Eratosthenes
for i in range(2, N+1):
if sieve[i]==0:
n=2
while i*n <= N:
sieve[i*n]=1
n+=1
#print results
for i in range(2, N+1):
if sieve[i]==0:
print( i, end="," )
print()
input("press any key")
import sys
if __name__=="__main__":
print( sys.version )
N = int( input("input a number : ") )
#init
sieve = {}
for i in range(2, N+1):
sieve[i] = 0
# Sieve of Eratosthenes
for i in range(2, N+1):
if sieve[i]==0:
n=2
while i*n <= N:
sieve[i*n]=1
n+=1
#print results
for i in range(2, N+1):
if sieve[i]==0:
print( i, end="," )
print()
input("press any key")
100을 넣고 실행해 보면 결과는 다음과 같습니다.
3.0 (r30:67507, Dec 3 2008, 20:14:27) [MSC v.1500 32 bit (Intel)]
input a number : 100
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,
press any key
input a number : 100
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,
press any key
'1만 시간의 법칙'이라는 것이 있습니다. 신경과학자 다니엘 레빈틴의 연구결과입니다. 어느 분야건 세계적인 전문가가 되려면 1만 시간의 연습이 필요하다는 내용입니다. ... 1만 시간은 하루에 3시간씩 10년 동안 연습해야 나오는 분량입니다. ...
출처 : http://www.econote.co.kr/event/content.asp?nid=49684&src=7200
저희회사 엘리베이터에는 하루에 15분씩 활용하면 1년이면 책한권을 쓰고, 3년이면 전문가가 된다고 적혀 있습니다. 짜투리 시간을 활용하라는 의도는 알겠으나, 비유한 대상이 책과 전문가라니... 어처구니가 없습니다.
책한권을 하루에 15분씩으로 쓸 수 있다고 생각하다뇨.
15분 짜투리 시간을 쭉 이어서 쓰는것과 동일하게 활용할 수 있다면,
즉, context switching이 그렇게 후딱 될 수 있다면 그사람은 정말 대단한 사람일 겁니다.
아차, 그냥 전문가는 15분*365*3 = 273시간 = 11.4일 밤을 새면 되는거군요.
역시 그냥 전문가와 세계적인 전문가의 차이는 큽니다...
저만 이런 생각을 하는건지,
저런 문구를 보는 모든 분들이 이런 생각을 하시는지 문득 궁금하네요.
뽐뿌게시판에서 [최신인기 아이돌 가이드]란 글을 봤습니다.
http://www.ppomppu.co.kr/zboard/view.php?id=etc_info&no=7472
세대차이 -10년에서 의욕 상승 ! 10년 젊어지려면 반드시 외워야겠어요 !!
그런데 많아서 좀 어렵네요 ㅠㅜ;

http://www.ppomppu.co.kr/zboard/view.php?id=etc_info&no=7472
세대차이 -10년에서 의욕 상승 ! 10년 젊어지려면 반드시 외워야겠어요 !!
그런데 많아서 좀 어렵네요 ㅠㅜ;
헉헉... 엄청 많네요 ㅠㅜ;
며칠 전 주네님으로부터, QT4.5가 LGPL로 릴리즈 예정이라는 소식을 들었습니다.
이제 이렇게 되면,
mobile에서도 QT를 올리고, pyQT로 쉽게 개발할 수 있는 환경을 만들수 있겠네요.
pyGTK로 mobile에서 노는 것과 차이는 별로 없을까요?
제대로 써보질 않아서 차이점을 아직 전혀 모르는 상태네요.
이에 대해서는 아래 글을 참고해 보면 될 듯 합니다.
Qt vs gtk - http://kldp.org/node/48496
여건만 된다면... 시간을 최대한 내서,
빨리 환경을 구축해서 놀아보고 싶은 생각이 간절합니다~
cf.
아래는 대충 찾아본 QT 관련 자료들 링크입니다.
Qt adds LGPL license option
http://www.linuxdevices.com/news/NS4480114925.html
이제 이렇게 되면,
mobile에서도 QT를 올리고, pyQT로 쉽게 개발할 수 있는 환경을 만들수 있겠네요.
pyGTK로 mobile에서 노는 것과 차이는 별로 없을까요?
제대로 써보질 않아서 차이점을 아직 전혀 모르는 상태네요.
이에 대해서는 아래 글을 참고해 보면 될 듯 합니다.
Qt vs gtk - http://kldp.org/node/48496
여건만 된다면... 시간을 최대한 내서,
빨리 환경을 구축해서 놀아보고 싶은 생각이 간절합니다~
cf.
아래는 대충 찾아본 QT 관련 자료들 링크입니다.
- [QT/Embedded] Qt, Qt/Embedded, Qpe, Qtopia, OPIE 에 대한 개요
- QT - 저의 QT Embedded 개발환경
- Tutorial: Creating GUI Applications in Python with QT
피보나치 수열은 위키피디아에 보면 다음과 같이 정의되어 있습니다.
그럼 이 수열을 파이썬에서 구현하면 어떻게 될까요?
다음과 같이 재귀함수를 이용해서 구현할 수 있습니다.
또한 아래와 같이 generator를 이용할 수도 있습니다.
결과출력.
피보나치 수가 처음 언급된 문헌은 기원전 5세기 인도의 수학자 핑갈라가 쓴 책이다. 한편 유럽에서 피보나치 수를 처음 연구한 것은 레오나르도 피보나치로 토끼 수의 증가에 대해서 이야기하면서 이 수에 대해 언급했다. n 번째 달의 토끼 수는
* 첫 달에는 새로 태어난 토끼 한 쌍만이 존재한다.
* 두 달 이상이 된 토끼는 번식 가능하다.
* 번식 가능한 토끼 한 쌍은 매달 새끼 한 쌍을 낳는다.
* 토끼는 절대 죽지 않는다.
이때 n번째 달에 a 쌍의 토끼가 있었고, 다음 n+1 번째 달에는 새로 태어난 토끼를 포함해 b 쌍이 있었다고 하자. 그러면 그다음 n+2 번째 달에는 a+b 쌍의 토끼가 있다.
그럼 이 수열을 파이썬에서 구현하면 어떻게 될까요?
다음과 같이 재귀함수를 이용해서 구현할 수 있습니다.
>>> def Fibonacci(n):
if n<2: return n
else: return Fibonacci(n-1)+Fibonacci(n-2)
if n<2: return n
else: return Fibonacci(n-1)+Fibonacci(n-2)
또한 아래와 같이 generator를 이용할 수도 있습니다.
>>> def Fibonacci():
a,b=1,1
while 1:
yield a
a,b=b,a+b
a,b=1,1
while 1:
yield a
a,b=b,a+b
결과출력.
>>> for i,ret in enumerate(Fibonacci()):
if i<20: print(i,ret)
else: break
0 1
1 1
2 2
3 3
4 5
5 8
6 13
7 21
8 34
9 55
10 89
11 144
12 233
13 377
14 610
15 987
16 1597
17 2584
18 4181
19 6765
if i<20: print(i,ret)
else: break
0 1
1 1
2 2
3 3
4 5
5 8
6 13
7 21
8 34
9 55
10 89
11 144
12 233
13 377
14 610
15 987
16 1597
17 2584
18 4181
19 6765
무언가 많이 생각하게 해 주는 clip이네요.
우리가 과연 제대로 살아가는 건지 모르겠습니다.
왠지 '표현하지 않으면 사랑이 아니다'라는 말이 생각납니다.
새해 복 많이 받으세요.
문자열을 암호화하는 방법은 여러가지가 있습니다만,
이번에는 가장 간단한 방법 중 하나인 caesar 암호법을 이용해 보죠.
caesar 암호법은 각각의 알파벳을 나열한 후, 일정한 간격으로 옮기는 방법입니다.
예를 들어, 'GOOD'를 오른쪽으로 하나씩 옮기면 'HPPE'가 되서 알아보기 힘들게 되는 것이죠.
이 문제는 chr과 ord를 이용하면 아래 예제와 같이 간단하게 해결됩니다.
이 예제에서 어느정도 간격으로 이동할지에 대한 변수는 SHIFT입니다.
즉 현재는 오른쪽으로 1칸 이동하게 짜여져 있는 것입니다.
실행시켜보면 다음과 같이 암호화/복호화가 잘 되는 것을 볼 수 있습니다.
이번에는 가장 간단한 방법 중 하나인 caesar 암호법을 이용해 보죠.
caesar 암호법은 각각의 알파벳을 나열한 후, 일정한 간격으로 옮기는 방법입니다.
예를 들어, 'GOOD'를 오른쪽으로 하나씩 옮기면 'HPPE'가 되서 알아보기 힘들게 되는 것이죠.
이 문제는 chr과 ord를 이용하면 아래 예제와 같이 간단하게 해결됩니다.
import sys
SHIFT=1
def encrypt( raw ):
ret = ''
for char in raw:
ret+=chr( ord(char)+SHIFT )
return ret
def decrypt( raw ):
ret = ''
for char in raw:
ret+=chr( ord(char)-SHIFT )
return ret
if __name__=="__main__":
print( sys.version )
raw = input("input : ")
encrypted = encrypt( raw )
print("encrypted : " + encrypted)
decrypted = decrypt( encrypted )
print("decrypted : " + decrypted)
input("press any key")
SHIFT=1
def encrypt( raw ):
ret = ''
for char in raw:
ret+=chr( ord(char)+SHIFT )
return ret
def decrypt( raw ):
ret = ''
for char in raw:
ret+=chr( ord(char)-SHIFT )
return ret
if __name__=="__main__":
print( sys.version )
raw = input("input : ")
encrypted = encrypt( raw )
print("encrypted : " + encrypted)
decrypted = decrypt( encrypted )
print("decrypted : " + decrypted)
input("press any key")
이 예제에서 어느정도 간격으로 이동할지에 대한 변수는 SHIFT입니다.
즉 현재는 오른쪽으로 1칸 이동하게 짜여져 있는 것입니다.
실행시켜보면 다음과 같이 암호화/복호화가 잘 되는 것을 볼 수 있습니다.
3.0 (r30:67507, Dec 3 2008, 20:14:27) [MSC v.1500 32 bit (Intel)]
input : hello world
encrypted : ifmmp!xpsme
decrypted : hello world
press any key
input : hello world
encrypted : ifmmp!xpsme
decrypted : hello world
press any key