Java
Slack App Directory를 활용하여 Webhook보다 퀄 좋은 메세지 발송하기
Slack App Directory를 활용하여 Webhook보다 퀄 좋은 메세지 발송하기
2024.05.12Legacy Integration....Slack 웹훅을 발송하면 구) 버젼을 이용하다보면 문제가 발생할 수 있는데, 해당하는 문제는 다음과 같다.→ 웹훅 만든사람이 나가면 그 웹훅이 비활성화된다는 것!그리고 Incoming webhook 들어가면 경고 문구가 계속 뜨기 때문에 개발자인 이상 눈길이 갈 수 밖에 없다.그러면 App Directory로 이전하기 위해서는 어떤 기능을 활용해야하고, 어떻게 하면 퀄 좋은 메세지 발송해야할 수 있는지 확인해봅시다.물론 Webhook도 쓸수 있다.웹훅도 당연히 쓸 수 있다. 문제는 Webhook은 SaaS 서비스에서 양식을 제공하면 사실 필요없지만, 양식을 만들려면, Blockit을 활용해서 해당하는 양식을 만들 수 있는데, 단점이 하나 있다.웹훅의 메세지의 타이..
클린 코드 - 1. 객체 지향 생활 체조
클린 코드 - 1. 객체 지향 생활 체조
2024.03.31클린코드 with java 17기를 들었던 경험 및 거기서 피드백 받았던 내용을 공유를 하려합니다. 저는 10월 30일부터 12월 31일까지 클린코드 강의를 코드리뷰, 강의를 끝까지 완료를 했습니다. 실제 강의 일자는 6주 과정이였지만, 업무 + 과제 까지 다해내게기엔 굉장히 빡센 과정이였지만... 배운점은 있었고, 다 아는 내용일지언정, 공유는 드리는 것이 좋아보여 전달을 드립니다. 객체지향 생활 체조란? 겍체지향 생활체조를 지켜 보는것이 왜 중요한가? (저도 못지키지만...) 생활체조 원칙은 좋은 품질의 소프트웨어를 만들기 위한 응집도(cohension), 느슨한 결합(loose coupling), 무중복(zero duplication), 캡슐화(encapsulation), 테스트 가능성(testab..
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::new) .s..
Deprecated 잘쓰는 법
Deprecated 잘쓰는 법
2023.09.02Deprecated 잘쓰는 법 안쓰는 거긴하지만, 코드의 남아있는 경우 오용을 방지하기 위해서라도, Deprecated가 필요하다 그러면 이 경우 Deprecate를 사용하는 방법에 대해서 찾아봤다. 나는 주석에 @Deprecated를 자주 사용했는데, 그외에 다른방법이 있는지도 찾아보니, 오라클에서 제공하는 가이드라인이 존재하여 찾아보았다. 결론을 먼저 말하자면, @Deprecated라는 일반 어노테이션과, javadocs에 사용해야할 @deprecated를 동시에 섞어써야함. 기본적으로 @Deprecated는 컴파일때 주의 문구를 띄워줌. IDE에서 노란색 줄이 그어짐. 그런데, Javadocs에만 @deprecated를 작성해놓으면 그게 적용되지 않음. 즉, 문서에도 @deprecated가 적용되고..
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보다도 숫자가 꽤 작은걸 확인할 수 있는데, 단순..
Java String + 연산은 정말 빠른가?
Java String + 연산은 정말 빠른가?
2021.11.21검증 안된 것에 대해서 당당하게 말하기! ㅋㅋ; 스터디 도중에 페이스북에서 본 기억이 나서 공유했었던 의제이다. +가 StringBuilder보다 빠릅니다! 라고 당당하게 언급했었는데, 막상 스터디 팀원들의 질문 공세에 어버버하며 재대로 대답을 못해드리게 되었다. 그 덕분에 자세히 찾아보게 되었는데, 원글을 읽고 글의 정확성을 한번 확인해보는 과정이 필요했었으며 심지어 더 자세히 아래쪽을 보면 더 정확하게 설명이 있음에도 불구하고 +가 StringBuilder보다 빠릅니다! 더 빠르다는 것에 심취해 있어 잘못된 정보를 전달할뻔 했었다. 그래서 그런 정보를 바로 잡기도하며, 지식 정리도 해보고 싶어서 작성하게 되었다. + 연산이 진짜 빠른가? String 연산은 코딩테스트와 여러 상황에서 + 보다 Stri..
자바를 더 활용성있게 써보자. - Foreach,삼항 연산자, enum
자바를 더 활용성있게 써보자. - Foreach,삼항 연산자, enum
2019.12.08최근에 팀프로젝트나 헤커톤을 나가면서 열심히 자바를 활용할 기회가 많았는데, 간단한 식을 변수명이 길어지면서 코드가 난잡해지기도 하고 좀 더 가독성이 좋거나 혹은 좀 더 중복을 제거할 방법이 없을까 고민하면서 이것저것 많이 찾아냈다. 그래서 정리겸사 적어본다. 어떤 기술들이 있으려나..? 내가 오늘 정리할 것들은 총 4가지 정도로 1. Foreach 2. 삼항 연산자 3. Enum 4. lambda이다. 1. Foreach Foreach문은 for문의 여러가지 조건들을 축약해서 줄일 수있다는게 장점입니다. 물론 세부적인 조절이 안되는 게 단점. for(int i =0; ib){ k = 1; } else{ k=2; } /// 삼항 연산자로 바꾸면 이렇게 된다. int k (a>b) ? 1:2; //만족하면..