Rust 설치 및 VS Code 셋팅(Linux, Debian)
소개 최근 Rust에 관심이 생겨 Rust를 공부하고 있습니다. 제가 집에서 사용하는 PC는 Mint Linux로 Debian 계열의 리눅스를 사용하고 있습니다. Linux에 Rust를 설치하는 방법과 VS Code에서 Rust를 사용하는 방법에 대해 정리하겠습니다. Rust 설치 리눅스에서 Rust를 설치하는 방법은 3가지가 있습니다. ...
JWT의 Access Token과 Refresh Token
소개 JWT를 사용하여 로그인을 구현하게 되면 아래와 같은 문제점에 부딪히게 됩니다. Token 방식의 인증은 제 3자에게 탈취 당할 경우 보안에 매우 취약합니다. 보안 상의 이유로 Access Token의 만료기간을 짧게 가진다면 사용자는 Token이 만료 될 때마다 매번 로그인을 새롭게 해야합니다. 만료기간을 늘리면, Token을 탈취 당했...
JWT(Json Web Token)
소개 개발을 하다 보면 로그인 관련 기능을 만드는 경우가 많습니다. 로그인은 쿠키(Cookie), 세션(Sessions) 등으로 많이 구현하는데, 토큰(Token)을 사용하는 방법도 있습니다. 토큰을 사용하는 방법 중 JWT를 많이 사용하기에 JWT에 대해 정리하려고 합니다. JWT JWT(JSON Web Token)는 일반적으로 클라이언트(...
Visitor 패턴
소개 패턴을 활용한 리팩터링이라는 책에서 Switch 문을 좀더 객체지향적인, 다향성을 이용하도록 리팩터링 하기 위해서 Visitor 패턴을 도입하면, 조건 로직도 필요 없어지고 설계도 더 융통성 있게 할 수 있다고 소개한다. 방문자 패턴(Visitor Pattern) Visitor는 사전적인 의미로 어떤 장소에 찾아오는 사람이라는 의미를 가지고...
페이지 교체 기법
소개 메모리 관리 배경 각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다. 단지, 운영체제만이 운영체제 메모리 영역과 사용자 메모리 영역에 접근을 제약을 받지 않는다. 페이징 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 업애는 메모리 관리 방법이다....
상속에서 Dispose 패턴
소개 C#에서는 가비즈 컬렉터(GC)가 메모리를 자동으로 관리합니다. 필요없는 클래스의 인스턴스를 메모리에서 바로 지우는 것이나라, 조건을 만족할 때까지 기다렸다가 지우기 때문에 클래스를 지웠다고 해도 메모리가 바로 해제 되지 않는다. 일반적인 메모리라면 GC에 맡겨도 상관 없지만, 관리되지 않는(Unmanaged, Native)리소스는 즉각 해제...
27장. '크고 작은 모든' 서비스들
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. ‘크고 작은 모든’ 서비스들 서비스 지향 아키텍처와 마이크로서비스 아키텍처가 최근 큰 인기를 끌고 있는 이유는 다음과 같다. 서비스를 사용하면 상호 결합이 철저하게 분리되는 것처럼 보인다. 나중에 보겠지만, 일부만 맞는 말이다. 서비스를...
26장. 메인(Main) 컴포넌트
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. 메인(Main) 컴포넌트 모든 시스템에는 최소한 하나의 컴포넌트가 존재하고, 이 컴포넌트가 나머지 컴포넌트를 생성하고, 조정하며 관리한다. 나는 이 컴포넌트를 메인(Main)이라고 부른다. 궁극적인 세부사항 메인 컴포넌트는 궁극적인 세부사항으로...
25장. 계층과 경계
소개 클린아키텍처: 소프트웨어 구조와 설계의 원칙 책을 읽고 정리하며 소감을 적는 포스트입니다. 계층과 경계 시스템이 세 가지 컴포넌트(UI, 업무 규칙, 데이터베이스)로만 구성된다고 생각하기 쉽다. 하지만 대다수의 시스템에서 컴포넌트 개수는 이보다 훨씬 많다. 움퍼스 사냥 게임 1972년에 발매된 인기있는 모험게임인 움퍼스 사냥(Hunt...