묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 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 파일에서 구축하면 될까요? 감사합니다!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
redis + nginx
안녕하세요. nginx 설정과 관련해 질문드릴게 있습니다. sudo npx pm2 monit를 했을 때, 아래와 같은 에러가 발생하는데 redis를 사용하고 있다면, nginx 설정에 추가해줘야할 게 있나요..??