디지털 가든
doubao-nomark 순성기: 한 개의 워터마크 제거 도구의 경량의 진상
모든 성이 중병을 둘 필요는 없다. 어떤 도구의 우아함은 바로 그 가벼움에 있다——이번 측량한 두바오의 워터마크 제거 도구는, 여섯 개의 순수 Python 패키지와 백여러 MB의 메모리로, 「충분하면 좋다」는 공학의 철학을 말해준다.
1. Linux에서 도는가: 일등 시민
README의 설치 설명에는 source .venv/bin/activate # Linux/Mac라고 명확히 쓰여 있다——Linux는 간신히 지원이 아니라 일등 시민이다. 삼중의 검증이 숨은 플랫폼 제한을 배제했다——requirements.txt는 여섯 개의 순수 Python 패키지(cryptography, fastapi, uvicorn[standard], httpx, pydantic, pydantic-settings)뿐이고, 모두 Linux의 wheel이 있고 Windows 전속의 의존은 일절 없음; 저장소에는 .dll/.exe 같은 플랫폼 전속 바이너리는 없고, 모두 Python 소스와 웹 확장; Dockerfile은 python:3.11-slim(Debian Linux)을 기초로 하고, Docker Hub에는 만들어진 이미지도 있다——그 자신이 컨테이너화 배포의 산물이다. 세 개의 돌아가는 법을任选——uv(공식 권장), pip, Docker, Python 3.10 이상으로, 기동 후 8000 포트를 리슨하고, 브라우저 확장(Chrome MV3/Edge/Tampermonkey)은 OS와 무관.
2. 점유가 높은가: 하한 없는 가벼움
사용자의 두 번째 물음은 코드 층의 검증을 이끌었다. 결론은 매우 경량——본질은 작은 FastAPI 비동기 웹 API 하나로, 무거운 리소스 컴포넌트에는 일절 닿지 않는다. 전부의 일은 세 개뿐——httpx로 비동기적으로 공유 페이지의 HTML을 가져가고, 정규 표현식으로 매입 JSON을 추출하고, 해석해 이미지·동영상의 오리지널 URL을 내 반환한다——진짜 미디어 파일은 브라우저 확장이 두바오 CDN에서 직접 끌어, 이 서비스를 통하지 않으므로, 메모리는 파일이 커지는 것으로 폭등하지 않는다. 브라우저 엔진은 없음(많은 동종의 워터마크 제거 도구는 Chromium을 돌린다, 그것이 메모리를 먹는 본명), PIL/OpenCV/ffmpeg 같은 이미지·동영상 처리 라이브러리도 없음, 복호는 URL 토큰 레벨의 조작만(video_crypto.py는 cryptography로 하나의 동영상 주소의 토큰을 풀어, 단일 요청은 밀리초급), 캐시 없음, 서브프로세스 없음, 상주 스레드 없음. 규모의 참고——단일 워커의 uvicorn 프로세스는 아이들 시 RSS 약 백에서 이백 MB(Python 본체와 라이브러리의 임포트 오버헤드), 안정运行은 요청량과 함께显著하게 늘지 않는다; CPU는 아이들 시 거의 제로; 디스크는 수 MB의 코드로 로그의 팽창 없음. 이것은 한 코어 한 G의 염가 VPS나 라즈베리 파이에서도 돌아간다는 것을 의미하고, Docker 배포에서는 아주 낮은 memory limit(예를 들어 256m)을 설정할 수 있고, 병행에 대응하려면 워커를 조금 더 세워 수평 확장하면 된다.
실제 좌표
- 프로젝트: ihmily/doubao-nomark, FastAPI + 여섯 개의 순수 Python 의존(cryptography/fastapi/uvicorn/httpx/pydantic/pydantic-settings)
- Linux 지원: README가 uv 설치에 Linux/Mac의 절차를 포함함을 명시; .dll/.exe 같은 플랫폼 바이너리 없음; Dockerfile은 python:3.11-slim 기반 + Docker Hub의 만들어진 이미지 ihmily/doubao-nomark; Python 3.10 이상, 8000 포트, 크로스 플랫폼의 브라우저 확장
- 경량의 진상: httpx가 공유 페이지 HTML을 취득+정규 표현식으로 매입 JSON을 추출, 미디어 파일은 브라우저 확장이 CDN에서 직접 끌어 서비스를 통하지 않음; Playwright/Selenium 없음, PIL/OpenCV/ffmpeg 없음; video_crypto.py는 URL 토큰 레벨의 복호만; 단일 워커는 아이들 시 RSS 백에서 이백 MB, CPU는 거의 제로, 디스크는 수 MB
- 배포의 결론: 한 코어 한 G VPS/라즈베리 파이에서 돌아감; Docker —memory=256m이可行; 다중 워커의 수평 확장에 병목 없음
댓글