-
FFmpeg 기본 자료형 - AVFifoBufferStreaming Media/Media Tools 2013. 6. 10. 14:59
순환하는 FIFO 이다. av_fifo_generic_read / av_fifo_generic_write 버퍼에 데이타를 읽고/쓴다.콜백 함수를 사용하지 않으면, 메모리의 복사가 발생한다.읽은 만큼 FIFO를 버린다. (av_fifo_drain 함수 참조)읽고/쓰기 함수에서 FIFO의 크기를 검사하지 않는 점을 주의한다. av_fifo_peek2 오프셋의 데이타의 주소를 반환한다.FIFO 자체에 어떠한 변경도 가하지 않는다. av_fifo_size 저장된 데이타의 크기이다. av_fifo_space 저장 가능한 크기이다. 즉, 버퍼의 크기 - 저장된 데이타의 크기 av_fifo_alloc / av_fifo_free FIFO 구조체의 자원을 생성/소멸한다. av_fifo_grow FIFO의 버퍼의 크기를 ..
-
제대로된 결론을 이끌어 내는 대화의 방법Life/Communication 2013. 6. 4. 15:37
대화를 하다보면 처음에 가졌던 생각이 정리되면서 바뀌는 경우가 종종 있다. 그냥 시원하게 생각이 바뀌었다고 하면 쉽게 해결된다. 여러가지 이유로 끝까지 기존 입장을 고수하며 지저분한 토른을 만들어낸다. 억지, 괘변, 정신승리 또는 정신 붕괘 등 과정과 결과는 제각각이다. 성급한 결론 짓기와 타협 없는 주장의 이면에는 감정적인 것이 많이 작용한다. 내 경험으로는, 상대의 주장에 성급하게 동조하거나 반대하는 것은 상대방에 대한 호불호나 자신의 트라우마의 결과이다. 어떻게 하면 이러한 난관을 해결할 수 있을까? 자신의 감정을 잘 통제할 수 있는 힘을 기른다. 반대로 부정적인 기억을 치유한다. 둘 다 동시에 할 수 있다면 더 좋겠다. 이 방법은 자신의 성장을 위해서는 필요하다. 문제는, 단기간에 해결할 수 없다..
-
테스트 주도 개발 - 둘째날Programmer/Etc 2013. 5. 7. 18:21
최대한 빨리 테스트에 통과하는 코드를 작성하는 방법 중에, 캐스팅의 남용이 있다. 돌아가고 나면 이러한 코드를 적절한 자리로 옮기거나 다형성을 사용하여 불필요한 캐스팅을 제거한다. 지난 번 포스팅한 글을 다시 불러와서 갱신해보자. 최종 목적은 잘 돌아가는 깔끔한 코드의 작성이다. 이를 위해서 아래 과정을 반복한다.최대한 빨리 테스트에 통과하는 코드를 작성하는 것이 목적이다. 스텁 구현, 상수를 사용한 하드 코딩, 복사&붙여넣기 신공, 캐스팅을 마구 남용한다.리펙토링을 통해서 스텁을 채우고, 상수와 중복을 제거하고, 캐스팅을 제거하기 위한 적절한 코드 옮김이나 다형성을 사용한다. 외부 프로토콜은 같으면서 내부 구현이 다른 객체를 정의하는 방법을 소개했다. 저자는 Money와 비슷하게 동작하지만 합을 나타내..
-
테스트 주도 개발 - 첫째날Programmer/Etc 2013. 5. 6. 16:17
최종 목적은 잘 돌아가는 깔끔한 코드의 작성이다. 이를 위해서 아래 과정을 반복한다.최대한 빨리 테스트에 통과하는 코드를 작성하는 것이 목적이다. 스텁 구현, 상수를 사용한 하드 코딩, 복사&붙여넣기 신공을 마음껏 발휘한다.리펙토링을 통해서 스텁을 채우고, 상수와 중복을 제거한다. 무엇을 어떻게 개발할지보다 무엇을 테스트할지를 먼저 생각한다. 논외지만 흥미로운 이야기팩토리 생성자를 사용하면 클래스의 사용과 클래스 구조 간의 의존성을 제거할 수 있다. 대표적으로 리펙토링 과정에서 불필요해진 하위 클래스의 제거가 가능해진다.
-
무조껀 권위에 기대지 마라.Life/Communication 2013. 4. 29. 23:33
어떤 말이나 주장이 타당하려면, 그 근거가 귄위있는 사람이나 단체가 이야기를 했기 때문이 아니라, 그 말의 가정과 근거와 논리가 합리적어야 한다. 권위에 기대서 오판을 했었던 부끄러운 나의 과거의 이야기를 하나 해야겠다. 회사내 회의에서, XML 속성을 사용하면 잘못된 설계라며 지적질을 한 적이 몇차례 있다. 이러한 주장을 하게 된 배경을 이러하다. 예전에 읽었던 XML의 튜토리얼 중에 XML의 속성를 설명하는 페이지에서 아래의 내용이 있었다. Avoid XML Attributes? Some of the problems with using attributes are:attributes cannot contain multiple values (elements can)attributes cannot cont..
-
치환 모델 (Substitution Model)Programmer/Programming 2013. 4. 10. 17:41
예제에 사용할 함수 (defun square (x) (* x x)) (defun sum-of-squares (x y) (+ (square x) (square y)) normal-order: 전체를 확장한 후에 다시 줄여나간다. (sum-of-squares (+ 5 1) (* 5 2)) 확장한다. (+ (square (+ 5 1)) (square (* 5 2))) (+ (* (+ 5 1) (+ 5 1)) (* (* 5 2) (* 5 2))) 줄인다. (+ (* 6 6) (* 10 10)) (+ 36 100) 136 applicative-order: 인자를 평가하고 적용한다. sum-of-squares의 인자를 평가하고 적용한다. (sum-of-squares (+ 5 1) (* 5 2)) (sum-of-sq..