Node.js with Heroku


                @sngmr
自己紹介
Shingo Mori
森 真 吾
ConnectionWorks Inc.
(株)コネクションワークス

Twitter: @sngmr


ソフトウェアエンジニア兼営業兼企画兼コンサル兼経理


Titanium Chatroom Nagoya
今日のはなしは・・・
やってみた
レベルです
あと・・・
Mac
前提です
Herokuってなに?
What s Heroku?
•PaaS

•Platform   As A Service
•Rails

•Node.js   from June 2011
•
なにがいるの?
‣ Herokuアカウント

‣ Macで動くNode

 ‣ Homebrewとかで

‣ NPM(Node   Package Manager)
 ‣ curl http://npmjs.org/install.sh | sh
‣ Heroku Toolbelt

 ‣ Heroku   Clientなどがバンドル
 ‣ https://toolbelt.heroku.com/
‣ Gitの基礎知識
さっそくやってみよう
Herokuログイン

#	 Herokuはコマンド経由で操作することが多い
$	 heroku	 login
Enter	 your	 Heroku	 credentials.
Email:	 hoge@hoge.com
Password	 (typing	 will	 be	 hidden):	 
Authentication	 successful.
ssh公開 の登録

#	 ssh公開鍵が普通の場所にあれば、このコマンド
で勝手に送ってくれる

$	 heroku	 keys:add

Found	 existing	 public	 key:	 /Users/hoge/.ssh/
id_rsa.pub

Uploading	 SSH	 public	 key	 /Users/hoge/.ssh/
id_rsa.pub
さぁ Hello World だ
web.js

var	 express	 =	 require('express');
var	 app	 =	 express.createServer(express.logger());

app.get('/',	 function(request,	 response)	 {
	 	 response.send('Hello	 World!');
});

var	 port	 =	 process.env.PORT	 ||	 3000;
app.listen(port,	 function()	 {
	 	 console.log("Listening	 on	 "	 +	 port);
});
package.json

//	 依存関係の定義

{
	 	 "name":	 "hnatest",
	 	 "version":	 "0.0.1",
	 	 "dependencies":	 {
	 	 	 	 "express":	 ""	 	 	 	 	 	 //	 バージョン番号
	 	 }
}
依存関係のインストール
$	 npm	 install
npm	 http	 GET	 https://registry.npmjs.org/express
npm	 http	 200	 https://registry.npmjs.org/express
npm	 http	 GET	 https://registry.npmjs.org/express/-/express-2.5.9.tgz

・・・
express@2.5.9	 ./node_modules/express
├──	 qs@0.4.2
├──	 mime@1.2.4
├──	 mkdirp@0.3.0
└──	 connect@1.8.7	 (formidable@1.0.9)
Herokuへのアップロー
ドはGitを使います
.gitignore

$	 echo	 node_modules	 >>	 .gitignore
$	 ls	 -la
total	 24
drwxr-xr-x	 	 	 6	 hoge	 	 staff	 	 204	 	 5	 20	 10:42	 .
drwxr-xr-x	 	 11	 hoge	 	 staff	 	 374	 	 5	 20	 10:16	 ..
-rw-r--r--	 	 	 1	 hoge	 	 staff	 	 	 24	 	 5	 20	 10:42	 .gitignore
drwxr-xr-x	 	 	 4	 hoge	 	 staff	 	 136	 	 5	 20	 10:36	 node_modules
-rw-r--r--	 	 	 1	 hoge	 	 staff	 	 	 90	 	 5	 20	 10:36	 package.json
-rw-r--r--	 	 	 1	 hoge	 	 staff	 	 276	 	 5	 20	 10:18	 web.js
Procfile



web:	 node	 web.js
動かしてみよう!
foreman start



$	 foreman	 start
11:06:56	 web.1	 	 	 	 	 |	 started	 with	 pid	 6037
11:06:56	 web.1	 	 	 	 	 |	 Listening	 on	 5000
Node予備校 vol.1 名古屋
gitリポジトリ作成


$	 git	 init
$	 git	 add	 .
$	 git	 commit	 -m	 "init"
Herokuアプリ作成



heroku	 create	 --stack	 cedar
Herokuへpush



git	 push	 heroku	 master
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
簡単でしょ?
Facebookアプリも楽
ここまでの話は…



https://devcenter.heroku.com/articles/nodejs
あとスライドは…



http://www.slideshare.net/MoriShingo/node-vol1
せっかくMacに

Node.js入ったし…
Node.js on local


                   @sngmr
まずはコマンドで



$	 node
>
ローカルでよく使うモノ
コマンドライン引数

$	 node	 arg.js	 hoge	 fuga
[	 'node',
	 	 '/Users/shingo/Projects/Node/local_base/arg.js',
	 	 'hoge',
	 	 'fuga'	 ]



----	 arg.js	 ----
console.log(process.argv);
ファイルインプット ver.1

