read: fail

Oils 0.21.0 - 플래그, 정수, 스타쉽 버그 및 속도

Oils 0.21.0 업데이트에서는 새로운 플래그 파싱 API, 정수 처리 개선, 스타쉽 프롬프트 버그 수정, 그리고 성능 문제에 대한 해결책이 소개되었습니다. 이번 업데이트는 언어 설계와 런타임 이슈, 성능 튜닝에 대한 깊은 통찰을 제공하며, 다양한 프로파일링 도구를 사용한 성능 최적화에 대한 논의도 포함되어 있습니다.

인보이스 메이커 - 간단한 Typst 또는 YAML 데이터 기록에서 아름다운 인보이스 생성

인보이스 메이커를 사용하면 Typst나 YAML 데이터를 이용해 아름다운 인보이스를 쉽게 만들 수 있어요. 이 툴은 효율적인 문서 관리를 도와줍니다!

예상치 못한 TS 5.5 기능: 타입 술어 추론

TypeScript 5.5에서는 Dan Vanderkam의 PR 덕분에 함수 본문에서 타입 술어를 추론할 수 있게 되었습니다. 이는 isString과 같은 함수를 작성할 때, TypeScript가 자동으로 value is string 타입 술어를 추론하게 만들어, 개발자들에게 개발을 더 쉽게 만들어줄 중요한 개선사항입니다.

WebAssembly의 JSPI가 오리진 트라이얼에 진입

WebAssembly의 JavaScript Promise Integration (JSPI) API가 오리진 트라이얼 단계에 들어갑니다. 이 API는 WebAssembly 코드가 JavaScript 프로미스를 사용하는 비동기 Web API에 접근할 수 있게 해주며, 프로미스가 반환되고 해결될 때 코드를 일시 중지하고 재개할 수 있습니다. Emscripten 버전 3.1.47 이상이 필요하며, 표준화 과정 중 API 변경 가능성이 있습니다.

백만 분의 일 버그의 대척점: 악마적 비결정성 길들이기

DoorDash가 Aurora PostgreSQL에서 CockroachDB로 넘어간 여정에서, 비결정성은 컴퓨터 과학에서 양날의 검이 되었습니다. 악마적 비결정성으로 인해 재현하기 어려운 버그가 발생하지만, Antithesis 플랫폼은 결정적 하이퍼바이저를 사용하여 이를 극복하고, 드문 '백만 분의 일' 버그를 결정적으로 재현하는 데 성공했습니다. 이는 분산 시스템에서 어려운 버그를 찾고 수정하는 데 있어 결정적 디버깅의 가능성을 보여줍니다.

서명됐지만 안전하지 않음

2024년 1월 3일, 오렌지 스페인의 RIPE 계정이 해킹당해 대량의 IP 공간이 RPKI 무효 상태로 전환되었습니다. 이로 인해 약 9백만 명 이상의 고객이 3-4시간 동안 연결 중단을 경험했습니다. RIPE NCC는 2단계 인증을 강제하지 않았으며, 이 사건에 대응하는 데 오랜 시간이 걸렸습니다. 이 사건은 보안 조치의 중요성을 다시 한번 상기시켜 줍니다.

DuckDB, 새로운 jq로서의 가능성

DuckDB는 데이터 애플리케이션에 적합한 SQLite와 같은 데이터베이스 프로젝트입니다. 이는 추가 의존성 없이도 JSON을 데이터베이스 테이블로 읽고 분석할 수 있는 놀라운 기능을 가지고 있어요. SQL의 친숙함을 선호하는 저자는 JSON 파일을 쿼리하는 데 DuckDB를 사용하는 방법을 보여줍니다. DuckDB는 JSON뿐만 아니라 CSV, Parquet, Excel 파일 등 다양한 형식의 데이터를 가져올 수 있어, 데이터를 데이터베이스에 영구 저장할 필요 없이 빠르게 데이터를 조회하는 데 유용합니다.

