묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
통합 테스트 진행 도중 JdbcMemberRepository Transaction 관련 에러 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 현재 상황 스프링 DB 접근 기술 > 스프링 통합 테스트 수업을 듣던 도중 MemberServiceIntegrationTest.java 파일에서 회원가입() Test를 진행하던 도중 'java.sql.SQLException: Connection is closed'이라는 에러가 발생하는 상황입니다. 질문 게시판에서 확인해보니 현재 미해결된 상황이라 이렇게 다시금 글을 남깁니다. 구글링하여 확인해보니 @Transactional과 Connection객체의 트랜잭션 중복 문제인것 같은데... 어떻게 수정해야 할지 감이 안잡혀서 질문남깁니다. 하단에 공유 링크 첨부합니다. 확인해주시면 감사하겠습니다. Google Drive Link https://drive.google.com/file/d/1KBANfw1MXw3anPnnlIQgHzs5kolswUsd/view?usp=sharing 궁금한 점 구글에 검색해보니 connection 객체의 AutoCommit을 false로 설정하거나, TransactionSynchronizationManager.initSynchronization() 함수를 사용하여 트랜잭션을 동기화하여 처리하는 방식으로 사용하면 될것이다 라는 의견들이 있었습니다. initSynchronization()함수를 사용하니 'Cannot activate transaction synchronization - already active'이런 식의 에러가 발생하고 AutoCommit을 false로 설정하니 변함없이 Connection is closed라고 표시되더군요. 어떠한 방식을 사용해서 진행해야 에러를 잡을 수 있을지 궁금합니다. 로그를 찍어보니 JdbcMemberRepository.java의 pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); 이부분에서 에러가 발생하는 것 같은데... try catch로 감싸게 된다면 어떠한 Exception으로 감싸면 되는지도 궁금합니다.(IllegalStateException으로 감싸면 될까요...?)
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
with 사용
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. main에서 with를 이용하여 requests.Session()을 열고 닫는 것은 이해했습니다. 다만 fetcher에 들어가서 session.get(url)할 때도 with를 사용했는데 이유가 뭔가요?
-
미해결대세는 쿠버네티스 (초급~중급편)
POD- 실습 중 POD 생성 시 오류 발생
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님 쿠버네티스 버전 1.22로 강의를 듣고 있습니다 웝페이지로 POD 생성하는 부분을 진행 중인데 웹페이지 접속 후, 우측 상단에 + 누른 후, "입력을 통해 생성"탭에 ------------------------------------------------- apiVersion: v1 kind: Pod metadata: name: pod-1 spec: containers: - name: container1 image: kubetm/p8000 ports: - containerPort: 8000 - name: container2 image: kubetm/p8080 ports: - containerPort: 8080 --------------------------------------------------- 위의 내용을 붙여 넣고 업로드 버튼 클릭하면 Deploying file has failed the server does not allow this method on the requested resource 메시지가 출력되면서 pod가 만들어지지 않습니다 이럴때 어떤 부분을 참고해야하는지 알려 주실 수 있으실까요? 감사합니다 P.S : 직접 k8s-master에 접속하여 yaml파일로 만들면 정상적으로 pod 생성되는 것을 확인하였습니다
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
레디스 버전에 따른 오류
"dependencies": { "express": "4.17.2", "redis": "4.0.1" } 레디스가 4.0.1 일때 아래와 같은 오류가 발생했습니다. 혹시나 버전을 강의와 같은 3.0.1로 수정하니 정상 동작합니다. 이게 무슨 문제인건가요? node-app_1 | (node:1) UnhandledPromiseRejectionWarning: Error: The client is closed node-app_1 | at Commander._RedisClient_sendCommand (/usr/src/app/node_modules/@node-redis/client/dist/lib/client/index.js:393:31) node-app_1 | at Commander.commandsExecutor (/usr/src/app/node_modules/@node-redis/client/dist/lib/client/index.js:160:154) node-app_1 | at Commander.BaseClass.(anonymous function) [as set] (/usr/src/app/node_modules/@node-redis/client/dist/lib/commander.js:8:29) node-app_1 | at Object.<anonymous> (/usr/src/app/index.js:15:8) node-app_1 | at Module._compile (internal/modules/cjs/loader.js:778:30) node-app_1 | at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) node-app_1 | at Module.load (internal/modules/cjs/loader.js:653:32) node-app_1 | at tryModuleLoad (internal/modules/cjs/loader.js:593:12) node-app_1 | at Function.Module._load (internal/modules/cjs/loader.js:585:3) node-app_1 | at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) node-app_1 | (node:1) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2) node-app_1 | (node:1) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
-
미해결웹 게임을 만들며 배우는 React
똑같이 입력했는데 화면에 아무것도 뜨지 않아요.. 제가 어떤 부분을 실수 했을까요?? ㅠㅠ
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>구구단</title> <script src="https://unpkg.com/react@17/umd/react.development.js" crossorigin></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js" crossorigin></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> </head> <body> <div id="root"></div> <script type="text/babel"> class GuGuDan extends React.component { constructor(props) { super(props); this.state = { first: Math.ceil(Math.random() * 9), second: Math.ceil(Math.random() * 9), value: '', result: '', }; } render() { return ( <div> <div>{this.state.first}곱하기{this.state.second}는?</div> <form onSubmit = {(e) => { e.preventDefault(); if (parseInt(value)=== this.state.first * this.state.second) { this.setState({ result: "정답", first: Math.ceil(Math.random()*9), second: Math.ceil(Math.random()*9), value: '', }); } else{ this.setState({ result: '땡', value: '', }); } }}> <input type="number" value={this.state.value} onChang= {(e) => this.setState({value: e.target.value})}/> <button>입력!</button> </form> <div>{this.state.result}</div> </div> ); } } </script> <script type="text/babel"> ReactDOM.render(<GuGuDan />, document.querySelector('#root')); </script> </body> </html>
-
미해결프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
강의에서 보여지는 링크는 어디에 가면 볼 수 있나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결Slack 클론 코딩[실시간 채팅 with React]
typesciprt error
현 강의를 시청하는 중 "layout/workspace" 의 useSWR를 사용할때 제너릭을 <IUser | false> 로 지정해 준 후 기존에 적혀있는 userData에서 아래와 같은 타입에러가 나기 시작했습니다. Property 'email' does not exist on type 'false | IUser'. Property 'email' does not exist on type 'false'. 깃헙 코드와 비교해보았지만 다른점은 없었고, 어떤부분이 문제가되어 이러한 오류가 발생하는 걸까요? 해당 오류 때문에 제너릭을 지우고 아래 Workspaces.map((ws) => ...) 부분의 ws : IWorkspace 로 타입지정을 해주면 이상없이 동작하기는 합니다. 구글링을 해보아도 현재버전 타입스크립트 이슈가 따로 있지는 않은것 같고, 어디 실수한 부분이 있을까요? import { IUser } from '../../DataTypes'; const { data: userData, mutate } = useSWR<IUser | false>('http://localhost:3095/api/users', fetcher);//..// <span onClick={onClickUserProfile}> <ProfileImg src={gravatar.url(userData.email, { s: '28px', d: 'retro' })} alt={userData.nickname} /> {showUserMenu && ( <Menu style={{ right: 0, top: 38 }} show={showUserMenu} onCloseModal={onClickUserProfile}> <img src={gravatar.url(userData.email, { s: '28px', d: 'retro' })} alt={userData.nickname} /> <div> <span id={'profile-name'}>{userData.nickname}</span> <span id={'profile-active'}>Active</span> </div> <LogOutButton onClick={onLogout}>Logout</LogOutButton> </Menu> )}</span> {userData?.Workspaces.map((ws) => { return ( <Link key={ws.id} to={`/workspaces/${123}/channel/일반`}> <WorkspaceButton>{ws.name.slice(0, 1).toUpperCase()}</WorkspaceButton> </Link> );})}
-
미해결Klaytn 클레이튼 블록체인 어플리케이션 만들기 - NFT
!!!!!! 여러분 꼭 읽어주세요 !!!!!!!
안녕하세요. 2년전 강좌이다 보니 버전 호환 문제로 이슈가 있는 것 같네요. 먼저 죄송하다는 말씀 드리고 싶습니다. 질문란을 (1, 2) 활용하여 대부분 성공적으로 완주하시는 분들도 많은 반면 몇몇의 소수 수강생들이 버전문제로 고생하신게 보이네요. 제가 업데이트 해드리면 좋겠지만 여건이 녹록치 않습니다ㅠ 그래서 부탁드리는거인데 최근에 이슈 없이 완주 하신 분 노드버전과 npm 버전 명시해주시고 깃헙이나 구글드라이브에 프로젝트 업로드하셔서 쉐어 해주시면 감사하겠습니다. 기여해 주신 1분 다음 상급강좌 공짜로 제공해드릴께요.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
코딩테스트 준비는 언제부터 시작하면 좋을까요?
안녕하세요 루키스님 현재 Part1의 C++ 강의를 쭉 듣고있습니다 기업 공고를 찾아보니 코딩테스트를 요구하는 곳도 다수 존재하더군요 그래서 강의와 병행하며 백준이나 프로그래머스에서 코딩테스트 준비까지 같이하려는데 자료구조 알고리즘 강의까지 전부 학습한 후부터 준비하는 것이 좋을까요?
-
해결됨퍼블리셔 취업 진짜 실전 가이드(PDF)
유튜브 기초강의 예제파일들은 어디서 다운받을 수 있나요?
제가 유튜브로 html 기초강의부터 듣고 있습니다. 선생님의 웹디자인기능사 실기강의를 이미 완강을 하여서 로드맵 중, "교재 및 예제파일" 은 구매하진 않았습니다. (이미 웹디강의 내용 중, 교재와 예제파일이 있기에) 그런데 유튜브 기초강의자료들은 어디서 다운받을 수 있죠? 제가 이미 갖고 있는 웹디자인기능사 예제파일들과 조금 다른것 같아서요. 아래 영상 속 html구조만들기 자료파일을 받고싶습니다. 혹시 인프런 "교재 및 예제파일"도 구매해야 포함되어 있나요? https://youtu.be/Rbz3pwyrKds
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
시퀄라이즈 중복 메소드 처리 방식
안녕하세요시퀄라이즈 쓰다보니까 중복되는 메소드들이 많은데 아래와 같이 where 조건 처리 같은 메소드 중복 처리를 어떤 식으로 하시나요? 예를 들어 async function deleteInterestByGroupSeq(stockInterestGroupSeq) { await StockInterest.destroy({ where: { STOCK_INTEREST_GROUP_SEQ: stockInterestGroupSeq }, }); } async function deleteInterestBySeq(stockInterestSeq) { await StockInterest.destroy({ where: { STOCK_INTEREST_SEQ: stockInterestSeq }, }); } 이렇게 비슷한 2개가 있는 경우 파라미터로 분기치는 방식으로 통합해서 사용하는게 유용한가요? 아니면 저런식으로 나눠서 사용하는게 나은 방식인가요?
-
미해결React 기반 Gatsby로 기술 블로그 개발하기
질문
설명 부분에 이부분을 어디를 설정 하시라는 건지 잘 모르겠습니다. json 형식의 어느곳을 말씀하시는건지 잘 모르겠습니다.
-
해결됨따라하며 배우는 MySQL on Docker
groupadd: group mysql already exists에러
안녕하세요 강의 정말 잘듣고 있습니다. 실습 중 문제가 발생하여 질문 드립니다. 현재 ec2 Linux AMI 환경에서 실습을 진행하고 있습니다. 지난번 Proxy Layer 실습을 진행할 때 서버에서 mysql을 실행하기 위해 mysql server를 서버에 설치한 상태이구요. 문제는 여기서 발생했습니다. groupadd -g 1001 mysql 명령어를 입력하면, 아래와같은 메시지가 나옵니다. (root로 이동해서 해봐도 동일하고, 실제 그룹 리스트를 확인해보니 mysql:xx:xx 형태의 그룹이 있습니다.) 이대로 권한만 줘서 docker container를 실행시켜도 결국 중간에 에러가 발생하여 제대로 실행되지 않습니다 (도커 컨테이너 실행시 발생하는 에러) 이 문제를 어떻게 해결하면 좋을까요?
-
미해결홍정모의 따라하며 배우는 C언어
void swap(char** x, char** y) 함수의 내부에서
void swap(char** x, char** y) { char* temp = *x; *x = *y; *y = temp; } 이 함수에서 질문이 있습니다. 문자열 배열을 매개변수로 전달하기 위해서 이중포인터를 썻다는 것은 이해가 됐고, 임시 변수 temp에 문자열을 담아야 하니 char* temp 로 선언해준 것도 이해가 됐는데요, 왜 void swap() 함수 내부에서는, 매개변수로 이중포인터를 받아줬음에도 *x, *y로 사용하나요?(**x,**y가 아니라) 그리고 마지막 *y = temp; 문장도 temp선언을 포인터로 해줬는데 *y = *temp가 아닌 이유를 모르겠어요
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
네이버 html 코드
안녕하세요. 선생님께서 window 코드는 ctrl + shift + F2 ( 화면에는 F12) 라고 말씀하셨는데, 네이버를 들어가서 눌러 봐도 코드가 안뜨네요. 어떻게 하면 될까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
setter 제거에 관한 질문
선생님 언제나 좋은강의 감사드립니다! 선생님께서는 실무에서 왠만하면 셋터를 전부 제거 하신다고 알려주셨는데요. Book 클래스에서 Setter를 제거하려고 시도하다가 나온 의문점이 있어 질문드립니다. 밑의 코드와 같이 작성하였는데요.이 경우 author와 isbn필드로 인해 어쩔수없이 private setter를 두개 둘수밖에없었습니다. 이와같이 private setter를 두는것이 옳을지, 필드를 static으로 바꾸는게 좋을지에 대한 질문인데요 Book 객체의 경우 필드가 두개밖에 없어서 static으로 바꿔줘도 상관없을거라고 생각은하는데 실무에서는 무수히 많은 필드가 있는 객체가 있을경우 static 필드 vs private 셋터중 어떤게 옳은 방법인지 궁금해서 질문드립니다. @Entity@DiscriminatorValue("B")@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)public class Book extends Item { @Setter(value = AccessLevel.PRIVATE) private String author; @Setter(value = AccessLevel.PRIVATE) // static으로 만드는것을 고려? private String isbn; public static Book createNewBook(String author, String isbn, String name, int price, int quantity) { Book book = new Book(); book.setAuthor(author); book.setIsbn(isbn); book.setName(name); book.setPrice(price); book.setStockQuantity(quantity); return book; }}
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
질문있습니다!
assertEquals("주문한 가격은 가격 * 수량이다.", 10000 * orderCount, getOrder.getTotalPrice()); assertEquals("주문한 가격은 가격 * 수량이다." , book.getPrice() * orderCount, getOrder.getTotalPrice()); 위와 같이 선언해줘도 되는건가요?(참고 : 10000을 book.getPrice()로 변경해줬습니다.)
-
미해결게임 프로그래머 취업 전략 가이드
블로그 게시에 대한 질문있습니다
안녕하세요 지금까지 나온 강의들 정말 잘 듣고 있습니다. 마침 블로그에 대해 얘기가 나와 질문드리고 싶은데 Rookiss님 강의로 공부하여 정리한것들이 있어 그것을 가지고 블로그를 하여도되는지 궁금하여 물어봅니다. 직접적인 강의캡쳐하지도 않을것이며 코딩 부분은 제가 직접 입력한것을 2~3줄 정도만 정리하여 , 예제나 중요학습내용이 유출될수있는건 적지않을 생각입니다만 비공개로라도 올릴수있을까요? 혹여 저작권문제나 수익에 문제가생긴다면 하지않겠습니디.
-
미해결스프링 핵심 원리 - 기본편
join()의 테스트 관련
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MemberServiceTest에서 MemberRepository memberRepository = new MemoryMemberRepository(); 를 추가하고 member의 id와 저장소에 저장되어 있는 id로 테스트하는 것도 상관없을까요??
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
then(()=> next()) 와 then(next())
route에서 .then(() => next()) 이렇게 적게 되면 화면이 이동할 때 깜박이는 현상이 있습니다. git 코드를 받아보니 .then(next()) 라고 변경되어 있는걸 확인했습니다. 실제 강의에서는 then( () => next() ) 이렇게 진행을 하셨는데, 이렇게 할 경우 list 라는 변수를 공유하고 있기 때문에 데이터를 갱신 한 뒤에, next가 호출이 되서 이전 화면에서 데이터가 바뀐 데이터로 변경된 뒤에 transition 효과로 사라지기 때문에, 같은 데이터가 사라지고 (새로운 화면으로 이동하고) 다시 생겨서 마치 깜박이는 것처럼 보이게 되는데 그래서 .then(next())로 변경하신 걸까요 ? 이 경우는 프로미스 실행 전에 수행이 되니까 실제로는 store에서 dispath 하기 전에 next를 불러준 것과 같은 효과 맞을까요 ? 답변 부탁드립니다. 미리 감사 드립니다