블로그

Go Hard

🚀 인위적인 번들거림을 제거한 고충실도(High-fidelity) AI 업스케일러 공개

 기존 AI 화질 개선 툴들이 보여주는 특유의 부자연스러운 매끄러움(Plastic look)에 아쉬움을 느껴 직접 제작한 GoHard AI Upscaler를 소개합니다. 단순히 해상도를 키우는 것을 넘어, 원본이 가진 고유의 질감을 보존하는 데 집중했습니다.✨ 핵심 가치 (Core Values)High-fidelity AI Upscaling: 공격적인 노이즈 제거 대신, 실제 사진과 같은 자연스러운 입자감과 구조적 디테일을 복원합니다.Clean and Intuitive UI: 복잡한 설정 없이 작업에만 집중할 수 있도록 직관적이고 깔끔한 인터페이스를 갖췄습니다.Safe & Private Environment: 사용자의 데이터는 외부 서버로 전송되지 않습니다. 로컬 환경 또는 안전하게 격리된 Google Colab에서만 처리됩니다.💻 핵심 로직 (Python 기반)IT 커뮤니티(OKKY, 벨로그 등)의 성격에 맞춰 기술적 원리를 엿볼 수 있는 핵심 코드 일부를 공유합니다.# 고충실도 텍스트 보존 엔진 예시 from gohard_engine import FidelityModel from tracker_web import log_app_usage def process_high_res(image_path): # 인위적인 스무딩을 억제하고 디테일을 재구성 upscaler = FidelityModel(mode="texture_priority") log_app_usage("upscaler_v1", "high_res_task") return upscaler.run(image_path)🚨 치명적인 단점과 기술적 한계이 프로그램은 완벽하지 않습니다. 고충실도(High-fidelity) 구현을 위해 구조적으로 감수해야 했던 치명적인 단점 한 가지가 존재합니다. 이 기술적 병목 현상이 발생하는 구체적인 이유와 제작 과정에서의 비하인드는 아래 영상에 솔직하게 담았습니다.(배포된 실행 파일은 철저한 검증을 거쳤으므로 안심하고 사용하셔도 됩니다.)치명적인 이유 확인 (유튜브): https://youtu.be/vXHdwpibqEo개발자 양심 가이드: 이 프로그램이 도움이 되었다면, ‘체리피커’가 되기보다 개발자의 양심을 담아 GitHub Star 하나만 부탁드립니다! ⭐

AI 코딩AIPYTHONopensource파이썬GoogleColabPhotography

moldcam

[취업연계 무료교육] 서울시 매력일자리사업 AI·SW 보안 테스트 엔지니어 취업 연계과정

 안녕하세요, 여러분! 서울특별시 동부여성발전센터에서[서울시 민간기업 맞춤형 매력일자리 사업]AI·SW 보안 테스트 엔지니어 취업 연계과정 교육생을 모집중입니다. 서울시에서 지원하는 ‘매력일자리 사업’을 통해👉무료 직무교육 + 인턴십 + 취업 연계까지 한 번에 지원받을 수 있는 과정으로,IT 기업으로의 취업을 준비하고 계신 분들이라면 실무 경험과 취업 기회를 동시에 잡을 수 있는 좋은 기회입니다.  ✅ 매력일자리 사업이란?서울시가 운영하는 대표 일자리 지원 프로그램으로,👉직무교육 + 실무 경험 + 민간 취업 연계를 동시에 지원하는 사업입니다.단순 교육이 아니라👉실제 취업까지 이어지는 구조가 가장 큰 특징입니다. 특히 본 과정은 최근 중요성이 높아지고 있는AI 및 SW 보안·테스트 분야를 중심으로 구성되어 있어비전공자도 기초부터 차근차근 학습하며실무에 바로 투입 가능한 역량을 쌓을 수 있습니다. IT 기업으로의 취업을 준비하면서“무엇을 준비해야 할지 막막했던 분들”,“실무 경험이 부족해 고민이었던 분들”께특히 도움이 되는 과정이니 많은 관심과 참여 부탁드립니다 😊  🎯 모집 대상서울시 거주자만 18세 ~ 39세 미취업 청년 25명👉대학 또는 대학원에 재직 중인 자는 사업 참여에 배제됩니다IT / 디지털 분야 취업을 희망하는 분👉 “전공자 아니어도 가능” 📅 모집 개요1⃣ 접수 기간 : 26년 3월 17일(화) ~ 4월 17일(금) 18:00까지2⃣ 면접일 : 26년 4월 24일(금)*서류심사 후 개별 안내 예정이며, 추후 일정은 변동 될 수 있습니다3⃣ 교육 기간 : 26년 5월 시작 예정*상기 일정은 추후 변동될 수 있으며, 변경 시 별도 안내 예정4⃣ 교육 장소 : 서울특별시 동부여성발전센터(2호선 건대입구역 도보 5분)📚 교육 내용 (실무 중심)이번 과정은 이론 위주가 아니라👉현장에서 바로 쓰는 실무 교육 중심으로 진행됩니다. 👉 주요 교육 내용SW 보안 테스팅 기초보안 테스트 프로세스애플리케이션 구조 이해공격 기법 및 취약점 분석테스트 전략 및 시나리오 설계 등💼 교육 이후 (핵심 포인트🔥)교육만 하고 끝나는 게 아닙니다.👉 교육 수료 후✔ 기업 인턴십 연계✔ 실제 현장 근무 경험✔ 취업까지 이어질 수 있는 기회 제공실제로 매력일자리 사업은👉인턴 → 정규직 전환까지 연결되는 구조로 운영됩니다.💰 참여 혜택✔ 교육비 및 자격증 취득비 전액 지원✔ 교육 참여 수당 지급(80% 이상 출석 시)✔ 인턴십 3개월 인건비 지원✔ 취업 연계 제공👉 “돈 내고 배우는 교육 ❌”👉지원 받으면서 취업 준비하는 과정🚀 이런 분들께 특히 추천IT 취업 방향을 아직 못 잡은 분실무 경험이 부족한 취준생국비교육만으로 부족하다고 느낀 분“교육 + 취업”을 한 번에 해결하고 싶은 분❗ 왜 지금 지원해야 할까?서울시 지원 프로그램이라 신뢰도 높음경쟁률 높은 인기 사업 (조기 마감 가능)AI·디지털 직무 확대 중 (미래 유망 분야)👉 실제로 매력일자리는AI 등 신기술 직무까지 확대되며 취업 연계 기능이 강화되고 있습니다.📩 지원 방법👉 아래 링크에서 상세 확인 및 신청교육 프로그램 신청 | 동부여성발전센터 주의동부여성발전센터 홈페이지에서 수강신청(가접수) 후필히 신청서류를 모두 작성하여 edujob@swtesting.or.kr 로 발송하셔야 합니다. 

무료교육취업지원취업준비취업연계국비교육국비지원AI교육IT교육보안교육매력일자리

ICT TMD

[무료교육] AI 모델링 실무(AICE) 교육생 모집

🌴 제주도민을 위한 특별한 기회!비전공자도 가능한 AI 데이터 분석 자격증AI 기초부터 데이터 분석까지, AICE 자격증 취득을 위한 실전 중심 교육! “AI 자격증, 어떻게 준비해야 할지 모르겠어요.”“비전공자인데도 가능할까요?”“혼자 공부하다가 포기한 경험이 있어요.”👉 이런 고민이 있다면 이번 교육이 기회입니다! 🗓 교육 일정- 기간 : 2026.05.06(수)~26.06.08(월)- 시간 : 월,수,금 14:00 ~ 18:00( ※ 공휴일이 있는 날은 화요일로 수업 대체)💻 교육 방식- 온라인 실시간 교육 (ZOOM) 👥 교육 대상- 만 17세 이상 제주도 거주자 누구나 📚 교육 내용- AI 기초 및 데이터 분석 개념 이해- Python 기반 데이터 분석 실습- AICE 자격증 필기 및 실기 대비- 기출문제 풀이 및 실전 대비 🎁 교육생 혜택✔ 수강료 100% 무료 (국비지원)✔ 응시료 100% 환급✔ 학습 콘텐츠 제공 (PDF 교재 + 온라인 영상)✔ 출석 이벤트 (상품권 증정)✔ 합격 축하금 지급  📌 신청 기간4/8(수) ~ 4/19(일)※ 조기 마감이 될 수 있으며, 선발 과정을 통해 선발 예정입니다.(교육일정 전체 참석 가능자, 교육신청서 상세 기입여부, 제주특화분야 교육 활용 등) 🧡🧡🧡신청링크 : https://forms.gle/a75RryuKMCK7zz9LA ☎ 문의 (제주 ICT이노베이션)☎ 064-904-1443카카오채널) http://pf.kakao.com/_kxexkvb

