Trawling

최신기사

AI, 개발 도구, 오픈소스, 보안과 인프라의 변화와 이용 조건을 설명하는 최신 기사와 해설입니다.

MacSentinel — Mac을 느리게 만드는 원인을 찾아 안전하게 정리하는 네이티브 도구

발행

MacSentinel은 Mac 모니터링, 진단, 저장 공간 분석, 정리를 하나의 네이티브 워크플로로 묶은 유틸리티입니다. 단순히 시스템 지표를 보여주는 데 그치지 않고 로컬에서 속도 저하의 원인을 설명하며, 50개 카테고리에 걸친 500개 이상의 앱 규칙을 담은 Smart Care로 안전한 정리를 돕습니다. Pro 버전은 구독이 아닌 일회성 구매로 제공됩니다.

Wild vs Mold 벤치마킹 — 두 링커의 성능 측정 결과가 엇갈린 이유를 파헤치다

발행

Mold가 링커 벤치마크에 Wild를 처음 포함하면서 Wild가 상당히 느린 것으로 나타났고, 이는 Wild 측이 8월 초에 공개한 결과와 정면으로 배치됩니다. Wild의 저자 David Lattimore가 두 벤치마크의 설정 차이를 하나씩 통제해가며 재현 실험을 한 결과, 출력 파일 삭제 여부·파일시스템·fork 동작 같은 측정 조건과 Mold 자체의 최근 성능 개선이 차이의 대부분을 설명했습니다.

AI 코딩 어시스턴트가 세션을 넘어 같은 실수를 반복하지 않게 하려면 — 여섯 메모리 시스템의 '결과 피드백 입력' 비교

발행

AI 코딩 어시스턴트가 이전 세션에서 수정된 실수를 새 세션에서 반복하는 문제를 다룹니다. 저자는 Cognee, Mem0, Letta, Supermemory, Zep, Mnemoverse 여섯 메모리 시스템의 공식 문서를 읽고 '리콜 결과에 부정적 판정을 전달하는 공개 입력'이 있는지를 비교했습니다. 결론은 입력의 존재 여부가 아니라, 그 입력이 무엇에 붙어 있고 다음 읽기에서 실제로 무엇이 바뀌는지가 갈림길이라는 것입니다.

러시아가 슈퍼앱 'Max'로 시민을 감시하는 방법 — 수천만 명에게 강제 설치된 사실상 '백도어'

발행

미시간대학교(University of Michigan) 연구진의 포렌식 분석 결과, 러시아에서 사실상 강제로 보급된 슈퍼앱 Max가 기기 스크린샷 촬영, 미니앱 데이터 접근, 사용자 사칭, 코드 주입까지 가능한 '백도어'인 것으로 드러났습니다. 공무원·교사·학생에게까지 설치가 강요되는 이 앱은 권위주의 국가가 따라 할 수 있는 디지털 감시의 '청사진'이라고 연구진은 경고합니다.

RustFS — Rust로 작성된 오픈소스 S3 호환 고성능 오브젝트 스토리지

발행

RustFS는 Rust로 작성된 분산 오브젝트 스토리지 시스템으로, MinIO의 단순함과 Rust의 메모리 안전성·성능을 결합하는 것을 목표로 합니다. Apache 2.0 라이선스를 채택해 MinIO의 AGPL 대비 상업적 사용이 자유롭다는 점을 차별점으로 내세우며, S3 API 호환성과 데이터 레이크·AI 워크로드 최적화를 표방합니다.

Go map 100만 엔트리는 16MB가 아닌 38MB — Swiss Table map의 실제 메모리 비용 분석

발행

Go 1.24부터 기본이 된 Swiss Table 기반 map에서 map[int64]int64 100만 엔트리가 이론값 16MB가 아닌 37.8MB를 차지하는 이유를 강제 GC와 HeapAlloc 측정으로 분석한 글입니다. 그룹·테이블 구조와 7/8 로드 팩터, 할당자의 크기 클래스 올림 때문에 엔트리당 비용이 21~44바이트 사이를 오가며, struct{} set의 패딩 회귀와 삭제 시 메모리 미회수 같은 실무 영향도 함께 다룹니다.

x86 에뮬레이션의 재앙 — ARM 위에서 x86-TSO 메모리 모델을 흉내 내는 문제

발행

x86→ARM 에뮬레이터 FEX 팀이 x86의 강한 메모리 모델(x86-TSO)을 ARM의 약한 메모리 모델 위에서 재현할 때 겪는 성능 문제를 정리한 장문 기술 기고입니다. ARMv8.0의 load-acquire/store-release 방식은 큰 오버헤드를 만들고, LRCPC 확장과 Apple Silicon의 하드웨어 TSO 모드가 해법으로 제시됩니다. 비정렬 접근과 RMW 아토믹까지 다루며 실측 벤치마크 수치를 함께 제공합니다.

MVC, MVP, MVVM, MVVM-C, VIPER — 다섯 벌의 옷을 입은 하나의 패턴

발행

모바일 앱 아키텍처 논쟁의 고전인 MVC, MVP, MVVM, MVVM-C, VIPER를 'View와 Model 사이의 중재자에게 얼마나 많은 권한과 역할을 줄 것인가'라는 단일 질문의 변형으로 재해석한 글입니다. 프로필 사진 변경이라는 동일한 기능을 다섯 패턴으로 구현하며 각각의 차이와 적합한 상황을 비교합니다.

