About

기타|2009. 5. 22. 00:02

만화가, 온갖 웹브라우저 개발자 :-)

http://joone.net (만화 연재중)
http://twitter.com/joone_net


http://twitter.com/joonehur


댓글()

Fennec 1.0 alpha for Windows Mobile

Mozilla|2009. 5. 20. 01:07
Fennec 1.0 alpha for Windows Mobile

드디어 Fennec 1.0 alpha for Winodws Mobile이 공개되었습니다. Nokia Maemo버전은 이미 베타를 끊었지만, Windows Mobile 버전은 좀 진도가 느립니다.

그 이유는 한 번 사용해보시면 알 수 있듯이 성능이 가장 큰 것 같습니다. 그 동안 치명적인 memory 부족 문제는 jemalloc을 enable하면서 해결되었고, 반응 속도도 많이 향상되었습니다.  UI 모습에도 변화가 있습니다. CSS기반으로 변경되었다고 하는데, 다양한 화면 크기를 효율적으로 지원하기 위해 CSS를 도입한 것 같습니다.  그 이유 때문인지 몰라도,  Windows Mobile용 Fennec의 화면 UI가 단순한 느낌을 주고 있습니다. Maemo에서도 그렇게 변경되었는지 확인을 못해봤지만, Windows Mobile에 다른 CSS가 적용된 것은 분명해 보입니다.

화면 갈무리한 것을 Maemo Beta버전과 비교해 보면 특별한 것은 없습니다. 단지 제가 갖고 있는 미라지 화면 크기인 SQVGA(320x320)를 지원하지 않는 문제가 있네요. 화면이 landscape형태로 옴니아나 HTC Pro단말에 맞게 구성되어 있습니다.

Fennec 1.0 alpha for Windows Mobile

이번 Fennec에는 여러가지 Add-ons를 설치할 있는데, TwitterBar가 눈에 띄네요. Twitter의 인기를 Fennec에서도 확인할 수 있었습니다.

Twitter 페이지 Zoom-out 결과
Fennec 1.0 alpha for Windows Mobile Fennec 1.0 alpha for Windows Mobile

한글과 소프트 키보드 문제
Fennec 1.0 Alpha for Windows Mobile Fennec 1.0 Alpha for Windows Mobile

눈에 띄는 문제로는 한글이 깨지는 현상과 소프트 키보드 문제입니다. 현재 한글 페이지는 볼 수 없는 상태이고, 소프트 키보드 문제는 단추가 계속 화면에 남아서 브라우저를 가리는 부분이 문제입니다. 아마도 한글 소프트 키보드에서만 이런 문제가 나타나는 것 같습니다.

한글에 관한 문제는 역시 우리 개발자가 해결할 수 밖에 없을 것 같습니다. 한 번 살펴봐야겠습니다.

마지막으로, HTC Touch Pro에서 동작하는 시연 동영상을 공유합니다.

Fennec - alpha 1 for Windows Mobile from Madhava Enros on Vimeo.

댓글()

vodafone이 운영하는 Linux Community 사이트

FOSS|2009. 5. 5. 09:24


vodafone R&D이 개발자 사이트를 운영하면서 Linux와 Open Source를 지원하고 있습니다.

3G카드를 내장한 Netbook을 직접 판매하면서 리눅스 사용자를 지원하고 있습니다. 우선 각 Netbook에 3G Datacard를 설치하는 방법을 친절하게 소개하고 있습니다. 여기에다 각종 리눅스 배포본 링크도 찾아볼 수 있네요.  참고로, OpenSuse, Fedora, Ubuntu를 지원하고 있습니다.

사용자 지원을 위해  Forum을 만들었는데, 나름 열기가 뜨겁습니다. 아무래도 Linux Netbook사용자가 상당수 있는 것 같습니다.

게다가 3G Datacard driver가 오픈소스로 공개되어 있고, SourceForge와 같은 Source Code Repository 사이트도 관리하고 있었습니다. Vodafone에서 제공하는 driver나 개발 관련 SW가  공개되어 있습니다. 물론 사용자가 직접 만든 애플리케이션도 찾을 수 있습니다.

