개발 일지/CS 44

[Web] Session

세션(Session)은 웹사이트에서 사용자 상태를 유지하기 위한 기술 중 하나이다. 쿠키와 달리 세션은 웹 애플리케이션 서버 측에서 사용자 정보를 저장하며, 사용자가 로그인하거나 다른 작업을 수행할 때 생성된다. 이를 통해 사용자는 웹사이트에서 다양한 작업을 수행하며 상태를 유지할 수 있다. 세션은 일반적으로 SessionID라는 고유한 값으로 식별되고 SessionID는 쿠키, URL 임베딩, 헤더 등을 통해 전송된다. 세션을 이용한 상태 유지는 쿠키를 이용한 상태 유지와 달리 보안적인 측면에서 더 안전하다. 쿠키는 브라우저에 저장되기 때문에 사용자가 브라우저에서 쿠키를 삭제하거나 다른 브라우저에서 접속하면 이전의 상태를 복원할 수 없지만, 세션은 서버 측에서 관리되기 때문에 사용자가 로그아웃을 하거나..

개발 일지/CS 2023.03.15

[Web] Cookie

쿠키(Cookie)는 클라이언트와 서버 간에 정보를 교환하기 위해 사용되는 작은 텍스트 파일이다. 쿠키는 클라이언트 측에서 저장되며, 클라이언트가 다시 서버로 요청을 보낼 때 함께 전송된다. 쿠키는 이름과 값으로 구성되며, 예를 들어 이름이 'username'이고 값이 'jaeyun'이면 다음과 같이 표현된다. username=jaeyun HTTP는 stateless(무상태성)의 특징을 갖고 있는데, 쿠키를 사용하면 사용자의 정보를 기억할 수 있기 때문에 이러한 HTTP의 단점을 해결할 수 있게 된다. 이러한 이유로 쿠키는 웹사이트에서 로그인, 장바구니 등의 기능을 제공하는 데 사용된다. 특징 서버는 쿠키를 이용하여 데이터를 저장하고 원할 때 데이터를 다시 불러와 사용할 수 있다. 하지만 데이터를 저장한..

개발 일지/CS 2023.03.14

[Web] HTTPS

HTTPS(Hyper Text Transfer Protocol Secure Socket layer)는 HTTP 요청을 SSL/TLS 라는 알고리즘을 이용해서 HTTP 통신을 하는 과정에서 데이터를 암호화하여 전송하는 방법이다. 즉, 인터넷 상에서 데이터를 안전하게 전송하기 위해 사용되는 프로토콜이다. HTTPS를 사용하면 클라이언트와 서버 간의 통신이 암호화되므로, 중간에서 데이터를 가로채더라도 내용을 확인하는 것이 어려워진다. 따라서, 인터넷 상에서 민감한 정보(인터넷 뱅킹 등)를 주고받을 때 필수적으로 사용되어야 한다. 클라이언트와 서버가 데이터를 암호화하여 주고받기 위해서 일반적으로 공개키 암호화 방식을 사용한다. 클라이언트와 서버 간의 통신을 위해 서버는 공개키와 개인키를 생성한다. 생성된 공개키..

개발 일지/CS 2023.03.14

[CS] Hamcrest

