Category: 개발

arXivLabs: arXiv 기능에 대한 커뮤니티 협업

2025-05-28
arXivLabs: arXiv 기능에 대한 커뮤니티 협업

arXivLabs는 개발자와 연구원이 arXiv 웹사이트에서 직접 새로운 arXiv 기능을 개발하고 공유할 수 있는 플랫폼입니다. 참여자 개인 및 조직은 모두 arXiv의 개방성, 커뮤니티, 우수성 및 사용자 데이터 개인 정보 보호 가치를 수용합니다. arXiv는 이러한 가치에 전념하며, 이를 공유하는 파트너와만 협력합니다. arXiv 커뮤니티를 개선할 아이디어가 있으십니까? arXivLabs를 탐색해 보세요!

개발

NES 에뮬레이터에서 Super Mario Bros.에 멀티스레딩 구현: 놀랍도록 간단한 방법

2025-05-28
NES 에뮬레이터에서 Super Mario Bros.에 멀티스레딩 구현: 놀랍도록 간단한 방법

저자는 NES 에뮬레이터(FCEUX)에서 Lua 플러그인을 사용하여 Super Mario Bros.에 멀티스레딩을 구현했습니다. 에뮬레이터의 핵심 코드를 수정하지 않고 에뮬레이터의 저장 상태 기능을 활용하여 게임의 서로 다른 상태를 개별 스레드로 처리했습니다. 뮤텍스와 조건 변수와 같은 동기화 프리미티브는 게임 내 특정 영역을 사용하여 구현되었으며, 사용자는 멀티스레딩 개념과 직접 상호 작용할 수 있습니다. 예를 들어, 여러 마리오가 동시에 플레이할 수 있지만 파이프에는 한 번에 한 명만 들어갈 수 있습니다. 이 프로젝트는 창의성뿐만 아니라 멀티스레딩에 대한 명확하고 매력적인 설명을 제공하며, 컴퓨터 과학의 기본 개념을 이해하는 중요성을 강조합니다.

개발

결정 불가능성: 프로그래머의 판도라의 상자

2025-05-28
결정 불가능성: 프로그래머의 판도라의 상자

이 글에서는 컴퓨터 과학에서 '결정 불가능성' 개념을 쉽게 설명합니다. 간결한 언어와 구체적인 예시(예: 어떤 숫자가 두 소수의 합인지 판별)를 사용하여 결정 문제와 튜링 머신의 역할을 설명합니다. 중요한 점은 결정 불가능성이 프로그램이 중지할지 여부를 판단할 수 없다는 의미가 아니라, 모든 프로그램의 중지 여부를 판단할 수 있는 보편적인 알고리즘이 존재하지 않는다는 의미입니다. 따라서 많은 문제(예: 프로그램 속성 검증)는 엄청난 노력이 필요하며 해결할 수 없을 가능성도 있습니다. 이는 형식적 검증 및 프로그램 분석과 같은 분야의 필요성을 시사합니다.

개발

LLM 주문: AI 코딩 어시스턴트의 잠재력을 잠금 해제하는 비결

2025-05-28

대규모 언어 모델(LLM) 기반 코딩 어시스턴트의 효과는 질문하는 방식에 크게 좌우됩니다. 이 글에서는 숙련된 엔지니어는 특정한 "주문"(전문 용어와 표현)을 사용하여 AI가 고품질 코드를 생성하도록 유도하는 반면, 초보자는 이러한 전문 용어가 부족하여 비효율적이거나 잘못된 코드가 생성되는 경우가 많다고 주장합니다. 저자는 자신의 경험을 통해 기술 수준에 맞춰 질문 전략을 조정하는 방법을 설명하고, AI 코딩 어시스턴트의 효율성을 높이는 팁을 제공합니다. 그리고 AI 시대에 AI가 생성한 코드를 식별하고, 제어하는 능력이 매우 중요함을 강조합니다.

개발

Guile Hoot 0.2.0 출시: Scheme으로 인터랙티브 웹 페이지 구축

2025-05-28