AI 크리에이티브AI무료교육AI교육AICEAI자격증데이터분석제주교육AI기초국가공인자격증온라인교육

위랩스페이스

[풀스택_인프라] LG CNS AM Inspire Camp 5기 모집

 고용노동부 K-Digital Training 과정LG CNS AM Inspire Camp 5기 모집 중 LG CNS 현직자와 함께하는 실전 프로젝트 과정.과정 설계부터 멘토링, 결과물 완성까지 직접 경험합니다.LG CNS AM 5기에서 실력으로 증명하는 엔지니어로 성장하세요. 차별화된 취업 스펙 쌓으러 가기 ▶ [ Click! ]   LG CNS AM만의 특별한 교육 혜택 📌 혜택01 | LG CNS 공식 수료증- 교육 과정을 완주한 수료생에게 LG CNS 공식 수료증을 수여 📌 혜택02 | LG CNS 채용 가산점 부여- LG CNS 및 자회사 지원 시 우수 수료생 한정 취업 가산점 부여 기회 제공 📌 혜택03 | 훈련장려금 지급- 훈련장려금 총 180만원 이상(월 최대 30만 원) 지급 📌 혜택04 | LG CNS 전문가 멘토링- LG CNS 현업 전문가와 함께하는 실무 프로젝트 멘토링 📌 혜택05 | 취업지원 / 맞춤형 프로그램 지원- 성공적인 취업을 위한 전문가의 채용 특강 및 이력서, 고퀄리티 포트폴리오 컨설팅 진행 📌 혜택06 | 교육용 장비 및 서비스 제공- LG 교육용 노트북 대여 및 클라우드 (AWS) + 메타버스 + AI 서비스 이용료 지원 📌 혜택07 | 차별화된 맞춤 교육 진행- 전공/비전공자 개별 지도- 개인별 강점 기반 포트폴리오 지원   LG CNS AM 과정을 수료하면 이렇게 성장해요! ✨프론트엔드 엔지니어“완성도 높은 인터페이스로 서비스의 첫 인상을 완성해요.”사용자 경험을 고려한 화면(UX/UI)을 설계하고, 반응형 웹 기반으로 구현합니다. ✨백엔드 엔지니어“안정적이고 확장 가능한 데이터 흐름을 설계해요.”서비스 로직을 설계하고, 데이터 처리 및 API 서버를 구축합니다. ✨클라우드 엔지니어“확장성과 안정성을 갖춘 클라우드 환경을 구성해요.”인프라 환경에서 서비스를 설계·배포·운영합니다. ✨데브옵스 엔지니어“개발과 운영을 자동화해 안정적인 서비스를 제공합니다.”CI/CD 파이프라인을 구축하고, 효율적인 배포와 운영 환경을 구현합니다.   LG CNS AM 5기, 지금 모집 중이에요! ✅ 기간 및 일정· 모집 마감 : ~ 05.05(화) 23:59※ 우선 선발 기회 제공(선착순)· 교육 기간 : 26.05.15 (금) ~ 26.11.13 (금) ✅ 수업 방식/장소· 온라인 : 메타버스 강의장· 오프라인 : 동국대 서울캠퍼스 ✅ 모집 대상· 국내외 대학(원) 졸업(예정)자· 내일배움카드 발급 가능자 ✅ 접수 방법[랜딩페이지 접속] → [우측 상단 '지금 지원하기' 클릭] → 지원서 작성/제출 ✅ 수강료· 교육비 자부담금 50만원 (*정책 변경으로 인한 자부담금 발생) ✅ 교육 문의· 카카오톡 1:1 문의하기 : https://pf.kakao.com/_wbxkln

kdt국비교육프로젝트부트캠프엔지니어취업lgcns풀스택개발it

moldcam

[서울시 매력일자리] 인턴십 + 취업연계까지 지원해주는 100% 무료교육 알려드려요!(2)

안녕하세요, 여러분!서울특별시 동부여성발전센터에서[서울시 민간기업 맞춤형 매력일자리 사업]모빌리티·AI데이터 품질 테스트 엔지니어 취업연계과정 교육생을 모집중입니다. 서울시에서 지원하는 ‘매력일자리 사업’을 통해👉무료 직무교육 + 인턴십 + 취업 연계까지 한 번에 지원받을 수 있는 과정으로,IT 기업으로의 취업을 준비하고 계신 분들이라면 실무 경험과 취업 기회를 동시에 잡을 수 있는 좋은 기회입니다. ✅ 매력일자리 사업이란?서울시가 운영하는 대표 일자리 지원 프로그램으로,👉직무교육 + 실무 경험 + 민간 취업 연계를 동시에 지원하는 사업입니다. 단순 교육이 아니라👉실제 취업까지 이어지는 구조가 가장 큰 특징입니다.특히 본 과정은 최근 중요성이 높아지고 있는모빌리티, AI데이터 품질 교육 중심으로 구성되어 있어비전공자도 기초부터 차근차근 학습하며실무에 바로 투입 가능한 역량을 쌓을 수 있습니다. IT 기업으로의 취업을 준비하면서“무엇을 준비해야 할지 막막했던 분들”,“실무 경험이 부족해 고민이었던 분들”께특히 도움이 되는 과정이니 많은 관심과 참여 부탁드립니다 😊 🎯 모집 대상서울시 거주자만 18세 ~ 39세 미취업 청년 25명👉대학 또는 대학원에 재직 중인 자는 사업 참여에 배제됩니다IT / 디지털 분야 취업을 희망하는 분👉 “전공자 아니어도 가능”📅 모집 개요1⃣ 접수 기간 : 26년 3월 17일(화) ~ 4월 17일(금) 18:00까지2⃣ 면접일 : 26년 4월 24일(금)*서류심사 후 개별 안내 예정이며, 추후 일정은 변동 될 수 있습니다3⃣ 교육 기간 : 26년 5월 시작 예정*상기 일정은 추후 변동될 수 있으며, 변경 시 별도 안내 예정4⃣ 교육 장소 : 서울특별시 동부여성발전센터(2호선 건대입구역 도보 5분)📚 교육 내용 (실무 중심)이번 과정은 이론 위주가 아니라👉현장에서 바로 쓰는 실무 교육 중심으로 진행됩니다. 👉 주요 교육 내용AI 데이터 품질 검증AI 모델 성능 테스트AI 품질 테스트(QA)모빌리티 시스템 테스트테스트 자동화 및 품질 관리💼 교육 이후 (핵심 포인트🔥)교육만 하고 끝나는 게 아닙니다.👉 교육 수료 후✔ 기업 인턴십 연계✔ 실제 현장 근무 경험✔ 취업까지 이어질 수 있는 기회 제공 실제로 매력일자리 사업은👉인턴 → 정규직 전환까지 연결되는 구조로 운영됩니다.💰 참여 혜택✔ 교육비 및 자격증 취득비 전액 지원✔ 교육 참여 수당 지급(80% 이상 출석 시)✔ 인턴십 3개월 인건비 지원✔ 취업 연계 제공👉 “돈 내고 배우는 교육 ❌”👉지원 받으면서 취업 준비하는 과정🚀 이런 분들께 특히 추천IT 취업 방향을 아직 못 잡은 분실무 경험이 부족한 취준생국비교육만으로 부족하다고 느낀 분“교육 + 취업”을 한 번에 해결하고 싶은 분❗ 왜 지금 지원해야 할까?서울시 지원 프로그램이라 신뢰도 높음경쟁률 높은 인기 사업 (조기 마감 가능)AI·디지털 직무 확대 중 (미래 유망 분야) 👉 실제로 매력일자리는AI 등 신기술 직무까지 확대되며 취업 연계 기능이 강화되고 있습니다.📩 지원 방법👉 아래 링크에서 상세 확인 및 신청교육 프로그램 신청 | 동부여성발전센터 주의동부여성발전센터 홈페이지에서 수강신청(가접수) 후필히 신청서류를 모두 작성하여 edujob@swtesting.or.kr 로 발송하셔야 합니다. 🔥 한 줄 정리👉“무료 교육 받고, 인턴 거쳐서 취업까지 연결되는 과정”

커리어 · 자기계발 기타취업교육취업연계무료교육국비지원국비교육인턴십취업준비매력일자리ai교육취업지원

moldcam

[서울시 매력일자리] 인턴십 + 취업연계까지 지원해주는 100% 무료교육 알려드려요!

