Trawling

개발 · 최신기사

언어와 프레임워크, SDK와 개발 방식·도구의 변화를 다룹니다.

발행

AI가 생성한 테스트는 코딩 에이전트를 오히려 나쁘게 만들 수 있다 — 내 테스트를 점검하는 방법

AI 코딩 에이전트가 생성한 테스트가 수정 능력을 떨어뜨릴 수 있다는 분석입니다. SWE-bench Verified 실험에서 약한 테스트는 해결률을 61.2%에서 57.3%로 낮췄고, 더 좋은 테스트는 65.3%로 높였습니다. 잘못된 테스트는 결함을 놓치는 수준을 넘어 다음 수정에 잘못된 목표를 제시할 수 있다고 지적합니다.

발행

NovaSynth by Noveum — 연출할 수 없는 발신자까지 재현해 보이스 에이전트를 테스트

NovaSynth by Noveum은 보이스 에이전트를 스테이징 환경에서 재현하기 어려운 발신자 조건으로 테스트하는 시뮬레이션 도구입니다. 커스텀 페르소나와 시나리오, 인터럽션, 소음, 억양, 네트워크 상태를 설정해 실제 통화를 수행하고, 오디오와 트랜스크립트를 30개 이상의 차원에서 채점해 실패 지점과 수정 방향을 제시합니다.

발행

퇴사할 것인가, 말 것인가 — 그것이 문제로다

1년 반 동안 재택으로 일해온 시니어 .NET 개발자가 허리 부상을 계기로 출근 강요, '코드 품질' 서면 경고, 'Claude는 20달러다'라는 모욕적 발언까지 겪으며 퇴사를 결심한 사연입니다. 5개월치 생활비와 부수입, 진행 중인 구직을 근거로 사표 제출을 예고했고, 이 괴롭힘의 배경에 인력 감축 의도가 있다고 추측합니다.

발행

Modaal for Android — 하나의 프로젝트로 Swift + Kotlin 네이티브 앱을 두 스토어에 동시 배포

Modaal이 Android 지원을 추가해, 하나의 프로젝트에서 실제 Swift/SwiftUI(iOS)와 Kotlin/Jetpack Compose(Android) 코드를 동시에 생성하는 AI 앱 빌더로 확장됐습니다. React Native처럼 화면을 공유하는 대신 로직만 공유하는 구조이며, 사용자가 보유한 Claude·ChatGPT·Cursor 구독을 그대로 가져와 토큰 마크업 없이 사용할 수 있습니다.

발행

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 생태계에서 가능한 네 가지 대안을 비교합니다.

발행

DEV Weekend Challenge 'Dog Days Edition' 우승작 발표 — 블랙독 신드롬 검증부터 Solana 실종견 보상까지

DEV가 International Dog Day를 맞아 진행한 주말 해커톤 'Dog Days Edition'의 우승작 다섯 편이 공개되었습니다. 보호소 데이터 대시보드, 웨어러블 센서 기반 절뚝거림 감지, Solana 스마트 컨트랙트 실종견 보상, ElevenLabs 음성 실험, Gemini 기반 입양 매칭 앱이 선정되었고 각 팀은 200달러와 DEV++ 멤버십을 받습니다.

발행

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

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

발행

코딩 인터뷰 문제 푸는 법을 마침내 터득하기까지 — LeetCode 대신 AI 생성 문제로 시작한 준비법

알고리즘 코딩 인터뷰를 앞둔 저자가 LeetCode 벼락치기 대신 ChatGPT가 생성한 쉬운 문제부터 단계적으로 난이도를 올리며 준비한 경험을 공유합니다. 문제를 풀며 막히는 지점을 기록하고 자신의 풀이 영상을 복기한 끝에, 가정 정리부터 수동 추적, 점진적 테스트까지 이어지는 10단계 작업 리듬을 정립했습니다.

발행

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

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

발행

가장 중요한 제품 결정은 '만들지 않을 것'을 정하는 일

금융 앱에서 흔히 요구되는 '문서 허브'와 '알림 센터' 같은 범용 플랫폼 기능은 빌드 비용보다 수년간의 유지 비용이 훨씬 크다는 지적입니다. 저자는 각 유스케이스를 개별 검토하고, 이미 존재하는 단순한 수단을 쓰며, 기능을 빼는 일을 조직적으로 밀어붙여야 한다고 주장합니다.

발행

LLM으로 글쓰는 법 — 유령작가가 아니라 교정자로 활용하기

독자는 LLM이 생성한 문장을 즉시 알아채므로, 글은 직접 쓰고 LLM은 교정자(copyeditor)로만 써야 한다는 주장입니다. 모델이 제안하는 표현은 단 하나도 쓰지 말 것, 모델의 격려를 받아들이지 말 것이라는 두 규칙과 함께, 문제 지적·수정본 비교·CLI 기반 편집 도구까지 실전 워크플로를 제시합니다.

발행

Flet 1.0 – Python으로 크로스플랫폼 앱 만들기

Python 코드만으로 데스크톱·모바일·웹 앱을 만들 수 있는 UI 프레임워크 Flet이 1.0을 공개했습니다. Flutter 기반으로 150개 이상의 컨트롤을 제공하며, NumPy와 pandas 같은 Python 패키지를 그대로 쓰고 flet build로 각 플랫폼용으로 패키징할 수 있습니다.

발행

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

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의 근사 집계 함수가 모두 이 알고리즘을 사용합니다.

발행

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

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

발행

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

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

발행

AI는 정말 대부분의 개발자보다 코딩을 잘할까? — 불편한 진실

AI 코딩 도구가 대부분의 개발자보다 낫다는 주장에 대해, 실무 개발자가 연구 데이터를 근거로 반박한 글입니다. METR 연구에서 숙련된 개발자들은 AI 도구 사용 시 19% 더 오래 걸리면서도 20% 더 빠르다고 느꼈고, AI 생성 코드는 버그 발생률이 1.7배, XSS 취약점은 2.7배 높았습니다. 저자는 AI를 매일 쓰면서도 '코드를 읽고 틀린 부분을 즉시 잡아내는 능력'이야말로 지금의 핵심 역량이라고 주장합니다.

발행

앱을 3G로 스로틀링해 봤더니 — 테스트가 잡지 못한 버그들이 드러났다

저자가 Chrome DevTools로 네트워크를 3G로 스로틀링해 평소 Wi-Fi에서는 문제없던 앱을 검증한 결과, 테스트를 모두 통과한 코드에서 정확성 버그 두 개를 발견했습니다. 검색 요청의 레이스 컨디션과 자동저장의 클라이언트 타임아웃 재시도 문제로, 둘 다 빠른 네트워크에서는 드러나지 않는 전형적인 순서·타이밍 가정 오류입니다.