Nodeクックブック
- David Mark Clements 著、和田 祐一郎 訳
- 2013年02月 発行
- 380ページ
- ISBN978-4-87311-606-8
- フォーマット Print PDF
- 原書: Node Cookbook
3,740円
書籍のご注文はオーム社サイトへ
内容
本書は、Node.jsを使っての簡単なWebサーバの構築にはじまり、Webアプリケーションやコマンドラインアプリケーションの構築、そして自作Nodeモジュールの開発までをスムーズに学習できるように構成しています。MySQLやMongoDB、CouchDB、Redisといった各種データベースとのインタフェイスや、WebSocketの組み込み方、SMTPなどのプロトコルとのインタフェイスといった基本的な事項を学びます。さらにデータストリームの処理方法やセキュリティを考慮した実装、そして開発したアプリケーションを本番環境で動作させるまでのさまざまなレシピを掲載しています。
Nodeの主要なコアモジュールはもちろん、さまざまなシーンで利用するサードパーティモジュールを広く紹介しており、Express 3に対応した本書は、Nodeを深く知りたいエンジニア必携の一冊です。
翻訳者によるサポートページ
関連書籍
目次
目次
訳者まえがき
はじめに
1章 Webサーバを立てる
レシピ1.1 URLルーティングを設定する
ミニレシピ1.1.1 複数階層コンテンツのルーティング
ミニレシピ1.1.2 クエリストリングを解析する
レシピ1.2 スタティックファイルを配信する
ミニレシピ1.2.1 予期しないFaviconリクエストに対応する
レシピ1.3 コンテンツキャッシュによる高速配信
ミニレシピ1.3.1 コンテンツの変更を反映する
レシピ1.4 ストリーミングによりパフォーマンスを最適化する
ミニレシピ1.4.1 システムをバッファオーバーフローから守る
レシピ1.5 ファイルシステムをハッキングから守る
ミニレシピ1.5.1 ホワイトリスト
ミニレシピ1.5.2 node-static
2章 HTTPオブジェクトをより深く
レシピ2.1 POSTデータを処理する
ミニレシピ2.1.1 connect.bodyParserを使ってPOSTデータを扱う
レシピ2.2 アップロードファイルを受信する
ミニレシピ2.2.1 formidableを使ってPOSTデータの内容をすべて受信する
ミニレシピ2.2.2 formidableでファイル名を保存する
ミニレシピ2.2.3 PUTでアップロードする
レシピ2.3 NodeをHTTPクライアントとして使用する
ミニレシピ2.3.1 POSTリクエストを送る
ミニレシピ2.3.2 multipartファイルアップロードを行う
レシピ2.4 帯域制限を実装する
ミニレシピ2.4.1 中断されたダウンロードを再開する
3章 データのシリアル化
レシピ3.1 オブジェクトをJSONに変換する
ミニレシピ3.1.1 JSONPレスポンスを返す
レシピ3.2 オブジェクトをXMLに変換する
ミニレシピ3.2.1 配列や関数を含んだオブジェクトをXMLに変換する
ミニレシピ3.2.2 XMLの属性値を生成する
ミニレシピ3.2.3 属性値宣言とテキスト
レシピ3.3 Ajaxによるブラウザ・サーバ間のデータ転送
ミニレシピ3.3.1 シリアル化したデータをクライアントからサーバに送信する
レシピ3.4 リアルデータの処理:トレンドツイートを取得する
ミニレシピ3.4.1 Google Hot TrendsとTwitterを組み合わせる
4章 データベース接続
レシピ4.1 CSVファイルを出力する
ミニレシピ4.1.1 CSV要素をカスタマイズする
ミニレシピ4.1.2 CSVファイルを読み込む
ミニレシピ4.1.3 CSVをストリームとして処理する
レシピ4.2 MySQLサーバと接続し、SQL文を実行する
ミニレシピ4.2.1 ユーザ入力をクリーニングしてSQLインジェクション攻撃を防ぐ
ミニレシピ4.2.2 MySQLサーバからSQL文の実行結果を受け取る
レシピ4.3 MongoDBとデータをやりとりする
ミニレシピ4.3.1 インデックスとアグリゲーション
ミニレシピ4.3.2 ソートとリミット、モディファイアでアップデート
レシピ4.4 Mongoskinを使ってMongoDBに接続する
ミニレシピ4.4.1 コレクションバインディング
レシピ4.5 Cradleを使ってCouchDBにデータを格納する
レシピ4.6 Cradleを使ってCouchDBからデータを取得する
ミニレシピ4.6.1 CouchDBの管理者ユーザを作成する
ミニレシピ4.6.2 CouchDBの管理者ユーザのみがデータ変更を行う
レシピ4.7 CouchDB Changes StreamにCradleで接続する
レシピ4.8 Redisとデータをやりとりする
ミニレシピ4.8.1 hiredisでredisモジュールをスピードアップする
ミニレシピ4.8.2 パイプラインコマンドでネットワークレイテンシを克服する
レシピ4.9 RedisでPubSubを実装する
ミニレシピ4.9.1 Redisへのアクセス認証
ミニレシピ4.9.2 外部からの不正な接続からRedisを守る
5章 Websocketを使ってAjaxを超える
レシピ5.1 WebSocketサーバを生成する
ミニレシピ5.1.1 WebSocketクライアントを生成する
レシピ5.2 socket.ioを使ったシームレスなフォールバック
ミニレシピ5.2.1 カスタムイベント
ミニレシピ5.2.2 ネームスペース
レシピ5.3 socket.io越しにコールバック関数を実行する
ミニレシピ5.3.1 nowjsを使ってクライアントとサーバで関数をシェアする
レシピ5.4 socket.ioでリアルタイムウィジェットを作成する
ミニレシピ5.4.1 Redisと組み合わせてスケールアウトに備える
ミニレシピ5.4.2 開発ツールとしてのWebSocket
6章 Expressで開発をスピードアップ
レシピ6.1 Expressプロジェクトを作成する
ミニレシピ6.1.1 app.jsの内容を読む
ミニレシピ6.1.2 routes/index.jsの内容を読む
レシピ6.2 環境の定義と設定
ミニレシピ6.2.1 新たな環境を設定する
ミニレシピ6.2.2 NODE_ENVを永続的に変更する
レシピ6.3 ダイナミックURLルーティング
ミニレシピ6.3.1 ルートのバリデーション
ミニレシピ6.3.2 オプションルート
ミニレシピ6.3.3 ワイルドカード
レシピ6.4 テンプレート(Jade)
ミニレシピ6.4.1 他のテンプレートエンジンを使用する
ミニレシピ6.4.2 EJSテンプレートエンジン
ミニレシピ6.4.3 JadeにJavaScriptを挿入する
レシピ6.5 CSSプリプロセッサを使う(Stylus)
ミニレシピ6.5.1 Stylus:mixinのネストとrestパラメータ
ミニレシピ6.5.2 Stylus:色を操作する
ミニレシピ6.5.3 LESSを使う
レシピ6.6 Expressによるセッション管理[応用]
ミニレシピ6.6.1 サイト全体のセッション管理を行うミドルウェアを作成する
ミニレシピ6.6.2 フラッシュメッセージ
レシピ6.7 ExpressでWebアプリケーションを構築する[応用]
ミニレシピ6.7.1 abを使ってベンチマークをとる
ミニレシピ6.7.2 loggerをカスタマイズする
7章 セキュリティ、暗号化、認証
レシピ7.1 ベーシック認証を実装する
ミニレシピ7.1.1 Express/Connectでベーシック認証を実装する
レシピ7.2 cryptoモジュールでパスワードをハッシュ化する
ミニレシピ7.2.1 HMACでユニークなハッシュ値を生成する
ミニレシピ7.2.2 PBKDF2で強固なハッシュ値を生成する
レシピ7.3 ダイジェスト認証を実装する
ミニレシピ7.3.1 認証領域からのログアウト
レシピ7.4 HTTPSサーバを立てる
ミニレシピ7.4.1 ExpressでHTTPSを使う
ミニレシピ7.4.2 SSL/TLSでベーシック認証を安全に運用する
レシピ7.5 クロスサイトリクエストフォージェリを予防する
ミニレシピ7.5.1 Jadeカスタムコンパイラでフォームを自動的に保護する
ミニレシピ7.5.2 クロスサイトスクリプティング(XSS)脆弱性を取り除く
8章 ネットワークサービスの実装
レシピ8.1 メールを送信する
ミニレシピ8.1.1 HTMLメールを送信する
ミニレシピ8.1.2 添付ファイルを送る
レシピ8.2 SMSを送信する
ミニレシピ8.2.1 processedイベントリスナを利用する
ミニレシピ8.2.2 自動で電話をかける
レシピ8.3 TCP通信を行う
ミニレシピ8.3.1 ポートフォワーディング
ミニレシピ8.3.2 pcapを使いTCPトラフィックを監視する
レシピ8.4 SMTPサーバを立てる
ミニレシピ8.4.1 外部のSMTPサーバからメールを受信する
レシピ8.5 名前ベースバーチャルホストを実装する
ミニレシピ8.5.1 Expressでバーチャルホスティング
ミニレシピ8.5.2 Server Name Indication(SNI)
9章 自分のNodeモジュールを作成する
レシピ9.1 モジュールAPIを決定し、テストスクリプトを作成する
ミニレシピ9.1.1 should.jsでユニットテストを行う
レシピ9.2 モジュールのモックアップを作成する
ミニレシピ9.2.1 モジュールのサンプルコードを記述する
レシピ9.3 モジュールをリファクタリングする
ミニレシピ9.3.1 stat関数をmp3datオブジェクトに追加する
ミニレシピ9.3.2 複数のモジュールインスタンスの生成を許可する
レシピ9.4 モジュールAPIを拡張する
ミニレシピ9.4.1 サンプルコード:STDINストリーム
ミニレシピ9.4.2 サンプルコード:PUTアップロードストリーム
ミニレシピ9.4.3 statメソッドとstatStreamメソッドを統合する
ミニレシピ9.4.4 EventEmitterを統合する
レシピ9.5 モジュールをnpmレジストリにアップロードする
ミニレシピ9.5.1 npm linkを使ってレジストリに登録せずにモジュールを使用する
ミニレシピ9.5.2 .npmignore、モジュールのバージョン変更
10章 本番環境に展開するために
レシピ10.1 アプリケーションを80番ポートで待機させる
ミニレシピ10.1.1 nohupの代わりにscreenで起動する
ミニレシピ10.1.2 authbindを使って80番ポートにバインドする
ミニレシピ10.1.3 http-proxyを使って80番ポートで複数のプロセスをホストする
レシピ10.2 Upstartで自動的に再起動する
ミニレシピ10.2.1 Upstartのrespawn制限違反を検出する
ミニレシピ10.2.2 foreverモジュールで自動的に再起動する
レシピ10.3 Gitを使った継続的デプロイ
ミニレシピ10.3.1 アップデート時に依存モジュールをサーバ側で構築する
ミニレシピ10.3.2 GitフックスクリプトをNodeで記述する
レシピ10.4 PaaSプロバイダでホスティングする
ミニレシピ10.4.1 自分のドメイン名でアプリケーションにアクセスする
ミニレシピ10.4.2 データベースを準備する
索引