プログラマメモ2 - programmer no memo2

これからはAPP(Atom Publishing Protocol)に注目!? 2007/08/04

これからWebAPIを考えているなら、APP(Atom Publishing Protocol)を視野に入れて設計したほうがよい?

この先、Web API を設計する人は、まず APP が利用できないか検討しましょう。 APP を採用すれば自然と REST スタイルを採用することになります。これまで悩みがちだった Web API の設計が、かなり楽になると思います。 Web API を設計する人は、オレオレXMLを設計する前に、Atom/APP をベースにしたらどうなるか、を考えて見ましょう。きっと Atom/APP は良い選択肢になってくれるはずです。
yohei-y:weblog: APP の標準化作業がほぼ終了



参考:

blogger bマークのボタンと被ブックマーク数を表示するための準備 2007/08/04

シナリオ:

bloggerではてなブックマーク(はてブ)のbマークボタンと、被ブックマーク数を表示したい。



コードは下記のものを上記のリンクを参考にテンプレートに入れてみました。

bマークボタン
<!-- HATEBU -->
<a expr:href='"http://b.hatena.ne.jp/add?mode=confirm&amp;url=" + data:post.url + "&amp;title=" + data:post.title'>
<img alt='このエントリーを含むはてなブックマーク' height='12' src='http://deiji.jp/images/entry.gif' style='padding:0 0 0 0; margin: 0 0 0 0; border: none;vertical-align: bottom;' width='16'/>
<!-- HATEBU END -->


はてブの被ブックマーク数
<!-- HATEBU -->
<a expr:href='"http://b.hatena.ne.jp/entry/" + data:post.url' target='_blank' title='このエントリーを含むはてなブックマークを表示'>
<span class='hatena-counter' expr:style='"background-repeat: no-repeat; background-attachment: scroll; background-position: left center; margin:0pt 0pt 0pt 0pt; padding: 15px; background-image: url(http://b.hatena.ne.jp/entry/image/" + data:post.url + ")"'/> </a>
<!-- HATEBU END -->

eclipseでant taskのftp使用する - 別jarが必要 2007/08/04

eclipseでant taskのftp使用する際に、
commonsのnetが必要になったのでメモ。


それでeclipseのpreferencesのantでライブラリへのパスを設定。
Classpath - Ant Home Entries
にAdd External Jarsで設定しました。

他にいい方法があるかもしれません。

ちなみにftp taskは下記のような感じで記述。
<ftp server="myserver address" port="21" remotedir="/home/user/" userid="myuserid" password="mypassword" binary="yes">
<fileset dir="${build.dir}/">
<include name="*.jar" />
</fileset>
<fileset dir="${basedir}/jnlp/">
<include name="*.jnlp" />
</fileset>
</ftp>


というかこのtipsは以前に似たようなものを書いた...



似たようなことを繰り返しているなぁOrz...

java イルージョン webstartで作成してみました。- ちょっと怖い。 2007/08/02



Christopher Walken Illusion - Mighty Optical Illusions
上記のサイトでおもしろいアニメーションGIFがありました。
このアニメーションGIFは4枚のGIFで構成されていまして、おもしろい効果をだしています。
そこで、プログラムで表現できないかなと考えました、



ベースになる、宇宙の写真はここから。

HubbleSite - NewsCenter - Hubble Photographs Grand Design Spiral Galaxy M81 (05/28/2007) - Release Images


どうやって表現しますかといいますと、
まず、上記の宇宙の写真をグレースケールに変換します。表示します(a-1)。そして動いた感じをだすために、少しずらして表示します(a-2)。そしてその白黒写真を反転(invert)します(b-1)。そしてこの反転した画像をずらして表示します(b-2)。
この四枚を繰り返して表示して効果を真似てみました。


作成したアプリケーションは下記のような感じです。java webstartにしてみました。


起動は下記のボタンから。


起動時に画像処理を行っているのでちょっと起動にもたつきがありますが...
画像処理は、

Jerry's Java Image Processing Pages

を使用しています。いろいろフィルターが用意されいるので使いやすいです。

コードは下記の感じです。


BufferedImage image = ImageIO.read(ImagePanel.class.getResource("g.jpg"));
GrayscaleFilter filter = new GrayscaleFilter();
dst = filter.filter(image, null);
invert = new InvertFilter().filter(dst, null);
BufferedImage image2 = ImageIO.read(ImagePanel.class.getResource("man.png"));
man = filter.filter(image2, null);
man_invert = new InvertFilter().filter(man, null);