Scheme을 WebAssembly GC로 컴파일하는 컴파일러인 Guile Hoot 0.2.0이 출시되었습니다. 이번 릴리스에서는 외부 함수 인터페이스(FFI)가 도입되어 개발자는 웹 애플리케이션 코드의 대부분을 Scheme으로 직접 작성할 수 있게 되어 JavaScript 의존성을 최소화할 수 있습니다. 이 글에서는 간단한 "Hello, world!"에서부터 인터랙티브 카운터, 그리고 할 일 목록 애플리케이션까지 단계적으로 진행하면서 Scheme과 FFI를 사용하여 인터랙티브 웹 페이지를 구축하는 방법을 보여줍니다. Scheme의 강력한 심볼 조작 기능과 SXML을 활용하여 React와 유사한 차이점 업데이트 알고리즘을 가진 효율적인 가상 DOM을 구축합니다.

개발

Git Worktrees와 Tmux를 사용한 LLM 코드 생성 병렬화

2025-05-28
Git Worktrees와 Tmux를 사용한 LLM 코드 생성 병렬화

Nicholas Khami는 Git worktrees와 tmux를 사용하여 여러 LLM 코드 생성기(Claude Code, Codex 등)를 병렬로 실행한 경험을 공유합니다. 개별 LLM의 출력 품질이 일관되지 않더라도 여러 LLM을 동시에 실행하면 사용 가능한 코드를 얻을 확률이 극적으로 높아짐을 발견했습니다. 하지만 여러 worktrees와 tmux 세션을 수동으로 관리하는 것은 번거롭습니다. 이를 해결하기 위해 Khami와 공동 설립자는 이 워크플로우를 간소화하는 CLI 도구 `uzi`를 개발 중입니다. `uzi`는 에이전트 시작, 프롬프트 전송, 명령 실행, 미리보기, 커밋, PR 생성 등의 작업을 자동화하여 보다 원활한 개발 환경을 제공합니다. 이는 개발자 생산성을 크게 향상시킬 가능성이 있으며, 병렬 처리 방식은 법률 문서 검토나 마케팅 데이터 분석 등 코딩 이외의 분야에도 적용할 수 있습니다. 앞으로 유사한 병렬 실행 기능을 갖춘 소프트웨어가 더 많이 등장할 것으로 예상됩니다.

개발

Compiler Explorer: 영원히 지속되는 URL에 대한 약속

2025-05-28

Compiler Explorer의 URL은 컴파일러 상태를 URL에 직접 인코딩하는 것부터 goo.gl 단축 URL을 사용하는 것, 그리고 마지막으로 자체 스토리지 솔루션으로 진화했습니다. goo.gl이 2025년 8월에 종료되기 때문에 저자는 goo.gl 기반의 이전 링크를 복구하고 있으며, 지금까지 12,000개 이상의 링크를 복원했습니다. 이 글은 "영원히 지속되는 URL"에 대한 저자의 약속과 제3자 서비스에 대한 의존성에 대한 성찰을 보여줍니다.

개발 링크

arXivLabs: 커뮤니티와의 협업을 통한 실험 프로젝트

2025-05-28
arXivLabs: 커뮤니티와의 협업을 통한 실험 프로젝트

arXivLabs는 커뮤니티와 협력하여 새로운 arXiv 기능을 웹사이트에서 직접 개발하고 공유하기 위한 프레임워크입니다. arXivLabs와 협력하는 개인 및 조직은 개방성, 커뮤니티, 우수성, 사용자 데이터 개인 정보 보호라는 당사의 가치를 수용합니다. arXiv는 이러한 가치에 전념하며, 이를 공유하는 파트너와만 협력합니다. arXiv 커뮤니티를 향상시킬 아이디어가 있으십니까? arXivLabs를 살펴보세요.

개발

허리케인 기간 중 Waffle House 웹사이트 리버스 엔지니어링

2025-05-28
허리케인 기간 중 Waffle House 웹사이트 리버스 엔지니어링

2024년 9월 말 허리케인 헬렌이 몰아치는 동안 대학교가 휴교되었고 사람들이 집에 바리케이드를 치는 와중에 저는 Waffle House 웹사이트를 리버스 엔지니어링했습니다. Next.js 사이트에 숨겨진 JSON 데이터를 사용하여 허리케인의 영향을 평가하는 데 도움이 되는 Waffle House 폐점 상황을 추적하는 실시간 지도를 만들었습니다. 이 사이트는 예상치 못하게 바이럴이 되었고, Waffle House 자체와 Frank Luntz조차 주목했습니다. 결국 상표권 문제로 사이트를 삭제해야 했지만, 이 경험은 즐겁고 예상치 못한 모험이었습니다.

