2014년 9월 18일 목요일

피로

1.
  이번주부터 첼로를 배우기로 했다. 첼로 소리가 좋아서 직접 연주하고 싶은 마음에 수업을 신청했고, 첫 수업을 하고나니 신청한 것에 대해 만족한다.
  자세, 활을 잡는 법, 활에 송진가루를 묻히는 법, 활을 켜는 위치, 각 현의 음이름, 지판을 잡는 법 등을 배웠다. 처음 잡는 활이라 상당히 어색했고, 이 어색함이 사라질 때엔 실력이 늘 것이라고 생각한다. 그만큼 많이 잡아봐야 한다는 거지. 첼로 선생님께 집에서는 어떻게 연습을 하냐고 물으니, 초반에는 개인 연습보다는 잘하는 사람이 옆에서 봐주면서 해야 한다며, 현과 활의 각도가 90도를 이루어야 제대로 된 소리를 낼 수 있다면서 개인 연습은 활을 잡는 연습만 가능하다고 했다.

2.
  어제 20시간은 잠을 잔 것 같다. 너무 피곤해서 잠을 한 꺼번에 몰아 잔 게 아닌가 생각이 든다. 몇 일 연속으로 바깥에 많이 돌아다녀서 피로가 쌓인 게 아닌 가 생각이 든다. 아니, 진이 빠져서 그렇다고 해야 하나. 날씨가 다시 더워져서 그 더운 날씨에 이리저리 돌아다니고 스트레스도 쌓인 상태라 그럴 수도 있을 것 같다. 여튼 20 시간을 내리자니 피곤한 건 사라졌는데, 엉뚱하게 새벽에 일어나서 이렇게 블로깅을 하고 있다. 오픈씨브이 좀 보고, 장고도 보고, 릴리즈 한 해리스캠도 기능 추가하고, 리프도 짜야지.

2014년 7월 3일 목요일

해야 할 일 들

1.
  그동안 해야 할 일들을 너무 외면한 것 같다. 벌써 2014년의 반이 지나갔고 반이나 남았지만, 년말에 우물쭈물 하다가 내 이럴 줄 알았다 는 말을 하지 않기 위해서 벌린 일들을 정리해야겠다.(언젠가 벌릴 일도 따로 정리해야겠지...)

2.
  순서는 우선순위와 상관이 없다.

  • 매주 토비의 스프링 3.1 책을 읽고 정리하기
    • 현재 2장 테스트 부분까지 대충 정리
  • 자바스크립트와 Angular.js 책을 읽고 정리하기
    • 책을 기다리는 중
  • 격주로 Python을 이용한 OpenCV 영상처리 스터디 진행하기
    • 무슨 프로젝트를 할 지 정함(장갑 등을 이용하여 손 제스쳐 인식하기)
    • 적외선 카메라를 이용하는 방법도 있으나 쉬운 방법부터 해보기로 함
  • 해리스캠 업데이트하기
    • 현재 갤러리 기능 구현 부분에서 멈춤
    • 갤러리 기능 구현 이후에 간단한 편집 및 공유 기능 추가 예정
  • 얼룩 곡 쓰기
    • 천천히 진행
Keep에도 저장해야겠다.

2014년 5월 11일 일요일

사과는 없다.

1.
  토요일 오전, 오랜만에 사직 수영장에 갔다. 50m를 몇 번 왕복하고나서 걷는 레인에서 천천히 걷고 있었다. 그러다가 사람이 많은 레인의 시작 지점에서 한 사고를 목격했다. 한 아주머니께서 잠수 연습을 하다 아저씨의 얼굴을 발로 찼는데, 얼굴을 마주하고도 사과 한마디 없이 계속 잠수 연습을 하셨다.

2.
  보통 수영장에서는 우측 방향으로 수영을 한다. 난 수영을 시작하기 위해 레인의 우측에 서 있었다. 하지만 나의 맞은편(즉, 역방향)에서 한 아주머니께서 오고 계셨는데, 급한 것도 없으니 아주머니께서 완주하기를 기다리고 있었다. 하지만 아주머니께서는 완주 하시고도 내 앞에서 한동안 서 계셨으며, 얼굴을 마주보기도 했으나 전혀 비켜줄 마음을 찾지 못했다. 레인 옆에 공간이 충분했으나 비켜주지않은 아주머니의 사정은 모르겠다. 하지만 미안한 마음의 표시도 없었다.

android.os.Process.killProcess()와 finish()의 차이를 실험해보았다.

1.
  앱의 환경 변수로 static 변수를 사용했는데, 앱을 finish()로 종료시켰을 때는 이전에 설정된 값이 변수에 그대로 유지되었다. 반면에 android.os.Process.killProcess()로 앱을 종료시켰을 때는 이전에 static 변수들이 앱을 처음 실행한 것 처럼 초기화되었다. 어느 블로그에서 별 차이가 없다는 내용을 봤는데, 이런 미묘한 차이가 있었다.

2014년 5월 9일 금요일

OpenCV를 Python으로 다뤄보았다.

