SummaryBook 20

5. 책임과 메시지

의도는 "메시징"이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다는 모듈이 어떻게 커뮤니케이션하는가에 달려 있다. 자율적인 책임자율적인 객체란 스스로 정한 원칙에 따라 판단하고 스스로의 의지를 기반으로 행동하는 객체다. 타인이 정한 규칙이나 명령에 따라 판단하고 행동하는 객체는 자율적인 객체라고 부르기 어렵다.객체가 어떤 행동을 하는 유일한 이유는 다른 객체로부터 요청을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다. 따라서 자율적인 객체란 스스로의 의자와 판단에 따라 각자 맡은 책임을 수행하는 객체를 의미한다.적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. 따라서 협력에 참여하는 ..

3. 타입과 추상화

일단 컴퓨터를 조작하는 것이 추상화를 구축하고, 조작하고, 추론하는것에 관한 모든것이라는 것을 깨닫고 나면 (훌륭한) 컴퓨터 프로그램을 작성하기 위한 중요한 전제 조건은  추상화를 정확하게 다루는 능력이라는 것이 명확해진다. 책의 해리백 이야기를 읽고추상화를 통한 복잡성 극복현실에 존재하는 다양한 현상 및 사물과 상호작용하기 위해서는 우선 현실을 이해해야한다. 문제는 복잡성의 총체인 현실이라는 괴물을 그대로 수용하기에는 인간이 지니고 있는 인지 능력과 저장 공간이 너무나도 보잘것 없다. 따라서 사람들은 본능적으로 이해하기 쉽고 예측 가능한 수준으로 현실을 분해하고 단순화하는 전략을 따른다. 해리백의 지하철 노선도는 불필요한 지형 정보를 제거함으로써 단순함을 달성한 추상화의 훌륭햔 예이다. 진정한 의미에서..

2. 이상한 나라의 객체

객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다.객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다. 객체지향 패러다임은 인간이 인지할 수 있는 다양한 객체들이 모여 현식 세계를 이루는 것처럼 소프트웨어의 세계 역시 인간이 인지할 수있는 다양한 소프트웨어 객체들이 모여 이뤄져 있다는 믿음에서 출발한다. 책의 이상한 나라의 앨리스 파트를 읽고 앨리스는 정원으로 가는길을 가로막고 있는 작은 문을 통과하기에 적당한 상태로 자신의 키를 계속해서 변화시킨 것이다.앨리스의 키는 시간의 흐름에 다라 계속 변한다. 그렇다고 엘리스의 키가 아무런 이유없이 변하는것은 아니고, 앨리스의 키를 변화시키는것은 앨리스의 행동이다. 앨리스가 ..

1. 협력하는 객체들의 공동체

시작하며24년 4월 실무경력 1년을 경험한, 연차로는 2년차 개발자가 되었다. 지난 1년을 생각해보면 실무 경험 및 나름의 공부를하며, 성장을 해왔지만 실무 경험에 맞춰 개발 및 장애대응을 하다보니 천천히 기초에 집중하기보다는 급하게 달려온 느낌이들었다. 또한 최근 자바 플레이그라운드 with TDD, 클린 코드 인강을 구매하여 숫자야구게임을 개발하면서 Java라는 언어를 사용하지만, 객체지향적으로 프로그래밍하지못하고 있는자신을 발견하여 객체지향에 대해 공부를 하기로 마음먹었다.  책을 읽으며 무조건 책의 내용을 정리하기보다는 책의 내용 정리 및 나의 생각을 녹여내고시간이 지나 책의 내용이 기억이 나지않을때 다시 읽어보기위해 기록하였다. 시너지를 생각하라. 전체는 부분의 합보다 크다. 객체지향이라고 불..

Collection과 Map

