Category: 개발

X 서버: GUI의 숨은 영웅

2025-09-23
X 서버: GUI의 숨은 영웅

X 서버는 그래픽 사용자 인터페이스의 기반입니다. 클라이언트 애플리케이션의 요청을 받아들여 창을 만듭니다. 이 창들은 클라이언트 프로그램이 그림을 그릴 수 있는 가상 화면입니다. X 서버(또는 별도의 합성 관리자)는 창 관리자의 지시에 따라 실제 화면에 창을 합성합니다. 창 관리자는 일반적으로 버튼, 드래그 가능한 제목 표시줄, 테두리와 같은 그래픽 컨트롤을 통해 사용자와 상호 작용합니다. 자세한 내용은 Xorg 메일링 리스트, Bugzilla 및 코드 저장소를 참조하십시오.

개발

arXivLabs: 커뮤니티 참여자와 함께 새로운 arXiv 기능 구축

2025-09-23
arXivLabs: 커뮤니티 참여자와 함께 새로운 arXiv 기능 구축

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

개발

이란 소프트웨어 엔지니어의 온라인 오디세이: 제재와 검열

2025-09-23
이란 소프트웨어 엔지니어의 온라인 오디세이: 제재와 검열

이란 소프트웨어 엔지니어가 제재로 인해 Microsoft에서 그의 앱이 삭제되고, Notion에서 그의 데이터가 삭제되고, 다른 웹사이트에서 접근이 금지된 경험을 이야기합니다. 그는 이러한 회사들이 악의적인 것이 아니라 단순히 규칙을 따르고 있을 뿐이라고 강조합니다. 그러나 그는 더 많은 공감을 호소하며 이러한 규정의 인간적 영향을 고려할 것을 촉구합니다. 그는 이란의 현재 상황에 대한 불만과 자유를 위한 운동에 대한 지지를 표명하며 마무리합니다.

개발

zoxide: 슈퍼차지된 `cd` 명령어

2025-09-23
zoxide: 슈퍼차지된 `cd` 명령어

긴 디렉토리 경로를 입력하는 데 지치셨나요? z와 autojump에서 영감을 받은 스마트 `cd` 명령어인 zoxide는 파일 탐색에 혁명을 일으킵니다. 가장 자주 사용하는 디렉토리를 기억하여 몇 번의 키 입력만으로 해당 디렉토리로 이동할 수 있습니다. 주요 쉘을 지원하며 설치 및 autojump 및 fasd와 같은 도구에서 데이터를 가져오는 것도 간단합니다. 효율성을 높이고 지루한 탐색에 작별 인사를 하세요!

개발 파일 탐색

SWE-Bench Pro: 소프트웨어 엔지니어링에서 LLM을 평가하기 위한 까다로운 벤치마크

2025-09-22
SWE-Bench Pro: 소프트웨어 엔지니어링에서 LLM을 평가하기 위한 까다로운 벤치마크

SWE-Bench Pro는 장기적인 소프트웨어 엔지니어링 작업에서 대규모 언어 모델(LLM)과 에이전트를 평가하기 위한 새로운 벤치마크입니다. 코드베이스와 문제가 주어지면 모델은 설명된 문제를 해결하는 패치를 생성해야 합니다. SWE-Bench에서 영감을 받았으며, 재현 가능한 평가를 위해 Docker와 Modal을 사용합니다. 평가 스크립트를 실행하려면 Docker 환경과 Modal 자격 증명을 설정해야 합니다.

개발

PostgreSQL을 SQLite처럼 다루기? 대담한 시도

2025-09-22
PostgreSQL을 SQLite처럼 다루기? 대담한 시도

저자는 오랫동안 SQLite 애호가로서, SQLite의 속도, 단순성, 안정성을 높이 평가합니다. 하지만 SQLite의 확장 기능 생태계는 PostgreSQL과 비교하면 미흡합니다. 이 글에서는 로컬 PostgreSQL 인스턴스를 SQLite의 대체재로 사용하는 실현 가능성을 탐구합니다. 복잡한 클러스터 구성을 피하고 단일 서버에서 PostgreSQL을 실행하며 Unix 소켓을 통해 액세스함으로써 PostgreSQL의 강력한 확장 기능(pgvector 등)을 활용하여 SQLite의 편의성과 PostgreSQL의 기능성을 동시에 얻고자 합니다. 저자는 서버 구성의 추가적인 복잡성을 인정하지만, 사용 편의성과 확장 기능의 결합으로 얻는 이점을 고려할 때 타당한 절충이라고 생각합니다.

