분류 전체보기 (46) 썸네일형 리스트형 최소한의 AWS 보안: Bastion Host 1. 도입 계기처음 Bastion Host를 알게 된건 패스트 캠퍼스의 강의에서 였다. 그때 강사님께서 사용하시는 걸 보고 조금 공부를 한 후 이것이 보안 조치였다는 걸 알게 되었다. 마침 처음 도메인 주소가 있는 프로젝트를 만들어 보려고 한 나는 보안에 관해 전무 하다는 사실이 막연히 조금 두려웠었다. 이에 최소한의 보안 설정을 해보자고 선택했던 Bastion Host. 이게 최선의 보안설정은 아니더라도 이때나 지금이나 Bastion Host를 사용한다면 가장 큰 이유는 SSH 접속시 어플리케이션 서버의 IP를 외부에 노출하지 않아도 된다는 점이 큰 것같다. On-Premise에서 Bastion Host를 만든다면 그 라우팅, 인증, 로그등 다양한 기능들을 하도록 할 수도 있겠지만 다양한 서비스가 제.. Vim 사용기 (ColorScheme & Terraform) 0. 개요테라폼을 사용하기위해 vim에 .tf파일을 제작려고 하는데 가독성이 떨어져 color scheme을 적용하고 vim을 배워본다. vi, vim은 유닉스 기본 편집기라 맥OS에서는 설치가 되어 있지만 윈도우의 경우 따로 설치해 주어야 한다.vim 명령어: https://stricky.tistory.com/135 1. Vundle 설치:PluginInstall을 하기위한 플러그인 매니저 입니다.git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 2. ./vimrc 파일 만들기-1. Home 디렉토리에 .vimrc 파일을 만들어 준다.vim ~/.vimrc -2. .vimrc에 플러그인 설치와 설정 코드를 작성.. Protocol Buffer 1. 프로토콜 버퍼란? 구글에서 개발한 데이터 직렬화 구조. 데이터를 주고 받을 때 JSON보다 더 효율적으로 정의하고 압축한다. 언어와 플랫폼에 중림적이다. 포맷을 정하기만 하면 컴파일시 C++, Java, Python등에서 이용 가능. 2. TypeJava TypeProto Typeintint32/sint32longint64/sint64floatfloatdoubledoublebooleanboolStringstringbyte[]bytes*sint means signed int (음수, 양수 모두 허용) 3. JSON 과 속도차이- JSON을 ObjectMapper로 직렬화/역직렬화 하는것과 굉장한 차이가 난다. (거의 8배)*자바는 cold start problem 때문에 첫번째 테스트 결과는 신뢰하기.. 람다식 - 기본 - 1. 람다식은 기본적으로 익명객체이다. Object obj = new Object(){ int max(int a, int b){ return a > b ? a : b; }}obj.max((x,y) -> a > b ? a : b); 그렇지만 Object에는 max라는 함수가 없다. 2. 그래서 인터페이스가 필요하다.-> Stream 과 IntStream인터페이스 등에 함수가 정의되어 있고 구현도 따로 되어 있다. Optional min(Comparator var1); Optional max(Comparator var1); 그러나 커스텀하게 구현하려면 public static void main(String[] args){ MyFunction2 f = (a,b) -> a > b.. AssertJ 1. 지원 AssertJ Core 3.x 에는 Java 8 이상이 필요 AssertJ Core 2.x 에는 Java 7 이상이 필요 2. 대표 메소드 기본: assertThat() isNotEqualTo, isEqualTo contains, isNotEmpty, isNotNull, isEmpty, isNull startsWith, endsWith 3. 예외 처리 @Test @DisplayName("IllegalArgument 예외 처리") void illegalArgs() { assertThatIllegalArgumentException().isThrownBy(() -> { throw new IllegalArgumentException("Illegal args!"); }).withMessage("%s!".. Mockito & MockMvc @ExtendWith(MockitoExtension.class) class ItemRegisterControllerTest { @InjectMocks private ItemRegisterController itemRegisterController; @Mock private ItemRegisterService itemRegisterService; private MockMvc mockMvc; private ItemSaveForm saveForm; private ItemDTO itemDTO; ObjectMapper mapper = new ObjectMapper(); @Before public void initAll(){ mapper = new ObjectMapper(); mapper.setVisibility(.. HTTP 응답코드 1. 400대 에러 - 400(Bad Request) 서버가 클라이언트의 요청을 이해하지 못할 때 발생. (잘못된 문법, Method, header, 내용누락등) - 401(Unauthorized): 권한 없음(Authentication관련) - 403(Forbidden): 엑세스 금지 (Authorization 관련) - 404(Not Found): 클라이언트가 요청한 문서를 찾지 못함. - 405(Method not allowed): 메소드 매칭이 되지 않을때 -406(Not Acceptable): 클라이언트가 Accept-*헤더에 지정한 항목 관해 처리할 수 없음. - 415( : 지원되지 않는 형식의 요청이라 서버가 승인 거부. 2. 500대 에러 - 500(Internal Server Error.. 스프링 테스트중 에러 1. 첫번째 에러 java.lang.AssertionError: Status expected: but was: - @Getter가 없어서 자주 발생하는 에러라고 한다. 이 경우에는 DTO에 @Getter의 부재로 Jackson라이브러리의 직열화/역질렬화에서 오류가 생겼다. (Jackson라이브러리가 response를 보낼때 DTO를 직렬화 시키는데 Getter의 부재로 그러지 못하여 406 Not Acceptable에러가 나왔다.) 2. 두번째 에러 Strict stubbing argument mismatch. Entity를 테스트용으로 만들어서 스터빙 했지만 리포지토리에서 돌아오는 엔티티는 실제상황에서 내가 서비스 코드에 주입하여 JPA 로 보낸 엔티티와 다르다. 그래서 미스매치. 이 경우 내가 제작한.. Fetch API & 스프링 시큐리티 CSRF 1. FetchAPI로 AJAX로 보낼때. -> 이 예제에서 타임리프를 적용하여 가져왔음 -> head에 meta정보를 넣어주고 fetch API 보낼때 header에 넣어서 전송. dashboard 2. 만약 폼태그로 보낸다면 스프링 시큐리티가 으로 csrf 토큰을 넣어준다. 출처 Fetch API DaleSeo: https://www.daleseo.com/js-window-fetch/ 생활코딩: https://www.youtube.com/watch?v=ufjCFdG_4fo sisiblog: https://sisiblog.tistory.com/261 CSRF kimujin99.log: https://velog.io/@kimujin99/Side-project-Spring-Security-CSRF-Toke.. Gradle 도메인 객체 1. Project 객체 ◍ Project객체: 프로젝트의 환경구성, 의존관계 , 태스크 등의 내용을 제어 및 참조 ◍ build.gradle과 대응 ◍ Project 객체의 생명주기 ○ 빌드 수행을 위한 Settings객체 생성 ○ settings.gradle 스크립트 파일이 있을 경우 Settings 객체 비교 ○ 구성된 Settings 객체를 이용하여 Project객체의 계층 구조 생성 ○ 멀티 프로젝트일 경우 부모 프로젝트로 부터 Project 객체 생성 후 자식 프로젝트의 Project생성 ◍ Project 객체 구조 ○ TaskContainer ◼ taskcontainer.print 매서드 이용해서 클래스 컴파일, war파일 압축, 단위 테스트 등 실행 ◼ getbyname등 이용해 프로젝트 .. 이전 1 2 3 4 5 다음