시작하며 자바 성능 튜닝 이야기 [Chap 4] 를 읽고 정리 및 추가 개념을 정리하였다. Collection : 가장 상위 인터페이스이다. Set : 중복을 허용하지 않는 집합을 처리하기 위한 인터페이스이다. SortedSet : 오름차순을 갖는 Set 인터페이스이다. List : 순서가 있는 집합을 처리하기 위한 인터페이스 이기 때문에 인덱스가 있어 위치를 지정하여 값을 찾을수 있다. 중복을 허용하며 List 인터페이스를 상속받는 클래스 중에 가장 많이 사용하는 것으로 ArrayList가 있다. Queue : 여러개의 객체를 처리하기 전에 담아서 처리할때 사용하기 위한 인터페이스이다. 기본적으로 FIFO 구조이다. Map : Key, Value 형태로 구성된 객체의 집합을 처리하기 위한 인터페이스이다..

AWS EC2 배포

EC2에 프로젝트 Clone 받기 먼저 EC2에 Git 설치 sudo yum install git 설치가 완료되면 설치상태를 확인 git --version 깃이 성공적으로 설치되면, clone할 프로젝트 디렉토리를 생성한다. Git repository에서 HTTPS주소를 복사한다. 복사후 EC2 서버에 git clone을 진행 git clone 복사한 주소 책과 다른점으로 git 에서 Password를 토큰 형식으로 사용하도록 변경되었기 때문에 Password에 토큰 값을 넣으면 된다. Username for 'https://github.com': seungsoo Password for 'https://seungsoo@github.com': git clone이 끝난 후 repository이름의 디렉토리가..

AWS RDS

RDS 운영환경에 맞는 파라미터 설정하기 RDS를 처음 생성하면 몇가지 설정을 필수로 해야한다. 파라미터 그룹 생성에서 방금 생성한 RDS와 버전을 맞춰야한다. RDS version : 10.6.14 타임존 수정 Asia/Seoul Character Set character 항목들은 utf8mb4로, collation 항목들은utf8mb4_general_ci 적용한다. character_set_client character_set_connection character_set_database character_set_filesystem character_set_results character_set_server collation_connection collation_server Max Connection ..

AWS 리눅스 서버 설정

EC2 및 탄력적 IP 설정으로 인스턴스를 구성 후 부터 기록하도록 하겠다. 아마존 리눅스 서버 생성시 꼭 해야 할 설정들 Java 8 설치 : 책의 내용은 8 이지만, 나는 Java 11을 설치하였다. AWS EC2 JDK설치 타임존 변경 : 기본서버의 시간이 미국시간대이기에, 한국시간대로 변경 EC2 서버의 기본 타임존은 UTC이다. 한국시간과의 9시간의 차이가 발생으로 타임존 변경, 변경 후 date로 시간확인 $ sudo rm /etc/localtime $ sudo ln -s /usr/share/zoneinfo/Asia/Seoul etc/localtime 호스트 네임 변경 : 실제 서버가 여러대일경우 IP 만으로 판단불가하므로, 서버의 별명을 등록 Linux 서버 1에서 2로 변경되며, HOSTN..

[Chap 6] 스트림으로 데이터 수집

6.1 컬렉터란 무엇인가? Collector 인터페이스 구현은 스트림의 요소를 어떤 식으로 도출할지 지정한다. 6.1.1 고급 리듀싱 기능을 수행하는 컬렉터 collect로 결과를 수집하는 과정을 간단하면서도 유연한 방식으로 정의 할 수 있다는 점이 컬렉터의 최대 강점이다. 구체적으로 설명해서 스트림에 collect를 호출하면 스트림의 요소에 리듀싱 연산이 수행된다. Collectors 유틸리티 클래스는 자주사용하는 컬렉터 인스턴스를 손쉽게 생성 할 수 있는 정적 팩토리 메서드를 제공한다. Ex) 가장 많이 사용하는 직관적인 정적 메서드로 collect(Collectors.toList); 6.1.2 미리 정의된 컬렉터 미리 정의된 컬렉터는 groupingBy 같이 Collectors 클래스에서 제공하는 ..