안녕하세요, 여러분!서울특별시 동부여성발전센터에서[서울시 민간기업 맞춤형 매력일자리 사업]AI·SW 보안 테스트 엔지니어 취업 연계과정 교육생을 모집중입니다. 서울시에서 지원하는 ‘매력일자리 사업’을 통해👉무료 직무교육 + 인턴십 + 취업 연계까지 한 번에 지원받을 수 있는 과정으로,IT 기업으로의 취업을 준비하고 계신 분들이라면 실무 경험과 취업 기회를 동시에 잡을 수 있는 좋은 기회입니다. ✅ 매력일자리 사업이란?서울시가 운영하는 대표 일자리 지원 프로그램으로,👉직무교육 + 실무 경험 + 민간 취업 연계를 동시에 지원하는 사업입니다. 단순 교육이 아니라👉실제 취업까지 이어지는 구조가 가장 큰 특징입니다.특히 본 과정은 최근 중요성이 높아지고 있는AI 및 SW 보안·테스트 분야를 중심으로 구성되어 있어비전공자도 기초부터 차근차근 학습하며실무에 바로 투입 가능한 역량을 쌓을 수 있습니다. IT 기업으로의 취업을 준비하면서“무엇을 준비해야 할지 막막했던 분들”,“실무 경험이 부족해 고민이었던 분들”께특히 도움이 되는 과정이니 많은 관심과 참여 부탁드립니다 😊 🎯 모집 대상서울시 거주자만 18세 ~ 39세 미취업 청년 25명👉대학 또는 대학원에 재직 중인 자는 사업 참여에 배제됩니다IT / 디지털 분야 취업을 희망하는 분👉 “전공자 아니어도 가능”📅 모집 개요1⃣ 접수 기간 : 26년 3월 17일(화) ~ 4월 17일(금) 18:00까지2⃣ 면접일 : 26년 4월 24일(금)*서류심사 후 개별 안내 예정이며, 추후 일정은 변동 될 수 있습니다3⃣ 교육 기간 : 26년 5월 시작 예정*상기 일정은 추후 변동될 수 있으며, 변경 시 별도 안내 예정4⃣ 교육 장소 : 서울특별시 동부여성발전센터(2호선 건대입구역 도보 5분)📚 교육 내용 (실무 중심)이번 과정은 이론 위주가 아니라👉현장에서 바로 쓰는 실무 교육 중심으로 진행됩니다. 👉 주요 교육 내용SW 보안 테스팅 기초보안 테스트 프로세스애플리케이션 구조 이해공격 기법 및 취약점 분석테스트 전략 및 시나리오 설계 등💼 교육 이후 (핵심 포인트🔥)교육만 하고 끝나는 게 아닙니다.👉 교육 수료 후✔ 기업 인턴십 연계✔ 실제 현장 근무 경험✔ 취업까지 이어질 수 있는 기회 제공 실제로 매력일자리 사업은👉인턴 → 정규직 전환까지 연결되는 구조로 운영됩니다.💰 참여 혜택✔ 교육비 및 자격증 취득비 전액 지원✔ 교육 참여 수당 지급(80% 이상 출석 시)✔ 인턴십 3개월 인건비 지원✔ 취업 연계 제공👉 “돈 내고 배우는 교육 ❌”👉지원 받으면서 취업 준비하는 과정🚀 이런 분들께 특히 추천IT 취업 방향을 아직 못 잡은 분실무 경험이 부족한 취준생국비교육만으로 부족하다고 느낀 분“교육 + 취업”을 한 번에 해결하고 싶은 분❗ 왜 지금 지원해야 할까?서울시 지원 프로그램이라 신뢰도 높음경쟁률 높은 인기 사업 (조기 마감 가능)AI·디지털 직무 확대 중 (미래 유망 분야) 👉 실제로 매력일자리는AI 등 신기술 직무까지 확대되며 취업 연계 기능이 강화되고 있습니다.📩 지원 방법👉 아래 링크에서 상세 확인 및 신청교육 프로그램 신청 | 동부여성발전센터 주의동부여성발전센터 홈페이지에서 수강신청(가접수) 후필히 신청서류를 모두 작성하여 edujob@swtesting.or.kr 로 발송하셔야 합니다. 🔥 한 줄 정리👉“무료 교육 받고, 인턴 거쳐서 취업까지 연결되는 과정”

커리어 · 자기계발 기타취업연계취업교육인턴십취업준비매력일자리무료교육국비지원국비교육이직준비ai교육

Go Hard

