Database - "status" column을 갖는 것에 관하여
2022. 2. 27. 02:09
DB
라이징캠프에서 DB 설계 과제를 하게 되었다. 이 과정에서 조건이 존재했다 1. 모든 테이블에는 createAt,updateAt, status 속성을 갖도록 한다. 2. 한 방 쿼리 라는 것을 작성하는데, 여기서 한 방 쿼리 라는 이름이 붙은 이유 : 하나의 화면에 대한 것을 출력 시키기 위한 쿼리를 작성한다 . 이 때, 최대한 "하나의 쿼리만" 날리도록 작성한다. 나는 여기서, "status" column을 왜 가져야할까 에 대해 고민했다. 대충, 이 status column을 둔다면, 실제 레코드를 테이블에서 제거하는게 아니라 status만을 바꾸게 될 것이라는 생각을 했다. 이렇게만 보면 좋아보였지만, 이는 이제까지 내가 간단한 프로젝트를 만드는데 있어 해오던 과정은 아니었다. 또한 모든 테이블에 ..
HTTP Authentication , Form-based 인증
2022. 2. 23. 10:47
네트워크_aws_등등
Oauth를 사용해보는 실습을 해 보면서, Oauth는 Bearer authentication을 사용한다고 하였음. HTTP authentiacation header는 뭐지? 응답 Http 메시지에만 있는건가? 그럼 평소에 사용하던 Form-based 인증을 위한 인증방법도있는가?? 라는 궁금증으로 찾아보았다. 일반적인 HTTP 인증 프레임워크 HTTP에서는 확장가능한 " 일련의 "인증요구-응답"( challenge - response 인증 전략 )들을 통해 접근 제어와 인증에 관련된 일반적인 프레임워크를 제공하고 있다. 서버에서는 클라이언트 요청에게 어떤 것을 요구(challenge) 하고, 클라이언트에서는, 인증 정보를 제공하는데에 "이런 인증 전략(스킴)" 들을 사용하고 있다. 보안 프로토콜에서 "..
ch02 : 테스트의 필요성
2022. 2. 20. 16:57
책/토비의스프링
단위 테스트 vs 통합 테스트 vs 인수 테스트 [스프링부트 (8)] SpringBoot Test(1) - Junit 설정 및 실행 기존에는 인프런 강의를 들으며 , 강사님께서 작성하시던 테스트코드 따라치기 경험밖에 없었다. 어쨋거나 user case를 테스트 해보기 위해 , 매번 서버를 실행하고, test를 위해 직접 db에서 기존 test를 위해 넣은 데이터를 삭제하거나, 현재 테스트를 위해서 직접 데이터를 넣는 과정이 반복되며 불편함을 느끼게 되었다. unit test.. 이것을 도입은 해봐야할텐데 unit test가 정확히 뭐지? Spring DATA JPA를 사용하는 중, unit test의 도입이 가능할까? 결국 서버를 run시켜야하는 거 아닐까? Mock이 뭐지 ? 순수 JAVA 테스트를 할..
HTTPS와 SSH ( 개요 정도의 수준 글 )
2022. 2. 20. 02:38
네트워크_aws_등등
HTTPS와 SSH HTTPS 역시 데이터를 암호화시켜주는 프로토콜에 해당된다. SSH 와의 차이가 무엇일까? HTTPS 는, 웹 브라우저가 웹 사이트를 출력해 주기 위해 서버와의 커뮤니케이트 하는 것을 도와주는 것 SSH 는, 쉘을 통해서 다른 디바이스와의 데이터 교환이나 커뮤니케이션을 할 수 있도록 해 준다. Shell로는, Linux terminal shell 일 수도 있고, 윈도우의 커맨드프롬프트 쉘 일 수도 있다. terminal 등을 사용한다는 것은, OS에게 말을 거는 것과 같다. 즉 SSH는, 원격의 OS에게 말을 거는 것과 같은 것 그리고 .. 사실 계층자체가 다르긴 하다. SSH는 앞서 말했지만 application layer 프로토콜이고 HTTPS 의 경우 SSL or TLS 라는 "..
DI , 왜 생성자 주입을 하라는 걸까?
2022. 2. 16. 20:27
책/토비의스프링
참조 토비의 스프링 vol1. DI DI의 등장 IoC 컨테이너라던 스프링. DI 라는 용어는 어쩌다가 나왔을까?? IoC 라는 용어는 “매우 폭넓게 적용되고 있는 용어” 이다. 스프링 고유의 것이 아니다. 객체 지향프로그래밍에서 IoC를 구현하는 기술에는 - service locator pattern을 사용 - DI를 사용 - contextualized lookup을 사용 - template method 디자인 패턴 사용 - 전략 디자인 패턴 사용 등등이 있다. 따라서 스프링이 제공하는 IoC 방식을 좀 더 명시적으로, 확실하게 짚어주기 위해 “ DI(의존관계주입)” 이라는 용어가 등장한다. (이게 위에서 말한 DI 다 ) 참고로, 주입이라는 용어를 사용했지만 “참조값”이 외부로부터 “전달” 되어오는 ..
02. 원칙과 패턴
2022. 2. 13. 14:24
책/토비의스프링
Reference 토비의스프링3.1(vol1) 책을 읽으며 정리 및 개인적 이해를 돕기 위한 추가적인 말들 객체지향 설계 원칙(SOLID) 객체지향의 특징을 잘 살리 수 있는 설계의 원칙” 을 말함. 원칙 → 절대적 기준 x → 가이드 라인 같은 것. 디자인 패턴이 좀 더, 특정한 상황의 문제에 대한 “ 구체적인 솔루션” 이다 객체지향 설계원칙은, “좀 더 일반적 상황에 적용가능”한 설계 기준. 디자인 패턴들에선, 객체지향 설계 원칙을 잘 지켜 만들어져 있겠다. 개방 폐쇄 원칙( OCP : Open Closed Pattern ) 클래스나 모듈은 “확장에는 열려” 있고, “변경에는 닫혀” 있어야 한다. 예를들어 , 앞서 만든 UserDao 는 이제, “DB 연결방법 등의 기능을 확장” 할 수 있으면서도, ..
관심사의 분리 ( ~1.3.3)
2022. 2. 9. 14:05
책/토비의스프링
현재 Java Bean이라고 부르는 것 일부 자바빈 규약 정도를 지키는 것을 말함. default 생성자 ( zero parameter consturctor) 를 갖고 있어야 한다 → 툴이나 프레임워크에서 reflection을 이용해 object를 생성하기 때문. property 는 setter나 getter를 이용해 access할 수 있을 것. ( 하지만 Entity의 경우 setter를 오픈하는 것은 좋지 않다. getter도 무조건은 좋지 않다 ) 객체지향 "기술 "은 어떤 것을 말하는 걸까? ( 객체지향적 개념 말고, 기술! ) ==> 변화에 효과적으로 대처할 수 있는 것. 변화에는 대비한다는게 무슨 말이지?? 변화의 폭을 최소한으로 줄여주는 것. ( 코드 여기저기서 변화가 일어난다면 변화의 폭이..
[effective java] Item34 : int const 대신 열거타입(enum 사용) + 그리고 State pattern
2022. 1. 22. 22:35
책/effectiveJava
Item34 : int constant대신 enum을 사용하라 JAVA에서는 두 가지 특별한 reference type을 제공하고 있다. class의 일종인 enum type interface의 일종인 annotation type 기존에는 어떠했나? 정수 열거패턴, int enum pattern 이라고 알려진 기법을 사용했다. named [ int constant ]의 그룹을 선언하여 사용했다. ( JAVA에서는 static final로 선언 ) public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int ORANGE_NAVEL = 0; public static final in..