본문 바로가기

전체 글

(86)
Debounce와 Throttle, Event 핸들링 본인이 전담해서 운영 중인 어플리케이션은 로그인을 하거나 특정 API를 호출할 때, 서버에 로그를 남긴다.앱 운영을 전담하기 이전부터 있던 고질적인 문제가 있었는데.. 사용자가 로그인을 시도 할 때, 1초도 안되는 시간동안 소수초 간격으로 Api가 연속 호출되는 문제였다.다수의 이용자가 사용하는 서비스이고, 최근 사용자가 늘어가는 만큼, 이대로 방치하면 서버의 과부하가 유발되어 서비스 품질이 낮아질 수 있겠다는 생각이 들었다.마침 최근에 Medium에서 Debounce와 Throttle에 관련된 칼럼을 읽었던 기억이 있어서 적용해 보았고, 이슈를 해결할 수 있었다. 비슷한 이슈를 겪는 사람들에게 기술적 인사이트를 제공할 수 있겠다는 생각에, 관련 내용을 기록해 둔다.Debounce와 Throttle의 개..
24년 5월 3주차 회고 📚 배운 것1. Ktor Client를 좀 더 효율적으로 사용하는 방법을 알게 되었다.Ktor로 HTTP 통신을 구현 할 때 매번 Client를 새롭게 생성하고 통신이 완료된 후 닫아 주는 과정을 반복했다.공식문서에 쓰여진 데로, 매번 Client를 생성할 때, CPU 리소스를 지나치게 사용하는 것을 Profiler로 확인하였다.그래서 Ktor 클라이언트를 앱이 시작될 때 Static으로 생성하여 재사용 되도록 수정했고, 클라이언트 생성에 시간이 소요되지 않아 라운드 트립 시간이 단축되고, 리소스 사용량이 현저히 낮아진 것을 확인했다.2. 파일 수준 변수를 Static으로 생성해도 앱 생명주기 동안 유지됨을 알았다.MutableStateFlow 처럼 Stream도 Static 변수로 선언해도 문제 없어..
Android studio Markdown Preveiw 안보이는 증상 해결 아니 마크다운 Preview가 계속 안되서 구글링 해봤는데 나오는 방법들이 다 안되는거임 해결한 방법 기록 상단 탭 Help -> Find Action All -> "registry"입력 Registry 창에서 cmd+f할 필요없이 바로 "sand" 입력 ide.brwoser.jcef.sandbox.enable 이게 체크가 되어있을텐데 체크 해지 다시 Help -> Find Action -> "Choose"입력하고 "Choose Boot Java Runtime IDE.." 선택 최신버전 JetBrains Runtime JBR with JCEF 선택 -> OK IDE 재시작하면 Preview 표시됨
The compiler option dagger.hilt.android.internal.projectType is not a recognized Hilt option. Is there a typo? 오류 가끔 Hilt를 사용하다 보면The compiler option dagger.hilt.android.internal.projectType is not a recognized Hilt option. Is there a typo?이런 오류가 발생한다. 보통 hilt 설정이나 구성에 문제가 있어서 발생하는 오류인데, 주로 빌드 과정에서 hilt 컴파일러가 이상한 옵션을 받을 때 나타난다. hilt dependency 잘 확인하자.본인은 아래처럼 잘못 작성했던 것을 수정해서 해결했다.kapt("com.google.dagger:hilt-compiler:2.48") // ❌ kapt("com.google.dagger:hilt-android-compiler:2.48") // ✅
그냥 글 쓰는 재능이 없음 누군가에게 도움되는 글은 진짜 못쓰겠다. 당분간은 그냥 개인 노션에 글 쓰는 수준으로 작성해야지 어차피 기록을 위한거지 강의를 위한 블로그는 아니니깐 ㅋ-ㅋ
Foreground Service 구현: 바인딩된 서비스 Foreground Service의 개념은 개념편을 참고 바람 이번 글에서 다루는 예제는 포그라운드 서비스 동작의 이해를 위해 Hilt, Coroutine, Flow 와 같은 고급 기능 사용을 지양하여 작성되었다. 목표는 "위치를 가져오는 Location Service 만들기" 이게 사실 서비스를 설명하기 가장 간단하면서도 편리한 거라 계속 이것만 만들게 되는 듯 하다. 해당 게시글에 사용되는 예제 코드는 gitHub에 업로드 해두었다. [Github: Location_ForegroundService_Sample] GitHub - parade621/Foreground_Service-Location-_Sample: ForegroundService(Location) Sample Code 입니다 Foregro..
[Kotlin] DFS, BFS 기본 구현 DFS와 BFS는 대표적인 그래프 탐색 알고리즘이다. 가장 머리 속에 남아있는 설명은 학부시절 들었던 설명인데, "DFS는 내가 보려는 드라마 시리즈들을 쭉 정주행 하는 것이고, BFS는 한 회씩 두루두루 보는 것이다." 라는 것 기본 구현에 익숙해지면 응용하는 문제들을 해결하는 데에 도움이 되기 때문에, 백지에 바로 작성이 가능해 질 때까지 보는 중.. 📎 백준 1260 문제를 바탕으로 글을 작성한다. Depth-First Search(DFS) 보통 Stack 혹은 재귀를 사용해 구현한다. 각 방법의 기본 구현 코드와 해당 방법을 사용했을 때의 장점을 살펴보겠다. Stack을 사용한 구현 fun dfsWithStack(graph: ArrayList, index: Int) { val visited = M..
[Compose] Custom CameraView 만들기 이미지 업로드 관련 서버가 자꾸 맛이 가는 걸 언제 어디서나 확인할 수 있도록 하기 위해 서비스 중인 앱에다가 PC 없이도 로그를 볼 수 있는 스크린을 만들고 있다. 현재 서비스 중인 앱의 카메라 기능은 전부 XML으로 커스텀뷰를 만들어서 사용 중인데, 요즘 Compose를 공부 중이라 그런지 이번 기능은 괜히 컴포즈로 만들어 보고 싶다는 생각이 들었다. 그래서 한번 만들어 봤다. 일단 사진을 촬영해서 서버에 전송해야하는데.. 진짜 딱 프리뷰-촬영만 만들면 되는데, 갑자기 난독증이 도진건지 설명이 어려운건지 Compose Camera 관련 자료들이 이해하기 넘모 어려웠다. 그래서 여차저차 간단하게 딱 프리뷰-촬영 기능만을 구현한 코드를 기록해 두려고 한다. [❗️주의❗️] 진짜 딱 나만 쓴다는 생각으로 ..