TIL 43

TIL :: uuid 인코딩 / 디코딩

사이드프로젝트를 하다가 조회로직을 작성하려고 했다. 근데 생각해보니 처음 id를 uuid 타입으로 사용을 해서 조회를 할 때, 문자열로 들어오는 값들을 다 넣어야 하나?? 라고 생각이 들어 실행을 해봤더니 다 넣어야했다..그래서 url의 길이가 너무 길어져 줄이고싶어 방법을 알아보다가 uuid를 인코딩에서 보내주고 다시 디코딩한 값을 읽게 할 수 있다는걸 알게되어 적용해봤다. 우선 위와 같이, 임포트를 해주는데 처음에 base62라이브러리를 사용하려했지만, 버전 관리등 문제가 생겨 다른 라이브러리인 base-X 를 사용했다. 그래서 선언해주고 아래에 base62 인코딩 방식에서 사용되는 62개의 문자를 정의하고, 정의한 문자들을 baseX로 사용하기위하여 정의하였다. 다음으로는, 인코딩/디코딩할 함수들을..

TIL/개인 TIL 2023.11.17

TIL :: Search

Controller @Controller('searches') export class SearchController { constructor(private searchService: SearchService) {} @Get() async searchProduct(@Query() data: ISearchQuery) { return await this.searchService.searchProduct(data); } } 쿼리 파라미터를 만든 다음에 인터페이스로 타입을 설정 해주었다. 인터페이스에서 정리한 타입들은 아래와 같다. 카테고리가 대 - 중 - 소 이렇게 있기때문에 각각의 카테고리들도 타입을 설정해주었다. Service @Injectable() export class SearchService { co..

TIL/개인 TIL 2023.11.15

TIL :: Prisma

평소에 자주 사용하던 ORM에는 Sequelize와 TypeORM과 같은 것들을 사용했는데, 최근 여러 회사에서도 Prisma를 사용하는 곳이 많은것 같아서 공부하고 사용하게 되었다. 우선 Prisma가 무엇인가? 라고 하면 최근 많이 사용하고 있는 ORM이고 REST API, GraphQL 등 모든 곳에서 사용이 가능하다. 그리고 사용하면서 느낀 점은, 모델을 정의하고 타입들을 다 지정해주면서 안전하게 데이터를 가지고 올 수 있고, 코드를 적으며 스키마에서 적용했던 타입들이 아닐때에는 바로 오류를 반환해서 타입안정성이 정말 좋다고 느꼈다. 일단은 사용을 하기위해선 1. 초기 세팅 npm install prisma —save-dev 라이브러리를 다운받아주고, 그 다음 prisma init 을 하게 되면 ..

TIL/개인 TIL 2023.11.15

TIL :: 자바스크립트 Slice Method

코드를 작성하다가 오랜만에 JS 배열 메서드중 하나인 Slice() 메서드를 사용해봤다. 이 메서드를 사용하는 목적은 특정 부분을 잘라서 새로운 배열 형태로 나타나기 위함인데, Slice 메서드에는 두 매개변수가 필요하다. 1. 시작 Index 2. 종료 Index 우선 예제를 통해 간단하게 설명해보겠다. array 라는 변수를 만들어서 배열형태로 만들어 보았는데 slice 메서드를 통해 파라미터(1,3) 을 주었다. 배열의 인덱스는 0부터 시작하는데 위의 방법으로는 1~3까지의 인덱스 값들을 가지고 온다는 뜻이여서 결과값이 [2,3,4] 가 나올것이라고 나는 예상을 했다. 그리고 터미널을 통해 실제 결과값을 확인해보면, [2,3] 배열만 나온것을 볼 수 있는데, 이 이유는 너무도 간단했다. 오랜만에 사..

TIL/개인 TIL 2023.10.01

[내배캠 TIL ] 10주차 금요일 ::node.js 와 ejs 의 차이

javascript를 통해 브라우저를 연결하는것과 ejs 라는 템플릿을 이용해 브라우저를 띄우는것에 대해 고민을 하던 와중 도대체 두개는 무슨 차이가 있을까? 라는 고민이 생겨 알아보았다. 우선 내가 알고있는 상황은 javascript를 통해 브라우저를 띄우기 위해서는 fetch문을 통해 api를 연결해주고, ejs 같은 경우는 render를 통한 방식으로 브라우저에 api를 연결해준다. 그리고 검색을 하면서 node.js를 통해 브라우저를 띄우는 방법고 ejs를 통해 브라우저를 띄우는 방법에 대한 차이는 우선 크게 다르지는 않는것 같은데 실무에서는 ejs를 잘 쓰지 않는다고 하는 것 같다. 하지만 혼자 개발을 할 때에는 node.js , jade가 편리하고 팀단위로 개발을 할 때에는 ejs를 추천한다고..

[내배캠 TIL ] 10주차 목요일 :: Team Project

맡은 기능을 구현을 하고 다른부분을 할 것이 있는지 물어봤는데 새로 해야 할 것이 생겼다. 그것은 바로 admin계정 즉 관리자가 가게 등록을 하였을때 model 쪽에 추가를 했던 컬럼이 있다. role: { defaultValue: 0, type: DataTypes.INTEGER, }, 이 role 이라는 컬럼인데 초기 값은 defaultValue : 0 으로 설정이 되어 있는데 관리자가 가게 등록을 하였을때 defaultValue의 값이 1로 바뀔수 있게 하는 것이였는데 , 처음에는 팀원분들의 요구사항을 이해하지 못하였지만 다시 한번묻고 또 묻고해서 내가 생각한대로 기능을 구현하였는데 결과적으로 잘된 것 같다고 하셨다. 우선 어떻게 진행을 하였냐면 가게를 등록하는 과정에서 defaultValue의 값..

[내배캠 TIL ] 10주차 수요일 :: Team Project

팀프로젝트를 시작한지 벌써 중간은 온것같다. 시간이 엄청 빨리 지나가는것 같은데 빨리 지나가는 것 만큼 프로젝트 속도는 나오지 않는 것 같다. 근데 어찌보면 당연한? 것일지도 모른다는 생각이 들긴 하다.. 어제 가게 목록페이지를 구성한 다음 오늘 할 일은 관리자 가게 등록 페이지다. 이것도 사실 가게 목록페이지와 크게 다를건 없는것 같아서 서버쪽 로직을 짜는것은 그리 오래 걸리지 않았다.일단 구현한 브라우저를 먼저 보여주면은, 위 사진처럼 구현을 하였는데 화요일 TIL에서 말한것 처럼 프론트쪽은 아직 모르는 것들이 많아서 설명을 잘 못하겠다. 그리고 꾸미는것은 부트스트랩 홈페이지를 이용해 라이브러리를 가져다 썼다. 그리고 각 코드에 손가락 이모티콘을 넣어서 나름 귀엽게?? 꾸미려고 했던것 같다. 밑에 보..

[내배캠 TIL ] 10주차 화요일 :: Team Project

월요일 동안은 발제를 듣고 팀원분들과 기능분담과 ERD , wire - frame , API 명세서를 작성하였다. 내가 우선 처음적으로 할 것은 가게 목록페이지 였다. 처음 파일구조를 만든 뒤 git 에 올려 clone 을 받고 npm 을 설치(install)를 하고 시작을 했다. 이렇게 준비를 하고 파일을 생성하였다. 가게목록 페이지의 서버쪽은 코드를 작성하는데 그렇게 큰 어려움이 있지 않았다. 몇십분도 안걸렸던것 같았는데 여기서 문제점들이 있었다. 첫번째로는 router에서 서버를 만든 코드들을 브라우저로 띄우는 문제 이전에는 ejs 를 사용해서 render 를 통해 브라우저로 연결을 했었는데 지금은 ejs 를 사용하지 않아 전에 했던것을 참고하면서 코드를 작성하지도 못했고 어떻게 해야 할 지 감이 ..

[내배캠 TIL ] 10주차 월요일 :: Team Project

아침 일찍 팀프로젝트 발제를 진행하면서 선택지가 2개가 있었는데, 첫번째로는, 가 있었고 두번째로는, 가 있었다. 조 편성을 새롭게 해서 새로운팀원들과 일주일 동안 프로젝트를 하게 되었는데, 잘 모르는것 들이 많지만 서로 공유하고 git에 branch를 만들어 작업을 하면서 자주 merge를 하고 오류들을 해결해야 할 것 같다. 그래야 나중에 충돌도 많이 없고 병합하는 과정에서 시간을 버리지 않을 것 같다. 일단 우리조는 2번째 를 할 것 같다. 펫시터보다는 좀더 요구하는 사항이 많아서 코드들이 더 추가 될 것 같은데 한번 해보면서 오류나 협업과정들을 겪어야 할 것 같다. 우선 기능분담을 먼저 하였는데 기능별로 나눌수도 있지만 우리는 페이지 별로 나누었다...