목록전체 글 (138)
나의 개발일지(김지헌)

오늘은 Artillery로 api 성능 테스트를 했다. //개발자 모드로 설치 npm run -D artillery //빠른 부하테스트 확인 npx artillery quick --count 100 -n 50 http://localhost:3000 --count : 요청하는 가상의 인원 -n : 요청 횟수 --rate : 초당 요청 min: 제일 빠른 응답(0.16sec) max: 제일 느린 응답(0.16sec) median:응답 평균치((0.159sec) p95:응답 중 95번쨰 느린값(0.159sec) p99:응답 중 99번쨰 느린값(0.159sec) 평균치와 p95,p99 의 차이가 크지않으면 성능이 좋다고 보면 된다. Artillery로 시나리오로 작성해서 유저의 행동 패턴을 예측해서 사용 할 수..
오늘은 카카오톡 소셜로그인을 프론트와 맞춰봤다. 기존 코드 더보기 import { Router } from 'express'; import passport from 'passport'; import dotenv from 'dotenv' import callback from '../../utils/kakaojwt' import passportCogfig from '../../passport/index'; //패스포트 임포트 해줘야 가능하다. passportCogfig(); dotenv.config() const router = Router(); // kakao로 요청오면, 카카오 로그인 페이지로 가게 되고, 카카오 서버를 통해 카카오 로그인을 하게 되면, 다음 라우터로 요청한다. router.get('/'..
WIL 커스텀 에러 : 처음 작성된 코드는 내장된 Error의 인터페이스를 불러와서 상속을 받고 재선언 후 사용하고 있는데 너무 비효율 적이고 이미 내장된 코드를 한번 더 만든다는것 자체가 좋지 않은 코드였다.(이유에는 2022버전을 사용해서 내장된 Error인터페이스가 다른것을 보고있는 문제) 해결 : ts.config에서 자바 버전 2022를 삭제 한 후 Error를 extends해서 없는 status를 타입을 명시 해줬다. export class ValidationErrors extends Error { public status:number constructor(message: string, status?: number) { super(message); this.status = status || 4..
오늘은 에러 쪽 코드를 바꾸고 , 토요일 날씨만 보여주는 api를 만들었다. 기존 코드 //Error interface //에러 타입 추가 export interface Error { name: string; status?: number; } //에러 생성자 export interface ErrorConstructor { new (message?: string): Error; } //시스템 에러 export interface SystemError { status: number; message: string; } //exceptions.ts import { ErrorConstructor } from '../interface/Error'; //오류 선언해준다는 의미 declare let Error: Erro..
깃허브 액션을 공부를 하다가 제가 맡은 날씨의 알고리즘을 짜야해서 깃 허브 액션 공부를 미뤄두고 알고리즘을 짜고 있었다. 일~토요일 16:59까지는 금주의 토요일 날씨로 업데이트 그런데 토요일 17시부터는 다음주 토욜 날씨 제공으로 업데이트 라는 알고리즘을 짜야하는데 어떤 방법이 좋을까 고민하고 있다. DATE 함수를 가지고 17시 기준으로 로직을 실행시킨다. 노드 스케줄로 로직을 짜야할 거 같다.
오늘은 코드를 유지 보수를 하고 프런트와 맞춰가면서 코드를 수정을 했다. 그리고 자동 배포를 하기 위해서 깃허브 액션을 공부하는 중인데 조금 어려운 거 같다. ubuntu에 파일질라로 코드를 빌드를 한 코드만 넣어주는 중인데 많이 번거로운 거 같아서 깃허브 액션으로 자동화를 해보고 싶어서 공부를 하는 중이다. 아직 까지 개념이 잘 안 잡히는 거 같아서 조금 더 해봐야겠다.
오늘은 중복된 코드를 통합을 하고 어제 성능 측정을 했던 코드를 실제 우리가 필요한 코드로 바꾼 후 한번더 측정을 해보았다. 기존 라우터 코드 //userRouter import { upload } from '../../utils/multer'; router.put('/myPage', authmiddleware, upload.single('profileImg') , User.updateUser); //reviewRouter import { uploads } from '../../utils/multer'; //리뷰작성 reviewrouter.post('/:campId/review', authmiddleware, uploads.array('reviewImg',4),reviewController.createR..

오늘은 doNm을 기준으로 페이지 네이션을 구현한 캠프 api를 쿼리 문과 시퀄 라이즈 ORM을 비교해 보았다. 처음에는 쿼리문을 썻었는데 시퀄 라이즈 orm으로 썼을 때와 성능적인 면에서 얼마나 차이가 날까 궁금해졌고 코드를 작성해봤다. 검색을 해서 찾아 봤을 때는 쿼리문이 퍼포먼스가 더 빨랐던 거로 기억을 하는데 같은 코드를 쿼리 문과 비교를 해보니 조금씩 다른 거 같다. getByRegionCamp: async ({doNm, numOfRows, pageNo}:getCamp) => { const regioncamp = `SELECT * FROM camp AS Camp WHERE doNm LIKE '%${doNm}%'LIMIT ${numOfRows} OFFSET ${pageNo};` const regi..