2006년 5월 10일 수요일

[PL]Ch.8- Control in Sequential Languages

. Spaghetti Code
  . Fortran
  . Assembly와 거의 1:1로 mapping된다.
  . CONTINUE statement
     . 아무일도 하지 않고 goto의 label로만 사용함.
  . GOTO를 매우 남발하고 있어서 코드 읽기가 어렵다.
  . block내로 뛰어드는 일도 가능(과거 변수값 재활용 등)

. Structured Control
  . GOTO는 이해하기 어렵기 때문에 다른 것을 PL이 제공해보자
  . Dijkstra - "Goto considered hamful"
  . Control flow(structure jumps)
  . if then else end
  . while do end
  . for { }
  . case
  . Can't jump into the middle of a block
  . Activation Record 처리에 명확한 답이 없고 이상해지므로 compiler가 배제함

. Exceptions
  . Purpose
  . Jump out of a block or function invocation
     . Block내에서 문제를 해결할 수 없을 때 밖으로 나간다.  
     . 여러 단계의 block을 한번에 나간다.(non-local goto와 비슷)
  . Pass data as part of the jump
     . 벗어날 때 parameter를 jump
  . Return to a program point that was set up to continue the computation
     . 정해진 곳으로 return

  . Memory Management
  . Unnecessary activation record may be deallocated

  . raise = throw = abort part = jump
  . handler = catch

  . Static scope와 dynamic scope
  . variable은 static scope가 이해하기 쉽지만
     handler는 dynamic scope가 더 의미가 있다.
  . Static scope로 하게되면 library작성자나 callee가 결정해야 하는 데
     dynamic scope로 하면 library user나 caller가 뭘 할지 정할 수 있다.

  . ML : handle이 pattern match, type이 아닌 다른 특별한 것으로 취급됨
  . C++ : 어떤 type이든 throw하고 type에 따라 handle

  ex) overflow일 때
  . Numerator는 0, Denominator는 1을 return

  ex) Computing the inverse of a matrix
  . determinant가 0이 아닐 때만 inverse가 존재한다.
  . determinant를 먼저 구해 볼수도 있지만 inverse만큼 cost가 크다.
  . 따라서 inverse를 구하는 중간에 determinant가 0이면 raise exception
 
  . Exception은 언제 쓰나?
  . Error conditions에 쓴다.
  . Efficiency를 위해 쓴다.
     ex) short-circuit
     ex) 많은 값을 곱할 때
         . 중간 값이 0이면 더 이상 계산하지 않아도 된다.
         . 심지어 마지막 원소가 0이라도 stack pop시간을 아껴준다.

  . Typing
  . Exception은 무슨 type으로 할까?
     ML에서는 그냥 아무 type(type variable)이 되게 한다.

  . Resource allocation
  . Stack은 그냥 pop한다.
  . Heap은 ML에서는 garbage collector가 챙긴다.
     C에서는 user의 책임이다.
  . Lock, Thread등에서는 문제가 매우 골치아프다.
     (잘 챙기든지, 포기하든지 알아서해라.)

. Continuation
  . http://en.wikipedia.org/wiki/Continuation
  . 현재 value를 바탕으로 remaining work를 기록해둠.
  . Program optimization등에 이용됨.
  . upcall
  . callback
  http://en.wikipedia.org/wiki/Callback_%28computer_science%29
  . the rest of the computation to be performed after it.
  . Continuation으로 error(exception) handling도 가능하다.

. CPS(continuation-passing-style)
  . http://en.wikipedia.org/wiki/Continuation-passing_style
  . control이 continuation이라는 형식으로 통해 explicit하게 pass됨
  . k(Kappa) : continuation argument

. continuation-passing-form
  . function이나 operation이 continuation으로 pass되는 것
  . return 할 필요가 없다.
  . tail call과도 관련 지을 수 있다.
  . ex) fact(9)에서
  fact(8)의 continuation : lx.9*x
  fact(7)의 continuation : ly.(lx.9*x) (8*y)
  fact(6)의 continuation : lz.(ly.(lx.9*x) (8*y)) (7*z)
  . initial continuation : the identity function

. TCO(Tail call optimization)
  . http://en.wikipedia.org/wiki/Tail_call_optimization
  . Recursive call을 iterative로 바꿀 general한 방법은 없다.

2006년 5월 9일 화요일

Nature

My interest in natural phenomena is increasing.
Becasue Daejon is less developed than Seoul.
And CG is emulation(imitation) of natural phenomena.

I can hear frogs' cry after last heavy rain.
Precisely, narrow-mouth frog(맹꽁이).

