Flipdisc, 그 찰칵 소리 나는 픽셀 디스플레이의 매력
## 찰칵찰칵 소리 나는 디스플레이를 아세요? 공항이나 기차역 천장에 매달려 있던 옛날 시간표 디스플레이를 본 적 있으신가요? 글자가 바뀔 때마다 "드르륵" 하고 소리가 나면서 알파벳이 휙휙 넘어가던 그것 말이에요. 비슷하게, 점 하나하나가 "찰...
V8의 Orinoco — 자바스크립트 GC가 멈추지 않게 만드는 기술
## 자바스크립트가 빠르려면 GC가 똑똑해야 한다 자바스크립트 엔진 얘기를 하면 보통 "V8이 빠르다"는 말로 끝나기 쉬운데요, 실제로 V8이 빠른 이유는 여러 겹의 정교한 기술이 쌓여 있기 때문이에요. 그중 하나가 바로 **가비지 컬렉션(GC, G...
Lute 등장: Roblox의 Luau가 독립 런타임을 갖게 됐다
## Luau가 게임 엔진 밖으로 나왔다 혹시 Luau(루아우)라고 들어보셨어요? Roblox에서 만든 프로그래밍 언어인데요. 원래 Lua라는 가벼운 스크립트 언어가 있는데, 그걸 Roblox가 게임 개발에 맞게 대대적으로 손본 게 Luau예요. 점...
async가 약속한 것과 실제로 가져다준 것 — 비동기 10년의 회고
## 도입: async/await, 정말 우리 삶을 편하게 만들었나요 2010년대 초중반부터 거의 모든 주류 언어가 **async/await** 키워드를 받아들였어요. JavaScript, C#, Python, Rust, Kotlin, Swift...
테크 뉴스를 읽는 당신,
직접 만들어볼 준비 되셨나요?
17가지 수익 모델 실습 · 144+ 강의 · 자동화 소스코드 제공
LiteLLM보다 44배 가볍다는 Go 기반 AI 게이트웨이, GoModel
## AI 게이트웨이가 대체 뭐길래 요즘 AI 앱을 만들다 보면 이런 고민이 생깁니다. OpenAI도 쓰고 싶고, Claude도 쓰고 싶고, 로컬에 띄운 Llama도 붙이고 싶은데, 각자 API 형식이 다 달라서 코드가 지저분해진다는 거예요. 그...
여러 언어가 섞인 모노레포에서 Changesets로 버전 관리하기
## 모노레포의 골치 아픈 문제, 버전 관리 모노레포(monorepo)라는 개념이 이제 꽤 익숙하시죠. 여러 프로젝트를 하나의 저장소에 모아놓고 관리하는 방식인데요, Google이나 Meta 같은 회사들이 오랫동안 써온 구조이고, 요즘은 스타트업들도...
리눅스 IPC의 현재와 미래: 메시지 큐 엿보기, io_uring, 그리고 bus1 이야기
## IPC가 뭐길래 또 이야기하냐면 프로그램 하나가 모든 일을 다 하던 시대는 오래전에 끝났어요. 요즘 서버는 웹 서버, DB, 캐시, 로그 수집기 등 여러 프로세스가 서로 데이터를 주고받으며 굴러가죠. 이렇게 프로세스끼리 통신하는 방식을 통틀어 ...
90분이면 현대 CPU의 모든 것이 보인다 - 꾸준히 업데이트되는 마이크로프로세서 입문서
## 왜 CPU를 다시 공부해야 할까 요즘 대부분의 개발자는 CPU를 **추상화된 블랙박스**로 다뤄요. 파이썬 한 줄 쓰면 그게 어떻게 기계어로 변환되고, 어떤 파이프라인을 타고, 캐시 미스가 어떻게 성능을 갉아먹는지 몰라도 앱은 잘 돌아가거든...
Keycard: API 키를 환경변수에 노출하지 않고 서브프로세스에 안전하게 주입하는 방법
## 환경변수에 API 키 넣는 거, 사실 꽤 위험하거든요 개발하다 보면 API 키나 시크릿 토큰을 환경변수로 설정하는 일이 정말 많죠. `.env` 파일에 넣어두고 `export`하거나, 셸 프로파일에 적어두거나. 간편하긴 한데, 이 방식에는 생각...
TanStack Start가 React Server Components를 품었다 — Next.js 말고도 선택지가 생긴 RSC 세계
## React Server Components, 이제 Next.js만의 것이 아니에요 React Server Components(RSC)가 처음 발표됐을 때, 많은 개발자들이 기대하면서도 한 가지 불만이 있었어요. "이거 결국 Next.js에서...
코드를 적게 쓰는 것도 책임감이다 — 오픈소스 메인테이너의 이야기
## 코드를 많이 쓰는 게 항상 좋은 걸까? 개발자라면 누구나 한 번쯤 고민해봤을 거예요. 기능을 더 추가하고, 라이브러리를 더 키우고, 더 많은 코드를 작성하는 게 정말 '잘하는' 건지 말이에요. Rust 생태계에서 활발하게 활동하는 오픈소스 ...
공 하나도 못 저글링하면서 세 개를 돌리려 하고 있진 않나요?
## 기본기의 재발견 "Most people can't juggle one ball" — 대부분의 사람들은 공 하나조차 제대로 저글링하지 못한다. LessWrong에 올라온 이 글의 제목이 뜻하는 바가 뭘까요? 저글링을 배울 때, 보통 사람들은 ...
정적 사이트 생성기 Eleventy, 결국 끝을 맞이하다 — 오픈소스 1인 메인테이너의 현실
## 무슨 일이 있었나요? Node.js 기반의 정적 사이트 생성기(SSG) **Eleventy(11ty)**가 사실상 개발 종료를 선언했어요. Eleventy는 2018년부터 개발되어 온 프로젝트로, 심플하면서도 유연한 설계 덕분에 개발자 블로...
PostgreSQL을 메시지 큐로 쓸 때 꼭 알아야 할 것들 — 큐가 병들지 않게 관리하는 법
## RabbitMQ 대신 PostgreSQL? 생각보다 많은 팀이 이렇게 쓰고 있어요 백엔드 개발을 하다 보면 "작업 큐(job queue)"가 필요한 순간이 꼭 와요. 이메일 발송, 이미지 리사이즈, 결제 처리 같은 작업을 바로 처리하지 않고...
PGLite: 브라우저에서 PostgreSQL을 돌린다고요?
## 들어가며 데이터베이스 하면 보통 서버 어딘가에서 돌아가는 무거운 프로그램을 떠올리잖아요. 그런데 PGLite는 PostgreSQL을 WebAssembly로 컴파일해서 브라우저나 Node.js 안에서 바로 실행할 수 있게 만든 프로젝트예요. ...
Let's Encrypt가 '일부러 망가진 웹사이트'를 만드는 이유 — TLS 테스트의 어려움
## 인증서가 잘못됐을 때, 당신의 코드는 제대로 실패하나요? HTTPS를 쓰는 웹사이트에 접속하면 브라우저가 자물쇠 아이콘을 보여주죠. 이건 TLS(Transport Layer Security)라는 프로토콜로 통신이 암호화되어 있다는 뜻인데요,...
LLVM 커뮤니티에서 제안된 JSIR — JavaScript에도 고수준 중간 표현이 필요할까?
## JavaScript 최적화의 새로운 접근법 LLVM 커뮤니티에서 흥미로운 RFC(Request for Comments, 공식 제안서)가 올라왔어요. 바로 **JSIR(JavaScript Intermediate Representation)**...
브라우저 안에서 리눅스를 돌려 옛날 프린터를 살려내는 프로젝트, Printervention
## 집에 굴러다니는 그 프린터, 아직 버리지 마세요 혹시 집이나 사무실 구석에 오래된 프린터가 하나쯤 있지 않나요? 하드웨어는 멀쩡한데, 제조사가 드라이버 지원을 끊어버리는 바람에 최신 운영체제에서 쓸 수 없게 된 그런 프린터요. macOS를 ...
WebRTC를 브라우저 밖으로 꺼내자 — Go로 미디어 서버 만드는 Pion/handoff
## 브라우저 없이 WebRTC를 쓰고 싶을 때 WebRTC라는 기술, 들어보신 분 많으시죠? 브라우저끼리 별도의 서버 없이 영상통화나 화면 공유를 할 수 있게 해주는 기술인데요. 구글 미트, 디스코드 같은 서비스가 이 기술 위에서 돌아가요. 그...
JavaScript Promise, 취소할 수 있을까? — 의외로 가능한 방법들
## Promise는 한번 시작하면 멈출 수 없다? 자바스크립트에서 비동기 작업을 다룰 때 가장 많이 쓰는 게 Promise죠. API 호출, 파일 읽기, 타이머 등 거의 모든 비동기 작업이 Promise로 이루어져요. 그런데 한 가지 불편한 진...