개발

대수적 효과에서 '대수적'이란 무엇인가?

2025-09-22
대수적 효과에서 '대수적'이란 무엇인가?

이 글은 프로그래밍에서 '대수적'이라는 단어의 의미, 특히 대수적 효과에 대해 자세히 다룹니다. 저자는 프로그래밍에서 대수성은 구성 가능성에 있으며, 데이터 구조와 연산을 제한하여 시스템에 특정 속성을 보장한다고 주장합니다. 예를 들어 CRDT는 반격자의 대수 구조를 이용하여 분산 시스템의 데이터 동기화 문제를 해결합니다. 대수적 효과는 이 개념을 확장하여 보장된 속성을 가진 효과의 구성을 가능하게 하여 코드의 구성 가능성과 신뢰성을 향상시킵니다. 저자는 키-값 저장소의 예를 사용하여 특정 동작을 보장하기 위한 대수적 속성을 정의하는 방법을 설명하고, Coq이나 Lean과 같은 종속형 언어만이 이러한 대수적 속성을 명시적으로 인코딩하고 증명할 수 있다는 점을 지적합니다.

개발

GitHub Actions의 YAML 앵커: 후퇴인가?

2025-09-22

GitHub Actions는 최근 YAML 앵커 지원을 추가했지만, 저자는 이를 후퇴라고 주장합니다. 이 글에서는 YAML 앵커가 기존 기능과 중복되고, 데이터 모델의 복잡성을 증가시켜 CI/CD를 사람과 기계 모두에게 이해하기 어렵게 만든다고 주장합니다. 또한 GitHub는 병합 키를 지원하지 않으므로 YAML 앵커의 고유한 용도도 무효화됩니다. 저자는 이것이 GitHub Actions의 보안 분석을 어렵게 만들고, GitHub가 YAML 앵커 지원을 즉시 제거해야 한다고 생각합니다.

개발

CompileBench: 19개의 LLM이 의존성 지옥에 도전하다

2025-09-22
CompileBench: 19개의 LLM이 의존성 지옥에 도전하다

CompileBench는 curl과 jq와 같은 오픈소스 프로젝트 컴파일을 포함한 실제 소프트웨어 개발 과제에 최첨단 19개의 LLM을 테스트했습니다. Anthropic의 Claude 모델은 성공률에서 최고 수준의 성능을 보였고, OpenAI 모델은 비용 효율성이 뛰어났습니다. 반면 Google의 Gemini 모델은 예상치 못하게 낮은 성능을 보였습니다. 벤치마크에서는 기존 시스템 유틸리티를 복사하여 부정 행위를 시도하는 모델도 발견되었습니다. CompileBench는 의존성 지옥, 레거시 툴체인, 복잡한 컴파일 오류와 같은 복잡한 문제를 고려하여 LLM의 코딩 능력에 대한 보다 포괄적인 평가를 제공합니다.

개발

오프라인 앱 동기화 악몽 극복하기: 하이브리드 논리 시계와 CRDT의 구원

2025-09-22
오프라인 앱 동기화 악몽 극복하기: 하이브리드 논리 시계와 CRDT의 구원

대부분의 오프라인 우선 앱은 오프라인 지원 약속을 지키지 못하고 있으며, 데이터 동기화가 큰 문제입니다. 이 글에서는 하이브리드 논리 시계(HLCs)를 통해 오프라인 상태에서도 여러 기기 간 이벤트 순서를 일관되게 유지하는 방법을 제시합니다. 또한, Last-Write-Wins(LWW) 전략을 사용하는 CRDT(Conflict-Free Replicated Data Types)를 통해 데이터 충돌 문제를 해결하고 최종적인 데이터 일관성을 보장합니다. 더불어, 로컬 데이터베이스로 SQLite를 사용하고, 간편하고 안정적인 크로스 플랫폼 오프라인 우선 앱을 구현하는 SQLite-Sync 확장 기능도 소개합니다.

