[netty] netty document link




[교양] Coroutine



“Subroutines are special cases of … coroutines.” –Donald Knuth.[3]

When subroutines are invoked, execution begins at the start, and once a subroutine exits, it is finished; an instance of a subroutine only returns once, and does not hold state between invocations. By contrast, coroutines can exit by calling other coroutines, which may later return to the point where they were invoked in the original coroutine; from the coroutine’s point of view, it is not exiting but calling another coroutine.[3] Thus, a coroutine instance holds state, and varies between invocations; there can be multiple instances of a given coroutine at once. The difference between calling another coroutine by means of “yielding” to it and simply calling another routine (which then, also, would return to the original point), is that the latter is entered in the same continuous manner as the former. The relation between two coroutines which yield to each other is not that of caller-callee, but instead symmetric.

Any subroutine can be translated to a coroutine which does not call yield.[4]

To implement a programming language with subroutines requires only a single stack that can be preallocated at the start of program execution. By contrast, coroutines, able to call on other coroutines as peers, are best implemented using continuations.[citation needed] Continuations may require allocation of additional stacks, and therefore are more commonly implemented in garbage-collected high-level languages.[citation needed]Coroutine creation can be done cheaply by preallocating stacks or caching previously allocated stacks.[citation needed]

Tail call, Tail Recursion, tail call elimination(TCO-tail call optimization)


related post : http://stackoverflow.com/questions/24023580/does-swift-implement-tail-call-optimization-and-in-mutual-recursion-case

[Streaming] mp4 streaming 이슈

http progressive download 불가능 한 상황이 발생 했다.

나의 경우 mp4의 moov atom 순서가 가장 뒤에 있을 경우 발생 했다.

해결 방법은 ‘moov’ Container order값을 두번째로 옮기고 약간의 작업을 해주면 된다.

Solution : qt-faststart.c

안드로이드에 올리기 위해서는  ffmpeg jni 를 이용해야 하는데 빌드하고 관리하기 번거롭고 library 통째로 필요한게 아니라 qt-faststart.c만 필요했기 때문에 자바로 옮겼다.

관련 코드 git-hub에 작성해서 공유할 계획만 가지고 있다.


* java ffmpeg : https://code.google.com/p/jjmpeg/downloads/list

* Quick Time Format : https://developer.apple.com/library/mac/documentation/QuickTime/QTFF/qtff.pdf

*  http://www.onjava.com/pub/a/onjava/2003/02/19/qt_file_format.html



[ios] view 동적으로 크기 조정 할 때 Constraint 충돌 발생 하는 경우

일반적으로 Container가 사라졌다가(display:none) 보이는(display:block) 효과를 구현 할 때

사라진 cell의 크기를 보이도록 조정 할 때

Container의 크기를 먼저 늘리고 Container 안에 있는 Margin이나 Padding 값을 0보다 큰 값으로 올려야 한다.

그렇지 않으면 Container의 크기가 0인데 subview와 Container 사이에 Margin(top, bottom)값이 0보다 크게 되면

논리적으로 오류가 발생하며 Constraint 충돌이 발생한다.