20년 만에 Steam 계정을 삭제한 이유

2025-07-09
20년 만에 Steam 계정을 삭제한 이유

오랜 PC 게이머가 20년 만에 Steam 계정을 삭제했습니다. 그 이유는 Steam 클라이언트의 과도한 크기, 오래된 하드웨어와의 호환성 문제를 야기하는 DRM 약속 위반, 게임의 호환성과 기능을 저해하는 독점 API 등입니다. 저자는 Steam과 Epic, Microsoft Store, GOG를 비교하며 이러한 대안들이 더 나은 DRM과 사용자 경험을 제공한다고 주장합니다. 더 나은 게임 경험과 소프트웨어 소유권을 위해 구독 서비스나 다른 플랫폼에서의 구매를 제안하고 있습니다.

더 보기
게임

끊임없이 커지는 거대 언어 모델의 크기

2025-07-02
끊임없이 커지는 거대 언어 모델의 크기

본 기사는 거대 언어 모델(LLM)의 크기 변화를 추적합니다. GPT-2의 16억 1천만 개 매개변수에서 Llama-4의 2조 개 매개변수까지 모델 크기는 기하급수적으로 증가했습니다. 본 기사에서는 밀집 모델과 전문가 혼합(MoE) 모델을 포함한 주요 모델의 매개변수 수, 학습 데이터 크기 및 아키텍처 기능을 자세히 설명합니다. MoE 아키텍처의 등장으로 더 큰 규모의 모델을 학습하고 사용할 수 있게 되었습니다. 그러나 모델 크기의 증가는 데이터 편향 및 모델 해석 가능성과 같은 새로운 과제를 야기했습니다. 본 기사는 LLM의 미래 개발 방향을 탐구하고, 단순히 벤치마크 테스트에서 높은 점수를 얻는 것이 아니라 순수한 텍스트 연속 엔진 개발에 중점을 둔 연구의 필요성을 강조합니다.

더 보기

S-expr: 독특한 S-표현식 파서

2025-06-18
S-expr: 독특한 S-표현식 파서

S-expr은 S-표현식 구문에 고유한 확장 기능을 갖춘 S-표현식 파서 라이브러리입니다. 단일 행 및 여러 행의 문자열과 주석을 지원하며, "전치 블록"이라는 새로운 개념을 도입합니다. 전치 블록은 행과 열을 바꿔서 코드를 작성할 수 있게 해주어 복잡하게 중첩된 표현식의 가독성을 향상시킵니다. 이 설계는 S-표현식의 단순성과 코드의 가독성 및 표현력 향상 간의 균형을 목표로 합니다. 기존 Lisp보다 복잡하지만, 단순성과 사용 편의성 간의 균형을 우선시합니다.

더 보기
개발 S-표현식

데이터 타입만을 사용한 복소수와 FFT 구현 (부동 소수점 없이)

2025-05-25
데이터 타입만을 사용한 복소수와 FFT 구현 (부동 소수점 없이)

이 글에서는 부동 소수점을 사용하지 않고 대수적 데이터 타입만을 사용하여 복소수와 고속 푸리에 변환(FFT)을 구현하는 방법을 제시합니다. 저자는 먼저 숫자 표현에 대수적 데이터 타입을 사용하는 장점을 설명하고, 기존 FFT 구현의 비효율성을 지적합니다. 그런 다음 대수적 데이터 타입만을 사용한 간결하고 우아한 정수와 복소수 구현을 보여줍니다. 마지막으로, 부동 소수점을 사용하지 않는 순수 함수형 구현 방식의 복소수 FFT를 유도합니다. 이는 균형 잡힌 삼진수 표현으로 정수를 표현하고, 가우스 정수를 확장하여 복소수를 표현함으로써 부동 소수점 연산의 융합 저해 효과를 교묘하게 피하여 알고리즘의 효율성을 높입니다.

더 보기

Cloudflare D1 데이터베이스 쿼리 최적화 여정

2025-04-07
Cloudflare D1 데이터베이스 쿼리 최적화 여정

