이재홍의 GitHub 탐험기 시즌2 2014/11/22

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

2014년 11월 30일에 "가장 빨리 만나는 Docker" 출간을 앞두고 있습니다. 다음 주 쯤이면 인쇄에 들어갈 것 같네요.

이제 GitHub 탐험기 시즌2를 시작해볼까 합니다. 저번 GitHub 탐험기는 매일 5개씩 오픈소스 프로젝트를 소개해봤습니다만, 이번에는 프로젝트 개수와 날짜에 얽메이지 않고 좀더 자유로운 형식으로 써볼 예정입니다.


awsbook - 아마존 웹 서비스를 다루는 기술(The art of Amazon Web Services)

https://github.com/pyrasis/awsbook

"아마존 웹 서비스를 다루는 기술"의 예제 코드입니다. 각 챕터별로 AWS 리소스를 실습할 때 필요한 예제 코드들이 들어있습니다. 예제 코드는 대부분 Node.js로 작성되어 있습니다.

후반부에는 다음과 같이 실무와 유사한 예제를 넣었습니다.

  • Chapter30: AWS API와 AWS CLI 예제가 들어있습니다. EC2, CloudWatch, ELB, Auto Scaling, S3, CloudFront, DynamoDB, CloudSearch, SNS, SES, SQS의 주요 부분만 골라서 작성했습니다.
  • Chapter31: AWS로 글로벌 사진 사이트를 구축하는 예제입니다. SQS로 이미지 변환 서버에 메시지를 전달하고 imageMagick으로 이미지를 변환하는 동작이 주요 포인트입니다. 그리고 이미지는 S3에 저장한 뒤 CloudFront로 캐싱하는 형태입니다.
  • Chapter32: 실시간 콘서트 티켓 예매 사이트를 구축하는 예제입니다. socket.io로 웹 브라우저간 실시간 통신을 하고, Redis의 Pub/Sub 기능을 사용하여 좌석 상태를 갱신합니다. 예약 및 결제 상태는 RDS MySQL에 저장합니다.
  • Chapter33: 모바일 게임 서버를 구축하는 예제입니다. Node.js express를 사용하여 REST 방식으로 게임 서버를 구현합니다. 게임 데이터는 RDS MySQL에 저장합니다. 그리고 각종 런, 팡류 게임에서 볼 수 있는 순위 산출 기능은 Redis의 Sorted Set을 이용하여 구현하였습니다.
  • Chapter34: 부록입니다. 그중에서 Auto Scaling 그룹의 EC2 인스턴스에 소스를 배포하는 예제를 담았습니다. S3을 이용하는 방법을 비롯하여 Git과 Subversion을 이용하는 방법도 함께 구현하였습니다.

pageres - Responsive website screenshots

https://github.com/sindresorhus/pageres

웹 사이트의 스크린샷을 찍어주는 프로젝트입니다. Node.js로 구현되어 있으며 내부적으로는 phantomjs로 돌아갑니다.

설치 방법은 간단합니다. pageres 모듈을 전역 모듈로 설치하면 되고, phantomjs 실행 파일도 알아서 받아옵니다.

npm install -g pageres

이런식으로 커맨드라인에서 웹 사이트의 스크린샷을 찍을 수 있습니다.

pageres m.naver.com 320x568 -c

당연히 Node.js 모듈이기 때문에 자바스크립트 코드로도 웹 사이트의 스크린샷을 생성할 수 있습니다. 앞에서처럼 해상도를 직접 지정해도 되고 iphone 5s처럼 장치 이름을 넣어줘도 됩니다.

var Pageres = require('pageres');

var pageres = new Pageres({ delay: 2 })
  .src('m.naver.com', ['iphone 5s'], { crop: true })
  .dest(__dirname);

pageres.run(function (err) {
  if (err) {
    throw err;
  }

  console.log('done');
});

이런식으로 스크린샷이 생성됩니다.

웹 사이트 테스팅을 자동화하는데 유용하겠습니다.


nightmare - A high level wrapper for Phantomjs

https://github.com/segmentio/nightmare

headless 웹 브라우저인 phantomjs의 래퍼입니다. phantom(유령)에 맞춰서 프로젝트 이름을 nightmare(악몽)으로 지은 것 같군요.

nightmare는 phantomjs 실행 파일을 포함하고 있지 않습니다. 그래서 http://phantomjs.org/에서 각 플랫폼별로 실행 파일을 받은 뒤 js 파일이 있는 디렉터리에 넣어주면 됩니다.

npm install nightmare

간단하게 특정 사이트의 내용을 가져올 수 있습니다.

var Nightmare = require('nightmare');
new Nightmare()
  .goto('http://hello.com')
  .evaluate(function () {
    return document.documentElement.innerHTML;
  }, function (res) {
    console.log(res);
  })
  .run();

nightmare는 다양한 액션을 지원하는데요. 뒤로 가기, 앞으로 가기, 새로 고침, 클릭, input에 글자 입력 등을 지원합니다.


이상 끝.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2014-11-22