실용주의 프로그래머 10

[노개북] 실용주의 프로그래머 (8장. 프로젝트 전에)

오늘 읽은 범위 🔖 8장. 프로젝트 전에 📝 책에서 기억하고 싶은 내용 실용주의 프로그래머는 요구사항을 받으면 의문점을 떠올리고 의뢰인에게 역으로 질문하며 탐험한다. (p.352) 프로젝트 용어 사전 관리하기 (p. 360) 짝 프로그래밍pair programming, 몹 프로그래밍mob programming: 한 사람이 코드를 입력하는 동안 한 명 혹은 여러명의 팀 동료가 조언하고 고민하며 문제를 함께 푸는 것 (p. 368) 익스트림 프로그래밍eXtream Programming, XP의 실천 방법 중 하나 (p. 369) 애자일agile: '기민하다'는 뜻의 형용사 애자일 선언 중 소프트웨어 개발에서 중요하게 여겨야할 가치 공정과 도구보다 개인과 상호작용 포괄적인 문서보다 작동하는 소프트웨어 계약 협..

[노개북] 실용주의 프로그래머 (7장. 코딩하는 동안)

오늘 읽은 범위 🔖 7장. 코딩하는 동안 📝 책에서 기억하고 싶은 내용 여러분은 개발자로서 ... 경험과 지혜를 축적해 왔다. ..그 느낌을 따라라. 직감이 여러분의 역량에 일조하도록 하라. (p. 277) 일단, 하고 있는 일을 멈춰라. 여러분의 뇌가 정리를 좀 할 수 있도록 약간의 시간과 공간을 확보하라. (p. 278) 코드를 마구 찍어내는데 드는 시간을 줄이고, 오류를 초기에 더 적게 만들기 위한 의도적으로 프로그래밍하는 법 (p. 288) (중 일부만 작성) 지금 무엇을 하고 있는지 알아야 한다. 코드를 상세히 설명할 수 있는가? 계획을 세우고 그것을 바탕으로 진행하라 신뢰할 수 있는 것에만 기대라 우선순위를 정하라 대문자 O (Big O) 표기법 어떤 함수가 O(n)2 시간이 걸린다고 하면, ..

[노개북] 실용주의 프로그래머 (6장. 동시성)

오늘 읽은 범위 🔖 6장. 동시성 📝 책에서 기억하고 싶은 내용 용어 정의 (p. 241) 동시성concurrency: 동시에 실행 중인 것처럼 행동하는 것 ex) 파이버fiver, 스레드, 프로세스 등을 사용 병렬성parallelism: 실제로 동시에 실행되는 것 ex) 여러 개의 일을 동시에 할 수 있는 하드웨어. 코어가 여러개인 CPU, 여러대의 CPU 등 시간적 결합temporal coupling 깨트리기 보통 직선적 사고를 하기 마련이다. ...우리는 동시성을 확보해야 한다. 시간이나 순서에 의존하는 시간적 결합을 끊는 방법을 생각해 내야 한다. (p. 244) 작업 흐름을 분석하라 -> 활동 다이어그램activity diagram 작성하기 (p. 244) 공유 상태는 틀린 상태 상태를 공유하는..

[노개북] 실용주의 프로그래머 (Mission 2)

💡 연습문제 20 (p. 207, Topic 30 변환 프로그래밍) (이벤트에 잘 반응하는 애플리케이션을 만들기 위한) 네 가지 전략 중에서 다음 상황에 맞는 것은 각각 어떤 것일까? 여러 전략을 조합해야할 수도 있다. 5분 동안 '네트워크 인터페이스가 꺼짐' 이벤트를 세 번 받으면 운영 직원에게 알려라. 일몰 후에 층계 밑에서 동작이 감지된 다음 층계 위에서 동작이 감지되면 위층의 전등을 켜라. 다양한 보고 시스템에 주문이 완료되었음을 알리고 싶다. 고객에게 자동차 대출을 집행할 수 있는지 평가하기 위하여 애플리케이션이 세 가지 다른 서비스에 요청을 보내고 응답을 기다려야 한다. ✅ 풀이 과정 일단 4가지 개념을 간단히 정리해보았다. 1. 유한 상태 기계Finite State Machine, FSM: ..

[노개북] 실용주의 프로그래머 (5장. 구부러지거나 부러지거나)

