Bash 및 Zsh 탭 자동완성 개선: 완성된 단어에 대한 설명 표시

2025-08-10

이 글에서는 Bash 및 Zsh 탭 자동완성 기능을 개선하여 이미 완성된 단어에 대한 설명도 표시하는 방법을 설명합니다. 이전에는 탭 자동완성이 여러 옵션이 일치하는 경우에만 설명을 표시했기 때문에 단일 명령어에 대한 설명을 확인하는 것이 불편했습니다. 저자는 독창적으로 '더미' 자동완성 옵션을 추가하여 이 문제를 해결했으며, 사용자는 탭 키를 한 번 누르기만 해도 원하는 완성된 단어에 대한 설명을 볼 수 있습니다. 단어가 중복 표시되는 사소한 UI 결함이 있지만, 사용자 경험은 크게 향상되었습니다.

더 보기

Mill: React에서 영감을 받은 빌드 도구 혁명

2025-05-13

Mill은 React.js의 핵심 설계 결정인 직접 스타일 빌드와 단일 범용 언어를 채택한 독특한 빌드 도구입니다. 콜백과 여러 언어에 의존하는 기존 빌드 도구와 달리 Mill을 사용하면 최종 빌드 결과물을 직접 반환하는 함수를 작성할 수 있으며, Mill이 캐싱, 병렬 처리 및 최적화를 자동으로 처리합니다. 이러한 접근 방식은 빌드 프로세스를 간소화하고 가독성과 유지 관리성을 향상시키며 IDE 통합을 개선합니다.

더 보기
개발

Mill이 빌드 구성에 Scala를 사용하는 이유

2025-02-13

YAML이나 XML과 같은 대안 대신 Mill 빌드 시스템의 구성 언어로 Scala를 선택한 것에 대해 의문을 갖는 사람들이 있습니다. 이 기사에서는 범용 프로그래밍 언어를 사용하는 이점, Scala의 구체적인 장점, Java 가상 머신을 활용하는 이유라는 세 가지 주요 이유를 탐구하여 이 점을 설명합니다. Scala는 틈새 언어이지만, 고유한 특성으로 인해 프로젝트 규모에 관계없이 빌드 시스템 구성에 특히 적합합니다.

더 보기
개발

Github Actions를 사용한 Mill의 크로스 플랫폼 네이티브 바이너리

2025-02-02

Mill 프로젝트는 Github Actions를 사용하여 다양한 플랫폼(Mac, Windows, Linux)에서 네이티브 바이너리를 빌드하고 Maven Central에 업로드합니다. 교묘한 구성을 통해 JVM과 호환되는 일반 아티팩트와 플랫폼별 네이티브 바이너리 아티팩트의 게시가 분리되어 크로스 플랫폼 호환성을 보장합니다. 사용자 정의 `artifactName` 및 `jar` 태스크를 통해 OS 및 CPU 아키텍처 접미사가 있는 버전 파일이 생성되므로 사용자는 자신의 환경에 적합한 실행 파일을 선택할 수 있습니다.

더 보기

Mill JVM 빌드 도구: 직접 실행 가능한 어셈블리 JAR

2025-01-02

Mill JVM 빌드 도구는 `java -jar` 명령어 없이 직접 실행 가능한 어셈블리 JAR을 생성합니다. JAR 파일 앞에 쉘 스크립트를 추가하여 이를 달성합니다. 이 스크립트는 Java 런타임 환경을 호출합니다. 이 스크립트는 Unix와 Windows 시스템 모두와 호환되도록 설계되어 크로스 플랫폼 실행이 가능합니다. 이 기사에서는 ZIP 파일의 특성을 활용하여 런처 스크립트와 JAR 콘텐츠를 연결하여 매끄러운 실행을 구현하는 방법을 자세히 설명합니다. 이를 통해 Java 프로그램의 명령줄 워크플로 통합이 크게 향상됩니다.

더 보기
개발

Mill을 사용한 CI 가속화: 선택적 테스트 전략

2024-12-30

대규모 코드베이스에서 모든 테스트를 실행하는 것은 비효율적입니다. 이 글에서는 폴더 기반, 종속성 기반, 휴리스틱 기반의 세 가지 선택적 테스트 접근 방식을 살펴봅니다. 폴더 기반은 간단하지만 오류를 놓칠 수 있습니다. 종속성 기반은 포괄적이지만 과도한 테스트를 수행할 수 있습니다. 휴리스틱 기반은 사용자 지정 규칙으로 테스트 선택을 최적화하여 속도와 포괄성의 균형을 맞춥니다. Mill 빌드 도구는 종속성 기반 선택적 테스트를 기본적으로 지원하여 CI 효율성을 크게 향상시킵니다. 그러나 휴리스틱 방법과 결합하면 속도와 테스트 적용 범위의 균형을 더욱 최적화할 수 있습니다.

더 보기

모노레포 빌드 도구: 코드베이스 확장

2024-12-20

기존 빌드 도구는 대규모 코드베이스(100~10,000명의 활동 개발자)에서 어려움을 겪습니다. Bazel이나 Mill과 같은 모노레포 빌드 도구는 여러 언어, 사용자 정의 빌드 작업, 자동 캐싱 및 병렬 처리, 원격 캐싱 및 실행을 지원하여 빌드 속도와 효율성을 크게 향상시킵니다. 또한 종속성 기반 테스트 선택 및 빌드 작업 샌드박싱 기능을 통해 테스트 시간과 비결정성을 줄입니다. 이러한 기능은 소규모 프로젝트에서는 불필요해 보일 수 있지만, 대규모 프로젝트의 대규모 협업과 지속적 통합에는 필수적이며, 빌드 시간이 병목 현상이 되는 것을 방지합니다.

더 보기