본문 바로가기

분류 전체보기

(54)
FastAPI에서 예외처리하기 Errors and Exceptions in Python 기본적으로 Python에서 설명하는 Error와 Exception은 다르다. Error에는 두가지 종류가 있다. https://docs.python.org/3/tutorial/errors.html 1. Systax Error 말 그대로 syntax error이다. 2. Exeption 실행 중에 감지된 error이다. 그래서 우리가 앞으로 사용할 Exception은 아래 Python exceptiopn hierarchy에서 Exception을 상속받아 사용한다. https://docs.python.org/2/library/exceptions.html#exception-hierarchy Exception을 상속받은 클래스의 이름은 Error로 끝난다..
[Computer Systems] A Tour of Computer Systems 1.1 Information Is Bits + Context 대부분의 컴퓨터는 문자를 ASCII를 이용해 나타낸다. ASCII는 각각의 문자(character)를 byte-size integer로 나타낸다. 소스파일은 ASCII로 변환된 sequence of bytes로 저장되어있다. ASCII characters로만 이뤄져있는 파일은 text files이다. 다른 파일은 binary files이다. 시스템에서 모든 정보는 bit들로 표현된다. 이들을 식별할 수 있는 방법은 context이다. 1.2 Programs Are Translated By Other Programs into Different Forms high-level의 C 프로그램을 실행하기 위해서는 low-level의 machine-lan..
의존 관계 제어 의존이란? 어떤 객체가 다른 객체를 참조하는 것. 여러가지 의존 관계가 있을 수 있는데, 다음은 그의 일부를 설명한다. 참조를 통해 발생하는 의존 관계 public class ObjectA { private ObjectB objectB; } 일반화를 통한 의존 관계 public interface IUserRepository { User Find(UserId id); } public class UserRepository: IUserRepository { public User Find(UserId id) { ... } } 인터페이스와 그 구현체가 되는 구상 클래스 사이에 나타나는 의존관계이다. 코드가 갖는 의존 관계UserApplicationService는 UserRepository객체를 속성으로 갖도록 정..
[클린 코드] 객체와 자료구조 자료 추상화 변수를 private으로 선언하더라도 각 값마다 get 함수와 set 함수를 제공한다면 구현을 외부로 노출하는 셈이다. 변수 사이에 함수라는 계층을 넣는다고 구현이 감춰지지 않는다. 구현을 감추려면 추상화가 필요하다. 객체(Objects)와 자료구조(Data Structure) 객체 자료구조 추상화 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료를 그대로 공개하며 다른 함수는 제공하지 않는다. 동작을 공개하고 자료를 숨긴다. 동작을 숨기고 자료를 공개한다. (기존 동작을 변경하지 않으면서) 새 객체 타입을 추가하기 쉽다. 새 자료구조를 추가하기 어렵다. 객체에 새 동작을 추가하기 어렵다. 새 동작을 추가하기 쉽다. 잡종구조(hybrid) 객체도 자료구조도 아닌 구조이다. 잘못된 설계이므..
[클린 아키텍처] 정책과 수준 소프트웨어 아키텍처를 개발하는 기술에는 정책을 신중하게 분리해야 하고, 정책이 변경되는 양상에 따라 정책을 재편성하는 일도 포함된다. 동일한 이유로 동일한 시점에 변경되는 정책은 동일한 수준에 위치하며, 동일한 컴포넌트에 속해야 한다. 서로 다른 이유로, 혹은 다른 시점에 변경되는 정책은 다른 수준에 위치하며, 반드시 다른 컴포넌트로 분리해야 한다. 재편성된 컴포넌트들을 비순환 방향 그래프로 구성하여 아키텍처 개발을 한다. 이 때 그래프에서 정점은 동일한 수준의 정책을 포함하는 컴포넌트에 해당한다. 방향이 있는 간선 은 컴포넌트 사이의 의존성을 나타낸다. 간선은 다른 수준에 위치한 컴포넌트를 서로 연결한다. 좋은 아키텍처라면 각 컴포넌트를 연결할 때 의존성의 방향이 컴포넌트의 수준을 기반으로 연결되도록 ..
[클린 아키텍처] 컴포넌트 원칙 컴포넌트는 배포 단위다. 컴포넌트가 어떤 형태로 배포되든, 잘 설계된 컴포넌트라면 반드시 독립적으로 배포 가능한, 독립적으로 개발 가능한 능력을 갖춰야 한다. 컴포넌트의 간략한 역사 소프트웨어 개발 초창기에는 프로그램의 위치가 한번 결정되면 재배포가 불가능하였고, 메모리에서의 프로그램 위치와 레이아웃을 프로그래머가 직접 제어하였다. 이시대에는 프로그래머가 라이브러리 함수의 소스 코드를 애플리케이션 코드에 직접 포함시켜 단일 프로그램으로 컴파일했다.그러나 장치는 느리고 메모리는 너무 비쌌다. 메모리가 너무 작아서 소스 코드 전체를 메모리에 상주시킬 수가 없었기에, 컴파일러는 느린 장치를 이용해서 소스코드를 여러 차례 읽어야만 했다. 컴파일 시간을 단축시키기 위해 프로그래머는 함수 라이브러리의 소스 코드를 ..