1.
  연휴 동안 HarrisCam의 전체적인 UI를 변경했다. 앱의 기본 화면은 셔터 버튼과 현재 활성화 된 기능 아이콘만 있으며 좌우로 쓸어 넘기면 각 메뉴가 나오는 방식으로 변경했다. 확실히 이전 UI보다 세련된 느낌이 들었다. 구글 카메라 앱를 참고하여 View를 구현했다.
  연휴 마지막 날에는 상곤행님과 코드 리팩토링을 했는데, 변수나 클래스, 메서드 등의 이름을 짓는 것이 중요하다는 결론이 나왔다.
  UI를 변경하기 시작했을 때부터 개발은 Android Studio로 진행했다. 처음엔 Eclipse보다 불편하다고 느껴졌지만, 조금만 시간이 지나니 IntelliJ 기반인 Android Studio가 상당히 괜찮다고 느껴졌다. 하지만 NDK를 다룰 땐 Android Studio가 굉장히 불편했다. 아직까지 묘책을 세우지 못했는데, 누군가는 먼저 삽질을 했으리라 생각하며 UI 구현을 마무리 한 다음에 찾아보려고 한다.



2.
  OpenCV를 Python으로 다뤄보았다. 그동안 'MATLAB을 이용한 디지털영상처리'에 대해 스터디를 진행했는데, 그 다음 주제가 Python으로 OpenCV를 다뤄보는 것으로 정해졌다. 오늘이 첫 모임이었는데, 성조 형님이 Python 및 필수 라이브러리, OpenCV를 설치하는 방법을 쉽게 알려주셔서 개발 환경을 구축하는 데 수월했다. Python을 이용한 OpenCV는 정말 개발이 쉬웠다. 스크립트 언어의 특징과 OpenCV의 편리함이 좋은 케미가 된 것 같다!
  OpenCV를 개발하기 위한 Python 필수 라이브러리인 Numpy와 matplotlib를 공부하기 위해 관련 서적도 구매했는데, 재미있을 것 같다. MATLAB을 다룰때보다는 코딩을 많이 할 것 같아서 이번 주제에 대해 모임을 가지는 것이 매주 기대가 될 것 같다.

2014년 5월 5일 월요일

안드로이드에서 setX(), setLeft()의 차이

  안드로이드에서 setX()와 setLeft()는 완전히 다른 역할을 한다. setX()는 부모에 상관없이 화면의 절대 좌표로 설정할 수 있지만, setLeft()는 오로지 부모에 의해서 상대적인 좌표 값이 변하게 된다. VIew를 이동시키는 애니메이션을 사용할 때, X, Y 값이 변화되므로 getLeft(), setLeft()는 안 쓰는 것이 정신 건강에 좋다.

  오늘도 삽질은 계속 되었다...

2014년 4월 18일 금요일

꾸준히 하면 언젠간 는다.

1.
  수영을 (무려!) 네 달 째 다니고 있다. 세 달을 다니는 동안 자유형과 배영을 배웠는데, 자유형을 할 때 숨을 못 쉬어서 두 번 정도 중간에 멈춰야했다. 네 달 째 다니다보니 25 미터를 한 번도 안 멈추고 완주할 수 있게되었다. 아마도 네 달 동안 꾸준히 하다보니 몸이 지쳐서 습득 해버린 것 같다. 그렇지만, 배영은 여전히 힘들다. 발차기부터 팔 젓는 것 까지 잘 되는 게 하나도 없다. 배영을 어느정도 할 수 있게 되려면 기초반에 한 달 정도 더 있어야 할 것 같다. 자유형 처럼 배영도  꾸준히 한다면 언젠가 늘 것이다.

2.
  'Two Thumb Places Bar'(Two Thumb Seekbar, 그렇다. 말장난 이름이다.)를 만들기 시작했다. 뷰의 배치는 완료됐고, 속성도 만들어줬으며, 이제 Java 코드로 View를 구현 해주면 된다. 커스텀 뷰를 만드는 것도 재밌다. Harris Cam의 개발을 잠시 쉬면서 커스텀 뷰를 다뤄봐야겠다. 사실 Harris Cam의 개발을 쉰다기보다 Harris Cam에 적용할 커스텀 뷰를 만든다고 하는 게 더 맞는 말이다.

3.
  Nexus 5의 기본 카메라가 Google 카메라로 업데이트 되었다. 외관상 바뀐 점은 화면을 드래그 함으로써 메뉴를 나타내게 하는 것이다. 이전의 조그 인터페이스는 모습을 찾아볼 수가 없다. 개인적으로 이전의 인터페이스가 더 나았다고 생각한다. 지금의 느낌은 뭔가 서드파티 앱 같다.
  외관 외에는 아웃포커싱 기능이 추가되었는데, 정말 신기한 기능이다. 첫 번째 사진을 찍은 뒤 카메라를 천천히 위로 올리는 방법으로 찍는데, 아마도 첫번째 사진과 그 이후 사진들을 비교하여 같은 물체를 찾아 그 이외의 영역의 픽셀들을 뭉개는 게 아닌가하는 생각이 든다. Harris Cam에 넣으면 재밌을 것 같은 기능이다.


