GXD v0.0.0a2: 주요 업데이트 및 새로운 기능

발행: (2025년 12월 23일 오후 12:07 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

릴리스 정보

릴리스 날짜: 2025년 12월
작성자: @hejhdiss (Muhammed Shafin p)
상태: 알파 릴리스

GXD Compression Utility는 버전 0.0.0a2에서 중요한 업데이트를 받아 지능형 압축, 향상된 메타데이터 추적 및 더 나은 사용자 경험을 도입했습니다. 이번 릴리스는 GXD를 단순한 블록‑기반 압축기에서 스마트하고 적응형 아카이브 도구로 변모시킵니다.

버전 관리에 대한 참고 – 기능 세트가 크게 확대되었음에도 불구하고, 소프트웨어가 아직 알파 단계이므로 버전 번호는 0.0.0a2 그대로 유지됩니다. 이 단계에서는 각 업데이트마다 버전 번호가 증가하지 않을 수 있습니다. 알파 지정은 API/포맷이 아직 변경될 수 있음을 의미합니다.

Source:

새 기능: 자동 모드 (--algo auto)

가장 중요한 추가 기능은 자동 모드이며, 각 블록에 대해 최적의 알고리즘을 자동으로 선택합니다.

작동 방식

  1. 각 블록 분석

    • 샤논 엔트로피 (0.0 – 8.0 스케일)
    • 제로 바이트 밀도
    • 고유 바이트 비율
  2. 결정 로직이 블록당 최적의 알고리즘을 판단합니다.

  3. 선택된 알고리즘은 블록 메타데이터에 저장됩니다.

결정 로직

조건선택된 알고리즘
엔트로피 > 7.9none (이미 압축/암호화됨)
제로 > 40 % 또는 엔트로피 …아래 코드 스니펫을 참고
def calculate_entropy(data: bytes) -> float:
    """Return Shannon entropy of *data* (0.0‑8.0)."""
    if not data:
        return 0.0
    counter = collections.Counter(data)
    entropy = 0.0
    for count in counter.values():
        p_x = count / len(data)
        entropy -= p_x * math.log2(p_x)
    return entropy

스마트 셀렉터 클래스

class GXDSmartSelector:
    @staticmethod
    def predict(data: bytes) -> str:
        """Predict the best compression algorithm for *data*."""
        entropy = calculate_entropy(data)
        metrics = calculate_metrics(data)          # e.g., zero_ratio, unique_ratio
        zeros = metrics['zero_ratio']

        if entropy > 7.9:
            return "none"
        if zeros > 0.4 or entropy:  # Note: Your existing `.gxd` archives work perfectly with the new version.
            # (additional logic would go here)
            pass

새로운 기능 활용

# Auto mode on a new compression
python gxd.py compress data.bin data.gxd --algo auto

# Inspect an existing archive
python gxd.py info old_archive.gxd

# Re‑compress for attribute preservation
# 1️⃣ Decompress the old archive
python gxd.py decompress old.gxd -o data.bin

# 2️⃣ Re‑compress with the new version (captures attributes)
python gxd.py compress data.bin new.gxd

필요한 라이브러리

pip install zstandard lz4 brotli

필요한 라이브러리가 누락된 경우, auto 모드가 명확한 오류 메시지와 함께 실패합니다.

플랫폼‑별 참고 사항

  • 전체 지원: Unix/Linux
  • 부분 지원: Windows (권한이 복원되지 않을 수 있음)
  • 크로스‑플랫폼 아카이브: 일부 속성이 손실될 수 있음

필요한 권한

  • uid/gid 복원에는 적절한 시스템 권한이 필요합니다.
  • 권한이 충분하지 않을 경우 도구가 경고와 함께 정상적으로 대체 동작합니다.

면책 조항 및 향후 아이디어

작성자는 정기적인 업데이트를 보장하지 않습니다. 다음은 구현될 수도, 안 될 수도 있는 잠재적 아이디어입니다:

  • 머신러닝 기반 알고리즘 선택
  • 더 나은 압축 비율을 위한 압축 사전
  • 다중 볼륨 아카이브 지원
  • 아카이브 검사를 위한 GUI
  • 사용자 정의 알고리즘을 위한 플러그인 시스템
  • 차등/증분 압축
  • 블록 수준 중복 제거(중복 블록 감지)
  • 콘텐츠 인식 중복 제거(해시 기반 청크 식별)

이러한 기능에 대한 커뮤니티 기여를 환영합니다!

권장 사항

auto를 사용할 때…auto를 건너뛸 때…
다양한 파일 유형을 함께 압축할 때모든 데이터가 동일한 유형일 때 (예: 텍스트 로그만, 이미지만)
데이터 특성이 불확실할 때속도가 절대적으로 중요할 때
최대 압축 효율이 목표일 때프로파일링을 통해 최적 알고리즘을 알고 있을 때
데이터에 사전 압축된 내용이 포함될 때매우 작은 파일을 다룰 때 (예: /dev/null)
# Quick metadata verification
python gxd.py info data.gxd

# Extract a sample for testing
python gxd.py seek data.gxd --offset 0 --length 1mb --text

현재 버전

0.0.0a2 (Alpha)

설치

# Clone the repository
git clone https://github.com/hejhdiss/gxd.git
cd gxd

# Install dependencies
pip install zstandard lz4 brotli tqdm

# Verify installation
python gxd.py --version

빠른 시작

# Try auto mode
python gxd.py compress yourfile.bin output.gxd --algo auto

# Inspect results
python gxd.py info output.gxd

# Decompress
python gxd.py decompress output.gxd -o restored.bin

기여 및 지원

  • 버그를 발견했나요? GitHub에 이슈를 열어 주세요.
  • 아이디어가 있나요? Discussions에 공유해 주세요.
  • 기여하고 싶나요? 풀 리퀘스트를 환영합니다.
  • 질문이 있나요? 문서를 확인하거나 커뮤니티에 물어보세요.

기억하세요: 이것은 있는 그대로 제공되는 알파 릴리스입니다. 업데이트는 정기적으로 제공될 수도, 안 될 수도 있지만, 커뮤니티 기여가 향후 개발을 이끌 수 있습니다.

Back to Blog

관련 글

더 보기 »

압축

번역할 텍스트를 제공해 주시겠어요?