Memoization 단계별로 구현하기
2024. 6. 19.
Memoization 단계별로 구현하기
심윤섭: 클로저, This, 그리고 Weakmap을 소개하면서 reselect의 구현을 단계적으로 다가가는 글입니다. JS의 중요한 개념들을 친절히 설명하면서 다가가기 때문에 꼭 읽어보시면 좋습니다. 번외로 WeakMap이 예시로 들은 라이브러리 외에도 memoization을 위해 많이 쓰이고 있습니다(ex. Jotai).
HTMX의 단순함
심윤섭: 저자는 은탄환은 없다라는 것을 말하면서도 간단한 UI를 만들기 위해 자바스크립트를 너무 많이 사용한다는 것을 동시에 말합니다. 그러면서 간단한 UI를 만든다면 htmx정도면 괜찮다는 주장을 펼치는 글입니다. 하지만 JS 프레임워크에 익숙해진 개발자들과 많은 인터렉션을 원하는 요구사항에 맞춰서 HTMX을 많이 쓸 수 있을지는 의문이 드네요.
Valibot 0.31 출시
심윤섭: zod가 출시되면서 schema 검증 도구로서 많은 사람들에게 이용되었습니다. Valibot은 zod와 비슷한 구조를 이어가면서 Tree shaking, 작은 번들사이즈를 목표로 만들어졌습니다. Valibot은 적은 번들사이즈로 많은 유연성을 목표로 계속 개발하고 있으므로 계속 지켜볼만하다고 생각합니다. 번외로 여러 Schema 검증 도구를 비슷한 인터페이스로 사용할 수 있는 노력이 담겨있는 typeschema
나 standard-schema
도 계속 살펴보면 좋다고 생각합니다.
협업 기능 구현을 위한 아키텍쳐
심윤섭: 협업 기능을 구현하기 위해(ex. Google Docs, Notion…) 서버에서 다른 변경사항이 들어왔을 경우 처리하는 방식을 구현한 라이브러리를 많이 사용합니다. 이 글에서는 협업 기능을 구현한 라이브러리들이 어떻게 동작하는지 상세하게 설명합니다. 마지막으로 분산 협업 서버도 소개하고 있어 기존 중앙 서버 처리 방식의 알고리즘과 향후 나아갈 방향을 알기 위해 가볍게 볼만하다고 생각합니다.
출시 주간
TypeScript 5.5에서의 추론 강화, 정규표현식 검사, 선언 파일 지원 강화, 제안단계의 Set 메소드 지원..을 출시할 것이라고 예고하였고, Astro의 환경 변수 검사, 미들웨어 재작성… 기능과 함께 4.10이 출시되었습니다. Deno는 비공개 npm 저장소, Node.js 호환성 지원과 성능 향상을 가진 1.44를 출시했네요.
NodeJS에서 setTimeout 메모리 누수
NodeJS에서 setTimeout
이 브라우저와 다르게 객체를 반환하는데, 객체에 closure에 관한 것을 저장하기 때문에 메모리 누수가 있을 수 있다는 글입니다.
파라미터가 여러개일 경우 함수를 합성하는 방법
함수형 프로그래밍 개념에 합성이라는 개념을 사용하려면 매개변수가 일정해야하는데, 이를 복합적 데이터구조나 커링을 통해 해결하는 방법을 보여줍니다.
FlatList 성능 최적화하기
React Native에서는 보통 리스트를 보여주기 위해 FlashList를 사용하는데, 사용하지 않을 경우 FlatList를 성능 최적화하는 방법을 설명하는 글입니다.
Vector DB란 무엇인가요?
많은 DB 서비스형 회사에서 Vector DB를 소개하는 김에, Vector DB를 소개하는 글을 가져왔습니다.