프런트엔드 개발자가 Cloudflare Workers와 D1 데이터베이스를 사용하는 동안 성능 병목 현상을 겪었습니다. D1 대시보드 모니터링, 쿼리 문 검사, 행 읽기/쓰기 수 분석을 통해 여러 가지 주요 문제점을 파악했습니다. 느린 단일 쿼리, 비효율적인 배치 쓰기, 업데이트 작업에 ID를 포함하여 발생하는 불필요한 행 읽기, 카운트 쿼리에서의 전체 테이블 스캔, 여러 테이블 조인으로 인한 데카르트 곱 폭발, 그리고 최적화되지 않은 대량 삽입입니다. 해결책으로는 D1 배치 작업 활용, 업데이트에서 ID 제외, 커서 기반 페이징 구현, 여러 테이블 조인 쿼리 분할, 대량 삽입 문 최적화가 포함되었습니다. 이러한 최적화를 통해 쿼리 성능이 크게 향상되어 일부 경우 실행 시간이 78ms에서 14ms로 단축되었습니다. 이 경험은 지속적인 모니터링, 반복적인 최적화, 그리고 서버 측과 클라이언트 측 성능 문제의 중요한 차이점의 중요성을 강조합니다.

더 보기
개발

Vanity SHA-1 생성기: 영리한 대소문자 변경 접근 방식

2025-03-31
Vanity SHA-1 생성기: 영리한 대소문자 변경 접근 방식

이 코드는 입력 텍스트의 단어 대소문자를 조작하여 대상 접두사 "20250327"과 일치하는 SHA-1 해시를 생성하려고 시도합니다. 텍스트를 구문 분석하고 변경 가능한 단어를 식별한 다음 모든 가능한 대소문자 조합을 반복하여 해시를 계산하고 대상과 비교합니다. 일치하는 항목이 발견되면 수정된 텍스트가 파일에 작성됩니다. 이 프로그램은 해시 알고리즘과 조합론에 대한 이해를 보여주는 영리한 무차별 대입 접근 방식을 보여줍니다. 특정 해시 접두사를 생성하려고 시도합니다.

더 보기

Xfinity XB3 하드웨어 수정: WiFi 비활성화 및 2와트 절약

2025-03-30
Xfinity XB3 하드웨어 수정: WiFi 비활성화 및 2와트 절약

한 사용자가 전력 절약을 위해 Xfinity XB3 모뎀을 수정했습니다. Comcast의 저렴한 Xfinity NOW 서비스에 포함된 XB3는 14.9와트를 소모합니다. 모뎀을 분해하고 TPS54328 전압 조정기의 EN 핀을 접지에 연결하여 WiFi를 비활성화하고 전력 소비량을 12.5와트로 줄였습니다(2와트 절약). 부팅 후 관리 페이지에 잠시 접근할 수 없지만 네트워크 기능에는 문제가 없습니다.

더 보기

Ubuntu 패키지 속도 90% 향상: 재구축과 메모리 할당의 이야기

2025-03-19
Ubuntu 패키지 속도 90% 향상: 재구축과 메모리 할당의 이야기

이 글에서는 Ubuntu에서 사용하는 jq 소스 패키지를 재구축하여 놀라운 90%의 성능 향상을 달성한 방법을 자세히 설명합니다. 저자는 500MB GeoJSON 파일을 사용하여 벤치마킹을 수행했습니다. 패키지를 단순히 재빌드하는 것만으로도 약간의 속도 향상을 확인할 수 있었습니다. 더 나아가 clang 컴파일러와 더 나은 옵션(-O3, -flto, -DNDEBUG)을 사용하여 20%의 향상을 달성했습니다. TCMalloc 메모리 할당자로 전환하여 성능을 추가로 40% 향상시켰습니다. 마지막으로 mimalloc 메모리 할당자를 사용하여 동적으로 로드하거나 재빌드에 통합하는 경우 놀라운 90%의 속도 향상을 달성했습니다. mimalloc을 사용하여 재컴파일된 jq는 다양한 테스트에서 기본 Ubuntu 패키지보다 거의 두 배 빠른 속도를 달성했습니다.

더 보기

