묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Jenkins를 이용한 CI/CD Pipeline 구축
kex_exchange_identification: Connection closed by remote host 에러 질문 드려요 ㅠㅠ
다른 질문글에서 kex_exchange_identification: Connection closed by remote host 에러 해결 방법 확인하고 시도해봤는데 해결을 못해서 질문글 남겨요 ㅠㅠ맥북: apple silicon m1 chip이미지: edowon0623/ansible-server:m1컨테이너 실행: docker run --privileged -itd --name ansible-server -p 20022:22 -p 8082:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/ansible-server:m1 /usr/sbin/initssh 접속:ssh root@localhost -p 20022 컨테이너 포트 충돌나서 8082로 변경했어요나머진 스크립트랑 같아요docker ps 확인해보면 ansible-server status up 상태인데 ssh 접속하면 kex_exchange_identification: Connection closed by remote host 에러가 발생해요docker-server컨테이너는 ssh root@localhost -p 10022로 잘 되는데 ansible-server은 왜 에러가 발생할까요? ㅠㅠ
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
access. jenkins가 안됩니다
포트를 8083으로 설정하고 localhost:8083 으로 들어가도 페이지가 작동하지 않는다고 뜨네요..8080 포트를 lsof -i tcp:8080으로 조회해서 kill -9 으로 해도 자꾸 사용중이라고 뜹니다. docker run -d -p 8083:8083 -p 50000:50000 --name jenkins-server --restart=on-failure jenkins/jenkins:lts-jdk11 으로 실행하면 안되는건가요??
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
정수론 14252
53분 38초쯤에for j in range(2184, 2200): if gcd(42, i) == 1: if gcd(2184, i) == 1: count +=1 break if j == 2199: count += 2이 부분에서 이미 for i in range를 통해서42부터 2184까지 검증을 하고 넘어가서j로 2184부터 2200사이에 몇 개의 수를 넣어야 공약수를 넣어야 1이 되는가인데for j in range 안에 조건이 gcd(42,i) == 1인데이게 gcd(2184, j) == 1: 이렇게 되어야 하는 게 아닌가요이 부분이 이해가 안되네요ㅠㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
[[]]사용법
대괄호 두개 사용할 때가 주로 어느 때 사용하고, 하나는 어느 때 사용하죠?? 소괄호 대괄호 쓰는 경우는 어느경우가 있나요??혹시 분류를 쉽게할 수 있는 기준이나 가이드 같은게 있나요?
-
해결됨Vue 3 중급 - Composition API
할일추가, 조회 기능 리팩토링 App.vue 강의 내용이 없습니다
색션1만들면서 배우는 Composition API 내용에서[할일 추가,조회 기능 리팩토링] 강의 에서 App.vue 에 코드가 갑자기 많이 바뀌게 되어서 나오는데(예) fetchTodos 함수가 추가가 되었고, TodoList에 todoItems가 추가가 되었음해당 내용은 설명하는 부분도 없는데 코드를 어디서 확인을 할 수 있나요??TodoList.vue 도 변경된게 있는지 알고 싶습니다
-
미해결Verilog FPGA Program 2 (MicroBlaze, Arty A7-35T)
xdc파일 핀할당에 대해 문의드립니다.
안녕하세요 cora z7 07s 보드를 가지고 실습중인데요제가 갖고 있는 보드는 UART가 PS 부분에 연결되어있어 IO포트가 따로 없는데 어떻게 해야 하나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-A 그림 질문
5분 50초에 그려져 있는 그림에서 벡터를 오름차순 정리 했으니 비용도 오름차순으로 정렬되게 그려야하는 것 아닌가요?일정이 짧은 순서대로 정렬되고 비용 또한 오름차순 정리되면 아래 그림처럼 그리는것이 맞을까요? 수업 듣다가 헷갈려서 여쭤봅니다 ㅎㅎ
-
해결됨Airflow 마스터 클래스
bashoperator에 외부 쉘파일 수행하기
안녕하세요 강사님~airflow를 이제 막 배우는 학생입니다.다름이 아니라 bashoperator에 외부 쉘파일 수행하기에서 airflow에서 dag을 실행하면 해당 경로를 찾을 수 없다고 나와서요제가 root 계정으로 실습 진행하고 있는데 opt를 root 경로로 바꿔봐도 동일한 증상이 계속됩니다.추가로 py 코드에서 경로를 왜 opt로 주셨는지도 궁금합니다!
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
css를 불러오지 않아도 클래스 이름을 부여하여 스타일이 가능한가요?
useParams를 이용한 영화 상세 페이지 구현 파트8분 45초에서 css 파일을 불러오지 않고도modal__poster-img 클래스 이름을 부여하자 스타일이 반영되는 것을 확인할 수 있었습니다왜 이렇게 되는 걸까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
조건문 변수 설정
따로 cond라는 변수를 만들어서 조건을 거는 이유가 있을까요?따로 변수를 만들지 않고 바로 and, or을 거는 방법은 없나>??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-B 강의 질문
안녕하세요 큰돌 선생님!강의를 여러번 보고서도 이해가 되지 않아서 질문 남깁니다. Q. 이 문제는 왜 DP로 접근해야 하는지 보충 설명을 추가해주시면 감사하겠습니다... 브루트포스 느낌인건 알겟는데 경우의 수를 계산하기 위해서 식을 어떻게 세워야 할 지 논리적으로 맞는지를 잘 모르겠습니다... 도와주시면 감사하겠습니다!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
합친 후 분리
섹션4 피처엔지니어링 마지막 정리 부분에서 정석은 라벨 인코딩 전에 데이터를 합친 후 인코딩을 하고 그 다음에 분리하는 것이 맞나요?
-
미해결스프링 핵심 원리 - 기본편
java.lang.NullPointerException 오류 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.영한님과 똑같이 코드를 작성했는데 AllBeanTest실행 시 java.lang.NullPointerException 오류가 발생합니다ㅠ -AllBeanTest 실행 console
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
로그인 실패 에러 (500 Internal Server Error)
회원가입 시 MySQL 테이블에 이메일, 비밀번호 저장되는 것을 확인하고 로그인을 시도했는데 계속 실패해서 질문드립니다 MySQL 워크벤치로 확인한 user 테이블을 보면 회원가입은 잘 되었는데 id: 2 의 메일, 비밀번호로 로그인이 안 됩니다 console.log로 확인해보니까 패스포트 로그인 시도에서 에러가 나는 것 같기는 한데 정확한 원인을 못 찾겠습니다.. 터미널에 뜨는 메시지입니다개발자도구_네트워크 화면입니다개발자도구_콘솔 화면입니다 의심스러운 코드입니다!routes/user.js 코드const express = require('express'); const bcrypt = require('bcrypt'); const passport = require('passport'); const { User } = require('../models'); const router = express.Router(); router.post('/login', (req, res, next) => { passport.authenticate('local', (err, user, info) => { if (err) { //서버쪽 에러 console.error(err); console.log('routes/user_server err') return next(err); } if (info) { //클라이언트쪽 에러 return res.status(401).send(info.reason); } return req.login(user, async (loginErr) => { if (loginErr) { //패스포트 로그인 에러 console.error(loginErr); console.log('routes/user_loginErr') return next(loginErr); } // res.setHeader('Cookie', 'cxlhy..랜덤토큰') return res.status(200).json(user); }); })(req, res, next); }); router.post('/', async (req, res, next) => { // POST /user try { const exUser = await User.findOne({ where: { email: req.body.email, } }); if (exUser) { return res.status(403).send('이미 가입된 메일입니다.'); } const hashedPassword = await bcrypt.hash(req.body.password, 10); //10~13 await User.create({ email: req.body.email, nickname: req.body.nickname, password: hashedPassword, }); res.status(201).send('OK'); } catch (error) { console.error(error); next(error); //next로 에러 처리 (한방에), status 500 } }); module.exports = router; app.js 코드const express = require('express'); const cors = require('cors'); const session = require('express-session'); const cookieParser = require('cookie-parser'); const passport = require('passport'); const dotenv = require('dotenv'); const postRouter = require('./routes/post'); const userRouter = require('./routes/user'); const db = require('./models'); const passportConfig = require('./passport'); dotenv.config(); const app = express(); db.sequelize.sync() .then(() => { console.log('db 연결 성공'); }) .catch(console.error); passportConfig(); app.use(cors({ origin: 'http://localhost:3000', credentials: false, })); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(cookieParser(process.env.COOKIE_SECRET)); app.use(session({ saveUninitialized: false, resave: false, secret: process.env.COOKIE_SECRET, })); app.use(passport.initialize()); app.use(passport.session()); ~이하생략~ passport/index.js 코드const passport = require('passport'); const local = require('./local'); const { User } = require('../models'); module.exports = () => { passport.serializeUser((user, done) => { done(null, user.id); }); passport.deserializeUser(async (id, done) => { try { const user = await User.findOne({ where: { id } }); done(null, user); //req.user } catch (error) { console.error(error); done(error); } }); local(); }; passport/local.js 코드const passport = require('passport'); const { Strategy: LocalStrategy } = require('passport-local'); const bcrypt = require('bcrypt'); const { User } = require('../models'); module.exports = () => { passport.use(new LocalStrategy({ usernameField: 'email', //id칸 passwordField: 'password', //비밀번호칸 }, async (email, password, done) => { //done으로 결과 판단 try { const user = await User.findOne({ //가입된 이메일이 있는지 검사 where: { email } }); if (!user) { return done(null, false, { reason: '존재하지 않는 이메일입니다.' }); } const result = await bcrypt.compare(password, user.password) if (result) { return done(null, user); } return done(null, false, { reason: '비밀번호가 일치하지 않습니다.' }); } catch (error) { console.error(error); return done(error); } })); };
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이중for문으로 조건에 맞는 케이스를 찾아서 풀어보았습니다 뿌듯!
열심히 풀었습니다! function solution(array) { let answer = 0; for (let i = 0; i < array.length; i++) { for (let j = 0; j < array[i].length; j++) { const result = []; const target = array[i][j]; const left = array[i][j - 1] ?? 0; const right = array[i][j + 1] ?? 0; const top = i > 0 ? array[i - 1][j] : 0; const bottom = i < array.length - 1 ? array[i + 1][j] : 0; result.push(target); result.push(left); result.push(right); result.push(top); result.push(bottom); if (target === result.sort((a, b) => b - a)[0]) answer++; } } return answer; } console.log( solution([ [5, 3, 7, 2, 3], [3, 7, 1, 6, 1], [7, 2, 5, 3, 4], [4, 3, 6, 4, 1], [8, 7, 3, 5, 2], ]) );
-
해결됨스프링 핵심 원리 - 기본편
스프링 부트가 실행 안되는 것 같아요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]3주 정도만에 강의 들어가서 실습하려 하는데 원래 빨간 줄이 생겨 실행해보니 위 에러 코드가 떴습니다.구글링 하여Gradle Refresh첫번째 방법으로 라이브러리가 꼬인 경우가 많으니 Gradle Refresh를 해준다.(IntelliJ 오른쪽 Gradle Tab -> refresh모양 버튼 클릭)Project Structure → Problembuild가 깨지면 해당 페이지에 Problem이 표시된다. 라이브러리가 꼬인 케이스인데 여기서 수동으로 삭제해줄 수도 있다.(상위 File 탭 -> Project Structure -> Problem)File → Cache 삭제IntelliJ Cache를 삭제해보자.(상위 File 탭 -> Invalidate Cache ~ 클릭)위 3가지 방식을 활용하여 고쳐보려고 하였는데요빨강 줄은 사라지고 오류 코드는 보이지 않게 되었지만스프링 부트가 실행이 안되는 것 같습니다(톰캣 서버가 열리지 않습니다) 이유가 너무 궁금합니다.. 알려주시면 감사하겠습니다 수정) 코드의 차이는 전혀 없다고 자신하며 오랜만에 들어왔기에 인텔리제이 업데이트를 한 번 한 것 같습니다.그 이유 때문일 수도 있을까? 라는 의문이 있지만 답변에 도움이 될 수 있게 추가하였습니다
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
setStatus, 콜백함수, 변수 스코프에 대해 질문드립니다.
강사님 안녕하세요항상 상세한 답변을 주시는 점 감사드립니다.아래의 코드를 보고 질문을 받아주시면 감사하겠습니다.import './App.css'; import Counter from './Counter'; import Container from './Container'; import {useEffect, useState} from "react"; import MyHeader from './MyHeader.js' export default function App() { const [state, setState] = useState({ a: 0, b: 0 }); const onClick = () => { const c=10; setState(c=>({ a: c + 1 })); }; return ( <div className="App"> <div>a : {state.a}</div> <button onClick={onClick}>증가</button> </div> ); }1번째 경우원래는 아래의 코드처럼 setState의 콜백함수의 인자에 state를 넣는 게 맞습니다.const c=10; setState(state=>({ a: c + 1 // 이 줄의 c는 1번째 줄의 c를 가리키므로 a: 10 + 1 과 같습니다. }));이때는 a:c+1에서의 c가 함수 밖에 선언된 맨위의 const c= 10의 c를 가리킵니다. 2번째 경우 일부러 setState의 콜백함수의 인자를 state가 아닌 c로 적어봤습니다.const c=10; setState(c=>({ //이 부분 변경 state 를 지우고 c로 a: c + 1 // 이 줄에서의 c는 1번째 줄의 c를 가리키지 않습니다. }));그러자 a: c + 1 에서의 c는 1번째 줄의 c가 아닌, 콜백함수 인자로 들어간 2번째 줄의 c를 가리킵니다.그래서 변수의 스코프를 공부하고 싶어서 조언을 구하고 싶습니다. 1번째 질문을 드립니다.변수가 const, let, var 인지에 따라서 스코프가 다른 것으로 아는데콜백함수의 인자로 들어간 변수는 const인지 let인지, var 인지 질문드리고 싶습니다. 2번째 질문을 드립니다.이 부분에 대해 학습하면 좋을 자료 링크를 추천해주시면 감사하겠습니다.저도 현재 변수 스코프에 대해 다시 공부하는 중입니다.3번째 질문을 드립니다.const c=10; setState(c=>({ //이 부분 변경 state 를 지우고 c로 a: c + 1 // 이 줄에서의 c는 1번째 줄의 c를 가리키지 않습니다. })); 에서2번째 줄의 콜백함수 인자의 c는 1번째 줄의 c를 가리키지 못하는 이유에 대해 질문드리고 싶습니다.4번째 질문을 드립니다.const c=10; setState(state=>({ //이 부분 변경 state 를 지우고 c로 a: c + 1 // 이 줄에서의 c는 1번째 줄의 c를 가리키지 않습니다. }));3번째 줄의 c는 1번째 줄의 c를 가리킬 수 있는 이유에 대해 질문드리고 싶습니다감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
부호 있는 정수, 부호 없는 정수
예를 들어 8비트 2진수1010 1110 이 있을 때컴퓨터가 어떻게 맨 앞 비트가 부호비트인지 아닌지 아는 것인가요?양수 174가 될수도 있고 음수 -46이 될 수 있는데 컴퓨터가 어떻게 그것을 구분하는 것인지 궁금합니다..
-
해결됨AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
redis Unhandled error. ([ErrorReply: ERR wrong number of arguments for 'auth' command]) 에러
안녕하세요 redis-serve 실행까지는 잘되는데vsCode 에서 yarn test 만 하면 꼭 아래와 같은 에러가 발생합니다.기본포트로 할때는 되다가6380 포트로 바꾼이후로 잘안되고 redis 에서도바뀐포트로 연결하고 비밀번호까지 쳤는데 아래와 같은 에러가 발생합니다.그리고 제소스가 에러가 나서제공해주신 express 소스를 압축을 풀어도 같은 에러가 발생을 합니다. 혹시몰라 build 파일을 삭제하고 재빌드후 다시 켜도 아래와 같은 에러가 나는데혹시 이유를 알 수 있을까요? ● POST /messages › responds with a success message Unhandled error. ([ErrorReply: ERR wrong number of arguments for 'auth' command]) at RedisSocket.<anonymous> (node_modules/@redis/client/dist/lib/client/index.js:396:14) at RedisSocket._RedisSocket_connect (node_modules/@redis/client/dist/lib/client/socket.js:166:18) at Commander.connect (node_modules/@redis/client/dist/lib/client/index.js:184:9) ● GET /messages › responds with all messages Unhandled error. ([ErrorReply: ERR wrong number of arguments for 'auth' command]) at RedisSocket.<anonymous> (node_modules/@redis/client/dist/lib/client/index.js:396:14) at RedisSocket._RedisSocket_connect (node_modules/@redis/client/dist/lib/client/socket.js:166:18) at Commander.connect (node_modules/@redis/client/dist/lib/client/index.js:184:9) ● Test suite failed to run thrown: "Exceeded timeout of 5000 ms for a hook. Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." 18 | }); 19 | > 20 | afterAll(async () => { | ^ 21 | await client.flushDb(); 22 | await client.quit(); 23 | }); at Object.<anonymous> (app/index.test.ts:20:1)Test Suites: 1 failed, 1 total FAIL app/index.test.ts (101.064 s) ● POST /messages › responds with a success message Unhandled error. ([ErrorReply: ERR wrong number of arguments for 'auth' command]) at RedisSocket.<anonymous> (node_modules/@redis/client/dist/lib/client/index.js:396:14) at RedisSocket._RedisSocket_connect (node_modules/@redis/client/dist/lib/client/socket.js:166:18) at Commander.connect (node_modules/@redis/client/dist/lib/client/index.js:184:9) ● GET /messages › responds with all messages Unhandled error. ([ErrorReply: ERR wrong number of arguments for 'auth' command]) FAIL app/index.test.ts (100.278 s) ● POST /messages › responds with a success message Unhandled error. ([ErrorReply: ERR wrong number of arguments for 'auth' command]) at RedisSocket.<anonymous> (node_modules/@redis/client/dist/lib/client/index.js:396:14) at RedisSocket._RedisSocket_connect (node_modules/@redis/client/dist/lib/client/socket.js:166:18) at Commander.connect (node_modules/@redis/client/dist/lib/client/index.js:184:9) ● GET /messages › responds with all messages Unhandled error. ([ErrorReply: ERR wrong number of arguments for 'auth' command]) at RedisSocket.<anonymous> (node_modules/@redis/client/dist/lib/client/index.js:396:14) at RedisSocket._RedisSocket_connect (node_modules/@redis/client/dist/lib/client/socket.js:166:18) at Commander.connect (node_modules/@redis/client/dist/lib/client/index.js:184:9) ● Test suite failed to run thrown: "Exceeded timeout of 100000 ms for a hook. Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." 18 | }); 19 | > 20 | afterAll(async () => { | ^ 21 | await client.flushDb(); 22 | await client.quit(); 23 | }, 100000); at Object.<anonymous> (app/index.test.ts:20:1)
-
미해결홍정모의 따라하며 배우는 C++
맥에서 Makfefile 사용하지 않고, vscode를 사용하여 헤더파일 포함해 실행시키는 법
답변들이 외부 링크만 알려주고 불친절하다고 생각해 직접 찾아보고 적어봅니다. 시작한지 1주차라 많이 틀릴수도있습니당일단 이건 제 폴더 화면이구요 ch1.cpp가 메인함수이고, 리소스에 add함수(헤더파일 및 바디)를 넣었습니다. 이제 각각에 main.cpp(저는 ch1.cpp라고함) , add.cpp , add.h입니다. 여기서 명령어를 보통 g++ -std=c++14 -Wall ch1.cpp -o test.out 이렇게 치실텐데 이러면 오류나면서 실행이 되지않죠 왜 안될까요? 링커라는게 각각의 cpp파일들을 컴파일한 후에 obj파일로 만들고 이것들을 실행이 가능한 하나의 exe파일 만드는 과정중에 하나인데 우리는 지금 main함수 cpp파일 하나만 컴파일 해놓은 겁니다. 즉 컴파일러가 exe파일로 만들려는데 main.cpp이 main.o로 만들어진거는 확인이 되었는데 add.cpp파일이 컴파일 안되어있으니까 이 링커과정에 문제가 생기는거죠. 해결방법은 간단합니다 add.cpp파일도 컴파일 해주면 대여g++ -std=c++14 -Wall ch1.cpp add.cpp -o test.out -> 해석하면 g++컴파일러 사용해서 ch1.cpp 파일 컴파일하고 add.cpp파일도 컴파일해서 test.out이라는 실행파일 만들어줘 입니다. 이러면 이제 정상적으로 실행이됩니다. cpp배운지 일주일차라 틀린 부분이 있을수도 있어요. 그래도 실행되죠?