묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 고급편
강의교재 내용 질문드립니다.
4. 프록시 패턴과 데코레이터 패턴 pdf p.7에 보면 아래와 같은 내용이 나옵니다. @Configuration 은 내부에 @Component 애노테이션을 포함하고 있어서 컴포넌트 스캔의 대상이 된다. 따라서 컴포넌트 스캔에 의해 hello.proxy.config 위치의 설정 파일들이 스프링 빈으로 자동 등록 되지 않도록 컴포넌스 스캔의 시작 위치를 scanBasePackages=hello.proxy.app 로 설정해야 한다. 위의 내용이 AppV1Config.java를 @Configuration을 붙였는데 @Configuration 안에는 Component가 있어서 자동으로 스프링 빈 등록이 되므로 이걸 막기 위해 scanBasePackages=hello.proxy.app 설정을 해준다. 즉 AppV1Config를 빈 등록을 막기위해 한다는 뜻인가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
제가 이해한부분이 맞는지 궁금합니다 오른값, 최적화
프로그래밍을 할때는 안전하게 할 수 밖에없는데 안전을 위해 인수로 받은 값을 함부러 할수가 없었죠. 예를들어 들어온 인수를 멋대로 nullptr로 바꿨다가 밖에서 접근하려 하면 크래시가 날테니 말이죠. 그 인수가 오른값인지 아닌지 판별할 방법이 없었으니까요 . 그래서 c++11이전에는 항상 깊은복사로 사용해 오던 많은 함수들이 넘겨받은 인자가 오른값의 경우에는 깊은복사로 동작할 필요가 없어지고 단순히 포인터만 넘겨받는식의 얕은복사로 작동하게 만들 수 있게 되면서 속도가 빨라질 수 있어졌다. 프로그래밍할때 '만약'을 위해 희생된 속도를 다시 올려줄 수 있게 됐다. 또 오른값이라는 개념으로 인해 template이나 auto같이 형식을 연역하는 부분에 있어 오른값이라는 새롭게 구분해야하는게 생겼는데 이걸 오른값전용 rvalue_template같은식으로 따로 만들지 않고 조건에 따라서는 한번에 만들 수 있게 해주고 들어온 값이 오른값인지를 std::forward() 의 반환값으로 오른값/왼값을 반환해서 판별할 수 있게 해줬다. 여기서 오른값인지 왼값인지 전달해 주는게 전달참조 라고 이해했는데 혹시 잘못된 부분이 있을까요?
-
미해결캐글 Advanced 머신러닝 실전 박치기
질문드립니다.
한쪽으로 데이터가 너무 스큐되어 있어서 cond_amt=df[column]<500000 이렇게 필터링 해주었는데 만약 500000이상일때 중요한 데이터가 있어서 학습 못시키는 경우도 있는가요??
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
안녕하세요. ADC 문의드립니다.
안녕하세요. 좋은 강의 감사합니다. 저는 BLDC모터 구동을 위해서 전류센싱회로의 션트저항 전압을 ADC로 읽으려고 하는데요. ADC 결과 값에서 노이즈가 많이 포함되어 있어서, 굉장히 난감합니다. 외부에서 PWM 스위칭이 동작할 때, 더 심해지는데요. 음.. 혹시 원래 이런 경우 ADC값에 노이즈가 많이 끼는지.. 그리고 해결할 방법을 혹시 알고 계신지 궁금합니다.
-
해결됨탄탄한 백엔드 NestJS, 기초부터 심화까지
import * as express 질문
안녕하세요, 강의를 듣다 궁금한 점이 생겨 문의 남깁니다. 제가 예전에 듣던 express 강좌에서는 const express = require("express");를 사용했었는데 강사님 강좌는 import * as express from 'express';로 위의 코드가 대체(?)된 것 같아서요. 혹시 두 코드의 차이점이 있을까요? 전자는 js를 사용하고 후자는 ts를 사용해서 차이가 있는 걸까요? 강의 잘 듣고 있습니다. 감사합니다.
-
미해결차량 번호판 인식 프로젝트와 TensorFlow로 배우는 딥러닝 영상인식 올인원
전반부 강의 자료가 강의 내용를 모두 포함을 하고 있지 않고 있습니다.
이제 막 강의를 구입을 해서 강의를 듣고 있는데요 강의 내용과 커리큘럼은 좋으나 공유 주신 전반부 강의 자료가 강의 영상에 나오는 모든 페이지를 포함 하지 않고 강의 자료 파일 명과 각 강의영상의 제목과 부분만 일치를 해서 학습에 어려움을 느끼고 있습니다. 혹시 후반부 강의 자료도 이와 비슷 한지요? 영상에 나오는 전체 강의자료를 공유 주실수 있으신지 확인 부탁드립니다.
-
미해결ESXi 가상 인프라 구축과 보안 솔루션을 활용한 이상징후 탐지 모니터링
리눅스 민트 Please remove ....ENTER: 창에서
이화면에서 엔터누르면 다음으로 넘어가야되는데 계속 로딩중인건 왜그럴까요? 20분가까이 로딩중인데 엔터키는 분명눌렀구요 그창에서 변하는것없이 로딩중이네요.. 그래서 다시 설치해봤는데도 마찬가지네요 더 기다려봐야할까요???
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
helloMvc 파리미터 설정질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. url : localhost:8080/hello-mvc?name=spring이면 name에 spring이 저장되는건 이해가 가는데 이 name은 value에 저장되는건지 변수 name에 저장이 되는건지 궁금해서 질문드립니다.
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
클로저 부분 질문입니다.
안녕하세요? 현재 파이썬 Level2 강의 중 파이썬 일급함수챕터 중 클로저 부분을 수강중입니다. 좀 찾아보면서 헷갈리는 개념이 있어서 질문드립니다. 1. 선생님 강의 + 좀 더 찾아보니 파이썬에는 global / nonlocal / local 영역이 있더군요. 전역변수의 값은 일반적으로 메모리에 보존되는 반면 나머지 nonlocal이나 local 변수들은 함수가 종료되면 변수가 삭제되는게 일반적인 법칙입니다. 하지만 클로저는 그러한 일반적 법칙의 한계를 넘어서 함수가 종료되어도 nonlocal / local 값들을 계속해서 기억하고 있다 고 스스로 정리했는데, 혹시 이게 정확하게 맞는지 알고싶습니다. 2. 선생님의 클로저와 강의 중 클래스를 사용하여 클로저와 비슷하게 구현하신 내용이 있습니다 요부분 인데요, 이 클래스를 활용해서 인스턴스를 생성하고 계속해서 호출을 했을 때 값이 소멸하지 않고 유지되더군요. 그 이유가 궁금합니다. self._series도 전역/지역변수를 공부하고나서 보니까 지역변수에 해당하는 것 같은데 지워지지 않는게 이상하게 느껴져서요. 아니면 혹시 클래스에 의해 만들어진 객체의 모든 값들(self._series 같은 것들도)은 객체가 유지되는 한 함께 보존되는 것인가요? 그래서 마치 클로저 같은 역할을 하는 것인지 궁금합니다.(쓰다보니 그런것같기도하네요 ㅋㅋㅋ..) 3. 마지막으로 nonlocal에 관해서입니다. 1) 2) 1)에는 자유변수로 리스트를 선언했고, 2)에서는 자유변수로 그냥 변수(total같은 것들)를 선언했는데요 2)의 경우에 nonlocal을 붙여주더라구요 이거랑 비슷한 질문을 하신분들이 계셔서 그 답변들을 좀 찾아보면서 좀 정리를 했는데요, 제가 이해한 부분이 맞는지 확인을 받을 수 있을까요? 생소한 개념들이 막튀어 나오다보니까 혼자 정리를 하고서도 맞는지를 모르겠습니다 ㅠㅠ A : - 파이썬은 일반적으로 local영역을 넘어서는 다른 영역의 변수에 대해서는 읽거나 참조를 할 뿐, 수정이나 새로이 할당을 하는 것이 제한한다. 더 자세히 말하면, 제한하기 위하여 별다른 선언(nonlocal, global)등이 없으면 무조건 local영역내의 변수에 관한것이라고 전제한다. - 리스트나 dict의 경우 mutable하며 요소를 추가해주거나(특히 append를 활용하여) 할때 메모리 주소가 바뀌지 않음. 즉 읽거나 참조하는 것이므로 이러한 과정은 허용 -하지만 일반적인 변수는 immutbale하므로 값을 변환해주었을 경우 ID값이 교체되며 완전히 새로운 값이 되며 이는 허용된 권한을 넘는 것 -이에따라 파이썬은 새로이 수정되는 변수가 무조건 local영역내의 변수라고 전제함. -파이썬의 이러한 전제를 제거(?)하기위해 nonlocal을 선언해줘서, nonlocal영역에 위치한 변수를 내부 변수(여기선 averager)에서 사용할 수 있게 함 다적고 보니.. 질문이 너무 많네요 좋은 강의에 감사드립니다.
-
미해결iOS/Android 앱 개발을 위한 실전 React Native - Intermediate
클래스형 함수형 질문있습니다
리액트네이티브에서는 이제 함수형이 더욱 좋아 함수형을 쓰는것으로 알고있었는데 클래스형을 쓰는 부분도 보이네요 그 이유가 따로 있을까요? 강의 보는중 componets/auth/index.js 부분에서 클래스형을 사용하셔서 질문남깁니다
-
미해결스프링 핵심 원리 - 기본편
혹시 PDF 에 수정자 주입 방식 오타가 난건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. PDF 에 112 페이지 수정자 자동 주입 예시 @Autowired public DiscountPolicy setDiscountPolicy(@Qualifier("mainDiscountPolicy") DiscountPolicy discountPolicy) { return discountPolicy; } 113 페이지 //수정자 @Autowired public DiscountPolicy setDiscountPolicy(DiscountPolicy discountPolicy) { return discountPolicy; } 이렇게 올라왔는데 이게 맞나요? 이건 getter 아닌가요? setter 은 public void DiscountPolicy setDiscountPolicy(DiscountPolicy discountPolicy) { this.discountPolicy = discountPolicy; } 와 같이 되어야 하는거 아닌가요? 오타인거 같긴 합니다만 혹시 몰라 물어봅니다.
-
해결됨따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
'Fail to sign up'이 뜹니다 ㅠㅠ
postman으로 post를 해봤을때도 그렇고 회원가입 버튼을 눌러도 작동이 되지 않고 'Fail to sign up'만 뜹니다. mongodb에서 collections 확인해봤는데 도착한 게 없는거로 봐서는 post 자체가 안 되는 것 같은데 어떻게 해야할 까요?? 코드는 변수명이나 디렉토리 이름정도 빼고는 강의랑 똑같이 한 거 같습니다. 엣지 검사기능에서 콘솔열어보면 아래처럼 오류가 떠요. Uncaught (in promise) Error: Request failed with status code 500 at createError (createError.js:16) at settle (settle.js:17) at XMLHttpRequest.onloadend (xhr.js:66) createError @ createError.js:16 settle @ settle.js:17 onloadend @ xhr.js:66 Promise.then(비동기) (익명) @ auth.js:10 invokePassiveEffectCreate @ react-dom.development.js:23487 callCallback @ react-dom.development.js:3945 invokeGuardedCallbackDev @ react-dom.development.js:3994 invokeGuardedCallback @ react-dom.development.js:4056 flushPassiveEffectsImpl @ react-dom.development.js:23574 unstable_runWithPriority @ scheduler.development.js:468 runWithPriority$1 @ react-dom.development.js:11276 flushPassiveEffects @ react-dom.development.js:23447 (익명) @ react-dom.development.js:23324 workLoop @ scheduler.development.js:417 flushWork @ scheduler.development.js:390 performWorkUntilDeadline @ scheduler.development.js:157 GET http://localhost:3000/api/user/auth 500 (Internal Server Error) dispatchXhrRequest @ xhr.js:210 xhrAdapter @ xhr.js:15 dispatchRequest @ dispatchRequest.js:58 request @ Axios.js:108 Axios.<computed> @ Axios.js:129 wrap @ bind.js:9 auth @ user_action.js:23 (익명) @ auth.js:10 invokePassiveEffectCreate @ react-dom.development.js:23487 callCallback @ react-dom.development.js:3945 invokeGuardedCallbackDev @ react-dom.development.js:3994 invokeGuardedCallback @ react-dom.development.js:4056 flushPassiveEffectsImpl @ react-dom.development.js:23574 unstable_runWithPriority @ scheduler.development.js:468 runWithPriority$1 @ react-dom.development.js:11276 flushPassiveEffects @ react-dom.development.js:23447 (익명) @ react-dom.development.js:23324 workLoop @ scheduler.development.js:417 flushWork @ scheduler.development.js:390 performWorkUntilDeadline @ scheduler.development.js:157 그리고 콘솔에는 아래처럼 오류가 뜹니다. TypeError: Cannot read property 'findByToken' of undefined [0] at auth (C:\Users\이상호\Downloads\Code\Web\Nodejs_Project\backend\auth.js:5:10) [0] at Layer.handle [as handle_request] (C:\Users\이상호\Downloads\Code\Web\Nodejs_Project\node_modules\express\lib\router\layer.js:95:5) [0] at next (C:\Users\이상호\Downloads\Code\Web\Nodejs_Project\node_modules\express\lib\router\route.js:137:13) [0] at Route.dispatch (C:\Users\이상호\Downloads\Code\Web\Nodejs_Project\node_modules\express\lib\router\route.js:112:3) [0] at Layer.handle [as handle_request] (C:\Users\이상호\Downloads\Code\Web\Nodejs_Project\node_modules\express\lib\router\layer.js:95:5) [0] at C:\Users\이상호\Downloads\Code\Web\Nodejs_Project\node_modules\express\lib\router\index.js:281:22 [0] at Function.process_params (C:\Users\이상호\Downloads\Code\Web\Nodejs_Project\node_modules\express\lib\router\index.js:341:12) [0] at next (C:\Users\이상호\Downloads\Code\Web\Nodejs_Project\node_modules\express\lib\router\index.js:275:10) [0] at cookieParser (C:\Users\이상호\Downloads\Code\Web\Nodejs_Project\node_modules\cookie-parser\index.js:57:14) [0] at Layer.handle [as handle_request] (C:\Users\이상호\Downloads\Code\Web\Nodejs_Project\node_modules\express\lib\router\layer.js:95:5) 아래는 깃허브입니다. InhaULSH/Web (github.com)
-
미해결스프링 핵심 원리 - 기본편
강의 듣고 따로 공부하고 있는데 DIP와 리팩터링 관련 제가 학습한 지식이 맞는 걸까요?
스프링 부트 : DIP(의존 관계 역전 원칙) public class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } MemberServiceImpl을 보면 private final MemberRepository memberRepository = new MemoryMemberRepository(); 를 통해 추상화와 구현체를 관리하고 있다. 만약 요구사항 변경으로 새로운 구현체로 변경해 줘야 한다면 = new MemoryMemberRepository(); 이 부분에 대한 수정이 필요해진다. MemberServiceImpl에서 추상화를 통해 구현체를 관리하고 구현체에 대한 변경이 있을 때 인터페이스를 통해서만 구현체를 변경할 수 있어야 하는데 지금 보면 인터페이스가 아닌 MemberServiceImpl에서 코드 수정이 일어난다. 결국 지금 이 코드는 객체 지향 5가지 원칙 중 DIP*(Dependency Inversion Principle | 의존 관계 역전 원칙)*에 위반된다. public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository()); } } 해결을 위해 AppConfig 클래스를 만들어 이런 구현체들을 관리해 준다. 생성과 연결을 담당한다. return new MemberServiceImpl(new MemoryMemberRepository()); 코드로 구현 객체를 생성한다. 간단히 해석하자면 “MemberServiceImpl을 만들고 내가 만든 MemberServiceImpl은 MemoryMemberRepository를 사용할거야.!” 와 같이 해석할 수 있다. public class MemberServiceImpl implements MemberService {ㅗ private final MemberRepository memberRepository; public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } 생성자를 통해 받아준다. 이렇게 따로 설정 클래스에서 구현체를 받아 생성자를 통해 추상화와 구체화를 분리해 주는 것을 생성자 주입이라고 한다. AppConfig 클래스에서는 결국 실제 동작에 필요한 구현 객체를 생성하게 된다. AppConfig 클래스는 생성한 객체 인스턴스의 참조(레퍼런스)를 생성자를 통해 주입(연결)해준다. 결국 AppConfig 객체는 객체를 생성하고 생성한 객체를 생성자로 전달하는 행위를 하게 되고 이런 행위를 DI(Dependency Injection)라고 한다.( 의존관계 주입) 결과적으로는 MemberServiceImpl 클래스는 인터페이스에만 의존하게 되고 구체적인 구현 클래스에 대해 전혀 의존하지 않게 되므로 DIP를 잘 지키는 코드가 된다. MemberService memberService; @BeforeEach public void beforEach() { AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService(); } //MemberService memberService = new MemberServiceImpl(memberRepository); @BeforeEach 는 각 테스트를 실행하기 전에 무조건 실행시켜준다. 마지막으로 테스트 코드 또한 바꿔주고 테스트 전체 실행을 해주면 성공적으로 DIP 보안을 마치게 된다. 코드 리팩터링 public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository()); } } 이 코드는 객체 안에서 new를 통해 특정 객체를 직접 생성하고 있다. 이러면 문제가 중복이 생긴다. 예를 들면 MemberServiceImpl과 OrderServiceImpl에서 MemoryMemberRepository를 사용하기 위해 각각 위 코드처럼 (new MemoryMemberRepository()); 이렇게 따로 생성해 줘야 하기 때문에 이 자체를 중복이라고 본다. public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } private MemoryMemberRepository memberRepository() { return new MemoryMemberRepository(); } } 리팩터링 후에는 memberRepository()에 new MemoryMemberRepository()를 생성하고 MemberServiceImpl과 코드엔 없지만 OrderServiceImpl에서 따로 new를 통해 생성하지 않고 memberRepository()를 통해 객체를 생성한 것을 불러와 사용하게 되어 전체적으로 객체 생성 행위는 줄어든 것이므로 중복을 피했다보고 이러면 DIP에 이어 OCP도 만족하게 된다. DIP / OCP 참고 DIP 의존 관계 역전 원칙 구체적인 것이 추상화에 의존해야 한다. 고차원 모듈은 저차원 모듈에 의존하면 안 되고 추상화된 것에 의존해야 한다. OCP 개방 - 폐쇄 원칙 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다. 확장에 대해 열려 있어야 하고 수정에 대해 닫혀 있어야 한다. 제어의 역전 예를 들면 JUnit이 있다. 테스트 코드를 작성하면 JUnit에서 로직은 코딩했지만 실행과 제어에 대한 권한은 JUnit이라는 Test Framework이가져가 이것을 대신 실행해 준다. 자신만의 Life Cycle 속에서 규칙을 통해(@BeforeEach를 먼저 실행하고 @Test를 실행한다. 등) 내가 작성한 코드를 Call back식으로 불러지게 된다. 내가 코드만 개발하면 프레임워크에서 딱 필요에 따라 적절하게 호출하는 것, 호출하는 제어권을 넘기는 것을 제어의 역전이라고 한다. 라이브러리 내가 작성한 코드가 직접 제어의 흐름을 담당하면 라이브러리이다. 자바 객체를 직접 xml이나 json으로 바꾼다면 이것은 라이브러리이다.
-
미해결스프링 부트 개념과 활용
안녕하세요 기선님 서블릿 어플리케이션 구조에 대해 질문드립니다
이전에 기선님 강의인 스프링 웹 MVC를 수강하고 스프링 부트를 수강중입니다. MVC 강의에서는 스프링 부트 없이 진행했던 터라 궁금증이 생겨 질문 드립니다. (사진 첨부가 되지 않아 사진 URL을 등록했습니다.) 기존 MVC방식에서 서블릿 프로그램에서 스프링의 기능을 붙여가며 학습을 했을때 제가 생각한 이미지는 이러한 이미지 였는데요 스프링 부트를 적용해도 이와 동일한 이미지로 이해하면 될까요? 제가 선생님 강의를 듣고 이해하기로는 스프링 컨테이너와 서블릿 컨테이너는 별개이고, 컨텍스트 로드 리스너에 의해 Controller, ViewResolver, HandlerMapping과 같은 '빈'들은 root ApplicationContext에 접근 가능한 ServletContext에 등록이 되고 Service, Repository와 같은 빈들은 root ApplicationContext에 등록이 된다고 생각했는데요 맞는지 궁금합니다. 또 하나 질문을 드리자면 서블릿 컨텍스트는 톰캣에 의해 생성이 되어지는데 ApplicationContext는 DispatcherServlet을 통해 인스턴스화 된다 라는 내용을 봐서 그럼 스프링 IoC컨테이너를 서블릿 컨텍스트가 로드하는건가..? 라는 생각을 했는데 혹시 맞을까요? 질문이 길어서 죄송합니다. 좋은 강의 내주셔서 학습에 큰 도움이 되고있습니다 🙏
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
app.use와 req.url
안녕하세요 조현영님 이번에는 req.url과 app.use의 관계에 대해서 질문해봅니다. app.use("/test", (req, res, next) => { if (req.method === "GET") { console.log(`${req.url} 디렉터리에 ${req.method}요청이 들어왔습니다!`); next(); } else if (req.method === "POST") { console.log(`${req.url} 디렉터리에 ${req.method}요청이 들어왔습니다!`); next(); } else if (req.method === "PUT") { console.log(`${req.url} 디렉터리에 ${req.method}요청이 들어왔습니다!`); next(); } }); app.route("/test") .get((req, res) => { res.send("Hello get request!"); console.log(req.url); }) .post((req, res) => { res.send("Hello post request!"); console.log(req.url); }) .put((req, res) => { res.send("Hello put request!"); console.log(req.url); }); app.use("/test", ...) 미들웨어로 "/test" 요청이 발생할 때마다 req.url , req.method 객체를 사용해서 요청받은 주소 그리고 요청 메서드 형태를 출력하는 분기문을 만들었습니다. 그리고 밑에는 app.route("/test", ...) 미들웨어로 "/test"에 대한 get,post,put 메서드를 나누었습니다. 그런데 app.use()에서 req.url을 출력할때 /test가 아닌 /가 출력됩니다. /test로 출력하게 하려면 어떻게 해야 하나요?
-
미해결시스템엔지니어가 알려주는 리눅스 기초편 Bash Shell Script
분명 파일이 있는데 계속 -bash: cd: /root/SHELL: No such file or directory 라고 뜹니다
ls를 해보니 work 랑 shell 파일이 없는데 여기서 어떻게 해야될까요? 사용자 파일에는 있는데 cent1에서는 왜 파일이 없다고 뜰까요..
-
미해결비전공자를 위한 개발자 취업 올인원 가이드 [취업편]
팀프로젝트링크는 어떻게 걸어야 할까요?
선생님 질문 하나 더 드립니다ㅜㅜ 팀프로젝트를 했을 때 저장소를 제 깃헙에 생성하고, 팀원을 초대하여 코드를 올렸었습니다. 이 때는 팀원들과 함께한 그 리포지토리에 링크를 걸어야하나요? 그렇다면 코드링크 거는 건 팀원들의 깃헙에도 적용이 되나요? 그것이 아니라면 따로 리포지토리를 하나 더 생성해서 프로젝트를 복사한 후에 제 포트폴리오에 맞게 코드링크도 걸고 해야하나요????
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
현재 오류 질문드립니다 , connect error?.
=========에러 내용입니다================= 1월 03, 2022 4:40:34 오후 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: Connection is broken: "java.net.SocketTimeoutException: connect timed out: localhost" [90067-199] Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:179) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:119) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:904) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:935) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at hellojpa.JpaMain.main(JpaMain.java:11) Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:48) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:118) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:41) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.addConnections(DriverManagerConnectionProviderImpl.java:363) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:282) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:260) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections$Builder.build(DriverManagerConnectionProviderImpl.java:401) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:112) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:75) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:100) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:246) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:94) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ... 14 more Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.SocketTimeoutException: connect timed out: localhost" [90067-199] at org.h2.message.DbException.getJdbcSQLException(DbException.java:617) at org.h2.message.DbException.getJdbcSQLException(DbException.java:427) at org.h2.message.DbException.get(DbException.java:194) at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:435) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:317) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:169) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:148) at org.h2.Driver.connect(Driver.java:69) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38) ... 29 more Caused by: java.net.SocketTimeoutException: connect timed out at java.base/java.net.PlainSocketImpl.waitForConnect(Native Method) at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:107) at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.base/java.net.Socket.connect(Socket.java:608) at org.h2.util.NetUtils.createSocket(NetUtils.java:103) at org.h2.util.NetUtils.createSocket(NetUtils.java:83) at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:115) at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:431) ... 34 more Process finished with exit code 1 =============================== ===========현재소스입니다=============== package hellojpa;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.EntityTransaction;import javax.persistence.Persistence;import java.util.List;public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { //비영속 Member member = new Member(); member.setName("HelloJpa"); member.setId(101L); //영속 em.persist하면 db에 바로 날아가는 것이 아니라 영속성 컨텍스트안에 영속성으로 된다 //현재 1차 캐쉬에 저장되어있다 System.out.println("=========BEFORE ======"); em.persist(member); System.out.println("========AFTER========"); //영속성 컨택스트는 한 트랙젝션 단위로 이루어지기에 순간의 찰나에 따라서 변화한다 Member findMember = em.find(Member.class, 101L); tx.commit(); }catch (Exception e) { tx.rollback(); }finally { em.close(); } emf.close(); }} ============================ ===========메이븐 파일입니다============= <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jpa-basic</groupId> <artifactId>ex1-hello-jpa</artifactId> <version>1.0.0</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency> <!-- JPA 하이버네이트 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.3.10.Final</version> </dependency> <!-- H2 데이터베이스 --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.199</version> </dependency> </dependencies> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties></project> 현재 connect 에러라고 발생하는데 왜 이런지 모르겠습니다. 소스는 동일 한 것같습니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한 요청합니다
인프런 아이디 : rladlsvy2448@naver.com 인프런 이메일 : rladlsvy2448@naver.com 깃헙 아이디 : rladlsvy2448@naver.com 깃헙 Username : kiminpyo
-
미해결비전공자를 위한 개발자 취업 올인원 가이드 [취업편]
프로젝트 목록 작성할 때 질문드립니다.
선생님! 얼마전 국비 학원 수료한 비전공자 입니다! 프로젝트 목록 작성할 때 학원에서 배웠던 MVC1모델로 만든 프로젝트도 추가해도 될지 고민 되어 질문 드립니다ㅜㅜ 파이널 프로젝트는 스프링부트를 사용하여 MVC2모델로 진행했는데, 세미프로젝트는 JSP 스트립틀릿 문법을 사용해서 만들었었습니다. 나중에 되어서야 이 코드는 요즘 쓰여지지 않는 코드라는 것을 알게되었습니다. 이런 코드로 만든 프로젝트라도 추가하는 것이 좋을까요??