전체 글 504

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..

ManifestPlaceholder : 매니페스트에서 빌드 변수 사용하기

카카오 SDK 연동을 하다보면 AndroidManifest에 APP KEY를 요구하는데, 중요한 Api Key를 보관할때 properties 파일을 별도로 만들어두고 빌드시에 BuildConfig에 변수를 할당하여 사용하는 패턴이 일반적이다. 하지만 AndroidManifest에서 BuildConifg에 접근하는 방법은 없다. 이때 사용하는 것이 바로 ManifestPlaceholder다. 위 Manifest 내용은 카카오 SDK 예시인데, 저렇게 NATIVE_APP_KEY를 가져올 수 있도록 세팅해보자. 안드로이드 프로젝트를 만들면 기본적으로 생성되는 local.properties를 사용해보도록 하겠다. kakao.native_app_key 프로퍼티를 추가해준다....kakao.native_app_ke..

[삼천포] 삼천포 정서방 - 생선구이

꽤 오래전부터 눈독들였으나, 타이밍이 안맞아서 못가보다가 드디어 다녀왔다.50분정도 기다려서 들어갔는데 이 집은 맛을 제외하고서라도 기다리는 손님들에 대한 대우가 좋아서사장님이 정말 외식공부 열심히하셨다는 느낌이든다...ㅋㅋㅋ 여름철에 기다려도 에어컨 빵빵하게 기다릴 수 있게끔 기다리는 사람들을 위한 공간이 아주 크게 마련되어있고, (그래서 모두가 앉을 수 있다.) 오랜 기다림에 대한 대가로 6천원 상당의 코인(?)도 받았다. 이 가게에서 생선이나 기타 특산품들을 사갈때 사용하는 코인이다.  생선구이정식을 시켰는데 여기에는 양념게장, 숯불고기, 명태전, 꼬막도 같이 따라온다.생선구이를 제외하고서라도 나머지 음식들은 각각 전문점을 모두 후두려패는 수준의 맛이다. 생선구이에는 따로 간장이나 찍어먹는 소스같은..

[KotlinConf2024] Kotlin 2.0의 새로운 피쳐들

1. Explicit Backing Fields (명시적 백킹 필드)명시적 백킹 필드가 어떤건지 이해하기 위해서 안드로이드 프로젝트에서 널리쓰이는 패턴의 코드를 살펴보자.class MyViewModel { private val _title = MutableStateFlow("Placeholder") val title: StateFlow get() = _title}title이라는 상태는 ViewModel에서만 수정할 수 있도록 이렇게 캡슐화 할 수 있는데, Kotlin 2.0에서는 훨씬 더 간결한 형태로 이를 표현할 수 있다.class MyViewModel { val title: StateFlow field = MutableStateFlow("Placeholder")}다가오는 ..

Android Room은 어떻게 Flow를 지원할 수 있었을까?

Room의 room-ktx 종속항목을 추가하면 Kotlin Extension과 Coroutine 지원을 받을 수 있게 된다. 이는 가져다쓰는 개발자 입장에서도 굉장히 편리해지는데, 그중에서도 Flow의 지원은 DB내의 데이터가 바뀔때마다 쿼리를 실행해서 결과값을 방출 할 수 있도록 해준다.implementation "androidx.room:room-ktx:$room_version" 데이터의 변화가 일어났을때 이를 감지해서 새로운 Flow를 방출하는 구조를 짜고싶었는데, 문득 Room이 생각나서 내부 구현을 찾아보게 되었다.@JvmStatic public fun createFlow( db: RoomDatabase, inTransaction: Boolean, tableName..

[마인크래프트] 포지 서버 최적화하기 (Optimizing Forge Server)

Forge는 가장 유명한 모드 로더로, 여러 유명한 모드들이 Forge를 이용해 개발되었다. (재미있어서 쓰려고 보면 Forge가 대부분ㅋㅋㅋ) 그런 모드들은 게임에 많은 변화를 주고 하드웨어에 더 좋은 성능을 요구하지만 Forge에는 최적화를 위한 서버 옵션이 다른 모드 로더들에 비해 빈약한 편이다. CPU 선택법마인크래프트는 하나의 스레드만을 사용하는 단일 스레드(Single Thread) 게임으로, CPU 코어 수는 크게 상관없고, 단일 스레드 성능이 뛰어난 CPU를 찾는 것이 좋다. CPU가 초당 몇번의 디지털 신호를 보내는지를 일컫는 단위인 클럭(Clock)이라고 들어보았을 것이다. 따라서, 클럭이 높을 수록 같은 시간내에 더 많은 연산을 수행할 수 있게된다. 클럭이 같더라도 또 하나의 중요하게..