2025/09 12

구글클라우드 결제계정 생성시 '유효하지 않은 전화번호' 오류 해결

문제 발생구글 클라우드에서 결제 계정을 생성하려 했으나, 전화번호 인증 단계에서 반복적으로 오류가 발생했다.오류 양상: 1. 전화번호와 통신사를 입력하고 '인증번호 전송'을 누른다.2. 인증번호가 발송되지 않고 양식이 자동으로 제출된다.3. 유효하지 않은 전화번호 오류 메시지가 나타난다.원인 추적:다른 컴퓨터, 브라우저, 심지어 '시크릿 모드'로 시도해도 동일한 현상이 발생했다.서비스센터나 FAQ에 문의를 보내기도 하고 문제해결 경로를 찾아봤지만 이 같은 사례를 찾을 수 없었다.오류가 아니라 값이 불일치해서 발생하는 문제는 아닐까 의심하게 됐다.진짜 원인: 한국 이용자에게만 존재하는 [실명] 개념구글이 관리하는 [법적이름]과 [실명]이 달라서 생긴 문제 구글 [아이디] 가 gildonghong, [실명]..

error note 2025.09.18

깃 충돌 보고서 (이력분기 💀💀💀 )

📌 문제 발생 및 원인 분석발생 시점: 2025년 9월 12일 17:00 문제 상황: 팀원A가 작업물을 푸시(push)하기 직전 머지(merge) 과정에서 예기치 않은 깃(Git) 충돌이 발생.동시 작업자가 없었음에도 충돌이 발생해 혼란이 발생했고, 다른 팀원들도 연이어 유사한 충돌. 원인 분석: 당일 18:00 추적 결과, 팀원B가 공용 브랜치에 수정 내용을 바로 푸시(push)하여 이력 분기(Diverged History)가 발생한 것이 주요 원인으로 파악됨.이로 인해 팀원들의 로컬 이력과 원격 이력이 서로 달라지면서 충돌이 연쇄적으로 발생.문제를 인지한 후 당일 작업은 중단하고 다음 작업일에 해결하기로 합의. 🛠️ 해결 과정 및 조치해결 시점: 2025년 9월 15일 10:00 ~ 11:30 ..

Git 2025.09.15

깃충돌 대응기록 (동시작업 🤣)

📌 최근 깃(Git) 충돌 현황 및 해결최근 이틀간 두 건의 깃(Git) 충돌이 발생했다. 첫 번째 충돌: 전역 const 키워드 적용 과정에서 발생. 두 번째 충돌: main.dart 파일 동시 수정으로 인해 발생. 두 건 모두 소스 제어 도구의 비교 분석 기능을 활용해 충돌을 해결했다. 해결 과정 자체는 복잡하지 않았으나, 향후 충돌 빈도를 줄이기 위한 예방책 마련이 필요하다. 💡 문제 해석 및 개선 방안깃(Git) 충돌은 팀 협업 과정에서 예상 가능한 자연스러운 이벤트이다. 특히 광범위한 리팩토링이나 main.dart와 같은 핵심 파일을 수정할 때 발생 가능성이 높다. 이러한 충돌을 단순히 개발 프로세스의 오류로 보기보다는, 효율적인 협업을 위한 중요한 피드백으로 인식해야 한다. 개선방안 1) ..

Git 2025.09.10

flutter) Scrollable.ensureVisible 모바일 키보드 자리 문제 해결

Flutter: 키보드에 가려지는 입력창 문제, Scrollable.ensureVisible로 해결화면 하단 입력창이 키보드에 가려짐 → 사용자 경험 저해Scrollable.ensureVisible 적용 → 사용자 경험 향상 기존 방식의 한계ScrollController.animateTo 사용문제점• 부정확한 위치 선정: 실제 포커스된 입력창 보장 불가• 타이밍 불일치: 키보드 애니메이션과 스크롤 애니메이션 불일치Scrollable.ensureVisible 소개특정 위젯의 BuildContext 기반 자동 스크롤 위치 조정 기능입력창이 화면 내 완전 표시 보장구현 방법FocusNode 할당 → 입력창 포커스 감지initState에서 FocusNode 리스너 추가리스너 콜백 내 Scrollable.ensu..

Flutter 2025.09.09

리팩토링 '빅뱅' 금지 ( 너무 많은 컴파일 에러 😫)

리팩토링 '빅뱅' 금지회원 정보를 담은 엔티티인 member 에서 정규화 명목으로 MemberAddress 를 만들어뒀으나 활용도가 낮아 다시 address 필드로 통합하는 리팩토링을 시도했다. member 엔티티는 다른 도메인에서 두루 참조하고 있었기 때문에 해당 코드들에서 다량의 컴파일 에러가 발생했다. 사전에 이를 고지했고 당초 10분 미만 작업으로 해결할 수 있을것으로 낙관했으나 후속작업이 지체돼 프로젝트 일정 전체에 악영향을 줄 것이란 불안감이 커졌고 결국 작업을 원상 복구했다.결론적으로 리팩토링을 너무 우습게 봤다는 생각이 든다.찾아보니 이런 방식을 ‘빅뱅’ 방식이라고도 하며 매우 무식한 방법이라고 한다.미니 프로젝트였으니 망정이지 대형프로젝트였다면 예측하지 못한 사이드 이펙트가 많아질 수 ..