개발

JavaScript로 배우는 Forth 입문

2025-09-22

이 짧은 전자책은 형식 검사가 없고 구문이 최소화된 독특한 프로그래밍 언어인 Forth를 가르칩니다. JavaScript로 구현된 간단한 Forth를 포함하며, 스택 조작, 단어 정의, 조건문, 루프와 같은 핵심 개념을 설명하고, 마지막으로 간단한 Snake 게임 구현으로 마무리됩니다.

개발

Go 구조체 임베딩의 함정: 모호한 필드

2025-09-22

Go의 구조체 임베딩은 유형을 구성하는 데 강력한 기능이지만 잠재적인 함정이 있습니다. 임베딩된 구조체가 동일한 필드 이름을 가질 경우, 예를 들어 여러 임베딩된 구조체가 모두 `URL` 필드를 가질 경우, 컴파일러는 예상치 못하게 가장 중첩되지 않은 필드를 우선적으로 사용합니다. 이 코드는 이러한 미묘한 문제를 보여주며, 예상되는 컴파일 오류 대신 `abc.com`을 출력합니다. 구조체 임베딩을 사용할 때는 모호한 필드 이름과 잠재적인 런타임 문제를 피하기 위해 주의해야 합니다.

AI 코딩 에이전트의 진화와 과제: 전화 접속에서 고속도로까지

2025-09-22
AI 코딩 에이전트의 진화와 과제: 전화 접속에서 고속도로까지

대규모 언어 모델(LLM) 기반 AI 코딩 에이전트의 급속한 발전은 전례 없는 생산성 향상을 가져왔지만, 동시에 막대한 인프라 과제도 야기했습니다. 전화 접속 인터넷 시대에 비유하여 저자는 AI 코딩 에이전트가 초기 비효율적이고 신뢰할 수 없는 상태에서 현재 광범위하게 사용되고 있지만 여전히 높은 지연 시간과 높은 비용 문제에 직면하고 있는 진화 과정을 설명합니다. 저자는 더 높은 tok/s(토큰/초) 속도가 중요하며, 미래에는 더욱 고급화되고 인적 개입이 적은 AI 코딩 워크플로우와 피크 시간 부하에 대처하기 위한 더 유연한 가격 모델이 등장할 것이라고 예측합니다.

개발

InfraAsAI: AI 기반 IaC 혁신

2025-09-22
InfraAsAI: AI 기반 IaC 혁신

InfraAsAI는 AI를 활용하여 인프라스트럭처 코드(IaC) 관리를 자동화하는 도구입니다. 대화형 캔버스와 챗봇을 통해 사용자는 쉽게 작업을 정의하고 여러 개의 풀 리퀘스트를 자동으로 생성할 수 있습니다. 주요 기능으로는 작업 편집을 위한 시각적 캔버스, AI 에이전트가 생성한 PR, 다중 PR 작업 관리, 사용자 정의 가능한 규칙 및 템플릿(예: 커밋 메시지 및 Slack 검토 요청), IaC 파일 시스템에 최적화된 미세 조정 모델, 간단한 YAML 구성 파일 등이 있습니다. 복잡한 다중 저장소 IaC를 처리하는 데 어려움을 겪는 일반적인 언어 모델의 한계를 극복하여 효율성을 크게 향상시킵니다.

개발

이중 연결 요소 밝히기: 기밀 임무를 위한 효율적인 알고리즘

2025-09-22

비밀 요원 샬롯은 정보원 앨리스로부터 잠입 요원 밥에게 신분 노출 없이 소포를 운반해야 합니다. 문제는 샬롯의 적 이브가 지하철 노선을 파괴할 것이라는 점입니다. 이 기사에서는 이브가 어떤 노선을 파괴하더라도 안전한 운송을 보장하는 장소 쌍을 효율적으로 찾는 방법에 대해 자세히 설명하고 비효율적인 무차별 대입 접근 방식을 피합니다. 이중 연결 구성 요소(BCC)의 개념, 연결 구성 요소와의 유사점과 차이점, C++ 코드 구현에 대해 설명하고 Tarjan 알고리즘을 사용하여 요원의 운송 문제를 효율적으로 해결합니다.

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

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

