mof-brown

ずっとモフモフしてたい

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 に変更する

必要に応じてプラグインをインストール

とか。

Mac の Evernote を完全アンインストールする手順

久しぶりに Evernote の断捨離をしてみたところ、1台の Mac だけうまく同期がされない現象が発生。Evernote を再インストールしてみるも以前の同期データを保持しているようでうまく行かず。

色々調べてみたところ、AppCleaner を使ってアンインストールしてみたところ、Evernote が完全にアンインストールされ、再度一から同期することが出来ました。

AppCleaner

  1. AppCleaner をインストール
  2. AppCleaner を起動して Evernote を検索
  3. Evernote を削除
  4. ゴミ箱を空にする (これをしないと完全アンインストールされなかった...)

はじめての Node.js (3)

今回は MySQL との接続周りを確認。 詳細は https://github.com/felixge/node-mysql の README 見たほうが早い。 MongoDB は今回は割愛。

 

Node.js からデータベースにアクセスする

 

 

 

  • 利用したい DB に対応するモジュールを使う

 

 

 

 

 

サンプルソース

 

#!js

var mysql = require('mysql');

 

// 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 アプリケーションのデバッグ方法

  • console.log, error, trace で出力する

    • printf みたいな指定も可能
  • パフォーマンス計測には console.time, timeEnd が便利
  • Node.js 組み込みデバッガを利用する

  • node-inspector というデバッガツールがある

    • npm install -g node-inspector

はじめての Node.js (1)

今年は Node.js を勉強しようと思い書籍を探してみたところ、「はじめてのNode.js サーバーサイドJavaScriptでWebアプリを開発する-」という書籍が評判よさ気だったので購入。今週から読み始めてみる。

Node.js の特徴を理解する

  • シングルスレッドで全てのリクエストを処理していく

    • スレッド数増大の問題は無い
    • マルチスレッドプログラミングの問題を考慮しなくて良いのでシンプルなソースが書ける
  • 課題もある

    • CPUリソースを多く消費するような処理があると全体に影響する
    • コールバックを多用するのでソースの可読性が落ちる

Node.js の環境を構築する

インストールするだけなので割愛。

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]

HTML5タグを改めて見なおしてみる

HTML5が注目されて久しいですが、自分自身はというと余り使いこなせていません。

 

HTML5には audio のような新機能としてのタグと、セマンティック・ウェブのためのタグがありますが、前者は使いシーンがあれど後者はクローズドなWebサービスだとあまり必要性が無く、つい div タグを乱用してしまっています。

 

これはマズイなと思い、HTML5にどんなタグがあるのか改めて見なおしてみました。

 

続きを読む