본문 바로가기

TechLog

작업일기.20111209

#. 

최근 BITNA(http://blog.mindinmachine.com/entry/BITNA)의 업데이트 작업을 하고 있다. 업데이트 작업을 하고 있다고 적긴 했지만 프로그램 자체의 업데이트 작업은 끝난 셈이고, 테스트 작업과 함께 홍보에 사용할 컨텐츠를 어떻게 만들면 좋을까 이것저것 궁리 중. 원래는 사용자들 몇 명 모아놓고 사용 중인 모습을 촬영해서 유튜브에 올려볼까 생각하고 있었는데, 디자인 쪽 전공하는 친구와 얘기를 좀 나눠보니 '그렇게 찍는게 제대로 된 영상 얻기는 더 어렵고, 그런 영상으로 과연 홍보에 도움이 되겠는가'라는 결론에 이르렀다. 그래서 허접할지언정 간단한 콘티도 짜고 해서 정식으로 영상을 찍어보자고 생각한 것은 좋았는데, 일단 이 프로그램 자체가 혼자서 갖고 노는 프로그램이 아니다. 그렇다보니 영상을 찍는다고 해도 나 혼자 전체 컨트롤을 할 수는 없고, 여러모로 고난이 예상되고 있다.

뭐 어쨌든, 영상을 찍으려면 iOS 기기가 여럿 필요한 상황. 딱히 기자재에 돈을 들인다는 것도 좀 그래서, 난데없이 중고 장터를 돌면서 아이팟을 열심히 찾고 앉아있다. 하지만 이놈의 아이팟은 뭐 이리 인기가 좋은지 가격도 가격이고 물건을 찾을 수가 없어 걍 ... 어쨌든 오늘은 아이팟 터치 1세대, 2세대를 각각 한 대씩 구입할 수 있었다. 외관은 끔찍하지만 일단 동작은 이상 없는 물건.



#.

내게 아이팟 터치를 판매한 사람은 해킹이고 나발이고 모르는 사람이었던건지, 1세대는 iOS 3.1.3, 2세대는 iOS 4.2.1 버전이 설치되어 있었다. 이번 BITNA 업데이트는 iOS 4.0을 배포 대상으로 잡은 상태라 순정 상태인 아이팟 터치 1세대(혹은 아이폰 1세대)는 무시해야 한다는 것인데 ... 괜시리 오기가 발동해서 프로그램 코드를 iOS 3.x대에 맞게 포팅을 시도하려다가, 이내 포기했다. 프로그램에 포함시킨 광고가 iOS 3.x 대에서는 동작하지 않는다는 건 뭐 그런대로 참겠는데, UI 코드에 대해 갖가지 예외 로직을 덕지덕지 붙여야 해결을 볼 수 있을 것 같았다. 괜히 어설프게 iOS 3.x 지원 기능을 넣자고 삽질하면, 애꿎은 아이팟 터치 1세대 순정 사용자가 iOS 3.1.3도 지원한다는 말에 설레여서 이 앱을 다운받고 빡치는 상황이 닥치지 않을까. 삽질하고 고생하여 욕까지 먹는 것은 내 마음의 평화를 유지하는데 도움이 되지 않는다. 그냥 포기하고 아이팟 터치 1세대를 탈옥시키자.

여튼 좀 살펴보니, 아이팟 터치 1세대의 경우 원래 iOS 3.1.3 버전까지만 업그레이드가 가능한데, 여기에다가 iOS 4.x, 심지어는 iOS 5.x 대까지 설치를 가능하게 해 주는 펌웨어가 있더라: http://www.whited00r.com/ 처음에 설명을 대충 읽어보고 '아니 펌웨어만 있으면 강제로 iOS 4.x로 업그레이드가 가능하다고? 뭐 이런 편리한 물건이!'라고 생각했으나 ... 그런거 없다. 일단 탈옥을 시켜야 펌웨어 설치가 가능하다는 함정. 

그래서 낑낑대고 설치를 해 보았더니, 아아 ... 당했다. 이 물건은 iOS 자체를 업그레이드 시켜주는게 아니라, iOS 3.1.3 기반에서 iOS 4/5의 기능을 사용할 수 있게 해 주는 mod 펌웨어의 일종인 것이었다. 그러니까 ... 윈도우로 치자면 윈도 XP에 비스타 테마를 입혀주는(뭐 테마가 아니라 기능도 실제로 사용할 수 있지만) 그런 종류의 물건인 것이다. 당연히 API 레벨에서 iOS 4.x를 지원하지 않고, 당연히 기존 iOS 4.x 버전 이상에서 호환되는 앱을 설치하는 것도 불가능하다.


요약하면 물건 잘못 샀다는 이야기. 

급하게 사느라 돈을 더 얹어주고 산 셈인데 이 모양이라니 제기랄 ...



#.

BITNA 업데이트를 다시 진행하게 된 가장 큰 이유는 '기존의 사용법이 너무 어려웠으니, 좀 개선해보자'라는 것도 있지만, 실은 다른 이유도 있다. 이껏 오래 구상해놓고 빛을 못 보고 있는(?) Fountain 프로젝트를 널리 알리는데 도움이 좀 되지 않을까 하는 얄팍한 기대심도 또 하나의 이유. Fountain의 애초 목적인 '로컬 네트워크에서 메시지를 다수에게 전파하는 간단한 방식'을 BITNA 또한 필요로 하고 있으니, 기존에 만들어 둔 프로그램을 재정비하면서 Fountain 프로젝트도 홍보하고 ... 뭐 좋은 기회라고 아니할 수 없지 않은가.

기존의 BITNA는 텍스트 형태의 전용 프로토콜을 사용했으나, 지금은 내부를 다 뜯어고쳐 Fountain 프로토콜을 사용하도록 변경되었다. 예전에는 프로토콜에 뭐 내용 하나 추가하려면 이것저것 신경을 써야 했지만, 지금은 메시지 클래스에 프로퍼티를 핸들링하는 코드 몇 줄만 추가하면 프로토콜의 기능 추가하는 것도 어렵지 않게 되었다. 실제 통신 메시지를 (사람 입장에서) 읽기 쉬워진 것은 덤이라고 할 수 있고. 물론 그만큼의 오버헤드가 없는 것은 아니지만, 메시지 송/수신 성능을 높여서 데이터를 주고 받는 방식도 조만간 구현에 착수할 예정이다. (이건 아마 Mug의 다음 버전에 포함될 듯)



#.

어제에 이어서(지금은 12월11일), 결국 BITNA를 iOS 3.1.3에서도 실행이 가능하게 만들어버렸다. 다만 광고 기능을 iOS 3.1.3에서는 어떻게 처리해야 할 지 알 수가 없어서(슬프게도 adWhirl은 iOS 4.x 대에서만 호환이 된다) 광고를 제거했다. iOS 3.1.3을 사용하는 유저는 BITNA 앱에서 광고를 안 봐도 된다! 구현하기 어려운 점도 있고, 안 그래도 아이팟 터치 1세대는 성능이 딸려서 프레임 드롭이 발생하는 상황인데 광고까지 올리면 사람들 빡치지 않을까 염려가 된 부분도 있다. 뭐 아이팟 터치 1세대를 계속 사용하는 사람이 그렇게 많지는 않겠지 ... 않았으면 좋겠다. 

나도 광고 수입으로 배 좀 두들기며 살아보고 싶다 (...)



#.

아이팟 터치를 한 대 더 구입해서, 현재 아이팟 터치 1세대 한 대, 아이팟 터치 2세대 두 대가 구비되었다. (한 대만 더 구하면 된다!) 다른 문제가 생겼는데(아니 사실 알고 있었던 사실인데 구입한 이후에야 생각이 났다) 아이팟 터치 2세대의 경우 UDP 패킷 드롭률이 상당히 높은 편이다. 이 문제는 꼭 아이팟 터치 2세대의 와이파이 성능이 거지같아서 발생하는 것은 아니고, 일종의 호환성 문제라고 할 수 있다. 대표적으로 DTIM 설정과 관련한 문제가 있는데(http://still.tistory.com/73를 참고하시라. 이 경우 myLG070 공유기와의 호환성 문제인데, 다른 AP에서도 종종 발생한다) 뭐 이런 문제가 아이팟 터치 2세대의 경우 가장 심각하다. 반대로 이런 영향을 가장 덜 받는 모델은 (내가 아는 한은) 아이팟 터치 1세대. 단가 문제로 아이팟 터치 1세대와 2세대에는 서로 다른 와이파이 칩셋을 사용하고 있다던데, 그 영향이 아닌가 싶기도 하다. 좌우지간 무조건 싼 거 좋아하면 안된당께.

그래서 케냘도 공유기의 설정만 변경하면 되는데! ... 문제는 현재 사용하고 있는 에그가 DTIM 편집 기능을 제공하지 않는다는 것. 뭐 애초에 바꿀 수 있는 설정이 별로 없다. 어쩌라는거야 (...) 괜히 잘 모르는 사람이 건드릴까봐 옵션을 다 빼버린거 아닌가 싶기도 한데 ... 그럴거면 고급 사용자용 설정 같은 거 좀 넣어주면 될 것을 으으 ...


오늘밤도 이렇게 빡쳐 잠이 든다. 

(개똥벌레 풍으로 불러봅시다)