묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
500에러가 납니다. 원인이 알고싶어요!
궁금한게 있습니다.수업중 16:00 정도에서의 내용인데요.컨트롤러를 다형성으로 만들고 나서 처음부터 /frontcontroller/v1/members/save 에 접속하면500에러가 납니다. 그런데 /frontcontroller/v1/members/new-form 으로 접속하여 폼에 데이터를 입력 후 전송버튼을 클릭하면 /frontcontroller/v1/members/save에 접속시 해당컨트롤러에 매핑되어 있는 jsp가 잘 호출되는데요처음부터 /frontcontroller/v1/members/save 로 접속하면 발생하는 500에러의 이유가 어떤것일까요?제가 생각하기엔 파라미터값이 넘어오지 않아서 인것 같은데 맞을까요? 정확한 원인이 궁금합니다!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
둥분산 분석 문의
일원분산 분석시 정규성 만족, 등분산 불만족시 -> 어떤 분석을 사용하나요? 비모수 검정을 사용하나요? 정규성 검정1) 정규성 만족, 등분산 만족시 - > 일원분산분석2) 정규성 만족, 등분산 불만족시 -> 어떤 분석을 사용하나요? 3) 정규성 불만족 -> 비모수검정 Kruskal 검정
-
해결됨장애 없는 서비스를 만들기 위한 Resilience4j - CircuitBreaker
컨테이너 환경에서의 circuitbreaker 상태 전파 방식 질문
안녕하세요~ 여러 대의 서버가 컨테이너 환경에서 실행될 때, 모든 서버의 서킷 브레이커 상태를 실시간으로 자동 전파하려면 어떻게 해야 할까요?
-
해결됨스프링 시큐리티 OAuth2
마지막 장 front end 에서 리소스 서버 직접 요청
안녕하세요. 선생님어느덧 마지막장이네요.한가지 질문이 있네요.사용자에 대한 엑세스 토큰을 발급 받기 위해 사용자가 로그인 링크를 클릭해서 클라이언트 서버에 로그인 요청하면 클라이언트 서버에서 임시코드를 발급 받기 위한 인가서버 요청 url을 만들어 사용자 브라우저로 redirect 하고, 인가서버의 로그인 화면에서 로그인을 하게 되면 인가서버는 임시코드를 parameter 로 넣어서 클라이언트로 redirect 되어, 최종 클라이언트 서버가 사용자에 대한 엑세스 토큰을 인가서버에 요청하여 발급 받잖아요? 그리고 클라이언트 서버가 그 엑세스 토큰을 관리하게 되고..그러니까 클라이언트 서버가 대신 요청? 그런데 마지막장에 리소스 서버에 자원을 요청하는데.. 클라이언트 API 서버가 요청하는 것도 있고.. frond end 자바스크립트에서 클라이언트 서버를 경유하지 않고 직접 리소스 서버에 자원을 요청하는 예제가 있네요.실무에서는 이렇게 frond end 단에서 직접 리소스 서버로 요청하기도 하는지요?front end에서 클라이언트 API 서버에 요청을 하여 사용자 정보를 가져와 보여주는 식으로 구현해야 하는 것인지? 아니면 front end에서 직접 리소스 서버에 토큰 들고 요청하여 사용자 정보를 가져와 보여주는 식으로 구현해야 하는지? 실무에서 어떻게 구현하는지 알고 싶네요.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
섹션13. 작업형2에서 데이터 합치기
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요안녕하세요.만일, 아래와 같이 라벨인코딩과 원핫인코딩을 수행했다면,,데이터 다시 합치기를 할 필요가 없는 것이지요?이유는, 분리하지 않고 범주형/수치형 data만 취해서 인코딩을 진행했기 때문에,,,,이게 맞을까요? # 라벨인코딩 cols = ['Employment Type','GraduateOrNot', 'FrequentFlyer', 'EverTravelledAbroad'] from sklearn.preprocessing import LabelEncoder for col in cols: le = LabelEncoder() train[col] = le.fit_transform(train[col]) test[col] = le.transform(test[col]) # 원핫인코딩 cols2 = ['Age','AnnualIncome', 'FamilyMembers', 'ChronicDiseases'] train[cols2] = pd.get_dummies(train[cols2]) test[cols2] = pd.get_dummies(test[cols2])
-
미해결
인덱스 생성하는 법
여기서 위에 id, price가 함께 나오려면 ( 기존 test 데이터에는 id가 없어서 pop을 못합니다)pred = rf.predict(test) submit = pd.DataFrame({ 'pred' : pred }) 여기서 어떻게 추가를 해야 id, price가 같이 나오나요?
-
미해결[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
nosql 섹션3. 몽고DB 데이터 수정하기부분 질문
안녕하세요. 다름이 아니라 강의 17:00에 replace 부분을 보다가 생긴 궁금증인데요 $set 수정부분 키값에서 age와 hobbies 에는 쌍따옴표가 없는데 name에는 있어서 혹시 특별한 의미가 있는지 궁금해서 문의글 남깁니다. name 부분 쌍따옴표가 없어도 실행은 되어서 여쭤 봅니다.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
9장 게시글 업로드하기 post 오류
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다. 사진업로드를 하려할때 미리보기가 뜨지 않습니다. uploads에는 올린 사진들이 잘 뜹니다.게시글을 업로드하려 짹짹을 누르면 post 라우터가 없다고 뜹니다. POST /post 라우터가 없습니다.404Error: POST /post 라우터가 없습니다. at C:\Users\jyoun\udr_node\lecture\ch9\app.js:53:18 at Layer.handle [as handle_request] (C:\Users\jyoun\udr_node\lecture\ch9\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (C:\Users\jyoun\udr_node\lecture\ch9\node_modules\express\lib\router\index.js:328:13) at C:\Users\jyoun\udr_node\lecture\ch9\node_modules\express\lib\router\index.js:286:9 at Function.process_params (C:\Users\jyoun\udr_node\lecture\ch9\node_modules\express\lib\router\index.js:346:12) at next (C:\Users\jyoun\udr_node\lecture\ch9\node_modules\express\lib\router\index.js:280:10) at C:\Users\jyoun\udr_node\lecture\ch9\node_modules\express\lib\router\index.js:646:15 at next (C:\Users\jyoun\udr_node\lecture\ch9\node_modules\express\lib\router\index.js:265:14) at C:\Users\jyoun\udr_node\lecture\ch9\routes\page.js:12:3 at Layer.handle [as handle_request] (C:\Users\jyoun\udr_node\lecture\ch9\node_modules\express\lib\router\layer.js:95:5) controllers/post.jsconst Post = require('../models/post'); const Hashtag = require('../models/hashtag'); exports.afterUploadImage = (req, res) => { console.log(req.file); res.json({ url: `/img/${req.file.filename}` }); }; exports.uploadPost = async (req, res, next) => { try { const post = await Post.create({ content: req.body.content, img: req.body.url, UserId: req.user.id, }); const hashtags = req.body.content.match(/#[^\s#]*/g); if (hashtags) { const result = await Promise.all(hashtags.map((tag) => { return Hashtag.findOrCreate({ where: { title: tag.slice(1).toLowerCase() } }); })); console.log('result', result); await post.addHashtags(result.map(r => r[0])); } res.redirect('/'); } catch (error) { console.error(error); next(error); } }; routes/post.jsconst express = require('express'); const multer = require('multer'); const path = require('path'); const fs = require('fs'); const { afterUploadImage, uploadPost } = require('../controllers/post'); const { isLoggedIn } = require('../middlewares'); const router = express.Router(); try { fs.readdirSync('uploads'); } catch (error) { console.error('uploads 폴더가 없어 uploads 폴더를 생성합니다.'); fs.mkdirSync('uploads'); } const upload = multer({ storage: multer.diskStorage({ destination(req, file, cb) { cb(null, '/uploads'); }, filename(req, file, cb) { const ext = path.extname(file.originalname); cb(null, path.basename(file.originalname, ext) + Date.now() + ext); }, }), limits: { fileSize: 5 * 1024 * 1024 }, }); // POST /post/img router.post('/img', isLoggedIn, upload.single('img'), afterUploadImage); // POST /post const upload2 = multer(); router.post('/', isLoggedIn, upload2.none(), uploadPost); module.exports = router; 개발자 도구로 보면 짹짹을 눌렀을때 갈곳이 없다는데 저는 깃헙 복사해서 똑같이 했는데 뭐가 문제인지 모르겠습니다. app.jsconst express = require('express'); const cookieParser = require('cookie-parser'); const morgan = require('morgan'); const path = require('path'); const session = require('express-session'); const nunjucks = require('nunjucks'); const dotenv = require('dotenv'); const passport = require('passport'); dotenv.config(); const pageRouter = require('./routes/page'); const authRouter = require('./routes/auth'); const { sequelize } = require('./models'); const passportConfig = require('./passport'); const app = express(); passportConfig(); // 패스포트 설정 app.set('port', process.env.PORT || 8001); app.set('view engine', 'html'); nunjucks.configure('views', { express: app, watch: true, }); sequelize.sync({ force: false }) .then(() => { console.log('데이터베이스 연결 성공'); }) .catch((err) => { console.error(err); }); app.use(morgan('dev')); app.use(express.static(path.join(__dirname, 'public'))); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser(process.env.COOKIE_SECRET)); app.use(session({ resave: false, saveUninitialized: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly: true, secure: false, }, })); app.use(passport.initialize()); app.use(passport.session()); app.use('/', pageRouter); app.use('/auth', authRouter); app.use((req, res, next) => { const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`); error.status = 404; next(error); }); app.use((err, req, res, next) => { res.locals.message = err.message; res.locals.error = process.env.NODE_ENV !== 'production' ? err : {}; res.status(err.status || 500); res.render('error'); }); app.listen(app.get('port'), () => { console.log(app.get('port'), '번 포트에서 대기중'); }); main.html{% extends 'layout.html' %} {% block content %} <div class="timeline"> {% if user %} <div> <form id="twit-form" action="/post" method="post" enctype="multipart/form-data"> <div class="input-group"> <textarea id="twit" name="content" maxlength="140"></textarea> </div> <div class="img-preview"> <img id="img-preview" src="" style="display: none;" width="250" alt="미리보기"> <input id="img-url" type="hidden" name="url"> </div> <div> <label id="img-label" for="img">사진 업로드</label> <input id="img" type="file" accept="image/*"> <button id="twit-btn" type="submit" class="btn">짹짹</button> </div> </form> </div> {% endif %} <div class="twits"> <form id="hashtag-form" action="/hashtag"> <input type="text" name="hashtag" placeholder="태그 검색"> <button class="btn">검색</button> </form> {% for twit in twits %} <div class="twit"> <input type="hidden" value="{{twit.User.id}}" class="twit-user-id"> <input type="hidden" value="{{twit.id}}" class="twit-id"> <div class="twit-author">{{twit.User.nick}}</div> {% if not followingIdList.includes(twit.User.id) and twit.User.id !== user.id %} <button class="twit-follow">팔로우하기</button> {% endif %} <div class="twit-content">{{twit.content}}</div> {% if twit.img %} <div class="twit-img"><img src="{{twit.img}}" alt="섬네일"></div> {% endif %} </div> {% endfor %} </div> </div> {% endblock %} {% block script %} <script> if (document.getElementById('img')) { document.getElementById('img').addEventListener('change', function(e) { const formData = new FormData(); console.log(this, this.files); formData.append('img', this.files[0]); axios.post('/post/img', formData) .then((res) => { document.getElementById('img-url').value = res.data.url; document.getElementById('img-preview').src = res.data.url; document.getElementById('img-preview').style.display = 'inline'; }) .catch((err) => { console.error(err); }); }); } document.querySelectorAll('.twit-follow').forEach(function(tag) { tag.addEventListener('click', function() { const myId = document.querySelector('#my-id'); if (myId) { const userId = tag.parentNode.querySelector('.twit-user-id').value; if (userId !== myId.value) { if (confirm('팔로잉하시겠습니까?')) { axios.post(`/user/${userId}/follow`) .then(() => { location.reload(); }) .catch((err) => { console.error(err); }); } } } }); }); </script> {% endblock %}
-
미해결
intelliJ 오디오 파일 에러
두 파일이 동일한 위치에 지정되어 있는데 아래 메서드에서만 UnsupportedAudioFileException 에러가 뜹니다. 이유가 뭘까요?
-
미해결
f1_score 문자로 문제 나오면
f1 = f1_score(y_val_str, pred_str, pos_label='A') # 문자일 때는 파라미터 하나 더 설정해야함 만약에 예측값이 문자로 문제가 나오면 y_val_str, pred_str 까지는 맞는거같은데 뒤에 혹시 pos_label='A' 는 A로 고정인건가요? 문제에서 주어지는건가요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
IPSec VPN과 터널링에서 VPN GtoG 예시
후반부 GtoG 예시에서 "DB는 로컬 네트워크에서 접근 가능하고, 접근 가능한 PC는 인터넷에 연결이 되어있지 않다."는 조건으로 시작합니다.이 때, 1. VPN을 이용하려면 DB 자체 혹은 DB와 연결된 호스트가 인터넷에 연결되어야 하기에 앞의 조건은 사라지나요?사라진다면 DB의 보안과 관련하여 문제가 생기진 않을까요?
-
미해결스프링 배치
writer에서 다시 processor 호출 질문 드립니다.
질문 드립니다. processor의 return 형식이<A, B> 일 때 processor에서 A를 받아 B로 가공하여 return 하는데 이 때 B말고 다른 C도 함께 writer로 return이 가능한가요? step을 구성할 때 reader -> processor -> writer 순서인데 writer까지 진행된 이후 write 한 객체로 다시 processor 혹은 reader -> writer 등을 진행하고 싶을 땐 어떻게 해야 할까요? processor에서 조건을 사용하여 reader를 호출 하고 있는데 reader를 bean으로 생성하지 않고 reader.read(); 와 같은 방식으로 호출하는데 이 방식이 옳바른 방식인가요?
-
해결됨웹 애니메이션을 위한 GSAP 가이드 Part.03
ScrollTrigger의 end와 toggleClass
안녕하세요, 선생님.섹션2 Advanced Trigger - practice 예제에서fixedHeader() 함수를 통해 헤더가 pin되어 start 지점부터 fixed 처리가 되잖아요~이와 동시에 fixed 될 때 특정 클래스(toggleClass : "active")를 넣어서 스타일을 다르게 주려고 했거든요.그런데 end 마지막 지점에 스크롤이 닿으면 fixed는 되어있지만 class는 사라지더라고요.혹시 다른 방법이 있을까요? function fixedHeader(){ ScrollTrigger.create({ trigger: '.nav_container', start: 'top top', // endTrigger:'.footer', end: 'max', pin: true, pinSpacing: false, toggleClass : "active" }) }
-
미해결
학습 중 궁금증(수치형 범주형 전처리)
학습 중에 보통 범주형을 cols로 지정해놓고 원핫인코딩이나 라벨 인코딩을 하는데 수치형변수도 따로 구분해서 스케일링 진행하면 점수가 더 잘나오나요? 3회 기출유형 작업형2에서 만점자가 수치형 범주형 분리 후에 수치형은 로버스트스케일링, 범주형은 원핫인코딩, 모델링은 랜덤포레스트 진행했는데roc_auc_score 0.83, 최종 채점 0.78 나왔고 제가 수치형은 지정 안하고 범주형만 라벨인코딩 진행, 모델링은 랜덤포레스트 및 하이퍼파라미터 튜닝 해서 채점 해봤는데 둘 다 모두 하이퍼파라미터튜닝 max_depth=7, n_estimators=800으로 동일하게 비교해봤습니다 roc_auc_score 0.775 // 최종 채점 0.79가 나왔습니다 둘 중에 어쩄든 점수 높은걸로 채택해서 시험때도 제출하면 되는 것인가요? 아니면 수치형까지 스케일링을 해야 과정 부문에서 점수를 더 받는것인가요?
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
마지막 공격모션 ClientRPC 할때 IsLocalController() 개념 확인 질문입니다.
제가 이해한 방식인데요. 파란색으로 표시한 글이 올바르게 이해한게 맞는 건가요??
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
[Lab3] ps동작 확인 불가 (Serial terminal 무응답)
Lab3 의 끝부분에서 보드를 연결하여 Vitis의 serial terminal로 동작을 확인하는 데 아래의 사진과 같이 나옵니다. 보드와 연결은 되는 것 같습니다.
-
미해결실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
metric-server 이중화로 인한 grafana 대시보드 이중 출력 문의
[질문 하기]안녕하세요 해당 실습을 진행하면서 metric-server가 이중화되어 파드가 2개 구성되어있는데, Grafana 메트릭을 검색할 경우 대시보드가 2개가 출력되고 있습니다.(HPA 설정으로 인해 이중화 구성) 혹시 위와 같은 경우 1개만 출력하고 싶은데, 특정 파드에 대한 label을 명시하는 방법말고 다른 방법이 있을까요?## PromQL 제외 sum(kube_deployment_spec_replicas{deployment="metric-server", instance="172.31.41.80:8080"})감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
분류 회귀 모델 검증데이터 질문입니다!
분류 모델과 회귀 모델이 각각 어느정도 데이터 예측 값이 나와야 만족하고 제출할 수 있을까요? 최소한의 기준이라도 있을까요?
-
해결됨Airflow 마스터 클래스
[ERROR] Max retries exceeded with url
task실행 하면 api호출이 안되고 requests에서 에러가 나옵니다requests.exceptions.ConnectionError: HTTPConnectionPool(host='http', port=80): Max retries exceeded with url: //openapi.seoul.go.kr:8088/***/json/TbCorona19CountStatus/1/1000/?Content-Type=application%2Fjson&charset=utf-8&Accept=%2A%2F%2A (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fbc7dac3fa0>: Failed to establish a new connection: [Errno -2] Name or service not known')) 그런데 postman이든 브라우저든 다른 곳에서는 정상척으로 호출하고 이전에 SimpleHttpOperator도 정상적으로 모두 호출합니다.왜 연결이 안되고 Max retries가 뜨는지 잘 모르겠어요 ㅠ혹시 while문에서 너무 빨리호출하나 싶어서 time.sleep도 넣어봤지만 차이 없네요
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
두가지 질문이 있습니다.
hasText가 없는 이유와 대용량파일,동영상파일은 안올라가는 이유가뭔가요 ?톰캣 쪽에서 설정을 따로 해줘야하는건가요 ?