Node.js로 다운로드 완료된 파일 목록을 메일로 전송하기

Summary

토렌트(Deluge)로 다운로드를 걸어놓고 진행상황을 매번 확인하기 귀찮아서 구현한 코드입니다. 다운로드 디렉토리를 관찰하다가 새로운 파일을 발견하면 files 맵에 파일이름을 키로 저장해 두고 3분을 기다립니다. 3분이 경과하면 files 맵에 저장된 파일 중 실제로 존재하는 파일만 추려서 파일 목록을 만들어내고 이를 G메일로 전송합니다. G메일 전송에는 emailjs라는 모듈이 사용되었습니다.

Module

$ npm install emailjs

Source

var fs = require('fs');
var path = require('path');

var completeDir = '/data/torrent/complete';
var files = {};
var working = false;

var email = require("emailjs/email");
var server = email.server.connect({
   user: "reshout",
   password: "xxxxxxxx",
   host: "smtp.gmail.com",
   ssl: true
});

fs.watch(completeDir, function(action, filename) {
  files[filename] = true;
  if (!working) {
    working = true;

    var text = "";
    var count = 0;

    setTimeout(function() {
      for (var prop in files) {
        if (files.hasOwnProperty(prop)) {
          var apath = path.join(completeDir, prop);
          if (fs.existsSync(apath)) {
            text += (prop + "\n");
            count++;
          }
        }
      }

      server.send({
        text: text,
        from: "reshout <reshout@gmail.com>",
        to: "reshout <reshout@gmail.com>",
        subject: "[reshout.com] " + count + " files downloaded"
      }, function(err, message) {
        console.log(err || message);
      });

      working = false;
      files = {};
    }, 1000 * 60 * 3);
  }
});

아주대 빨간석쇠구이

IMG_1351

아주대 삼거리 끼안경 건물 뒤편에 위치한 빨간 석쇠구이에 다녀왔습니다. 빨간(매운) 음식으로는 닭발, 닭날개, 미니족발을 판매하는데, 그보다 영계통닭이 정말 맛있었습니다. 영계를 통째로 튀겨서 나오는데 직원이 눈 앞에서 이렇게 먹기 좋게 발라 주십니다.

IMG_1353

살이 정말 부드럽고 껍질은 바삭바삭합니다. 여자친구도 저도 지금껏 먹어본 통닭 중 최고라는 평가를 내렸습니다.

2013-07-07 17.54.21

계란찜도 맛이 좋고 푸짐합니다.

가격까지 저렴해서 조금이라도 늦게가면 늘 기다려야 할 것 같습니다. 저희는 미니족발, 계란찜, 영계통닭, 생맥주 500cc 4잔 주문했는데 31,300원 나왔네요. 통닭 좋아하시는 분이라면 꼭 도전해 보세요. 팔달문 진미통닭보다 여기가 훨씬 맛있는 것 같습니다.

볼링 레슨 그 후

매주 월요일, 목요일 오후 9시 30분까지 김남주프로볼링샵에 방문하시면 김남주 프로님께서 무료로 레슨을 해주십니다. (물론 찾아가기 전에 미리 전화로 연락을 드려야 합니다.)

2번의 레슨을 받기 전 평균점수는 160~170점 정도였고, 레슨 후 얼마동안은 150~160점으로 떨어졌습니다. 그러나 볼링화를 바꾼 후 적응기간이 끝나자 평균점수는 190점에 육박하고 있습니다.

  • 6월 1일 볼링화 Dexter SST8 구입
  • 6월 2일 탄천볼링장: 165, 170, 153, 169, 146, 183, 215 (평균 172점)
  • 6월 5일 탄천볼링장: 203, 169, 186, 211, 202 (평균 194점)
  • 6월 8일 탄천볼링장: 186, 184, 214, 157, 180, 190, 186, 210 (평균 188점)

레슨 전에는 느리고, 회전수가 적고, 공을 던질때마다 쿵 소리가났는데, 지금은 소리없이 공을 던질 수 있게 되었고 회전수가 늘었고 공의 스피드도 이전보다 상당히 좋아졌습니다.

