ページ

2011年11月26日土曜日

Macで Node.js+MongoDB+Cloud9IDE の開発環境構築メモ

yosuke-furukawa さんのnodeslide がいい感じなので、
試しに環境構築してみた。

これ↓
http://yosuketest.node-ninja.com/#slide1


ローカルで動くようにしてみる。

・Node.jsをインストールする。
brew install node.js

Node.js用のパッケージ管理であるnpmをインストール
curl http://npmjs.org/install.sh | sh


・MongoDBをインストールする。
brew install mongodb

MondoDBを自動起動に設定して起動する
cp /usr/local/Cellar/mongodb/2.0.1-x86_64/org.mongodb.mongod.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist


・Cloud9 IDEをインストール

$ git clone https://github.com/ajaxorg/cloud9.git
$ ./cloud9/bin/cloud9.sh

アプリケーションのポートを8080に指定しておく
$ export PORT=8080

アプリケーションをcloneしてくる。
mkdir ~/cloud9/workspace
cd ./cloud9/workspace
git clone https://github.com/yosuke-furukawa/nodeslide.git
cd nodeslide
npm install express
npm install socket.io
npm install mongoose
npm install jade

ワークスペースを指定して起動する
$ cloud9/bin/cloud9.sh -w workspace

以下にアクセスするとIDEが表示される
http://localhost:3000/

以下にアクセスするとアプリケーションが表示される
http://localhost:8080/

2011年11月23日水曜日

各種クラウドサービス 用途メモ

最近、いろいろなクラウドサービスに手を出しすぎて、混乱してきたのでちょっと整理してみた。
自分が利用しているクラウドの利用目的とサービス間の連携について以下に纏めた。


■ クラウドサービス別 用途・利用目的

Twitter ・・・ 大衆向けの情報発信&情報収集
Facebook ・・・ 友人間での情報発信&情報収集
Foursquare ・・・ 現在位置情報の発信、共有
GoogleReader ・・・ RSSを利用した情報収集
Evernote ・・・ スマホ、Windows、Mac間でメモを共有(気になった情報を取り敢えずメモ)
Blogger ・・・ ブログ(後に残したい情報を纏めて掲載)
Tumblr ・・・ Webの記事をスクラップ
Flickr ・・・ Webの写真をスクラップ
FriendFeed ・・・ 各種クラウドサービスを全て収集(バッチをブログなどに掲載する為だけに現状利用)
Googleカレンダー ・・・ スケジュール管理(プライベート目的)
GoogleTasks ・・・ タスク管理(プライベート目的)
Xmarks ・・・ ブックマークの管理(プライベート目的)
LastPass ・・・ パスワードの管理(プライベート目的)
Picasa ・・・ デジカメやスマホなどの写真の一元管理(プライベート目的)

ほとんど使ってないサービス
Google+ ・・・ Twitter的なところもあれば、Facebook的なところもある。サークル次第。(現状は様子見)
Linkedin ・・・ 仕事におけるスキルなどを掲載(現状は様子見)
ロケタッチ ・・・ 位置情報の発信、ぐるなびとも提携したのでグルメ情報系の位置情報発信(もっぱらFoursquare)
GoogleLatitude ・・・ 位置情報の発信(あまり使ってない)
Dropbox ・・・ クラウド上のストレージサービス(スマホ用の動画を貯めるの向いてるのかも。あまり使ってない)
MySpace ・・・ 洋楽、邦楽、インディーズなどの音楽コミュニティ(あまり使ってない)
Ping ・・・ iTuneで好きな音楽などを通して行うコミュニティ(あまり使ってない)



2011年11月21日月曜日

Mac ショートカットキー 一覧


■ Mac ショートカットキー 一覧


~ 起動用キーボードショートカット

起動可能なすべてのボリュームを表示 (Startup Manager)・・・option
セーフブート (セーフモード での起動) を実行・・・shift
起動可能なディスクから起動 (DVD、CD)・・・C
FireWire ターゲットディスクモード で起動・・・T
NetBoot サーバから起動・・・N
Mac OS X を強制的に起動 (Mac OS X 起動ボリューム以外のボリュームが存在する場合)・・・X
verbose モード で起動・・・command + V
シングルユーザモード で起動・・・command + S


