묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
다른 풀이 문의드립니다
LinkedList 이해하려니 머리가 깨지네요 ㅎㅎ 이해는 했는데 이 문제가 사실 다 배열에 넣어서 그냥 큰 순서대로 소팅해도 되는것 같던데 그랗게하면 점수를 낮게 받을까요? 그렇게 풀면 안되는 이유가있을까요? 점수가 낮다면 그것만으로도 이유가 될거란건 수긍합니다 시험이니깐요 배열에 다넣어서 소트하는게 시간복잡도도 더 효율적인것 같은데요 지금 다시 leetcode에서 문제보니 LinkedList로 최종결과를 리턴하도록 강제하고있네요
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
Route.get() requires a callback function but got a [object Object]
인자를 객체로 넘겼다고 에러가 뜨는데, 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 입니다. 문제가 무엇일까요, ㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
Program에서 플레이어를 불러오지 못합니다.
아래와 같은 오류가 뜨면서 기사와 아처에 에러가 뜨네요. 겟 어택에 대한 부분도 에러가 뜨고 있습니다. 참고로 파트/섹션별로 나누어서 클래스를 만들어서 par1_section5_(이름) 으로 생성했습니다. 무엇이 문제일까요? 혼자 이것저것 수정해봐도 되지 않아 질문남깁니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
github private 접근 어떻게 해야 하나요?
두번째 강의내용에서 github에 접근해 clone 해오는걸 잘 이해가 안가네요 어떻게 접근해서 아이디를 남겨야되는지 github 방문에 다 봐도 그런 링크를 못찾고 했습니다. gist 라는 데도 안보이고요
-
미해결리눅스 시스템 프로그래밍 - 이론과 실습
창 위치 오른쪽으로...
갑자기 궁금해진건데 이번 강의 마지막에 강사님께서 새로운 쉘을 켜시고 창을 오른쪽으로 이동시키셨자나요? 이게 윈도우에서 하던 것처럼 window+방향키로 되긴 했는데 가상머신을 사용하다 보니까 어쩔때는 가상 머신 창 자체가 윈도우상에서 한쪽으로 붙더라고요. 혹시 이 기능을 하는 단축키가 우분투에 따로 있나요? 강사님 화면 밑에 누른 키를 보여주는걸로 봐도 모르겠어서 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
질문
싱글톤 사용되는 오브젝트의 특성이 궁금합니다 강의에서는 게임매니저를 싱글톤 패턴으로 동작 구성 했는데 그외로 몬스터를 설계를 할때 동일한 몬스터를 클론으로 많이 복제 하게 될때 도 싱글톤 으로 패턴을 디자인 해야 하나요?
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
Weather Observation Station 4 문제 해결이 안돼요
SELECT COUNT(city)-COUNT(DISTINCT city) FROM city;쿼리를 위와 같이 적었는데요, 아래 에러가 뜹니다. 왜그럴까요?ERROR 1146 (42S02) at line 1: Table 'city' doesn't exist
-
미해결프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
compiler.plugin 이 undefined라고 뜹니다.
안녕하세요 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(); }) } 이 방식을 사용하면 똑같이 나오는데 버전이 바뀐 것인가요?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
smtp 설정 파트 오류에 대해 여쭤보고 싶습니다.
안녕하세요 강사님. 우선 개인적으로 강의 정말 재밌게 잘 듣고있습니다. 감사합니다. smtp설정 강의 부분에서 설정을 마치고 새로 회원가입을 할 때 아래와 같은 에러가 생겨서 여쭤보고 싶습니다. javamail.send(mailMessage);에서 mailMessage구문오류 때문이라고 생각해서 다시 강의를 보고 코드를 확인했는데도 그대로네요 혹시 아래와 같은 에러가 어떤 실수를 했을 때 발생할 수 있는지 알려주시면 감사하겠습니다!
-
미해결윤재성의 Vue.js 프로젝트를 통한 실무 개발 과정
Html javascript 순으로 부르는 건가요?
설명해주실 때 html 부른 다음에 div에 자바스크립트를 부른다고 하셔서요. Html 호출 그 다음에 div 이전 Javascript 호출이 맞는 건가요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
module.exports = { auth } 에 대한 질문입니다.
안녕하세요 선생님, auth.js의 마지막 부분에 있는 module.exports = { auth } 에서 {} 를 빼먹었다가 에러가 났는데요, 왜 꼭 {}를 붙여야 작동이 되는 것인지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
이해 질문
1. 고블린() 1) 어택() - 돌팔매질 컴포넌트 - 빠따질 컴포넌트 고블린 클래스안에 어택클래스에 어떤 공격 부품을 넣느냐에 따른 투척고블린, 일반 고블린 등으로 나눌때 종속되지 않고 상황 에 따라 교체가 편하게 하기 위해 컴포넌트라는 개념을 가지고 작업 하는게 맞나요?
-
해결됨더 자바, Java 8
Optional 질문
안녕하세요 기선님. 수업 잘 듣고 있습니다. 예제와 같이 Progress 클래스를 get으로 받으려 하지만 참조값이 없을 경우, NPE가 발생하였습니다. 하지만 예를들어 OnlineClass 클래스에, String professrorName; 이라는 필드가 존재하고 이를 인스턴스가 getProfessorName(); 으로 받을 때, 비어있는 필드인데 NPE가 발생하지 않고 null을 반환합니다. 왜 getProgress() 는 NPE가 발생하고, getProfesorName()는 null값을 반환하는 것인지요. 답변 해주시면 감사하겠습니다.
-
미해결정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
코테강의 추가계획없으신가요 자바로
.자바로 하는걸로요 강의는 가격대비 만족합니다 좀더 난이도 높은걸로 추가강의 있었음 좋겠습니다 ㅎㅎ
-
해결됨[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는 사진이 바뀌지 않고 그대로 입니다. 어떤 부분이 잘못된 것인지 알려주시면 감사하겠습니다!
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
messageJava 프로젝트만 Run on Server 했을 때 톰캣 서버가 나오지 않습니다
(사진)
-
미해결리액트로 나만의 블로그 만들기(MERN Stack)
reactstrap이랑 react-bootstrap이랑 다른건가요?
다른 강의에서는 npm i bootstrap react-bootstrap 으로 설치해서 하였거든요
-
미해결예제로 배우는 스프링부트 입문
web jars를 보고느끼는건데요..
그레이들이 아니라.. 특정폴더에 기입해서 사용하고싶은데 cdn이 사용이아니라 개발자가 개인이 만든 라이브러리를 이용하고싶은데.. 이럴경우 어떤방법으로 해야하나요? webapps > web-inf > views이 외에 별도의 펼도를 빼서 사용하면 되는것인가요?
-
미해결제주코딩베이스캠프 Code Festival: JavaScript 100제
선생님 질문 있습니다.
수학을 못하는데, n(n+1)/2 이런건 무엇을 알면 조금 좋을까요. 그리고 잘 이해되지 않습니다...
-
해결됨애플 웹사이트 인터랙션 클론!
opacity:0, display:none의 차이가 무엇인가요?
둘 다 원하는 element를 보이지 않게 할 수 있는 걸로 알고 있습니다. 어떤 상황에 써야 하거나 연산량 차이가 있거나 한 부분이 있을까요?