레슨 후 엄지손가락이 빠지지 않은 상태로 턴, 리프팅하는 습관을 완전히 버리기 위해 한동안 스트레이트 구질로 볼링을 쳐야했습니다. 훅으로 치다가 스트레이트로 치려니 정확도가 더 요구 되더군요. 덕분에 한동안 평균 점수가 하락했습니다. 그러나 이제는 백스윙의 정점에서 펴졌던 손목을 자연스럽게 복원하는 요령을 익히면서 공이 던져지는 순간 엄지방향이 공의 진행방향과 일치하게 되었고 덕분에 엄지타이밍이 빨라지면서 자연스러운 훅을 구사할 수 있게 되었습니다.

엄지타이밍보다 더 중요한 포인트는 스텝입니다. 그런데 처음 구입한 볼링화는 합성레인에서 제대로 슬라이딩이 안되어서 착지가 늘 불안하고 파울라인에 도달하지 못했습니다. 이 문제는 Dexter SST8를 구입하면서 해결되었습니다. 아직 많이 부족하지만 인위적인 팔의 힘이 아닌 물흐르듯 자연스러운 스텝과 스윙의 조화속에서 힘을 얻어내려고 노력하고 있습니다.

올해는 놈 듀크처럼 화려하진 않지만 정교한 클래식 볼링 스타일로 기본기를 쌓고 평균 190점 이상을 유지하는 것이 목표입니다.

인천 차이나타운

지난 현충일에 여자친구와 인천 차이나타운에 다녀왔습니다. 오전 9시 10분에 출발했는데 막힘없이 달려 10시에 도착했습니다. 여행을 준비하면서 화평동 공영주차장이 공짜라는 사실을 알고 출발했지만 날씨가 너무 더워서 차이나타운 바로 옆에 위치한 한중문화원 공영주차장에 주차했습니다. 깔끔한 지하주차장이고 시간당 주차요금은 1,200원 종일 주차요금은 6,000원입니다.

2013-06-06 10.13.38

일찍 도착해서 그런지 차이나타운의 거리는 한산했습니다.

2013-06-06 10.15.37

주민센터까지도 중국 건물의 모습을 하고 있더군요.

2013-06-06 10.18.39

아침을 먹지 않고 출발해서 식사를 할 요량으로 제일 먼저 백년짜장으로 유명한 만다복을 찾았으나, 영업을 시작하지 않은 상태였습니다. 오전 11시부터 영업을 시작한다고 하네요.

2013-06-06 10.24.49

11시까지 기다리기에는 너무 허기져서 만두만 전문적으로 하는 중국집 원보를 찾아갔습니다. 다행히 영업을 하고 있어서 군만두와 찜만두를 주문했습니다.

2013-06-06 10.36.30

약간 탄것 같은 첫인상에 실망했지만 한 입 배어물고 실망은 눈독듯이 사라졌습니다. 여자친구도 그렇고 저도 그렇고 태어나서 지금까지 먹어본 만두 중에 최고라는 평가를 내렸습니다. 입속에서 사정없이 터지는 육즙이 감동적이더군요. 군만두인데도 전혀 딱딱하지 않았습니다.

2013-06-06 10.42.49

찜만두도 맛있었지만 군만두가 더 맛있었던 것 같습니다. 참고로 저는 평소에 군만두보다 찜만두를 선호합니다.

만족스러운 식사를 마치고 배를 꺼트리기 위해 차이나타운을 찬찬히 둘러보았습니다. 화덕만두집 십리향의 위치도 파악해두고, 중국사찰 의선당도 구경했습니다.

2013-06-06 10.58.56

한눈에 보기에도 한국사찰과 달리 화려했습니다.

2013-06-06 11.00.44

내부도 둘러 보았는데 부처님이 아닌 다른 신을 섬기는 것 같더라구요.

의선당에 나와서 만다복을 지날때가 11시 10분이었는데 벌써 기다리는 사람들이 보이더군요. 아직 배는 불렀지만 과감히 줄을 서기로 했습니다. 20분 정도를 기다려 자리를 잡았고 백년짜장을 주문했습니다.

2013-06-06 11.37.56

