주녁, DevNote
article thumbnail
아시나요? TDD, Clean Code
Do you know? 2023. 1. 18. 22:25

지적과 댓글은 언제나 환영합니다! 이 글은 박재성님의 자바 플레이그라운드 with TDD, 클린코드 강의를 바탕으로 작성되었습니다. TDD TDD를 하는 이유 디버깅 시간을 줄여준다. 동작하는 문서 역할을 한다. 변화에 대한 두려움을 줄여준다. TDD 프로세스 실패하는 테스트를 구현한다. 테스트가 성공하도록 프로덕션 코드를 구현한다. 프로덕션 코드와 테스트 코드를 리팩토링한다. (테스트 코드도 중복이 발생할 수 있기 때문) TDD 원칙 실패하는 단위 테스트를 작성할 때까지 프로덕션 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다(미래까지 걱정 X) TDD 방법론 (필수는 아님!) 큰 갈래에서..

article thumbnail
아시나요? REST, REST API, RESTful API
Do you know? 2023. 1. 18. 22:19

지적과 댓글은 언제나 환영합니다! 개요 공학자로써 단어의 정의는 굉장히 중요하다. 오늘은 논쟁이 굉장히 많은 주제이자, 헷갈리기 쉬운 주제인 REST와 REST API, RESTful API에 대해 알아보도록 하자. 범위 정의를 살펴보기에 앞서 범위를 살펴보고 가자. 위 그림을 기준으로 살펴보면 REST는 어떠한 큰 범주이고, RESTful API는 완전히 REST에 속한 것으로 보인다. 반면, HTTP API는 REST API랑 유사하다고 적혀있고 REST, RESTful API와 일부 공통점이 있어보인다. 그렇다면 각각 어떤 정의길래 위와 같은 그림이 나오는 것일까? 정의 요약하면 다음과 같다. REST : 분산 하이퍼미디어 시스템을 위한 아키텍쳐 요소를 추상화 한 것. RESTful API : RE..

article thumbnail
아시나요? 프로세스(Process)와 쓰레드(Thread)
Do you know? 2023. 1. 18. 22:15

지적과 댓글은 언제나 환영합니다! 들어가기에 앞서 프로세스(Process)와 쓰레드(Thread)의 차이를 설명하기에 앞서 프로그램(Program)의 정의를 짚고 넘어가자. 어떤 문제를 해결하기 위해 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문의 집합체. (국어표준대사전) 그렇다. 프로그램은 명령문의 집합체이다. 코드의 덩어리일뿐 아직 실행되지 않은 상태이다. 이 상태를 정적(static)인 상태라고 한다. 반대로, 동적(Dynamic)인 상태도 있다. 실행시, 메모리에 프로그램이 적재되는 것을 동적인 상태라고 한다. 그리고 이렇게 동적인 상태에 있는 프로그램을 *프로세스라고 한다. *P.S 스케줄러 입장에서는 작업(task)라고 부르기도 한다. 운영체제와 프로세스 프로세스는 프로그램이 ..

article thumbnail
아시나요? IoC & DIP
Do you know? 2023. 1. 18. 22:11

지적과 댓글은 언제나 환영합니다! 어느 한 피자가게.. 이 피자가게에는 고용주와 직원이 있다. 피자를 만드는 직원은 고용주가 고용했지만, 정작 손님 명령에 따라 피자를 만든다. 프로그래밍의 많은 부분은 현실세계를 모방하여 만들어진다. 서비스를 제공하는 쪽이 사용하는 쪽에 의존한다. 이를 제어의 역전(IoC, Inverse of Control)라고 부른다. IoC도 피자가게와 같은 맥락을 가진다. IoC는 의존관계를 최소화하기 위해 사용한다. 그렇다면, 의존관계 최소화는 왜 필요할까? 피자와 의존관계 의존관계 설명에 앞서, 피자를 만드는 직원 A와 서빙을 하는 직원 B가 있다고 해보자. A는 누가 주문했는지 몰라도, 피자를 만들 수 있다. B는 피자 레시피를 몰라도, 피자를 전달할 수 있다. 서로 하는 일..

article thumbnail
아시나요? 쿠키(Cookie), 캐시(Cache), 세션(Session)
Do you know? 2023. 1. 18. 22:08

지적과 댓글은 언제나 환영합니다! 시작에 앞서 이야기를 하기 전, 탄생 배경에 대해 알고가면 더욱 좋다. HTTP 프로토콜은 비연결성(Connectionless), 무상태성(Stateless)을 가지기 때문에 클라이언트가 누구인지 저장하지 않는다. 때문에 매 요청마다 사용자, 권한 등을 확인해야 한다. 이러한 특성을 보완하기 위해서 쿠키, 캐시와 같은 개념이 등장헀다. 쿠키(Cookie) 쿠키는 사용자의 브라우저에 저장되고, HTTP 헤더에 포함되는 텍스트 데이터 파일이다. 쿠키는 아래와 같이 1개의 데이터쌍과 4개의 속성으로 구성되어 있다. Set-Cookie: name=value; expires=[Date]; domain=[Domain]; path=[Path]; [Secure] expires : 쿠키..