전체 글 61

이슈 대응에 대해 느낀점

🔧 이슈 대응을 하면서 정리한 3가지 기준최근 프로젝트를 진행하면서단순히 개발만 하는 것이 아니라 이슈를 어떻게 다루느냐가 더 중요하다는 걸 느꼈다.그래서 현재는 아래 3가지 기준을 가지고 이슈를 대응하고 있다.1️⃣ 정말 이슈인가? (재현 가능 여부)컨버전 과정에서는 특히실제 해외 구매 시스템의 업무 프로세스를 완전히 이해하기 어렵다.그래서 멕시코 현지에서 이슈가 올라왔을 때,가장 먼저 확인하는 것은 **“이게 정말 이슈인가?”**이다.사용자의 업무 프로세스 미숙지인지단순 데이터 문제인지실제 시스템 오류인지이걸 구분하지 않으면, 불필요한 디버깅에 시간을 쓰게 된다.결국 이슈는 반드시 재현 가능해야 한다.재현되지 않는 문제는 원인을 찾기도, 해결하기도 어렵기 때문이다.2️⃣ 근본적인 원인은 무엇인가?문..

현대위아 해외법인 멕시코 출장 후기

약 2주간의 출장 후기 (26.02.07 ~ 26.02.22)미국 샌프란시스코를 경유해서 갔기 때문에 오고가는 시간이 4일이나 걸렸다.. 흑흑멕시코 몬테레이라는 도시에 현대위아 해외법인이 있다.이곳에는 현대위아뿐만 아니라 모비스, 트랜시스 등 여러 현대 계열사들이 함께 위치해 있다.📍 몬테레이 첫인상솔직히 말하면, 생각했던 것보다 훨씬 위험하다는 느낌을 받았다.관광 목적으로 방문하기에는 다소 부담스러운 환경이고,멕시코를 여행한다면 칸쿤이나 멕시코시티 같은 관광지 위주로 다니는 게 더 안전할 것 같다.물가는 전반적으로 비싼 편이었고,출퇴근 시간에는 도로가 꽉 막혀 이동이 쉽지 않았다.치안에 대한 이야기도 많이 들었는데,식당에서도 개인 소지품을 테이블 위에 두면 금방 사라질 수 있다고 할 정도였다.물론 내..

환율 달러 전환 일지

2026/01/19(월) 환전 ~ 2026/01/28(수) -> 현재 약 853달러 다시 꺼냄(-27,300원 손해) # Why 1. 너무 고점에 환전 2. 급하게 쓸 비용을 예상 못하고 전부 환전 3. 이재명 , 트럼프의 발언 및 엔화 강세 4. 원화 약세라는 공포가 심리적으로 너무 내 마음에 많이 반영 됨. 5. 멕시코 출장 비용 결제 등 급히 써야 될 비용을 예상 못함.(미국 경유시 24시간 대기 숙소 예약 비용 42만원 급 지출 비용 발생)# 결과 1480원 -> 1420~1430원으로 내려감 # 반성해야 할 점 -> 달러 저점 및 고점 파악, 그래프로 어느정도 예상 변동 파악할 것 -> 환전시 부분 환전 할 것 -> 어느정도 원화 비상금을 마련 할 것 -> 달러가 강세여도 짜피 미장으로 환..

잡다한것들 2026.01.28

현대위아 해외 구매 시스켐 웹 컨버전 프로젝트를 진행하며

https://to-be-converter.netlify.app/ tobe-converter to-be-converter.netlify.app 해외 구매 시스템 Polymer 7 → 9 변환 프로젝트 회고이번에 참여한 프로젝트는 자동차 부품 해외 구매 시스템을 다루는 작업이었다.해외 구매 사이트를 통해 자동차 관련 부품의 재고와 수량을 조회하고, 구매를 신청하는 시스템이다.기존 시스템은 EMRO에서 개발한 Polymer 7.0(AS-IS) 기반이었고,이를 Polymer 9.0(TO-BE) 버전으로 변환하는 작업이 프로젝트의 핵심 목표였다.담당 범위와 프로젝트 규모해외 구매 시스템은 멕시코 / 중국 두 국가로 나뉘어 있었고,그중에서 나는 멕시코 시스템을 전담하게 되었다.문제는 규모였다.페이지 수: 수백 개..

SignConfig Key 서명 누락 시 생긴 이슈

APK 설치 실패 이슈, 원인은 코드가 아니었다APK를 협력사에 전달한 직후, 다급한 연락이 왔다.❌ 설치 실패: 앱이 설치되지 않았습니다 (App not installed)❌ INSTALL_PARSE_FAILED_NO_CERTIFICATES❌ APK is not signed 순간 머릿속이 복잡해졌다.“혹시 내가 수정한 코드 때문에 문제가 생긴 건가?”“빌드 옵션을 잘못 건드렸나?”별의별 생각이 다 들던 와중에, 가장 기본적인 곳을 다시 확인했다.문제의 원인: Release APK에 서명이 없었다build.gradle을 확인해보니 SigningConfigs가 설정되어 있지 않았다.Android에서는 릴리즈용 APK를 설치하거나 배포하려면 반드시 서명(Signing)이 필요하다.개발 중에는 debug.ke..

