2007年7月31日火曜日

JavaFX

2007年 RIA戦争勃発

ということで、今度はJavaFXを試してみる。
現在、JavaFXの実装はOpenJFXがある。
OpenFX(3Dツール)と名前が似ていて紛らわしい。

■OpenJFX
ダウンロードはこちらから。
https://openjfx.dev.java.net/servlets/ProjectDocumentList

ダウンロードした圧縮ファイルを展開すると、
思いっきりSubversionなディレクトリ構成がみえる。
※Subversionは最新バージョンをtrunk、枝分けしたバージョンをbranches、タグ付けしたバージョンをtagsというディレクトリにそれぞれ配置して管理する文化がある。

ここではtrunkディレクトリをOpenJFXとでもリネームして、適当なディレクトリに配置しておく。
(例)C:\OpenJFX

■Eclipseプラグイン
リモートサイトを新規追加
http://download.java.net/general/openjfx/plugins/eclipse/site.xml

■作る
Javaプロジェクトを新規作成して、srcディレクトリに新規追加でJavaFX File。
ファイル名はsample.fxとした。

import javafx.ui.*;
Frame {
title: "Hello World"
width: 640
height: 480
content: Label {
text: "Hello World"
}
visible: true
}

実行からJavaFXアプリケーションで、構成を作って、引数にsampleと入力して実行。
フレームが表示された。

2007年7月30日月曜日

F# (F Sharp)

ふとF#を試してみようと思いついた。
F#はLispやHaskell、Omal等のいわゆる関数言語に属する。

■ダウンロード
http://research.microsoft.com/fsharp/fsharp.aspx
上記ページの「F# Downloads」から、最新のF#をダウンロードする。
2007/7/30時点の最新版は InstallFSharp-1.9.1.18.msi となる。

■インストール
ダウンロードしたファイルを実行するだけ。
インストール場所もデフォルトのままで。
F#のコンパイラと、VisualStudio(がインストールされている場合)のアドオンがインストールされる。

インストールするとスタートメニューに「Microsoft Research F# 1.9.1.18」というメニューが出てくる。

●パスを通しておく
コマンドラインからコンパイルする場合等のために、binのパスを通しておこう。
C:\Program Files\FSharp-1.9.1.18\bin

■起動してみる
スタートメニューからF#インタラクティブを起動する。
F#インタラクティブにはコンソール版とVisualStudio版があるようだ。
●コンソール版














インタラクティブコンソールはよくわからなかったので、
ソースファイルを書いて、コンパイルしてみる。

hello.fsを作成し、以下のように記述する。

printf "Hello World\n";

hello.fsがある場所までコマンドプロンプトで移動し、コンパイルする。

>fsc hello.js

コンパイルに成功するとhello.exeが作成される。

>hello.exe
Hello World

●VisualStudio版

インタラクティブモードの場合:
VisualStudioを起動して、「ツール」-「アドインマネージャ」をクリックして、
F# interactiveを選択する。

プロジェクトを作成する場合:
VisualStudioを起動して、新規プロジェクトの「その他プロジェクト」から、F#を選択する。













プロジェクトを作成したら、ソリューションエクスプローラビューから、プロジェクトを右クリックして、
「追加」-「新しい項目」を選択し、「F# source file」を追加する。ファイル名はhello.fsとしている。











あとはソースファイルを書いて、実行するだけ。

■何か作ってみる
●足し算
let x = 10
let y = 20
let z = x + y
do Printf.printf "z = %d\n" (z)

結果:
z=30

●文字列
let hello = "Hello"
let world = "World"
do Printf.printf "%s %s!\n" hello world

結果:
Hello World!

●関数
let square x = x*x
do Printf.printf "6^2=%d\n" (square 6)

結果:
6^2=36

●mapを使う場合
let square x = x*x
let m = List.map square [2;4;8]


うん、いい暇つぶしになった。

2007年7月29日日曜日

Flex 3.0

RIAブームの昨今、プラットフォームの選定は開発者にとって悩みの種の一つと言える。
EclipseRCPは使いやすそうだし、OpenLaszloもカバー範囲が広くてよさげだし、
Swingでいくのが手っ取り早いか、Webブラウザに依存するAjaxに走るか。

