[개발일지] 230502 flatMap과 동적쿼리 foreach문
·
성장이야기/TIL
오늘 새로 배운 내용 flatMap 기존 Redis에서 가져온 데이터와 DB에서 가져온 데이터를 새로운 Response 객체를 만들어서 Service에서 조합해서 응답하는 방식으로 설계했었는데 응답값을 조합하는 방식이 복잡해져 Service가 배보다 배꼽이 커지는 상황이 발생했다. 그래서 Service에서 조합하는것이 아닌 새로운 Response 객체를 만들어서 그 객체안에서 조합해서 응답하는 방식으로 변경하는게 좋겠다는 리뷰를 받았다. 객체들을 조합할 때 처음으로 stream의 flatMap 메서드를 사용해봤는데 각 요소를 인자로 변환하는 map메서드와 다르게 flatMap은 각각의 요소를 다른 스트림으로 변환하는 기능이였다. flatMap 예시 List words = Arrays.asList("FLA..
221222 TIL Bucket4J를 이용해 외부 api 관리
·
성장이야기/TIL
KiCK OFF 프로젝트에서 축구 경기 일정을 조회하기 위해 무료(인줄 알았던..) api인 rapid api를 사용하고 있었다. 그런데 11월 말 코딩을 하던 중 핸드포네서 "띠링" 소리가 울렸다. 확인해보니 카드 결제소리 였다.. 자동이체 해놓은게 없는데 돈이 빠져나가 확인해보니 RAPIDAPI 에서 자동으로 6,770원을 뺏어(?)갔다.. 부리나케 rapid api 사이트에 가서 pricing 부분을 다시 확인해보니 하루에 100번 요청까지만 무료고 다음 요청부터는 0.005달러씩 추가 요금이 발생한다고 적혀있었다. 뭐 아무튼 6,770원만 빠져나간걸 감사하게 생각하고 급한대로 경기 요청 api는 우선 사용하지 못하도록 막아놨었다. 해당 api를 사용하는 부분은 모두 구현을 했기 때문에 배포 전까지..
221210 TIL 클릭 효과 유지 하기
·
성장이야기/TIL
오늘은 어드민 페이지 css 작업을 끝냈다. 그중 게시판을 관리하는 페이지의 css를 적용할 때 시간이 꽤나 걸렸었는데 그 이유가 메뉴를 클릭했을 때 클릭한 메뉴의 글씨 색이 변한 상태로 유지되도록 css를 적용하고 싶었기 때문이다. 메뉴를 클릭했을 때 글씨 색을 변하게 하는 속성 중 active 속성이 있었는데 active속성을 적용하면 메뉴를 클릭했을 때 그 순간에만 메뉴 색이 변경이 되어서 내가 구현하고 싶은 기능과는 달랐다. 위 css를 적용하기 위해 처음에 이용했던 방법은 useState를 이용해 isSelected를 만들어서 초기값은 false로 주고 메뉴를 클릭하면 onClick함수에 setIsSelected를 true로 바꿔 isSelected가 true이면 해당 태그의 색을 변경하는 식으..
221209 TIL 채팅 입력시 자동으로 scroll 맨 밑으로 이동하게 하기
·
성장이야기/TIL
오늘은 채팅창 css를 적용하다 수정해야 할 부분이 생겨서 다시 채팅창을 리팩터링 하는 작업을 했다. 문제 상황은 채팅 메시지가 채팅창의 세로 사이즈가 넘어갈 시 overflow-y: auto를 줘서 자동으로 세로 스크롤이 생기게 했다. 그런데 채팅을 새로 입력했을때 세로 스크롤만 생기지 스크롤이 자동으로 맨 밑으로 내려가는 게 아니라 사용자가 직접 스크롤을 내려서 최신 메시지를 확인해야 하는 문제가 발생했다. 그래서 채팅을 입력했을때 자동으로 스크롤이 맨 밑으로 내려가게 하는 방법을 찾아 해결했다. useRef useRef를 사용했는데 useRef를 간단히 말하면 React에서 특정 DOM요소에 접근할 때 사용하는 hook이다. 자바스크립트를 사용할 경우에는 getElementById나 querySel..
221208 TIL useLocalStorage
·
성장이야기/TIL
오늘은 오전, 오후에는 css작업을 어느 정도 하고 저녁에는 어드민 로그인을 구현했다. 어드민에는 회원가입도 필요 없고 로그인도 기존에 사용자단에서 로그인 시 필요한 인터셉터와 jwt가 이미 만들어져 있었기 때문에 금방 만들 수 있을 거라고 생각했다. 일단 어드민 계정 생성을 위해 엔티티를 만들어 주고 어드민 계정은 db에 직접 하나 넣어줬다. 이후 로그인 시 프론트에서 입력받은 계정이 어드민 계정인지 아닌지 검증하기 위한 로직을 작성해주고 로그인이 성공하면 입력받은 아이디를 jwt를 이용해 토큰으로 만들어서 해당 토큰을 프론트로 전달했다. db에 넣어준 어드민 계정으로 로그인 성공 시 토큰이 잘 전달되는지 로그인을 해봤는데 정상적으로 accessToken을 받은 것까지 확인할 수 있었다. 이제 어드민 ..
221207 TIL 어떤 게시판에 게시글이 가장 많을까?
·
성장이야기/TIL
오늘은 최상위 게시판(EPL, LaLiga, SerieA, Bundesliga) 4개 중 어떤 게시판의 비중이 가장 큰지 알기 위해 4대 리그 게시판별 게시글을 종합하는 작업을 했다. 예를 들어 EPL 게시판을 부모로 갖고 있는 하위 게시판에 있는 게시글을 모두 종합하는 작업이다. 그런데 리그 게시판이 하위 게시판들의의 게시글을 갖고 있지 않아 findAll 같이 간단하게 구할 수 있는 문제가 아니였기 때문에 어떻게 모든 게시판의 게시글을 찾을지 고민을 했다. 우선 게시판의 구조가 총 3 depth(리그 게시판 -> 팀 게시판 -> 선수 게시판)로 구성된 게시판이기 때문에 리그 게시판을 부모로 갖고 있는 모든 팀 게시판을 리스트로 담아 팀 게시판 하나하나당 게시글의 개수를 더한 다음 또 팀 게시판 하나하..