Today's weather is good.
The sky is blue and shiny.
The wind is cool and fresh.
Trees are full of shiny green leaves.
Not just green, but brilliant green.
It dazzles my eyes.

Two days ago, It was not that good.
It was wet and hot.
It was typical monsoon climate.
It was higher than 20'C degree.
Now everybody wear half-sleeves.

When I was a kid, I can hardly recognize natural phenomena.
But, now I can.
Because I choose and clean my cloth by myself.
I control room temporature, buy fan, organize everything for myself.

[CG]2006.5.9. MS Research Asia - Harry Shum

. 오늘 소개한 논문 2편
Yin Li, Jian Sun, Chi-Keung Tang and Heung-Yeung Shum. Lazy Snapping. SIGGRAPH 2004. (ACM Transaction on Graphics)  (Video 19M)
http://research.microsoft.com/research/pubs/view.aspx?pubid=1266
http://research.microsoft.com/~jiansun/papers/LazySnapping_SIGGRAPH04.pdf
http://research.microsoft.com/~jiansun/videos/ImageCompletion_tiny.wmv

Jian Sun, Lu Yuan, Jiaya Jia and Heung-Yeung Shum. Image Completion with Structure Propagation. SIGGRAPH 2005 (Video 56M).
http://research.microsoft.com/~jiansun/papers/ImageCompletion_SIGGRAPH05.pdf

. 참석자
신성용, 좌경룡, 홍세준, 최성희, 한환수, 김진수 교수님을 포함한
10여명의 CS 교수님들과 터만홀을 가득 채운 학생들.

. 관련 분야
Signal processing, Image processing, Computer Vision, Computer Graphics

. MSRA 소개
1998년 베이징에 설립, 200여명의 researchers, 2,000명의 intern students.
거기 있는 유명한 사람들 : SGI 설립자, IBM Deepblue 설계자 등..
주로 computer Graphics관련 분야를 집중적으로 연구함.
(UI, Digital Media, Digital Entertainment, Networking and systems, searching and mining)
중국 학생이 70%이상, official language는 english
2005년 Siggraph에 9편, SIGIR에 12편이 실림.
(전체 논문의 10%에 해당하는 엄청난 양임.)
World's hottest lab 등으로 잡지에 소개됨.

. TTG(Technology Transfor Group) : Parachut group
  Research를 product로 바꿈.                                  

. Dr. Harry Shum
CMU Robotics 전공, 4년전 신성용 교수님초대로 KAIST 방문
Managing Director MSRA(1999~2006)

. Prior, Context and Interactive Computer Vision
  완전 자동이 아니라 약간 step back해서 User의 입력을 약간 받아서
  쉽게 feedback해주고 잘 해보자.

. IBM : Image Based Modeling

. Lazy Snapping
Just draw two lines
In line와 out line만 그리면 됨.
Red line : What you want
Blue line : What you don't want
Lazy : 부지런하게 모든 boundary를 그리지 않고 선만 대충 그음.
Interactive Graph Cut

Divide and Conquer : Input -> Coarse Boundary -> Refine Boundary
Stroke Drawing <-> Graph cut Algorithm
Graph cut problem -> Per-Pixel Graph cut 대신 Pre-segmentation first
Energy Minimization E(x) = E1(Xi) + lE2(Xi, Xj)
E1 : difference
E2 : Similarity

Noting new algorithm, Present New system.

. 논문 잘 쓰는 법
Write -> Intoducting, Abstract, Summary -> Title
Good title is short title => 2 words, end with ing

. Image completion
Small Missing : Pixel-level, PDE based
Large Missing : how?
Curve-based : BP(Belief propagation) Algorithm
Our Motivation : Missing salient structures, fill-in
Abstract window, curve - a few curves - human specify that.
Structures completion befor texture complete
Fragment-based Image completion, Image Repairing, object Removal

Node Energy, Coherence Energy => Dynamic Programming
Graph Labeling, discretize nodes
Decouple Image into two part

Multiple Intersecting Curves
Loopy Belief Propagation
Tour Into pictures도 쉽게 가능

사진을 2장 찍은 것이 아니라 object를 지우고 그 부분을 메꿈.
자세히 비교하면 이상할 수도 있지만 결과 사진만 보면 매우 그럴듯 함.
걸리적거리는 사람이나 물체를 깔끔하게 지워버릴 수 있다.
Boundary를 바꾸고 싶을 때 가리고 새로 그리기만 하면 된다.

