반응형

NestJS 란?

NestJS는 효율적이고 확장 가능한 Node.js 서버측 애플리케이션을 구축하기 위한 프레임워크입니다.
Express 또는 Fastify 프레임워크를 래핑 하여 동작합니다. (기본으로 설치하면 Express를 사용합니다.) 
OOP (객체 지향 프로그래밍 Object Oriented Programming), FP (함수형 프로그래밍 Functional Programming) 및 FRP (함수형 반응형 프로그래밍 Functional Reactive Programming) 요소를 결합합니다.

NestJS의 특징

  • NestJS는 Angualr로부터 영향을 많이 받았습니다. 모듈/컴포넌트 기반으로 프로그램을 작성함으로써 재사용성을 높여줍니다.
  • IoC(Inversion of Control, 제어 역전), DI(Dependency Injection, 의존성 주입), AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)와 같은 객체지향 개념을 도입하였습니다.
  • 프로그래밍 언어는 타입스크립트를 기본으로 채택하고 있어 타입스크립트가 가진 타입 시스템의 장점을 가집니다.
  • Node.js는 손쉽게 사용할 수 있고 뛰어난 확장성을 가지고 있지만, 높은 자유도로 인해 Architecture 구성이 어렵습니다. 이러한 단점을 보완하기 위해 NestJS가 탄생하게 되었습니다.

NestJS의 장단점

  • NestJS는 데이터베이스, ORM, 설정(Configuration), 유효성 검사 등 수많은 기능을 기본 제공하고 있어 편리합니다.
  • 필요한 라이브러리를 쉽게 설치하여 기능을 확장할 수 있는 Node.js 장점도 그대로 가지고 있습니다.

 

NestJS를 사용하여 개발하면서 느낀 점

러닝 커브가 낮아서 쉽게 접근 가능한 프레임워크인 것 같습니다.
저도 처음에는 영어문서이긴 하지만 문서도 잘 나와있는 편이라서 혼자 문서 보면서 간단한 서비스 만드는 것부터 시작했습니다. (한글문서도 나왔었는데 갑자기 사라짐..)
하지만 아직 사용하는 사람이 많지 않아서 오류 발생 시 찾기가 수월하지는 않습니다.
그래도 점점 Nest를 공부하는 사람들이 많아지는 것 같아서 너무 좋습니다.
 
그리고 Java의 Spring과 Architecture 구성이 유사하기 때문에 Spring 경험이 있는 분들은 금방 익힐 수 있을 것 같습니다.
다음에는 Spring과 NestJS의 차이점을 들고 오도록 하겠습니다.
 

반응형

'Backend > Nestjs' 카테고리의 다른 글

[NestJS] JWT AuthGuard/Strategy  (0) 2024.01.04
[NestJS] E2E Testing  (0) 2022.02.27
[NestJS] Swagger 생성하기  (0) 2022.02.21
[NestJS] 유닛 테스트(Unit Testing)  (0) 2022.02.16
[NestJS] Docker 304 undefined 에러  (0) 2022.02.14
반응형

올해 2월부터 사이드 프로젝트를 진행하고 있습니다.
오늘은 사이드 프로젝트의 중간 진행과정을 정리해보려고 합니다.

사이드 프로젝트의 목적

  • 실제 어플 출시
  • 개발 능률 업
  • 여러 직군분들과의 커뮤니케이션

프로젝트 정기 미팅

  • 매주 수요일 22시 정기 미팅
  • 기능 개발 완료 시 PR 및 코드 리뷰 필수

프로젝트 일정

2022.02.03

프로젝트 참여
- 기획자 1
- 디자이너 2
- 프론트 2
- 백엔드 2
총 7명이서 ios 네이티브 앱 출시를 목적으로 두고 모였습니다.

~ 2022.02.07

아이디어 회의 및 프로젝트 아이템 확정

~ 2022.02.19

기존 앱 벤치마킹
MVP 기능 설계 및 논의
아이디어 브레인스토밍

