Jetronome Client Jetronome Client는 Application의 상태를 모니터링 할 수 있는 가장 간단한 방법입니다. License: MIT License Features- 주기적 실행 여부 확인 - 실행 중인 PC의 자원 확인 Install- 점검할 Node.js 프로젝트에서 다음 명령을 실행합니다. npm i --save jetronome-client Usage초기화와 함께 신호 발생 시작require('./jetronome-client').init({ name: 'Dummy App', // Application Name (required) description: 'This is a test application.', // Description (required) server: ..
Jetronome Server Jetronome Server는 운용 중인 Application의 상태를 한 곳에서 확인할 수 있는 가장 간단한 방법입니다. License: MIT License Features- 주기적 실행 여부 확인 - IP를 기준으로 한 App 목록 그룹화 - 신호 누락 시 알림 - 테스트 API 접속 실패 시 알림 Install - 서버로 사용할 Node.js 프로젝트에서 다음 명령을 실행합니다. npm i --save jetronome-server Usage 초기화 require('jetronome-server')({ alertFn: (name, msg) => { // 알림 발생 시 실행될 함수. console.error(name); console.error(msg); }, por..
열흘도 더 된 사건이지만 나중에 참고할 일이 생길 것 같아서 남겨둔다. 오전 8시 반 쯤에 운영 중인 대부분의 서버에서 오류가 발견되었다. 문제는 도메인이야, 이 멍청아 Express.js 서버(A)에서 외부 자원(B)을 불러올 수 없다는 오류를 내고 있었다. 도메인에 대한 IP를 조회하지 못하는 문제였다. 일반적인 상황에서라면 500이나 Request Timed Out이 발생하는게 맞을터였다. 이상한 조짐을 느끼고 ping을 시도했다. 최근에 도메인 관련 작업을 수행하지도 않았는데? AWS Route53에 등록된 정보도 이상이 없었다. 문제 원인을 분리해내기 위해 아래를 수행했다. 1. A의 인스턴스에서 DNS Cache 비우기: 동일 오류 발생 2. 다른 머신(로컬)에서 B로 접속 시도: 성공 3. ..
최근 Google Chrome을 업데이트 한 이후로http://localhost로 접속을 시도하더라도강제로 https://localhost로 전달(Redirect)되는 경우가 발생합니다. 물론 로컬에서 작업을 하더라도 SSL로 연결을 보호하는 것이 최선이겠지만,모든 개발을 SSL로만 할 수는 없습니다. Google Chrome이 강제로 리다이렉트 하지 않도록 설정하는 방법을 아래에 기록합니다. 1. 설정 페이지로 이동- Google Chrome의 주소창에 다음 주소를 입력합니다: chrome://net-internals/#hsts 2. 보안 정책 삭제- 해당 페이지의 가장 아래에 있는 Delete domain security policies에 localhost를 입력하고 Delete버튼을 클릭합니다. 3..
컴퓨터의 장점은 반복 작업을 불평 없이 약속된 시간에 수행한다는 것입니다. Node.js로 구현한 App 역시 마찬가지로 지정된 시간마다 실행되도록 할 수 있습니다. 이번 포스트에서는 *nix(Linux, MacOS) OS를 기준으로 Node.js App을 스케줄링하는 두가지 방법을 공유합니다. Cron? *nix 시스템에는 기본적으로 cron scheduler가 탑재되어 있습니다. cron 표현식에서 각 시간은 공백문자 한 개로 구분하며 아래와 같이 작성합니다. # 분 시 일 월 요일 명령 0 10 * * * /sendMail.sh # 매일 오전 10시 정각에 sendMail.sh를 실행 30 14 * * 0 /nap.sh # 매 일요일 오후 2시 30분에 nap.sh를 실행 이 글에서는 Cron 자체..
Node.js 응용프로그램을 실행하는 방법은 일반적으로 node 혹은 npm 명령어입니다. 이 때 별개의 터미널을 이용해 실행하거나, OS의 스케쥴러를 이용하죠. 하지만 웹 서비스와 같이 항상 실행되어야 하는 App도 있습니다. 이런 경우 별도의 터미널로 실행되어 있을 때 실수로 터미널을 종료하기라도 하면 치명적일 수 있습니다. PM2는 Node.js App을 백그라운드에서 실행해줘서 이런 상황을 방지해 줄 수 있습니다. PM2 KeyMetrics에서 제공하는 PM2의 PM은 Process Manager라고 합니다. 이름에서 볼 수 있듯이 Node.js 프로세스를 관리해주는 프로그램이죠. PM2의 홈페이지에서는 IBM, MS, PayPal 등의 업체가 PM2를 이용하고 있다고 합니다. PM2를 이용하면 ..
청약조회긱 서울에서 예정 중인 혹은 진행 중인 주택 청약을 빠르게 조회해주는 챗봇입니다.Telegram Bot API를 이용하여 간단하게 구현되었습니다. :: 사용 언어- node.js :: 주요 라이브러리- cheerio: 웹페이지 분석- cron: 스케줄러- telegraf: Telegram Bot API 사용 지원 :: 주요 기능- 청약 조회 + 예정 중인 혹은 진행 중인 주택 청약을 조회하여 출력합니다.- 청약 정보 구독 + 구독을 신청한 경우 예정된 시각에 자동으로 새 정보를 발송합니다. :: 사용해보기- 이 링크를 누르면 Telegram을 통해 사용해 볼 수 있습니다. :: 스크린샷
한 서버에서 여러 웹 서비스를 운용해야 하는 경우가 있습니다. 단순히 도메인이 여러개라서 한 도메인으로 사용자를 전달한다거나, 사용자 페이지와 백 오피스를 함께 운용할 수도 있지요. 이런 경우 Apache나 Nginx를 이용한다면 설정 파일을 이용해서 VirtualHost를 활용하곤 합니다. 만약 모든 서비스가 Node.js로 운용되고 있다면 굳이 Apache나 Nginx를 찾지 않고도 VirtualHost를 사용할 수 있습니다. 사전 준비: hosts 파일 편집 hosts 파일은 로컬에 보관하는 일종의 전화번호부입니다. DNS 동작에서의 hosts 파일 역할에 대한 자세한 설명은 다음 링크에서 확인하실 수 있습니다: hosts 파일 - 생활코딩 hosts 파일은 아래 위치에서 찾을 수 있습니다. - W..
이메일은 사용자에게 낮은 비용으로 메시지를 전달할 수 있는 수단입니다. 이번 포스트에서는 Node.js에서 간단한 방법으로 메일을 발송하는 방법을 알아봅니다. 서버 구성 이번에 공유하는 예시는 이용하는 서버 환경에 따라 작동이 되지 않을 수 있습니다. 이 점 유의해주시기 바랍니다. - OS: Ubuntu 16.04 (aws) - Node.js: v8.11.1 사전 준비: Postfix 설치 1. 아래 명령어를 이용하여 Postfix를 설치를 시작합니다. sudo apt-get install -y postfix 2. 설정 화면이 실행됩니다. enter 혹은 return키를 눌러 다음 화면으로 이동합니다. 3. Internet Site를 선택합니다. 4. 자신의 도메인을 입력합니다. 도메인이 없는 경우 기본..
VSCode는 가벼운 에디터지만 필수적인 기능만 제공하고 있습니다.대신 Marketplace를 통해 추가 기능을 제공하고 있죠.Extension 기능을 적절히 활용하면 생산량 증가를 꾀할 수 있습니다. VSCode 설치 후 고정적으로 이용하는 Extension을 추천해드릴 겸 목록을 공유합니다. Active File In StatusBar (이동) 현재 편집 중인 파일의 경로를 하단 상태 막대에 표시합니다. 이 경로를 클릭하면 바로 클립보드에 복사할 수도 있죠. 터미널이나 탐색기를 여러번 이용해야 하는 경우 그 빛을 발합니다. Bracket Pair Colorizer (이동) 프로그램의 덩치가 커지면 여러 단계의 괄호를 이용해야 합니다. JavaScript 코드는 특히 더 심하죠.괄호의 단계별로 다른 색..
Express.js 서버로 업로드 한 이미지 파일의 배경색을 제거하기 웹 서비스를 운영하다보면 사용자의 도장을 인식하거나, 간단한 사진 합성을 하는 등 사용자가 업로드 한 이미지의 배경색을 제거하고, 이미지의 내용 부분만 추출해야 할 수도 있습니다. 사용자가 이미지를 업로드하면, 배경을 제거하는 예제를 공유합니다. 사전 준비 1. GraphicsMagick을 설치합니다. - GraphicsMagick은 널리 이용되는 이미지 처리 라이브러리입니다. 이 예제에서는 GraphicsMagick을 이용해 이미지를 처리합니다. - Windows: 아래 링크에서 다운로드 후 설치를 진행하세요. http://www.graphicsmagick.org/README.html#installation - *nix: 아래 링크에..