전체 글
-
리팩토링 (양방향 암호화 encrytion, decrytion)카테고리 없음 2024. 8. 16. 11:41
현재코드( create 함수 내부에 코드 ) 위에 현재 create 함수를 보시면Id와 Password 모두 암호화를 진행하기 위해 두개의 iv와 두개의 cipher를 만들고 있는 코드로 진행했고 ,, update 함수에서도 Id와 Password 변경시에 위와 동일한 코드로 진행 해주어야 하기 때문에동일한 코드를 4번을 쓰는 안좋은 코드라고 느껴 리팩토링을 진행하기로 하였다. 몇개의 다른 코드들도 마찬가지,, 이와같이 encrytion 암호화 함수를 하나 따로 빼고 accountId, accountPw를 데이터로 받아 암호화를 진행하여 DB에 save하는 함수로 변경 이와 동일하게 decryption 복호화도 똑같이 진행하였고,다른 몇몇의 함수들도 동일하게 변경하여 코드에 가독성과 유지보수성을..
-
Redis cache connect카테고리 없음 2024. 8. 10. 18:11
https://docs.nestjs.com/techniques/caching nestjs 캐싱 해당 내용은 Redis를 이용한 cache 연결 방법입니다. 아래의 내용은 위 nestjs 공식문서 링크에서 가져온 내용 해당 링크와 맞게 코드를 구성하면cache manager redis store 버전이 맞지않아 store에 에러가 발생한다. 때문에 cache manager ioredis 라이브러리를 사용하여 모듈을 구성해주었다 . 해당 host , port , passwordhttps://redis.io/ Redis - The Real-time Data PlatformDevelopers love Redis. Unlock the full potential of the Redis database with..
-
Crypto (트러블슈팅)카테고리 없음 2024. 8. 6. 22:07
어제 정리한 내용을 토대로 우리 프로젝트 코드에 접목 시켜보았다 . @Injectable()export class UserSubscriptionsService { constructor( @InjectRepository(UserSubscription) private readonly userSubscriptionRepository: Repository, ) {} async create( { startedDate, paymentMethod, period, accountId, accountPw, price, }: CreateUserSubscriptionDto, userId: number, platformId: number..
-
Crypto 양방향 암호화카테고리 없음 2024. 8. 6. 20:27
https://docs.nestjs.com/security/encryption-and-hashing Nest.js 공식문서 import { createCipheriv, randomBytes, scrypt } from 'crypto';import { promisify } from 'util';암호화 const iv = randomBytes(16);const password = 'Password used to generate key';// The key length is dependent on the algorithm.// In this case for aes256, it is 32 bytes.const key = (await promisify(scrypt)(password, 'salt', 32)) as ..
-
query string, params 차이와 사용하는 이유카테고리 없음 2024. 7. 23. 22:43
사용 서비스에 대한 리뷰 API를 작성하는 도중에 처음 작성 내용리뷰등록 : [post] service/:serviceId/review리뷰 목록 조회 : [get] service/:serviceId/review 그런데 과거의 트렐로 과제에서는 워크스페이스 속해 있는 보드에 속해 있는 리스트 안에 있는 카드를 불러오려고할때그 당시 작성 APIworkspace/:workspaceId/board/:boardId/list/:listId/card/:cardId 이와같이 사용하다보니까 확실하게 나타낼수는 있지만 엔드포인트가 너무길어서 오히려 가독성과 restfull하지 못하다고 생각해서 query로 작성하여서 이번에도 똑같이 serviceId를 query string 작성 후 내용리뷰등록 : [post] /..
-
24-07-16 (LEXORANK 발표준비)카테고리 없음 2024. 7. 17. 15:28
LEXORANK 사용이유 선택이유동시 변경이 잦은 상황에서 순위값 충돌을 줄이고 싶을 때 사용할 수 있는 구현ㄴ> 사용자들과 내용을 공유함으로 실시간으로 사용자들이 동시에 변경이 이루어짐 LEXORANK 알고리즘 소개 LexoRank는 "lexicographical rank"의 줄임말로 문자열의 사전적 순서를 활용해 순위를 결정하는 알고리즘입니다. 예를 들어, 일반적인 숫자 정렬에서 100은 99보다 낮은 순위이지만, LexoRank에서는 사전적 정렬에 따라 1이 9보다 앞에 있으므로 100이 99보다 높은 순위입니다. ex ) asc 오름차순 (극단적 예시)일반적인숫자정렬orderex_2ex_3ex_4listId = 11000100543listId = 41.500190099100listId = 220..
-
24-07-12 (LEXORank)카테고리 없음 2024. 7. 15. 23:47
nest js, typescript 심화 이번 프로젝트인 트렐로 구현하기에서 드래그 인 드롭을 구현이 있엇다 팀원 의논으로 1. order컬럼을 생성하여, 직접만들어 구현하는것2. 링크드리프트를 이용하여 구현3. Jira에서 사용중인 lexorank를 이용하여 구현 lexorank를 사용하기로 하였다.이유는 구글링을통해 많은 자료와 이미 사용중인 곳이 많아 자료가 많아 어느정도 구현이 비교적 간편할 것이라고 생각이 되었다. lexorank란 ?LexoRank는 "lexicographical rank"의 줄임말로 문자열의 사전적 순서를 활용해 순위를 결정하는 알고리즘이다.예로는 일반적인 숫자 정렬에서 100은 99보다 낮은 순위이지만, LexoRank에서는 사전적 정렬에 따라 1이 9보다 앞에 있으므로..
-
24-07-08 (Entity란 ?)카테고리 없음 2024. 7. 9. 23:56
Typescript , Nest.js를 배우고, 작업을 하면서 Entity와 Dto의 역할은 무엇이며, 또한 각자 역할이 무엇인지 알아야겠다....Entity는 사용하면서 Database랑 validate와 table를 생성하는 역할에 기여를 하는것 같은데 내 생각이 맞는지 한번 정리를 해봐야 할꺼같다 . 금일은 Entity를 알아보고 다음날에는 Dto 정리를 한번 해봐야겠다. Entity란 ?( Entity는 데이터베이스의 테이블과 매핑되는 객체입니다. 간단히 말해, 데이터베이스 테이블의 스키마를 정의하고 해당 스키마에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행하는 데 사용됩니다. )인터넷에서는 이런식으로 나오지만, @Controller('auth')export..