Top 7 Featured DEV Posts of the Week
Welcome to this week's Top 7, where the DEV editorial team handpicks their favorite posts from the...
개요 #
DEV 편집팀이 매주 토요일부터 금요일까지 올라온 글 중 눈에 띄는 7편을 골라 소개하는 코너다. 이번 주 목록에는 실패담이 유난히 많다. 죽은 SD 카드 세 장, 아홉 달 동안 아무도 읽지 않은 데이터, 며칠을 잡아먹은 버그 같은 것들이다.
성공 사례를 정리한 튜토리얼보다 무엇이 어떻게 망가졌는지 짚은 기록이 더 많이 뽑혔다.
Photo by Markus Winkler on Pexels
이번 주 선정 글 #
200달러 폐기 하드웨어로 만든 베어메탈 쿠버네티스 #
@le_beltagy는 재활용 더미에서 건져낸 Dell OptiPlex 한 대와 라즈베리 파이 세 대로 4노드 Talos Linux 클러스터를 세웠다. Cilium, ArgoCD, Longhorn이 그 위에서 돌아간다.
이 글은 튜토리얼보다 부검 기록에 가깝다. 저자가 겪은 실패 다섯 가지를 하나씩 따라가는데, 그중에는 SD 카드 세 장이 죽은 일, 네트워크 정책 때문에 스스로 클러스터에서 잠긴 일, etcd 업그레이드 중 데이터가 깨진 일이 들어 있다.
아홉 달을 잔소리했는데 한 번도 읽지 않았다 #
@anchildress1은 아홉 달 동안 커밋 푸터에 "이 커밋에서 AI가 실제로 쓴 분량"을 기록하도록 강제했다. 그런데 그 데이터를 되돌아본 적은 한 번도 없었다.
글에서는 뒤늦게 그 기록을 점수화하려고 만든 GitHub Action, 푸터 종류별로 매긴 가중치, 그리고 그렇게 뽑은 숫자로도 여전히 메워지지 않는 빈틈을 다룬다.
2주, 8피트 키보드, 그리고 Wordle 워크플로 #
@shy는 팰릿 크기의 8피트짜리 USB-C 키보드와 홀로그래픽 팬 두 대를 컨퍼런스 데모로 만드는 데 2주를 썼다. 완성된 데모의 중심은 Wordle 클론이었다.
저자가 강조하는 원칙은 시스템에서 오래 남을 부분(durable part)을 먼저 모델링하라는 것이다. 그 덕분에 나머지는 행사 나흘 내내 라이브로 고쳐도 문제가 없었다.
터미널 공유 도구는 어떻게 셸을 브라우저에 띄우는가 #
@lovestaco는 ttyd, TermPair, sshx를 모두 클론해서 세 도구의 코드를 읽었다. 남의 브라우저에 살아 있는 셸을 어떻게 띄우는지 알아보려는 목적이었다.
글은 세 도구를 각각 의사 터미널(pseudoterminal)부터 시작해 키 전달, 암호화, 세션 복구까지 따라간다. 같은 문제를 놓고 세 도구가 전혀 다른 답을 내놨다는 결론이다.
Photo by Miguel Á. Padriñán on Pexels
패스키, 쉽게 풀어보기 #
@thomasbnt는 패스키가 정확히 무엇인지 뜯어본다. 기기가 생성하는 키 쌍부터, 피싱을 훨씬 어렵게 만드는 도메인 바인딩까지 짚는다.
그리고 누구나 가장 먼저 던지는 질문에도 답한다. 내 키를 담고 있던 그 휴대폰이 사라지면 어떻게 되는가.
UI를 실시간으로 다시 쓰는 채팅 앱 #
@varshithvhegde가 만든 채팅 앱에서는 모델이 마크다운 대신 생 HTML로 답한다. 그래서 틱택토를 요청하면 실제로 플레이할 수 있는 판이 돌아오고, 바비 테마를 요청하면 인터페이스 전체가 다시 칠해진다.
글에서는 이걸 굴리는 스트리밍 프로토콜과, 찾는 데 며칠이 걸린 버그들을 다룬다. 그중 하나는 두 번째 메시지가 오기 전까지는 아예 드러나지 않았다.
RAG 코파일럿은 숫자를 못 센다 #
@rdiegoss는 문서 검색 코파일럿이 왜 계속 개수를 틀리는지 파고든다. 그리고 이 버그가 그냥 죽어버리는 것보다 왜 더 위험한지 설명한다.
원인을 찾으려면 검색 파이프라인의 모든 단계를 하나씩 훑으면서, 각 단계가 개수에 무슨 짓을 하는지 확인해야 했다.
마무리 #
DEV는 이런 글을 주간 뉴스레터로도 보내준다. 받아보려면 알림 설정에서 Weekly Newsletter를 켜두면 된다.
이 글은 위 출처를 바탕으로 한국 독자를 위해 재작성한 기사입니다. 원문의 사실과 수치에 근거하며, 별도의 견해를 포함하지 않습니다.

