블로그 이미지
kalstein

여러가지 프로그래밍 관련이나...신변잡기적인 글들을 남기는 블로그입니다. 지식은 나누는만큼 강력해집니다 ^^

Rss feed Tistory
잡동사니 2011. 6. 26. 19:49

HDTV 다음팟플레이어로 시청하기

Fusion HDTV 7 cool 모델 사용중인데, 전용 SW는 좀 엉망이다.
차라리 다음팟플레이어로 보는게 훨씬 나음.

세팅법:
안테나로 세팅.
"Microsoft 기본 튜닝사용" 체크.
채널검색 후 사용.
카테고리 없음 2011. 6. 13. 16:55

python 배포이미지 만들기.

setup.py 좀 만들어주고...
디렉토리에 맞게 파일들 다 넣었으면.

setup.py bdist_wininst

이거 하나면 오케바뤼 (windows환경에서만)
setup하는 exe파일을 만들어준다!! +_+
Programming/Python 2011. 6. 1. 10:28

Python 느님의 위엄. callback 함수 작성이 너무도 쉽다!

C/C++에서는 callback 함수 한번 작성하려면 상당히도 귀찮다.
대표적인 callback 함수 쓰는게 sort() 라고 볼수있다. (STL에서는 for_each도 있고)
(callback 함수라기보다는 임시함수라고 하자. 그게 더 맞는 표현이니...ㅋ)

간단히 표현하자면, 함수호출시 인자값으로 함수포인터를 넘겨주는건데...
이게 좀 code reading 상 불편한 점이 있다. 왜냐고?

func_A (int i)
{ .... }
func_B(callback_func func)
{
    func(10);
}
main_func()
{
    func_B(func_A);
}

보통 이런 구조가 되는거다.
그러면, main_func을 읽고있다가 func_B 를 호출하는걸 알았다.
근데 func_A는 또 뭐야? 뭘 어떻게 비교하는거지?

이런 불편함때문에 boost lambda라는것도 있다.
저런 함수들은 보통 사이즈가 작고 구문도 간단한 경우가 많다.
그래서 람다 함수로 작성하면 func_A 같은걸 따로 작성하지않을 수 있고
코드 리딩도 쉬워진다.

반면, 복잡한 함수라면? 조금 까다로워진다.
어려운 람다함수를 쓰느니 그냥 func_A를 쓰는게 더 나을수있다는것.
자 그러면 python에서는 어떨까. nested function 선언이 가능하다!

>>> def outer():
       x
= 1
       
def inner():
           
nonlocal x
           x
= 2
           
print("inner:", x)
       inner
()
       
print("outer:", x)


>>> outer()
inner
: 2
outer
: 2

특히나, "nonlocal" 키워드를 통해서, 일반 function과의 변수를 공유할수도 있다.
(공유하기 싫으면 "nonlocal x" 만 지워버리면 된다. 그럴경우 outer의 x와 inner의 x는 전혀 별개의 변수)
정말 python은...쓸수록 귀요미인듯 =_=;;;
  • rein 2011.06.07 15:55 ADDR 수정/삭제 답글

    C++에도 비슷한 기능이 추가되었습니다 (C++ 11 a.k.a C++ 0x).
    최근에 나온 컴파일러들 (ICC 11, GCC 4.5+, VS 2010)에도 들어가 있는 기능인데요, 저 비슷하게,

    sort(v.begin(), v.end(), [=](const int &a, const int& b) { return a< b;}); 하는 식으로 익명함수를 단축해서 쓸 수 있습니다. 표준에 맞게 구현된 STL 컨테이너/알고리즘이나, TBB parallel_? 류에서도 그냥 쓸 수 있게 되어있습니다.

  • rein 2011.06.07 15:55 ADDR 수정/삭제 답글

    저도 예~~전에는 boost::function 써서 클로져 비슷한거 만들어 썼는데, VS 2010에서 짜는 코드베이스는 전부 C++ 0x lambda를 쓰는 형식으로 바꿨습니다

    • kalstein 2011.06.13 16:57 신고 수정/삭제

      오...

      C++은 더이상 뭘 얼마나 더 붙일까요 ㅋㅋㅋ
      조만간 스크립트 언어도 진출할기세? ^^;

TOTAL 38,593 TODAY 3