활동들~ (11) 썸네일형 리스트형 429(Too Many Request) 에러 해결하기 최근 Poe Build Cost 프로젝트를 진행하다 어느정도 사용가능한 상태가 되어, AWS에 배포 후 커뮤니티에 홍보를 했었다. 근데, 이때 생각지 못한 429 에러 문제가 발생했고, 이 문제를 해결하기 위해 다양한 방법을 시도했다.HTTP 429 (Too Manay Request)서버에서는 과도한 요청에 대해 부하를 방지하고자 HTTP 요청에 제한을 두기도 하는데, 이떄, 클라이언트에서 서버로 너무 많은 요청을 보낼 때 발생하는 에러이다. 내가 마주한 429 에러 상황문제 상황1. Poe Build Cost에서는 10~20개 가량의 아이템의 시세를 Path of Exile Trade(이하 POET)에 아래와 같은 형식의 데이터를 10초 간격으로 POST API로 요청을 보내고 응답 값으로 각 아이템 .. Pob Build Cost 프로젝트 진행 배경 사람들이 사용해주는 서비스를 만들고 싶었다. 이전에 프로젝트들을 진행할 때면 시간이 지날수록 '이걸 완성하면 사람들이 사용할까?'라는 물음에 대한 답이 희미해져 갔다. 점점 의미없는 프로젝트를 하는 것 같았다. 그래서, 이번 프로젝트를 진행할 때는 사람들이 사용해주는, 실제 사용자가 있을 서비스를 만들고 싶었다. 실제 사용자를 확보하기 위해선 나름 고민해 본 결과 아래와 같이 정리되었다. 비슷한 서비스가 없고, 특정 사람들에게 필요해야 할 것. 매니악한 주제와 관련이 있으면, 확고한 사용자 층이 확보하기 쉬울 것 같다. 따라서, 기존에 비슷한 서비스가 없으며, 매니아들이 많은 서비스를 고민하다가 예전에 즐겨했던 PoE란 게임이 생각이 났고, 그때 당시 불편했던 것을 도와줄 수 있는 서비스를 만.. [오픈소스] 테라폼 GetOk()의 Zero-value 이슈 해결하기 오픈소스 url : https://github.com/NaverCloudPlatform/terraform-provider-ncloud 네이버 클라우드 API 문서 : https://api.ncloud-docs.com/docs GetOk( ) 란? GetOk("ParameterName") 함수는 사용자가 리소스에 입력한 값들을 읽어오는 함수입니다. 입력된 파라미터 이름으로 값을 읽어온 후, Value와 ok를 반환합니다. GetOk 함수를 사용할 때의 문제 사용자가 아래와 같이 Zero-Value(0, false)를 값으로 입력할 경우, GetOk의 ok는 false로 받게 됩니다. resource "resource" "name" { ... cnt = 0 ... } v, ok := GetOk("cnt") .. [오픈소스] NCP 테라폼 validation 검증하기 오픈소스 url : https://github.com/NaverCloudPlatform/terraform-provider-ncloud 네이버 클라우드 API 문서 : https://api.ncloud-docs.com/docs 정규식 테스트 사이트: https://regexr.com/ 0. 확인할 파일 선정. - server.go 파일로 선정 1. 문서에서 API 요청 파라미터 제약사항 확인하기. - API 문서에서 createServerInstance 확인 - 위 사진과 같이 serverName의 제약 사항은 아래와 같습니다. 1. 3~30 개의 문자만 허용 2. 소문자, 숫자, "-"만 허용 3. 알파벳으로 문자로 시작해야함 4. 영어 또는 숫자로 끝나야함. 2. validation 패키지의 함수들을 .. [백엔드 기록] SSE와 소켓 Help Todo 서비스는 팀 단위 투두리스트 서비스이다. 같은 팀에서 투두리스트를 수정할 경우, 다른 팀원들의 투두리스트를 수정된 데이터로 업데이트해주어야 한다. 나는 이 부분을 웹 소켓의 Pub/Sub 방식으로 해결하려고 했다. 구독, 발행 방식을 구현하는 중, SSE라는 걸 알게 되었고, 해당 데이터 노티 기능은 SSE로 구현하는 것이 적합한거 같아 SSE에 대해 찾아보았다. SSE란 ? Server-Sent-Event의 약어로, 클라이언트가 HTTP를 통해 서버에서 자동 업데이트를 받을 수 있도록 하는 서버 푸시 기술이다. SSE ↔️ 소켓 방향성 SSE는 서버에서 클라이언트로 데이터를 전송해주는 단방향 푸시 기술이다. 소켓은 서버와 클라이언트가 서로 데이터를 주고 받을 수 있는 양방향 기술이다... [문제 기록] NEXT.JS(SSR) Error: Text content does not match server-rendered HTML. 문제 상황 프로젝트 진행 중, 팀원이 들어간 팀 페이지에서 새로고침을 할 경우, 페이지의 데이터들이 사라졌다. 해당 데이터들을 유지하고자, Zustand의 Persist를 이용해 Storage에 저장을 해주고 테스를 해보니 아래와 같은 에러가 발생하였다. 원인 분석 해당 에러코드는 SSR에서 나타나는 문제로, 서버 측의 렌더링된 결과와 브라우저에서 렌더링된 결과가 달라서, 생기는 문제이다. todoTableData는 zustand의 Persist로 생성한 저장소인데, 코드 상에서는 아래와 같은 부분에서 "?"이 문제를 발생시킨다. 해결 Zustand Persist된 데이터들은 HTML에서 ? 연사자(삼항 연산자) 혹은 && 연산자를 이용하지말고, 아래와 같이 데이터를 먼저 체크 후, 리턴해 준다. 만약,.. react JWT 토큰 저장, 가져오기 쿠키 훅 등록 위와 같이 useCookies를 가져와서 훅으로 등록 해준다. react-cookie 설치 : npm i react-cookie const [cookie, setCookie, removeCookie] = useCookies(['id']) cookie : 쿠키 변수 setCookie : 쿠키 변수 등록 removeCookie : 쿠키 삭제 'id' : id라는 이름으로 쿠키 변수 생성 쿠기 저장 및 조회 이후, 백엔드에 jwt 토큰 요청 후, 받은 토큰을 setCookie(저장할 이름, 값)으로 저장하며, 저장된 쿠키 값을 꺼낼 때는 const [cookie] = setCookie(["id"]) // ... console.log(cookie.id) 이런식으로 사용해주면 된다. Axios로 J.. [문제 기록] 클라이언트에 응답 시, JPA 양방향 객체 무한 참조 문제 상황 Team 목록을 클라이언트에 넘겨 줄때, 아래와 같이 무한 참조 현상이 나타났다. 문제 원인 코드 @RequestMapping(value = "/team/findTeamList") public ResponseEntity findTeamList(){ List allTeams = teamService.findAllTeams(); if (!allTeams.isEmpty()) { return ResponseEntity.ok().body(allTeams); } return null; } Team은 소속 멤버에 대한 테이블인 JoinTeams를 가지고 있다. 또한, JoinTeams는 Member와 양방향 관계를 가지고 있다. 이때, Team 객체의 정보를 불러올 때, JoinTeams를 가져오고, Jo.. 이전 1 2 다음