Category: 개발

Ruby 3.4: 더 빠른 연결, 더 명확한 예외 추적, 그리고 간결한 코드

2025-01-01

Ruby 3.4가 출시되었습니다! Chris Sinjakli는 세 가지 주요 개선 사항을 강조합니다. 더 깔끔한 코드를 위한 기본 블록 매개변수 이름 `it`, 특히 듀얼 스택(IPv4 및 IPv6) 네트워크에서 TCP 소켓 연결 처리를 크게 개선하는 RFC8305(Happy Eyeballs Version 2) 구현, 그리고 디버깅을 용이하게 하는 더 명확한 예외 추적입니다. 이러한 개선으로 개발자 생산성이 향상되고 Ruby 팀이 개발자 경험에 중점을 두고 있음을 보여줍니다.

개발

API Parrot: 어떤 웹사이트의 HTTP API도 쉽게 리버스 엔지니어링

2025-01-01

API Parrot은 어떤 웹사이트의 HTTP API라도 리버스 엔지니어링할 수 있는 강력한 도구입니다. 네트워크 트래픽을 쉽게 기록할 수 있는 HTTP 프록시가 내장되어 있으며, 데이터를 분석하여 관련 엔드포인트를 식별하고 그 관계를 이해합니다. 사용자는 함수를 사용자 지정하고, 입력/출력 매개변수를 지정하고, 관련 없는 데이터를 제외하고, 사용자 지정 함수를 JavaScript 코드로 내보내 애플리케이션에 원활하게 통합할 수 있습니다. API Parrot은 공개 API가 없는 웹사이트에서도 비즈니스 프로세스 자동화, 시스템 통합, 데이터 스크래핑을 간소화합니다.

메타린귀스틱 프로그래밍의 마법: 인터프리터를 사용한 코드 간소화

2025-01-01
메타린귀스틱 프로그래밍의 마법: 인터프리터를 사용한 코드 간소화

이 글에서는 메타린귀스틱 프로그래밍의 힘, 특히 인터프리터를 사용하여 복잡한 코드를 간소화하는 방법을 탐구합니다. 저자는 Lisp 표현식 간소화를 예로 사용하여 80줄의 Scheme 인터프리터와 30개의 규칙을 구축함으로써 일반적으로 수천 줄의 코드가 필요한 작업을 달성하는 방법을 보여줍니다. 중요한 것은 프로그래밍 패러다임을 데이터 중심의 규칙 매칭으로 변경하여 코드 중복을 크게 방지하는 것입니다. 마법은 아니지만, 저자는 이 메타린귀스틱 추상화는 더 많은 탐구에 가치가 있는 강력한 도구라고 주장합니다.

Notion: 올인원 작업 공간

2025-01-01
Notion: 올인원 작업 공간

Notion은 노트, 작업 관리, 위키, 데이터베이스를 단일 플랫폼에 통합한 올인원 작업 공간입니다. 유연하고 강력한 도구를 제공하여 정보 정리, 프로젝트 관리, 팀 협업, 사용자 지정 워크플로 구축을 지원합니다. 개인 사용 또는 팀 협업 모두에 Notion은 사용자의 요구 사항에 맞게 조정되어 생산성을 향상시킵니다.

Keeper(YC) 시니어 풀스택 엔지니어 채용

2025-01-01
Keeper(YC) 시니어 풀스택 엔지니어 채용

Y Combinator의 지원을 받는 회계사용 소프트웨어 개발 회사 Keeper에서 시니어 풀스택 엔지니어를 채용하고 있습니다. React와 Node.js를 사용한 웹 애플리케이션 개발 경험 3년 이상, TypeScript, REST API, 데이터베이스에 대한 깊이 있는 지식이 필요합니다. Keeper는 경쟁력 있는 급여와 스톡옵션을 제공하며, 효율적인 도구를 통해 회계사를 지원하는 것을 목표로 합니다.

ShredOS: 모든 프로세서를 위한 안전한 디스크 지우개

2025-01-01
ShredOS: 모든 프로세서를 위한 안전한 디스크 지우개

