Excalidraw로 블로그 다이어그램 깔끔하게 관리하는 법
## 기술 블로그 다이어그램, 매번 고민되지 않나요? 기술 블로그를 운영하다 보면 다이어그램이 꼭 필요한 순간이 와요. 아키텍처 구조를 설명하거나, 데이터 흐름을 보여주거나, 시스템 간 관계를 그려야 할 때 말이에요. 그런데 어떤 도구를 쓸지가 ...
파서를 WebAssembly로 컴파일한다고? Ohm의 PEG-to-WASM 컴파일러 이야기
## 파싱 성능의 새로운 가능성 Ohm이라는 도구를 아시나요? JavaScript로 만들어진 파싱 프레임워크인데요, PEG(Parsing Expression Grammar)이라는 문법 정의 방식을 사용해서 프로그래밍 언어나 DSL(Domain-S...
JavaScript를 Erlang 슈퍼비전 트리 안에서 돌린다고? QuickBEAM이 여는 새로운 가능성
## 두 세계의 만남: JavaScript + Erlang/OTP JavaScript와 Erlang, 이 두 언어를 한 문장에 넣으면 뭔가 어색하죠? 하나는 웹 브라우저에서 태어나 세상에서 가장 널리 쓰이는 언어가 됐고, 다른 하나는 통신 장비 ...
Pretext — 터미널에서 텍스트 레이아웃을 제대로 해주는 TypeScript 라이브러리
## 텍스트 레이아웃, 생각보다 어려운 문제예요 터미널이나 텍스트 기반 UI를 만들어본 적 있으신가요? 단순히 `console.log`로 한 줄 찍는 건 쉬운데, 여러 줄의 텍스트를 특정 너비 안에 맞춰서 예쁘게 배치하는 건 은근히 까다로운 문제...
테크 뉴스를 읽는 당신,
직접 만들어볼 준비 되셨나요?
17가지 수익 모델 실습 · 144+ 강의 · 자동화 소스코드 제공
Go 모듈의 go 버전 지시어, 알고 보면 꽤 짜증나는 문제
## 대체 무슨 일이길래 Go 언어로 프로젝트를 하다 보면 `go.mod` 파일에 `go 1.21` 같은 버전이 적혀 있는 걸 보셨을 거예요. 이게 단순히 "이 프로젝트는 Go 1.21로 만들었어요"라는 메모 정도로 생각하기 쉬운데, 사실은 그보다 ...
macOS에서 파일 변경 감지하기 — kqueue의 세계
## 파일이 바뀌었는지, 어떻게 알 수 있을까? 개발하다 보면 "특정 파일이 변경되면 자동으로 뭔가를 실행하고 싶다"는 상황이 꽤 자주 생겨요. 예를 들면 설정 파일이 바뀌면 서버를 다시 시작한다거나, 소스 코드가 수정되면 자동으로 빌드를 돌린다거나...
APK 파일은 사실 ZIP이다 — 단종된 하드웨어를 되살리는 리버스 엔지니어링 이야기
## 우리가 매일 쓰는 APK, 그 정체를 아시나요? 안드로이드 앱을 설치할 때 사용하는 .apk 파일이 있잖아요. 이 파일의 정체가 뭔지 궁금해하신 적 있나요? 사실 APK는 그냥 ZIP 파일이에요. 확장자만 .apk로 바꿔놓은 것뿐이고, 실제...
PyPI 패키지 'telnyx'가 탈취당했습니다 — 또 다시 반복되는 공급망 공격
## 또 터졌습니다, PyPI 공급망 공격 파이썬 패키지를 설치할 때 `pip install` 한 줄이면 되니까 정말 편하죠. 그런데 이 편리함 뒤에는 언제나 "내가 설치하는 이 패키지가 정말 안전한 걸까?"라는 불안이 있어요. 이번에 그 불안이...
메모리 최적화, 옛날 기법이 다시 뜨는 이유
## 메모리가 남아돌던 시대는 끝났다? 한동안 개발자들 사이에서 "메모리는 싸니까 신경 쓰지 마"라는 분위기가 있었어요. RAM 가격이 계속 떨어지고, 클라우드에서 서버 스펙을 올리기도 쉬우니까, 메모리 최적화에 공들이는 게 시간 낭비처럼 느껴지...
웹사이트에서 원하는 데이터만 쏙 뽑아내는 TypeScript LLM 추출기, Lightfeed Extractor
## 웹 스크래핑, 아직도 셀렉터 노가다 하고 계신가요? 웹에서 데이터를 긁어오는 작업은 개발자라면 한 번쯤 해봤을 거예요. 상품 가격을 모아본다든지, 뉴스 기사를 자동으로 수집한다든지. 그런데 이게 생각보다 정말 귀찮은 작업이거든요. CSS 셀...
Python httpx를 포크한 개발자 이야기: 오픈소스 거버넌스와 개발자의 선택
## 무슨 일이 있었냐면 파이썬 생태계에서 HTTP 클라이언트 라이브러리 하면 requests가 가장 유명하지만, 최근 몇 년간 **httpx**가 빠르게 자리를 잡아왔어요. httpx는 requests와 비슷한 API를 제공하면서도 async(비동...
ARM이 직접 만드는 CPU 'AGI', 스펙과 SKU가 공개됐어요
## ARM이 설계만 하던 시대는 끝났다 ARM이라고 하면 보통 '칩 설계도를 만들어서 다른 회사에 파는 곳'으로 알고 계실 거예요. 퀄컴 스냅드래곤, 애플 M 시리즈, 삼성 엑시노스 — 이 칩들 안에 들어가는 CPU 코어의 원본 설계를 ARM이...
빌드도 없고 NPM도 없는 JS 프레임워크 — React가 싫다면 QiteJS를 한번 보세요
## 또 새로운 자바스크립트 프레임워크라고요? 자바스크립트 생태계에서 "새 프레임워크 나왔대"라는 말은 거의 날씨 얘기 수준이긴 한데요, QiteJS는 좀 다른 방향에서 접근하고 있어서 눈길을 끌어요. QiteJS는 스스로를 "빌드 없음, NPM 없...
LiteLLM 패키지가 공급망 공격에 뚫렸습니다 — 내 프로젝트는 괜찮을까?
## 무슨 일이 있었나요? LLM(대규모 언어 모델) 프록시 도구로 많이 쓰이는 Python 패키지 **LiteLLM**이 공급망 공격(supply-chain attack)에 노출된 사실이 확인됐어요. 공급망 공격이 뭐냐면, 우리가 평소에 `pi...
웹 프레임워크 벤치마크의 대명사, TechEmpower가 문을 닫는다
## TechEmpower Framework Benchmarks, 안녕 웹 프레임워크를 고를 때 "이 프레임워크가 얼마나 빠르지?"라는 질문에 답해주던 대표적인 프로젝트가 있었어요. 바로 **TechEmpower Framework Benchmar...
NixOS를 사랑하는 이유 — 선언적 시스템 관리의 매력과 현실
## 운영체제를 코드로 정의한다는 것 서버를 세팅하거나 개발 환경을 구축할 때, 필요한 패키지를 하나씩 설치하고, 설정 파일을 수정하고, 환경 변수를 세팅하는 과정을 거칩니다. 문제는 이 과정이 어디에도 기록되지 않는다는 것입니다. 시간이 지나면 "...
Node.js Worker Threads, 문제투성이지만 우리에겐 딱 맞았다 — Inngest의 실전 경험기
## Node.js의 오래된 고민, 동시성 Node.js를 사용하는 개발자라면 한 번쯤 이런 상황을 겪어봤을 것입니다. 서버가 대부분의 시간에는 빠르게 응답하는데, 특정 요청이 들어오면 갑자기 모든 요청의 응답 시간이 느려지는 현상. 이는 Nod...
Floci: LocalStack의 오픈소스 대안, 무료 로컬 AWS 에뮬레이터
## AWS 로컬 개발의 오래된 고민 AWS를 사용하는 개발 팀이라면 로컬 개발 환경 구축이라는 숙제에서 자유로울 수 없습니다. S3에 파일을 올리고, SQS로 메시지를 보내고, DynamoDB에 데이터를 저장하는 코드를 작성할 때, 매번 실제 ...
2026년에 Common Lisp를 개발한다면 — 현대적 개발 도구 생태계 톺아보기
## 왜 지금 Common Lisp 개발 환경을 이야기하는가 Common Lisp는 1984년에 표준화된 프로그래밍 언어입니다. 40년이 넘은 언어라고 하면 대부분 "아직 쓰는 사람이 있어?"라고 반응할 수 있지만, 실제로 Common Lisp는 꾸...
Deno의 위기 — CEO 부재, 레이오프, 그리고 JavaScript 런타임 전쟁의 현실
## Deno에 무슨 일이 일어나고 있는가 Node.js의 창시자 Ryan Dahl이 Node.js의 설계적 실수를 바로잡겠다며 2018년에 시작한 프로젝트 Deno가 심각한 위기를 맞고 있습니다. 최근 Deno 사의 상당수 인력이 정리해고(레이...