Hamcrest는 JUnit 기반의 단위 테스트에서 사용할 수 있는 Assertion Framework이다. Hamcrest는 Java 프로그래밍 언어를 사용하는 개발자들을 위한 테스트 프레임워크로 다양한 매처(matcher)를 제공하여 테스트 케이스를 작성할 때 코드의 가독성을 높이고 유지보수성을 높일 수 있도록 도와준다. 매처는 객체나 값을 검증하는 도구인데, 이 매처를 통해 다양한 타입의 객체나 값을 검증할 수 있고 작성된 코드가 자연스러운 문장으로 이어지므로 테스트 실패 메시지를 이해하기 쉽다. JUnit이나 TestNG 등 다양한 테스트 프레임워크와 함께 사용할 수도 있고 개발자가 직접 매처를 작성하여 확장할 수도 있다. public class Person { private String firs..

개발 일지/CS 2023.03.06

[CS] DDD

DDD는 Domain Driven Design(도메인 주도 설계)의 약자로, 소프트웨어 개발에서 시스템의 복잡성을 다루기 위한 설계 방법론 중 하나이다. 성능, 생산성, 안정성 면에서 뛰어난 애플리케이션을 만들기 위해 가장 중요한 영역인 애플리케이션의 설계는 구현보다 더 어렵다고 한다. 그래서 오래전부터 많은 사람들이 애플리케이션 설계에 대해 고민한 결과물 중 하나가 DDD이다. DDD는 비즈니스 도메인을 중심으로 소프트웨어를 설계하고 개발하는 방법을 제공하며, 이 방법을 통해 비즈니스 로직과 데이터를 모델링하고 그것들이 코드에서 잘 표현되도록 할 수 있다. 따라서, 복잡한 도메인 문제를 유용히 다룰 수 있고 개발자와 비즈니스 전문가 간의 소통을 촉진하는 데 도움이 된다. 도메인 도메인(Domain)이란..

개발 일지/CS 2023.03.04

[CS]Framework

"Framework란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것이다." - Ralph Johnson 프레임워크는 어떠한 목적을 달성하기 위해서 복잡하게 얽혀있는 문제를 해결하기 위한 구조이다. Frame이란 단어의 사전적 의미는 '뼈대', '틀'이다. 즉, 어떤 대상의 큰 틀이나 외형적인 구조를 의미하며, 프레임워크 역시 소프트웨어 개발에서 하나의 뼈대 역할을 한다고 볼 수 있다. 프레임워크를 사용하면 애플리케이션의 핵심 로직을 개발하는 것에 집중할 수 있다. 이미 기본 구조가 만들어져 있는 상황에서 코드를 작성하기 때문이다. 또한, 애플리케이션을 효율적으로 관리할 수 있다. 프레임워크의 규약에 맞게 코드를 작성하기 때문에 유지..

개발 일지/CS 2023.02.02

[DB] ACID

ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 말한다. 트랜잭션은 여러 개의 작업을 하나로 묶은 실행 유닛으로, 각 트랜잭션은 하나의 특정 작업으로 시작해 묶여있는 모든 작업들을 완료해야 정상적으로 종료한다. 만약 하나의 트랜잭션 속에 속한 여러 작업 중에서 단 하나의 작업이라도 실패하면 모든 작업을 실패한 것으로 판단한다. 따라서, 미완료된 작업 없이 모든 작업을 성공해야 한다. 데이터베이스 트랜잭션은 ACID라는 특성을 갖고 있으며, ACID는 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 지속성(Durability)으로 이루어져 있다. Atomicity(원자성) 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는..

개발 일지/CS 2023.01.30

[Web] HTTP Messages

HTTP(HyperText Transfer Protocol)는 HTML과 같은 문서를 전송하기 위한 Application Layer 프로토콜이다. 웹 브라우저와 웹 서버의 소통을 위해 디자인 되었으며, HTTP는 특정 상태를 유지하지 않는 특징(Stateless, 무상태성)이 있다. HTTP messages는 클라이언트와 서버 사이에서 데이터가 교환되는 방식으로 타입은 요청(request)과 응답(response)이 있다. 요청과 응답은 다음과 같이 비슷한 구조를 가진다. start line : 요청이나 응답의 상태를 나타낸다. 항상 첫 번째 줄에 위치하며 이 줄은 한 줄로 끝난다. 응답에서는 status line이라고 부른다. HTTP headers : 요청에 대한 설명 혹은 메시지 본문에 대한 설명이..

개발 일지/CS 2023.01.26

[Web] AJAX

AJAX(Asynchronous JavaScript And XMLHttpRequest)는 JavaScript, DOM, Fetch, XMLHttpRequest, HTML 등의 다양한 기술을 사용하는 웹 개발 기법이다. 기본적으로 HTTP 프로토콜은 화면의 내용을 갱신하기 위해서는 클라이언트 쪽에서 request를 보내고 서버 쪽에서 response를 받으면서 페이지 전체를 갱신하게 되는데, 이런 경우 자원과 시간의 낭비가 발생한다. 하지만 AJAX는 페이지 전체가 아닌 일부분만 갱신할 수 있기 때문에 그만큼의 자원과 시간을 아낄 수 있다. 가장 큰 특징으로는 웹 페이지에 필요한 부분에 필요한 데이터만 비동기적으로 받아올 수 있다는 것이다. 이러한 '비동기성'을 통해 사용자의 Event가 있으면 전체 페이..

개발 일지/CS 2023.01.26

[Web] SSR / CSR

SSR(Server Side Rendering) SSR은 JavaScript가 웹 페이지를 브라우저에서 렌더링 하는 대신에, 서버에서 렌더링 한다. 브라우저가 서버의 URI로 GET 요청을 보내면 서버는 정해진 웹 페이지 파일을 브라우저로 전송한다. 그리고 서버의 웹 페이지가 브라우저에 도착하면 완전히 렌더링 된다. 만약 웹 페이지의 내용에 데이터베이스의 데이터가 필요한 경우, 서버는 데이터베이스의 데이터를 불러온 다음 웹 페이지를 완전히 렌더링 된 페이지로 변환하여 브라우저에 응답으로 보낸다. SSR은 다음의 경우에 사용한다. SEO(Search Engine Optimization)가 우선순위일 경우 웹 페이지의 첫 화면 렌더링이 빠르게 필요한 경우 웹 페이지가 사용자와 상호작용이 적은 경우 SSR은 ..

개발 일지/CS 2023.01.26