개발

Tesseral: B2B SaaS를 위한 오픈소스 인증 인프라

2025-05-28
Tesseral: B2B SaaS를 위한 오픈소스 인증 인프라

Tesseral은 비즈니스 소프트웨어(B2B SaaS)를 위한 오픈소스 인증 인프라입니다. 멀티테넌트이며 API 우선 클라우드 서비스로, 모든 기술 스택과 호환됩니다. 개발자는 console.tesseral.com에서 관리형 서비스를 사용하거나 자체 호스팅할 수 있습니다. 사용자 관리에 필요한 모든 기능을 포함합니다. 사용자 정의 가능한 로그인 페이지, B2B 멀티테넌시, 사용자 가장, 셀프 서비스 구성, 다양한 로그인 방법(매직 링크, 소셜 로그인, SAML, SCIM), 역할 기반 접근 제어(RBAC), 다단계 인증(MFA), 패스키/WebAuthn, 인증기 앱(TOTP), API 키 관리, 사용자 초대, 웹훅 등이 있습니다. React, Flask 등 다양한 SDK를 제공하여 프런트엔드와 백엔드 통합을 간소화합니다.

개발

Wetlands: Conda 환경 관리를 위한 경량 Python 라이브러리

2025-05-28

Wetlands는 Conda 환경 관리를 간소화하도록 설계된 경량 Python 라이브러리입니다. 필요에 따라 Conda 환경을 생성하고, 종속성을 설치하고, 임의의 코드를 실행하여 종속성 충돌을 방지합니다. 플러그인 시스템 구축이나 외부 모듈 통합에 이상적이며, Wetlands는 pixi 또는 micromamba를 사용하여 Conda 환경을 빠르고 효율적으로 처리합니다. 간단한 API를 통해 개발자는 환경 생성, 시작, 모듈 가져오기, 함수 실행, 환경 정리 등을 수행할 수 있어 Python 프로젝트의 종속성 관리가 더욱 쉽고 효율적입니다.

개발

Project Zero의 Windows 레지스트리 심층 분석: 2년, 53개의 CVE

2025-05-28
Project Zero의 Windows 레지스트리 심층 분석: 2년, 53개의 CVE

Google Project Zero의 Mateusz Jurczyk은 2년 동안 Windows 레지스트리를 심층적으로 조사하여 53개의 CVE를 발견했습니다. 그의 연구는 C로 작성된 대규모 레거시 코드베이스에서 발생하는 보안 문제를 자세히 설명하며, 레지스트리가 로컬 권한 상승 공격의 표면으로서의 복잡성을 강조합니다. 이 연구는 메모리 손상, 정보 유출, 논리적 오류 등 다양한 취약성 유형을 다루고 있으며, 하이브 로딩, 앱 하이브, 직접 시스템 호출과 같은 다양한 공격 진입점을 분석합니다. 또한 레지스트리의 자가 복구 메커니즘이 보안 감사에 어떻게 영향을 미치는지, 엄격한 형식 요구 사항과 규칙 사이의 모호한 경계선의 문제점도 강조합니다. 마지막으로 이 게시글에서는 악용 프리미티브를 요약하고 레지스트리 퍼징 전략과 어려움에 대해 논의합니다.

LLM: 소프트웨어 엔지니어링에서 무능력을 가속화하는가?

2025-05-28
LLM: 소프트웨어 엔지니어링에서 무능력을 가속화하는가?

이 에세이는 소프트웨어 엔지니어링에서 대규모 언어 모델(LLM)에 과도하게 의존하는 것이 무능력을 가속화할 수 있다고 주장합니다. 경험이 풍부한 소프트웨어 엔지니어는 LLM이 코드 생성 속도를 제공하지만 동시에 심각한 위험을 초래한다는 점을 자세히 설명합니다. 부정확한 출력, 맥락 이해 부족, 기술 부채 증가, 비판적 사고 및 창의성 억제 등이 그러한 위험입니다. Peter Naur와 Fred Brooks의 통찰력을 바탕으로 저자는 프로그래밍이 프로그램 이론을 구축하고 프로그램 엔트로피를 관리하는 것이며, 이는 현재 LLM의 능력을 넘어서는 과제라고 강조합니다. 이 에세이는 LLM이 유용한 도구이지만 인간의 창의성과 심오한 사고를 대체할 수 없으며, 과도한 의존은 비용 증가와 프로젝트 실패로 이어질 수 있다는 결론을 내립니다.