먹어보니 사람마다 호불호가 많이 갈릴 것 같은데, 저는 정말 맛있게 먹었습니다. 평소 먹는 짜장면이 이 맛이었으면 하는 마음이 들 정도로 말이죠. 담백하면서도 오래 씹으면 춘장의 고소함이 은근히 베어나와서 맛있었습니다.

2013-06-06 12.04.32

나오는 길에 기다리는 줄을 바라보면서 안도의 한 숨을 쉬었습니다. 1시간 전에 잘못된 선택을 했다면 워낙 날씨가 더워서 밖에서 기다리기가 꽤나 힘들었을 것 같습니다.

이제는 충분히 배불리 먹었으니 차이나타운과 자유공원을 여유롭게 둘러보기로 하였습니다.

2013-06-06 12.10.20

벽화를 통해 인천의 역사도 알아보고,

2013-06-06 12.47.33

언덕에 올라 인천항도 바라보고,

2013-06-06 12.43.24

자유공원에서 맥아더 장군의 동상도 보았습니다.

2013-06-06 13.23.38

자유공원에서 내려오는길에 삼국지 벽화거리를 걸었는데, 오랜만에 벽화로 삼국지를 접하니 소설을 다시 읽고 싶다는 생각도 들고, 삼국지11 게임을 하고 싶다는 생각도 들더군요.

2013-06-06 13.54.12

배가 부른 상태였지만 화덕만두를 포기할 수 없어서 십리향에 줄을 섰습니다. 화덕을 한번 열때마다 완성된 화덕만두 수십개가 나오기 때문에 줄은 생각보다 금방 줄어 들더군요.

2013-06-06 14.00.58

고기만두, 팥만두를 1개씩 사서 먹어 보았는데 기대했던 것 만큼 맛있지는 않았습니다. 차이나타운에서 만두를 먹어보고자 하시는 분들은 완보를 적극 추천하고 싶네요.

2013-06-06 14.19.19

짜장면 박물관은 입장료를 1,000원 받아서 그냥 지나쳤고,

2013-06-06 14.13.55

수제과자 전문점 담에서 월병과 펑리수를 사서 돌아왔습니다.

벌써 여름인가봅니다. 너무 더워서 지친 덕분에 예정보다 일찍 여행을 마치고 귀가하였습니다. 그래도 일찍 다녀와서 길게 줄 서는 일 없이 여유롭게 식사하고 구경할 수 있었던 것 같습니다. 주차장에서 나올때보니 만차라서 주차부터 쉽지 않아 보이더라구요.

당일 여행지로 추천할만한 곳인 것 같습니다. 맛있는 음식과 볼거리가 충분하고 자유공원이 있어서 산책하기도 참 좋거든요.

덱스터 SST8

SST8

김남주 프로님께 무료레슨을 받으면서 볼링공보다 볼링화가 훨씬 중요하다는 것을 깨닫게 되었습니다. 스윙보다 스텝이 볼리공이 굴러가는 속도, RPM에 더 큰 영향을 주기 때문입니다.

그런데 올해초 구입했던 저렴한 볼링화 MBS300 TW-180의 경우 합성레인으로 되어 있는 탄천볼링장에서 너무 슬라이딩이 안되어서 제대로 스텝을 밟을 수가 없었습니다. 그래서 큰 맘먹고 좋은 볼링화를 구입하게 되었습니다.

새 볼링화는 덱스터사의 SST8인데 가격은 25만원입니다. 레인의 재질에 따라서 슬라이드솔을 교체할 수 있고 S6, S8, S10 슬라이드솔이 포함되어 있는데 숫자가 클수록 많이 미끄러지는 성질을 가지고 있습니다.

올해 2월초에 중고로 구입해서 아마도 150게임 넘게 친 볼링공 Maximum Theory도 이번에 김남주 프로님께 복원을 받았습니다. 단돈 2만원에 기름에 쩔어있던 공이 거의 새것처럼 복원되었습니다. 볼링공 복원이 궁금하신 분은 김남주프로볼링샵을 방문해 보세요.

새 볼링화와 복원된 거의(?) 새 공으로 어떤 경기를 펼칠 수 있을지 내일 퇴근 후가 기다려 집니다.