프로그래밍 언어의 계층적 접근 방식과 다국어 개발

2025-03-16
프로그래밍 언어의 계층적 접근 방식과 다국어 개발

저자는 타이핑과 컴파일을 기반으로 프로그래밍 언어를 분류하기 위한 4단계 계층 구조를 제안합니다. 해석형 동적 타이핑(예: JavaScript), 해석형 정적 타이핑(예: TypeScript), 자동 메모리 관리가 포함된 컴파일형(예: Go), 수동 메모리 관리가 포함된 컴파일형(예: Rust)입니다. 저자는 다양한 요구 사항에 맞는 적절한 레벨을 선택하는 것이 중요하다고 주장하며, 개발 효율성과 코드 성능을 향상시키기 위해 Rust, RustGC(레벨 2/3 하이브리드), RustScript(레벨 4)로 구성된 언어 세트를 제안합니다. 이 세트는 구문을 공유하고 서로 다른 레벨 간의 원활한 호출을 가능하게 하여 다양한 툴셋 유지 관리 및 인력 교육과 같은 문제를 해결합니다. 최종 목표는 프로그래밍 효율성과 코드 품질을 향상시키는 것입니다.

더 보기

Svelte5: 광고만큼 좋지 않다?

2025-03-08
Svelte5: 광고만큼 좋지 않다?

Svelte5 출시에서 반응형 상태 시스템인 "runes"가 주요 개선 사항으로 홍보되었습니다. 하지만 저자는 실제 프로젝트에서 몇 가지 제한 사항을 발견했습니다. runes는 Svelte 컴포넌트 또는 .svelte.ts 파일로 제한되며, 반응성을 유지하려면 상태를 함수로 래핑해야 하고, 클래스에 대한 지원도 불완전합니다. Svelte의 템플릿 기능은 JavaScript에 해당하는 기능이 없어 바인딩 가능한 속성 테스트가 번거롭습니다. 폼 컴포넌트는 기본적으로 비제어식이며 잠재적인 문제를 일으킬 수 있습니다. Svelte5는 React/Vue를 모방하려고 하지만, 사용 편의성과 기능 완성도 면에서 부족하며, 저자는 SolidJS를 더 나은 대안으로 고려하고 있습니다.

더 보기

처음부터 만드는 마이크로 비동기 이벤트 루프 라이브러리

2025-02-28
처음부터 만드는 마이크로 비동기 이벤트 루프 라이브러리

이 프로젝트는 교육 목적으로 최소한의 기능을 갖춘 마이크로 비동기 이벤트 루프 라이브러리를 처음부터 구현합니다. 비동기 프로그래밍의 핵심 개념인 작업 스케줄링 및 관리, 논블로킹 소켓을 사용한 I/O 멀티플렉싱, 타임아웃 및 sleep 기능, 작업 취소, 코루틴 기반의 동시성을 보여줍니다. 이 라이브러리는 Python의 제너레이터 기반 코루틴과 `select` 모듈을 I/O 멀티플렉싱에 사용하여 `asyncio`와 같은 최신 비동기 프레임워크가 내부적으로 어떻게 작동하는지에 대한 간소화된 모델을 제공합니다. `await`의 마법, `yield from`의 작동 방식, 코루틴과 이벤트 루프 간의 통신 방법을 배울 수 있습니다.

더 보기

Roc 컴파일러의 재작성 여정: Rust에서 Zig으로

2025-02-04
Roc 컴파일러의 재작성 여정: Rust에서 Zig으로

Roc 프로그래밍 언어 컴파일러 팀은 30만 줄의 Rust 코드로 구성된 컴파일러를 Zig 언어로 재작성하는 중요한 작업을 시작했습니다. 이는 단순한 언어 이식이 아니라 Rust의 느린 컴파일 시간과 누적된 기술 부채를 해결하기 위한 전략적 조치입니다. 재작성을 통해 파서, 포매터, 정규화, 문서 생성, 형식 추론, LLVM 코드 생성 등 여러 모듈이 개선될 것입니다. 개발 백엔드에는 인터프리터를 사용할 계획이며, 이를 통해 개발 효율성을 크게 높일 수 있을 것으로 기대하고 있습니다. 최종 목표는 컴파일 속도 향상, 유지 관리 용이성 향상, 그리고 Roc 0.1.0 릴리스입니다.

