아키텍처 패턴 1. 도메인 논리가 데이터베이스와 상호작용하는 방법을 좌우하는 아키텍처 패턴 이러한 패턴을 선택할 때는 충분한 주의를 기울여야 한다. 왜냐면 전체 설계에 미치는 파급효과가 크고 리팩터링하기 어렵기 때문이다. 이러한 이유로 SQL 접근을 도메인 논리와는 별도로 분리하고 개별 클래스에 배치하는 것이 좋다. 데이터베이스 테이블당 클래스 하나를 가지도록 구성하는 방법이 좋다. 이러한 클래스는 테이블에 대한 게이트웨이가 된다. 게이트웨이를 사용하는 두 가지 방법 1. 행 데이터 게이트웨이 - 쿼리가 반환하는 각 행마다 인스턴스 하나를 만드는 것 2. 테이블 데이터 게이트웨이 - 레코드 집합 - 테이블식 특성을 흉내 낸 테이블과 행의 범용 자료구조이다, 각 테이블마다 클래스가 하나만 있으면 된다. 중..
Study
트랜잭션 스크립트 도메인 논리를 저장하는 가장 간단한 방식이다. 프레젠테이션에서 입력 받고, 유효성 검사와 계산을 통해 입력을 처리하고, 데이터베이스에 데이터를 저장하고, 다른 시스템에서 작업을 호출하는 프로시저다. 그런 다음 필요에 따라 응답을 구성하고 서식을 지정하는 계산을 수행하고 프레젠테이션에 응답한다. 기본 구성은 사용자가 수행할 각 작업마다 프로시저를 하나씩 만드는 것이다. 장점: 트랜잭션 스크립트는 대부분이 이해할 수 있는 간단한 절차 모델이다. 데이터 원본 계층과 함께 사용하기에 적합하다. 트랜잭션의 경계를 설장하기가 쉽다. 단점: 복잡도가 상승한다. 코드가 많이 중복된다. 결과적으로 명확한 구조가 없어진다. 도메인 모델 복잡한 논리를 객체로 해결하기 위한 모델이다. 한 루틴이 한 가지 사..
계층의 발전 일괄 처리 시스템 시절에는 계층을 적용할 필요가 없었다. 필요한 형식의 파일(ISAM, VSAM 등)을 조작하는 프로그램을 작성하면 충분했기 때문이다. 90년대에 클라이언트-서버 시스템이 등장하면서 계층은 조금 더 중요해졌다. 클라이언트-서버 시스템은 클라이언트가 사용자 인터페이스와 다른 애플리케이션 코드를 포함하고 있어야 하고 서버는 관계형 데이터베이스를 포함하는 2 계층 시스템이다. 애플리케이션의 기능이 주로 데이터를 표시하고 간단한 업데이트를 수행하는 것이라면 클라이언트-서버 시스템은 상당히 잘 작동한다. 문제는 도메인 논리를 수행하는 경우에 일어난다. 일반적으로 클라이언트에 이러한 논리를 추가하였고 논리가 복잡해지면 코드를 작업하기가 매우 어려워지는 문제가 있었다. 게다가 화면에 삽입..
계층화(layering)는 복잡한 소프트웨어 시스템을 분할하는 데 사용하는 일반적인 기법이다. 네트워킹에서 OSI 7 계층을 예로 들 수 있다. 이렇게 나눈 계층은 불투명한 구조를 가진다는 특징이 있다. 상위 계층은 하위 계층이 정의하는 다양한 서비스를 사용하지만, 하위 계층은 상위 계층을 인식하지 못한다. 이러한 체계를 불투명한 구조라고 한다. 계층화의 이점 1. 다른 계층에 대한 정보 없이도 단일 계층을 하나의 일관된 계층으로 이해할 수 있다. 예) 이더넷이 작동하는 방법을 자세히 몰라도 FTP 서비스를 구축할 수 있다. 2. 동일한 기본 서비스를 가진 대안 구현으로 계층을 대체할 수 있다. 예) FTP 서비스는 이더넷, PPP 또는 케이블 회사에서 제공하는 다른 프로토콜 기반에서 변경 없이 작동할 ..

암호화 알고리즘 Deadline: July 13, 2022 5:00 PM Status: Done 암호화란? 평문을 암호문으로 변환하는 과정을 말합니다. 사용자가 입력한 데이터를 알아볼 수 없는 데이터로 변경하는 과정입니다. 사용하는 이유는 정보를 보호하기 위해서입니다. 복호화란? 암호문을 다시 평문으로 변환하는 과정입니다. 암호화 분류와 암호화 알고리즘 단반향 암호화 암호화를 수행하고 나온 데이터를 다시 원래의 데이터로 돌릴 수 없는 암호화 방식입니다 즉, 복호화가 불가능한 암호화입니다. 단반향 암호화는 데이터가 변조되지 않았음을 나타낼때 사용합니다. 왜냐하면, 단방향 암호화에서 나온 데이터는 원래 데이터의 1bit만 바뀌어도 전혀 다른 암호문이 나오기 때문입니다. Hash 함수이 단방향 암호화에서 가장..
TIL (Today I Learned) // 2022.02.22 오늘 읽은 범위 // 3장. 함수 책에서 기억하고 싶은 내용을 써보세요. 코드를 처음 읽는 사람이 함수 내부를 직관적으로 파악하려면 함수를 작게 만들고, 한가지만 하게 해야한다. 그리고 함수 당 추상화 수준이 동일해야한다.(p.42~45) 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. 한 함수 다음에는 추상화 수준이 한 단계 낮은 함수가 온다. 이것을 내려가기 규칙이라고 부른다(p.46) 스위치문은 작게 만들기 어렵고 본질적으로 n가지를 처리한다. 그래서 불가피하게 써야한다면 저차원 클래스에 숨기고 절대 반복하지 않는 방법이 있다.(p.47) 함수나 변수의 이름은 서술적인 이름을 사용하라. 길어도 좋다. 시간을 가지고 생각하라(p.49) 함..
TIL (Today I Learned) 2022.02.19 오늘 읽은 범위 1장. 깨끗한 코드 책에서 기억하고 싶은 내용을 써보세요. p5 - 5S 철학(정리, 정돈, 청소, 청결, 생활화)은 코드에서 뿐아니라 일생활에서도 적용하면 좋을거같다. p19 - 보이스카우트 규칙 캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라. 잘 짠 코드가 전부는 아니다. 시간이 지나도 언제나 깨끗하게 유지해야 한다. 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요 1장에는 깨끗한 코드는 무엇인지 다양한 개발자의 의견이 담겨 있다. 표현하는 방식은 다르지만 결국에는 세심하고 가독성 좋고 유지보수에 용이한 코드를 깨끗하다고 이야기하는거 같다. 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요. 아직은..