read: fail

프로그래머가 도전해볼 만한 소프트웨어 프로젝트 목록

새로운 지식 탐색에 관심 있는 프로그래머를 위한 프로젝트 아이디어! 창의적인 분야 탐색부터 미지의 데이터 구조 구현, 분산 해시 테이블 작성, 과학 계산기 개발에 이르기까지 다양한 도전 과제를 소개합니다. 이것은 단순한 포트폴리오 구축을 넘어서는 여정입니다.

Flatpak 권한 설문 조사

Flatpak 권한 설문 조사에서는 Flathub의 인기 있는 앱 대부분이 우려되는 권한을 가지고 있음을 밝혔습니다. 특히, 네트워크 공유샌드박스 탈출을 가능하게 하는 권한이 대부분의 앱에 부여되어 있으며, 거의 모든 앱이 넓은 권한을 나타내는 '보안' 뱃지를 가지고 있습니다. 이는 Flatpak의 보안 모델의 효과에 대한 의문을 제기합니다.

어디서나, 단 한 번만: 모든 곳의 컴퓨터를 위한 함수 작성하기

이 글은 분산 네트워크 상에서 계산 작업을 분배하는 모든 곳의 컴퓨터에 대해 소개합니다. Rust, JavaScript, Python으로 작성된 함수를 WebAssembly (Wasm) 컴포넌트로 컴파일하고 워크플로우에서 실행하는 방법을 보여줍니다. EveryCLI 도구를 사용하여 함수를 호출하는 워크플로우를 실행하는 과정도 설명합니다. 흥미로운 점은, 이 시스템이 이전에 계산된 결과를 캐싱하여 불필요한 재실행을 방지한다는 것입니다.

새롭고 오는 프로그래밍 언어 목록

새롭게 등장하고 있는 프로그래밍 언어들에 대한 소개입니다. Cakelisp, 42, Sidef 등 다양한 언어가 개발자들에게 새로운 선택지를 제공하며, 각각의 언어는 컴파일 시간 코드 생성, 음악 제작, 웹어셈블리 컴파일 등 특별한 기능을 갖추고 있습니다. 프로그래밍 세계에 새로운 바람을 일으키고 있는 이 언어들에 대해 알아보세요!

Postgres C 코드에서 메모리 누수 찾기

이 글에서는 Postgres의 WAL Sender 프로세스에서 발생한 메모리 누수를 찾기 위해 저자가 Valgrindsanitizer를 사용해 본 경험과, 결국 bcc 도구 모음memleak 프로그램을 통해 누수 원인을 정확히 찾아낸 과정을 소개합니다. memleak 도구는 실행 중인 프로세스의 메모리 할당 스택을 추적하여 메모리 누수를 효과적으로 식별하는 강력한 방법을 제공합니다.

네트워크 스위치를 죽인 범인은? 허브리스 버그 이야기

허브리스 운영 체제에서 발견된 버그가 네트워크 스위치 작동을 멈추게 했습니다. 이 버그는 메모리 사용 최적화를 위한 작업 패킹과 작업 간 메모리 공유를 가능하게 하는 IPC 시스템 간의 상호 작용에서 비롯되었습니다. 허브리스 팀의 빠른 대응과 디버깅 용이성, 그리고 팀의 긴밀한 협력 덕분에 이 복잡한 버그를 신속하게 해결할 수 있었습니다.

텍스트 임베딩 탐색을 위한 간단한 오픈소스 도구, embeviz

embeviz는 텍스트 임베딩을 시각화하는 간단한 오픈소스 도구입니다. Go와 React로 만들어진 이 도구는 사용자가 텍스트를 입력하고, 원격 LLM에서 임베딩을 가져와 2D/3D로 시각화할 수 있게 해줍니다. 오픈소스 도구 개발은 중요한 학습 경험이 될 수 있습니다.

불변의 문제점: 시간이 지나면서 변한다

Oxide에서의 디버깅 여정을 통해, 코드에 내재된 '불변' 가정이 시간이 지나며 문제를 일으킨 사례를 소개합니다. 새 기능 추가로 인해 과거의 가정이 무효화되었지만, 이러한 내재된 불변성은 소스 코드에 명시적으로 표현되지 않아 발견하기 어렵습니다. 이는 시스템이 발전함에 따라 '시한폭탄'이 될 수 있습니다.

두 가지 작은 인터프리터

두 가지 인터프리터의 성능을 직접 비교한 이야기입니다. 바이트코드 인터프리터가 빠를 것이라는 일반적인 생각과 달리, 트리 워킹 인터프리터가 2-3배 더 빠른 결과를 보였어요. 이 흥미로운 결과에 대해 더 알아보고 싶다면, 저자가 제공한 GitHub 소스 코드를 확인해 보세요!

시스템 프로그래머를 위한 가비지 컬렉션

이 문서는 운영 체제의 성능에 민감한 부분과 이를 최적화하는 기술, 특히 리눅스 커널에서 사용되는 락리스(lockless) 데이터 공유 메커니즘인 RCU(Read-Copy-Update)에 대해 설명합니다. 가비지 컬렉션이 수동 메모리 관리보다 느리지 않으며, 처리량과 캐시 성능 측면에서 상당한 이점을 제공할 수 있다는 점을 강조합니다.

Gitroom - 소셜 미디어 및 기사 게시 예약과 저장소 모니터링을 위한 새로운 도구

Gitroom은 Buffer.com, Hypefury, Twitter Hunter와 같은 도구의 대안으로, 소셜 미디어 게시물과 기사를 예약하고, 다른 회원들과 게시물을 교환하거나 구매할 수 있으며, GitHub 트렌딩을 모니터링하는 등의 기능을 제공합니다. NX, NextJS, NestJS 등의 기술 스택으로 구축되었으며, Apache 2.0 라이선스 하에 소스 코드를 제공합니다.