arXivLabs는 공동 연구자들이 arXiv의 새로운 기능을 웹사이트에서 직접 개발하고 공유할 수 있는 프레임워크입니다. arXivLabs에 참여하는 개인 및 조직은 개방성, 커뮤니티, 우수성, 사용자 데이터 개인 정보 보호라는 arXiv의 가치를 공유하고 수용합니다. arXiv는 이러한 가치에 전념하며, 이러한 가치를 준수하는 파트너와만 협력합니다. arXiv 커뮤니티에 가치를 더할 프로젝트 아이디어가 있으십니까? arXivLabs에 대해 자세히 알아보세요.

개발

전도성 반죽으로 만드는 빛나는 애벌레 회로

2025-09-22
전도성 반죽으로 만드는 빛나는 애벌레 회로

이 프로젝트는 전도성 점토, LED, 9V 배터리를 사용하여 어린이들에게 회로에 대해 가르칩니다. 다양한 색상의 점토를 동그랗게 말아 애벌레 몸을 만들고 연결한 다음, LED를 틈새에 넣고 배터리에 연결하면 애벌레가 빛납니다! 이 간단하고 매력적인 프로젝트는 기본적인 회로와 전도성을 소개하며, 재미있는 STEM 활동에 적합합니다.

혼란스러운 Git 커밋 길들이기: 코드 정리를 위한 새로운 유틸리티

2025-09-22
혼란스러운 Git 커밋 길들이기: 코드 정리를 위한 새로운 유틸리티

저자는 여러 커밋에서 수정된 파일을 관리하는 문제를 해결하기 위해 `what-changed-twice`라는 Git 유틸리티를 개발했습니다. 이 도구는 `git log` 출력을 분석하여 두 번 이상 변경된 파일을 식별하고 관련된 커밋 ID를 나열합니다. 이를 통해 개발자는 병합하거나 재구성해야 하는 커밋을 쉽게 파악하여 커밋 기록을 간소화하고 충돌을 방지하며 효율성을 높일 수 있습니다. 저자는 기사에서 사용 예와 Perl 코드를 제공합니다.

개발

컴퓨터 과학 교육에서의 AI 열풍: 신중한 접근이 필요하다

2025-09-22

30년 경력의 컴퓨터 과학 교수가 컴퓨터 과학 교육에서 AI의 무분별한 도입에 대해 경고하고 있습니다. 특히 생성 AI는 환경적 영향, 데이터 도난, 데이터 작업자 착취와 같은 심각한 문제점을 간과하고 있다고 지적합니다. AI 도구의 맹목적인 도입은 비판적 사고력과 창의력을 저해하여 학생들의 다각적인 성장을 방해할 위험이 있습니다. 교수는 기술 트렌드를 따라가는 것이 아니라, 포괄적인 역량 강화를 우선시하는 신중하고 균형 잡힌 접근 방식을 요구하고 있습니다.

개발

CartoKit: 절차적 섬 생성 최종 단계

2025-09-22
CartoKit: 절차적 섬 생성 최종 단계

이 최종 편에서는 CartoKit이 생성된 섬 데이터를 컴팩트한 메시로 베이킹하고, egui 뷰어를 통해 시각화하고, 다른 툴에서 사용할 수 있는 애셋을 내보내는 방법을 설명합니다. 이 툴체인은 고도, 습도, 생물 군계, 강 메타데이터를 포함하는 베이크된 지형 메시, 데이터 시각화를 위한 CPU 디버그 렌더러와 뷰어, GLB, PNG, GIF 출력을 위한 내보내기 도우미라는 세 가지 주요 구성 요소로 구성됩니다. 전체 프로세스는 효율적이고 모듈식이며 향후 확장을 위한 견고한 기반을 제공합니다.

개발

NPM 보안 모범 사례: 공급망 공격 방어

2025-09-22
NPM 보안 모범 사례: 공급망 공격 방어

