분류 전체보기
연말 맞이 회고 - 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년쯤에 나왔다. 그 내용은 웹 상에서 어떻게 하면 잘 읽히는 글을 만들 수 있는지에 대해서 작성되어있다...
Spring 설정파일 우선순위
Spring 설정파일 우선순위
2023.04.11Application.yaml 설정 파일 실행시 우선순위 매번 까먹어서 한번 재대로 정리해봄 default 셋업 아래에 on-profile 설정되어있는데 안먹어서 왜 안먹나 했더니 application.yaml이 우선순위가 높아서 default 옵션을 무시하고 다른 옵션이 들어가버려서 안되길래 도대체 어떤식으로 해결해야하는지 확인해봤다. 이경우에는 application.yaml에 profile이 있으면 됨 혹은 아예 파일이 따로 존재한다던지 여러가지 방법이 존재하니 참고 Application.yaml은 다음과 같은 우선순위를 가지게된다. 1. [Application properties](https://docs.spring.io/spring-boot/docs/current/reference/html/fea..
전체 쿠키 날리지 않고 티스토리 400 Bad Request 해결하기
전체 쿠키 날리지 않고 티스토리 400 Bad Request 해결하기
2023.03.22꽤 오랜 기간동안 오류가 발생했는데... 400 에러는 꽤 오래전부터 발생했긴했다.. 구글 검색을 찾아보면 대충..한 작년 12월쯤 부터인가 9월부터인가 로그인하게 되면 아예 400 Bad Request가뜨면서 오류가 발생했다. 해결법 자체는 많은데, 대부분 전체기록 삭제를 추천해주기 때문에 나는 그 방법 말고 다른 방법을 추천한다. (왜냐하면 다 날려먹는 바람에 로그인을 일일히 다시 해야하는게 너무 귀찮음) 해결방식 주소 옆의 좌물쇠 클릭 →쿠키 클릭 티스토리와 관련한 모든 쿠키 삭제! 주소명 클릭하고 삭제하면 되는 구조! 단, 이후에도 400 Error 동일하게 발생시 Kakao.com 관련 쿠키도 삭제해야함. 이 경우는 아마 나와 비슷한 상황일 가능성이 높음. 현재 나는 티스토리를 Kakao 로그인..
Spring boot 3.0.0 SQL Basic Binder 로깅 안되는 문제 해결기
Spring boot 3.0.0 SQL Basic Binder 로깅 안되는 문제 해결기
2022.12.02스프링부트에서 SQL문을 로깅하자 JPA에서 sql문 로깅하기 위해서는 application.yml에서 로깅레벨이나 옵션 사용해서 문제해결을 한다. spring: jpa: properties: hibernate: format_sql: true use_sql_comments: true logging: level: org.hibernate.SQL: debug org.hibernate.type.descriptor.sql: trace 이러면 JPA를 통해서 만들어지는 SQL문을 확인해볼 수도 있고… SQL문에서 발생하는 ?를 통해 들어가진 값들도 확인이 가능하다. 아래는 2.7.6 Spring boot 버젼입니다. 아래는 3.0.0 Spring Boot 버젼입니다. Spring Boot 3.0.0 버젼으로 넘어..
JWT Expired 시간이 토큰 발급시간보다 이전 시간인 경우
JWT Expired 시간이 토큰 발급시간보다 이전 시간인 경우
2022.08.18문제 상황 JWT 토큰 발급시 이런 오류가 있었다. JWT_EXPIRED_TIME: 43200 (24시간 * 60분 * 30일) ⇒ 해서 나온값이 43200분이었고, 위와 같은 설정값을 통해서 아래의 설정으로 세팅으로 토큰을 발급 하려고 했었는데.... return Jwts.builder() .setClaims(claims) .setIssuedAt(Date()) .setExpiration(Date(System.currentTimeMillis()+(JWT_EXPIRED_TIME.toInt()*60*1000))) .signWith(getSignKey(), SignatureAlgorithm.HS256) .compact() …? 원래시간보다 오히려 줄었다? iat보다도 숫자가 꽤 작은걸 확인할 수 있는데, 단순..
Spring RestDocs를 통한 Swagger 페이지 구축기 - 1. 구성하기
Spring RestDocs를 통한 Swagger 페이지 구축기 - 1. 구성하기
2022.07.24테스트 코드로 API docs 관리를 할 수 있다고? Spring Rest Docs 라이브러리는 테스트 코드를 작성하면 Asciidoc 파일을 통해서 테스트 코드를 구현할 수 있다. 하지만, 불편한 점들이 눈에 밟혔다. Asciidocs 파일에 대한 이해도가 반드시 필요했으며, Rest Docs가 기본적으로 제공하는 Docs 제공 하는 페이지가 나랑 취향이 너무 안맞았다. 솔직히 보면서 이렇게 까지 써야할까라는 생각을 했었는데… 웹사이트를 뒤적뒤적 거리다 마침 RestDocs 테스트 코드를 바탕으로 Swagger 문서를 구성할 수 있는 라이브러리를 찾아, 그 기능을 사용해보기로 했다. 구축기 가장 본 바탕이 되었던 이 레포지토리를 기준으로 개발 환경 세팅 방법을 확인하자. https://github.co..
Slack으로 Spring boot 에러 로깅 관제하기
Slack으로 Spring boot 에러 로깅 관제하기
2022.07.18토이프로젝트에 로깅은 필수.. 로깅(log)은 프로젝트를 처음 접해본 사람이 아니면, 솔직히 한번쯤은 겪고 가야할 문제이다. 로깅 자체의 구현이 어렵진 않을 것이다. Spring과 같은 Web Framework에서는 이미 로깅 프레임워크를 제공해주기 때문이다. 그중에서 우리는 logback 기능을 활용해서, 서비스를 구현해놓는게 심적으로 편하다. (이미 구현되어있으니까) 로깅 다 좋은데 말야… 로깅이 에러 대응과 같은 역할을 하는게 있고, logback에서는 파일, 콘솔과 같은 툴로 이미 로그를 여러 모습으로 관리를 해주고 있기 때문에, 우리가 이러한 로그 파악에 있어서 파일을 통한 로깅, 혹은 콘솔창에 대한 로그를 통해서 확인을 해줄 수 있다. 문제는 그것이 실시간성으로 확인이 어렵다는 점이다. 왜냐하..