~/pingulee
pingulee 프로필 사진

pingulee

기억보다는 기록을 믿습니다.

전체 글

21
JavaScript 이벤트 루프 완전 정복 대표 이미지

JavaScript 이벤트 루프 완전 정복

싱글 스레드인 JavaScript가 어떻게 비동기를 처리하는지는 결국 이벤트 루프 하나로 설명된다. 동기 코드는 콜 스택에서 즉시 실행된다. setTimeout 콜백은 태스크 큐로, Promise.then 은 마이크로태스크 큐로 들어간다. 루프는 스택…

조회 8댓글 0
블로그를 새로 만들었다 대표 이미지

블로그를 새로 만들었다

기존 사이트는 포트폴리오였다. 이제 글을 쓰려고 블로그로 바꿨다. 키워드만 잔뜩 나열하던 SEO 컴포넌트를 지우고, 메타데이터와 구조화 데이터를 제대로 넣었다. - 글은 DynamoDB에 저장한다 - 사이트에서 직접 쓰고 고친다 - 목록과 상세는 IS…

조회 4댓글 0
클로저, 어렵지 않아요 대표 이미지

클로저, 어렵지 않아요

클로저는 함수가 선언될 때의 스코프를 기억하는 것 이다. 그게 전부다. 반복문에서 var 로 인덱스를 캡처하면 모든 콜백이 같은 변수를 본다. let 은 블록마다 새 바인딩을 만들어 이 문제를 없앤다. 모듈 패턴, 이벤트 핸들러의 상태 유지, 디바운스…

조회 1댓글 0
async/await로 비동기 깔끔하게 대표 이미지

async/await로 비동기 깔끔하게

async/await 는 Promise 위에 얹은 문법 설탕이다. 동작은 그대로지만 읽기가 훨씬 낫다. await 를 연달아 쓰면 순차 실행이 된다. 독립적인 요청은 Promise.all 로 묶어 한 번에 기다리자. 순차와 병렬을 구분하는 것이 성능의…

조회 0댓글 0
파이썬 데코레이터 제대로 쓰기 대표 이미지

파이썬 데코레이터 제대로 쓰기

데코레이터는 함수를 받아 함수를 돌려주는 함수 다. 이걸 빼면 감싼 함수의 이름과 독스트링이 사라진다. 디버깅할 때 반드시 후회한다. 데코레이터에 옵션을 주려면 한 겹을 더 감싼다. 처음엔 헷갈리지만 "함수를 돌려주는 함수를 돌려주는 함수"로 생각하면…

조회 1댓글 0
asyncio로 동시성 다루기 대표 이미지

asyncio로 동시성 다루기

CPU가 아니라 네트워크·디스크를 기다리는 작업이라면 asyncio 가 답이다. GIL 때문에 파이썬 스레드는 CPU 작업에서 진짜 병렬이 안 된다. 하지만 I/O 대기 중엔 GIL을 놓으므로, I/O 바운드에선 asyncio도 스레드도 잘 동작한다.…

조회 0댓글 0
타입 힌트로 견고한 파이썬 대표 이미지

타입 힌트로 견고한 파이썬

파이썬은 동적 언어지만, 타입 힌트를 붙이면 IDE와 mypy가 실수를 미리 잡아준다. 타입 힌트는 실행에 전혀 개입하지 않는다. 오직 정적 분석 도구를 위한 것이다. 그래서 부담 없이 점진적으로 도입할 수 있다. 공개 함수의 시그니처부터 붙이자. 내…

조회 0댓글 0
람다 콜드 스타트 줄이기 대표 이미지

람다 콜드 스타트 줄이기

서버리스의 유일한 약점은 콜드 스타트 다. 유휴 상태의 함수가 처음 호출될 때 런타임을 초기화하느라 수백 ms가 든다. - 배포 패키지를 작게 (불필요한 의존성 제거) - 초기화 코드를 핸들러 밖으로 빼서 재사용 - 지연이 치명적이면 프로비저닝된 동시…

조회 0댓글 0
S3로 정적 사이트 호스팅 대표 이미지

S3로 정적 사이트 호스팅

정적 사이트라면 서버가 필요 없다. S3에 올리고 CloudFront로 앞단을 씌우면 끝이다. 1. S3 버킷에 빌드 결과 업로드 2. CloudFront 배포로 캐싱과 HTTPS 3. Route53으로 도메인 연결 버킷을 공개로 열지 말고 OAC(O…

조회 1댓글 0