. 감상
마치 무슨 마법이나 장난을 보는 것 같다.
이런 신기한 툴이라면 누구나 써보고 싶어할만한 것 같다.
연구자나 사용자 모두 직관적이고 매우 재미있어할 수 밖에 없겠다.

지겨운 algorithm이나 math가 이런 멋진 결과들을 가져오다니.


2006년 5월 7일 일요일

[드라마]Lost

꽤 많은 이야기가 얽혀있다.
등장인물들의 집안 일들이 하나씩 언급되는 데,
많은 사람들의 이야기가 여기저기서 겹친다.

그리고 많은 수수께끼들.
. 고장난 비행기에서 살아난 사람들 - 앞쪽 사람들과 뒷쪽 사람들
. 무인도의 그들 - 가끔 사람들을 죽이거나 잡아간다. 비행기 탑승자 명단도 가지고 있다.
. 숫자의 비밀 - 로또 당첨, 벙커 등에 적힌 번호가 모두 같다.
. 벙커 - 이상한 동양 회사에서 만든 벙커와 알 수 없는 임무.
. 무인도의 검은 연기 - 폭발이 나고 사람들을 다치게 한다.
. 무인도의 맹수들 - 곰 등..
. 마약상의 비행기
. 배에서 난파된 프랑스 여인 - 20년간 갖혀 있었다.
. 초자연적 현상들
  . 로크의 다리가 고쳐짐.
. 과거에 난파되어 왔다가 죽은 사람들
  . 꽤 자주 발견된다.

[미국드라마]70's show

http://www.imdb.com/find?s=all&q=70%27s+show
제목은 70년대 쇼인데, 배경이 70년대이다.
실제로는 요즘 연재되고 있는 데, 배경을 70년대로 설정한 것뿐
실제로 70년대에 찍은 드라마는 아니다.

그래서 대사들이 들어보면 매우 웃기다.

주인공, 에릭(Eric Forman)이라는 키크고 매우 마른 나약한 청년.

아버지는 한국전에 참전한 해병이었는 데, 매우 보수적이라서 닉슨을 지지한다. 자식들에게 절대 사랑한다라고 말하지 않고 시니컬하다.
가장 좋아하는 말은 "Kick your ass", "Go to hell", "What the hell".
쇼핑몰을 운영하고 있다.
여자같은 남자나 게이 같은 것을 제일 싫어한다.
나약한 아들인 에릭에게 매일 화를 낸다.

엄마(Kitty Forman)는 간호사인데, 요리를 좋아하는 전형적인 미국 주부. 매우 감정적이다.
하지만 술이 들어가면 딴 사람이 된다.
(프랜즈에서는 피비의 동생과 결혼한 나이든 여자로 나온다.)

에릭의 여자친구, 도나는 매우 등치가 커서 사람들에게 놀림을 당하기도 한다. 그래서 에릭이 여자역할을 하고 도나가 남자 역할을 할 때도 있다.

하이드(Steven Hyde)는 어려서 부모를 잃고 (혹은 어디로 도망가버렸든지)
에릭의 지하실에서 얻혀산다. 하지만 재치있고 매우 똑똑하고 사업수완이 좋다.
친구들을 비꼬고 놀려먹으면서 돈도 많이 번다.

페즈는 남미에서 온 교환학생, 여자친구가 없어서 슬퍼하는 데,
취향도 특이하다. 가끔 정말 예쁜 여자친구를 사귀기도 한다.
발음이 특이해서 사람들이 못 알아 듣기도 하는 데, 단어의 의미를 맘대로 해석해서 유머가 되기도 한다.

도나의 아버지는 옆집에 사는 데, 폭탄급인물. 빨간 머리에 지저분하고 친구도 없다. 지능도 좀 낮은 사람으로 나오는 듯.

켈소는 등장인물 중에 가장 멍청하지만 여자들에게 인기가 아주 많다.
여자 친구 재키는 공주병.

레오라는 이름으로 나오는 히피 아저씨는 항상 약간 취한듯한 모습이다.
넋이 나가있는 데, 정신세계가 이상하다.

에릭의 누나는 로리인데, 헤픈 여자로 나온다. 사람들 모두 누나를 대놓고 놀린다.
다들 에릭의 지하실에서 대마초를 피는 장면이 매회 중간에 나온다.
중간에 아버지에게 걸리기도 하는 데, 대충 얼버무리고 넘어간다.
70년대 히피 문화와 함께 그런 일이 꽤 흔했나보다.

디스코라든지, 롤러장, 새로 생기는 쇼핑몰 등.. 이 배경이 되곤 한다.

