본문 바로가기

분류 전체보기100

카카오 로그인/로그아웃 기능 개발(REST API) 공식문서에 가면 튜토리얼이 잘 되어있지만 잘 모르겠어서 정~말 여기저기 도움을 많이 받은 기능.. ^^ 이다! 1. GET/ 카카오 인가코드받기 2. POST/ 인가코드 보내서 엑세스 토큰받기 3. GET/ 카카오 사용자 이름, 이메일 통해 데이터베이스(이번 플젝의 경우 prisma) 안에 정보 저장, 인증 쿠키 발행하기 간단하게 이런 단계로 구성되어있고, 하나하나 과정에 대해 설명해보려 한다. 카카오 로그인을 사용하기 위해 선행으로 kakao developers 로그인해서 내 애플리케이션 등록하기, redirect uri 등록하기 등 여러 절차가 있는데 그건 카카오 공식 홈페이지를 보고 따라해도 충분해서 생략한다. 인가코드 받기 카카오 로그인 동의 화면을 호출하고, 사용자 동의를 거쳐 인가코드를 발급한.. 2024. 2. 6.
Err#2 - 알면알수록 허무한 디버깅 과제를 제출하고 받은 피드백을 토대로 코드를 수정하던 중 기존에 잘 되던 코드가 갑자기 안되는 에러가 있었다. 오늘의 오류는 대략 이렇다... 1. 우선 jwt.sign 함수를 모듈화 하라는 피드백을 받고 이런식으로 따로 파일로 빼주었다. import jwt from "jsonwebtoken"; import dotenv from "dotenv"; dotenv.config(); export default function (n) { return jwt.sign({ userId: user.userId }, process.env.SESSION_SECRET_KEY, { expiresIn: n, }); } 2. jwt.sign을 쓰는 로그인 api도 수정했다. import JWT from "../utils/jwt... 2024. 2. 5.
프로그래머스 JavaScript - 이상한 문자 만들기 문제 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. s return "try hello world" "TrY HeLlO WoRlD" 문제풀이 function solution(s) { var answer = ''; let arr = s.split(" ") for(i=0;i 2024. 2. 5.
AWS EC2 인스턴스에 프로젝트 배포하기, PM2 사용하기 AWS EC2 Instance 생성 1. EC2 서비스에서 인스턴스 시작 클릭 2. Ubuntu, Ubuntu Server 22.04 KTS(HVM), 64비트 선택 3. EC2 인스턴스 유형: 프리티어 사용가능이라 적혀있는 t2.micro 타입 선택 4. keypair 이름 지정 및 다운로드: 키페어유형 RSA, 프라이빗 키 파일 형식 .pem 인스턴스 보안그룹에 들어가 인바운드 규칙편집까지 같이 해주기 규칙추가 > 사용자 지정 TCP, 포트범위 지정(내 Node.js 서버 포트번호), 소스는 Anywhere-IPv4 네트워크 설정 - 퍼블릭 IP 자동할당 비활성화 ★ ★ ★ ★ ★ ★ AWS EC2 접속하기 Window의 경우 git bash라는 프로그램으로 접속 1. 리눅스 명령어 사용해 키페어가 .. 2024. 2. 2.
API 명세서, ERD 작성하기 기능 api url method request header request response response header 회원가입 /sign-up post { email password name age gender } { message: "회원가입을 축하드립니다."} 로그인 /sign-in post { email password } { message:"ㅇㅇ님 환영합니다!"} { “authorization”: “Bearer eyJhbGciOiJIUzI1NiIsIn…” } 사용자 조회 /users get { authorization: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjEsImlhdCI6MTY5MTA1NTc5OH0.2bM9s-Vv312rgkR.. 2024. 2. 2.
Err#1 - PrismaClientValidationError queryString으로 order데이터를 받아 정렬방식을 결정하는 부분이 있었는데 내 스키마모델에서는 작성자명을 표시하려면 새로운 관계 정의가 필요했다. 기존 관계는 Users와 UserInfos는 1:1 그리고 Users와 Resumes는1:N관계였는데 작성자명(name)은 UsersInfos에만 있는 정보라 Resumes필드와 새롭게 1:N관계를 정의해주었다. 그런데 새로운 관계를 정의하고 나니 기존에는 됐던 이력서작성 api가 말썽을 부렸다. crate할 data에는 user라는걸 만들지도 않았는데.. 이런 오류가 왜 생기는지 알아보았다. 이러한 오류로, 아마 새롭게 관계 정의한것 때문에 userInfoId가 필요한듯 해서 넣어주었다. userInfoId 는 NaN이 떠서. .. 결국 튜터님한테 .. 2024. 2. 1.
프로그래머스 JavaScript - 최대공약수, 최소공배수 구하기 문제 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 두 수는 1이상 1000000이하의 자연수입니다. n m return 3 12 [3, 12] 2 5 [1, 10] 문제풀이 function solution(n, m) { var answer = []; let max = [] //n이 더 클때 if(n>m){ for(i=1;in){ for(i=1;im){ for(i=1;in){ for(i=1;i 2024. 1. 31.
자바스크립트 코테 핵심로직(2) 탐색 알고리즘 중 DFS를 공부해보자 탐색 알고리즘이란? 그래프의 모든 정점들을 특정한 순서에 따라 방문하는 알고리즘 그럼 그래프는 뭔데?! 그래프란, 자료구조 중 하나이다. 한 나라에는 도시들이 여러개 존재하고 이들은 도로들이 연결지어주고있다. 이때 이 도시들과 그에 연결된 도로를 합쳐서 자료구조로 만든것이 그래프이다. 정점은 도시들이 되고, 간선은 도로들이 된다. (근데 왜 1에서는 2, 3만 갈 수 있는걸까..?) 제대로된 정의는 다음과 같다. 정점과 간선으로 구성된 한정된 자료구조를 의미하며, 각각의 지점을 정점이라고 한다. 그리고 정점과 정점을 연결시켜 주는 것을 간선이라 부른다. 이런 그래프 자료구조를 탐색하는 것이 DFS(깊이우선탐색), BFS(너비우선탐색)이다. 왜 DFS, BFS를 알아야 하는가? 그냥 탐색하면 안되나? 왜 .. 2024. 1. 30.
자바스크립트 코딩테스트 핵심로직(1) 코딩테스트 문제를 하루에 1~3개씩 풀어보고있는데 아직도 자바스크립트 사용한 로직에 익숙하지 않아 구글링을 하는 내 모습을 보며.. 😒 차라리 공부를 확실하게 하고 넘어가자 싶어 글을 쓰게 되었다! 1. forEach forEach를 통해 배열을 하나하나 돌 수 있다. 다음과 같이 사용하면 콘솔창에 배열의 요소와 인덱스까지 같이 출력되는것을 알 수있다. 2. split split은 문자열을 사용자가 설정한 기준에 따라 나눠서 배열을 만들어 준다. 이 배열을 다시 문자열로 만들고 싶다면 join을 사용하면 된다. const a = ret.join("") //HelloWorld const a = ret.join(" ") //Hello World const a = ret.join(" hi ") //Heloo .. 2024. 1. 30.