블로그

Go Hard

파이썬 Streamlit을 활용한 차량 물리 접지력 시뮬레이터 (콰트로 vs 후륜)

안녕하세요. '잡학다식 개발자'입니다. Python의 Streamlit과 Matplotlib을 활용하여, 차량의 구동 방식과 노면 상태에 따른 물리적 접지력(Traction) 변화를 실시간으로 렌더링하는 시뮬레이터를 제작해 보았습니다.웹 프론트엔드 구축 없이 Streamlit의 세션 상태st.session_state)와 상호작용 위젯을 활용하여, 조건 변경 시 차트가 즉각적으로 반응하도록 구현한 토이 프로젝트입니다.### 💡 핵심 구현 로직 (Traction Mapping)차량의 그립력은 타이어 종류와 노면 상태의 상성 데이터, 그리고 구동 방식(AWD/RWD)에 따른 동력 분산 보너스를 계산하여 산출합니다.# 업데이트된 타이어 마찰 계수 데이터베이스 friction_map = { "익스트림 서머 (넥센 SUR4G, 한국 RS4 등)": {"마른 아스팔트": 1.2, "빗길": 0.6, "눈길": 0.1}, "UHP 서머 (미쉐린 PS4S, 피렐리 P Zero 등)": {"마른 아스팔트": 1.1, "빗길": 0.8, "눈길": 0.15}, "프리미엄 사계절 (미쉐린 MXM4 등)": {"마른 아스팔트": 0.9, "빗길": 0.7, "눈길": 0.3}, "윈터 타이어 (브리지스톤 블리작 등)": {"마른 아스팔트": 0.8, "빗길": 0.6, "눈길": 0.6} } base_mu = friction_map[tire_type][road_cond] drivetrain_bonus = 1.5 if drivetrain == "사륜구동(AWD/Quattro)" else 1.0 traction_score = base_mu * drivetrain_bonus # 에어로 효과 실시간 반영 (고속 주행 다운포스) if apply_aero: traction_score += 0.15이 계산식을 통해, 일반 승용차가 절대 안전 기준선(0.9G)을 넘나드는 과정과 F1 레이스카의 압도적인 물리적 한계치(4.5G)를 동일한 스케일의 차트에서 동적으로 비교합니다.🔗 소스 코드 및 실행 안내구체적인 작동 원리와 코드가 실제 자동차의 물리 법칙과 어떻게 매칭되는지에 대한 자세한 설명은 아래 유튜브 콘텐츠를 참고해 주시기 바랍니다.▶ 시뮬레이터 구현 및 물리 로직 해설:https://youtu.be/j4q25_HD5Ik💻 GitHub 저장소 (전체 코드):https://github.com/gohard-lab/quattro_simulator직접 실행해 보기:접지력 시뮬레이터(Streamlit):https://quattrosimulator-kbsulzwvq8ucrcpph6rfg5.streamlit.app/  

파이썬Python코딩AI비디오Kling클링AI영상제작Moviepy동영상편집잡학다식개발자

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

파이썬으로 레딧(Reddit) 자동화 툴을 만들며 느낀 '이론과 현실'의 차이

안녕하세요. 국내 서비스에만 머물지 않고 글로벌 커뮤니티인 레딧(Reddit)으로 소통 범위를 넓혀보고자, 파이썬을 활용한 글로벌 소통 자동화 툴을 구현해 보았습니다.단순히 API 문서에 나온 대로 코드를 짜면 금방 해결될 줄 알았지만, 실제 생태계는 이것과는 다르죠. 각자가 원하는 룰이 다르기 때문에 단순 '자동화'로만 접근했다가는 뭔가 2% 부족한 코드가 되고 맙니다.프로젝트에 사용된 핵심 로직의 일부를 공유합니다.import praw from supabase import create_client from tracker import log_usage # Reddit API 객체 생성 및 Supabase 사용량 추적 초기화 def initialize_reddit(): reddit = praw.Reddit( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", user_agent="vlog_01_global_reddit_communication by /u/PolymathDev" ) # 사용량 추적 기능 포함 log_usage("reddit_automation_start") return reddit def post_to_subreddit(reddit, subreddit_name, title, content): subreddit = reddit.subreddit(subreddit_name) # 실제 현실에서는 단순히 submit을 하는 것이 아니라, # 서브레딧별 Karma 제한과 Rate Limit을 정교하게 다뤄야 합니다. subreddit.submit(title, selftext=content)이론적으로는 API 호출 한 번으로 끝나지만, 실제 현실에서 글로벌 유저들의 거부감을 사지 않으면서 자연스럽게 소통하기 위해 제가 선택한 '치명적인 한 수'가 무엇인지, 그리고 개발 과정에서 발견한 의외의 단점은 무엇인지 영상에 솔직 담백하게 담았습니다.전체 소스 코드와 구체적인 구현 전략이 궁금하신 분들은 아래 영상을 참고해 주시면 감사하겠습니다. * 유튜브 배경제거 영상 확인하기 : https://youtu.be/FGUJ1bUF9K0* 유튜브 브이로그 영상 확인하기 : https://youtu.be/YfW6-hBYM4E

AI 실무 활용파이썬RedditAPIPRAW자동화글로벌마케팅잡학다식개발자소프트웨어개발파이썬독학레딧자동화PythonAutomation

채널톡 아이콘