pinslog
난관봉착
며칠째 알고리즘 고치고 있는데... 서비스 특성상 기존 제공 되는 서비스랑 약간 달라서 레퍼런스도 별로 없고 무엇보다 그냥 내가 똑똑하질 못해서 진전이 없는 것 같아 기분이 땅을 파고 들어간다 상황을 타개할 방법이 뭐가 있을까 겨우 조금 고쳤다고 생각했는데 그래도 아직 갈길이 멀어보인다 근데 진짜 성공 아니 성공의 ㅅ 이라도 보고싶다 마무리 지어서 블로그로 정리하는게 내 소망인데 꼭 이루고 싶다 일 마치고 엄마랑 통화하면서 진지하게 개발 그만둬야하나 한탄하고 있는데 저 멀리서 내가 타야할 버스가 오는게 보여서 미친듯이 뛰었다 그 순간에도 ‘나 저거 탈 수 있을까’ 확신없는 질문만을 던지는 나에게 조금 놀랐다 결국 버스 탔는데 알고리즘도 결국 고쳐서 나에 대한 확신을 가질 수 있었으면 좋겠다

튼튼한 집 짓기
튼튼한 집을 지으려면...자재가 좋아야된다... 벽돌부터 단단해야 될 듯 예전에 짠 알고리즘 너무 엉망이라서 수정하는데 메소드 하나하나에 문제가 숨어 있었다. 이래서 유닛 테스트를 하는구나 하나씩 고쳐나가면서 점점 나아지는 것이 보였지만 처음부터 제대로 짰다면 이럴 일이 줄었겠죠 역시 부딪혀봐야 아픈줄 알고 예방이 필요한 법을 알게되나보다 좋은 경험이었다!
![[Android] compileSdk 32 to 33 issue](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvgRY4%2FbtsyERJvKGN%2FDXllekiL88ofBWXSILK3Kk%2Fimg.png)
[Android] compileSdk 32 to 33 issue
플레이스토어에 업로드 할 것이기 때문에 WW의 타겟버전을 32에서 33으로 변경했다. 그러자 아래와 같은 오류가 발생하였음 We recommend using a newer Android Gradle plugin to use compileSdk = 33 This Android Gradle plugin (7.2.1) was tested up to compileSdk = 32 This warning can be suppressed by adding android.suppressUnsupportedCompileSdk=33 to this project's gradle.properties. The build will continue, but you are strongly encouraged to update you..
![[Kotlin] 반복문 탈출하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchTCyO%2FbtsyuGuYAxE%2FqX6kd2KfsjwXF3BwsxZeXk%2Fimg.png)
[Kotlin] 반복문 탈출하기
for (i in prevLinkIndex until linkList.size - 1) { val link = linkList[i] link.forEach { segment -> if (isLocationOnPath(candidate.latLng, listOf(segment.start, segment.end), 5.0)) { // 후보 값이 존재하는 선분을 찾으면 distance += segment.start.distanceTo(candidate.latLng) break } else { distance += segment.start.distanceTo(segment.end) } } } 중첩된 반복문에서 특정 조건을 만족할 경우 반복문 전체를 탈출하려고 할 때, 다음과 같이 코드를 작성하면 break 부분..
![[Android] 디버그 가능 APK 또는 Android App Bundle을 업로드했습니다. 보안상의 이유로 Google Play에 게시하기 전에 디버그를 사용 중지해야 합니다.](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNcBQJ%2FbtsyuEJegsF%2FMSmZMj5o4CVHyXSmiTF5KK%2Fimg.png)
[Android] 디버그 가능 APK 또는 Android App Bundle을 업로드했습니다. 보안상의 이유로 Google Play에 게시하기 전에 디버그를 사용 중지해야 합니다.
앱 출시 과정 중 debuggable을 false로 지정해야하는 것은 익히 알고 있어서 처리를 해두고 build.gradle(:app) buildTypes { ... release { ... debuggable false ... } } aab를 업로드했는데 계속해서 디버그 가능 APK 또는 Android App Bundle을 업로드했습니다. 보안상의 이유로 Google Play에 게시하기 전에 디버그를 사용 중지해야 합니다. 문구가 뜨며 업로드가 안되는 것이다. 아 도대체 뭐지 하고 별 짓을 다하다가 깨달았다. manifest....! AndroidMenifest.xml
![[Android] bringToFront() in xml](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJnmsv%2FbtsytZmCzWI%2FKBCcQF387qBSRsr7Dspenk%2Fimg.png)
[Android] bringToFront() in xml
어떤 뷰를 레이아웃 가장 최상단에 위치시키기 위해 bringToFront 메소드를 사용한다. xml에서는 어떻게 해당 메소드와 같은 효과를 내는 속성을 줄 수 있을까? 위 사진에 있는 bringToFront()의 설명을 읽어보면 트리에서 뷰의 z 순서를 변경하여 다른 형제 뷰 위에 오도록 합니다. z의 순서를 변경한다고 되어있다. 그래서 translationZ 의 값을 주어 적용했다. android:translationZ="90dp" translationZ 값이 큰 것이 가장 최상단, 그러니까 화면 앞에 존재하게 된다. 공부하며 작성된 글이라 잘못된 정보가 있을 수 있습니다. 말씀해주시면 수정하겠습니다. 감사합니다. References 아래 글을 참고하여 작성 되었습니다. View | Android De..
![[Android] ProgressBar 색상 변경하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFF7TH%2FbtsyumhyVqZ%2FAjgkINQd5m5l70xGCGwNk1%2Fimg.png)
[Android] ProgressBar 색상 변경하기
안드로이드의 위젯 중 진행 상태를 표시하는 프로그래스 바 프로그래스 바의 색상을 변경하려면 android:indeterminateTint="@color/path" 속성을 이용하면 된다. 색상을 코드 단에서 변경하고 싶다면 progressBar.indeterminateDrawable.setColorFilter( resources.getColor(R.color.main, null), android.graphics.PorterDuff.Mode.SRC_IN ) 위와 같이 colorFilter를 적용해주면 됐는데 setColorFilter는 API29부터 지원이 중단되었다. progressBar.indeterminateDrawable.colorFilter = BlendModeColorFilterCompat.cre..

개발에도 체력이 필요하다
안되는 기능을 붙잡고 있으면 체력이 쭉쭉 줄어드는 것이 실시간으로 느껴진다. 아무리 디버깅을 하고 난리를 쳐도 도무지 답이 보이지 않을 때 하면할수록 더 미궁으로 빠지는 것만 같을 때 개발이 스파링이었다면 난 진작에 나동그라져 흰 수건을 던져버렸을 지도 모르는 일이다. 체력이 좋을 때는 적절한 오기가 생겨서 붙잡고 씨름을 하다보면 답이 어렴풋이 보이기라도 했는데 힘이 얼마 남지 않은 지금은 달리기를 한 것도 아닌데 숨이 차고 머리가 지끈거리는 것이 느껴진다. 지치지 않고 묵묵히 답을 찾아가기 위해서는 체력이 필요한 것 같다. 그러려면 몸과 머리에 적절한 근육을 만들어줘야겠지(?) 운동하자!
![[Android] 기존 버튼에 ripple 효과주기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclI5j7%2FbtsypxJWli3%2FSq2LBKvw00ukyOyOwefH81%2Fimg.png)
[Android] 기존 버튼에 ripple 효과주기
다음과 같은 버튼이 있다고 하자, enable 상태에 따라 버튼의 색상 (또는 모양)을 다르게 주기 위해 우리는 drawable을 만들어 사용한다. (사진의 위쪽 버튼은 isEnabled = true, 아래쪽 버튼은 isEnabled = false 이다.) 상태에 따라 색상을 다르게 하고 싶으면 가장 상위 요소로 selector를 사용해야 한다. 그런데 이 상태에서 버튼을 클릭할 때 클릭 효과를 주려면 어떡해야할까? 클릭 효과를 줄 때는 ripple 를 사용해 효과를 적용 했었다. android:color -> 효과의 색상을 의미한다. android:effectColor -> 효과의 보조 색상이라는데 난 확인하지 못했다. 31 이상부터 사용가능하다고 한다. android:radius -> 효과가 발생할 ..
![[Kotlin] 마지막 요소를 제거한 리스트를 얻고 싶을 때](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbx2UKZ%2Fbtsx2M2a8WB%2FLx5OQ4jmfY6DiVTzQQCWjk%2Fimg.png)
[Kotlin] 마지막 요소를 제거한 리스트를 얻고 싶을 때
코틀린의 컬렉션 중 리스트에서 요소를 삭제하는 방법은 다양하다. 이 중에서 나는 마지막 요소를 제거한 리스트를 얻고 싶었다. 이 때 dropLast(n)를 사용하면 된다. 인자로 넘겨주는 n개 만큼 요소가 삭제된 리스트가 다시 반환됨을 확인할 수 있다. val list = mutableListOf(1, 2, 3, 4, 5) val newList = list.dropLast(2) println(newList) // [1, 2, 3]
![[Android] Dialog 외부 영역 터치 가능하도록 설정하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQAalP%2Fbtsxg3LK8OI%2F4TnxE1Ho8k8b9T2x3UFonK%2Fimg.png)
[Android] Dialog 외부 영역 터치 가능하도록 설정하기
안드로이드 다이얼로그를 생성하면 기본적으로 다이얼로그 바깥 영역은 터치할 수 없다. 이를 가능하게 하려면 다음과 같이 플래그를 설정/제거해주면 된다. window?.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL) // 바깥 배경이 불투명해지는 것을 막음 window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) 결과 바깥 영역 터치를 가능하게 하고, 배경이 투명해지도록 설정했다. 터치가 가능한지 확인해보기 위해 버튼에 리스너를 달아 클릭 시 토스트가 뜨도록 해봤다. 버튼이 클릭 되는 것을 확인할 수 있다. 공부하며 작성된 글이라 잘못된 정보가 있을 수 있습니다. 말씀해주시면 수정하겠습니다. 감사합..

요즘에는
두번째 회사에 다닌지도 벌써 7개월이 다되어 간다. 요즘에는 사정상 개발보다는 외적인 일을 활발하게 하고 있는데...(각종 인증) 그래서일까 코드 볼 기회가 생기면 그렇게 소중할 수가 없다. ㅋㅋ 벌써 개발 일을 한지도 1년을 훌쩍 넘기고...2년을 바라보고 있는데 한번씩 뒤를 돌아보자면 똑바른 길을 걸어왔는가에 대한 의문이 들곤한다. 어떤 개발자가 그렇지 않겠냐만은 많은 고민이 드는 것도 사실이고... 이 고민은 나에 대한 의심에서부터 비롯된 것인가..하는 근본적인 고뇌도 빼놓을 수 없다. 암튼 이래저래 고민과 걱정이 많은 시기다. 그럴수록 내가 할 수 있는 것들에 집중해야한다고 생각하기 때문에! 나는 또 내가 할 수 있는 것들을 행하려고 한다. 그렇게 사이드 프로젝트 하나를 마무리 지어서, 플레이스토..