[Open Source] 파이썬으로 직접 만드는 100% 무료 AI 화질 개선 툴 (4K

안녕하세요. 평소 자동차와 IT 기술을 사랑하며 '잡학다식 개발자' 채널을 운영 중인 개발자입니다.최근 유료 AI 이미지 업스케일러 서비스들이 많아졌지만, 소중한 개인 사진을 외부 서버에 업로드하는 것이 보안상 꺼려질 때가 많았습니다. 그래서 Real-ESRGAN 모델을 활용해 내 로컬 PC에서 100% 오프라인으로 작동하는 화질 개선 프로그램을 직접 구현해 보았습니다.주요 특징100% Offline: 외부 서버 전송 없이 로컬에서 안전하게 처리Real-ESRGAN 기반: 딥러닝 모델을 통한 정밀한 디테일 복원Batch Processing: 수십 장의 저화질 사진을 한 번에 4K로 변환핵심 코드 스니펫 (Python)전체 로직의 핵심인 모델 로드와 추론 부분입니다. upscale_image 함수 하나로 저화질 이미지의 노이즈를 제거하고 해상도를 복원합니다.Pythonimport cv2 from basicsr.archs.rrdbnet_arch import RRDBNet from realesrgan import RealESRGANer def upscale_image(image_path, model_path, tile=0): # Real-ESRGAN 모델 구조 설정 model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=4) upsampler = RealESRGANer(scale=4, model_path=model_path, model=model, tile=tile) img = cv2.imread(image_path, cv2.IMREAD_UNCHANGED) output, _ = upsampler.enhance(img, outscale=4) return output # 라이브러리 설치 시 uv를 사용하면 더욱 빠르고 안정적입니다. # uv pip install realesrgan basicsr 구체적인 작동 원리나 저해상도 자동차 사진이 4K로 변환되는 실제 테스트 과정은 유튜브 콘텐츠를 참고해 주시면 감사하겠습니다. 특히 영상 후반부에는 오픈소스 모델이 상용 서비스보다 아쉬운 치명적인 단점에 대해서도 솔직하게 담았습니다. 👉[유튜브 콘텐츠 확인하기](※ 실행 파일은 제가 직접 빌드한 것이니 안심하고 받으셔도 됩니다.)

AI 실무 활용

ICT TMD

[무료교육] AI 스마트관광 비즈니스 & 마케팅 마스터 과정 교육생 모집

🔍이제는 ‘AI를 배우는 것’을 넘어 실제 업무에 적용하는 방법을 익힐 시간!“AI는 써봤는데, 실제 업무에 어떻게 활용해야 할지 모르겠어요.”“콘텐츠 만들기는 하는데, 전략까지 연결하기가 어렵습니다.”“기획부터 마케팅까지 한 번에 배울 수 있는 교육이 필요해요.” 위와 같은 고민을 가진 분들을 위해,이번 교육은기획 → 분석 → 브랜딩 → 콘텐츠 → 마케팅 → 자동화까지전 과정을 실습 중심으로 경험할 수 있도록 구성되었습니다! 📍신청 기간 : 3월 31일(화) ~ 4월 10일(금) 📍교육 일정📅기간: 2026년 4월 21일(화) ~ 2026년 6월 2일(화)⏰시간: 매주 화,목 19시 30분~ 22시 30분💻장소: 온라인(ZOOM 실시간 교육)👥대상: 만 17세 이상 제주 거주자 누구나 신청 가능 📚교육 내용- AI 기반 시장 분석 및 비즈니스 기획 실습- 브랜드 전략 수립 및 콘텐츠 제작 (이미지 · 영상 · 카피라이팅)- 고객 여정 기반 마케팅 전략(IMC) 설계-AI 에이전트 활용 업무 자동화 및 실무 적용 🛠 사용 AI 실습 툴 (무료)ChatGPT, Gemini, Claude, NotebookLM, Vrew, Canva 등※ 별도 유료 결제 없이 실습 가능한 도구 중심으로 진행 🎁 교육생 혜택1. 교육비 전액 무료 100% 국비 지원2. 온라인 복습영상 제공3. 우수 출석율 프로모션 이벤트 (최대 2만원 모바일 상품권 증정)4. 우수 프로젝트 시상 (최대 3만원 모바일 상품권 증정)5. 70% 출석 시 수료증 발급 👉🏻신청 바로가기 : https://forms.gle/UruUKh9yeDE8k5gt7☎ 문의 ☎ 064-904-1443 (제주 ICT이노베이션)

AI 크리에이티브AIgptai에이전트업무자동화마케팅무료교육인공지능디지털마케팅브랜드마케팅마케팅전략

Go Hard

[Python] Matplotlib을 활용한 F1 레이스카 궤적 이탈 시뮬레이션 구현

안녕하세요.오늘은 파이썬의 NumPy와 Matplotlib 애니메이션 기능을 활용해, F1 차량의 코너링 중 접지력 상실(Hydroplaning) 시점을 계산하고 궤적을 시각화하는 시뮬레이션을 구현해 보았습니다.개발을 하다 보면 종종 '모든 물리 변수를 정밀하게 넣어야 완벽한 코드'라는 이론적 강박에 빠지곤 합니다. 하지만 목적이 '데이터 추출'이 아닌 '현상의 시각화'라면, 모델의 복잡도를 낮추는 것이 렌더링 최적화와 직관성 측면에서 현실적인 정답이 될 수 있습니다.아래는 차량의 현재 위치와 속도, 중력가속도를 계산하여 그립(Grip) 상실 여부에 따라 궤적 벡터를 분기하는 핵심 코드 블록입니다.def calculate_state(t, v0, r, drag_coef): dt_step = t if t < config['t_hydroplaning'] else config['t_hydroplaning'] omega = v0 / r # 정상적인 코너링 궤적 계산 initial_theta = np.pi current_theta = initial_theta + omega * dt_step car_x = r * np.cos(current_theta) + r car_y = r * np.sin(current_theta) + r # 수막현상 발생 시점 이후의 관성 이동 벡터 계산 if t >= config['t_hydroplaning']: lost_grip_theta = initial_theta + omega * config['t_hydroplaning'] lost_grip_pos = np.array([r * np.cos(lost_grip_theta) + r, r * np.sin(lost_grip_theta) + r]) lost_grip_v_vec = np.array([-v0 * np.sin(lost_grip_theta), v0 * np.cos(lost_grip_theta)]) slide_time = t - config['t_hydroplaning'] slide_accel = drag_coef * v0 slide_v_mag = max(0, v0 - slide_accel * slide_time) slide_v_avg = (v0 + slide_v_mag) / 2 slide_dist = slide_v_avg * slide_time v0_unit_vec = lost_grip_v_vec / v0 if v0 > 0 else np.array([0, 0]) car_x = lost_grip_pos[0] + v0_unit_vec[0] * slide_dist car_y = lost_grip_pos[1] + v0_unit_vec[1] * slide_dist return car_x, car_y  이 코드가 실제 화면에서 어떻게 애니메이션으로 구동되는지, 그리고 현업 데이터 분석 환경에서는 이론적인 수식과 어떤 간극이 존재하는지에 대한 구체적인 작동 원리와 자세한 설명은 아래 유튜브 콘텐츠를 참고해 주시면 감사하겠습니다. https://youtu.be/tZ1Vvy1g0Yg 

AI 코딩Python파이썬데이터시각화MatplotlibNumPy시뮬레이션F1모터스포츠

asdzxc566

링크만 저장하지 말고, 읽기 좋게 정리해두고 싶어서 앱을 만들었습니다!

저는 좋은 글을 보면 일단 저장부터 하게 되는데, 시간이 지나면 “어디에 저장했더라?” 기억이 나지 않은 경우가 많았습니다. 그래서 저장으로 끝나지 않고, 실제로 읽고 다시 꺼내보기까지 이어질 수 있도록 앱을 하나 만들게 됐습니다.​이 앱은 처음부터 아이폰–맥–아이패드를 함께 쓸 수 있도록 설계하여 만들었습니다. 아이폰에서 검색하다가 괜찮은 글을 발견하면 저장해두고, 집에 와서 맥북으로 다시 읽거나 정리하고, 시간이 있을 때 아이패드로 이어서 보는 식으로요. 글을 발견하는 순간과 제대로 읽는 순간이 늘 같지는 않아서, 기기가 바뀌어도 끊기지 않게 동기화를 기본으로 두었습니다.​기본적인 기능으로 저장해둔 글이 쌓여도 정리가 유지되도록 분류 기능을 넣었고, 읽으면서 중요한 문장은 하이라이트로 표시할 수 있게 했습니다. 길게 정리하지 않아도 표시해둔 문장 몇 개만 있으면 나중에 다시 봤을 때 내용이 훨씬 빨리 떠오르더라고요. 여기에 더해, 읽다가 든 생각을 짧게 남길 수 있는 메모 기능도 빠른 시일 안에 추가할 예정입니다.​읽는 환경도 신경 썼습니다. 저는 다크모드를 거의 항상 쓰고, 웹 브라우저도 강제 다크모드를 켤 정도로 다크모드를 선호합니다. 그래서 테마(다크/라이트/그레이,세이지/ 스카이블루 등) 선택과 폰트 크기 조절을 지원하도록 만들었습니다. 추후에는 줄간격과 문단 간격도 조절할 수 있게 준비 중입니다. 작은 설정이지만, 내 눈에 편한 상태가 되면 글을 더 자주, 더 오래 보게 된다는 걸 많이 느꼈습니다.​아티클을 자주 저장하는데 다시 찾기 어려웠던 분, 읽은 내용에 표시를 남겨두고 나중에 다시 확인하고 싶은 분, 그리고 아이폰/맥북/아이패드를 함께 쓰는 분이라면 한 번 사용해보셔도 좋겠습니다. 써보시고 좋았던 점이나 개선되면 좋을 점을 알려주시면, 계속 다듬어가겠습니다!https://apps.apple.com/us/app/stackbox-%ED%9D%A9%EC%96%B4%EC%A7%84-%EC%BD%98%ED%85%90%EC%B8%A0%EB%A5%BC-%ED%95%9C%EA%B3%B3%EC%97%90/id6758572761

아티클rerad-it-later링크저장저장컨텐츠저장컨텐츠개발ios

Spring Boot 2.7 MVC 환경에서 프록시 게이트웨이 구축기

레거시 서버에 투명 프록시를 얹어 신규 서비스로 트래픽을 넘기기까지의 여정 — 기술 선정, 구현, 그리고 삽질의 기록본 글에 등장하는 서비스명, 도메인, 테이블/칼럼명 등은 보안상의 이유로 익명화하여 작성하였습니다. 구현 패턴과 문제 해결 과정은 실제 경험을 그대로 반영하고 있습니다. 1. 배경: 왜 프록시가 필요했는가우리 팀은 기존 레거시 서버에서 신규 서비스로 점진적으로 마이그레이션하는 작업을 진행하고 있었다. 흔히 말하는 Strangler Fig 패턴 — 레거시를 한 번에 걷어내는 게 아니라, 새로운 서비스를 나란히 세워두고 트래픽을 조금씩 옮기면서 레거시를 서서히 "교살"하는 전략이다.여기서 핵심 제약이 하나 있었다. 인증(Authentication)은 레거시 서버가 전담한다는 것이다. 클라이언트의 모든 요청은 반드시 레거시 서버를 먼저 거쳐야 했고, 레거시에서 인증을 완료한 뒤에야 신규 서비스로 넘길 수 있었다. 단순히 nginx나 로드밸런서 레벨에서 라우팅을 바꾸는 것으로는 해결이 안 되는 구조였다.그래서 레거시 서버 안에 프록시 레이어를 만들기로 했다. 인증을 마친 요청에 사용자 컨텍스트(x-user-id, x-request-service 등)를 HTTP 헤더에 실어서 신규 서비스로 투명하게 포워딩하는 구조다.2. 기술 선정: 생각보다 간단하지 않았던 선택처음 떠올린 것: Spring Cloud Gateway프록시라고 하면 가장 먼저 떠오르는 건 Spring Cloud Gateway다. 라우팅, 필터, 서킷 브레이커까지 다 갖춰져 있으니 이걸 쓰면 되겠다 싶었다.그런데 문제가 있었다. 우리는 게이트웨이를 별도 서버로 띄울 계획이 아니었다. 레거시 서버 안에 모듈 형태로 넣어서, 레거시가 인증 처리 후 바로 프록시까지 수행하는 구조를 원했다. 그런데 Spring Cloud Gateway는 Reactive 기반, WebFlux(Netty) 위에서 돌아간다. 우리 레거시 서버는 Spring Boot 2.7 + Spring MVC(Tomcat) 환경이다.Servlet 기반 애플리케이션에 Reactive 기반 게이트웨이를 같이 올리는 건 불가능하다. WebServerFactory가 충돌하고, ReactiveWebApplicationContext와 ServletWebApplicationContext는 공존할 수 없다. 별도 마이크로서비스로 분리해서 앞단에 배치하는 구조라면 가능하겠지만, 그건 우리가 원하는 "레거시 안에서 인증 후 바로 포워딩"이라는 요구사항과 맞지 않았다.대안 탐색: OpenFeign vs RestTemplate vs ProxyExchange여기서 세 가지 선택지를 놓고 고민했다.Option A: Spring Cloud OpenFeign신규 서비스의 각 API에 대응하는 Feign Client 인터페이스를 레거시에 선언하고, Controller에서 이를 호출하는 방식이다. 타입 안정성도 좋고, 서킷 브레이커와도 잘 붙는다. 하지만 치명적인 단점이 있었다. 단순 패스스루(pass-through) API조차 레거시에 Controller 메서드와 Feign 메서드를 중복으로 만들어야 한다. API가 100개면 100개의 껍데기 코드가 필요하다. 마이그레이션이 진행될수록 레거시가 줄어드는 게 아니라 오히려 비대해지는 모순이 발생한다.Option B: RestTemplate (수동 프록시)프로젝트에서 외부 API 호출에 이미 쓰고 있는 RestTemplate으로 직접 프록시를 구현하는 방법이다. 익숙한 도구이긴 하지만, 요청/응답 바디를 직접 읽고 다시 써야 하고, 헤더 복사, 에러 핸들링, 바이너리 응답 처리 등을 전부 수동으로 구현해야 한다. 단순 패스스루를 위해 작성해야 할 보일러플레이트 코드가 상당하다.Option C: Spring Cloud Gateway MVC의 ProxyExchange서치를 하다가 발견한 것이 spring-cloud-gateway-mvc였다. Spring Cloud Gateway의 서블릿(MVC) 버전으로, ProxyExchange라는 유틸리티를 제공한다. 요청 본문(body)을 파싱하지 않고 그대로 포워딩하는 투명 프록시를 간단하게 구현할 수 있다. DTO 매핑이나 Controller 추가 없이, 와일드카드 기반으로 수십 개의 API를 한 번에 라우팅할 수 있다.결론: ProxyExchange결국 ProxyExchange를 선택했다. Strangler Fig 패턴의 본질은 "레거시를 껍데기(라우터)로 만들고 서서히 죽이는 것"이다. 단순 전달만 하는 API를 위해 Feign Client와 DTO를 계속 추가하거나, RestTemplate으로 보일러플레이트를 양산하는 건 기술 부채를 늘리는 안티 패턴이다. ProxyExchange로 깔끔하게 투명 프록시를 구현하는 것이 가장 합리적인 선택이었다.3. 구현: 프록시 게이트웨이 공통 모듈모듈 구조레거시 서버의 여러 서브 모듈에서 공통으로 쓸 수 있도록, 프록시 게이트웨이 공통 모듈을 만들었다.utils/proxy-gateway/ ├── build.gradle ├── src/main/java/.../ │ └── ProxyService.java # 핵심 프록시 서비스 └── src/main/resources/ └── proxy-gateway.yml # 환경별 대상 서버 URL 설정 의존성api 'org.springframework.cloud:spring-cloud-gateway-mvc' implementation project(path: ':domain') compileOnly 'org.springframework.boot:spring-boot-starter-security' spring-cloud-gateway-mvc가 핵심이다. WebFlux가 아닌 Servlet 기반이므로, 기존 Spring MVC 환경과 전혀 충돌하지 않는다.ProxyService — 헤더 주입의 핵심프록시의 가장 중요한 역할은 인증 정보와 사용자 컨텍스트를 헤더에 실어 보내는 것이다. ProxyService.withHeaders()가 이 역할을 담당한다.public ProxyExchange<byte[]> withHeaders(ProxyExchange<byte[]> proxy) { proxy.header("x-request-service", serviceName); setUserHeader(getCurrentUserId(), proxy); String traceId = MDC.get("trace_id"); if (traceId != null) { proxy.header("x-trace-id", traceId); } String clientIp = MDC.get("client_ip"); if (clientIp != null) { proxy.header("x-client-ip", clientIp); } forwardClientHeaders(proxy); return proxy; } withHeaders()가 하는 일은 크게 세 가지다. 첫째, x-request-service 헤더에 서비스명을 주입한다. 이 값은 application.yml의 service-name 설정에서 가져온다.둘째, setUserHeader()를 통해 사용자 관련 헤더를 주입한다. Spring Security의 SecurityContextHolder에서 인증된 사용자 ID를 꺼내고, 그 ID로 DB에서 소속 정보를 조회해서 x-user-id, x-user-company-id 등의 헤더를 세팅한다. 이때 null 체크와 Long 파싱 가능 여부를 꼼꼼하게 검증한다 — Spring Security가 classpath에 없는 모듈에서도 에러 없이 동작해야 하기 때문이다.private void setUserHeader(String userId, ProxyExchange<byte[]> proxy) { if (userId == null || userId.isEmpty() || !canParseLong(userId)) { return; } proxy.header("x-user-id", userId); memberRepository.findMemberProxyById(Long.parseLong(userId)).ifPresent(member -> { if (member.getCompanyId() != null) { proxy.header("x-user-company-id", String.valueOf(member.getCompanyId())); } if (member.getOrganizationId() != null) { proxy.header("x-organization-id", String.valueOf(member.getOrganizationId())); } }); } 소속 정보 관련 헤더는 사용자의 역할에 따라 값이 달라진다. 이 분기 로직은 Repository의 네이티브 쿼리에서 CASE WHEN으로 처리하여, 서비스 레이어에서는 단순히 결과를 헤더에 넣기만 하면 된다.select m.id, m.company_id as companyId, case c.type when 'ADMIN' then c.id else c.parent_id end as organizationId from members m left join companies c on m.company_id = c.id and c.deleted_at is null where m.id = :id and m.deleted_at is null limit 1 셋째, forwardClientHeaders()로 클라이언트의 원본 헤더 중 필요한 것들을 패스스루한다. 여기서 authorization 헤더는 x-authorization이라는 별도 키로 변환해서 전달하는데, 이유는 뒤의 삽질 기록에서 다룬다.private void forwardClientHeaders(ProxyExchange<byte[]> proxy) { ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); if (attrs == null) { return; } HttpServletRequest request = attrs.getRequest(); for (String headerName : FORWARDED_HEADERS) { String value = request.getHeader(headerName); if (value != null) { proxy.header(headerName, value); } } String authorization = request.getHeader("authorization"); proxy.header("x-authorization", authorization != null ? authorization : ""); } Controller에서의 사용프록시 Controller는 /** 와일드카드로 모든 하위 경로를 잡아서 HTTP 메서드별로 포워딩한다. 개별 endpoint를 일일이 매핑하는 게 아니라, 경로 전체를 통째로 넘기는 구조다.환경별 설정대상 서버 URL은 설정 파일에서 프로필별로 관리한다.target: base-url: http://localhost:8090 --- spring.config.activate.on-profile: develop target: base-url: https://api-dev.example.com --- spring.config.activate.on-profile: staging target: base-url: https://api-stage.example.com --- spring.config.activate.on-profile: prod target: base-url: https://api.example.com 각 서브 모듈에서는 이 설정 파일을 import만 하면 된다.spring: config: import: - classpath:proxy-gateway.yml 4. 삽질의 기록구현 자체는 깔끔했지만, 실제로 동작시키는 과정에서 세 가지 문제를 만났다. 하나같이 "문서에는 안 나와 있고, 직접 겪어봐야 아는" 류의 문제들이었다.삽질 1: x-authorization 헤더가 null로 들어온다증상: 레거시 서버에서 x-authorization 헤더에 값을 분명히 넣어서 보내는데, 신규 서비스 쪽에서는 x-authorization: null로 들어왔다. 아무리 값을 추가해도 null. 디버깅을 해봐도 레거시 쪽에서는 분명히 값이 세팅되어 있었다.원인: Spring Cloud Gateway MVC는 기본적으로 Authorization, Cookie 등 민감한 헤더(sensitive headers)를 자동으로 제거한다. 프록시 대상 서버로 전달하기 전에 필터링해버리는 것이다. x-authorization이라는 커스텀 헤더명을 썼지만, 내부적으로 Authorization 패턴에 매칭되어 함께 제거된 것이었다.해결: 설정 파일에 sensitive 헤더 목록을 빈 배열로 지정하여 해결했다.spring: cloud: gateway: proxy: sensitive: [] 이 설정은 "어떤 헤더도 민감 헤더로 취급하지 않겠다"는 의미다. 이렇게 하면 클라이언트의 모든 헤더가 대상 서버로 그대로 전달된다.설정 동작기본값(미설정)Authorization, Cookie 등 민감 헤더 자동 제거sensitive: []모든 헤더 통과sensitive: [Cookie]Cookie만 제거, 나머지 통과이 문제가 까다로웠던 이유는, 에러가 나지 않는다는 점이다. 헤더가 조용히 제거될 뿐 예외를 던지거나 로그를 남기지 않는다. 레거시 쪽 로그에서는 값이 잘 들어가고, 신규 서비스 쪽에서만 null이 들어오니 문제의 위치를 특정하기가 어려웠다.삽질 2: 로컬은 되는데 dev에서 GET만 502 Bad Gateway증상: 로컬 환경에서는 모든 API가 정상 동작했다. 그런데 dev 환경에 배포하자마자 GET 요청만 502 Bad Gateway가 떴다. POST는 잘 됐다. nginx 에러 로그에는 이런 메시지가 찍혔다.upstream sent invalid chunked response while reading upstream 원인: 이 문제의 근본 원인은 HTTP의 hop-by-hop 헤더 처리에 있었다.신규 서비스가 응답을 보낼 때 Transfer-Encoding: chunked 헤더를 포함한다. ProxyExchange는 이 응답 헤더를 그대로 레거시 서버의 응답에 복사한다. 그런데 레거시 서버의 서블릿 컨테이너(Tomcat)가 자체적으로 또 다시 chunked 인코딩을 적용한다. 결과적으로 이중 chunked 인코딩이 발생하고, 이를 받은 nginx가 "invalid chunked response"라고 판단하여 502를 반환한 것이다.POST가 괜찮았던 이유는 단순하다. 해당 POST API의 응답 body가 void(빈 응답)이었기 때문이다. body가 없으니 chunked 인코딩이 적용될 대상 자체가 없었다.로컬에서 문제가 없었던 이유도 명확하다. 로컬에서는 nginx를 거치지 않고 Tomcat에 직접 접근하기 때문이다. Tomcat이 이중 chunked를 내보내더라도, 브라우저나 Postman 같은 클라이언트는 이를 관대하게 처리한다. 하지만 nginx는 엄격하게 HTTP 스펙을 준수하기 때문에 거부한 것이다.Transfer-Encoding은 HTTP 스펙에서 hop-by-hop 헤더로 분류된다. 즉, 중간 프록시가 전달해서는 안 되는 헤더다. Spring Cloud Gateway(reactive 버전)에서는 RemoveHopByHop Headers Filter가 자동으로 이런 헤더들을 제거해주지만, spring-cloud-gateway-mvc의 ProxyExchange는 단순 프록시 유틸리티라서 이런 필터 체계가 없다.해결: 프록시 응답에서 Transfer-Encoding 헤더를 수동으로 제거하는 메서드를 만들었다.private ResponseEntity<?> stripTransferEncoding(ResponseEntity<?> response) { return ResponseEntity.status(response.getStatusCode()) .headers(headers -> { headers.putAll(response.getHeaders()); headers.remove("Transfer-Encoding"); }) .body(response.getBody()); } 모든 프록시 응답에 이 메서드를 감싸주는 것으로 해결했다. GET, POST, PUT, DELETE 전부 적용했다. 지금은 GET만 문제가 되지만, 향후 body가 있는 다른 메서드에서도 같은 문제가 발생할 수 있기 때문이다.교훈: spring-cloud-gateway-mvc의 ProxyExchange를 쓸 때는, reactive 버전에서 자동으로 해주는 것들(hop-by-hop 헤더 제거 등)을 직접 챙겨야 한다. 편리한 만큼, 내부에서 뭘 안 해주는지를 정확히 알고 있어야 한다.삽질 3: Query String이 사라진다증상: 목록 조회 API에서 페이징이나 필터 파라미터를 넘겼는데, 신규 서비스 쪽에서 query parameter가 전부 null로 들어왔다. 예를 들어 /items?page=0&size=10으로 요청하면, 신규 서비스에서는 page와 size 둘 다 null이었다.원인: ProxyExchange의 proxy.path()는 경로(path)만 반환한다. Query string은 포함하지 않는다. 즉, /items?page=0&size=10으로 요청해도 proxy.path()는 /items만 돌려준다. 우리는 이 path에 대상 서버 base URL을 붙여서 URI를 만들고 있었으므로, query string이 통째로 날아간 것이다."ProxyExchange가 쿼리 파라미터도 알아서 넘겨주겠지"라고 기대했는데, 그렇지 않았다.해결: HttpServletRequest에서 query string을 직접 꺼내서 URI에 붙이도록 수정했다.private String buildUri(ProxyExchange<byte[]> proxy, HttpServletRequest request) { String path = proxy.path().replaceFirst("/old-path", "/api/v1/new-path"); String uri = proxyService.getBaseUrl() + path; String queryString = request.getQueryString(); if (queryString != null) { uri += "?" + queryString; } return uri; } Controller 메서드에 HttpServletRequest를 파라미터로 추가하고, getQueryString()으로 원본 쿼리 스트링을 그대로 가져와서 붙이는 단순한 방법이다. 인코딩 변환 없이 원본을 그대로 넘기므로, 한글이나 특수문자가 포함된 파라미터도 문제없이 전달된다.5. 최종 형태세 번의 삽질을 거쳐 정착한 프록시 Controller의 최종 형태는 이렇다.@Slf4j @RequiredArgsConstructor @RestController @RequestMapping("/items") public class ItemProxyController { private final ProxyService proxyService; @GetMapping("/**") public ResponseEntity<?> proxyGet(ProxyExchange<byte[]> proxy, HttpServletRequest request) { return stripTransferEncoding(proxyService.withHeaders(proxy).uri(buildUri(proxy, request)).get()); } @PostMapping("/**") public ResponseEntity<?> proxyPost(ProxyExchange<byte[]> proxy, HttpServletRequest request) { return stripTransferEncoding(proxyService.withHeaders(proxy).uri(buildUri(proxy, request)).post()); } @PutMapping("/**") public ResponseEntity<?> proxyPut(ProxyExchange<byte[]> proxy, HttpServletRequest request) { return stripTransferEncoding(proxyService.withHeaders(proxy).uri(buildUri(proxy, request)).put()); } @DeleteMapping("/**") public ResponseEntity<?> proxyDelete(ProxyExchange<byte[]> proxy, HttpServletRequest request) { return stripTransferEncoding(proxyService.withHeaders(proxy).uri(buildUri(proxy, request)).delete()); } private ResponseEntity<?> stripTransferEncoding(ResponseEntity<?> response) { return ResponseEntity.status(response.getStatusCode()) .headers(headers -> { headers.putAll(response.getHeaders()); headers.remove("Transfer-Encoding"); }) .body(response.getBody()); } private String buildUri(ProxyExchange<byte[]> proxy, HttpServletRequest request) { String path = proxy.path().replaceFirst("/items", "/api/v1/items"); String uri = proxyService.getBaseUrl() + path; String queryString = request.getQueryString(); if (queryString != null) { uri += "?" + queryString; } return uri; } } 새로운 API를 신규 서비스로 프록시하고 싶다면, 이 패턴을 그대로 복사해서 path 변환 규칙만 바꾸면 된다. 비즈니스 로직은 전부 신규 서비스에 있고, 레거시는 인증과 라우팅만 담당한다.전달되는 헤더 전체 목록헤더 설명 소스x-user-id인증된 사용자 IDSpring Security principalx-user-company-id사용자 소속 조직 IDRepository 조회x-organization-id상위 조직 IDRepository 조회 (역할에 따라 분기)x-authorization원본 인증 토큰클라이언트 Authorization 헤더x-request-service요청 서비스명service-name 설정값x-trace-id분산 추적 IDMDCx-client-ip클라이언트 IPMDC추가로 클라이언트의 다음 헤더도 그대로 전달된다:accept, accept-encoding, accept-language, content-type, x-accept-language, x-requested-with, x-time-zone6. 회고: 배운 것들spring-cloud-gateway-mvc는 "라이트" 버전이다Spring Cloud Gateway(reactive)의 풍부한 필터 체인, hop-by-hop 헤더 자동 제거, 자동 쿼리 파라미터 전달 — 이런 것들을 기대하면 안 된다. ProxyExchange는 말 그대로 "프록시 유틸리티"일 뿐이다. 편리하지만, 내부에서 뭘 안 해주는지를 정확히 알고 보완해야 한다."로컬에서 됩니다"를 믿지 마라이번 Transfer-Encoding 이슈는 로컬에서는 절대 재현되지 않는 문제였다. 로컬은 nginx를 거치지 않고, 브라우저와 Postman은 잘못된 chunked 응답도 관대하게 처리하기 때문이다. 프록시 구현 후에는 실제 배포 환경(nginx → Tomcat 구조)에서 반드시 검증해야 한다.투명 프록시의 가치OpenFeign이었다면 API 하나를 넘길 때마다 Controller, Feign Client, Request DTO, Response DTO를 전부 만들어야 했을 것이다. ProxyExchange 덕분에 레거시에는 얇은 라우팅 코드만 남기고, 실제 비즈니스 로직은 신규 서비스에서 깔끔하게 관리할 수 있게 되었다. Strangler Fig 패턴의 취지에 가장 부합하는 선택이었다고 생각한다.삽질도 자산이다sensitive 헤더 설정, hop-by-hop 헤더 처리, query string 수동 전달 — 이 세 가지는 공식 문서에서 찾기 어려운 실전 지식이다. 특히 gateway-mvc는 reactive 버전에 비해 레퍼런스가 적다. 이런 경험들을 정리해두면 팀 내 다른 개발자들이 같은 삽질을 반복하지 않을 수 있다.

SpringBootgatewayproxymvc

Go Hard

Streamlit과 Plotly를 활용한 차계부 개발

안녕하세요. 파이썬과 Streamlit을 활용하여 차량 주행 기록과 유지비를 시각화하는 '드라이빙 대시보드' 토이 프로젝트를 진행했습니다.이번 프로젝트를 구현하면서 가장 까다로웠던 부분 중 하나는, Plotly 라이브러리의 기본 인터랙티브 기능(드래그, 줌)이 모바일이나 웹 대시보드 환경에서 오히려 사용성을 크게 해친다는 점이었습니다. 마우스 휠이나 스크롤 시 그래프가 의도치 않게 날아가 버리는 현상을 제어하기 위해, 아래와 같이 Plotly의 레이아웃 속성을 고정하는 방식을 적용했습니다. Python# Plotly 그래프 줌/드래그 원천 차단 및 레이아웃 고정 핵심 코드fig_eff.update_layout(title="연비 트렌드 및 차량 이슈 (화면 고정)",hovermode='closest',dragmode=False, # 드래그 차단xaxis=dict(tickformat="%Y년 %m월 %d일", fixedrange=True), # X축 줌 차단yaxis=dict(fixedrange=True) # Y축 줌 차단)# config 설정을 통해 상단 메뉴바 숨김 처리st.plotly_chart(fig_eff, use_container_width=True, config={'displayModeBar': False}) 단순한 데이터 입출력뿐만 아니라, Streamlit의 session_state를 활용한 상태 관리와 Supabase 연동 로직도 함께 포함되어 있습니다. 구체적인 컴포넌트 간의 작동 원리나 전체 아키텍처, 그리고 상세한 소스 코드는 아래 영상과 깃허브에 정리해 두었습니다.데이터 시각화 대시보드 구축에 관심 있으신 분들께 도움이 되기를 바랍니다.🔗 GitHub 소스 코드: https://github.com/gohard-lab/driving_dashboard▶ 구체적인 작동 원리 및 개발 과정 : https://youtu.be/uVhkTbIp7rg 

차계부차량관리자동차유지비연비전비데이터분석파이썬코딩스트림릿Python

제어쟁이

자동차 SW 표준 AUTOSAR, 핵심만 정리했습니다

자동차 SW 표준 AUTOSAR, 핵심만 정리했습니다 자동차 한 대에 ECU가 100개 이상 들어간다는 사실, 알고 계셨나요? 엔진 제어, 변속기, 브레이크, ADAS까지 — 현대의 자동차는 사실상 100개의 독립적인 임베디드 시스템이 네트워크로 연결된 거대한 복합체입니다.공급사가 바뀌면 전부 다시?문제는 여기서 시작됩니다. OEM이 인버터를 만들 공급사를 선정하면, 그 공급사의 하드웨어와 소프트웨어 아키텍처에 맞춰 개발해야 합니다. 그런데 공급사가 바뀌면? MCU가 단종되면? 차종이 바뀌면? 매번 소프트웨어를 처음부터 다시 작성해야 했습니다.이 비효율을 해결하기 위해 2003년, BMW·보쉬·컨티넨탈·다임러 등 경쟁사들이 한자리에 모여 만든 표준이 바로 AUTOSAR입니다.AUTOSAR의 핵심 — 추상화와 레이어 구조AUTOSAR의 핵심 아이디어는 단 한 단어, 추상화입니다. 소프트웨어와 하드웨어 사이에 추상화 계층을 두어, MCU가 바뀌어도 애플리케이션 코드를 한 줄도 수정할 필요가 없게 만드는 것입니다.이를 위해 AUTOSAR는 소프트웨어를 4개의 레이어로 나눕니다. 맨 아래 MCU(하드웨어), 그 위에 BSW(기본 소프트웨어), 중간에 RTE(실행 환경), 맨 위에 ASW(애플리케이션)가 올라갑니다. BSW는 다시 MCAL, ECU Abstraction, Service Layer로 세분화되어 하드웨어의 차이를 흡수합니다.SWC 모듈화와 개발 워크플로우애플리케이션은 SWC(Software Component) 단위로 개발합니다. 레고 블록처럼 모터 제어, 배터리 관리, 고장 진단 등 기능별로 모듈화하고, 표준화된 포트와 인터페이스로 연결합니다. 한번 검증된 SWC는 다른 차종에서도 그대로 재사용할 수 있습니다.실제 개발은 설계 → ARXML 설정 → 코드 생성 → 통합의 4단계로 진행됩니다. DaVinci, EB tresos 같은 전문 도구로 설계하면 BSW와 RTE 코드가 자동 생성되어, 개발자는 애플리케이션 로직에만 집중할 수 있습니다.왜 AUTOSAR인가?AUTOSAR를 도입하면 세 가지 핵심 가치를 얻습니다. 이식성 — MCU가 바뀌어도 BSW만 교체하면 되므로 재개발 비용이 획기적으로 줄어듭니다. 재사용성 — 검증된 SWC를 여러 차종에 그대로 적용할 수 있습니다. 표준화 — 전 세계 300개 이상의 기업이 같은 아키텍처, 같은 인터페이스를 사용하므로 어디서든 통하는 역량이 됩니다.물론 모든 프로젝트에서 100% 의무는 아닙니다. 하지만 전기차와 자율주행 시대로 가면서 소프트웨어 복잡도가 급격히 증가하고 있고, AUTOSAR 채택 비율은 계속 늘어나고 있습니다. 자동차 SW 개발에 관심이 있다면, 알아두면 확실한 무기가 될 것입니다.영상으로 더 자세히 보기: https://youtu.be/6g2ifSU69wQ?si=9Jpf5N2E0oopYqsx 

임베디드 · IoTAUTOSAR자동차소프트웨어임베디드전기전자모터제어자동차sw

위랩스페이스

[풀스택_인프라] LG CNS AM Inspire Camp 5기 모집

 고용노동부 K-Digital Training 과정LG CNS AM Inspire Camp 5기 모집 중 LG CNS 현직자와 함께하는 실전 프로젝트 과정.과정 설계부터 멘토링, 결과물 완성까지 직접 경험합니다.LG CNS AM 5기에서 실력으로 증명하는 엔지니어로 성장하세요. 차별화된 취업 스펙 쌓으러 가기 ▶ [ Click! ]   LG CNS AM만의 특별한 교육 혜택 📌 혜택01 | LG CNS 공식 수료증- 교육 과정을 완주한 수료생에게 LG CNS 공식 수료증을 수여 📌 혜택02 | LG CNS 채용 가산점 부여- LG CNS 및 자회사 지원 시 우수 수료생 한정 취업 가산점 부여 기회 제공 📌 혜택03 | 훈련장려금 지급- 훈련장려금 총 180만원 이상(월 최대 30만 원) 지급 📌 혜택04 | LG CNS 전문가 멘토링- LG CNS 현업 전문가와 함께하는 실무 프로젝트 멘토링 📌 혜택05 | 취업지원 / 맞춤형 프로그램 지원- 성공적인 취업을 위한 전문가의 채용 특강 및 이력서, 고퀄리티 포트폴리오 컨설팅 진행 📌 혜택06 | 교육용 장비 및 서비스 제공- LG 교육용 노트북 대여 및 클라우드 (AWS) + 메타버스 + AI 서비스 이용료 지원 📌 혜택07 | 차별화된 맞춤 교육 진행- 전공/비전공자 개별 지도- 개인별 강점 기반 포트폴리오 지원   LG CNS AM 과정을 수료하면 이렇게 성장해요! ✨프론트엔드 엔지니어“완성도 높은 인터페이스로 서비스의 첫 인상을 완성해요.”사용자 경험을 고려한 화면(UX/UI)을 설계하고, 반응형 웹 기반으로 구현합니다. ✨백엔드 엔지니어“안정적이고 확장 가능한 데이터 흐름을 설계해요.”서비스 로직을 설계하고, 데이터 처리 및 API 서버를 구축합니다. ✨클라우드 엔지니어“확장성과 안정성을 갖춘 클라우드 환경을 구성해요.”인프라 환경에서 서비스를 설계·배포·운영합니다. ✨데브옵스 엔지니어“개발과 운영을 자동화해 안정적인 서비스를 제공합니다.”CI/CD 파이프라인을 구축하고, 효율적인 배포와 운영 환경을 구현합니다.   LG CNS AM 5기, 지금 모집 중이에요! ✅ 기간 및 일정· 모집 마감 : ~ 04.05(일) 23:59※ 우선 선발 기회 제공(선착순)· 교육 기간 : 26.04.10 (금) ~ 26.10.08 (목) ✅ 수업 방식/장소· 온라인 : 메타버스 강의장· 오프라인 : 동국대 서울캠퍼스 ✅ 모집 대상· 국내외 대학(원) 졸업(예정)자· 내일배움카드 발급 가능자 ✅ 접수 방법[랜딩페이지 접속] → [우측 상단 '지금 지원하기' 클릭] → 지원서 작성/제출 ✅ 수강료· 교육비 자부담금 50만원 (*정책 변경으로 인한 자부담금 발생)· 교육 수료 시 축하금 지급 (50만 원) ✅ 교육 문의· 카카오톡 1:1 문의하기 : https://pf.kakao.com/_wbxkln

KDT국비교육프로젝트부트캠프엔지니어취업lgcns풀스택개발it

Go Hard

테슬라 FSD v12가 30만 줄의 C++ 제어 로직을 버린 이유

안녕하세요, '잡학다식 개발자'입니다. 최근 자율주행 업계뿐만 아니라 AI 생태계 전체에 큰 화두를 던진 테슬라 FSD v12의 '엔드투엔드(End-to-End) AI' 아키텍처 전환에 대해 현업 개발자의 시선으로 분석해 보았습니다.기존 시스템은 철저한 휴리스틱, 즉 아래와 같은 룰(Rule) 기반의 C++ 코드가 수십만 줄 얽혀있는 구조였습니다.Python# 기존 휴리스틱 기반 제어 (개념적 표현) def autonomous_drive(sensor_data): if sensor_data.distance_to_lead_car < 10.0 and sensor_data.speed > 50.0: return apply_brake(force=0.8) elif check_traffic_light() == 'RED': return stop_vehicle() # 수많은 Edge Case 처리를 위한 if-else의 반복... 하지만 v12부터는 제어 로직을 폐기하고, Video Stream이 거대한 신경망 네트워크를 통과해 곧바로 Control 신호를 내뱉는 구조로 변경되었습니다. 추론 단의 C++ 코드가 사라진 대신, 서버 단의 PyTorch/Python 생태계에서 수백만 건의 데이터를 학습시키는 인프라 전쟁으로 패러다임이 완전히 넘어간 것이죠.Python# End-to-End AI 기반 제어 (개념적 표현) def autonomous_drive(video_stream): # 중간 판단 로직 없이 모델이 직접 조향 및 가속도 추론 steering_angle, acceleration = e2e_neural_network_model(video_stream) return steering_angle, acceleration 단순히 AI 모델이 좋아진 것을 넘어, '디버깅이 불가능한 블랙박스 모델'을 현실의 도로 위에 올리기 위해 어떤 데이터 적인 타협과 자본의 투입이 있었는지 다루어 보았습니다. 구체적인 작동 원리와 교과서적 이론이 실제 현업에서 어떻게 다르게 작용하는지 궁금하시다면, 아래 유튜브 콘텐츠를 참고해 주시면 감사하겠습니다.https://youtu.be/aRPA-ZAaa3s 

AI 실무 활용테슬라FSD엔드투엔드자율주행딥러닝파이썬개발자아키텍처IT트렌드

ez0129

[무료 기술 세미나] AI on Edge – From Bits to Real World

온디바이스 AI의 현재와 미래를 조망하는 AI on Edge – From Bits to Real World에 여러분을 초대합니다!에너자이가 주최하는 AI on Edge – From Bits to Real World는 비트 단위 모델 최적화부터 실제 제품 및 서비스 적용 사례까지, 온디바이스 AI의 연구와 상용화를 폭넓게 다루는 자리입니다. 산학의 전문가들이 한자리에 모여 최신 기술 성과를 공유하고, 현장의 경험과 인사이트를 나눕니다.이번 행사는 에너자이의 파트너사인 Advantech과 Synaptics의 후원을 통해 무료로 진행됩니다.행사 개요일시: 2026년 3월 28일(토) 13:00–17:30장소: 서울특별시 강남구 테헤란로 138 성홍타워 3층 (드리움) Forest Hall참석 대상: 엣지 AI 유관 분야 연구자 및 산업 종사자모집 인원: 약 40명신청 링크: https://event-us.kr/enerzai/event/121735세부 일정12:30 - 13:00      행사 등록 및 안내13:00 - 13:20      인사말 및 후원사 소개 (에너자이 | 장한힘 대표님)13:20 - 13:50      1.58-Bit Quantized Whisper (에너자이 | 강창범님)13:50 - 14:00      쉬는 시간14:00 - 14:30      From Bits to Intelligence: On-Device AI and Beyond (삼성리서치 | 전용권 파트장님)14:30 - 14:40      쉬는 시간14:40 - 15:10      튜닝 친화적인 프로그래밍 언어, Nadya (에너자이 | 유은총님)15:10 - 15:20      쉬는 시간15:20 - 15:50      System-Model Co-Design for Efficient AI in the Physical World (전북대학교 | 이제민 교수님)15:50 - 17:30      네트워킹 및 마무리기타 안내주차공간은 별도로 제공되지 않습니다.공간 제한으로 인해 모집이 조기 마감될 수 있습니다.발표자, 발표 순서, 발표 주제, 발표 구성 등이 향후 변경될 수 있습니다.기타 문의는 minwoo.son@enerzai.com 로 부탁드립니다.

딥러닝 · 머신러닝AI딥러닝머신러닝온디바이스AI엣지AI세미나네트워킹

위랩스페이스

[풀스택_인프라] LG CNS AM Inspire Camp 5기 모집

고용노동부 K-Digital Training 과정LG CNS AM Inspire Camp 5기 모집 중 LG CNS 현직자와 함께하는 실전 프로젝트 과정.과정 설계부터 멘토링, 결과물 완성까지 직접 경험합니다.LG CNS AM 5기에서 실력으로 증명하는 엔지니어로 성장하세요. 차별화된 취업 스펙 쌓으러 가기 ▶ [ Click! ]   LG CNS AM만의 특별한 교육 혜택 📌 혜택01 | LG CNS 공식 수료증- 교육 과정을 완주한 수료생에게 LG CNS 공식 수료증을 수여 📌 혜택02 | LG CNS 채용 가산점 부여- LG CNS 및 자회사 지원 시 우수 수료생 한정 취업 가산점 부여 기회 제공 📌 혜택03 | 훈련장려금 지급- 훈련장려금 총 180만원 이상(월 최대 30만 원) 지급 📌 혜택04 | LG CNS 전문가 멘토링- LG CNS 현업 전문가와 함께하는 실무 프로젝트 멘토링 📌 혜택05 | 취업지원 / 맞춤형 프로그램 지원- 성공적인 취업을 위한 전문가의 채용 특강 및 이력서, 고퀄리티 포트폴리오 컨설팅 진행 📌 혜택06 | 교육용 장비 및 서비스 제공- LG 교육용 노트북 대여 및 클라우드 (AWS) + 메타버스 + AI 서비스 이용료 지원 📌 혜택07 | 차별화된 맞춤 교육 진행- 전공/비전공자 개별 지도- 개인별 강점 기반 포트폴리오 지원   LG CNS AM 과정을 수료하면 이렇게 성장해요! ✨프론트엔드 엔지니어“완성도 높은 인터페이스로 서비스의 첫 인상을 완성해요.”사용자 경험을 고려한 화면(UX/UI)을 설계하고, 반응형 웹 기반으로 구현합니다. ✨백엔드 엔지니어“안정적이고 확장 가능한 데이터 흐름을 설계해요.”서비스 로직을 설계하고, 데이터 처리 및 API 서버를 구축합니다. ✨클라우드 엔지니어“확장성과 안정성을 갖춘 클라우드 환경을 구성해요.”인프라 환경에서 서비스를 설계·배포·운영합니다. ✨데브옵스 엔지니어“개발과 운영을 자동화해 안정적인 서비스를 제공합니다.”CI/CD 파이프라인을 구축하고, 효율적인 배포와 운영 환경을 구현합니다.   LG CNS AM 5기, 지금 모집 중이에요! ✅ 기간 및 일정· 모집 마감 : ~ 04.05(일) 23:59※ 우선 선발 기회 제공(선착순)· 교육 기간 : 26.04.10 (금) ~ 26.10.08 (목) ✅ 수업 방식/장소· 온라인 : 메타버스 강의장· 오프라인 : 동국대 서울캠퍼스 ✅ 모집 대상· 국내외 대학(원) 졸업(예정)자· 내일배움카드 발급 가능자 ✅ 접수 방법[랜딩페이지 접속] → [우측 상단 '지금 지원하기' 클릭] → 지원서 작성/제출 ✅ 수강료· 교육비 자부담금 50만원 (*정책 변경으로 인한 자부담금 발생)· 교육 수료 시 축하금 지급 (50만 원) ✅ 교육 문의· 카카오톡 1:1 문의하기 : https://pf.kakao.com/_wbxkln

데이터 엔지니어링KDT국비교육프로젝트부트캠프엔지니어취업lgcns풀스택개발it

채널톡 아이콘