~ Finder 用キーボードショートカット

手前に表示されている Finder ウインドウ (ウインドウが開かれていない場合はデスクトップ) のすべての項目を選択・・・command + A
すべての項目の選択を解除・・・option + command + A
「アプリケーション」フォルダを開く・・・shift + command + A
選択した項目/テキストをクリップボードにコピー・・・command + C
「コンピュータ」ウインドウを開く・・・shift + command + C
選択した項目を複製・・・command + D
「デスクトップ」フォルダを開く・・・shift + command + D
取り出し・・・command + E
Spotlight で、一致する属性を検索・・・command + F
Spotlight で、ファイル名の一致を検索・・・shift + command + F
すでに開いている Spotlight ウインドウの検索フィールドに移動・・・option + command + F
フォルダへ移動・・・shift + command + G
現在ログインしているユーザアカウントの「ホーム」フォルダを開く・・・shift + command + H
情報を見る・・・command + I
インスペクタを表示・・・option + command + I
概要情報を見る・・・control + command + I
iDisk を開く・・・shift + command + I
表示オプションを表示・・・command + J
サーバへの接続・・・command + K
ネットワークウインドウを開く・・・shift + command + K
選択した項目のエイリアスを作る・・・command + L
ウインドウをしまう・・・command + M
すべてのウインドウをしまう・・・option + command + M
新規 Finder ウインドウ・・・command + N
新規フォルダ・・・shift + command + N
新規スマートフォルダ・・・option + command + N
選択した項目を開く・・・command + O
ログアウト・・・shift + command + Q
すぐにログアウトする・・・option + shift + command + Q
(エイリアスの) オリジナルを表示・・・command + R
サイドバーに追加・・・command + T
よく使う項目に追加・・・shift + command + T
Finder ウインドウのツールバーを隠す/表示・・・option + command + T
「ユーティリティ」フォルダを開く・・・shift + command + U
ペースト・・・command + V
ウインドウを閉じる・・・command + W
すべてのウインドウを閉じる・・・option + command + W
カット・・・command + X
スライドショー (Mac OS X 10.5 以降)・・・option + command + Y
取り消す/やり直す・・・command + Z
アイコンとして表示・・・command + 1
リストで表示・・・command + 2
列で表示・・・command + 3
Cover Flow で表示 (Mac OS X 10.5 以降)・・・command + 4
Finder の環境設定を開く・・・command + カンマ (,)
開かれている Finder ウインドウ間を順番に切り替える・・・command + アクセント (`) (US English キーボード配列で、「tab」キーの上にある)
Mac ヘルプを開く・・・command + shift + ?
一番手前のアプリケーションを 強制終了・・・option + shift +command + esc (3 秒間押し続ける) - Mac OS X v10.5、v10.6 以降のみ
戻る・・・command + [
進む・・・command + ]
内包しているフォルダを開く・・・command + 上矢印キー
内包しているフォルダを新規ウインドウで開く・・・control + command + 上矢印キー
ハイライトした項目を開く・・・command + 下矢印キー
アプリケーションを順に切り替える・・・command + tab
アプリケーションを逆順に切り替える・・・shift + command + tab
ゴミ箱に入れる・・・command + delete
ゴミ箱を空にする・・・shift + command + delete
確認ダイアログなしでゴミ箱を空にする・・・option + shift + command + delete
Quick Look (Mac OS X 10.5 以降)・・・スペース (または command + Y)
ドラッグして別のボリューム/場所へ項目を移動 (キーを押している間、ポインタの形が変化します。こちらの記事 を参照)・・・command + ドラッグ
ドラッグして項目をコピー (キーを押している間、ポインタの形が変化します。こちらの記事 を参照)・・・option + ドラッグ
ドラッグして項目のエイリアスを作る (キーを押している間、ポインタの形が変化します。こちらの記事 を参照)・・・option + command + ドラッグ


~ アプリケーション用などその他の Mac OS X キーボードコマンド

Spotlight 検索フィールドを表示/隠す (複数の言語がインストールされている場合は、有効になっているスクリプトシステムが順番に表示されます。)・・・command + スペース
現在の行/段落の先頭に移動・・・control + A
1 文字戻る・・・control + B
カーソルの右側の文字を削除・・・control + D
現在の行/段落の末尾に移動・・・control + E
1 文字進む・・・control + F
カーソルの左側の文字を削除・・・control + H
カーソルの右側の文字から行/段落の末尾までを削除・・・control + K
カーソル/選択部分を表示領域の中央にする・・・control + L
1 行下に移動・・・control + N
カーソルの後ろに 1 行挿入・・・control + O
1 行上に移動・・・control + P
カーソルの左側の文字と右側の文字を置換・・・control + T
1 つ下のページに移動する・・・control + V
カーソルの左側の 1 単語とその後ろのスペースや句読点を削除・・・option + delete
Spotlight 検索結果ウインドウを表示 (複数の言語がインストールされている場合は、スクリプト内のキーボードレイアウトおよび入力方式が順番に表示されます。)・・・option + command + スペース
開いているアプリケーションのリスト (最近使った順番に表示されている) 内を順方向に移動・・・command + tab
開いているアプリケーションのリスト (最近使った順番に表示されている) 内を逆方向に移動・・・shift + command + tab
逆方向にコントロール間を移動・・・shift + tab
ダイアログ内の次のコントロールのグループ、または次の表にフォーカスを移動 (「tab」キーを押すと次のセルに移動する場合)・・・control + tab
前のコントロールのグループにフォーカスを移動・・・shift + control + tab
Front Row (インストールされている場合) を開く・・・command + esc
セカンダリ光学式メディアドライブ (取り付けられている場合) からの取り出し・・・option + イジェクト
システム終了ダイアログを表示・・・control + イジェクト
スリープモードにする・・・option + command + イジェクト
(開いた状態のドキュメントに対する変更を保存するよう求めた後に) すべてのアプリケーションを終了して、コンピュータを再起動・・・control + command + イジェクト
(開いた状態のドキュメントに対する変更を保存するよう求めた後に) すべてのアプリケーションを終了して、システム終了・・・control + option + command + イジェクト
カーソルの右側の文字を削除 (ノートブック型 Mac の内蔵キーボード)・・・fn + delete
フルキーボードアクセスのオン/オフを切り替える・・・control + F1
メニューバーにフォーカスを移動・・・control + F2
Dock にフォーカスを移動・・・control + F3
アクティブな (または次の) ウインドウにフォーカスを移動・・・control + F4
前にアクティブであったウインドウにフォーカスを移動・・・shift + control + F4
ツールバーにフォーカスを移動・・・control + F5
最初の (または次の) パネルにフォーカスを移動・・・control + F6
前のパネルにフォーカスを移動・・・shift + control + F6
ウインドウおよびダイアログの現在のキーボードアクセスモードを一時的に無効にする・・・control + F7
開かれているすべてのウインドウをタイル表示/タイル表示解除・・・F9
現在アクティブなアプリケーションで開かれているすべてのウインドウをタイル表示/タイル表示解除・・・F10
開かれているすべてのウインドウを隠す/表示・・・F11
Dashboard を隠す/表示・・・F12
最前面のアプリケーションで開かれている次のウインドウをアクティブ化・・・command + (`)
最前面のアプリケーションで開かれている前のウインドウをアクティブ化・・・shift + command + (`)
ウインドウドロアーにフォーカスを移動・・・option + command + (`)
選択した項目のサイズを縮小・・・command + マイナス (-)
選択した範囲を左揃え・・・command + {
選択した範囲を右揃え・・・command + }
選択した範囲を中央揃え・・・command + |
「スペル」ウインドウを表示・・・command + コロン (:)
書類内でスペルに誤りのある単語を検索・・・command + セミコロン (;)
前面に表示されているアプリケーションの環境設定ウインドウを開く (そのアプリケーションでこのキーボードショートカットがサポートされている場合)・・・command + カンマ (,)
画面のコントラストを下げる・・・option + control + command + カンマ (,)
画面のコントラストを上げる・・・option + control + command + ピリオド (.)
アプリケーションのヘルプをヘルプビューアで開く・・・command + ?
フォントスムージング機能のオン/オフを切り替える・・・option + command + /
選択した項目のサイズを拡大・・・shift + command + =
画面をファイルに取り込む・・・shift + command + 3
画面をクリップボードに取り込む・・・shift + control + command + 3
選択した範囲をファイルに取り込む・・・shift + command + 4
選択した範囲をクリップボードに取り込む・・・shift + control + command + 4
書類またはウインドウ内のすべての項目、またはテキストフィールド内のすべての文字をハイライトする・・・command + A
選択したテキストを太字に設定/設定解除・・・command + B
選択したデータをクリップボードにコピー・・・command + C
カラーウインドウを表示・・・shift + command + C
選択したテキストのスタイルをコピー・・・option + command + C
選択した項目の書式設定をコピーしてクリップボードに保存・・・control + command + C
Dock を表示/隠す・・・option + command + D
辞書アプリケーションで選択した単語の定義を表示・・・command + control + D
「開く」ダイアログと「保存」ダイアログで「デスクトップ」フォルダを選択・・・command + D
Mac OS X v10.6.8 以前で「保存しない」ボタンを含むダイアログから「保存しない」を選択
OS X Lion で「保存しない」ボタンを含むダイアログから「保存しない」を選択・・・command + delete
選択項目を検索に使う・・・command + E
検索ウインドウを開く・・・command + F
検索フィールドのコントロールに移動・・・option + command + F
選択項目が次に出てくる場所を検索・・・command + G
選択項目が出てくる場所を逆方向に検索・・・shift + command + G
現在実行中のアプリケーションのウインドウを隠す・・・command + H
実行されているその他すべてのアプリケーションのウインドウを隠す・・・option + command + H
選択したテキストを斜体に設定/設定解除・・・command + I
インスペクタウインドウを表示・・・option + command + I
選択した範囲までスクロール・・・command + J
アクティブなウインドウを Dock にしまう・・・command + M
アクティブなアプリケーションのすべてのウインドウを Dock にしまう・・・option + command + M
最前面のアプリケーションで新規書類を作成・・・command + N
最前面のアプリケーションで開く書類を選択するためのダイアログを表示・・・command + O
「プリント」ダイアログを表示・・・command + P
印刷パラメータを指定するためのダイアログを表示 (「ページ設定」コマンド)・・・shift + command + P
最全面のアプリケーションを終了・・・command + Q
アクティブな書類を保存・・・command + S
「別名で保存」ダイアログを表示・・・shift + command + S
「フォント」ウインドウを表示・・・command + T
ツールバーを表示/隠す・・・option + command + T
選択したテキストに下線を設定/設定解除・・・command + U
クリップボードの内容を挿入ポイントにペースト・・・command + V
あるオブジェクトのスタイルを、選択したオブジェクトに適用 (「スタイルをペースト」コマンド)・・・option + command + V
周囲のテキストのスタイルを、挿入したオブジェクトに適用 (「ペーストしてスタイルを合わせる」コマンド)・・・option + shift + command + V
選択したオブジェクトに書式設定を適用 (「ルーラのペースト」コマンド)・・・control + command + V
最全面のウインドウを閉じる・・・command + W
ファイルとそのファイルに関連付けられたウインドウを閉じる・・・shift + command + W
アプリケーションを終了せずにそのアプリケーションのすべてのウインドウを閉じる・・・option + command + W
選択内容を削除してクリップボードに保存・・・command + X
前のコマンドの取り消し (アプリケーションによっては複数回の取り消しが可能)・・・command + Z
前のコマンドのやり直し (アプリケーションによっては複数回のやり直しが可能)・・・shift + command + Z
ビュー (表など) 内の別の値またはセルにフォーカスを移動・・・control + 右矢印キー
ビュー (表など) 内の別の値またはセルにフォーカスを移動・・・control + 左矢印キー
ビュー (表など) 内の別の値またはセルにフォーカスを移動・・・control + 下矢印キー
ビュー (表など) 内の別の値またはセルにフォーカスを移動・・・control + 上矢印キー
テキスト挿入ポイントを現在の行の末尾に移動・・・command + 右矢印キー
テキスト挿入ポイントを現在の行の先頭に移動・・・command + 左矢印キー
テキスト挿入ポイントを現在のドキュメントの末尾に移動・・・command + 下矢印キー
テキスト挿入ポイントを現在のドキュメントの先頭に移動・・・command + 上矢印キー
挿入ポイントから、現在の行の終わりまでの範囲のテキストを選択 (*)・・・shift + command + 右矢印キー
挿入ポイントから、現在の行の始まりまでの範囲のテキストを選択 (*)・・・shift + command + 左矢印キー
選択したテキスト範囲を 1 文字右に拡張する (*)・・・shift + 右矢印キー
選択したテキスト範囲を 1 文字左に拡張する (*)・・・shift + 左矢印キー
挿入ポイントから、書類の始まりまでの範囲のテキストを選択 (*)・・・shift + command + 上矢印キー
挿入ポイントから、書類の終わりまでの範囲のテキストを選択 (*)・・・shift + command + 下矢印キー
選択したテキスト範囲を、上の行の、同じ水平位置にもっとも近い文字境界まで拡張する (*)・・・shift + 上矢印キー
選択したテキスト範囲を、下の行の、同じ水平位置にもっとも近い文字境界まで拡張する (*)・・・shift + 下矢印キー
選択したテキスト範囲を、現在の単語の終わりまで拡張し、次回には次の単語の終わりまで拡張する (*)・・・shift + option + 右矢印キー
選択したテキスト範囲を、現在の単語の始まりまで拡張し、次回には次の単語の始まりまで拡張する (*)・・・shift + option + 左矢印キー
選択したテキスト範囲を、現在の段落の終わりまで拡張し、次回には次の段落の終わりまで拡張する (*)・・・shift + option + 下矢印キー
選択したテキスト範囲を、現在の段落の始まりまで拡張し、次回には次の段落の始まりまで拡張する (*)・・・shift + option + 上矢印キー
現在の入力ソースと前の入力ソース間の切り替え・・・control + スペース
有効なすべての入力ソース間の切り替え・・・option + control + スペース
強制終了・・・option + command + esc


