[문의] Statusline
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
안녕하세요 첨부 이미지와 같이 statusline을 설치했는데 프로젝트명과 모델명이 안 보입니다. 혹시 해결방법을 알려주실 수 있으실까요?
- react
- next.js
- cursor
- tailwindcss
- claude
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
안녕하세요 첨부 이미지와 같이 statusline을 설치했는데 프로젝트명과 모델명이 안 보입니다. 혹시 해결방법을 알려주실 수 있으실까요?
해결됨
토스 개발자와 함께하는 Data Workflow Management 기반의 대용량 데이터 처리 설계 패턴
dynamicDag from datetime import datetime, timedelta from airflow import DAG from airflow.operators.python import PythonOperator from db_utils import execute_query import logging def log_task_start(message): logging.info(f"[START] {message}") def log_task_end(message): logging.info(f"[END] {message}") # 분석할 주식 종목 리스트 (설정으로 관리) STOCK_SYMBOLS = ['AAPL','GOOGL','MSFT','AMZN','TSLA'] default_args = { 'owner': 'data-team', 'depends_on_past': False, 'start_date': datetime(2024, 1, 1), 'email_on_failure': False, 'email_on_retry': False, 'retries': 1, 'retry_delay': timedelta(minutes=5), } def analyze_stock_data(symbol, **context): """주식 종목에 대해서, 최근 30일간의 주식 데이터를 분석""" log_task_start(f"주식 분석 - {symbol}") query = """ SELECT symbol, AVG(price) as avg_price, MAX(price) as max_price, MIN(price) as min_price, SUM(volume) as total_volume, COUNT(*) as trading_days FROM stock_prices WHERE symbol = %s AND trade_date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) GROUP BY symbol """ result = execute_query(query, [symbol]) if result: data = result[0] print(f"{symbol} 분석 결과:") print(f" 평균 가격: ${data[1]:.2f}") print(f" 최고 가격: ${data[2]:.2f}") print(f" 최저 가격: ${data[3]:.2f}") print(f" 총 거래량: {data[4]:,}") print(f" 거래일수: {data[5]}일") log_task_end(f"주식 분석 - {symbol}") return result def create_stock_dag(symbol): """개별 주식에 대한 DAG 생성 함수""" dag_id = f'stock_analysis_{symbol.lower()}' dag = DAG( dag_id, default_args=default_args, description=f'{symbol} 주식 데이터 분석 DAG', schedule='@daily', catchup=False, tags=['dynamic', 'stock', 'analysis', symbol] ) # 데이터 품질 체크 태스크 def check_data_quality(**context): query = """ SELECT COUNT(*) as count FROM stock_prices WHERE symbol = %s AND trade_date = CURDATE() - INTERVAL 1 DAY """ result = execute_query(query, [symbol]) logging.info(f"{symbol} 데이터 품질 체크: {result[0][0] if result else 0}") return result data_quality_check = PythonOperator( task_id=f'check_data_quality_{symbol.lower()}', python_callable=check_data_quality, dag=dag ) # 주식 분석 태스크 analyze_task = PythonOperator( task_id=f'analyze_{symbol.lower()}', python_callable=analyze_stock_data, op_kwargs={'symbol': symbol}, dag=dag ) # 결과 저장 태스크 def save_results(**context): query = """ INSERT INTO daily_stats (symbol, summary_date, avg_price, total_volume, trade_count) SELECT %s, CURDATE() - INTERVAL 1 DAY, AVG(price), SUM(volume), COUNT(*) FROM stock_prices WHERE symbol = %s AND trade_date = CURDATE() - INTERVAL 1 DAY ON DUPLICATE KEY UPDATE avg_price = VALUES(avg_price), total_volume = VALUES(total_volume), trade_count = VALUES(trade_count) """ result = execute_query(query, [symbol, symbol]) logging.info(f"{symbol} 분석 결과 저장 완료") return result save_results = PythonOperator( task_id=f'save_analysis_{symbol.lower()}', python_callable=save_results, dag=dag ) # 태스크 의존성 설정 data_quality_check >> analyze_task >> save_results return dag # Dynamic DAG 생성 # 각 주식 종목에 대해 별도의 DAG 생성 for symbol in STOCK_SYMBOLS: dag_id = f'stock_analysis_{symbol.lower()}' globals()[dag_id] = create_stock_dag(symbol) CrossDag (트리거 센서) from datetime import datetime, timedelta from airflow import DAG, Dataset from airflow.operators.python import PythonOperator from airflow.operators.trigger_dagrun import TriggerDagRunOperator from airflow.sensors.external_task import ExternalTaskSensor from db_utils import execute_query import logging #기본 설정 default_args = { 'owner': 'data-team', 'start_date': datetime(2024, 1, 1), 'retries': 1, 'retry_delay': timedelta(minutes=2), } # ======================================================== # TriggerDagRunOperator # ======================================================== def process_data(**context): """간단한 데이터 처리""" logging.info("데이터 처리 시작") query = "SELECT COUNT(*) FROM stock_prices" result = execute_query(query) count = result[0][0] if result else 0 logging.info(f"처리된 레코드 수 : ${count}") return {"record_count": count} trigger_dag = DAG( 'trigger_example_dag', default_args=default_args, description='TriggerDagRunOperator 예제', schedule='@daily', catchup=False, tags=['cross-dag', 'trigger'] ) process_task = PythonOperator( task_id='process_data', python_callable=process_data, dag=trigger_dag ) #다른 DAG를 트리거 (가장 기본적인 사용법) trigger_next_dag = TriggerDagRunOperator( task_id='trigger_sensor_dag', trigger_dag_id='sensor_example_dag', wait_for_completion=False, # 완료를 기다리지 않음 dag=trigger_dag ) process_task >> trigger_next_dag # ======================================================== # ExternalTaskSensor # ======================================================== # 두 번째 DAG: 외부 태스크 대기 def analyze_triggered_data(**context): """트리거된 후 분석 작업""" logging.info("외부 태스크 완료 후 분석 시작") # 간단한분석로직 analysis_result = {"status": "completed", "timestamp": str(datetime.now())} logging.info(f"분석 완료: {analysis_result}") return analysis_result sensor_dag = DAG( 'sensor_example_dag', default_args=default_args, description='ExternalTaskSensor 예제', schedule=None, # 트리거로만 실행됨 catchup=False, tags=['cross-dag', 'sensor'] ) # 외부 DAG의 태스크 완료를 기다림 def get_most_recent_dag_run(dt): """가장 최근의 DAG 실행을 찾는 함수""" from airflow.models import DagRun from airflow.utils.session import provide_session @provide_session def get_recent_run(session=None): recent_run = session.query(DagRun).filter( DagRun.dag_id == 'trigger_example_dag', DagRun.state == 'success' ).order_by(DagRun.execution_date.desc()).first() if recent_run: return recent_run.execution_date return dt return get_recent_run() wait_for_external_task = ExternalTaskSensor( task_id='wait_for_process_data', external_dag_id='trigger_example_dag', # 기다릴 DAG external_task_id='process_data', # 기다릴 태스크 execution_date_fn=get_most_recent_dag_run, #최근성공한 실행 DAG timeout=60, # 1분 타임아웃 poke_interval=5, # 5초마다 확인 allowed_states=['success'], #성공 상태만 기다림 dag=sensor_dag ) analyze_task = PythonOperator( task_id='analyze_triggered_data', python_callable=analyze_triggered_data, dag=sensor_dag ) wait_for_external_task >> analyze_task # ======================================================== # Dataset Denpendencies # ======================================================== # Dataset 정의 (Dataset Dependencies 용) market_data_dataset = Dataset("market_data") analysis_dataset = Dataset("analysis_result") def create_market_data(**context): """마켓 데이터를 생성하고 Dataset을 업데이트""" logging.info("마켓 데이터 생성 시작") # 실제 데이터 생성 로직 query = """ SELECT symbol, AVG(price) as avg_price FROM stock_prices WHERE trade_date = CURDATE() - INTERVAL 1 DAY GROUP BY symbol LIMIT 3 """ result = execute_query(query) market_data = [] if result: for row in result: market_data.append({"symbol": row[0], "avg_price": float(row[1])}) logging.info(f"생성된 마켓 데이터: {market_data}") return market_data dataset_producer_dag = DAG( 'dataset_producer_dag', default_args=default_args, description='Dataset Dependencies - 생산자', schedule='@daily', catchup=False, tags=['cross-dag', 'dataset', 'producer'] ) create_data_task = PythonOperator( task_id='create_market_data', python_callable=create_market_data, outlets=[market_data_dataset], # Dataset 업데이트 알림 dag=dataset_producer_dag ) # Consumer def consume_market_data(**context): """생성된 마켓 데이터를 소비하여 분석""" logging.info("마켓 데이터 소비 및 분석 시작") # Dataset이 업데이트되면 자동으로 실행됨 query = "SELECT COUNT(DISTINCT symbol) FROM stock_prices" result = execute_query(query) symbol_count = result[0][0] if result else 0 analysis = { "total_symbols": symbol_count, "analysis_time": str(datetime.now()), "status": "Dataset 기반 분석 완료" } logging.info(f"Dataset 기반 분석 결과: {analysis}") return analysis def generate_final_report(**context): """최종 리포트 생성""" logging.info("최종 리포트 생성") ti = context['ti'] analysis = ti.xcom_pull(task_ids='consume_market_data') report = f"Dataset 기반 리포트: {analysis.get('total_symbols', 0)}개 심볼 분석 완료" logging.info(report) return report dataset_consumer_dag = DAG( 'dataset_consumer_dag', default_args=default_args, description='Dataset Dependencies - 소비자', schedule=[market_data_dataset], # Dataset이 업데이트되면 실행 catchup=False, tags=['cross-dag', 'dataset', 'consumer'] ) consume_task = PythonOperator( task_id='consume_market_data', python_callable=consume_market_data, outlets=[analysis_dataset], # 다음 Dataset 업데이트 dag=dataset_consumer_dag ) report_task = PythonOperator( task_id='generate_final_report', python_callable=generate_final_report, dag=dataset_consumer_dag ) consume_task >> report_task
미해결
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
안녕하세요 Header.jsx 수정중 궁금한점이 있어서 질문드립니다! new Date() 함수는 날짜를 가져오는 함수라 리렌더링이 계속 될것같은데 memo 를 사용하면 리렌더링이 안되는건가요 ??
미해결
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
지금 깃허브도 만들었고 PS D:\programming\java_kotlin\Java_Spring_Library_Application\library-app\library-app> git push --set-upstream origin master remote: Invalid username or token. Password authentication is not supported for Git operations. fatal: Authentication failed for ' https://github.com/ej123123123/library-app.git/ ' 이렇게 뜨면서 깃허브 push가 안되는데 왜그럴까요
해결됨
수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
클러스터링 에이전트까지 진행을 했는데요. 익스큐트 시키면 클러스터링에서 멈추지 않고 계속 돌아가네요. 하도 오래동안 돌아가서 멈췄더니 저렇게 숫자가 보이구요. 혹시나해서 다시 진행해봐도 또 계속 클러스터링에서 돌아갑니다. 뭐가 문제일까요?
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
안녕하세요. 현재 섹션4까지 학습하고 퀴즈를 풀었는데, 퀴즈에 파일명이 잘못되어 있어 제보합니다. CLAUDE.md 인데 cloud.md 라고 퀴즈에 나오네요. (아래 캡쳐된 2개의 문항에 이렇게 나옵니다) 학습 자체에 큰 지장은 없지만, 그래도 알려드립니다.
미해결
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
제가 잘못구현한건지 같은 책 이름으로 여러개의 책 이름이 들어가는 거 같은데 이건 상관없나요? 책등록은 여러개 되는데 그에 따라서 대출은 하나밖에 안되는데 예를 들면 클린코드를 3개 등록할 수 있는데, 3개 등록해도 대출은 1개밖에 안돼요
미해결
포트폴리오 어나더레벨 | 합격하는 이력서 작성법
강의 감사합니다. 강의자님의 포트폴리오를 보면서 얼마나 많이 노력하셨는지가 보입니다 -- 공유해주신 포트폴리오를 제 상황에 맞게 하려고 하는데요 ! 질문이 있습니다. 저는 대회를 나간 경력이없고 신입이라 그런지 공유해주신 포폴에 무엇을 쓰면 좋을지 조언듣고 싶습니다. 음 제 지금 상황은 비전공자이고,, react.js 블로그 포폴 하나 혼자 강의 보면서 만들었는데 어떻게 어필하면 좋을까요 .. 자기소개서는 포트폴리오에 올리지 않는게 좋을까요 ? 방향잡기가 쉽지가 않네요
미해결
죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
형 코드 보고 있는데 아래와 같이 public static class로 되어 있어. 이게 무슨 의미야 ? 따로 static 메소드는 없는거 같은데
미해결
실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
FE에서 모킹을 포함한 통합 테스트를 진행할 때, API 요청 전까지의 동작 API 요청 API 응답 API 응답에 따른 화면 변환 1, 4는 테스트에서 주로 다루고 있고, 3은 모킹으로 처리하고 있는데, 2번의 경우, 예를 들어 화면에서 필터로 { name: "apple", limit: 10 } 를 설정하고 요청이 발생했으면, request의 parameter에 이런 요청이 도달했다는 것 까지 검증하면 좋을지가 궁금합니다. 생성/삭제/수정과 같은 API가 포함된 경우 동일 GET API라도 다른 응답이 반환되어야 되는 경우가 있어, 해당 테스트 시 응답 자체를 override해서 모킹하여서 작성하였는데, 이 경우 사실상 API 응답과 API 응답에 따른 화면 변환은 테스트가 성공하는 채로 고정하는데, 실제 요청이 올바르게 이루어졌는지는 검증하지 못하는 것 같아서요.
해결됨
비전공자도 이해할 수 있는 Docker 입문/실전
'[보충 자료] Windows에서 lsof, kill, sudo 명령어가 작동하지 않을 때 대처 방법' 여기서 관리자 권한으로 실행 부분 이미지가 저렇게 보입니다.
해결됨
스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. @Query("select c from CommentV2 c where c.commentPath.path = :path") Optional<CommentV2> findByPath(@Param("path") String path); 위와 같은 방식으로 조회를 하면 인덱스 서치가 되지 않는 것 아닌가요? 아래와 같은 방법으로 해야 할 것 같은데.. @Query("select c from CommentV2 c where c.articleId = :articleId and c.commentPath.path = :path") Optional<CommentV2> findByPath( @Param("articleId") Long articleId, @Param("path") String path); 답변 부탁 드립니다.
미해결
Spring WebFlux + LLM 실전 구현
강의 제작해주셨을 때는 gemini flash 기본 모델 버전이 2.0 이었던거 같은데 2.5로 최근에 업데이트가 된 거 같네요. webClient 요청 uri에서도 버전을 2.5로 명시를 해줘야 정상적으로 요청 응답이 오는데 다른 분들 참고하시면 좋을 거 같아 올려봅니다.
해결됨
수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
도메인에서 선생님 따라서 분명히 등록하고 UI가 바뀐 프록시를 접속해서 해보면 오류가 납니다 ㅠㅠ root를 빼고 도메인만 넣어도 오류가 나는데 왜이런걸까요...
해결됨
초심자를 위한 친절한 Java 한바퀴
완강했습니다! 좋은 강의 감사합니다. 소스코드 혹시 깃헙 등에서 제공이 가능한지 궁금합니다.
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
24강 강의 관련, 몇가지 추가 문의드립니다. 윈도우에서 Cursor 에디터 실행후, Ctrl+ESC 했을때, 강의화면과 같이 우측에 Clause Code 가 열리지 않네요. 단축키를 설정해야 할까요? (24강 4분 15초 강의화면) Cursor 에디터 실행후, Terminal 창을 열고, claude 실행한 이후 콘솔 입력은 정상적으로 동작합니다. 그런데, Cursor 에디터 오른쪽 메뉴를 통해 "Claude Code:Open" 을 실행했을때는 챗 화면만 보이고, 강사님 강의 화면처럼 Claude 콘솔 입력 화면은 안나오네요. (24강 4분 21초 강의화면) 아래 화면에서 Anthropic Consol 선택후 로그인 시도시, $5불 추가 팝업이 뜨는데, 이 비용을 지불하면 강사님 화면처럼 볼수 있는 걸까요?
해결됨
한 입 크기로 잘라먹는 Next.js
Vercel에 서버 배포 후 api를 호출하면, 404에러가 뜹니다 ㅠㅠ 코드는 바뀐게 없어서, 로컬에서 api 호출은 잘되는데, 배포만 하면 안되네요... swagger도 배포사이트에서는 안되는게 맞을까요? 로컬에 있는 코드랑 바꾼거없이 그대로 배포했는데 로컬에서는 swagger도 접속 잘됩니다. 혹시 .env에 있는걸 setting에서 직접 입력해줘야 하나요? 확인해보니 배포된 서버 네트워크에서 스웨거로 접속하면 다음과 같이 번들파일과 css를 불러올 때 404에러가 발생합니다... 아래는 배포된 서버 url입니다. https://onebite-books-server-three-tau.vercel.app/
해결됨
수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
박사님. 워드프레스 발행이 어느정도 구현이 되고 있는데요. 모바일로 확인하면, 블로그 본문은 모바일에 맞게 잘 보이나, 블로그 첫 화면은 수정을 해야할거 같은데, 어떻게 하면 될까요? 지피티에 물어보면서 이래저래 수정하는데, 잘 안되네요 ㅠ
해결됨
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
25강 "프로필 웹사이트" 앱을 구현하는 중에 "Limit reached" 코멘트와 함께 더이상 강의를 진행하지 못했네요. claude 실행후 plan 모드에서 "프로필 웹사이트" 앱 만들기를 처음 시도시, '배포' 단계(무려 7단계) 까지 언급되길래, 단계를 줄였습니다. 이후, 개발 환경 (npm 인스톨, 로컬 서버 실행...) 단계가 언급되고, SNS 코드 포함하여, 앱을 만드는 과정 등에서 html 코드를 무려 800줄 가까이 만들고, 파일을 분리하고 html 을 python 과 연계하는 코드까지 만들더니 limit 에 도달해서, "프로필 웹사이트" 앱을 완성하지 못했습니다. ㅠㅜ claude pro 구독해서 사용중입니다. 강의 과정의 앱 만들기는 사실 개념 이해 및 실습이 중요할거 같은데, "프로필 웹사이트 만들어줘:" 보다는 좀 더 구체적으로 프롬프트 입력을 통해 간단한 앱을 만들수 있도록 유도되면 좋겠습니다 ㅠㅜ
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
안녕하세요! 강의와 같이 esc + Ctrl 눌러도 클로드 터미널이 즉시 안 열리고 강의와 같이 오른쪽 위에 클로드 로고도 보이지않습니다. 익스텐션은 활성화되어있는 걸 확인했습니다. 고치는 방법이 있을까요? 일단 클로드를 직접 터미널에서 열어 사용중입니다.