파이썬 데코레이터 제대로 쓰기
데코레이터는 함수를 받아 함수를 돌려주는 함수 다. 이걸 빼면 감싼 함수의 이름과 독스트링이 사라진다. 디버깅할 때 반드시 후회한다. 데코레이터에 옵션을 주려면 한 겹을 더 감싼다. 처음엔 헷갈리지만 "함수를 돌려주는 함수를 돌려주는 함수"로 생각하면…
9개
데코레이터는 함수를 받아 함수를 돌려주는 함수 다. 이걸 빼면 감싼 함수의 이름과 독스트링이 사라진다. 디버깅할 때 반드시 후회한다. 데코레이터에 옵션을 주려면 한 겹을 더 감싼다. 처음엔 헷갈리지만 "함수를 돌려주는 함수를 돌려주는 함수"로 생각하면…
CPU가 아니라 네트워크·디스크를 기다리는 작업이라면 asyncio 가 답이다. GIL 때문에 파이썬 스레드는 CPU 작업에서 진짜 병렬이 안 된다. 하지만 I/O 대기 중엔 GIL을 놓으므로, I/O 바운드에선 asyncio도 스레드도 잘 동작한다.…
파이썬은 동적 언어지만, 타입 힌트를 붙이면 IDE와 mypy가 실수를 미리 잡아준다. 타입 힌트는 실행에 전혀 개입하지 않는다. 오직 정적 분석 도구를 위한 것이다. 그래서 부담 없이 점진적으로 도입할 수 있다. 공개 함수의 시그니처부터 붙이자. 내…
싱글 스레드인 JavaScript가 어떻게 비동기를 처리하는지는 결국 이벤트 루프 하나로 설명된다. 동기 코드는 콜 스택에서 즉시 실행된다. setTimeout 콜백은 태스크 큐로, Promise.then 은 마이크로태스크 큐로 들어간다. 루프는 스택…
클로저는 함수가 선언될 때의 스코프를 기억하는 것 이다. 그게 전부다. 반복문에서 var 로 인덱스를 캡처하면 모든 콜백이 같은 변수를 본다. let 은 블록마다 새 바인딩을 만들어 이 문제를 없앤다. 모듈 패턴, 이벤트 핸들러의 상태 유지, 디바운스…
async/await 는 Promise 위에 얹은 문법 설탕이다. 동작은 그대로지만 읽기가 훨씬 낫다. await 를 연달아 쓰면 순차 실행이 된다. 독립적인 요청은 Promise.all 로 묶어 한 번에 기다리자. 순차와 병렬을 구분하는 것이 성능의…
서버리스의 유일한 약점은 콜드 스타트 다. 유휴 상태의 함수가 처음 호출될 때 런타임을 초기화하느라 수백 ms가 든다. - 배포 패키지를 작게 (불필요한 의존성 제거) - 초기화 코드를 핸들러 밖으로 빼서 재사용 - 지연이 치명적이면 프로비저닝된 동시…
정적 사이트라면 서버가 필요 없다. S3에 올리고 CloudFront로 앞단을 씌우면 끝이다. 1. S3 버킷에 빌드 결과 업로드 2. CloudFront 배포로 캐싱과 HTTPS 3. Route53으로 도메인 연결 버킷을 공개로 열지 말고 OAC(O…
관계형 사고를 버리는 것이 DynamoDB의 시작이다. 조인이 없으니 접근 패턴을 먼저 정하고 키를 설계한다. 서로 다른 엔티티를 PK/SK 조합으로 한 테이블에 담는다. 예를 들어 USER 123 , POST 456 처럼 접두어로 구분한다. 다른 각…
소셜 계정으로 바로 시작할 수 있습니다.