블로그

Go Hard

[파이썬] 데이터 시각화로 풀어보는 영화 '호프'의 손익분기점(BEP) 알고리즘

1. 도입부영화 한 편이 개봉했을 때 "손익분기점이 몇 만 명이다"라는 기사를 자주 보게 됩니다. 하지만 티켓값 11,000원에서 극장과 배급사가 나눠 가지는 정산 공식을 직접 코드로 구현해 본 적은 많지 않으실 텐데요.파이썬의 대표적인 웹 프레임워크인 Streamlit과 시각화 라이브러리 Plotly를 활용해 누구나 쉽게 이해할 수 있는 실시간 정산 시뮬레이터를 만들어 보았습니다.2. 핵심 코드가독성을 위해 핵심 흐름만 요약했으며, 전체 예외 처리 및 상세 코드는 깃허브를 참고해 주세요.Pythonimport streamlit as st # 외부 연동 예외 처리 (안정적인 서비스 구동) try: from tracker_hub import log_app_usage log_app_usage("movie_bep_calculator", "inflearn_view") except Exception: pass st.title("🎬 나만의 영화 BEP 계산기") # 1. 수치 입력받기 net_cost = st.number_input("순제작비 (억원)", value=500) pa_cost = st.number_input("마케팅비 (억원)", value=100) pre_sales = st.number_input("선판매/OTT 수입 (억원)", value=300) # 2. 정산 공식 계산 net_budget = (net_cost + pa_cost) - pre_sales effective_ticket_price = 11000 * 0.87 * 0.5 # 세금 공제 후 5:5 정산 bep_audience = (net_budget * 100000000) / effective_ticket_price / 10000 # 3. 결과 출력 st.subheader(f"💡 필요 관객수: 약 {round(bep_audience, 1)}만 명") 3. 명령어 친절한 해부title 및 subheader: 웹 페이지의 타이틀과 섹션 제목을 직관적인 마크다운 크기로 출력해 주는 텍스트 함수입니다.number_input: 사용자가 숫자를 키보드로 직접 치거나 버튼을 눌러 올리고 내릴 수 있게 돕는 실용적인 입력 위젯입니다.4. 토이 프로젝트 적용 팁예외 처리를 통한 서비스 안정성: 외부 서버 통신 로직을 try-except로 감싸두면, 통신 문제나 외부 API 오류가 발생하더라도 메인 웹 화면이 다운되지 않고 정상 구동되는 실무 대처법을 배울 수 있습니다.데이터 변수 시뮬레이션: 수식을 개별 변수로 나누어 놓으면 티켓 가격이나 세율 변경 시에도 코드 수정 없이 유연하게 정산 결과를 비교할 수 있습니다.5. 마무리 소통 및 영상 안내직접 구현해 보시다가 궁금한 점이나 추가하고 싶은 기능이 있다면 질문 댓글을 적극 활용해 주세요!실제 동작하는 꿀잼 시연 영상은 유튜브 '잡학다식 개발자' 채널에서 확인해 보실 수 있습니다. 💻 소스코드 및 실행 링크유튜브 영상 : https://youtu.be/02iZ8k61PYI워드프레스(뉴스): https://gohard.pe.kr/GitHub 소스코드: https://github.com/gohard-lab/movie_bep_calculator실행 URL: https://moviebepcalculator-77dp957j9snypavp86bgsb.streamlit.app/  

웹 개발영화호프손익분기점영화제작비파이썬Streamlit잡학다식개발자박스오피스PythonBoxOffice

Go Hard

딥페이크 변조 방지를 위한 Face Swap Defender 구현 및 오픈소스 공유

