Trawling

개발 · 최신기사

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

품질을 어떻게 알 수 있는가

발행

AI가 작성한 코드에 사람의 리뷰를 의무화하는 관행을 비판적으로 살펴봅니다. 코드 리뷰는 결함을 찾는 약한 증거일 수 있으며, 서로 다른 방식과 기준으로 검증하는 독립적인 검사들을 조합하고 사람이 요구사항과 정답의 기준을 정하는 일이 품질 보증에 더 중요하다고 주장합니다.

문자열 뷰로 C 문자열 다루기

발행

C의 널 종료 문자열은 길이를 구할 때 데이터를 순회해야 하고, 부분 문자열을 따로 쓰려면 복사가 필요합니다. 글쓴이는 포인터와 길이를 담는 읽기 전용 `str_view`, 데이터를 소유하는 `str_owned`를 제안하고 슬라이스, 검색, 비교, 분할 함수를 구현합니다.

Tiden, 코딩 에이전트의 의도 검증

발행

Tiden은 코딩 에이전트가 만든 변경 사항을 코드 작성 세션의 테스트가 아니라 버전 관리되는 요구사항과 대조하는 도구입니다. 개발 환경에서 테스트를 실행하고 결과를 병합 게이트와 연결하며, 운영 오류를 릴리스와 변경 사항, 프롬프트까지 추적한다고 설명합니다.

HTTP/1 연결 재사용 개선

발행

Go 1.27의 net/http.Transport는 닫을 때 읽지 않은 HTTP/1 응답 본문을 최대 256KB, 50ms 동안 비동기로 읽어 연결 재사용을 돕습니다. 본문을 읽지 않고 상태 코드만 확인하는 예제는 Go 1.26보다 약 5배 빨라졌습니다.

llamadart로 구현하는 로컬 음성 대화: Llama Village에 목소리 더하기

발행

llamadart와 Qwen 모델을 조합해 음성을 인식하고 대화 응답을 생성한 뒤 음성으로 합성하는 macOS 명령줄 예제를 만들었습니다. 3B 모델 조합과 더 작은 모델 조합을 비교한 결과, 작은 조합은 다운로드 용량과 메모리를 줄였지만 이 테스트에서는 전체 응답 시간이 더 길었습니다.

베타 테스터 여섯 명이 추천사를 보내왔지만 싣지 않았습니다

발행

LockMargin 창업자는 제품을 실제 업무에 쓰고 개발에도 참여한 베타 테스터 여섯 명의 추천사를 홈페이지에 싣지 않았습니다. 관계를 공개해도 추천사가 독립적인 사용자 평가처럼 보일 수 있다고 판단해 빈 공간을 유지하고, 기여 내용은 변경 기록에 이름과 함께 남기기로 했습니다.

AI가 내 강의를 "AI 저품질 콘텐츠"라고 불러 사과할 때까지 따졌습니다

발행

ESP32 강의를 Google AI Mode에 평가해 달라고 요청한 개발자가 긍정적인 답변을 받은 뒤, 댓글 하나를 근거로 강의가 AI 생성물이라는 판단을 듣습니다. 반박을 거듭하자 AI는 다시 칭찬하고 사과했지만, 댓글에서는 설득에 따라 바뀐 답이 더 정확하다는 보장이 없다고 지적합니다.

또 하나의 부정확한 Linux 매뉴얼 페이지

발행

글쓴이는 glibc의 initstate()가 오류 때 NULL을 반환하지 않는다는 기존 주장을 정정합니다. 실제로는 2013년에 동작이 수정됐지만 매뉴얼의 설명은 갱신되지 않았으며, POSIX가 이 함수의 오류 조건을 정의하지 않는다는 점도 빠져 있습니다.

변화를 전제로 설계하기

발행

AI 도구로 코드 작성 비용이 낮아지면서 코드의 장기 보존보다 쉽게 교체할 수 있는 구조가 중요해진다고 주장합니다. 자주 바뀌어도 되는 코드와 핵심 영역을 구분하고, 경계의 계약과 테스트를 갖춰 핵심부의 계획되지 않은 변경을 줄이는 설계 원칙을 제안합니다.

