xain

xain4u.egloos.com

포토로그 마이가든

 


테라 테라 테라중. 생활 : 게임

시작한지는 좀 되었지만,

직장인이라는 좋은 핑계로 아주 조금씩 해오고 있습니다.

종족은 개같은 너구리 축생에, 직업은 정느님이라 불리우는 정령사이고,

두달 가까이 되어가지만 레벨 34의 뉴늅늅늅뉴늅뉴비 입니다.ㅋ


처음에는 이게 뭐야.. 재미있을라나.. 하면서 시작했었는데,

직업을 잘골라서 그런지 사람들이 피똥(?) 엠똥 싸달라고 굽신거리는게 은근 재미있더군요. (이래선 안되는데ㅋ)

같이 하는 친구들도 낳아논 알똥에 울고 웃고..

그런 맛에 하고 있는거 같습니다.ㅋㅋ


일찍이 테라를 시작한 사람들의 말을 들어보면 만렙되면 할게 없다고 하는데

아직은 만렙이 까마득하니 다 올릴때까지 즐겨야겠습니다.ㅋ

테라 개발진들도 언능언능 컨텐츠 채워주길 바라면서요

iOS 4.x 에서의 이상한 스레드 처리방식 개발 : iOS


 얼마전부터iOS 3.x 버전에서 개발된 앱을 4.x 에 맞게 수정하는 작업을 아는분이 부탁하셔서 작업을 하기 시작했습니다.

 아이러니 하게도 보통 상위버전에서 하위버전 앱을 돌리는데 큰 무리는 없는데,

 이 앱은 작동이 큰 문제가 있을 정도로 심각한 상태였습니다.


 앱 특성을 먼저 살펴보니 별도의 디바이스와 Wi-Fi로 통신하여 데이터를 송수신하거나, 원격음악재생(외부 디바이스 자체에 스피커 출력이! @_@)

 또는 앱에서 재생되는 음악을 스트리밍으로 쏘아 외부디바이스에서 실시간 재생을 할수있는..

 조금 특이하지만 흔한 멀티미디어 메카니즘이였습니다.

 이렇다 보니 네트웤이 들어가면서 필연적으로 스레드가 들어가있었는데 이 스레드가 말썽이였던 것입니다.

 스레드 내부에서 화면갱신을 직접적으로 시도. 이는 화면갱신을 하긴 하지만 바로 갱신이 되지 않고 뒤늦게 갱신이 되는 문제가 있었고,

 다음으로 아이폰/아이패드가 슬립모드로 진입하면 네트워크가 끊겨버리는 현상이 있었습니다.

 화면갱신은 로직을 조금만 수정해서 해결할 수 있었지만.. 슬립모드에서 네트웤 끊김은 정말 난감하기 그지없었습니다.

 그래서 분석을 위해 조금 추적을 해보니 슬립모드시에는 메인 스레드를 제외한 서브 스레드들은 퍼포먼스가 떨어지기 시작하고,

 딥슬립으로 진입하면 메인과 서브 스레드들은 거의 퍼포먼스가 없다시피 떨어졌습니다.
 (배터리를 절감하기 위한 처리량 감소? 어댑터 모드에서는 딥슬립모드에 진입하지 않는듯 이상이 없었음)

 이렇게 되다보니 딥슬립모드에서는 네트웤을 메인 스레드에 올려도 아무 의미가 없었습니다.


 그래서 해결방안을 모색하고 실험해보니.. AVAudioPlayer과 같은 미디어 플레이어가 스레드를 어느정도 활성화 (풀 퍼포먼스는 아니지만)

 시켜주는 것을 발견. 백그라운드에서 플레이어를 켜놓고 스레드를 신나게 돌렸습니다. (잘돌아갑니다)


 이렇게 속임수로 해결하긴 했지만.. 살짝 열받는게 애플 이싸람들, 이런 중대한 변경사항이 있으면 리포트를 해주던가 -_-

 아니면 하위 지원을 큰 변동이 없는 내에서 살짝만 해주던가!!!

 한풀이를 해 봅니다.. 에휴.



property의 copy의 유용함 개발 : iOS


 @property (nonatomic, retain) .. 등을 주로 사용하다보니

 다른 프로퍼티 지정자가 있다는 사실을 종종 망각하고 편한대로만 사용하는 습관이 있었다. (특히 고질적 습관)

 우습게도 view controller에서 title 등의 string을 외부에서 받아내어 사용할 경우도 있었는데,

 무의식적으로 retain .. 지정자를 사용해버리고 이걸 외부에서 변경해주어야 하니.. 단순하게 mutable을 쓰곤 했었다.

 (외부에서는 setString ... 등으로 문자열 변경, assign도 있지만 특별한 경우가 아니라면 위험부담이 있으니 가급적 피하는게 좋다)

 이 방법도 아주 틀렸다고 하기에는 어렵겠지만 내부코드에서 빈번히 문자열을 변경할 일이 없다면 mutable을 구지 사용할 필요가 없을 것이다.

 또 iOS SDK 기본 프레임웍에도 네비게이션 컨트롤러등 title을 지정해주는 부분을 헤더로 보면 copy로 지정되어있는 것을 볼 수 있는데,

 그만큼 copy가 이런경우에 적절하다고 생각할 수 있겠다.

아이폰4 정품 번들 범퍼와 충전 케이블 생활 : 일상


 그동안 아이폰과 함께 들어있는 정품 번들 충전 케이블이 아까워서(?) 비상시에 사용하려고 재워놓고ㅎ

 워낙 저렴해서 막사용하기에 좋은 흔히 말하는 중국산 쫩(?)케이블을 사용하고 있었습니다.

 그런데 얼마전 아이폰4용 정품 번들 범퍼를 신청해서 수령받아 장착하게 되었는데요,

 요것이 미묘하게.. 범퍼 아래쪽 케이블 꽂는 부분이 케이블 크기와 비슷하게 홈으로 파져있는데 충전케이블과 딱 맞질 않아서

 꽉 꽂지 않으면 충전이 안되고, 살짝만 건드리면 바로 디스를 걸어버리더랍니다.

 처음에는 원래 범퍼가 이런가.. 생각했었는데, 오늘 어쩌다보니 다른사람의 정품 케이블을 빌리게 되어

 꽂아보니 '딸칵'하는 그리운(?) 걸림 손맛이 느껴지는겁니다.


 ?! 아하. 쫩(?) 케이블이 정품케이블보다 아주 쪼오오끔 커서 그 홈에 완벽하게 들어가지 못한거였습니다.

 이렇게 된 이상 정품 케이블로 간다!!! 읭?


아잉폰4 비밀번호 잠금시 긴급통화 버그 흥미/관심

뉴스로 크게 기사거리로 나왔네요

저도 시도해보니 10중에 8은 손쉽게 재구현 가능했습니다;;

애플에서 어떤 반응을 보일지, 그리고 아잉폰 유저로써는 빨리 해결되었으면 하는 바램입니다.

아래는 실제 버그를 이용하여 전화로 넘어가는 동영상입니다.

http://www.youtube.com/watch?v=RiIOjd9g4TA


버그를 걸고 난 다음에 다시 되돌리는 방법은, 키패드에서 아무 전화번호를 입력하고 통화를 누른후 다시 종료를 누르세요.

1 2 3 4