안녕하세요. 현업에서 다양한 자동화 및 보안 기술을 연구하고 있는 개발자입니다. 최근 생성형 AI의 급격한 발전과 함께, 타인의 얼굴 데이터를 무단으로 도용하는 페이스 스왑 및 딥페이크 문제가 심각한 디지털 보안 위협으로 대두되고 있습니다.Developing a robust defense mechanism against deepfake manipulation has become a top priority for digital security.(디지털 보안을 위해 딥페이크 변조에 대응하는 견고한 방어 메커니즘을 개발하는 것은 최우선 과제가 되었습니다.)이러한 문제를 기술적으로 예방하고, 내 얼굴 데이터를 기반으로 합성 흔적을 정밀 분석할 수 있는 파이썬 기반의 보안 도구인 Face Swap Defender 프로젝트를 진행하여 그 결과물과 소스코드를 공유하고자 합니다. 💻 핵심 소스코드 (Core Source Code)본 프로그램의 핵심 로직 중 일부를 공유합니다. 입력된 이미지 데이터의 픽셀 불연속성과 텍스처 변형을 추적하여 변조 여부를 1차적으로 필터링하는 파이썬 모듈입니다.import numpy as np def analyze_face_swap(image_data): # 이미지 픽셀 배열 변환 및 초기화 진행 pixel_array = np.array(image_data) detection_score = 0.0 # 픽셀 간의 표준편차를 활용하여 텍스처 변형 분석 수행 analysis_result = np.std(pixel_array) if analysis_result > 50.0: detection_score = 0.95 return { "status": "Warning" if detection_score > 0.8 else "Safe", "score": detection_score }📊 작동 원리 및 상세 설명For a detailed explanation of the underlying logic and system architecture, please refer to the YouTube video.(자세한 작동 원리와 시스템 아키텍처에 대한 설명은 유튜브 콘텐츠를 참고해 주시기 바랍니다.)현업 개발 관점에서 다룬 구체적인 데이터 흐름, 백엔드 연동 과정, 그리고 효율적인 탐지 알고리즘 최적화에 관한 자세한 이야기는 아래 유튜브 채널 영상에 솔직 담백하게 담았습니다. 시청자분들의 피드백을 적극 반영하여 초반의 지루한 구간을 완전히 걷어내고 핵심 위주로 타이트하게 업그레이드한 영상이니 개발 연구에 도움이 되시길 바랍니다. 🔗 오픈소스 및 실행 링크깃허브 전체 소스코드 저장소: https://github.com/gohard-lab구글 코랩 실시간 실행 링크: https://youtu.be/V0QOYNG33ro본 프로그램은 별도의 무거운 라이브러리나 환경 구축 없이 구글 클라우드 환경(Colab)에서 브라우저만으로 안전하게 구동됩니다. 사용자의 개인 컴퓨터에 그 어떤 파일도 강제로 다운로드하거나 설치하지 않으므로, 악성코드나 개인정보 유출 위협 없이 안심하고 링크를 클릭하여 테스트해 보셔도 좋습니다. 많은 관심과 기술적인 피드백 부탁드립니다. 감사합니다! 

딥페이크페이스스왑파이썬스트림릿잡학다식개발자DeepfakeFaceSwapPythonStreamlit

Go Hard

흔한 탁상공론 보안 조회 대신, 파이썬과 K-익명성으로 구현하는 패스워드 유출 확인 엔진