~ ユニバーサルアクセス ― VoiceOver キーボードコマンド

VoiceOver のオン/オフを切り替える・・・command + F5 または fn + command + F5
VoiceOver ユーティリティを開く・・・control + option + F8 または fn + control + option + F8
VoiceOver メニューを表示・・・control + option + F7 または fn + control + option + F7
VoiceOver の control + option ロックのオン/オフを切り替える・・・control + option + セミコロン (;)または fn + control + option + セミコロン (;)
ズームを有効にする・・・option + command + 8 または fn + command + F11
ズームイン・・・option + command + プラス (+)
ズームアウト・・・option + command + マイナス (-)
ディスプレイの色 を反転させる/元に戻す・・・option + control + command + 8
コントラストを下げる・・・control + option + command + カンマ (,)
コントラストを上げる・・・control + option + command + ピリオド (.)


~ ユニバーサルアクセス ― マウスキー

上に移動・・・8
下へ移動・・・2
左に移動・・・4
右に移動・・・6
左下斜めに移動・・・1
右下斜めに移動・・・3
左上斜めに移動・・・7
右上斜めに移動・・・9
マウスボタンを押す・・・5
マウスボタンを押したままにする・・・0
マウスボタンを放す・・・. (テンキーのピリオド)

2011年11月13日日曜日

