2022년의 기술회고는 여기로 https://devent.tistory.com/192 2022년을 마무리하며. (기술편) 2022년을 돌아보면 할 말이 많다. 그래서 기술 관련 회고와 개인 회고로 카테고리를 나누기로 했다. 아직 눈도 내리지 않은 따뜻한(?) 11월이지만 연말에 올릴 예정인 개인 회고보다 일찍 작성해본 devent.tistory.com 여러 번의 퇴고 끝에 무려 한 달이라는 시간을 끌었다. 조금 늦은 감이 없지 않아 있지만, 퇴고의 결과라는 점에서 후회스럽지는 않다. (다음 회고는 10월부터 준비해 놓아야겠다.) 이번 한 해는 기술적 도전을 제외하곤 단조롭게 살아왔던 터라 쓸 말이 그렇게 많지 않았다. 그저 22년은 작년에 비해 진로에 대한 걱정을 덜었다는 점에서 만족스럽게 지냈다고 생각..
전체 글
안녕하세요 🔭 소프트웨어 개발자 허형준입니다. 개인적인 에세이와 대중적인 기술 칼럼을 쓰고 있습니다. 테스트베드 스타트업 데카르트좌표계를 창립하고 bleeding edge 기술을 다루고 있습니다.세상에는 하기 싫은 것도 해야 한다는 식의 논리가 만연하다. 다수가 하고 있는 일을 반드시 따라가야 편하고, 네가 하고 싶은걸 하며 살 수 있다는 맥락에서다. 만일 그러지 않는다면 네가 이루고자 하는 목표를 이루지 못하고 꿈에 사로잡혀 현실을 직시하지 못하게 된다고 불안 아닌 불안감을 증폭시키려 든다. 하지만 이런 식의 논리로는 세상이 말하는 필연적인 행위에 당위성을 부여하기 어렵다. 하기 싫은걸 해야, 하고 싶은걸 할 수 있다는 논리는 동일 시간대에서 적용하면 모순이기 때문이다. 왜 하기 싫은 일을 해야 한다고 주장하는가 논리를 반박하기 전에 왜 사람들은 하기 싫은 일을 해야 한다고 말할까. 그 답은 질서에 있다. 사람이란 동물은 질서를 좋아한다. 본래 무질서한 세상에서 나름의 질서를 확립하고 인류의 ..
2022년을 돌아보면 할 말이 많다. 그래서 기술 관련 회고와 개인 회고로 카테고리를 나누기로 했다. 아직 눈도 내리지 않은 따뜻한(?) 11월이지만 연말에 올릴 예정인 개인 회고보다 일찍 작성해본다. 보통 회고의 경우 과거형으로만 쓰는 경우가 많은데, 이번엔 그렇게 쓰지 않았다. 과거에 있었던 이야기를 한 번 더 엮어보며 생생하게 전달하고자 했다. 경험했던 일을 과거 회상형으로 풀어써도 좋지만 이미 지나간 경험에 현재 생각을 첨가하는 방식으로 작성했다. 보다 객관적으로 분석하기 위함이었다. 참고로 경험은 과거형으로, 개인적인 생각은 블록으로 묶은 현재형으로 썼다. 기술 회고 카테고리 1. 나 2. 도전 (BoB 면접 썰) 3. 오픈소스 4. 기술 블로그 5. 다른 분야로의 확장 (AI, 게임 엔진) 6..
개인정보 동의 현대 사회에서의 거래는 대부분 인터넷에서 이루어진다. 단적인 예로 배달음식이 있다. 맛있는 음식을 먹기 위해 굳이 음적점에 가지 않아도 배달의 민족에서 시켜먹으면 된다. 이러한 거래는 배달 수령을 제외하고 모두 온라인상에서 이루어진다. 그렇기 때문에 배달 서비스 제공자는 내가 누구이지 상세하게 알아야 한다. 그래야 올바른 장소로 안전한 배달이 가능할 테니 말이다. 동시에 배달의 민족 같은 서비스 제공자는 추천 알고리즘 개선을 위해 추가 정보도 수집한다. 배달 서비스를 예시로 들자면 소비자의 성별, 나이, 최근 주문했던 음식 정보가 수집하는 정보에 해당한다. 소비자를 알면 알수록 추천 알고리즘의 정확도는 높아진다. 알고리즘 정확도가 높다면 맛있는 음식을 먹기 위한 주문 소요시간이 줄어들고 전..
NodeJS는 가장 널리 쓰이는 백엔드 환경이다. 그만큼 보안 이슈도 많고 보안 관련 프레임워크도 다양하다. 이 포스트에서는 NodeJS의 보안을 향상할 수 있는 기초적인 방법을 소개할 예정이다. 1. NPM audit npm 모듈의 보안 취약점을 자동으로 진단해주고 모듈을 최신 버전으로 업데이트해주는 기능이다. 프로젝트 디렉터리에서 요청하면 된다. npm audit 2. ngnix 사용 nodejs를 80, 443포트로 바로 노출시키면 여러 보안 이슈에 직면할 수 있다. 포트는 3000으로 해놓고 ngnix proxy 기능을 사용해서 뒤에 숨겨주자. 또한 letsencrypt를 사용해서 인증서를 발급받기에도 수월해진다. 3. Helmet 보안 모듈 적용 express 프레임워크 사용시 헤더 설정으로 알..
클린 아키텍처 클린 아키텍처는 프로젝트가 확장될 때 그 위력을 발휘한다. 프로젝트가 확장됨에 따라 로직이 여러 차례 바뀌게 되고 데이터 의존성은 뒤죽박죽 되기 십상이다. 이를 사전에 방지하기 위해서는 처음부터 견고하게 프로젝트 구조를 잡아야 한다. 클린 아키텍처는 객체 지향 설계를 원칙으로 한다. 이 원칙은 SOLID 원칙이라고도 불리는데 의존성 분리가 핵심이다. 예를 들어 로그인을 위해 아이디와 패스워드를 입력하는 유저가 있다고 해보자. 로그인 시 해당 정보는 사전에 정의된 api경로로 요청을 보낸다. 이후 API 서버에서는 해당 경로의 컨트롤러로 정보를 보내주고 컨트롤러는 해당하는 정보가 있는지 모델에서 알맞은 정보를 가져온다. 알맞은 정보가 있다면 로그인 성공이라는 메시지를 사용자에게 반환해준다. ..
간혹가다 별도의 익스텐션을 설치하다 보면 이미 CSS 자동완성이 적용되어 있음에도 CSS 파일에 자동완성이 뜨지 않을 때가 있다. 이를 해결하기 위해서는 오른쪽 하단에 있는 언어 모드를 CSS로 변경해주면 된다. 아래 화면처럼 정상적으로 자동완성이 뜨게 된다.
* 짧은 글 시리즈 6 나는 삽질을 좋아한다. (땅 파는 삽질 말고) 먼저 삽질이라는 단어를 이해하기 위해서는 노가다와의 차이를 알아야 한다. 흔히 노가다는 반복된 노동을 의미하고 삽질은 쓸모없는 일이란 뜻의 관용어로써 사용된다. 쉽게 설명하자면, 쉬운 문제를 많이 푸는 건 노가다에 해당하고 어려운 문제를 10시간 넘게 풀고 있는 건 삽질에 해당한다. 분명 좋은 해결방법이 있는데 굳이 어려운 방법으로 해결하는 사람들을 보고 '삽질하네' 라는 표현을 쓴다. 그런데도 내가 삽질하는 이유는 무엇일까 반문할 수 있다. 삽질을 좋아하는 행위를 풀어쓰면 어려운 문제를 해결하는데서 오는 희열 정도로 축약 가능하다. 문제를 푸는 게 목적이 아닌, 문제를 어렵게 해결하는 과정에서 오는 즐거움이란 말이다.