전체 글 145

[Android] Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.20 (org.jetbrains.kotlin:kotlin-stdlib:1.8.20) and kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20)

🔐 어딘가에서 충돌이나서 생기는 거 같은데, 공식적인 해결방법은 없는 것 같고 구글링하다가 제대로 동작하는 부분을 찾았습니다 :) 하나하나 라이브러리 비교하기에는 무리가 있을 거 같아서 ㅠㅠ 아래의 방법을 따라했습니다 🔑 build.gradle(app)에 아래의 소스를 추가합니다 constraints { implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") { because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib") } implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") { because("kotlin-stdlib-jdk8 is n..

📱 Android 2023.07.22

[Git , SourceTree] GitHub 토큰 발급하기 , cherrypick

버전관리를 위해 사용하는 Git Git의 GUI 프로그램으로는 SourceTree를 썼다 하지만 나는 여러명이서 소스코드를 같이 관리해본 경험이 없기때문에 배워야할게 많다.. 토큰 발급받기 2021년 하반기 이후로는 토큰을 반드시 사용하도록 변경되었다 Github - 프로필 - settings 선택 Developer Settings 선택 developer settings -> generate new Token (classic) 선택 만료일은 필요한 만큼 정하고 , scope는 전체를 체크했다 ⭐️ 토큰 생성 후 꼭 꼭 꼭 저장해두기 CherryPick 원하는 커밋만 가져오고 싶을 때 예를 들어, feat/a에서 2개를 커밋한 후 첫번째 커밋만 가져오고 싶을 때 1. feat/a 생성 후 2개 커밋 2. ..

[kotlin] 가장 가까운 같은 글자

문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다. n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다. a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이..

[Android] Livedata setValue, postvalue

Livedata를 쓰면서 setValue, postValue의 차이점을 명확히 모르고 있었다 둘 다 값을 적용하지만 무슨 차이가 있을까? setValue void setValue (T value) 메인쓰레드에서 호출되는 함수, 메인쓰레드에서 값을 바로 변경한다 공식문서에 보면, setValue에 아래와 같이 설명되어있다 If you need set a value from a background thread, you can use postValue(Object) setValue는 메인쓰레드에서 호출되기 때문에, 백그라운드에서 값을 설정하려면 postValue를 사용해야한다 postValue 백그라운드에서 값을 설정하려면 postValue를 사용한다 안드로이드 스튜디오에서 postValue를 눌러보면 아래와..

📱 Android 2023.06.23

과일 장수 - kotlin

과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다. 한 상자에 사과를 m개씩 담아 포장합니다. 상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다. 과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다.(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다) 예를 들어, k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, 다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들어 판매하여 최대 이익을 얻을..

[Activity] LaunchMode

안녕하세요오 🤟 오늘은 Activity의 LaunchMode에 관해 알아보겠습니다 이게 은근 이름도 비슷하고 헷갈리더라구요 🥲 포스팅하면서 다시 한 번 공부해보는 시간이였습니다 그럼 스탙-! 🔍 LaunchMode 간단히 말하자면 launmode는 말 그대로 Activity가 Task에서 어떻게 실행되는지에 대해 설정하는 부분입니다. 정할 수 있는 속성으론 standard, singleTop, singleTask, singleInstance 가 있습니다 우선 각 속성을 알아보기 전, 아래 2가지에 대해 먼저 알아보겠습니다 📌 Task , 📌 Flag Activity는 FILO order로, 가장 처음에 실행된 Activity는 Root, 마지막에 실행되는 Activity는 Top이 됩니다. (Andro..

💡 Kotlin 2023.06.15

다사다난한 개인 앱 개발기 (ft. 기획 + 디자인 + 안드로이드)

평소 취미가 독서인데, 독서기록 어플을 만들고 싶었다 :) 더 나아가 평소 나의 독서스타일에 맞는 책 추천 등 다양하게.. 더 추가할 예정이지만 우선, 데이터를 쌓아야하기때문에 현재는 독서기록이 위주이다 기획, 디자인, 안드로이드는 내가 담당했고 서버는 친한 개발자 언니가 담당 :) 기획, 디자인은 정말 힘들었다 기획도 크게 2번에 걸쳐서 변경했고, 디자인은 정말 쉴새없이 변경.. T_T 개발기간보다 오래걸렸다 아무래도, 관심이 있는 분야니 아이디어는 차고 넘쳤지만 아이디어에 비해.. 개발자가 하는 디자인이라.. 정말 힘들었다.. 전직장에서는 디자인팀과 서로 아이디어를 엄청 주고 받았어서 피그마에 대해 많이 사용해봤어도 차원이 다르긴 했다..ㅠㅠ 하지만 앞으로 디자이너님들과 소통할 때 도움이 되겠지..?..

[Jetpack] Navigation Component #2 args 전달하기

args 전달하는 건 아주 간단해요 왜냐하면 우리가 1탄에서 사용했던 action.arguments가 Bundle이기 때문이져 :) bundle이라면, put / get을 사용하면 되겠죠 ! nav_graph.xml에서 Design 탭을 누르면 Arguments가 있어요 Add Argument를 누르면 type에서 원시타입 말고도 custom 타입도 가능합니다 :) 진짜 편리한거같아여 Argument를 받을 Fragment에 선언해줍니다 ! testArgs로 Argument를 생성하면 nav_graph.xml에 자동으로 선언되어 있습니다 자 이걸 소스에서 연결해봅시다 MainFragment -> GridFragment로 전달하는 과정입니다 1️⃣ args를 전달하는 부분 (MainFragment) nav..

📱 Android 2023.05.01

[Jetpack] Navigation Component #1 기본 뼈대 만들기

Jetpack에서 Navigation을 한번 사용해보겠습니다 Navigation에 관해선 아래의 공식문서를 참고했어요 https://developer.android.com/guide/navigation 탐색 | Android 개발자 | Android Developers Android Jetpack의 탐색 구성요소를 사용하여 앱에서 탐색 구현 developer.android.com Navigation에는 3가지 Key part가 있습니다 1️⃣ Navigation Graph 모든 네비게이션 관련 정보가 한곳에 모여 있는 XML 리소스 앱을 통해 이동할 수 있는 경로뿐만 아니라 앱 내의 모든 개별 콘텐츠 영역(목적지)가 포함됩니다 2️⃣ Nav Host Navigation graph로부터 목적지들을 표시하는..

📱 Android 2023.04.30

[Jetpack] LiveData와 ViewModel

Jetpack 라이브러리의 Architecture(안드로이드 앱의 아키텍처를 지원하는 데 필요한 기술들을 제공) 카테고리에 속해있는 ViewModel과 LiveData에 대해 간략히 정리해보겠습니다 :) LiveData : 생명주기를 인식하는 observer pattern을 구현하는 데이터 홀더 클래스 데이터 변경 시 UI에 알림을 보내고 Activity, Fragment등 구성요소의 lifecycle에 따라 관찰 가능 🔍 특징 - UI 업데이트에 사용되는 Data들을 쉽게 관리할 수 있다 - 생명주기를 인식해 Data Update를 알려준다 - 안전하게 관찰가능하도록 설계되어서 NPE 방지가 가능하다 - 구성요소 변경(화면 회전 등)의 이유로 Activity 재생성시 이전 상태 저장 ViewModel ..

📱 Android 2023.03.23