일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- rownum
- 2020년 정보처리기사 4회
- Jackson
- post
- If
- Real MySQL
- 코드숨
- sqldeveloper
- 알고리즘
- java
- Til
- algorithms
- jsp
- 정보처리기사
- hackerrank
- 스터디
- 함수형 코딩
- 성적프로그램
- 회고
- 책리뷰
- git
- 2020년 제4회 정보처리기사 필기 문제 분석
- 2020년 일정
- 미니프로젝트
- 서평
- 뇌정리
- 필기
- Python
- 주간회고
- LeetCode
- Today
- Total
목록분류 전체보기 (171)
조컴퓨터
`만들면서 배우는 클린아키텍처` 는 계층형 아키텍처의 문제에 대한 이야기로 시작해서 여러 가지의 트레이드 오프를 거친 후 최종적인 형태인 `헥사고날 아키텍처` 까지의 변환 과정을 적은 지면 안에 효과적으로 잘 집어넣은 책이다. 헥사고날 아키텍처에 대해 아직 이해가 되지 않는 부분이 있다. 예를 들면, 중간 과정이 너무나 많다는 것이다. 의존성을 줄이기 위해서 수많은 변환 과정을 거친다는 것이 이 책의 주요 골자인데, 의존성을 줄여야 하는 것은 맞지만 이렇게 많은 극단적인 계층적 분리가 필요한가 ? 이 점은 아직까지 의문으로 남아있다. 그러나 이 책을 읽으면서 좋았던 점은 헥사고날 아키텍처가 완연한 도메인 중심 디자인을 지향한다는 점이다. DDD 를 명확하게 이해하지 못한터라 도메인 중심이라는 키워드에 항..
API 에 대해 그림으로 잘 표현한 것이 있어 가져왔다. 요즘 하고 있는 일이 딱 이런 내용이다. 출처 https://www.linkedin.com/feed/update/urn:li:share:6968039620949270528?utm_source=linkedin_share&utm_medium=member_desktop_share&utm_content=post LinkedIn Tim Yeh 페이지: Interesting Interesting… www.linkedin.com
챕터 9에서 중점적으로 볼 내용은 ? - 코드를 모듈화하기 위해 추상화 벽을 만들기 - 좋은 인터페이스가 어떤 것이고, 어떻게 찾는지 알아보기 - 왜 계층형 설계가 유지보수와 테스트, 재사용에 도움이 되는지 이해하기 계층형 설계 패턴 패턴 2 : 추상화 벽 추상화 벽(abstraction barrier) 이라 하는 두 번째 패턴은 여러 가지 문제를 해결한다. 그중 하나는 팀 간 책임을 명확히 나누는 것이다. 추상화 벽으로 구현을 감춘다 추상화 벽(abstraction barrier) 은 세부 구현을 감춘 함수로 이루어진 계층이다. 추상화 벽에 있는 함수를 사용할 때는 구현을 전혀 몰라도 함수를 쓸 수 있다. 점선 위에 있는 함수로 마케팅 팀은 독립적으로 일할 수 있습니다. 점선 위에 있는 함수는 장바구니..
챕터 8에서 중점적으로 볼 내용은 ? - 소프트웨어 설계에 대한 실용적인 정의 소개 - 계층형 설계를 이해하고 어떤 도움이 되는지 알아보기 - 깨끗한 코드를 만들기 위해 함수를 추출하는 방법 배우기 - 계층을 나누어 소프트웨어를 설계하면 왜 더 나은 생각을 할 수 있는지 알아보기 소프트웨어 설계란 무엇인가 ? 설계를 잘하면 소프트웨어 개발 과정 전체에 도움이 된다. 아이디어를 코드로 구현하고 테스트하고 유지보수하기 쉽다. 소프트웨어 설계(software design) 코드를 만들고, 테스트하고, 유지보수하기 쉬운 프로그래밍 방법을 선택하기 위해 미적 감각을 사용하는 것 소프트웨어 설계 중 계층형 설계(stratified design) 을 사용해 볼 것이다. 계층형 설계란 무엇인가 ? 계층형 설계는 소프트..
챕터 7에서 중점적으로 볼 내용은 ? - 레거시 코드나 신뢰할 수 없는 코드로부터 내 코드를 보호하기 위해 방어적 복사를 만들기 - 얕은 복사와 깊은 복사 비교 - 카피-온-라이트와 방어적 복사를 언제 사용하면 좋은지 레거시 코드와 불변성 MegaMart 는 블랙 프라이데이 세일을 준비하기로 한다. 이전부터 MegaMart 코드에 많은 기능이 추가되어 왔다. 지금은 잘 동작하고 있고 비즈니스를 위해 코드를 유지하는 것이 중요하다. 지금까지 장바구니에 관련된 코드는 모두 카피-온-라이트를 적용해 불변성을 유지했다. 하지만 블랙 프라이데이 행사 코드는 많은 곳에서 장바구니 데이터를 변경한다. 잘 동작하기는 하지만 오래전에 만든 코드라 당장 바꿀 시간이 없다. 그래서 레거시 코드에 쓸 수 있는 안전한 인터페이..
챕터 6에서 중점적으로 볼 내용은 ? - 데이터가 바뀌지 않도록 하기 위해 카피-온-라이트를 적용하기 - 배열과 객체를 데이터에 쓸 수 있는 카피-온-라이트 동작을 만들기 - 깊이 중첩된 데이터도 카피-온-라이트가 잘 동작하게 만들기 모든 동작을 불변형으로 만들 수 있나요 ? 앞 챕터에서 장바구니 동작 일부에 카피-온-라이트 원칙을 적용하여 구현해 봤다. 구현 방식은 배열을 복사하고 값을 바꾼 다음 리턴하는 것이다. 다음은 추가적인 카피-온-라이트 적용 가능성이 있는 목록이다. (진행한 목록 포함) 장바구니에 대한 동작 제품에 대한 동작 1. 제품 개수 가져오기 2. 제품 이름으로 제품 가져오기 3. 제품 추가하기 4. 제품 이름으로 제품 빼기 5. 제품 이름으로 제품 구매 수량 바꾸기 (→ 중첩된 데이..
챕터 5에서 중점적으로 볼 내용은 ? - 암묵적 입력과 출력을 제거해서 재사용하기 좋은 코드를 만드는 방법 알아보기 - 복잡하게 엉킨 코드를 풀어 더 좋은 구조로 만드는 법 배우기 비즈니스 요구 사항과 설계를 맞추기 요구 사항에 맞춰 더 나은 추상화 단계 선택하기 액션에서 계산으로 리팩터링하는 과정은 단순하고 기계적이었다. 기계적인 리팩터링이 항상 최선의 구조를 만들어 주는 것은 아니다. gets_free_shipping() 함수는 비즈니스 요구 사항으로 봤을 때 맞지 않는 부분이 있다. 요구 사항은 장바구니에 담긴 제품을 주문할 때 무료 배송인지 확인하는 것이다. 하지만 함수를 보면 장바구니로 무료 배송을 확인하지 않고 제품의 합계와 가격으로 확인하고 있다. 이것은 비즈니스 요구 사항과 맞지 않는 인자..
챕터 4에서 중점적으로 볼 내용은 ? - 어떻게 함수로 정보가 들어가고 나오는지 - 테스트하기 쉽고 재사용성이 좋은 코드를 만들기 위한 함수형 기술에 대해 알아보기 - 액션에서 계산을 빼내는 방법 배우기 MegaMart.com 에 오신 것을 환영합니다 var shopping_cart = []; // 장바구니 제품과 금액 합계를 담고 있는 전역변수 var shopping_cart_total = 0; function add_item_to_cart(name, price) { shopping_cart.push({ // 장바구니에 제품을 담기 위해 cart 배열에 레코드를 추가 name : name, price : price }); calc_cart_total(); // 금액 합계 업데이트 } function c..