Node.js 導入手順メモ

■ Node.js 導入手順メモ

・Node.jsをインストールする。
Node.js用のパッケージ管理であるnpmをインストール
curl http://npmjs.org/install.sh | sh
nvm install v0.6.11

・MongoDBをインストールする。
brew install mongodb

・MondoDBを自動起動に設定して起動する
cp /usr/local/Cellar/mongodb/2.0.1-x86_64/org.mongodb.mongod.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist

・パッケージのインストール
npm install -g express

■ パッケージ構成
sample
 ├ app.js
 ├ package.json
 ├ public
 │  ├ images
 │  ├ javascripts
 │  └ stylesheets
 │       └ style.css
 ├ routes
 │  └ index.js
 └ views
      ├ index.jade
      └ layout.jade

app.js がメインのプログラム
package.jsonが npm のための設定ファイル
publicが静的ファイル置き場
routesがルーティングごとのプログラム置き場
viewsがテンプレート置き場

※「npm install」をすると、npm は package.json の dependencies に書かれているパッケージをインストールする。


■ 起動方法
node app.js
ブラウザで http://localhost:3000/


■ デバック方法
npm install node-inspector

インスペクターを起動する。
node-inspector --web-port=8989
node --debug app.js

・以下にアクセスする
http://127.0.0.1:8989/debug?port=5858

