묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JdbcMemberRepository에서 어디가 잘못된걸까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용].중간에 conn 부분이랑 맨아래 throws SQLException 쪽에 빨간줄이 그어 있긴하는데 같은 코드인것 같은데 어디서 잘못된건지 잘 모르겠습니다. 제가 작성한 코드는public class JdbcMemberRepository implements MemberRepository{ private final DataSource dataSource; public JdbcMemberRepository(DataSource dataSource){ this.dataSource = dataSource; } @Override public Member save(Member member) { String sql = "insert into member(name) values(?)"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ conn = getConnection(); pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, member.getName()); pstmt.executeUpdate(); rs = pstmt.getGeneratedKeys(); if (rs.next()) { member.setId(rs.getLong(1)); } else { throw new SQLException("id 조회 실패"); } return member; } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public Optional<Member> findById(Long id) { String sql = "select * from member where id = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setLong(1, id); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } else { return Optional.empty(); } } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public Optional<Member> findByName(String name) { String sql = "select * from member where name = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setString(1, name); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } return Optional.empty(); } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } private Connection getConnection() { return DataSourceUtils.getConnection(dataSource); } private void close(Connection conn, PreparedStatement pstmt, ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (pstmt != null) { pstmt.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (conn != null) { close(conn); } } catch (SQLException e) { e.printStackTrace(); } } @Override public List<Member> findAll() { String sql = "select * from member"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); List<Member> members = new ArrayList<>(); while(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); members.add(member); } return members; } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } private void close(Connection conn) throws SQLException { DataSourceUtils.releaseConnection(conn, dataSource); } }
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
비동기를 while로 반복하는 방법 문의
안녕하세요알려주신 코드를 10개씩 비동기로 묶어서 while로 돌리고 싶은데 잘 안되네요아래와 같은 코드로 했을 때 얼핏 잘 되는 것 같지만다른 티스토리 블로그로 바꿔서 해보면 중복 데이터가 발생합니다 비동기를 while 안에 넣어서 써도 되는건지 알고 싶습니다from bs4 import BeautifulSoup import aiohttp import asyncio async def fetch(session, url, i): async with session.get(url) as response: html = await response.text() soup = BeautifulSoup(html, "html.parser") tag = soup.find("p", class_="txt_thumb") # 첫번째 글제목만 print(tag.text) async def main(jump): BASE_URL = "https://bjpublic.tistory.com/category/%EC%A0%84%EC%B2%B4%20%EC%B6%9C%EA%B0%84%20%EB%8F%84%EC%84%9C" urls = [f"{BASE_URL}?page={i}" for i in range(j + 1, j + 11)] async with aiohttp.ClientSession() as session: await asyncio.gather(*[fetch(session, url, i) for i, url in enumerate(urls)]) if __name__ == "__main__": j = 0 while True: asyncio.run(main(j)) print("--------") j = j + 10 if j == 20: break
-
미해결처음 만난 리액트(React)
그냥 npm start하면 돌아가지 않습니다.
npm ERR! Missing script: "start"npm ERR!npm ERR! Did you mean one of these?npm ERR! npm star # Mark your favorite packagesnpm ERR! npm stars # View packages marked as favoritesnpm ERR!npm ERR! To see a list of scripts, run:npm ERR! npm runnpm ERR! A complete log of this run can be found in:npm ERR! C:\Users\hhayo\AppData\Local\npm-cache\_logs\2023-04-01T13_55_50_978Z-debug-0.log이런 에러가 뜨는데 cd my-app을 해야만 돌아가는데 어떻게 바꿀 수 있나요? 그리고 이유가 뭔가요?
-
미해결처음 만난 리액트(React)
시계 만들기 실행이 안됩니다.
복붙해서 한건데, 실행이 안돼서 위에 import app 부분 주석처리하니까 돌아갑니다. 강사님은 안그러는데 제꺼에서는 왜 그런가요?
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
모든 표와 그림의 속성을 "글자처럼 취급" 으로 바꾸려면 어떻게 해야 하나요?
api에 속성에서 바꿀 수 있는지 모르겠어요 Shape Object 안에 속성에 분명 있는 것 같은데 좋은 강의 감사합니다.
-
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 완전처음배우는데 자바도 잘 모르지만 메소드가 안불러와진다고하는데 어떻게 해결하나요
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
입출력 파트
선생님 혹시 고급편 입출력 파트만 먼저 수강해도 되나요? 만약 입출력파트 이해를 위해 앞의 파트 수강이 필요하다면 어느 파트를 먼저 수강해야할까요? 오늘 유튭으로 기본편 모두 완강했고 고급편도 결제했습니다!
-
미해결비전공 기획자 및 관리자를 위한 IT 필수 지식
강의 자료 부탁드립니다!!ㅎㅎ
안녕하세요. 수업 너무 좋고 재밌게 듣고 있습니다. 혹시 강의 자료 공유가 가능할까요? 이메일인 kakclo9@gmail.com 입니다. 감사합니다
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
LRU 코드 리뷰 부탁드립니다
function setQueue(queue, val) { if (queue.includes(val)) { queue = queue .slice(0, queue.indexOf(val)) .concat(queue.slice(queue.indexOf(val) + 1)); queue.unshift(val); } else { queue.pop(); queue.unshift(val); } return queue; } function solution(s, n, arr) { let queue = new Array(s).fill(0); for (const val of arr) { if (queue.length === s) { queue = setQueue(queue, val); } else { queue = setQueue(queue, val); } } return queue.join(" "); } hit, miss 인 경우의 로직을 setQueue로 함수화해서 처리를 해보았는데, 혹시 틀리거나 예외케이스에서 틀릴 경우가 생길까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 39p 질문드립니다!
선생님 안녕하세요! 다름아니라 교안을 통해 조금씩 배우는 중인데, 왜 저는 선생님과 같은 코드를 쳤는데도, 저런식으로 오류가 뜨면서 실행이 되지 않는걸까요?ㅜㅜ auto 타입도 아예 인식이 안되더라고요.C++14버전으로 컴파일하게 설정하는 부분도 맞게 했는데 왜그럴까요? 답변 기다리겠습니다. 감사합니다!
-
미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔 - 필터 수강 중 질문
안녕하세요. 스프링 핵심 원리 기본편 중 컴포넌트 스캔의 필터 강의를 수강하던 중 에러가 생겼습니다. 에러는 해결했지만 궁금한 점이 생겨 질문 드립니다. 구분선을 기준으로 안에 있는 말들은 모두 상황의 이해를 돕기 위한 말들이니 질문만 보고 싶으시면 구분선 밖 마지막 말만 보셔도 괜찮으실 거라 생각합니다. 제가 작성한 코드는 다음과 같고 강의의 제목과 같이 컴포넌트 스캔의 필터 부분을 학습하기 위한 예제 코드입니다. package hello.core.scan.filter; import java.lang.annotation.*; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyIncludeComponent { }MyIncludeComponent라는 애노테이션을 생성하고 package hello.core.scan.filter; import org.springframework.stereotype.Component; @MyIncludeComponent public class BeanA { }위와 같이 해당 애노테이션이 붙는 클래스 BeanB를 생성하고 package hello.core.scan.filter; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import static org.assertj.core.api.Assertions.*; import static org.springframework.context.annotation.ComponentScan.*; public class ComponentFilterAppConfigTest { @Test void filterScan(){ ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfig.class); BeanA beanA = ac.getBean("beanA", BeanA.class); assertThat(beanA).isNotNull(); // BeanB beanB = ac.getBean("beanB", BeanB.class); } @Configuration @ComponentScan( includeFilters = @Filter(type = FilterType.ANNOTATION, classes = MyIncludeComponent.class), excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = MyExcludeComponent.class) ) static class ComponentFilterAppConfig{ } }위와 같이 테스트 코드를 만들어 실행하였습니다.ComponenScan을 이용해 MyIncludeComponent 애노테이션이 붙은 클래스를 자동으로 빈으로 등록시키고 조회하는 테스트 코드입니다.(MyExcludeComponent 애노테이션이나 해당 애노테이션을 붙힌 BeanB 클래스는 현재 질문과 관계가 없다고 판단해 코드를 생략하였습니다.)그런데 해당 테스트 코드를 실행하니 beanA라는 이름의 빈을 컨테이너에서 찾을 수 없다는 에러가 떴습니다.여러 방법으로 찾아보던 중 @ComponentScan 애노테이션의 includeFilters 속성과 @MyIncludeComponent 애노테이션을 올바르게 사용하여도, BeanA 클래스가 스프링 컨테이너에 등록되지 않는 경우가 생길 수 있고 이를 해결하기 위해선 @Component 애노테이션이나 @Service, @Repository 등과 같은 스프링이 제공하는 스테레오 타입 애노테이션 중 하나를 BeanA 클래스에 추가하여 해당 클래스를 스프링 빈으로 등록해야 한다는 해결책을 발견했고 그대로 따라했습니다. BeanA 클래스에 @Component 애노테이션을 붙혀 테스트 코드를 그대로 다시 실행하였고 에러는 해결이 되었습니다. 그래서 BeanA 클래스의 @Component 애노테이션을 다시 제거한 후 테스트 코드를 돌렸는데 성공하였습니다. 이런 일이 왜 발생하는지 제대로 이해가 안 되어서 질문 드립니다.@ComponentScan 애노테이션의 includeFilters 속성과 @MyIncludeComponent 애노테이션을 올바르게 사용하여도, BeanA 클래스가 스프링 컨테이너에 등록되지 않는 경우가 생길 수 있는 것인가요? 또 어떤 원리로 이렇게 등록이 안 되는 경우가 생기는지가 궁금합니다!
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
<Link>와 useNavigate hook의 차이는 무엇인가요?
react-router-dom 을 공부하다가 의문이 생겨서 질문글에 올립니다.다이어리 상세 페이지로 이동시킬 때 useNavigate hook을 활용하고 있는데, useNavigate hook은 <a>태그로 렌더링되지 않고 키보드로도 접근이 안 돼서 공식 문서에서는 <Link>를 더 권장하는 거 같더라구요. https://reactrouter.com/en/main/start/concepts#navigating어떤 걸 쓰는 게 더 좋을까요?
-
해결됨스프링 핵심 원리 - 기본편
LogDemoService 의 필요 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요! 좋은 강의 잘 보고 있습니다. 감사합니다.LogDemoController 에서 MyLogger 의 log 함수를 통해 로그를 잘 출력하는 부분은 이해하였습니다. 다만 LogDemoService 가 왜 필요한지는 잘 모르겠더라구요. (제가 Spring 초보라서 그런듯합니다만 ^^;;)@Controller @RequiredArgsConstructor public class LogDemoController { private final LogDemoService logDemoService; private final MyLogger myLogger; @RequestMapping("log-demo") @ResponseBody public String logDemo(HttpServletRequest request) { String requestURL = request.getRequestURL().toString(); myLogger.setRequestURL(requestURL); myLogger.log("controller test"); logDemoService.logic("testId"); return "OK"; } }
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
getClass()와 .class의 차이
실수로 LogTestController.class 를 getLogger의 파라미터로 넣어줬더니 debug와 trace 의 로깅은 찍히지 않더라구요 getClass()를 파라미터로 넣으니 잘 되던데 어떤 차이가 있는 건가요 ?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
id 값 관련 질문
n = 800m = 800이렇게 선언했을 때 id 값이 같다고 나오는데 n = [1, 2, 3]m = [1, 2, 3]처럼 리스트로 선언했을 때는 id 값이 다르다고 나오는데왜 그런가요?
-
미해결실전! Querydsl
반환타입
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]repository에서 반환 타입을 Tuple이 아닌바로 DTO타입으로 받아서 사용해도 무관한가요 ?
-
미해결실전! Querydsl
영속성 컨텍스트에서 값을 찾아오지 않음
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]해당 강의 06:09 에 작성된 테스트가 실패합니다.당연히 성공할 것으로 생각한 테스트가 실패하여 원인을 찾아보려 하였으나, 잘 찾아지지 않네요 ㅠ 영속성 컨텍스트 1차 캐시에 있는 member를 가져오지 않고 실제 쿼리를 수행하여 동일한 pk 를 지닌 member를 조회해 가져오는데, Entity Manager 가 clear 될만한 조건이 발견되지 않습니다.직접 디버깅을 따라가보려 하였으나, 이 부분도 쉽지 않네요ㅠㅠ해결할만한 검색 키워드 정도만 주셔도 감사하겠습니다!MemberJpaRepository
-
미해결유니티 Addressable 을 이용한 패치 시스템 구현
PercentComplete
다운로드 받고, 로드 하는데처음에 다운로드 받고 로드 하는건 문제 없이 되거든요.근데 그 이후 앱을 껐다 키고 다시 로드 받으면PercentComplete가 0.5에 멈춰요..이유가 뭘까요..? 상황을 정확히 설명하자면 씬1에서 내려받고, 씬2로 넘어가 씬1에서 내려받은 에셋을 로드 하는거에요
-
해결됨몇 줄로 끝내는 인터랙티브 웹 개발 노하우 [초급편]
리뉴얼 이전 강의 파일
안녕하세요!강의 잘 듣고 있습니다! 이번에 강의가 리뉴얼되면서리뉴얼 되기 이전의 강의 영상과 파일이 사라져있는데이전 강의 파일이 필요한데 혹시 이전 강의 파일은 어디서 받을 수 있을까요..? ㅠ3ㅠ
-
해결됨스프링 핵심 원리 - 기본편
중복 타입 조회
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. "타입으로 조회시 같은 타입이 둘 이상 있으면, 중복 오류가 발생한다" 예제의 경우 memberRepository1()과 memberRepository2()에 return 값이 둘다 MemmoryMemberRepository()여서(둘다 타입이 memberRepository여서) 타입 중복이 된것으로 이해했는데 맞을까요? 2. "특정 타입을 모두 조회하기"에서 key값은 빈 이름이고, value값인 beansOfType.get(key)값은 빈 객체가 맞을까요?