본문 바로가기

분류 전체보기27

정적 분석 : 좋은 소프트웨어를 만들기 위한 노력의 과정 정적 분석(Static Analysis) 정적 분석이란 소스코드의 실제 실행 없이 소프트웨어를 분석하여 문제를 찾는 것을 말한다. 개발을 하는 우리 모두 소위 말하는 냄새 나는 코드(Code Smell)를 작성해본 경험이 있을 것이다. 우리는 다양한 이유로 냄새나는 코드를 만들어왔다. 아직 경험이 부족해서 코드의 냄새를 맡지 못해서일 수도 있고, 일정 등의 외부 요인으로 냄새를 맡았지만 참고 넘겼을 수도 있다. 문제는 소프트웨어를 지속적으로 발전시켜나가야하는 우리들, 혹은 회사의 입장에서 이는 고스란히 부채로 남아 자신이나 팀원들에게 돌아오게 된다는 것이다. 그렇다면 어떤 코드가 냄새나는 코드일까? 마틴 파울러 형님의 말씀에 따르면 코드 냄새는 문제 자체가 아니라 코드 어딘가에 문제가 있을 수 있다는 지.. 2022. 12. 24.
클린 코드 후기(1) 클린 코드 대학생 때부터 너무나도 많이 들어왔고 개발자라면 1년에 한 번씩 정독할만하다고 하는 개발자들의 바이블 같은 책을 드디어 읽게 되었다. 나는 개발은 직접 해보고 부딪혀봐야 실력이 는다고 생각했기에 많은 사람들의 추천에도 지금까지 클린 코드를 읽지 않았었다. 그래도 바이블이라 불리는 서적이니 한 번은은 읽어보자는 마음에 책을 구입해서 읽게 됐는데 내가 내 생각보다 오만했다는 사실을 알게 됐다.. 이 책을 지금에서 읽은 지난 과거를 반성하고자 느낀 점들을 글로 조금씩이라도 남겨보고자 한다 1장. 깨끗한 코드 이 장에서 기억에 제일 남았던 문구는 3가지이다 '르블랑의 법칙 : 나중은 결코 오지 않는다' 라는 얘기를 한다. 나쁜 코드의 위험을 이해하지 못하는 관리자의 말을 그대로 따르는 행동은 전문가답.. 2021. 12. 8.
[Logstash] logstash로 로그 파일 elasticsearch와 연동시키기 회사에서 수집만 해두고 전혀 사용하지 않고 박아두는 로그 데이터가 있었다. 충분히 의미 있는 로그인 것 같음에도 서버 어딘가에 박혀있는 것이 아쉬워서 (심지어 한 파일에 태초부터 쌓여온 데이터는 어느새 100메가가 넘는 괴물이 되어있었다.) 빛을 보게 하고자 ELK 스택과 연동시켜주기로 했다. 이건 그 과정을 기록한 일기이다. 먼저 ubuntu 환경에서 진행하였다 1. JDK 설치 먼저 해당 서버에 JDK를 설치해주어야한다. 나는 JDK 11 버전을 설치해주었지만 1. Logstash 버전을 7.11.x 이전 버전에서 7.12 이후 버전으로 업그레이드 했을 때 2. JDK 15 버전 이상을 사용 만약 위와 같은 경우에는 https://www.elastic.co/guide/en/logstash/curren.. 2021. 10. 7.
[TypeORM] Active Recore & Data Mapper Pattern 이번에 Nest JS 프로젝트를 새로 시작하게 되었다. 그러면서 둘 중 어느 패턴을 선택하여 적용할지에 대해 고민하게 되었는데 그 과정에서 공부한 것을 간단히 적고자 한다. Active Record Pattern Active Record 패턴은 모델 안에 모든 쿼리들을 정의해두고 CRUD 작업들을 모델의 메소드를 통해 실행하게 된다. 즉, Active Record 패턴은 모델 안에서 데이터베이스에 접근하는 패턴이라고 볼 수 있을 거 같다. import {BaseEntity, Entity, PrimaryGeneratedColumn, Column} from "typeorm"; @Entity() export class User extends BaseEntity { @PrimaryGeneratedColumn().. 2021. 8. 30.
NestJS Provider(프로바이더) Providers Service, Repository, Factory, Helper 등등, 대부분의 Nest클래스는 프로바이더로 취급 가능하다. 프로바이더는 Nest에서 종속성 주입(Dependency Injection)이 가능한데, 이로 인해 Nest에서는 다양한 관계를 지닌 객체 인스턴스의 연결을 Nest의 런타임 시스템에 위임할 수 있다. Nest에는 프로바이더 간의 관계를 담당하는 내장 IoC(Inversion of Control)컨테이너가 존재하는데 @Injectable 데코레이터를 사용하여 Nest IoC 컨테이너에서 관리할 수 있는 클래스임을 선언하는 메타데이터를 첨부할 수 있다. Nest는 기본적으로 싱글톤 패턴을 따르는 프레임워크이다. Nest는 Bootstrap될 때 Module에 등록.. 2021. 8. 19.
NestJS Lazy-loading Modules 간단 소개 Nest 버전 8에서 나온 최신 방법! 7미만이면 LazyModuleLoader를 불러오지도 못한다.. lazyModuleLoader를 찾을 수 없다면 NestCLI의 버전을 체크하고 업데이트 해주길 바란다! 기존의 Module Load → Bootstrap과 동시에 모든 모듈 로드 Lazy-loading Modules 기법 → 필요한 모듈만 로드하여 부트스트랩 시간 단축 사용 방법 // cats.service.ts @Injectable() export class CatsService { constructor(private lazyModuleLoader: LazyModuleLoader) {} } Or // main.ts import { LazyModuleLoader, NestFactory } .. 2021. 8. 8.