묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 2편
질문
이런 문제들 너무 너무 좋은데, 혹시 영한님이 직접 손수 만드신 문제인가요?아니면 이런 문제들 풀 수 있는 전문적인 사이트라던가 참고할수 있는 링크나 문제집이나 강의 추천해주시면 감사드리겠습니다.
-
미해결
문제만 있는 자료 있을까요?
선생님 안녕하세요.실기는 1 2 4 은 맞은 거 같고 나머지는 모르겠어요 ㅋㅋ그냥 다시 준비 하려고요. 코드 문제만 모아놓은 자료 있는 지 궁금해서 문의드립니다.시험장 들어가니 코드 읽는 게 연습이 덜 되었다는 생각이 들어서요강의 중간 중간에 문제가 있는데 모아진 게 있나요?
-
해결됨[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
common.service.ts-composeFindOptions
private composeFindOptions<T extends BaseModel>( dto: BasePaginationDto, ): FindManyOptions<T> { /** * where, order, take, skip 반환 * skip-> page based pagination에서만 */ /** * DTO의 현재 생긴 구조는 아래와 같다. * * { * where__id__more_than: 1, * order__createdAt: 'ASC, * } * * 현재는 where__id__more_than / where__id__less_than에 해당하는 where 필터만 사용중이지만 * 나중에 추가적인 where 필터를 넣고싶어졌을 때 모든 where 필터를 자동으로 파싱할 수 있을만한 기능이 * 필요하다.. * * 1) where로 시작한다면 필터 로직을 적용 * 2) order로 시작한다면 정렬 로직을 정용한다. * 3) 필터 로직을 적용한다면 '__' 기준으로 split 했을 때 3개의 값으로 나뉘는지 2개인지 확인한다. * 3-1) 3개의 값으로 나뉜다면 FILTER_MAPPER에서 해당되는 operator 함수를 찾아서 적용한다. * ex) ['where', 'id', 'more_than'] -> more_than을 실제 typeorm-operator로 적용 * 3-2) 2개의 값으로 나뉜다면 정확한 값을 필터하는 것이기 때문에 operator 없이 적용한다. * ex) ['order', 'createdAt'] -> operator 필요 X * 4) order의 경우 3-2와 같이 적용한다. */ let where: FindOptionsWhere<T> = {}; let order: FindOptionsOrder<T> = {}; for (const [key, value] of Object.entries(dto)) { if (key.startsWith('where__')) { where = { ...where, ...this.parseWhereFilter(key, value), }; } else if (key.startsWith('order__')) { order = { ...order, ...this.parseWhereFilter(key, value), }; } } return { where, order, take: dto.take, skip: dto.page ? dto.take * (dto.page - 1) : null, }; }여기서 함수가 실행되면 where, order은 빈 객체로 초기화 되는데 왜 for 문 안에선 ...where, ...order을 해주는건가요?
-
해결됨손에 익는 Next.js - 공식 문서 훑어보기
데이터 재검증 방법
강의에서 데이터를 재검증하는 방법으로 route handler를 생성하고 그 안에서 revalidateTag 함수를 호출해서 캐시를 지우는 방법을 소개해주셨는데요! 그와 관련해서 궁금한게 세가지 있어서 질문 드립니다.버튼과 같은 클라이언트 컴포넌트에서 어떠한 동작을 수행한 후 데이터를 재검증 하려면 route handler로 요청을 보내고 route handler 내에서 revalidateTag 등을 사용하는 방법밖엔 없는걸까요?위의 방법으로 캐시를 지운 후 브라우저를 직접 새로고침해야 새로운 데이터를 가져와서 화면상에서 갱신이 되던데 직접 새로고침하지 않고 캐시를 지움과 동시에 바로 화면상의 모습도 갱신하려면 어떻게 해야 하나요?next.js에서도 react처럼 axios를 많이 사용하나요? 제가 지금까지 이해한 바로는 next.js는 여러가지 캐싱 기능을 fetch를 이용한 요청으로 제공하는 거 같더라구요. 그리고 공식문서나 다른 블로그 글들 혹은 강의를 봐도 데이터 패칭 및 캐시 부분에서는 fetch를 사용하는 예시만 나와서 next.js의 캐싱 기능을 활용하려면 fetch를 사용해야 하는건가 싶습니다. react를 이용할 때에는 보통 실무에서는 axios를 많이 사용한다고 들었었는데 next.js는 어떤지 궁금합니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 연결이 안되는 것 같습니다
현재 H2 database에 연결하고 목록을 확인하려고 합니다. 그런데 자꾸 회원목록을 들어가거나 회원가입을 실행시 whitelabel 에러가 뜹니다. 제 생각으로는 H2 DB와의 연결 상태때문인 것 같은데, spring boot 실행중에는 아무런 에러가 뜨질 않습니다. 스프링 3.0이상을 사용해서 H2버전 문제인것 같아 1.4.200에서 최신버전을 써보았는데도 똑같은 결과가 나옵니다.밑에 프로젝트 파일 링크 공유드립니다.https://drive.google.com/file/d/1Wg2OAv5FmdglAZDtUCYDypa1cprIUTda/view?usp=drive_link
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
특정 부서에서 최대 연봉을 가진 사용자 조회 sql 쿼리 질문
안녕하세요, 좋은 강의 감사합니다. 제공해 주신 쿼리에 대해 질문이 있는데요,제 생각에는 아래 쿼리가 특정 부서에서 최대 연봉을 가진 사용자를 조회하는게 아닌,전체 부서에서 최대 연봉이 x 라고 하면,세 부서에서 그 값이 있으면 출력하는 문인것 같은데,제가 어느 부분에서 헷갈린 건지 알려주시면 감사하겠습니다.SELECT * FROM users WHERE salary = (SELECT MAX(salary) FROM users) AND department IN ('Sales', 'Marketing', 'IT'); SELECT MAX(salary) FROM users 는 users 테이블의 최대 salary 를 가져오는것이고,괄호 밖의 department In (...) 은 부서 세개,그리고 salary = (SELECT MAX ...) 와 함께 저 salary 에 해당 하는 users 가져오는 것이 아닌가요? 제가 sql 초보라 양해 해주시면 감사하겠습니다 ...
-
미해결취미로 해킹#5(DIMICTF)
dimi-math 문제를 풀려고 하는데 문제가 뜨지 않습니다.
포트 입력해서 구글에서 창도 열리는것까진 확인했고, 포트도 확인 되었으나, dimi-math 1번 문제를 풀기 위해 netcat 포트를 입력하였지만 문제가 뜨지 않았으며 netcat을 다시 해당 우분투에서 깔아보았지만 여전히 문제가 뜨지 않습니다...사용하는 가상머신은 VMware 17player 입니다.
-
미해결
파이썬 한글셀필드 응용 질문
안녕하세요! 사무보조알바하면서 자동화 프로그램을 만들어서 일에 도움이 될수있게 파이썬을 배우고있는 대학생입니다! 아래아 한글에 셀필드를 지정하고 셀들을 각 _3번까지 만들어두었습니다. 엑셀에서 각 시트별로 동일한 과제번호끼리 데이터를 가져와서 아래아한글파일에 각 과제번호 별로 데이터값을 넣어서 저장해주는 코드를 만들었는데 셀필드를 3개만 만들어두니까 데이터값이 3개 넘어가는거는 더 이상 저장이 안되더라구요.그래서 제가 아는 함수도 사용해봐도 셀이 추가되지않아서 데이터값이 들어가지않더라구요 ㅠㅡㅠ 혹시 어떻게 하면 될지 알려주실수있나요?엑셀에서 한글파일에 데이터값을 넣는 코드 올려드립니다! 제발 해결됬으면 좋겠어요 ㅠㅠ import pandas as pd from tkinter import Tk, filedialog import win32com.client as win32 import os def select_file(file_type): root = Tk() root.withdraw() file_path = filedialog.askopenfilename( filetypes=[(file_type, "*.xlsx" if file_type == "Excel files" else "*.hwp")] ) root.destroy() return file_path def read_excel(file_path): xls = pd.ExcelFile(file_path) data = {} for sheet_name in xls.sheet_names: df = pd.read_excel(xls, sheet_name=sheet_name) data[sheet_name] = df return data def group_data_by_project_number(data): grouped_data = {} for sheet_name, df in data.items(): if '과제번호' in df.columns: for _, row in df.iterrows(): project_number = row['과제번호'] if project_number not in grouped_data: grouped_data[project_number] = {} if sheet_name not in grouped_data[project_number]: grouped_data[project_number][sheet_name] = [] grouped_data[project_number][sheet_name].append(row) return grouped_data def fill_hwp_template(hwp_file_path, grouped_data, output_dir): hwp = win32.gencache.EnsureDispatch("HWPFrame.HwpObject") for project_number, data in grouped_data.items(): hwp.Open(hwp_file_path) try: hwp.PutFieldText("과제번호", project_number) for sheet_name, rows in data.items(): for index, row in enumerate(rows, start=1): suffix = f"_{index}" if index > 1 else "" if sheet_name == '0-1.과제기본정보': hwp.PutFieldText(f"사업분야{suffix}", row.get('사업분야', '')) hwp.PutFieldText(f"과제명{suffix}", row.get('과제명', '')) hwp.PutFieldText(f"과제번호{suffix}", row.get('과제번호', '')) hwp.PutFieldText(f"총괄책임자{suffix}", row.get('총괄책임자', '')) hwp.PutFieldText(f"당해지원사업명{suffix}", row.get('당해지원사업명', '')) hwp.PutFieldText(f"기술분류(대분류){suffix}", row.get('기술분류(대분류)', '')) hwp.PutFieldText(f"기술분류(중분류){suffix}", row.get('기술분류(중분류)', '')) hwp.PutFieldText(f"기술분류(소분류){suffix}", row.get('기술분류(소분류)', '')) hwp.PutFieldText(f"연구개발단계{suffix}", row.get('연구개발단계', '')) hwp.PutFieldText(f"과제유형{suffix}", row.get('과제유형', '')) hwp.PutFieldText(f"주관기관{suffix}", row.get('주관기관', '')) hwp.PutFieldText(f"총개발기간{suffix}", row.get('총개발기간', '')) hwp.PutFieldText(f"참여기관{suffix}", row.get('참여기관', '')) hwp.PutFieldText(f"성명{suffix}", row.get('성명', '')) hwp.PutFieldText(f"직위{suffix}", row.get('직위', '')) hwp.PutFieldText(f"휴대전화{suffix}", row.get('휴대전화', '')) hwp.PutFieldText(f"소속기관{suffix}", row.get('소속기관', '')) hwp.PutFieldText(f"전자우편{suffix}", row.get('전자우편', '')) elif sheet_name == '0-2.참여기관현황': hwp.PutFieldText(f"0-2.참여기관현황_기관명{suffix}", row.get('기관명', '')) hwp.PutFieldText(f"0-2.참여기관현황_역할{suffix}", row.get('역할', '')) hwp.PutFieldText(f"0-2.참여기관현황_사업자등록번호{suffix}", row.get('사업자등록번호', '')) hwp.PutFieldText(f"0-2.참여기관현황_대표자{suffix}", row.get('대표자', '')) elif sheet_name == '0-1-1.협약사업비': hwp.PutFieldText(f"0-1-1.협약사업비_단계/연차{suffix}", row.get('단계/연차', '')) hwp.PutFieldText(f"0-1-1.협약사업비_연도{suffix}", row.get('연도', '')) hwp.PutFieldText(f"0-1-1.협약사업비_정부출연금{suffix}", row.get('정부출연금', '')) hwp.PutFieldText(f"0-1-1.협약사업비_지자체{suffix}", row.get('지자체', '')) hwp.PutFieldText(f"0-1-1.협약사업비_현금{suffix}", row.get('현금', '')) hwp.PutFieldText(f"0-1-1.협약사업비_현물{suffix}", row.get('현물', '')) hwp.PutFieldText(f"0-1-1.협약사업비_소계{suffix}", row.get('소계', '')) hwp.PutFieldText(f"0-1-1.협약사업비_합계{suffix}", row.get('합계', '')) elif sheet_name == '1.논문': hwp.PutFieldText(f"1.논문_성과관리ID{suffix}", row.get('성과관리ID', '')) hwp.PutFieldText(f"1.논문_성과년도{suffix}", row.get('성과년도', '')) hwp.PutFieldText(f"1.논문_학술지구분{suffix}", row.get('학술지구분', '')) hwp.PutFieldText(f"1.논문_논문명{suffix}", row.get('논문명', '')) hwp.PutFieldText(f"1.논문_학술지명{suffix}", row.get('학술지명', '')) hwp.PutFieldText(f"1.논문_ISSN{suffix}", row.get('ISSN', '')) hwp.PutFieldText(f"1.논문_저자명{suffix}", row.get('저자명', '')) hwp.PutFieldText(f"1.논문_발행일자{suffix}", row.get('발행일자', '')) hwp.PutFieldText(f"1.논문_SCI구분{suffix}", row.get('SCI구분', '')) hwp.PutFieldText(f"1.논문_기여율{suffix}", row.get('기여율', '')) hwp.PutFieldText(f"1.논문_증빙제출여부{suffix}", row.get('증빙제출여부', '')) hwp.PutFieldText(f"1.논문_비고(추가/삭제/수정/증빙보완등){suffix}", row.get('비고(추가/삭제/수정/증빙보완등)', '')) output_file = os.path.join(output_dir, f"{project_number}.hwp") hwp.SaveAs(output_file) print(f"Saved: {output_file}") except Exception as e: print(f"Error filling data for project {project_number}: {e}") finally: hwp.Clear(1) hwp.Quit() def main(): excel_file = select_file("Excel files") if not excel_file: print("No Excel file selected.") return excel_data = read_excel(excel_file) grouped_data = group_data_by_project_number(excel_data) hwp_template_file = select_file("HWP files") if not hwp_template_file: print("No HWP template file selected.") return root = Tk() root.withdraw() output_dir = filedialog.askdirectory() root.destroy() if not output_dir: print("No output directory selected.") return fill_hwp_template(hwp_template_file, grouped_data, output_dir) print("Data successfully filled into HWP files.") if __name__ == "__main__": main()
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
스프링부트,Mysql작업시 빌드
안녕하세요 강의 듣다 궁금한 점이 생겨서 질문 남깁니다! 스프링 부트,mysql 을 이용하여 프로젝트 작업 진행하기 위해 작업 진행전 docker로 초기 환경 세팅을 하고 두가지 동시에 띄우는 작업을 했습니다! 도커 연결전에는 IDE에서 run버튼을 눌러 작업 확인을 했었는데, 지금은 빌드 하고, compose up해서 확인을 해야하는걸까요? run버튼 누르니까 에러가 뜹니다.
-
미해결실전! Querydsl
Querydsl gradle 파일 질문
안녕하세요 스프링부터 3.x 버전대 이상 그래들 설정에서clean {delete file('src/main/generated')} 요부분 은 먼 기능이고 왜넣은건지 궁금합니다! 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨한 입 크기로 잘라먹는 타입스크립트(TypeScript)
타입스크립트 리액트 시작하기 오류
안녕하세요 선생님강의보구 실습중인데현재 이런 오류가 발생해있는데인터넷 찾아봐도 찾을수가 없어서 혹시 도움을 받을수있을까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
playground에서 이상한 하얀색 코드가 생기고 안 없어 집니다
playground에서 입력한 곳에 이상한 하얀색 코드를 없애는 법 좀 알려주세요
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
여유가 되신다면 mmorpg의 꽃, 레이드관련 강의 요청드려도 될까요
용가리가 브레스 쾅발구르기 낙석 쿠과광마지막 발악패턴 비늘탄막 슈슈숭난관을 넘어 던전에서 쌓여가는 우정!상상으로도 가슴뛰는 컨텐츠인데너무 무리한 부탁이겠지유
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
안녕하세요. 질문있어서 조심스레 글을 올려봅니다.
page-scroll-effect를 맨 상단 비주얼부분에만 적용하고나머지 section 들은 높이값을 갖도록 하고싶은대요.혹시 알수 있을까요? 말주변이 없어서 아래 이미지를 그렸습니다. ㅠㅠ
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
stack의 괄호문자제거 문제, 질문 이제안보시나요..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 문제 조건에서 소괄호 사이의 존재하는 문자는 제거한다고 했는데 만약 소괄호 쌍이 안맞고 '(' 나 ')'가 남게되는 경우는 감안을 안해도되는건가요?
-
미해결15일간의 빅데이터 파일럿 프로젝트
Zeppelin 쿼리 도중 fb303 에러
안녕하세요. Zeppelin 노트북을 통해, 쿼리를 날리는 실습을 하고 있습니다. SHOW TABLES 등과 같은 쿼리는 잘 작동하고 있습니다.하지만, 몇몇 테이블에 대해 아래와 같이 접근을 시도하면 그 이후 모든 쿼리가 작동하지 않습니다.예를들어 3개의 테이블이 있다고 하면, managed_smartcar_drive_info1managed_smartcar_drive_info2managed_smartcar_drive_info3 managed_smartcar_drive_info1 에 대해SELECT * FROM managed_smartcar_drive_info1 LIMIT 10은 몇 번을 시도하여 잘 되지만, SELECT * FROM managed_smartcar_drive_info2 LIMIT 10혹은SELECT * FROM managed_smartcar_drive_info3 LIMIT 10에 대해 시도하면 fb303 에러가 뜨고 있습니다. 그 후 SELECT * FROM managed_smartcar_drive_info1 LIMIT 10를 다시 실행하면, 동일하게 에러가 발생합니다. putty를 통한 HIVE, HUE를 통한 임팔라와 하이브에서 모두 정상적으로 작동하지만, Zeppelin에서만 문제가 발생하고 있습니다. restart를 하여도, 기존에 정상 작동하던 테이블 및 쿼리만 정상작동하며, 오류를 야기하는 테이블 및 쿼리는 다시 시도해도 동일한 결과가 나오고 있습니다. thrift, fb303모두 종속성을 설정해도 잘 안되는 것 같습니다 ㅠㅠ
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderServiceTest 실패
OrderServiceTest에서 assertEquals("주문 가격은 가격 * 수량이다")에서 실패가 뜨는데 원인을 찾기 어려워 질문 드립니다. 26000원이 나와야 하는데 0원이 나와서.. 총 가격을 구하는 for문이 안 돌아갔나 싶은데 코드에 오류는 없는 것 같아서 원인을 찾기 어렵습니다. https://drive.google.com/file/d/1SSJFsd6F2hikp7T3MONt5QvklxY-EX3B/view?usp=sharing
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
create_retrieval_chain, Custom LCEL 을 사용해서 chain을 구성하면 코드가 어떻게 되는지 보고 싶습니다.
from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type( llm, retriever=database.as_retriever(), chain_type_kwargs={"prompt": prompt} ) 이 예제 코드에서 create_retrieval_chain, Custom LCEL 을 사용해서 chain을 구성한 코드를 보고싶습니다.
-
해결됨실무에 바로 쓰자! 이커머스 데이터로 배우는 실전 SQL 분석
할인 데이터 확인 편에서 에러가 자꾸 납니다.
이렇게 했는데도 불구하고 계속 에러가 뜹니다 선생님
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
LockSupport.park()의 isInterrupted() 질문
안녕하세요. 김영한님의 강의 잘 보고 있습니다.바보 같은 질문일 수 있지만, Thread.sleep()과는 다르게 LockSupport.park()는 interrupt()를 이용해서 깨어나도 isInterrupted()가 true인 이유가 궁금합니다.그냥 단순히 InterruptedException이 발생하지 않기 때문일까요?