얇고 넓은 개발 블로그
지금까지 올라온 글들
-
헉, 이거 나만 몰랐나? 3편 - 알아두면 회사에서 유용한 Intellij 단축키
헉, 이거 나만 몰랐나? 3편 - 알아두면 회사에서 유용한 Intellij 단축키
2024.03.03신입으로 들어간 내가 종종 시니어 팀원분들에게 개발한 것을 리뷰를 받기 위해 종종 코드를 보여주다보면, 종종 그... ctrl + G 키 눌러봐~ 아니면 그 메소드를 사용하는 다른 곳이 있는지를 확인을 해봐처럼 응애 신입 개발자이기전에는 한 번을 안써봤던 단축키를 이야기해보려 하는데요. 하지만, 이런 단축키들은 굉장히 유용하므로, 해당하는 단축키를 잘 사용하면 선배님들에게 특급 칭찬을 받을 수 있지 않을까요? 1. 사용 위치 찾기 (Find Usages) 왼도우 (Alt+ F7) / 맥 (Alt + F7) 해당기능을 사용할 경우 해당 메소드들을 내 코드에서 어디서 사용하고 있는지를 알려준다. 라인과 해당하는 사용 위치를 알려주는 역할을 한다. 옆에 해당하는 코드가 어디에서 사용하고 있으며 , 위치도 파악.. -
Stream을 Null Safety하게 사용하기
Stream을 Null Safety하게 사용하기
2024.02.17Java는 Null safety가 중요하다 거두절미하고 이야기하겠다. 당연히 나는 이 코드가 동작할거라 생각했다. names.stream().filter(Objects::nonNull).forEach(System.out::println); 근데 NPE가 발생한다. 응? 당연히 잘되는게 아닌가 싶지만... 우리는 names가 List 타입인거 까지는 아는데.... 그게 어떤 값일지 모르기 때문에 발생하는 문제이다. 만약 names가 null이라면? → 이때 NPE를 발생하는 것이다. 심지어 이건 JPA에서도 발생하는 문제인데.. 이런 방법을 해결하기 위한 방법? 간단하다. Optional로 Wrapping하는 거다. Optional.ofNullable(names).orElseGet(ArrayList::ne.. -
@JsonInclude란?
@JsonInclude란?
2024.02.04일단 글또 5주차를 맞이하여 테크테크스러운 글을 많이 작성하고 있다. 특히 요즘에는 별다른건 아니고, Jackson에 좀 꽂혀서 요즘 Serialize 혹으 Deserialize하는 방식에 대해서 어떤식으로 작동하는 거고 해당하는 코드들이 어떤 일련의 과정 속에서 움직이는 게 궁금했었다. 일단 기본적으로 Include를 많이 사용은 하는데 어떤 상황에서 사용하는게 좋을지 취사선택해야하는 경우가 많은데, 해당하는 값을 어떤식으로 처리하는게 좋을지 궁금해졌다. 사실은 Include nonNull 동작원리를 찾다가 동작방식을 찾아내질 못해서, 다른 주제로 선회하긴했다. 찾아보니까 이렇게 딥한 내용이었나 싶어서 좀 더 구체적으로 테스트 해봐도 좋겠다싶었다 JsonInclude란? 일단 JsonInclude라는 .. -
부모 - 자식 관계에 있는 DTO를 효과적으로 표현하는 JsonTypeInfo Deduction기능을 알아보자.
부모 - 자식 관계에 있는 DTO를 효과적으로 표현하는 JsonTypeInfo Deduction기능을 알아보자.
2024.01.21왜 쓰게 되었나.. 일단 회사 프로젝트가 잦은 야근으로 지난주를 훌렁 날려버린 나는 현재 눈물의 개발 글쓰기를 진행중인데, 해당하는 프로젝트 진행도중 Request는 공통정보가 있지만, 각 3rd-party 서비스 추가 응답을 활용해서 각각의 응답에 따라 다른 API를 넘겨줘야하는 상황에 봉착했다. 해당하는 프로젝트에서 중복적으로 많이 사용되는 field가 있었고.. 해당하는 필드를 각 DTO별로 중복적으로 사용하는건 좀 귀찮은 일이기도 하니.. 해당하는 형태를 부모-자식 형태를 통해 상속으로 처리를 하려했다. 상속의 경우 Json Serialize가 값으로 처리되기가 곤란한 경우가 종종 있었는데, 특히나 Spring boot에서 별다른 어노테이션이 없이 무자비하게 떨렁 응답에 대한 처리를 해봤자.. 상.. -
연말 맞이 회고 - 2023년은 우왕자왕과 성장을 위한 발판
연말 맞이 회고 - 2023년은 우왕자왕과 성장을 위한 발판
2023.12.24연말을 맞이하여, 회고를 간단하게 해보고 싶어서 두서없이 적어봅니다. 연말까지 뭔가 굉장히 피곤하게 보내는 중이라서 사실 정리가 너무 안된면도 있다고 생각합니다 ㅎㅎ; 그래도 큰 틀에서 보자면, 회사와 개인의 측면으로 나눠서 회고를 해볼 수 있을 거라고 생각합니다. 올해는 크게 회사에서는 변화가 좀 있었고, 해당하는 대응이 꽤나 다이나믹해서 배운점도 많고, 뭔가 실수 했던 점도 많아서 복잡스러웠습니다. 덕분에 그만큼 개인의 무언가를 이뤘거나 행동의 큰 변화가 있던 적은 없었습니다. 그래도 과감하게 비싸고 빡센 강의를 들었던 것 덕분에, 해당 강의 이후 성장했다고 느껴지는 모습이 보여서 좋았습니다. 조금 더 세부적으로 나눠서 보면 아래처럼 정리해볼 수 있을 것 같습니다. 회사 회사에서는 두 버젼으로 굵직하.. -
글또 9기를 시작하며...
글또 9기를 시작하며...
2023.12.10글또 첫주차는 늘 뭘 적을까에 대한 고민을 많이 하곤 하는데, 결국에는 다짐글을 적게되는게 굳혀졌다. ㅋㅋ 왜냐하면 이미 내 글들을 살펴보면, 글또 글들이 1주차에는 무조건 9기를 시작하며와 같이 시작했으니까.. 아래 글들만 봐도 결국 회귀해서 다짐글을 쓸 수 밖에 없는 상황이 생긴다. 글또 5기를 시작하면서... 글또를 시작해버렸다. 글쓰는 또라이라는 이 모임은 개발 블로그 글쓰기 모임과 같다. 사실 개발 블로그는 내가 배운 내용이 아니면 정기적으로 포스팅하기가 쉽지는 않다. 아무래도 내가 순간 sundries-in-myidea.tistory.com 글또 6기를 시작하면서 - 올해의 마무리도 글또와 함께 글또를 또 하게되었다. 이번에도 글또를 시작했다. 뭐 지난번에 이야기를 주절주절했으니까.. 글또에 .. -
Deprecated 잘쓰는 법
Deprecated 잘쓰는 법
2023.09.02Deprecated 잘쓰는 법 안쓰는 거긴하지만, 코드의 남아있는 경우 오용을 방지하기 위해서라도, Deprecated가 필요하다 그러면 이 경우 Deprecate를 사용하는 방법에 대해서 찾아봤다. 나는 주석에 @Deprecated를 자주 사용했는데, 그외에 다른방법이 있는지도 찾아보니, 오라클에서 제공하는 가이드라인이 존재하여 찾아보았다. 결론을 먼저 말하자면, @Deprecated라는 일반 어노테이션과, javadocs에 사용해야할 @deprecated를 동시에 섞어써야함. 기본적으로 @Deprecated는 컴파일때 주의 문구를 띄워줌. IDE에서 노란색 줄이 그어짐. 그런데, Javadocs에만 @deprecated를 작성해놓으면 그게 적용되지 않음. 즉, 문서에도 @deprecated가 적용되고.. -
테스트 코드를 짜고는 싶은데, 테스트 실패시 빌드 실패가 걱정된다면?
테스트 코드를 짜고는 싶은데, 테스트 실패시 빌드 실패가 걱정된다면?
2023.09.02test.onlyIf { !project.hasProperty('test') } 다음처럼 작성해주면, 테스트 프로퍼티가 있는경우 혹은 해당 프로퍼티의 존재 여부를 따져서 테스트에 대한 실행을 막는다. 위에는 스크립트문으로 강제하는 방법이라면, 명령어로 강제하는 방법도 있음. gradle build -x test 하지만, 실제로 빌드 환경을 구축해두면 스크립트로 테스트가 다 돌아가므로, 굳이 아래 스크립트문 까지 사용하는 것보다는 위의 빌드 제약 조건으로 걸어 주는게 더 좋다고 생각한다. 물론 스크립트로 테스트가 돌아가는 것은 gradle build 스크립트를 반드시 돌리는 상황이 생겨서 그런거지.. 우리가 직접 스크립트문을 작성해서 돌린다면, 스크립트 명령문으로 강제 할 수는 있다 출처 https://a.. -
Spring boot build gradle에서 test task시 하면 좋은 것.
Spring boot build gradle에서 test task시 하면 좋은 것.
2023.09.02build.gradle 파일에서 tasks.named('test') }{ useJunitPlatform() } 이렇게 많이 쓰는데, gradle 가이드 문서에서 추천하는 방식은 다음처럼 tasks.named('test', Test) }{ useJunitPlatform() } 이래야지 useJunitPlatform이 메소드 역할을 하는것. 참고로 Spring Boot 기본 설정에서 제공하는 양식이 위의 양식으로 build.gradle이 되어있어서 그런거지 실제로 gradle 버전업을 통해서 적용 해야할 문법은 아래가 맞다 물론 없어도 동작은 하는듯한데.. 암튼 공식문서에선 그랬다. https://docs.gradle.org/current/userguide/java_testing.html#sec:java_t.. -
웹에서 잘 읽히는 글이 되는 방법
웹에서 잘 읽히는 글이 되는 방법
2023.04.25사람들은 글을 읽지 않고 페이지를 흐름을 쭉 읽어 내려가면서 단어, 문장을 골라내는 경향이 있음 나는 웹상에서 잘 읽히는 글을 만들어보고 싶은 사람이고 테크라이팅, 기술적 도큐먼트를 통해 잘 읽히는 글을 작성하는 것도 개발자가 가질 수 있는 좋은 능력중 하나라고 생각했다. 마침 이번 프로젝트 종료 직전에 Readme와 같은 개발 문서를 잘 작성하는 방법이 뭘까 고민 하던 도중 링크를 하나 찾았고 좋은 글이라 지점 별로 요약 정리를 해보았다. UX 전문 업체인 닐슨노먼그룹에서 요청하는 웹에서 잘 읽히는 글에 대한 아티클을 읽어보자면, 첫 연구는 1997년이고 그것을 추가 연구를 통해 해석한 것이 2021년쯤에 나왔다. 그 내용은 웹 상에서 어떻게 하면 잘 읽히는 글을 만들 수 있는지에 대해서 작성되어있다...