묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
[33. 좋아요 수 구현] 에서 테스트 하는 화면 동시성 문제
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. [33. 좋아요 수 구현] 에서 테스트 하는 화면에서요.해당 방법대로 실행을 하면 동시성 문제가 발생합니다.Record has changed since last read in table 'article_like_count'저는 MariaDB를 사용하고 있는데요. MySQL도 마찬가지로 기본 잠금 수준이 Repeatable Read 라고 알고 있습니다.해당 기본 수준으로 실행하면 동시성 문제로 영상과 다른 결과를 보이게 됩니다.따라서 잠금 수준을 Read Commited 나 Read Uncommited 로 변경하면 제대로 실행이 됩니다.이렇게 하는 것이 정답인지 아니면 다른 원인이 있는건지 알려주세요.
-
미해결수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
14강 아웃풋 질문
보시는 것처럼 아웃풋이 나왔는데 마지막에 끝마무리가 안난 상태에서 잘려서 나오는데. 글자수 제한이 있나요? 참고로 클로드로 진행한 결과구요.제미나이 2.5pro로 하니까 아웃풋이 아예 아무것도 안나오네요.
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
강의 들으면서 궁금한 부분 질문드립니다.
여기에 질문드리면 되는걸까요?아니면 다른 곳에 따로 질문드리는걸까요? 질문 1.꼭 하나의 폴더를 먼저 만들어서 열어준 다음'npx create-next-app@14 프로젝트 이름'이렇게 폴더 내에 폴더를 만들어서 새로 만든 폴더를 열어서 작업해야 하나요?아니면 그냥 vs code켜서'npx create-next-app@14 프로젝트 이름' 바로 쳐서 그 프로젝트에서 바로 시작하면 되나요? 질문 2.꼭 const router, const {q}로 해야 하나요?, 그 이유도 궁금합니다.방금 let으로 {q} 선언하니까 오류가 발생했어서 질문드립니다. 질문 3.[[...id]].tsx 에러를 방지하기 위해 기본적으로 대괄호 두번 쓰는게 일반적인가요? 질문 4.search안에 index.tsx라고 파일명을 지었는데, 일반적으로 pages 폴더 하위 폴더를 만들면 그 안에는 무조건 index.tsx라고 파일명을 설정하나요?그리고 쿼리 파라미터를 받는 동적 url인 경우에만 해당 쿼리 파라미터 이름을 대괄호 안에 적는건가요?그리고 다중으로 쿼리 파라미터 설정을 할 것을 대비해서일반적으로 ... 설정을 하는지도 궁금합니다. 질문 5. 404페이지는 보통 이미지로 많이 설정하는데 그럼 export default하고 그 안에 이미지 url을 불러오는건가요?이미지는 어느 폴더에 보관하는건지 궁금합니다. 질문 6. export default function Page() {}에서 Page는 Pages 안에 들어있는Page니까 관용적으로 Page를 사용하는건가요? 질문 7. 보통 export default 이렇게 다 작성하는지 아님 자동완성 템플릿을 설정해놓고 사용하는지도 궁금합니다.
-
미해결2. 유니티가 어려운 입문자를 위한 입문용 게임 제작
보스가 공격 모션에 들어가질 않네요.
이제 마지막 강의만 남겨놓고 있는데, 보스가 공격을 처음 2번만 하고 그 다음엔 계속 Idle 상태로만 있는 버그가 있네요. 제가 애니메이터에서 특정 조건에서 특정 모션으로 들어가는 걸 설정을 잘 못 해서 이런 것 같은데...강의에 보스 애니메이터 설정을 하는 내용이 있다면, 어디에 있나요? ㅠㅠ
-
미해결실리콘밸리 엔지니어와 함께하는 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), } 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
-
미해결한 입 크기로 잘라 먹는 리액트(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)
주제와 대본을 따로 생성 및 시트에 입력하고 싶어요!
강사님 저는 주제와 대본을 각각 생성하고 싶어서 앞서 말씀 주신 방법대로 셋팅했는데 위와 같이 대본은 아래 줄에 생성이 되어서 혹시 이부분 어떻게 해결하나요?