java 非公式なVE eclipseプラグインが更新されていました。- 08/02 Choose Beanが使えない。 2007/08/02

Erik Hechtさんが作成された、非公式なVE eclipseプラグインにバグがあったようです。Erik Hechtさんも気がついているようです、いそがしいので、あと2週間ぐらい更新がないよです。

Petr Podzimekさんという方が、

I downloaded VE for Elipse 3.3 from Erik Hecht and "Choose Bean" button doesnt work as before. After pressing I can place my visual classes into object being edited. Is possible to make it working again?

という投稿をしていました。


そういえば、たしかにchoose beanが動かなかった。。。

関連:

java window - 隠れたwindowを表にだす方法として使えるか? その2 2007/08/01

同僚からのいただきもののwindowsのコードです。


SetWindowToTop()
{
HWND hWindow;

hWindow = FindWindow(NULL, "Window Title");
if(hWindow == NULL)
{
// error can not find window
}

WINDOWPLACEMENT wp;

// WINDOWPLACEMENT 構造体をゼロクリア
memset(&wp, 0, sizeof(wp));

// GetWindowPlacement 関数を呼ぶための前準備
// 呼び出すときは構造体サイズをあらかじめ設定する必要がある
wp.length = sizeof(wp);

// 対象ウインドウの現在の表示サイズ他、WINDOWPLACEMENT 構造体で取得
// できるだけの情報を取得
GetWindowPlacement(hWindow, &wp);

// 事前に、前面表示指示を出しておく
SetWindowPos(hWindow, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);

// 表示用コマンドをチョイス
// ・通常表示
// ・アクティブ化
// ・最小化されていた場合には元に戻すコマンドも送信
wp.showCmd = SW_SHOWNORMAL;

// WindowPlacement で設定したウインドウ状態を適用
SetWindowPlacement(hWindow, &wp);
}


これをswtを使用してjavaにもっていきます。


public static void SetWindowToTop(String windowTitle) {
// HWND hWindow;

final int hWindow = OS.FindWindow(null, new TCHAR(OS.CP_INSTALLED,
windowTitle, true));

if (hWindow == 0) {
System.out.println("failed find window:[" + hWindow + "]");
return;
}

WINDOWPLACEMENT wp = new WINDOWPLACEMENT();

// GetWindowPlacement 関数を呼ぶための前準備
// 呼び出すときは構造体サイズをあらかじめ設定する必要がある
// wp.length = sizeof(wp);

wp.length = OS.WINDOWPLACEMENT_sizeof();

// 対象ウインドウの現在の表示サイズ他、WINDOWPLACEMENT 構造体で取得
// できるだけの情報を取得
OS.GetWindowPlacement(hWindow, wp);

// 事前に、前面表示指示を出しておく
// SetWindowPos(hWindow, HWND_TOPMOST, 0, 0, 0, 0, OS.SWP_NOACTIVATE |
// OS.SWP_NOMOVE | OS.SWP_NOSIZE | OS.SWP_SHOWWINDOW);

OS.SetWindowPos(hWindow, OS.HWND_TOPMOST, 0, 0, 0, 0, OS.SWP_NOACTIVATE
| OS.SWP_NOMOVE | OS.SWP_NOSIZE);
// 表示用コマンドをチョイス
// ・通常表示
// ・アクティブ化
// ・最小化されていた場合には元に戻すコマンドも送信
// wp.showCmd = OS.SW_SHOWNORMAL;

// WindowPlacement で設定したウインドウ状態を適用
OS.SetWindowPlacement(hWindow, wp);
}


一応動きました。現時点で
OS.SWP_SHOWWINDOW
OS.SW_SHOWNORMAL
というのがなかったです。

最新のswtだったら入っているかもしれないですが、よくわからないです。

ボタンを作成するツールを適当に作成してみました。 2007/07/31

ボタンを作成するツールを適当に作成してみました。

のようなボタンを作成できます。

上記のボタンでweb startが起動します。
証明書は一応オレオレ証明書です。



のようなツールが起動するはずです(2007-08-01現在)。
完成度は低いです。

もとネタは、Swing Hacks本のリキッドボタンです。
参考:
プログラマの本棚: Swing Hacks - 原書を買ったらその後すぐに翻訳がでてました。