전체 글 63

[TIL] - Return null과 new Exception으로 던지는 것의 차이가 무엇일까

코드를 까보다가 이런 주석을 발견했다. 저 method에 진입했을 때 null로 return 시켜서 method를 호출하는 부분에서 exception을 시키는 코드인데, 주석에 저 상태에서 Exception을 발생시키라고 되어있었다. null을 보내는 것 보다 Exception을 발생시키는 것이 좋기야 하겠지만, 저 코드를 실행시켰을 때는 둘의 차이가 없는 것 같아 둘의 차이가 무엇일지 궁금해 찾아보았더니 https://chrisshennan.com/blog/return-null-or-throw-exception-best-practice

TIL 2023.06.30

[TIL] Spring boot @Deprecated 어노테이션

내가 관리하는 서비스엔 너무나도 많은 엔드포인트들이 존재한다. 업체 별로 버전을 만들거나 버전을 올리거나.. 하면서 우후죽순으로 생겨난 url들이다..... 그래서 처음엔 비슷한 이름으로 너무 여러 개 있어서 외부로 나가는 API 연동문서 없이는 일할 수 없었지.. 이번에 어떤 프로젝트를 진행하면서 소스를 대대적으로 검토하고 있는데, 이런 쓰이는지 안쓰이는지도 모르는 엔드포인트를 정리할 필요성을 느꼈다. 그렇게 해서 알게된 것은 Spring boot의 어노테이션 @Deprecated 이것은 앞으로 사용하지 않는 소스라는 표시를 하는 것이다. 그렇다고 해서 호출 자체를 막는 것은 아니고 그냥 표시를 해두는 것으로 알고있다. @Deprecated @PostMapping("/v1/deprecated") pub..

TIL 2023.06.27

어떤 개발자가 되고 싶은가에 대한 고민- 선배 개발자의 조언을 받았다.

요즘 어떤 개발자가 되어야 하는가 에 대한 고민을 많이 하고 있다. 때마침 CTO님께서 주니어들과 좋은 자리를 마련해주셔서 커리어패스에 관한 좋은 말씀들을 들을 수 있어 조금 남겨보려 한다. 😀 💡 CTO님은 늘 자주 여러번! 생산성에 관한 말씀을 하신다. 요지는 생산성이 높은 개발자가 되는 것이 좋다는 것. 이것이 정답이라고 할 순 없지만 일단 그분의 생각이 그렇고 나는 선배 개발자들의 생각을 흡수 하고 있는 상태니까 추천해주신 것들을 정리하고 따라가보려 한다. postgresSQL 그리고 supabase (https://supabase.com/) 생산성을 높히기 위하여 여러 좋은 사이트들을 추천해주셨지만 이 두 가지가 가장 기억에 남고 또 꽤 중요하게(?) 많이 언급하셨다. 토이프로젝트를 해본다면 저..

그냥일기 2023.06.23

[TIL] git flow - hotfix branch 를 main에 merge한 이후에?

허허 지금까지 깃플로우를 조금 잘못쓰고 있었던 것 같다. main hotfix (임시) realease (임시) develop feature (임시) 우리회사는 보통 이렇게 쓰고 있다. 사실 release가 도입된 지는 얼마 되지 않았고 주로 feature > develop > main로 merge하고 있다. 정말 긴급한 상황이 아닌 이상 hotfix는 쓰지 않기 때문에, 또 다행히도 hotfix를 딸 일이 많이 없었어서!! hotfix 사용법을 제대로 몰랐다.... 그래서 제대로 뒷처리(?)를 안해두었더니 지금 ㅠ 그래프가 몹시 이상해졌다..흑 hotfix branch는 master에서 바로 따서 merge하는 것이다. 그렇게 되면 develop에는 이번 수정내용이 반영되지 않은 상태로 있게 된다. 이..

TIL 2023.06.22

[TIL] 버퍼를 읽는 것이란 무엇일까...?... Wrapper class를 써보았다.

오늘 또 하나 배웠다... 사실 전 부터 배웠는데 오늘 좀 생각을 정리했다...? 여러 번 듣고 여러 번 책에서 본 내용인데도 제대로 개념을 이해 못했던 것이지.... 전 부터 buffer를 한 번 사용해서 빈다 spring Controller에 도달하기 전, filter에서 buffer를 한번 사용하고 빈다.-> Controller에 도달하는 response body가 없다-> Error : Required request body is missing 이럴 때 wrapper 를 사용하는데, 내가 계속 사용했던 것은 ContentCachingResponseWrapper, ContentCachingRequestWrapper class이다. 당연하게 ContentCachingRequestWrapper 를 이용..

TIL 2023.06.20

[TIL] HttpServletRequest 에서 request 값을 GET, POST에서 사용하기

filter에서 request값을 빼와 log에도 찍고 MDC에도 넣고.. 다양하게 활용하고 싶었다. 만약 필요한 값이 header에 있는 값이라면? HttpServletRequest.getHeader("header name") 을 사용하여 해결할 수 있다. 그런데 header에 없는 값이라면? HttpServletRequest.getParameter("key name") 을 사용했더니 request로 들어오는 값을 가져올 수 있었다. 이렇게 해서 순조롭게 쓰다가 계속 여러 엔드포인트들에서 null이 찍혀 찾아보았더니 이것은 GET방식에서만 가능하고 POST방식에선..... null로 들어오는 것을 알게 되었다 바보다..🤦‍♀️ POST는 json 형태기 때문에 json은 inputStream으로 rea..

TIL 2023.06.19

[TIL] logback 설정 어렵다

이상하다 이상해.. logback 설정에 따라 console에 찍히는 log가 달라진다. log4j 설정 때문인줄 알았는데 아니었던거지…. 믿을 수 없다…. 이렇게 또 하나 배우네 맨 밑에 부분 어느부분에서 영향을 주는지 모르겠다. 일단 additivity="true" 가 되면 같은 로그가 두번씩 찍히는 것은 알겠다. 일단 얘가 영향을 주진 않는다. log 쌓일 때 특정한 값으로 쌓이게 하기 CONFIG_CODE DEFAULT ${LOGS}/${CONFIG_CODE}.log %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} TEST : [%X{CONFIG_CODE}] - %msg%n 여기서 ${CONFIG_CODE} 값은 MDC에 있는 값을 읽어와 사용한다.

