중앙 OS 6에서 Night mare를 터치해보세요.

완전한 Advent Calendar 9일째!!

의 목적


The Nightmare Before Christmas에 촉발
달력 추가 소재Nightmare로 써봤습니다~.

참고 자료


nightmare.js와 gm로 노드를 만듭니다.js Slack에서 LING 블로그 업데이트를 받았습니다.
naoya sushi!!!
I like Sushi

Night mareJS



Phantoomjs 자물쇠래요.
Phantoomjos나 Casperjs 등 다른 머리 없는 셔츠에 비해 인코딩을 간단하게 걸어두는 것이 특징이다

환경 준비


준비물

  • 충분한 작업 시간
  • 주위의 이해는advent 달력을 쓰는 거야
  • 중앙 OS 6 포함 서버
  • 가입


    yum에 넣을 수 있지만 node 버전이 너무 많아서 힘들어요. 그래서 nodebrew에 넣을게요.
    Hub OS에 nodebrew 설치
    wget git.io/nodebrew
    perl nodebrew setup
    export PATH=$HOME/.nodebrew/current/bin:$PATH
    source ~/.bashrc`
    
    ※ npm에 가입하는 것도 좋지만

    gcc 버전이 낮으면 nodebrew로 낮출 수 없어서 업그레이드됐어요.


    Install g++/gcc 4.8.2 in CentOS 6.6
    wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
    yum install devtoolset-2-gcc devtoolset-2-binutils
    yum install devtoolset-2-gcc-c++ devtoolset-2-gcc-gfortran
    
    /opt/rh/devtoolset-2/root/usr/bin/gcc --version
    ->gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
    
    이상으로 하면 됩니다.

    bash 설정 (~ /. bashrc로 설정하는 김에)

    scl enable devtoolset-2 bash
    source /opt/rh/devtoolset-2/enabl
    

    nodejs 설정


    v4, v5 등 다양한 것들이 있으니까 좋아하세요...nodebrew install stable→v5.1.0 떨어질 수도 있어.
    최근에 발매된 불안...그래서
    적당히 낡은 것을 넣어 보아라
    nodebrew install-binary v0.10.40`
    nodebrew use v0.10.40`
    
    node -v 싸우면 v0.10.40\node.js 준비 완료/

    night mare의 준비.


    night mare는phantom의 자물쇠입니다.phantom이 필요합니다.

    npm install -g phantomjs ※ -g로 전역 설치

    night marejs 가입

    npm info nightmare→ 드랍 가능한 버전을 확인한다.
    ※ v1, v2는 많이 변했어요!
    v1은phantom기초,v2는electron기초
    v2가 가방을 뺏을 때 동작이 이상해서 이번에 v1을 이용했어요.npm install [email protected]※ 버전이 너무 많아서 고민입니다. 이번엔 로컬 설치입니다.

    커튼 & 캡처


    demo.js
    var Nightmare = require('nightmare');
    new Nightmare()
      .goto('http://allabout.co.jp/')
      .screenshot('./gmgc1.png')
      .run();
    

    요컨대 실행하다

    node demo.js

    문제: 아무리 해도 일본어가 안 나오는데...


    스퀘스트가 나왔는데 일본어가 안 나오거나 난리가 났나봐요. 고통스러워요.
    왜냐하면 일본어 글씨체가 안 들어갔어요.

    대책: 일본어 글씨체 추가


    귀찮아서 팀을 설치했습니다.

    yum -y groupinstall "Japanese Support"

    로켈 설정 변경

    vi /etc/sysconfig/i18n아무래도 ja_JP.utf8 안 될 것 같아.
    LANGen_US.UTF-8
    다시 쓴 후 터미널을 다시 시작하면 됩니다
    일본어 글꼴이 나타날지 다시 확인하기

    캡처 결과


    http://allabout.co.jp/

    경품: 그림의 차이를 얻다


    gm를 더해 날짜와 시간에 얻은 사진의 차이점을 업데이트해 보자

    넣다


    CentOS에서 GraphicsMagick 사용
    ※ 상황에 따라 리포지토리를 추가해야 할 수도 있다?
     yum install GraphicsMagick
    
    npm에 작업 디렉터리 추가하기 gm
    npm install gm
    

    이미지 차이 얻기


    사용 방법: https://github.com/aheckmann/gm#compare
    ※ ImageMagick을 사용하고 싶은 사람은 하위 클래스로 지정
    https://github.com/aheckmann/gm#use-imagemagick-instead-of-gm

    어제와 오늘 이미지 차별화 코드


    노동력을 줄이고 재료를 줄이기 때문에 같은 목록에 이미지가 있는 전제에서
    (yyyymmdd.png에 이미지 저장)
    demo2.js
    var gm = require('gm');
    
    var date = new Date();
    var today = date.getFullYear()+( "0"+( date.getMonth()+1 ) ).slice(-2)+( "0"+date.getDate() ).slice(-2);
    // set yesterday
    date.setDate(date.getDate() - 1);
    var yesterday = date.getFullYear()+( "0"+( date.getMonth()+1 ) ).slice(-2)+( "0"+date.getDate() ).slice(-2);
    
    gm.compare('./'+today+'.png', './'+yesterday+'.png', options, function (err, isEqual) {
     if (err) throw err;
    })
    

    전날 이미지



    당일 사진



    차이점


    1 stREC 차이가 나서 빨개졌어요.

    앞으로 하고 싶은 거.

  • hubot을 통해 통지한 날짜와 시간의 차이(근래 대응 예상)
  • 어느 정도에 한도값을 그림의 차이로 설정하고 일정한 차이와 일치할 때(화면 붕괴 등) 알림
  • shift-sjis라면 코드가 흐트러지기 때문에 이 부분의 제거
  • 좋은 웹페이지 즐겨찾기