173만명의 커뮤니티!! 함께 토론해봐요.
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
public Member save (Member member) { // SimpleJdbcInsert 는 SQL 문을 대체함 (Insert SQL 문을 구성하는 테이블명 , PK , 필드명은 필요함 ) SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert( jdbcTemplate ) ; jdbcInsert.withTableName( "member" ).usingGeneratedKeyColumns( "id" ) ; Map<String , Object> parameters = new HashMap<>() ; parameters.put( "name" , member.getName()) ; Number key = jdbcInsert.executeAndReturnKey( new MapSqlParameterSource(parameters)) ; member.setId(key.longValue()) ; return member ; } SimpleJdbcInsert의 동작방식이 이해가 가지 않습니다. member.setId(key.longValue()) 에서 멤버에 ID 값을 세팅한 것은 이해가되는데 setName은 어떻게했는지 이해가 가지 않습니다.
도전적인 멧돼지
2020-10-18T09:04:17.788Z
댓글 1
좋아요 0
조회수 332
미해결
정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
LinkedList 이해하려니 머리가 깨지네요 ㅎㅎ 이해는 했는데 이 문제가 사실 다 배열에 넣어서 그냥 큰 순서대로 소팅해도 되는것 같던데 그랗게하면 점수를 낮게 받을까요? 그렇게 풀면 안되는 이유가있을까요? 점수가 낮다면 그것만으로도 이유가 될거란건 수긍합니다 시험이니깐요 배열에 다넣어서 소트하는게 시간복잡도도 더 효율적인것 같은데요 지금 다시 leetcode에서 문제보니 LinkedList로 최종결과를 리턴하도록 강제하고있네요
BeginnerCoder
2020-10-18T09:02:39.861Z
댓글 2
좋아요 1
조회수 302
미해결
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
인자를 객체로 넘겼다고 에러가 뜨는데, auth를 구현하는 app.get에서 자꾸 문제가 있다고 합니다. 오타는 도저히 못찾겠는데,, 문제가 무엇일까요 const express = require ( 'express' ) const app = express () const port = 5000 const bodyParser = require ( 'body-parser' ); const { User } = require ( "./models/User" ); const config = require ( './config/key' ); const cookieParser = require ( 'cookie-parser' ); const auth = require ( './middleware/auth' ); // application / x-www-form-urlencoded app . use ( bodyParser . urlencoded ({ extended : true })); // application / json app . use ( bodyParser . json ()); app . use ( cookieParser ()); const mongoose = require ( 'mongoose' ); //mongoDB 연결 mongoose . connect ( config . mongoURI ,{ useNewUrlParser : true , useUnifiedTopolongy : true , useCreateIndex : true , useFindAndModify : false }). then (() => console . log ( 'MongoDB connected !' )) . catch ( err => console . log ( 'MongoDB Error !' )); //Hello world 출력 app . get ( '/' , ( req , res ) => { res . send ( 'Hello World!' ) }); //register 라우트 app . post ( '/api/users/register' , ( req , res ) => { // 회원가입 할 때 필요한 정보들을 client으로부터 받아오면 // 그것들을 database에 넣어준다. const user = new User ( req . body ) user . save (( err , userInfo ) => { if ( err ) return res . json ({ success : false , err }) return res . status ( 200 ). json ({ success : true }); }); }); // login 라우트 app . post ( '/api/users/login' , ( req , res ) => { // console.log('ping') //요청된 이메일을 데이터베이스에서 있는지 찾는다. User . findOne ({ email : req . body . email }, ( err , user ) => { // console.log('user', user) if ( ! user ) { return res . json ({ loginSuccess : false , message : "제공된 이메일에 해당하는 유저가 없습니다." }) } //요청된 이메일이 데이터 베이스에 있다면 비밀번호가 맞는 비밀번호 인지 확인. user . comparePassword ( req . body . password , ( err , isMatch ) => { // console.log('err',err) // console.log('isMatch',isMatch) if ( ! isMatch ) return res . json ({ loginSuccess : false , message : "비밀번호가 틀렸습니다." }) //비밀번호 까지 맞다면 토큰을 생성하기. user . generateToken (( err , user ) => { if ( err ) return res . status ( 400 ). send ( err ); // 토큰을 저장한다. 어디에 ? 쿠키 , 로컳스토리지 res . cookie ( "x_auth" , user . token ) . status ( 200 ) . json ({ loginSuccess : true , userId : user . _id }) }) }) }) }) // auth 라우트 (미들웨어로 사용될 것입니다.) app . get ( '/api/users/auth' , auth , ( req , res ) => { //여기 까지 미들웨어를 통과해 왔다는 얘기는 Authentication 이 True 라는 말. 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 }) }) app . get ( '/api/users/logout' , auth , ( req , res ) => { // console.log('req.user', req.user) User . findOneAndUpdate ({ _id : req . user . _id }, { token : "" } , ( err , user ) => { if ( err ) return res . json ({ success : false , err }); return res . status ( 200 ). send ({ success : true }) }) }) // 포트를 통해 index.js 를 실행합니다. app . listen ( port , () => { console . log ( `Example app listening at http://localhost: ${ port } ` ) }); 위는 index.js const { User } = require ( '../models/User' ); let auth = ( req , res , next ) => { //인증 처리를 하는곳 //클라이언트 쿠키에서 토큰을 가져온다. let token = req . cookies . x_auth ; // 토큰을 복호화 한후 유저를 찾는다. User . findByToken ( token , ( err , user ) => { if ( err ) throw err ; if ( ! user ) return res . json ({ isAuth : false , error : true }) // console.log('userh', user) req . token = token ; req . user = user ; next (); }) } module . exports = { auth }; auth.js // 모듈 (User에서는 데이터 베이스를 위한 몽구스, 유저의 비밀번호 암호화를 위한 비크립트, 유저의 개개인 토큰을 얻기 위한 제이슨웹토큰을 가져온다.) const mongoose = require ( 'mongoose' ); const bcrypt = require ( 'bcrypt' ); const jwt = require ( 'jsonwebtoken' ); // 비밀번호 암호화를 위한 salt 값 설정. salt 값은 암호화된 비밀번호를 해킹하기 어렵게 만들 수 있음. const saltRounds = 10 ; // 유저의 정보들을 객체화, 이른 바 유저 스키마를 생성한다. ( 몽구스의 메소드 ) // 각 유저들의 이름, 이메일, 비밀번호 등 개인정보를 담기 위한 객체임. const userSchema = mongoose . Schema ({ name : { type : String , maxlength : 50 }, email : { type : String , trim : true , unique : 1 }, password : { type : String , minlength : 5 }, lastname : { type : String , maxlength : 50 , }, role : { type : Number , default : 0 }, token : { type : String , }, tokenExp : { type : Number }, image : String }) // 유저 스키마 이전에 실행될 것임. userSchema . pre ( 'save' , function ( next ) { var user = this ; if ( user . isModified ( 'password' )) { //비밀번호를 암호화 시킨다. bcrypt . genSalt ( saltRounds , function ( err , salt ) { if ( err ) return next ( err ) bcrypt . hash ( user . password , salt , function ( err , hash ) { if ( err ) return next ( err ) user . password = hash next () }) }) } else { next () } }) // comparePassword 라는 이름의 유저 스키마 메소드를 생성합니다. ( 당연히 비밀번호 비교를 위한 메소드이겠지요? ) userSchema . methods . comparePassword = function ( plainPassword , cb ) { //plainPassword 1234567 암호회된 비밀번호 $2b$10$l492vQ0M4s9YUBfwYkkaZOgWHExahjWC bcrypt . compare ( plainPassword , this . password , function ( err , isMatch ) { if ( err ) return cb ( err ); cb ( null , isMatch ); }) } userSchema . methods . generateToken = function ( cb ) { var user = this ; // console.log('user._id', user._id) // jsonwebtoken을 이용해서 token을 생성하기 var token = jwt . sign ( user . _id . toHexString (), 'secretToken' ) // user._id + 'secretToken' = token // -> // 'secretToken' -> user._id user . token = token user . save ( function ( err , user ) { if ( err ) return cb ( err ) cb ( null , user ) }) } userSchema . statics . findByToken = function ( token , cb ) { var user = this ; // 토큰을 decode 한다. jwt . verify ( token , 'secretToken' , function ( err , decoded ) { // 유저 아이디를 통해서 유저를 찾은 다음에 // 클라이언트에서 가져온 token과 DB에서 가져온 토큰이 일치하는지 확인합니다. user . findOne ({ "_id" : decoded , "token" : token }, function ( err , user ) { if ( err ) return cb ( err ); cb ( null , user ); }) }) } // 유저스키마 => User 라는 이름으로 모델화. const User = mongoose . model ( 'User' , userSchema ); // 방금 모델화한 User 밖에서도 사용가능하도록 exports. module . exports = { User }; user.js 입니다. 문제가 무엇일까요, ㅠ
잼코
2020-10-18T08:34:15.779Z
댓글 3
좋아요 0
조회수 2847
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
아래와 같은 오류가 뜨면서 기사와 아처에 에러가 뜨네요. 겟 어택에 대한 부분도 에러가 뜨고 있습니다. 참고로 파트/섹션별로 나누어서 클래스를 만들어서 par1_section5_(이름) 으로 생성했습니다. 무엇이 문제일까요? 혼자 이것저것 수정해봐도 되지 않아 질문남깁니다.
이시영
2020-10-18T08:32:23.111Z
댓글 2
좋아요 0
조회수 504
미해결
Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
두번째 강의내용에서 github에 접근해 clone 해오는걸 잘 이해가 안가네요 어떻게 접근해서 아이디를 남겨야되는지 github 방문에 다 봐도 그런 링크를 못찾고 했습니다. gist 라는 데도 안보이고요
nicolas83
2020-10-18T08:26:38.808Z
댓글 2
좋아요 1
조회수 876
미해결
리눅스 시스템 프로그래밍 - 이론과 실습
갑자기 궁금해진건데 이번 강의 마지막에 강사님께서 새로운 쉘을 켜시고 창을 오른쪽으로 이동시키셨자나요? 이게 윈도우에서 하던 것처럼 window+방향키로 되긴 했는데 가상머신을 사용하다 보니까 어쩔때는 가상 머신 창 자체가 윈도우상에서 한쪽으로 붙더라고요. 혹시 이 기능을 하는 단축키가 우분투에 따로 있나요? 강사님 화면 밑에 누른 키를 보여주는걸로 봐도 모르겠어서 궁금합니다.
Coffee_Cat
2020-10-18T08:22:51.769Z
댓글 1
좋아요 1
조회수 232
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
싱글톤 사용되는 오브젝트의 특성이 궁금합니다 강의에서는 게임매니저를 싱글톤 패턴으로 동작 구성 했는데 그외로 몬스터를 설계를 할때 동일한 몬스터를 클론으로 많이 복제 하게 될때 도 싱글톤 으로 패턴을 디자인 해야 하나요?
YuCheol Chae
2020-10-18T07:55:08.779Z
댓글 4
좋아요 0
조회수 337
미해결
[백문이불여일타] 데이터 분석을 위한 중급 SQL
SELECT COUNT(city)-COUNT(DISTINCT city) FROM city; 쿼리를 위와 같이 적었는데요, 아래 에러가 뜹니다. 왜그럴까요? ERROR 1146 (42S02) at line 1: Table 'city' doesn't exist
FABIAN KIM
2020-10-18T07:42:28.975Z
댓글 1
좋아요 2
조회수 288
미해결
프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
안녕하세요 TypeError: compiler.plugin is not a function 위와 같은 에러가 떠서 compiler를 찍어봤더니 plugin이 존재하지 않아서 undefined라고 뜹니다. compiler . hooks . emit . tapAsync ( ' emit ' , ( compilation , callback ) => { const source = compilation . assets [ ' main.js ' ] . source () ; console . log ( source ) ; callback () ; } ) } 이 방식을 사용하면 똑같이 나오는데 버전이 바뀐 것인가요?
edu prismweaver
2020-10-18T07:31:18.906Z
댓글 3
좋아요 3
조회수 672
미해결
스프링과 JPA 기반 웹 애플리케이션 개발
안녕하세요 강사님. 우선 개인적으로 강의 정말 재밌게 잘 듣고있습니다. 감사합니다. smtp설정 강의 부분에서 설정을 마치고 새로 회원가입을 할 때 아래와 같은 에러가 생겨서 여쭤보고 싶습니다. javamail.send(mailMessage);에서 mailMessage구문오류 때문이라고 생각해서 다시 강의를 보고 코드를 확인했는데도 그대로네요 혹시 아래와 같은 에러가 어떤 실수를 했을 때 발생할 수 있는지 알려주시면 감사하겠습니다!
spring-boot spring thymeleaf java JPA
남기석
2020-10-18T07:05:27.188Z
댓글 6
좋아요 0
조회수 814
미해결
윤재성의 Vue.js 프로젝트를 통한 실무 개발 과정
설명해주실 때 html 부른 다음에 div에 자바스크립트를 부른다고 하셔서요. Html 호출 그 다음에 div 이전 Javascript 호출이 맞는 건가요?
달린다
2020-10-18T06:49:10.241Z
댓글 2
좋아요 0
조회수 341
미해결
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
안녕하세요 선생님, auth.js의 마지막 부분에 있는 module.exports = { auth } 에서 {} 를 빼먹었다가 에러가 났는데요, 왜 꼭 {}를 붙여야 작동이 되는 것인지 궁금합니다.
강예림
2020-10-18T06:48:26.021Z
댓글 2
좋아요 0
조회수 243
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
1. 고블린() 1) 어택() - 돌팔매질 컴포넌트 - 빠따질 컴포넌트 고블린 클래스안에 어택클래스에 어떤 공격 부품을 넣느냐에 따른 투척고블린, 일반 고블린 등으로 나눌때 종속되지 않고 상황 에 따라 교체가 편하게 하기 위해 컴포넌트라는 개념을 가지고 작업 하는게 맞나요?
YuCheol Chae
2020-10-18T06:40:01.767Z
댓글 3
좋아요 0
조회수 340
해결됨
더 자바, Java 8
안녕하세요 기선님. 수업 잘 듣고 있습니다. 예제와 같이 Progress 클래스를 get으로 받으려 하지만 참조값이 없을 경우, NPE가 발생하였습니다. 하지만 예를들어 OnlineClass 클래스에, String professrorName; 이라는 필드가 존재하고 이를 인스턴스가 getProfessorName(); 으로 받을 때, 비어있는 필드인데 NPE가 발생하지 않고 null을 반환합니다. 왜 getProgress() 는 NPE가 발생하고, getProfesorName()는 null값을 반환하는 것인지요. 답변 해주시면 감사하겠습니다.
석민
2020-10-18T06:22:10.124Z
댓글 3
좋아요 2
조회수 363
미해결
정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
.자바로 하는걸로요 강의는 가격대비 만족합니다 좀더 난이도 높은걸로 추가강의 있었음 좋겠습니다 ㅎㅎ
BeginnerCoder
2020-10-18T06:09:01.677Z
댓글 2
좋아요 1
조회수 290
해결됨
[OpenCV] 파이썬 딥러닝 영상처리 프로젝트 - 손흥민을 찾아라!
import cv2 import numpy as np from tkinter import * from PIL import Image from PIL import ImageTk from tkinter import filedialog model_name = 'res10_300x300_ssd_iter_140000.caffemodel' prototxt_name = 'deploy.prototxt.txt' min_confidence = 0.5 file_name = "image/aa.jpg" title_name = "dnn Deep Learning object detection" frame_width = 300 frame_height = 300 def selectFile(): file_name = filedialog.askopenfilename(initialdir = "./image", title = "Select file", filetypes = (("jpeg files","*.jpg"),("all files","*.*"))) print('File name: ', file_name) read_image = cv2.imread(file_name) image = cv2.cvtColor(read_image, cv2.COLOR_BGR2RGB) image = Image.fromarray(image) imgtk = ImageTk.PhotoImage(image=image) (height, width) = read_image.shape[:2] detectAndDisplay(read_image, width, height) def detectAndDisplay(frame,w,h): model = cv2.dnn.readNetFromCaffe(prototxt_name, model_name) blob = cv2.dnn.blobFromImage(cv2.resize((frame),(300,300)), 1.0, (300,300), (104.0, 177.0, 123.0)) model.setInput(blob) detections = model.forward() minConfidence = float(sizeSpin.get()) for i in range(0, detections.shape[2]): confidence = detections[0, 0, i, 2] if confidence > min_confidence: box = detections[0, 0, i, 3:7] * np.array([w, h, w, h ]) (startX, startY, endX, endY) = box.astype("int") text = "{:.2f}%".format(confidence * 100) y = startY - 10 if startY - 10 > 10 else startY + 10 #박스 시작점 10 위에 text를 넣는다. 10을 더했을 때 화면을 넘어가면 아래에 표시 cv2.rectangle(frame, (startX, startY), (endX, endY), (0, 255, 0), 2) cv2.putText(frame, text, (startX, y),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0 ), 1) image = cv2.cvtColor(frame , cv2.COLOR_BGR2RGB) image = Image.fromarray(image) imatk = ImageTk.PhotoImage(image=image) detection.config(image=imgtk) detection.image = imgtk main = Tk() main.title(title_name) main.geometry() read_image = cv2.imread(file_name) image = cv2.cvtColor(read_image , cv2.COLOR_BGR2RGB) image = Image.fromarray(image) imgtk = ImageTk.PhotoImage(image=image) (height, width) = read_image.shape[:2] label = Label(main, text=title_name) label.config(font=("Courier",18)) label.grid(row=0, column=0, columnspan=4) sizeLabel=Label(main, text='Min Confidence :') sizeLabel.grid(row=1,column=0) sizeVal = IntVar(value=min_confidence) sizeSpin = Spinbox(main, textvariable=sizeVal, from_=0, to= 1, increment=0.05, justify=RIGHT) sizeSpin.grid(row=1, column=1) Button(main, text = 'File Select', height=2, command=lambda:selectFile()).grid(row=1, column=2, columnspan= 4) detection = Label(main, image = imgtk) detection.grid(row=2,column=0, columnspan=4) detectAndDisplay(read_image,width,height) main.mainloop() 이렇게 코드를 작성하였고 파일경로도 다 확인하였기에 실행은 되지만 실행결과가 이런 식으로 사각형 틀이 없게 작동됩니다. GUI방식 말고 전 강의 처럼 cv2.imshow("Face Detection by dnn", frame) 를 하면 이렇게 잘 작동이 됩니다. 그리고 파일을 변경하려고 하면 이런 식으로 file name은 출력이 되지만 GUI는 사진이 바뀌지 않고 그대로 입니다. 어떤 부분이 잘못된 것인지 알려주시면 감사하겠습니다!
tensorflow 컴퓨터-비전 딥러닝 opencv 머신러닝 배워볼래요? keras
Lee JaeJun
2020-10-18T05:09:16.087Z
댓글 4
좋아요 0
조회수 396
미해결
윤재성의 만들면서 배우는 Spring MVC 5
(사진)
ghj0256
2020-10-18T04:39:25.483Z
댓글 1
좋아요 0
조회수 219
미해결
리액트로 나만의 블로그 만들기(MERN Stack)
다른 강의에서는 npm i bootstrap react-bootstrap 으로 설치해서 하였거든요
mongodb redux react bootstrap express nodejs
liufeier
2020-10-18T04:34:41.174Z
댓글 1
좋아요 0
조회수 734
미해결
예제로 배우는 스프링부트 입문
그레이들이 아니라.. 특정폴더에 기입해서 사용하고싶은데 cdn이 사용이아니라 개발자가 개인이 만든 라이브러리를 이용하고싶은데.. 이럴경우 어떤방법으로 해야하나요? webapps > web-inf > views이 외에 별도의 펼도를 빼서 사용하면 되는것인가요?
이경용
2020-10-18T02:26:25.605Z
댓글 6
좋아요 0
조회수 423
미해결
제주코딩베이스캠프 Code Festival: JavaScript 100제
수학을 못하는데, n(n+1)/2 이런건 무엇을 알면 조금 좋을까요. 그리고 잘 이해되지 않습니다...
Fail Node
2020-10-18T02:12:43.658Z
댓글 3
좋아요 1
조회수 251