본문 바로가기

분류 전체보기26

클린 코드 후기(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.
주소창에 주소를 쳤을 때 일어나는 일 주소창에 www.google.com, www.naver.com 등을 입력하면 어떤 일이 생길까? 이 질문에 대해 처음 들었던 대학교 시절, 나는 별다른 대답을 할 수 없었다. 당연함. 아는 게 없으니까 시간이 지난 지금, 그 시절보다는 아는 게 많아졌지만 여전히 이 질문에 대해 스스로 만족할만한 대답을 할 수 없단 걸 깨닫고 정리하는 시간을 가져보려고 한다. URL 검사 URL 파싱 HSTS(Http Strict Transport Security) 리스트 확인 -> 리스트에 해당 URL이 있다면 HTTPS로 통신한다 나의 IP 찾기 같은 서브넷에 DHCP 서버를 찾는 DHCP Discover 메세지 Broadcast DHCP가 응답 → Client의 IP, 가까운 Router IP, 가까운 DNS 서버 .. 2021. 7. 31.