というわけで、まさに日本時間で昨日になりますが WordPress 2.9 がリリースされました。 めでたい。 いろいろ新機能もあるようで使うのが楽しみです
さてさて、昔はつくっていたプラグインがバージョンアップでよく動かなくなっていたりしていたのでベータでチェックとかしていたのですが、最近わりと動くのでさぼってたら、ふと wp-kyodeki がおかしくなっているよう、、その動作を見てコアにとある変化があったのに気がつくぼく・・・。(←遅い
というわけでとりあえず wp-kyodeki。

このプラグインはアクセスカウンタみたいなもんですが、日付をまたぐとカウントがクリアされる仕様になっております。(もともとアクセスデータを蓄積しないようにつくったプラグインでした)
夜行性のぼくは 2.9 にアップデートされた我がサイトのサイドバーをみて、日付をまたいだのにカウントがクリアされていないことに気がついたのです。。
というわけで不具合がありましたので、 JSeries にリリースしました。お使いの方は更新ください。
WordPress Plugins-JSeries » wp-kyodeki (本日人気の記事表示ウィジェット)
タイムゾーンでの日付変更クリアとならない不具合が修正されます。
さて、なんでだろうという話ですが、コアの wp-settings.php に以下のコードが追加されていました。
if ( function_exists('date_default_timezone_set') )
date_default_timezone_set('UTC');
PHP の date 関数の戻り値などに影響する、timezone の設定でこれが標準時間になるようになっています。 というわけで、これがなかった今までは日本時間が戻ってきていたのですが、UTC になったので標準時間がもどってくるようになった、ということでした。
wp-kyodeki の不具合です。 冷静に考えたら海外サーバだと WordPress のタイムゾーンを日本に設定していてもあちらの時間で更新されていましたね。すいません(笑)
で、そういやコアがどうなっているのかあんまり考えたことなかったなぁとちらほらソースをみていると、結構 date を生でつかっているところがあるようです。
まぁ、いまも日本タイムゾーン設定で海外サーバ使われている方も多くて問題になっていないようなのでコアは大丈夫かと思いますが、プラグインは考慮漏れているものがあるかもしれない(あんまりないと思いますが)ので、万が一 2.9 の日付系で問題があったら疑ってみてください。






















マルチプラットフォームの GUI アプリケーション
たまぁになんですが、自作のちょっとしたアプリで GUI を使いたいときがあります。 ほいでもって、ぼくは家で大抵は Linux を使っているのですが、せっかくつくったアプリなのでたまに使う Windows でも使いたい、、。 ということで、マルチプラットフォームで動く GUI アプリ。
Mono + GTK、Mono + Windows.Forms、 Java + Swing、 Java + GTK(あるのかな?)、などなど思いつきますが、今回は Java + SWT をやってみました。
GTK は各種プラットフォームで動作する GUI ツールキットですが、自前で描画をしているので特に Linux 以外で動かすとやっぱりほんのすこーし、違う。 まぁ特別問題があるわけではないのですが、Pidgin や GIMP を Windows などで動作させたことがある方ならなんとなく分かるのではないでしょうか。
Swing は逆に Windows で動かす分にはそれなりなのですが、Linux で動かすとフォント系が厳しい。。 Swing は TrueType も自前で描画するので特にアンチエイリアスがある環境ではなにか違う感じを醸し出します(笑) (フォントレンダラがあんまりよくないのかな)
てなわけで、やっぱネイティブだよねってことで Java + SWT です。
ネイティブライブラリですが、Windows、Linux、Mac OS X などなどいろんなプラットフォームに移植されていますので、実行ファイルこそ変われど同じアプリケーション(ソース)が動作します。 Eclipse などの巨大なアプリケーションが SWT で動作していますので、ライブラリ自体もかなり枯れていると思われます。
で、SWT にかぶる形で GUI のフレームワークとして JFace というのがあって今回はこれも使ってみました。
とりあえず、SWT と JFace のライブラリを持ってきます。 JFace は Eclipse の plugins に入っているものをほげってきました。(外部 Jar 追加で参照してもいいのですが、なんとなくコピーして自分のおなかに)
こんな感じにライブラリをいれておきます。 これは Linux の場合。
詳しくはこちらが参照になります。
ほいでもってソースをかきます。
あちこちのサイト様を参照しました。 JFace は ApplicationWindow から extends して開始です。 (未来の自分用へのメモ)
JFaceSample.java
public JFaceSample() {super(null);protected Control createContents(Composite parent) {// ウインドウタイトル設定parent.getShell().setText("JFaceSample");// ウインドウサイズ設定// 親の下にさらに Composite をつくるComposite child = new Composite(parent, SWT.NONE);// レイアウトマネージャ設定child.setLayout(new GridLayout());// テーブル作成TableViewer table = new TableViewer(child);table.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));// テーブルにプロバイダ設定table.setContentProvider(new FileTableContentProvider());return parent;protected MenuManager createMenuManager() {// 親メニュー作成MenuManager bar = new MenuManager();// Action クラスを継承したインスタンスを渡す// 追加メニューを返却return bar;// ApplicationWindow インスタンス生成JFaceSample window = new JFaceSample();// メニューバー追加(createMenuManagerメソッド が呼ばれる)// ウインドウクローズまでイベントループブロック指定window.setBlockOnOpen(true);// イベントループ開始(終わるまでここでブロック)// イベントループ終わったらリソース解放ActionExit.java
class ActionExit extends Action {public ActionExit(ApplicationWindow win) {// ApplicationWindow もらっておくsetText("終了(&X)@Ctrl+W");// Action の処理を run にかく// ApplicationWindow 呼んじゃえFileTableContentProvider.java
class FileTableContentProvider implements IStructuredContentProvider {public Object[] getElements(Object element) {で、まずは Linux。 実行~
うむうむ。 Linux SWT の GTK 版なのであたりまえですが、GTK で描画されています。 Linux の場合、GTK のテーマでみんないろいろ画面をかえているので、何にもしなくても追随してくれるのはやっぱりいいですね。
同様に Windows でも Windows 用の SWT ライブラリをあつめて、同じアプリケーションのソースを実行!
エアローってことで、 Windows 7 で動かしたの図ですが同じソースでネイティブ描画してくれております。 よい、よい。
JFace は、普通の GUI フレームワークとちょこっと趣向が違うところがあったりして面白いですね。 スレッドの中からの GUI 描画方法とかまだ全然分かっていない部分もあって本気で使いこなすには時間がかかりそうですが、小物ならなんとかいけそうです。
ちなみにできたアプリの配布ですが、小さいアプリであれば Eclipse のエクスポートウイザードの実行形式 jar で ant 書き出してもらうのが楽そうです。
で、できた jar 玉を JRE が入っていれば通常ダブルクリックで実行できます。
gjc で JRE なしのまじネイティブ (.exe 版とか)もできるのかなぁ。 Eclipse の gjc 版はあるのでできると思いますが、ちょっとそこまでは調べていません。
swt 、JFace とも Eclipse Public License 系のライセンスなのでこういった配布形態も問題ないとおもいますが、やる方がいたら各自よくご確認ください。 ぼくは配布するまではなさそうなので、、(笑)
てなわけで、画面系はやっぱりネイティブがいいよね、という方は試してみるといいかもしれません。