전체 글 24

npm-check-updates와 npm audit으로 Node.js 패키지 취약점 손쉽게 관리하기

Node.js로 프로젝트를 만들다 보면 수십 개, 많게는 수백 개의 패키지를 설치하게 된다. 직접 설치한 것도 있지만 대부분은 의존성으로 따라온 것들이다. 문제는 이 패키지들 중 하나라도 취약점이 생기면, 전체 프로젝트가 위험해질 수 있다는 점이다. 아직 보고되지 않은 잠재적인 취약점까지 개발자 선에서 모두 찾아내고 조치하는 건 사실상 불가능에 가깝다. 그렇기 때문에 적어도 이미 보고된 취약점에 대해서는 빠르게 대응하는 태도가 필요하다. 이런 취약점은 공개된 만큼 악용될 가능성도 높고, 보안 사고로 이어질 위험도 크다. 보고된 취약점에 대응하는 방법은 크게 두 가지다. 하나는 내가 직접 package.json에 선언한 의존성 패키지의 버전을 가능한 최신으로 유지하는 것, 다른 하나는 이런 패키지에 딸려온..

TypeScript Enum, 그리고 숨어있는 활용 꿀팁

TypeScript의 Enum의 기본 개념과 사용법Enum이란?Enum(열거형)은 TypeScript에서 여러 개의 상수 값을 하나의 그룹으로 묶어 관리할 수 있게 도와주는 데이터 타입이다. 주로 코드의 가독성을 높이고, 유지보수를 편리하게 하는 데 사용된다. Enum을 사용하면 숫자나 문자열 값을 명확한 이름으로 나타낼 수 있어 코드 작성과 관리가 쉬워진다.Enum의 기본 사용법기본적인 Enum 사용법은 다음과 같다.enum Direction { Up, Down, Left, Right,}let move: Direction = Direction.Up;console.log(move); // 0 출력이 코드에서 Direction은 Enum 타입으로, Up, Down, Left, Right는 Enum의..

TypeScript에서 interface와 type 중 무엇을 사용할까?

TypeScript에서는 interface와 type을 모두 사용하여 객체의 구조를 정의할 수 있다. 하지만 두 가지 개념 사이에는 미묘한 차이가 있다. 이번 글에서는 interface와 type의 특징과 차이점, 그리고 언제 어떤 것을 사용하는 것이 더 적절한지 정리해보겠다.interface와 type의 특징interfaceinterface는 TypeScript에서 객체의 구조를 정의하는 기본적인 방법으로, 다음과 같은 특징을 가진다.객체의 구조를 명확하게 정의할 수 있다.선언 병합(Declaration Merging)이 가능하다.implements 키워드를 사용하여 클래스에서 타입 검사를 수행할 수 있다.extends 키워드를 사용해 확장할 수 있다.typetype은 보다 범용적인 타입 정의 방식으로..

아직도 현역, 웹 프론트엔드 개발자의 MacBook Pro (M1 Pro) 32GB RAM 리뷰

네 번째 맥북 리뷰다. 돌이켜보니 2021년에만 세 번 포스팅을 했고, 벌써 3년이 훌쩍 지났다. 2025년 2월이 된 지금, 현역으로 쓰고 있는 맥북 프로(M1 Pro) 32GB RAM 이야기를 해보려고 한다. 2021년 세 차례 리뷰를 돌아보며첫 번째 리뷰: MacBook Air M1 기본형 (2021년 4월)2021년 4월에 맥북 에어 M1 기본형(8GB RAM)을 리뷰했었다. 지금은 상상하기 힘든 8GB RAM이었지만 당시에는 만족스러웠다. 특히 인텔 맥 대비 배터리 성능이 크게 좋아졌고, 애플 실리콘 칩을 정식으로 지원하지 않는 앱조차 로제타를 통해 빠릿하게 돌아가는 모습이 인상적이었다.  웹 개발자의 M1 MacBook Air 기본형 사용 후기2021년 3월 26일에 그 유명한 M1 맥북에어를..

리뷰/전자제품 2025.02.18

소프트웨어 코드 테스트에 대한 나의 생각 - 프론트엔드 테스트는 필요할까

