오늘의.. 37

[노개북] 실용주의 프로그래머 (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 : 프로젝트 시작할 때 서로 가..

[HackerRank] Array Manipulation 풀이

문제 입력 값은 행렬의 크기(n*m)와, 쿼리(query, 여기서는 db 쿼리가 아니라 "연산"을 의미한다.)들로 이루어져있는데, 쿼리의 의미는 a = 시작 인덱스, b = 종료 인덱스, k = 값이다. 각 쿼리는 시작 인덱스 ~ 종료 인덱스 사이의 배열 요소에 값을 더하는 작업을 수행한다. 모든 작업을 수행하고 배열의 최대 값을 반환하면 된다. n m a, b, k a, b, k a, b, k ... www.hackerrank.com/challenges/crush/problem Array Manipulation | HackerRank Perform m operations on an array and print the maximum of the values. www.hackerrank.com 풀이 과정 ..

[HackerRank] Minimum Swaps 2 풀이

문제 You are given an unordered array consisting of consecutive integers [1, 2, 3, ..., n] without any duplicates. You are allowed to swap any two elements. Find the minimum number of swaps required to sort the array in ascending order. www.hackerrank.com/challenges/minimum-swaps-2 풀이 과정 1. 문제 해석 오류 : 집합 기호와 영어 해석이 잘못됐다. 배열이 1 부터 n까지의 원소라는 의미인데, 1 부터 포함되어야한다는 의미를 놓치고 말았다. n~m에 해당하는 케이스도 정렬하겠다고 열심히..

[C#/Mysql] Error : every derived table must have its own alias

기본 구조는 ASP.NET Entity Framework를 이용하여 MariaDB에서 데이터를 가져온다. 에러 문으로 구글링 하면 JOIN 할 때 테이블에 alias를 안 해줘서 라고 하는데, 나는 JOIN을 안했다. (아마도 Entity Framework 안에서 어디선가 한 것 같다.) 결론적으로 SELECT한 다음 가져온 리스트의 한 객체에 값을 수정한 게 문제였다. (가져온 데이터를 가공해서 보여주려면 매핑 전용으로 클래스를 만들어서 사용해야 한다. 해당 모델이 사용된 부분을 다 수정해야하는 불편함이 있다.) 에러가 모호해서 찾기 힘들었다.

Learning HTTP/2 러닝 HTTP/2 (1)

23페이지HTTP/1.0의 특징 (1996년 발표, RFC 1945)헤더응답 코드 Response codes리다이렉트 Redirects오류 Errors조건부 요청 Conditional requests콘텐츠 인코딩 encording (압축 compression)요청 메서드 Request methods단점여러 요청 사이에 연결을 유지하는 기능이 없음Host 헤더가 필수가 아니였음캐싱 cashing 옵션이 빈약했음 HTTP/1.1 의 특징 (20년 이상 사용 중, RFC 2616)casheability 헤더의 확장OPTIONS 메서드Upgrade 헤더Range 요청Transfer-Encording 압축파이프라이닝 Pipelining[메모] 파이프라이닝은 '클라이언트가 요청을 한꺼번에 전송할 수 있는 기능'인데..