개발

마이크로소프트, Windows 업데이트를 타사 앱에 개방

2025-05-28
마이크로소프트, Windows 업데이트를 타사 앱에 개방

마이크로소프트는 Windows 업데이트를 타사 애플리케이션으로 확장하고 있습니다. 개발자는 이제 Windows 업데이트 오케스트레이션 플랫폼의 비공개 프리뷰에 등록하여 향후 모든 앱이나 드라이버 업데이트를 지원할 수 있습니다. 처음에는 비즈니스 앱에 중점을 두지만 모든 앱과 관리 도구에 개방됩니다. 이를 통해 개발자는 사용자 활동, 배터리 상태, 지속 가능한 에너지 타이밍을 기반으로 예약된 업데이트를 활용하고, 기본 Windows 업데이트 알림에 직접 연결하고, Windows 업데이트의 앱 업데이트 기록에 업데이트를 나열할 수 있습니다. 마이크로소프트는 MSIX/APPX 패키지 앱과 일부 사용자 지정 Win32 앱도 지원합니다.

개발 타사 앱

CheerpJ 4.1 출시: Java 17 조기 지원 및 향상된 브라우저 기반 Java

2025-05-28
CheerpJ 4.1 출시: Java 17 조기 지원 및 향상된 브라우저 기반 Java

Leaning Technologies는 Java 17의 미리 보기 지원과 Java 11의 안정성 향상을 포함한 CheerpJ 4.1 출시를 발표했습니다. 성능 최적화, 네트워크 스택 개선, 모바일 사용성 향상도 포함됩니다. CheerpJ는 WebAssembly 기반 JVM으로, 수정되지 않은 Java 바이트 코드를 브라우저에서 직접 실행할 수 있습니다. 대규모 Swing/AWT 애플리케이션과 Java 라이브러리 통합(라이브러리 모드)을 지원합니다. CheerpJ 4.1은 JNI WebAssembly 모듈 지원도 도입하여 Minecraft와 같은 네이티브 코드에 의존하는 Java 애플리케이션을 실행할 수 있게 합니다. 향후 CheerpJ 5.0에서는 안정적인 Java 17 지원과 NPM 지원이 제공될 예정입니다.

개발

LLM: 더 쉬운 코딩의 예상치 못한 비용

2025-05-28

대규모 언어 모델(LLM)은 코드 작성 방식에 혁명을 일으켜 월드 와이드 웹의 영향력조차 능가했습니다. 그러나 코드를 이해하는 것이 작성하는 것보다 어렵다는 근본적인 사실은 변하지 않았습니다. 즉, 코드의 한 줄 한 줄이 기술 부채가 되는 것입니다. LLM을 도입하면 팀이 이전 테스트 제품군과 기술적 결정을 포기하도록 설득하는 것이 더욱 어려워집니다. LLM은 쉽게 새로운 기능을 생성하지만, 이로 인해 팽창하고 유지 관리가 어려운 코드베이스가 생성되어 DRY 원칙에 위배됩니다. 역사적으로 생산성이 높은 엔지니어링 팀은 도구 체인에 대한 깊이 있는 전문 지식에 의존하지만, LLM은 코드 작성 비용을 대폭 줄여 소프트웨어 환경에서 생태계 다양성의 폭발적인 증가를 초래합니다. LLM은 결국 코드의 가독성과 추론 능력을 향상시킬 수 있지만, 현재 과제는 여전히 상당합니다.

개발 코드 작성

자바스크립트 날짜 파싱의 혼란스러운 역사

2025-05-28

이 글에서는 자바스크립트의 날짜 파싱에서 발생하는 특이한 점을 보여줍니다. '2025/05/28'과 '2025-05-28'은 자바스크립트에서 서로 다른 날짜를 나타냅니다. 이는 브라우저에서 날짜 문자열을 파싱하는 방식에 있어 오랫동안 존재해 온 불일치 때문입니다. 이 글에서는 2009년 ES5 표준이 출시된 이후 크롬, 파이어폭스, 사파리에서 날짜 문자열을 파싱하는 방식의 변화를 추적하고, ISO 8601 표준에 대한 각 브라우저의 상이한 구현과 해석을 강조합니다. 결론적으로 '2025-05-28'과 같은 날짜 형식은 UTC로 해석되고, 다른 형식은 로컬 시간으로 해석되어 혼란을 야기합니다. 이 글은 이 문제를 해결하기 위해 시간대 정보를 필수적으로 요구하는 향후 자바스크립트 Temporal API를 소개하며 마무리됩니다.

