목록development (74)
코딩하는 오징어
Actor Error Handling Application의 최상위 액터는 /user 경로에 만들어지며 사용자 가디언(user guardian)에 의해 감독된다. 사용자 가디언의 기본 감독 전략은 Exception이 발생하면 자식을 재시작하는 것이다. 다만, 어떤 액터가 (내부 이유로) 종료됐거나 초기화 도중 실패했음을 알리는 내부 예외가 발생하면 해당 액터를 종료시킨다. 다음은 Actor defaultStrategy & defaultDecider 코드 이다. final val defaultDecider: Decider = { case _: ActorInitializationException => Stop case _: ActorKilledException => Stop case _: DeathPactE..
트레이트 (Trait) Scala의 Trait는 Java의 Interpace와 비슷하면서도 다르게 동작한다. 먼저 기본적이 내용, Syntax 부터 정리해보자. 트레이트 정의 및 사용 trait Manager { def lookup(): Unit } trait라는 키워드를 이용하여 정의하며 별도의 클래스나 트레이트를 상속하고 있지 않으므로 Manager 트레이트는 AnyRef가 부모 클래스이다. trait는 주 생성자를 가질 수 없다. 다음과 같은 코드는 컴파일 에러를 일으킨다. trait Manager(val name: String) { // 컴파일 에러 ... } trait는 메서드를 선언 뿐만 아니라 구현할 수도 있다. 또한, 트레이트를 상속하여 구현하려면 다음과 같이 코드를 작성하면 된다. tra..
OLTP(On-Line Transaction Processing, 거래 처리 영역) 비즈니스 활동 자체를 지원 -> 비즈니스 트랜잭션의 원활한 처리를 최우선으로 함 빈번한 거래 데이터의 입력, 수정, 삭제 과정에서의 효율성, 즉 효과적인 갱신이 주요 목표 RDB에서 테이블들을 정규화하는 이유는 데이터 갱신을 효율적으로 처리하기 위함. (정규화를 하게되면 데이터가 함수적 종속성에 기반하여 집약되므로 중복은 최소화되며 무결성은 극대화 됨) 고객의 연락처 정보가 제대로 정규화 되지 않았다면 거래 트랜잭션마다 이 정보가 중복 포함될 수 있다. 이 상태에서 특정 고객의 연락처가 바뀌면, 해당 고객의 모든 거래 정보를 찾아 연락처 정보를 일일이 갱신해야한다. 거래 트랜잭션이 대용량이라면 견디기 힘들 것이다. 또한 ..
2020/01/05 - [알쓸신잡] - 데이터 모델링의 정규화 위의 글에서 정규화에 대해서 소개하였다. 이번 글에서는 정규화를 하는 행위가 어떤 의미를 갖는지 알아보자. 정규화 모델은 다음과 같은 중요한 특징을 가진다. 이를 보면 데이터 모델링의 핵심 이론이 왜 정규화 이론이어야 하는지 자연스럽게 이해될 것이다. 1. 속성간의 종속성을 기준으로 성격이 유사한 속성들은 모이고 관계없는 속성들은 분리된다. 즉, 속성들이 자연스럽게 자기 자리를 찾게 되면서 데이터 집합의 범주화가 이루어진다. 2. 하나의 주제로 집약된 데이터 구조, 제대로 된 엔터티가 도출된다. 정규화는 함수 종속을 없애고 밀접한 속성을 하나의 표에 집약시키는 체계적인 방법이다. 따라서 데이터는 응집도는 높고 결합도는 낮게 분리된다. 3. 데..
정규화란? 데이터 모델 설계시 중복을 최소화하도록 데이터를 구조화하는 작업 하나의 종속성이 하나의 표(관계형 이론에서의 Relation)로 관리되도록 분해해가는 과정 종속성을 기준으로 데이터를 어떻게 담는 것이 최적인가에 대한 방법론 기본적으로 높은 차수의 정규형은 낮은 차수의 정규형을 모두 만족하여야 한다. 즉, 제3정규형은 제1,2 정규형의 조건을 모두 만족하여야 하며, BCNF는 1,2,3 정규형을 기본적으로 모두 만족하고 있어야 한다. 제1 정규형 컬럼은 원자성을 유지해야한다. ( 모든 속성이 값을 반드시 하나만 가져야한다. ) ID Name Phone Number 1 코딩하는 오징어 010-1111-1111 위와 같이 모델링 할 경우 Phone Number 컬럼은 원자성을 유지하지 못한다. 사용..
1. 기술 서적 10권 이상 읽기 프로젝트 성패를 결정짓는 데이터 모델링 이야기 프로그래머가 몰랐던 멀티코어 CPU이야기 도메인 주도 설계 구현 오브젝트 Clean Code 데이터베이스를 지탱하는 기술 자바 병렬 프로그래밍 누워서 읽는 알고리즘 CODE The Hidden Language of Computer Hardware and Software Netty In Action Building Microservices 만화로 배우는 리눅스 시스템 관리 1, 2 2. 기술 서적 외의 책 2권 이상 읽기 FactFulNess(팩트 풀니스) - 한스로슬링 최고의 팀은 무엇이 다른가 - 대니얼 코일 3. 이력서 업데이트 4. 라이브러리 개발 5. 사이드 프로젝트 1개 이상 진행 R2DBC, Redis 이용 필수 ..
오랜만에 개인적인 글을 쓰게 되었네요. 2018년은 연말 회고록을 쓰지 못해서 아쉬운 마음을 가지고 있었는데 벌써 2019년도 마무리가 되어 가고 있습니다. 저도 어느덧 2년차 프로그래머가 되었습니다. 시간이 정말 빠르네요. 목차 없이 글을 써내려가면 글에 서두가 없을 것 같아 다음과 같은 순서로 작성해 보았습니다. 2019년의 성과 직업 의식 도메인 변경 좋은 공부란? 선배님들의 어록 정리 2019년의 성과 2019년은 저에게 있어 많은 성장을 이뤄낸 해였습니다. 연초에 작성한 계획도 대부분 지켜서 꽤나 성취감 있는 만족스러운 1년을 보내게 되었습니다. 두 가지는 꼭 지키고자 노력을 하였는데요. 첫 번째는 "새로운 프로그래밍 언어를 익히자" 였고, 두 번째는 "기술 서적 5권 이상 읽기" 였습니다. "..
인터넷을 이용하여 검색이나 웹 서핑, 이메일 등의 웹 애플리케이션을 사용할 때 사용자는 도메인 이름을 웹 브라우저의 주소 창에 입력하고 해당 데이터를 요청한다. 즉, 실제 웹 브라우저와 웹 서버는 숫자로 구성된 IP 주소로 통신하지만 사용자는 기억하기 쉬운 도메인 이름을 사용하는 것이다.이와 같이 사용자가 입력한 도메인 주소를 IP 주소로 변환 하는 과정이 필요한데, 이를 담당하는 시스템이 DNS(Domain Name System)이다. DNS의 구성 요소 도메인 네임 스페이스 (Domain Name Space) - DNS는 거대한 분산 네이밍 시스템이며, 도메인 네임 스페이스는 이러한 DNS가 저장/관리하는 계층적 구조를 의미한다. - 최상위 Root DNS 서버가 존재하고, 그 하위로 인터넷에 연결된..