$	 cat	 /etc/hosts	 |	 node	 pipe1.js

----	 pipe1.js	 ----
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data',	 function(data)	 {
	  process.stdout.write(data);
});
##
#	 Host	 Database
#
#	 localhost	 is	 used	 to	 configure	 the	 loopback	 interface
#	 when	 the	 system	 is	 booting.	 	 Do	 not	 change	 this	 entry.
##
127.0.0.1	 localhost
255.255.255.255	  broadcasthost
::1	 	 	 	 	 	 	 	 	 	 	 	 	 localhost	 
fe80::1%lo0	  localhost
・・・
ファイルアウトプット ver.1

$	 cat	 /etc/hosts	 |	 node	 pipe1.js	 >	 hosts.copy

----	 pipe1.js	 ----
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data',	 function(data)	 {
	  process.stdout.write(data);
});
インプットアウトプット
$	 node	 readwrite.js

----	 reaswrite.js	 ----
var	 fs	 =	 require('fs');
var	 r	 =	 fs.createReadStream('/etc/hosts');
var	 w	 =	 fs.createWriteStream('hosts2.copy');

r.on('data',	 function(data)	 {
	  w.write(data.toString().toUpperCase());
});
どうゆう場面で使うの?
データ編集とか楽

‣例:

 ‣CSVからJSONファイルを起こしたい

 ‣正規表現だけだと苦しいデータとか



‣特に   Titanium とは相性いいよ!
インプットアウトプット
var	 fs	 =	 require('fs');

function	 readLines(input,	 func)	 {
	  var	 remaining	 =	 '';
	 
	  input.on('data',	 function(data)	 {
	  	  remaining	 +=	 data;
	  	  var	 index	 =	 remaining.indexOf('n');
	  	  while	 (index	 >	 -1)	 {
	  	  	  var	 line	 =	 remaining.substring(0,	 index);
	  	  	  remaining	 =	 remaining.substring(index	 +	 1);
	  	  	  func(line);
	  	  	  index	 =	 remaining.indexOf('n');
	  	  }
	  });
	  input.on('end',	 function()	 {
	  	  if	 (remaining.length	 >	 0)	 {
	  	  	  func(remaining);
	  	  }
	  });
}
インプットアウトプット

var	 input	 =	 fs.createReadStream('sample1.csv');
var	 data	 =	 [];
readLines(input,	 
	  function(line)	 {
	  	  var	 buf	 =	 line.split("t");
	  	  data.push(buf);
	  },
	  function()	 {
	  	  console.log(data);
	  }
);

More Related Content

PPTX
serverspecを使用したサーバ設定テストの実例
PDF
Sohu邮箱的python经验
PDF
Neo4jでつなぐ知見のネットワーク [Pycon2016 LT]
PDF
Docker+CoreOS+GCEで自動スケール分散レイトレ
PDF
WSL2+docker+JupyterとVS Codeリモート環境の構築
PPTX
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
PPTX
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
PDF
Openresty
serverspecを使用したサーバ設定テストの実例
Sohu邮箱的python经验
Neo4jでつなぐ知見のネットワーク [Pycon2016 LT]
Docker+CoreOS+GCEで自動スケール分散レイトレ
WSL2+docker+JupyterとVS Codeリモート環境の構築
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
Openresty

What's hot (20)

PDF
ヤギにサーバーを管理してもらう話
PDF
静的サイトどこにする?
PDF
Puppet on AWS
PDF
Fluentdへようこそ
PPTX
Redisいれてみた
PPTX
ラズパイ2で動く Docker PaaSを作ってみたよ
PDF
社内勉強会資料(Varnish Module)
PDF
第1回 一撃サーバー構築シェルスクリプト勉強会
PDF
Nuxt.js + microCMS + netlify
PDF
Fabric
PDF
Ingress on GKE/GCE
PDF
PaaSの作り方 Sqaleの場合
PDF
Hadoop on LXC
PPTX
Fluentdの使い方
PDF
Yesod on Heroku
PDF
Dive into dockerネットワーク
PDF
Elixir Meetup #1 Loggerの構造と拡張
PDF
2日間Fabricを触った俺が
 色々解説してみる
PDF
VarnishではじめるESI
KEY
Fabricでサーバー管理をDRYにしよう
ヤギにサーバーを管理してもらう話
静的サイトどこにする?
Puppet on AWS
Fluentdへようこそ
Redisいれてみた
ラズパイ2で動く Docker PaaSを作ってみたよ
社内勉強会資料(Varnish Module)
第1回 一撃サーバー構築シェルスクリプト勉強会
Nuxt.js + microCMS + netlify
Fabric
Ingress on GKE/GCE
PaaSの作り方 Sqaleの場合
Hadoop on LXC
Fluentdの使い方
Yesod on Heroku
Dive into dockerネットワーク
Elixir Meetup #1 Loggerの構造と拡張
2日間Fabricを触った俺が
 色々解説してみる
