2010年8月17日火曜日

不謹慎だがおもしろすぎると言わずにはいられないJB

今回ばかりは「Jail Break」に感謝』という控えめなタイトルに映るこの記事によると、iPhoneをJBするのにPDFのセキュリティホールを利用しているという。しかもご丁寧にインストールスライダをつけるというシニカルさ。 こぼれる冷笑を扇子で仰ぐ薄目顔が目に浮かぶ。

JBは特に必要ないのでやらないだけだが、誰か真剣にこの世からセキュリティホールを完全に消し去ってくれないものだろうか。

Mosaic 8 execよりWebDriverを使ってみたいが。

ダウンロードしたファイルが良くなかったのが、jarファイルの追加の仕方が悪かったのか、コンパイルできない。これも置いておこう。WebDriver自体はとても面白そうなので、いつかソースコードも見てみたい。あとはWebkit。さすがに敷居が高い。

2010年8月16日月曜日

Mosaic 7 PhotoPullParser.fxの[赤!]マーク

プロジェクトを開き直したら復活してしまったため、正確には分からないが、「ファイルの解析中にエラーが発生しました」とか何とかいうエラーがツールチップで表示されていたと思う。

単にプロジェクトを開き直しただけでなく、オリジナルのプロジェクトを開いて閉じて、変更を加えたプロジェクトを開いたらエラーが消えていた次第。

ファイル名の頭のFXアイコンに赤!がつく以外は通常のコンパイルエラーのように、どこかの行に赤!がつく訳でもなく、何がエラーかわからない状態。

前も再構築(プロジェクトを削除して構築)をやったら回復したエラーがあったが、今回は利かなかった。また、PhotoPullParser.fxは編集していない。やったとすれば、デバッグでブレークポイントを張り、onEventのeventの内容を[デバッグ]-[式を評価]で見たのと、コールスタックが見たかったが見れなかったので、冗談で[デバッグ]-[スタック]-[呼び出し元を現在に設定]をやってみたぐらい。その後実行を継続し、(mosaic上の検索窓で)"sun micro"や"oracle"を検索した。oracleで(検索したとき)androidのロゴのロボットの向かって右目に目玉焼きが乗ったイラストがあったがあれはどういう意味だろう。そんなところか。ただその前から赤!がついていたような気がするここまで言っておいて何だが。

目玉焼きのイラストが気になるので、クリックしたらflickrのページが表示されるようにしたいがさてどうしたものか。できればJavaFX上で表示できれば良いが、そんな凄い機能が内蔵されているとは望み薄なので、ブラウザを起動でも好しとしよう。

2010年8月15日日曜日

Mosaic 6 defはoverrideできない

変数のオーバライドで、varは出来て、defは出来ない。なぜだろう?といっても出来ないものは出来ないのだが。

例えばプリセット感覚でLinearGradientの値を設定したものをそのままクラスとして定義できると自分の感覚に合っていて良いのだが。繰り返し数の多い少ないではなく、感覚の問題。他人が作ったグラデーションをただ黙って使いたい。あるいは自分の好きなグラデーションを有無を言わせず使わせたい。

で、いろいろやってみると、自分で定義したクラスの中で宣言した変数にしろ関数(でLinearGradientを返す)にしろ、それをRectangleのfillにセットすると、そのRectangle自体がずれるというか表示されない(完全に消えたのか、ずれたのかは不明)。

だがMain.fxに直に書いた変数にLinearGradientをセットし、それをfillに代入する分には問題ない。
 
def crecendo = LinearGradient {
startX: 0.0, startY: 0.0, endX: 0.0, endY: 1.0
proportional: true
stops: [
Stop { offset: 0.0 color: Color.GRAY },
Stop { offset: 0.5 color: Color.BLACK }
]
}
var bottomRect : Rectangle = Rectangle {
y: bind (height - bottomRect.height)
// make the bottom rect slightly bigger to fit in TV 'safe area'
height: bind (tagTextBox.boundsInLocal.height + 35)
width: bind width
fill:crecendo
/*
fill: LinearGradient {
startX: 0.0, startY: 0.0, endX: 0.0, endY: 1.0
proportional: true
stops: [
Stop { offset: 0.0 color: Color.GRAY },
Stop { offset: 0.5 color: Color.BLACK }
]
}
*/
}

LinearGradientのproportionalがtrue(相対)だから、変数だと参照時に参照するRectangleに合わせるからかと思ったが、同じ変数を別なRectangleにセットしても問題ないので、そういうわけでもなさそう。

