묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결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 설정에 추가해줘야할 게 있나요..??
-
미해결뉴욕 프로덕트 디자이너가 알려주는, 입문자를 위한 UX디자인 개론
좋은 UX 사례 나쁜 UX 사례
토스를 예로 들고 싶어요. 토스는 '행동유도성'에 있어서 '생각할 필요' 없이 바로바로 사용하고 배우지 않아도 무슨 의미인지 이해할 수 있도록 세심한 배려가 녹아들어가 있죠. 토스는 내가 어떤 은행계좌에 얼마가 그래서 송금을 어떻게 보낼지 고민할 필요가 전혀 없습니다. 처음 접속 화면에서 바로 핵심 기능인 '송금' 에 대해서 버튼까지 바로바로 보이기 때문이죠. 반면에 KB 스타뱅크는 사용성을 개선했다고는 하지만 다른 은행 계좌에서 송금을 하려면 별도의 '탭'을 통해 다른 페이지로 들어가서 송금을 해야만 합니다. 복잡하고 처음 할때는 뭘 어디서 눌러서 들어가야할지 이것저것 시도해봐야 하죠.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
오류 페이지 오류 출력할 때 질문입니다
timestamp, path, status, message 등 500.html 에서 출력할 때 따로 모델을 가져온다던가 th=object 였나...?? 같은걸 쓰지 않고 그냥 타임리프로 ${} ,하는데 출력이 되더라고요 이게 모델을 가져오지않는걸 봐서는 모델에 담기는 것 같진 않고 따로 무언가를 가져온 것은 없는 것 같은데 어떻게 이 출력이 이루어지는건가요 ??
-
미해결Slack 클론 코딩[실시간 채팅 with React]
슬랙 리소스 로드 오류
안녕하세요! 위와같은 오류가 나서요 26번 css랑 28번 font에 문제가 있는 것 같기도 하고 https://blinders.tistory.com/84 이 블로그에서는 html-webpack-plugin 플러그인이 필요하다는 거 같은데 해결 방법 도움 여쭈어요ㅠㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
FindChild 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 컴포넌트를 찾는다고 했는데 FindChild<Button>에서는 pointButton 전체는 gameObject 이니까 이 button 컴포넌트를 찾는 건데 컴포넌트의 .name은 붙어있는gameObject의 이름을 따라가니까 PointButton으로 찾을 수 있던거라고 이해하면 될까요?
-
미해결스프링 핵심 원리 - 기본편
수정자 주입에 대한 질문
### 수정자 주입에 대한 질문 드립니다. MemberService와 같이 싱글톤으로 관리되는 스프링 빈을 수정자 주입으로 진행하게 되었을 때, 필드 값을 변경할 길을 열어주게 되면 여러 스레드가 동시 접근했을때 스레드 안정성을 깨뜨리는 결과가 될 수 있을까요?
-
미해결피그마(Figma)를 활용한 UI디자인 입문부터 실전까지 A to Z
우클릭 시 창이 뜨는 이유는 무엇인가요?
안녕하세요 우클릭시 자꾸 피그마 창 위에 윈도우창이 뜨는데 이유가 무엇인가요? ESC 를 클릭 한후 작업을 이어나갈 수 있는데 크게 불편함은 없지만, 혹시 해결방법이 있나해서 질문 남겨봅니다!
-
미해결Node.js 웹개발로 알아보는 백엔드 자바스크립트의 이해
Error: Failed to deserialize user out of session
join에서 이메일 , 비밀번호 치고 >http://127.0.0.1:3000/main main으로 넘어가면 제목같은 에러가 뜨네요 ..여기까지왓는데 포기해야하나..하 제발 고수님들..