2014년 4월 15일 화요일

2014년 4월 3일 목요일

오늘의 삽질

'Social-auth Android' 3.2 버전에서는 트위터와 페이스북만이 이미지 업로드를 지원한다... 릴리즈 노트를 꼼꼼히 안 읽은 내 잘못이다... 그래서 일단 공유 기능은 트위터, 페이스북만 연동하기로 했다.

2014년 3월 17일 월요일

3월 셋째 주, 한 일 그리고 할 일

1.
  지난 주에는 많은 일이 있었다. 친구 아버지의 장례식, 얼룩 첫 합주, 리얼라이즈 공연 구경, HarrisCam 갤러리 기능 구현(사진 크기 설정 이슈와 백업용 사진을 불러오는 기능까지!) 등등... 일주일 내내 하루하루를 정말 꽉꽉 눌러서 사용한 것 같은 느낌이다. 이번 주도 여러 할 일들이 있는데, 이제 이 스케쥴에 적응을 해야할 것 같다.

2.
  HarrisCam의 갤러리 기능을 구현했다. 사진 크기 이슈와 'content://' scheme을 해결했다. 처음에는 휴대폰 외장메모리에 저장된 파일만 불러올 거라 생각하고 구현했는데, 백업 사진들도 불러 올 경우(실수로 눌렀는데 안 되더라... 이전까지는 이런 문제가 있을 줄 정말 몰랐다.)가 있을 수 있어서 그 부분을 InputStream을 이용해서 처리해줬다. 사진 크기는 결국 채우기 혹은 늘이기 옵션을 사용하기로 했다. 현재 '채우기'는 1번 이미지를 기준으로 다른 이미지들을 높이:너비 비율을 유지한 채 남은 여백을 채우는 옵션이고, '늘이기'는 1번 이미지의 크기를 기준으로 잡아 늘이거나 줄이는 옵션이다. 추후에는 채우기 옵션에서 이미지의 위치 조정(드래그 등을 통해서) 기능을 넣어야 할 것 같다.
  갤러리에서 불러오는 이미지를 다루면서 비트맵 관리에 정말 신경을 많이 썼다. BitmapFactory.decode~는 메모리에 새로운 공간을 할당받는 것이고, Bitmap.create~는 기존의 Bitmap 객체에 Reference로 연결한다고 생각한다. 그 개념이 확실히 잡히기 전에 recycle() 때문에 삽질을 많이 했다. recycle() 된 Bitmap을 사용하지 말라는 에러도 많이 보고, recycle() 시점을 어디로 둬야하는 지도 많이 고민했다. 결국 앱의 메모리를 로그로 남겨서 메모리 누수가 없는 지 확인하면서 코딩을 했다. Bitmap을 다룰 때마다 항상 같은 고민을 하게 되는데, 몇 번 삽질을 반복하다보니 이젠 확실히 알겠다.

3.
  '다양한 예제로 학습하는 데이터 구조와 알고리즘 for Java'을 읽고있는데, 책에 문제가 좀 있는 것 같다. 똑같은 문장을 바로 다음 줄에 쓰질 않나(마치 Ctrl + C, Ctrl + V 처럼), 분명 Java를 사용하면서 C의 struct 와 -> 연산자가 있질 않나, 오탈자가 좀 있다. 원래 C로 쓴 책을 Java로 옮기다가 생긴 실수인 것 같은데, 그저 복사 붙여넣기만 한 느낌이라 책의 완성도가 떨어지는 느낌이다. 그럼에도 불구하고 이 책의 좋은 점은 다른 책들과 달리 예제들이 많이 있다는 것이다. 간략한 개념 설명과 많은 예제는 이 책의 장점이라고 생각한다.(만약 이전에 자료구조와 알고리즘에 대해서 배우지 않았다면 이 책을 읽는 데 약간 힘들었을 것이다.)

4.
  토요일, 리얼라이즈에서 공연은 정말 재밌었다. 얼룩, 문센트, 홍롱, 개차반이 참여했는데, 특히 홍롱이라는 밴드가 좋았다. 음악 스타일도 좋았고(디스코? 펑키? 그루브? 댄스락? 느낌이 났다) 멤버들이 실력이 대단했다. 얼룩은 역시 얼룩다운 공연을 했다고 생각한다. 어서 같이 무대에 서고 싶다. 문센트는 어쿠스틱 밴드였는데, 자작곡도 좋았지만 커버곡도 정말 좋았다. 'Daft Punk'의 'Get Lucky'와 'Madonna'의 'Music'을 커버했었다. Get Lucky는 약간 예상 가능했지만, Music은 정말 신선했다. 원곡의 리듬을 살리면서 어쿠스틱의 느낌을 잃지않은 느낌(악기 편성이 어쿠스틱이라 잃을 수 없었던 걸 수도...)이었다. 개차반은 맨 마지막 순서였는데 보컬분이 가볍게(?) 한 잔 하시고 공연을 했다. 개차반도 흥겨웠다.