VarnishではじめるESI
Fabricでサーバー管理をDRYにしよう
Ad

Viewers also liked (9)

PPT
#VRT10 - Bring the World in: Blogging with Your Students
PPT
Swimming
PPT
#VRT10 - Bring the World in: Blogging with Your Students
PPT
10 roses just_for_u
PPT
On blogging
PPTX
PDF
Random 101224181202-phpapp01
PPT
valn ビジネスコンテスト発表
PPSX
Carrefour planet
#VRT10 - Bring the World in: Blogging with Your Students
Swimming
#VRT10 - Bring the World in: Blogging with Your Students
10 roses just_for_u
On blogging
Random 101224181202-phpapp01
valn ビジネスコンテスト発表
Carrefour planet
Ad

Similar to Node予備校 vol.1 名古屋 (20)

PDF
Node.jsでブラウザメッセンジャー
PDF
成長を加速する minne の技術基盤戦略
PDF
ホームディレクトリに埋もれた便利なコードをさがせ!
PDF
Hive undocumented feature
PDF
Play framework 2.0のおすすめと1.2からのアップグレード
PDF
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
PDF
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PDF
React Native GUIDE
PDF
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
PDF
node+socket.io+enchant.jsでチャットゲーを作る
PPTX
Wasm blazor and wasi 2
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
PPTX
WebRTC meetup Tokyo 1
PDF
tcpdump & xtrabackup @ MySQL Casual Talks #1
PDF
FM音源をいじれるWebサービスを作った
PDF
Xbyakの紹介とその周辺
PDF
Djangoとweb2pyをapacheに組込む
PDF
Tottoruby 20110903
PDF
Dockerイメージ構築 実践テクニック
PDF
マイクロサービス時代の生存戦略 with HashiCorp
Node.jsでブラウザメッセンジャー
成長を加速する minne の技術基盤戦略
ホームディレクトリに埋もれた便利なコードをさがせ!
Hive undocumented feature
Play framework 2.0のおすすめと1.2からのアップグレード
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
React Native GUIDE
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
node+socket.io+enchant.jsでチャットゲーを作る
Wasm blazor and wasi 2
はてなにおける継続的デプロイメントの現状と Docker の導入
WebRTC meetup Tokyo 1
tcpdump & xtrabackup @ MySQL Casual Talks #1
FM音源をいじれるWebサービスを作った
Xbyakの紹介とその周辺
Djangoとweb2pyをapacheに組込む
Tottoruby 20110903
Dockerイメージ構築 実践テクニック
マイクロサービス時代の生存戦略 with HashiCorp

More from Mori Shingo (15)

PDF
WCAN Autumn 2013 Titaniumのおはなし
PDF
大なごやJS vol.6 Titanium Mobile と Alloy の解説をするよ!
PDF
Tiなごや vol.3 Alloyやろまい
PDF
Tiなごや vol.3 Titaniumのキホン
PDF
Python東海GAEやってみた
PDF
福井スマートフォンハッカソン Titanium Mobileの紹介
PDF
Titanium Nagoya Chatroom vol.2 はじめの一歩
KEY
2012年1月30日 現代戦闘機入門 at GeekBar
KEY
2011年12月10日 Ti.Developers.Meeting大阪 LT資料
PPTX
2011年10月27日 Titanium meetup Tokyo #14 LT資料
PPTX
2011年10月22日 iPhoneDeveloper勉強会 名古屋 #2 LT資料
PDF
Ti勉強会名古屋 配布用
KEY
2011 12-10 Titanium Developer Meeting 大阪 LT
PDF
Html5とう勉強会lt アニメーション無し.pptx
PPT
2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみよう
WCAN Autumn 2013 Titaniumのおはなし
大なごやJS vol.6 Titanium Mobile と Alloy の解説をするよ!
Tiなごや vol.3 Alloyやろまい
Tiなごや vol.3 Titaniumのキホン
Python東海GAEやってみた
福井スマートフォンハッカソン Titanium Mobileの紹介
Titanium Nagoya Chatroom vol.2 はじめの一歩
2012年1月30日 現代戦闘機入門 at GeekBar
2011年12月10日 Ti.Developers.Meeting大阪 LT資料
2011年10月27日 Titanium meetup Tokyo #14 LT資料
2011年10月22日 iPhoneDeveloper勉強会 名古屋 #2 LT資料
Ti勉強会名古屋 配布用
2011 12-10 Titanium Developer Meeting 大阪 LT
Html5とう勉強会lt アニメーション無し.pptx
2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみよう

Recently uploaded (7)

PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PDF
Working as an OSS Developer at Ruby Association Activity Report 2025
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
Working as an OSS Developer at Ruby Association Activity Report 2025
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ

Node予備校 vol.1 名古屋