2025-09-15 13:51:43 +09:00
2025-09-15 13:51:43 +09:00
2025-09-15 13:51:43 +09:00
2025-09-15 13:51:43 +09:00
2025-09-15 13:51:43 +09:00

Secure Tools - Fyne 기반 Go GUI 애플리케이션

이 프로젝트는 Go 언어와 Fyne GUI 라이브러리를 사용하여 개발된 간단한 보안 유틸리티 도구다. 사용자가 강력한 비밀번호를 생성하고, 다양한 형식으로 텍스트를 인코딩/디코딩할 수 있는 직관적인 인터페이스를 제공한다.

주요 기능

1. 강력한 비밀번호 생성

  • 길이 지정: 사용자가 원하는 비밀번호 길이를 직접 입력할 수 있다. (최소 5자, 최대 64자)
  • 보안 규칙 적용: 생성되는 모든 비밀번호는 아래 규칙을 따른다.
    • 최소 1개 이상의 특수문자 (!@#$%&*)
    • 최소 1개 이상의 숫자
    • 최소 2개 이상의 대문자
    • 첫 글자는 반드시 알파벳으로 시작
  • 결과 처리:
    • 생성된 비밀번호를 클립보드로 쉽게 복사할 수 있다.
    • 생성된 비밀번호를 텍스트 파일(.txt, .log 등)로 저장하는 기능을 제공한다.

2. 다양한 인코딩 / 디코딩

  • 지원 형식:
    • Base64
    • Hex
    • URL
    • ROT13
  • 편의 기능:
    • 인코딩 또는 디코딩 작업을 선택할 수 있다.
    • 방금 생성한 비밀번호를 인코딩 입력값으로 바로 가져올 수 있다.
    • 처리된 결과를 클립보드로 복사할 수 있다.

3. 사용자 경험(UX)

  • 어두운 테마(Dark Theme)를 기본으로 적용하여 눈의 피로를 줄였다.
  • 하단 알림 메시지를 통해 작업 결과를 사용자에게 명확히 전달한다.
  • 파일 저장 시 별도의 팝업 창을 통해 폴더와 파일명을 직관적으로 설정할 수 있다.
  • 예기치 않은 오류 발생 시 프로그램이 강제 종료되지 않도록 패닉 복구(Panic Recover) 로직을 포함했다.

사용된 기술 및 라이브러리

  • 언어: Go
  • GUI 프레임워크: fyne.io/fyne/v2
  • 주요 의존성:
    • fyne.io/fyne/v2: 핵심 GUI 툴킷
    • github.com/go-gl/glfw: Fyne의 데스크톱 백엔드 (OpenGL 컨텍스트 및 창 관리)
    • golang.org/x/image, golang.org/x/text: 이미지 및 텍스트 렌더링 지원

빌드 및 실행

사전 준비 사항

  1. Go 설치: 시스템에 Go 언어 (버전 1.18 이상 권장)가 설치되어 있어야 한다.

  2. Fyne 시스템 의존성 설치: Fyne은 GUI 렌더링을 위해 C 컴파일러(GCC) 및 그래픽 라이브러리가 필요하다. 아래 Fyne 공식 문서를 참고하여 운영체제에 맞는 의존성을 설치한다.

    Linux (Debian/Ubuntu 기준):

    sudo apt-get install gcc libgl1-mesa-dev xorg-dev
    

    Windows:

    • TDM-GCC 또는 MSYS2/MinGW-w64와 같은 GCC 컴파일러를 설치하고 PATH에 등록해야 한다.
  3. Go 모듈 다운로드: 프로젝트 루트 디렉토리에서 아래 명령을 실행하여 필요한 패키지를 다운로드한다.

    go mod tidy
    

1. 일반 빌드

프로젝트 루트 디렉토리에서 다음 명령을 실행하면 현재 운영체제에 맞는 실행 파일이 생성된다.

go build
  • Windows: random.exe (프로젝트 폴더명에 따라 다를 수 있음)
  • macOS/Linux: random

2. 저용량 최적화 빌드 (릴리스용)

Go로 빌드된 실행 파일은 디버깅 정보 등을 포함하여 용량이 다소 클 수 있다. 아래 방법으로 파일 크기를 크게 줄일 수 있다.

방법 1: Go 빌드 옵션 사용

ldflags를 사용하여 디버깅 심볼 정보와 DWARF 정보를 제거한다. 이 방법만으로도 파일 크기를 50% 이상 줄일 수 있다.

go build -ldflags="-s -w" .
  • -s: 디버깅 심볼 테이블 제거
  • -w: DWARF 디버깅 정보 제거

방법 2: UPX로 실행 파일 압축 (추가 최적화)

UPX(Ultimate Packer for eXecutables)는 실행 파일을 압축하는 도구다. 위 ldflags 옵션으로 빌드한 파일에 UPX를 적용하면 용량을 극적으로 줄일 수 있다.

  1. UPX 설치

    • UPX 공식 홈페이지에서 다운로드하거나, 패키지 매니저로 설치한다.
    • 예: sudo apt-get install upx-ucl (Ubuntu), brew install upx (macOS)
  2. 빌드 및 압축 실행

    • 먼저 ldflags 옵션으로 빌드한다.
      go build -ldflags="-s -w" -o secure-tools .
      
    • 생성된 실행 파일(secure-tools)에 UPX를 적용한다.
      upx secure-tools
      

이 두 가지 방법을 함께 사용하면 원본 빌드 파일 대비 70-80% 이상 용량을 절감하여 배포하기 좋은 저용량 실행 파일을 만들 수 있다.

코드 구조 및 특징

  • 단일 파일 구조: 모든 로직이 random.go 파일 하나에 포함되어 있어 코드를 이해하기 쉽다.
  • UI 헬퍼 함수: createEntryWithBackground와 같은 함수를 통해 반복적인 UI 컴포넌트 생성을 표준화하고 코드 중복을 줄였다.
  • 모달 팝업 구현: 파일 저장 기능은 Fyne의 app.NewWindow()를 사용하여 모달(modal) 형태의 팝업 창으로 구현되었다. 이는 사용자 입력을 가이드하고 메인 창과의 상호작용을 일시적으로 차단하는 효과적인 방법이다.
  • 상태 관리: currentPassword와 같은 전역 변수를 사용하여 UI 컴포넌트 간의 상태를 간단하게 공유한다.
Description
No description provided
Readme 42 KiB
Languages
Go 100%