[JavaFX] HelloWorld

テーマ:
今日の本題はこっちなんですお客さん。

ちょっとねーやっぱねーデスクトップアプリつくりたいじゃないですか。
車輪の再発明しまくりたいじゃないですか。
でも自分Javaちょっとかじったくらいじゃないですか。
Swingあるじゃないってあれめんどくさいじゃないですか。ちょっと触っただけだけど。
でも今はJavaFXっていうさらに名前がイケイケな感じのするナイスガイがいるときいてやってみた。


んであせった。
JavaFX、JavaだけどJavaじゃねえww
正式にはJavaFX Scriptなのね。。。

なんかヴァージョンによってインタプリタだったりコンパイルしてたりしててまだあれな感じ且つJava7で正式搭載かよっ!っていう。
そのへんまだ把握しきれてないんだけどイメージとしては

  • JavaFX Scriptっていう言語で記述する

  • 実行時はnet.java.javafx.FXShellを実行

  • FXShellのmainでJavaFX Scriptを解釈してSwingで動かす


みたいな感じか。

とりあえずEclipseで動かしてみる。
http://download.java.net/general/openjfx/plugins/eclipse/site.xml
ここをupdate siteに登録してプラグインを入れればおk。

ちなみにIDE使わない場合は直接CUIで実行できる。
FXShellの引数に実行したいクラスを指定するみたい。fxファイルだけど。
イメージはantとかと近いかも。

Javaとおんなじようにパッケージ切って、プラグインが入ってれば新規作成でJavaFXファイルを作れる。.fxファイル。つーかまだ調べてないけどFXってなんなんだ。

import javafx.ui.*;

Frame {
title: "Hello World JavaFX"
width: 200
height: 50
content: Label {
text: "Hello World"
}
visible: true
}


ちなみに普通のjavaプロジェクトで問題ない。
run configure でargmentにfxファイルを指定するんだけど、これ完全限定名じゃないと駄目っぽい。
jp/ameblo/adorechic/HelloWorld みたいな。

実行するとこんな感じ。
$Happy Tuning
わっしょーい!

とりあえずコンソール出力はこんなかんじ。
compile thread: Thread[AWT-EventQueue-0,6,main]
compile 2.984
init: 1.549

つーかこれだけでもっさり感あるんだが。大丈夫かFX。

それと書き方やっぱりJavaじゃねえな。でもswingっぽさもちょっと出している。どっちなんだFX。

あと調べたらnetbeansのほうがいいらしいよFX!
ScalaはIntelliJIDEAだし。ちょっとがんばれよEclipse。自分でfixさせろって話か。
AD
朝焼けが好きなひとはきっと何か物を作るのが好きなひとだと思う。

何を思ったかよくわからないがなんとなく思い立ってやってみた。

<script type="text/javascript">
<!--
rex = RegExp("([^\(]+)[^0-9]+([0-9]+)");
var list = document.getElementById("theme_list").getElementsByTagName("li");
var hrefList = new Array(list.length);
var themeList = new Array(list.length);
var sizeList = new Array(list.length);
var totalSize = 0;
for(var i = 0, len = list.length; i < len; i++){
var aTag = list[i].getElementsByTagName("a")[0];
hrefList[i] = aTag.href;

var val = aTag.innerHTML;
val.match(rex);
themeList[i] = RegExp.$1;
var size = parseInt(RegExp.$2);
sizeList[i] = size;
totalSize += size;
}
var themeCloud = "";
for(var i = 0, len = list.length; i < len; i++){
var size = Math.ceil(15 * sizeList[i] / totalSize);
if(size > 4) size = 4;
themeCloud += '<a href="' + hrefList[i] + '" style="font-size: ' + size + 'em;">' + themeList[i] +'</a>'
}
document.getElementById("theme_list").innerHTML = themeCloud;
// -->
</script>


このソースをフリープラグインにいれて、サイドバーの配置でテーマモジュールより下に配置すれば動くと思うけど。たぶん。MacFFでしか確認してないけどな!

てかJS全然書かないから作法とかわからん。なんともソースが小汚くて書いててイラっとした。
誰か教えてほしい。あとこうすれば小粋な見た目になれるよ!ってのも。
AD

no title

テーマ:

久々に横ノリ系。
たまにはいいね。

Nobody’s Coming to Save You/Sunshine Underground


少し考えていたのだけれど、XSS対策とかでよく言われるホワイトリスト対策ってのはどうやるんだろうね。ググるとXSS対策はホワイトリストチェック+エスケープって異口同音にいわれているけども。

例えば入力内容として数値しか許可しないような入力フォームがあったとしよう。
それなら簡単なんだろうか?[0-9]+みたいな正規表現でチェックするとか?
でもよくあるnull文字とか改行コードとか入ったらどうなるんだろう、とか。
ホワイトリストが明確な場合でも、入力がそれに一致しているかどうかって判断は結構ややこしいと思うんだよね。

ならもう自由入力なとことかどうすんだろう。
てかまずその入力をhtmlとしてちゃんと解釈するところから?
数値文字参照とか。
って考えると、そもそもブラウザはどういう風にhtmlをパースしてレンダリングしているんだろう。
なんか果てしない話になってきたがでも気になる。
そのうちソースを読みたい。
AD