영양제, 뭘 먹어야 하나?평소에 건강에 관심이 많은 나는 다양한 영양제를 챙겨 먹는다.어떤 사람은 영양제의 효과에 의문을 품기도 하고, 효능이 크지 않다는 의견들도 더러 있다. 약사, 의사, 교수, 기업 관계자 등 많은 사람들의 영양제에 대한 의견이 다양하기 때문에비판적인 시각을 가지고 잘 판단하여 영양제 섭취를 고려해야 한다. 나는 영양제를 섭취하며 그 효과를 몸으로 체감하고 있기 때문에 영양제 섭취에 긍정적이다.너무 과한 섭취와 맹목적인 신뢰는 지양해야겠지만, 몸에 필요한 성분이 부족할 때 영양제의 도움을 받는 것은건강에 큰 도움이 된다고 생각한다. 영양제에 관한 여러 정보를 찾아보던 중, 한 약사 유튜버(이하 고약사)가 추천하는 영양제 조합에 대해 알게 되었고몇 년째 꾸준히 해당 조합으로 영양제를 ..
필터(Filter)란? 필터(Filter)는 서블릿(Servlet)에 도달하는 요청(Request)이나 서블릿에서 클라이언트에게 보내는 응답(Response)을 중간에 조작하거나 막을 수 있는 JAVA 진영의 기술이다. Filter는 Spring MVC에 종속되지 않아 스프링 환경이 아닌 다른 환경에서도 사용가능하다. 예를 들어 Spring Security는 Filter를 이용한 Authentication 및 Authorization 기술이다. Spring Security를 사용하면 모든 요청과 응답을 중간에서 검증할 수 있다. 이러한 이유로 Spring Security는 Spring MVC 환경이 아닌 곳에서도 사용할 수 있다. Filter Chain 필터는 체인으로 구성될 수 있고 중간에 필터를 자유..
Bean Validation이란? Bean Validation이란 어노테이션을 통해 자바 빈(Java Bean)의 유효성을 검증할 수 있는 기술 표준(JSR380)이다. 어노테이션을 사용하여 유효성 검사 규칙을 정의할 수 있어 사용하기 편리하다. 아래와 같이 자바 빈 클래스의 필드나 메서드에 특정 어노테이션을 적용해 유효성 검사를 수행할 수 있다. @Email private String email; @NotNull private Long id; @Email public String getEmail(){ return email; } 예를 들어 @Email 어노테이션으로 해당 필드에 이메일 형식의 값이 들어오는지, @NotNull 어노테이션을 통해 Null 값을 검사할 수 있다. 이러한 Bean Valida..
OpenFeign 이란? OpenFeign은 선언적인(Declarative) HTTP Client 혹은 REST Client이다. FeignClient로 선언된 인터페이스를 구현하고 어노테이션을 달아주는 것만으로 HTTP Client 서비스를 작성할 수 있다. 이러한 OpenFeign은 Netflix에서 Netflix OSS 프로젝트의 일환으로 개발했다. 이후 오픈소스 커뮤니티로 옮겨졌고 현재는 스프링 클라우드(Spring Cloud) 생태계에 통합되어 Spring Cloud OpenFeign으로 사용 가능하다. OpenFeign vs RestTemplate 만약 다른 외부 날씨 API를 호출하려고 할 때 RestTemplate을 활용하면 아래와 같이 코드를 작성할 수 있다. @Service public..
메시지(Message) 기능 실무를 진행하다 보면 무언가의 이름이 바뀌는 건 심심치 않게 발생한다. 예를 들어 아주 사소하지만 "상품명"이라는 단어를 "상품이름"으로 바꾸라는 지시가 내려왔다고 하자. 만약 화면 수가 수십개가 넘어가는데 일일이 모든 단어를 수정하는 것은 귀찮고 비효율적일 것이다. 스프링은 이러한 다양한 메시지를 한 곳에서 관리할수 있는 메시지(Message) 기능을 제공한다. 예를 들어 아래와 같이 messages.properties 라는 메시지 관리 파일을 만들어 관리할 수 있다. item.itemName=상품명 item.price=가격 item.quantity=수량 ... 이렇게 메시지를 관리하면 상품명을 화면에서 사용할 때 "상품명"으로 하드코딩하지 않고 "item.itemName"..
에러 상황 스프링으로 백엔드를 개발하고 포스트맨으로 API 테스트를 해보려고 했다. 그런데 스프링에서 ambiguous handler methods mapped for HTTP Method 에러를 뱉었다. 해결법 이건 한 Controller에서 매핑되는 URL이 중복되기 때문에 발생하는 에러다. 따라서 메서드들간 매핑되는 URL이 중복되는게 없는지 확인해야 한다. 특히 내 경우에는 아래와 같은 경우가 발생했다. @RestController public class SomeController{ @GetMapping("/v1/{purpose}") public ResponseDto method1(...){ ... } @GetMapping("/v1/{money}") public ResponseDto method2..
에러 상황 윈도우10에서 지원하는 원격 데스크톱 연결을 통해 특정 시스템의 개발 서버에 접속하려고 했다. 그런데 [그림 1]과 같이 'CredSSP 암호화 오라클 수정 때문일 수 있습니다.'라는 에러가 발생했다. 이 문제는 마이크로소프트에서 CresSSP 버전의 원격 코드 실행 취약성을 보완하기 위한 보안 업데이트로 인해 발생하는 것으로 보인다. 해결법 해당 오류는 근본적으로 보안 취약성을 보완해야 하기 때문에 접속을 시도하는 클라이언트와 접속하려는 서버 측 모두 윈도우 업데이트를 진행하는 게 좋다. 대부분 클라이언트와 서버의 윈도우 최신 업데이트를 통해 오류를 해결할 수 있지만, 피치 못할 사정으로 윈도우 업데이트를 진행할 수 없거나 기타 사유로 해결이 안 된다면 아래 방법을 시도해 볼 수 있다. 1)..
파킹통장이란? 파킹(Parking) 통장은 말 그대로 돈을 잠시 주차해 두기에 좋은 통장이다. 입출금이 자유로운 편이며 금리가 일반 입출금통장보다는 높은 편이기 때문이다. 나도 주식을 사기전에 현금을 확보해 두려는 용도로 파킹통장을 활용한다. 주식 계좌에 돈을 넣어놓는것보다 파킹통장의 금리가 더욱 크기 때문이다. 따라서 주식을 사고 싶을 때 파킹 통장에서 돈을 입금해 주식을 사는 전략을 사용한다. 이처럼 파킹통장은 자유로운 입출금과 꽤 높은 금리라는 장점을 활용해 여러 가지 용도로 사용할 수 있다. 물론, 돈을 한동안 꺼내지 않을 거라면 다른 상품을 활용하는게 더 높은 수익을 얻을 수 있으므로 잘 비교해 보자! 파킹통장 금리비교 시중에는 다양한 파킹통장 상품들이 있다. 어떤 상품이 무조건 좋다고는 할 수..
Bean Validation API를 개발하다 보면 DTO에 들어오는 값을 검증해야 할 때가 있다. 예를 들어 이름은 공백이면 안된다던지, 휴대폰 번호는 null이 아니 여야 한다는 등의 조건들이 있을 것이다. 이러한 검증은 Jakarta Bean Validation에서 제공하는 @NotNull @NotBlank, @NotEmpty 등의 어노테이션을 활용하면 간단하다. 어노테이션을 적용하지 않을 경우 @PostMapping(...) public ResponseEntity buy(@RequestBody BuyRequestDto buyRequestDto){ if(buyRequestDto.getName() == null){ return new ResponseEntity("Error", HttpStatus.BA..
문제 https://edu.goorm.io/learn/lecture/17301/cos-pro-1%EA%B8%89-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-java/lesson/839399/1%EC%B0%A8-%EB%AC%B8%EC%A0%9C5-%EC%86%8C%EC%9A%A9%EB%8F%8C%EC%9D%B4-%EC%88%98-java 구름HOME 구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다. www.goorm.io COS PRO 1급 기출문제 중 위 문제가 꽤 재밌어서 가져와봤다. N*N 격자에 1부터 N까지의 수가 소용돌이 순서로 있을 때 대각선상에 있는 수들의 합을 구하는 문제다. 풀이 ..