GoFetch: 데이터 메모리 의존 프리패처를 사용하여 상수 시간 암호 구현을 깨뜨리기

상수 시간 프로그래밍은 사이드 채널 공격에 대한 코드를 강화하는 패러다임입니다. 그러나 연구자들은 DMP(동적 메모리 분할)가 피해자를 대신하여 비밀에 의존하는 메모리 접근을 생성함으로써, 상수 시간 프로그래밍의 한계를 보여줍니다. 이는 키 추출 공격에 취약한 가변 시간 코드를 초래합니다. 이 발견은 사이드 채널 공격에 대한 더 강력한 방어를 제공하기 위해 추가 연구와 개발이 필요함을 강조합니다.

루트 권한 없이 Alpine Linux 부트스트래핑하기

루트 권한 없이 Alpine Linux를 부트스트랩하는 방법에 대해 알아보세요! 사용자 네임스페이스unshare 명령어를 활용해 chroot 환경을 만들고, apk.static 도구로 rootfs를 구축하는 과정을 소개합니다. 이 흥미로운 접근법은 프로젝트나 디바이스에 새로운 가능성을 열어줍니다.

애플 칩에서 발견된 수정 불가능한 취약점, 비밀 암호화 키 유출

연구자들이 애플의 M-시리즈 칩에서 비밀 암호화 키를 추출할 수 있는 취약점을 발견했습니다. 이는 칩의 마이크로아키텍처 설계, 특히 데이터 메모리 의존 프리패처(DMP) 기능에서 비롯된 사이드 채널 취약점입니다. 이 취약점은 하드웨어 수준에서 수정할 수 없으며, 성능 저하를 수반하는 제3자 암호화 소프트웨어 변경을 통해서만 완화될 수 있습니다.

러스트의 패턴 매칭을 넘어서

이 글에서는 러스트의 기본 패턴 매칭을 넘어, 자체 언어 Glowdust로 더 유연한 패턴 매칭을 탐구합니다. Glowdust는 변수를 같은 패턴에서 바인딩하고 사용할 수 있게 하여, 데이터베이스 쿼리 언어에 적합한 패턴 기반 쿼리 시스템을 제공합니다.

아치 리눅스 도커 이미지 100% 재현 가능성 달성

아치 리눅스의 도커 이미지가 이제 100% 재현 가능하다고 합니다! dvzrv와 Foxboron의 놀라운 노력 덕분에 마지막 남은 패키지까지 재현 가능해졌어요. 이제 OCI 컨테이너 이미지 자체의 재현 가능성에 대한 탐구가 시작됩니다. 재현 가능성을 확인하는 방법과 함께, 아직 해결해야 할 몇 가지 도전 과제들이 남아 있습니다.

Numba를 잘못 사용하여 코드를 빠르게 하는 방법

NumPy 기반 코드가 너무 느리다면, Numba를 사용해 속도를 높일 수 있습니다. 그러나 Numba의 NumPy 지원은 NumPy 스타일 코드를 고수함으로써 최적화 기회를 놓칠 수 있습니다. 컬러 이미지를 그레이스케일로 변환하는 예시를 통해, Numba를 올바르게 사용하는 방법(반복문 사용)과 잘못된 방법(NumPy 스타일 전체 배열 변환)을 보여줍니다. 반복문을 사용한 '올바른 방법'은 5배 더 빠르고 메모리 효율적입니다.

pgzx 소개: Zig를 사용한 PostgreSQL 확장 생성

pgzx는 Zig 프로그래밍 언어로 작성된 PostgreSQL 확장을 개발하기 위한 오픈 소스 프레임워크입니다. 이는 유틸리티, 메모리 할당자 및 빌드/개발 환경을 제공하여 Postgres 코드베이스와의 통합을 간소화합니다. Zig는 C 코드와 잘 호환되어 Postgres와 같은 큰 C 코드베이스 작업에 적합합니다. pgzx는 Zig 언어로 Postgres 확장 개발을 용이하게 하기 위한 유용한 도구와 개발 환경을 제공하는 것을 목표로 합니다.

