read: fail

1억 개의 Postgres 행을 $100 예산으로 이동하는 방법

이 글에서는 Postgres에서 Snowflake로 1억 개의 행을 이동하는 과정을 $100 예산 내에서 어떻게 달성했는지를 탐구합니다. 중요한 점은 데이터의 무결성 유지, 에러 복구, 그리고 이후의 일관성을 보장하는 것입니다. 오픈소스 도구, 맞춤 스크립트, 효율적인 데이터 읽기 방법, 그리고 Snowflake의 데이터 로딩 기능 등 다양한 도구와 기술의 선택이 핵심입니다. 병렬 처리, 데이터 압축, 그리고 증분 배치 로딩 등을 통해 비용을 최소화하는 최적화 방법들을 소개합니다.

최선의 관행이 표준이라면 어떨까?

이 글에서는 객체 지향 프로그래밍에 대한 강의를 들으며 자바에 빠진 경험부터 시작해, 개발자로 성장하면서 느낀 최선의 관행의 중요성과 그것이 어떻게 표준이 될 수 있는지에 대해 탐구합니다. Gleam 같은 언어는 런타임 예외나 널 포인터가 없는 방식으로, 최선의 관행을 언어의 규칙으로 만들어 코드 작성을 더 쉽고 안전하게 만듭니다.

데비안, 메사, 그리고 고대 OpenGL 이야기

때때로 소프트웨어 변경과 버그 수정은 예상치 못한 결과를 초래할 수 있습니다. 이 이야기는 OpenGL ES v1.1이 데비안에서 어떻게 작동했었고, 왜 갑자기 작동을 멈췄는지에 대한 흥미로운 사례입니다. 메사의 업데이트와 GLVND의 도입이 중요한 역할을 했으며, 이로 인해 고대 기술이 우연히도 잘 작동했던 사실이 밝혀졌습니다.

BitC에 대한 회고적 생각들 (2012)

Jonathan Shapiro가 Microsoft에 합류한 후, BitC 작업을 중단한 이유는 여러 가지가 있지만, 가장 중요한 이유는 현재 형태의 타입 클래스가 언어 설계 측면에서 작동하지 않는다고 믿게 되었기 때문입니다. BitC는 재설계와 새로운 구현이 필요했으며, 이는 외부 지원과 자금 없이는 감당하기 어려운 일이었습니다. 또한, 상속과 캡슐화에 대한 필요성, 인스턴스 일관성 문제, 그리고 컴파일 모델에 대한 고민이 프로젝트를 새로 시작해야 할 지점까지 이끌었습니다. 이러한 경험을 통해 얻은 교훈은 향후 언어 설계에 매우 유용할 것입니다.

리눅스 커널 키 유지 서비스와 다음 애플리케이션에서 사용해야 하는 이유

리눅스 커널 키 유지 서비스는 암호화 키를 보호하는 강력한 방법입니다. 이 서비스는 메모리 접근 위반으로부터 키를 보호하고, 애플리케이션 충돌 시에도 키를 안전하게 파기합니다. OpenSSH에 패치를 적용하여 이 기능을 사용해 보세요. 리눅스 커널의 이 멋진 기능을 직접 시험해 볼 수 있습니다!

파이널라이저와 FFI의 결합 불가능성에 대하여

GC와 명시적 소유권을 결합하는 것은 불가능하다는 것을 Harfbuzz 예제를 통해 설명합니다. LuaJIT에서 blob의 데이터를 안전하게 처리하는 것은 예상보다 어렵습니다. 프로그램에 파이널라이저가 포함되어 있다면, 세그폴트가 발생할 가능성이 높다는 것은 GC 구현자들 사이에서 잘 알려진 사실입니다. 안전한 해킹을 하고, 항상 조심하세요!

2024년 2월 상태 업데이트

2024년 2월, 저는 여행과 탐험의 달을 보냈습니다. 런던에서 2주간 시간을 보내며 이사 갈 장소를 탐색했고, 개인 프로젝트인 Pinto와 Rust를 사용한 폰트 렌더링 및 GUI 구축에 집중했습니다. 코드 에디터 구축 아이디어에 푹 빠져있으며, 해싱 함수를 시각적으로 표현하는 작은 프로젝트에 대한 아이디어도 공유했습니다. 런던의 카페에서 분산 시스템과 일관성에 대한 기사를 읽으며 연구와 학습에 대한 그리움을 느꼈습니다.

PulseAudioDB: 사운드 서버를 데이터베이스로 변신

PulseAudioDB는 사운드 서버인 PulseAudio를 이용해 키-값 쌍을 저장하는 독특한 데이터베이스입니다. 각 키는 싱크의 이름으로, 값은 싱크의 볼륨으로 저장됩니다. 이 방법은 빠르고, 간단하며, 리눅스 배포판에 기본적으로 설치되어 있어 접근성이 뛰어납니다. 데이터베이스가 필요할 때, PulseAudioDB를 사용해보세요!

푸리에 급수에 대한 상호작용 가이드

이 가이드는 푸리에 급수를 이용해 스케치를 재현하는 방법을 소개합니다. 기본적인 수학을 복습한 후, 함수의 덧셈주기적 함수의 분해 방법을 탐구합니다. 마지막으로, 에피사이클을 사용하여 스케치를 애니메이션으로 만드는 과정을 설명합니다. 이 가이드를 통해 푸리에 급수의 기본을 이해하고, 단순한 사인/코사인 함수의 합으로 주기적 함수를 근사하는 방법을 배울 수 있습니다.

