대기업 IT 개발자 | 보안·AI·핀테크·데이터 전문
실무에서 쌓은 노하우로, 비전공자분들도 자기만의 시스템을 직접 만들 수 있도록 돕습니다.
👨💻 실무 경력
대기업 현직 IT 개발자 (AI·클라우드·데이터·정보보안)
핀테크: 결제·NFT·STO(토큰증권) 시스템 아키텍처 설계·개발
데이터: 반도체·제조 라인 SQL·데이터 파이프라인 품질관리 솔루션 설계·개발
AI 자동화: n8n·MCP·A2A 기반 AI 워크플로 자동화 플랫폼 기획·설계
보안: 랜섬웨어 방지 솔루션, AI 웹방화벽(WAF), 대기업 모의해킹 등 다수
반값부동산(banbu.kr) CEO — 직접 기획·운영하는 플랫폼으로 실무와 비즈니스를 접목
🔑 핵심만 배우는 'IT 치트키' 강의
IT는 방대하지만, 모든 것을 알 필요는 없습니다. 자신에게 필요한 핵심만 정확히 배우고 제대로 활용하면, 누구나 고수처럼 IT를 다룰 수 있습니다.
제 강의는 이론만 나열하지 않습니다. 실무 경험과 진정성을 담아, 여러분이 시간 낭비 없이 꼭 필요한 핵심만 배우도록 돕습니다.
기술을 실제 프로젝트에 적용하는 방법
현업에서 진짜 문제를 해결하는 방법
비전공자도 스스로 사업·포트폴리오를 만드는 노하우
기술이 여러분의 삶을 바꾸는 강력한 도구가 되는 순간, 그 여정의 'IT 치트키'가 되어드리겠습니다.
감사합니다! 🎯
비즈니스 협업 및 강의 문의
✉ banbu.jh@gmail.com
講義
受講レビュー
- 枕投資法の完成:朝が楽しみになるAI株式完全自動売買 Claudeバイブコーディング
- アルゴリズムトレーディングの秘密、AIが株価を当てる方法
- 枕投資法の完成:朝が楽しみになるAI株式完全自動売買 Claudeバイブコーディング
- 枕投資法の完成:朝が楽しみになるAI株式完全自動売買 Claudeバイブコーディング
投稿
Q&A
검색 대상 종목 선정
@Taihak Kim님, 안녕하세요.선정 기준현재 25종목은 stock.py의 nasdaq_top_100 리스트에 고정된 목록입니다. 2025년 4월 프로젝트 시작 때 제가 선정했습니다.엄밀한 "시총 상위 25"는 아닙니다. 나스닥100 상위 비중 종목을 중심으로 하되, 빅테크와 반도체에 편중되지 않게 소비재(COST, PEP, SBUX, MDLZ), 헬스케어(AMGN), 산업재(HON)를 섞었습니다. 그래서 PYPL이나 MDLZ처럼 비중 순위가 낮은 종목도 들어가 있습니다.25개인 이유는 AlphaVantage 무료 플랜이 하루 25회라 감성분석을 하루에 다 돌릴 수 있는 상한이기 때문입니다.리밸런싱자동 리밸런싱은 없고, 수동으로 드물게 하는 걸 원칙으로 합니다. 저희는 대량 우량주 위주로 사전에 검증된 종목을 지정하고 운영하는 것을 목표로 했습니다. 이 시스템에서 종목 교체는 설정 한 줄이 아니라 DB 컬럼 추가, 과거 데이터 백필, ML 재학습까지 같이 가는 작업이라서요.주기는 연 1회, 나스닥100 정기 변경(12월) 이후를 권합니다. 편입 기준은 시총과 거래대금 상위 유지, 1년 이상 거래 이력, 데이터 소스 커버리지입니다. 편출은 나스닥100 제외나 유동성 급감입니다.6개월 미만으로 자주 바꾸는 건 비추천입니다. 학습 데이터가 리셋되고, 최근 잘 오른 종목만 넣는 생존편향이 커집니다.종목을 뺄 때는 보유 중인 종목은 매도가 끝난 뒤에 빼세요.종목을 바꿀 때 손대는 곳 (해당 내용은 강의를 참고해주시면 됩니다.)코드: stock.py 리스트, stock_recommendation_service.py의 STOCK_TO_TICKER와 TICKER_TO_EXCHANGE, kaggle_notebook/predict.py의 TARGET_COLUMNSDB: economic_and_stock_data와 predicted_stocks에 종목 컬럼 추가과거 데이터 백필 후 Kaggle 재학습감사합니다.
- いいね数
- 1
- コメント数
- 2
- 閲覧数
- 57
Q&A
llm_decision_logs 미적재 문의
@구구구구님, 클로드 분석이 맞습니다. 그대로 적용하셔도 될 것 같습니다.temperature 오류requirements.txt에 anthropic 상한이 없어서 새로 설치하면 1.x가 깔리고, 1.x는 temperature 인자를 받지 않아 요청 전에 TypeError가 납니다. 제 환경은 0.84.0이라 재현이 안 됐던 겁니다.51.3초 추정도 맞습니다. Opus는 즉시 실패, Sonnet은 TypeError 3회에 대기 50초입니다. Opus 실패 원인은 마지막 에러만 남는 구조라 유실됐는데, 크레딧이나 키 문제일 가능성이 큽니다. stock_scheduler.log의 api.anthropic.com POST 라인 상태코드를 보면 확인됩니다.수정 방향 1~3번은 그대로 적용하세요. Opus 4.7 이후는 API도 temperature를 거부하니 삭제가 정답입니다. 4번(모델 현행화)은 선택이고, 현재 ID도 아직 유효합니다.llm_decision_logs(a) 맞습니다. trigger-ml은 Kaggle만 돌리고 LLM은 호출하지 않습니다.(b) 맞습니다. sql/create_earnings_calendar.sql을 SQL Editor에서 실행하면 테이블 생성과 컬럼 3개 추가가 한 번에 됩니다. 코드는 LLM 실패 시에도 FAIL 행을 저장하게 되어 있어서, 오류가 났는데도 0행이면 컬럼 누락이 맞습니다."저장할 실적 일정이 없습니다"는 테이블 부재가 아니라 ALPHA_VANTAGE_API_KEY_EARNINGS 미설정 때문으로 보입니다.anon 키가 걱정되면 .env에 SUPABASE_SERVICE_ROLE_KEY를 추가하세요. 서버가 그 키를 우선 사용합니다. 해당 부분은 강의 후반부에 배포 부분에서 서비스 롤 키로 서버에 배포하는 강의가 있습니다.순서는 클로드 정리대로 SQL 실행, temperature 제거, run-buy-pipeline 실행입니다. 저장 실패를 API 응답에 노출시키는 수정도 같이 적용하시면 됩니다.추가로 막히는 부분 있으시다면 편하게 질문주세요~감사합니다.
- いいね数
- 1
- コメント数
- 2
- 閲覧数
- 43
Q&A
연동 문제
@구구구구님, 클로드가 짚은 코드 문제 세 가지는 전부 맞습니다.클로드 지적이 맞는 부분프롬프트가 v1 키를 읽습니다. USE_SCORING_V2=true면 세부 점수가 전부 0으로 찍힙니다. 제 운영 환경은 아직 v1이라 드러나지 않았던 문제입니다. 해당 부분은 제가 다른 브랜치에서 테스트하고 있습니다. 따라서 v1 기준이 맞습니다.RSI 30~50을 "매수구간 아님"으로 표기하는 것도 맞습니다. 사전필터는 65 이하를 매수구간으로 봅니다.llm_decision_logs 컬럼 3개는 sql/create_earnings_calendar.sql을 SQL Editor에서 실행하면 생깁니다.다만 "LLM이 전부 HOLD했다"는 아직 확정이 아닙니다"LLM 검토 결과 매수 대상이 없습니다"는 전원 HOLD일 때도, LLM 호출이 전부 실패했을 때도 똑같이 찍힙니다.검토에 53초 걸린 게 걸립니다. Sonnet 폴백이 temperature 오류로 3번 실패하면서 대기하는 시간이 정확히 50초입니다. 정상 응답은 보통 10~25초입니다.확인 방법은 클로드가 말한 대로입니다. Slack에 "LLM 검토 실패" 알림이 왔는지, 터미널에 "LLM 호출 전체 실패"가 찍혔는지 보세요. 그리고 pip show anthropic 결과가 1.x면 temperature 문제입니다. 신규 설치는 1.x가 깔리는데 1.x는 temperature 인자를 받지 않습니다.고치는 순서sql/create_earnings_calendar.sql 실행llm_review_service.py에서 temperature 관련 코드 삭제프롬프트 v2 대응과 RSI 라벨 수정POST /pipeline/run-buy-pipeline로 확인확인 후 여전히 문제가 발생하신다면 다시 질문주세요~감사합니다.
- いいね数
- 1
- コメント数
- 2
- 閲覧数
- 51
Q&A
5-21 질문이요!
@구구구구님, 안녕하세요. 결론부터 말씀드리면 한국투자증권 입금과는 무관합니다.왜 무관한가라우트 통합 API(run-buy-pipeline)는 주문을 내지 않습니다. KIS는 보유종목과 거래량 조회에만 쓰이고, 실패해도 빈 값으로 계속 진행합니다.매수가능금액은 LLM 검토가 끝난 뒤 실제 주문 단계에서만 확인하고, 그건 스케줄러가 돌 때 얘기입니다.stock_recommendations에 값이 있다는 건 좋은 신호입니다1단계(기술지표)가 정상이고 Supabase 쓰기 권한과 URL도 맞다는 뜻입니다. 데이터 임포트, 권한, 프로젝트 불일치는 원인에서 빠집니다.남는 건 4단계(LLM)만 안 돌았거나, 돌았는데 저장이 막힌 경우입니다.llm_decision_logs가 비는 원인, 가능성 순서후보가 0개인 경우. LLM은 후보가 1개 이상일 때만 호출되니, 응답 JSON의 3_candidate_extraction count가 0이면 비는 게 정상입니다. 시장 상황에 따라 0개인 날도 흔합니다..env에 ANTHROPIC_API_KEY가 비어 있는 경우. 이때는 로그 저장 없이 매수 차단으로 끝납니다.컬럼 3개가 없는 경우. 실적 캘린더 기능이 추가되면서 earnings_date, days_to_earnings, earnings_estimate 컬럼이 필요한데, create_all_tables.sql로만 만든 프로젝트엔 없습니다. 저장이 실패해도 print만 찍고 넘어가서 겉으론 정상처럼 보입니다. sql/create_earnings_calendar.sql을 SQL Editor에서 실행하세요.LLM 호출 자체가 실패한 경우. 응답의 llm_reasoning에 "LLM 호출 전체 실패 ... temperature"가 있으면 별도 글에 정리한 temperature 수정이 필요합니다. 참고로 이 경우에도 FAIL 행은 저장되게 되어 있어서, 후보가 있는데 테이블이 완전히 비었다면 위의 컬럼 문제가 같이 있을 가능성이 큽니다.정리하면, 응답 JSON의 후보 count와 llm_reasoning을 먼저 보시고, sql/create_earnings_calendar.sql을 실행한 뒤 다시 돌려보세요. 그래도 비면 응답 JSON을 올려주시면 이어서 봐드리겠습니다.감사합니다.
- いいね数
- 1
- コメント数
- 3
- 閲覧数
- 67
Q&A
매수 실행 시점 관련
@yundyo님, 안녕하세요. 관찰하신 내용이 정확합니다.1) 설계 의도11시반(뉴욕 10:30) 매수가 원래 설계이고, 강의에서 설명한 그대로입니다.9시 실행은 나중에 Kaggle 자동화(일일 파이프라인)를 붙이면서 추가된 겁니다. 데이터 준비만 하는 게 아니라, 준비가 끝난 직후 force=True로 시간 체크를 건너뛰고 바로 한 번 매수를 시도합니다.9시에 주문이 하나도 접수되지 않으면 11시반에 재시도하고, 하나라도 접수되면 그날 11시반은 스킵됩니다.모의투자는 프리마켓 주문을 거부하니 9시는 항상 실패하고, 11시반이 실질 매수 시점입니다. 이해하신 게 맞습니다.1-2) 제 운영장실계좌는 KIS가 프리마켓 주문을 받아줘서 대부분 9시 경로에서 매수가 끝납니다. 5월 이후 로그를 보면 21시대 접수 32건, 23시대 3건입니다.다만 이건 프리마켓이 좋아서가 아니라 force=True가 시간 체크를 우회한 결과입니다. 강의대로 10:30 매수를 원하면 파이프라인 4단계에서 주문만 빼면 되고, 저도 이 부분은 설정 옵션으로 정리하겠습니다.2) LLM 판정이 달라지는 문제두 호출의 입력 데이터는 동일합니다. 차이는 순수하게 LLM 출력의 비결정성입니다. Opus 4.8은 temperature 파라미터를 받지 않고, 이전 모델도 temperature=0이 같은 출력을 보장하진 않았습니다. 제 로그에서도 같은 날 BUY 2개와 3개로 달랐던 적이 있습니다.저는 LLM을 거부권만 있는 리스크 필터로 봅니다. 후보군과 점수는 결정적이고 LLM은 뺄 종목만 정하니, 흔들려도 매수를 줄이는 방향으로만 작용합니다.수익률 영향은 2차 문제입니다. 백테스트에서 전략 자체의 엣지가 훨씬 큰 변수였습니다.일관성이 필요하면, 11시반 재시도 때 당일 llm_decision_logs에 판정이 있으면 재호출 없이 재사용하는 방식을 권합니다. 지금은 두 번째 판정이 첫 번째를 덮어쓰는데, 이것도 실행 시각을 남기도록 고칠 예정입니다.
- いいね数
- 1
- コメント数
- 1
- 閲覧数
- 41
Q&A
Opus/Sonnet 버전 관련 문의
안녕하세요, @yundyo님.분석하신 내용은 정확하십니다. 순서대로 답변 드리겠습니다.1. 강의 버전: 운영 서버는 claude-opus-4-8 + 폴백 claude-sonnet-4-6입니다. 이 둘은 thinking을 생략하면 사고 과정이 꺼져서 max_tokens=2000과 content[0].text로도 문제없이 돌았고, 그래서 그 이슈는 겪지 않았습니다. Opus 5 / Sonnet 5는 생략해도 사고 과정이 켜지도록 기본값이 바뀐 것이라, 겪으신 현상은 정상입니다.2. 하신 조치(텍스트 블록만 파싱, max_tokens 16000)는 맞습니다. 하나만 추가로 확인해주세요. 5 시리즈는 temperature를 지원하지 않아서 보내면 anthropic.BadRequestError(HTTP 400, invalid_request_error)로 요청이 거부되고, 우리 코드는 이 예외를 재시도 없이 다음 모델로 넘기므로 결국 매수가 차단됩니다. MODELS_WITHOUT_TEMPERATURE에 두 모델을 넣어 주세요.3. effort: 사고 깊이를 조절하는 정식 파라미터입니다. 옛 방식 budget_tokens는 5 시리즈에서 같은 예외로 거부됩니다.message = client.messages.create( model="claude-opus-5", max_tokens=16000, thinking={"type": "adaptive"}, output_config={"effort": "medium"}, # low / medium / high(기본) / xhigh / max messages=[{"role": "user", "content": prompt}], )BUY/HOLD JSON을 내는 정형화된 판단이라 medium부터 시작해 며칠 판정 로그를 보며 조정하시면 됩니다. thinking을 끄는 것보다 effort를 낮추는 쪽이 품질/비용 모두 좋을 것 같습니다. output_config는 최신 SDK가 필요하니 pip install -U anthropic 해주세요.4. 비용: Opus 5 단가는 4.8과 같지만 사고 과정 토큰이 출력으로 과금되니 호출당 비용은 늘어날 것입니다. Sonnet 5는 단가는 낮아도 토크나이저 변경으로 토큰 수가 약 30% 늘어납니다. 응답의 usage를 며칠 기록해 보고 effort를 정하시면 될 것 같습니다.저는 당분간 4.8 + 4.6을 유지하고, 위 설정으로 판정 로그를 비교한 뒤 전환할 계획입니다.추가로 질문있으시다면 편하게 문의 주세요~감사합니다.
- いいね数
- 1
- コメント数
- 2
- 閲覧数
- 58
Q&A
섹션2 질문이요
세 가지 모두 답 드릴게요.1. localhost:8000/docs 는 python run.py 으로 서버가 켜져 있을 때만 열립니다.그 페이지는 인터넷에 있는 사이트가 아니라, 여러분 컴퓨터에서 실행 중인 FastAPI 서버가 직접 띄워 주는 화면(Swagger UI)입니다. 터미널을 닫거나 Ctrl+C 로 서버를 끄면 접속이 안 되는 게 정상입니다. 그리고 지금 접속이 된다는 건 서버가 끝까지 정상 기동됐다는 뜻이니, 지난번 42501 에러는 해결된 겁니다.2. 그 문구는 에러가 아니라 안내라서 SQL 을 아무리 실행해도 계속 뜹니다.SQL 은 Supabase 데이터베이스 쪽을 바꾸는 것이고, 이 문구는 내 컴퓨터의 .env 에 SUPABASE_SERVICE_ROLE_KEY 가 비어 있으면 무조건 출력됩니다. 둘은 서로 관계가 없습니다. 강의 기본 구성(anon 키 + RLS 끄기)에서는 항상 뜨는 게 맞고, 무시하셔도 됩니다. 다만 SQL 에서 DISABLE ROW LEVEL SECURITY 를 economic_and_stock_data 한 테이블에만 넣으셨는데, 나중에 추천 종목이나 토큰을 저장할 때 다른 테이블에서 같은 42501 에러가 납니다. sql/errorfix.sql 파일을 통째로 복사해 새 쿼리창에 붙여넣고 Run 한 번 더 해 주세요. 테이블 9개가 한 번에 처리되고 여러 번 실행해도 안전합니다. 아래 쿼리로 모든 테이블의 rowsecurity 가 false 인지 확인하면 끝입니다.select tablename, rowsecurity from pg_tables where schemaname = 'public';3. Ctrl+클릭이 안 되는 건 VS Code 가 아직 "이 프로젝트의 파이썬"을 모르기 때문인 경우가 대부분입니다. 순서대로 확인해 보세요.왼쪽 확장(Extensions) 탭에서 Python 과 Pylance 가 설치돼 있는지 확인합니다. 없으면 설치하고 VS Code 를 재시작합니다.File → Open Folder 로 banbu-stocktrading-final 폴더 자체를 엽니다. 파일 하나만 열거나 상위 폴더(Desktop)를 열면 from app.services ... 같은 import 를 못 찾아서 이동이 안 됩니다.Ctrl+Shift+P → Python: Select Interpreter → run.py 를 실행하는 파이썬을 고릅니다. 지난번 에러 로그 경로로 보면 C:\Users\dbsxo\AppData\Local\Programs\Python\Python312\python.exe 입니다. 오른쪽 아래 상태바에 Python 3.12.x 가 표시되면 된 겁니다.몇 초 기다렸다가(상태바에서 Pylance 분석이 끝나면) 함수 이름 위에서 Ctrl+클릭 또는 커서를 올리고 F12 를 눌러 보세요.그래도 안 되면 import 줄에 노란 물결 밑줄이 있는지, 상태바 오른쪽 아래에 Python 버전이 보이는지 스크린샷을 올려 주시면 바로 봐 드리겠습니다.추가로 궁금한 부분이 있으시다면 또 편하게 문의 주세요~감사합니다.
- いいね数
- 1
- コメント数
- 2
- 閲覧数
- 65
Q&A
섹션1.9 질문입니다!
안녕하세요, @구구구구님.로그를 보니 원인이 명확합니다. 놓치신 건 .env가 아니라 Supabase의 RLS(Row Level Security) 비활성화 단계입니다.1. SUPABASE_SERVICE_ROLE_KEY 미설정은 에러가 아닙니다.강의에서 설정한 적 없는 값이 맞습니다. 이 줄은 "지금 anon 키를 쓰고 있으니 RLS가 켜져 있으면 쓰기가 막힐 수 있다"는 안내 문구이고, 강의 기본 구성(anon 키 + RLS OFF)에서는 항상 뜨는 정상 로그입니다.2. 실제 원인은 그 아래 에러입니다.new row violates row-level security policy for table "economic_and_stock_data" (42501)은 테이블에 RLS가 켜져 있는데 정책이 없어서 anon 키의 INSERT가 거부된 것입니다. RLS가 켜진 테이블은 조회도 빈 결과를 돌려주기 때문에, 서버가 데이터가 없다고 판단해 2006-01-01부터 다시 넣으려다 막힌 것이 로그에 그대로 보입니다. README 5-4 단계를 건너뛰었거나, Table Editor에서 테이블을 새로 만들면(기본값 RLS ON) 이렇게 됩니다.3. 해결 방법Supabase 대시보드 → SQL Editor 를 엽니다.프로젝트의 sql/errorfix.sql 파일 내용을 통째로 붙여넣고 Run 합니다. 테이블 권한(GRANT), 모든 테이블 RLS 비활성화, id 시퀀스 재동기화가 한 번에 처리됩니다.다시 python run.py 를 실행합니다.확인은 SQL Editor에서 아래를 실행해 모든 테이블의 rowsecurity가 false인지 보시면 됩니다.select tablename, rowsecurity from pg_tables where schemaname = 'public';5-3 단계에서 CSV를 임포트하셨다면 재시작 후에는 마지막 날짜부터 이어서 수집합니다. 그래도 2006-01-01부터 시작한다면 CSV 임포트가 안 된 상태이니 5-3 단계를 다시 확인해 주세요.참고로 나중에 서버를 실제 배포할 때는 반대로 RLS를 켜고 .env에 SUPABASE_SERVICE_ROLE_KEY를 넣는 방식으로 바꿉니다. 그 내용은 배포/보안 문서(16번)에서 다루니 지금 단계에서는 신경 쓰지 않으셔도 됩니다.혹시 해결이 안되시면 편하게 다시 문의주세요~감사합니다.
- いいね数
- 1
- コメント数
- 3
- 閲覧数
- 86
Q&A
Kaggle 노트북(predict.ipynb) 관련
안녕하세요, @yundyo님.아주 정확하게 분석하셨습니다. 결론부터 말씀드리면 잘못하신 부분은 없고, 현재 코드가 의도한 동작이 맞습니다.1. 설정을 빠뜨리신 게 아닙니다.Kaggle Secrets(UserSecretsClient)는 Kaggle 웹 UI에서 "Save & Run All"로 실행한 버전에만 붙습니다. 우리 서버처럼 kaggle kernels push(API)로 새 버전을 올리면 그 버전에는 Secrets가 따라오지 않아서 get_secret()이 Connection error로 실패합니다. kernel-metadata.json에 Secrets를 지정하는 옵션도 없습니다. 이건 Kaggle 쪽 제한이고 아직 해결되지 않은 이슈입니다. 등록하신 Secrets 이름과 위치는 모두 정상입니다.2. 네, 의도한 설계입니다.그래서 서버(ml_trigger_service.push_kernel)가 push 직전에 .env의 SUPABASE_URL과 service_role 키를 노트북 첫 셀에 직접 넣어서 올립니다. predict.py는 환경변수를 먼저 읽기 때문에 자동 실행에서는 항상 이 주입값이 쓰이고, 등록하신 Secrets는 UI에서 수동 실행할 때와 Kaggle이 이 문제를 고쳤을 때를 위한 폴백입니다. Kaggle에서 소스를 열었을 때 첫 셀에 실제 값이 보이는 것이 정상입니다.3. 대신 아래 세 가지는 꼭 지켜 주세요. 노트북에 들어가는 키는 RLS를 우회하는 service_role 키입니다.노트북을 반드시 Private로 유지하고, Public 전환·링크 공유·협업자 추가를 하지 마세요. 버전 히스토리에도 키가 남습니다.kaggle_notebook/predict.ipynb는 .gitignore에 있습니다. 예전에 clone하셔서 아직 git이 추적 중이면 git rm --cached kaggle_notebook/predict.ipynb 후 커밋해 주세요. git ls-files kaggle_notebook에 predict.ipynb가 안 나오면 정상입니다.혹시 노트북이 공개됐거나 ipynb를 어딘가 올리신 적이 있다면 Supabase Dashboard → Project Settings → API에서 service_role 키를 재발급하고 .env를 갱신하세요.참고로 노트북 소스에 키를 남기고 싶지 않다면 Kaggle 공식 포럼 가이드처럼 비공개 Dataset에 키 파일을 올려 dataset_sources로 붙이는 방법도 있습니다. 다만 신뢰 경계는 본인 Kaggle 계정으로 동일하고 설정 단계만 늘어나서 강의에서는 주입 방식을 채택했습니다.제가 최근에 급한 일 처리로 답변이 다소 늦어서 죄송합니다.혹시 해결이 안되시거나 추가로 궁금한 부분이 있으시다면 언제든 편하게 질문 주세요~좋은 질문 주셔서 감사합니다.
- いいね数
- 1
- コメント数
- 2
- 閲覧数
- 61
Q&A
git bash .env
안녕하세요, @무무님.아래와 같이 답변 드립니다.1. "헬로" 테스트가 안됨.안 되는 원인은 명령어를 실행한 터미널이 CMD나 PowerShell이기 때문일 것 같습니다. 문서에 있는 curl 명령은 Git Bash 전용 문법(작은따옴표 ', 줄 끝의 \)이라 CMD/PowerShell에 붙여넣으면 그대로 깨집니다.방법 A : Git Bash에서 실행, 줄바꿈 없는 한 줄 버전:curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' https://hooks.slack.com/services/본인/웹훅/URL메시지는 웹훅을 만들 때 선택했던 바로 그 채널에 뜹니다. 다른 채널이나 다른 워크스페이스를 보고 있으면 안 보입니다.invalid_payload → 따옴표가 깨진 것. 방법 B : 터미널 종류 상관없이 (CMD/PowerShell/Git Bash 모두 동일하게 동작, 프로젝트 venv 활성화 상태에서):python -c "import requests; print(requests.post('https://hooks.slack.com/services/본인/웹훅/URL', json={'text':'hello'}).text)"ok가 출력되고 채널에 hello가 뜨면 성공입니다.2. .env에 SLACK_WEBHOOK_URL 적는 곳이 없어요원래 없는 게 정상입니다. .env는 미리 빈칸이 준비된 파일이 아니라 직접 전역에서 사용할 변수를 추가하는 파일이에요. VS Code(또는 메모장)로 프로젝트 루트의 .env(KIS_APPKEY 등을 적어둔 그 파일)를 열고 맨 아래에 두 줄을 추가하세요.SLACK_WEBHOOK_URL=https://hooks.slack.com/services/본인/웹훅/URLSLACK_NOTIFY_LEVEL=info= 양옆에 공백 없이, URL에 따옴표 없이 그대로 붙입니다.저장 후 서버(python run.py)를 재시작해야 반영됩니다.아직 웹훅이 없으면 비워둬도 됩니다. 알림만 조용히 꺼질 뿐 에러는 안 납니다.3. Git Bash에 붙여넣기가 안 돼요Git Bash는 Ctrl+V가 기본적으로 안 됩니다. 아래 방법 중 하나를 쓰세요.- Shift + Insert - 마우스 오른쪽 클릭 - 마우스 가운데 휠 클릭- Ctrl + Shift + V그래도 안 되면 창 왼쪽 위 아이콘 클릭 → Options → Keys에서 "Ctrl+Shift+letter shortcuts" 체크. 가장 편한 대안은 VS Code 통합 터미널(Ctrl+`)을 쓰는 것입니다. VS Code에서는 바로 Ctrl+V가 그대로 됩니다.또, 질문 있으시다면 편하게 문의주세요.감사합니다.
- いいね数
- 1
- コメント数
- 1
- 閲覧数
- 65