개발 날짜 파싱

LIEF, DWARF 생성 추가: 리버스 엔지니어링 툴 통합 강화

2025-05-28
LIEF, DWARF 생성 추가: 리버스 엔지니어링 툴 통합 강화

LIEF는 이제 DWARF 파일을 생성하기 위한 포괄적인 API와 리버스 엔지니어링 분석 결과를 내보내기 위한 Ghidra 및 BinaryNinja 플러그인을 제공합니다. 이를 통해 함수 이름 및 구조체와 같은 중요한 정보를 서로 다른 리버스 엔지니어링 툴 간에 공유할 수 있습니다. LLVM의 DWARF 백엔드를 활용한 이 API(Python, Rust, C++에서 사용 가능)는 스택 변수 오프셋과 같은 세부 사항 처리도 간소화합니다. 이를 통해 복잡한 리버스 엔지니어링 프로젝트의 협업 및 이해도가 향상됩니다.

개발

LLM 대응을 위한 JavaScript 기반 작업 증명의 군비 경쟁

2025-05-28

웹사이트는 공격적인 LLM과 웹 스크래퍼에 대응하기 위해 Xe Iaso의 Anubis와 같은 JavaScript 기반 작업 증명 시스템을 점점 더 많이 사용하고 있습니다. 그러나 LLM은 해킹된 기계를 이용하여 이러한 과제를 해결하기 위해 막대한 CPU 시간을 확보할 수 있습니다. 문제는 LLM이 적대적인 환경에서 작동하며, 진정한 작업 증명과 악의적인 JavaScript를 구분하기 어렵다는 것입니다. 이로 인해 LLM은 CPU 마이닝이나 기타 공격을 받을 수 있습니다. 작업 증명 시스템을 식별하려는 시도는 악의적인 행위자가 모방할 유인이 있기 때문에 LLM에게는 패배의 게임입니다. 이는 웹사이트와 LLM 간에 각각 리소스 사용을 최적화하고 동시에 자신의 이익을 보호하려는 군비 경쟁을 촉발합니다.

개발

프로그래머의 비밀 병기: 손으로 쓴 노트가 코드 에디터를 능가하다

2025-05-28
프로그래머의 비밀 병기: 손으로 쓴 노트가 코드 에디터를 능가하다

소프트웨어 개발자가 사고와 문제 해결에 노트를 사용하는 자신만의 독특한 통찰력을 공유합니다. 컴퓨터에서 직접 코드를 작성하기 전에 노트에 생각과 다이어그램을 적어두면 더 명확하게 생각하고 해결책을 찾기 쉽다는 주장입니다. 이 방법은 모호한 아이디어를 구체적인 계획으로 바꾸고 코드의 버그와 설계 결함을 발견하며, 미래의 참조를 위해 귀중한 사고 과정 기록을 남기는 데 도움이 됩니다. 그에게 노트는 코드 에디터보다 중요한 도구입니다.

개발 사고 방식

Alpenglow 합의 프로토콜 참조 구현

2025-05-28
Alpenglow 합의 프로토콜 참조 구현

Anza Technology는 Alpenglow 합의 프로토콜의 참조 구현을 출시했습니다. 여기에는 UDP를 통해 통신하는 6개 노드로 실행 가능한 로컬 클러스터 예제가 포함되어 있습니다. 시뮬레이션 바이너리는 Alpenglow의 복원력 및 대역폭 요구 사항에 대한 다양한 테스트를 제공합니다. 일부 시뮬레이션에는 공용 ping 데이터 세트가 필요합니다. 마이크로 벤치마크 및 테스트 스위트도 포함되어 있습니다. 보안 문제는 quentin (at) anza (dot) xyz로 직접 문의하십시오.

모노레포: 개발자 생산성으로 가는 가시밭길

2025-05-28

