« 2008年11月 | トップページ | 2009年1月 »

2008年12月の12件の投稿

2008/12/29

JavaFXの日本語サイト

http://sdc.sun.co.jp/java/javafx/index.htmlにサイトがオープンしていた。英語で読まないといけない情報が少なくなるのは良いことだ。

2008/12/28

丸型蛍光灯を交換した

東芝 32W形+40W形丸形蛍光灯クリアデイライト(昼光色)メロウZプライド【税込】 FCL32-40EDC-PD-2P [FCL3240EDCPD2P]

学生時代6年間暮らした住まいでは、結局交換せずに終わったが、今回、5年6ヶ月弱で蛍光灯の寿命が来た。一人暮らしを始めてから初めて蛍光灯の交換を行ったことになる。

説明によると、今まで使用していた東芝ライテックのメロウZは定格寿命が6,000時間であり、今回のメロウZ PRIDEはその2倍、12,000時間ということだ。

5年6ヶ月がちょうど2,000日くらいであり、定格寿命を基準にすると、1日当たり3時間点灯していることになる。睡眠中以外の自宅にいる時間は全て点灯しているのだが、妥当なところだろうと思う。

 

前回XBOX360用120GBハードディスクについて、かなり品薄なようで、今amazonを見ると定価を大幅に超える23,000円以上に値上がりしていた。PC用のものと比較して20倍近くになったことになるのだろうか。なお、定価は先のリンク先にあるとおり15,000円である。

kakaku.comによると(下図)、12月上旬から値段が上昇している。ちょうど前回のエントリ投稿日頃のようだ。

xbox360hdd

2008/12/23

JavaFXでmp4/swfを再生してみた

firefoxのあまりにも遅い動作、特に初回起動時の遅さに耐えかねて、メインブラウザをGoogle Chromeに変更した。タブやウィンドウがそれぞれ別プロセスで動作するので、JavaFXのページやAppletのページを開いたときでも、別タブ/ウィンドウでは固まることなく閲覧できる。ちなみにIEは処理が重くなると確認ダイアログが出て、ダイアログの質問に答えない限り、処理負荷が低減しても復帰しないので困る。

Google Chromeのデメリットとしては、おそらく別プロセスで動作するためメモリの消費が他と比べて大きいこと、が挙げられると思う。ただ、私の環境では積載メモリに対する通常動作時の消費メモリが大分小さいため、これが問題になることは今のところ全く無い。

閑話休題。

ffdshowというものがどういう仕組みで動作しているのかさっぱり知らないのだが、とにかくffdshowを噛ますことでmp4だろうがswfだろうが再生できることを確認した。

Wikipediaの記述を見ると、DirectShowフィルタという説明が為されているので、Windows専用の仕組みなのだろう。

スターとメニューから辿れる、ffdshowの「ビデオデコーダの設定」を選択すると、下に示したダイアログが表示される。ここで「未知のアプリケーションがffdshowをロードしようとした時ダイアログを表示する」にチェックを入れておく(おそらくデフォルトでチェックは入っているだろうが)。

directshow01 (クリックで拡大)

その後、JavaFXのプログラムで動画を再生しようとすると、下に示したダイアログ「ffdshow互換性管理プログラム」が表示される。

directshow02 (クリックで拡大)

いちいち選択するのが面倒であれば、「ffdshowを使用する(記憶する)。」を選んでおけば良いのではないだろうか。

ここで「記憶する」を選択した場合、1つ目に示したダイアログ中の「以下ではffdshowを使用しない」、あるいは「以下でのみffdshowを使用する」にjava.exeが設定される。ここからjava.exeを削除すると、次回起動時には再度2つめのダイアログが表示されることになる。

今回使用した、JavaFXでの動作再生プログラムのサンプルはこちら

 

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.paint.Color;
import javafx.scene.Scene;
import javafx.stage.Stage;

var media = Media {
    source: "file:/C:/test.flv";
};
println("SIZE: {media.width} x {media.height}");

var player = MediaPlayer {
    media: media
    autoPlay: true
};

var stage:Stage = Stage {
    onClose: function() {
        java.lang.System.exit( 0 );
    }

    title: "Media Player";
    visible: true;
    width: media.width
    height: media.height
    scene: Scene {
        fill: Color.BLACK
        content: [
            MediaView {
                mediaPlayer: player
            }
        ]
    }
}

NetBeansはどうやってjava.exeを探すのか

以前インストールしていたJava6u10を削除したところ、NetBeans起動時に下記のダイアログが出るようになった。

---------------------------
Invalid jdkhome specified
---------------------------
Cannot find java.exe in specified jdkhome.
Neither C:\Program Files\Java\jdk1.6.0_10\jre\bin\java.exe nor C:\Program Files\Java\jdk1.6.0_10\bin\java.exe exists.
Do you want to try to use default version?
---------------------------
はい(Y)   いいえ(N)  
---------------------------

