묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
타전공 4년제 졸업 VS 학은제 학사 취득
안녕하세요.제 글을 보시는 분들 가볍게 의견 남겨주셨으면 좋겠습니다.현재 저는 개발자로 진로를 정하였는데, 비전공자이기 때문에 학벌로 인한 고민이 많은 상태입니다.현재는 타전공의 대학을 휴학중인 상태고, 1학년까지 마치고 휴학을 했기 때문에 복학해서 졸업하려면 3년의 시간이 걸립니다.그리고 휴학을 하면서 학점은행제 과정을 수료했기 때문에, 학은제로 내년 초 3개월만 하면 대학 학사 학위가 나오는 상황이구요. (대학과 학은제는 모두 컴공관련 아닌, 비전공과 입니다)하지만 내년에 대학교 복학을 하지 않으면 제적 되는 상황인데 ,여기서 고민은 한학기 남은 학은제 그냥 수료할지(=대학은 제적 처리됨),아니면 하던 학은제를 포기하고 그냥 복학해서 3년을 다니며 (타전공일지라도) 4년제를 졸업을 해야할지 고민입니다. 대학을 졸업까지 1년 정도 남으면 고민 안하고 복학을 했을 것 같은데 타전공인데다가 3년을 더 다녀야 한다는 생각에 고민이 됩니다. ( 이 3년이면 개발공부를 하기에 정말 중요한 시간이 될 것 같아서요) 대학교 수준은 중위권 정도의 국립대이며 , 과는 어문계열의 한 학과 입니다.<요약하자면>우선 비전공자로서 개발자로 진로를 확실히 정하였고 , 타전공일 지라도 4년제의 국립대 타이틀을 얻기 위해 대학을 3년동안 다녀야 할지, 인식 수준은 낮지만 그 3년 아껴서 학사 취득에 시간을 단축하고 개발 공부를 한시라도 빨리 시작하기 위한 학은제를 마저 수료하는게 나을지 고민입니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
gradlew 빌드시 에러 발생 관련
인텔리제이에서 springboot Application 및 테스트는 모두 정상적으로 완료됩니다. 그런데 강의에서는 터미널을 통해 ./gradlew clean build로 빌드를 하시더라고요 이것을 따라하니 계속 에러가 발생합니다. 원인을 알 수 있을까요? ㅠ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
onetomany 관계인 엔티티의 속성을 필터링에 사용하는것에 대해서
안녕하세요 강사님 강사님의 강의 잘듣고있습니다. 강사님의 강의를 듣고 프로젝트 진행중 고민인 부분이 있어 질문남깁니다!전체는 아니지 대략적인 erd 부분입니다.게시물에 달려있는 태그, 게시물 제목 등으로 필터링 하는 상황입니다. 또한 "게시물" 엔티티와 "게시물_태그" 엔티티가 양방향으로 되어있습니다.궁금한점이 게시물에 있는 태그를 조건으로 필터링할때 아래 두방식중 어떠한 방식이 적합합니까? 아니면 더좋은 방법이 있으시다면 어떤것이 있는지 여쭈어봐도 되나요?!게시물 테이블에 태그를 제외한 나머지 조건으로 필터링한 후 결과 게시물들의 "게시물_태그" 프록시 객체를 초기화하면서 태그 조건에 만족하는 게시물을 필터링하는 방법"게시물_태그" 테이블에서 태그조건을 가진 게시물들을 먼저 찾은후(찾은후 group등을 이용) 나머지 조건사용해서 필터링하기읽어주셔서 감사합니다!!!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
loginAction 에 대해 질문드립니다
제로초님의 강의 잘 보고 많이 배우고 있습니다!!이 영상을 보고 배운 코드를 바탕으로 연습을 하고있는데,loginAction이 실행이 안되는 것 같습니다.. 따로 에러메시지도 뜨지 않아서 계속 해결이 안되어 질문드립니다..isLoggedIn이 false에서 submit하여도 true로 바뀌지를 않습니당.. reducers/index.js// 서버사이드렌더링을 위함 import { HYDRATE } from "next-redux-wrapper"; // 리듀서 합쳐주는 메서드 import { combineReducers } from "redux"; import user from "./user"; import post from "./post"; // (이전상태,액션) => 다음상태 const rootReducer = combineReducers({ index: (state = {}, action) => { switch (action.type) { case HYDRATE: console.log("HYDRATE", action); return { ...state, ...action.payload, }; default: return state; } }, user, post, }); export default rootReducer; reducers/user.jsconst dummyUser = { id: 1, nickname: "제로초", Posts: [], Followings: [], Followers: [], }; export const initialState = { isLoggedIn: false, user: null, signUpData: {}, loginData: {}, }; export const SIGN_UP = "SIGN_UP"; export const SIGN_UP_SUCCESS = "SIGN_UP_SUCCESS"; export const LOG_IN = "LOG_IN"; // 액션의 이름 export const LOG_IN_SUCCESS = "LOG_IN_SUCCESS"; // 액션의 이름 export const LOG_IN_FAILURE = "LOG_IN_FAILURE"; // 액션의 이름 export const LOG_OUT = "LOG_OUT"; export const signUpAction = (data) => { return { type: SIGN_UP, data, }; }; export const signUpSuccess = { type: SIGN_UP_SUCCESS, }; export const loginAction = (data) => { return { type: LOG_IN, data, }; }; export const logoutAction = { type: LOG_OUT, }; export const signUp = (data) => { return { type: SIGN_UP, data, }; }; export default (state = initialState, action) => { switch (action.type) { case LOG_IN: { return { ...state, isLoggedIn: true, user: dummyUser, loginData: action.data, }; } case LOG_OUT: { return { ...state, isLoggedIn: false, user: null, }; } case SIGN_UP: { return { ...state, signUpData: action.data, }; } default: { return { ...state, }; } } }; pages/_app.jsimport Head from "next/head"; import "../styles/global.css"; import wrapper from "../store/configureStore"; function App({ Component }) { return <Component />; } export default wrapper.withRedux(App); pages/login.js 여기 아랫부분의 필요없는 것 같은 코드는 생략했습니다..! import { useCallback } from "react"; import useInput from "../hooks/useInput"; import { useDispatch, useSelector } from "react-redux"; import { loginAction } from "../reducers/user"; function Login() { const [email, onChangeEmail] = useInput(""); const [password, onChangePassword] = useInput(""); const dispatch = useDispatch(); const onSubmitForm = useCallback(() => { console.log(email, password); dispatch( loginAction({ email, password, }) ); }, [email, password]); return ( <> <div className={style.loginHead}> <Link href="/"> <a> <span> <ImArrowLeft2 size="25" color="gray" /> </span> </a> </Link> <img src={`/`} alt="" /> <span>로그인</span> </div> <div className={style.inputLogin}> <form action="/" encType="multipart/form-data" method="post" onSubmit={onSubmitForm} > <h1>로그인</h1> <label htmlFor="user-email">이메일</label> <br /> <input type="email" name="user-email" value={email} onChange={onChangeEmail} reqired /> <br /> <label htmlFor="user-password">비밀번호</label> <br /> <input name="user-password" type="password" value={password} onChange={onChangePassword} reqired /> <br /> <button type="submit">로그인</button> </form> </div>
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
리눅스 관련 질문_터미널 실행 안됨
강의 영상을 따라가다 보면 강사님 께서는 h2콘솔을 띄우고 다른 작업을 하다가 다시 ls ... cd~ 등 경로를 타고가서 gradlew 를 실행한다든가 하시는데요..왜 저는 h2 콘솔을 한 번 열고나면 그냥 아무 명령어도 먹히지가 않습니다 ㅠㅠ
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
시퀄라이즈 메서드관련 질문
안녕하세요. 제로초님 강의 잘듣고있습니다.강의를 응용하면서 좋아요 순으로 게시글을 가져오는 라우터를 만들고 있습니다.sequelize.literal을 사용해서 여러 시도를 해봤지만 동일하게 컬럼을 알 수 없다고 오류가 발생합니다. order: [[sequelize.literal('COUNT(Likers.id)'), 'DESC']],order: [[Sequelize.literal("(COUNT(`likers->like`.`PostId`))"), "DESC"]],DB는 처음 접해봐서 구글링, 공식문서를 참고해도 도저히 해결하기 힘들어서 질문드리겠습니다.참고자료도 함께 첨부하겠습니다.const express = require('express'); const { Sequelize, Op } = require('sequelize'); const { Post, User, Image, Comment } = require('../models'); const router = express.Router(); router.get('/top', async (req, res, next) => { // loadTopPostsAPI / GET /posts/top try { const posts = await Post.findAll({ limit: 20, offset: 0, // Likers의 갯수로 정렬하려면 조건은 어떻게 해야하나요? order: [[Sequelize.literal("(COUNT(`likers->like`.`PostId`))"), "DESC"]], include: [{ model: User, attributes: ['id', 'nickname'], }, { model: Image, }, { model: Comment, include: [{ model: User, attributes: ['id', 'nickname'], }], }, { model: User, as: 'Likers', attributes: ['id'], }], }) res.status(200).json(posts); } catch (error) { console.error(error); next(error); } });
-
미해결Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"
post 시 id가 6자리문자열로 들어옵니다
{ "title": "자! 새로운 글입니다!", "content": "희망찬 vue3!", "createAt": 1664546739213, "id": "SJ5GpEi" }16:15id 가 6으로 되지 않고 7자리 문자열로 들어오는 이유를 모르겠습니다.createPost.vue에서마지막 id를 추가로 따로 받아서 +1을 하고 그값을 form값에 포함시켜 post하는 방법도 있겠지만,왜 선생님은 id가 저절로 +1되고, 저는 따로 설정해야 하는 이유를 모르겠습니다. 참고) 제 버전"dependencies": { "axios": "^0.27.2", "vue": "^3.2.38", "vue-router": "^4.1.5" }, "devDependencies": { , "json-server": "^0.17.0", "prettier": "^2.7.1", "vite": "^3.0.9" }
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
TextRPG(OOP) #1 질문
TextRPG(OOP) #1의 19:37 부분에서 기본 생성자를 선언해줘야 하지만, Creature(CT_PLAYER)으로 몬스터인지 플레이어인지 확인시켜주신다고 했는데, 이 부분이 어떻게 기본 생성자를 대체할 수 있는지 잘 모르겠습니다..
-
미해결
안녕하세요 영한님.
김영한의 스프링 부트와 JPA 실무 완전 정복 로드맵로드맵 할인 더 이상하지 않는가요~?나중에 구매하려고 했는데 할인기간이 지났나요?대학생 학생 할인 받을 수 있는방법도 혹시 있을까요?
-
미해결3dsmax 초급부터 전문가까지 - 한방에 끝내는 3dsmax 강좌
단축키 자료
단축키 자료가 열리지 않는데 어떤 경로로 열어야 하나요? 워드, PDF 등 다 열리지 않아서요
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요 선생님 서버 scale out 에 대해 질문드리려합니다.
안녕하세요 장고 클라우드 서버로 AWS를 쓰면서 지속적으로 하고 싶었던 기술이 CI CD + AutoScaling을 동시에 도입을 하고 싶었습니다. 기존에 github action과 aws ec2로 자동 배포는 어찌어찌해서 찾아서 해봤는데 결국에는 하나의 서버 인스턴스로만 돌아가기 때문에 나중에 부하 걱정이 되더라고요 그래서 제가 사용하고 싶은 조합은 AWS Autoscaling + AWS Codedeploy + AWS EC2 + AWS Loadbalance + GithubAction을 통해 github에 코드가 push되면 loadbalance 타겟 그룹된 전 인스턴스가 전부 코드 업데이트 되어 배포가 되는것을 생각을 해봤는데, 위 조합으로 제가 생각한 내용이 가능할까요? 제가 codedeploy는 한번도 써보지 않아서 사실 감이 잘안오는데, codedeploy는 github에 코드가 push되지 않더라도 자동으로 autoscaling에서 인스턴스를 생성하면 깃허브 코드가 적용된 서버를 생성하기 위해서 필요할것 같더라고요. 위는 결국 서버를 유연하게 관리하기 위한 제가 생각한 조합이구 제 생각한 위 아키텍처에 문제가 있을까요?(사실 일단 위 아키텍처 직접 구현이 어려울것 같아서 먼저 전문가이신 선생님께 확인을 받고 찾아보려합니다.)보통 기업에서는 어떻게 서버 로드를 유연하게 관리하나요?? 클라우드 관점에서용!(다양한 자료나 서비스 다 좋습니다 !!)쿠버네티스나, ECR, ECS 클러스터를 활용하나요? 궁금적으로 제가 현재 원하는 방식은 비교적 접근성 좋고(쉽고 ㅠㅠ) 혼자서 어느 정도 컨트롤 할만한 서버 아키텍처 구성을 원해서 질문드립니다!! (쿠버네티스는 어렵다고 들어서 선생님강의에서도 ㅠㅠ어렵다고 말씀하시고 ㅎㅎ; 위 방법이 가능성이 있는지 파악하고 나중에 차근차근공부하려합니다)
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
argument resolver로 InputStream만 받을 경우 오류 발생
[질문 내용]@PostMapping("/request-body-string-v2") public void requestBodyStringV2(InputStream inputStream) throws IOException { String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); log.info("messageBody = {}", messageBody); } HTTP 요청 메시지 - 단순 텍스트 강의에서v2를 똑같이 따라서 작성하다가 제가 Writer는 생략하고 inputStream만 받아서 바이트 코드를 String 값으로 변환한 뒤 로그 출력만 하려 했는데 inputStream만 받고 포스트맨으로 v2 url에 post로 요청을 보냈더니 에러가 발생했습니다. 아무리 생각해 봐도 writer를 뺀 것 말고는 다 똑같아서 에러가 날 이유가 없다고 생각했는데, 이상하게 에러가 발생했습니다. 그래서 혹시나 하는 마음에 영상과 완전히 똑같이 Writer를 넣어서 서버를 다시 시작하고 요청을 보냈더니 제대로 작동했습니다.이상한 건, writer 뿐만 아니라 다른 아무 argument resolver에 등록된 객체를 함께 받으면 문제 없이 동작한다는 것이었습니다. 에러 내용을 확인해 보니 타임리프 템플릿 오류인 것 같은데 inputStream이랑 관련이 없어 보여서 어느 부분이 문제인 지 알 수가 없었습니다..ㅠinputStream을 단일로 받으면 문제가 있는 것인 지 질문 남겨봅니다! 밑은 에러 내용입니다.org.thymeleaf.exceptions.TemplateInputException: Error resolving template [request-body-string-v2], template might not exist or might not be accessible by any of the configured Template Resolversat org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:366) ~[thymeleaf-spring5-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:190) ~[thymeleaf-spring5-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1405) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1149) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23]at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23]at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
강의랑 관련은 없지만 파일 업로드 관해서 질문 드립니다.
<div> <Input type="text"/> <Button @click="fileClick('fileUpload')">파일 첨부</Button> <input ref="fileUpload" type="file" class="is-blind" /> </div> methods: { fileClick(target) { this.$refs[target].click(); }, } 커스텀 파일업로드를 작성하려하는데 현재 input type="file"은 숨기고 ref로 연결하여button을 클릭하였을때 input type="text"쪽에 파일명을 넣고싶은데 v-model로 어떻게 접근해야할까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 데이터베이스 이전 테이블 잔존 관련
jpashop 으로 데이터베이스를 만들고, 강의 영상처럼 ls-arlth 로 mv.jpashop 파일이 만들어진 것을 확인했습니다h2 웹 콘솔에서 jdbc:h2:~/jpashop 경로로 접속하면 이전에 JPA 기초 클래스에서 만들어졌던 테이블이 나옵니다무었 때문에 그런걸까요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
random.shuffle 질문
중간에 random.shuffle을 하여 섞어주는 이유가 무엇인가요? 어차피 random.choice를 통해서 무작위로 words 중의 하나를 q에 저장하는 방식일 텐데 굳이 셔플을 해야 하나요? 리스트 섞기 부분을 주석처리하고 여러번 시행해 보았는데, q에는 계속해서 무작위의 [정답, 힌트] 리스트가 저장되었습니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
http메세지 패킷과 웹브라우저 작동원리에 대해 질문있습니다.
먼저 좋은 강의 감사드립니다!많은데이터를 패킷으로 쪼개서 전송한다고 설명해주셨는데HTTP 메세지를 패킷으로 잘게 쪼개서 각 패킷별로 캡슐화가 이루어진 후에 전송이 되는걸까요?! 웹브라우저 작동원리에 대해 여러가지 찾아보고 있는데 정확히 http 메세지가 어느시점에 생성되는지 나온 정보가 많이 없더라고요이번 강의에서 영한님이 DNS레코드 조회후 IP를 찾은 후에 HTTP메세지를 생성한다고 하셨는데 제가 이해한게 맞을까요?!
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
안녕하세요 강사님. CI/CD 작업을 위한 Tomcat 서버 연동에서 오류에 대해 질문하고 싶습니다.
강의 내용대로 jenkins는 container를 사용하여 띄웠고, tomcat 설치는 section8의 tomcat 설정법 그대로 따라하였습니다. 그러나 계속 "Build step 'Deploy war/ear to a container' marked build as failure" 라는 Console output결과가 확인 되며 배포가 되지 않습니다.. tomcat의 주소는 127.0.0.1:8088로 설정하였습니다. 아래는 console output 전문입니다. Started by user 박재범 Running as SYSTEM Building in workspace /var/jenkins_home/workspace/my-third-project The recommended git tool is: NONE No credentials specified Cloning the remote Git repository Cloning repository https://github.com/joneconsulting/cicd-web-project > git init /var/jenkins_home/workspace/my-third-project # timeout=10 Fetching upstream changes from https://github.com/joneconsulting/cicd-web-project > git --version # timeout=10 > git --version # 'git version 2.30.2' > git fetch --tags --force --progress -- https://github.com/joneconsulting/cicd-web-project +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url https://github.com/joneconsulting/cicd-web-project # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 Avoid second fetch > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 Checking out Revision 73ccc1c190255fc0bcc6cc55d777bfc4a98b44ee (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 73ccc1c190255fc0bcc6cc55d777bfc4a98b44ee # timeout=10 Commit message: "changed the index.jsp file" First time build. Skipping changelog. Parsing POMs Discovered a new module com.njonecompany.web:web cicd-web-project maven webapp Modules changed, recalculating dependency graph Established TCP socket on 36461 [my-third-project] $ java -cp /var/jenkins_home/plugins/maven-plugin/WEB-INF/lib/maven35-agent-1.13.jar:/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.8.6/boot/plexus-classworlds-2.6.0.jar:/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.8.6/conf/logging jenkins.maven3.agent.Maven35Main /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.8.6 /var/jenkins_home/war/WEB-INF/lib/remoting-3044.vb_940a_a_e4f72e.jar /var/jenkins_home/plugins/maven-plugin/WEB-INF/lib/maven35-interceptor-1.13.jar /var/jenkins_home/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.13.jar 36461 <===[JENKINS REMOTING CAPACITY]===>channel started Executing Maven: -B -f /var/jenkins_home/workspace/my-third-project/pom.xml clean compile package [INFO] Scanning for projects... [INFO] [INFO] ----------------------< com.njonecompany.web:web >---------------------- [INFO] Building cicd-web-project maven webapp 1.0 [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ web --- [INFO] Deleting /var/jenkins_home/workspace/my-third-project/target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ web --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ web --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 3 source files to /var/jenkins_home/workspace/my-third-project/target/classes [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ web --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ web --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ web --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /var/jenkins_home/workspace/my-third-project/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ web --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 1 source file to /var/jenkins_home/workspace/my-third-project/target/test-classes [INFO] [INFO] --- maven-surefire-plugin:2.22.0:test (default-test) @ web --- [INFO] [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running com.njonecompany.web.TestWelcome 09:12:19,302 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 09:12:19,302 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 09:12:19,302 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/var/jenkins_home/workspace/my-third-project/target/classes/logback.xml] 09:12:19,338 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 09:12:19,338 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 09:12:19,341 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT] 09:12:19,364 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - This appender no longer admits a layout as a sub-component, set an encoder instead. 09:12:19,364 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder. 09:12:19,364 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details 09:12:19,364 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.njonecompany.web] to DEBUG 09:12:19,364 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [com.njonecompany.web] to false 09:12:19,364 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[com.njonecompany.web] 09:12:19,364 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to ERROR 09:12:19,364 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT] 09:12:19,365 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 09:12:19,365 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@6e2aa843 - Registering current configuration as safe fallback point 2022-09-30 09:12:19 [main] DEBUG c.n.web.controller.WelcomeController - Welcome to njonecompany.com... Fri Sep 30 09:12:19 UTC 2022 MockHttpServletRequest: HTTP Method = GET Request URI = / Parameters = {} Headers = [] Body = <no character encoding set> Session Attrs = {} Handler: Type = com.njonecompany.web.controller.WelcomeController Method = com.njonecompany.web.controller.WelcomeController#index(Model) Async: Async started = false Async result = null Resolved Exception: Type = null ModelAndView: View name = index View = null Attribute = msg value = Hi, there Attribute = today value = Fri Sep 30 09:12:19 UTC 2022 FlashMap: Attributes = null MockHttpServletResponse: Status = 200 Error message = null Headers = [Content-Language:"en"] Content type = null Body = Forwarded URL = /WEB-INF/views/index.jsp Redirected URL = null Cookies = [] [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.451 s - in com.njonecompany.web.TestWelcome [INFO] [INFO] Results: [INFO] [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [JENKINS] Recording test results [INFO] [INFO] --- maven-war-plugin:3.2.2:war (default-war) @ web --- [INFO] Packaging webapp [INFO] Assembling webapp [web] in [/var/jenkins_home/workspace/my-third-project/target/hello-world] [INFO] Processing war project [INFO] Copying webapp resources [/var/jenkins_home/workspace/my-third-project/src/main/webapp] [INFO] Webapp assembled in [21 msecs] [INFO] Building war: /var/jenkins_home/workspace/my-third-project/target/hello-world.war [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.679 s [INFO] Finished at: 2022-09-30T09:12:21Z [INFO] ------------------------------------------------------------------------ Waiting for Jenkins to finish collecting data [JENKINS] Archiving /var/jenkins_home/workspace/my-third-project/pom.xml to com.njonecompany.web/web/1.0/web-1.0.pom [JENKINS] Archiving /var/jenkins_home/workspace/my-third-project/target/hello-world.war to com.njonecompany.web/web/1.0/web-1.0.war [DeployPublisher][INFO] Attempting to deploy 1 war file(s) [DeployPublisher][INFO] Deploying /var/jenkins_home/workspace/my-third-project/target/hello-world.war to container Tomcat 9.x Remote with context null ERROR: Build step failed with exception org.codehaus.cargo.container.ContainerException: Failed to redeploy [/var/jenkins_home/workspace/my-third-project/target/hello-world.war] at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:176) at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136) at hudson.FilePath.act(FilePath.java:1192) at hudson.FilePath.act(FilePath.java:1175) at hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133) at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95) at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113) at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:816) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:765) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:709) at hudson.model.Run.execute(Run.java:1924) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:107) at hudson.model.Executor.run(Executor.java:449) Caused by: java.net.ConnectException: Connection refused (Connection refused) at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412) at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255) at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237) at java.base/java.net.Socket.connect(Socket.java:609) at java.base/java.net.Socket.connect(Socket.java:558) at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:508) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:603) at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:276) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:375) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:396) at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1253) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1187) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081) at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1015) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:567) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161) ... 19 more java.net.ConnectException: Connection refused (Connection refused) at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412) at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255) at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237) at java.base/java.net.Socket.connect(Socket.java:609) at java.base/java.net.Socket.connect(Socket.java:558) at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:508) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:603) at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:276) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:375) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:396) at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1253) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1187) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081) at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1015) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:567) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161) at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136) at hudson.FilePath.act(FilePath.java:1192) at hudson.FilePath.act(FilePath.java:1175) at hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133) at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95) at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113) at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:816) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:765) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:709) at hudson.model.Run.execute(Run.java:1924) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:107) at hudson.model.Executor.run(Executor.java:449) Build step 'Deploy war/ear to a container' marked build as failure Finished: FAILURE 도움 주시면 정말 감사하겠습니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2데이터베이스 설치관련 질문
윈도우 운영체제 사용중인데 어떤거를 다운받아야하나요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 송부 요청
올라가 있는 강의자료가 모두 깨져서 보입니다.따로 메일로 부탁드릴게요 hjkinu@naver.com 감사합니다.
-
미해결
docker-compose up error
docker-compose up 할 때 (venv) $ docker-compose upRecreating django_project_web_1 ... doneAttaching to django_project_web_1web_1 | Traceback (most recent call last):web_1 | File "manage.py", line 11, in mainweb_1 | from django.core.management import execute_from_command_lineweb_1 | ModuleNotFoundError: No module named 'django'web_1 |web_1 | The above exception was the direct cause of the following exception:web_1 |web_1 | Traceback (most recent call last):web_1 | File "manage.py", line 22, in <module>web_1 | main()web_1 | File "manage.py", line 13, in mainweb_1 | raise ImportError(web_1 | ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?ERROR: Windows named pipe error: 파이프가 끝났습니다. (code: 109) 이런 에러가 발생합니다. 어떻게 해결할 수 있을까요?