read: fail

Data.Maybe 및 라이브러리 디자인에 대한 고찰

Haskell의 MonoidSemigroup 개념을 중심으로, Data.Maybe가 어떻게 Monoid 인스턴스로 발전했는지 살펴봅니다. 라이브러리 디자인은 사용 사례를 광범위하게 커버하면서도 최소한의 제약을 식별하는 데 도전이 됩니다. 이 과정에서 API가 진화하고 때로는 기존의 것을 넘어서는 새로운 접근이 요구됩니다.

에러 처리에 대한 새로운 접근 방식

에러 처리에는 명시적암시적 두 가지 주요 철학이 있습니다. 새로운 접근 방식에서는 함수 시그니처가 에러를 포함해야 하며, 에러 처리는 선택적으로 수행됩니다. 이를 통해 개발자는 성공 결과와 실패 결과를 명확히 구분할 수 있으며, 코드의 정확성을 높일 수 있습니다.

작은 버그의 대단한 도전: CVE-2024-30089

이 기사는 완전히 업데이트된 윈도우 11 기기에서 사용된 마이크로소프트 커널 스트리밍 서비스의 미묘한 커널 취약점을 찾는 저자의 접근 방식을 설명합니다. 저자는 프로그램의 다양한 상태에서 코드 경로를 비교하고, FSContextReg 객체에 적절한 잠금이 없는 것을 식별하는 등 버그 헌팅 과정을 자세히 설명합니다.

CNAME 기반 도메인 검증에서 발생한 인증서 철회 사건

브라우저는 TLS 인증서 발급 전 각 도메인의 소유권을 확인하도록 요구합니다. DNS 기반 검증이라 불리는 방법을 통해 도메인 소유자는 무작위 값이 포함된 DNS 리소스 레코드를 추가해야 합니다. DigiCert의 문서 미비로 인해 일부 도메인 검증이 규정을 준수하지 않아, 해당 인증서는 24시간 내에 철회되어야 합니다.

Postgres를 위한 고품질 복제 솔루션, EDB Postgres Distributed

EDB Postgres Distributed(PGD)는 Postgres의 논리 복제를 기반으로 하여 다양한 버전의 Postgres가 실행되는 클러스터 간에 DDL 및 DML 변경을 복제할 수 있는 고품질 복제 솔루션을 제공합니다. 이를 통해 롤링 업그레이드와 데이터 정의 변경의 복제가 가능해집니다.

홈브루 감사 보고서 요약

홈브루의 보안 감사에서는 실행 가능 코드의 예기치 않은 로딩, 샌드박스 탈출 가능성, 그리고 CI/CD 워크플로우의 취약점이 발견되었습니다. 이 감사는 Trail of Bits에 의해 수행되었으며 Open Tech Fund의 후원을 받았습니다. 보고서는 홈브루의 CI/CD가 성숙하지만 내부자에 의해 쉽게 악용될 수 있는 패턴에 의존하고 있다고 결론지었습니다.

HTTP/0.9의 기초부터 시작하기

1991년에 등장한 HTTP/0.9는 최초의 웹 브라우저와 서버 간의 통신을 가능하게 하여 현대 웹의 기초를 마련했습니다. 이 글에서는 Go 언어를 사용하여 간단한 HTTP/0.9 서버를 처음부터 구현하는 과정을 소개합니다. 이를 통해 프로토콜에 대한 실질적인 이해를 돕고자 합니다.

양자 내성 암호화에 대한 올바른 답변: 포스트 양자 에디션

양자 컴퓨터의 위협으로 인해 포스트-양자 암호화(PQC)로의 전환 필요성이 커지고 있습니다. 이 블로그 포스트는 양자 컴퓨팅, 기존 암호화를 위협하는 양자 알고리즘, 그리고 NIST가 선정한 PQC 알고리즘에 대한 개요를 제공합니다. 또한, 기존 암호화와 PQC를 결합한 하이브리드 스킴에 대해서도 다룹니다.

함수형 프로그래밍 언어에서의 변이 처리 문제

함수형 프로그래밍 언어에서 변이(mutation)를 통합하는 것은 여러 도전이 있습니다. 저자는 변이를 제한하는 여러 방법을 탐구하며, 각각의 장단점을 설명합니다. 특히, 선형성(linearity)참조 카운팅(reference counting) 기반 접근법의 성능 문제를 지적하며, 새로운 접근법의 필요성을 강조합니다.

HTTP 가져오기에 대해 잘못 알고 있던 것들

이 기사는 Deno의 HTTP 가져오기 접근 방식의 도전과제와 이를 해결하기 위한 새로운 기능인 Import MapsJSR에 대해 설명합니다. Deno 2의 출시가 곧 예정되어 있으며, 이는 작업 공간, 모노레포 지원, 더 깊은 Node/npm 호환성 등 다양한 기능을 제공할 예정입니다.