・ソース修正時にサーバーを自動再起動させる
npm install -g node-dev
node-dev  app.js

2011年11月10日木曜日

Androidソースの取得手順メモ

■ Androidソースの取得手順

・以下の作業はCygwin上で行う
mkdir ~/bin
PATH=~/bin:$PATH
curl -k --insecure https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

認証を無視させる(これやんないと認証に失敗しちゃうみたい)
git config --global http.sslVerify false

repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.7_r1
repo sync
gpg --import


こんなエラーが出るときは、
11086085 [main] httpd2 4492 fork: child 5492 - died waiting for dll loading, errno 11

cd C:\cygwin\bin
> ash
rebaseall -v

2011年9月14日水曜日

GDD2011 DevQuiz スライドパズル

以下のサイトを見ると、皆さんいろいろなアルゴリズムで探索しているようです。

「GDD2011 DevQuiz のスライドパズル晒し祭りをまとめてみた」
http://d.hatena.ne.jp/harapon1012/touch/20110912/1315805381

言語はjavaが多いようですが、中にはJavaScriptで4000問以上正解したという人もいたようです。

私もJava(Swing)で作成しました。幅優先探索とステップ実行を並列処理で行うようにしました。
枝刈りには、MD(移動距離)及びID(転倒距離)の厳しい方を採用。ここで壁を考慮した枝刈りをすればもっと効率の良い探索が出来たんだろうなぁと思います。


