본문 바로가기

TIL40

redis cloud 이용해 조회수 기능 구현하기 작품과 컬렉션을 조회하면 조회수가 올라가는 기능을 구현하려 한다.내가 생각했을때 필요한 로직은 다음과 같다.1. 로그인 사용자와 비로그인 사용자 둘다 조회수에 영향을 준다.2. 여러번 조회했을때는 한시간에 한번만 조회수에 영향을 준다. 해당기능을 구현하기 위해서는 여러가지 방법이 있다.1. 쿠키를 이용하는 방법. 2. 세션을 이용하는 방법3. 레디스 서버를 이용하는 방법.  이 중에서 내가 고려한것은 쿠키 또는 레디스를 이용하는 방법인데,쿠키를 이용하려면 사용자가 작품을 조회하면 쿠키에 작품 아이디를 넣어 돌려준다.작품 조회 할때마다 사용자가 갖고있는 쿠키에 작품아이디가 있는지 확인해서 있으면 중복조회로 간주, 없으면 조회수 1 추가. 이런식으로 로직을 구현하면 된다.그러나 쿠키에 담을 수 있는 데이터에.. 2024. 4. 30.
Nest) request Query nullable 명시했으나 오류가 생기는 문제 @ApiOperation({ summary: '리뷰 조회' }) @Render('detailContent') @Get() async getCReivew( @Param('webContentsId', ParseIntPipe) webContentsId: number, @Query('page', ParseIntPipe) page?: number, @Query('order') order?: string, @Query('option') option?: string, ) { const result = await this.reviewService.getCReviews( webContentsId, page, order, option, ); const { content, reviewList, totalPages } = r.. 2024. 4. 18.
GCP Compute Engine 이용해 서버 배포하기 gcp를 이용해 서버 배포하는법을 알아보자! aws EC2 ubuntu 서버와 동일하게 대응하는것은 GCP의 Compute Engine 이다. 우선 Compute Engine에 들어가 인스턴스 만들기를 눌러준다. 새 vm 인스턴스, 템플릿에서 만들기, 머신 이미지 등등 많지만 우리가 사용할것은 vm 인스턴스이다. 이름: 내가 사용할 인스턴스 이름설정 리전: 서울로 설정(근데 왜 라스베가스보다 가격이 올라가는...?) 머신구성: N1 우리가 aws에서 항상 하던 그놈 부팅디스크는 Ubuntu로 설정해준다. 다른 블로그에서는 크기를 20으로 맞추던데 상황따라 하면 될것같다. 방화벽도 이렇게 설정해준다. 그리고 만들어주면 끝!! 정상적으로 만들어진 인스턴스에 들어가서 SSH > 브라우저 창에서 열기를 클릭하면.. 2024. 4. 16.
힙 정렬 힙정렬 우선순위 큐를 위해 만들어진 자료구조 완전 이진트리의 일종, 우선순위 큐를 위해 만들어진 자료구조 모든 데이터 정렬이 아닌 최댓값 몇몇개, 최솟값 몇몇개 뽑아낼때 유리하다 자료구조/삭제되는 요소 스택 - 가장 최근에 들어온 데이터 큐 - 가장 먼저 들어온 데이터 우선순위큐 - 가장 우선순위가 높은 데이터 힙은 일종의 반정렬상태를 유지함 - 큰값이 상위레벨, 작은값이 하위레벨에 있는 느슨한 정렬상태 - 부모노드의 키값이 자식노드의 키 값보다 항상 큰 이진트리 중복된 값을 허용한다.(이진탐색트리에서는 중복된 값을 허용하지않음) 표준적 자료구조는 배열 편한 구현을 위해 0은 사용하지않음 새로운 값이 추가되면 아래인덱스부터 비교해 교환해나간다. 부모노드=i 왼쪽 자식노드=2i 오른쪽 자식노드=2i+1 8.. 2024. 4. 12.
이모지 문자 mySql에 저장하기 크롤링 해 온 데이터를 db에 저장하는 과정 중 오류가 발생했다. "Incorrect string value: '\\xF0\\x9F\\x92\\xAC\\xF0\\x9F...' for column 'reviews' at row 1" sql 에러메시지를 살펴보니 다른 리뷰들과 다른 부분이 눈에 띄었다. 바로 😎👽🐸 이런 이모지들...!! 이모지 같은 문자들은 글자당 최대 4바이트의 사이즈가 필요한데 Mysql의 utf8 문자셋의 경우 글자당 최대 3바이트까지만 지원한다. 그래서 이런 문제가 발생하는 것이다. 해결방법 1. 이모지 제거하는 정규식 사용 var regex = /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udff.. 2024. 4. 12.
TIL #34) Nest로 S3 이용하기 Today I Learned 트렐로 프로젝트 중 생성한 카드에 이미지 업로드 하는 기능이 필요해 다음과 같은 코드를 작성했다. 먼저 AWS계정에 S3버켓을 생성하고, 그 버켓에 접근하기 위한 IAM 계정이 필요하다. 다른 글을 참조해 생성했고 대표적으로 권한 문제가 계속 있었는데;; 구글링을 통해 해결했다. AWS S3 버켓에 올리기 위한 핵심적인 로직은 다음과 같다. @Injectable() export class AwsService { s3Client: S3Client; constructor(private configService: ConfigService) { // AWS S3 클라이언트 초기화. 환경 설정 정보를 사용하여 AWS 리전, Access Key, Secret Key를 설정. this.s.. 2024. 3. 25.
TIL #33) 순서 정렬하기 구현하고싶은것) 사용자가 원하는대로 컬럼순서를 바꿀 수 있는 기능 하지만 하나 옮긴다고 전체 데이터베이스를 업데이트 할수는 없기때문에 부동소수점을 이용해 구현해보았다. 사실 부동소수점의 개념은 잘 모르겠으나 단순히 순서가 1, 2, 3 있다면 1.1234 이런식으로 소수를 이용해 1과 2사이에 배치할 수 있다는 아이디어를 사용해보았다. 처음에는 단순하게 1과 2 사이에 순서를 배치하고싶다면 나누기를 사용해서 그 사이수를 구하려 했다. 그래서 순서를 처음부터 1과 2가 아니라 1.1, 2.2 처럼 소수를 이용해 줬다. 이렇게 하면 될 줄 알았는데 나눗셈이 내 마음대로 되는게 아니었다.. ㅋㅋㅋㅋ 나누기가 아니라 1과 2사이의 수를 구하기 위해 2에서 특정 수를 빼지만 1보다는 크게 유지하도록 코드를 구현했.. 2024. 3. 22.
TIL #32) Linked List 자료구조 Linked List 링크드 리스트란 노드라는 기본 요소를 사용해 선형적인 데이터 묶음을 추상적으로 표현한 것이다. 노드에는 데이터뿐만 아니라 다음 노드를 가리키는 참조(링크)가 포함되어 있다. 트렐로 프로젝트 중, 카드의 순서를 옮겨야하는 과제가 있었다. 무식하게 옮기려면 할수는있겠지만 만약 카드의 갯수가 100장, 1000장이 넘어간다면? 한 순서를 옮기기위해 다른것도 모조리 수정이 필요할 것이다. 이럴때 사용할 수 있는게 링크드리스트 자료구조이다. Singly Linked List Node: data와 pointer로 이루어진 요소로서 모여서 리스트를 형성 data: 데이터 pointer(link): 다음 Node를 가리키는 참조 head: 가장 앞에 있는 Node tail: 가장 끝에 있는 Nod.. 2024. 3. 20.
TIL #31) LLM LLM은 무엇인가??? 핫한 ai 챗지피티를 만든 기술 챗지피티가 들어서고... 데이터 라벨링을 하는 회사 등 큰 피해를 불러오기도함 챗지피티가 도입된 첫 달부터 stackOverflow의 트래픽 사용량이 14% 감소하는 일도...초비상!!! 딥러닝: 테스트 set이 있고 준비한 모델로 트레이닝을 시킨 후 테스트를 통과하도록 파이팅하는 과정 채팅으로 대답하는 구조자체가 어케 되는거임? => 생성형 ai를 알기전에 대화를 이해하는 기술의 핵심 자 연 어 처리!!!!!를 알아보자 NLP 자연어: 인간이 일상생활에서 사용하는 언어 NLP를 통해 컴퓨터와 인간언어로 소통하게 되었따 1. 단어를 토큰화 한다(의미있는 단위) 토큰은 보통 단어나 문장을 의미, 컴퓨터는 이 단위를 통해 텍스트를 처리하고 분석한다 2... 2024. 3. 18.