워드프레스로 다시 시작

마크다운 문법이 좋아서, 꾸밈요소에 신경쓰지 않고 글을 쓸 수 있을 것 같아서 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 명령은 파일을 삭제하고, 그 삭제된 …

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

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

NDK를 사용하는 프로젝트에서 여러 개의 네이티브 라이브러리가 필요한 경우가 있다. 처음에는 jni/  하위 디렉토리에 라이브러리 소스코드를 전부 받아두고 Android.mk 파일을 적절히 구성해서 한번에 빌드해보려고 시도했었다.

jni/Android.mk 는 하위 디렉토리를 탐색하고, jni/libraryA/Android.mk 와 jni/libraryB/Android.mk 는 그 디렉토리의 Makefile을 바탕으로 빌드(make)를 실행하면 되지 않을까 하는 생각이었다. 결론부터 말하자면 그런 거 안된다. 소스코드를 바로 받아서 그대로 둔 상태에서 Android.mk만 만든다고 해서 …

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

Android Studio에서 JNI 빌드하기

우선, https://codelabs.developers.google.com/codelabs/android-studio-jni 여기에 속아선 안된다! 아직 Android Studio에서는 공식적으로 지원하지 않는 것으로 생각하는 게 정신건강에 좋다. 오로지 android ndk를 위해서만 작성한 코드만 있다면 상관없지만, 3rd party 라이브러리같은 걸 Android Studio에서 소스 컴파일 해서 사용하는 것은 불가능하다. gradle 파일에 task를 추가하는 식으로 사용하는 것이 가장 효과적이다. 이 포스팅에서는 다음과 같은 방식을 추천한다. 디렉토리 구조

Gradle …

Android Studio에서 JNI 빌드하기 Read More »

gradle.properties 파일을 지역적으로 관리하기

각종 빌드 옵션이나 외부 프로젝트 경로를 gradle.properties 파일에 설정해두고 build.gradle에서 이를 참조하도록 설정하면 빌드를 관리하기가 편하다. 그러나 여러 명이 다양한 환경에서 개발하게될 경우, gradle.properties 파일이 버전관리 시스템에 들어가면 매우 불편한 상황이 생긴다. 2명의 개발자가 어떤 외부 라이브러리 프로젝트를 참조하기 위해 ext_lib_path라는 property를 아래와 같이 설정해두고 작업을 한다고 가정해보자. 개발자1: ext_lib_path=C:\Users\dev1\Libraries\ext_lib 개발자2: ext_lib_path=/home/dev2/libs/ext_lib 라이브러리의 위치는 물론 …

gradle.properties 파일을 지역적으로 관리하기 Read More »

BroadcastReceiver 사용 시 유의점

BroadcastReceiver는 onReceive가 처리되는 동안만 존재한다. 즉, onReceive()가 처리되는 도중에 또다시 같은 인스턴스의 onReceive()가 호출되지는 않는다. 매번 새로운 인스턴스가 생성된다. 비동기처리를 통해 결과를 가져오는 작업을 못함 비동기처리가 진행되는 도중 onReceive가 리턴하고나면 BroadcastReceiver 인스턴스는 이미 invalid 상태 API 11부터는 goAsync()를 통해 가능하긴 하다. PendingResult를 가지고 있다가 다 완료되면 PendingResult.finish()를 호출해서 종료 다이얼로그 같은 거 못 띄움 NotificationManager …

BroadcastReceiver 사용 시 유의점 Read More »

Python에서 sqlite로 파일경로 insert 시 인코딩 에러

sqlite3 데이터베이스에 파일 경로를 삽입하니 아래와 같은 에러가 발생했다. sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings. 문자열을 아래와 같이 utf-8로 디코딩하면 해결된다.