반응형 분류 전체보기266 Preload + On-demand + Fallback 구조 (캐싱전략에 관하여, 용어설명) 메모 Preload + On-demand + Fallback 구조란? 이 세 가지는 캐시(다운로드) 전략을 단계적으로 설명하는 개념. 각각 하나하나씩만 사용해도 괜찮다. 필요시 중복으로 도입해서 조립하시라. 도입배경: 프로젝트마다 다르겠지만, mp3를 다운로드 받아 실행하는 프로그램을 만들고 있는데, mp3파일을 구글드라이브에서 다운로드 받는것이 매번 대기시간처럼 불편하게 느껴짐. 단, 캐싱구조 없이 즉지 다운로드 방식으로 먼저 전체 구조를 검토한 뒤에 캐싱전략을 도입할 단계가 되어서 고민하게 됨. 본인은 전체 구조를 완성 한 뒤에 세부구조나 확장을 하는 스타일이라서 그렇게 된 듯. 캐싱구조는 익숙하지가 않아서 보통 나는 위 세가지중 단일 전략만을 주로 사용해왔었는데, 이유는 내가 프로그램을 실행하고 .. 2025. 3. 12. python - API 연동할 때, 인증코드를 모듈마다 넣는 이유..가 있었다.. 무식해서 그런게 아니라규..ㅠ 그냥, 개발하다보면 전체적인 흐름을 우선시하다가 위와 같은 인증코드랄까, 라이브에서는 중복으로 넣으면 안될것 같은 코드들을 모듈마다 넣는 나 자신을 발견할 때가 있다. 누가 물어본다면 속 시원하게 멋지게.. 설명할 자신은 없었지만 일단 이게 괜찮은 것 같기도하고(나중에 리펙토링 하면 되니까, 난 알고있으니까 그대로 놔두면 안된다는 것을..!!) 여튼 걍 궁금해서 gpt에게 물어봤따... 그 녀석의 답은.. 시원했다. (일반적인 케이스에서의 관점) 위 코드가 중복으로 들어가는 이유1. 각 모듈이 독립적으로 사용할 수 있도록 하기 위해 보통 drive_service를 자체 선언합니다.예: drive_audio_loader.py 단독 테스트도 가능하게.간단한 스크립트 구조에서는 종종 코드 복사를 우선2. 작.. 2025. 3. 11. 구글드라이브에서 API로 파일 탐색을 할 때, 어떻게 하는게 더 효율적일까? feat ChatGPT 문제: 구글시트에서 구글드라이브의 경로가 적힌 문자열을 읽어서 구글드라이브의 폴더를 찾고, 하위폴더 포함하여 mp3파일을 모두 검색한 뒤 랜덤으로 하나를 선택해야하는 조건. 이 동작은 경로를 바꿔가면서 계속 수행해야함. 즉 단일성 이벤트가 아닌 것을 고려. 스프레드시트에 있는 경로: '공유문서함/share/music/ost' 두가지 탐색 방법이 GPT와 대화해본 결과 ..나왔다. [ Google Drive 경로 문자열 기반 탐색]첫번째는 경로의 가장 하위( 위 예제에서 ost)의 폴더 아이디를 찾아 그 아이디로부터 하위 폴더를 탐색함. (*폴더 아이디는 주소표시줄에 있긴한데, API로도 얻을 수 있더라) 동작:share 폴더 검색 → ID 획득해당 ID 기준으로 music 폴더 검색 → ID 획득.. 2025. 3. 11. Pygame에서 나오는 모든 소리를 하나의 파일(wav)로 저장하는 방법 여러 소리를 동시에 나오게 하려다보니 pygame.mixer.Sound() 를 사용해야하고 , 다시 그 소리들을 하나의 파일로 저장해야할 때. 오디오 출력을 캡처하여 파일로 저장해야한다고 함. 오디오 출력을 캡처하기위한 sou nddevice와 numpy를 활용해서 시스템 오디오 출력을 녹음해보자. 필요한 라이브러리pip install sounddevice numpy scipy pygame 예제코드 (단일채널을 사용하는 경우)import pygameimport sounddevice as sdimport numpy as npimport scipy.io.wavfile as wavimport threadingimport time# 녹음 설정SAMPLE_RATE = 44100 # 표준 샘플링 레이트 .. 2025. 3. 10. threading.Event() 객체의 활용 예제 및 백그라운드 실행 정리 1. threading.Event() 객체의 사용 🎯 threading.Event()란?threading.Event()는 스레드 간의 동기화를 도와주는 객체 스레드가 특정 이벤트(신호)를 기다리도록 만들고, 다른 스레드가 신호를 보내서 진행을 제어할 수 있음.🎯 threading.Event()의 주요 기능event.set() → 이벤트 신호를 발생(켜기)event.clear() → 이벤트 신호를 리셋(끄기)event.wait() → 이벤트가 발생할 때까지 기다림🎯 threading.Event()를 사용할 때의 장점✅ 스레드 간 동기화✅ 불필요한 CPU 사용 방지 (while 루프 대신 wait() 사용)✅ 메인 프로세스가 특정 작업이 끝날 때까지 기다릴 수 있음 하나의 파일에서 여러 스레드를 컨.. 2025. 3. 9. FFmpeg 다운로드 및 설치 🚀 순서 FFmpeg 설치 & 환경 변수 추가ffplay -version으로 정상 작동 확인ffplay를 사용하여 직접 재생 테스트Python 코드에서 subprocess로 실행FFmpeg 없이 pygame 또는 pydub으로 재생도 가능 ✅ 1) FFmpeg 다운로드 및 설치FFmpeg 공식 웹사이트로 이동Windows용 FFmpeg 다운로드:Windows → Get packages & executable files 클릭Gyan.dev 또는 BtbN 사이트로 이동하여 "ffmpeg-release-full.zip" 다운로드다운로드한 .zip 파일을 압축 해제예: C:\ffmpeg 경로에 압축을 풀기✅ 2) 시스템 환경 변수에 FFmpeg 경로 추가FFmpeg가 어디서든 실행되도록 하기 위해 환경 변수를.. 2025. 3. 8. Google Drive에 있는 파일을 다운로드하는 세가지 방법 pip install google-api-python-client google-auth google-auth-oauthlib google-auth-httplib2요즘 하는 프로젝트에서 배운 3가지 다운로드 방법을 정리한다. 1. requests 로 다운로드2. gdown을 이용해서 다운로드3. Google drive api를 이용해서 다운로드 나는 mp3파일을 다운로드 해야했으므로, 파일이 중간에 깨지면 (스트림이 중단되면) 온전한 파일로 인식하지 못해 문제가 생겼다. 그래서 1->2>을 거쳐 3번 방법을 시도해보기에 이르렀다. 물론 wget 도 시도했지만 역시나 실패.. 1. requests먼저 requests로 다운로드 하는 방법이다. 필자는 mp3파일이라서 사용하지 못했지만 일반적인 파일에는 적용.. 2025. 3. 7. Vscode or Jupyter notebook conda 환경에서 실행되도록 설정하기 vscode 에서 conda환경에 구축된 프로젝트 코드를 실행할 때, 위 처럼 conda 환경에서 실행이 되지 않을때, ... -_- 🔹 확인 방법 (conda 환경에서 실행되도록 설정)✅ 1. 현재 사용 중인 conda 환경 확인아래 명령어를 실행하여 현재 어떤 conda 환경이 활성화되어 있는지 확인 bash conda info --envs * 표시된 것이 현재 활성화된 환경임, 만약 다른 환경을 사용하려면 conda activate [환경명]✅ 2. pygame을 Conda 환경에 설치먼저, conda 환경을 활성화하고 pygame을 설치해야 합니다.bash conda activate [환경명] 환경이 활성화 되었다면, 위 그림처럼 (좌측) 괄호안에 환경명이 표시됩니다.✅ 3. [터미널에서 ].. 2025. 3. 6. 이전 1 2 3 4 5 6 ··· 34 다음 반응형