■ 探索アルゴリズムの纏め

1.深さ優先探索(DFS)
先頭のノードから、子のない最後のノードに行き着くまで、深く伸びていく探索、その後はバックトラックして、最も近くの探索の終わっていないノードまで戻る。

2.幅優先探索(BFS)
先頭のノードで始まり隣接した全てのノードを探索する。それからこれらの最も近い子ノードのそれぞれに対して同様のことを繰り返す。

3.反復深化(IDDFS)
深さ優先探索の深さ制限を徐々に増大させ、最終的に目標状態の深さになるまで反復するもの。

4.A*探索(IDA*)
過去のステップ数と残りの距離見積りの和で与えた閾値を上げながら反復深化(これが最も有効だったようだ)

5.双方向探索
同時に2つの方向から探索を行う。一方は初期状態から順方向に探索し、もう一方は最終状態から逆方向に探索して、その中間でぶつかった時点で終了する

6.端優先
人がパズルを組み立てる時のように端から順に揃えていくアルゴリズム。

7.ステップ実行
指定された回数探索を行い、それまでにゴールに達しなかった場合、過去に見つかった残りの距離見積りが最小のものをスタートに再度探索を繰り返す。(それ以外のノードを捨てる)
実装は簡単ですが、無駄なノードに対しても与えられた探索回数までは広く探索を行う点が難。


■ 作成したソース
https://github.com/isystk/gdd2011jp

■ デモ
http://www.ise-web.com/sample/jws/

■ 結果


■ 参考にしたサイト
http://www.ic-net.or.jp/home/takaken/nt/slide/solve15.html

2011年6月22日水曜日

Tomcat7のデーモン化手順

Tomcat7からjsvcを利用したデーモン化の方法がちょっと変わったみたいなので、メモしておく。

