CSS만으로 DOOM을 3D 렌더링하다 — 브라우저의 한계는 어디까지일까
## 자바스크립트 없이 CSS로 DOOM을? 1993년에 나온 전설적인 FPS 게임 DOOM을 온갖 플랫폼에서 돌리는 건 개발자 커뮤니티의 오래된 밈이에요. 임신 테스트기, ATM, 프린터 등 "이걸로도 DOOM이 돌아간다고?" 하는 기기들이 수...
리눅스는 사실 인터프리터다? ELF 바이너리를 바라보는 새로운 시선
## 우리가 당연하게 여기던 것 리눅스에서 프로그램을 실행한다는 건, 터미널에 `./myapp`을 치거나 더블클릭하는 거잖아요. 그런데 이 과정을 자세히 들여다보면 꽤 흥미로운 관점이 하나 나와요. "리눅스 커널은 사실 인터프리터 아닌가?"라는 거예...
트랜지스터 2,458개로 틱택토 게임을 만들었다 — 컴퓨터의 가장 밑바닥을 들여다보는 프로젝트
## 프로세서 없이 게임을 만든다고? 우리가 매일 쓰는 컴퓨터, 스마트폰, 심지어 스마트워치까지 전부 프로세서(CPU) 위에서 소프트웨어를 돌려서 동작하잖아요. 그런데 만약 CPU 같은 범용 칩 없이, 트랜지스터라는 가장 기본적인 전자 부품만으로 게...
PyPI 패키지 'telnyx'가 탈취당했습니다 — 또 다시 반복되는 공급망 공격
## 또 터졌습니다, PyPI 공급망 공격 파이썬 패키지를 설치할 때 `pip install` 한 줄이면 되니까 정말 편하죠. 그런데 이 편리함 뒤에는 언제나 "내가 설치하는 이 패키지가 정말 안전한 걸까?"라는 불안이 있어요. 이번에 그 불안이...
테크 뉴스를 읽는 당신,
직접 만들어볼 준비 되셨나요?
17가지 수익 모델 실습 · 144+ 강의 · 자동화 소스코드 제공
메모리 최적화, 옛날 기법이 다시 뜨는 이유
## 메모리가 남아돌던 시대는 끝났다? 한동안 개발자들 사이에서 "메모리는 싸니까 신경 쓰지 마"라는 분위기가 있었어요. RAM 가격이 계속 떨어지고, 클라우드에서 서버 스펙을 올리기도 쉬우니까, 메모리 최적화에 공들이는 게 시간 낭비처럼 느껴지...
PDF 다크모드의 고질적 문제를 해결한 브라우저 도구, Veil을 소개해요
## 다크모드에서 PDF 열면 눈이 아프거나, 이미지가 망가지거나 밤늦게 코딩하다가 레퍼런스 PDF를 열어본 적 있으시죠? 하얀 배경이 눈을 때리는 그 느낌, 다크모드를 쓰는 분들이라면 다 공감하실 거예요. 그래서 PDF 뷰어에 다크모드를 적용하거나...
Elixir와 Phoenix로 블로그를 만들어보니 — 함수형 웹 개발의 색다른 경험
## 왜 하필 Elixir와 Phoenix로 블로그를? 블로그를 만드는 방법은 수없이 많죠. Next.js, Hugo, Jekyll, WordPress... 선택지가 넘치는 시대에 한 개발자가 **Elixir**와 **Phoenix** 프레임워크...
컴파일러 최적화의 두 가지 사례: 우리가 쓰는 코드가 실제로 어떻게 바뀌는지
## 컴파일러가 내 코드를 고쳐준다고? 우리가 C나 C++, Rust 같은 언어로 코드를 작성하면, 컴파일러가 이걸 기계어로 번역해주잖아요. 그런데 컴파일러는 단순히 번역만 하는 게 아니에요. 코드를 분석해서 "이거 이렇게 바꾸면 더 빠르게 돌아...
Three.js 창시자 Mr.doob의 새 장난감 — 브라우저에서 돌아가는 볼풀 시뮬레이션
## 브라우저에서 이게 된다고? Three.js를 만든 Ricardo Cabello, 개발자들 사이에서는 Mr.doob이라는 닉네임으로 더 유명한 분이 CodePen에 재미있는 데모를 하나 올렸어요. 바로 "Ball Pit" — 볼풀 시뮬레이션인데요...
[심층분석] 25년차 개발자가 코딩을 그만두겠다고 선언한 이유, 그리고 우리가 생각해봐야 할 것들
## 어느 날 갑자기, 코드 리뷰가 사라졌다 6살 때 처음 코드를 작성하고, 25년간 전문 소프트웨어 개발자로 살아온 한 사람이 있어요. 회사에서도 코딩하고, 퇴근 후에도 코딩하는, 말 그대로 개발이 삶 전부인 사람이었죠. 그런데 이 사람이 어느 날...
Unity 엔진을 뜯어보다가 C++ 코루틴의 존재 이유를 깨달았다는 이야기
## C++ 코루틴, 왜 이렇게 복잡한 걸까? C++20에서 코루틴이 정식으로 들어왔는데요, 써보신 분들은 아시겠지만... 솔직히 처음 보면 "이게 대체 왜 이렇게 생겼지?"라는 생각이 드는 게 정상이에요. Python이나 JavaScript의 ...
알고리즘을 눈으로 보면서 배우자 — Algorithm Visualizer 소개
## 알고리즘 공부, 머릿속으로만 하기엔 한계가 있잖아요 코딩 테스트 준비하거나 자료구조·알고리즘 수업을 듣다 보면, 머릿속으로 배열이 정렬되는 과정을 시뮬레이션하거나 트리가 어떻게 탐색되는지 상상하느라 고생한 경험 다들 있으실 거예요. 교과서의...
Video.js를 16년 만에 되찾아 88% 더 가볍게 다시 만든 이야기
## 16년 된 오픈소스 프로젝트의 귀환 웹에서 비디오 플레이어를 다뤄본 적 있다면 Video.js라는 이름을 한 번쯤 들어봤을 거예요. 2010년에 처음 나온 이 라이브러리는 HTML5 비디오가 아직 불안정하던 시절부터 웹 비디오 재생의 표준 ...
빌드도 없고 NPM도 없는 JS 프레임워크 — React가 싫다면 QiteJS를 한번 보세요
## 또 새로운 자바스크립트 프레임워크라고요? 자바스크립트 생태계에서 "새 프레임워크 나왔대"라는 말은 거의 날씨 얘기 수준이긴 한데요, QiteJS는 좀 다른 방향에서 접근하고 있어서 눈길을 끌어요. QiteJS는 스스로를 "빌드 없음, NPM 없...
HTML select 요소, 드디어 마음대로 꾸밀 수 있게 됐는데… 이걸로 대체 뭘 만든 거야?
## 웹 개발자의 오랜 숙원, 커스터마이징 가능한 select 웹 프론트엔드를 해본 분이라면 한 번쯤 겪어봤을 거예요. 드롭다운 메뉴, 그러니까 HTML의 `` 요소를 디자인 시안대로 꾸미려고 했는데, 도저히 CSS로는 안 되는 거죠. 브라우저마...
정규표현식의 findall은 사실 O(n²)이었다 — 아무도 고치지 않은 이차 시간 복잡도 문제
## 우리가 당연하게 쓰던 findall의 숨겨진 비용 프로그래밍에서 정규표현식(regex)은 텍스트 처리의 만능 도구처럼 쓰입니다. 로그 파싱, 입력 검증, 데이터 추출 등 거의 모든 곳에서 활용되죠. 그런데 정규표현식으로 문자열에서 "모든 매...
Antithesis가 만든 Bombadil: 웹 UI를 위한 속성 기반 테스팅의 새로운 접근
테스트를 작성할 때 가장 어려운 부분은 뭘까요? 아마 "어떤 시나리오를 테스트해야 하는지"를 정하는 것일 겁니다. 단위 테스트든 E2E 테스트든, 결국 개발자가 머릿속으로 시나리오를 떠올리고 하나하나 수작업으로 작성해야 합니다. 그런데 우리가 미처...
RSS 리더를 추천하는 기사가 37MB라니, 웹은 어디로 가고 있는가
## 아이러니의 극치 PC Gamer가 RSS 리더를 추천하는 기사를 발행했습니다. RSS는 웹의 초기 정신을 대표하는 기술입니다. 가볍고, 빠르고, 사용자가 원하는 콘텐츠만 깔끔하게 받아볼 수 있는 구독 포맷이죠. 그런데 이 RSS 리더 추천 ...
커링(Currying)에 대한 반론: 정말 좋은 패턴인가, 다시 생각해볼 때
## 함수형 프로그래밍의 "당연한 미덕"에 의문을 제기하다 함수형 프로그래밍(FP)을 공부하다 보면 반드시 만나는 개념이 있습니다. 커링(Currying)이죠. 여러 인자를 받는 함수를 하나의 인자만 받는 함수의 체인으로 변환하는 기법입니다. FP ...
Node.js Worker Threads, 문제투성이지만 우리에겐 딱 맞았다 — Inngest의 실전 경험기
## Node.js의 오래된 고민, 동시성 Node.js를 사용하는 개발자라면 한 번쯤 이런 상황을 겪어봤을 것입니다. 서버가 대부분의 시간에는 빠르게 응답하는데, 특정 요청이 들어오면 갑자기 모든 요청의 응답 시간이 느려지는 현상. 이는 Nod...