profile
Hyperledger Fabric, React/React Native, Software Architecture

간단한 MongoDB $lookup 속도 측정

아주 간단한 $lookup 파이프 테스트이다. 실험 환경은 다음과 같다. users 와 posts, 2개의 콜렉션이 다음과 같이 존재한다. posts 의 creatorID는 users의 id 의 헥스 문자열, creatorObjID는 id를 의미한다. 여기서 우

2022년 6월 6일
·
0개의 댓글
·

GoFiber 기반의 테스트 가능한 API 서버 만들기

Fiber는 Node.js의 Express에서 영감을 얻어 개발된 Go 언어 서버 프레임워크이다. Fiber는 Go 언어에서 가장 빠른 HTTP 엔진인 Fasthttp 기반으로 개발되어, 실제로 밴치마크 성능이 동일한 Go 언어 서버 프레임워크인 Gin, Echo 등과

2022년 4월 18일
·
0개의 댓글
·

Next.js 에 Firebase Auth 추가하기

Firebase Auth과 Next.js Firebase 는 사용자 인증 서비스인 Auth, 데이터베이스 서비스들인 Cloud Firestore, Realtime Database 등을 제공해주는 일종의 Backend as a Service 이다. Firebase 는 프

2022년 2월 28일
·
0개의 댓글
·

Next.js API Routes에 API Logger 추가하기

난 API 서버를 구현할 때, 보통 API Logger 를 가장 먼저 구현한다. 여기서 API Logger라 함은, API에 대한 Request, Response를 기록하는 기본적인 Logger를 의미한다. 예를 들어, express.js 의 morgan 미들웨어 같은

2021년 12월 31일
·
0개의 댓글
·

Next.js 프로젝트 설정

요즘 Next.js 가 엄청 재미있다. 그래서 작은 프로젝트 하나 한땀한땀 만들어가면서 반복적인 내용들을 잊어먹지 않도록 정리해보려고 한다. 대충 아래 내용들을 하나씩 해나가며 정리해보려 한다. 프로젝트 설정: TypeScript, ESLint, Prettier 설정

2021년 12월 22일
·
0개의 댓글
·

MongoDB 쿼리에서 Join 하기

MongoDB는 대표적인 NoSQL, 또는 Document DB 이다. DB Engines라는 사이트에서 여러 메트릭들을 기반으로 DB 순위를 분석하는데, MongoDB는 NoSQL, Document DB 카테고리 1위일 뿐 아니라, 상위 5개 중 PostreSQL과

2021년 11월 1일
·
0개의 댓글
·

GoFiber 에 세션 기반 인증 추가하기

이번에 GoFiber 서버에 세션 기반 사용자 인증을 추가했던 내용을 정리해둔다.난 원래 JWT(JSON Web Token)기반 사용자 인증을 선호했었다. JWT를 쓰면서 클라이언트 측에 저장되는 토큰값이 항상 불안했기에 자주 "secure storage for JWT

2021년 10월 21일
·
0개의 댓글
·

4편. 디자인 요소들 추가

나만의 React Native 앱을 개발하기 위한 프로젝트 셋팅 마지막 단계, 디자인 요소들을 추가해보자.React Native 로 모바일 앱을 개발한다 했을 때, UI 관련해서 "필요하다" 싶은 것들은 아래와 같다:Style 관련 라이브러리아이콘 세트폰트React N

2021년 10월 10일
·
0개의 댓글
·

3편. 임베디드 데이터베이스 설치

모바일 앱도 데이터베이스가 필요하다. 언제나 서버와 연결되어있는 웹앱과 다르게(PWA 제외), 모바일 앱은 기본적으로 오프라인 상황에 대한 고려가 필요하다. 그리고 아무리 주요 데이터들을 서버에 의존하는 앱이라 하더라도, 기본적인 사용자 설정, 앱 상태 등에 대한 저장

2021년 10월 10일
·
0개의 댓글
·

2편. React Navigation 설치

앱의 척추는 내비게이션이다. API 서버를 구축할 때, 미들웨어 배치와 라우터(컨트롤러)에서 모델(데이터베이스)로 이어지는 구조가 가장 기본이자 코어에 해당하는 구조이듯, 앱에서는 내비게이션 구조가 가장 기본이자 코어에 해당하는 구조라고 할 수 있다.React Nati

2021년 10월 10일
·
0개의 댓글
·

1편. React Native 설치하기

