묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결리액트로 나만의 블로그 만들기(MERN Stack)
죄송하지만, 도움 요청합니다ㅠ
자주 여쭈어보아서 죄송합니다ㅠ 강의 듣기 전에 도메인 구입 후 등록하고 활성화시킨 것까지 확인했습니다. 그리고 강의처럼 greenlock 설정을 했습니다. 그런데 포트에 문제가 생겼는지 사이트가 보이지 않고, 서버도 연결이 안 되네요ㅠㅠ 이건 putty로 sudo npm run dev-watch로 연결했을 때 뜨는 에러입니다. 제가 window를 사용해서 nodemon이 아닌 babel-watch로 쓰라고 하셔서 계속 dev-watch로 썼습니다. (강의처럼 server, client 각 .env에 수정 후 적용했습니다. 컴퓨터를 다시 끄고 켜서 실행하기도 했습니다.) 이 두 개의 사진은 해당 사이트에 접속했을 때와 console입니다ㅠ (사이트가 이래서인지 build도 계속 로딩만 되고 적용이 안 되네요ㅠ) 그런데 왜인지 'vscode'에 npm run dev-watch로 연결해보니 강의와 똑같은 문구가 나오네요ㅡㅠ 강사님께 매번 감사하고 죄송스러운 마음입니다ㅠ
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
atom 실행
atom 에서 install Shell Commands를 했는데도 터미널에서 atom이 실행이 안 되는데 왜 이런 걸까요,,,
-
미해결리액트로 나만의 블로그 만들기(MERN Stack)
새로고침시 로그인이 유지 되지 않습니다.
되게 여러번 따라 했는데, 새로고침 하고난 후 로그인이 유지가 되지 않습니다..ㅠㅠ authSaga 속의 함수들이 제대로 작동하지 않는것 같습니다.... authoSaga속 함수를 호출하는 시작이 어딘지 순서 또한 잘 파악되지 않습니다..ㅠ 계속 401에러가 뜹니다. ㅠㅠ
-
미해결더 개발자, 인터뷰 가이드
미션이 누락되어 있네요 확인 부탁드립니다.
감사합니다,
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
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로 낮춰서 요청안해도 되나요..?