개발곰 shared
프론트엔드 상태 관리의 네 가지 난제, Bunja로 풀어보기
프론트엔드 상태 관리에서 발생하는 공유 범위 변경, 수명 제어, 파생 상태 공유, 기능 단위 응집의 한계는 상태의 위치를 컴포넌트 트리에만 의존하기 때문에 발생합니다. 라이브러리 Bunja는 상태의 인스턴스와 수명을 직접 관리하는 방식으로 이러한 문제를 해결합니다. Bunja를 사용하면 컴포넌트 트리 구조에 구애받지 않고 상태 인스턴스를 정의할 수 있으며, 해당 상태를 참조하는 컴포넌트의 유무에 따라 인스턴스의 생성과 소멸을 자동으로 제어할 수 있습니다. 이를 통해 상태의 공유 범위가 늘어나도 코드를 변경할 필요가 없고, 컴포넌트가 언마운트될 때 관련 상태와 리소스가 알아서 정리되어 안전한 수명 관리가 가능해집니다. 더불어 Jotai 같은 상태 관리 도구와 결합해 파생 상태의 계산 효율성을 높이고, 여러 기능을 결합한 의존 관계를 깔끔하게 표현하여 강력한 기능적 응집을 달성할 수 있습니다. 이 글은 UI 구조를 다루는 React, 인스턴스 수명을 정의하는 Bunja, 값의 변화를 구독하는 Jotai의 역할을 분리하여 복잡한 상태 관리의 본질적인 어려움을 해결하는 명쾌한 대안을 제시합니다.Read full articlegelite 제작기 1막 0화. 그래서 왜 또 다른 컴파일러 제작기인가요?
이 글은 관계형 데이터베이스인 SQLite 위에서 Gel(구 EdgeDB) 쿼리를 SQL로 변환하여 실행하는 컴파일러 Gelite의 제작기이자 튜토리얼입니다. 저자는 엄격한 타입 검사와 이식성을 위해 Rust 언어와 `#![no_std]` 환경을 선택했으며, 인공지능 도구를 활용하여 MVP 단계의 CRUD와 REPL 기능을 성공적으로 구현해 냈습니다. 이 시리즈는 단순한 컴파일러 구현을 넘어 라이브러리, 포매터, 쿼리 빌더 등을 아우르는 독자적인 생태계로 확장해 나가는 전 과정을 단계별로 다룰 예정입니다. 본 포스팅은 개발자가 프로젝트의 설계 기준을 세우고 실제 동작하는 기술 생태계를 점진적으로 구축해 나가는 실제적인 인사이트를 제공합니다.Read full article개발곰 shared
타입 레벨 한글 분해
TypeScript의 타입 시스템만으로 한국어 문법을 표현하는 `typed-korean` 라이브러리에서 한글 자모 분해 및 조합 테이블의 컴파일 성능 최적화 과정을 다룹니다. 기존의 어휘 기반 최소 테이블 방식은 코드 생성 스크립트와 타입 엔진의 로직 중복이라는 문제를 야기하여, 완성형 한글 전체를 커버하는 테이블로의 전환이 필요했습니다. 하지만 개별 음절을 익명 객체 타입으로 매핑하는 초기의 전체 테이블 방식은 `tsc` 메모리와 체크 시간을 크게 증가시키는 한계가 있었습니다. 이를 해결하기 위해 저자는 자모에서 음절 유니언으로 향하는 역방향 매핑 구조를 설계하여 프로퍼티 심볼을 대폭 줄였으며, 최종적으로 유니언 타입을 하나의 긴 문자열 블롭(blob)으로 합친 뒤 템플릿 리터럴 타입의 부분문자열 매칭을 통해 멤버십을 검사하는 방식으로 성능을 극대화했습니다. 이 최적화는 컴파일 성능 저하를 최소화하면서 11,172개의 모든 한글 음절을 지원하고 중복된 시뮬레이터 코드를 완전히 제거하여 프로젝트의 유지보수성과 설계 완성도를 동시에 확보했다는 점에서 큰 의의가 있습니다.Read full article개발곰 shared
Fedify: ActivityPub server framework@fedify@hollo.social
·Fedify 2.0.0을 릴리스했습니다!
Fedify 역사상 가장 큰 릴리스입니다. 주요 변경 사항을 소개합니다:
- 모듈형 아키텍처 — 기존의 단일
@fedify/fedify패키지를@fedify/vocab,@fedify/vocab-runtime,@fedify/vocab-tools,@fedify/webfinger등 독립적인 패키지들로 분리했습니다. 번들 크기가 줄어들고, 임포트가 깔끔해지며, 커스텀 어휘 타입으로 ActivityPub을 확장할 수도 있습니다. - 실시간 디버그 대시보드 — 새로운
@fedify/debugger패키지로/__debug__/경로에 라이브 대시보드를 띄울 수 있습니다. 연합 트래픽의 트레이스, 액티비티 상세, 서명 검증, 로그까지 한눈에 확인할 수 있습니다. 기존Federation객체를 감싸기만 하면 됩니다. - ActivityPub 릴레이 지원 —
@fedify/relay패키지와fedify relayCLI 명령어로 릴레이 서버를 바로 띄울 수 있습니다. Mastodon 방식과 LitePub 방식 모두 지원합니다(FEP-ae0c). - 순서 보장 메시지 전달 — 새로운
orderingKey옵션으로 “좀비 포스트” 문제를 해결합니다.Delete가Create보다 먼저 도착하는 문제가 더 이상 발생하지 않습니다. 같은 키를 공유하는 액티비티는 FIFO 순서가 보장됩니다. - 영구 전달 실패 처리 —
setOutboxPermanentFailureHandler()로 원격 인박스가 404나 410을 반환할 때 대응할 수 있습니다. 도달 불가능한 팔로워를 정리하는 등의 처리가 가능합니다.
이 외에도 미들웨어 수준의 콘텐츠 협상, @fedify/lint, @fedify/create, CLI 설정 파일, 네이티브 Node.js/Bun CLI 지원, 다수의 버그 수정 등이 포함되어 있습니다.
이번 릴리스에는 한국 OSSCA (오픈소스 컨트리뷰션 아카데미) 참가자분들의 큰 기여가 담겨 있습니다. 참여해 주신 모든 분께 감사드립니다!
브레이킹 체인지가 포함된 메이저 릴리스입니다. 업그레이드 전에 마이그레이션 가이드를 꼭 확인해 주세요.
전체 릴리스 노트: https://github.com/fedify-dev/fedify/discussions/580