분류 전체보기120 바이브 코딩 첫 실천기: AI와 함께 만든 점심 메뉴 추천 서비스 AI와 함께 만든 점심 메뉴 추천 서비스: What Launch 개발기들어가며이 프로젝트를 시작한 이유는 단순했습니다. 바이브 코딩을 경험해보고 싶었기 때문입니다.AI와 함께 코딩하는 방법을 배워보고 실습하는 시간을 가져보고 싶었고, 그 결과물이 바로 이 프로젝트입니다. "오늘 점심 뭐먹지?" 매일 반복되는 이 고민을 해결하는 간단한 웹 서비스를 만들면서, Cursor의 AI 어시스턴트와 함께 개발했습니다.단순한 프로젝트지만, 바이브 코딩을 알아보고 처음 실천해본 프로젝트입니다.무엇을 만들었나What Launch는 위치와 음식 장르를 입력하면 주변 식당 중 하나를 랜덤으로 추천해주는 간단한 웹 서비스입니다.위치 입력 (주소 또는 장소명)음식 장르 선택 (한식, 일식, 중식, 양식, 기타, 또는 랜덤)주변.. 2025. 11. 15. [AWS ECR] no basic auth credentials 에러: GitHub Actions 배포 중 발생 문제 상황Github Actions 로 CI/CD 를 구축하고 있었습니다.스프링 부트 프로젝트를 Docker Image 로 만들어서 ECR 에 푸시하고, EC2 는 ECR 에서 pull을 하는 방식이었습니다.EC2 에서 aws-ecr-credential-helper 를 설치해, ECR 접근 시 로그인 과정을 자동화했습니다.| 배포 스크립트...- name: SSH로 EC2에 접속하기 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.EC2_HOST }} username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} script_stop: true scri.. 2025. 8. 12. QR코드로 시작된 교회 성경학교 웹사이트 이야기 강습회에서 시작된 계기지난 여름, 교회 성경학교 강습회에 참석했을 때의 일입니다.강습회에서 QR코드를 활용한 모습을 보게 되었는데, 간단한 공지등 안내사항을 QR코드를 활용한 모습이 인상적이었습니다.다른 교사분들도 같은 생각을 하셨는지, "우리 교회도 이런 식으로 해보면 어떨까요?"라는 의견이 자연스럽게 나왔습니다.개발자로 일하고 있는 저는 이 제안을 듣고 한번 시도해보기로 했습니다.강습회에서 본 것을 그대로 옮기는 것이 아니라, 커스텀을 해서요! 개발 과정에서의 경험처음에는 단순해 보였던 프로젝트였지만, 실제 개발 과정에서는 삐걱이게 만드는 문제들이 있었습니다.특히 기억에 남는 것은 CORS 문제였습니다.프론트엔드는 HTTPS를 사용하는데 백엔드는 HTTP를 사용하고 있어서 데이터를 가져오지 못하는 상.. 2025. 7. 16. DB 조회 최적화: Map을 활용한 조회 횟수 줄이기 이번 포스팅에서는 제가 실제 프로젝트에서 겪었던 DB 조회 성능 이슈와 이를 해결한 경험을 적어보고자 합니다.DB (외부 저장소)를 건별로 호출하던 로직을 한 번에 조회하여 Map으로 변환 후 매핑하는 방식으로 전환하면서 얻은 성능 개선 경험을 기록해보고자 합니다.as-is (기존 방식)데이터 10건 조회 시, 각 데이터의 관련 ID마다 외부 저장소(DB/ES/Redis 등)를 개별 호출호출 횟수: 데이터 N건 → 외부 저장소 N회 호출코드 예시// Data 클래스 예시public class Data { private Long id; private String title; private List relatedIds; // 외부 저장소에서 조회할 ID 목록 // getters, set.. 2025. 7. 14. 서버 리소스 절약하면서 데이터 정리하기 - MySQL Event 활용기 들어가며최근 알림 시스템을 개발하면서 알게된 기능을 활용해 조금의 성능을 개선한 경험을 담아보았습니다.문제 상황‼️ 사용된 코드와 MySQL Event 정의 script 는 예시입니다..!알림 시스템을 개발하면서 NotificationHistory 엔티티를 만들어 알림 히스토리를 관리했습니다.@Entity@Table(name = "notification_history")class NotificationHistory( @Column(name = "created_at", nullable = false) val createdAt: Long = System.currentTimeMillis(), // ... 다른 필드들)아래의 상황을 문제로 정의했습니다:의미 없는 오래된 데이터: 1주일이 지난 알.. 2025. 7. 5. 일급 컬렉션 (First-Class Collection)으로 코드 품질 향상 도전하기 문제 상황제가 느낀 문제는 다음과 같았습니다:서로 다른 도메인이 같은 컬렉션 타입을 사용하고 있어, 구분하기 어렵다같은 컬렉션 타입의 비즈니스 로직들이 서비스 레이어에 흩어져 있어서 관리가 어렵고 직관적으로 이해하기 어렵다예를 들면, 두 개의 도메인이 같은 Map(적절한 예시인지는 모르겠지만..) 타입을 사용하고 있었던 겁니다.서비스 레이어에서 이 타입의 변수를 만들고 수정하는 작업을 하는데, 이게 어떤 도메인과 관련된 코드인지 구분하기가 어려웠어요.심지어 제가 직접 작성한 코드인데도 다시 보면 이해하는데 시간이 걸렸기에..나도 보기 힘든데, 다른 사람은 더 힘들겠다는 생각에 개선하기로 마음먹었습니다..! 개선 방법일급 컬렉션 도입제가 시도한 개선은 일급 컬렉션을 도입하는 것이었습니다. 같은 타입을 사용.. 2025. 4. 23. 이전 1 2 3 4 ··· 20 다음