[영화]Startrek Insurrection, Nemesis - 소포일러

First Contact보는 김에 몰아서 봐버렸다.
First contact보다 영어가 clear하게 이해되지는 않는 데,
아무튼 정리해보면.

. Insurrection
문명이 고도화되지 않은 어떤 종족들이 자신들의 행성에서 살고 있다.
사실 그들은 기술력이 뛰어난데, 기술을 남용하다가 은하계가 폭파된
후로는 기술을 쓰지 않고 그냥 농경사회에 머무르기로 결정했다.
젊음을 유지해주는 입자가 많은 행성이라서 늙지도 않고 수십년간
기술을 익히고 수백년간 살아간다.

그러던 중 클로킹 상태로 그들을 관찰하던 federation측에서는
그들의 행성을 접수하기로 마음먹는 다.
비슷한 행성을 만들어서 그들을 강제 이주시키고
그 행성의 자원(늙지않게 해주는 입자)을 이용해서 더 많은
federation 시민들을 돕겠다는 생각.

피카드는 그 행성 사람들의 편에서서 이주를 막는 다.
아무리 인류에 도움이 된다고 하더라도 그들의 자유를
강제로 침해할 수는 없다는 생각이다.
그러던 중 여인과 사랑에 빠지기도 한다.

피카드와 사랑에 빠지는 여인으로 나오는 배우는 Donna Murphy.
스타트랙에 나오는 여배우들은 스타일이 다들 비슷한 것 같다.
백인에 쌍커풀이 진하고 주로 눈을 보고 뽑는 듯.
의사(Dr. Beverly Crusher) 로 나오는 Gates McFadden도 그렇고
심리상담가(Deanna Troi)로 나오는 Marina Sirtis도 그렇다.

Data는 기계라서 호기심도 매우 많고 순진한 편인데,
(나중에 사기치는 걸 많이 배워서 적들을 속이기도 하지만)
마지막 장면에서 첫 장면처럼 아이들과 함께 짚단 속에서 튀어나오는 게
참 웃기다.

. Nemesis

제목처럼 적들이 자신과 거의 비슷한 모습을 하고 있다.
보통 Nemesis는 숙적이라고 변역되기도 하는 데,
자신과 거의 비슷한 능력과 모습과 생각을 하는 적을 뜻한다.
Twins, clone, mirror image 같은 식으로 작품들에 등장한다.

여기서도 피카드 선장의 DNA를 복제한 대머리 젊은이가 적으로 나오는 데,
피카드와 달리 어린 시절을 매우 비참하게 감옥에서 보낸다.
피카드도 사실 젊었을 때 꽤나 오만한 사람이었다.
하지만 지금은 개과천선(?)하여 온화한 사람이 되었다.
그래서 그 젊은이를 설득하기 위해 노력을 많이 한다.

결국 노력은 실패하고 그와의 대결은 피할 수가 없다.
그리고 그는 완벽한 것이 아니어서 살기위해서는 피카드의 유전자가 필요하다.

피카드와 함께 Data의 형제도 등장한다.
Data를 만들기 직전에 만든 prototype 로봇인데,
Data처럼 경험이 많지 않아서 좀 더 어벙하다.
그 로봇도 사실 nemesis의 작전이었는 데,
그것을 역이용해서 data가 직접 그들의 배로 잠입해 들어간다.

First Contact에서 싸울 때도 그렇고 Data는 위장, 잠입 업무에
많이 동원된다. 상대방에게 넘어간 척 하고는 다시 돌아오는 등..
로봇이라서 충성심이 없고 정해진 로직으로만 움직일 꺼라고 생각하는 적들 덕분에 언제나 많은 일을 한다.

[Program]MSN&Yahoo Message Archive Viewer 1.6

FakeWebcam이라는 웃기는 회사에서 만들었다.
MSN을 이용한 툴을 만드는 회사인 것 같다.
이건 그냥 msn 대화 내용을 보여주는 툴이다.

msn 사용자 -> 친구 -> 날짜별로 나눠서 보여준다.
(msn이 창을 한 번 닫고 다시 열면 seperator가 저장되나보다.)

몇 가지 더 있었으면 하는 기능은 통계를 내서 graphical하게 보여줬으면 좋겠다.

다른 프로그램들도 신기한 게 몇 개 있다.

webcam이 없는 컴퓨터에서 webcam이 있는 것처럼 에뮬레이션하고
webcam 대신 동영상을 틀어서 다른 msn 사용자에게 전송하는 프로그램.

화면 내용을 그대로 recording하는 프로그램 등..