읽은 글들 (~22.6.29)
JavaScript
Processing Arrays non-destructively: for-of vs. .reduce() vs. .flatMap()
제목에 나온대로 for-of
, .reduce()
, .flatMap()
이 같은 상황에서 어떻게 다르게 쓰이는지를 설명한다. 많은 예제 코드가 있으므로 이해하기는 쉬울 것이다.
숙련된 프로그래머라면, 글쎄, 굳이 정독할 필요가 있나 싶다. 초심자를 대상으로 쓴 글 같다.
Why, Oh Why Was This Added?
"이 이벤트 핸들러에
event.stopPropagation()
를 왜 추가했더라?"
라는 질문에 대한 글이다.
명확한 설명도 문맥도 없이 추가된 코드는 계속해서 남아있게 된다. 지우기 찝찝해서, 이유가 있을 거라 생각해서. 심지어는 비슷한 코드를 작성할 때는 복사해서 그대로 가져가기까지 한다. 그러한 모호함이 계속되지 않도록, 코드를 추가한 이유에 대해 주석을 달자 는 내용이다.
글은 event.stopPropagation()
에 초점을 맞추고 있지만, 다른 비슷한 케이스가 많이 있을 것이다. 코드의 문맥 만으로 설명되지 않는 코드를 추가할 때는 주석을 달아 놓는 습관을 갖자.
React
React 18 useEffect Double Call for APIs: Emergency Fix
React 18 의 개발 모드에서는 useEffect
가 두 번 실행된다. 웬만한 경우에는 큰 문제가 없지만, useEffect
내에서 API 콜 을 할 경우 중복 요청이 된다는 문제가 생긴다. 이 현상을 어떻게 막을 것인가? 에 대한 글이다. 정리하면 네 가지 방법이 있다.
- 프로덕션 모드를 사용한다.
StrictMode
를 사용하지 않는다.AbortController
를 사용한다.- API 콜에 대한 캐시 기능을 사용한다. (직접 구현하든, React Query 나 RTK Query 같은 라이브러리를 사용하든.)
제목에 Emergency Fix 라고 나와있듯 근본적인 해결책은 아니다. 하지만 AbortController 라는 키워드도 알 수 있었고, "근본적인" 해결책이 없다는 걸 간접적으로 알 수 있었으니 됐다.
Etc
New from Anaconda: Python in the Browser
파이썬을 자바스크립트처럼 HTML 에서 사용할 수 있는 프레임워크. 엔진이 브라우저에 포함되어 있기 때문에 사용자는 설치할 필요가 없다. 그저 <py-script />
태그를 <script />
태그처럼 사용하면 된다.
아직 알파 단계라고는 하지만, 이제 프론트엔드도 백엔드처럼 여러 언어로 개발할 수 있는 날이 머지 않은 것 같다. 공부할 게 많아진다는 점에서 변화는 썩 달갑지 않다. 하지만 거부할 수도 없다.
모던 프론트엔드 프로젝트 구성 기법 - 모노레포 개념 편
"모노레포"는 여러 모듈/프로젝트를 하나의 소스코드 저장소에서 관리하는 것을 의미한다. 이 글에서는 "모노레포"의 기본 개념과, 프론트엔드 프로젝트에서는 어떻게/왜 모노레포 프로젝트를 구성하는지에 대해 설명한다.
GitHub Copilot - Your AI pair programmer
GitHub 의 서비스. 함수를 작성할 때 함수의 이름을 작성하는 것만으로 함수의 내용을 자동 완성 시켜주는 서비스. 딥러닝으로 구현된 것으로 보인다. 가격은 60일 트라이얼에 한 달 10달러 정도. 정확도가 얼마나 좋을지는 모르겠으나, 이런 서비스가 이미 유료로 운영되고 있다는 사실에 놀랐다.
지난 24일에는 Amazon 에서도 비슷한 서비스를 출시하기도 했다. Amazon launches CodeWhisperer, a GitHub Copilot-like AI pair programming tool
옛날에는 AI로 인해 모든 직업이 사라지더라도 프로그래머만은 남을 거라고 막연히 생각했는데, 알파고 이후에 쏟아져나오는 많은 기술과 서비스들을 보고 있노라면 프로그래머도 안전 구역이 아니라는 생각이 든다.