핀수로그
728x90
반응형
  • 게시글 대표 이미지 썸네일 주소
    [ Android/Android ]
    [Android] AppUpdateManager 앱 업데이트 확인하기
    2023-12-29 22:37:25
    앱을 사용하다 가끔 업데이트 하라는 팝업을 본 적이 있을 것이다. 앱의 버전을 확인하고, 업데이트가 필요할 경우 플레이스토어로 이동할 수 있도록 기능을 추가해보려고 한다. AppUpdateManager 앱이 자체 업데이트를 시작할 수 있도록 하는 작업을 관리하도록 도와주는 인터페이스이다. 그러니까 인앱 업데이트를 구현하기 위한 클래스인데, 이번에는 업데이트 필요 여부에 관한 것 정도만 확인할 예정이다. 초기화 val appUpdateManager = AppUpdateManagerFactory.create(context) 업데이트 상태 확인 fun getAppUpdateStatus() { // 업데이트 가능한지 확인 val appUpdateInfoTask = appUpdateManager.appUpdate..
  • 게시글 대표 이미지 썸네일 주소
    [ Android/Android ]
    [Android] 권한 요청 워크 플로우
    2023-12-28 22:58:39
    앱을 사용할 때 사용자의 위치에 접근하거나, 미디어 파일에 접근해야하는 경우 권한을 요청하는 다이얼로그를 본 적이 있을 것이다. 오늘은 권한 요청을 위한 작업 순서에 대해 알아보도록 할 것이다. 개인 프로젝트인 WW (기온별 옷차림 안내 어플) 을 개발하며 작성해두었던 내용임을 참고하길 바란다. 앱의 매니페스트 파일에서 앱에 요청할 필요가 있을 권한 선언 특정 비공개 사용자 데이터에 액세스 해야하는 앱의 작업을 사용자가 호출할 때까지 기다림 → 호출했을 때 런타임 권한을 부여했는지 확인 WW의 경우 위에서 선언한 것처럼 ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION 권한이 필요함. -> 위치 권한이다. ActivityCompat.checkSelfPermission 권한 ..
  • 게시글 대표 이미지 썸네일 주소
    [ pinslog/Log.daily() ]
    [Kotlin] Kotlin Destructuring
    2023-12-27 18:36:42
    때로는 객체를 여러 변수로 분해하는 것이 더 편리할 때가 있다. 이를 코틀린에선 구조 분해 할당(구조 분해 선언)이라고 하며, 한번에 여러 변수를 생성할 수 있다. data class Person( val name: String, val age: Int, ) fun main() { val person = Person("David", 30) val (name, age) = person println(name) // David println(age) // 30 } 이는 다음과 같이 컴파일 된다. val name = person.component1() val age = person.component2() 데이터 클래스가 자동으로 componentN() 를 제공하며, 클래스에서 직접 구현하기 위해서는 다음과 같..
  • 게시글 대표 이미지 썸네일 주소
    [ pinslog/Log.daily() ]
    [Kotlin] takeIf
    2023-12-26 22:25:37
    주어진 조건을 만족하는 경우 해당 객체를 반환하는 함수이다. (만족하지 못하는 경우 null을 반환함) takeIf는 단일 객체에 대한 필터링을 도와준다. inline fun T.takeIf(predicate: (T) -> Boolean): T? 주어진 조건 (it.age > 30) 을 만족하는 경우 해당 객체를 반환 그렇지 않은 경우 null을 반환하는 것을 확인할 수 있다. data class Person( val name: String, val age: Int, ) fun main() { val list = listOf(Person("amy", 34), Person("john", 45), Person("tom", 27)) list.forEach { println(it.takeIf { it.age >..
  • 게시글 대표 이미지 썸네일 주소
    [ Do what you want/집단지성의 방 ]
    집단지성의 방 : 두번째 방의 문을 닫으며
    2023-12-25 10:25:11
    집단지성의 방 : 두번째 방의 문을 닫으며 집단지성의 방 : 첫번째 방의 문을 닫으며집단지성의 방 : 첫번째 방의 문을 닫으며 안녕하세요. 핀수입니다. 올해 초 처음 개설했던 스터디 집단지성의 방의 송년회를 오늘 랜선으로 개최했습니다. 이렇게까지 진지하게 할 생각은 없었www.pinslog.com안녕하세요. 핀수입니다. 벌써 2023년이 저물고, 집단지성의 방 두번째 송년회를 개최하게 되었습니다. 아마 우리 셋 중 그 어느 누구도 두번째 송년회를 할 수 있을 것이라고 생각하지 않았을 겁니다. (ㅋㅋ) 그렇게 생각할만 하기도 한 것이, 올해는 다들 업무와 개인적인 삶에 치여 집지방을 작년보다는 풍족하게 꾸려나가지 못했던 것 같습니다. 이번에는 북클럽와 해커톤을 진행했는데요, 개인적으로는 꼭 해보고 싶었던 ..
  • 게시글 대표 이미지 썸네일 주소
    [ pinslog ]
    [아무튼 필사] 7일차
    2023-12-24 21:16:31
    8월에 읽었던 이슬아 작가의 가녀장의 시대 중 일부이다. 이슬아 작가님은 몇년 전 인스타그램에서 알게 되었는데 그땐 한창 나도 글을 좀 써보겠다고 난리(?)치던 시기였터라, 주변 사람들로부터 글 잘 쓴다, 더 써봐라 등등의 이야기를 들어 어느정도 자부심이 살짝쿵 있는 상태였는데..작가님의 글을 읽은 후 다시는 그런 마음을 가지지 않게 되었다. 내가 글 쓰는 행위를 사랑한다는 사실만 인정하기로 했다. 작가님의 글은 쉽게 읽힌다. 그러나 그 안에 놓여진 문장과 단어들은 고르고 골라 엄선된 것처럼 느껴진다. 글을 자유자재로 움직일 수 있는 사람같다. 대단하다. 글은 쓰는 것도, 읽는 것도 사람의 마음을 동하게 할 수 있다. 그런 글을 사랑하지 않기란 정말 쉽지 않다. 오늘로 필사 챌린지가 끝이 났다. 좋은 경..
  • 게시글 대표 이미지 썸네일 주소
    [ pinslog ]
    [아무튼 필사] 6일차
    2023-12-23 11:55:25
    밀려드는 업무, 제때 제때 쳐내지 못하고 이리저리 끌려다니는 내 모습을 한때는 (바로 어제까지도) 꽤나 자조적으로 바라보고, 그럼에도 포기하지 못하고 그 일들에 매달리는 내가 애처롭게 느껴지기도 했다. 주변을 지나는 이들이 ‘뭐 저렇게 열심히 하지?’ 하고 비웃을까봐 겁이 났다. 불쌍해보일 것 같았다. 사랑하는 이에게 한차례 내 속내를 쏟아놓고 나서야 이 흔들리는 마음이 진정되었다. 그리고 본가로 돌아가는 길에 책을 읽는데 어쩜 내 맘을 이렇게 잘 아나 싶은 문구들이 눈에 콕콕 박혔다. 이제 다시 일어설 때라고 말해주는 것 같았다. 수 많은 실패는 늘 나와 함께였다. 더 이상 겁낼 것도 없다. 힘내자! 6-7월 쯤 읽었던 책이다. 책을 읽고 메모해두었던 것까지 함께 가져와봤다. 더운 날 땀을 흘리며 최선..
  • 게시글 대표 이미지 썸네일 주소
    [ pinslog ]
    [아무튼 필사] 내 코드가 그렇게 이상한가요? 5일차
    2023-12-22 23:01:59
    5장 응집도 : 흩어져 있는 것들 5.5 매개변수가 너무 많은 경우 매개변수가 너무 많은 메서드는 응집도가 낮아지기 쉽습니다. 게임의 매직포인트(MP)를 예로 설명하겠습니다. PRG 같은 게임에는 매직포인트라는 개념이 있습니다. 이와 관련해 다음과 같은 사양이 있다고 합시다. 마법을 사용하면 매직포인트가 일정량 감소합니다. 회복 아이템 등을 사용하면 매직포인트가 일정량 회복됩니다. 매직포인트에는 최댓값이 있습니다. 매직포인트는 최댓값까지만 회복될 수 있습니다. 일부 장비는 매직포인트 최댓값을 높이는 효과가 있습니다. 설계를 따로 생각하지 않으면, 코드 5.23과 같은 로직이 만들어지기 쉽습니다. /** * 매직포인트 회복하기 * @param currentMagicPoint 현재 매직포인트 잔량 * @pa..
728x90
반응형