デーモンの設定方法
cd $CATALINA_HOME/bin
tar xvfz commons-deamon-native.tar.gz
cd commons-daemon-1.0.x-native-src/unix
./configure
make
cp jsvc ../../
cd ../../

2011年5月10日火曜日

Java SE 7最新動向

JSR 203: More New I/O APIs for the Java Platform ("NIO.2")
~ ファイルシステムへのアクセスや非同期I/Oなどといった、入出力関連の拡張機能が提供される。

JSR 255: Java Management Extensions (JMX) Specification, version 2.0
~ JMX Remote仕様(JSR 160)の後継バージョンで、Java SE 6の数々の新機能に対応したアップデートが行われる。

JSR 260: Javadoc Tag Technology Update
~ Javadocのタグを拡張するための仕様である。

JSR 262: Web Services Connector for Java Management Extensions (JMX) Agents
~ Webサービス経由でJMX Remote APIにアクセスするためのコネクタを定義し、
これによってJavaアプリケーション以外のクライアントからもJavaプログラムのマネージメントが行えるようになる。

JSR 268: Java Smart Card I/O API
~ JavaプログラムでスマートカードにアクセスするためのAPI仕様。

JSR 275: Units Specification
~ Javaプログラムにおいて数量や単位を扱うための強力な機能を提供する拡張API

JSR 277: Java Module System
~ JARファイルの拡張版といった位置付けのJSRで、Javaアプリケーションの配布やデプロイ、
ファイル間の依存関係の解決などを容易に行えるようにするもの。

JSR 292: Supporting Dynamically Typed Languages on the Java Platform
~ Java仮想マシンに動的な型をサポートするための仕様を織り込み、
Javaプラットフォーム上で動作する動的言語(JRuby、Jython、Beanshell)の開発を容易にすることを目指している。

JSR 294: Improved Modularity Support in the Java Programming Language
~ パッケージの概念を拡張するもので、パッケージレベルでのアクセス権を扱えるようにするための仕組みなどが規定される。

JSR 295: Beans Binding
~ JavaBeanのプロパティを同期させるためのAPI

JSR 296: Swing Application Framework
~ Swingを用いたGUIアプリケーション開発のための標準的なフレームワークを提供する。

JSR 303: Bean Validator
~ アノテーションを使用してJavaBeanの検証を行うための仕組みを提供するAPI

JSR 310: Date and Time API
~ Javaプログラムにおける日付や時間の情報を取り扱うためのAPI

2011年4月26日火曜日

JDK7 にバンドル予定の新機能 メモ

■ JDK7 にバンドル予定の新機能 メモ


【APIの改善点】
・switch 文での String
~ switch 文で String を使用できるようになる。
例:
switch (myString) {
    case "one":
        <do something>;
        break;
    case "red":
        <do something else>;
        break;
    Default:
        <do something generic>;
}


・Generics インスタンス生成のための型推論の改善
~ 2 番目の <> 構成体を以下のように推定することができる。
例:
Map<String, List<String>> anagrams = new HashMap<();


・コレクションの言語サポート
~ 配列を初期化する構文を使用して配列に含める値を指定することが出来る。
例:
List<String> numbers = ["one", "two", "three", "four", "five"];