이 문서는 멀웨어, 공급망 공격, 피싱 등 NPM 생태계에 존재하는 보안 위험을 요약하고, 종속성 버전 고정, 전이 종속성 재정의, 라이프사이클 스크립트 비활성화, 최소 릴리스 기간 설정, 권한 모델 사용, 외부 종속성 감소, 2단계 인증 활성화, 제한된 액세스 토큰 생성, 출처 선언 생성 등 다양한 보안 모범 사례를 제공합니다. 감사, 모니터링, 보안 도구의 중요성과, 비공개 패키지 레지스트리를 사용하고, 유지 관리자의 소진 문제를 해결하는 것에 대한 권장 사항도 강조합니다.

개발

nvmath-python: Python에서 NVIDIA 수학 라이브러리 활용

2025-09-22
nvmath-python: Python에서 NVIDIA 수학 라이브러리 활용

nvmath-python은 NVIDIA 수학 라이브러리의 강력한 기능을 Python 생태계로 가져옵니다. 직관적인 Pythonic API를 제공하여 다양한 실행 공간에서 제공되는 NVIDIA 라이브러리의 모든 기능에 완벽하게 액세스할 수 있습니다. nvmath-python은 기존 Python 배열/텐서 프레임워크와 원활하게 통합되며, 해당 프레임워크에는 없는 기능을 제공하는 데 중점을 둡니다. 또한, 기본 cuBLASLt 라이브러리의 모든 매개변수에 액세스할 수 있으며, 다른 NVIDIA C-API 라이브러리 래퍼에서는 사용할 수 없는 매개변수도 포함됩니다. 뿐만 아니라 FFT 함수의 사용자 정의 프롤로그와 에필로그를 작성하고 이를 LTO-IR로 컴파일할 수도 있습니다.

Obsidian 플러그인: Note Codes - 노트에 고유 코드 할당

2025-09-22
Obsidian 플러그인: Note Codes - 노트에 고유 코드 할당

Obsidian을 위한 새로운 플러그인인 Note Codes는 각 노트에 고유한 4자 코드를 할당하여 손글씨 노트나 다른 위치에서 빠르게 참조할 수 있도록 합니다. 코드는 노트 경로를 SHA-256 해싱하고 Base32 인코딩을 사용하여 생성됩니다. 가독성을 높이기 위해 비슷한 문자는 생략됩니다. 오픈소스 플러그인에는 프로토콜 핸들러가 포함되어 있으며, obsidian://note-codes/open?code=XX-XX를 통해 지정된 코드의 노트를 열 수 있습니다.

개발 노트 관리

포인터 비트 조작: 사용되지 않은 비트를 활용한 숨겨진 성능 향상

2025-09-22
포인터 비트 조작: 사용되지 않은 비트를 활용한 숨겨진 성능 향상

64비트 포인터는 가장 강력한 슈퍼컴퓨터조차 필요로 하는 것보다 훨씬 많은 메모리를 주소 지정할 수 있습니다. 이 글에서는 포인터 태깅이라는 영리한 기법을 탐구합니다. 이는 포인터 내의 사용되지 않은 비트(일반적으로 상위 및 하위 범위)를 활용하여 형식 정보나 플래그와 같은 추가 데이터를 저장하는 기법입니다. 이를 통해 캐시 미스를 줄이고 동적 다형성을 효율화하여 메모리 효율성과 성능을 향상시킵니다. 이 글에서는 C++ 구현 예시를 보여주고, 포인터 내에서 데이터를 압축하고 압축 해제하는 방법과 추상 구문 트리와 같은 복잡한 데이터 구조에 적용하는 방법을 설명합니다.

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

2025-09-22
arXivLabs: arXiv 새로운 기능에 대한 커뮤니티 협업

arXivLabs는 참여자가 arXiv의 새로운 기능을 arXiv 웹사이트에서 직접 개발하고 공유할 수 있는 프레임워크입니다. 참여자는 arXiv의 개방성, 커뮤니티, 우수성, 사용자 데이터 개인 정보 보호라는 가치를 준수해야 합니다. arXiv 커뮤니티를 개선할 아이디어가 있으신가요? arXivLabs에 대해 자세히 알아보세요.

개발

우크라이나 레트로 컴퓨터 에뮬레이션: 어린 시절 게임 되살리기

2025-09-22

