728x90

분류 전체보기 186

[JavaScript] Date객체 String 타입변환에 따른 결과

발단 클라이언트에게 특정 Date객체를 보내주려고 하는데, 처음에는 반환하려고 하는 결과 중 문자열에 해당 날짜를 보내려고 했다. 그런데 그렇게 문자열에 반환하면 파싱하기 불편할 수 있으니, SuccessData의 2번째 매개변수에는 문자열, 3번째 매개변수에는 반환할 특정 결과를 any타입으로 전송하고 있어서 2번째 매개변수에는 휴면 처리가 완료되었다고 보내고, 3번째 매개변수에 날짜를 담아서 구분하려고 했다. 그랬더니 다른 결과를 반환하는 시간이 다른 것을 확인하게 되었다. 과정 아래는 내가 시도한 과정이다. const userDormantDate ~~~~ console.log( '@@@@@@@@@@',userDormantDate,`${userDormantDate}`); return res.statu..

개발/language 2023.09.09

[프로그래머스 | javascript] 무작위로 K개의 수 뽑기

문제 설명 랜덤으로 서로 다른 k개의 수를 저장한 배열을 만드려고 합니다. 적절한 방법이 떠오르지 않기 때문에 일정한 범위 내에서 무작위로 수를 뽑은 후, 지금까지 나온적이 없는 수이면 배열 맨 뒤에 추가하는 방식으로 만들기로 합니다. 이미 어떤 수가 무작위로 주어질지 알고 있다고 가정하고, 실제 만들어질 길이 k의 배열을 예상해봅시다. 정수 배열 arr가 주어집니다. 문제에서의 무작위의 수는 arr에 저장된 순서대로 주어질 예정이라고 했을 때, 완성될 배열을 return 하는 solution 함수를 완성해 주세요. 단, 완성될 배열의 길이가 k보다 작으면 나머지 값을 전부 -1로 채워서 return 합니다. 문제 풀이 function solution(arr, k) { var answer = []; fo..

에러를 들여다보는 습관

대부분의 라이브러리는 에러처리가 잘 되어 있어서 예외의 상황에서 에러가 나면 error를 catch했을 때 console.error(error)로 에러를 확인하곤 했다. 그런데 에러메세지에 validation falied라고 확인되어서 아 뭔가 입력값에 들어간게 잘못된게 있구나 파악은 했는데 딱 거기까지만 확인을 하고 라이브러리의 공식문서에서 확인하거나 구글링을 해서 파악했다. 구글링해서 잘 안나오면 답답할 때가 종종 있는데, 문득 생각해보니 이게 왜 에러인지 못찾는 쪽으로 책임을 돌리는 나를 돌아보게 되었다. 생각해보면 내가 어떻게 입력했는지, 어떻게 입력해야 하는지 디버깅을 하긴 하지만 습관적으로 검색부터 하려는 나를 보았다. 위 스샷에는 error의 data 프로퍼티에 3개의 프로퍼티가 있고, er..

개발/생각 2023.09.07

[JWT | Node.js] expiresIn 만료기간 적용이 안될때

문제점 새로 사이드 프로젝트를 준비하면서 jwt쪽을 구현하고 있는데, 갓 생성한 토큰인데도 jwt expired로 이미 토큰이 만료되었다는 이슈가 있었다. 환경변수로 expiresIn에 해당 값을 넣어줬으나 적용되지 않아서 생긴 문제로 보인다. 아래와 같이 구성했다. const accessToken = jwt.sign( accessTokenPayload, authConfig().ACCESS_JWT_SECRET, { expiresIn: authConfig().ACCESS_JWT_EXPIRATION, audience: 'onlyou', issuer: 'test', }, ); 해결 expiresIn: parseInt(authConfig().ACCESS_JWT_EXPIRATION, 10), 간단하다. env에서..

[NEST] custom validation pipe를 대체하는 간단한 로직

발단 swagger를 사용하고 있는데, 컨트롤러 단에 swagger관련된 코드가 생기니 점점 가독성이 안좋아지는 것 같았다. 그래서 컨트롤러 단의 코드를 분산시켜주기 위해 유효성검증 관련 로직은 DTO에서 구현하고, body에 validationPipe를 사용하여 분산시켰다. 그래서 입력값의 유효성 관련된 로직은 전부 DTO에서 처리하니, 컨트롤러 단에서 확실히 스크롤압박...은 많이 줄었는데 아쉬운 점이 있었다. DTO에서 처리하는 validatePipe가 한번에 걸러져서 에러가 전부 반환되는데 이 부분이 불편하다고 느껴졌다. 말로는 어려운 것 같은데, 아래를 살펴보자. 먼저 DTO에 입력한 내용이다. export class UpdateUserDto { @IsString() @Matches( /^(?=..

[자료구조] Set 객체 뽀개기 feat. 해시테이블

서두 코딩테스트 문제를 푸는데 중복된 문자열을 제외해야 쉽게 풀 수 있는 문제가 있었다. 문제에서는 그룹단어를 판별하는 문제였는데, 그룹 단어는 문자열이 반복되거나 1개만 나오면 괜찮은데 다른 문자열이 나열된 이후 기존 문자열이 있으면 그룹단어가 아니다. ex1) acsssc 여기서 c가 처음에 등장하고, 뒤에 다시 등장하기 때문에 그룹단어가 아니다. ex2) acsssd 다시 반복되는 문자열이 없기 때문에 그룹단어다. 배열로 반복문 돌리면서 인덱스에 1을 더해가며 확인하고, 별짓을 다해서 어찌 풀긴 풀었는데 아무리 봐도 이게 효율적이라고 느껴지지는 않았다. 다른 풀이는 어떻게 되는지 구글링을 하는데, 꽤 문제를 오래걸려서 풀면서 여러 방법을 고민하다보니 다들 생각이 비슷했다. slice이나 split을..

[NEST] custom repository

서두 이전에 typeORM을 처음 익히면서 대부분의 포스팅이 nest관련된 것들이여서 express도 고작이였던 내게 버거웠던 기억이 난다. 그리고 그 당시에도 typeORM이 0.3이 나오면서 크게 달라져서 많은 사용자들이 난항을 겪었던 것들을 봤다. 가장 큰 부분은, Custom Repository를 만드는 방식이다. 이전에는 @EntityRepository() 에 변수로 repository를 넣어서 컨트롤러나 서비스 등에서 참조해서 사용했던 것 같은데, 아무튼 나는 애초에 이렇게도 써보지 않았기 때문에 중요한 것은, 이제 그럼 어떻게 해야 하는 것인가. 이다. @Injectable() export class UsersService { constructor( @InjectRepository(User)..

[엘리스트랙 SW 4기] 교육을 마무리하며 솔직한 후기..(2)

엘리스의 장단점 물론 나는 200% 만족하지만, 아무래도 단점이 없을 수는 없고, 또 장점보다 단점이 커보이고.. 자세하지만 끝까지 읽어본다면 엘리스 너무 좋은 곳임을 알 수 있을 것 같다. 1. 장점 - 프로젝트 내가 먼저 꼽을 수 있는 엘리스의 장점은 프로젝트때 코치님과의 티키타카였다. 물론 다른 부트캠프를 경험해본 것이 아니기 때문에 이게 엘리스만의 장점인지는 말할 수 없다. 그리고 프로젝트 때 프론트와 백의 유기적인 소통이 있기 때문에 아무리 한 쪽에 있다고 해도 다른 한쪽의 어떠한 애로사항에 대해 조금은 파악하고 배워갈 수 있다. 그리고 2차 프로젝트는 반대의 포지션으로 경험해볼 수도 있다. 그런데 아마 프론트 중심의 교육이기에 프론트 인원의 비율이 많아서 백으로 가는 것은 쉽지만 프론트를 원할..

[엘리스트랙 SW 4기] 교육을 마무리하며 솔직한 후기..(1)

엘리스트랙을 성공적으로 수료하며 개인적으로 느낀 소감에 대해 적어보려 한다. 단순히 내가 느낀 점이기 때문에 다른 사람과 다를 수 있고, 고민하는 다른 사람들에게 도움이 되도록 솔직하게 나누려 한다. 일단 나는 아주 아주 아주 200% 만족하고 있는 사람이라는 점을 명시한다.... ^^ 먼저 내가 어떤 상태였냐면.. 나는 올 해 1월에 처음으로 코딩을 공부했다. 블로그의 포스팅이 그 때 시작되었고, 새삼 지금의 성장에 놀랍다.. ㅎㅎ 처음에는 친한 형들의 도움으로 부트캠프에 들어가서 실무교육을 받는 것도 중요하지만 정말 기초적인 CS(Computer Science)에 대해 배우길 권했고, 네이버에서 무료로 수강할 수 있는 부스트코스로 정말 아주 기초적인 자료구조와 알고리즘 부분들을 배웠다. 메모리... ..

728x90