ShredOS는 Buildroot를 사용하여 구축된 경량의 부팅 가능한 Linux 배포판으로, 안전한 디스크 지우기를 위해 설계되었습니다. 강력한 도구인 nwipe를 탑재하여 DoD 5220.22-M 준수를 포함한 다양한 지우기 방법을 제공하며, 32비트 및 64비트 프로세서를 모두 지원합니다. USB 또는 CD에서 부팅 가능하며, 설치가 필요 없고 사용자 친화적인 인터페이스를 제공합니다. 또한 smartmontools 및 hdparm과 같은 유틸리티가 포함되어 있어 디스크 진단 및 유지 관리가 용이합니다.

시계 방향/나선형 규칙: 복잡한 C 선언 마스터하기

2025-01-01

이 글에서는 복잡한 C 선언을 구문 분석하기 위한 영리한 기법인 "시계 방향/나선형 규칙"을 소개합니다. 선언문을 시계 방향으로 나선형으로 따라가면서 배열, 포인터, 함수와 같은 요소들을 한국어에 해당하는 것으로 바꾸면, 아무리 복잡한 선언이라도 이해하기 쉬워집니다. 저자는 간단한 포인터 배열부터 중첩된 함수 포인터까지 여러 가지 예를 사용하여 이 기법을 보여주고, `const`와 `volatile` 키워드를 다루는 방법을 설명합니다. 이 방법은 혼란스러운 C 코드를 해독하는 실용적이고 직관적인 방법을 제공합니다.

개발

스태프 엔지니어 두 번 승진: 경험에서 얻은 교훈

2025-01-01

저자는 2년 동안 두 번 스태프 엔지니어로 승진한 경험을 공유합니다. 승진의 핵심은 기술 능력이 아니라 회사 목표에 부합하는 고우선순위 프로젝트를 성공적으로 완료하여 회사에 가치를 제공하는 것이었습니다. 회사의 전략적 방향을 이해하고, 영향력 있는 프로젝트에 참여하며, 경영진 및 팀 구성원과의 긍정적인 관계를 구축하는 것이 중요하다고 강조합니다. 지원적인 관리자의 존재 또한 필수적입니다. 주요 내용은 회사가 우선순위로 삼는 고영향 프로젝트에 집중하고, 멘토링을 과대평가하지 않으며, 승진을 적극적으로 지원하는 관리자를 확보하는 것입니다.

개발 경력 개발

Lucy: 간결한 유한 상태 머신용 DSL

2025-01-01

Lucy는 유한 상태 머신(FSM)을 설명하기 위한 간결한 언어입니다. 복잡한 이벤트, 가드, 액션 및 목표 상태를 한 줄로 표현할 수 있습니다. 머신을 중첩하여 계층적 FSM을 만들 수 있습니다. Lucy는 최고의 JavaScript FSM 라이브러리인 XState로 컴파일되며, 모든 핵심 기능을 지원합니다. C로 작성되고 WebAssembly로 컴파일되므로 JavaScript 프로젝트에서 매우 빠릅니다(이전 JavaScript 기반 컴파일러보다 15배 빠름).

유령 CVE: 터미널 에뮬레이터 Ghostty의 보안 취약성

2025-01-01

새로운 터미널 에뮬레이터 Ghostty가 최근 1.0 버전을 출시했습니다. 보안 연구원 David Leadbeater는 2003년 CVE와 유사한 취약성(CVE-2024-56803)을 발견하여 공격자가 터미널의 제목 조회 기능을 이용하여 임의의 코드를 실행할 수 있도록 했습니다. 이 취약성은 터미널의 인밴드 신호 전달 방식과 vi 모드에서 Zsh의 동작을 악용합니다. 공격자는 교묘하게 제작된 이스케이프 시퀀스를 사용하여 사용자의 눈치채지 못하게 악성 코드를 실행하고, 심지어 SSH를 통해 원격 공격을 수행할 수도 있습니다. Ghostty 1.0.1은 이 문제를 수정했으며, 사용자는 업그레이드하거나 권고 사항에서 제공하는 완화 조치를 적용하는 것이 좋습니다.

(dgl.cx)

정적 검색 트리: 이진 검색보다 40배 빠름

2025-01-01

이 블로그 게시물에서는 정렬된 데이터의 고 처리량 검색을 위한 정적 검색 트리(S+ 트리)의 구현 및 최적화에 대해 설명하며, 이진 검색보다 40배 빠른 결과를 얻었습니다. Algorithmica의 코드를 기반으로 벡터화, SIMD 명령어, 배치 처리를 통해 세심하게 최적화했습니다. 어셈블리 코드에 대한 심층 분석을 통해 추가적인 성능 향상을 위한 기회를 발견했습니다. 다양한 트리 레이아웃과 메모리 전략을 탐색하여 최종적으로 1GB 데이터셋에서 쿼리 시간을 1150ns에서 24ns로 단축하는 매우 효율적인 솔루션을 구현했습니다.