이 글에서는 모노레포를 구축하고 유지 관리하는 데 따르는 어려움과 기회를 살펴봅니다. 저자는 대규모 기술 회사의 성공 사례를 무작정 따라하는 위험성을 경고하며, 모노레포가 만능 해결책이 아니라는 점을 강조합니다. 성공의 관건은 코드 일관성, 조직적 응집력, 도구 공유 효율성 향상 등 명확하게 정의된 목표에 있습니다. 이 글에서는 모노레포 환경에서 소스 코드 관리(Git의 한계와 대안), 빌드 시스템(단일 언어 전략 우선), 테스트 전략(O(변경)이 아닌 O(저장소)), CI/CD 워크플로 최적화 방법을 자세히 설명합니다. 저자는 생성된 코드와 서비스 배포의 비동기적 특성을 신중하게 다루어야 함을 강조하며, 원자적 커밋이라는 환상으로 인한 사고를 방지합니다. 결론적으로 저자는 어려움은 많지만, 도구와 프로세스를 지속적으로 개선하려는 노력을 기울인다면 모노레포의 이점을 얻을 수 있다고 주장합니다.

개발

pg_test_fsync: 데이터베이스를 위한 디스크 쓰기 성능 벤치마킹

2025-05-28

이 글에서는 디스크 또는 클라우드 스토리지의 쓰기 성능을 빠르게 벤치마킹하는 도구인 `pg_test_fsync`를 소개합니다. 이는 데이터베이스 WAL 로그 및 기타 낮은 대기 시간 쓰기 작업에 특히 유용합니다. 저자는 소비자용 Samsung 990 Pro SSD와 엔터프라이즈급 Micron 7400 SSD를 테스트하여 컨트롤러 DRAM 캐시와 전원 손실 방지 기능으로 인해 엔터프라이즈 SSD의 동기 쓰기 속도가 훨씬 빠르다는 것을 밝혔습니다. `fdatasync`는 `fsync` 또는 `O_SYNC`보다 빠르지만, `fdatasync`조차도 단일 8KB 쓰기에 1.6밀리초가 걸립니다. 이 글에서는 여러 번의 소규모 쓰기는 성능을 저하시키므로, 쓰기 작업을 배치 처리할 것을 권장합니다.

개발

UEFI 애플리케이션이 제 PoE 전원 x86 시스템을 구했습니다

2025-05-28
UEFI 애플리케이션이 제 PoE 전원 x86 시스템을 구했습니다

2015년, 저자는 PoE 전원의 임베디드 x86 컴퓨터를 개발하는 과정에서 어려움에 직면했습니다. 시스템 부팅에는 23W가 필요했지만 표준 PoE는 15.4W만 제공했기 때문입니다. BIOS 수정에 실패한 후, 저자는 영리하게 UEFI 애플리케이션을 사용하여 OS 부팅 전에 LLDP 패킷을 전송함으로써 더 높은 PoE+ 전력을 협상하는 데 성공했습니다. C 언어로 작성된 이 UEFI 애플리케이션인 PoePwrNegotiator는 현재 오픈소스로 공개되어 있으며, 유사한 프로젝트를 진행하는 개발자들에게 귀중한 경험을 제공합니다.

개발

이미지 압축: 웹사이트 속도 향상

2025-05-28

최적화되지 않은 히어로 이미지는 웹페이지 전체 예산보다 무거울 수 있습니다! 이 글에서는 웹사이트 속도와 SEO를 개선하기 위한 이미지 압축 기술을 빠르게 습득하는 방법을 설명합니다. 손실 없는 압축과 손실 있는 압축의 차이, 주요 지표(품질, 해상도, 파일 크기), 일반적인 형식(JPEG, PNG, WebP, AVIF), 그리고 SlimImg 도구를 사용한 압축 절차를 설명합니다. 전자상거래 사례 연구에 따르면 상품 사진 압축을 통해 평균 페이지 크기가 68% 감소하고 전환율이 38% 증가했습니다.

개발

Diffie-Hellman에서 타원곡선을 사용하는 이유

2025-05-27
Diffie-Hellman에서 타원곡선을 사용하는 이유

이 글은 Diffie-Hellman 키 교환에서 타원곡선을 사용하는 이유를 자세히 파헤칩니다. 군론으로 시작하여 몬스터 군과 같은 다른 군들이 왜 부적절한지 설명합니다. 군 객체와 범주론을 탐구함으로써, 타원곡선이 임의적인 선택이 아니라 거의 유일한 실행 가능한 선택임을 보여줍니다. 유한체 Diffie-Hellman도 타원곡선 암호의 특수한 경우임을 보여줍니다.