모바일 앱을 개발할 때, 기본적으로 다음 사항들은 꼭 있어야 한다.내비게이션: 탭바, 스택 등을 통한 화면 이동임베디드 데이터베이스: 앱에서 사용하는 사용자 데이터를 저장아무리 API 서버 기반 앱이라고 해도, 기본적인 사용자 설정, 인증정보 등은 앱 내에 저장해야 한

2021년 10월 10일
·
0개의 댓글
·

SwiftUI의 Environment

Core Data를 View에서 사용하기 위해, managedObjectContext 라는 Environment를 지정해주자.... 뭐라고?정말 무슨 말인지 하나도 모르겠기 때문에, 하나하나 뜯어보자.우선 SwiftUI에서 Environment 라는 것은 Propert

2021년 9월 5일
·
0개의 댓글
·

Swift 에서 Optional 변수의 nil 체크

위 코드에서 Closure 함수의 파라미터인 error 는 Error? 타입으로, Optional 타입이다. 그렇기에 error는 nil일 가능성이 있는데, 이를 체크하는 코드가 위와 같다.이때, let error 의 error 는 if 블록 안에서만 사용되는 로컬 변

2021년 9월 5일
·
0개의 댓글
·

Swift Closure 문법

SwiftUI에서 Core Data를 사용해보려고 아래 코드를 튜토리얼을 참고하여 작성했다.Swift 문법은 정말 신기한(?) 것들이 많은데, 한줄 한줄 살펴보기로 하자. 첫째로 이해가 안 간 라인은 아래 코드다.... 당췌 이게 무슨 코드란 말인가.정답은 Closur

2021년 9월 5일
·
0개의 댓글
·

몽고DB 도커컨테이너로 루트 관리자 정보와 함께 시작하기

docker compose 를 이용하고, 몽고DB 루트 관리자 정보는 .env.db 파일에 저장해서 사용한다. .env.db 파일은 git 저장소로 푸시하지 않도록 주의한다. docker-compose.yml 파일은 배포 구성 정보이므로 git 저장소로 푸시해준다.do

2021년 8월 27일
·
0개의 댓글
·

도커로 실행 중인 몽고DB 데이터 옮기기 (백업/복원)

이 글에서는 도커로 실행 중인 몽고DB의 데이터를 파일로 백업하여, 이를 다시 복원하는 방법을 설명한다.(개인적으로 한 몽고DB 데이터를 통째로 다른 컨테이너의 몽고DB로 옮겨야 할 일이 생겨 수행하게 되었다.)Back Up and Restore with MongoDB

2021년 8월 25일
·
0개의 댓글
·

Fastify JWT 사용

Fastify 에 JWT 를 추가하는 것은 아주 쉽다. 개인적으로 지금까지 써본 서버 프레임워크들(express, koa, fastify, gin-gonic 등) 중에서 가장 쉬운 것 같다.비교적 최근에 만들어진 모던 웹서버 프레임워크인만큼, JWT도 Fastify 팀

2021년 8월 17일
·
0개의 댓글
·

Fastify 서버 API 정의

Route의 정의는 웹서버 개발에서 가장 중심이 된다고 할 수 있다. 해당 웹서버가 제공하는 API가 무엇인지를 정의하고, 구현하는 일이기 때문이다. 웹서버의 모든 것은 사실 이 API를 제공하기 위해 존재한다고 할 수 있다. Java Spring과 같은 MVC의 세상

2021년 8월 17일
·
0개의 댓글
·

Fastify 서버 생성

Fastify 장점 Fastify 는 이름에서 알 수 있듯이, 빠른 속도를 내세우는 node.js 웹서버 프레임워크이다. 속도는 본인들의 벤치마크에 따르면, express 대비 약 4배, koa 대비 약 1.6배 빠르다. 빠른 속도 외에도, 여러 장점이 있는데, 내

2021년 8월 17일
·
0개의 댓글
·

도커 컨테이너로 빌드, 실행된 서버가 호스트에서 호출 실패할 때

제목이 간단하게 작성되지 못하는데는 이유가 있다. 현상이 매우 독특했기 때문이다. 우선 서버 코드부터 살펴보자.너무나도 간단한 fastify 서버 코드이다. 마지막 listen 함수에서 볼 수 있듯이 8080 포트에 바인딩 되어 있고, GET /ping 하면, pong

2021년 7월 11일
·
2개의 댓글
·