묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결더 개발자, 인터뷰 가이드
미션이 누락되어 있네요 확인 부탁드립니다.
감사합니다,
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
feature map - ssd에 대해서 질문이 있습니다
안녕하세요 ssd의 이해 2강에서 anchor box 설명 전 feature map 기반으로 object detection 설명에서 질문이 있습니다 다음 그림에서 질문이 있는데, feature map이라는 것이 일정 크기의 필터 64개, 128개를 거쳐서 나온 결과값이라고 알고 있는데, 그러면 위에 32x32는 원본 이미지에서 약 10x10사이즈의 필터를 거쳐서 나온 결과값으로 이해하면 될까요? 그러면 이런 값들은 원본 이미지의 특성을 잘 나타내는 값이라고 보면되는거죠? 그리고 이어서 나오는 16x16이나 8x8도 3x3의 사이즈의 필터를 거쳐서 나온 것이고요? 이런 특성값과 여러개의 피쳐 맵을 통해서 객체가 어디 있는지 윈도우 사이즈에 의해서 판단하는 것이고요? 감사합니다
-
미해결코어 자바스크립트
11:14에 b = 15를 대입하면
5004에 'ddd' 5005에 15를 넣고 ------------ 1003 ------------ 이름 : b 값: @5005 가 되어야하는 거군요. . 감사합니다.
-
미해결Firebase 서버를 통한 Android앱 개발 지침서
Database 에서 버전이 바뀌면서 코드도 바껴서 적어 드려요
taskSnapshot.getDownloadUrl(); 이코드가 없어졌어요 그래서 업로드한 경로를 알려면 Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() { @Override public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception { if (!task.isSuccessful()) { throw task.getException(); } // Continue with the task to get the download URL return riversRef.getDownloadUrl(); }}).addOnCompleteListener(new OnCompleteListener<Uri>() { @Override public void onComplete(@NonNull Task<Uri> task) { if (task.isSuccessful()) { Toast.makeText(UploadActivity.this, "업로드 성공", Toast.LENGTH_SHORT).show(); //파이어베이스에 데이터베이스 업로드 @SuppressWarnings("VisibleForTests") Uri downloadUrl = task.getResult(); ImageDTO imageDTO = new ImageDTO(); imageDTO.setImageUrl(downloadUrl.toString()); imageDTO.setTitle(etTitle.getText().toString()); imageDTO.setDescription(etDesc.getText().toString()); imageDTO.setUid(mAuth.getCurrentUser().getUid()); imageDTO.setUserId(mAuth.getCurrentUser().getEmail()); //image 라는 테이블에 json 형태로 담긴다. //database.getReference().child("Profile").setValue(imageDTO); // .push() : 데이터가 쌓인다. database.getReference().child("Profile").push().setValue(imageDTO); Intent intent = new Intent(getApplicationContext(), UserActivity.class); startActivity(intent); } else { // Handle failures // ... } }}); Uri downloadUrl = task.getResult(); 이 코드를 쓰면 됩니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
안녕하세요 . FIltering 관련해서 질문이 있습니다.!
안녕하세요. 우선 좋은 강의 감사드립니다.! 프로그래밍으로 제어하는 Filtering 방법 강의를 보다가 궁금한 점이 생겼는데, 이렇게 따로 필터링을 적용한 방법과 단순히 DTO를 따로 만들어서 객체를 리턴해주는 것과 기술적으로 차이점이 있을까요? 예를들어서 예제처럼 password만 제외하고 값을 받고 싶으면 @Getter@Setterpublic class UserDto { private Integer id; private String name; private Date joinDate; private String ssn;} 이렇게 DTO를 만들어서 DTO객체를 리턴해주는 방법과 어떤 차이점이 있는지 궁금합니다.!
-
미해결애플 웹사이트 인터랙션 클론!
강사님 질문있어서 문의드립니다!
첫번째 문제 발생현상 : 새로고침 했을 경우 간혈적으로 이런 에러 문구가 출력이 됩니다. 섹션0부분에 이미지파일은 눈으로 봤을땐 정상적으로 출력된 상황입니다. 에러문구는 하단에 붙히겠습니다. main.js:258 Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap or OffscreenCanvas)' at playAnimation (main.js:258) at scrollLoop (main.js:364) at main.js:368 두번째 문제 발생현상 : 이것도 간혈적으로 출력되는 문제이며 main.js:352 Uncaught TypeError: Cannot read property 'scrollHeight' of undefined at scrollLoop (main.js:352) at main.js:368 이러 한 문구가 출력이 됩니다. 정말 죄송하지만 제 코드한번 봐주실수 있을까요?? (() => { let yOffset = 0; //window.pageYOffset 대신 쓸 변수 let prevScrollHeight = 0; // 현재 스크롤 위치(yOffset)보다 이전에 위치한 스크롤 섹션들의 스크롤 높이값의 합 let currentScene = 0; // 현재 활성화된(눈 앞에 보고있는) 씬(scroll-section) let enterNewScene = false; // 새로운 scene이 시작된 순간 true const sceneInfo = [{ // 0 type: 'sticky', heightNum: 5, // 브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight: 0, objs: { container: document.querySelector('#scroll-section-0'), messageA: document.querySelector('#scroll-section-0 .main-message.a'), messageB: document.querySelector('#scroll-section-0 .main-message.b'), messageC: document.querySelector('#scroll-section-0 .main-message.c'), messageD: document.querySelector('#scroll-section-0 .main-message.d'), canvas: document.querySelector('#video-canvas-0'), context: document.querySelector('#video-canvas-0').getContext('2d'), videoImages: [] }, values: { videoImageCount: 300, imageSequence: [0, 299], messageA_opacity_in: [0, 1, { start: 0.1, end: 0.2 }], messageB_opacity_in: [0, 1, { start: 0.3, end: 0.4 }], messageC_opacity_in: [0, 1, { start: 0.5, end: 0.6 }], messageD_opacity_in: [0, 1, { start: 0.7, end: 0.8 }], messageA_translateY_in: [20, 0, { start: 0.1, end: 0.2 }], messageB_translateY_in: [20, 0, { start: 0.3, end: 0.4 }], messageC_translateY_in: [20, 0, { start: 0.5, end: 0.6 }], messageD_translateY_in: [20, 0, { start: 0.7, end: 0.8 }], messageA_opacity_out: [1, 0, { start: 0.25, end: 0.3 }], messageB_opacity_out: [1, 0, { start: 0.45, end: 0.5 }], messageC_opacity_out: [1, 0, { start: 0.65, end: 0.7 }], messageD_opacity_out: [1, 0, { start: 0.85, end: 0.9 }], messageA_translateY_out: [0, -20, { start: 0.25, end: 0.3 }], messageB_translateY_out: [0, -20, { start: 0.45, end: 0.5 }], messageC_translateY_out: [0, -20, { start: 0.65, end: 0.7 }], messageD_translateY_out: [0, -20, { start: 0.85, end: 0.9 }] } }, { // 1 type: 'normal', // heightNum: 5, // type normal에서는 필요 없음 scrollHeight: 0, objs: { container: document.querySelector('#scroll-section-1'), content: document.querySelector('#scroll-section-1 .description') } }, { // 2 type: 'sticky', heightNum: 5, scrollHeight: 0, objs: { container: document.querySelector('#scroll-section-2'), messageA: document.querySelector('#scroll-section-2 .a'), messageB: document.querySelector('#scroll-section-2 .b'), messageC: document.querySelector('#scroll-section-2 .c'), pinB: document.querySelector('#scroll-section-2 .b .pin'), pinC: document.querySelector('#scroll-section-2 .c .pin') }, values: { messageA_translateY_in: [20, 0, { start: 0.15, end: 0.2 }], messageB_translateY_in: [30, 0, { start: 0.6, end: 0.65 }], messageC_translateY_in: [30, 0, { start: 0.87, end: 0.92 }], messageA_opacity_in: [0, 1, { start: 0.25, end: 0.3 }], messageB_opacity_in: [0, 1, { start: 0.6, end: 0.65 }], messageC_opacity_in: [0, 1, { start: 0.87, end: 0.92 }], messageA_translateY_out: [0, -20, { start: 0.4, end: 0.45 }], messageB_translateY_out: [0, -20, { start: 0.68, end: 0.73 }], messageC_translateY_out: [0, -20, { start: 0.95, end: 1 }], messageA_opacity_out: [1, 0, { start: 0.4, end: 0.45 }], messageB_opacity_out: [1, 0, { start: 0.68, end: 0.73 }], messageC_opacity_out: [1, 0, { start: 0.95, end: 1 }], pinB_scaleY: [0.5, 1, { start: 0.6, end: 0.65 }], pinC_scaleY: [0.5, 1, { start: 0.87, end: 0.92 }] } }, { // 3 type: 'sticky', heightNum: 5, scrollHeight: 0, objs: { container: document.querySelector('#scroll-section-3'), canvasCaption: document.querySelector('.canvas-caption') }, values: { } } ]; function setCanvasImages() { for (let i = 0; i < sceneInfo[0].values.videoImageCount; i++) { imgElem = new Image(); imgElem.src = `./video/001/IMG_${6726 + i}.JPG`; sceneInfo[0].objs.videoImages.push(imgElem); } } setCanvasImages() function setLayout() { // 각 스크롤 섹션의 높이 세팅 for (let i = 0; i < sceneInfo.length; i++) { if (sceneInfo[i].type === 'sticky') { sceneInfo[i].scrollHeight = sceneInfo[i].heightNum * window.innerHeight; } else if (sceneInfo[i].type === 'normal') { sceneInfo[i].scrollHeight = sceneInfo[i].objs.content.offsetHeight + window.innerHeight * 0.5; } sceneInfo[i].objs.container.style.height = `${sceneInfo[i].scrollHeight}px`; } yOffset = window.pageYOffset; let totalScrollHeight = 0; for (let i = 0; i < sceneInfo.length; i++) { totalScrollHeight += sceneInfo[i].scrollHeight; if (totalScrollHeight >= yOffset) { currentScene = i; break; } } document.body.setAttribute('id', `show-scene-${currentScene}`); } function calcValues(values, currentYOffset) { let rv; //현재 씬(스크롤섹션)에서 스크롤된 범위를 비율로 구하기 const scrollHeight = sceneInfo[currentScene].scrollHeight; const scrollRatio = currentYOffset / scrollHeight; if (values.length === 3) { //start ~ end 사이에 애니메이션 실행 const partScrollStart = values[2].start * scrollHeight; const partScrollEnd = values[2].end * scrollHeight; const partScrollHeight = partScrollEnd - partScrollStart; if (currentYOffset >= partScrollStart && currentYOffset <= partScrollEnd) { rv = (currentYOffset - partScrollStart) / partScrollHeight * (values[1] - values[0]) + values[0]; } else if (currentYOffset < partScrollStart) { rv = values[0]; } else if (currentYOffset > partScrollEnd) { rv = values[1]; } } else { rv = scrollRatio * (values[1] - values[0]) + values[0]; } return rv; } function playAnimation() { const objs = sceneInfo[currentScene].objs; const values = sceneInfo[currentScene].values; const currentYOffset = yOffset - prevScrollHeight; const scrollHeight = sceneInfo[currentScene].scrollHeight; const scrollRatio = currentYOffset / scrollHeight; switch (currentScene) { case 0: let sequence = Math.round(calcValues(values.imageSequence, currentYOffset)); objs.context.drawImage(objs.videoImages[sequence], 0, 0); if (scrollRatio <= 0.22) { // in objs.messageA.style.opacity = calcValues(values.messageA_opacity_in, currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageA.style.opacity = calcValues(values.messageA_opacity_out, currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.42) { // in objs.messageB.style.opacity = calcValues(values.messageB_opacity_in, currentYOffset); objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageB.style.opacity = calcValues(values.messageB_opacity_out, currentYOffset); objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.62) { // in objs.messageC.style.opacity = calcValues(values.messageC_opacity_in, currentYOffset); objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageC.style.opacity = calcValues(values.messageC_opacity_out, currentYOffset); objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.82) { // in objs.messageD.style.opacity = calcValues(values.messageD_opacity_in, currentYOffset); objs.messageD.style.transform = `translate3d(0, ${calcValues(values.messageD_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageD.style.opacity = calcValues(values.messageD_opacity_out, currentYOffset); objs.messageD.style.transform = `translate3d(0, ${calcValues(values.messageD_translateY_out, currentYOffset)}%, 0)`; } break; case 2: // console.log('2 play'); if (scrollRatio <= 0.32) { // in objs.messageA.style.opacity = calcValues(values.messageA_opacity_in, currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageA.style.opacity = calcValues(values.messageA_opacity_out, currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.67) { // in objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_in, currentYOffset)}%, 0)`; objs.messageB.style.opacity = calcValues(values.messageB_opacity_in, currentYOffset); objs.pinB.style.transform = `scaleY(${calcValues(values.pinB_scaleY, currentYOffset)})`; } else { // out objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_out, currentYOffset)}%, 0)`; objs.messageB.style.opacity = calcValues(values.messageB_opacity_out, currentYOffset); objs.pinB.style.transform = `scaleY(${calcValues(values.pinB_scaleY, currentYOffset)})`; } if (scrollRatio <= 0.93) { // in objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_in, currentYOffset)}%, 0)`; objs.messageC.style.opacity = calcValues(values.messageC_opacity_in, currentYOffset); objs.pinC.style.transform = `scaleY(${calcValues(values.pinC_scaleY, currentYOffset)})`; } else { // out objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_out, currentYOffset)}%, 0)`; objs.messageC.style.opacity = calcValues(values.messageC_opacity_out, currentYOffset); objs.pinC.style.transform = `scaleY(${calcValues(values.pinC_scaleY, currentYOffset)})`; } break; case 3: // console.log('3 play'); break; } } function scrollLoop() { enterNewScene = false; prevScrollHeight = 0; for (let i = 0; i < currentScene; i++) { prevScrollHeight += sceneInfo[i].scrollHeight; } if (yOffset > prevScrollHeight + sceneInfo[currentScene].scrollHeight) { enterNewScene = true; currentScene++; document.body.setAttribute('id', `show-scene-${currentScene}`); } if (yOffset < prevScrollHeight) { if (currentScene === 0) return // 브라우저 바운스 효과로 인해 마이너스가 되는 것을 방지(모바일) enterNewScene = true; currentScene--; document.body.setAttribute('id', `show-scene-${currentScene}`); } if (enterNewScene) return; playAnimation(); } window.addEventListener('scroll', () => { yOffset = window.pageYOffset; scrollLoop(); }); //window.addEventListener('DOMContentLoaded', setLayout); window.addEventListener('load', setLayout); window.addEventListener('resize', setLayout); })();
-
미해결풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]
section 클래스
강의에서는 section 태그안에 따로 main 클래스를 정의하셔서 section 태크에는 기본 css 적용 후 main 클래스에 배경 이미지의 css 적용을 하셨는데 main클래스에 적용한 css를 section 태그에 같이 적용해도 상관없는건가요? 차이점이 궁금해서 질문드립니다!! 그리고 지나간 부분이지만 header 태크 css 부분에서 top:0 과 left:0 은 어떠한 이유로 적용한지 알 수 있을까요? (p.s 좋은 강의 잘 수강하고 있습니다!)
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
로그아웃을 직접 누르지 않고 싸이트를 나가는 경우
로그아웃을 직접 누르지 않고 싸이트를 종료 시키면 쿠키에는 계속 정보가 남아서 로그인 상태가 계속 유지되는데 이를 막기 위해서는 실무에서는 보통 어떤 방법을 쓰나요? 생각할 수 있는 방법은 프론트에서 쿠키 만료시간을 쓰거나, 백엔드에서 토큰 만료시간을 정하던가 할 것 같습니다.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
Random Forest Regressor에 보스턴 데이터셋 실습시킬때 질문
안녕하세요 강의 보는 중에 이전 회귀 모델이나 descion tree 모델을 학습시킬때에는 dataset을 train_test_split를 통해서 train_set, test_set으로 나눴지만 Random Forest Regressor 모델을 학습 시킬 때에는 X_data, y_target에 대해서 train_set, test_set으로 나누지 않는 이유가 있나요? 혹시 그 이유가 Random Forest Regrssor에 bootstrap기법때문인가요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
수업에서 이론에 대한 부분이 이해가 잘 안됩니다
안녕하세요. 비전쪽 공부를 하고 싶어서 인공지능에 무지하지만 먼저 신청해서 들었습니다 그런데, 실습은 어느정도 따라가고 하는데 RCNN 처음부터 이론에 대한 이해가 많이 부족한 것 같습니다 머신러닝 강의도 신청을 했는데, 이 강의를 들어야만 이론에 대한 이해가 조금 될까요? 감사합니다
-
누구나 할 수 있는 안드로이드 앱 개발 - 1 (Kotlin)
버튼을 눌러도 왜 토스트 메시지는 안나올까요??
삭제된 글입니다
-
미해결스프링 프레임워크 핵심 기술
강의 하시면서 사용하는 resolving 이란 단어는 어떤 의미인가요?
강의 잘 듣고 있습니다. :)강의하시면서 사용하시는 resolving 이란 단어는 어떤 의미로 사용하고 계신지 여쭤봐도 될까요? 감사합니다.
-
미해결파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기
download2-8-1.py 질문입니다.
안녕하세요 현재 download2-8-1.py에서 진행되고있는 네이버 이미지 태그들이 다 바뀐거같아서 질문드립니다. 바뀐 태그에 맞게 선택자를 사용하여 img_list 저장했습니다. img_list = soup.select("div.tile_item > div.thumb > img") 바뀐태그로 넣었음에도 img_list 변수에 공백 리스트로 리턴됩니다. 확인 부탁드립니다 ㅠㅠ opener = req.build_opener() opener.addheaders = [('User-agent', 'Mozilla/5.0')] req.install_opener(opener) 추가해도 안되네요...
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
[사진첨부]하기 질문 관련
사진과 같이 한도가 32 인데도, vm을 알려주신 대로 생성하면 한도가 0이라고 에러가 뜹니다..
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
vs2019에 내장된 함수에 관하여 문의드리고 싶습니다.
수업 중에서 사용하셨던 Math 와 같이 제가 따로 제작한 것이 아니라 이미 완성되어 내장되어 있는 클래스들 목록을 확인하고 어떤 기능을 하는 지 훑어보고 싶은데 어떤 식으로 접근을 해야할 지 몰라 수업 내용과 거리가 있지만 질문드려 봅니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findById 메소드에서 Optional 처리가 마무리가 안된것 아닌가요??
id로 찾은값이 null 인 경우를 대비해서 Optional로 반환받았는데.. 여기서 마무리하면 null 처리가 제대로 안된거 아닌가요?? 아래처럼 orElse(...) 까지 해줘야 null 처리가 마무리 되는거 아닌가요?? Optional 을 처음 접하는 초보입장에서 질문드립니다 ㅠ Optional.ofNullable(store.get(id)).orElse(...)
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
할당량 초기값
안녕하세요, 이미 현재한도가 32로 돼있던데.. 그럼 다시 1로 낮춰서 요청안해도 되나요..?
-
미해결Vue.js 시작하기 - Age of Vue.js
vscode import Vue부분에 경고문이 뜨네요
vscode plugin관련 질문인데, 제 화면에서는 import 부분이 경고 표시가 뜨네요. Vetur에서 tsconfig.json 등을 설정하라는데 vue-cli폴더에 세팅해주면 되는걸까요?
-
미해결React & Express 를 이용한 웹 어플리케이션 개발하기
codepen.io 에 퀵에드가 없는데요ㅜㅜ
초보라서 잘몰라서 그런가봐요.코드펜에 들어가서 자바스크립트 js 클릭하고 바벨로 설정하고 퀵에드로 리엑트랑 돔 넣으려고 하는데 없어요ㅜㅜ어떻게 하죠?
-
미해결문과생도, 비전공자도, 누구나 배울 수 있는 파이썬(Python)!
수업자료
수업자료를 다운을 받고 했고 옮겼는데 다음에는 어떻게 해야 강의에 나오는 것처럼 목차가 나오게 할 수 있나요?