Tirreno: 플랫폼 보호 강화를 위한 오픈소스 보안 사용자 분석

2025-01-01
Tirreno: 플랫폼 보호 강화를 위한 오픈소스 보안 사용자 분석

Tirreno는 웹사이트, 애플리케이션, SaaS, 커뮤니티, IoT 기기 등 다양한 온라인 플랫폼을 모니터링하도록 설계된 오픈소스 보안 사용자 분석 소프트웨어입니다. 계정 도용, 악의적인 봇, 사용자 행동으로 인한 일반적인 취약성을 감지하고 방어합니다. PHP와 PostgreSQL을 사용하여 구축되었으며 설치 및 사용이 간편하고 실시간 분석을 제공합니다. 유료 구독을 통해 IP 주소, 이메일 주소, 전화번호에 대한 추가 검증을 제공하여 사기 방지 기능을 강화합니다. Tirreno Technologies Sàrl에서 개발했으며 개인 정보 보호와 데이터 보안을 우선시합니다. 코드는 오픈소스이지만 상표는 오픈소스가 아닙니다.

NetBSD 빌드 시스템 재검토: 강력하지만 난해한 도구

2024-12-31
NetBSD 빌드 시스템 재검토: 강력하지만 난해한 도구

이 블로그 게시물은 BSD make와 쉘 스크립트의 조합을 기반으로 하는 강력하지만 다소 난해한 NetBSD 빌드 시스템을 재검토합니다. 이 시스템을 사용하면 사실상 모든 POSIX 플랫폼에서 root 권한 없이 완벽한 NetBSD 시스템을 처음부터 구축할 수 있으며 다양한 아키텍처에 대한 크로스 컴파일을 지원합니다. 저자는 툴체인 생성, 빌드 구조, destdir 메커니즘, 루트 권한이 필요 없는 빌드, 배포 미디어 생성 등 빌드 프로세스를 자세히 설명합니다. 비효율적인 증분 빌드와 불완전한 종속성 관리 등의 단점을 인정하면서도 시스템의 장점과 설계 철학을 강조합니다. 마지막으로 저자는 현재 NetBSD를 사용하는 임베디드 프로젝트를 언급하고 효율성 향상을 위해 빌드 시스템을 Bazel로 마이그레이션할 가능성을 모색합니다.

YC 스타트업 just words, 시니어 프론트엔드 엔지니어 채용

2024-12-31
YC 스타트업 just words, 시니어 프론트엔드 엔지니어 채용

Y Combinator 지원 스타트업 just words에서 백엔드 및 추천 시스템 구축 및 확장을 담당할 시니어 소프트웨어 엔지니어(프론트엔드)를 채용하고 있습니다. AI 기반의 초개인화 메시징과 마케팅 효과 최적화를 위한 동적 테스트를 사용하고 있습니다. 이상적인 지원자는 프론트엔드 개발 경험 4년 이상, JavaScript/TypeScript 및 React와 같은 최신 프레임워크에 대한 능숙함, 빠르게 변화하는 환경에서의 적응력을 갖춰야 합니다. 창업 멤버들과 함께 일하고, 중요한 의사 결정에 참여하며, 최첨단 AI 기술을 사용하여 복잡한 문제를 해결할 수 있는 좋은 기회입니다.

개발

Ruby VM 핍홀 최적화: opt_respond_to 추가

2024-12-31
Ruby VM 핍홀 최적화: opt_respond_to 추가

이 글은 Ruby 가상 머신(VM) 최적화에 대한 연재 글의 네 번째 부분입니다. 저자는 `respond_to?` 메서드 호출을 최적화하기 위해 CRuby에 `opt_respond_to` 명령어를 추가하는 과정을 자세히 설명합니다. 이 글에서는 디버거를 사용하여 코드 실행을 추적하고, 핍홀 최적화기 `iseq_peephole_optimize`를 찾고, 기존의 동결 배열 최적화 구현을 분석하여 `respond_to?` 메서드 호출 패턴과 일치시켜 새로운 최적화 명령어를 추가하기 위한 기반을 마련합니다. 간결한 코드 예시와 디버깅 단계를 사용하여 핍홀 최적화 메커니즘과 CRuby 소스 코드에서의 디버깅 방법을 명확하게 보여줍니다.

