오늘해야할일
알고리즘 문제풀이
[약수의 개수와 덧셈]
function solution(left, right) {
let answer = 0;
for (let i = left; i < right++) {
if (Number.isInteger(Math.sqrt(i))) {
answer -= i
}else {
answer += i
}
}
return answer
}
Number.isInteger(Math.sqrt(i)) =>
제곱근이 정수이면 answer -= i 이고
제곱근이 정수가 아니면 answer += i 이다.
제곱근이 정수이면 약수가 홀수이고 , 제곱근이 정수가 아니면 제곱근이 짝수이다.
음양 더하기
function solution(a,b) {
let answer = 0;
for (let i = 0; i < a.length; i++) {
if (b[i] === true) {
answer += a[i]
}else {
answer -= a[i]
}
}
return answer
}
나머지가 1이되는 수 찾기
function solution(bn) {
let answer = 0;
for (let i = 2; i < n; i++) {
if (n % i === 1) {
return i
}
}
}
빈도수 세기 패턴!
function vaildAnagram(first, second) {
if (first.length !== second.length) {
return false
}
const lookup = {}
for (let i = 0; i < first.length; i++) {
let letter = first[i]
lookup[letter] ? lookup[letter] += 1 : lookup[letter] = 1
}
for (let i = 0; i < second.length; i++) {
let letter = second[i]
if (!lookup[letter]) {
return false
}else {
lookup[letter] -= 1;
}
}
return true
}
첫번째 매개변수와 두번째 매개변수의 길이와 문자열이 동일한지를 확인하는 알고리즘이다.
예를 들어서 => ("anagram","nagaras") 길이는 서로 동일해서 넘어간다.
그리고 lookup = {} 객체안에 a라는 문자열이 없으면 기본값을 1로 설정하고 만약에 a가 있다면 +1을 해주어서 매개변수에 어떤 알파벳이 몇개나 있는지를 알수있다
황씨의 즐거운 API 작성일지~~
API작성은 재밋는거같다
내가 작성한 API를 클라이언트툴로 테스트해보고 200이 뜨면 정말 기쁘다
오늘은 간단한 app.js셋팅 그리고 로컬Mysql DB 생성 및 Sequelize 설정
그리고 user.js -> 회원가입/로그인/로그인체크/로그아웃 API를 작성해보았다
물론 미들웨어도
사용한 라이브러리
helmet , hpp는 가장 기본적인 HTTP보안라이브러리라서 추가하였고
morgan은 로그창에다가 ip,method 등등 간단하게 정보를 알려주어서 사용했다
nodemon은 뭐... 개발 한두번할거아니면 무조건 넣어주는 패시브 스킬같은거라서 넣었다
정말 1시간 바짝해봤는데 너무재밋는거같다 ㅋ
파일구조이다.
처음에는 controllers를 사용하는게 너무 어색하고 굳이 이걸 이렇게??!! 사용해야한다고?? 했는데 정말편하다.
bcrypt
회원가입API 적용
간단하게 한줄입력하면된다.
-bcrypt로 해쉬화를 하겠다는거고 숫자10은 숫자가 커질수록 더 복잡한 해쉬화를 할수있다.
const hashed = bcrypt.hashSync(userPw, 10)
-DB에 저장할때에는 이렇게 저장해야한다.
await User.create({userId,userPw:hashed)
로그인API 적용
간단하게 한줄 입력하면된다.
compareSync => 지정된 hash와 입력받은 password의 hash가 일치하는지 확인하는 bcrypt의 함수이다.
그리고 userPw , user.Pw는 => userPw 는 입력받은 text 값이다.
user.userPw는 user의 password hash값으로 hash를 해독해서 text를 비교하는것이 아니라 text값을 hash로 만들고 그 값이 일치하는지를 확인하는 과정이다.
const unHashPw = bcrypt.compareSync(userPw, user.userPw)
오늘은 여기까지