formulous

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

728x90

전체 글 19

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

안녕하세요. 오늘은 커밋한 내용에 대해서 다시 되돌릴 수 있는 명령어에 대해 알아봅시다.Git을 활용하여 프로젝트 작업을 하다 잘못된 코드를 커밋하고 곤란하셨던 적 있나요?   비슷한 상황에 처한 분들이 적지 않을 듯하여 커밋 실수를 했을 때 대처할 수 있는 방법을 알려드리려 합니다 이미 커밋한 내용을 되돌릴 수 있는 명령어로는 git revert 명령어와 git reset 명령어가 있는데요. 두 명령어에는 이전 커밋으로 돌아가면서 현재 커밋 내역을 남기냐 안남기냐의 차이가 있습니다.바로 본론으로 들어가 볼까요?   * git reset   git reset 명령어는 특정 커밋으로 이동하며, 그 이후의 커밋을 삭제하거나 보존할 수 있는 옵션을 제공합니다. 예를 들어 아래와 같은 5개의 커밋 로그가 쌓인 ..

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

[javascript] 배열 검사를 한번에, every와 some함수를 알아봅시다.

안녕하세요. 오늘은 업무 중 사용했던 유용한 배열 메서드에 대해 소개드리겠습니다. 그 주인공은 바로 every() 함수와 some() 함수입니다. 정말 유용한 함수니 꼭 기억해서 써먹으시길 바랍니다! 자, 바로 코드 예시를 봅시다. const arr1 = [10, 20, 30, 40, ..., 9999990, 10000000]; // 100만개의 데이터 여러분들은 위의 코드 arr1의 모든 요소에 대해서 10으로 나눴을 때 나머지가 0인지 확인하려면 어떤 코드를 사용하실 건가요? 혹시 머릿속으로 아래 코드처럼 for문을 떠올리셨나요? const arr1 = [10, 20, 30, 40, ..., 9999990, 10000000]; // 100만개의 데이터let result = true;for (const..

JS & TS 2022.12.09

[docker] docker를 사용하기 전, docker의 개념에 대해 정리해봅시다

안녕하세요. 오늘은 docker를 사용하기전에 왜 사용하는지 또 어떻게 사용하는지 궁금증이 생겨 기록하기 위해 가져왔습니다. 어떤 공부든 어떻게 사용하는지 왜 사용하는지 알고 접근해야 이해가 더 잘되더라구요. docker를 사용하고 있긴 하지만 왜 사용하는지, 또 어떻게 사용해야 되는지 익숙하지 않은 저 같은 사람들을 위해 docker에 대해 한번 정리해보는 시간을 가져보겠습니다. 시작해볼까요? docker가 뭔가요? docker란 공식적으로, 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이에요. docker는 소프트웨어를 '컨테이너(Container)'라고 불리는 단위로 패키징 해줍니다. VMware 같은 가상 머신이 하드웨어를 가상화하는 방식과 비슷하게 서버 운영체제를 가..

Docker 2022.12.09

[nestjs] URL 유효성 검사를 Middleware 에서 하는 방법

안녕하세요. 오늘은 API 요청이 왔을 때 request의 URL 유효성 검사를 Middleware에서 하는 방법을 알아보겠습니다. 이번 업무 중에 제 프로젝트 관련한 요청받은 것이 하나 있었습니다. 그것은 바로 '유효성 검사를 Middleware 단에서 처리하도록 정리해달라' 에요. 서비스 단이나 컨트롤러 단에 여기저기 흩뿌려져 있던 유효성 검사 코드가 지저분해 보였던 것이죠... 여차저차 코드 정리를 마무리하던 와중 제 기준 머리 아픈 문제가 발생했는데요. 그것은 바로 다른 유효성 검증과 다르게 API 요청으로 들어온 URL의 유효성은 어떻게 middleware에서 구현하느냐입니다. 여기서 제가 발견한 해결책은 Guard의 canActivate() function에서 request 정보에 들어있는 U..

NestJS 2022.12.06

[javascript] Java Script 의 비동기 처리에 대해 알아봅시다

안녕하세요. javascript 를 사용해보신 분이라면 거의 대부분의 사람들이 익숙하지 않고 어려움을 겪는 건 역시 비동기 처리일텐데요. 오늘은 악명 높은 Promise와 async, await을 사용한 비동기 처리에 대해 간단히 정리해보는 시간을 가져봅시다. async와 await javascript의 asycn, await은 예상외로 이해하기 쉽고 사용법도 어렵지 않습니다. 우선은 async 키워드입니다. async는 function 앞에 위치하도록 작성하게 됩니다. async function add(a, b) { return a + b; } function 앞에 async를 붙이면 해당 함수는 항상 Promise를 반환하게 됩니다. 명시적으로 Promise를 작성하지 않아도, Promise가 아닌 ..

JS & TS 2022.12.05

[nestjs] version `CXXABI_1.3.9' not found 에러 대처 방법

안녕하세요. 지난 업무 중에 nestjs에서 sqlite3 모듈을 설치 후 사용했을 때 발생한 에러에 대해 얘기해보고자 합니다. OSError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /lib64/libpcre_parser.so) 해당 에러는 gcc 컴파일러의 버전이 낮아서 발생하는 것으로, gcc 컴파일러의 버전을 업그레이드시켜줌으로써 해결하게 되었습니다. (해당 에러를 해결하는데 있어서 python3.x 버전 역시 필요했습니다.) 저를 10시간이 넘게 고생시켰던 에러 치고는 해결 방법이 사실 간단합니다. (삽질의 연속..) 아래와 같은 순서로 천천히 따라와주시면 되겠습니다. 일단 python 3.x 버전을 설치해줍니다..

Difficulties 2022.12.05

[javascript] 배열 비구조화 할당에 대해 아시나요?

안녕하세요.  오늘은 업무 중에 배열 비구조화 할당이라는 좋은 방법을 알게 되어 소개하고자 합니다.  배열 비구조화 할당이란, 공식적인 표현으로는 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다. 쉽게 말하자면, 배열의 내용을 한번에 여러 개의 변수에  할당시키는 편리한 방법이라고 생각하시면 됩니다. 예시를 한번 볼까요?const [a, b, ...rest] = [10, 20, 30, 40, 50];console.log(a);// expected output: 10console.log(b);// expected output: 20console.log(rest);// expected output: Array [30,40,50] 위의 예시와 같이 활용..

JS & TS 2022.12.05
728x90