2014年7月12日土曜日

Twitter APIを使用するための各種キーの取得

Twitter APIを使用するためには、下記のキーを取得する必要がある。

  • Consumer key
  • Consumer secret
  • Access token
  • Access token secret

 

これらのキーを取得する手順について記載する。

なお、この手順は記事を執筆した2014年7月13日現在のもの。

 

2014年5月24日土曜日

Sails.jsでコントローラを作成する

Sails.jsでコントローラを作成する。

動作環境
・Windows7 Ultimate Service Pack 1
・Node.js 0.10.28
・Sail.js 0.9.16

参考にしたのはこのサイト。

Sails.js | Realtime MVC Framework for Node.js

2014年5月21日水曜日

Sails.jsでのログ出力

Sails.jsでログをファイルに出力する方法を記載する。
Sails.jsのログでは、ログはコンソールに出力するだけで、ファイルには出力されない。
ファイルに出力するために、ここではlog4jsを使用する。

動作環境
・Windows7 Ultimate Service Pack 1
・Node.js 0.10.28
・Sail.js 0.9.16
・log4js 0.6.14

2014年5月14日水曜日

Node.jsのフレームワークSails.jsをEclipseで実行する

Node.jsのフレームワークSails.jsを、Eclipseで実行する方法を記載する。

動作環境
・Windows7 Ultimate Service Pack 1
・Eclipse 4.3 Kepler Pleiades All in One

 

2014年5月11日日曜日

Node.jsのフレームワークExpressをEclipseで実行する

Node.jsのフレームワークExpressを、Eclipseで実行する方法を記載する。

動作環境
・Windows7 Ultimate Service Pack 1
・Eclipse 4.3 Kepler Pleiades All in One

 

2014年5月10日土曜日

Node.jsをWindowsにインストールし、Eclipseで実行する

WindowsにNode.jsをインストールし、Eclipseで実行する方法を記載する。

動作環境
・Windows7 Ultimate Service Pack 1
・Eclipse 4.3 Kepler Pleiades All in One

 

インストールするもの

インストールするものは以下。

  • Node.js
  • Eclipse
    Nodeclipseプラグイン

 

Node.jsのインストール

Node.jsを公式サイトからダウンロードする。

node.js

20140510144810

サイト中央の「INSTALL」から自環境に適したインストーラをダウンロードする。本稿執筆時、Node.jpの最新バージョンは「0.10.28」であった。

ダウンロードしたインストーラを起動し、インストールを実施する。ソフトウェアの使用許諾契約やインストール先選択の画面が表示されるが、画面の指示に従って先へ進んでいく。

「Completed the Node.js Setup Wizard」と記載された画面が表示されれば、インストールは完了。

 

Eclipseのインストール

Eclipseは公式サイトからダウンロードすると言語が英語なので、日本語化されたPleiadesからダウンロードする。 

Eclipse 日本語化 | MergeDoc Project

 

20140511122458

ここでは、Eclipse 4.3 Kepler Pleiades All in Oneをダウンロードした。

ダウンロードしたファイルは圧縮ファイルなので解凍する。解凍後のフォルダを格納する場所はどこでもよい。解凍後、「pleiades\eclipse\eclipse.exe」を実行すると、Eclipseが起動する。

 

Nodeclipseのインストール

EclipseでNode.jsを動作させるために、Nodeclipseプラグインをインストールする。

Eclipseのメニュー「ヘルプ」→「新規ソフトウェアのインストール」からソフトウェアのインストール画面を開く。

作業対象の欄に下記のURLを入力する。

 http://dl.bintray.com/nodeclipse/nodeclipse/

img0001

表示された項目全てをチェックし、「次へ」ボタンを押して進む。
インストール詳細、ライセンスのレビュー画面が表示されるので、指示に従ってインストールを実施する。
セキュリティ警告の画面では「OK」を押す。
インストール完了後、Eclipseを再起動すると、Nodeclipseを使用できる状態となる。

 

Node.jsを実行

インストールが完了すると、Node.js用のプロジェクトを作成できるようになる。
Eclipseのメニュー「ファイル」→「新規」→「プロジェクト」から新規プロジェクト画面を開く。

img0002

「Nodeclipse」の項目の中の「Node.js Project」を選択し、「次へ」ボタンを押して進む。

「New Node.js Project」画面では、プロジェクト名を入力する。

img0003

ここでは、「SampleNodeJS」とした。
「Template to use」の項目では、「Hello World」を選択する。
「完了」ボタンを押すと、プロジェクトの作成が完了する。

自動生成されたファイルのうち、「hello-world.js」にWebサーバを起動するコードが書かれている。
localhostの1337ポートでサーバを起動し、「Hello World」と表示するようになっている。

var http = require('http');
http.createServer(function handler(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');


実際に実行してみる。
メニュー「実行」→「実行」→「Node Application」を実行すると、コンソールに「Server running at http://127.0.0.1:1337/」と表示される。
これで、サーバが起動した。



ブラウザを開き、サーバにアクセスする。ソースコード通りだと、



 http://127.0.0.1:1337/



にアクセスすればよいが、

 http://localhost:1337/

でも同じ。



20140511152622



ブラウザ上には、「Hello World」とだけ表示される。
Node.jsの実行に成功。


2014年2月9日日曜日

CakePHPでマルチパートでないPost通信を受信する

CakePHPでマルチパートでないHTTP-Postリクエストを受信する方法を記載する。

動作環境
・Ubuntu 12.04.3 LTS
・CakePHP 2.4.4
・Apache 2.2.22

Webで実装方法を検索してみたところ、ピュアPHPではすぐに見つかったのだが、CakePHPではなかなか見つけることができなかった。
Webで検索するキーワードが悪かったのかもしれない。

HTTPクライアントはAndroidでHttpURLConnectionを使用した。
サンプルコードはこちら。
androidからAsyncTaskLoaderでHTTP-Post通信をする

 

ピュアPHPの場合

ピュアPHPでPostリクエストのデータを取得する場合は、file_get_contentsメソッドを使用する。

引数に「php://input」を指定する。

リクエストデータは戻り値で取得できる。

<?php
// 受信データ格納
$data = file_get_contents("php://input");

// レスポンス
echo "POST DATA RECEIVED. data[".$data."]"
?>

 


CakePHPの場合


CakePHPでPOSTデータを取得する場合、


 CakeRequest::data[‘key’]


などでデータを取得するが、マルチパートでないPOSTデータの場合、取得できない。
上記の「key」を「php://input」としても取得できない。


といっても、CakePHPのどこかで「php://input」からPOSTデータを取得している箇所があるはずなので、CakePHPのコードを「php://input」で検索してみる。


すると、CakeRequest::_readInputメソッドで「php://input」を使用していた。
_readInputメソッドはprotectedなので、さらに_readInputメソッドを使用している箇所を検索してみる。


_readInputメソッドを使用している箇所は2カ所あったが、CakeRequest::inputメソッドがpublicだったので、ここからPOSTデータを取得できそう。


というわけで、CakeRequest::inputメソッドを使用する。


inputメソッドは引数にデコード用コールバックを指定できるが、省略可能引数となっているため、今回は省略する。


リクエストデータは戻り値で取得できる。


下記のサンプルでは、取得したリクエストデータを、そのままレスポンスデータとして送信している。

<?php
class PostSamplesController extends AppController {
public function index() {
if($this->request->is('post')) { // Post通信
// 受信データ格納
$input_data = $this->request->input();

// レスポンス
$this->response->body($input_data);
return $this->response;
}
}
}
?>