전체 글

전체 글

    2022년을 마무리하며. (기술편)

    2022년을 돌아보면 할 말이 많다. 그래서 기술 관련 회고와 개인 회고로 카테고리를 나누기로 했다. 아직 눈도 내리지 않은 따뜻한(?) 11월이지만 연말에 올릴 예정인 개인 회고보다 일찍 작성해본다. 보통 회고의 경우 과거형으로만 쓰는 경우가 많은데, 이번엔 그렇게 쓰지 않았다. 과거에 있었던 이야기를 한 번 더 엮어보며 생생하게 전달하고자 했다. 경험했던 일을 과거 회상형으로 풀어써도 좋지만 이미 지나간 경험에 현재 생각을 첨가하는 방식으로 작성했다. 보다 객관적으로 분석하기 위함이었다. 참고로 경험은 과거형으로, 개인적인 생각은 블록으로 묶은 현재형으로 썼다. 기술 회고 카테고리 1. 나 2. 도전 (BoB 면접 썰) 3. 오픈소스 4. 기술 블로그 5. 다른 분야로의 확장 (AI, 게임 엔진) 6..

    개인정보 제공에 동의하십니까

    개인정보 동의 현대 사회에서의 거래는 대부분 인터넷에서 이루어진다. 단적인 예로 배달음식이 있다. 맛있는 음식을 먹기 위해 굳이 음적점에 가지 않아도 배달의 민족에서 시켜먹으면 된다. 이러한 거래는 배달 수령을 제외하고 모두 온라인상에서 이루어진다. 그렇기 때문에 배달 서비스 제공자는 내가 누구이지 상세하게 알아야 한다. 그래야 올바른 장소로 안전한 배달이 가능할 테니 말이다. 동시에 배달의 민족 같은 서비스 제공자는 추천 알고리즘 개선을 위해 추가 정보도 수집한다. 배달 서비스를 예시로 들자면 소비자의 성별, 나이, 최근 주문했던 음식 정보가 수집하는 정보에 해당한다. 소비자를 알면 알수록 추천 알고리즘의 정확도는 높아진다. 알고리즘 정확도가 높다면 맛있는 음식을 먹기 위한 주문 소요시간이 줄어들고 전..

    NodeJS를 위한 최소한의 7가지 보안 설정

    NodeJS는 가장 널리 쓰이는 백엔드 환경이다. 그만큼 보안 이슈도 많고 보안 관련 프레임워크도 다양하다. 이 포스트에서는 NodeJS의 보안을 향상할 수 있는 기초적인 방법을 소개할 예정이다. 1. NPM audit npm 모듈의 보안 취약점을 자동으로 진단해주고 모듈을 최신 버전으로 업데이트해주는 기능이다. 프로젝트 디렉터리에서 요청하면 된다. npm audit 2. ngnix 사용 nodejs를 80, 443포트로 바로 노출시키면 여러 보안 이슈에 직면할 수 있다. 포트는 3000으로 해놓고 ngnix proxy 기능을 사용해서 뒤에 숨겨주자. 또한 letsencrypt를 사용해서 인증서를 발급받기에도 수월해진다. 3. Helmet 보안 모듈 적용 express 프레임워크 사용시 헤더 설정으로 알..

    개발자에게 아키텍처가 중요한 이유

    클린 아키텍처 클린 아키텍처는 프로젝트가 확장될 때 그 위력을 발휘한다. 프로젝트가 확장됨에 따라 로직이 여러 차례 바뀌게 되고 데이터 의존성은 뒤죽박죽 되기 십상이다. 이를 사전에 방지하기 위해서는 처음부터 견고하게 프로젝트 구조를 잡아야 한다. 클린 아키텍처는 객체 지향 설계를 원칙으로 한다. 이 원칙은 SOLID 원칙이라고도 불리는데 의존성 분리가 핵심이다. 예를 들어 로그인을 위해 아이디와 패스워드를 입력하는 유저가 있다고 해보자. 로그인 시 해당 정보는 사전에 정의된 api경로로 요청을 보낸다. 이후 API 서버에서는 해당 경로의 컨트롤러로 정보를 보내주고 컨트롤러는 해당하는 정보가 있는지 모델에서 알맞은 정보를 가져온다. 알맞은 정보가 있다면 로그인 성공이라는 메시지를 사용자에게 반환해준다. ..

    [ VSCode ] CSS 자동완성이 뜨지 않을 때

    간혹가다 별도의 익스텐션을 설치하다 보면 이미 CSS 자동완성이 적용되어 있음에도 CSS 파일에 자동완성이 뜨지 않을 때가 있다. 이를 해결하기 위해서는 오른쪽 하단에 있는 언어 모드를 CSS로 변경해주면 된다. 아래 화면처럼 정상적으로 자동완성이 뜨게 된다.

    삽질 좋아합니다

    * 짧은 글 시리즈 6 나는 삽질을 좋아한다. (땅 파는 삽질 말고) 먼저 삽질이라는 단어를 이해하기 위해서는 노가다와의 차이를 알아야 한다. 흔히 노가다는 반복된 노동을 의미하고 삽질은 쓸모없는 일이란 뜻의 관용어로써 사용된다. 쉽게 설명하자면, 쉬운 문제를 많이 푸는 건 노가다에 해당하고 어려운 문제를 10시간 넘게 풀고 있는 건 삽질에 해당한다. 분명 좋은 해결방법이 있는데 굳이 어려운 방법으로 해결하는 사람들을 보고 '삽질하네' 라는 표현을 쓴다. 그런데도 내가 삽질하는 이유는 무엇일까 반문할 수 있다. 삽질을 좋아하는 행위를 풀어쓰면 어려운 문제를 해결하는데서 오는 희열 정도로 축약 가능하다. 문제를 푸는 게 목적이 아닌, 문제를 어렵게 해결하는 과정에서 오는 즐거움이란 말이다.

    맥 미니로 홈서버를 구축하며 #2

    이전 글 1편은 맥미니를 사게 된 결정적인 이유와, 홈서버의 목적이 기록된 글이다. 이 포스트는 지금까지 어떤 조건에서 홈서버를 운영해왔고, 대략 4년간 홈서버 3대를 돌려본 사람으로서 홈서버의 선정기준을 공유하려고 한다. https://devent.tistory.com/174 Mac mini로 홈서버를 구축해보며 #1 사건의 발단 지난 3년간 LG 14인치 그램과 HP 노트북 2대로 홈서버를 구성했었다. 그러던 중 오랜 기간 플러그가 꽂힌 채로 배터리 과열이 생기게 되었고 결국 배터리가 부풀어 오르는 현상이 발 devent.tistory.com 맥 미니 서버를 구축하기 까지 LG 그램 14인치로는 간단한 웹서버를 구축하는데 문제가 없었다. 그러나 동시접속자가 늘고 사이트의 트래픽이 무거워지면서 점차 부..

    [ NodeJS ] Webpack + SASS 설정하기

    SASS 기존 웹페이지에 스타일을 적용하기 위해서는 CSS로 하나하나 변경해주어야 하는 번거로움이 있다. 이 같은 CSS의 개발 편의성을 높이기 위해 등장한 SASS, 프리프로세서 스크립트 언어이다. CSS의 경우 HTML환경에 style 태그만 지정해주면 바로 로드가 되는데 이 SASS란 녀석은 그렇지가 않다. 사용하기 전에 CSS로 컴파일하는 과정이 필수다. 그래서 보통 웹팩과 함께 사용된다. 1. 필요 라이브러리 설치 npm i webpack webpack-cli sass sass-loader style-loader mini-css-extract-plugin css-loader 설치를 완료해주면 웹팩 설정파일을 만들어준다. 2. webpack.config.js import MiniCssExtract..