nestjs7 [카프카, 주키퍼] apache Kafka 설치 및 실행 방법 정리(윈도우11, Nestjs) 개발 환경 : windows 11 1. 아파치 카프카 홈페이지에서 카프카 설치Apache Kafka Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.org - Binary downloads 버전 설치 - 이후 카프카 설치 파일 압축 풀기 (옵션 사항) C 드라이브 하위로 이동 -> 폴더명 단순화- 보통, 브라우저 내 파일 기본 다운로드 경로로 설정되어있는 Downloads 등에서 진행하면, 카프카 실행시 경로가 너무 길어져서 에러가 발생할 수 있다.- 이때문에 필자는 경로를 이동시키던가, 폴더명을 단순화 시키는 등의 작업을 추가 진행했다. 2. 자바 설치 - 아파치 카프카를 실행하려면 자바가 설치되어있어야 한다.-.. 개발 학습일지(TIL) 2024. 5. 22. TIL : 트러블슈팅, NestJS 인터셉터 사용으로 리팩토링 (유저 로그인 정보에 따른 버튼 처리) NestJS, TypeORM, EJS 환경이다. 문제상황 : 네비게이션바의 Ajax 코드 에러 - 기존에 위 네비게이션바는 Ajax로 구현되어 있었다. 로그인정보 유무에 따라서 MyPage 버튼이 생기거나, Login 버튼에 변화가 생기도록 구현된 상태이다. - 문제는 작업시간이 길어지며 코드가 복잡해지자, 클라이언트 사이드에서 유저가 로그인 및 로그아웃 버튼을 동작시킬 때마다, 401 오류가 계속 발생했다. 파악해보니 아래 코드블록의 38번째 const userId = obj.value 코드가 제대로 작동되지 않고 있었다. - 나는 이 방식이 로그인 정보에 따른 변경이 필요한 적절한 응답을 못해주고 있다고 이해했고, 해결할 필요성을 느꼈다. 기존 코드 예시 : 네비게이션바 로그인 및 로그아웃 버튼 변경.. 개발 학습일지(TIL) 2023. 3. 31. TIL : typeORM 외래키 없이 조인. getRawMany() vs getMany() nestjs, typeorm mysql 사용환경 문제: 엔티티간 관계설정 없이 다른 엔티티의 컬럼 값 가져오기... 작업배경 게시글 내용이 기존에는 33 으로 단순하게 보여주고 있었다. 히지만 아무래도 유저들이 사용할 때는 화면에 표기되는 정보의 액션이 많아야 재미있을테니, 위 사진처럼 33 이외에 모임의 참가자, 대기자 명단을 불러오는 작업을 하려 한 것이다. 그래서 참가자, 대기자 명단을 추가하기 위해 쿼리를 새로 작성해야했다. 시도1 이 작업은 클럽 멤버스 엔티티를 기반으로한 리포지토리에서 값을 불러오면 된다. 참가자, 대기자를 단순하게 불러오는 것은 어렵지 않으나, 닉네임 정보는 user 라는 다른 테이블에서 조인해서 불러와야했다. 사실 엔티티간 관계설정을 했으면 별 고민없이 user 엔티티를 l.. 개발 학습일지(TIL) 2023. 3. 27. TIL : 리팩토링, 모듈화로 재사용성, 유지보수성 높이기(nestJS, EJS) Nest.js, ejs 사용 환경. 재사용성과 유지보수성을 높이기 위하여, 기존 코드를 모듈화 하였다. 이를 통해 각 게시판, 게시글 마다 반복적으로 들어가는 날짜 표기 기능에 대한 코드를 대폭 줄일 뿐만 아니라, 유지 보수의 편리성을 얻었다. 먼저, 어떤 상황이었는지 정리해본다. 문제상황 - 프로젝트 진행 초기에는 당장 기능 구현을 우선시하다보니, 일단 코드를 짜는데 급급하기만 했다. 그러다보니 동일한 기능에 대해서 조건문이 생기기 시작했고, 결국에 저렇게 코드가 길어져버렸다... - 반복문 코드가 들어가는 게시판 구역(HTML 테이블)은 최소 8개 이상(각 게시판, 인기글, 통합검색 결과, 각 게시판 검색페이지)이다. - 게다가 게시글 상세페이지 접속시 게시글 내부 본문의 시간표기, 본문 하단의 이전.. 개발 학습일지(TIL) 2023. 3. 24. TIL : NestJS, TypeORM, EJS 검색 결과 갯수 구하기 문제상황. NestJs, TypeORM, EJS 개발환경 검색결과는 불러와서 프론트 단에 연결해놨는데, 검색결과가 총 몇 개인지도 알려주고 싶다. 리포지토리 코드 async findClubPosts(data?: any) : Promise { //clubs 게시글 검색 { console.log(data, '리포지') const clubs = await this.clubRepository .createQueryBuilder('search') .leftJoinAndSelect('search.user', 'user') .where('search.title LIKE :s OR search.content LIKE :s', { s: `%${data.term}%` }) .orderBy("search.id", "DESC.. 개발 학습일지(TIL) 2023. 3. 22. TIL : Nestjs, 특정 페이지(URL) 접근만 미들웨어 예외 처리 nest.js 및 ejs 템플릿 엔진 사용환경. - nestjs를 사용하는 이번 팀 프로젝트에서는 클라이언트 사이드에서 페이지 렌더링을 위해 반복적으로 사용되는 코드를 줄이고, 유지보수성을 높이기 위하여 express-ejs-layouts 라이브러리를 사용하기로 하였다. - 이 라이브러리를 사용하기 위하여 기존에는 app.use 전역 미들웨어를 선언하며 header와 footer 부분을 처리하였다. 기존의 코드 및 화면 상태 //main.ts import { ValidationPipe } from '@nestjs/common'; import { NestExpressApplication } from '@nestjs/platform-express'; import { NestFactory } from '@ne.. 개발 학습일지(TIL) 2023. 3. 13. [TIL] : Nestjs 에서 express-ejs-layouts 사용하기 require() vs import() 작업 배경 및 문제상황 Nest.js 사용환경이다. - 기존에 node.js, express에서 express-ejs-layouts 라이브러리를 잘 사용한 바가 있었다. - nestjs를 사용하는 이번 프로젝트에서도 express-ejs-layouts 사용하고 싶었다. 그래서 메인으로 사용하고 있는 main.ts에 다음과 같이 ejs 설정 및 express-ejs-layouts작업을 해주었다. - 참고로, express-ejs-layouts 라이브러리는 ejs를 사용하기 위한 기본 설정 이외에 app.use를 사용한 미들웨어를 통해 프로그램이 작동하도록 설정시켜줘야 한다. import { ValidationPipe } from '@nestjs/common'; import { NestExpressAppli.. 개발 학습일지(TIL) 2023. 3. 6. 이전 1 다음