それぞれに一長一短があり、堅牢さを求めると、
HTMLベースでJavaScript主体でちまちま制御、という話に成りかねない。
であれば、標準でサポートされているSwingなら、5.0から性能も向上したのだし、
ここはSwingで、とも思う。現に、証券や会計等のWebアプリで採用されている。
だが、VBやDelphiと比べ、機能面で見劣りする点は否めない。
(6.0からドラッグ&ドロップやOS連携等の強力なサポートがなされているので、今後期待できることは間違いない)

そんな時折、見つけたのがこれ。
http://finance.google.com/finance

抜群の操作性。Flashで作られている。そういうわけで、Flashをやろうと。

Flash自体はWebデザイナ向けという感じで、デベロッパは手を出しにくい事情があるが、
Flashベースのデベロッパ向けのフレームワークとして、Flexがある。

Flexが3.0からオープンソース化されるとかいう話が出たので、
今後普及に拍車がかかると見込んで、いざ挑戦。

Flex開発環境であるFlex Builderには、以下の2種類がある。
  • スタンドアロン版(Eclipseを拡張して単独で動くようにしたもの)
  • Eclipseのプラグイン版
■必要なもの
JDK6.0
Eclipse 3.3
(上記2つはインストール済みの前提)
Flex Builder 3.0 beta Eclipse plug-in

■Flex 3.0 beta ダウンロード
AdobeのID登録(無償)が必要。
http://labs.adobe.com/technologies/flex/flexbuilder3/
flexbuilder3_b1_win_plugin_061107.exe

beta版なのに30日試用らしい。
シリアル番号の入力はEclipseの「ウインドウ]-[Manage Flex Licences」から行える。
2007年10月まではFlex2のライセンスが有効とのことなので、Flex2のライセンスを持っているk方は存分に試して欲しい。

ダウンロードしたら、実行ファイルを起動して、ちゃちゃっとインストール。
Flexのインストール先と、eclipseのインストール先ディレクトリを聞かれる。

■Flexプロジェクト作成

Eclipseを起動したら、プロジェクトの新規作成ウィザードで、
「Flex」-「Flex Project」を選択する。




















次にプロジェクト名を聞かれる。今回は以下のようにした。

プロジェクト名:FlexSample
Server Type:Other/none


次にSDKの選択。
SDKはプラグインインストール時にインストールされたものを使うので、
今回はdefaultを選択。

Use Default SDK

他は特に変更する部分はないので、道なりにウィザードを進めて完了。

■Flexサンプルアプリケーション
●画面のデザイン
プロジェクトの作成が完了すると、Flexパースペクティブへ画面遷移するかを聞かれるので、yes。
Flex開発画面はおおよそ以下のような感じ。














中央のmxmlファイルの編集ビューでは、sourceとdesignに切り替えられる。
画面はdesignモードにて、FlexSample.mxmlファイルに、
Label、InputText、Buttonを配置したところ。
各コントロールは左下のコンポーネントビューからドラッグ&ドロップで配置できる。

ここでは名前を入力して、挨拶を表示するサンプルを作る。
デザインモードでFlexSample.mxmlファイルにコントロールを配置するか、
ソース編集モードで、以下のコードを打ち込む。



<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Label x="10" y="10" text="名前" width="34" height="20"/>
<mx:TextInput x="40" y="8" id="nameText"/>
<mx:Button x="147" y="38" label="send" id="sendButton" />
<mx:Label x="10" y="68" id="helloLabel" width="212"/>
</mx:Application>




この状態で、Eclipseの実行ボタンを押すと、ブラウザが起動し、デザインした画面を見ることが出来る。
制御コードを何も書いていないので、画面に配置したボタンを押しても何も起こらない。

●アクションの実装

アクションを指定するには、ActionScriptを使ってイベントリスナを実装する必要がある。
FlexSample.mxmlのソース編集画面で、以下の赤字のコードを追加入力する。


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
private function sayHello():void {
helloLabel.text = "hello " + nameText.text + "!";
}
]]>
</mx:Script>
<mx:Label x="10" y="10" text="名前" width="34" height="20"/>
<mx:TextInput x="40" y="8" id="nameText"/>
<mx:Button x="147" y="38" label="send" id="sendButton" click="sayHello();"/>
<mx:Label x="10" y="68" id="helloLabel" width="212"/>
</mx:Application>