오늘 읽은 범위 🔖 5장. 구부러지거나 부러지거나 📝 책에서 기억하고 싶은 내용 결합도 줄이기 열차 사고: 메서드나 속성들이 모두 연결되어있는 코드. 코드가 지저분하고 고치기 어렵고 코드를 이해하기 위해 알아야하는 것이 너무 많다. (p. 185 ~ 186) 함수 파이프라인 (p. 189) 묻지 말고 답하라(Tell, Don't Ask, TDA): 객체가 하는 일을 위임하라. (객체에서 내부 객체를 호출하지 말고, 불필요하게 분리된 함수는 합치기) 데메테르 법칙, 디미터 법칙 (Law of Demeter, LoD): 깨끗하고 결합도가 낮은 함수를 작성하는 방법, 사실 실현하기 어려움 어떤 클래스 C에 정의된 메서드가 다음 목록에 속하는 것만 사용할 수 있다. C의 다른 인스턴스 메서드 메서드의 매개 변수..

[노개북] 실용주의 프로그래머 (4장. 실용주의 편집증)

오늘 읽은 범위 🔖 4장. 실용주의 편집증 📝 책에서 기억하고 싶은 내용 계약에 의한 설계 (DBC, Design by Contract): 코드를 작성하기 전에 값의 입력 범위, 경계 조건, 루틴이 전달하는게 뭔지 정의하는 일종의 설계 기법이다. 일찍 작동을 멈춰라 (p. 160) 절대 일어나지 않는 일은 없다. 단정문으로 불가능한 상황을 예방하라 (p. 162) 진짜 오류처리를 해야하는 곳에 단정을 대신 사용하지는 말라 (p. 163) 단정 기능을 켜 둬라, 실서비스에서도 (p. 165) 성능 이슈가 있는 경우 문제가 되는 단정문만 끄도록 하자 내가 사용한 리소스는 내가 해제하자 작은 단계들을 밟아라. 언제나. 더 진행하기 전에 피드백을 확인하고 조정하라. "아기 발걸음" 원칙 (p. 178) 너무 큰..

[노개북] 실용주의 프로그래머 (3장. 기본 도구)

오늘 읽은 범위 🔖 3장. 기본 도구 📝 책에서 기억하고 싶은 내용 일반 텍스트의 힘 (p. 132) 일반 텍스트, 암호화, 구조화(XML, JSON..)를 적절히 사용하기 조개 놀이 (Shell Games) (p. 139) 반복적이고 번거로운 GUI 작업을 Shell 명령어로 만들라 Windows의 경우 Cygwin을 이용해 유닉스 호환 레이어와 유닉스용 유틸리티를 사용할 수 있다. 디버깅 (p. 157) 디버깅 = 문제 해결, 디버깅을 할 때 당황하지 마라 데이터를 시각화하면 디버깅하기 좋다. (DDD 디버거 참고) 트레이싱(Tracing)은 값을 추적하기 어려운 동시성 프로세스, 이벤트 기반 애플리케이션에서 유용하다. 고무 오리: 문제의 원인은 누군가에게 설명하는 것만으로도 해결할 수 있다. (설명..

[노개북] 실용주의 프로그래머 (2장.실용주의 접근법)

오늘 읽은 범위 🔖 2장.실용주의 접근법 📝 책에서 기억하고 싶은 내용 요구사항은 항상 변한다 -> 소프트웨어를 신뢰성 높게 개발하고... 유지보수하기 쉽게 만드는 유일한 길 -> DRY 원칙을 따라라 (p. 66) 반복하지 마라 DRY, Don't Repeat Yourself 참을성 없는 중복: 만약 이런 유혹을 느낀다면 '돌아가는 길이 지름길이다'라는 진부한 격언을 기억하라 (p.73) 직교성 Orthogonality: 두 직선이 직교하는 경우, 두 개의 선은 '독립적'이다. -> 결합도 줄이기(decoupling) 하나가 바뀌어도 나머지에 어떤 영향도 주지 않은 경우.. (p. 76) 장점: 생산성 향상, 리스크 감소 관점 지향 프로그래밍(AOP, Aspect-Oriented Programming)..

[노개북] 실용주의 프로그래머 (서문 ~ 1장.실용주의 철학)

오늘 읽은 범위 🔖 서문 ~ 1장.실용주의 철학 📝 책에서 기억하고 싶은 내용 실용주의 프로그래머의 특징 (p. 19) 새로운 것에 빨리 적응한다. 캐묻기 좋아한다. 비판적인 사고를 가지고 있다. 현실적이다. 다방면의 기술에 익숙하다. 자신의 기술에 관심과 애정을 가진다. 나의 행동에 대해 책임지기, 변명X, 대안제시O 깨진 창문 35p = 나쁜 설계, 잘못된 결정, 형편없는 코드 등 내버려 두면 더 나빠진다 바로 처리하거나 그렇지 못하면, 아직 구현되지 않았음 Not Implemented 이라는 문구를 표시하라 돌멩이 수프 이야기 : 돌멩이를 끓인 물에서 시작해 마을 사람들의 호기심을 이용한 속임수로 진짜 수프를 만들어내는 이야기 시작 피로 start-up fatigue : 프로젝트 시작할 때 서로 가..