블로그 이미지
소프트웨어 개발 경험을 공유하고 싶은 재밌게 사는 소프트웨어 엔지니어입니다^^

카테고리

Chungha Story (45)
Agile Experience (22)
My Family (4)
Life Style (8)
Programming (8)
Android (2)
Total165,188
Today19
Yesterday12
새로운 개발팀

이전 개발팀에서 이메일을 이용한 코드리뷰를 시행한 적이 있습니다. (2010/02/26 - [Programming] - 이메일로 코드 리뷰 하기)
혹시나 해서 요즘에도 잘 되고 있나 여쭤보았지만 아직은 형식적인 단계라는 답변을 들었습니다.
이직을 하고 나서 저는 변화된 환경에 적응하기 위해 애자일 프랙티스를 언급하거나 제안하지 않았습니다. 
단지, 이전 업무에 대한 소개를 할 때 개발 프로세스 개선 활동에 대해 짧게 소개만 했습니다. 
(다행히도 입사 4개월 만에 애자일에 관심을 보이시는 관리자 분이 계십니다!^^~~ 이번에 애자일 세미나를 같이 들으러 감~)

프로세스에 녹아든 코드리뷰

경력으로 입사하였기에 빠르게 프로젝트에 투입되었습니다. 현재 개발팀의 소스코드는 svn으로 관리됩니다. (git로 넘어가는 추세..)
그런데 특이했던 점이, 자신의 home directory에 check-out된 소스에서 직접 작업하지 않고 export된 다른 복사본(working source)에서 작업을 하는 것이었습니다. 즉, commit과 update 절차는 다음과 같이 진행되었습니다.
  • commit 절차 : 복사본에서 작업 => svn 소스와 diff를 통한 merge => svn commit
  • update 절차 : svn update => 복사본 소스와 diff를 통한 merge => 복사본에서 검증
즉, 개인 작업물에 대해서 철저하게 분리하는 형태 입니다. 어찌보면 번거로워 보일수 있는 소스관리 프로세스 였습니다.
그런데, 작업이 진행되면 될수록 소스코드가 잘 정리되었으며, 믿음직하고 든든해 졌습니다. 
그것은 merge 과정에서 자신의 코드와 타인의 코드에 대해서 source code inspection이 암시적으로 행해졌기 때문입니다.
복사본에서 작업하기 때문에 개인용 테스트 로그가 svn 소스 트리에 등록되지 않은 것도 한 몫 했습니다.

프로세스(혹은 도구) 개선이 정답?

김창준님이 한국 developerWorks의 dW Column에 기고하신 "소프트웨어 관리자의 개선 우선순위"라는 글을 보면 다음과 같은 재미있는 연구 결과를볼 수 있습니다.

쉽게 말해, 도구 부분에서 상당한 개선을 이뤄내면 비용적으로 세 배 정도 개선을 얻을 수 있다. 이에 비해 관리 부분에서 상당한 개선을 이뤄내면 비용적으로 64배 정도의 개선을 얻을 수 있다는 뜻이다.

관리자들이 선호하는 개선 노력은 어떤 순서일까? 정확히 역순이다. 일단 도구 개선부터 시작한다. 자기 자신(관리)을 바꾸는 것은 맨 나중이다. 그러나 실제 효과로 보면 우선순위는 관리가 맨 처음에 온다


제 경험을 보면 마치 프로세스(혹은 도구) 덕분에 큰 효과를 본것 처럼 보입니다. 하지만 근본적인 원인은 따로 있었습니다.

내 코드가 아닌 우리 팀의 코드

개발과정에서 개발팀의 관리자 분(개발에도 참여하심)과 개발 리더분은 지속적으로 소스코드를 리뷰하고 있었습니다.
라인단위로 의미없거나 논리적이지 못한 코드가 있다면 명확하게 해명을 해야 svn 소스 트리에 남을수 있었습니다.
로직이 불분명하다면 버그가 생길만한 케이스를 분석하거나 테스트 케이스를 만들어서 알려주십니다.
우리에게 누가 문제를 해결했고 누구의 소스에서 버그가 있었다는 것은 중요하지 않았습니다.
중요한건 우리 팀의 코드가 품질이 높아야 한다는 것이지요. (물론 납기일을 만족하면서...)
코드리뷰는 진짜로 해야 효과가 있는 것 같습니다.
Posted by 윤청하

