모듈과 함수는 소프트웨어를 구성하는 빌딩 블록이며, API 는 블록들을 끼워 맞추는 연결부다. 이런 API 를 이해하고 사용하기 쉽게 만드는 일은 중요한 동시에 어렵다. 그래서 API를 개선하는 방법을 새로 깨달을 때마다 그에 맞게 리팩터링을해야 한다. 데이터 갱신과 조회가 섞여 있다면 11.1 질의 함수와 변경 함수 분리하기 값 하나 때문에 여러개로 나뉜 함수들은 11.2 함수 매개변수화하기 매개변수가 그저 함수의 동작 모드를 전환하는 용도로만 쓰이면 11.3 프래그 인수 제거하기 데이터 구조가 함수 사이를 건너다니면서 필요 이상으로 분해될 떄 11.4 객체 통째로 넘기기 무언가를 매개변수로 건네 피호출 함수와 호출 함수 중 어디서 판단할지에 관해서는 불변의 진리는 없으니 상황이 바뀔때마다 11.5 질..
AWS 에서는 서비스 IP 대역을 JSON 형태로 제공하고 있습니다. https://ip-ranges.amazonaws.com/ip-ranges.json 위 링크를 실행해보면 아래와 같은 JSON 데이터가 출력되며 IP대역, 리전, 서비스종류 정보가 포함된 prefixes 아이템이 5천여개 이상 확인 됩니다. { "syncToken": "1620411253", "createDate": "2021-05-07-18-14-13", "prefixes": [ { "ip_prefix": "3.5.140.0/22", "region": "ap-northeast-2", "service": "AMAZON", "network_border_group": "ap-northeast-2" }, { "ip_prefix": "15.2..
해당글은 그림으로 배우는 HTTP & Network 책의 7장 내용의 일부를 요약한 내용입니다. HTTPS 는 HTTP 프로토콜에 암호화, 인증, 완전성 보호를 더하기 위해 사용하는 프로토콜이다. 1. HTTP 에 암호화와 인증과 완전성 보호를 더한 HTTPS HTTP 통신은 암호화되지 않은 평문으로 실시된다. 예를 들면 웹 페이지에서 신용 카드 번호를 입력했을 때 통신이 도청되면 신용 카드 번호를 도청하게 된다. 또한 HTTP 에는 통신 상대의 서버나 클라이언트를 인증하는 수단이 없다. 따라서, 실제로 의도한 통신 상대와 통신하고 있지 않을 가능성과 수신한 메시지가 도중에 변조되어 있을 가능성이 있다. 이러한 문제를 해결하기 위해서는 암호화와 인증과 완전성 보호 같은 구조를 HTTP 에 추가할 필요가 ..
해당글은 그림으로 배우는 HTTP & Network 책의 7장 내용의 일부를 요약한 내용입니다. HTTP 는 주로 다음과 같은 약점을 가지고 있다. 이 약점들은 HTTP 만이 아닌, 다른 암호화하지 않은 프토로콜에도 공통되는 문제이다. 평문(암호화 하지 않은) 통신이기 때문에 도청 가능 통신 상대를 확인하지 않기 때문에 위장 가능 완전성을 증명할 수 없기 때문에 변조 가능 1. 평문이기 때문에 도청 가능 HTTP 리퀘스트와 리스폰스 통신 내용은 암호화 되지 않아 평문으로 HTTP 메시지를 보내게 된다. TCP/IP 는 도청 가능한 네트워크 암호화되어 있지 않은 통신에 약점이 있는 이유는 TCP/IP 의 구조의 통신 내용은 전부 통신 경로의 도중에 엿볼 수 있기 때문이다 인터넷은 전 세계를 경유하는 네트워..
조건부 로직은 프로그램을 복잡하게 만드는 주요 원흉이다. 따라서, 이해하기 쉽게 바꾸는 리팩터링이 필요하다. 복잡한 조건문은 10.1 조건문 분해하기 논리적 조합을 명확하게 다듬는 10.2 중복 조건식 통합하기 핵심 로직에 앞서 무언가를 검사해야 할 때 10.3 중첩 조건문을 보호 구문으로 바꾸기 똑같은 분기 로직이 여러 곳에 등장한다면 10.4 조건부 로직을 다형성으로 바꾸기 null 과 같은 특이 케이스의 처리 로직이 거의 똑같다면 10.5 특이 케이스 추가하기 (널 객체 추가하기) 특정 조건일때만 제대로 동작하는 코드가 있는 경우 10.6 어서션 추가하기 제어 플래그를 이용해 코드 동작 흐름을 변경하는 코드는 10.7 제어 플래그를 탈출문으로 바꾸기 10.1 조건문 분해하기 (Decompose Co..
데이터 구조는 프로그램에서 중요할 역할을 수행한다. 따라서, 데이터 구조에만 집중한 리팩터링만 한 묶음 따로 준비한 장이다. 하나의 값이 여러 목적으로 사용된다면 9.1 변수 쪼개기 변수 자체를 없애는게 가장 좋은 해결책일 때 9.3 파생 변수를 질의함수로 바꾸기 레코드나 클래스의 이름을 바꾸고 싶은 경우 9.2 필드 이름 바꾸기 참조인지 값인지 햇갈려 문제가 되는 경우 9.4 참조를 값으로 바꾸기 9.5 값을 참조로 바꾸기 의미를 알기 어려운 리터럴이 보이면 9.6 매직 리터럴 바꾸기 9.1 변수 쪼개기 (Split Variable) 개요 여러 번 대입하는 용도의 수집 변수가 아닌 이상 역할이 둘 이상인 변수가 있다면 쪼개야 한다 여러 용도로 쓰인 변수는 코드를 읽을때 커다란 혼란을 주고 버그를 낳는다..
지금까지는 프로그램 요소를 생성/제거하거나 이름은 변경하는 리팩터링을 다뤘다. 여기에 더해 요소를 다른 컨텍스트(클래스나 모듈 등)로 옮기는 일 역시 리팩터링의 중요한 축이다. 다른 클래스나 모듈로 함수나 필드를 옮길 때 8.1 함수 옮기기 8.2 필드 옮기기 문장을 함수 안이나 바깥으로 옮길 때 8.3 문장을 함수로 옮기기 8.4 문장을 호출한 곳으로 옮기기 같은 함수 안에서 옮길 때는 8.6 문장 슬라이드 하기 한 덩어리의 문장들이 기존 함수와 같은 일을 할 때 8.5 인라인 코드를 함수 호출로 바꾸기 반복문이 단 하나의 일만 수행하도록 보장하는 8.7 반복문 쪼개기 반복문을 완전히 없애 버리는 8.8 반복문을 파이프라인으로 바꾸기 8.1 함수 옮기기 (Move Function) 개요 좋은 소프트웨어..
모듈을 잘 분리하는 가장 중요한 기준은 각 모듈이 자신을 제외한 외부에 드러내지 않아야 할 비밀을 얼마나 잘 숨기느냐에 있다. 대표적인 데이터 구조 캡슐화 7.1 레코드 캡슐화하기 7.2 컬렉션 캡슐화하기 기본형 데이터 캡슐화 7.3 기본형을 객체로 바꾸기 길어진 함수를 쪼개는 7.4 임시 변수를 질의 함수로 바꾸기 추출하기/인라인의 클래스 버전 7.5 클래스 추출하기 7.6 클래스 인라인하기 클래스 사이의 연결 관계를 숨기는 7.7 위임 숨기기 너무 많이 숨길 경우를 위한 반대 기법 7.8 중개자 제거하기 알고리즘을 통채로 바꿔야 할 때 7.9 알고리즘 교체하기 7.1 레코드 캡슐화하기 (Encapsulate Record) 개요 레코드(해시)를 데이터 클래스로 전환하는 리팩터링 해시맵은 다양한 프로그래..
- Total
- Today
- Yesterday
- 일 잘하는 사람은 단순하게 말합니다
- 변경함수
- AWS
- 그림으로 배우는 HTTP & Network
- amazon aurora
- 안심 첫 문장
- 일잘러
- Debug It! 실용주의 디버깅
- 리팩터링이란
- 질의함수
- 디버깅
- 마틴파울러
- 매개변수화
- 위임
- 리팩토링
- SSL
- 박소연
- Debug
- 그림으로 공부하는 IT 인프라 구조
- 제어플래그
- aws fargate
- Refactoring
- 조건부 로직
- 지시의 언어
- amazon vpc
- HTTP
- 코드스멜
- 코드악취
- https
- Debugging
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |