formulous

주니어 개발자의 개발 지식 공유 블로그입니다.

전체 글 16

[TypeScript] Type 스크립트의 기본형에 대해 알아봅시다.

안녕하세요. 오늘은 typescript 8가지 기본 타입에 대해 알아보겠습니다. 오늘 포스팅은 여기를 참고하여 만들어졌습니다. 필요한 타입 개념에 대해 알아가실 수 있길 바랍니다. 1. 불리언 (Boolean) true / false 값을 나타냅니다. 아래와 같이 변수를 선언할 수 있습니다. let isConnected: boolean = false; 2. 숫자 (Number) TypeScript의 모든 숫자는 부동 소수 값입니다. TypeScript에서는 2진수, 8진수, 10진수, 16진수를 제공합니다. let decimal: number = 10; let hex: number = 0xf00d; let binary: number = 0b1010; let octal: number = 0o744; 3. ..

JS & TS 2023.03.14

[docker] 볼륨(volume) 의 개념에 대해 알아보고 활용해봅시다.

안녕하세요. 오늘은 docker에서 또 하나의 중요한 개념인 볼륨(volume)에 대해 알아보겠습니다. docker는 원하는 이미지를 바탕으로 하나의 가상화 환경을 손쉽게 구축할 수 있는 대표적인 툴이죠. docker는 개별적인 가상화 환경인 컨테이너에서 작업을 진행하기에 작업하는 모든 데이터는 컨테이너 내부에만 존재하게 되는데요. 여기서 데이터 유지에 대한 문제점이 발생하게 됩니다. 컨테이너를 삭제하게 되면 작업했던 데이터가 모두 삭제되어 버린다는 것인데요. 컨테이너는 삭제되어도 데이터는 유지하고 싶은 경우에는 어떻게 해야 할까요? 이럴 때 사용하는 것이 바로 볼륨(volume)입니다. 볼륨은 한마디로 컨테이너 내부의 데이터를 외부로 링크를 걸어주는 기능인데요. 볼륨을 걸어준 데이터의 경우 컨테이너 내..

Docker 2023.01.30

[git] 커밋 복구, 브랜치 복구 reflog 명령어에 대해 알아봅시다.

안녕하세요. 오늘은 git reflog 명령어에 대해 알아볼게요. git 커밋을 관리하다 보면 의도해서든 의도하지 않아서든 git rebase 또는 git reset 등으로 커밋이 삭제될 수 있는데요. 이럴 때 커밋은 즉시 삭제되지만 커밋이 삭제된 이력은 보관되게 됩니다. 여기서 보관된 이력 정보를 확인할 수 있는 명령어가 바로 git reflog입니다. git reflog 명령어로 이력을 확인했다면, 확인한 이력 정보를 사용해야겠죠? git reflog 명령어로 삭제된 커밋 아이디를 확인한 후, git reset --hard [커밋 아이디] 명령어로 삭제한 커밋을 복구할 수 있습니다. 브랜치 또한 마찬가지인데요. git reflog 또는 git reflog | grep [브랜치명]으로 이력을 확인하고 ..

Git 2023.01.22

[linux] CentOS7 환경의 systemd에 대해 알아봅시다.

안녕하세요. 오늘은 CentOS7 환경에서 init.d를 대체하게 된 systemd에 대해 알아보겠습니다. init.d, systemd에서 d는 daemon의 약자입니다. daemon은 시스템의 background에서 실행되는 프로세스인데요. 이러한 daemon의 실행과 관리를 담당하고 있는 daemon이 바로 systemd입니다. 그리고 이 systemd는 시스템을 부팅했을 때에 가장 먼저 실행되는 daemon이에요. 이전의 CentOS 버전에서는 init이라는 데몬으로 프로세스를 관리하고 있었는데요. init.d의 약점을 보완함과 동시에 여러 가지 기능을 추가하여 나온 것이 바로 systemd입니다. 그리고 init.d가 그랬듯이 init.d를 대체하는 systemd 역시 PID 1을 부여받습니다. ..

Linux 2023.01.16

[Docker] Nestjs 프로젝트를 Docker Image로 배포 해봅시다.

안녕하세요. 이번 업무에서 회사 내의 프로젝트를 Docker 이미지화하라는 지시를 받게 되었는데요. 이번에도 역시 왜 이러한 업무를 진행하는 것인지, 방법은 무엇인지 먼저 알아보고 업무를 진행해야겠죠? 그래서 오늘은 프로젝트를 Docker 이미지화 하여 배포하는 방법에 대해서 알아보겠습니다. 먼저 이미지화 작업은 왜 하는걸까요? Docker 이미지로 프로젝트를 배포했을 때는 많은 장점이 있는데요. 그중 가장 중요한 점은 바로 '생산성'입니다. 기존 배포된 프로젝트를 가져와서 실행할 때 여러 가지 환경 세팅에 막혀보신 적 있으신가요? Docker로 이미지화된 프로젝트 안에는 그 프로젝트를 실행하기 위한 내부 환경이 모두 구성되어 있습니다. 그리고 Docker가 설치된 서버에 Docker로 빌드된 이미지만 ..

Docker 2023.01.04

[Git] Git 명령어에 대해 알아봅시다. (git remote update / git fetch / git push / git pull)

안녕하세요. 오늘은 Git 브랜치와 원격 저장소를 업데이트하고 관리해주는 네 가지 명령어에 대해 알아보겠습니다. Git에 대한 경험 없이 업무를 경험했을 때는 사수분들의 입력에 따라 움직이는 로봇처럼 Git을 다루게 되죠. 그 로봇 행동의 대표적인 것이 저장소 관리가 아닐까 생각이 듭니다. "pull 받으려면 git remote update 하고 git pull 하시고...." (제 경험) 이렇게 사수분의 입력에 따라 움직이는 행동의 주요 원인은 머릿속에 그 명령어에 대한 개념이 자리잡지 않았기 때문인데요. 이제는 그런 일이 발생하지 않도록 개념을 확고히 하는 시간을 가져볼까요? 명령어를 접하기 전에, 원격 저장소에 대한 이해가 선행되어야 합니다. Git에는 원격 저장소(또는 리모트 저장소)라는 개념이 ..

Git 2022.12.26

[CS] HTTP와 HTTPS 차이점과 개념에 대해 알아봅시다.

안녕하세요. 오늘은 HTTP와 HTTPS가 어떤 점에서 다른지, 또 왜 쓰는 건지 그 이유에 대해 알아보도록 할게요. 대부분의 사람들이 자주 사용하는 사이트인 구글, 네이버 등등의 URL을 검색해서 들어가면 위의 사진과 같이 자물쇠 모양과 함께 입력하지도 않은 https://라는 문구가 들어가는걸 종종 보셨을 텐데요. 이 https:// 문구는 왜 들어가는 걸까요? 저와 같이 HTTP와 HTTPS에 대해 공부하며 그 이유에 대해 탐구해 봅시다. 먼저 HTTP에 대해 알아볼까요? HTTP (Hyper Text Transfer Protocol) HTTP는 서버와 클라이언트 간에 데이터를 주고받는 데에 필요한 프로토콜입니다. 예를 들면 클라이언트인 웹 브라우저가 서버에게 웹 페이지나 데이터를 요청하면 서버는 ..

CS 2022.12.22

[Git] git revert / git reset : 이전 커밋으로 돌리기 (커밋 롤백)

안녕하세요. 오늘은 커밋한 내용에 대해서 다시 되돌릴 수 있는 명령어에 대해 알아봅시다. Git을 활용하여 프로젝트 작업을 하다 잘못된 코드를 커밋하고 곤란하셨던 적 있나요? 오늘 업무 중에 미처 수정되지 못한 코드를 커밋해버리고 말았는데요. 커밋에 대해 롤백할 수 있는 방법을 찾다가 좋은 명령어를 알게되어 소개해보고자 합니다. 이미 커밋한 내용을 되돌릴 수 있는 명령어로는 git revert 명령어와 git reset 명령어가 있는데요. 두 명령어에는 이전 커밋으로 돌아가면서 현재 커밋 내역을 남기냐 안남기냐의 차이가 있습니다. 바로 본론으로 들어가볼까요? * git reset git reset 명령어는 돌아가고자 하는 커밋과 현재 커밋 사이의 모든 커밋이 제거되고, 해당 커밋들의 변경 사항들만 보존합..

Git 2022.12.22

[Git] Git의 기본 개념과 Git 사용법에 대해 알아봅시다.

안녕하세요. 오늘은 Git의 기본적인 개념에 대해서 알아보고자 합니다. 누구나 처음 개발자로서 협업을 시작하게 되면 Git과 같은 프로젝트 관리 시스템을 경험하게 됩니다. 하지만 처음 겪는 만큼 어떤 방식으로 프로젝트가 관리되어 가는지, 본인은 어떻게 프로젝트에 관여할 수 있는지 이해하지 못하고 있는 경우가 많은데요. 오늘은 위와 같이 Git에 대해 미리 접해보지 못하고 협업을 경험하게 되어 막막하실 분들을 위해 Git개념 정리를 해보겠습니다. 시작해볼까요? Git은 '분산형 버전 관리 시스템'입니다. Git을 사용하면 프로젝트에 관여하는 개인 사용자 하나하나가 분산적인 본인만의 프로젝트 버전을 갖게 됩니다. 자신이 업데이트 한 프로젝트를 업로드하거나, 버전을 특정해서 가져오는 등 프로젝트 버전 관리에 ..

Git 2022.12.21

[nestjs] module에서 선언하는 provider, 대체 뭘까요?

안녕하세요. 오늘은 저 포함 많은 분들이 정확한 개념을 가지고 있지 않은 채로 사용하고 있는 provider에 대해서 알아봅시다. 업무 중에 있었던 일입니다. 어떤 스크립트에서든 사용할 수 있도록 만든 utils에 포함된 sqliteUtil 클래스를 provider에 선언해주고 의존성 주입을 통해 사용한 적이 있었는데요. 그때 당시 코드 리뷰에서 온 "util을 왜 provider에 썼어요?"라는 질문에 전혀 답변하지 못했던 아쉬운 기억이 있습니다. provider에 대한 기본 개념이 부족했기 때문에 그렇게 작성했을테고, 그 이유 따윈 없었으니까요.. (이렇게 개발하시면 안 됩니다..) 모든 코드에는 나름의 이유가 있어야 되는 법입니다. provider [공급자]에 대해서 몰랐기 때문에 한 잘못을 pro..

NestJS 2022.12.13