묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
18분 20초에서요
// 방문? 더 짧은 경로를 뒤늦게 찾았다면 스킵 if (best[here] < cost) continue; 이 스킵이 if 문을 스킵한다는 말이 맞나요?? 이전에 이미 최단경로를 방문 했기 때문에 더이상 방문할 필요 없어서 if 문에 걸려서 새로운 와일문이 시작 그리고 다른 후보 부터 탐색 하는 거고, if 문을 걸리지 않으면 현재까지 찾은 최단 거리보다 더 짧은 거리를 찾아서 방문한다는 거로 이해했습니다.
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
Average Population of Each Continent 복습하다 질문드립니다.
안녕하세요.늘 좋은 강의 잘 듣고 있습니다. 해커랭크의 'Average Population of Each Continent' 문항을 복습하다가 LEFT. INNER JOIN에 관해 궁금한 점이 있습니다. 해당 문제를 복습하면서 아래와 같이 쿼리를 작성하였는데, NULL로 인해 Wrong Answer가 뜨더라구요ㅠ SELECT country.continent , FLOOR(AVG(city.population)) FROM city LEFT JOIN country ON city.countrycode = country.code GROUP BY country.continent 코드를 돌린 후, 답에 NULL 값이 있어, INNER JOIN으로 변경하였더니 정답으로 나오더라구요. DATA를 보기 전에 LEFT JOIN과 INNER JOIN을 구분하는 방법이 있을까요?
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
nginx pod는 워커노드 2에 있는데 1번, 3번 워커노드에서도 웹접속이 되는 이유가?
안녕하세요. 강의 잘 듣고 있습니다. 외부(PC)에서 접속을 하기 위해 expose 명령어를 사용하였습니다.(2.2 강좌) 궁금한건 kubectl get pod -o wide 명령어에 대한 출력은 nginx가 w2-k8s(워커노드 2번)에 있다고 나오는데, 워커노드 1번, 2번, 3번으로 웹접속을 시도해도 동일하게 nginx 화면이 나옵니다. nginx가 없는 워커노드 1번, 3번으로의 웹접속이 가능한 이유가 뭔가요?
-
미해결Redux vs MobX (둘 다 배우자!)
리덕스 썽크, 리덕스 사가 질문드립니다.
안녕하세요. 리덕스 썽크, 리덕스 사가 질문드립니다. 간단한 것만 할 때는 리덕스 썽크, 복잡한 비동기 작업을 할 때는 리덕스 사가를 사용하는 것이 좋다고 하셨는데 실무에서 간단한 프로젝트는 주로 리덕스 썽크, 규모가 있는 프로젝트는 리덕스 사가를 사용하시는 편인가요? 현재 2022년 기준으로 어떻게 생각하시는지 궁금합니다.
-
미해결Vue.js + TypeScript 완벽 가이드
프로젝트 권한 요청 드립니다.
두번째 프로젝트 권한 요청드립니다. jwpark.js@gmail.com
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
수정기능질문
수정기능을 보다보니ㅏㄲ book.set 이렇게해서 여러개를 목록화해서 일일이 치던데 builder패턴으로하는것과다른방법으로 하는것도있지않았나요? 원래는어떻게하는지 궁금합니다 예제라서 너무간단히 하는거같아서 헷갈리네요 ㅠㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ArrayList 쓰는 이유
안녕하세요, 스프링 강의를 듣고 따라가다보니 List는 주로 ArrayList, Map은 주로 HashMap을 쓰는 것 같던데 특별히 Vector가 아닌 ArrayList를 쓰는 이유가 있나요..? 컬렉션을 복습하다보니 Vector와 ArrayList의 주 차이점은 ArrayList는 스레드 동기화 기능이 없다는 것 같은데, 실습하실 때 ArrayList를 쓰는 이유가 궁금합니다.
-
미해결풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]
선생님 질문 있습니다
안녕하세요 선생님 해당 강의 13:05 부분에 대해서 질문 있습니다 .head-container의 width, height 속성 값을 100%으로 지정하셨는데 해당 요소는 block 형태를 띄고 있어 width는 자동으로 100%로 설정 되는 것으로 알고 있는데 100%로 지정하는 이유가 따로 있는 것인지 궁금합니다
-
미해결AWS 클라우드 서비스 인프라 구축 이해와 해킹, 보안
s3 퍼블릭 액세스 관련
안녕하세요! 강의 잘 듣고 있습니다! S3 강의 파트에서 Public Access 차단을 위한 버킷 설정(4가지) 각각의 차이에 대한 설명이 없으셔서 찾아봐도 이해가 되지 않아 질문드립니다. 새 ACL을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단 임의의 ACL을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단 새 퍼블릭 버킷 또는 액세스 지점 정책을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단 임의의 퍼블릭 버킷 또는 액세스 지점 정책을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단 해당 옵션들이 각각 어떻게 다른건지 설명 부탁드려도 될까요?
-
해결됨[D.P.(DappProject)] 디앱 프로젝트(NFT 생성, NFT 구매 및 판매)
메타마스크 mumbai testnet연결에 계속 실패합니다
안녕하세요 본 강의를 수강하다가 잠시 다른 공부를 1주일동안 하고 다시 강의를 들으면서 메타마스크를 활용하려던 중 메타마스크가 mumbai testnet에 계속해서 연결을 실패하는 현상이 발생되고 있습니다. 이럴때는 어떻게 해야하는건지 감이 안잡히네요 ㅜㅜㅜ 1주일정도 안쓰면 원래 이렇게 되는건가요? 도와주세요
-
미해결따라하며 배우는 NestJS
안녕하세요. getBoardById 서비스 작성 질문 있습니다.
안녕하세요 서비스 getBoardById와 컨트롤러 getBoardById메소드에서 리턴값이 Promise인건 무엇을 의미 하는 걸까요?
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
Cannot load configuration class: kr.co.xxxxxxx.config.RootAppContext
안녕하세요 ~ 강의 따라하다가 에러가 났는데 구글검색을 해봐도 해결이 되지 않아서 질문드려요. Cannot load configuration class: kr.co.xxxxxxxx.config.RootAppContext java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @430e46a4 이런 에러 메시지가 나오네요 자바 버전은 11입니다
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
오타 수정(회원가입 오류 나시는분들 포함)
오타 때문에 몽고DB연결이 안되는것 같은데 수정해주셔야 할것 같아요!연결할떄 : mongoURI dev.js : MONGO_URI dev.js에서 mongoURI 로 변경하시면 디비 연결 오류는 해결됩니다~! 오타떄문에 디비연결이 안되서 회원가입이 안되었네요 ㅠㅠ
-
미해결MERN STACK 커뮤니티 : 시작부터 배포까지 알려주는 React
MainPage 질문
우선 좋은 영상 감사합니다. 의미있는 경험이 되었던 것 같아요. 거의 다 만들었는데 정말 최종적으로 MainPage안에서 2가지 문제가 생겼습니다. 1. 마지막 게시물까지 확인해도 더보기가 사라지지 않습니다. 2. 새로고침을 하면 로그아웃은 되지 않으나 순간적으로 token을 읽지 못하고 useEffect에 의해 로그인 페이지로 이동하는 것 같습니다. MainPage.js import React, { useState, useEffect } from 'react' import axios from 'axios' import List from './Post/List' import '../Style/MainPage.css' import { useSelector } from "react-redux"; import { useNavigate } from "react-router-dom"; function MainPage() { const [sort, setSort] = useState("최신순") const [postList, setPostList] = useState([]) const [searchTerm, setSearchTerm] = useState("") const [skip, setSkip] = useState(0) const [loadMore, setLoadMore] = useState(true) const navigate = useNavigate() const user = useSelector(state=>state.user) useEffect(()=>{ console.log(user.accessToken) if(!user.accessToken){ alert("로그인된 회원만 이용할 수 있습니다.") navigate('/login') } console.log(user.accessToken) }, []) const getLoadMore = () => { let body = { sort: sort, searchTerm: searchTerm, skip: skip } axios.post('/api/post/list', body) .then(res => { if (res.data.success) { setPostList([...postList, ...res.data.postList]) setSkip(skip + res.data.postList.length) if (res.data.postList.lengh < 3) { setLoadMore(false) } } }).catch(err => { console.log(err) }) } const getPostList = () => { setSkip(0) let body = { sort: sort, searchTerm: searchTerm, skip: 0 } axios.post('/api/post/list', body) .then(res => { setPostList([...res.data.postList]) setSkip(res.data.postList.length) if (res.data.postList.lengh < 3) { setLoadMore(false) console.log(loadMore) } }).catch(err => { console.log(err) }) } useEffect(() => { getPostList() }, [sort]) const Search = (e) => { getPostList() } return ( <div> <div className='SearchAndArrange'> <button onClick={() => setSort("최신순")}>최신순</button> <button style={{ marginLeft: "5px", marginRight: "20px" }} onClick={() => setSort("인기순")}>인기순</button> <input style={{ marginRight: "5px" }} placeholder='제목 또는 내용' type="text" value={searchTerm} onChange={e => setSearchTerm(e.target.value)} /> <button onClick={(e) => Search(e)}>검색</button> <button style={{marginLeft: "10px"}} onClick={()=>navigate('/upload')}>게시글 작성</button> </div> <List postList={postList} /> {loadMore && (<button className='SeeMore' onClick={() => getLoadMore()}>더 보기</button>)} </div> ) } export default MainPage 서버쪽 post.js const express = require('express') const router = express.Router() const multer = require('multer') const { Post } = require('../models/post.js') const { Counter } = require('../models/counter.js') const { User } = require("../models/user") const { Router } = require('express') router.post('/submit', (req, res) => { //게시글 작성 기능 let temp = { title: req.body.title, content: req.body.content, image: req.body.image, } Counter.findOne({ name: 'counter' }).exec().then(counter => { temp.postNum = counter.postNum //counter의 게시물 번호를 지정해 줌. User.findOne({ uid: req.body.uid }).exec().then(userInfo => { //요청된 uid와 일치하는 user를 찾아서 temp.author = userInfo._id // 해당 user의 Id번호를 권한번호로 지정한 뒤 const CommunityPost = new Post(temp) //새로운 포스트모델을 생성하여 요청된 정보와 함께 넘겨줌. CommunityPost.save().then(() => { Counter.updateOne({ name: "counter" }, { $inc: { postNum: 1 } }) //counter의 게시물 번호를 1증가 .then(() => { res.status(200).json({ success: true }) }) }) }) }).catch(err => { err.status(400).json({ success: false }) }) }) router.post('/list', (req, res) => { let sort = {} if(req.body.sort ==="최신순"){ sort.createdAt = -1 }else{ sort.repleNum = -1 } Post.find({$or : [{title: {$regex: req.body.searchTerm}}, {content: {$regex: req.body.searchTerm}}]}) .populate("author") .sort(sort) .skip(req.body.skip) // .limit(3) .exec() .then(doc => { //populate는 주어진 정보를 통해 다른 document의 객체를 불러옴. 여기서는 author를 통해 user를 참조하여 Id를 가지고 옴. res.status(200).json({ success: true, postList: doc }) }).catch(err => { res.status(400).json({ success: false }) }) }) router.post('/detail', (req, res) => { Post.findOne({ postNum: Number(req.body.postNum) }).populate("author").exec() //요청된 게시물 번호가 일치하는 post를 찾음 .then(doc => { res.status(200).json({ success: true, post: doc }) //post라는 이름으로 해당 post 정보를 전송함. }).catch(err => { res.status(400).json({ success: false }) }) }) router.post('/edit', (req, res) => { console.log(req.body) let temp = { title: req.body.title, content: req.body.content, } Post.updateOne({ postNum: Number(req.body.postNum) }, { $set: temp }).exec() //게시물번호를 넘겨받아 해당 게시물을 temp로 업데이트 .then(() => { console.log("수정성공") res.status(200).json({ success: true }) }).catch(err => { console.log("수정실패") err.status(400).json({ success: false }) }) }) router.post('/delete', (req, res) => { Post.deleteOne({ postNum: Number(req.body.postNum) }).exec() //전달받은 게시물 번호를 찾아서 삭제해 줌. .then(doc => { res.status(200).json({ success: true }) }).catch(err => { console.log(err) res.status(400).json({ success: false }) }) }) const storage = multer.diskStorage({ //multer를 통해 전달받은 데이터를 파일 디스크에 저장 destination: (req, file, cb) => { //저장할 경로를 지정 cb(null, 'image') }, filename: (req, file, cb) => { //저장할 파일의 이름 지정 cb(null, Date.now() + '-' + file.originalname) } }) const upload = multer({ storage: storage }).single('image') router.post('/image/upload', (req, res) => { upload(req, res, (err) => { if (err) { res.status(400).json({ success: false }) } else { res.status(200).json({ success: true, filepath: req.file.path }) } }) }) module.exports = router
-
미해결[백문이불여일타] 데이터 분석을 위한 기초 SQL
WHERE절에서 문자를 활용해서 검색할 때요! (비교연산자나 BETWEEN, IN))
안녕하세요! 강의 너무 잘 듣고 있습니다. 저는 문자열 데이터 관련해서 세가지 질문이 있습니다. 1. WHERE 절이나 BETWEEN, IN을 활용해서 문자열 데이터를 추출하려고 할 때 문자열 전체가 아니라 'A'와 같이 문자 하나만 입력하게 되면 맨 앞 문자를 기준으로 데이터가 나오게 되는건가요? 예를 들어 다음과 같은 경우가 궁금합니다! WHERE CustomerName < ‘B’ 강의에서 '손님이름이 A로 시작하는 데이터를 모두 불러온다'라고 설명해주셨습니다. WHERE CustomerName BETWEEN 'C' AND ‘M’ WHERE 절 요약 파일에서 가져왔습니다. 직접 해보니 C와 M 사이 알파벳으로 시작하는 데이터가 추출되네요! WHERE CustomerName IN (‘B’, 'C') IN의 경우에는 이렇게도 활용이 가능한가요? 2. %나 _와 같은 와일드 카드, 한 글자 와일드 카드는 LIKE랑만 사용할 수 있나요? 3. 숫자를 활용해서 데이터를 추출하고 싶을 때 '숫자' 이렇게 넣어 문자열을 활용해도 되나요? 뒤에 해커랭크 두번째 문제를 푸는데 where id = '1661' 이렇게 넣어도 답이 맞더라구요!
-
해결됨[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
setTimeout 에 관하여 질문있습니다.
setTimeout하고 setInterval을 좀 더 잘 이해하기 위해서 간단한 출력물을 만들어봤는데요. "5초 이내 구매시 사은품 증정" 이라는 문구가 4 , 3, 2, 1 로 바뀌고 5초가 지나면, 문구 자체가 사라지는 구조입니다. Q1. timer라는 변수에 담아줬을 뿐인데, 왜 변수 안에 담겨진 setInterval()이 즉시 실행되는 건가요? 다시 말해서, timer();를 안 했는데도 실행되는 이유가 궁금합니다. 이 상황 너무 혼란스러워요;;; Q2. setTimeout()을 5초로 맞춰놓으면, 마지막 "1초"가 출력이 안 되고 바로 display: none;이 발생하는데요. 아마도, setInterval()이 1초 늦게 실행되서 그러는 것같습니다. 왜 setInterval()이 setTimeout()보다 1초 늦게 실행되는 걸까요?? - 해당 코드를 바로 실행해볼 수 있게 Codepen 링크도 올리겠습니다. https://codepen.io/uscgil0127/pen/GRQQMzB - 질문 코드 <!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>Document</title> <style> body { margin: 0; padding: 0; } </style> </head> <body> <div class="alert alert-danger"> <span> 5초 이내 구매시 사은품 증정 </span> </div> </body> <script> const sp = document.querySelector("span"); let count = 5; let timer = 0; document.addEventListener("DOMContentLoaded", function () { // Q1. timer 라는 변수에 할당만 해줬을 뿐인데, 왜 함수가 즉시 실행되는지 이해가 안 됩니다. timer = setInterval(thisThisOne, 1000); // Q2. setTimeout 5초로 맞춰놓으면, "1초"가 안 보이고 바로 display: none;이 되버리네요. setTimeout(tryThis, 6000); }); function tryThis() { sp.style.display = "none"; } function thisThisOne() { if (count === 0) { clearInterval(timer); } sp.textContent = `${count}초 이내 구매시 사은품 증정`; count--; } // testTimer 역시 변수에 담겼을 뿐인데, 실행이 된다. 혼란스럽군요... let testTimer = 0; testTimer = setInterval(function () { console.log('이거 실행 됩니다.') }, 1000); </script> </html>
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Member.setname 질문
계속 이해가안가는게 하다보니 Member 엔티티객체에 저렇게 바로 set해도되는건가요? 따로 만들어서 MemberJoin이라든지 해야되는걸로알고있었는데 왜여기서는 바로 entity에 바로 넣는지모르겠어요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스코프 관련 질문이 있습니다.
스코프 관련 궁금한 점이 있습니다. MemberListController MemberSaveController같은 경우 내부에 process 함수를 보유하고 있고 public String process(Map<String, String> paramMap, Map<String, Object> model) 인자로 전달받은 model 객에체 model.put("member", member); 같이 주입을 해 주는데 함수 밖에서도 사용 할 수 있는거 같습니다. mv.setModel(model); handle 함수에서 에서 만든 model 객체와 process 함수에서 쓰인 model 객체는 다른 스코프의 다른 객체가 아닌가요? 어떻게 사용이 될 수 있는 건가요? 인자로 전달 했고, 전달받은 객체를 변화 시켯지만 함수가 종료 되었는데 그 객체의 스코프가 계속 유지가 되는게 이해가 안되어 질문 드립니다. 물론 아래에 이와같은 질문이 있지만 더욱 더 자세한 설명이 필요해서 질문 드립니다. -- 혹시 Call By Reference 때문인가요? 구글링을 하다보니 저게 의심이 되네요
-
미해결NEW!! 12시간 안에 끝내는 R 활용 데이터분석 / 시각화
항공데이터 분석 mutate 관련 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요? 항상 좋은 강의 해주셔서 감사합니다! 항공데이터의 결측 사유별 갯수에서 각 개수가 전체에서 차지하는 비율인 rate 열을 하나 생성했는데요. rate 에 %를 붙여서 98.7% 이런식으로 표현하고 싶어요. 어떻게 해야 하나요? hflights_CancellationCode hf_Cancel_n <-sum(hflights_CancellationCode$n) hflights_CancellationCode %>% mutate(rate = (hflights_CancellationCode$n / hf_Cancel_n)*100) [결과] CancellationCode n rate <chr> <int> <dbl> 1 "" 224523 98.7 2 "A" 1202 0.528 3 "B" 1652 0.726 4 "C" 118 0.0519 5 "D" 1 0.000440
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
uuid 및 메모리 설정
안녕하세요! 강의 너무 잘 듣고 있습니다. 에러 문제는 아니고, 강의 뒷부분에 uuid, 파일 메모리에 따른 설정 과정이 이후 강의에서 다뤄질까요?? 이론으로만 알고 넘어가기에는 중요한 내용 같아 여쭤봅니다 :) 만약 없다면 admin.py 파일에서 구축하면 될까요? 감사합니다!