안드로이드 개발자의 웹 개발 후기

SI 개발 업무의 장점은 모바일뿐만 아닌 다른 여러 가지 분야의 개발도맡을 수 있다는 것이다. 따라서 안드로이드 플젝이 아닌 웹 플젝도 담당하게 됐는데(물론 혼자 하는 것은 아니지만..)대표적인 웹 프레임워크 중 Vue.js로 호텔 관련된 사이트를 유지보수하면서 느낀 점을 공유하고자 한다. # 모바일 개발자로서 웹의 장점지금까지 모바일만 개발해 온 나로서 웹을 해보니 느낀 장점은 웹의 배포가 너무 쉽다는 것이다.앱의 경우, 플레이스토어에 AAB를 배포하고 심사받는 과정이 있어서배포까지의 과정이 너무나 복잡하다. 또한 사용자 측면에서도 변경사항이 생기는 경우,지속적으로 앱을 업데이트 해줘야 하는 귀찮음이 있다. 하지만 웹의 경우 변경사항과 이슈 해결을 반영하고 싶으면 FTP를 통해 build 한 dis..

프로젝트 2025.06.15

Clean Architecture에 대한 고찰 [3]

# Clean Architecture 과연 좋은 아키텍처인가?우리나라 특성상 유행되는 것이라면 순식간에 번지는 경향이 있다.특히 클린 아키텍처 같은 경우, 기업들도 많이 선호하고,아키텍처 사이들 중에서도 선호되는 아키텍처이기 때문에유행처럼 번지는 경향이 많다. 필자도 포트폴리오를 만들기 위한 프로젝트를 전부 클린 아키텍처로 구현한 경험이 있다.하지만 소규모 플젝 같은 경우에도 클린 아키텍처로 구현하는 것이 과연 좋은 것일까?절대 그렇지 않다. 챗지피티한테 클린아키텍처의 장점과 단점을 물어보니 이렇게 답변해 주었다. ✅ 장점관심사의 분리 (Separation of Concerns)UI, 비즈니스 로직, 데이터 접근 코드가 명확하게 분리되어 유지보수가 쉬워짐.기능 추가나 수정 시 다른 계층에 영향을 최소..

Clean Architecture에 대한 고찰 [2]

# Mapper 존재에 대한 의문 회사에서 단독으로 클린 아키텍처[로 프로젝트를 진행할때 제일 많이 했더 실수가 고귀한 Domain에 Serialzable 즉 DTO를 적용했던 것이였다. import com.google.gson.annotations.SerializedNameimport java.io.Serializabledata class UserResponse( @SerializedName("id") val id: Int, @SerializedName("name") val name: String, @SerializedName("email") val email: String) : Serializable 이걸 Domain에 넣고, 클린 아키텍쳐라고 구현하고 있으니 나중에 ..

Clean Architecture에 대한 고찰 [1]

클린 아키텍처는 소프트웨어 시스템을 관심사 분리 (Separation of Concerns) 원칙에 따라 독립적이고 유지보수 가능하며 테스트하기 쉽게 구성하기 위한 설계 철학입니다.로버트 C. 마틴 (Uncle Bob)이 제시한 이 아키텍처는특정 프레임워크, 데이터베이스, UI에 종속되지 않는 시스템을 만드는 것을 목표로 합니다. 그렇단다...어떤 프로젝트를 하던지 하도 클린 아키텍처란 키워드가 필수적으로 등장하고글을 작성하고 있는 현 시점에서는 잘 모르겠으나,한때 Clean Architecture가 굉장히 유행처럼 번지던 시절이 있었다. 실제로 회사에서 개인 프로젝트로 클린 아키텍처를 적용하며어떤 실수가 있었고, 적용하며 느낀 점을 공유하고자 한다. # Presentation Layer에 대한 이..

AnimatedFloatAsState로 애니메이션 구현하기[3]

3. 투명도 움직임과 크기뿐만 아니라 View의 투명도도 설정할 수 있었다.동영상을 보면 알 수 있겠지만, 버튼을 누를 경우 다음 depth 화면으로 이동하는 순간점으로 된 카테고리가 중앙에서 튀어 나오는 것을 볼 수 있다. 카테고리 같은 경우 크기는 고정되어 있지만 fade-in, out 효과가 있기에다른 요소인 크기, 움직임과 마찬가지로 State인 alpha 값을 조정해서 구현했다. var isClicked by remember { mutableStateOf(true) } val alpha: Float by animateFloatAsState( targetValue = if (isVisible) 1f else 0f, animationSpec = tween(durationMillis =..