GitHub에서 310만 개 이상의 가짜 스타가 악성 코드 홍보에 사용됨

2024-12-31
GitHub에서 310만 개 이상의 가짜 스타가 악성 코드 홍보에 사용됨

최근 연구에 따르면 GitHub에서 310만 개가 넘는 가짜 "스타"가 발견되었는데, 이는 사기 및 악성 코드 저장소의 인기를 인위적으로 높이기 위해 사용되었습니다. 연구원들은 StarScout라는 도구를 사용하여 방대한 데이터 세트를 분석하여 15,835개의 저장소에서 이러한 가짜 스타에 연루된 27만 8,000개의 계정을 식별했습니다. 특히 2024년에 급증한 이러한 기만적인 관행으로 인해 악의적인 프로젝트가 정상적인 것처럼 보이고, 아무것도 모르는 사용자에게 도달할 수 있습니다. GitHub에서는 관련 계정과 저장소의 상당 부분을 삭제했지만, 문제는 여전히 남아 있습니다. 사용자는 프로젝트의 품질을 신중하게 평가하고 GitHub에서 소프트웨어를 다운로드할 때 주의를 기울여야 합니다.

좋아 보이지만 거의 작동하지 않는 시스템 아이디어

2024-12-31
좋아 보이지만 거의 작동하지 않는 시스템 아이디어

이 글에서 스티븐 시노프스키는 보기에는 좋아 보이지만 실제로는 거의 작동하지 않는 몇 가지 소프트웨어 엔지니어링 개념을 반박합니다. '간단하게 플러그인 가능하게 만들자', '단순히 API를 추가하자', '한 단계 더 추상화하자' 와 같은 아이디어는 소프트웨어 엔지니어링의 고유한 복잡성 때문에 실제로는 잘 작동하지 않는 경우가 많습니다. API 유지 관리, 비동기 작업 버그, 액세스 제어 복잡성, 크로스 플랫폼 개발의 어려움 등 여러 문제점이 지적됩니다. 시노프스키는 성공적인 소프트웨어 엔지니어링은 패턴을 맹목적으로 적용하는 것이 아니라 제일 원리에 기반해야 한다고 강조합니다.

Onramp 컴파일러, DOOM을 처음부터 컴파일하는 데 성공

2024-12-31

2년간의 개발 끝에 프로그래머는 Onramp이라는 자기 호스팅 컴파일러를 사용하여 고전 게임 DOOM을 컴파일하는 데 성공했습니다. x86_64 어셈블리로 작성된 간단한 가상 머신부터 시작하여 Onramp는 어셈블러, C 컴파일러 등의 도구를 단계적으로 구축하여 최종적으로 DOOM의 컴파일 및 실행을 달성했습니다. 성능은 아직 제한적이지만 Onramp는 뛰어난 자기 호스팅 기능과 크로스 플랫폼 가능성을 보여줍니다. 장기적인 목표는 외계 문명의 컴퓨터라도 모든 아키텍처에서 코드의 컴파일 및 실행을 가능하게 하여 먼 미래를 향한 우리의 문화와 컴퓨팅 역사를 보존하는 것입니다.

RSS.Beauty: RSS 피드를 아름답게 만들기

2024-12-31
RSS.Beauty: RSS 피드를 아름답게 만들기

RSS.Beauty는 RSS 읽기 경험을 향상시키기 위해 디자인된 오픈소스 도구입니다. 평범한 RSS 피드를 아름답게 포맷된 읽기 경험으로 변환합니다. RSS 또는 Atom 스타일 파일을 다운로드하여 정적 리소스 디렉토리에 배치하고 RSS의 `` 다음에 코드 한 줄을 추가하기만 하면 됩니다. RSS.Beauty는 뛰어난 호환성을 자랑하며 검증된 기술을 사용하여 RSS에 새로운 생명을 불어넣습니다.

개발 읽기 경험

Grafana Cloud: 손쉽게 맞춤형 일기 예보 대시보드 만들기

2024-12-31
Grafana Cloud: 손쉽게 맞춤형 일기 예보 대시보드 만들기

