작은 도서관
article thumbnail
윈도우에서 wsl2를 사용할 경우 docker desktop의 속도가 현저히 느려지는 문제
코딩/트러블슈팅 2024. 2. 8. 11:48

문제 상황 docker desktop을 사용해 개발 컨테이너를 띄워 vscode와 연결해 개발환경으로 사용하는 경우 호스트에 비해 속도가 현저히 느려지는 문제가 발생했다. 문제 발생 이유 개발 컨테이너를 띄우기 위해서 로컬에 있는 볼륨을 마운트해 사용했는데, 이 경우 wsl2에서 사용하는 파일시스템과 윈도우에서 사용하는 파일시스템 호환 문제로 읽기/쓰기 속도가 느려지는 문제였다. 문제 해결 방안 위와 같이 wsl2는 윈도우랑 디스크를 공유하지 않기 때문에 파일 시스템에서의 성능을 보장하지 않는다. 따라서 세 가지의 해결 방안이 도출되었다. 1. wsl로 다운그레이드 - 파일 시스템 문제는 wsl2에서만 발생하는 문제기 때문에 유효한 방법이다. 2. 마운트할 볼륨의 파일시스템을 wsl2로 설정 - wsl2..

article thumbnail
[nestjs] 프로젝트에 prisma 추가하기
코딩/백엔드 2023. 10. 20. 17:44

사용 라이브러리 "@prisma/client": "^5.4.1", "prisma": "^5.4.1", prisma란? prisma는 orm의 일종으로, 프로젝트 내의 schema를 하나의 파일에서 관리할 수 있도록 도와준다. prisma를 도입한 프로젝트의 파일 구조인데, prisma 디렉터리 안에 schema 파일에서 모든 스키마를 관리할 수 있게 된다. 프로젝트에 prisma 추가하기 yarn add prisma npx prisma init 위 두 가지 명령어를 입력하면 프로젝트에 prisma 폴더 및 schema 파일이 추가된다. 추가로 .env파일도 생성되는데, 이 파일에서 DATABASE_URL 환경변수를 본인의 DB와 연결해주면 된다. 새 스키마를 작성하기 위해 prisma/schema.pri..

article thumbnail
[nestjs] postgresql을 이용한 crud 구현
코딩/백엔드 2023. 8. 23. 15:52

사용 라이브러리 "@nestjs/typeorm": "^10.0.0", "typeorm": "^0.3.17", "bcrypt": "^5.1.1", "class-transformer": "^0.5.1", "class-validator": "^0.13.2", postgresql을 사용하는 이유 postgresql mysql 아키텍처 객체 관계형 단일 관계 지원하는 데이터 타입 숫자 날짜(시간) 문자열 JSON boolean 열거형 XML 기하형 배열 범위 네트워크 주소 숫자 날짜(시간) 문자열 JSON 공간(Spatial) 장점 복잡한 쿼리에 유용함 데이터베이스 크기에 제한이 없음 읽기-쓰기 속도가 빠름 확장에 유리함 광범위한 대중성 읽기 전용 명령을 사용할 수 있음 postgresql을 nestjs에 추가 ..

article thumbnail
[express] 유저 crud와 토큰을 이용한 로그인 구현
코딩/Express 2023. 7. 23. 05:11

셀프 레퍼런스 https://flreauniverse.tistory.com/26 (세션과 토큰) 개요 유저 스키마와 모델 생성하기 유저 crud 구현하기 로그인 api를 연결하고 토큰 발급하기 토큰 검증하기 api 테스트하기 (번외) 비밀번호 암호화 유저 스키마와 모델 생성하기 스키마와 모델 생성은 지난 시간에 해본 적 있습니다. 실력을 더욱 키우고 싶다면 아래 코드를 보지 말고 한번 짜보는것도 좋은 방법입니다. 유저에 필요한 값은 생각보다 간단합니다. 이 두가지 값을 코드로 옮겨보겠습니다. model 폴더 아래에 user.js 파일을 만든 뒤 아래 코드를 작성해주세요. import mongoose from "mongoose"; const userSchema = new mongoose.Schema({ u..

