Java8 を触ってみる
Java8 が正式リリースされたので、新機能がどんなものか触ってみた。
続きを読むEclipse 開発環境構築手順メモ (Mac OS X)
Eclipse をダウンロード
http://www.eclipse.org/downloads/
執筆時点では Kepler SR2 が最新でした。
eclipse-xxx.tar.gz を解凍し、好きな場所に配置
個人的には ~/dev/eclipse/kepler とかディレクトリ切ってます。
Eclipse を起動して各種設定を行う
- 行番号を表示する
- 文字コードの設定を UTF-8 にする
- Code Assist のショートカットキーを Command + Space に変更する
- Project Explorer ではなく Package Explorer を使う
- Package Presentation を Hierarchical に変更する
必要に応じてプラグインをインストール
- FindBugs
- Checkstyle
- Subversive
- EGit
とか。
はじめての Node.js (3)
今回は MySQL との接続周りを確認。 詳細は https://github.com/felixge/node-mysql の README 見たほうが早い。 MongoDB は今回は割愛。
Node.js からデータベースにアクセスする
- 利用したい DB に対応するモジュールを使う
<サンプルソース>
#!js
// create connection.
var conn = mysql.createConnection({
user: 'nodejs_study',
password: 'nodejs_study',
database: 'nodejs_study'
});
// connect
conn.connect();
// create table.
conn.query('CREATE TABLE IF NOT EXISTS users (' +
'id INT(11) NOT NULL AUTO_INCREMENT,' +
'name VARCHAR(255),' +
'PRIMARY KEY (id)' +
')');
// execute query.
conn.query('INSERT INTO users(name) VALUES(?)', ['foo'], function(err, result) {
console.log(result.insertId);
});
// streaming query rows.
var query = conn.query('SELECT * FROM users;');
query.on('result', function(row) {
console.log(row);
});
// end
conn.end();
はじめての Node.js (2)
続き。今回はデバッグまで。
シンプルなWebアプリケーションを作る
- http モジュールを利用してWebアプリケーションを書いてみる
- url モジュールで URL の解析が可能
- querystring でクエリ文字列の解析が可能
- multipart については標準モジュールが無いらしい
<サンプルソース>
#!js
var http = require('http'),
url = require('url'),
querystring = require('querystring');
var server = http.createServer();
server.on('request', function(request, response) {
response.setHeader('Content-Type', 'text/html');
response.writeHead(200);
response.write('<form method="post" action="/"><input type="text" name="value"/><input type="submit"/></form>');
if (request.method === 'POST') {
var data = '';
request.on('data', function(chunk) {
data += chunk;
});
request.on('end', function() {
console.log(querystring.parse(data));
});
}
response.end();
});
server.listen(8080, '127.0.0.1');
バイナリデータの操作とファイルの入出力
個人的にこの辺りは散々使っているので割愛。
Node.js アプリケーションのデバッグ方法
はじめての Node.js (1)
今年は Node.js を勉強しようと思い書籍を探してみたところ、「はじめてのNode.js サーバーサイドJavaScriptでWebアプリを開発する-」という書籍が評判よさ気だったので購入。今週から読み始めてみる。
Node.js の特徴を理解する
- シングルスレッドで全てのリクエストを処理していく
- スレッド数増大の問題は無い
- マルチスレッドプログラミングの問題を考慮しなくて良いのでシンプルなソースが書ける
- 課題もある
- CPUリソースを多く消費するような処理があると全体に影響する
- コールバックを多用するのでソースの可読性が落ちる
Node.js の環境を構築する
インストールするだけなので割愛。
node コマンドと Node.js のイベントシステム
npm でモジュールを管理する
- require 関数で呼び出されたモジュールは exports オブジェクトを持ち、require の戻り値して返される
- exports オブジェクトを通してモジュール外から利用可能な関数等を定義することができる
[javascript] var hello = require('./hello'); hello.greeting(); [/javascript]
[javascript] exports.greeting = function() { console.log('hello!'); }; [/javascript]
- 関数自体を返却したい場合は、module.exports を上書きする
[javascript] var hello = require('./hello'); hello(); [/javascript]
[javascript] module.exports = function() { console.log('hello!'); }; [/javascript]
- require 関数で JSON ファイルを読み込む事もできる
- require 関数にディレクトリパスを渡した場合、指定ディレクトリ配下の package.json を読み、main に指定されている JS ファイルを読み込む
- モジュールの情報、依存関係等を package.json というファイルに記述し、モジュールリポジトリの直下に配置する
[javascript] { "name": "sample", "description": "sample", "author": { "name": "your name" }, "version": "0.0.1", "keywords": ["foo", "bar"], "homepage": "http://xxx", "main": "main.js", "engines": { "node": ">= 0.8.0" }, "repository": { "type": "git" "url": "http://github.com/xxx/xxx.git" }, "bugs": { "url": "http://github.com/xxx/issues" }, "licenses": [ { "type": "MIT", "url": "" } ], "scripts": { "test": "nodeunit xxx.js" }, "dependencies": [ "xxx": "0.0.1" ], "devDependencies": [ "xxx": "0.0.1" ] } [/javascript]