댓글을 달아 주세요

  1. 2010.07.05 22:35 신고 Eminency  댓글주소  수정/삭제  댓글쓰기

    완전히 git를 쓰면 굳이 SCM과 분리된 working copy에서 작업하지 않아도 될 거 같은데?
    그나저나 git라니 꽤 진보적이구만 ^^; git보단 mercurial이 훨씬 편한 거 같긴 하다만..;

  2. 2010.07.30 17:15 신고 뇨릉  댓글주소  수정/삭제  댓글쓰기

    정말 동감가는 글입니다.^^;
    전 SVN에 커밋하기전에 코드리뷰를 해주고 싶은데 받아줄 사람이 없군요 ㅠ.ㅠ
    요즘 애자일,TDD에 관심이 많이 생기고 있는데 저와 관심분야가 비슷하신것같아요.
    자주 놀러오겠습니다^^;

    • 2010.08.01 22:29 신고 윤청하  댓글주소  수정/삭제

      없다고 포기 하지 마시고 최소 한명이라도 자기 편을 만드시면 좋을 것 같아요^^
      자주 놀러오세요~~ 같이 나누면 나눌수록 좋은 수가 생기기 마련입니다.

막사이의 추억

Life Style / 2010.04.26 21:39
지난 금요일에 연구소 춘계 산행대회가 있었습니다. 산행지는 회사 바로 앞에 있는 청계산이었죠.
산행 코스는 의외로 빡쌨습니다. 거의 4시간 코스로 오르락 내리락, 높은 경사로가 수시로 우리를 괴롭혔습니다.
매봉까지 오르지 않은 것을 다행으로 여기며~ 옥녀봉에 도착했을때~ 막걸리 아저씨가 보이더군요.
우연찮게 한 모금 얻어마셨는데 무척이나 맛있었습니다. 먹고 나서 들어보니 맛있는 이유가 있었습니다.
출처를 알수 없는 저 막걸리에는 사카린이 대량 첨가되어있다고 합니다.
사카린 [saccharin]
수크로스보다 훨씬 단맛이 나는 합성 감미료이며 음료수, 사탕, 의약품, 치약 등에 사용된다. 
수용액은 수크로스의 500배라는 경이적인 단맛을 지녀, 떨릴정도의 자극을 가진 뒷맛을 가졌다.
정말 경이적으로 단 첨가물이네요..ㅎㅎ
그러던 중 막사이에 대한 추억들이 언급되기 시작했습니다~

막걸리 + 사이다 (2 : 1 혼합) = 막사이

제가 혼합주류(일명 폭탄주, 좋게 말해서 칵테일)를 좋아하는 편인데~ 막사이는 처음 들어봤습니다.
그래서 산행 뒤 점심시간에 고기를 앞에 놓자마자 막사이를 말아서 먹었는게 그 맛이 일품이더군요.
소사 (소주 + 사이다 (9 : 1 혼합)) 이후로 사이다 들어간 폭탄주는 처음 마셔봅니다.
당분간 이 맛을 잊지 못하여 자주 찾게 될것 같네요.

같이 한잔 하실분?

'Life Style' 카테고리의 다른 글

막사이의 추억  (8) 2010.04.26
처음으로 이직 했습니다.  (6) 2010.03.11
리액션 부탁드립니다.  (8) 2010.02.24
당신의 꿈은 무엇인가요?  (2) 2010.01.13
Posted by 윤청하

댓글을 달아 주세요

  1. 2010.04.27 13:16 신고 YUZI  댓글주소  수정/삭제  댓글쓰기

    막사이... 생각만해도 머리아프네요.
    어제 먹은 술이 올라올꺼 같아.

  2. 2010.04.27 14:23 신고 Ally_  댓글주소  수정/삭제  댓글쓰기

    막사이.....ㅋㅋㅋ 전 최근에 맥사이를 마셔봤어요..ㅋㅋ 맥주 + 사이다.
    좀 음료수 같은 느낌이 나던걸요.ㅎㅎㅎ

    양재동에서 일하시나봐요, 저두 양재동. ^^

  3. 2010.06.07 11:53 신고 도리  댓글주소  수정/삭제  댓글쓰기

    헉.. 사카린? 몸에 유해하다는 연구 결과로 이제 거의 사용 안하는 첨가물인데 =_=

  4. 2010.06.11 09:46 신고 제노즈  댓글주소  수정/삭제  댓글쓰기

    오랜만에 찾아뵙습니다..;
    막사이 -ㅅ-;; 한번 만들어 먹어봐야겠는데요?!

SurfaceView의 역할

Android Application에서 View의 내용은 GDI Thread를 통해 Surface에 그려지게 됩니다.
만약 View에 동영상 또는 카메라 프리뷰와 같이 그려지는 양이 매우 많거나 빠른 화면 변화를 원한다면 SurfaceView를 사용해야 합니다. SurfaceView의 내용은 GDI Thread를 통해서 Surface에 그려지지 않고 다른 Thread를 통해서 그려지기 때문입니다.
SurfaceView는 아래 그림과 같이 Window의 아래쪽에 위치하며, Window를 뚫어서(punched) 자신이 보여지게끔 합니다.
단, 해당 Window 위에 다른 View가 있는 경우 블렌딩(blended)이 되어 보여지게 됩니다.