Apache Kvrocks: 분산 키-값 NoSQL 데이터베이스

Apache Kvrocks는 RocksDB를 저장 엔진으로 사용하며 Redis 프로토콜과 호환되는 분산 키-값 NoSQL 데이터베이스입니다. Redis Sentinel을 통해 고가용성을 제공하며, 자동 장애 복구와 마스터 프로모션을 지원합니다. 최소 세 개의 Sentinel 인스턴스로 구성된 클러스터를 통해 데이터의 지속적인 가용성을 보장합니다.

빠르고, 디버깅 가능하며, 재현 가능한 빌드를 위한 간단한 방법

Rust로 만들어진 작은 프로그램인 refix를 사용하면 빌드를 재현 가능하고, 디버깅 가능하며, 빠르게 만들 수 있는 간단한 방법이 있습니다. 디버깅이 어려워지는 문제를 해결하기 위해, 원본 소스 파일 경로를 가리키도록 바이너리를 'refix'하는 세 가지 접근 방식을 소개합니다. 이는 빌드 속도나 재현성을 희생하지 않으면서도 소스 파일 경로를 보존하여 쉽게 디버깅할 수 있게 해줍니다.

새로운 개인 AI 에이전트를 위한 새로운 검색 엔진을 누가 만들 것인가?

우리는 곧 개인 취향에 맞는 식당을 예약해주는 등의 작업을 수행할 수 있는 개인 AI 에이전트를 가질 것입니다. 이러한 에이전트를 구축하는 것은 현재 기술로 가능하지만, 비용이 많이 들고 예상치 못한 행동을 할 수 있는 등의 도전이 있습니다. 또한, 이 에이전트들이 사용자의 요청을 수행하기 위해 적절한 도구를 발견하고 선택할 수 있도록 하는 새로운 유형의 '도구 검색 엔진'이 필요합니다. 이는 매우 흥미로운 미래의 비전이지만, 여전히 극복해야 할 많은 도전이 있습니다.

과소평가된 작은 하드웨어 동반자들

AliExpress에서 찾을 수 있는 RJ45 각도 어댑터, SATA to USB-C 어댑터, USB-C <=> 마이크로 USB 어댑터 등 다양한 저렴하면서도 유용한 하드웨어 도구들이 있습니다. 이들은 노트북 케이블 관리부터 오래된 시스템 업그레이드까지 다양한 문제를 해결해 줍니다. 특히 Creative BT-W2 USB-A 블루투스 어댑터소니 헤드폰용 외장 마이크 같은 제품은 특정 필요를 충족시켜주는 흥미로운 아이템입니다.

KalmarCTF: 재현 가능한 Pwning 작성기

재현 가능한 Pwning은 NixOS VM을 루팅하는 CTF 도전 과제입니다. 이 도전 과제는 루트 사용자만 읽을 수 있는 /data 디렉토리에 플래그가 있으며, Nix 설정의 특이한 점을 이해하고 이용하여 루트 접근 권한을 얻고 플래그를 검색하는 것을 포함합니다. 흥미로운 점은, 작성자가 제한을 우회하여 루트 사용자로 승격한 방법이 의도된 해결책이 아니었다는 것입니다.

R과 APL의 배열 언어 비교

작성자는 Exercism을 통해 매달 새로운 프로그래밍 언어를 배우며, APL의 '미친 듯한' 코드를 보고 난 후, APL 문법에 대한 이해를 높였습니다. Dyalog APLRide 편집기를 설치해 직접 APL 코드를 작성하며, APL의 우아하고 간결한 해결책을 발견했습니다. APL과 R의 비교를 통해, APL의 명시적인 문법과 연산의 이해가 함수형 프로그래밍 접근 방식에 대한 통찰을 제공한다고 느꼈습니다.