awk 구현체에 대하여

Rob Landley의 toybox 프로젝트는 Linux 명령줄 도구들을 제공하는데, 여기에는 awk 구현체도 포함되어 있습니다. 이 구현체는 wak라 명명되었으며, C99로 코딩되었고 주로 libc를 사용합니다. GitHub에서 확인할 수 있습니다.

내 언어에 라인 프로파일러 추가하기

개발자가 자신의 장난감 프로그래밍 언어 'nodots'의 인터프리터를 프로파일링하고 최적화하기 위해, 코드의 각 줄의 성능을 측정할 수 있는 라인 프로파일러를 추가했습니다. 이 프로파일러는 호출 횟수, 총 시간, 그리고 각 호출당 시간을 추적하여, 성능 통계를 소스 코드 옆에 출력합니다. 비록 메모리 사용량이 높고 코드 변경 시 성능 추적에 한계가 있지만, 작은 코드 섹션의 성능 프로파일을 빠르게 생성하고 소비하는 데 유용한 도구로 평가됩니다.

WOPR 구축하기: 7x4090 AI 서버

취미 프로젝트로, 저자는 고성능 AI 훈련 서버를 직접 구축하기로 결정했습니다. 이 프로젝트의 목표는 PCIe 연결성을 저해하지 않으면서 가능한 한 많은 고급 GPU를 탑재하는 것이었습니다. ASROCK Rack ROMED8-2T 메인보드AMD EPYC 7002/7003 시리즈 CPU를 사용하여 최대 7개의 PCIe 4.0 x16 슬롯을 지원하는 시스템을 만들었고, 512GB의 RDIMM 메모리를 장착했습니다. 이로써 저자는 고성능이면서도 비용을 절감한 AI 훈련 서버를 완성했습니다.

PyPy의 증분 GC에서 버그 수정하기

PyPy의 가비지 컬렉터(GC)에서 2013년부터 존재해 온 여러 버그를 발견하고 수정한 과정을 다룬 글입니다. CI에서만 발생하던 크래시 버그를 추적하며, 메모리 오염을 일으킨 주범인 GC의 오류를 찾아냈습니다. 이 과정에서 rr 역 디버거 등 다양한 도구를 활용했으며, PyPy의 증분, 세대별 마크-스위프 GC의 기술적 세부 사항을 설명합니다. 버그 수정을 통해 중요한 학습을 공유하는 흥미로운 내용입니다.

그래픽 에디터를 위한 컨셉 작품들

2024년 3월 27일에 발표된 이 블로그에서는 'Ica'(이카루스의 줄임말)라는 새로운 코드 에디터를 위한 컨셉 작품들에 대해 집중적으로 다룹니다. Skia 그래픽 라이브러리Metal 백엔드를 사용하여 GPU에서 글리프를 렌더링하는 새로운 컨셉이 추가되었으며, 이를 통해 부드러운 스크롤링과 줄 바꿈이 가능한 멀티라인, 편집 가능한 텍스트박스를 구현했습니다. 또한, egui와 같은 즉시 모드 GUI 프레임워크에서 영감을 받아 레이아웃, 크기 조정, 컴포넌트 구조를 탐구했습니다. 이러한 컨셉들은 시연 가능한 상태에 도달했지만, 실제 'Ica' 구현을 시작할지, 아니면 LSP 클라이언트, vim과 같은 바인딩, 텍스트 하이라이팅, Magit에서 영감을 받은 git 클라이언트와 같은 추가 컨셉 작업을 먼저 할지 고민 중입니다.

지우기 코딩 대 지연 시간

지우기 코딩은 데이터를 M 부분으로 나누고 그 중 k 부분으로 재구성할 수 있는 기술로, 저장 시스템과 통신 프로토콜에서 내구성과 가용성을 제공합니다. 또한, 지연 시간 개선, 가용성 향상, 부하 분산에도 유용하며, 전통적인 저장 및 네트워킹 응용 프로그램 외에도 많은 이점을 제공할 수 있습니다.

재미와 이익을 위한 자바스크립트 최적화

자바스크립트 최적화는 메모이제이션, 정수 사용, 객체의 동일한 형태 유지 등을 통해 불필요한 작업을 피하고, 성능을 향상시키는 다양한 기술을 포함합니다. 이러한 기술들은 웹 개발에서 성능 문제를 해결하고, 사용자 경험을 개선하는 데 중요한 역할을 합니다.

KeepYourMouthShut - 팟캐스트 자동 생성 파이썬 프로그램

KeepYourMouthShut은 AI 보조 오픈소스 앱으로, 비싼 장비 없이도 팟캐스트 에피소드를 전체적으로 생성할 수 있는 개발자 중심 솔루션을 제공합니다. Python, llmOS 등을 사용해 구축되었으며, Pixabay의 다양한 아티스트 음악도 활용할 수 있어요.

디지털 시장 법안 관련 개방형 웹 옹호 권고 사항

인앱 브라우저가 사용자의 기본 브라우저를 몰래 대체하고, 개인정보를 엿보며, 제3자 웹사이트를 조작할 수 있어, 사용자의 선택권과 프라이버시를 침해하고, 브라우저 시장의 혁신을 저해하며, 전반적인 웹 생태계에 해를 끼칩니다. 이 문제를 해결하기 위해, 사용자가 선택한 기본 브라우저를 존중하는 방안이 제안되었습니다. 이는 더 개방적이고, 안전하며, 사생활이 보호된 디지털 환경을 위해 중요합니다.