분류 전체보기 썸네일형 리스트형 파이썬만으로 프론트엔드 만들기: 스트림릿(Streamlit) 도입 고군분투기 파이썬만으로 프론트엔드 만들기: 스트림릿(Streamlit) 도입 고군분투기파이썬 스크립트를 웹으로 쉽게 변환할 수 있다는 스트림릿의 장점 이면에는 상태 관리라는 독특한 패러다임이 숨어 있었다. 이를 이해하지 못해 겪은 무한 새로고침의 늪과 해결 과정을 정리한다.위 화면은 스트림릿으로 구현한 초기 웹 애플리케이션에서 상호작용 시 값이 초기화되는 현상을 캡처한 것이다. 버튼을 누를 때마다 화면이 초기화되는 이 오류는, 스트림릿의 렌더링 구조를 훌륭하게 이해하기 전까지 나를 끊임없이 괴롭혔다.터미널의 벽을 허물기 위한 선택최근 사내 업무 효율화를 위해 데이터 처리용 파이썬 스크립트를 여러 개 작성했다. 터미널 환경에 익숙한 개발자에게는 그저 명령어 한 줄이면 끝날 일이었지만, 비개발 직군 팀원들에게 까만 콘.. 더보기 LLM과 Pydantic: 프롬프트 대신 코드 레벨에서 JSON 에러 잡기 LLM과 Pydantic: 프롬프트 대신 코드 레벨에서 JSON 에러 잡기LLM(대규모 언어 모델)에게 JSON 형태로 출력을 요구할 때 흔히 겪는 파싱 에러와 이를 해결하기 위한 과정이다. 단순히 프롬프트를 튜닝하는 것을 넘어, 코드 레벨에서 구조적인 검증을 통해 시스템의 안정성을 높여야 한다는 깨달음을 얻었다.위 화면은 LLM에게 프롬프트로 엄격하게 형식을 지시했음에도 불구하고 잘못된 응답을 반환하여 시스템 에러가 발생한 상황을 보여주는 예시다. LLM의 자유도를 통제하지 못하면 파이프라인 전체가 무너질 수 있음을 보여준다.프롬프트 한 줄이면 JSON이 예쁘게 나올 줄 알았다최근 인공지능을 활용해 다양한 비정형 텍스트 데이터를 분석하고, 이를 서비스 데이터베이스에 맞게 구조화하는 파이프라인 구축을 시.. 더보기 파이썬 MoviePy 영상 자동 렌더링 시도와 메모리 누수 극복기 파이썬 MoviePy 영상 자동 렌더링 시도와 메모리 누수 극복기사업을 운영하다 보면 필연적으로 '콘텐츠 생산의 늪'에 빠지는 순간이 옵니다. 특히 최근 마케팅 트렌드에서는 고객의 이름이나 특정 정보만 살짝 바꾼 '맞춤형 숏폼 영상'이 대량으로 필요했습니다.처음에는 영상 편집 프로그램을 켜서 텍스트 레이어를 일일이 수정하고 렌더링 버튼을 누르는 수작업을 반복했습니다. 하지만 작업량이 10개, 20개를 넘어가자 확신이 들었습니다. "이건 인간이 할 짓이 아니다."결국 저는 이 지루한 반복 작업을 코드로 자동화하기로 결심했습니다. 파이썬(Python) 생태계에서 영상 처리로 유명한 MoviePy 라이브러리를 무기 삼아, 나만의 영상 생성 파이프라인 구축에 나섰습니다.1. 코드 몇 줄의 마법, 그리고 섣부른 .. 더보기 데이터 보안과 API 비용 사이에서의 타협점: 로컬 LLM Ollama 도입기 데이터 보안과 API 비용 사이에서의 타협점: 로컬 LLM Ollama 도입기외부 API 대신 내 서버에서 직접 LLM을 돌리겠다는 야심 찬 계획이 있었다. 보안도 지키고 비용도 아끼는 두 마리 토끼를 한 번에 잡으려 했지만, 실제 현실은 달랐다. 올라마(Ollama) 도입 과정에서 마주친 VRAM 한계와 속도 충격, 그리고 결국 찾아낸 실용적 타협점을 기록한다.위 화면은 70B 모델 구동 시 CPU 사용률이 최대치로를 찍으며 시스템이 응답 불능 상태에 빠진 순간의 작업 관리자 캡처다. GPU VRAM이 모자라 연산이 CPU로 넘어가는 순간 서버는 마비 직전까지 몰렸다.[배경] 보안과 비용, 두 마리 토끼를 잡고 싶었습니다회사 내부에서 AI의 활용 빈도가 늘어날수록, 자연스럽게 두 가지 큰 벽에 부딪혔습.. 더보기 텔레그램 봇으로 일일 보고 시스템을 만들며 겪은 API의 매운맛 텔레그램 봇으로 일일 보고 시스템을 만들며 겪은 API의 매운맛텔레그램 봇 API를 활용해 매일 아침 자동으로 서비스 현황을 보고받는 시스템을 구축하려 했다. 그런데 메시지가 오지 않거나, 5번씩 중복으로 쏟아지거나, 텍스트가 외계어로 깨지는 문제가 연속으로 터졌다. 텔레그램 API의 3가지 숨겨진 함정을 직접 뚫어본 기록이다.이러한 문제들을 해결하기 위해 처음 작성했던 파이썬 코드의 일부를 살펴보면 그 원인을 짐작할 수 있다.위 화면은 텔레그램 봇이 서비스 일일 현황 데이터를 전송하는 코드 작업 화면이다. 이 코드는 완성 직후 서버에 올렸을 때 메시지가 오지 않거나, 반대로 동일한 메시지가 연달아 5번 쏟아지는 예상치 못한 문제를 일으켰다. 보기엔 단순한 API 연동 코드지만, 메시지 길이 제한·Rat.. 더보기 크롬 드라이버 버전 오류와의 전쟁, 웹드라이버 매니저로 마침표를 찍다 크롬 드라이버 버전 오류와의 전쟁, 웹드라이버 매니저로 마침표를 찍다크롬 브라우저가 자동 업데이트되면서 셀레늄 자동화 봇이 갑자기 먹통이 된 경험을 기록한다. SessionNotCreatedException 에러가 반복되는 이유를 찾는 데만 이틀이 걸렸고, 해결책은 단 한 줄의 라이브러리 교체였다.위 화면은 크롬 브라우저 자동 업데이트 이후 셀레늄 스크립트를 실행한 순간의 터미널 로그다. SessionNotCreatedException과 함께 "This version of ChromeDriver only supports Chrome version..."이라는 메시지가 붉게 도배된 화면은, 지금껏 정상 작동하던 자동화 봇이 하루아침에 멈췄다는 것을 의미한다. 하드코딩된 드라이버 파일과 업데이트된 브라우저 .. 더보기 캡차(Captcha)와 보안 시스템에 가로막힌 셀레늄 우회 작전 [에러발생] 캡차(Captcha)와 보안 시스템에 가로막힌 셀레늄 우회 작전사내 데이터 수집 자동화 프로젝트에서 셀레늄(Selenium)이 보안 시스템에 차단당한 실제 경험을 공유한다. 로컬 환경에서는 정상 작동하던 스크립트가 서버 배포 후 캡챠(CAPTCHA)와 Access Denied 벽에 부딪힌 과정, 그리고 기술적 우회 대신 '정공법'을 선택한 판단 기록이다.위 화면은 클라우드 서버에 배포된 셀레늄 스크립트가 실행되던 중 차단된 순간의 브라우저 캡처다. 웹사이트는 봇 접근을 감지하고 캡챠 화면을 띄웠으며, 스크립트는 이를 뚫지 못하고 빈 결괏값만 반환했다. 이 화면 하나가 며칠간의 디버깅을 시작하게 만든 단서였다.왜 시작했나: 수작업의 늪에서 벗어나기 위한 결단사내 데이터 수집 프로젝트를 진행하던.. 더보기 티스토리 API의 한계를 깨부수는 셀레늄 자동 포스팅 파이썬 코드 구현기 지난 글에서는 수동 업로드 노동에서 해방되기 위해 셀레늄(Selenium) 브라우저 자동화와 공식 API를 결합한 멀티채널 자동 업로드 시스템의 설계 사상을 소개해 드렸습니다. 매일 아침 단 한 번의 마우스 더블 클릭만으로 티스토리와 유튜브 쇼츠까지 무인으로 등록되는 시스템을 꿈꾸며, 저는 곧장 신이 나서 파이썬 코딩을 시작했습니다.하지만 실제 코드를 구현하기 시작하자마자 온갖 버그와 장벽에 부딪혔습니다.단순히 크롬 드라이버를 띄워 로그인 버튼을 누르고 본문 입력창에 글씨를 쓰게(send_keys) 하면 될 줄 아는데, 티스토리 에디터의 독특한 웹 구조 때문에 텍스트가 엉뚱한 곳에 적히거나 영문/한글이 뒤섞여 깨지는 현상이 발생했습니다. 이번 글은 셀레늄 자동화 스크립트를 구현하면서 겪었던 세 가지 기술.. 더보기 이전 1 2 3 4 5 다음