더 보기
개발 재작성

LLM, 간단한 체스 퍼즐에 실패하다: 흥미로운 테스트

2025-01-26
LLM, 간단한 체스 퍼즐에 실패하다: 흥미로운 테스트

저자는 언더프로모션과 50수 규칙을 포함한 간단한 체스 퍼즐을 사용하여 다양한 새로운 LLM을 테스트합니다. 안내에도 불구하고 대부분의 LLM은 이를 풀지 못하여 논리적 추론과 도메인 특정 지식의 한계를 보여줍니다. 이 신속한 테스트는 벤치마크 역할을 하며, LLM이 전문적인 훈련 없이 체스를 마스터 수준으로 플레이할 수 있을지에 대한 논의를 촉구합니다. 퍼즐의 단순함과 덜 일반적인 기술에 대한 초점은 LLM의 능력을 통찰력 있게 살펴보는 데 도움이 됩니다.

더 보기
AI

정교한 피싱 공격: 거의 당할 뻔했다

2025-01-24
정교한 피싱 공격: 거의 당할 뻔했다

이 상세한 설명은 공격자가 Google 직원으로 가장하여 전화와 이메일을 사용하여 저자의 계정을 재설정하도록 유도한 정교한 피싱 공격에 대한 내용입니다. Google Workspace의 취약성과 g.co 도메인을 이용하여 공격자는 Google 지원을 교묘하게 모방하여 거의 성공할 뻔했습니다. 저자는 결국 사기를 간파하고 이 경험을 경고의 이야기로 공유하며, 고도화된 피싱 기법에 대한 사이버 보안 인식 및 경계의 중요성을 강조합니다.

더 보기
기술

Signal, Discord 등 수백 개 플랫폼을 노린 0클릭 익명성 해제 공격

2025-01-21
Signal, Discord 등 수백 개 플랫폼을 노린 0클릭 익명성 해제 공격

15세 고등학생 Daniel이 Cloudflare의 캐싱 메커니즘을 이용한 심각한 0클릭 익명성 해제 공격을 발견했습니다. 이 취약성을 통해 공격자는 Signal, Discord 등 수백 개의 취약한 애플리케이션에 악의적인 페이로드를 전송하여 250마일 반경 내의 사용자 위치를 파악할 수 있습니다. 이 공격은 사용자의 조작이 필요 없으며, 푸시 알림을 통해서도 가능합니다. Daniel은 이 공격의 실태를 보여주는 도구로 Cloudflare Teleport를 개발했습니다. 그는 책임감 있는 공개를 했지만, 관련 기업의 반응은 대부분 미흡했습니다. 이는 CDN 캐싱에 고유한 잠재적인 보안 위험을 부각하며, 사용자의 프라이버시 인식의 중요성을 다시 한번 보여줍니다.

더 보기
기술

Stack Overflow의 쇠퇴: ChatGPT의 영향과 불확실한 미래

2025-01-08
Stack Overflow의 쇠퇴: ChatGPT의 영향과 불확실한 미래

GitHub의 데이터 분석에 따르면, Stack Overflow의 새로운 질문 수는 2023년 3월부터 2024년 12월까지 70.7% 감소하여 87,105건에서 25,566건으로 떨어졌습니다. 이는 ChatGPT의 부상과 밀접한 관련이 있으며, ChatGPT 출시 이후 Stack Overflow에서는 약 83,000건의 질문이 줄었습니다. Stack Overflow 최고 기여자인 저자는 잘 작성된 질문이 즉시 닫힌 자신의 경험을 설명하며, 플랫폼 쇠퇴의 주요 요인 중 하나일 가능성을 시사합니다. 질문 수의 급격한 감소는 우려되는 추세를 보여주며, 2009년 서비스 시작 직후 수준을 반영하여 1년 미만의 수명 가능성을 시사합니다.

더 보기

운영상 PGP: 안전한 이메일 통신을 위한 가이드