안녕하세요. 현업에서 백엔드 및 자동화 프로그램을 개발하고 있는 개발자입니다.최근 대규모 크리덴셜 스터핑(Credential Stuffing) 및 개인정보 유출 사고가 빈번하게 발생하면서, 내 계정의 안전 여부를 진단하는 토이 프로젝트나 서비스들이 많이 보입니다. 하지만 시중의 일부 초급 가이드나 대안들을 보면, 사용자가 입력한 비밀번호 원문이나 단순 해시값을 그대로 외부 API 서버에 HTTP 요청으로 쏘아 보내는 위험한 방식을 취하곤 합니다. 이는 전송 구간(In-Transit)에서 가로채기나 로그 유출이 발생할 수 있어 실제 프로덕션 환경에서는 절대 쓰이지 않는 '탁상공론형' 접근입니다.이에 구글이나 글로벌 빅테크 기업들이 보안 조회에 표준적으로 사용하는 'K-익명성(K-Anonymity)' 아키텍처를 도입하여, 로컬 메모리 내부에서 안전하게 대조 작업을 처리하는 진단 엔진을 파이썬으로 구현해 보았습니다. 🛠 핵심 메커니즘: SHA-1 해시 슬라이싱 (Hash Slicing)핵심은 사용자가 입력한 비밀번호의 SHA-1 해시값(40자리)을 온전하게 내보내지 않는 것입니다. 앞 5자리(Prefix)만 잘라서 외부 API 서버에 힌트로 던지면, 서버는 그 5자리로 시작하는 수만 개의 유출 서픽스(Suffix) 리스트를 덤프로 반환합니다. 진짜 대조 작업은 네트워크망이 아닌 내 컴퓨터의 로컬 메모리 안에서만 수행되므로 원천적으로 유출 가능성이 차단됩니다. 💻 핵심 구현 코드 (K-익명성 체크 로직)import hashlib import requests def check_password_leak(password: str) -> int: # 1. SHA-1 해시 변환 및 대문자 처리 sha1_hash = hashlib.sha1(password.encode("utf-8")).hexdigest().upper() # 2. K-익명성을 위한 해시 슬라이싱 (앞 5자리 Prefix, 뒤 35자리 Suffix) prefix = sha1_hash[:5] suffix = sha1_hash[5:] # 3. 앞 5자리 힌트만 외부 API 서버로 안전하게 전송 url = f"https://api.pwnedpasswords.com/range/{prefix}" response = requests.get(url, timeout=5) if response.status_code != 200: raise RuntimeError("API 서버 연동에 실패했습니다.") # 4. 서버가 반환한 수만 개의 찌꺼기 명단(Suffix:Count)을 로컬 메모리에서 대조 lines = response.text.splitlines() for line in lines: target_suffix, count = line.split(":") if target_suffix == suffix: return int(count) # 일치하는 유출 횟수 반환 return 0 # 유출 이력 없음현업 표준인 pyproject.toml 구조로 의존성을 설계하고, 사용자가 브라우저에서 편리하게 조율할 수 있도록 Streamlit 대시보드 UI를 얹어 패키징했습니다.전체 소스코드와 구체적인 UI 빌드 과정, 그리고 로컬 메모리 매칭 작업이 실제 어떤 무빙으로 안전하게 일치 판정을 내리는지 시각적으로 정리한 분석 내용은 아래 유튜브 콘텐츠를 참고해 주시면 감사하겠습니다. 👉유튜브 채널 '잡학다식 개발자' 영상 보기 : https://youtu.be/So49-1qf_ec👉GitHub 오픈소스 저장소 : https://github.com/gohard-lab/pwned_credential_checker 

파이썬개인정보유출보안프로그래밍K익명성비밀번호해킹패스워드유출조회HaveIBeenPwnedStreamlitSupabaseIT뉴스

Go Hard

Streamlit 앱 동면 방지 자동화와 실전 프로젝트 4종을 공유합니다

유튜브:https://youtu.be/eFfNM3tPuVA?si=ih03-JdCgJuft12J 안녕하세요, 파이썬 기반의 다양한 자동화 도구를 만드는 '잡학다식 개발자'입니다.무료 호스팅 서비스인 Streamlit Community Cloud를 사용하다 보면, 일정 시간 접속이 없을 때 앱이 자동으로 잠드는(Sleeping) 현상 때문에 정성껏 만든 서비스가 제때 보이지 않아 아쉬울 때가 많습니다. 이를 해결하기 위해 GitHub Actions를 활용한 'awake_alive' 워크플로우를 구축하여 공유하고자 합니다.단순히 핑(Ping)을 보내는 기능을 넘어, 현재 제가 운영 중인 중고차 데이터 분석, 자동차 유지비 시뮬레이터, 고전 게임 대시보드 등 성격이 다른 여러 앱을 한꺼번에 효율적으로 관리하도록 설계했습니다. [핵심 코드: GitHub Actions 기반 동면 방지 로직]# .github/workflows/awake_alive.yml name: Keep Streamlit Apps Awake on: schedule: - cron: '0 */12 * * *' # 12시간마다 주기적으로 실행 workflow_dispatch: # 수동 실행 가능 jobs: ping: runs-on: ubuntu-latest steps: - name: Send keep-alive pings to multiple apps run: | # 운영 중인 다양한 서비스 URL 리스트 urls=( "https://kcar-scraper.streamlit.app" "https://maintenance-battle.streamlit.app" "https://retro-game-center.streamlit.app" ) for url in "${urls[@]}"; do curl -s $url > /dev/null echo "Successfully pinged: $url" done 이번 콘텐츠에서는 위 자동화 코드뿐만 아니라, 오라클 클라우드에 직접 구축한 워드프레스 뉴스 블로그(gohard.pe.kr) 등 서로 다른 환경의 서비스들을 어떻게 연결하고 유지하는지에 대한 경험을 담았습니다.기술적인 상세 구현 방법과 전체 프로젝트 리스트는 아래 링크에서 확인하실 수 있습니다.✅ 잡학다식 개발자 블로그(Apex)https://gohard.pe.kr/🧔 내 차 유지비 관리(이건 여러분이 저의 콘텐츠를 보고 만들어 보시면 되요)https://cheiridrivingdashboard-cgpdkn...관련 영상 :    • 매월 줄줄 새는 내 차 유지비, 완벽하게 통제하는 가장 쉬운 방법  🚗 내 차 vs 네 차! 유지비 배틀 시뮬레이터현실적인 차량 유지비를 바 차트로 한눈에 비교해 보세요.https://cheiridrivingdashboard-cgpdknof3nnvufwaeyzkhr.streamlit.app/🚦 스쿨존 과태료 시뮬레이터법규 위반 시 과태료 확인 및 전국 실시간 접속 히트맵 시각화.https://schoolzonefinesim.streamlit.app/🏎 F1 Race AnalyzerF1 공식 데이터를 기반으로 한 정교한 텔레메트리 및 랩 페이스 분석.https://f1-race-analyzer-9pbapphbkgmo6rguympwshf.streamlit.app/📊 K-Car 중고차 시세 분석 대시보드네트워크 인터셉션 기술을 활용한 현업 수준의 동적 크롤링 도구.https://kcarcrawler-5ryuwuw8izgjmqphppweyv.streamlit.app/ GitHub 저장소: https://github.com/gohard-lab실행 링크: 영상 설명란의 Google Colab 및 EXE 실행 파일을 확인해 주세요. (배포 파일은 보안 검수를 마쳤으므로 안심하고 사용하셔도 됩니다.)