Scriptタグに囲まれた箇所でsayHello関数を定義している。
JavaScriptっぽいが、ActionScriptである。
sendボタンのclick定義でsayHello関数を呼び出すように変更している。

●いざ、実行
こんな感じ。








Flexの魅力をまったく感じないサンプルになってしまった。

2007年7月19日木曜日

プロトコルアナライザ(LAN)

◆Ethereal
まずは有名どころの Ethereal 0.99.0を使ってみる。

http://www.ethereal.com/download.html

■Windows版のインストール
インストールは道なりに、全てデフォルトを選択。
拡張子の関連付けとか、デスクトップアイコンの作成とかは、好みで。
winpcapをインストールしていないなら、チェックは外さないこと。
WinPcapの最新版は4.0だが、あえて別途インストールする必要は無い。
同梱されているWinPcap 3.1でいい。

■使ってみる
[Capter]-[Options]からネットワークインタフェース(ネットワークカードとか)を選択して、[Start]。
通信内容がキャプチャされるので、キャプチャしたい通信が完了するまで待つ。
終わったら[Stop]を押せば、キャプチャした内容をウインドウに表示される。

◆Sniphere(要WinPcap)
マイナーですが、手軽なSniphereをご紹介。
機能的にはEtherealより劣るけど、軽量で機能が単純なので、
ちょっとしたプロトコル解析に使えるかも。

http://www.securesphere.net/html/projects_sniphere.php

2007年7月8日日曜日

Ecipseとかjvmの起動引数

たまに忘れるのでメモ。

■Eclipse起動引数
  • -vm JavaVMの指定 (例:-vm C:\java6\bin\javaw.exe)
  • -vmargs VMへの引数指定(例:-vmargs -Xms64m -Xmx512m)
    • -Xms 最小ヒープメモリ
    • -Xmx 最大ヒープメモリ
    • その他はVMオプションの項に譲る
  • -data ワークスペースの指定(例:-data C:\workspace)
  • -clean 起動時にクリーンを実行する
■VMオプション

標準オプション(java -helpで見られる)
  • -client JavaHotSpot Client VMを使用
  • -server JavaHotSpot Server VMを使用
  • -classpath( or -cp) クラスパス指定
  • -D<プロパティ名>=<プロパティ値> プロパティを直接指定
  • -verbose:jni JNI(Java Native Interface)情報表示
  • -verbose:gc GC情報表示
  • -verbose:class クラス情報表示
拡張オプション(ベンダによって異なる。java -X -helpで見られる)
  • -Xms 初期ヒープサイズ
  • -Xmx 最大ヒープサイズ
  • -Xss スレッドスタックサイズ
  • -XX:MaxPermSize= パーマネント領域サイズ
  • -Xloggc:<ログファイル名> GC情報の出力先ログファイルの指定(-verbose:gcと一緒に指定)
は数値の後にmをつけるとMB指定(-Xmx512m)

2007年7月7日土曜日

test

テスト
test
ABC

TEST
test
ああああああああああ
ああああああああああ
ああああああ
test

#include
int
main( int argc, char* argv[])

{
printf("hello world\n");
return 0;

}


画像テスト
中サイズ













  1. abc
  2. def
  3. ghi
  • あいうえお

preタグ

#include <iostream>
using namespace std;

int main() {
cout << "!!!Hello World!!!" << endl;
return 0;
}
preタグなし

cout << "hello" << endl;

参加ユーザー

今月の本

  • 臆病者のための株入門
  • TSPガイドブック:リーダー編
  • 夜明けの街で
  • 詳解Oracleアーキテクチャ
  • Ajax イン・アクション
  • 実践Ajax
  • すごい「実行力」
  • More Effective C++
  • 母子関係の理論
  • コンピュータアーキテクチャのエッセンス