개발 타원곡선

LLM 0.26: 대규모 언어 모델이 터미널 툴을 지원합니다.

2025-05-27
LLM 0.26: 대규모 언어 모델이 터미널 툴을 지원합니다.

LLM 0.26이 출시되어 프로젝트 시작 이후 가장 큰 기능인 툴 지원이 추가되었습니다. LLM CLI와 Python 라이브러리를 사용하면 OpenAI, Anthropic, Gemini, 로컬 Ollama 모델과 같은 LLM에 Python 함수로 표현할 수 있는 모든 툴에 대한 액세스를 허용할 수 있습니다. 이 기사에서는 툴 플러그인 설치 및 사용 방법, 명령줄 또는 Python API를 사용한 툴 실행 방법을 자세히 설명하고 OpenAI, Anthropic, Gemini, 그리고 소형 Qwen-3 모델을 사용한 예시를 보여줍니다. 내장 툴 외에도 simpleeval(수학용), quickjs(JavaScript용), sqlite(데이터베이스 쿼리용) 등의 사용자 지정 플러그인도 소개합니다. 이 툴 지원은 수학 계산 등에서 LLM의 약점을 극복하고 기능을 크게 확장하여 강력한 AI 애플리케이션의 가능성을 높입니다.

개발 툴 지원

APT 솔버 개선: 수동 설치 패키지 제거를 우아하게 처리하기

2025-05-27

이 게시글에서는 APT 패키지 매니저 솔버의 개선 사항을 자세히 설명합니다. 처음에는 수동으로 설치된 패키지는 고정된 사실로 처리되었고, 자동으로 설치된 패키지는 선택적 단위 절이었습니다. 하지만 수동으로 설치된 패키지의 제거를 허용하자 솔버가 깨지면서 불필요하게 패키지를 제거할 수 있었습니다. 저자는 처음에 모든 선택적 절을 가정한 다음, 해결 과정에서 이러한 가정을 단계적으로 취소하여 이 문제를 해결했습니다. 이 방법은 전역적으로 최적이 아니지만, 종속성 해결에 있어 실제로 효과적이며 전역 검색의 지수적 복잡성을 피할 수 있습니다.

개발

WebGL 셰이더를 사용하여 GPU에서 GPT-2 실행하기: 해커의 여정

2025-05-27

Hacker News에서 큰 인기를 얻은 이 글에서는 저자가 WebGL과 셰이더를 사용하여 GPU에서 GPT-2를 구현한 경험을 자세히 설명합니다. 이 글에서는 범용 GPU 프로그래밍의 기원과 진화를 탐구하고, 기존 그래픽 API(OpenGL 등)와 컴퓨팅 API(CUDA, OpenCL 등)의 차이점을 비교합니다. 저자는 텍스처와 프레임 버퍼를 데이터 버스로 활용하고, 프래그먼트 셰이더를 컴퓨팅 커널로 사용하여 행렬 곱셈 및 GELU 활성화 함수와 같은 신경망 연산을 수행합니다. 공유 메모리, 텍스처 크기, 정밀도 등의 제한 사항을 인정하면서도 이 글은 GPU 프로그래밍의 힘과 잠재력을 보여주고, 범용 계산을 위한 그래픽 처리 기술의 혁신적인 활용 방법을 입증합니다. 코드는 Github에서 확인할 수 있습니다.

개발

C 언어를 사용한 효율적인 우측 절단 소수 계산기

2025-05-27
C 언어를 사용한 효율적인 우측 절단 소수 계산기

이 C 프로그램은 지정된 자릿수의 우측 절단 소수의 개수를 효율적으로 계산합니다. 빠른 소수 확인을 위해 사용자 정의 해시 테이블을 사용하고, 최적화된 소수 생성에는 primesieve 라이브러리를 사용합니다. 우측 절단 소수는 가장 오른쪽 자릿수를 연속적으로 제거해도 소수로 남아 있습니다. 이 프로그램은 1자리에서 19자리까지의 입력을 처리하며 각 자릿수의 우측 절단 소수의 개수와 총 실행 시간을 보고합니다. 예를 들어, 8자리 수의 경우 이러한 소수를 5개, 총 83개(8자리까지) 찾습니다.

개발
1 2 74 75 76 78 80 81 82 214 215