파이썬StreamlitGitHubActions자동화중고차크롤링유지비시뮬레이터워드프레스오라클클라우드잡학다식개발자토이프로젝트

Go Hard

[토이 프로젝트] K카 중고차 동적 크롤링 및 Streamlit 대시보드 배포

🚀 서비스 실행 링크: https://youtu.be/HnL0wOqci7Q 안녕하세요.파이썬과 데이터 분석에 관심이 많은 '잡학다식 개발자'입니다. K카 중고차 데이터를 수집하여 감가율을 시각화하는 대시보드 프로젝트를 진행하며 겪은,교과서적 이론과 실제 배포 환경의 간극에 대해 공유하고자 합니다. 보통 입문 강의에서는 requests와 BeautifulSoup을 이용한 정적 스크래핑을 배우지만,실제 상용 웹사이트는 동적 렌더링과 보안으로 겹겹이 막혀 있습니다. 이를 해결하기 위해 Playwright를 도입했습니다. 또한 구형 requirements.txt 대신요즘 파이썬 생태계 표준인 pyproject.toml을 도입하여 패키지 의존성을 명확하게 관리했습니다. 특히 Streamlit Cloud 배포 시 리눅스 컨테이너의 샌드박스 제약으로 브라우저가 뻗어버리는 현상을아래와 같이 Headless 옵션으로 우회했습니다. Python# kcar_headless_scraper.py import os from playwright.sync_api import sync_playwright def fetch_car_prices(): # Streamlit Cloud 환경에서 Playwright용 브라우저 강제 설치 os.system("playwright install chromium") with sync_playwright() as playwright_instance: # 이론적인 일반 스크래핑과 달리, 실제 클라우드 서버 환경에서는 # 샌드박스 충돌 및 메모리 부족 현상으로 인한 에러가 발생합니다. # 이를 우회하기 위한 현업의 필수 headless 옵션 세팅입니다. browser_instance = playwright_instance.chromium.launch( headless=True, args=[ '--no-sandbox', '--disable-dev-shm-usage' ] ) # 보안이 적용된 동적 페이지 렌더링 대기 및 데이터 추출 page_instance = browser_instance.new_page() page_instance.goto("https://www.kcar.com") # ... (중략: 데이터 크롤링 로직) ... browser_instance.close() return []  파이썬 크롤러 배포를 공부하시는 분들께 도움이 되기를 바랍니다. 

웹 개발파이썬Python웹크롤링PlaywrightStreamlit토이프로젝트데이터분석

채널톡 아이콘