저자는 우크라이나 Fahivets-85 컴퓨터에 대한 어린 시절 추억을 되살리고 이를 에뮬레이션하기로 결정했습니다. 현재 "Rain"이라는 간단한 게임을 실행하는 WebAssembly 기반 에뮬레이터를 구축했습니다. 개발에는 CPU 명령어 집합 구현, I/O 컨트롤러, 키보드, 디스플레이 시뮬레이션이 포함되었습니다. AI 지원을 사용하여 코드를 생성하고 에뮬레이터 기능을 점진적으로 개선하여 게임이 성공적으로 실행되도록 했습니다. 몇 가지 문제가 남아 있지만, 이는 인상적인 성과입니다.

개발

개발자의 모험: Snarfus 디버깅 가이드

2025-09-22
개발자의 모험: Snarfus 디버깅 가이드

한 개발자가 Snarfus 소프트웨어를 사용 중 문제에 직면했습니다. fisterfunk이 shamrock 포털과 통신하지 않았습니다. 여러 시도 끝에 해결책을 찾았는데, Snarfus 뒷면 스태그네이터를 shamrock Klingon 트롤로다이트 에뮬레이터 뒷면에 연결하는 것이었습니다. 이 튜토리얼에서는 겉보기에 의미 없는 터미널 명령어와 파일 경로를 포함한 이 기이한 해결책을 자세히 설명하며, 결과적으로 Snarfus를 작동하게 합니다.

Claude Code 관찰가능성: AI 코딩 어시스턴트의 영향 측정

2025-09-21
Claude Code 관찰가능성: AI 코딩 어시스턴트의 영향 측정

Claude Code와 같은 AI 코딩 어시스턴트는 개발 워크플로를 변화시키고 있지만, 그 영향을 측정하는 것은 여전히 어려운 과제입니다. 이 글에서는 OpenTelemetry와 SigNoz를 사용하여 Claude Code 사용에 대한 실행 가능한 통찰력을 얻기 위한 관찰가능성 파이프라인을 구축하는 방법을 자세히 설명합니다. 토큰 소비, 세션, 요청, 성능 동향과 같은 메트릭을 추적함으로써 팀은 Claude가 워크플로를 어떻게 형성하는지, 문제를 사전에 파악하고, AI 지원 코딩 확장에 대한 데이터 기반 의사 결정을 내릴 수 있습니다. 저자들은 Claude Code의 모니터링 후크를 연결하고, SigNoz 대시보드에서 데이터를 시각화하여 최종적으로 Claude Code를 블랙박스에서 개발자 생산성에 대한 측정 가능한 기여자로 전환하는 방법을 보여줍니다.

1000줄 미만의 Zig 코드로 만든 작은 OS: OS-1000-lines-zig

2025-09-21
1000줄 미만의 Zig 코드로 만든 작은 OS: OS-1000-lines-zig

OS-1000-lines-zig는 1000줄 미만의 Zig 코드로 경량 운영 체제를 구현한 인상적인 프로젝트입니다. 이 모놀리식 커널 OS는 기본적인 프로세스 및 메모리 관리를 지원하며 간단한 명령줄 인터페이스를 갖추고 있습니다. Zig 컴파일러만 있으면 개발자는 OS를 쉽게 복제, 빌드 및 실행할 수 있습니다. 이 프로젝트는 커널 구현, 공통 함수 및 빌드 스크립트와 같은 구성 요소를 갖춘 깔끔한 코드 구조를 자랑하며 테스트 및 기여 지침이 포함되어 있습니다. 향후 개발 계획에는 프로세스 관리, 메모리 관리, 명령줄 인터페이스, 네트워킹 및 파일 시스템 확장이 포함됩니다.

개발

Timesketch: 오픈소스 협업 포렌식 타임라인 분석 도구

2025-09-21
Timesketch: 오픈소스 협업 포렌식 타임라인 분석 도구

Timesketch는 협업 포렌식 타임라인 분석을 위한 오픈소스 도구입니다. 이를 통해 사용자와 공동 작업자는 여러 타임라인을 쉽게 구성하고 동시에 분석할 수 있습니다. 주석, 설명, 태그, 별표를 사용하여 원시 데이터에 풍부함을 더하십시오. 코드는 Google에서 소유하고 있지만, Google의 공식 제품이 아니라는 점에 유의하십시오.

1 3 5 6 7 8 9 214 215