• SAStrutsのHTML5対応 その2

    2013年08月01日 23時15分
    taglib-html5_1_2_9_1.zip

    旧バージョンからさらに属性を追加しています。
    HTML5の仕様を見つつ追加したので必要な物は大体フォローされているかと思います。

    これだけ属性が多いので
    書かれた属性をそのまま全部出力するようにした方が良いのではないかと
    思ったりもしましたがとりあえず素直に追加しました。

    旧バージョンではFormTagは付属せず元の物を使うようにしていたのですが
    formタグにも属性を追加するため新たに作成しています。

    それに伴いSAStrutsとの連携部分で不都合が起きたため
    SAStrutsのタグを改造した物も付けました。

    今更このバージョンのStrutsを使うということは
    ほぼSAStrutsだと思いますので利用頻度は高いと思います。
  • JSVCのログローテート

    2013年07月24日 21時30分
    JSVC利用時のログローテートについて色々調べたのでメモっておきます。
    なお、Linux上でのJSVC 1.0.15の内容です。


    rotatelogsで行けるか


    JSVCの起動スクリプトはこのような感じです。
    start   )
          "$JSVC" $JSVC_OPTS \
          -java-home "$JAVA_HOME" \
          -user $TOMCAT_USER \
          -pidfile "$CATALINA_PID" \
          -wait 10 \
          -outfile "$CATALINA_OUT" \
          -errfile "&1" \
          -classpath "$CLASSPATH" \
          "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
          -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
          -Dcatalina.base="$CATALINA_BASE" \
          -Dcatalina.home="$CATALINA_HOME" \
          -Djava.io.tmpdir="$CATALINA_TMP" \
          $CATALINA_MAIN
          exit $?
        ;;


    ログ出力を指定するオプションはoutfileerrfileの2つで
    名前の通り標準出力と標準エラー出力の出力先を指定します。

    最初はここにrotatelogsを指定してみました。
    -outfile "|/usr/local/apache2/bin/rotatelogs $CATALINA_OUT.%Y%m%d 86400 540" \

    しかし、そんなに便利には出来ていません。


    調べたところこれらのオプションに指定できる値は次の通りです。
    • &1 (標準出力)
    • &2 (標準エラー出力)
    • SYSLOG (SYSLOG)
    • ファイルパス

    ならば一旦全部標準出力に出してパイプに流してみる。
    start   )
          "$JSVC" $JSVC_OPTS \
          -java-home "$JAVA_HOME" \
          -user $TOMCAT_USER \
          -pidfile "$CATALINA_PID" \
          -wait 10 \
          -outfile "&1" \
          -errfile "&1" \
          -classpath "$CLASSPATH" \
          "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
          -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
          -Dcatalina.base="$CATALINA_BASE" \
          -Dcatalina.home="$CATALINA_HOME" \
          -Djava.io.tmpdir="$CATALINA_TMP" \
          $CATALINA_MAIN |/usr/local/apache2/bin/rotatelogs $CATALINA_OUT.%Y%m%d 86400 540
          exit $?
        ;;


    ダメ。JSVCがdaemon化されるためかうまく取れません。
    (試したところ親プロセスの出力がコンソールに出て子プロセスの出力がパイプに流れる。
    この辺りのdaemonの動作をちゃんと知ってればやり方があるのかも。)

    rotatelogsはちょっと無理そう。


    logrotate + SIGHUP


    ならば仕方ないlogrotateで行きます。

    簡単に行くならcopytruncateを指定して終わりなのですが、
    copyとtruncate処理が気持ち高コストな気がしたり、
    copyとtruncateの間のログが欠損する確率がわずかながら有る等
    若干もやっとするので使わなくて済むか調べます。


    copytruncateを指定しない場合にはログファイルの再オープンが必要になり、
    一般的にはSIGHUPを送ることで行われます。

    しかし、JSVCの場合は以下のような動作になっており、SIGHUPを送っても再オープンされません。
    1. 親プロセスでファイルをオープン
    2. 子プロセスを起動 (子プロセス側で再オープンしないので親プロセスと同じファイルを使用)
    3. SIGHUP
    4. 子プロセス再起動

    (まあ仮に子プロセス再起動時にファイルを再オープンしてくれたとしても
    プロセス再起動自体がちょっとまずいのでどの道却下なのですが・・・)


    logrotate + SIGUSR1


    ファイルオープン周りのソースをさらに読み進めたところ、SIGUSR1というのが実装されています。

    SIGUSR1を送ると次のような動作になります。
    1. 親プロセスでファイルをオープン
    2. 子プロセスを起動 (子プロセス側で再オープンしないので親プロセスと同じファイルを使用)
    3. SIGUSR1
    4. 子プロセスのファイルを再オープン

    子プロセスはファイルの再オープンのみを行ってくれるという望み通りの結果ですが、
    親プロセスは再オープンされず残ってしまいます。

    親プロセスのSIGUSR1にファイルの再オープン処理を追加すれば解決するような気もするのですが
    前述の通りdaemonの動作に明るくなく、危険な気がしたのでやめておきました。


    結局logrotate + copytruncate


    JSVCのログは量も少ないし欠損して困るデータも無いよねと自分に言い聞かせ
    最終的にlogrotate + copytruncateで行くことにしました。

    色々調べるのが大変だったわりには実に普通な結果です。

  • D言語用 DirectX モジュール version 1.1.2

    2013年06月07日 00時17分
    directx_1_1_2.zip

    • dmd2.063でコンパイルを確認
  • Razer Orbweaver レビュー

    2013年03月03日 16時08分
    製品仕様とか外観とかはさんざん出ているので実際に使った感じを書きます
    また、今までRazer Nostromoを使っていたのでそれとの比較として書きます

    Nostromoを持っていてOrbweaverの購入を検討されている方は参考ください


    Nostromoの一番の不満点だった硬いサムパッドが改善されています
    だいぶ柔らかくなったので押すのが楽です

    手のひらを受ける部分に凹凸が出来た上
    角度変更も出来るようになって手汗で濡れるのが改善されました
    私がNostromoを使っていると結構気になっていたのでうれしい

    キーが青軸になって気持ち軽くなっていますが特に良いとも悪いとも思いません
    カチカチという音が出るようになったのでそれが気になる人は困るかもしれません

    最上段に5キー増えましたが、私の手だと届くか届かないかなので微妙です
    手が小さい人はNostromoに上一行増えたのと同じくらいの距離なので試してみてください

    ホイールが無くなりましたが元々使って無かったので特に困りませんでした

    サイズ変更機能については私の手が小さいため
    サムパッドをちょっと離したくらいで他はいじりませんでした
    というか手のひらとキーの間をもっと縮められるようにして欲しかった
    そうすれば全キーに指が届いたのに


    あとは大体Nostromoと一緒です
    自分で使うならサムパッド分Orbweaver買いますが
    お値段が違いすぎるので他人に勧めるならNostromoかなと思います
  • 続 D言語とWindows 64bit

    2013年02月24日 02時11分
    実際64bitアプリは作れるのか?と思ったので作ってみました。
    毎度おなじみのフルHDテトリス

    ソースなど

    WindowsとDirectXのモジュールにいくらか64bit用の定義を足す必要がありましたが、
    特別の苦労はなく普通に動きました


    普通に動いているのでとても不安です


    大容量のメモリを使うわけでなければ64bit用のアプリを作る理由は特に無いのですが
    VCのリンカが使えるというのは何かの時に有利になるかもしれません。