본문 바로가기

분류 전체보기

(17)
[cURL] cURL정리 cURL 이란? 다양한 통신 프로토콜을 이용하여 데이터를 전송하기 위한 라이브러리 https://github.com/curl/curl/ http 프로토콜 테스트 시 유용하게 사용할 수 있다. 매번 검색하면서 사용해서 이번 기회에 정리한다 명령어 정리 shortcut options description example -X —request 요청 메서드를 설정 curl -X GET http://localhost:8080 -H —header 요청 헤더를 추가 curl -X GET http://localhost:8080/api/v1/users -H "Authorization: Bearer {token}" -d —data body 데이터를 쿼리스트링으로 보냄 curl -X POST http://localhost:8..
[security] 스프링 시큐리티 기능 정리 5.1. Authentication(인증) 5.1.1 Autentication Support 스프링 시큐리티는 사용자 인증 처리를 기본적으로 지원한다 5.1.2 Password Storage Password Storage History 스프링 시큐티리는PasswordEncoder 인터페이스를 통해 비밀번호를 안전하게 저장할 수 있는 단방향 변환을 수행한다. org.springframework.security.crypto.password.PasswordEncoder 스프링 시큐리티 5.0부터 BcryptPasswordEncoder가 기본값이 되었다. (before: NoOpPasswordEncoder) DelegatingPasswordEncoder 과거 어플리케이션의 레거시 비밀번호 방식과 현재 변경된 비..
spring4shell 취약점 내용 정리 spring4Shell Spring4Shell은 Spring Core 프레임워크에서 발견된 새로운 제로데이 취약점이다. 해당 취약점 이슈는 애플리케이션에서 인증되지 않은 원격 코드 실행(Remote Code Execution, RCE)을 허용하는 것으로 나타났다. 3월 29일 CVE-2022-22963으로 추적된 새로운 Spring Cloud Function 취약성이 공개 되었다. 그러나 더 중요한 Spring Core RCE 취약성에 대한 정보가 중국 사이트에 유포되었다. 발생의 원인은 안전하지 않은 역직렬화에 의해 발생한다고 한다. 해당 이슈에 대해 잘 정리된 포스팅을 첨부한다 https://github.com/lunasec-io/lunasec/blob/master/docs/blog/2022-03-3..
[gradle] spring boot & react 프로젝트 빌드하기 siouan/frontend-gradle-plugin 플러그인은 Node.js 기반의 빌드를 Gradle 에 통합할 수 있다. 메이븐 빌드를 사용할 경우 eirslett/frontend-maven-plugin 플러그인을 사용하면 된다. 테스트 환경 Backend Spring Boot 2.6.5 JDK 11 Frontend Create-React-App ReactJS 17.0.2 Node 14.17.3 React-Scripts v4.xx (5버전일 경우 http-proxy-middleware 라이브러리로 proxy 구현) Project Structure backend : gradle 빌드 spring-boot 프로젝트 frontend : cra 기반 react 프로젝트 frontend config App...
[generic] raw type 사용을 지양하자 Hello, Generic 제네릭이 나오기 이전까지는 컬렉션에서 객체를 꺼낼 때마다 객체 타입을 지정하도록 형변환을 해주어야 했다 형변환의 오류는 런타임 시점에서 오류를 발견할 수 있었다 제네릭을 사용하면 위와 같은 문제를 컴파일 시점에서 확인할 수 있기 떄문에 더 안전하고 명확한 프로그램을 만들어준다 제네릭이란 ? 제네릭 클래스, 제네릭 인터페이스: 클래스와 인터페이스 선언에 타입 매개변수가 쓰이는 경우를 말한다 ex) public interface Set extends Collection 우리는 제네릭 클래스와 제네릭 인터페이스를 통틀어 제네릭 타입(generic type) 이라고 부른다 제네릭 타입은 매개변수화 타입(Parameterized type)을 정의한다 ex) List : List 클래스의..
Spring Scheduler Spring task Scheduling ThreadPoolTaskScheduler ScheduledExecutorService에 작업을 위임하고 TaskExecutor 인터페이스를 구현한다 내부 스레드 관리에 적합하다 단일 인스턴스가 @Scheduled 비동기 스케쥴링을 처리할 수 있다 Thread 명에 ThreadPoolTaskScheduler 접두어가 붙는다 public class ThreadPoolTaskSchedulerConfig { @Bean public ThreadPoolTaskScheduler threadPoolTaskScheduler(){ ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); thr..
HashMap vs HashSet in Java 코딩테스트를 연습하는 도중 hash를 사용하는 문제를 풀다 HashMap이 더 성능이 좋다는 것을 배우게 되어 내용을 정리해보려고 한다. HashSet이란? Set 인터페이스를 구현하고, 중복 개체를 가지지 않는 컬렉션 프레임워크이다. equals(), hashCode() 를 재정의해야 중복 여부를 체크할 수 있다. Thread Safe 하지 못하고 동기화하지 않는다.public boolean add(Object obj) 고유한 값이 추가될 경우 true를 반환하고, 중복된 값을 추가할 경우 false를 반환한다. HashMap이란? Map 인터페이스를 구현하고, 키를 값에 매핑하는 해시 테이블이다. 중복 키를 허용하지 않지만 중복 값을 허용한다 Thread Safe하지 못하고 동기화하지 않는다. 중복값..
[intelij] 유용한 플러그인들 Translation : 번역 Google 번역이 default 로 설정되어 있고 Youdao, Baidu, Alibaba 엔진을 지원한다 context menu 지원으로 사용이 편리하다 Multirun : 다중 어플리케이션 실행 기능 multiple run configuration: 한번의 클릭으로 다중 어플리케이션을 실행할 수 있다. CamelCase : 문자 표기법을 간단하게 변경한다 kebab-case, SNAKE_CASE, PascalCase, camelCase, snake_case, space case 지원 단축키 : MacOS : ⇧ + ⌥ + U WinOS : Shift + Alt + U
[Insomnia] environment 설정하기 insomnia environment 설정 방법 (매우 쉬움 주의) 환경변수를 설정하여 개발 환경 변경 시 유연하게 대응할 수 있다 No Environment > Manage Environments SubEnvironment > Environment 원하는 Environment를 작성하여 유연하게 사용할 수 있다 아래처럼 선언한 키 값을 value 값으로 사용할 수 있다(control + space) check Envoronment & 요청에서 key 값을 가져와서 사용할 수 있다(control + space)
I. 인터페이스 분리 원칙(Interface Segregation Principle) 인터페이스 분리 원칙이란? 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다 라는 원칙이다. 어떠한 인터페이스가 서로 다른 메서드를 사용하는 클라이언트가 사용한다면 좋은 설계가 아니다. 인터페이스의 변화에 따라 모든 클라이언트에 영향을 줄 수 있기 때문에 사용 기능에 따라 인터페이스를 분리하는 것이 내부 의존도를 낮출 수 있고, 구현 클래스가 관심있는 메소드에 대해서만 관심을 가질 수 있다. 인터페이스 분리 원칙이 지켜지지 않은 코드 public enum Duty { PERSONAL_FINANCE("개인 금융 업무"), ENTERPRISE_FINANCE("기업 금융 업무"), PB("Private Banking 업무"); private final String desc; Duty(String..