국내에도 wibro가 netbook과 함께 판매되지만 리눅스와 함께 판매된다는 소식은 못들었습니다. 어서 빨리 국내 이통사와 이런 모델을 도입해서 국내 리눅스 사용자를 늘리고 오픈소스에 기여했으면 하는 바램입니다.

'FOSS' 카테고리의 다른 글

Qt의 열린 지배 모델  (6) 2010.06.05
iPhone에 대항하는 Linux Phone의 반격  (4) 2009.06.07
오픈소스 커뮤니티를 움직이는 두 여성  (6) 2009.03.15
FOSDEM 2009 소식  (0) 2009.02.09
VMware Tungsten Graphics 인수  (0) 2008.12.26

댓글()

Python 간략 정리

기타|2009. 4. 22. 11:26
Python을 배우면서 틈틈히 정리한 내용을 공유합니다. 자주 쓰는 언어가 아니라 그런지 정말 잘 까먹게 되더군요.

그래서 이 문서, 저 코드를 보면서 간략하게 정리했습니다.

Python


1989년 12월 크리스마스를 심심하지 않게 보내려고, 네덜란드 암스테르담에 사는 귀도 반 로섬이 혼자 집에서 취미 삼아 재미로 개발한 프로젝트임. 연구실은 닫히고 집에서 특별히 할일이 없어서 개발했다고 함. 이름은 영국 드라마(Monty Python's Flying Circus)를 참고

http://en.wikipedia.org/wiki/Guido_van_Rossum

Hello World 예제



  1. #!/usr/bin/python
    # hello.py
    print "Hello World\n"


chmod 755 hello.py

Commnet



  1. # 이것은 주석입니다.

  2. import sys   # 이것도 주석입니다.


  3. """

  4. 이것도 주석입니다.

  5. 여러줄을 주석처리할 때 사용합니다...

  6. """


Datatype
































객체 자료형 상수와 사용법의 예
수치형(Numbers) 정수(2134), 실수(2.71), 롱형 정수(345L), 복소수(4+5j)
문자열(Strings) ‘spam’,“ eggs”
리스트(Lists) [1,‘ two’, 3, [5,‘ five’]]
사전(Dictionaries) { 'gslee':5284,'kslee':5582,'mylee':5382}
터플(Tuples) (1,3,’five’)
파일(Files) f = open( ‘toasts’)

정수형 상수

>>> a = 23 # 10진 상수
>>> b = 023 # 8진 상수, 0으로 시작하면 8진수이다.
>>> c = 0x23 # 16진 상수, 0x 혹은 0X로 시작하면 16진수다.
>>> print a, b, c # 10진수로 출력
23 19 35

실수형 상수

이렇게 한 줄에 여러 변수 값을 할당할 수 있다.

>>> e, f, g = 3.14, 2.16e-9, 3E220
>>> print e, f, g
3.14 2.16e-009 3e+220

Long 형 상수

>>> h = 123456789012345678901234567890L
>>> print h * h
15241578753238836750495351562536198787501905199875019052100L

유효 자리수는 메모리가 허용하는 만큼 가능하다.
복소수형 상수

>>> c = 4+5j
>>> d = 7-2J
>>> print c * d
(38+27j)

문자열

문자를 표현하기 위한 자료형

  1. print 'Hello World!'

  2. print "hello World!"


따옴표(Single Quotation mark), 큰 따옴표(Double Quotation Mark) 모두 사용된다.
리스트


  1. L = [1, 4, 3, 2, 5, 'aa']
    print len(L)
    print L[1:3]
    print L[5]
    print L+L
    print L*3

    L.append(6)
    print L
    L.reverse()
    print L
    L.sort()
    print L


list.py
튜플

튜플과 리스트의 차이는 튜플은 값 변경이 안되고, 리스트는 가능하다.

  1. t = (1, 4, 3, 2, 5)

  2. print len(t)

  3. print t[1:3]

  4. print t[1]

  5. print t+t

  6. print t*3


tuple.py
사전 만들기

아이템들은‘키’와‘값(value)’으로‘key:value’형식으로 구성된다.
>>> phone = {} # 공 사전 생성
>>> phone = {'jack':9465215, 'jim':6851325, 'Joseph':6584321} # 초기값 부여
>>> len(phone) # 사전의 크기(아이템의 개수)
3


  1. phone = {}

  2. phone = {'joone':12777347, 'minsoo':23443333, 'Soony':23454458}

  3. print len(phone)

  4. print 'the value of joone is %s' %  phone['joone']


  5. # 검색 추가 변경

  6. phone['jack'] = 33455634

  7. print phone

  8. phone['joone']= 1111111# 삭제

  9. del phone['jack']

  10. print phone# 키, 값, 아이템 얻기

  11. print phone.keys();

  12. print phone.values();

  13. print phone.items();

  14. # 키보드로부터 키 스트링(이름) 입력을 받는다. ‘name?’은 프롬프트다.

  15. name = raw_input('name?')

  16. # 키를 가지고 있는지 검사

  17. if phone.has_key(name):

  18. print phone[name] # 있으면 전화번호 출력

  19. else:

  20. print name,'not found' #없으면


dic.py

관계연산자(relational operator)


> 크다
< 작다
>= 크거나 같다
<= 작거나 같다
== 같다
!= 같지 않다
<> 같지 않다

포맷 스트링



  1. s3 = 'Hi %s! How are you doing?'

  2. print s3 % "joone"

  3. s4 = '%s * %s = %s'

  4. print s4 % (12, 23, 12*23)

  5. print '%5d %o %x %5.2f' % (23, 23, 23, 43.123)


제어문


파이썬은 단순하게 if, for, while이라는 3개의 제어문을 갖고 있다.
if 문


  1. n = int(raw_input('value?'))

  2. if n > 0:

  3. print 'positive'

  4. elif n < 0:

  5. print 'negative'

  6. else:

  7. print 'zero'


한 가지 주의 깊게 봐야 할 점이 있는데 들여쓰기(indentation)이다. 즉, if - elif - else는 같은 열에 있어야 하고, 세 개의 print 문은 탭
혹은 같은 수의 스페이스를 이용해 들여쓰기를 한다. 파이썬에서는 이와 같은 들여쓰기 필수다.
for 문


  1. a = [0,1,2,3]
    for x in a:      # a에 있는 모든 x에 대해
    print x,    # x값 출력



  1. for x in range(100):

  2. print x


순차적으로 숫자를 증가시켜가면서 반복할 경우에는 range함수를 이용한다
while문


  1. a, b = 0, 1
    while b < 100:
    print b,
    a, b = b, a+b


함수 정의와 호출


def 함수명 (인수들..):
문(statements)
return <값>


  1. def add(a, b):

  2. return a+b

  3. print add(1,2)



  1. add(int, int);
    add(int, double);
    add(double, int);
    add(double, double);


파이썬은 자료형을 동적으로 결정하므로 다른 언어에서 해야 하는 많은 중복(overloading) 작업을 피하게 해준다.

파일 입출력



  • 파이썬의 파일 입출력(File I/O) 기능은 C에서 사용하는 함수를 확장한 것

  • C의 래퍼(wrapper)로서 대부분의 C 파일 입출력 기능과 추가적인 편의 함수를 제공

  • 파일을 사용하기에 앞서 우선 파일을 오픈해야 하는데,

  • 이때 파일명과 처리 모드를 인수로 넘겨줘야 한다. 처리 모드는‘w:쓰기, r:읽기, a:추가하기’이다.



  1. f = open(‘testfile’, ‘w’)                  # 쓰기 모드로 testfile을 오픈한다.
    f.write(‘파이썬 파일 쓰기 테스트 중이예요!\n’)    # 문자열을 출력한다
    f.close()                                  # 파일을 닫는다. 생략 가능


읽기 쓰기 메쏘드
파일 객체의 . 더 다양한 메쏘드에 대해 배워보자. 먼저 읽기를 위한 메쏘드는

read()     파일 전체 내용을 한꺼번에 문자열로 읽어들인다

read(N)   N의 양의 정수만큼 읽기

readline()  한줄씩 읽기

readlines() 파일 전체를 라인단위로 끊어서 리스트에 저장한다
write(S), writelines(L)

파일 목록 읽기



  1. #!/usr/bin/python
    # file : readfiles.py

    import sys
    import os

    def main(argv):
    fileNames = os.listdir(argv[0])
    fileNames.sort()

    for fileName in fileNames:
    print '%s/%s' % (argv[0], fileName)

    if __name__=="__main__":
    main(sys.argv[1:])


명령행 인수 처리



  1. import sys # for handling argv
    import re   # import regular expression module for using subn

    def replace(fname, srcstr, deststr):
    f = open(fname)
    txt = f.read()
    txt = re.subn(srcstr, deststr, txt)[0]
    return txt

    if __name__ == '__main__':
    if len(sys.argv) != 4:
    print "Usage : replace filename srcstr deststr"
    sys.exit()
    print replace(sys.argv[1], sys.argv[2], sys.argv[3])


command.py

  1. import sys
    import os

  2. def main(argv):
    for arg in argv:
    print arg
    if __name__=="__main__":
    main(sys.argv[1:])


OOP



  1. class MyClass:

  2. def setValue(self, val):

  3. self.value = val;

  4. def getValue(self):

  5. print self.value

  6. c = MyClass()

  7. c.setValue('Hello')

  8. c.getValue()


oop.py

Debugging


python -m pdb oop.py

참고문헌



  • 이강성, 파이썬의 기본 구문과 기초자료형 이해, 마이크로소프트웨어 2000년 7월호


This article was written in springnote.

'기타' 카테고리의 다른 글

지키드리지 못해 죄송합니다...  (0) 2009.05.24
About  (0) 2009.05.22
2009년을 맞이하며 - 참여하는 한 해가 되자!!  (4) 2009.01.05
오바마 당선을 축하하며~  (0) 2008.11.05
HDTV에서 인터넷을?  (0) 2008.03.30

댓글()

오픈웹 관련 만화 두편

Web|2009. 4. 2. 21:13
오픈웹 이야기

kldp_linux_banking

몇 년전에 그린 그림인데, 아직도 상황은 변한게 없군요~ :-(

고려대 김기창 교수님이 이끄는 오픈웹이 금결원과의 민사 소송 2심에서 패소한 이후, 오픈웹(OpenWeb)에 대한 많은 이야기가 인터넷을 달구고 있습니다.

저도 오픈웹 운동이 시작된 이후로, 꾸준히 관심을 가지고 동참하고 있었는데, 정말 안타깝습니다.

ActiveX라는 거대한 폭탄을 안고 있는 국내 사용자들은 Windows와 Intenet Explorer를 업그레이드 할 때 마다  끊임 없이 발생하는 크고 작은 문제들로 불편함을 겪고 있습니다. 또한 맥과 리눅스 사용자는 브라우저를 통해 금융 거래를 아직까지 못하고 있습니다.

하지만, 여전히 개선될 희망이 보이지 않고 있습니다.

이러한 상황에서 가뜩히나 월드 가든(Walled Garden)에 갖혀버린 우리나라의 모바일 웹은 뿌리를 내릴 수 있을까요?

댓글()

Fennec 드디어 미라지에서 동작하다

Mozilla|2009. 3. 28. 01:30
jemalloc을 enable하고 Windows Mobile 용 Fennec을 정상 동작시켰다는 Blassey의 블로그를 보고 , trunk에 있는 코드를 업데이트 하여, 빌드를 다시 했습니다. cab installer를 만들어 설치를 했으나... 심하게 화면이 깨지는 현상이 나타났습니다. 상황이 더 안 좋아진 것이죠.

jemalloc이 아직 기본으로  enable되어 있지 않은 것이 문제였습니다. 다시 mozconfig파일에 "ac_add_options --enable-jemalloc" 옵션을 추가한 후, 다시 빌드하니 드디어 저도 삼성 미라지폰(i780)에서도 아래와 같이 Fennec이 동작하는 것을 확인할 수 있었습니다. :-)

Fennec1.0 alpha for Windows Mobile Fennec1.0 alpha for Windows Mobile
그 동안 수 차례 미라지를 비롯한 옴니아에도 사용을 시도했으나  웹페이지가 화면에 그려지지 않는 현상 때문에 제대로 Fennec을 사용할 수 없었습니다.

하지만, 아직 alpha이기 (정식 릴리스된 Alpha는 아닙니다) 때문에 일반 사용자가 사용할 만한 수준은 못 됩니다. 특히 성능 문제가 심각한데, Launching 시간이 약 60초 정도 걸리고 여러 instance가 동시에 실행되기도 합니다.

또한, 미라지에서 URL입력할 때, soft keyboard가 귀찮게 나타나고 있고,  위와 같이 화면에 IME 버튼이 계속 남아 있는 현상도 있습니다. 보시다시피 한글도 제대로 표시가 안되고 있고요.

아직 갈 길이 멀기 때문에 열심히 bugzilla에 이러한 현상을 보고하고 문제를 해결해 보려고 합니다.

댓글()

Fennec 1.0 beta 1 주요 추가 기능의 모습

Mozilla|2009. 3. 22. 20:21
Fennec 1.0 Beta1

Fennec 1.0 beta 1이 3월 17일에 공개되었습니다. 현재 Nokia N810만 지원하며 데스크탑에서 테스트 용도로 사용할 수 있도록 윈도, Mac OSX, Linux용이 함께 공개되었습니다.

beta에서 함께 공개될 것으로 기대한 Windows Mobile 6.1용 Fennec은 결국 공개가 안되었네요. 물론 현재 동작은 가능하지만, 대부분의 단말에서 메모리 부족으로 인해 웹페이지가 제대로 그려지지 못하는 문제로 아직 공개를 못하고 있습니다. Jemalloc을 활성화시키는 것 만이 유일한 해결책이라고 합니다.

jemalloc은 이미 Firefox3.1에 적용되었으며 Memory 단편화 현상을 줄여주어 오랜 시간 동안 브라우징해도 메모리가 계속 늘어나는 현상을 방지하고 있습니다.  이미 FreeBSD에서 그 효과를 인정 받았습니다.

이번 베타에서는 다음과 같은 새 Feature가  추가되었습니다.

  • TraceMonkey, Mozilla's new JavaScript engine

  • Faster application start-up time

  • Faster panning

  • Faster zooming

  • Initial implementation of bookmark folders and bookmark editing

  • Support for plug-ins


몇가지 Feature를 실제 구현된 모습으로 소개하면 다음과 같습니다.

TraceMonkey 지원

TraceMonkey는 이미 Firefox 3.1 Beta에서 지원하기 시작하여 벌써 그 효과를 몸소 체험한 분도 많을 것입니다. 자바스크립트를 처음 실행한 후, profiling을 하여 병목 지점을 찾아 그 부분은 네이티브 코드로 컴파일하고, 이후에는 스크립트가 아닌 네이티브 코드를 실행시켜 성능을 한 단계 끌어올렸습니다. 덕분에 XUL로 개발된 UI의 반응속도가 상당히 개선되었습니다.

플래시 지원
Fennec 1.0 Beta1 (Flash Support)
N810에서 이미 지원하고 있던 Flash를 Fennec에서 사용할 수 있게되었습니다. 버전이 낮아서 잘 안돌아가는 Flash도 있지만, 위와 같이 Youtube 동영상도 볼 수 있습니다. Flash는 Plug-in형태로 구현되었고, 다른 기능도  Plug-in으로 구현되어 추가할 수 있게 되었습니다.

Bookmark 편집 기능
Fennec 1.0 Beta1
당연한 기능이지만 베타에서 와서 지원하게 되었습니다.

암호 관리 기능
Fennec 1.0 Beta1

Mobile 환경에서 더 편리하게 웹서비스를 사용하게 되었습니다.

물론, 전반적인 성능 향상으로 Zooming, Panning 속도도 눈에 띄게 빨라져서 이제 어느 정도 쓸만한 수준이 되었습니다.

아직 Mobile에서 XUL UI는 다소 무리인듯 싶으나, Fennec팀이 Startup, Canvas, XPConnect 부분에 최적화를 시도하고 있으니 앞으로도  더 빠른 성능을 기대할 수 있을 것 같습니다. 특히 Fennec은 웹페이지를 Canvas 기술을 이용해서 화면에 표시하므로 Canvas가 HW 가속을 받게 되면 놀라울 수준으로 성능이 향상되리가 예상합니다.

Windows Mobile 버전도 빨리 안정화 되어 실제로 많은 사람들이 Fennec을 사용했으면 좋겠습니다.

좀 더 자세한 정보와 윈도, Mac, Linux에서 테스트 하고 싶은 분은 릴리스 노트를 보시기 바랍니다.

댓글()

오픈소스 커뮤니티를 움직이는 두 여성

FOSS|2009. 3. 15. 21:54
소프트웨어 개발자, 특히 해커 레벨로 내려가면 여성을 찾기란 쉽지 않은 일입니다. 대부분 남성 위주로 전산학과 해커문화가 발전했다고 해도 과언은 아닙니다. 물론 최초의 버그를 찾고 코볼을 개발한 그레이스 호퍼(Grace Murray Hopper)를 제외하면 말이죠

하지만, 오픈소스 커뮤니티를 이야기하면 사정은 달라집니다.

현재 가장 대중적인 오픈소스 커뮤니티를 뽑자면 그놈(GNOME)과 모질라(Mozilla) 커뮤니티를 예로 들을 수 있습니다. 그놈은 대표적인 리눅스 데스크탑 환경이며 데스크탑 애플리케이션 개발에 필요한 주요 오픈소스 솔루션을 제공하고 있습니다. 모질라는 오픈웹을 표방하며 Firefox, Thunderbird로 대표되는 오픈소스 커뮤니티입니다.

두 커뮤니티의 공통점은 무엇일까요?

바로 커뮤니티를 이끄는 수장이 바로 여성이라는 점입니다.



사진: duncandavidson, wikipedia

모질라는 미첼 베이커(Mitchell Baker)라는 분이 Mozilla Foundation 이끌고, 그놈은 스토미 피터즈(Stormy Peters)라는 분이 GNOME Foundation을 이끌고 있습니다. 두 분다 실리콘 벨리에 있는 대기업에서 일하다가 오픈소스에 뛰어들어 지금은 커뮤니티를 이끌고 있습니다.

어느 단체 보다 어려운 것이 커뮤니티를 이끄는 것이라고 생각합니다. 커뮤니티 또한 복잡한 사회이며 다양한 계층의 사람들이 구성되어 있으며, 게다가 영리 단체가 아니기 때문에 자발적인 성금이나 기업의 도움으로 커뮤니티의 살림도 책임져야 합니다.  그래서 이 분들의 역할은 커뮤니티 구성원의 자발적인 참여를 이끌기 위해 사상적 배경을 제공하는 것입니다. 모두가 공감할 수 있고 이해할 수 있는 목표와 비전을 제시하는 것이죠.

약간의 차이가 있다면 Mitchell Baker는 오픈웹과 교육을 통한 오픈소스 확산에 관심이 많고, Story Peters는 커뮤니티와 기업간의 협업과 기업 내 오픈소스 확산에 관심을 갖고 있습니다.

두 분의 블로그를 가 보면 끊임없이 고민하고 사람들의 의견에 귀 기울이는 모습을 볼 수 있습니다.

이 처럼,  커뮤니티의 규모가 커질 수록 커뮤니케이션 능력이 뛰어나며 카리스마와 함께 부드러움을 겸비한 두 분의 역할이 정말 커 보이는 것 같습니다.

참고

댓글()