2024-12-24
운영상 PGP: 안전한 이메일 통신을 위한 가이드

이 가이드는 PGP 설치 및 사용법이 아닌, 안전한 사용법에 대한 설명입니다. 단순한 이메일 본문 암호화뿐 아니라 이메일 작성, 저장, 키 관리 등 운영상 보안을 중시합니다. 텍스트 에디터로 이메일을 작성하고 이메일 클라이언트에 임시 저장본을 저장하지 않고, 키를 주기적으로 생성하여 오래된 키를 삭제하며, 키 서버에 키를 공개하지 않고, 이메일 제목을 비워 메타데이터 유출을 최소화하고, 암호화 시 `gpg --throw-keys` 옵션을 사용하며, 기본적으로 암호화를 활성화하고 이메일에 서명할지 여부를 명시적으로 선택하는 것을 권장합니다. PGP의 보안 가능성을 극대화하는 것을 목표로 합니다.

더 보기

SQLite 기반 키-값 저장소: JS와 유사한 객체 조작 및 자동 JSON 직렬화

2024-12-22
SQLite 기반 키-값 저장소: JS와 유사한 객체 조작 및 자동 JSON 직렬화

GitHub 프로젝트에서 SQLite 기반 키-값 저장소를 소개합니다. 이 저장소는 자동 JSON 직렬화를 통해 JavaScript와 유사한 객체 조작을 가능하게 합니다. `createDatabaseClient` 함수는 독립적인 reader(`rdr`)와 writer(`wtr`) 구성 요소를 갖춘 병렬 클라이언트를 생성합니다. writer는 부분적인 JSON 업데이트에 프록시를 사용하고, reader는 일반 JavaScript 객체를 반환합니다. 포괄적인 테스트는 기본적인 CRUD 작업, 중첩된 업데이트, 삭제, 배열 조작 등을 포함합니다.

더 보기

Blender에서 USD 임포트 속도 저하의 특이 사례

2024-12-22
Blender에서 USD 임포트 속도 저하의 특이 사례

개발자가 Blender에서 USD 장면을 임포트할 때 예상치 못한 속도 저하 문제를 발견했습니다. 프로파일링 결과, 병목 현상이 Blender의 내부 ID 정렬 함수인 `id_sort_by_name`에 있음을 알게 되었습니다. 이 함수는 O(N)의 복잡도를 가질 것으로 예상되었지만, USD 파일의 명명 체계 때문에 O(N²)로 저하되었습니다. 명명 규칙을 변경하고 정렬 알고리즘을 최적화함으로써 개발자는 작은 파일의 임포트 시간을 4분 40초에서 8초로 단축했습니다. 하지만 근본적인 문제는 Blender가 정렬된 ID를 필요로 한다는 점이며, 연결 리스트를 트라이 또는 해시 테이블로 대체하는 것이 제안되었습니다. 이 최적화는 성능 튜닝에서 흔히 발생하는 문제, 즉 예상치 못한 복잡성을 식별하고 해결하는 것을 보여줍니다.

더 보기
개발

QEMU, VirtIO GPU 드라이버 업데이트로 Vulkan 가속 지원

2024-12-12
QEMU, VirtIO GPU 드라이버 업데이트로 Vulkan 가속 지원

QEMU 9.2.0 이상 버전은 Venus 패치 덕분에 VirtIO-GPU에 대한 Vulkan 가속을 지원합니다. 이는 QEMU 가상 머신의 Vulkan 그래픽 렌더링에 있어 중요한 발전입니다. 이 문서에서는 필요한 패키지(Linux 커널 6.13 이상, QEMU 9.2.0 이상, Vulkan 드라이버 등) 설치, 소스에서 QEMU 빌드, 가상 머신 이미지 생성 등 설정 과정을 자세히 설명합니다. virt-manager는 현재 Vulkan 설정을 지원하지 않지만, 명령줄 매개변수를 사용하여 해결할 수 있습니다. 문제 해결 팁과 virt-manager 및 libvirt의 현재 제한 사항에 대한 정보도 제공합니다.

더 보기
개발