2024/10 12

주기적으로 작업을 모아 처리하는 BatchLoader 구현하기

특정 주기마다 작업을 모아서 실행하는 Batch Loader를 Kotlin으로 구현해봤다. 여러가지 쓸모가 있겠지만, 나는 Batch Loader를 UI에서 목록을 표시하고, 표시된 아이템만 따로 불러오는데 유용하게 사용하고 있다.  아이디어대부분의 아이디어는 이 Typescript BatchLoader에서 얻었다.잠시 이론적으로 짚고 넘어가면 코드 이해가 쉬울 것같다.BatchLoader는 일정 주기안에 일어나는 모든 요청들을 받아서 별도의 Queue에 쌓아둔다. 요청을 받으면 CompletableDeferred를 반환한다. CompletableDeferred는 콜백 기반의 비동기 통신 시 성공, 혹은 실패에 대한 응답을 다룰때 유용한 클래스로, Javascript에서의 Promise와 비슷한 역할을 ..

[안드로이드] IllegalStateException: Storage for [...] is already registered 오류 해결방법

오류 상황ksp 버전을 업데이트하는 도중 다음과 같은 오류가 발생했다.java.lang.IllegalStateException: Storage for [path/to/project/my-module/build/kspCaches/debug/symbolLookups/id-to-file.tab] is already registered at org.jetbrains.kotlin.com.intellij.util.io.FilePageCache.registerPagedFileStorage(FilePageCache.java:410) at org.jetbrains.kotlin.com.intellij.util.io.PagedFileStorage.(PagedFileStorage.java:72) at org...

[Compose] 빨간 점 시스템 만들기

UI에 작게 보이는 빨간 점은 유저에게 이것을 따라 가보라는 작은 넛지를 준다. 카카오톡에서도 내 친구들이 프로필을 업데이트했을때의 빨간 점을 못이기고 클릭했던 경험도 있을것이다.  빨간 점 시스템을 가장 잘 만들고 사용하고있는 쪽이 어딜까? 바로 게임이다!  게임덕후이자 개발자로서 평소에 게임을 하면서도 이건 어떻게 구현했을까, 상태관리 어떻게 하는걸까 감탄/고민을 자주한다. 요즘은 원신을 정말 재미있게 즐기고있는데, 원신은 유저가 빨간 점을 누르면 "원석"(게임 내 중요 재화)이 생긴다는걸 정말 잘 훈련시켜서 은근슬쩍 원신에서 일어나는 모든 이벤트들을 선전한다.  이런 빨간 점 시스템을 안드로이드에서 구현해보기위해, 내가 게임 개발자다...생각하고 자료를 찾아보았다.  유니티 에셋스토어에 올라온 Un..

Jetbrains IDE 커스텀 단축키

Split and Move RightControl + Command + 우현재 창을 오른쪽으로 나누기Split and Move DownControl + Command + 아래현재 창을 아래쪽으로 나누기Stretch Editor to TopControl + Command + K현재 창을 위쪽으로 늘리기Stretch Editor to LeftControl + Command + H현재 창을 왼쪽으로 늘리기Stretch Editor to BottomControl + Command + J현재 창을 아래로 늘리기Stretch Editor to RightControl + Command + L현재 창을 오른쪽으로 늘리기Maximize Editor/Normalize SplitsControl + Command + F현재창..

나/이슈 2024.10.13

[제주 조천읍] 선흘곶 - 쌈밥정식

지난 7월에 제주도에서 먹었던거라 다녀온지는 꽤 되었는데, 올리는걸 깜빡하는 바람에 늦게나마 작성한다. 부모님 모시고 간 곳인데 아직까지도 부모님이 그때 거기 정말 맛있었다고 극찬을 하는 집이다. 쌈밥 정식이다보니 처리속도가 느려서 10-20분정도 대기를 했던 것 같다. 조만간 이사가신다했으니 이제는 더 넓은 곳에서 하시려나~ 우리가족은 정말 모든 반찬을 하나 남기지않고 싹싹 긁어먹었고, 밥을 더 푸는건 무제한이라 나는 반그릇, 아빠는 1그릇 더 먹었다. 밥상이 조화롭다는 말이 참 잘어울리는 곳이다. 아무거나 집어먹어도 잘어울린다.  제주도에 가게된다면 또 가고싶은 집.

K-DEVCON 2024를 다녀와서...

사내 Rust 스터디를 하고있는데, 우연히 Rust 관련 세션이 열리는걸 봐서 같이 공부중인 개발자들과 함께 데브콘에 참석해보게되었다. 모든 세션이 알찼지만, 공유하면 좋을 것 같은 2가지 세션에 대해서만 적어보려고한다.  by 강대명 레몬트리 CTO크게는 "Expired" 기능과,  확률적 False Positive 자료구조 두가지에 대해서 다뤘다. 우리가 정말 편하게 사용하는 라이브러리들을 직접 구현하려고하면 부딫히는 고민들을 이렇게 날먹으로 들을 수 있어서 재미있었다. 특히 Expired 기능 구현관련해서는 레디스의 맛을 본 안드로이드 개발자라, 예전에 비슷한걸 만들어볼려고 했을때 겪었던 고민들과 해결책들이 줄줄이 이어져나오는게 공감갔다... 그 밖에도 BloomFilter라는 흥미로운 자료구조를 ..

나/이슈 2024.10.12

Bruno > Postman Collection Import시 한글 깨짐 해결방법

Bruno는 API Testing Tool로, Postman의 대안 중 하나다. Postman은 유명하고 편리하지만 유료 서비스라 무료로 이용하면 한계가 있다보니 Bruno 또는 Hoppscotch를 선택하기도 하는데, Bruno는 Git으로 형상관리가 되다보니 무료인것 외에도 다른 장점도 존재한다. 하지만 사용하던 Postman Collection을 이전하려고 하면 Alphanumeric이 아니면 모두 -로 표시되어 당황하게된다... 몇개 안되면 그냥 참고 한글로 바꿀 수 있지만 import를 하는 이유는 귀찮아서니까! 이 문제를 해결하는 방법을 공유하려한다. 1. Clone BrunoBruno는 커뮤니티 버전이 오픈소스이기 때문에 https://github.com/usebruno/bruno Githu..