TIL 2023.06.18

[프리온보딩 백엔드 챌린지 6월] OT & 1-1주차 후기

6/5 원티드 프리온보딩 백엔드 챌린지가 시작됐다! 🎉 오티를 12시에 한다길래 도시락을 싸와 회사휴게실에서 참여했는데 휴게실에 노트북을 들고 오니 조금 이상했다,,,,하하 아무튼 앞으로 2주간 JAVA에 대하여 공부하고 남은 4주간 취업관련 피드백을 받는다는데, 오티를 듣고보니 취업 자료는 지원을 5개, 20개를 해야 가능하다는 것 같다...? 뭐 어차피 내가 이것에 참여한 목적은 이직준비보단 말그대로 자바의 기초❗❗❗❗❗때문이었으니 그건 상관없다. 💡1-1 오늘 배운 것 1-1 Java의 정의와 동작 방식 (Java, JRE, JDK, JVM, AOT, JIT, Java Bytecode, Code cache, ByteBuddy) Java의 구성요소와 동작 방식 클래스 로더와 클래스 로딩 Java 바이..

[프리온보딩 백엔드 챌린지 6월] 오티를 앞두고

사전설문 문자가 오고, 디스코드에 초대되고, 내일 온라인 OT를 앞두고 있다. 기대되고 설레고 떨린다. 커리큘럼이 마음에 들어서 냅다 신청한 것인데 신청하고 지난 챌린지들을 보니 매달 커리큘럼이 다른 것을 알게되었고 마침 내가 필요한 내용이 이달에 해서 다행이라고 생각했다! 🎉 앞으로 월, 수 이틀 간 열심히 공부하고 배우고 익혀야지 아자작✌️ 💡커리큘럼 1-1 Java의 정의와 동작 방식에 대해 살펴봅니다. Java, JRE, JDK, JVM, AOT, JIT, Java Bytecode, Code cache, ByteBuddy Java의 구성요소와 동작 방식 클래스 로더와 클래스 로딩 Java 바이트코드와 코드 캐시 바이트코드를 컴파일하는 AOT, JIT 컴파일러 [아하!모먼트] '내가' 수행 업무와 ..

[TIL] pinpoint를 통해 들어오는 요청들을 확인해보았다.

그동안 내가 관리하는 서비스들을 확인할 때 주로 서버에 접속하여 로그를 확인하였다. 회사에 ELK가 도입되기 전 부터 서버로그를 확인하는 것이 습관이 되어서.. 아무래도 서버로그를 확인하는 편이 조금 편하기 때문이다. 그러다가 모든 요청을 한번에 확인해서 전수조사를 해야하는 일이 생겼는데 이때 핀포인트를 확인하면 좋을 것 같아 핀포인트로 확인해보았다. https://pinpoint-apm.github.io/pinpoint/ Pinpoint | Leading Open-Source APM Tweets by Pinpoint_APM Is your application created with PHP? Pinpoint has started to support application written in PHP. Che..

TIL 2023.06.02