묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Error creating bean EntityManagerFactory define in class 오류가 나옵니다.
build.gradle에 org.javassist를 추가해봤는데 서버 실행이 되지 않습니다. 꼭 알려주세요.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
회원 가입 리팩토링 및 테스트 영상 질문입니다.
@DisplayName("회원 가입 처리 - 입력값 정상") @Test void signUpSubmit_with_correct_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "keesun") .param("email", "email@gmail.com") .param("password", "12345678") .with(csrf())) .andExpect(status().is3xxRedirection()) .andExpect(view().name("redirect:/")); assertTrue(accountRepository.existsByEmail("email@gmail.com")); BDDMockito.then(JavaMailSender).should().send(any(SimpleMailMessage.class)); } 회원 가입 처리 - 입력값 정상 테스트의 마지막줄인 BDDMockito.then(JavaMailSender).should().send(any(SimpleMailMessage.class)); 쪽이 인식을 못하고 빨간줄을 내보냅니다. 영상에서는 then(JavaMailSender).should().send(any(SimpleMailMessage.class)); 코드인데 then 앞에 BDDMockito.를 선언 안하면 아예 인식을 못하더군요. BDDMockito를 사용하여 then을 인식시키면 에러가 뜹니다. .send(any(SimpleMailMessage.class)); 센드쪽에서 any들어가는걸 인식 못하는것 같은데 junit을 써본적이 없어서 이부분을 잘 모르겠습니다. 어디가 잘못 된건지 알 수 있을까요??? spring boot version 2.4.2 입니다. java 11입니다. ======================================================================================= package com.studyolle; import static org.hamcrest.CoreMatchers.any; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; import javax.mail.internet.MimeMessage; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.mockito.BDDMockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.test.web.servlet.MockMvc; import com.studyolle.account.AccountRepository; @SpringBootTest @AutoConfigureMockMvc class AppTests { @Autowired private MockMvc mockMvc; @Autowired private AccountRepository accountRepository; @MockBean JavaMailSender JavaMailSender; @DisplayName("회원 가입 화면 보이는지 테스트") @Test void signUpForm() throws Exception { mockMvc.perform(get("/sign-up")) .andDo(print()) .andExpect(status().isOk()) .andExpect(view().name("account/sign-up")) .andExpect(model().attributeExists("signUpForm")); } @DisplayName("회원 가입 처리 - 입력값 오류") @Test void signUpSubmit_with_wrong_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "keesun") .param("email", "email..") .param("password", "12345") .with(csrf())) .andExpect(status().isOk()) .andExpect(view().name("account/sign-up")); } @DisplayName("회원 가입 처리 - 입력값 정상") @Test void signUpSubmit_with_correct_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "keesun") .param("email", "email@gmail.com") .param("password", "12345678") .with(csrf())) .andExpect(status().is3xxRedirection()) .andExpect(view().name("redirect:/")); assertTrue(accountRepository.existsByEmail("email@gmail.com")); BDDMockito.then(JavaMailSender).should().send (any(SimpleMailMessage.class)); } }
-
미해결홍정모의 따라하며 배우는 C언어
getchar() 에 관해 질문 드립니다.
위와 같은 코드를 실행하였을 때, 콘솔창에서 입력을 할 때 엔터를 누를 때 마다 엔터 전의 문자들이 출력이 됩니다. 엔터도 그냥 문자 '\n' 으로 인식해서 다음 줄에서 입력을 계속 할 수 있을 것으로 생각했는데 왜 그런 건가요?!
-
미해결단 두 장의 문서로 데이터 분석과 시각화 뽀개기
cumsum ratio 관련하여 다시 질문드립니다.
머리가 안돌아가네용..ㅠㅠ cumsum 이라는 누적 합 필드를 만들었는데 ratio 를 뒤로갈수록 커지는 우상향 선그래프로 그리고 막대그래프와 겹치고 싶어요 상기 이미지가 지금까지 한거고 그리고 싶은 그래프는 이거에요. 혹시 설명이 가능하실까요? ㅠ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OSIV 를 끈 상태에서 개발하면 지연 로딩만 조심하면 되나여?
1.osiv를 끈 상태에서는 지연 로딩 관련 로직들을 서비스 계층 이후로 트랜잭셔날의 영향권 아래에 있는 로직으로 옮기면 되는건가여? 지연 로딩 관련만 옮기면 되는건가여? 아니면 다른것들도 옮겨야 되나여?2.성능 극대화가 필요한 앱이면 로직 구성이 조금더 복잡해지고 어려워지는건가여? 아니면 서비스 계층에서 로직이 좀더 길어지는거 말고는 별 차이가 없는건가여 이부분도 간단하지는 않아 보이는데 v1, v2, v3, v4, v5 를 OSIV 를 끄고도 개발할수 있어야 되나여? 3.근데 스프링 부트 jpa가 원래 이렇게 어려운건가여 끝이 없네여 ㅋ; 기본편 스프링 data jpa , quer dsl 다 들어야 되요 ㅠ; 알려주신 스펙 다 적용해서 실전 어플리케이션은 언제 만들죠 ㅠ; 4.리액트나 스벨트까지 연동해서 풀스택 프로젝트 강의도 언제인가 만들어 주실건가요? 5.훌륭한 강의 만들어 주셔서 감사합니다 좋은 주말 되세여!
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
제가 구현해보았는데 제 코드는 어떤 부분이 잘못된 건지 알려주실 수 있으신가요?
import syssys.stdin = open("input.txt", "rt")def dfs(lev, q, w, e): global a_max if(lev == n): a_max = min(a_max, max(q,w,e)-min(q,w,e)) else: dfs(lev+1, q+a[lev], w, e) dfs(lev+1, q, w+a[lev], e) dfs(lev+1, q, w, e+a[lev])if __name__ == "__main__": n = int(input()) a = list() for _ in range(n): a.append(int(input())) a_max = 99999 dfs(0, 0, 0, 0) print(a_max)제가 구현해봤는데 어느 부분이 잘못된건지 궁금합니다.답은 1이나오더라구요
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
두번째 질문입니다 latest 했는데도 안되네요 ㅜㅜ
D:\desktop\ch9\9.5\nodebird> npm i passport-kakao@latest up to date, audited 380 packages in 1s 3 low severity vulnerabilities To address all issues, run: npm audit fix Run `npm audit` for details. D:\desktop\ch9\9.5\nodebird>npm start > nodebird@0.0.1 start > nodemon app [nodemon] 2.0.6 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node app.js` node:internal/modules/cjs/loader:928 throw err; ^ Error: Cannot find module './Strategy' Require stack: - D:\desktop\ch9\9.5\nodebird\node_modules\passport-kakao\dist\passport-kakao.js - D:\desktop\ch9\9.5\nodebird\passport\kakaoStrategy.js - D:\desktop\ch9\9.5\nodebird\passport\index.js - D:\desktop\ch9\9.5\nodebird\app.js at Function.Module._resolveFilename (node:internal/modules/cjs/loader:925:15) at Function.Module._load (node:internal/modules/cjs/loader:769:27) at Module.require (node:internal/modules/cjs/loader:997:19) at require (node:internal/modules/cjs/helpers:92:18) at Object.<anonymous> (D:\desktop\ch9\9.5\nodebird\node_modules\passport-kakao\dist\passport-kakao.js:6:34) at Module._compile (node:internal/modules/cjs/loader:1108:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10) at Module.load (node:internal/modules/cjs/loader:973:32) at Function.Module._load (node:internal/modules/cjs/loader:813:14) at Module.require (node:internal/modules/cjs/loader:997:19) { code: 'MODULE_NOT_FOUND', requireStack: [ 'D:\\desktop\\ch9\\9.5\\nodebird\\node_modules\\passport-kakao\\dist\\passport-kakao.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\passport\\kakaoStrategy.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\passport\\index.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\app.js' ] } [nodemon] app crashed - waiting for file changes before starting...
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
안녕하세요 노드버드 프로젝트하는중입니다
ch 9.5 다운받아서 했는데도 안되네요 ㅠㅠ D:\desktop\ch9\9.5\nodebird>npm start > nodebird@0.0.1 start > nodemon app [nodemon] 2.0.6 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node app.js` uploads 폴더가 없어 uploads 폴더를 생성합니다. node:internal/modules/cjs/loader:928 throw err; ^ Error: Cannot find module './Strategy' Require stack: - D:\desktop\ch9\9.5\nodebird\node_modules\passport-kakao\dist\passport-kakao.js - D:\desktop\ch9\9.5\nodebird\passport\kakaoStrategy.js - D:\desktop\ch9\9.5\nodebird\passport\index.js - D:\desktop\ch9\9.5\nodebird\app.js at Function.Module._resolveFilename (node:internal/modules/cjs/loader:925:15) at Function.Module._load (node:internal/modules/cjs/loader:769:27) at Module.require (node:internal/modules/cjs/loader:997:19) at require (node:internal/modules/cjs/helpers:92:18) at Object.<anonymous> (D:\desktop\ch9\9.5\nodebird\node_modules\passport-kakao\dist\passport-kakao.js:6:34) at Module._compile (node:internal/modules/cjs/loader:1108:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10) at Module.load (node:internal/modules/cjs/loader:973:32) at Function.Module._load (node:internal/modules/cjs/loader:813:14) at Module.require (node:internal/modules/cjs/loader:997:19) { code: 'MODULE_NOT_FOUND', requireStack: [ 'D:\\desktop\\ch9\\9.5\\nodebird\\node_modules\\passport-kakao\\dist\\passport-kakao.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\passport\\kakaoStrategy.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\passport\\index.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\app.js' ] } [nodemon] app crashed - waiting for file changes before starting...
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
loc가 더 연산이 빠른 이유
df[(df["시군구명"]=="강남구") & (df["상권업종대분류명"]=="음식")]["상권업종중분류명"].value_counts() 보다는 loc를 써서 df.loc[(df["시군구명"]=="강남구") & (df["상권업종대분류명"]=="음식"),"상권업종중분류명"].value_counts() 이렇게 하는게 연산이 더 빠르다고 하셨는데요.. 이유가 무엇인가요..??
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
왼쪽 상단에 표시되는 단축키
왼쪽 상단에 별도로 표시되는 단축키는 플러그인을 사용하신건가요? 아니면 인텔리제이에서 제공하는 기능인가요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
이상한게 뜸
글자를 쓸 때마다 마다 저런 빨간게 계속 뜸니다 어떻게 해야 하나요? 버전은 3.9 입니다
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
while문 이상해서 질문드립니다!!
안녕하세요. "섹션5. - 3번_후위표기식 만들기" 질문이 있습니다. for x in data: if x.isdecimal(): res += x else: if x == '(': stack.append(x) elif x == '*' or x == '/': while stack and (stack[-1] == '*' or stack[-1] == '/'): res =+ stack.pop() stack.append(x) ... ... ... 연산자가 곱셈(*)이랑 나눗셈(/)일때, while문에서는 아래의 다른 while문들과는 다르게, '(' 연산자가 나오면 멈춰야하는 != '(' 가 있는데 왜, 위에 쓴 while문에는 없는지 모르겠습니다. 똑같이 != '(' 를 입력해줬는데 돌아가긴 하더라구요. 혹시 넣어도 되는 부분인지, 아니면 넣어주면 안되는지 궁금합니다 ㅠㅠㅠ
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션5. - 3번_후위표기식 만들기 질문이요!
안녕하세요. "섹션5. - 3번_후위표기식 만들기" 질문이 있습니다. for x in data: if x.isdecimal(): res += x else: if x == '(': stack.append(x) elif x == '*' or x == '/': while stack and (stack[-1] == '*' or stack[-1] == '/'): res =+ stack.pop() stack.append(x) ... ... ... 연산자가 곱셈(*)이랑 나눗셈(/)일때, while문에서는 아래의 다른 while문들과는 다르게, '(' 연산자가 나오면 멈춰야하는 != '(' 가 있는데 왜, 위에 쓴 while문에는 없는지 모르겠습니다. 똑같이 != '(' 를 입력해줬는데 돌아가긴 하더라구요. 혹시 넣어도 되는 부분인지, 아니면 넣어주면 안되는지 궁금합니다 ㅠㅠㅠ
-
스프링 핵심 원리 - 기본편
클래스 데이터 타입...
삭제된 글입니다
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
실제 작동시 질문입니다.
안녕하세요 선생님, 제이쿼리 들어와서 헷갈리는 부분이 많아서 질문남깁니다. 1. jquery를 수업내용과 같이 작성하였을때 a tag에 마우스를 올리지 않더라도 a tag 보다 넓은 실제 li 영역에 마우스를 올리면 배경은 바뀌지만 a에 적용한 hover 효과는 작동하지 않았습니다. -> 이경우에 a에 길어져도 attr을 부여하거나 jquery에 parent()를 추가해야 호버와 함께 작동할 것 같은데 맞나요? ㅠㅠ 2. 해당예제를 한글로 변환해서 만들려고 하다가 궁금한 부분이 생겼습니다. a:before에 width 값을 0으로 주고, overflow를 주기전에 영문은 예제처럼 제자리에 있는 반면, 한글은 수직아래로 떨어집니다. 이때, heigh 값을 100%로 주고 overflow를 hidden 할 경우에 영문과 비슷하게 작동하지만 마지막 글자에서 부자연스럽게 채워지게 되는데 한글 메뉴로 구성했을때 다른 해결방법이 있는지 궁금합니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코드를 이렇게 짜봤는데 코드 평가 한번해주시면 감사하겠습니다.
import syssys.stdin = open("input.txt", "rt")def dfs(lev, score): global a_max if(lev > n): return if(n == lev): a_max = max(score, a_max) else: dfs(lev+arr[lev][0], score+arr[lev][1]) dfs(lev+1, score)if __name__ == "__main__": n = int(input()) arr = list() for _ in range(n): a, b = map(int, input().split()) arr.append((a,b)) a_max = 0 dfs(0, 0) print(a_max)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
org.springframework.jdbc import 오류 문제
안녕하세요? 김영한 강사님의 스프링부트 입문편을 수강중에 jdbc import에서 계속 오류가 발생하여 문의 드립니다. build.gradle 에서 디펜던시 해줘야할 부분은 강의 통해 다 적용 하였으나, org.springframework.jdbc를 import하는 부분에서 계속 오류가 뜹니다... 오류 내용으로 resolved가 뜨는걸로 봐서는 해당 jdbc jar파일이 프로젝트에 없어서 그런거 같은데...다른 질무자님들의 답변글을 확인 하면서 프로젝트도 다시 새로 진행해보고 하였으나 여전히 같은 문제로 남아 있습니다... java8 환경이고 ide는 sts 이클립스 입니다. 어떻게 해결을 해야할가요...?import시 나타나는 오류 문구는 아래와 같습니다 Only a type can be imported. org.springframework.jdbc resolves to a package
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
삭제 하니까 Product.find(...).populdate is not a function 라고 뜹니다 ㅠ
] events.js:292 [0] throw er; // Unhandled 'error' event [0] ^ [0] [0] TypeError: Product.find(...).populdate is not a function [0] at D:\공부\React\New_Boilerplate-master\server\routes\users.js:140:18 [0] at D:\공부\React\New_Boilerplate-master\node_modules\mongoose\lib\model.js:4824:16 [0] at D:\공부\React\New_Boilerplate-master\node_modules\mongoose\lib\model.js:4824:16 [0] at D:\공부\React\New_Boilerplate-master\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16 [0] at D:\공부\React\New_Boilerplate-master\node_modules\mongoose\lib\model.js:4847:21 [0] at D:\공부\React\New_Boilerplate-master\node_modules\mongoose\lib\query.js:4390:11 [0] at D:\공부\React\New_Boilerplate-master\node_modules\kareem\index.js:135:16 [0] at processTicksAndRejections (internal/process/task_queues.js:75:11) [0] Emitted 'error' event on Function instance at: [0] at D:\공부\React\New_Boilerplate-master\node_modules\mongoose\lib\model.js:4826:13 [0] at D:\공부\React\New_Boilerplate-master\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16 [0] [... lines matching original stack trace ...] [0] at processTicksAndRejections (internal/process/task_queues.js:75:11) [1] [HPM] Error occurred while trying to proxy request /api/users/removeFromCart?id=600bce9df829516a84314444 from localhost:3000 to http://localhost:5000 (ECONNRESET) (https://nodejs.org/api/errors.html#errors_common_system_errors) const express = require('express'); const router = express.Router(); const { User } = require("../models/User"); const { Product } = require("../models/Product"); const { auth } = require("../middleware/auth"); //================================= // User //================================= router.get("/auth", auth, (req, res) => { res.status(200).json({ _id: req.user._id, isAdmin: req.user.role === 0 ? false : true, isAuth: true, email: req.user.email, name: req.user.name, lastname: req.user.lastname, role: req.user.role, image: req.user.image, cart: req.user.cart, history: req.user.history, }); }); router.post("/register", (req, res) => { const user = new User(req.body); user.save((err, doc) => { if (err) return res.json({ success: false, err }); return res.status(200).json({ success: true }); }); }); router.post("/login", (req, res) => { User.findOne({ email: req.body.email }, (err, user) => { if (!user) return res.json({ loginSuccess: false, message: "Auth failed, email not found" }); user.comparePassword(req.body.password, (err, isMatch) => { if (!isMatch) return res.json({ loginSuccess: false, message: "Wrong password" }); user.generateToken((err, user) => { if (err) return res.status(400).send(err); res.cookie("w_authExp", user.tokenExp); res .cookie("w_auth", user.token) .status(200) .json({ loginSuccess: true, userId: user._id }); }); }); }); }); router.get("/logout", auth, (req, res) => { User.findOneAndUpdate({ _id: req.user._id }, { token: "", tokenExp: "" }, (err, doc) => { if (err) return res.json({ success: false, err }); return res.status(200).send({ success: true }); }); }); router.post("/addToCart", auth, (req, res) => { // 먼저 User Collection에 해당 유저의 정보를 가져오기 User.findOne({ _id: req.user._id}, (err, userInfo) => { // 가져온 정보에서 카트에다 넣으려 하는 상품이 이미 들어 있는지 확인 let duplicate = false; userInfo.cart.forEach((item) => { if(item.id === req.body.productId) { duplicate = true; } }) if(duplicate) { User.findOneAndUpdate( { _id: req.user._id, "cart.id": req.body.productId }, { $inc: {"cart.$.quantity": 1} }, { new: true }, (err, userInfo) => { if(err) return res.status(400).json({ success: false, err }) res.status(200).send(userInfo.cart) } ) } else { User.findOneAndUpdate( { _id: req.user._id }, { $push: { cart: { id: req.body.productId, quantity: 1, date: Date.now() } } }, { new: true }, (err, userInfo) => { if(err) return res.status(400).json({ success: false, err }) res.status(200).send(userInfo.cart) } ) } }) }); router.get('/removeFromCart', auth, (req, res) => { // 먼저 카트 안에 내가 지우려고 한 상품을 지워주기 User.findOneAndUpdate( {_id: req.user._id}, { "$pull": { "cart": {"id": req.query.id} } }, { new: true }, (err,userInfo) => { let cart = userInfo.cart; let array = cart.map(item => { return item.id }) // product collection에서 현재 남아 있는 상품들의 정보를 가져오기 Product.find({ _id: { $in: array } }) .populdate('writer') .exec((err, productInfo) => { return res.status(200).json({ productInfo, cart }) }) } ) }) module.exports = router; 에러 전문입니다 살려주세요
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
FAILED_PRECONDITION 오류발생
storage 까지는 잘올라가지만 db에는 저장되지 않네요 아래는 안드로이드 오류 로그입니다. api enable은 해두었고, google-service json 파일도 올바른 경로에 올려두었어요 [로그내용] W/Firestore( 9474): (22.0.2) [WriteStream]: (27ee32b) Stream closed with status: Status{code=FAILED_PRECONDITION, description=The Cloud Firestore API is not available for Datastore Mode projects., cause=null}.
-
미해결스프링 부트 개념과 활용
dependency 추가할때 궁금한것이 있습니다
dependency에서 undertow 추가 하실때 보면 자연스럽게 org.springframework.boot gruopId 설정하시고 spring-boot-starter-undertow를 찾으시던데 undertow가 spring-boot-starter 에 존재하는것을 원래 알고 계시기 때문에 그렇게 쓰시는건가요? 그리고 다른 dependency를 추가할때도 spring-boot-starter에 있는지 확인하고 없다면 찾아서 추가해야 하는건가요?