일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- react
- git squash
- 가상면접3장
- 시스템설계면접팁
- 가상면접2장
- 리팩토링2판4장
- s3이미지다운로드됨
- 시스템설계
- formik submitting not working
- cypress React
- 테스트코드책
- awss3
- cypressBDD
- 시스템설계방법
- Git commit 합치기
- FirebaseAnalytics
- 헤드퍼스트전략패턴
- 가상면접으로대규모시스템
- 시스템설계면접
- react-ga
- 전략패턴
- file not found Error
- git commit merge
- git commit 협업
- 디자인패턴
- 리액트구글애널리틱스
- formik react-query submitting not working
- 시스템설계면접예시
- gitsquash
- 리팩터링2판테스트
- Today
- Total
목록분류 전체보기 (276)
mingg IT

현상 expanded 되는 테이블 형식으로 바꾼 이후부터 렌더링이 눈에 띄게 느려졌다. 필터를 이용하면 테이블을 그려주는 형식이 변하는 동적 테이블 형식이였다. 또한 필터를 선택하면 백엔드로 API를 호출하는 것이아닌, 프론트에서 reduce를 이용해 소계를 다시 계산 하는 등 브라우저에 무리가 될 수도 있는 동작이 포함되어 있었다. 원인 데이터가 많아서 오래걸리는걸까봐 MUI의 virtualized table을 적용해보았지만 여전히 느렸다. (https://mui.com/material-ui/react-table/#virtualized-table) virtualized table을 적용후에도 여전히 느림을 확인한 이후, 이건 데이터를 보여주고 해당 데이터를 계산하는데 오래 걸려서의 문제가 아니라 테이블..

현상 http://localhost:8080/swagger-ui/index.html# 에 접속하면 NumberFormatException 에러를 뱉었다. (평소엔 괜찮았음) 원인 평소엔 이상이 없었는데 최근부터 발생해서 최근 커밋 내용을 뒤져보았다. 추가한 부분은 Swagger-ui에 @ApiOperation, @ApiImplicitParam을 추가했었다. 원인은 @ApiImplicitParam 에서 숫자타입을 사용시 'example'를 작성해주지 않아서 이다. @GetMapping("/detail") @ApiOperation(value = "상품 상세 정보", notes = "상품 상세 정보를 반환 합니다") @ApiImplicitParam(name = "id", value = "조회할 상품 ID", ..

9장 계층형 설계 2 계층형 설계 패턴 패턴1: 직접 구현 패턴2: 추상화 벽 호출 그래프에 어떤 계층은 중요한 세부 구현을 감추고 인터페이스를 제공함 인터페이스를 사용하여 코드를 만들면 높은 차원으로 생각할 수 있음 패턴3: 작은 인터페이스 시스템이 커질수록 비즈니스 개념을 나타내는 중요한 인터페이스는 작고 강력하게 구성하는 것이 좋음 패턴4: 편리한 계층 계층형 설계 패턴과 실천 방법은 개발자의 요구를 만족시키면서 비즈니스 문제를 잘 풀수 있어야 한다. 소프트웨어를 더 빠르고 고품질로 제공하는데 도움이 되는 계층에 시간을 투자해야함 그냥 좋아서 계층을 계속 추가하면 안됨. 코드가 속한 추상화 계층은 작업할 때 편리해야함 패턴2: 추상화 벽 책임을 명확하게 나눔 세부 구현을 감춘 함수로 이루어진 계층 ..

8장 계층형 설계 1 좋은 설계를 위한 감각을 키울 수 있도록 도와주는 장이다. 목적에 따라 분리한 계층형 설계에 대해서 설명하고, 어떤 식으로 계층을 분리해야하는지 알려준다. 정말 이러한 패턴으로 설계를 했을 때 좋은 설계가 맞는지 의문도 들었다. 괜히 여러 계층이 생기면서 오버엔지니어링이 되는건 아닌가? 싶었다. 현업시 간혹 어떤 파일에 해당 함수를 넣을지 고민한적이 많았는데 동일한 계층에 넣으면 되겠다 싶었다. 계층형 설계 소프트웨어를 계층으로 구성하는 기술 비즈니스 규칙, 장바구니를 위한 동작들, 카피-온-라이트, 배열 관련 기능 목적에 따라 계층으로 나눔 계층형 설계 패턴 직접 구현 계층형 설계 구조를 만드는데 도움이 됨. 함수 시그니처가 나타내고 있는 문제를 함수 본문에서 적절한 구체화 수준에..

7장 신뢰할 수 없는 코드를 쓰면서 불변성 지키기 레거시 코드나 신뢰할 수 없는 코드로부터 내 코드를 보호하기 위해 방어적 복사를 만듬 얕은 복사와 깊은 복사를 비교함 카피-온-라이트와 방어적 복사를 언제 사용하면 좋은지 알 수 있음 이번 장 같은 경우에는 언제 얕은 복사를 사용하고, 언제 깊은 복사를 사용하면 좋을지 개념적으로 설명되어있다. 사실 현업을 진행하면서 습관적으로 데이터의 불변성을 위해 복사를 사용하는데 언제 어떤 복사를 이용해야할지 원칙적으로 정리해본 적은 없었다. 이번 장을 통해 그런 점들을 한번쯤 상기시키고 개념화 할 수 있어서 좋았다. 방어적 복사 블랙 프라이데이 행사를 위해 장바구니 항목에 세일을 적용하고 싶다. 카피-온-라이트 원칙을 지키면서 안전하게 함수를 사용하는 원칙을 방어적..

6장 변경 가능한 데이터 구조를 가진언어에서 불변성 유지하기 장바구니를 예시로 들었을때 동작에서 읽기, 쓰기를 분류할 수 있음 읽기 데이터를 바꾸지 않고 정보를 꺼내는 것 쓰기 데이터를 바꾸는 것 장바구니 동작 제품 개수 가져오기 => 읽기 제품 이름으로 제품 가져오기 => 읽기 제품 추가하기 => 쓰기 제품 이름으로 제품 빼기 => 쓰기 제품 이름으로 제품 구매 수량 바꾸기 => 쓰기 함수형 프로그래밍에선 쓰기 동작은 불변성 원칙에 따라 구현해서 최대한 읽기로 바꾸어야함. 카피-온-라이트 원칙 3단계 복사본 만들기 복사본 변경하기 복사본 리턴하기 연습문제 1 적용 전 var mailing_list = []; function add_contact(email) { mailing_list.push(email..
보호되어 있는 글입니다.
1장 부터 읽었을때 가장 인상깊고 재밌었던 장이다. 함수 내 코드를 분리할때 어떤 기준으로 나눌지 애매한 경우가 많았는데 비즈니스 규칙, 계산, 액션 등으로 나누는 기준을 알려줌 수정 전 (4장 코드) var shopping_cart = []; var shopoing_cart_total = 0; function add_item_to_cart(name, price) { shopping_cart = add_item(shopping_cart, name, price); calc_cart_total(); } function calc_cart_total() { shopping_cart_total = calc_total(shopping_cart); set_cart_total_dom(); update_shipping_..