소프트웨어 개발에서 코드 테스트는 단순히 실행해 보며 기능을 확인하는 단계를 넘어, 코드 품질 개선과 유지보수성 향상, 그리고 장기적인 제품 안정성을 보장하는 핵심 요소로 자리 잡았다. 여기서 언급하는 테스트는 제품을 직접 사용하는 방식이 아니라, 코드 기반의 자동화 테스트를 의미한다. 개인적으로는 유닛 테스트를 주로 활용하며, TDD(Test-Driven Development) 방법론을 선호한다. 직접 주도하지는 않았지만, 테스트 커버리지 100%를 달성한 경험이 있으며, 테스트가 전혀 없는 환경에서 테스트 문화를 구축하고 지속적으로 커버리지를 향상시킨 경험도 있다. 다양한 테스트 방법론과 적용 방식TDD 외에도 BDD(Behavior-Driven Development)와 DDD(Domain-Drive..

개발 2025.02.11

고조선을 어떻게 인식해야 하는가

기술 블로그에서 갑자기 웬 역사 이야기인가. 사실 나는 비전공 출신 개발자이다. 원래 학부 때 전공은 고고학, 중퇴한 대학원에서의 전공은 정책학이다. 여차저차 이제는 웹 프론트엔드 개발자로서 돈을 벌고 그 돈으로 가정을 먹여 살리고 있지만 나는 여전히 역사 이야기를 하는 게 늘 즐겁고 또한 여전히 소프트웨어 관점에서 문화재 관리, 정책 등에 관심이 많다. 앞으로 하는 이야기는, 특히 고대사 파트는 일반인들이 알고 있는 상식과는 조금 다를 수는 있지만 나는 내 나름대로의 역사관을 바탕으로 고대사를 이해하고 있다. 그렇다고 환단고기 좋아하는 소위 환빠 그런 거 아니다. 전공이었던 고고학을 바탕으로 그 시대를 이해하고 즐기고 있을 뿐이다. 한국사의 표준이 되는 한국사 교과서는 개인적으로 민족주의 사관을 바탕으..

역사이야기 2022.01.04

Next.js에서 Firebase Remote Config(원격 구성) 수정하기

Firebase Remote Config란 애플리케이션의 각종 기본값들을 Firebase를 통해 손쉽게 관리할 수 있도록 하는 클라우드 툴이다. Firebase 원격 구성 | Firebase Documentation 앱 업데이트를 게시하지 않고도 일일 활성 사용자 수 제한 없이 무료로 앱의 동작과 모양을 변경할 수 있습니다. firebase.google.com 각종 기본값들의 경우 애플리케이션의 탭 리스트가 될 수도 있고 각종 스태틱한 값들이 될 수 있다. 이러한 값들의 경우 서비스 기획이나 정책에 따라 언제든지 변경될 수 있다. 이럴 경우 보통 데이터베이스와 백엔드를 통해 관리를 하게 되는데 이것을 구현하는게 어렵지는 않지만 번거롭고 시간이 걸릴 수 있어서 프로덕트 스케줄에서 우선순위에서 밀릴 수 있다..

개발/웹 개발 2021.12.22

Typescript 타입을 배열로 정의해보자

Typescript는 Javascript를 Java, C, Swift, Kotlin처럼 정적 타입으로 쓸 수 있게 해주는 Javascript의 슈퍼셋이다. 빌드가 되면 브라우저 또는 Node.js가 이해할 수 있는 퓨어한 Javascript로 바뀌어 동적 타입인 Javascript의 태생적 한계를 극복하고 Javascript 생태계를 보다 안정적으로 쓸 수 있게 해준다. 다음을 살펴보자 let a = 1; console.log(typeof a); // number a = 'abc' console.log(typeof a); // string Javascript는 이처럼 변수를 선언해서 number 타입을 넣었다가 string 타입을 넣었다가 자유롭게 쓸 수 있다. 이처럼 동적 타입이기 때문에 때로는 변수를..

[코로나 백신] 1차 얀센, 3차 모더나 접종 후기

팬데믹이 끝나지 않는다. 코로나19가 발생한지 2년이 넘어가고 있는데 대체 언제쯤 끝날까. 2차 접종까지 국민의 70%가 맞으면 집단면역이 가능해져서 마스크를 벗고 다녀도 된다는 예측은 이제 허상이 되어버렸다. 지난 6월, 내가 맞았던 얀센 백신도 한 번만 맞으면 된다는 장담도 이제 허상이 되었다. 이제 누굴 탓해야 하는지도 모르겠다. 국내에 코로나를 널리 퍼뜨렸던 특정 종교와 그 신자들도 그때는 그렇게 욕을 많이 먹었는데 돌이켜보면 어차피 이렇게 될 거 좀 억울한 측면도 있지 않나 싶다. 결과적으로 정부도 WHO도 제약회사들도 다 거짓말쟁이가 됐다. 그렇다고 누굴 탓하랴. 그냥 현실을 받아들이고 가장 현명하다고 하는 방법을 따르는 수밖에... 그치만 화이자에서 2024년까지 코로나가 지속될 거고, 백신..

일상 2021.12.18

웹 개발자의 M1 MacBook Air 기본형 실무에 사용 후기

드디어 진정한 프로급의 M1 Pro/Max 칩이 탑재된 맥북 프로가 출시되었다. 아직 한국에는 판매 중이 아니고 곧 구매할 수 있을 거라 기대되는데... 나는 목이 빠지게 기다리고 있다. 웹 개발자의 M1 MacBook Air 기본형 사용 후기 2021년 3월 26일에 그 유명한 M1 맥북에어를 배송받았다. 나름 대학생이라 학생 할인을 받아서 116만원에 구매하고, 선물로 받은 에어팟2 유선은 당근에 팔았다. 어차피 업무용으로 쓸게 아니고 개 think-dev.tistory.com 나는 지난 4월 25일에 3월 26일에 구입한 맥북 에어 기본형을 바탕으로 위와 같은 포스팅을 한 적이 있다. 이 포스팅에서 100% 아니 200% 만족한다고 썼다. 이제 약 7개월 정도 사용했는데, 여전히 개인용 개발 작업으..

리뷰/전자제품 2021.11.01