본문 바로가기

안드로이드48

주니어 개발자가 DTO 설계에서 놓치기 쉬운 실수들 1. DTO란?2. 문제가 발생한 배경3. 서버와 DTO를 일치시켰는가?   3-1. 서버는 모델을 분리, 클라이언트는 통합하는 경우   3-2. 서버는 모델을 통합, 클라이언트는 분리하는 경우4. 네이밍이 명확한가?   4-1. 어떤 액션에 필요한 모델인지 명시하자   4-2. 모델 안의 내용은 변경될 수 있음을 염두하자     1. DTO란?인터넷에 검색하면 나오는 DTO의 정의는Data Transfer Object. 데이터 전송 객체를 뜻한다. 예를 들어 클라이언트가 API를 호출해서 Response를 받을 때의 객체를 DTO라 부른다.계층 간의 데이터 교환을 위해 사용하는 객체인 것이다.위 예시에서는 서버와 클라이언트가 데이터를 주고받을 때 사용하는 객체라고 표현한 것이고.. 아무튼 정의는 이런데.. 2024. 10. 19.
신입 개발자가 처음으로 사고친 썰 그날은 왠지 코딩을 하고 싶은 날이었다. 누구나 그렇듯 매일 나도 컨디션이 오르락 내리락 하고 공부를 해야겠다는 자극 또한 매번 다르게 느낀다. 아마 그날은 그 주기가 적절히 겹쳤을 때 컨디션도 좋은데 공부에 대한 자극 또한 상한가를 쳤을 때였다. 회사에 가서 코딩 좀 해볼까? 처음에는 카페에 가서 코딩을 할까 생각했다. "어라? 근데 생각해 보니까 회사에 가면 에어컨도 빵빵하고 눈치 안 보고 오래 있을 수 있잖아?" (주말이었기 때문에 회사에는 사람이 없었다) 알고 있다. 주말에 자진해서 회사를 가는 바보가 어디 있을까? 하지만 말했듯이 내 컨디션과 공부자극이 최대치였기 때문에 가능했다. (이때 이 미친 짓을 멈췄어야 하는데... 🤦🏻‍♂️) 사람도 없겠다 노래를 빵빵하게 틀어놓고 신나게 코딩을 했다... 2023. 11. 11.
결제 구현 중 productDetailsList가 empty list를 받아오는 이유 1. 증상 2. 원인 및 해결 방법 2-1. 타이밍 이슈 2-2. 플레이 콘솔에 상품을 제대로 등록했는가? 2-3. 패키지명이 일치하는가? 1. 증상 요즘 구독 결제 기능을 개발하고 있는데 플레이 콘솔에 등록된 상품 정보를 불러오지 못하는 이슈가 있었다. 코드를 정확히 짚어서 말해보자면 private fun querySubscriptionProductDetails() { val params = QueryProductDetailsParams.newBuilder() val productList: MutableList = arrayListOf() for (product in LIST_OF_SUBSCRIPTION_PRODUCTS) { productList.add( QueryProductDetailsParams... 2023. 11. 2.
세상에... 소수점 대신 콤마를 쓰는 나라가 있다니! 지금 충전 기능이 안 된대요! 평화로운 어느 날, cs 채널에 외화 충전이 안된다는 문의가 들어왔다. 새로운 버전 앱을 배포한 지 얼마 안 되어서 설마 이번 버전에 문제가 있나 했지만 아무리 생각해 봐도 코드에는 문제가 없었다. 만약 문제가 있다면 다른 사용자들도 똑같은 증상이 있었을 텐데... 우리 팀은 사용자분께서 보내주신 화면 녹화 파일을 계속 돌려보았다. 한참을 보다가 사수 개발자분께서 한마디를 내뱉으셨다. 어? 여기가 왜 콤마로 되어있지? 사용자분의 앱 화면에는 예를 들어 1,400.23 이라고 적혀있어야 할 값이 1.400,23 이라고 적혀있었다. 소수점과 콤마 위치가 바뀌어있었던 것이다. 그래서 검증 로직을 통과하지 못했던 것 (녹화 화면을 보고 이를 알아챈 사수님도 눈썰미가 정말 대박이신 .. 2023. 10. 31.
뭐? 앱을 강제로 가로로 돌릴 수 있다고? 어라? 우리 앱은 가로모드를 지원하지 않는데... 어느 날 Firebase Crashlytics에 비정상 종료 이벤트가 올라왔다. 로그를 쭉 읽어보니 특정 페이지에서 앱을 가로방향으로 돌렸을 때 발생할 수 있는 Exception 이였다. 우리 회사 앱은 가로 방향을 지원하지 않기 때문에 고려하지 않았던 부분이었다. 정말 이해할 수 없었다. 왜냐하면 우리 앱은 세로방향으로만 사용할 수 있도록 되어있기 때문이다. 대체.. 이 사용자들은 우리 앱을 가로로 어떻게 돌린 거지????? 발생할 수 없는 상황이라 어떻게 문제를 해결해야 하나 고민하던 도중 단서를 하나 발견할 수 있었다. 바로 비정상 종료를 겪은 사용자들이 전부 갤럭시 폴드를 사용하고 있었던 것! 그래서 폴드라는 단서를 기준으로 원인을 찾기 시작했다... 2023. 10. 29.