Factor 0.102 출시

발행

스택 기반 언어 Factor 0.102가 1,068개 커밋을 포함해 출시됐습니다. ARM64 네이티브 지원과 Linux용 GTK4 기본 백엔드, RISC-V 포트가 추가됐으며 컴파일러와 VM, 라이브러리의 기능과 안정성도 폭넓게 개선됐습니다.

엔드투엔드 평가로 더 나은 에이전트 만들기

발행

Ramp는 회계 업무를 자동화하는 에이전트를 만들며 실제 업무 단계를 반영한 엔드투엔드 평가를 설계했습니다. 여러 합성 비즈니스 환경에서 기술과 메모리의 변경을 측정한 결과, 스킬 제거와 압축은 품질을 높이거나 비용을 낮췄고 업무 방식을 추린 메모리는 평균 점수를 5.7점 높였습니다.

스키마 라이브러리 없이 TypeScript의 unknown을 검증하는 방법

발행

TypeScript에서 외부 입력을 `unknown`으로 두고 런타임 타입 가드로 검증하는 방법을 소개합니다. `is-kit`으로 가드를 조합하고 `safeParse`와 JSON 파싱에 연결하는 예제를 보여주며, 풍부한 오류 처리나 변환이 필요할 때는 스키마 라이브러리가 더 적합하다고 구분합니다.

Tiny11Builder — 더 작고 맞춤화된 Windows 11 이미지 만들기

발행

Tiny11Builder는 공식 Windows 이미지나 사용자가 준비한 이미지에서 불필요한 앱과 구성 요소를 골라 제거하고 ISO를 만드는 WinUI 앱입니다. 업데이트와 Defender를 유지하는 Tiny11부터 복구 기능을 제거하는 Core, 항목별로 선택하는 Custom까지 제공하며, Core와 보호된 항목 제거에는 기능상 제약이 따릅니다.

소리 — Bartosz Ciechanowski (2022)

발행

공기 분자의 충돌에서 출발해 압력파가 소리로 전달되는 과정과 주파수, 음색, 공명, 간섭을 시각적 실험으로 설명합니다. 푸리에 변환, 악기 줄의 진동, 데시벨, 도플러 효과와 반사까지 연결해 소리의 물리와 청각을 폭넓게 다룹니다.

터미널에서 보는 Curl 사이트 만들기

발행

블로그 전체를 ANSI 색상 코드가 포함된 텍스트로 제공하는 방법을 설명합니다. 저자는 자체 마크업 언어와 정적 사이트 생성기를 활용해 페이지를 만들고, Nginx 설정으로 curl 요청을 구분했습니다. 댓글에서는 Accept 헤더를 활용하는 편이 표준에 맞는지 논의합니다.

def를 async def로 바꿨더니 블로킹 호출 하나가 FastAPI 앱 전체를 멈췄습니다

발행

FastAPI에서 같은 동기식 HTTP 호출도 일반 def 엔드포인트에서는 스레드 풀로 넘어가지만 async def 안에서는 이벤트 루프를 막습니다. 글쓴이는 부하 실험으로 스레드 풀의 기본 한도 40과 CPU 작업에서 asyncio.to_thread가 제한적으로만 효과를 내는 이유를 측정하고, 프로세스 풀과 스택 추적 워치독을 비교합니다.

antcc의 -O2 성능 저하를 추적하다

발행

C 컴파일러 antcc에서 Lua 벤치마크가 -O2로 더 느려지는 원인을 추적합니다. mem2reg가 루프 안의 초기화되지 않은 지역 변수를 잘못 처리해 불필요한 phi 노드를 만들었고, 레지스터 압박과 스필링이 늘어났습니다. alloca 처리 한 줄을 고쳐 성능 저하가 사라졌습니다.

Lix 2.96 “빙수” 공개

발행

Nix 구현체 Lix가 보안, 디버거, 데몬 프로토콜과 사용성을 개선한 2.96 버전을 공개했습니다. 평가 시간이 5~12% 줄었고, ssh:// 저장소 URI는 지원 중단 절차에 들어갔으며 다음 버전에서 제거될 예정입니다.