RadioGroup의 생소한 동작

  RadioGroup에서 처음 check를 호출하면 onCheckedChanged가 두 번 연속 호출되는 현상이 나타남. 동일 현상에 대한 SO 답변 소스코드를 보면 그렇게 동작하도록 되어있다고 함 http://www.grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android/widget/RadioGroup.java#RadioGroup.check%28int%29 실제로 따라가보니 리스너가 두 번 호출되는 플로우를 타고 있다. 의도대로 동작하게 하려면 RadioGroup이 아니라 RadioButton의 setchecked를 쓰라고 한다. V에서 click 이벤트 발생 -> P에서 처리 -> P가 V를 업데이트 (click 한 […]

RadioGroup의 생소한 동작 Read More »

Collections.addAll

오늘 문득 이게 궁금해졌다. 종종 List에 다른 원소들을 추가하는 코드를 보면 list.addAll(otherElements) 이런 식이 아니라 Collections.addAll(list, otherElements) 이런 식으로 되어있는 경우들이 있다. 전에는 똑같은 역할을 하는 메서드가 Collections에도 있나보다 하고 지나갔었는데, 오늘은 왠지 똑같은 메서드를 왜 굳이 따로 집어넣어놨을까 하는 생각이 들었다. addAll. 특별할 것 없는 메서드이다. 그런데 왜 Collections에 따로 만들어뒀을까? Collections.binarySearch 같은 뭔가

Collections.addAll Read More »

iOS 앱 설계 패턴

안드로이드 개발자 커뮤니티에서 MVP, MVVM 등의 패턴이 엄청난 관심사로 떠올랐다가 열기가 식어갈 무렵 iOS 개발도 시작하게 되었다. iOS 개발자들 사이에서는 어떤 패턴이 유행하는지 검색하다가 VIPER라는 패턴을 발견했는데,  이 동네도 MVP, MVVM이 한 번 휩쓸고 지나갔고 가장 최근 등장한 것이 VIPER 패턴인 것 같은데 현재 프로젝트에 한 번 적용해볼까 하는 생각이 든다. MVP 패턴을 이야기할 때

iOS 앱 설계 패턴 Read More »

Fastlane. 시작한 김에 PR까지.

최근 iOS 앱 개발을 맡게 되었다. 아마 iOS 앱 개발을 시작할 때 누구나 그러했겠지만 code signing과 관련된 부분이 지나치게 복잡하다고 느꼈다. 처음에는 인증서와 프로비저닝 프로파일(provisioning profile) 자체를 이해해야했다. 인증서는 iOS 개발이라고 해서 딱히 특별할 게 없었는데 프로비저닝 프로파일이 뭔지는 자료를 좀 봐야했다. 프로비저닝 프로파일은 인증서의 공개키, 그리고 해당 앱의 설치가 허용된 기기목록에 관한 정보를 담고

Fastlane. 시작한 김에 PR까지. Read More »

워드프레스로 다시 시작

마크다운 문법이 좋아서, 꾸밈요소에 신경쓰지 않고 글을 쓸 수 있을 것 같아서 jekyll로 블로그를 시작했었는데, 글쓰기에 온전히 집중하기가 어렵다는 생각이 들었다. 특히 이미지 하나 넣으려면 잔손이 많이 가는 느낌이다. 게다가 자주 쓰는 기능이 아니어서 매번 검색해서 찾아보게 된다. 그리고 드래프트를 비공개상태로 작업하기가 번거롭다. 서버에서 직접 작업하면 레이턴시 때문에 편집할 때 답답하고, 로컬에 두자니 맥북과 데스크탑에

워드프레스로 다시 시작 Read More »

AAD(Associate Android Developer) 합격

오늘 새벽에 합격을 알리는 메일이 왔다. 응시 후기는 여기. 아래 뱃지를 클릭하면 자세한 정보를 볼 수 있다. exit interview는 화상통화로 진행된다. (물론 영어로 ㅎㅎ) 안드로이드 관련 상식을 몇 개 물어보긴 했지만 주된 목적은 시험을 실제 본인이 치렀는지를 확인하는 정도인 것 같다. 호기심에 질러보긴 했는데 막상 지나고나니 별 거 없고 허무하다; 이 자격을 취득한 사람이라면 확실히

AAD(Associate Android Developer) 합격 Read More »

Associate Android Developer 응시 후기

Update 2017-03-25: 합격 통보 받았다. 합격 후기 Update 2017-03-21: 조금 전에 리뷰가 통과되었다는 메일을 받았다. 이제 exit interview만 남았다. 3월 14일에 구글 개발자 블로그에 Associate Android Developer 인증 프로그램에 관한 포스트가 올라왔다. 작년에 소개 영상을 보기는 했는데 그동안 완전히 잊고 있다가 이 포스트를 보고 생각이 났다. 사실 이쪽 업계 종사자들은 대체로 자격증을 포함한 각종 능력평가를

Associate Android Developer 응시 후기 Read More »

안드로이드 스튜디오 타겟 전환 단축키

어느 날 Tip of the day에서 실행 타겟을 바꾸는 단축키를 봤다가 유용한 것 같아서 기억해둬야지 했는데 며칠 새 잊어버렸다. Tip of the day를 다시 열어서 아무리 next를 눌러도 안나오고, 인터넷에서 android studio shortcut 등으로 아무리 검색해도 나오지 않아서 좌절. 그런데 디버깅하다가 우연히 다시 발견하게 되었다. Ctrl+Alt+R 원래는 breakpoint에서 Cmd+Alt+R을 눌러서 계속 진행하려고 했는데 손가락이 살짝

안드로이드 스튜디오 타겟 전환 단축키 Read More »

변경된 .gitignore 적용하기

첫 커밋을 생성하고 나면 나중에 버전관리에서 제외시키고 싶은 파일을 .gitignore에 추가해도 계속 변경상태가 git status에 나타난다. 이런 상황을 몇 번 겪어서 어떻게 해야하는지 대략적으로는 알고 있지만, 자주 쓸 일이 없다보니 매번 다시 검색하고, 이게 그 때 썼던 방법이 맞는지 확인하는 작업이 귀찮아서 확실히 기록을 남기고자 포스트를 작성했다. $ git rm -r –cached . $ git

변경된 .gitignore 적용하기 Read More »

Android NDK로 3rd party 라이브러리 빌드하기

NDK를 사용하는 프로젝트에서 여러 개의 네이티브 라이브러리가 필요한 경우가 있다. 처음에는 jni/  하위 디렉토리에 라이브러리 소스코드를 전부 받아두고 Android.mk 파일을 적절히 구성해서 한번에 빌드해보려고 시도했었다. jni/ Android.mk (project source code…) libraryA/ Android.mk (library a source code…) libraryB/ Android.mk (library b source code…) jni/Android.mk 는 하위 디렉토리를 탐색하고, jni/libraryA/Android.mk 와 jni/libraryB/Android.mk 는 그 디렉토리의 Makefile을 바탕으로 빌드(make)를 실행하면 되지

Android NDK로 3rd party 라이브러리 빌드하기 Read More »