PGLite: 브라우저에서 PostgreSQL을 돌린다고요?
## 들어가며 데이터베이스 하면 보통 서버 어딘가에서 돌아가는 무거운 프로그램을 떠올리잖아요. 그런데 PGLite는 PostgreSQL을 WebAssembly로 컴파일해서 브라우저나 Node.js 안에서 바로 실행할 수 있게 만든 프로젝트예요. ...
Firefox 확장 프로그램을 전부 설치하면 어떻게 될까? — 무모한 실험의 기술적 기록
## 브라우저 확장 프로그램, 전부 깔아보겠습니다 "만약 Firefox 확장 프로그램(Extension)을 전부 다 설치하면 어떻게 될까?" 대부분의 사람은 이런 생각을 했다가도 "당연히 터지겠지" 하고 넘기잖아요. 그런데 이걸 실제로 해본 개발...
Rust로 만든 보안 스캐너 FoxGuard, 린터만큼 빠르게 취약점을 잡아준다고?
## 코드 보안 검사, 왜 매번 뒷전이 될까 개발하다 보면 보안 검사라는 게 항상 "나중에 하자"가 되기 쉽거든요. 이유는 간단해요. 느리니까요. CI/CD 파이프라인에 보안 스캐너를 붙여놓으면 빌드 시간이 훅 늘어나고, 로컬에서 돌리자니 무거워...
Clojure의 영속 자료구조를 Fennel 위에 구현하기 — 함수형 프로그래밍의 핵심 개념 파헤치기
## 무슨 이야기인가요? 프로그래밍 언어의 세계에는 재미있는 실험들이 끊이지 않는데요, 이번에 소개할 프로젝트는 **Clojure의 핵심 자료구조를 Fennel이라는 언어 위에 구현**하는 시리즈의 첫 번째 글이에요. "그게 뭔 소리야?" 싶을 ...
테크 뉴스를 읽는 당신,
직접 만들어볼 준비 되셨나요?
17가지 수익 모델 실습 · 144+ 강의 · 자동화 소스코드 제공
JavaScript로 3D 모델링을? FluidCAD로 만나는 '코드 기반 CAD'의 세계
## 코드로 설계도를 그린다고요? 3D 모델링이라고 하면 보통 마우스로 도형을 끌어다 놓고, 크기를 조절하고, 이리저리 회전시키는 걸 떠올리잖아요. Fusion 360이나 SolidWorks 같은 전통적인 CAD 소프트웨어가 그런 방식이죠. 그런데 ...
Watgo — Go 개발자를 위한 WebAssembly 툴킷이 등장했다
## Go로 WebAssembly를 다루고 싶었던 분들에게 WebAssembly(줄여서 Wasm)는 브라우저에서 네이티브에 가까운 성능으로 코드를 실행할 수 있게 해주는 기술인데요. 원래는 C/C++이나 Rust 같은 언어가 주력이었지만, 최근 ...
체스판을 한 줄로 줄이면 어떤 일이 벌어질까? — 1D Chess 이야기
## 8×8이 아니라 1×16이라면? 체스를 생각하면 보통 8×8, 64칸짜리 보드가 떠오르잖아요. 그런데 누군가가 이 보드를 아예 한 줄짜리로 만들어버렸어요. 세로도 없고 대각선도 없이, 오직 가로 한 줄 위에서만 말을 움직이는 체스인 거죠. 이름...
제너러티브 아트, 코드로 예술을 만드는 개발자들의 세계
## 코드로 그림을 그린다고요? 개발자라고 하면 보통 비즈니스 로직을 짜고, API를 만들고, 버그를 잡는 모습을 떠올리잖아요. 그런데 코드로 아름다운 시각적 작품을 만드는 개발자들도 꽤 많아요. 이걸 **제너러티브 아트(Generative Ar...
D&D 전투 시스템을 테스트하는 방법: 모델 기반 테스트(MBT) 실전 가이드
## 던전 앤 드래곤에 소프트웨어 테스트를 적용한다고? 테스트 코드를 작성하는 건 개발자라면 누구나 하는 일인데요, 보통은 "이 함수에 A를 넣으면 B가 나와야 해"라는 식으로 케이스를 하나하나 짜잖아요. 그런데 만약 테스트해야 할 시스템이 너무...
Dropbox는 어떻게 동기화 버그를 잡을까? 속성 기반 테스트로 분산 시스템 검증하기
## 파일 동기화, 생각보다 훨씬 어려운 문제예요 여러분이 노트북에서 파일을 수정하고, 동시에 폰에서도 같은 파일을 고쳤다고 해볼게요. Dropbox 같은 동기화 서비스는 이 두 변경 사항을 어떻게든 합쳐야 하는데요, 이게 말처럼 단순하지가 않아요....
워드프레스를 버리고 Jekyll로 갈아탄 이야기 — 정적 사이트 생성기, 아직도 쓸만할까?
## 워드프레스, 왜 떠나는 걸까? 워드프레스는 여전히 전 세계 웹사이트의 약 40%를 차지하는 압도적인 CMS(콘텐츠 관리 시스템)예요. 그런데 최근 몇 년 사이, 특히 개발자 커뮤니티에서는 워드프레스를 떠나 정적 사이트 생성기(Static S...
Hegel: 속성 기반 테스팅을 언어 가리지 않고 쓸 수 있게 해주는 새로운 프로토콜
## 테스트를 "예시"가 아니라 "규칙"으로 작성한다면? 우리가 보통 테스트 코드를 작성할 때는 특정 입력에 대해 특정 출력이 나오는지 확인하죠. 예를 들어 "add(2, 3)은 5를 반환해야 한다" 이런 식으로요. 이걸 예시 기반 테스팅(exa...
브라우저에서 레이캐스팅으로 달 표면을 탐험하는 게임, Mooncraft 2000
## 브라우저만 열면 달 위를 걸을 수 있다 별도의 설치 없이 웹 브라우저에서 달 표면을 돌아다닐 수 있는 게임이 공개됐어요. 이름은 **Mooncraft 2000**인데요, 단순한 3D 데모가 아니라 실제로 플레이할 수 있는 시뮬레이션 게임이에...
여러분의 파일 시스템은 이미 그래프 데이터베이스입니다
## 우리가 매일 쓰는 파일 시스템, 사실은 그래프였다 개발하다 보면 "그래프 데이터베이스"라는 단어를 한 번쯤 들어보셨을 거예요. Neo4j 같은 전문 도구를 떠올리시는 분도 있을 텐데요. 그런데 사실 우리가 매일 쓰고 있는 파일 시스템 자체가 이...
LLVM 커뮤니티에서 제안된 JSIR — JavaScript에도 고수준 중간 표현이 필요할까?
## JavaScript 최적화의 새로운 접근법 LLVM 커뮤니티에서 흥미로운 RFC(Request for Comments, 공식 제안서)가 올라왔어요. 바로 **JSIR(JavaScript Intermediate Representation)**...
Xilem — Rust로 네이티브 UI를 만든다고? 실험적 프레임워크의 야심찬 도전
## Rust UI 생태계, 아직 정답이 없는 영역 Rust 언어가 시스템 프로그래밍 분야에서 입지를 확실히 굳혔다는 건 이제 누구도 부정하기 어려운데요, 딱 하나 아직 "이거다!" 하는 해답이 나오지 않은 영역이 있어요. 바로 **GUI(그래픽...
브라우저 안에서 리눅스를 돌려 옛날 프린터를 살려내는 프로젝트, Printervention
## 집에 굴러다니는 그 프린터, 아직 버리지 마세요 혹시 집이나 사무실 구석에 오래된 프린터가 하나쯤 있지 않나요? 하드웨어는 멀쩡한데, 제조사가 드라이버 지원을 끊어버리는 바람에 최신 운영체제에서 쓸 수 없게 된 그런 프린터요. macOS를 ...
부동소수점을 밑바닥부터 하드웨어로 구현하기 — 소프트웨어 개발자도 알아두면 좋은 이야기
## 부동소수점, 그게 대체 뭔데 이렇게 어려운 건가요? 개발하다 보면 한 번쯤은 이런 경험을 해보셨을 거예요. `0.1 + 0.2`를 계산했는데 `0.30000000000000004`가 나오는 거. "아 컴퓨터가 소수점 계산을 못 하는구나"라고 넘...
JavaScript Promise, 취소할 수 있을까? — 의외로 가능한 방법들
## Promise는 한번 시작하면 멈출 수 없다? 자바스크립트에서 비동기 작업을 다룰 때 가장 많이 쓰는 게 Promise죠. API 호출, 파일 읽기, 타이머 등 거의 모든 비동기 작업이 Promise로 이루어져요. 그런데 한 가지 불편한 진...
Solod: Go 문법으로 코드를 짜면 C로 변환해주는 트랜스파일러가 등장했어요
## Go가 좋긴 한데, C가 필요한 순간이 있잖아요 시스템 프로그래밍 세계에는 오래된 딜레마가 있어요. C는 성능과 이식성(portability) 면에서 여전히 최강인데, 쓰기가 너무 고통스럽다는 거예요. 메모리를 직접 관리해야 하고, 문자열 ...