동영상 재생과 SurfaceView

아래 그림은 동영상이 재생되는 SurfaceView를 묘사한 것입니다.

동영상 재생을 담당하는 PVPlayer (Packet Video Player)에서 SurfaceView에 연결된 Surface에 동영상을 그립니다.
그려진 Surface와 다른 내용(ex. GUI)을 담고 있는 View의 Surface들을 모두 합쳐서(composition) 하나의 화면으로 FrameBuffer에 쓰는 역활을 하는 것이 SurfaceFlinger service입니다. SurfaceFlinger service는 연산량이 많기 때문에 독립적인 process로 존재합니다. 동영상의 화면이 크고 그 위에 블랜딩 되어야 하는 GUI가 많은 경우 오버레이를 위한 하드웨어 가속기를 사용하기도 합니다.
Posted by 윤청하

댓글을 달아 주세요

  1. 2011.03.30 20:44  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  2. 2011.04.30 04:04 신고 Douglas  댓글주소  수정/삭제  댓글쓰기

    SurfaceView-Thread 에서 Intent 로 다른 Activity 넘어갈 때 생기는 에러...

    예전부터 생겼던 에러인데요..
    대충 System.exit(0); 로 처리하고 넘기곤 했는데...
    제대로 처리하고 싶어서요.

    surfaceView 에 Thread 로 게임을 만들었는데요.

    run 안에 Rect 로 범위를 정하고 그 범위를 Click 하면 다음 Activity 로 넘어가는 것을 하려고 합니다.

    그냥 intent 를 쓰면 다음 Activity가 Screen에 나타나고 곧바로 원래 게임 화면으로 돌아옵니다.

    그래서 이전에는 startActivity(intent) 한 후에 System.exit(0); 으로 아예 게임 Activity 를 강제로 종료시키는 방법을 썼었는데.. 좋은 방법이 아닌것 같아서요.
    그리고 이렇게 처리하면 게임 중에 전화가 온 후 다시 실행 될 때 전화 올 때의 게임 화면이 아니라 그 이전 화면으로 다시 돌아가더라구요.

    surfaceView 에 Thread로 만든 View 에서 에러 없이 intent 를 사용하려면 어떻게 해야 하죠?


    P.S.

    Thread는 run = true 일 때만 돌아가도록 했고
    surfaceDestroyed() 에서는 run 을 false로 고치고
    while(done) {
    try{
    Thread.join();
    done=false;
    } catch() {
    }

    이런식으로 Thread 처리 하도록 하고 있습니다.

    • 2011.05.03 08:48 신고 윤청하  댓글주소  수정/삭제

      제가 정확히 해보지 않아서 답변이 될지는 모르겠지만...
      범위를 클릭했을떄 다음 Activity로 넘어가는 구현을 Surface가 Destroy될떄 쓰레드를 수동적으로 종료시키는 것이 아니라,
      Activity를 넘기기 전에 능동적으로 쓰레드를 완전히 종료시킨뒤에
      넘어가시는 것으로 하는건 어떠신가요? (쓰레드를 종료하기 전에 이전 화면을 저장하는 것도 좋습니다.)
      그리고 복귀했을때는 쓰레드를 동작시키신뒤 이전 화면을 바로 렌더링 해주는 것은 어떨까요?
      ^^

  3. 2011.08.30 20:56 신고 로미  댓글주소  수정/삭제  댓글쓰기

    SurfaceFlinger 디적거리다가 여기까지 오게됐네. Sozu~! 내일 회사서 봅세 ㅋㅋㅋ

  4. 2012.03.06 03:31 신고 gogazago  댓글주소  수정/삭제  댓글쓰기

    잘보고 감니다 ;) 안드로이드 그래픽쪽에서 일하다 보니깐 여기까지 오게 되었네요 ㅎㅎ;
    감사합니다~

  5. 2012.09.26 21:39 신고 김창중  댓글주소  수정/삭제  댓글쓰기

    SurfaceView 관련해서 그림좀 참고 하고 싶어서 블로그에 가져가려고 하는데 괜찮겠습니까?

  6. 2012.11.07 12:08 신고 김종대  댓글주소  수정/삭제  댓글쓰기

    SurfaceView의 역할에 관한 그림을 교과서에 인용을 하고 싶습니다. 괜찮을 까요?