error note 2025.09.05

VScode로 플러터를 개발하는데 필요한 익스텐션

VScode로 플러터를 개발하는데 필요한 익스텐션 생산성 도구Awesome Flutter Snippets - stless + Tab = StatelessWidget 자동완성 Flutter Widget Snippets - 위젯별 코드 스니펫 제공 Dart Data Class Generator - 모델 클래스 자동 생성코드 품질 관리 - Error Lens - Better Comments - Bracket Pair Colorizer 2 - indent-rainbow (들여쓰기) 개발환경 - Material Icon Theme - Flutter Tree (위젯 트리 시각화) 실무 필수 - GitLens ( Git 히스토리 시각화) ..

Flutter 2025.09.05

VSCode 멀티루트 워크스페이스 - 백엔드/프론트 한번에 보기

VSCode 멀티루트 워크스페이스 (Multi-root Workspace) 를 이용해 풀스택 프로젝트 동시에 작업해보자VSCode의 '멀티루트 워크스페이스' 기능을 사용하면, Spring Boot 백엔드와 Flutter 프론트엔드와 같이 물리적으로 분리된 두 개 이상의 프로젝트를 한꺼번에 작업할 수 있다.단계1. 워크스페이스 생성 및 경로 설정① 상단 메뉴 파일(File) > 작업 영역에 폴더 추가...(Add Folder to Workspace...) 항목을 선택.② 두 번째 프로젝트 폴더(예: markit_place_front)를 선택하여 작업 영역에 추가함.③ 파일(File) > 작업 영역을 다른 이름으로 저장...(Save Workspace As...)을 선택하여, 현재 구성된 작업 영역을 .co..

Flutter 2025.09.05

Flutter로컬커머스) 이메일 도메인 리팩토링 작업

◇ 이메일 도메인 리팩토링내부적으로 더 유연하고 확장 가능한 구조 확보, 외부적으로는 사용자의 계정 보안과 편의성을 크게 높이는 필수 기능들을 확보했음.EmailService 비동기 처리:개요: 메인 애플리케이션에 @EnableAsync를 선언하고, EmailService의 sendEmail 메서드에 @Async를 적용했음.목표: 이메일 발송처럼 시간이 걸리는 네트워크 작업을 백그라운드 스레드에서 처리하게 바꿨음. 덕분에 API 응답 시간이 짧아지고 서버 자원 효율이 높아져서, 전체적인 시스템 성능과 사용자 경험 향상.인증 코드 저장소 추상화:작업: 기존의 VerificationCodeManager 역할을 VerificationCodeStore라는 인터페이스로 추상화하고, 기존 로직은 InMemoryVe..

My Project 2025.09.02

Flutter로컬커머스) 비밀번호 찾기 기능 구현

사용자가 비밀번호나 아이디를 잊어버렸을 때, 안전하고 편리하게 계정을 복구하도록 돕는다.비밀번호 찾기(재설정) 기능:개요: "코드 발송 → 코드 검증 및 임시 토큰 발급 → 최종 비밀번호 변경"의 안전한 3단계 프로세스를 구현.목표: 사용자가 비밀번호를 잊었을 때, 이메일 인증을 통해 안전하게 계정을 복구할 수 있는 필수 기능을 제공.구현방법:① JwtUtil을 확장해서, 10분 유효기간을 가진 비밀번호 재설정 전용 임시 토큰(password-reset-jwt)을 발급하고 검증하는 로직을 추가해 보안을 강화.② 관련 DTO 3종(SendPasswordResetCodeRequest, PasswordResetRequest, PasswordResetTokenResponse)과 PasswordResetContr..

My Project 2025.09.02

인메모리 캐시 개념

메모리 내 캐시(In-memory Cache)외부 캐시 없이 앱 메모리 쓰는 캐시의 개념과 동작 방식인메모리 캐시는 지금 돌아가는 앱의 메모리 공간을 그냥 데이터 저장소로 쓰는 방식.인증 코드처럼 빨리 사라지고(Time-sensitive), 사라져도 상관없고(Non-durable), 읽고 쓰는 속도가 엄청 빨라야 하는 데이터에 적합함.이메일인증에서 이게 왜 필요한가?이메일 인증은 사용자가 요청하면 코드를 생성하고, 짧은 시간 내에 이 코드를 검증하는 과정임. 이 작업은 속도가 중요한데 매번 DB를 조회하는 건 비효율적. 인메모리 캐시를 쓰면 더 빠르고 서버 부하도 줄어듬. 유효 시간이 지난 코드는 자동 삭제돼 메모리 누수도 방지됨.구현 절차자료구조 선택 -> 인증코드 저장절차 구현 -> 인증코드 확인절차..

Spring boot 2025.09.02