article thumbnail
[개념] 토큰과 세션
코딩/웹 개념 2023. 7. 17. 11:59

개요 HTTP의 비상태성 세션 토큰 HTTP의 비상태성(Stateless) HTTP는 요청-응답 쌍으로 이루어진 통신 규약이라고 알고 있습니다. 그렇다면, 요청-응답이 올바르게 진행된 후 응답은 어떻게 흘러갈까요? 클라이언트는 응답받은 데이터를 갖고 있지만, 서버에선 응답한 내용을 일절 저장하지 않습니다. 클라이언트는 인증(Authentication)을 거쳐야 하는 경우처럼, 서버에서 제공하는 모든 api에 접근할 권한이 없습니다. 클라이언트가 서버에 인증 요청을 보냈고, 적절한 응답("인증되었습니다"와 같은 문구)를 받았다고 해봅시다. 후에 인증이 필요한 api에 접근할 때, 서버에선 응답을 했었는지 모르기 때문에 인증이 되지 않은 클라이언트라고 판단합니다. 그렇다고 인증이 필요한 api를 사용할 때 ..

article thumbnail
[express] Schema와 Model을 생성하고 데이터 저장하기
코딩/Express 2023. 7. 8. 16:00

개요 스키마와 모델 스키마와 모델 구현하기 라우터에서 데이터 받아오기 데이터 CRUD 구현하기 스키마와 모델 DBMS에서 스키마란, 데이터베이스를 구성하는 데이터의 구조와 타입, 데이터간의 관계, 검색 방법, 속성등을 정의한 것을 뜻합니다. 모델이 바로 이런 스키마를 이용해서 만든 객체를 뜻합니다. 서버에선 모델을 통해 데이터베이스에 실제로 작업을 하게 됩니다. 스키마와 모델 구현하기 그럼 실제로 한번 구현해봅시다. 우리는 게시물을 저장하는 라우터를 구현해 두었습니다. 인터넷 게시판의 게시물을 분석해보자면, 어떤 값이 눈에 띄나요? 제목, 생성일자, 내용이 있습니다. 각각 타입으로 생각한다면 제목과 내용은 문자열, 생성일자는 Date타입이 되겠네요. 이를 코드로 한번 옮겨보겠습니다. src 아래에 mod..

article thumbnail
[express] 데이터베이스에 연결하기
코딩/Express 2022. 3. 30. 23:01

셀프 레퍼런스 https://flreauniverse.tistory.com/23 (mongoDB cluster 생성하기) 개요 MongoDB cluster URI 따오기 포트를 환경변수로 분리하기 DB cluster와 연결하기 MongoDB cluster URI 따오기 https://www.mongodb.com/ MongoDB 페이지에 접속 후 로그인합니다. cluster 메인 페이지에 보이는 Connect 버튼을 누르고, Connect your application을 누릅니다. 그리고 nodejs로 설정한 뒤, 두번째에 있는 링크를 복사해주세요. mongodb+srv://:@cluster0.evl85.mongodb.net/myFirstDatabase?retryWrites=true&w=majority 이..

article thumbnail
[MongoDB] 클러스터 생성하기

클러스터 만들기 https://cloud.mongodb.com/ MongoDB Cloud MongoDB Cloud는 최신 애플리케이션을 위한 통합 데이터 플랫폼으로, 글로벌 클라우드 데이터베이스, 검색, 데이터레이크, 모바일 및 애플리케이션 서비스를 포함하고 있습니다. www.mongodb.com 들어가서 구글로 로그인하면 간단한 설문 창이 나옵니다. 설문 내용은 관계 없으므로, 아무렇게나 답변하셔도 무관합니다. 오른쪽 무료 플랜을 선택한 뒤 환경에 맞게 설정해주세요. 아무거나 선택하셔도 성능에 문제는 없어, 다음은 개인적으로 추천하는 설정입니다. 스스로 설정하신 분은 바로 다음으로 넘어가주세요. 한국 서버를 무료로 지원하는곳은 AWS의 서울과, Google Cloud의 서울 두 군데가 있습니다. 별이 ..