전체 글
-
코틀린의 컬렉션 확장함수 (2) : filter()Kotlin 2020. 5. 15. 00:41
filter() 코틀린의 컬렉션을 사용하다 보면 가장 많이 사용하게 될 확장함수 중 하나인 filter()는 특정 조건에 해당되는 데이터를 추출합니다. # output [6, 7, 8, 9, 10] # 유의점 위의 예시에서 filter 확장함수에 전달 된 조건은 list의 요소의 개수만큼 반복됩니다. 만약 filter 내부에서 조건식을 제외하고 어떠한 추가 함수를 호출한다면 꼭 고려하여 개발해야 할 것 같습니다. # output 1 2 3 ... 9 10 filterNot() filter() 함수와 반대입니다. 해당 조건에 해당하지 않는 데이터를 추출합니다. # output [1, 2, 3, 4, 5] filterNotNull() list에서 null이 아닌 데이터만 추출합니다.
-
코틀린의 몇 가지 유용한 컬렉션 확장함수 (1)Kotlin 2020. 5. 4. 00:18
forEach() list size 만큼 for문을 처리하며, 배열의 요소를 반환합니다. # output A B C forEachIndexed() list size 만큼 for문을 처리하며, 배열의 요소를 반환합니다. 또한 추가로 index를 반환합니다. # output index:0 it:A index:1 it:B index:2 it:C all() list의 특정 조건을 전달하여, 배열의 요소가 모두 조건을 만족하는지 여부를 반환합니다. # output true # output false any() list의 특정 조건을 전달하여, 배열에 조건을 만족하는 요소가 있는지 여부를 반환합니다. # output true count() list의 특정 조건을 전달하여 해당 조건이 만족되는 요소의 count를 반..
-
[Error] Program type already present 에러 처리Android Error 2020. 1. 8. 17:42
프로젝트 개발 중, 광고 SDK jar 파일을 libs 디렉토리에 추가해서 사용하고 있었다. 몇 일전 SDK의 버전을 높여달라는 요청이 와서 새로운 버전의 jar를 받아 파일을 교체하였다. 프로젝트 싱크 과정에서는 문제가 없었지만, APK를 뽑는 과정에서 Program type already present: [class path] 라는 에러가 발생했다. 이 에러는 클래스가 중복되어 발생되는 종속성 문제로 생각됐다. 구글에 검색을 해봐도 종속성을 제거하라는 해결 방법이 다수를 차지하고 있었다. 하지만, 이 프로젝트의 경우 라이브러리 파일을 교체하다가 발생했기 때문에 찾아본 방법들로 해결되지 않았다. Android Studio에 Build 창에 표시된 에러 내역을 보았다. com.android.builder..
-
3개월 전 작성한 [3개월 지난 Google I/O 2019 참가 후기]개발일기 2019. 11. 20. 14:16
지난 8월에 작성한 글을 링크합니다. 2019년 5월에 참가했던 Google I/O2019 참가가 후기를 미디엄에만 작성했기에 이 블로그에도 남기려 링크로 대체합니다. https://medium.com/cashwalk/google-i-o-2019-%EC%B0%B8%EA%B0%80-%ED%9B%84%EA%B8%B0-64df1214f9b1 Google I/O 2019 참가 후기 화창했던 2019년의 5월은 저에게 있어 잊지 못할 시기가 된 달입니다. 좋은 기회가 생겨 Google의 연중 최고 행사인 Google I/O 2019를 처음으로 참가하게 되었기 때문입니다. 이 포스팅에서는 I/O 19를 참가하며 전체적인 행사… medium.com
-
구글 정책의 문제점 : 앱, 타사 광고, 기기 기능 방해 정책 위반개발일기 2019. 9. 9. 23:17
약 1년 전 서버 개발자인 친구들과 함께 의기투합하여 토이 프로젝트를 완성시켰다. 정말 간단한 앱이었지만 스토어에 업로드했고, 그때부터 지금까지 1년 이상을 운영해오고 있는 작은 서비스이다. 글을 작성하는 현재를 기준으로 DAU 4,000 정도를 유지하고 있는 작지만 우리에게는 큰 서비스이다. 회사생활에 지쳐도 업데이트를 하고 사용자들이 사용하며 앱이 좋다 라는 리뷰를 달아줄 때마다 큰 기쁨과 보람을 얻으며 소소한 즐거움을 느낄 수 있게 해 준다. 하지만 지금은 더 이상 업데이트를 할 수 없을 것 같다. 문제는 7월 중순쯤부터 시작되었다. 한동안 업데이트를 안 했기에 새로운 기능을 추가하여 업데이트를 올렸더니 전혀 뚱딴지같은 업데이트 거절 사유가 도착했다. 바로 앱, 타사 광고, 기기 기능 방해 정책 위..
-
[IDE] AndroidStudio에서 영어 타이핑이 이상해졌다!Android 2019. 8. 26. 01:00
AndroidStudio를 사용하다 보면 단축키를 많이 사용하게 된다. 정신없이 코딩을 하다 보면 갑자기 영어 알파벳이 이상하게 변할 때가 종종 있었다. Log.d("TAG", "Test ABC") //코딩하다보면 갑자기 아래줄 처럼 변한다! Log.d("TAG", "Test ABC") Log.d("TAG", "Test ABC") 아래처럼 문자가 변환되면 Androidstudio에서 인식을 하지 못한다. 이 문제는 다른 IDE들도 마찬가지 일 것이라고 생각된다. 또한 개발영역이 아닌 각종 기능 (웹 페이지 로그인 등..) 범위에 포함될 수 있는 문제이다. 지금 위의 경우처럼 이상하게 타이핑되는 문자를 전각 문자라고 한다. 처음에는 이 키워드를 알지 못해서 해결법을 모른 채, AndroidStudio를 종..
-
[IDE] 원하는 코드블럭을 '접어'보자 - Custom code folding regionsAndroid 2019. 8. 14. 00:03
개발을 하다 보면 메서드 또는 굳이 계속 확인하지 않아도 되는 코드들이 있을 수 있습니다. 그때, 코드들을 접어버리면 어떨까요? 이 기능은 인텔리 J 계열 IDE에서 사용할 수 있습니다. 이 글은 Android Studio에서 코드를 작성했습니다. (다른 IDE에서도 쓸 수 있는지는 잘 모르겠습니다..) 아래 init() 메서드를 예시로 들어보겠습니다. 단순히 a, b, c, d만 선언되어있는 메서드입니다. 메서드는 보통 왼쪽에 보이는 [-] 화살표를 누르면 아래와 같이 접히는 기능은 많은 분들이 알고 계십니다. 그럼 init() 메서드에서 변수 b, c만 접을 수 있을까요? 키워드는 editor-fold입니다. 접고 싶은 코드라인 위아래를 주석으로 처리하여 열고 닫으면 왼쪽에 [-] 화살표가 하나 더 ..
-
[Algorithm] 버전 비교 알고리즘 (Version Compare)Algorithm 2019. 7. 26. 23:39
프로젝트 진행 중 두 개의 버전을 비교해야 할 일이 있었습니다. 단순 버전 코드 비교가 아니고 major.minor.hotfix 형식의 String형 비교였기 때문에, 복잡한 알고리즘은 아니지만 나중에 사용할 수도 있어 기록합니다. 목표 두 개의 버전이 주어졌을 때 비교하여 큰 버전을 반환하시오. 버전은 major.minor.hotfix(1.0.0)의 형태로 제한됩니다. 입력 예시 "1.0.0", "2.0.2" 출력 예시 "2.0.2" 코드