묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
프로토타입 스코프 10분 56초
@Autowired 하니깐 저는 빨간색으로 줄쳐지는데 이거 왜이런건가요?
-
미해결스프링 핵심 원리 - 기본편
런타임 구현객체 결정에 대하여
안녕하세요 영한강사님! 매번 큰 도움을 받고있습니다.이번 질문은 '객체 지향 설계와 스프링' 챕터의 마지막 소 챕터인 '객체 지향 설계와 스프링'의 4:40초 대 언급하신 말씀에 대한 질문입니다.말씀하신 바로는 런타임에 클라이언트가 의존하는 인터페이스의 구현체가 바뀔 수 있다고 하셨는데, 문맥에 따라서 구현객체가 바뀔 수 있다는 뜻인가요? 예를 들어주신 MemoryMemberRepository와 JdbcMemberRepository도 런타임에 바뀌어서 들어갈 수 있다고 하셨는데, 저는 컴파일 시점에 구현체가 결정되야 한다고 생각했거든요. 아니면 제가 런타임에 대해 오해를 하고 있는걸까요?항상 감사합니다 ^^
-
해결됨Do it! 알고리즘 코딩테스트 with JAVA
평균 구하기 (백준 1546) 질문
System.out.println(sum*100.0/max/N);강의에서는 이렇게 출력하는데 System.out.println(sum/max*100.0/N);이렇게 /max 와 *100.0 의 위치를 바꾸게 되면출력값이 다르게 나와요! 문제에서 점수/M*100그러니까 점수를 최댓값으로 나누고 100을 곱한다고 되어 있는데 순서에 따라 출력값이 다른 거면 다르게 풀어야되지 않을까요??
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
application.yml 작성 오류
5분쯤에 application.yml 작성할 때 오류가 생겨 질문 드립니다. mysql은 잘 설치되어있는 것 같습니다감사합니다.
-
미해결<1만 시간의 법칙> 웹 페이지 제작하기
공부하면서 내용들
공부한 내용들 개인 블로그랑 깃허브에 올려도 되나요? 저작권 문제때문에 문의드립니다!
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
selenium 명령어 자동완성 안됨
vscode 사용하고 있습니다.코딩과 실행 모두 문제는 없으나selenium 관련 명령 입력할때는 김플님 강의화면과 달리 자동완성 기능이 작동하지 않습니다.예를 들어, options = Options()options.까지 입력하면 여러가지가 나오고 그 중 add_experimental_option 이 떠야되는데 그렇지 않아 매번 직접 타이핑하고 있습니다.해결방법이 있을까요?
-
미해결프로젝트로 배우는 React.js
13번째 DB에 저장을 따라하고 있습니다.
수업을 따라하면서 json-server는 -g 옵션을 넣어서 설치를 했습니다.npm install -g json-serverjson-server --watch db.json --port 3001npm i axios를 하고 npm start를 한 후 input과 textarea에 내용을 입력한 후 submit버튼을 눌렀는데 console 옆옆에 있는 network를 보니name 첫 부분에 빨간색으로 posts가 뜨면서 status가 404가 됩니다.무엇을 잘 못했을까요?https://github.com/yabosu02/cozi
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
DAO, DTO와 같은 용어
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]DAO, DTO와 같은 용어들도 해당 강의에서 설명해주시나요?아니면 개인적으로 따로 학습하면 되는 것일까요?
-
해결됨SW 개발자를 위한 성능 좋은 SQL 쿼리 작성법
혹시 강의 연장이 가능할까요?
안녕하세요, 선생님! 좋은 강의 정말 잘 듣고 있습니다.유익한 강의 내용을 천천히 정리하면서 제 지식으로 만들고 싶었는데,최근 개인적인 사정으로 바쁘다보니 강의 종료일이 금방 도래하게 되었습니다.. 혹시라도 1개월 정도 강의 연장이 가능하다면,좀 더 깊게 학습할 수 있는 기회가 될 것 같아 문의드립니다. 감사합니다.
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mmdetection mask-rcnn 모델 훈련 성공 후 inference 오류
안녕하세요... 좋은 강의 감사합니다. 제가 질문 드리고자 하는 부분은 다음과 같습니다.이미지 데이터셋을 자체적으로 만들어서 코랩에서 학습을 시키고, 학습된 모델을 코랩에서 inference 는 되는데, 이 모델을 제 개인 컴퓨터 ( GPU가 없는 cpu 로 진행)에서 진행하면 아래와 같은 오류가 발생하면서 작동이 되지 않습니다. 진행순서는 다음과 같습니다.자체 이미지셋 50장을 코랩에서 mmdetection mask-rcnn 으로 학습 (pre-train 모델 사용)학습 성공후, 코랩 유지상태에서 테스트용 이미지 inference 성공, 보기 및 저장 성공학습된 epoch.pth 모델을 다운받아서 개인 pc (CPU only) inference. 할 경우 아래와 같은 오류발생, mmdetection 예제 모델로 예제 이미지를 개인 pc에 다운받아서 inference 할 경우느 성공혹시 몰라서 tools 폴더내 publish.py로 모델을 생성해서도 해보았으나, 동일한 오류 발생오류 내용은 다음과 같습니다.load checkpoint from local path: /Users/category/Projects/WatizB/mmdetection/checkpoints/mask_rcnn_r101_fpn_1x_WatizB-ddc77fa4.pthThe model and loaded state dict do not match exactlysize mismatch for roi_head.bbox_head.fc_cls.weight: copying a param with shape torch.Size([12, 1024]) from checkpoint, the shape in current model is torch.Size([81, 1024]).size mismatch for roi_head.bbox_head.fc_cls.bias: copying a param with shape torch.Size([12]) from checkpoint, the shape in current model is torch.Size([81]).size mismatch for roi_head.bbox_head.fc_reg.weight: copying a param with shape torch.Size([44, 1024]) from checkpoint, the shape in current model is torch.Size([320, 1024]).size mismatch for roi_head.bbox_head.fc_reg.bias: copying a param with shape torch.Size([44]) from checkpoint, the shape in current model is torch.Size([320]).size mismatch for roi_head.mask_head.conv_logits.weight: copying a param with shape torch.Size([11, 256, 1, 1]) from checkpoint, the shape in current model is torch.Size([80, 256, 1, 1]).size mismatch for roi_head.mask_head.conv_logits.bias: copying a param with shape torch.Size([11]) from checkpoint, the shape in current model is torch.Size([80]).[[[148 148 148] [147 147 147] [147 147 147] ... [150 148 140] [152 149 141] [151 149 139]] [[147 147 147] [147 147 147] [147 147 147] ... [154 151 146] [154 151 143] [151 149 139]] [[147 147 147] [147 147 147] [147 147 147] ... [157 154 149] [155 152 144] [152 149 141]] ... [[155 155 155] [154 154 154] [154 154 154] ... [150 148 148] [151 149 149] [151 149 149]] [[153 153 153] [154 154 154] [154 154 154] ... [149 147 147] [150 148 148] [150 148 148]] [[152 152 152] [153 153 153] [155 155 155] ... [149 147 147] [149 147 147] [150 148 148]]]/Users/category/Projects/WatizB/mmdetection/mmdet/datasets/utils.py:66: UserWarning: "ImageToTensor" pipeline is replaced by "DefaultFormatBundle" for batch inference. It is recommended to manually replace it in the test data pipeline in your config file. warnings.warn( 바쁘시겟지만 확인 혹시 이런 상황에 대한 경험이 있으시면 답변 부탁드립니다. 수고하세요>~~
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JdbcMemberRepository 에러 부분 캡쳐 해서 올립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]오류 나는 부분이 빨간 줄 쳐져 있는 두 부분인데 왜 그런걸까요?
-
미해결자바스크립트 : 기초부터 실전까지 올인원
로컬스토리지 저장하는 방법 알려주세요 ㅠㅠ
로컬스토리지에 투두리스트 내역들을 저장하고 싶은데 콘솔/로컬스토리지에는 저장이 되는데 화면에는 새로고침해도 그냥 다 사라저버리네요 ㅠㅠ 로그인은 새로고침해도 이름이 남아있는데.. 혹시라도 코드한번보시고 도와주세요 ㅠㅠ let loginForm = document.querySelector('#login-form'); let loginBtn = document.querySelector('#login-btn'); let loginInput = document.querySelector('#login-input'); let greeting = document.querySelector('#greeting'); let taskArea = document.querySelector('.task-area'); let inputArea = document.querySelector('.input-area'); let inputText = document.querySelector('.input-area__text'); let addBtn = document.querySelector('.input-area__btn'); let arrary = []; let titleList = document.querySelector('.title-box'); let discription = document.querySelector('.discription'); const body = document.querySelector('body'); const images = [ '훈이.jpg', '유리.jpg', '철수.jpeg', '흰둥이.jpeg', '부리부리3.png', ]; let randomIndex = Math.floor(Math.random() * images.length); let container = document.querySelector('.container'); //로그인 const HIDDEN_CLASSNAME = 'hidden'; const USERNAME_KEY = 'username'; function loginHandle(event) { event.preventDefault(); loginForm.classList.add(HIDDEN_CLASSNAME); const userName = loginInput.value; localStorage.setItem(USERNAME_KEY, userName); greeting.innerHTML = `<span style="color:blue">${userName}</span> 님이 로그인함`; greeting.classList.remove(HIDDEN_CLASSNAME); reMoveClassList(); backImg(); } //리무브 클래스 function reMoveClassList() { taskArea.classList.remove(HIDDEN_CLASSNAME); inputArea.classList.remove(HIDDEN_CLASSNAME); } const savedUserName = localStorage.getItem(USERNAME_KEY); loginForm.addEventListener('submit', loginHandle); if (savedUserName === null) { loginForm.classList.remove(HIDDEN_CLASSNAME); backImg(); } else { reMoveClassList(); greeting.classList.remove(HIDDEN_CLASSNAME); greeting.innerHTML = `<span style="color:blue">${savedUserName}</span> 님이 로그인함`; backImg(); } //로컬스토리지 let toDos = []; const TODOS_KEY = 'todos'; function saveToDos() { localStorage.setItem(TODOS_KEY, JSON.stringify(toDos)); } const savedToDos = localStorage.getItem(TODOS_KEY); console.log(savedToDos); if (savedToDos !== null) { const parsedToDos = JSON.parse(savedToDos); toDos = parsedToDos; parsedToDos.forEach(render); } //인풋 function enterBtn(event) { event.preventDefault(); let obType = { id: Math.floor(Math.random() * 1000), isComplete: false, inputValue: inputText.value, }; inputText.value = ''; arrary.push(obType); render(); toDos.push(obType.inputValue); console.log(toDos); saveToDos(); } addBtn.addEventListener('click', enterBtn); //랜더 function render() { divHTML = ''; discription.innerHTML = `<sapn style="color:lightgreen">전체할일 :${ arrary.length } <sapn style="color:red">완료할일 :${checkCount()}</span>`; for (let i = 0; i < arrary.length; i++) { if (arrary[i].isComplete == true) { divHTML = divHTML + ` <div class="title-list"> <div class="title-list__title"> <h4 class="textDone">${arrary[i].inputValue}</h4> </div> <div class="title-list__btn"> <button class="title-list__btn1" onclick="checkBtn('${arrary[i].id}')"> <i class="fa-solid fa-face-tired"></i> </button> <button class="title-list__btn2" onclick ="deleteBtn('${arrary[i].id}')"> <i class="fa-solid fa-trash-can hello"></i> </button> </div> </div>`; } else { divHTML = divHTML + ` <div class="title-list"> <div class="title-list__title"> <h4>${arrary[i].inputValue}</h4> </div> <div class="title-list__btn"> <button class="title-list__btn1" onclick="checkBtn('${arrary[i].id}')"> <i class="fa-solid fa-check-to-slot"></i> </button> <button class="title-list__btn2" onclick ="deleteBtn('${arrary[i].id}')"> <i class="fa-solid fa-trash-can"></i> </button> </div> </div>`; } } titleList.innerHTML = divHTML; } //전체할일 카운트 function checkCount() { let count = 0; for (let i = 0; i < arrary.length; i++) { if (arrary[i].isComplete == true) { count++; } } return count; } //삭제버튼 function deleteBtn(b) { for (let i = 0; i < arrary.length; i++) { if (arrary[i].id == b) { arrary.splice([i], 1); break; } } render(); } //체크버튼 function checkBtn(a) { for (let i = 0; i < arrary.length; i++) { if (arrary[i].id == a) { arrary[i].isComplete = !arrary[i].isComplete; break; } } render(); } //시계 let getClock = () => { let date = new Date(); //new라서 객체임 현재 시간을 가저옴 const clock = document.querySelector('#clock'); let hour = String(date.getHours()).padStart(2, '0'); let mimute = String(date.getMinutes()).padStart(2, '0'); let second = String(date.getSeconds()).padStart(2, '0'); clock.innerHTML = `<span style="color:red">${hour}시 ${mimute}분 ${second}초</span>`; }; //타이머 함수를 통해서 1초마다 시간을 받아오게 작성 setInterval(getClock, 1000); getClock(); //배경 이미지 function backImg() { container.style.backgroundImage = `url(./image/${images[randomIndex]})`; container.style.backgroundSize = '160px'; container.style.backgroundRepeat = 'repeat'; } backImg();
-
해결됨Do it! 알고리즘 코딩테스트 with JAVA
퀵정렬 설명시 오류
퀵 정렬을 설명할 때 start와 end가 만나면 swap이 아니라 start와 end값을 비교해서 적정 위치에 넣어주는것 아니었나요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
styled-component ssr
스타일드 컴포넌트 ssr을 설정을 했는데도 자꾸 css가 깨지는데 혹시 어느 부분을 살펴보면 될까요 바벨과 document부분 모두 설정했습니다 강좌와는 다르게 타입스크립트로 진행했습니다
-
미해결스프링 시큐리티 OAuth2
0auth2.0 roles의 이해
키 클락을 로컬 8080으로 띄워서 강의처럼 실습을 하고 있습니다roles1번 을 통해 user 로 로그인 바로 리다이렉트 http:localhost:8081 로 넘어가고grant access 화면이 뜨지 않는데 왜 그런건가요 ?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이에서 실행할 때와 터미널에서 실행할 때 차이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]인텔리제이에서 실행 터미널에서 실행/hello 들어 갔을 때 터미널에서 실행할 때는 띄워주지 않는데 왜 그럴까요그리고 libs에 hello-spring-0.0.1-SNAPSHOT-plain.jar파일이 추가로 더 있던데 어떤 역활인지 궁금합니다
-
미해결함수형 프로그래밍과 JavaScript ES6+
질문 있습니다.
안녕하세요. 수업 중 이해를 잘 못한것 같아 질문 드립니다.const value = [[1, 2], [3, 4], [6, 7, 8]]; L.flatMap = curry(pipe( L.map, L.flatten, )); let it = L.flatMap(map(a => a * a), value) log(...it)위 코드가 돌아가는 과정을 한눈에 이해하기 어렵네요. 제가 생각한 흐름은 아래와 같은데 봐주실수 있을까요??L.flatMap을 만든다. L.flatMap은 인자를 받을 준비를 하는 함수로 인자를 받으면 L.map과 L.flatten을 차례로 실행시켜 준다. L.flatMap의 내부 함수 pipe를 curry로 감싸긴 했지만 실행시 인자 2개를 같이 넣어줄 것이기 때문에 의미 없다. L.flatMap을 실행시켜준다. 첫번째 인자로 map(a => a a) 두번째 인자로 value 값을 넣는다. 넣은 값은 L.map으로 간다. \L.map과 L.flatMap의 인자로 들어온 인자(a => a a, value)는 L.map과 합성된다. 하지만 L.map 안에 log가 바로 찍히지 않는다. 왜냐면 제너레이터는 값이 필요해질 때(next()) 코드가 실행된다. 첫 번째 값이 필요 없다면 아예 실행되지 않고 map(a => a a)와 value가 들어간 상태로 대기?한다. 그 후 L.flatMap 함수를 평가해 값을 하나씩 가져오게 되면 L.flatten으로 가서 값을 만드려 하는데 iter 값이 없으므로 L.map으로 간다. L.map 으로 가서 값을 만드는데 이터러블한 데이터를 하나 가져와서 3번에서 인자로 받은 map(a => a a)을 이용해 값을 다룬 후 yield로 보내준다.차례대로 값을 가져온다.다시 앞으로 돌아가서 천천히 복습해보는게 좋을까요? 아니면 일단 들어보면서 이해해보는게 좋을까요? 어렵지만 강의와 강의 내용은 너무 재밌습니다. 감사합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
스택을 사용하기 했는데 효율성이 떨어지는 거 같아 리뷰 요청드립니다~
function solution(a){ let answer=0 let stack = [] let stick = [] let laser = [] // 막대 내 속한 레이저의 갯수 + 1이 최종 막대 갯수 // 막대 한 개 안에 속한 레이저가 총 몇개인지 구해서 카운트 더하기 for(let x=0; x<a.length; x++){ //막대 시작 if(a[x]==="(" && a[x+1] !==")"){ stack.push(x) } // 막대 끝 if(a[x]===")" && a[x-1] !=="("){ const pair = stack.pop() stick.push([pair,x]) } //레이저인데 막대 내부에 있는 레이저인 경우 if(a[x]=="(" && a[x+1]==")" && (a[x-1]=="(" || a[x+2]==")")){ laser.push(x) } } for (let i = 0; i < stick.length; i++) { const start = stick[i][0]; const end = stick[i][1]; let cnt = 0 for (let j = 0; j < laser.length; j++) { if (laser[j] > start && laser[j] < end) { cnt++ } } answer += cnt+1 } console.log(stick,laser) return answer } let a="()(((()())(())()))(())"; console.log(solution(a)); 이렇게 하다 보니 이중 for문을 사용해 복잡도가 n2이 되버려서 효과적이지 못한거같습니다.. 이런 접근 법은 별로일까요
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
7강 포스트맨 질문
회원가입으로 send하면저는 오히려 결과가 나오질 않습니다.ㅜㅜ제눈엔 오타가 안보이는데 어떠문제일까요const express = require("express"); const app = express(); const PORT = 4000; const bodyParser = require('body-parser'); const {User} = require("./models/User"); //application/x-www-form-urlencoded 정보 분석 app.use(bodyParser.urlencoded({extended: true})) //application/json파일을 분석 app.use(bodyParser.json()) app.get('/',(req, res) => {res.send('Hello Word!')}) app.post('/register',(req,res)=>{ //회원가입할 때 필요한 정보들을 client에서 가져오면, //그 정보들을 DB에 넣어준다. const user = new User(req.body); //user모델에 정보가 저장됨 //실패 시, 실패한 정보를 보내줌 user.save((err, userInfo) => { if(err) return res.json({success: false, err}) return res.status(200).json({success: true}) }) }) app.listen(PORT, () => { console.log("서버 실행"); });
-
미해결실전! Querydsl
벌크연산
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]질문 1.벌크 연산시em.clear 을 해주는데 이때 원치 않는영속성 컨텍스트의 값을 clear 하는 경우는 없나요 ? 그리고 벌크 연산시 flush,clear을 해주는 이유가영속성 컨텍스트와 디비 정보를 일치하게 만들어 줄려고 하는건데만약에 벌크연산 트랜잭션 안에 따로 벌크연산말고 다른 코드가 없으면 em.flush, em.clear 코드기 필요 없는데 습관처럼 안전하게 넣는다고 생각하면 되는건가요? ==============================질문 2.querydsl 은 업데이트할떄 때로findbyid 를 할 필요가 없는건가요 >?