이 문서에서는 Grafana Cloud와 무료로 사용할 수 있는 미국 국립기상청 공개 API를 사용하여 개인 맞춤형 일기 예보 대시보드를 빠르게 만드는 방법을 설명합니다. 간단한 단계를 통해 원시 JSON 날씨 데이터를 이해하기 쉬운 차트로 변환하여 사용자는 언제든지 지역 날씨 정보를 확인할 수 있습니다. Grafana Cloud는 다양한 데이터 소스를 지원하며 풍부한 시각화 옵션을 제공하여 데이터 분석을 간편하고 효율적으로 만듭니다.

개발 일기 예보

Python의 심볼릭 레퍼런스와 하드웨어 모델: 하드웨어 설계 효율 향상을 위한 새로운 접근법

2024-12-31

이 글에서는 Python을 사용한 하드웨어 모델링의 새로운 방법인 심볼릭 모델을 소개합니다. 기존 하드웨어 설계 워크플로는 검증을 위해 여러 모델(동작 모델, 아키텍처 모델, RTL 모델 등)을 사용하지만, 복잡한 알고리즘과 데이터 관리에서는 디버깅이 어려울 수 있습니다. 저자는 Python 심볼릭 모델을 사용하여 데이터 자체가 아닌 데이터의 출처를 추적함으로써 디버깅 프로세스를 간소화하는 것을 제안합니다. 이미지 다운스케일러를 예로 들어, 참조 심볼릭 모델과 하드웨어 심볼릭 모델의 구성 및 비교를 자세히 설명하고, 특히 복잡한 데이터 관리 및 사양 변경에 대처할 때 심볼릭 모델이 설계 효율성과 신뢰성을 높이는 장점을 보여줍니다.

darktable 5.0.0 출시: 향상된 UI, 성능 및 지원!

2024-12-31
darktable 5.0.0 출시: 향상된 UI, 성능 및 지원!

인기 있는 오픈소스 사진 편집 소프트웨어 darktable이 버전 5.0.0을 출시했습니다. UI/UX 개선, 성능 향상, 카메라 및 파일 형식 지원 확장이 주요 특징입니다. 새로운 기능으로는 카메라별 스타일, 시작 시 진행률 표시, 일괄 처리 중 피드백, 더욱 정확한 마스크 제어 등이 있습니다. 성능 향상은 최적화된 색상 이퀄라이저와 더 빠른 PFM 파일 로딩에서 두드러집니다. 많은 버그가 수정되었으며, 더 넓은 범위의 카메라와 파일 형식을 지원하게 되었습니다. 4.8에서 업그레이드하는 경우 편집 내용은 유지되지만, 데이터 백업을 강력히 권장합니다.

유니티 지원 페이지 바닥글 요약

2024-12-31
유니티 지원 페이지 바닥글 요약

이 텍스트는 유니티 테크놀로지스 웹사이트의 바닥글입니다. 저작권 정보, 개인정보 보호정책, 쿠키 정책, 그리고 유니티 애즈, 애셋 스토어, 학습 자료, 커뮤니티 포럼, 설명서 등 다양한 리소스에 대한 링크가 포함되어 있습니다. 그 자체로 기사가 아니라 유니티 관련 추가 정보와 리소스를 사용자에게 보여주는 탐색 요소입니다.

네이티브 앱의 쇠퇴: 웹 앱의 부상

2024-12-31
네이티브 앱의 쇠퇴: 웹 앱의 부상

스마트폰 붐은 네이티브 앱을 어디에나 퍼뜨렸지만, 이제는 부담이 되고 있습니다. 최신 브라우저는 과거 네이티브 앱 고유의 기능이었던 알림이나 오프라인 액세스 등을 제공할 만큼 강력해졌습니다. 이 글에서는 많은 기업들이 여전히 네이티브 앱에 집착하고 있으며, 사용자의 앱 과부하로 이어진다고 주장합니다. 반면 웹 앱은 비용 효율이 높고 유연하며 기기 간에 매끄럽게 작동합니다. 게임 업계는 이를 특히 잘 보여주는데, HTML5, WebGL, WebAssembly와 같은 기술 덕분에 브라우저 게임이 네이티브 게임에 필적하게 되었습니다. 이 글은 개발자들에게 웹 앱의 미래를 받아들이고 Rogue Engine과 같은 도구를 사용하여 더욱 접근성이 높고 보편적으로 사용할 수 있는 경험을 만들도록 촉구합니다.

