Chapter 3-4 Base62 디버깅과 디버깅 스킬의 중요성

2025. 5. 27. 10:05·Fastapi

🧪 Base62 디버깅과 디버깅 스킬의 중요성

1. 🎯 Base62 디버깅 개요

  • Base62는 고유한 식별자를 짧고 URL-safe하게 만들기 위한 인코딩 방식입니다.
  • 디버깅을 통해 그 내부 동작 원리를 확인하고 이해도를 높일 수 있습니다.

2. ⚠️ PyCharm 디버깅 에러 주의

AttributeError: '_MainThread' object has no attribute 'isAlive'. Did you mean: 'is_alive'?
  • PyCharm에서 Python 3.13 이상을 사용할 경우 발생 가능
  • 해결법: PyCharm 최신 버전으로 업데이트 필요
  • 참고: https://youtrack.jetbrains.com/issue/PY-73047

3. 💡 디버깅의 중요성

"개발자는 코딩보다 디버깅이다" — 김포프

  • 디버깅을 통해 코드를 논리적으로 추론하고 설계까지 이해할 수 있습니다.
  • 디버깅을 잘하면 남의 코드도 두렵지 않고, 실력도 자연스럽게 향상됩니다.

4. 🔍 Base62 디버깅 예제 코드

import string
from typing import Final, ClassVar

class Base62:
    BASE: Final[ClassVar[str]] = string.ascii_letters + string.digits
    BASE_LEN: Final[ClassVar[int]] = len(BASE)

    @classmethod
    def encode(cls, num: int) -> str:
        if num < 0:
            raise ValueError(f"{cls}.encode() needs positive integer but you passed: {num}")

        if num == 0:
            return cls.BASE[0]

        result = []
        while num:
            num, remainder = divmod(num, cls.BASE_LEN)
            result.append(cls.BASE[remainder])
        return "".join(result)

print(Base62.encode(62))  # "ab"
print(Base62.encode(124))  # "ac"

5. 🐞 디버깅 기초 조작법 (PyCharm 기준)

  • 중단점(Breakpoint): 실행할 코드 줄 번호 클릭
  • Debug 실행: 벌레 모양 클릭
  • Step Over: 한 줄 실행
  • Step Into: 함수 내부로 진입
  • Step Out: 호출한 함수로 복귀
  • Evaluate Expression: 변수나 식의 결과 직접 확인 가능

자세한 설명: https://www.jetbrains.com/help/pycharm/stepping-through-the-program.html


6. ⚙️ Deterministic 연산이란?

  • 결정적(deterministic): 같은 입력에 대해 항상 같은 결과를 내는 연산
  • Base62는 deterministic 방식
    • ex) Base62.encode(62) -> 항상 "ab"

7. 🧬 고유 ID 생성 대안: sqids

📄 app/utils/squids.py

import random
from datetime import datetime
import sqids

sqid = sqids.Sqids()

class Squids:
    @classmethod
    def encode(cls, nums: list[int]) -> str:
        return sqid.encode(nums)

if __name__ == '__main__':
    now = datetime.now()
    print(Squids.encode([
        now.year, now.month, now.day,
        now.hour, now.minute, now.second,
        now.microsecond, random.randint(1, 9)
    ]))
  • 시간 기반 + 랜덤 수 조합 → 충분히 유일한 식별자 생성
  • URL-safe 문자로 구성됨
  • 공식 문서: https://sqids.org/ko

🧠 요약

항목 내용

Base62 URL-safe 식별자 생성용 인코딩 방식
디버깅 중요성 개발 실력의 핵심 스킬
PyCharm 팁 최신 버전 유지, Evaluate 사용
Deterministic 동일 입력 → 동일 출력
Sqids 대안 식별자 생성 방식 (시간 기반 + 랜덤)

'Fastapi' 카테고리의 다른 글

Chapter 4-1 📌 EdgeDB 소개 및 설치 가이드  (1) 2025.05.28
Chapter 3-3 고유하고 짧은 alphanumeric 식별자 만들기 – Base62 접근 방식  (0) 2025.05.27
Chapter 3-1 미팅 생성 API 스펙 만들기  (0) 2025.05.27
Chapter 2-6 Github Action 설정 및 캐싱 가이드  (0) 2025.05.23
Chapter 2-5 테스트 스크립트 작성 가이드  (0) 2025.05.23
'Fastapi' 카테고리의 다른 글
  • Chapter 4-1 📌 EdgeDB 소개 및 설치 가이드
  • Chapter 3-3 고유하고 짧은 alphanumeric 식별자 만들기 – Base62 접근 방식
  • Chapter 3-1 미팅 생성 API 스펙 만들기
  • Chapter 2-6 Github Action 설정 및 캐싱 가이드
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (757) N
      • Python (32)
      • 프로젝트 (81) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    chatgpterror
    urbantrends
    classaction
    trumpmuskclash
    btsjungkook
    RM
    hotcoffeecase
    life reflection
    homebartrend
    gpterror
    뷔
    basalcellcarcinoma
    btsreunion
    global politics
    smartphonedurability
    btscomeback
    titaniumcase
    americaparty
    newpoliticalparty
    chinanightlife
    remittance
    self-growth
    lawsuitculture
    bts
    college reunions
    youngprofessionals
    btsdischarge
    livebroadcast
    travel ban
    americanlaw
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 3-4 Base62 디버깅과 디버깅 스킬의 중요성
상단으로

티스토리툴바