과학자들, 402 Tbps의 기록적인 데이터 전송 속도 달성

도쿄 대학과 NICT, 스미토모 전기 산업의 과학자들이 402 테라비트의 데이터 전송 속도를 기록, 이는 평균 가정용 광대역보다 약 160만 배 빠른 속도입니다. 이들은 다중 코어 광섬유와 고급 다중화 기술을 사용하여 이 업적을 달성했습니다.

Kubernetes에서 네임스페이스 제한 사용자 생성 방법

이 가이드는 Kubernetes에서 RBAC(Role-based access control)을 사용하여 특정 네임스페이스에만 접근 권한을 가진 사용자 계정을 생성하는 방법을 설명합니다. 또한, ResourceQuota를 통해 자원 사용을 제한하는 방법도 안내합니다. 이러한 설정은 클러스터를 잘못된 사용으로부터 보호하는 데 중요합니다.

대규모 SPA에서의 유연한 네트워크 데이터 사전 로딩

대규모 SPA에서는 link rel="preload" 같은 브라우저 도구를 사용하여 네트워크 요청을 가능한 빨리 시작할 수 있습니다. 또한, DataPreloader 클래스와 withPreload 함수를 활용하여 데이터를 사전에 로드하고, 필요할 때 즉시 사용할 수 있는 패턴을 구현할 수 있습니다. 이 방식은 효율적이며, 데이터 로딩 시간을 단축시키는 데 도움을 줍니다.

타이거 스타일

조란 그리프의 '타이거 스타일!' 강연에서는 안전한 시스템을 더 빠르게 설계하는 방법에 대해 다룹니다. 주요 내용으로는 런타임 단언 사용, 설계 단계에서의 철저한 문제 이해, 강력한 테스트 스위트 구축, 명확한 명명법, 그리고 시스템의 단순화가 있습니다. 이러한 접근 방식은 설계와 테스트의 철저함을 강조하며, 구현에 서두르지 않는 것을 중요시합니다.

SciLean: 리안 4에서의 과학 계산

SciLean은 리안 프로그래밍 언어로 작성된 과학 계산 프레임워크입니다. 이는 수학의 형식화를 통한 코드 변환 및 최적화, gradient, integral, limit 같은 기호 계산, 공식 사양에 기반한 코드 생성 등을 제공합니다. 특히, 하모닉 오실레이터 시뮬레이션 예제를 통해 그 사용법을 보여줍니다.

슈퍼 닌텐도 비디오 시스템의 설계 탐구

이 글에서는 슈퍼 닌텐도(SNES) 콘솔의 비디오 시스템을 설계한 엔지니어의 입장에서 그 과정을 탐구합니다. 1990년대 초반의 표준 TV 세트 작동 방식, CRT 디스플레이, 프로그레시브 및 인터레이스 스캔 방식 등을 설명하며, NTSC와 PAL 비디오 표준의 차이점과 SNES가 이를 어떻게 처리했는지도 다룹니다.

Tiny Tapeout 데모신 경연 대회

Tiny Tapeout 데모신 경연 대회에서 참가자들은 기존 컴퓨터를 사용하지 않고, 자신만의 ASIC 하드웨어를 만들어 오디오/비주얼 출력을 구현합니다. 참가자는 무료로 1개의 타일을 받게 되며, 데모보드를 구매한 이들은 VGA 및 오디오 PMOD 확장 모듈도 무료로 제공받습니다. 경연은 9월 6일까지 작품을 제출해야 하며, 다양한 카테고리에서 수상 기회가 주어집니다.

프루프 오브 컨셉트 익스플로잇 코드의 와일드 웨스트 (PoC)

1990년대와 2000년대 초, 해킹 그룹들이 공개적으로 PoC 코드를 공유하며 큰 혼란을 야기했습니다. 최근에는 CVE-2024-6387과 같은 취약점을 노린 악의적인 '익스플로잇' 코드가 유포되고 있어, 보안 전문가들은 다운로드한 코드를 철저히 검증해야 합니다.

TypeScript 5.6 베타 버전 발표

TypeScript 5.6 베타 버전이 새로운 기능과 개선 사항을 소개했습니다. null과 참값 검사 금지, 반복자 도우미 메소드 지원, 임의 모듈 식별자 지원 등 다양한 업데이트가 포함되어 있습니다. 이러한 변화는 개발자들이 더욱 효율적으로 코드를 작성하고 오류를 줄일 수 있게 도와줄 것입니다.

AVX-512를 이용한 문자열 처리와 tolower() 함수

AVX-512-BW 명령어를 사용하여 문자열을 효율적으로 처리하는 방법에 대해 설명합니다. 특히, 64바이트 문자열을 한 번에 소문자로 변환하는 tolower64() 함수를 개발하였으며, 이는 짧은 문자열 처리에 매우 유용합니다. 성능 벤치마킹 결과, 이 함수는 가장 빠른 처리 속도를 보였습니다.