5.
  이번주 HarrisCam의 목표는 공유 기능을 구현하는 것이다. 'Socialauth Android'라는 라이브러리를 이용할 계획이다. 이전에 써봤을 때, 정말 간편하게 앱에 적용할 수 있었다. 공유 가능한 곳은 페이스북, 트위터, 텀블러 그리고 안드로이드에서 제공하는 공유 기능, 정도로 계획 중이다. 공유 기능을 구현하고 시간이 좀 남는다면, UI 쪽으로 많이(...) 개선해야 할 것 같다.

6.
  이번 주는 계획대로라면 3, 4일은 수영 갈 수 있을 것 같다.

2014년 3월 14일 금요일

희한하게 바빴던 몇 일

1.
  월요일에는 친구 아버지 장례식장에 갔다왔다. 다음날 발인이었지만 회사에서 시간을 빼지 못해 관을 들어줄 수 없었다. 사랑하는 사람을 먼저 보내는 일은 힘든 일일 것 같다. 아직 나는 그런 경험을 겪지 않았지만 겪게된다면 엄청 슬플 것 같다. 사람의 인생을 변화시킬 수도 있을 것 같다는 생각이 든다...

2.
  화요일에는 얼룩 연습을 했다. 처음으로 맞춰보는 합주여서 많이 틀리기도 하고, 맞춰나가야 할 부분도 찾게됐다. 로켓에 빈 자리가 있다면 어느 자리든지 탑승하라는 말이 있는데, 내가 보기엔 얼룩은 로켓인 것 같다. 예전부터 좋아하는 밴드여서 같이 합주하는 게 더욱 좋다.