~ 2022.03.01

와이어프레임 설계
소셜 로그인 보일러 플레이트 개발
FE 및 BE 개발 업무 분담

~ 2022.04.30

기획 및 디자인 마무리 (중간중간 커뮤니케이션 후 수정사항 반영)
데이터베이스 모델링
AWS 배포 및 배포 자동화 구축
개발

~ 현재

개발 진행 중

현재까지 진행하면서 느낀 점

FE나 기획과는 평소에도 얘기를 많이 나누지만 디자이너분들과의 커뮤니케이션은 처음이어서 새로웠다.
과반수가 직장인들이라서 진행률이 생각보다 더디긴 하지만 아직까지도 갈등 상황이나 트러블 없이 진행이 잘 되고 있어서 신기하고 좋다.
그리고 회사에서도 항상 코드 리뷰를 하긴 하지만 팀 내에서 NestJS를 쓰는 사람은 혼자라서 외로웠는데 이렇게 주고받을 수 있는 사람이 생기니 행복한 기분이다.
데이터베이스 모델링도 직접 해보고 AWS 세팅과 github action 배포 자동화까지 직접 적용해봤는데 나중에 블로그에 올릴 예정이다.
ios 앱 출시는 처음이라 계속 거절당하면 어떡하지 하는 걱정이 조금 든다.
그래서 여러 가지로 찾아보고 있는 중이다.


깃허브는 열려있으니 코드가 궁금하신 분들은 여기로 들어오시면 됩니다 👇🏻
사이드 프로젝트 - 작심(JAKSIM)

GitHub - jaksim-ios/backend

Contribute to jaksim-ios/backend development by creating an account on GitHub.

github.com


오늘도 저의 블로그에 방문해주셔서 감사합니다!

반응형
반응형

1. 다운로드를 받는다.

https://www.oracle.com/index.html

2. 컴퓨터 관리 상태 바꾸기

시작됨 / 자동으로 바뀌었는지 확인하고 바꾸어준다.

3. 방화벽 인바운드 규칙을 만들어준다.

방화벽 > 고급설정 클릭

인바운드 규칙 > 새 규칙

포트번호 설정

연결허용 선택

규칙 이름 설정


4. 오라클 설치 후 작업

DOS> sqlplus /nolog (sqlplus 명령 실행)
sql> conn 관리자/비밀번호 as sysdba (접속)
Connected.

sql> show user (현재 접속 사용자명 검색)
USER is "SYS"

sql> @C:\ sql파일경로 (파일에 저장된 SQL 명령 실행)
☞ 사용자 생성

sql> show user
USER is "SCOTT"

sql> select table_name from tabs; (현재 접속 사용자의 테이블 목록 확인)

sql 명령 실행 및 사용자 생성

오라클 첫 실행 - 경로설정

오라클 실행

오라클 접속

반응형

'DB > Oracle' 카테고리의 다른 글

[Oracle] JOIN과 서브쿼리  (0) 2020.12.03
[Oracle] Oracle 함수  (0) 2020.12.02
[Oracle] Oracle 기본 문법  (0) 2020.12.01
반응형

Image Classification

LeNet

  • CNN의 개념을 최초로 고안한 Yann Lecun이 개발
  • LeNet-5 (Layer가 5개)
  • input 32 * 32 * 1 - 채널이 1개

 

  • Gaussian connection : F6의 각 neuron의 출력은 output layer로 전달되기 전에 Gaussian kernel에 의해 변환됨

→ 원래는 사이에 구분하기 위한 선을 그어야 한다. 하지만 선을 하나만 그어서 구분이 안 가서 선을 여러 개 긋는다.

→ 그래서 SVM에서는 데이터가 섞여있는 패턴을 봄 (?)

transform 하는 패턴 중 하나가 Gaussain kernel이다.

 

  • LeNet에서는 aveage pooling을 사용한다.
  • C1에서 5*5 convolution 연산할 때 채널이 16개이면 조합해서 비대칭으로 연결해서 global feature가 만들어지길 기대한다.
  • C5에서 120개 feature를 생성

 