これを解消するには、C:\Program Files\NetBeans 6.5\etc\netbeans.confの、"netbeans_jdkhome="以降を手で編集すればよいようだ。

# Default location of JDK, can be overridden by using --jdkhome <dir>:
netbeans_jdkhome="C:\Program Files\Java\jdk1.6.0_10"

 

参考:
NetBeans Forums - Upgraded to JDK 6-11 Problem

2008/12/21

SEの年収(2009年版)

3ヶ月ぶりの休日だった。部屋の掃除をすべきだったが、丸2日寝続けてしまった。以前購入したHDDの増設だけ、何とかやり終えた。

今年の源泉徴収票から情報を取得し、SEの年収(2008年版)を更新する。

所属年数 税引前給与(万円)
1 306
2 452
3 512
4 665
5 687
6 700

 

salary09

今年はちょうど700万円となった。伸び率は最低であるが、マイナスにならなかっただけましか。キャピタルロスで相殺される分を考慮すると、今年は大幅に赤字となる。

2008/12/14

JavaFX Production Suiteを試してみた

JavaFX Production Suiteが何者なのかさっぱり分からないのでインストールして触ってみた。PhotoShopもIllustratorも所有していないので、SVG to JavaFX Graphics Converterを使用しただけだが。

サンプルを実行すると、デスクトップアプリケーションでも、WEBアプリのようにUI設計の自由度が上がるのだろうなあ、ということが思い浮かぶ。ただし高いデザインセンスが要求されそうだが。

SVGファイル作成にはInkscapeというGPLで配布されているプロダクトを用いた。Gimp同様、インストール直後では日本語が文字化けしていたため、以前と同様のrcファイル編集を行った。

Inkscape拡張(?)のSVG形式、プレーンSVG形式いずれも、今回使用した限りでは変換が可能であるようにみえる。

Webの説明では、Adobe製品専用のプラグインか何かに見えるが、SVGファイルをJavaFXで表示させるためのプロダクト、ということらしい。

2008/12/09

JavaFX - Lesson 4: Data Types

  • 文字列はJavaと同じダブルクォーテーションで括る"Hello"の他、シングルクォーテーションもOK。
    • どちらも機能は全く同じ。
      • ちなみにGroovyは意味が異なる。
  • Number, Integerはそれぞれ逆コンパイルするとdouble, int。
    • オブジェクトではなくプリミティブ型で持っている。
  • Booleanはそのままboolean。これもプリミティブ型。
  • Durationは新しい基本型みたい。アニメーションで時間間隔を表現するのに使ったりするようだ。
    • JavaDoc(っていうのか?)はこちら

2008/12/08

JavaFX - Lesson 9: Writing Your Own Classes

The Customer Example - Customerクラスの例

特に言及する箇所無し。

 

Inheriting from Other Classes - 他のクラスから継承する
  • 抽象クラス、継承についてはJavaから見て何ら違和感無し。
  • オーバライド時はoverrideが必須。
    • そういえばJavaの@Overrideアノテーション、interfaceに対する動作がJava5とJava6で変わってた気がするが、JavaFXのoverrideはinterfaceに対してどういう動作になるのだろう?

JavaFX - Lesson 3: Using Objects

ソースコードの例はLesson.9を見ながらの方が分かりやすい。Lesson.3ではわざわざコンパイル済みclassファイルをダウンロードさせてサンプルを実行させるようになっている。

What is an Object? - オブジェクトとは
  • オブジェクトのフィールド初期化は street: "1 Main Street"; のようにコロンで区切る。
  • 上記行末のセミコロンはカンマでも良いし、省略もできる。
    • Lesson.9のサンプル中に脱字と思われるセミコロン省略が...でもコンパイルは通る。


Declaring an Object Literal - オブジェクトリテラルを宣言する
  • これは何のために宣言しているのだろう?

 