3.
  HarrisCam은 갤러리에서 이미지를 불러와서 효과를 적용하는 부분까지 구현했다. 좀 더 세부적인 부분은 다듬어야하지만 큰 기능 부분은 구현이 되어 일정대로 움직이고 있어서 기쁘다. 중요하다고 생각하는 사진 크기 설정 이슈(https://github.com/datakun/HarrisCam/issues/7)에 대해서 고민을 했는데, 윈도우의 디스플레이 설정처럼 가로 맞춤, 세로 맞춤, 채우기, 늘이기 옵션을 주기로 결정했다. 이번 주말에는 사진 크기 설정 이슈를 해결하고 커밋을 해야겠다.

2014년 3월 9일 일요일

2014년 3월 둘째 주, 해야 할 일들 그리고 즐거운 일들

1.
  해야 할 일 목록을 작성해봤다.

<< 2014년 3월 둘째 주, 현재 해야 할 일들 >>

  • Harris Cam
    • 폰에 저장된 사진들을 불러와서 Harris Shutter 효과 적용
    • 다양한 사이즈를 어떻게 다룰 것인가가 문제인 듯, 정책을 세워야 함
  • 얼룩
    • 편곡을 위해 모임
  • 책 읽기
    • 자구와 알고리즘 책(for Java), 매트랩 영상처리
  당장 생각 나는 것은 이 정도다.


2.
  '다양한 예제로 학습하는 데이터 구조와 알고리즘 for Java' 라는 책을 읽고 있는데, 트리 개념을 설명할 때 드는 생각이 있다. 보통 그림과 같이 설명을 하는데, 그림에서는 제일 상단에 있는 노드를 뿌리고 하고, 자식이 없는 맨 마지막 노드를 잎이라고 한다. 그렇다면 그림을 거꾸로 뿌리 노드를 맨 아래에 위치시키고, 잎 노드를 상단에 위치 시켜야하지 않는가 라는 생각을 하게 된다. 또, 노드와 노드를 잇는 간선을 가지라고 하지 않는가?(뭔가 의식의 흐름을 위해 뿌리가 위에 있고, 잎이 아래에 있는 그림을 사용하는 거겠지만...) 마치 바오밥 나무 같은 느낌이 들었다. 그냥 책을 읽다가 든 단상.

3.
  요즘엔 감각적인 뮤직비디오가 많이 나온다. 특히 힙합쪽이 그런 뮤직비디오를 많이 만드는 것 같다. 그 뮤직비디오를 보며 많은 영감을 얻는다. 그 중, 'Rphabet의 Black Suit(Feat, San E)'의 뮤직비디오를 보고 화면이 깨진 듯한 효과가 재미있어서 Harris Cam에 적용하기로 했다. Harris Cam에 새로운 효과를 구현하고 적용하면서 이런 사진 효과들을 만드는 것에 재미를 느낀다는 걸 알게됐다. 최근에는 '다이나믹 듀오의 쌔끈해' 뮤직비디오가 눈에 들어왔다. 예전에 동영상을 편집하고 만드는 아르바이트 하면서도 생각한 건데, 프로그래밍 공부를 하지 않았다면 영상 편집이나 제작에 대해 공부를 했을 것 같다. 페르시아 왕자의 영화적 요소 들은 조던 매크너의 영화에 대한 관심 때문에 만들어졌을 거라 생각해본다. 나도 영상 효과 쪽에 관심이 있다는 걸 이 글을 쓰면서 확인하게 됐다.

2014년 3월 7일 금요일

매트랩을 이용한 디지털 영상처리와 청축

1.
  나를 포함한 4명이서 'MATLAB을 이용한 디지털영상처리' 라는 책을 읽고 있다. 거의 2, 3 주에 한 번씩 모이는데, 모일때마다 한 챕터씩 읽고 있다. 책에 있는 매트랩 예제들도 실습하면서 읽고있다. 디지털 영상처리 분야에서 유명한 곤잘레스의 책 을 매트랩을 통해 실습해볼 수 있는 책이다. 당연히 눈이 돌아가는 수식들이 많이 나온다. 하지만 매트랩으로 실습을 하니 수식을 증명하거나 설명을 제대로 하진 못해도 어느 역할을 하는 구나, 이런 이론이구나 하는 감각이 느껴진다.

2.
  같은 챕터라도 처음 읽을 때와 두 번째 읽을 때, 세 번째 읽을 때 느낌이 다르다. 처음엔 이해가 안되더라도 무조건 읽고 책장을 넘기는 데 주력을 했다면, 두 번째 읽을 때는 어느정도 단어, 문장, 이해가능한 수식들이 눈에 들어온다. 그 다음부터는 읽을때마다 이해가 안갔던, 놓쳤던 부분들도 눈에 들어온다.(물론 제대로 이해하려면 아직 한참이다. 그나마 처음에 들었던 거부감이 많이 줄었다.) 역시 반복 학습이 (그 과정이 지루하긴 하지만...) 효과가 좋은 것 같다.

3.
  '매트랩을 이용한 디지털영상처리'를 다 읽고나면 Open CV를 책을 잡고 공부할 계획이다. 예전에 연구실에서 프로젝트 진행을 C++ 로 다뤄봤었고, 텀 과제를 C#으로 래핑한 Open CV로 만들었었다.(이 때 만들었던(3-4년 전?) 핸드 프레젠터-손 안대고 카메라 앞에 손을 좌우로 움직이면 다음 화면, 이전 화면으로 슬라이드를 이동 시켜주는 프로그램-는 베가의 그것과 비슷하게 닮았다고 생각한다. TV 광고를 보면서 내가 만들었던 프로그램이 생각이 났다.) 이번에는 C나 Python으로 Open CV를 다뤄 볼 생각이다. 뭔가 공부를 할 때는 목표를 잡는 게 좋다는 상곤 행님의 의견을 따라 Open CV로 간단한 프로젝트를 만들어볼까 생각 중이다.(매트랩 영상처리 책을 다 읽으면 6월은 되어야하니 그 이후에 Open CV를 제대로 공부하지 않을까 생각된다.)

4.
  상곤 행님으로부터 청축을 구했다. 짭짭거리는 소리가 너무 좋다! 중고라서 깨끗하게 키보드 청소도 시켰다.(분해를 하고나니 안에 먼지와 머리카락이 후덜덜하더라...) 키캡은 따로 빼서 물에 씻어서 말리는 중이고, 스위치가 있는 바닥은 물티슈와 칫솔로 꼼꼼히 닦아냈다. 내일이 되면 깨끗한 키보드로 일기를 쓸 수 있겠지!!!

2014년 3월 6일 목요일

UI

  상곤 행님이 카메라앱 UI를 보여줬다. 카메라 프리뷰에 셔터 버튼만 있었다. 화면 옆을 쓸면 메뉴가 나오고, 위를 쓸면 또다른 메뉴가 나왔다. 심플한 게 멋졌다. HarrisCam의 목표인 실행하고, 찍고, 공유(저장)하는 것과 맞다고 생각한다. 일부러 정사각형의 사진만 고집했는데, 굳이 그럴 필요 없이. 기기의 화면 전체를 카메라 프리뷰로 보여주고 그대로 저장하는 게 더 좋지않을까 생각해본다.

2014년 3월 5일 수요일

HarrisCam 진행상황

1.
  이미지를 회전 시켰고, 회전 시킨 이미지를 정사각형으로 잘라냈다. 잘라낸 이미지에 Harris Shutter 효과를 적용했고, 적용한 이미지와 잘라낸 이미지들을 파일로 저장했다.

2.
  내일(수요일)이면 Google Maps Android V2 세미나를 진행한다. 분량은 많지 않은데 잘 이끌 수 있을지가 여전히 걱정거리다.

3.
  아이패드 에어 정말 좋다. 이동 중에 한 자라도 더 읽게 된다.

2014년 3월 3일 월요일

Harris Shutter 적용

1.
  HarrisCam에서 가장 중요한 기능인 Harris Shutter 효과를 구현했다. JNI를 사용하지 않고 Java 위에서 비트맵 로우(Raw) 데이터를 논리 연산을 통해 구현해보려고 했으나 실패했다. 안드로이드는 RGB_565 방식으로 비트맵을 저장하고 읽기 때문에 비트맵에 따라 byte 배열의 크기가 제각각이다. 그래서 RGB_565 방식을 RGB_888 방식으로 바꿀 필요가 있는데, HarrisCam 우선 순위에는 기능 구현을 먼저 두기 때문에 나중에 정말 할 일이 없으면 구현해보기로 했다.

2.
  이제 남은 것은 사진을 정사각형으로 자르는 것, 부가 편의 기능(해상도나 보조선 등등), 적절한 필터 효과 찾아서 적용하기, 사진 편집(회전, 자르기 등등) 기능, 공유 기능 그리고 갤러리에서 사진을 불러와서 효과를 적용하는 기능이 남았다. 천천히 하나씩 구현하다보면 6월에는 완성할 것 같다.

3.
  이번 주 수요일에 GDG에서 진행할 MapFragment 세미나 부분을 준비했다. 슬라이드 자료는 완성됐고, 예제 프로젝트도 만들어놨다. 떨지 않고 발표를 잘 하는 것과 시간 배분을 잘 하는 것만이 남았다. 몇 번을 연습해도 사람들 앞에서 발표나 말하는 것은 떨리는 일이다. 머리 속이 하얗게 변하고 발표 현장을 이끌어 나가지 못한다. 이번에는 좀 더 연습을 해서 잘 이끌어야 겠다.

4.
  이번 주에는 책을 더 빨리 읽는 노력을 해야겠다. 출퇴근이나 이동할 때마다 아이패드에 넣은 책들을 읽고 있는데 정말 느리게 읽고있는 게 느껴진다. 읽어야 할 책들이 많다. 틈틈히 읽어야겠다.


2014년 3월 2일 일요일

인정

  자기가 좋아하는, 따르는 사람에게 인정받는 것만큼 좋은 일이 어디있을까? 하지만 그 반대로 무시 당하거나 인정받기 위해 노력했음에도 불구하고 인정받지 못한다면 많이 슬플 것이다. 사람이 사람을 싫어하는 것보다 사람을 무시하는 것이 더욱 슬픈 일이듯이...

2014년 3월 1일 토요일

정리

  정리를 했다. HarrisCam에서 상곤 행님은 나와 따로 길을 가기로 했고, 영상처리 세미나도 아마 상곤 행님이 나가거나 내가 나가거나 둘 중 하나가 될 것 같다. 새로 밴드를 시작한 게 그 이유다. 나는 상곤 행님에게 믿음을 주지 못했고, 결과로 보여주지 못했다.

  HarrisCam은 완성 시킬 것이다. 그리고 공부도 계속 진행 한다.

2014년 2월 28일 금요일

선택선택선택

1.
  어제는 몇 일간 속을 썩이던 문제를 해결했다. 재생 중인 영상의 스냅샷을 저장하는 것이다. 일반 SurfaceView로는 재생 중인 영상의 Bitmap을 받아 올 수 없어서 GLSurfaceView를 사용했더니 바로 해결이 되었다. 구글이 제공한 코드가 아주 유용했다. 덕분에 일이 잘 진행되고있다. 이대로라면 이번주 금요일까지 마무리 할 수 있지 않을까... 생각해본다.

2.
  오늘은 얼룩의 합주를 구경갔다. 기타 형님의 부상 때문에 거의 한 달 동안 합주를 쉬었다고 했는데, 그래서 그런지 조금조금씩 안 맞는 부분이 있었지만 노래들이 다 좋았다. 내 스타일이다. 4월에 EP가 나온다고 한다.

2014년 2월 26일 수요일

쓸데없는 고집

1.
  가끔은 타협(Trade-off)이라는 것을 할 줄 알아야한다. 이왕이면 일을 완벽하게 마무리 지어야지 라는 마음이 강하지만, 상황이나 환경에 따라 그 마음을 포기해야 할 때도 있다. 회사에서 UI 레이아웃 구현 부분을 다른 할 일이 있었음에도 불구하고 퇴근시간이 다 되도록 잡고 있었다.(수영도 못 갔다! 이런...) 이왕이면 아름답게(깔끔하고 완벽하게) 마무리를 지어 다음 사람(이 껍데기를 가지고 작업할 사람)에게 주고 싶었다.
  그 작업은 나중에 그 프로젝트의 UI 부분에서 수정이나 보완이 필요할 때(반드시 필요할 때가 올 것이다. 98% 확률로...) 수월하게 처리하기 위한 루틴이어서 잘 마무리하고 싶었다. 하지만 그로 인해 할 일(당장 내일 있을 사내 교육 준비. 순서를 정해 2주에 한 번씩 하는.)을 못했다. UI 작업은 오늘 꼭 끝내야 하는 일이 아니었음에도 불구하고 잡고 늘어진 덕분에 오늘 끝내야 하는 사내 교육 준비를 늦게 시작했다. 결국 두시간 정도 야근을 하게 됐다. 만약 UI 작업 부분을 TODO 리스트로 남기고, 사내 교육 준비를 먼저 끝냈더라면 퇴근도 빨리 하고, 수영도 갈 수 있었을 것이다.

2.
  또다른 쓸데없는 고집. Harris Cam 아이콘을 무려 3일이나 잡고 있었다. 실제로 포토샵을 실행해서 만든 건 오늘 하루지만, 상곤 행님 말을 들어보면 내가 3일 동안이나 아이콘에 대해서 생각을 했다고 한다.(나는 기억이 잘 나지 않는다...) 주말에 디자인 부분은 개발자인 내가 해결할 수 없다고 판단했음에도 불구하고, 3일이나 신경을 쓴 건 정말 바보같다. 그리고 그 3일 동안 신경 쓴 결과가 그렇게 만족스럽지도 않다. 난 무엇을 위해 3일이라는 시간을 소비했는지 모르겠다. 구현/개선 해야 할 기능들은 산적해있는데, 쓸데없는 고집으로 중요도가 낮은 일에 매달려있던 내가 한심하다.

3.
  아이패드는 파일 전송 부분 빼고 다 좋다. 어느정도 업/다운로드 속도를 보장해주는 무료 클라우드 서비스가 있었으면 내 노트북에 아이튠즈같은 프로그램을 설치할 이유가 없었을텐데 아쉽다.

2014년 2월 24일 월요일

2014년 2월 24일 단상

1.
  회사에서 대표님이 중요하다고 생각하는(안 중요한 게 어디있겠냐만은!) 프로젝트에 참여하고 있는데, 이번 주 수요일까지 UI 레이아웃을 구현하기로 했다. 개인적으로 UI를 디자인하고 구현하는 일이 재미있다. 물론 핵심 모듈을 개발하고 그 것이 잘 돌아가는 것을 확인할 때도 성취감을 주지만, 바로바로 눈으로 확인 할 수 있는 멋진 UI를 구현하는 것도 높은 성취감을 주는 것 같다. 아마도 디자이너가 정성스레 만들어 준(실제 정성이 깃들어있지 않았더라도 꽤 잘 만든!) 리소스가 제 자리를 찾아가며 조화를 이루는 모습이 그 성취감을 느끼게 해주는 것 같다. 덕분에 일의 진행속도도 빨라져서 수요일까지 대략적인 UI 레이아웃 구현을 마무리 할 수 있을 것 같다.

2.
  오랜만에 수영을 갔다. 거의 일주일만인 것 같다.(지난 주 월요일에 마지막으로 수영을 했으니 딱 일주일 만인가...) 그래서 그런지 발차기를 하는 데 힘이 많이 들었다. 이번 주에는 별 일이 없다면 화요일, 목요일에 또 수영을 갈 수 있을 것 같다. 수영하는 게 재밌다.(비록 숨을 쉴 때마다 물을 많이 먹기는 하지만...) 수영장 특유의 락스 냄새도 좋다. 시간이 허락하는 한 계속 수영을 다닐 것이다.

3.
  '페르시아의 왕자 : 개발일지'를 읽고있다. 나에게 많은 자극을 주는 책이다. 그 당시 조던 메크너의 생각을 읽어 볼 수 있어서 흥미롭다. 덕분에 잠들어있던 게임 개발 의욕에 약간 불을 지피는 계기가 되었다. Harris Cam을 완료시킨 후에는 게임을 하나 만들어 보는 것도 고려해봐야겠다.

앱의 UI 디자인은 어렵다. 그리고 고려할 것은 많다.

1.
  점심 시간 즈음 상곤 행님이랑 만나서 간단히 점심을 해결한 뒤(전포동 카페 거리에 '곁집'이라는 가게였는데 점심에는 기본 메뉴 비빔밥에 된장찌개 혹은 김치찌개를 선택하여 주문할 수 있다. 맛있었다.) Harris Cam의 UI에 대해 얘기를 나눴다. 아직은 디자이너를 구하지 못했기 때문에 내가 구성한 디자인을 따르기로 결정했다.(나중에 디자이너 분에게 조언을 구해봐야겠지...)

2.
  안드로이드는 기기마다 해상도가 다르기 때문에 넥서스5을 기준으로 개발한 것을 갤럭시 노트 같이 큰 화면의 기기에서는 너무 휑하게 보이지 않을까 하는 얘기가 나왔다. 이전 Harris Cam은 기기의 해상도에 비례하여 View나 Layout의 크기를 실행 시간에 조절했었다. 새로운 버전에는 소스가 지저분 한 문제도 있고, 실행 시간에는 레이아웃 구성에 대한 부하를 최대한 줄이기 위해 대부분 XML에서 UI 작업을 했다.(카메라 화면 위에 씌우는 프레임은 어쩔 수 없이 실행 시간에 처리했다.) 유저가 태블릿에서 실행한다고 하면 막을 순 없으니 큰 화면에서 실행하는 문제는 일단 고려하지 않기로 했다.

3.
  새로운 Harris Cam의 UI를 본 상곤 행님은 썰렁한 화면에 무언가를 채우기를 바랬다. 갤러리에서 사진을 긁어 온다던지, 카메라 정보(타이머, 플래시 On/Off 등)라던지, 하다못해 상·하의 Bar를 키우기를 바랬다. '그렇게 화면이 썰렁한 가'라는 생각이 들었지만 나중에 갤럭시 노트에 올려보면 나도 그렇게 생각할 지도 모르겠다. 일단 내가 구성한 대로 UI 디자인을 일단락 시켰다.

4.
  지난 주에는 사진 3장을 찍고, 저장하는 것 까지 구현하기로 했다. 여기서 상곤 행님이랑 토론이 있었다. 사진이 저장되는 기본 위치를 지정하는 것이었는데, 나의 주장은 '어느 스마트폰이든 내장 플래시 메모리가 있으니 내장 메모리에 저장하자' 였고, 상곤 행님은 '유저마다 사용하는 외장/내장 메모리 위치가 다르니 유저가 자주 사용하는 위치를 기본 저장 위치로 하자' 였다. 추가로 덧붙인 말은 스마트폰의 데이터를 날려 본 사람들은 외장 플래시 메모리를 주로 사용한다는 것이었다. 그리고, 쉽게 가정을 하지 말라는 것이다. 모든 사람들이 내장 메모리를 자주 사용한다고 생각하지 말라는 얘기다. 들어보니 일리가 있었다. 그래서 사진 기본 저장 위치는 상곤 행님 의견을 따르기로 했다. 거기에 난 좀 더 의견을 냈었다. 앱을 처음 깔았을 때 딱 한 번만 사진 기본 저장 위치를 물어보는 것이다. 외장/내장 둘 중 하나를 고르게 하자는 것인데, 만에 하나(혹은 대부분일수도) 유저가 설명을 읽지않고 계속 다음, 다음, 다음 버튼만 누르게 될 때는 기본 적으로 선택된 위치는 상곤 행님이 말한 위치를 선택되게 하자는 것이다. 이 의견에 상곤 행님은 '너무 친절할 필요는 없다'는 얘기를 해줬다. 우리는 돈을 받고 앱을 만드는 것이 아니므로 우리가 고심한 방법을 사용하고 A/S는 없다는 것이다.(물론! 문제가 명백하고 합당한 이유라면 A/S는 해야 한다!)

5.
  오늘은 왠지 많이 피곤하다. 얼른 사진 저장 부분만 완성하고 자야겠다. 아, 이전 버전에서 문제였던 0.5초가 0.5초가 아닌 문제는 해결이 된 것 같다. Cameara.PreviewCallback 메서드를 잘 이용하면 왠만해선 0.5초를 보장해준다.(간혹 0.6초가 나오기도 한다. 이 정도는 애교아닌가!)

2014년 2월 23일 일요일

첫 번째 일기

1.
  초등학교 이후로 일기를 처음 쓰는 것 같다. 글 쓰는 재주는 없고, 말하는 재주는 더욱 없다. 횡설수설 글이 길어 질 수도 있다. 하지만 이렇게 일기를 쓰는 것으로 글쓰는 재주나 생각을 정리하는 재주를 키울 수 있는 계기를 만들 수 있었으면 좋겠다.

2.
  뜬금 없이 일기를 쓰는 건 아니다. 그렇다고 '졸업을 했으니 이제부터 일기를 써볼까' 하는 마음이 들어서 일기를 쓰는 것도 아니다.(시기상 약간은 그런 마음도 있는 듯 하다. 이틀 전에 졸업을 했으니...) 일기를 쓰는 이유는 조던 메크너의 '페르시아 왕자 개발일지'라는 책을 읽고나서 뭔가 그날그날의 있었던 일, 생각 느낌 등을 기록하고 싶어졌다. 얼마나 오래동안 쓸지는 모르겠지만('Harris Cam' Makeover 프로젝트까지는 계속 썼으면 좋겠다.) 생각나는 한 계속 쓸 것이다.(현재 노트에 손글씨로 일기를 쓴 뒤 블로그에 정리하여 포스팅 한다.)

3.
  오늘은 모처럼 전기 장판에서 만화책을 보면서 보냈다. 정말 겨울에는 이만한 시간 죽이기도 없는 것 같다. 덕분에 몇 시간 타임머신을 타고 이동한 것 같다.

4.
  저녁에는 상곤 행님이랑 간단히 맥주를 마셨다. 서면 '두부공장'에 '모히또 민트'라는 과일 맥주가 있다고 해서 마시러 갔다. 상곤 행님은 '모히또 민트'를, 난 '그린 애플'을 주문했다. 안주로는 두부공장의 추천 메뉴인 '두부 나쵸'를 주문했다. 모히또 민트의 맛은 생각보다 민트향이 약해서 어린이용 치약을 마시는 것 같았다.(나는 어떻게 그 맛을 아는 거지?) 그린 애플은 데미소다 사과맛이 났다.(맥주의 탄산이 데미소다 맛을 완성 시킨 것 같다!) 두부 나쵸는 그럭저럭 먹을만 해서 맥주 두 잔, 두부 나쵸 하나면 둘이서 간단히 한 잔 할 수 있을 것 같았다. 주변의 손님들은 대부분 '닭 가라아게'를 시켰다. 아마도 맥주 있는 곳에 치느님이 빠질 수 없어서리라...

5.
맥주를 마시면서 Harris Cam의 UI를 토론했는데, 개발자 둘이서 머리를 맞대봐야 디자인 및 레이아웃에서는 좋은 아이디어가 떠오르지 않는다는 결론만 나왔다. '진짜' 디자이너를 찾아봐야겠다.

2014년 2월 22일 토요일

블로그의 방향

이 블로그는 일기를 쓰는 용도로 주로 사용할 것이다.