CS - 프로그래밍

 

Restful API

Restful API는 HTTP 통신을 Rest 설계 규칙을 잘 지켜서 개발한 API입니다.

Rest 설계 규칙은 URI은 정보의 자원만 표현해야 하며, 자원의 상태와 행위는 HTTP Method에 명시하는 것을 말합니다.

URI는 명사를 사용한다, 슬래시로 계층 관계를 포현한다, 마지막 문자로 슬래시를 포함하지 않는다 등의 규칙이 있습니다.

API*: Application Programming Interface로 운영체제와 응용프로그래밍 사이의 통신에 사용되는 언어나 메시지 형식

 

프레임워크와 라이브러리의 차이

둘의 차이는 제어 흐름에 대한 주도권이 누구에게 혹은 어디에 있는가에 있습니다.

프레임 워크는 전체적인 흐름을 쥐고 있고, 개발자는 그 안에서 라이브러리에 대한 흐름을 쥐고 있습니다.

 

둘의 차이를 집을 짓는 과정으로 비교한다면,

프레임워크는 모델하우스를 짓는 것에 비유할 수 있으며, 통제권을 개발자가 아닌 프레임워크가 쥐고 있습니다.

라이브러리는 이케아에서 산 재료로 가구를 조립하는 것에 비유할 수 있으며, 재료의 선택권이나 통제권이 개발자에게 있습니다.

여기서 개발자의 제어권을 프레임워크에 넘김으로써 신경써야 할 것을 줄일 수 있는데, 이를 제어의 역전이라 합니다.

 

결론적으로 프레임워크와 라이브러리 둘 다 코드 작성에 도움이 되는 개발자가 작성한 코드의 집합입니다.

 

 

Call - by - value & Call - by - reference

call-by-value는 값에 의한 호출로 함수가 호출 될 때 메모리 공간 안에서 함수를 의한 별도의 공간이 배정됩니다.

함수 호출 시 Stack Frame이라는 메모리 블록에 임시 공간이 할당됩니다.

값에 의한 호출 방식은 함수 호출 시 전달되는 변수의 값을 복사하여 함수의 인자로 전달합니다.

복사된 인자는 함수 안에서 지역적으로 사용되는 local value의 특성을 가지며, 함수 안에서 인자값이 변해도 외부 값이 변경되지 않습니다.

 

call-by-reference는 참조에 의한 호출로 값에 의한 호출과 마찬가지로 별도의 메모리 공간이 생성됩니다.

참조에 의한 호출 방식은 함수 호출 시 인자로 전달되는 변수의 래퍼런스를 전달합니다.

따라서 함수 안에서 인자의 값이 변경되면 Argument로 전달 된 객체의 값도 함께 변경됩니다.

 

동적 쿼리

동적 쿼리란 실행시에 특정 조건이나 상황에 따라 쿼리 문장이 변경되어 실행되는 쿼리문입니다.

컴파일시에 SQL 문장을 확정할 수 없는 경우에 사용하며, 실행 시점에 따라 where절에 조건이 달라질 때 사용합니다.

쿼리문이 변하냐 변하지 않느냐에 따라 정적 or 동적 쿼리가 됩니다.

 

TDD(Test-Driven-Development)

TDD란 작은 단위의 테스트 케이스를 작성하고 그에 맞는 코드를 작성하여,

테스트를 통과한 후에 상황에 맞게 리팩토링하는 테스트 주도 개발 방식을 말합니다.

반복적인 단계를 거칯면서 자연스럽게 코드의 버그가 줄고, 코드가 간결해진다는 장점이 있습니다.

 

TDD에는 3가지 과정이 있습니다.

- RED : 어떠한 기능을 검증하는 테스트가 실패하는 코드를 작성하고 실제로 실패하는지 확인

- GREEN : 어떠한 기능을 검증하는 테스트가 통과하는 코드를 작성하고 실제로 성공하는지 확인

- REFACTOR : 앞에 실패하는 테스트와 성공하는 테스트를 모두 검증하였다면 작성한 코드를 가독성있게 수정

위 세가지 과정을 반복하며 프로그램을 완성합니다.

 

테스트 코드를 작성하는 이유 

- 기능의 추가, 변경, 삭제로 인한 영향도를 쉽게 파악이 가능

- 예상하지 못한 오류에 대한 피드백

- 좋은 설계로 작성되게끔 코드를 유도

- 기능 정의의 문서의 역할

- 코드 작성 중 실수 감소 

 

JWT 토큰

JWT는 JSON 포멧을 이용하는 Claim 기반의 웹 토큰으로, 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 전달합니다.

헤더와 내용, 서명으로 구성되며 각 파트를 점(.)(닷)으로 구분합니다.

 

헤더 : 토큰의 타입과 해시 암호화 알고리즘으로 이루어짐

내용 : 토큰에 사용자가 담고자 하는 정보를 담음. JSON 형태

서명 : 토큰을 인코딩하거나 유효성을 검증할 때 사용하는 고유한 암호화 코드로 헤더와 내용의 값을 인코딩