Object Literal Syntax - オブジェクトリテラルの構文
  • 最後のネストで初期化している例を見ていると、最初の def customer = Customer { のイコールもコロンでよさそうな気がしてくる…

 

Invoking Instance Functions - インスタンス関数を呼び出す
  • Lesson.9の例を見れば十分。特にJavaと変わり無し。

2008/12/07

JavaFX - Lesson 2: Writing Scripts

Declaring Script Variables - スクリプト変数の宣言
  • 変数を使用する前に宣言が必要。
    • Javaと同じ。
  • 宣言はdefあるいはvarで行う。
    • def numOne = 100;
    • var result;
  • defは宣言時に初期化も行う必要がある。代入した値は変更不可。
    • def numOne; とすると、"...must be initialized..."のエラー。
  • varは宣言のみ。
    • var result = 100; のように初期化も可能。
    • var result : Integer; のように、型だけを指定するのも可。
    • 値を代入した際に型が決まるように見えるが、実際には、コンパイル時に型は決まってしまっている。
    • 逆コンパイルしてみると、宣言しておいて、使用しない場合はObject型になっている。
Defining and Invoking Script Functions - スクリプト関数の定義と呼び出し
  • printlnで出力。
    • Groovyみたい。
  • "{numOne} / {numTwo} = {result}"みたいに文字列に直接変数の値を突っ込める。
    • GroovyのGStringみたい。
Passing Arguments to Script Functions - スクリプト関数に引数を渡す
  • functionで始める。
    • function add(argOne: Integer, argTwo: Integer) { ... }
  • 変数の方を指定するのはコロン。変数名 : 型
    • argOne: Integer など。
  • サンプルを見ると引数の型指定は必須かと思うが、そうではないみたい。試しにadd関数の、第1引数の型を取ってみても動いた。
    • function add(argOne, argTwo: Integer){ ... }
    • 逆コンパイルするとargOneはdouble型になっていた。どういう判断を行っている?
Returning Values from Script Functions - スクリプト関数から値を返す
  • 戻り値の型指定も、変数の型指定と同じように、後ろに付ける。
    • function add(argOne: Integer, argTwo: Integer) : Integer {
  • これも変数の指定と同様だが、戻り値の型を省略しても、returnがあればそこから戻り値の型を推測する模様。
    • function add(argOne: Integer, argTwo: Integer) { も可。
    • 戻り値が無いことを明示するために、 : Void を付けた方が良い、のかなぁ?
Accessing Command-Line Arguments - コマンドライン引数にアクセスする
  • runというスクリプト関数は特殊。
    • Javaのpublic static void main(String[] args)みたいなエントリポイントとして動作する。
    • runスクリプト関数を明示的に定義しない場合、内部では自動的に作られる。
      • Groovyみた(以下略)。

JavaFXを学習してみる

 

ハードディスクの空き容量が無くなったので新しいものを購入した。500GB位で手ごろな価格があるかと考えていたが、1.5TBで1.5万円程度のリテール品(5年保証)があったのでそれを購入。SeagateのST31500341ASというモデルだった。

テラバイトという単位であるとか、1GBあたり10円であるとか、色々と隔世の感がある。

一方、XBox360のハードディスクは1GB当たり100円程度。サイズだとか静音性だとかに違いはあるのだろうが...

閑話休題。JavaFXの書籍をamazonで検索してみたが、最も最近出版された書籍でも、バージョン0.7対応のもののようで、1.0の記法に準拠しているものは無いようだった。

なお、Web上のサンプルコードが0.7のものか1.0のものかは、こちら(会員登録必要)に記載されているように、コードの冒頭でjavafx.ui.*をimportしているかどうで大体判断できる。これをimportしているのは0.7なので、今のバージョンでは動かないということになる。

ということで、日本語の解説は期待できないことが分かった。仕方が無いので英語の1次情報で学ぶことにする。Sunが提供しているチュートリアルはこちら

Lesson11まであるが、概要は以下のようだ。(自分用メモ)

1 開発環境の整え方について書かれているようだが、NetBeansにプラグイン導入済みのためスキップ。
2 基本的なコードの書き方。取り敢えず流し読みする。
3 JavaFXでオブジェクトを使う方法のようだが、既にオブジェクト指向言語を何か知っているのであればみるべきところは無さそう。Lesson.11を見ればよいだろう。
4 データタイプ。これも大したことは無い。
5 シーケンス。配列やMapだろう。この辺りはどの言語でもユニークさが目立つが、JavaFXも少し独特なところがあるように見える。
6 演算子。1回見ておけば十分だろう。
7 式。Javaから見ると少し変わっているが、スクリプト系言語を何かひとつ知っていれば特段難しいことも無さそう。
8 データバインディングとトリガ。タイトル見ただけではよく分からない。この辺からちょっと面白くなりそう?
9 クラス。先に見ておこう。
10 パッケージ。JVMの上で動くのでそんなに予想外のことは無いだろう。
11 アクセス修飾子。目次を見る限り、privateが無いのと、public-read, public-initという2種の存在が気になる。

 

その他Tipsとして2点ほど。

その1。英語サイトは(日本語サイトを閲覧しているときより)文字のサイズを大きめにして見た方が頭に入って来やすい。

その2。NetBeansは、Jadclipseのような便利なプラグインが無さそう(nb-jode-jad-moduleというものがあるようだが、NB6.5でも使用できるのだろうか…?)なので、以下のbatファイルを用いてjadを動かせば、ディレクトリを再帰的に辿って逆コンパイルしてくれる。

for /R .. %%i in (*.class) do  (
    jad -8 -nonlb -ff -pi 10 -o -sjava -r -dsrc %%i
)

2008/12/06

JavaFXでFLVを再生してみた

JavaFX1.0がリリースされたそうなので、NetBeans上で動かしてみた。

JavaFXがサポートしている動画メディア形式はこちら

ニコニコ動画で用いられているFLVも対応しているようだったので、実際に試してみたところ、あっけなく再生できた。mp4フォーマットは不可で、QuickTimeでエンコードしたものも指定してみたがこちらも駄目のようだ。

ビデオプレイヤーのサンプルコードはこちらにある。これと同じものが、サンプルプロジェクトとしてNetBeansのプラグインインストールによって取得できた。

JavaのJMFでもこのコーデックを使用できるようにしてくれないものか…

なお、NetBeansのJavaFXサポートには文字エンコーディング関係のバグがあるようで、こちらの対応が必要である。NetBeansは文字エンコーディング周りが貧弱だな、と今回も感じた。

 

Python3.0も正式リリースされたようで、やりたいことが色々とある。

« 2008年11月 | トップページ | 2009年1月 »

other sites

  • follow us in feedly
  • github
  • stackoverflow

ソフトウェアエンジニアとして影響を受けた書籍

  • Christain Bauer: HIBERNATE イン アクション

    Christain Bauer: HIBERNATE イン アクション
    理論と実践が双方とも素晴らしい製品であるHibernate。本書はそのプロダクトを書名に冠していますが、Hibernateを使うつもりがなく、ORマッピングの解説書として読むにしても十分な良書です。Second EditionとしてJava Persistence With Hibernateという書籍も出版されていますが、残念ながら現在のところ 和訳はされていません。-インアクションは2.xの、Java Persistence-は3.1の頃のものなので、最新版とはちょっと違うところもあることに注意。 (★★★★★)

  • アンドリュー・S・タネンバウム: 分散システム 原理とパラダイム 第2版

    アンドリュー・S・タネンバウム: 分散システム 原理とパラダイム 第2版
    クライアント/サーバシステムを構築する上で必要となる知識が総論されてます。Web技術者も、フレームワーク部分を開発するのであれば必読。 (★★★★★)

  • Joel Spolsky∥著: ジョエル・オン・ソフトウェア

    Joel Spolsky∥著: ジョエル・オン・ソフトウェア
    前述の書籍「ソフトウエア開発プロフェッショナル」をより砕いたもの、という感じでしょうか。 前書きではプログラマでなくSE向けの本のように書かれているが、プログラマが読んでも面白い本であると思われます。 SEになった新人(あるいはそういう会社に入る/入りたての人)にとっては、これからどういったことが仕事を遂行していく上で起こりえるのか、どのように考えて行なっていけばいいのか決定する助けになると思います。 元は″Joel on Software″というブログの記事で、web上でも一部日本語で読めます。 http://japanese.joelonsoftware.com/ (★★★)

  • ドナルド・C・ゴース,ジェラルド・M・ワインバーグ: ライト、ついてますか

    ドナルド・C・ゴース,ジェラルド・M・ワインバーグ: ライト、ついてますか
    問題解決(一昔前のの流行語で言うところの『ソリューション』)能力は、システムエンジニアのスキルとして備えるべきもののうちのひとつです。しかし、これは難しい。学校で出されるテストと違い、唯一の、(問題提出者が想定している)解を求めるだけが「問題解決」では無いからです。そもそも、何が問題なのか、それは本当に問題なのか、それは本当に解決すべき問題なのか、その問題解決方法は正しいのか、などを解決しなければ、「その解は正しいのか」に辿りつくことができません。この本の最も良いところのひとつは、本があまり厚くないこと。すぐに読めるし、何回も読み返す気になるでしょう。 (★★★★★)

  • スティーブ・マコネル: ソフトウエア開発プロフェッショナル

    スティーブ・マコネル: ソフトウエア開発プロフェッショナル
    コードコンプリートで有名なスティーブマコネルの著書。新人SEに読んで欲しい。個人として業界の中でどうあるべきか、組織としてどうあるべきか、SEのプロ意識とは?SEの心構え概論、といったところでしょうか。また、業界における資格の重要性についても説かれています。この業界では資格が特に軽んじられる傾向がありますが、この傾向はどんな弊害をもたらすのか、将来的にこの業界は資格に対してどのような姿勢で臨んでいくべきなのか。日経BP社では(他の出版社もだが)最近、似たような類いのあまり面白くない書籍が乱出版されていますが、この本は別格だと思うので安心して購入して欲しいと思います。 (★★★★★)

無料ブログはココログ