묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
생성자 주입 관련하여 기초적인 질문 드리고합니다.
부모 클래스 타입에, 자식클래스의 생성자를 주입하는 상황에대해 궁금한게 생겨 질문드립니다. 부모 클래스 타입으로 선언된 인스턴스는자식 클래스에게만 있는 메서드를 사용하지 못하는거로 알고있는데요, 그렇다면 만약에 여러 인터페이스를 implement 받은 클래스라면, 이떄는 생성자 주입방식을 쓰면 안되는게 아닌가 하는 의문이 들어 질문드립니다. 예를 들면 아래와 같이 구현된 A에 대해서public class A implements D, E { ... 코드 생략 } 아래 처럼 생성자 주입을 한다면, 이 a 인스턴스는 E 인터페이스에 정의된 메서드들은 사용하지 못하는게 아닌가해서 여쭤보고자합니다.( 실제 클래스들을 보면 다중상속을 받은 경우에도 생성자 주입방식을 잘 쓰고 있는것 같아 이부분이 궁금합니다.. ).. 코드 생략 D a = new A(); .. 코드생략
-
미해결38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
재귀함수-2: 회문검사
1. 현재 학습 진도23. 2-9 재귀함수 - 2 2. 어려움을 겪는 부분재귀함수-2 의 영상 6분 쯤에 "for i in range(n)" 부분이 이해가 안 가서요!문자열 길이만큼, 끝까지 연산해야하는 로직인가요?3. 시도해보신 내용range(n)이 range(n/2) 이런식으로 절반까지만 연산해야하는게 아닌가 헷갈려서 질문드립니다 ㅠㅠ! 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
미해결
수료증
90프로 정도 수료 했고 나머지 부분은 들을 필요가 없는 부분입니다 수료증 버튼이안보이는데 100프로를 다해야하나요?
-
미해결실리콘밸리 엔지니어에게 배우는 파이썬 아파치 스파크
CDC 기반 스파크 아키텍처 구현 방법이 궁금합니다.
현재 RDS에 저장된 데이터를 AWS DMS를 활용해 Parquet 포맷으로 변환하여 S3에 저장한 뒤, EMR(Apache Spark)에서 해당 데이터를 분석/처리하는 구조를 고려하고 있습니다.이 방식이 일반적인 데이터 파이프라인 아키텍처로 적절한지 궁금합니다.또한 RDS에서 지속적으로 발생하는 변경 데이터를 CDC(Change Data Capture) 기반으로 S3에 업데이트하려고 하는데, 이 역시 DMS를 활용하는 것이 최선인지 아니면 다른 접근 방안이 더 적절한지도 조언 부탁드립니다.
-
미해결모의해킹 실무자가 알려주는, XSS 공격 기법
게시판 취약점 찾기 속 미션2) 질문
example5.php에서 test를 입력하고 소스코드를 확인해봤더니 서버가 웹 페이지를 구성해 줘서 reflected가 가능하다는 사실을 얻었습니다. 그리고 사용자의 입력값이 script 태그 안에 있다는 것을 알고 ");alert(1);//나 ");{alert(1);}// 시도했는데 처리가 되지 않았습니다. 다른 이벤트 핸들러를 사용해 보니 if문이 실행되는 걸 보니 문자로 취급하는 것 같은데 힌트 좀 주실 수 있나요?그리고 미션1) board에서 게시글을 검색하는 부분에 test를 입력하니깐<input type="text" class="form-control" placeholder="Keyword Input" name="keyword" value="test">이렇게 사용자의 값이 들어가더라고요. 계속해서 시도하다가 실패해서 ai한테 하소연을 했는데 event를 삽입해서 시도하라는 말을 듣고 시도했는데 성공했어요.그러면 event는 꺽쇠 문자 안에 전부 들어갈 수 있는건가요? 특정 태그에만 들어갈 수 있었던게 아니었나요?
-
해결됨독하게 시작하는 C 프로그래밍
예제파일 다운로드
어디서 받을 수 있는 건가요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
루키스님이 어떻게 공부하는지에 대한 질문
루키스님은 이런 지식같은것을 어떻게 공부하셨는지 궁금합니다 책을 보셔서 혼자 공부하셨는지 아니면 다른 강의가 있다던지 아니면 완전 코드를 처음부터 하나하나 봐가시면서 전부 분석하셨는지 궁금합니다
-
미해결[CS 기술면접 1탄] 쉽게 정리하는 컴퓨터 구조
CPU-명령어 처리 흐름
안녕하세요 강의 잘 수강하고 있습니다.강의 후반 부 6:47초 부근에서 Fetch단계에서 그림에 대해서 의문이 있습니다. 앞서 배운 시스템 버스의 구조상 메모리는 주소 버스에 접근하지 않는 걸로 이해(CPU -> 주소 버스 -> 메모리; 단방향)했습니다. 하지만 해당 그림에서는 메모리에서 기억장치 주소 레지스터에 접근하여 명령어 주소를 가져오는 것으로 이해가 되는데요. 기억장치 주소 레지스터가 메모리에 명령어 주소를 넘겨주는 단방향 흐름이 아닌가요?
-
미해결비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
결제프로필에 구글시험입금이 안되고있는 상황
안녕하세요,현재 결제수단에 입금받을 계좌를 입력하고 기다린지 이틀이 넘어가는데도 한번도 구글에서 시험입금해준 계좌가 없는데, 혹시 뭔가 다른조치를 해야될까요~?은행계좌를 하나로 한다던가, 뭔가 웹이 광고승인이 날때까지 기다려야한다던가... 입금이 100원커녕 들어온적도 없는데 어떻게 해야되는걸까요~?
-
미해결프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2
예제 프로젝트 관련 질문입니다.
강의 보고 따라해 보고 싶은데 예제 프로젝트는 제공 되지 않는 걸까요?
-
미해결아바타 커뮤니티앱 만들기 (React Native Expo)
CustomButton 코드 버튼 관련 질문
버전 차이 (RN StyleSheet, Expo)의 문제거나 안드로이드의 문제인지는 모르겠지만 강의 중 코드로 작성하면 아래와 같은 문제가 나옵니다. Pressable과 Text에 backgroundColor와 color가 스타일링이 되는 방식이나 Button 요소에 opacity가 적용이 되지 않는 듯한 이슈인 것 같아서 아래와 같이 해결했습니다. return ( <Pressable style={({ pressed }) => [ styles.container, styles[size], { backgroundColor: styles[variant].backgroundColor }, pressed && styles.pressed, ]} {...props} > <Text style={[styles.text, { color: styles[variant].color }]}> {label} </Text> </Pressable> ); ... const styles = StyleSheet.create({ container: { borderRadius: 8, justifyContent: "center", alignItems: "center", }, text: { fontSize: 14, fontWeight: "bold", }, // size large: { width: "100%", height: 44, }, medium: {}, // variant filled: { backgroundColor: colors.ORANGE_600, color: colors.WHITE, }, // Pressable props pressed: { opacity: 0.8, }, });저는 강의 코드 대신 이렇게 해서 해결은 되었는데 혹시 이 이슈가 일어나는 이유와 앞으로 코드 복잡도가 어떻게 될 지는 모르겠지만 CustomButton이 그렇게 복잡해지진 않을 것 같은데 방법이 최선일지, 아니면 더 개선할 점이 있는지 궁금합니다.
-
미해결딥러닝 기반 이미지·객체 인식: CNN에서 YOLO·DETR까지
섹션2 코드 관련하여 질의드립니다.
안녕하세요 강사님 섹션 2의 CNN 실습(100_CIFAR10_CNN.ipynb) 관련하여 질문드립니다.아래 코드에서는 train_loss에 배치별 loss를 누적한 뒤, for문이 끝나면 train_loss /= len(train_data) 로 평균을 계산하고 있습니다.그런데 loss.item()은 이미 각 배치에서 평균이 적용된 스칼라 값입니다. 따라서 다시 전체 데이터 개수(len(train_data))로 나누면 이중으로 평균이 계산되는 것 같습니다. 그래서 저는 train_loss += loss.item() * x.size(0) 형태로 배치 손실의 합계를 누적한 뒤, 마지막에 전체 데이터 수로 나누는 방식이보다 정확하다고 생각하는데, 혹시 어떻게 생각하실까요? 좋은 강의 제공해주셔서 감사합니다. for x, y in train_loader: # 훈련 데이터셋을 배치 단위로 순회 x, y = x.to(device), y.to(device) # 배치 데이터를 현재 디바이스로 이동 optimizer.zero_grad() # 이전 그라디언트를 초기화 z = model(x) # 모델을 통해 예측값 계산 loss = criterion(z, y) # 예측값과 실제 레이블 간의 손실 계산 train_loss += loss.item() # 손실 누적 y_pred = z.argmax(1) # 가장 높은 예측값의 인덱스를 정답으로 선택 train_acc += (y_pred == y).sum().item() # 정확히 예측된 개수 누적 loss.backward() # 손실에 대한 그라디언트 계산 optimizer.step() # 모델의 가중치 업데이트 train_loss /= len(train_data) # 평균 훈련 손실 계산 train_acc /= len(train_data) # 평균 훈련 정확도 계산 LOSS.append(train_loss) ACC.append(train_acc)
-
미해결Python 엑셀 프로그래밍 - with xlsxwriter
메일보내기 할 때 에러..
한글파일명인 액셀파일을 첨부하는 것은 안되나요?아니면, 액셀 내 columns value 값이 한글인 것을 가져와서 메일 헤더나 파일명으로 사용한게 에러인 것인지..궁금합니다... 메일주소와 password 는 '^^^^^' 임의 처리한 코딩입니다. 오류내용:❌ 이메일 발송 실패: 진리종합상사 - 'ascii' codec can't encode characters in position 5-7: ordinal not in range(128) import pandas as pd import os from openpyxl.utils import get_column_letter from openpyxl.styles import Font, PatternFill, Alignment, Border, Side import smtplib from email.message import EmailMessage import ssl from email.header import Header from email.utils import formataddr # ------------------------- # 설정 # ------------------------- cost_manage_path = 'cost_manage.xlsx' partner_path = 'partner.xlsx' output_dir = 'output' SENDER_EMAIL = '^^^^^^^^^^^^^^' SENDER_PASSWORD = '^^^^^^^^^^^^^^' SMTP_SERVER = 'smtp.gmail.com' SMTP_PORT = 587 # ------------------------- # 엑셀 읽기 # ------------------------- try: cost_data_df = pd.read_excel(cost_manage_path, sheet_name='Sheet1', header=1) partner_sheet1_df = pd.read_excel(partner_path, sheet_name='Sheet1') partner_sheet2_df = pd.read_excel(partner_path, sheet_name='Sheet2') except FileNotFoundError as e: print(f"오류: 파일을 찾을 수 없습니다. {e.filename}") exit() # ------------------------- # 데이터 전처리 # ------------------------- for df in [cost_data_df, partner_sheet1_df, partner_sheet2_df]: df.columns = df.columns.str.strip() cost_data_df = cost_data_df.drop(columns=['협력사ID', '협력사명']) cost_data_df['상세분류ID'] = cost_data_df['상세분류ID'].astype(str).str.strip() partner_sheet1_df['상세분류ID'] = partner_sheet1_df['상세분류ID'].astype(str).str.strip() partner_sheet2_df['협력사KEY'] = partner_sheet2_df['협력사KEY'].astype(str).str.strip() merged_df = pd.merge(cost_data_df, partner_sheet1_df, on='상세분류ID', how='left') final_df = pd.merge(merged_df, partner_sheet2_df, on='협력사KEY', how='left') final_df = final_df.drop(columns=['상세분류명_y']) final_df = final_df.rename(columns={'상세분류명_x': '상세분류명'}) final_columns = ['상세분류ID', '상세분류명', '협력사KEY', '협력사ID', '협력사명', '상품ID', '규격', '단가', 'moq', '이메일주소'] real_final_df = final_df[final_columns] grouped_by_partner = real_final_df.groupby('협력사KEY') if not os.path.exists(output_dir): os.makedirs(output_dir) # ------------------------- # 엑셀 생성 & 이메일 발송 # ------------------------- for partner_key, group_df in grouped_by_partner: # 엑셀 데이터 준비 columns_for_excel = ['상세분류ID', '상세분류명', '협력사ID', '협력사명', '상품ID', '규격', '단가', 'moq'] data_to_write = group_df[columns_for_excel].copy() header_row1 = pd.DataFrame([['', '', '', '', '', '', '▼작성', '▼작성']], columns=columns_for_excel) header_row2 = pd.DataFrame([columns_for_excel], columns=columns_for_excel) final_excel_df = pd.concat([header_row1, header_row2, data_to_write], ignore_index=True) # 파일 경로 file_name = f"{partner_key}_견적_요청서.xlsx" output_path = os.path.join(output_dir, file_name) # 엑셀 생성 with pd.ExcelWriter(output_path, engine='openpyxl') as writer: final_excel_df.to_excel(writer, index=False, header=False, sheet_name='Sheet1') worksheet = writer.sheets['Sheet1'] worksheet.sheet_view.showGridLines = False # 스타일 설정 bold_yellow_fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid') center_align = Alignment(horizontal='center') left_align = Alignment(horizontal='left') bold_font = Font(bold=True) thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin')) # 1행 스타일 for cell in worksheet[1]: if cell.value == '▼작성': cell.fill = bold_yellow_fill cell.font = bold_font # 2행 스타일 for cell in worksheet[2]: cell.alignment = center_align cell.border = thin_border # 데이터 행 스타일 left_align_cols = ['상세분류ID', '상세분류명', '규격'] col_map = {col: i + 1 for i, col in enumerate(columns_for_excel)} for row_num in range(3, worksheet.max_row + 1): for col_name in columns_for_excel: cell = worksheet.cell(row=row_num, column=col_map[col_name]) cell.alignment = left_align if col_name in left_align_cols else center_align cell.border = thin_border # 열 너비 자동 조정 for column in worksheet.columns: max_length = 0 column_letter = get_column_letter(column[0].column) for cell in column: if cell.value: max_length = max(max_length, len(str(cell.value))) worksheet.column_dimensions[column_letter].width = max_length + (20 if column_letter == get_column_letter(col_map['규격']) else 5) print(f"✅ '{file_name}' 파일이 '{output_dir}' 폴더에 생성되었습니다.") # 이메일 정보 partner_email = group_df['이메일주소'].iloc[0] partner_name = group_df['협력사명'].iloc[0] if pd.isna(partner_email): print(f"❌ {partner_name}의 이메일 주소가 없어 이메일 발송을 건너뜁니다.") continue print(f"📧 '{partner_name}' ({partner_email})님에게 이메일 발송 중...") msg = EmailMessage() msg['From'] = formataddr((str(Header('보내는 사람 이름', 'utf-8')), SENDER_EMAIL)) msg['To'] = partner_email # 이 부분만 이전 코드로 되돌려 일반 문자열을 할당합니다. msg['Subject'] = f'[{partner_name}] 월간 비용 견적 요청서입니다.' body = f"""안녕하세요, {partner_name} 담당자님. 월간 비용 견적 요청서(첨부파일)를 보내드립니다. 확인 후 회신 부탁드립니다. 감사합니다. -- 보내는 사람 이름 """ msg.set_content(body) try: with open(output_path, 'rb') as f: # `filename` 인수를 일반 문자열로 전달 msg.add_attachment(f.read(), maintype='application', subtype='octet-stream', filename=file_name) except Exception as e: print(f"❌ 파일 첨부 중 오류 발생: {e}") continue try: context = ssl.create_default_context() with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server: server.starttls(context=context) server.login(SENDER_EMAIL, SENDER_PASSWORD) server.send_message(msg) print(f"✅ 이메일 발송 성공: {partner_name}") except Exception as e: print(f"❌ 이메일 발송 실패: {partner_name} - {e}")
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
C++ 전혀 모르는데 C# 서버
C++ 전혀 모르는데 C#서버 만드는데전혀 지장 없을까요?
-
미해결실전! Querydsl
querydsl sum() 메서드 없어요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]보시다시피 sum()은 아예 없어요. NumberExpression 클래스에서 집계 함수들을 살펴보니깐 sum() 은 private로 되어있고, 나머지 sum 함수들은 내부에서 sum()을 호출해요. 구글에 검색해보면 다들 sum을 쓸 수 있는 것처럼 보이던데 왜 저만 이럴까요?그리고 sumBigInteger()는 있는데 정작 sumInteger()는 왜 없을까요?
-
미해결Git & GitHub, 원리부터 차근차근 - 근본깃 [완성편]
문서가 락이 걸어져있네요.
문서가 락이 걸어져있네요. 비번 알려주세요. 강의노트에도 없어서 문의 남깁니다.
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
vscode 터미널 출력이 안되요
위에서 입력하면 터미널 창에 나와야 되는데 안나와요ㅠ
-
미해결[AI] 프롬프트만으로 아이디어 구현하기_바이브코딩 입문
venv 설정 관련
강의에서는 폴더를 선택하고 main.py를 만든 다음 venv를 세팅하는데, 폴더를 만든 다음 venv를 설정한 후 main.py를 만드는 것과의 차이가 있나요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
vscode 명령 팔레트 오류
vscode 명령 팔레트에서 파이썬(다운로드한 파이썬 최신버전 64-bit 클릭한 후 test.py 파일생성하는데 오류뜨면서 실행할 수 없다고 나옵니다
-
미해결PMP(프로젝트 관리 전문가) 자격 취득과정
문서에 다 락이 걸어져있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!- 먼저 유사한 질문이 있었는지 검색해보세요.- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 문서를 다운받아서 볼려고 하는데요 Lock 이 걸어져있습니다. 비번 알려주세요.