feature maps

 

GAP (Global Average Pooling)

  • conv layer에서 만든 feature map의 전체를 가지고 pooling을 한다.
  • conv layer의 high dimensionality → need reduction on the dimension

 

  • max ppooling을 하면 size를 모두 1/2로 줄임

  • glover average pooling

  • final layer with GAP

 

 

CAM (Class Activation Mapping)

Original CNN vs CAM

  • input은 똑같다. CAM은 global average pooling을 거친다.
  • softmax layer를 거쳐서 output
    • CNN은 convolution layer에서 feature map을 1차원으로 펴서 Fully Connected Layer의 Flatten 과정에서 데이터가 손실된다.
    • CAM은 GAP을 통해서 하게 되면 데이터가 조금 살아있다 (?)
반응형
반응형

개발하면서 필수 지식인 REST API에 대해서 정리해보겠습니다.

 

우선 REST API를 제공하는 웹 서비스를 RESTful 하다고 말할 수 있습니다.

REST란 무엇인가?

REST란 Representational State Transfer의 약자로 웹의 장점을 최대한 활용할 수 있는 아키텍처입니다.

REST는 로이 필딩이라는 컴퓨터 과학자가 2000년도에 박사학위 논문에서 정의하였습니다.

 

HTTP URL(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE 등)을 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다.

 

 

REST 아키텍처의 특징

1. 인터페이스 일관성 : 일관적인 인터페이스로 분리되어야 한다.
2. 무상태(Stateless) : 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안 된다.
3. 캐시 처리 가능(Cacheable) : WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.
잘 관리되는 캐싱은 클라이언트-서버 간 상호작용을 부분적으로 또는 완전하게 제거하여 scalability와 성능을 향상한다.
4. 계층화(Layered System) : 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있게 한다.
중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공함으로써 시스템 규모 확장성을 향상하는 데 유용하다.
5. Code on demand (optional) : 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
6. 클라이언트/서버 구조 : 아키텍처를 단순화시키고 작은 단위로 분리(decouple)함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해준다.

 

URI 설계 규칙

1. 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용한다.
2. 마지막 문자로 /를 포함하지 않는다.
3. CRUD 기능을 나타내는 동사를 사용하지 않는다.
4. 적절한 HTTP Method를 사용한다.
5. 언더바(_) 대신 하이픈(-)을 사용한다.
6. 소문자를 사용한다. (대소문자 구분 못함)
7. URI에 파일 확장자를 포함시키지 않는다.
8. 세션 id, 메소드 명을 쓰지 않는다.
9. 명사에 단수보다는 복수형을 사용한다.

 

HTTP Method 종류

우리가 잘 아는 GET, POST, PUT, DELETE 외에도 여러 가지 메소드가 존재합니다.

쉽게 비교하기 위해 표로 정리해보았습니다.

  • PUT, PATCH 인 경우 동일한 데이터에 대한 업데이트 시도 시 업데이트되지 않습니다. (update_at이 갱신되지 않음)
  • GET, HEAD, OPTIONS 메소드는 안전한 메소드로 간주합니다. (읽기 전용인 경우)
  • 특정 메소드의 request를 여러 번 하더라도 한번 request 했을 때와 결과가 같다면 멱등하다하고 합니다.
  • PUT과 POST는 멱등성의 차이가 있습니다. (PUT은 멱등성을 가지고 POST는 가지지 않음)

 

 

참고 문서

https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/POST

https://ko.wikipedia.org/wiki/REST

 

REST - 위키백과, 우리 모두의 백과사전

대한민국의 힙합 음악가에 대해서는 R-EST 문서를 참고하십시오. REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이

ko.wikipedia.org

 

반응형

'스터디 > 용어' 카테고리의 다른 글

CSRF(Cross-site request forgery)란?  (0) 2022.02.20

+ Recent posts