RSS를 통해 무료로 TLS 인증서 만료를 모니터링하는 방법

이제 무료로 가입 없이 RSS를 통해 TLS 인증서의 만료를 모니터링할 수 있는 서비스가 생겼어요! 단지 원하는 RSS 피드 리더에 구독만 하면 돼요. 만료 30일, 7일, 그리고 하루 전에 알림을 받을 수 있답니다. 🚀

PDF의 위험한 기능들에 대한 분석

2019년에 우리는 PDF 서명과 PDF 암호화에 대한 공격을 발표했습니다. 연구를 통해 PDF가 지원하는 다양한 위험한 기능들에 대한 체계적인 분석의 부재를 발견했고, 이를 메우기 위해 합법적인 PDF 기능을 악용할 수 있는 가능성을 체계화했습니다. 26개 중 28개의 인기 있는 PDF 처리 애플리케이션이 적어도 하나의 공격에 취약함을 밝혀냈습니다. 이는 PDF의 안전성에 대한 중요한 문제를 제기합니다.

워들러의 프린터에 대한 새로운 접근

이 글에서는 워들러의 '더 예쁜 프린터'에 대한 표현력이 더 높은 변형을 소개합니다. 워들러의 알고리즘은 매우 빠르고 간단하면서도 표현력이 뛰어난데, 여기에 더 많은 표현력을 추가한 새로운 접근 방식을 Rust로 구현하고, 이를 이용해 Json 프린터를 만드는 과정을 거칩니다. 코드 포맷터에 대한 새로운 시각을 제공합니다!

온라인 CSS 품질 분석기 사용하기

CSS를 분석하는 최고의 방법은 CSS 분석기를 사용하는 것입니다. 하지만 서둘러야 하거나 의견이 강한 도구를 원한다면, 이 CSS 품질 분석기를 사용해보세요. 성능, 유지보수성, 복잡성에 초점을 맞추어 0부터 100점까지 점수를 매깁니다. 마치 CSS용 PageSpeed Insights와 같습니다.

학습에서의 개성의 중요성

이 대화에서는 학습에 있어 다양한 관점과 접근법이 매우 가치 있다는 점을 강조합니다. 특히, Flexbox를 배우면서 자신에게 맞는 '정신적 모델'을 찾는 것의 중요성을 이야기합니다. 개인의 학습 스타일과 선호도에 맞춰 탐험과 발견을 촉진하는 학습 자료의 제공이 중요하다고 논의합니다.

정확한 소수점을 부동 소수점으로 변환하기 위한 큰 정수 사용법

정확한 소수점을 부동 소수점으로 변환하는 것은 어렵지만, 큰 정수를 사용하는 간단한 알고리즘이 있습니다. 이 방법은 임의 정밀도 정수 연산에 기반하며, 실제로 사용되는 고도로 최적화된 변환 루틴을 이해하는 데 도움이 됩니다. 예를 들어, David Gay의 strtod() 함수와 같은 것이죠. 이 알고리즘은 정확한 변환을 위해 필수적인 임의 정밀도를 필요로 합니다.

단순한 코드 작성의 중요성

오픈 소스 프로젝트에 기여하는 최선의 방법은 코드를 줄이는 것입니다. 초보 프로그래머도 쉽게 이해할 수 있고, 유지보수자가 큰 시간 투자 없이 이해할 수 있는 코드를 작성해야 합니다. 단순한 기술을 사용하여 더 많은 사람이 사용하고 확장할 수 있게 해야 하며, 문제를 더 적은 코드로 해결하려는 노력이 필요합니다.

PGlite: 브라우저와 Node.js, Bun, Deno에서 사용할 수 있는 경량 Postgres WASM TypeScript 라이브러리

PGlite는 브라우저, Node.js, Bun에서 Postgres를 실행할 수 있게 해주는 WASM으로 패키징된 TypeScript 클라이언트 라이브러리입니다. 추가 의존성 없이 사용 가능하며, 압축 시 단 3.7MB에 불과합니다. 이는 기존의 '브라우저 내 Postgres' 프로젝트와 달리 리눅스 가상 머신을 사용하지 않고, 직접 WASM에서 Postgres를 실행하는 혁신적인 접근 방식을 채택했습니다.

Rust 코드 검증을 위한 Creusot 소개

Creusot은 Rust 코드의 안전성을 검증하는 추론 검증기입니다. 코드가 패닉, 오버플로, 단언 실패로부터 안전한지 확인하고, 추가적인 주석을 통해 코드가 올바르게 동작하는지까지 검증할 수 있습니다. WhyML로 코드를 변환하여 Why3의 강력한 검증 기능을 활용할 수 있어요!

파이썬에서 도움 받는 방법

파이썬의 내장 help() 함수는 종종 간과되지만 매우 유용한 기능입니다. 인터넷 접속 없이도, 예를 들어 지하철이나 비행기 안에서도, 파이썬 문서를 오프라인으로 탐색할 수 있게 해줍니다. 이 기능을 통해 sleep() 함수가 아닌, 파이썬의 도움말 시스템에 대해 발표하기로 결정했습니다.

파이썬에서 깔끔한 병렬 출력하기

파이썬 프로젝트에서 병렬 처리를 통해 여러 작업을 동시에 진행하는 방법을 알아보세요. multiprocessing을 사용해 출력이 섞이지 않고 각 작업의 상태를 깔끔하게 한 줄씩 출력하는 기술을 소개합니다. 이 방법은 효율적인 병렬 처리와 출력 관리에 관심이 있는 분들에게 흥미로울 것입니다.