묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
이미지 피라미드, 피처 피라미드란?
안녕하세요. 강의 잘 듣고 있습니다. Sliding Window 방식 페이지 설명하시면서, 이미지 피라미드와 피처 피라미드를 언급하셨는데 상세 내용이 궁금하여 질문 드립니다. 어떠한 내용인지요? 그리고 앵커박스의 경우 슬라이딩을 한번 할때 다양한 윈도우를 겹쳐서 이동시킴으로써 비교적 짧은 시간 내 다양한 형태를 검출한다 라는 개념이 맞는 건지도 궁금합니다.
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
이해 못 하겠어요
제가 이상한건가요? 크롤링 만든 적 있는데 지금은 이해가 안 돼요
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
페이지 새로고침에 대해 질문 드립니다
강사님 안녕하세요 ~ 저는 업로드 페이지를 따로 만들지 않고 Modal 창을 이용해서 구현했는데 업로드 후에 메인 페이지를 새로고침 하고싶은데 props.history.push('/'); 를 했을 때 이미 '/' 경로에 있으면 새로고침이 안되는 것 같아요,, 어떻게 새로고침을 구현할 수 있을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
Whitelist a connection IP address 필수입니다!!
강사님의 화면에는 CONNECT후 Whitelist a connection IP address 이게 저절로 되어 있지만 새로 생성한 분들은 화이트리스트에 추가가 안되어 있으니 꼭 본인의 IP를 추가한다음 진행해야 오류가 나지 않아요. 또한 비밀번호에 @(특수문자)가 있을경우에도 에러가 납니다 이 경우 @를 %40으로 변경해서 입력해주세
-
미해결웹 게임을 만들며 배우는 자바스크립트
자스스톤 응용
초보자라 질문할 점이 참 많습니다. html파일은 깃허브에 있는 최종버전을 그대로 쓰는 상황입니다. js 파일은 카드 구성은 일단 했으나 구현 부분에 있어서는 주석으로 달아놓기는 했습니다만 function Card() 함수의 if문 부분을 어떻게 수정해야 하는지를 모르겠습니다. 일단 이 결과를 실행해보니 이런 결과가 나옵니다. 어떻게 수정해야 하나요? function Gcard(name, att, hp, cost) { this.name = name; this.att = att; this.hp = hp; this.cost = cost; } var 알파 = new Card('알파', 8, 35, 1); var 베타 = new Card('베타', 900, 8570, 6); var 감마 = new Card('감마', 5, 30, 1); var 오메가 = new Card('오메가', 450, 7500, 5); var 제타 = new Card('제타', 15, 70, 2); var 델타 = new Card('델타', 740, 6850, 5); var 시그마 = new Card('시그마', 6, 60, 1); var 람다 = new Card('람다', 320, 3140, 5); var 라디안 = new Card('라디안', 10, 170, 2); var 루트 = new Card('루트', 11, 60, 2); var 엡실론 = new Card('엡실론', 880, 9120, 6); var 파이 = new Card('파이', 7, 40, 1); var 로 = new Card('로', 6, 45, 1); var 타우 = new Card('타우', 400, 3065, 5); var 오미크론 = new Card('오미크론', 50, 180, 3); var 카파 = new Card('카파', 40, 220, 3); var 뮤 = new Card('뮤', 9, 85, 1); var 뉴 = new Card('뉴', 100, 550, 3); var 카이 = new Card('카이', 1500, 25620, 10); var 프시 = new Card('프시', 1620, 21000, 10); var 상대 = { 영웅: document.getElementById('rival-hero'), 덱: document.getElementById('rival-deck'), 필드: document.getElementById('rival-cards'), 코스트: document.getElementById('rival-cost'), 덱data: [], 영웅data: [], 필드data: [], 선택카드: null, 선택카드data: null, }; var 나 = { 영웅: document.getElementById('my-hero'), 덱: document.getElementById('my-deck'), 필드: document.getElementById('my-cards'), 코스트: document.getElementById('my-cost'), 덱data: [], 영웅data: [], 필드data: [], 선택카드: null, 선택카드data: null, }; 상대.덱data.push(알파) 상대.덱data.push(시그마) 상대.덱data.push(뮤) 상대.덱data.push(뉴) 상대.덱data.push(로) 상대.덱data.push(파이) 상대.덱data.push(제타) 상대.덱data.push(오메가) 상대.덱data.push(엡실론) 상대.덱data.push(프시) 나.덱data.push(델타) 나.덱data.push(타우) 나.덱data.push(람다) 나.덱data.push(라디안) 나.덱data.push(감마) 나.덱data.push(오미크론) 나.덱data.push(카파) 나.덱data.push(루트) 나.덱data.push(베타) 나.덱data.push(카이) var 턴버튼 = document.getElementById('turn-btn'); var 턴 = true; // true면 내턴, false면 니턴 function 덱에서필드로(데이터, 내턴) { var 객체 = 내턴 ? 나 : 상대; // 조건 ? 참 : 거짓; var 현재코스트 = Number(객체.코스트.textContent); if (현재코스트 < 데이터.cost) { return 'end'; } var idx = 객체.덱data.indexOf(데이터); 객체.덱data.splice(idx, 1); 객체.필드data.push(데이터); 객체.덱.innerHTML = ''; 필드다시그리기(객체); 덱다시그리기(객체); 데이터.field = true; 객체.코스트.textContent = 현재코스트 - 데이터.cost; } function 필드다시그리기(객체) { 객체.필드.innerHTML = ''; 객체.필드data.forEach(function(data) { 카드돔연결(data, 객체.필드); }); } function 덱다시그리기(객체) { 객체.덱.innerHTML = ''; 객체.덱data.forEach(function(data) { 카드돔연결(data, 객체.덱); }); 데이터.field = true; 객체.코스트.textContent = 현재코스트 - 데이터.cost; } function 영웅다시그리기(객체) { 객체.영웅.innerHTML = ''; 카드돔연결(객체.영웅data, 객체.영웅, true); } function 화면다시그리기(내화면) { var 객체 = 내화면 ? 나 : 상대; // 조건 ? 참 : 거짓; 필드다시그리기(객체); 덱다시그리기(객체); 영웅다시그리기(객체); } function 턴액션수행(카드, 데이터, 내턴) { // 턴이 끝난 카드면 아무일도 일어나지 않음 var 아군 = 내턴 ? 나 : 상대; var 적군 = 내턴 ? 상대 : 나; if (카드.classList.contains('card-turnover')) { return; } // 적군 카드면서 아군 카드가 선택되어 있고, 또 그게 턴이 끝난 카드가 아니면 공격 var 적군카드 = 내턴 ? !데이터.mine : 데이터.mine; if (적군카드 && 아군.선택카드) { 데이터.hp = 데이터.hp - 아군.선택카드data.att; if (데이터.hp <= 0) { // 카드가 죽었을 때 var 인덱스 = 적군.필드data.indexOf(데이터); if (인덱스 > -1) { // 쫄병이 죽었을 때 적군.필드data.splice(인덱스, 1); } else { // 영웅이 죽었을 때 alert('승리하셨습니다!'); 초기세팅(); } } 화면다시그리기(!내턴); 아군.선택카드.classList.remove('card-selected'); 아군.선택카드.classList.add('card-turnover'); 아군.선택카드 = null; 아군.선택카드data = null; return; } else if (적군카드) { // 상대 카드면 return; } if (데이터.field) { // 카드가 필드에 있으면 카드.parentNode.querySelectorAll('.card').forEach(function(card) { card.classList.remove('card-selected'); }); 카드.classList.add('card-selected'); 아군.선택카드 = 카드; 아군.선택카드data = 데이터; } else { // 덱이 있으면 if (덱에서필드로(데이터, 내턴) !== 'end') { 내턴 ? 내덱생성(1) : 상대덱생성(1); } } } function 카드돔연결(데이터, 돔, 영웅) { var 카드 = document.querySelector('.card-hidden .card').cloneNode(true); 카드.querySelector('.card-cost').textContent = 데이터.cost; 카드.querySelector('.card-att').textContent = 데이터.att; 카드.querySelector('.card-hp').textContent = 데이터.hp; if (영웅) { 카드.querySelector('.card-cost').style.display = 'none'; var 이름 = document.createElement('div'); 이름.textContent = '영웅'; 카드.appendChild(이름) } 카드.addEventListener('click', function() { if (턴) { // 내 턴이면 if (!데이터.mine || 데이터.field) { // 상대 카드거나 카드가 필드에 있으면 return; } if (덱에서필드로(데이터, true) !== 'end') { 내덱생성(1); } } else { // 상대 턴인데 if (데이터.mine || 데이터.field) { // 내 카드거나 카드가 필드에 있으면 return; } if (덱에서필드로(데이터, false) !== 'end') { 상대덱생성(1); } } 턴액션수행(카드, 데이터, 턴); }); 돔.appendChild(카드); } function 상대덱생성(개수) { for (var i = 0; i < 개수; i++) { 상대.덱data.push(카드공장()); } 상대.덱.innerHTML = ''; 상대.덱data.forEach(function(data) { 카드돔연결(data, 상대.덱); }); 덱다시그리기(상대); } function 내덱생성(개수) { for (var i = 0; i < 개수; i++) { 나.덱data.push(카드공장(false, true)); } 나.덱.innerText = ''; 나.덱data.forEach(function(data) { 카드돔연결(data, 나.덱); }); 덱다시그리기(나); } function 내영웅생성() { 나.영웅data = 카드공장(true, true); 카드돔연결(나.영웅data, 나.영웅, true); } function 상대영웅생성() { 상대.영웅data = 카드공장(true); 카드돔연결(상대.영웅data, 상대.영웅, true); } function Card(영웅, 내카드) { if (영웅) { this.att = Math.ceil(Math.random()) + 4; this.hp = Math.ceil(Math.random()) + 9999; //영웅영역 - 값 1개만 출력되야 함(실행시 10개 나옴)-공격력 5 체력 10000의 고정값 this.hero = true; this.field = true; } else { this.att = Math.ceil(Math.random() * 5); this.hp = Math.ceil(Math.random() * 5); //카드영역- 각 팀당 미리 셋팅 된 10개의 고유 카드 중 5개 랜덤으로 뽑히게 해야함 this.cost = Math.floor((this.att + this.hp) / 2); } if (내카드) { this.mine = true; } } function 카드공장(영웅, 내카드) { return new Card(영웅, 내카드); } function 초기세팅() { 상대덱생성(5); 내덱생성(5); 내영웅생성(); 상대영웅생성(); 화면다시그리기(true); // 상대화면 화면다시그리기(false); // 내화면 } 턴버튼.addEventListener('click', function() { 턴 = !턴; var 객체 = 턴 ? 나 : 상대; document.getElementById('rival').classList.toggle('turn'); document.getElementById('my').classList.toggle('turn'); 필드다시그리기(객체); 영웅다시그리기(객체); 턴 = !턴; // 턴을 넘기는 코드 if (턴) { 나.코스트.textContent = 10; } else { 상대.코스트.textContent = 10; } document.getElementById('rival').classList.toggle('turn'); document.getElementById('my').classList.toggle('turn'); }); 초기세팅();
-
해결됨대세는 쿠버네티스 (초급~중급편)
쿠버네티스에서의 이미지 관리
쿠버네티스에서의 이미지 관리 강의 잘 보고 있습니다. 감사합니다! 쿠버네티스에서의 node내 이미지 관리 관련 문의 드립니다. 쿠버네티스를 운영하면 분명 여러번 app 이미지를 수정 배포하는 경우가 많을 것입니다. 쿠버네티스 설치 강의에서 docker를 각 node 마다 설치하는 것으로 보아, 결국 이미지를 컨테이너로 구동하는 역할은 각 node의 docker 엔진일텐데, 각 node마다 다운로드된 이미지들은 어떻게 관리할 수 있나요? 아래와 같은 환경을 가정해보겠습니다. -node 2개(node1, node2) 1. 초기 이미지 배포 -deployment(ver1)에서 A1이미지 참조 -node1에 pod 스케쥴링되어, node1에서 A1 이미지 다운로드 받아 pod1생성 2. app에 수정이 발생하여, A2이미지 빌드 -deployment(ver1)수정하여 deployment(ver2)에서 A2이미지 참조히도록 변경 -node2에 pod 스케쥴링, node2에서 A2 이미지 다운로드 받아 pod2생성 (이전과 같은 node1에 pod가 스케쥴링되도 동일한 경우라 생각합니다) 이 경우 node에 배포된 이전 이미지, A1은 수동으로 삭제처리를 해줘야 하는지요? A1이미지는 실행중인 pod의 이미지가 아닌, 이전 버전의 이미지데도 node상에 공간을 차지하여 낭비가 될 것 같습니다. 여러번 deployment를 수정하여 이미지가 계속 수정될 경우, 이전 이미지로 인한 node의 저장공간 사용이 크리라 봅니다. k8s에서 위와 관련하여 지원하는 기능이 있는지 궁금합니다. 가장 단순하게, node마다 접속하여 docker images/docker rmi 명령으로 일일이 삭제해야 할까요?
-
미해결파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기
ㅎ 다음 '실시간 검색어'가 폐지 되었군요. ㅍㅎ
2020-2-20 실시간 검색어 폐지
-
미해결스프링 부트 개념과 활용
properties를 yml로 바꿔도 우선순위가 적용이 되나요?
질문 남겨봅니다!
-
미해결애플 웹사이트 인터랙션 클론!
강의가 다 안끝난거 같은데요?
강의가 다 안끝난거 같은데 동영상이 끝났어요
-
미해결홍정모의 따라하며 배우는 C++
10:30 경에
10:30 경에 나오는 bool isEven(const int& number) 함수와 bool isOdd(const int& number)함수의 레퍼런스변수 number는 어디서 온 건가요? 강의 코드를 살펴보아도 선언이 되거나 하지 않은거 같아서요
-
미해결남박사의 파이썬으로 실전 웹사이트 만들기
가상환경 이동관련 질의
최종 실습까지 진행한 상태에서, myweb의 가상환경을 폐쇄망으로 이동해서 게시판 내용을 원하는 필드들로 바꾸어서 사용해 보려고 하는데, 다른 PC 에서 동일한 소스를 가져와 동일한 폴더이름을 사용해서 vscode 에서 가상환경에서 python run.py 실행하면 w정상 실행이 되고 running on http://0.0.0.0:9000/ (press ctrl+c to quit) 까지 나옵니다. 그런데 정작 브라우저에서 http://127.0.0.1:9000/login 하면 화면에는 "웹페이지를 찾을수 없습니다." 에러뜨고 vscode 상에는 127.0.0.1 - - [21/May/2020 15;59:12] "?[33mGET /login HTTP/1.1?[0m" 4040 - 에러가 발생한게 보입니다. 이럴경우 어떻게 조치를 해야 할까요?
-
미해결홍정모의 따라하며 배우는 C++
이렇게 해도 되나요?
Q. 이 예제의 상황만 본다면, doSomething.h에서 #include "add.h"를 써놔서, Main소스파일에서도 add함수가 정상적으로 동작하는 것을 확인했어요. #include "add.h"중복을 피하는 것도 방법이 될 수 있는 것 같은데요, 제가 이해한 것이 맞나요?#include <iostream> using namespace std; //#include "add.h" doSomething.h 에서 참조하고 있으므로. 여기서 사용안하면, 중복을 피할 수 있음. #include "doSomething.h" int main() { doSomething(); cout << add(5, 10) << endl; return 0; }
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
게속 이런 에러가 뜨는데 원인을 알 수 있을까요?
이런 에러가 나오는데 오타가 난 건가요? 에러가 나오는 이유를 설명해주세요.
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
답변들을 봐도 이해가 안되서 다시 한번 질문드립니다.
문제 1. 최초의 login 요청에 setInterceptors에서 token값이 셋팅이 안되어있고, logout뒤 login 할때, 값이 셋팅되어있는건, 최초의 login요청에서 뒤늦게 셋팅되어진 token값을 불러 오는 건가요 ? 문제 2.createInstance 이 함수는 앱을 실행시켰을때, 최초로 한번만 호출이 되고 그 뒤에는 무슨 요청을 해도 반응이 없는데,로그아웃뒤 로그인할때, 헤더에 토큰값이 셋팅되는건 역시 Vue의 뛰어난 반응성이 한 몫 한건가요? 아니면 Interceptors가 정말 가로채서 Header만 쏙 넣어준건가요? const instance = createInstance(); 로 저렇게 박아두어서 instance값이 앱이 실행될 때 말고 바뀌지 않을꺼 같다는 생각이 들어서 질문드립니다.
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
github 404
안녕하세요 https://github.com/joshua1988/vue-advanced 페이지들어가려고하는데 404에러가떠서요 ㅠㅠ 로그인도 되어있는데, 페이지 접속이 안되네요 아래 형식으로 신청하고, 추가해주셨다고 답변도 받았엇어요 인프런 아이디 : jj777a@naver.com인프런 이메일 : jj777a@naver.com깃헙 아이디 : jj777a@naver.com깃헙 Username : jj999a 확인부탁드려요^^
-
미해결홍정모의 따라하며 배우는 C언어
코딩결과가 다르게 나옵니다
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(void) { float arr2d[2][4] = { {1.0f, 2.0f, 3.0f, 4.0f},{5.0f,6.0f,7.0f,8.0f} }; float(*pa)[4]; float* ap[2]; pa = arr2d; //pa[0] = arr2d[0]; //error //pa[1] = arr2d[1]; //error ap[0] = arr2d[0]; ap[1] = arr2d[1]; //ap = arr2d; //error printf("%u %u\n", (unsigned)pa, (unsigned)pa + 1); printf("%u %u\n", (unsigned)arr2d[0], (unsigned)arr2d[1]); printf("%u %u\n", (unsigned)pa[0], (unsigned)pa[0]+1); printf("%f\n", pa[0][0]); printf("%f\n", *pa[0]); printf("%f\n", **pa); printf("%f\n", pa[1][3]); printf("%f\n", *(*(pa + 1) + 3)); printf("\n"); printf("%u %u\n", (unsigned)ap, (unsigned)(ap + 1)); //arrp는 주소를 대입 printf("%u %u\n", (unsigned)arr2d[0], (unsigned)arr2d[1]); printf("%u %u\n", (unsigned)ap[0], (unsigned)(ap[0] + 1)); printf("%f\n", ap[0][0]); printf("%f\n", *ap[0]); printf("%f\n", **ap); printf("%f\n", ap[1][3]); printf("%f\n", *(*(ap + 1) + 3)); return 0;} 이게 교수님이 나온 값이구요 이게 제가 해서 나온 출력인데 이상하네요 pa랑 pa+1이 1바이트 차이밖에 안나고 pa[0]하고 pa[0]+1도 1바이트밖에 차이가 안난다고 출력되네요 그리고 ap와 ap+1의 값이 좀 헷갈립니다 어디의 주소를 포인팅하고있는 건가요? 전 ap가 arr2d의 0행0열의 주소를 포인팅한다고 생각했는데 ap[0]과 주소가 다른것을 확인하고 아닌 것을 알았습니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
userEffect
좋은강의 무료로 제공해주셔서 감사합니다 질문이 있습니다 auth에 useEffect를 사용하시는데 다른 부분에서는 useEffect를 사용 안하시고 auth 구현부분에서는 사용하셔서 이 부분에서는 useEffect를 사용하는 이유가 무엇인지 궁금합니다.
-
미해결React로 NodeBird SNS 만들기
sequelize의 include 속성에 대한 질문입니다.
sequelize의 include 속성에 대한 질문입니다. 가령, models폴더안의 post.js를 보면, post와 user, comment, image, hashtag등등이 Post.associate()라는 함수에서 관계가 정의되어있는데.. 질문1) 이렇게 관계가 서로 정해진것들끼리'만' include가 가능한거 맞나요? 좀더 구체적으로 질문을 드리자면, 관계를 정의할때 '1대1' 또는 '1대다' 또는 '다대다' 등등 어떤 관계로 정의를해도 관계만 맺어져있다면 include가 사용가능한것인지 궁금합니다! 질문2) models/hashtag.js의 Hashtag.associate에서 Hashtag와 Post의 관계가 다대다로 설정되어있는것을 확인할수있는데, (routes/hashtag.js) const posts = await db.Post.findAll({ include: [{ model: db.Hashtag, // 게시글 가져올때 해시태그도 함께 가져오도록. where: { name: decodeURIComponent(req.params.name) }, // decodeURIComponent(): tag에 한글이 들어오면 URIComponent로 감싸지게 되므로, 그것을 decodeURI }], }); 여기서 include의 의미가 제대로 이해가 되지않아서 질문드립니다. 조금더 구체적으로 질문을 드리자면... (models/hashtag.js) // 관계 설정 Hashtag.associate = (db) => { db.Hashtag.belongsToMany(db.Post, { through: 'PostHashtag' }); }; return Hashtag; 위 관계설정 부분에서 '다대다'로 설정을 했고, through를 통해, 'PostHashtag' 라는 테이블이 새로 생겼는데, mySQL 워크벤치에서 바로 이 'posthashtag'테이블의 필드들을 살펴보면, 'HashtagId'와 'PostId'가 있는것을 확인할 수 있는데요! 그렇다면, 위 첫번째 사진의 include부분에서 req.params로 넘어온 tag name을포함하는 hashtag가 있고, (이부분은 mySQL hashtags테이블의 name필드와 일치하는것 같습니다) 이 hashtag가 posthashtag테이블의 PostId필드에 들어간 후, 그 PostId를 포함하는 post를 최종적으로 뽑아낸게 바로, 첫번째 사진의 const posts = {} 객체 라는건가요 ??? 너무너무너무 헷갈립니다 ㅠㅠㅠ 저 include라는 의미가 어떤 순서로 작동을 해서 포함관계가 되는것인지 정말 모르겠어서 질문드려요 ...ㅠㅠ
-
2020 서울가족학교 예비부부교실
질문 테스트
삭제된 글입니다
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
6:50 WHERE 절 서브쿼리에서 아래쪽 쿼리 질문
안녕하세요. 6:50에서 설명하시는 부분의 쿼리 SELECT * FROM crimes WHERE date IN (SELECT date FROM crimes ORDER BY date DESC LIMIT 5) 에 대해 궁금한 것이 있어 질문합니다. 최근 5일동안 발생한 레코드를 뽑아내려면 서브쿼리의 date 앞에 DISTINCT가 붙어야 하지 않나요? 저는 위의 코드가 제일 최근에 입력된 5개의 레코드만 뽑아낼거라고 생각돼서요.(같은 날짜 데이터 여러개일 수 있으므로) 답변 부탁드리겠습니다. 덧붙여, 좀 뜬금없지만 실습위주의 좋은 강의 감사합니다.