・自動リソース管理
~ try 文の実行が完了すると、InputStream や OutputStream などのリソースが自動的に閉じられる。
例:
try (BufferedReader reader = new BufferedReader(new FileReader(file)) {
    return reader.readLine();
}


・マルチキャッチ
~ 複数の例外を同じcatchブロックでキャッチできる。
例:
try {
    ・・・
} catch (IOException | InterruptedException e) {

・java.util.Objectsクラスの提供
~ リフレクションを使い、オブジェクトのすべてのフィールドを書き出すtoString(arg)など。


・ダイアモンド演算子
~ new LinkedList<>()


・enumの大小比較
・BigDecimalで直接演算子で計算が可能
・引数チェック用のアノテーション(@NotNullみたいなもの)



【VMの改善点】

・コンプレス64ビットオブジェクトポインタ
~ 64ビットJavaでもポインタ(オブジェクトの位置を表現する変数)を短く表現することで消費メモリを減らす機能


・G1ガベージコレクタ
~ ヒープ領域は1つだけ用意され、その中を小さな領域に分割する。
そしてその領域のうちいくつかをYoung領域とし、残りをOld領域として利用する。(FullGCの発生頻度を減らす効果)
Java SE for Businessのサポート契約を購入する必要がある。


・クラスローダアーキテクチャアップグレード


■ その他(JDK8に持ち越し?)
・クロージャ
・Swingアプリケーションフレームワーク


2011年4月17日日曜日

partimageを使ったOSのバックアップ&リストア手順

partimageを使ったOSのバックアップ&リストア手順

■ 事前準備
ハードディスクを3台用意する。それぞれは以下の目的で利用する。
HD1 ・・・ WindowsXP(通常利用するOS)、Ubuntu(バックアップやリストア作業を行う為のOS)
2つのOSをデュアルブート起動出来るようにしておく。
HD2 ・・・ データ専用(作成したデータは、すべてここに保存する。マイドキュメントの位置もCドライブから移動しておく)
HD3 ・・・ HD1のWindowsXPがインストールされているパーティションのクローン。
通常利用するOSが壊れたときのための緊急用OS
NAS ・・・ OSイメージをバックアップしておく場所。HD2のバックアップにも利用する。


■ バックアップ
# 管理者になる
su -

# バックアップイメージを保存するファイルサーバーをマウントする。
mkdir /mnt/private
smbmount //<NASのIPアドレス> /mnt/nas -o password=<パスワード>,username=<ユーザーID>,ip=<NASのIPアドレス>

# partimageを起動
partimage

・ 設定内容
1."Partition to save/restore"にバックアップ対象のパーティションを選択する。
例) /hdb/dev1

2."Image file to create/use"にイメージファイルの保存先を指定する。
例)"/mnt/nas/partimage/xp_20110417"

3."Action to be done"で"Save partition into a new image file"が選択されている事を確認する。

F5を押す。
イメージの圧縮方法がGZipになっていると時間がかかるのでNoneにする。

F5 → OK → OK

※ ハードディスクが断片化していると、うまくリストアできない場合がある、
バックアップをとる前に、"Defraggler"などのツールを利用して、
断片化されているファイルを0個にすることをお勧めする。


■ リストア
# 管理者になる
su -

# partimageを起動
partimage

・ 設定内容
1."Partition to save/restore"にリストア対象のパーティションを選択する。
例) /hda/dev1

2."Image file to create/use"にイメージファイルの保存先を指定する。
例)"/mnt/nas/partimage/xp_20110417.000"
※末尾に".000"が付いていることに注意

3."Action to be done"で"Restore partition from an image file"が選択されている事を確認する。

F5を押す。
F5 → OK → OK


2011年1月22日土曜日

Javaの例外処理を復習




■ Aグループ
~ ThrowableのサブクラスErrorのサブクラス。
まれにしか起こらず対処することは不可能、あるいは対処すべきでないもの。

・java.lang.OutOfMemoryError ・・・ メモリ不足
・java.lang.StackOverflowError ・・・ スタックオーバーフロー

■ Bグループ
~ ThrowableのサブクラスExceptionのサブクラスでCグループ以外のもの。
mainまでのどこかでtry~catchにより対処しなければならないもの。

・java.io.IOException ・・・ 入出力エラー
・java.io.FileNotFoundException ・・・ ファイルが見つからない(IOExceptionのサブクラス)
・java.lang.ClassNotFoundException ・・・ クラスが見つからない

■ Cグループ
~ ThrowableのサブクラスExceptionのサブクラスRuntimeExceptionのサブクラス。
プログラムの実行中どこでも起こりうるもので、プログラム作成者のミスによるもの。

・java.lang.ArithmeticException ・・・ 整数演算での0による除算
・java.lang.ArrayIndexOutOfBoundsException ・・・ 配列の添字の不正
・java.lang.IllegalArgumentException ・・・ 引数の値のエラー
・java.lang.NullPointerException ・・・ nullポインタへのアクセス