중국의 슈퍼 앱은 어떻게 동작하는가 — Flutter로 파헤쳐 본 미니 프로그램 아키텍처

발행

WeChat, Alipay, Douyin 같은 중국 슈퍼 앱이 수만 개의 서드파티 미니 프로그램을 앱스토어 심사 없이 실행하는 기술적 구조를 분석한 글입니다. 핵심은 셸(shell) 안에 임베드된 스크립트 엔진과 JSBridge이며, 순수 Flutter로는 이 모델을 재현할 수 없다고 지적합니다. 대신 모듈형 모놀리스, SDUI, dart_eval, Flutter Web WebView 등 Flutter 생태계에서 가능한 네 가지 대안을 비교합니다.

Uber가 재시도 폭풍(Retry Storm)으로부터 보호하는 방법 — 에러 소유권으로 연쇄 장애 차단

발행

Uber가 깊은 서비스 의존성 체인에서 재시도 폭풍을 막기 위해 '에러 소유권(error ownership)' 메커니즘을 서비스 메시지에 도입한 경험을 공유합니다. 에러를 실제로 발생시킨 서비스의 직접 호출자에게만 재시도를 허용해, 최대 재시도 폭풍 반경을 25에서 3으로 줄였고 실제 장애에서 약 950만 건의 불필요한 요청을 차단했습니다.

회의마다 "네, 뭐라고요?"를 외치다가 직접 만든 Mac 메뉴 막대 앱 — Huh?

발행

회의나 강의에서 방금 놓친 말을 되돌려 듣기 위해, 최근 30초~2분의 오디오를 RAM에 보관했다가 단축키로 즉시 재생하는 macOS 메뉴 막대 앱 Huh?를 만든 개발기입니다. CoreAudio 프로세스 탭, 무잠금 링 버퍼, 온디바이스 전사, ad-hoc 코드 서명이 권한 없이 무음을 반환하는 문제 등 실제 구현 과정에서 겪은 함정들이 상세히 공유됩니다.

내 하니스는 서로 다른 세 가지 실패에 하나의 라벨을 붙이고 있었다 — 에러 명명이 만드는 오독

발행

LLM의 tool call을 검증하는 자체 하니스에서, '파싱 불가', '비교 불일치', '비교 자체 실패'라는 세 가지 다른 실패가 전부 EXEC_ARGUMENTS_MISMATCH 하나로 기록되던 문제를 다룬 글입니다. 저자는 catch 분리라는 단순한 수정 너머로, 실패 이름이 조용히 삼켜지는 화이트리스트 결함과 테스트가 자기 버그를 옹호하게 되는 함정까지 파고듭니다.

1,000억 개를 12KB로 세는 방법 — HyperLogLog의 원리

발행

HashSet으로 유니크 방문자를 정확히 세면 메모리가 선형으로 늘어나 1,000억 건 규모에서는 사실상 불가능합니다. HyperLogLog는 해시의 선행 0비트 연속 길이를 수천 개 버킷에서 관찰해 조화평균으로 추정함으로써, 약 0.81%의 고정된 오차 안에서 단 수 KB 메모리로 카디널리티를 구합니다. Redis의 PFADD·PFCOUNT·PFMERGE와 BigQuery·Presto·Spark의 근사 집계 함수가 모두 이 알고리즘을 사용합니다.

이란의 아마존 데이터센터 공격, 고객 데이터 '영구 손실'로 이어져 — AWS가 인정한 멀티 AZ 설계의 한계

발행

이란의 드론 공격으로 파손된 AWS 데이터센터에서 일부 고객 데이터가 영구적으로 손실됐다고 아마존이 공식 인정했습니다. 바레인 리전은 세 개 가용 영역(Availability Zone) 전체에서, UAE 리전은 mec1-az2 한 개 영역에서 데이터 복구가 불가능했습니다. 물리적 재해가 멀티 AZ 설계의 내성 범위를 넘어설 수 있음을 보여준 드문 사례입니다.

API 성능 테스트: 현실적인 테스트 설계 방법

발행

성능 테스트의 종류(Load, Stress, Soak, Spike, Volume, Scalability)를 정리하고, 단순히 요청을 많이 보내는 것이 아니라 실제 사용자 행동을 모사하는 테스트 설계법을 다룹니다. 비즈니스 요구사항에서 목표 RPS를 역산하는 방법, 외부 서비스 목킹 기준, 프로덕션과 유사한 테스트 환경 구성, 평가 지표까지 실무 관점에서 설명합니다.

PHP 배열에 키 하나를 추가했더니 메모리 25MB — packed 배열이 해시 테이블로 바뀌는 순간

발행

PHP 배열이 정수 순서대로 채워진 packed list로 유지되는 동안에는 원소당 16바이트로 매우 효율적이지만, 문자열 키 하나만 추가해도 해시 테이블로 전환되며 백만 개 원소 기준 25MB가 추가로 소모됩니다. 저자는 PHP 8.4 기준으로 zend_array 내부 구조를 뜯어보며 전환 조건과 비용을 계측했고, 연관 배열 대신 타입이 선언된 클래스로 행을 담으면 메모리가 거의 절반이 된다는 결론을 제시합니다.