Archive for April, 2011

Ubuntu 설치후 한글이 안이쁠때..

우분투를 처음 설치하면 한글 폰트에 Antialias가 설정되어 있지 않은 상태다. 아주 예전 한글이 안티앨리어스가 더 안이뻤을 때 이야기인데 아직도 이게 기본값이여서 그런건데...

간단하게 /etc/fonts/conf.d/29-language-selector-ko-kr.conf 파일을 날려버리면 된다. 안전하게는 이름을 다른 것으로 변경하면 되겠지!!


Python 2.7 Release Note를 보다가..

http://docs.python.org/dev/whatsnew/2.7.html#pep-372-adding-an-ordered-dictionary-to-collections
순서가 보장되는 딕셔너리.. 그래 이거 필요했다. 특히 json으로 넒길때 아무리 순서가 없다지만. .그래도 순서 있는게 좋지 않겠어?

http://docs.python.org/dev/whatsnew/2.7.html#pep-378-format-specifier-for-thousands-separator
format()이란것을 통해서 해야된다는 것이 불편하긴 하지만... 그래도 locale 모듈을 통해서 한다는 것에 비하면, 천지차이라고나 할까?

http://docs.python.org/dev/whatsnew/2.7.html#pep-3106-dictionary-views
그래 이것도 맞는 것 같다... key를 iteration하면서 그 리스트를 수정하는 경우.. 뭔가 애매한 부분이 있었었지...

아래건... 실수할 가능성이 많아진 문법인듯..

>>> {1,2,3,4,5}
set([1, 2, 3, 4, 5])
>>> set() # empty set
set([])
>>> {}    # empty dict
{}

http://docs.python.org/dev/library/io.html#module-io
cStringIO 보단 그냥 io 써야겠다.. C로 작성되어 2~20배 빨라졌다고 함... 근데 편차가 왜이리 큰겨?
http://docs.python.org/dev/library/shutil.html#shutil.make_archive
간단한 압축엔 유용하겠는걸...


python exception handler decorator

쩝.. 내가봐도 참 난해한 코드 ㅋㅋㅋ

class MyException(Exception): pass
class MyException1(Exception): pass
class MyException2(Exception): pass


def exception_catch(exceptions, exception_handler):
    def wrap(func):
        def new_func(*args, **kwargs):
            try:
                return func(*args, **kwargs)
            except exceptions, e:
                return exception_handler(e, *args, **kwargs)
        return new_func
    return wrap

def error_handler(*args, **kwargs):
    print 'handle error'

def my_function():
    pass

@exception_catch((MyException, MyException1), error_handler)
def my_raise_function():
    raise MyException, 'hello'

@exception_catch((MyException, MyException1), error_handler)
def my_raise_function_1():
    raise MyException2, 'unexpected error'

@exception_catch(MyException, error_handler)
def my_raise_function_2():
    raise MyException, 'unexpected error'


my_function()
my_raise_function()
my_raise_function_2()

pagespeed and yslow

구글과 야후에서 제공하는 웹 페이지 성능 향샹 팁들이다.

사이트 오픈전에 한번쯤은 돌려봅시다.


django 문서에 나오지 않은 filter lookup

http://docs.djangoproject.com/en/1.3/topics/db/queries/#field-lookups 에 필터에 사용할 수 있는 것들이 있는데, 여기에 나와있지 않는 것들이 있다. django가 문서가 충실한 편이라 여기만 열라 뒤졌으나 원하는 것 찾지못하고.. 설마 없겠어? 하고 소스코드를 뒤져보니 보인다... ^^;

django/models/sql/constants.py

  • in
  • range
  • year, month, week_day,
  • search
  • regex

추가: 근데 허탈하게도 문서에 있더라는... http://docs.djangoproject.com/en/1.3/ref/models/querysets/#field-lookups

내가 찾던게 뭐냐고? in과 range다~ ㅋㅋ


mako expression filtering, decorator

http://www.makotemplates.org/docs/filtering.html#expression-filtering

  • u : URL escaping, provided by urllib.quote_plus(string.encode('utf-8'))
  • h : HTML escaping, provided by markupsafe.escape(string) (new as of 0.3.4 - prior versions use cgi.escape(string, True))
  • x : XML escaping
  • trim : whitespace trimming, provided by string.strip()
  • entity : produces HTML entity references for applicable strings, derived from htmlentitydefs
  • unicode (str on Python 3): produces a Python unicode string (this function is applied by default).
  • decode.<some encoding> : decode input into a Python unicode with the specified encoding
  • n : disable all default filtering; only filters specified in the local expression tag will be applied.

필터는 그냥 스트링 인자를 하나 받는 함수이므로 작성하기도 편하다.

그런데 아쉽게도 필더에 파라미터가 들어가지 않는구나..

http://www.makotemplates.org/docs/filtering.html#decorating

mako의 함수에 python의 decorator처럼 사용할 수 있다. 멋진데?


  • Copyright © 1996-2010 Your wish is my command. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress