유한 상태 머신을 데이터 구조로: 수십억 개의 URL 색인 생성

2025-08-14

이 글에서는 유한 상태 머신(FSM)을 데이터 구조로 사용하여 정렬된 집합과 맵을 표현하는 방법을 탐구하고, Rust의 fst 크레이트를 사용한 효율적인 색인 생성을 보여줍니다. FSM 구성에 대해 자세히 설명하고, Trie 및 FSA 구성을 다루며, 2015년 7월 Common Crawl 아카이브의 16억 개 이상의 URL을 색인화하는 예를 보여줍니다. 메모리 매핑, 정규 표현식과의 오토마타 교차, Levenshtein 거리를 사용한 퍼지 검색, 스트리밍 집합 연산과 같은 기법도 설명합니다. 저자는 다양한 크기와 특성을 가진 여러 데이터 세트에서 다른 압축 방식(gzip, xz)과 비교하여 FST의 벤치마크를 생성합니다.

더 보기
개발 색인

Rust에서 panic과 unwrap() 사용 시기와 방법

2025-05-21

이 글에서는 Rust 프로그래밍 언어에서 `panic`과 `unwrap()`를 사용하는 방법에 대해 자세히 설명합니다. 저자는 `panic`을 일반적인 에러 처리에 사용하지 말고 프로그램의 버그 신호로 사용해야 한다고 주장합니다. `unwrap()`는 테스트, 코드 예시, 프로토타이핑에서는 허용되지만 프로그램 충돌을 야기할 수 있으므로 프로덕션 환경에서는 주의해서 사용해야 합니다. 저자는 런타임 불변량을 자세히 설명하고 모든 불변량을 컴파일 타임 불변량으로 옮길 수 없는 이유를 설명합니다. 마지막으로 저자는 가능하면 `expect()`를 `unwrap()`보다 사용할 것을 권장하고 `unwrap()` 사용에 대한 lint를 적용해야 하는지에 대해 논의합니다.

더 보기
개발