목록전체 글 276
재밌고 어려운 IT를 이해해보자~!
권한이 있는 사람만 특정 행동을 할 수 있도록 관리하기 위해 Authentication 기능을 활용한다.token이 동일한지를 매번 판단해주는 기능user.jsuserSchema.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.jsuserSchema.methods.generateToken = function() { // jwt 생성 user = this; const token = jwt.sign(user._id.toJSON(), 'secretToken'); user.token = token; return user.save();} index.jsapp.post('/login', (req, res) => { // 이메일이 DB에 있는지 확인 User.findOne({ email: req.body.email }) .then (async (user) => { if (!user) { throw new Error("제공된 이메일에 해당하는 유저가 없습니다.") ..
설계서1. 로또를 구매할때 몇개를 구매할지 선택이 가능합니다.2. 로또 번호는 1~15 까지 랜덤한 3개이며 중복된 숫자는 나오지 않습니다.3. 게임 시작시 초기 자산은 5000원이며 로또 1개당 1000원 입니다. 4. 게임 시작시 1회차 로또게임을 시작하며 로또를 구매하고 당첨을 확인하면 다음회차로 넘어갑니다.5. 다음회차로 넘어가면 로또 가격은 1000원 증가합니다.5. 3개 다맞추면 1등 (1000만원), 2개 맞추면 2등 (50만원), 1개 맞추면 3등 (1만원), 못 맞추면 꽝(0원) 입니다.6. 구매회차에 따른 자본 변화 그래프 확인이 가능합니다.7. 현재까지 구매한 로또에 대한 기록 확인이 가능합니다. 코드를 작성하며 발생한 에러1. NameError: name 'lottoGame' is ..
# 함수 vs 메서드 # 내장함수 vs 사용자 정의 함수 # 개발자들이 만들어놓은 유용한 다양한 함수들이 있다. # 함수들의 묶음이 생기기 시작 # 함수 묶음 == 모듈, 라이브러리 # 모듈(모듈안의 함수)을 사용하기 위해서는 import(다운로드, 설치, install) #파이썬은 기능이 많다는게 장점이기 때문에 모듈, 라이브러리가 중요하다. import random import random as r print(r.randrange(1,10)) from 모듈명 import 함수명1,함수명2,함수명3 form 모듈명 import 함수명 as 함수별칭 별도의 설치없이 import를 할수 있는 애들을 "표준 모듈" 이라 부른다. random.sample 첫번째 인자 범위내에서 두번째 인자 숫자만큼 데이터를..
Postman 을 이용한 회원가입에서 입력한 비밀번호는 정보보안이 되어있지 않다.이때 Bcrypt라이브러리를 사용해서 비밀번호를 암호화할 수 있다! const bcrypt = require('bcrypt');const saltRounds = 10userSchema.pre('save', function (next) { var user = this; if (user.isModified('password')) { // 비밀번호를 암호화 시킨다. bcrypt.genSalt(saltRounds, function (err, salt) { bcrypt.hash(user.password, salt, function (err, hash) { ..
## 사용자 정의 함수 ## 함수 3 요소 ## 1) input 입력값 인자 인수 매개변수 parameter argument ## 2) output 출력값 결과값 return 반환 ## 3) 기능 ▶ 함수명 ## 선언(정의) != 호출 ## 유형 1 def hello(): pass # 함수 미완성 ## 유형 2 def printMessage(name,msg='기본 메세지'): # 기본 인자(디폴트 인자) : JAVA의 오버로딩을 가능하게 함 print(name+'님의 메세지 : '+msg) def printInfo(*args): # 가변 인자 → 튜플(변화를 허용하지않는 리스트) print(type(args)) print(args) for v in args : ..
Node Mon코드를 변경할때 자동으로 감지해서 서버를 재 시작해주는 tool 기존에는 코드가 변경될때 매번 서버를 수동으로 재시작해서 확인을 해야했지만Node Mon을 사용하면 해당 작업이 불필요하다. npm install nodemon --save-dev dev를 붙이는 이유는 development 모드 즉 로컬에서 사용할때만 사용하겠다는 의미 "dependencies": { "body-parser": "^1.20.2", "express": "^4.19.2", "mongoose": "^8.3.2" }, "devDependencies": { "nodemon": "^3.1.0" }일단 dependencies가 아닌 devDependencies에 들어간다. 비밀 설정 정보 관..
복습 내용!while True: num = int(input('0 입력>>')) if num == 0 : break print('hello world') for i in range(10): print(i, end=' ') 함수와 메서드 함수는 주어가 없이 목적어만 갖는 것 C 기반으로 탄생한 함수 1) 내장 함수: Input, print, int, range, ... 2) 사용자 정의 함수 li=[20,1,100,88,45] 메서드는 주어(객체)가 있는 함수 == 객체지향 JAVA 기반으로 탄생한 메서드 단순문제해결은 함수가 유리한편 (대체적으로) 어떤 상황, 프로젝트, 반복되는 상황은 객체지향이 유리 (모듈화, 재사용성) Built In f..