묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
14강 아웃풋 질문
보시는 것처럼 아웃풋이 나왔는데 마지막에 끝마무리가 안난 상태에서 잘려서 나오는데. 글자수 제한이 있나요? 참고로 클로드로 진행한 결과구요.제미나이 2.5pro로 하니까 아웃풋이 아예 아무것도 안나오네요.
-
미해결토스 개발자와 함께하는 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), } 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 ) 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 # ======================================================== # 두 번째 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, 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
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
12강 클러스터 에이전트
클러스터링 에이전트까지 진행을 했는데요. 익스큐트 시키면 클러스터링에서 멈추지 않고 계속 돌아가네요. 하도 오래동안 돌아가서 멈췄더니 저렇게 숫자가 보이구요. 혹시나해서 다시 진행해봐도 또 계속 클러스터링에서 돌아갑니다. 뭐가 문제일까요?
-
해결됨비전공자도 이해할 수 있는 Docker 입문/실전
노션 자료에 안 보이는 이미지가 있습니다
'[보충 자료] Windows에서 lsof, kill, sudo 명령어가 작동하지 않을 때 대처 방법'여기서 관리자 권한으로 실행 부분 이미지가 저렇게 보입니다.
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
6강 12분즈음
도메인에서 선생님 따라서 분명히 등록하고UI가 바뀐 프록시를 접속해서 해보면 오류가 납니다 ㅠㅠ root를 빼고 도메인만 넣어도 오류가 나는데 왜이런걸까요...
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
워드프레스 모바일 화면 오류
박사님. 워드프레스 발행이 어느정도 구현이 되고 있는데요. 모바일로 확인하면, 블로그 본문은 모바일에 맞게 잘 보이나, 블로그 첫 화면은 수정을 해야할거 같은데, 어떻게 하면 될까요? 지피티에 물어보면서 이래저래 수정하는데, 잘 안되네요 ㅠ
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
24강 질문드립니다.
박사님! 이것 저것 해보다가'사이트/wp-sitemap.xml' 은 '페이지를 찾을 수 없음'으로 뜨지만'사이트/sitemap.xml' 은 사이트맵으로 제출되서 이렇게 쓰려고 하는데요.주소창에 https://사이트/sitemap.xml 이렇게 입력하면,이렇게 보입니다. 스타일 시트 연결이 안된거라고 나오는데, 이대로 사용해도 될까요?
-
미해결Grafana 설치하고 대시보드 만들기
posgresSQL 설치시 에러 내용
안녕하세요. grafana 수강자 입니다. posgresSQL 설치시 에러 내용 입니다. .' Error response from daemon: ports are not available: exposing port TCP 0.0.0.0:5432 -> 127.0.0.1:0: listen tcp 0.0.0.0:5432: bind: address already in use ''port 번호를 변경하면 실행이 안돼는것 같습니다. 어떻게 해야 할까요?
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
6강 텍스트파일 질문 있습니다!
6강 8분 50초쯤 새로만들기 -> 텍스트파일을 누르면 선생님은 ~~.txt로 나오는데 저는 그냥 제목이 '새 텍스트 문서'로 나오거든요. 그래서 제목에 yml을 넣어도 txt 파일 그대로라서 X sever에서 코딩을 넣어도 인식을 못합니다ㅠㅠ 어떻게 해야될까요?
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
18강 이미지 주소 오류
18강 이미지 주소 오류로 넣으면 파일을 찾을수없습니다라고 나옵니다..
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
18강 프롬프트를 찾을 수 없습니다.
안녕하세요.18강 수업자료에 프롬프트가 제공된다고 하셨는데 찾지를 못하겠네요. 수업자료 중 어느 파일을 참조해야 할까요? 감사합니다.
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
n8n 접속에서 막혔습니다...
이렇게 나오는데, 어떤 방식으로 해결할 수 있을까요? 문과생은 너무 힘드네요...
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
구글에 색인이 잘되다가 갑자기 안됩니다.
구글에 색인이 잘 되다가 갑자기 안됩니다.강사님의 blogagent.kr 도 글 수에 비해서 색인 숫자가 많이 부족한데 이유가 뭘까요?
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
18강 질문
설정을 똑같이 했는데 강의에서는 url, sizl 등 여러가지가 나오는데 저는 저렇게만 나오는데 잘못된걸까요..?
-
미해결입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
Windows 환경에서 작업중
안녕하세요, 윈도우 환경에서 작업중입니다.다름이 아니라 Gradle을 IDEA로 변경하면 Build 시에 Error가 떠서 AI에게 물어보니 Gradle로 변경하라 하여 변경하니 되는데 이렇게 작업해도 상관 없는 부분일까요? 오류메세지:Kotlin: [Internal Error] java.lang.NoClassDefFoundError: org/jetbrains/kotlin/com/intellij/psi/PsiElement at org.jetbrains.kotlin.noarg.fir.KtErrorsNoArg.<clinit>(KtErrorsNoArg.kt:32) at org.jetbrains.kotlin.noarg.fir.FirNoArgExtensionRegistrar.configurePlugin(FirNoArgExtensionRegistrar.kt:15) at org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar.configuredExtensionFactories_delegate$lambda$0(FirExtensionRegistrar.kt:294) at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:86) at org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar.getConfiguredExtensionFactories(FirExtensionRegistrar.kt:291) at org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar.configure(FirExtensionRegistrar.kt:270) at org.jetbrains.kotlin.fir.session.FirAbstractSessionFactory.createSharedLibrarySession(FirAbstractSessionFactory.kt:107) at org.jetbrains.kotlin.fir.session.FirJvmSessionFactory.createSharedLibrarySession(FirJvmSessionFactory.kt:53) at org.jetbrains.kotlin.cli.pipeline.jvm.JvmFrontendPipelinePhase.prepareJvmSessions$lambda$0(JvmFrontendPipelinePhase.kt:326) at org.jetbrains.kotlin.cli.common.SessionConstructionUtils.prepareSessions(FirSessionConstructionUtils.kt:324) at org.jetbrains.kotlin.cli.pipeline.jvm.JvmFrontendPipelinePhase.prepareJvmSessions(JvmFrontendPipelinePhase.kt:322) at org.jetbrains.kotlin.cli.pipeline.jvm.JvmFrontendPipelinePhase.executePhase(JvmFrontendPipelinePhase.kt:137) at org.jetbrains.kotlin.cli.pipeline.jvm.JvmFrontendPipelinePhase.executePhase(JvmFrontendPipelinePhase.kt:47) at org.jetbrains.kotlin.cli.pipeline.PipelinePhase.phaseBody(PipelinePhase.kt:68) at org.jetbrains.kotlin.cli.pipeline.PipelinePhase.phaseBody(PipelinePhase.kt:58) at org.jetbrains.kotlin.config.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:102) at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:22) at org.jetbrains.kotlin.config.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:53) at org.jetbrains.kotlin.cli.pipeline.AbstractCliPipeline.runPhasedPipeline(AbstractCliPipeline.kt:109) at org.jetbrains.kotlin.cli.pipeline.AbstractCliPipeline.execute(AbstractCliPipeline.kt:68) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecutePhased(K2JVMCompiler.kt:79) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecutePhased(K2JVMCompiler.kt:45) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:90) at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.kt:352) at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1617) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840)Caused by: java.lang.ClassNotFoundException: org.jetbrains.kotlin.com.intellij.psi.PsiElement at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ... 42 more
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
워드프레스 와 DB 커넥션 오류
계속 인증서 문제로 워드프레스가 Data Base에 접속이 되지않는다고 로그인 창도 안뜨네요,,,하루 종일 Perplexity 와 싸움하며 수정해보려 했지만 DB에서 SSL을 강제로 비활성화를 하는 환경변수를 주어도 계속 아래와 같은 에러메세지만 보내서 접속을 할 수 없습니다. ERROR 2026 (HY000): TLS/SSL error: SSL is required, but the server does not support it 도와 주세요 ㅠㅠ
-
미해결대세는 쿠버네티스 (초급~중급편)
Failed to create pod sandbox
사진에서 보여드린것 처럼 디플로이먼트를 생성하면 해당 에러가 나오고 삭제도 안되고있습니다ㅠㅠ 도와주세요
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
18강, call blog image maker에서 오류가 났습니다.
18강에서 이런저런 우여곡절 끝에 이런 오류 메시지가 나옵니다. 처음엔 'The service is receiving too many requests from you Request was throttled. Your rate limit for creating predictions is reduced to 6 requests per minute with a burst of 1 requests while you have less than $5.0 in credit. Your rate limit resets in ~3s' 오류가 나와서, 중간에 wait 노드를 추가했더니 실행이 잘 되다가 마지막에 'JSON parameter needs to be valid JSON' 이런 오류가 나오네요 ㅜ 이건 어떻게 해야 할까요?
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
Nginx Proxy Manager SSL certificates UI변경에 따른 문의
'도커 기반 HTTPS 보안 서버 구축과 서브 도메인 리버스 프록시 설정법' 강의 보고 있습니다. 자세히 설명해주셔서 감사합니다. (저는 생초보인데도 이정도면 잘따라하는거 같아요) 다만 Nginx Proxy Manager - SSL Certificates 메뉴를 누르는 부분 (강의 11:30)이 홈페이지 UI 가 바뀐것 같습니다 (아니면 제 설정값 예를들면 docker-compose.yml 내용같은? 것이 변하면 저 UI가 바뀔수 있나요?) SSL Certificates -> Certificates 로 메뉴가 변경된것 같고 "Add SSL Certificate" 분홍색 버튼이 없고 아래 스크린샷 처럼 나옵니다. 변경된 UI 에 대해서 설명을 한번 확인해주실 수 있나요? 복잡한 내용을 간략하게 지름길만 설명해주셔서 감사합니다.
-
해결됨비전공자도 이해할 수 있는 Docker 입문/실전
도커 허브에서의 latest가 가장 최신인 게 맞나요?
newest로 정렬했을 때 가장 최신인 건 trixie-perl이니 이게 latest여야 하지 않나 생각이 되는데 왜 latest가 따로 있는 건지 궁금합니다. 용량이 다른 걸 보니 다른 이미지 같은데, 최신으로 올라온 게 latest여야 하지 않나요? 어떤 이유인지 궁금합니다.