Linux Git 커밋 SHA 접두사 충돌 위험이 임박

2024-12-31
Linux Git 커밋 SHA 접두사 충돌 위험이 임박

Linux의 "Fixes" 태그는 전통적으로 12자리 커밋 SHA 접두사를 사용했지만, 커밋 수가 증가함에 따라 충돌 위험이 커지고 있습니다. 보안 연구원 Kees Cook은 12자리 접두사 충돌을 성공적으로 만들어 "Fixes" 태그를 파싱하는 도구들을 망가뜨렸습니다. 이 충돌은 Linux 2.6.12-rc2의 초기 커밋 ID를 사용하며, linux-next의 "Fixes 태그 체커"와 Linux CNA의 커밋 파서 등의 도구에 영향을 미칩니다. 향후 충돌을 방지하기 위해 Cook은 최소 단축 ID를 16자리로 늘릴 것을 제안하고 있으며, 도구 개발자들이 수정할 수 있도록 테스트 커밋을 공개했습니다.

개발

오픈소스 프로젝트 재라이선싱: Elasticsearch, Redis, Terraform 사례 연구

2024-12-31
오픈소스 프로젝트 재라이선싱: Elasticsearch, Redis, Terraform 사례 연구

경제적 압박에 직면하여 일부 기업들은 수익 증대를 위해 더 제한적인 라이선스로 인기 있는 오픈소스 프로젝트를 재라이선싱하고 있으며, 이는 프로젝트 포크로 이어집니다. CHAOSS는 Elasticsearch, Redis, Terraform 사례 연구를 통해 포크는 특히 Linux Foundation과 같은 중립적인 재단의 지원 하에 원 프로젝트보다 조직적 다양성이 더 높은 경향이 있음을 발견했습니다. 재라이선싱은 원 프로젝트 기여자에게 미치는 영향은 최소한이었지만 사용자에게는 상당한 영향을 미쳤습니다. 본 연구는 더 큰 진행 중인 프로젝트의 첫 번째 단계이며, 향후 분석에서는 더 많은 데이터와 프로젝트를 포함하여 더 깊이 있는 이해를 얻을 수 있을 것입니다.

DocumentCloud: 온라인 문서 협업 플랫폼

2024-12-31

DocumentCloud는 사용자가 다양한 유형의 문서를 업로드하고, 공동으로 편집하고, 공유할 수 있는 온라인 플랫폼입니다. 강력한 검색 및 정리 기능을 제공하여 많은 양의 파일을 쉽게 관리할 수 있습니다. 저널리스트, 연구원 및 팀워크가 필요한 조직에게 DocumentCloud는 효율성을 높이고 정보 공유를 촉진하는 귀중한 도구입니다.

Ruby 핵심 클래스 동결 도구: Ruby Refrigerator

2024-12-31
Ruby 핵심 클래스 동결 도구: Ruby Refrigerator

Ruby Refrigerator는 모든 Ruby 핵심 클래스와 모듈을 동결하여 런타임 시 핵심 클래스에 대한 예기치 않은 변경을 방지하는 도구입니다. 핵심 클래스를 동결하는 `freeze_core` 메서드와 핵심 클래스 변경 사항에 대해 라이브러리를 검사하는 `check_require` 메서드를 제공합니다. `check_require`는 모듈 및 클래스의 사전 정의, 특정 클래스 제외, 종속성 지정 등의 옵션을 지원합니다. 사용하기 쉬운 명령줄 도구 `bin/check_require`도 제공됩니다. 이 도구는 프로덕션 환경과 테스트 환경에서 코드 안정성을 보장하는 데 매우 유용합니다.

t2x: AI 기반 텍스트 작업용 CLI 도구

2024-12-31

개발자가 "text to whatever"의 약자인 t2x라는 오픈소스 커맨드라인 인터페이스(CLI) 도구를 개발 중입니다. t2x는 로컬 또는 클라우드 기반 언어 모델을 사용하여 다양한 텍스트 작업을 수행합니다. 아직 완전히 완성되지 않았으므로, GitHub에 공개하는 것은 휴가 이후가 될 예정입니다.

개발
1 2 196 197 198 200 202 203 204 214 215