var tempRect : Rectangle = Rectangle {
y: bind (height - bottomRect.height - 50)
height: 35
width: bind width
fill:crecendo
}

bottomRectとtempRectは両方ともちゃんと表示される。


まあよくわからないが、これ以上追求してもしょうがないので、現状はそういうものだということで好しとする。そもそもfill:LinearGradient {...}って書くならfill:SomeDesignersGrandientって書けてもいいじゃないか的な発想でしかないので。

Mosaic 5 Main.fx

Main.width

このMainとは何だ? Main.fxのMainだろうか。確かにMainにpublic var widthがある。きっとこれだろう。だが、Main.widthという構文がいまいち分からない。Mainはクラスか。Main.classがあるしたぶんそうだろう。だがこの仕様がどこかに説明されてないだろうか。SDCのJavaFXチュートリアルにも"書き方"は書いてある(one.someMessage)。

「javafx ファイル単位」で検索。

偶然以前注目していたTerra's Weblogが。JacaFXでSCADA UIが面白い。実務でBACNet対応などの話があるが、JavaFXを実戦配備は品質的に今は無理。成熟してVBの座を奪ってほしい。

Terra's WeblogからJavaFX in Styleに飛んで、漠然とコードを見ていると、LinearGradientが出てくる。Mosaicで見た気がしたのでソースを検索すると、topRectとbottomRectで使っている。http://weblogs.java.net/blog/javakiddy/archive/2008/12/javafx_in_style.htmlでLinearGradientを
alcで引くと"直線的に傾いた"。斜線か。だがAPIリファレンスを見ると、色の話。線形グラデーションか。「線形グラデーション」でググると、HTML5で線形グラデーションを指定するメソッドにcreateLinearGradientが。なぜ日本語だとグラデーションになるのか。

Main.classから「throws」を検索。意味は分かったが、例外クラスリストをシグネチャの次に並べて書くというのは何かなあ、変なのって感じ。

それにしてもリンクを張るのが大変。自動的に張ってくれないだろうか。

2010年8月14日土曜日

Mosaic 4 PullParser

PhotoPullParserはPullParserを使っている。PullParserはどこか日本語の詳しい記事を見た記憶があったが、見つからない。何となく覚えているのは、パースの要所要所でコールバックされることだが、Pullparserじゃない方法も並記されていたはず。それが気になってしょうがない。

こういうときって不思議と探すと見つからないんだよなあ。はてぶしたはずだけど、見つからない。ブックマークしたサイトをググってほしいのだが、方法が分からない。Googleで検索対象に複数URLを指定しても今ひとつ反応が良くない。

とりあえず本当にあったのかどうかも分からない情報のことは忘れてくれ。

PhotoPullParserも本当分かりやすい。

topRectのonMouseDraggedでstageのx,yをいじっている。これは何だろう?と思い、今日はとっても体が冷房病的にきついので、ブレークを張ってみることにした。実は机上で追えないのをすごく嫌う性質(たち)なので、自分的には御法度である。また、去年かもっと前か、ブレークが全然利かなかった不信感もあり、ほとんど投げやりにだったが、大変失礼しました。ちゃんとブレークするじゃん! 一生懸命写真をドラッグしてたが、何の事はない、Mosaicの全体ウィンドウをドラッグしたら掛かった。topRectって書いてあるじゃない。ソースを追うのに定義/参照でやるのが長年染み付いてるせいと冷房病のせいで、なかなかリズムに乗れない。

じゃ写真はどこでやってるのか。

とみていくと、いままで見た事もないThunbImage.fxというファイルが出現した...わけではなく、最初からもちろんそこにあったのだが、何で気づかなかったかなあ。完全に凍ってます。恐るべし冷房力。

これもざーっとみたところ、とっても分かりやすくて、ただzoomTimeline.keyFramesがrotate()の中で設定されているのが何でかなあというぐらいか? ぐらいか?とは大きく出たが、zoomTimelineを見ていくと全くついていけないのでこの先はまた後で。ちょっと今日中に戻って来れるかどうかは微妙だなあ。

Mosaic 3 関数ポインタ

PhotoPullParserクラスに好例があった。
// Completion callback that also delivers parsed photo metadata
public var onDone: function(data : Photo[]) = null;

こうしてみるとほら、Cと変わらない。

Cと言えば、関数ポインタに始まって関数ポインタに終わると言っても過言ではない・・・とまでは言えないが、通信制御系システムではよく見る光景だ。

ここにも追記した通り、馴れ、馴染みの問題、如何に体に染み込むか、違和感を感じないか、が大きい。