전체 글

전체 글

    안녕 나의 첫 서비스! 1인 개발, 배포, 운영부터 서비스 종료까지의 회고록

    왜 1인 개발?전에 다니던 회사, 개발자가 되고 싶어서 그만뒀다. 그리고 1년간 수업을 듣고 직무 기술을 학습했다. 퇴사 후에도 이전에 이룬 성과를 바탕으로 프리랜서로 연결을 유지해 왔다. 취업을 준비하던 중, 배달 기능을 포함한 웹 플랫폼을 구축하고 싶다는 대표님의 연락을 받았다. 대표님! 제가 배운 게 바로 그거잖아요! 저 할 수 있어요!라고 말하고 모든 게 시작됐다. 인고의 과정기획 제일 먼저 미군 부대라는 특수성을 염두에 두고 프로젝트의 목표와 기본 요구사항을 정의했다. 가장 기본적인 기능은 메뉴를 보여주고, 배달 주문을 넣을 수 있도록 하는 것. 하지만 디테일이 갈피를 잡지 못하고 자주 변경되곤 했다. 클라이언트의 입장에서 생각해 본 결과, 기술적 세부 사항에 대한 명확한 이해 없이는 방향 설정..

    [TIL] 23/10/5 뷰를 이용한 MenuController 리팩토링 (getMenusInCategory)

    [TIL] 23/8/18 Category 테이블 View 추가 + 뷰 생성법, 사용법, Spring boot entity 작성 문제점 처음 서비스를 기획하며 데이터베이스를 설계했을 때 생각치 못했던 문제점들이 프로젝트가 진행되며 드러나기 시작했다. 카테고리를 관리하는 category 테이블이 있다. 이 테이블은 메뉴 foliageit.tistory.com 위 글에서 얘기했던 것과 같이 현재 카테고리 테이블엔 메뉴를 위한 카테고리와 옵션을 위한 카테고리가 혼재되어 있다. 기존 코드에서는 하드 코딩하여 카테고리 아이디가 8이거나, 10보다 크거나 같을 경우에 에러를 던졌다. // Categories 8, 10, and 11 are not in use due to menu consolidation. // St..

    [TIL] 23/9/27 Google 외부 애플리케이션 부하 분산기 관련 문제 해결문서

    외부 애플리케이션 부하 분산기 관련 문제 해결 | Google Cloud Google Cloud 외부 애플리케이션 부하 분산기 관련 문제 해결 cloud.google.com 1. 정확한 통계를 위해 Cloud Monitoring API를 프로젝트에 추가 2. 네트워크 분석기로 이동 Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 3. 네트워크 분석 결과 확인

    [TIL] 23/9/25 Google OAuth Sign in authorization_request_not_found 에러 여정기 1

    [authorization_request_not_found]가 다시 발생하고 있다.. 도무지 이유를 모르겠어서 이것저것 시도해본 기록 1. Redis memory 확인 세션을 레디스에 저장하고 있기 때문에, 혹시나라도 레디스 메모리가 꽉 차서 세션이 저장이 안되고 있는 상황인지 확인했다. redis-cli로 접속한 다음에 info 명령어를 날리면 정보가 나온다 # Memory used_memory:1020808 used_memory_human:996.88K used_memory_rss:5177344 used_memory_rss_human:4.94M used_memory_peak:4428336 used_memory_peak_human:4.22M used_memory_peak_perc:23.05% used_..

    [TIL] 23/9/22 Google OAuth Sign in authorization_request_not_found 에러 (로드밸런서 스티키 세션 설정 자세히)

    예전에 해결했던 문제인 authorization_request_not_found가 다시 발생하는걸 확인했다. 최근에 EC2를 재부팅하고 설정 값을 만지면서 생긴 문제 같다. 이를 해결하기 위해 스티키 세션을 재설정 해주었다. (로드밸런서가 이미 생성되어 있다고 가정한다) EC2 - 로드밸런서 - 대상 그룹 - 스티키 세션을 설정할 로드 밸런서 선택 그룹 세부 정보 탭의 속성 섹션에서 편집 선택 1. 고정성을 선택한다 2. 고정 유형에서 애플리케이션 기반 쿠키를 선택한다 3. [Stickiness duration]에서 1초에서 7일 사이의 값을 지정한다 4. 변경 사항 저장)를 선택한다 ------------------------------------ 스티키 세션을 재설정하니 세션을 지우고 재접속해도 제대..

    [TIL] 23/9/13 메뉴 디테일 수정하기 구현

    기존에 등록된 메뉴를 수정하는 코드의 핵심은 ModelAttribute를 사용해 수정된 내용을 받아오고, 기존 엔터티를 가져와서 변경된 내용이 있는지 비교한 후에!! set 메서드를 호출해 변경 내용을 반영해주는 거다. 1. html form 메뉴 썸네일 이미지 수정은 별도의 페이지에서 진행하니 이미지 경로를 제외한 필드만 수정할 수 있도록 form을 구성했다. Name(Eng):* Please enter menu name! Name(Kor):* Please enter menu name! Price:* Please enter menu price! Description(Eng): Please enter menu description! Description(Kor): Please enter menu desc..

    [TIL] 23/8/22 AWS S3 설정, 이미지 업로드 코드

    1. pom.xml에 dependency 추가 com.amazonaws aws-java-sdk-s3 1.12.470 2. application.properties 설정 #S3 aws.accessKeyId=액세스키아이디 aws.secretKey=시크릿키 aws.region=리전 aws.s3.bucket = 버킷이름 spring.servlet.multipart.max-file-size=100MB spring.servlet.multipart.max-request-size=100MB 3. s3 config @Configuration public class S3Config { @Value("${aws.accessKeyId}") private String accessKeyId; @Value("${aws.secret..

    [TIL] 23/8/18 Category 테이블 View 추가 + 뷰 생성법, 사용법, Spring boot entity 작성

    문제점 처음 서비스를 기획하며 데이터베이스를 설계했을 때 생각치 못했던 문제점들이 프로젝트가 진행되며 드러나기 시작했다. 카테고리를 관리하는 category 테이블이 있다. 이 테이블은 메뉴와 옵션을 관리하는 menu, options, menu_option 테이블들과 연관성을 가진다. 문제는 메뉴 카테고리(예: pizza, sandwich)와 옵션 카테고리(예: steak mod, potato mod)를 동일한 category 테이블에 저장하도록 설계했다는 것이다. 개발의 초기 단계에서는 제한된 카테고리만 있어서 문제가 없었지만, 프로젝트가 진행됨에 따라 카테고리가 생성, 수정, 삭제되면서 불필요한 혼란과 복잡성이 발생하고 있다. 해결 방안 이를 해결하기 위해 세가지 방법을 고민했다. 해결 방안 1: 새..

    [Git] 원격에서 변경 사항 발생 시 로컬에서 당겨오고 병합하기

    원격 저장소에서 readme.md 내용을 추가했다. 로컬에 이 변경 사항을 가져와서 병합해야 하는 상황 힌트: You have divergent branches and need to specify how to reconcile them. 힌트: You can do so by running one of the following commands sometime before 힌트: your next pull: 힌트: 힌트: git config pull.rebase false # merge 힌트: git config pull.rebase true # rebase 힌트: git config pull.ff only # fast-forward only 힌트: 힌트: You can replace "git config"..

    [TIL]23/8/2 고객용 주문 번호 생성, 유효성 검사, 시간대 포맷팅, 정규표현식

    0. 고객용 주문 번호 생성 실제 ID는 그대로 두고, 고객에게 보여주는 용도의 추가적인 주문 번호 컬럼을 추가하고, 생성 코드를 구현했다. 이 주문 번호를 통해 고객은 주문을 조회할 수 있다. 주문 번호 생성은 현재 시간 + 난수 조합으로, 밀리초와 랜덤 알파벳, 숫자를 사용한다. 1. 웹 폼 유효성 검사: 주문을 할 때 고객으로부터 입력받는 필드의 유효성 검사 코드를 추가했다. 이러한 유효성 검사는 클라이언트 + 서버 양쪽에서 모두 진행하는게 좋음 클라언트측 코드: 그리고 유효성 검사를 할 Form에 onsubmit="return validateForm()"을 추가하고, myForm이라는 name 속성, button onlick= "return" 또한 추가한다. 2. 시간대 변환과 포맷팅: DateT..