묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실리콘밸리 엔지니어와 함께하는 Apache Airflow
apache airflow 설치하기 질문
안녕하세요mac에서 apache 설치하려고 하는데, Apache Airflow 설치하기 강의가learn-apache-airflow-main.zip파일 기반으로 진행되는 걸까요?일단 강의환경에 맞춰서 python 3.10 & airflow 2.6.2 로 가상환경 생성해서 하고있는데 강의에서보이는 파일목록이 따로 생성되지 않아서 문의드립니다..
-
미해결아바타 커뮤니티앱 만들기 (React Native Expo)
백엔드
안녕하세요, 강의 잘 듣고 있습니다!백엔드가 처음이라.... Git 관리 관련하여 질문드립니다. 제공해주신 백엔드 서버 폴더를 GitHub에 연동해도 괜찮을까요?백엔드 서버도 별도 저장소로 관리하고 싶은데 제공해주신 파일을 그대로 올려도 되는지 궁금합니다.
-
미해결
다음 AI 챌린지 관련 질문드립니다.
안녕하십니까. 스승님. 다음 유니티 AI 챌린지 주제가 정해졌는지, 정해지지 않았다면 pvp관련 컨텐츠도 가능한지 궁금합니다.다음 챌린지는 12월 말에 모집~1월 말 강의 시작이 맞는건가요?
-
해결됨[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)
전체적으로 프롬프트로 나온 결과값이 너무 달라요.
전체적으로 프롬프트로 나온 결과값이 너무 달라서그냥 우선 강의를 듣고 잇긴한데 cursor 버젼때문인지.. Sonnet버젼 4로 시도했는데 실행이 안되서 auto로 그냥 자동 AI툴 돌려서 했더니 강사님이랑 결과값이 너무 품질이 떨어지는 결과가 나오고.pro로 업그레이드 해야 할지..이게 씽크가 어느정도 맞아야 진도를 맞출거 같은데 말이죠. 어떻게 해야 하나요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계 매핑 질문드립니다.
강의 13:30분 부터 설명하시는 부분에 대한 질문입니다.해당 부분은 Member의 팀 값을 변경했을때 DB의 Member의 외래키(TEAM_ID)가 변경되어야하는지, Team의 멤버들을 업데이트 했을 때 외래키 값이 업데이트 돼야하는지에 대한 내용인데요.전자는 코드상으로member.setTeam(team)이 될것이고후자는team.getMembers().addMember(member)가 될텐데요. 전자는 이전 강의인 단방향 연관관계에서도 봤듯이 해당 코드를 진행하면 DB Member의 외래키 업데이트가 자동적으로 이루어 지는 것으로 이해하고 있습니다후자는 후자의 코드를 진행해도 FK 업데이트가 이루어 지지 않는 것으로 알고 있습니다.(Team에는 외래키가 없는 것이 원인으로 알고있습니다.)그래서 영상에서 말씀하신 둘중 무엇으로 외래키를 업데이트 해야하냐 같은 딜레마라고 언급하신 것이 이해가 잘 되질 않습니다.어차피 후자의 코드자체가 외래키가 업데이트 되지 않는 코드인데 강의에서 언급하신 전자, 후자 중 어느 것으로 업데이트 해야 하는지에 대한 딜레마가 나온 이유를 모르겠습니다.이부분을 어떻게 이해하여야할까요?
-
미해결[UI3 업데이트] 피그마 배리어블을 활용한 디자인 시스템 구축하기
수업 문의 드립니다
강의 소개 영상을 보니 2023년 버전인 것 같은데현재 25년 12월 기준으로 피그마 업데이트가 많이 진행되어서 지금 수강해도 문제가 없는지 궁금합니다!
-
미해결AI 도구와 피그마를 활용한 앱 서비스 기획
구글 스티치에서 피그마로 내보내기
안녕하세요! 9-1강을 듣고 있는데 알려주신 Google Stitch를 저도 사용해보려고 하는데 디자인이 생성되고나서 이미지 상단에 Edit, Figma 버튼이 없어서 검색해보고 했는데 강사님 화면과 제 화면의 차이점이 Standard Mode 유무 더라고요. 처음 써보는거라 구글이메일로 로그인해서 쓰고 있는데 혹시 방법을 알고 계실까요?ㅠ 이미지 첨부해 드립니다!
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
네트워크 프로그램 자원종료 Socket 정리 시 closed 사용 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]네트워크 프로그램 자원종료 관련 이해가 안되는 부분이 있어서 문의드립니다.[SessionManagerV6] public synchronized void closeAll() { for (SessionV6 session : sessions) { session.close(); } sessions.clear(); } [SessionV6] // 세션 종료시, 서버 종료시 동시에 호출될 수 있다. public synchronized void close() { System.out.println("closed : " + closed); System.out.println(Thread.currentThread().getName()); if (closed) { return; } closeAll(socket, input, output); // shutdown closed = true; log("연결 종료: " + socket); }서버에서 ShutdownHook이 발생했을 때 2개의 Client에 Socket이 연결되어 있었다고하면첫번째 Clinet의 Socket이 정리되고 난 후 2번째 Clinet의 Socket이 정리되는 시점에서는 closed 변수가 true이기 때문에 정리가 안되고 return되는거 아닌가요? 제가 잘 못 이해하고 있는걸까요? 추가적으로 로그를 찍어서 상태값을 확인해 봤는데 이해가 잘 되지 않아서 문의드립니다. 아래는 로그 정보입니다. 17:34:32.806 [ shutdown] shutdownHook 실행 closed : false shutdown 17:34:32.806 [ shutdown] 연결 종료: Socket[addr=/127.0.0.1,port=58474,localport=12345] closed : false shutdown 17:34:32.806 [ shutdown] 연결 종료: Socket[addr=/127.0.0.1,port=58480,localport=12345] 17:34:32.807 [ Thread-2] java.net.SocketException: Socket closed closed : true Thread-2 17:34:32.807 [ Thread-3] java.net.SocketException: Socket closed closed : true Thread-3 17:34:32.807 [ main] 서버 소켓 종료: java.net.SocketException: Socket closed 종료 코드 130 (interrupted by signal 2:SIGINT)(으)로 완료된 프로세스
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지 (with 커서 AI)
[문의] Statusline
안녕하세요 첨부 이미지와 같이statusline을 설치했는데프로젝트명과 모델명이 안 보입니다. 혹시 해결방법을 알려주실 수 있으실까요?
-
미해결토스 개발자와 함께하는 Data Workflow Management 기반의 대용량 데이터 처리 설계 패턴
강의에서사용하신 root.py 파일이 안보여서 실습하면서 만든 텍스트 공유 드려요
dynamicDagfrom 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 컴포넌트 리렌더링 질문
안녕하세요 Header.jsx 수정중 궁금한점이 있어서 질문드립니다!new Date() 함수는 날짜를 가져오는 함수라 리렌더링이 계속 될것같은데 memo 를 사용하면 리렌더링이 안되는건가요 ??
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
FPGA 강의 보드 문의 드립니다.
안녕하세요 맛비님, 언제나 좋은 내용 감사합니다. 아직 FPGA 수강등록을 하지 않았기에 부득이하게 Verilog 학습 q&a에 질문을 드립니다. 설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계, 강의를 위해 보드를 구매하려 하는데 Zybo z7-20 board가 단종이 되어 해외에서 또는 중고로 구매해야 하는 약간의 Risk가 있습니다. 금액도 생각보다 좀 나가네요. Arty z7 10으로 시작을 하고, 나중에 좀 실력이 생기면 조금 더 비싼 것으로 구매하던지 하는 Safe한 Approach를 하려 하는데요. Arty board를 구매했을 때 수업 내용과 달라서 어려운 점이 예상 되는 부분이 있나요? Board 구매를 한 후 수강을 하려 생각하고 있습니다. 감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
깃허브 질
지금 깃허브도 만들었고 PS D:\programming\java_kotlin\Java_Spring_Library_Application\library-app\library-app> git push --set-upstream origin masterremote: 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 전문가 강의, 블로그·쇼츠 자동화
12강 클러스터 에이전트
클러스터링 에이전트까지 진행을 했는데요. 익스큐트 시키면 클러스터링에서 멈추지 않고 계속 돌아가네요. 하도 오래동안 돌아가서 멈췄더니 저렇게 숫자가 보이구요. 혹시나해서 다시 진행해봐도 또 계속 클러스터링에서 돌아갑니다. 뭐가 문제일까요?
-
미해결한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)
Trace Batch Finalization 이 부분이 출력되지않는데요.
Trace Batch Finalization 이 부분이 출력되지않는데요.뭔가 설정이 필요한가요?
-
해결됨원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)
주제와 대본을 따로 생성 및 시트에 입력하고 싶어요!
강사님 저는 주제와 대본을 각각 생성하고 싶어서 앞서 말씀 주신 방법대로 셋팅했는데 위와 같이 대본은 아래 줄에 생성이 되어서 혹시 이부분 어떻게 해결하나요?
-
미해결파이썬으로 10가지 게임 만들기 2편 [비전공자 초급 과정]
강의 정보와 관련하여 질문
강의 정보와 관련하여 질문하고 싶습니다.고객센터나 1:1 채팅이 따로 가능한 방법이 있을까요?
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
아나콘다랑 pytry없이. 단순 파이참에서 venv 설정해서 설치하는건 불가능하나요?
학습 관련 질문이 있으시면, 상세하게 남겨주세요.문제가 발생한 부분의 코드를 함께 올려주세요.수업 영상 몇 분/초 구간인지 알려주세요.
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지 (with 커서 AI)
[제보] 섹션4 퀴즈 내 파일명 오타
안녕하세요. 현재 섹션4까지 학습하고 퀴즈를 풀었는데, 퀴즈에 파일명이 잘못되어 있어 제보합니다. CLAUDE.md 인데 cloud.md 라고 퀴즈에 나오네요. (아래 캡쳐된 2개의 문항에 이렇게 나옵니다) 학습 자체에 큰 지장은 없지만, 그래도 알려드립니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
여기까지 다 끝냈다고 하셨는데
제가 잘못구현한건지 같은 책 이름으로여러개의 책 이름이 들어가는 거 같은데이건 상관없나요?책등록은 여러개 되는데 그에 따라서 대출은 하나밖에 안되는데예를 들면 클린코드를 3개 등록할 수 있는데, 3개 등록해도 대출은 1개밖에 안돼요