状況。

 終わってるのと終わってないの。

 こんなとこかな。「源泉徴収票」が必要って話もあるけど、これは去年末にもらってるよね……あとで掃除して探そう。

胸囲を測った人一覧。

 3周目に一枚絵を集めるのに恐らく必要と思いメモを取っておきました。

  • ◎:対象の5人。*1
  • ○:対象以外だけど胸囲が測れてCGが出た。
  • △:対象以外で胸囲も測れたけどCGが出なかった。
  • ?:接触したけど胸囲を測るイベントが発生しなかった。
  • まだ:時間がなくて接触できなかった。*2

 とゆーわけで一覧。

 な、なぜさよとしずな先生にはCGがないんだ……特にしずな先生……。

*1:……だったっけ? 実はよく読んでなくてわからなかった(汗)。ぐぐっても全然出てこないところがすごい。みんな全然気にしてないらしい(爆)。

*2:つまりこの人達の胸囲を3周目に測るってことで。

*3:当然と言えば当然、残念と言えば残念。

*4:チア三人組のイベントが平行発生してたから?

*5:チア三人組のイベントが平行発生してたから?

*6:寮で寝てたから無理かも?

Yahoo!ブログ始めました。

 Yahoo!ブログ始めました。

 とりあえず予備として。あと投票機能に興味があって。基本的に向こうに頻繁に書き込むことはないんでチェックする必要はないですよー。*1
 ちなみに投票機能のテストとして「KAB-studioで一番力を入れて欲しいのは?」とゆーのを用意したので気が向いたら投票してみてー。

*1:向こうに書き込んだらこっちからリンク張ります(爆)。

第4話 機械の魔法、機械の天使 (22) [△ ▽]

 河原に装甲多脚を移動させた二人は、コクピットのモニターで最終調整をする。
「うん、これで大丈夫そうです」
 先ほどと同じように手を動かして確認する。
「じゃ、唱えてみる。どうする、乗ってる? その方が安全だと思うけど」
「いえ、外で待ってます」
「わかった」
 ジャージはスイッチを押してパイロットシートを外から閉じ、自分はよじ登ってガナーシートへと座る。
「じゃ、下がって」
「はい」
 閉じていくハッチの間から離れていくシーバリウが見える。ジャージのゴーグルからは、ハッチが閉じてもその姿がはっきりと表示される。
「始めます」
『はい』
 220730.mdl をダブルクリックし、ウィンドウが開いていく。
「魔法実行シークェンス開始。環境解析開始、結果をファイル 220730.log に保存。パラメーター設定、読み込み 220730.log 」
 いつもと同じシークェンス、それでも間違いがないか緊張する。
「純粋魔法組立開始、軌道投影図確認」
 シーバリウが何度も繰り返していた手の動き、その動きと同じ軌跡が空間に投影される。
『あ、ジャージさん』
「?」
エーテルは散布しなくてもいいと思います。借威魔法にしか関係しないものですから』
「あ……」
 普段は両方同時に唱えていたから気付かなかった……。
「うん、わかった。エルメティアナス散布ステップはスキップ。ステッキを開始位置へ移動。ろ……っと、録音ステップもスキップ、コロナの水噴出」
 そこまで言い切ってから、一度深呼吸をして、落ち着かせる。
「コロナの火、着火!」
 装甲多脚を包むように軌跡にがきらめく。
 ごくり、と唾を飲んでから。
ステッキの先が『婀*姆皓↓⊆禝』光を追って『撹\口絹秘《』軌跡を描く『)笙≠鋲巍瞿×苒』【ゴナツ神の威を借り治癒力増強の力を貸し与え給え】
 背筋が、凍った。
「!!?」
 急に走った悪寒に、まわりを見回す。
 だが、何も起こっていない。真っ先に探したシーバリウも、外で満面の笑みを浮かべている。
「……魔法、成功したの?」
『多分成功したと思います』

リダイレクトでパラーメーターを追加する。

 簡単にできると思ったら、なんか難しいらしい……。
 とりあえずリダイレクトで実現できるっぽい。

package t_struts01;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.RedirectingActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.DynaValidatorForm;

/**
*	リダイレクトでパラメーターを追加します。
*/
public class Action10b extends Action 
{
    public ActionForward execute
        ( ActionMapping mapping
        , ActionForm form
        , HttpServletRequest request
        , HttpServletResponse response
        )
        throws java.io.IOException, javax.servlet.ServletException
    {
        // パラメーターを取り出します。
        DynaValidatorForm dynaForm = (DynaValidatorForm)form;

        String data2 = (String)dynaForm.get( "data2" );
        if    (
            ( data2 == null ) || 
            ( data2.equals( "" ) ) 
            )
        {
            System.out.println( "data2:" + data2 );
            RedirectingActionForward redirect 
                = new RedirectingActionForward
                    ( "Action10b.do?data2=data2desu" );
            return redirect;
        }

        // else
        System.out.println( "data2:" + data2 );
        return (mapping.findForward("success"));
    }
}

 こんなめんどいことせなならんのか……。
 mod_rewrite と組み合わせる場合には変更後のを渡さなきゃいけないんだよね……。

google AdSense 追加。

 Google AdSense を追加しました。
 本文の一番下です。
 サイドバーの下にもあとで追加するかも。
 クリックだけで収入が得られるけど、Amazon アソシエイトに比べるとクリックされにくそうだから、どれだけ効果があるか……。
 まぁ目的はここじゃなく Java プログラミング辞書用なんだけど。

イノセンス methods 押井守演出ノート

 現在在庫切れ(汗)。まだ発売してないはずなんだけど……。「イノセンス」で検索してもヒットしないし、 ISBN を調べたらサイトによって違うし……うーん。
 でもちょっと高いんで買わなそう(汗)。

クロ現・花粉症。

 今日のクローズアップ現代は花粉症。

  • 杉だけじゃなく檜がこれから大活躍しちゃうらしい……。
  • 予防薬を早めに飲むのがいいらしい、けどなんか微妙に心配だなぁ……。
  • 注射代わりの薬も開発中らしいけどまだ先だし、アレルギー系の疾患が簡単に治るとは思えなかったりも……。
  • マスクとゴーグルで8割方花粉をシャットアウトできるらしい。

 とりあえず今年も甜茶でがんばってみます……。

ツッコミシステムでSQLException発生。

 うあ、 SQLException が……。

java.sql.SQLException: No operations allowed after connection closed.

Connection was closed due to the following exception:

** BEGIN NESTED EXCEPTION **

java.sql.SQLException
MESSAGE: Communication link failure: java.net.SocketException, underlying cause:
 Software caused connection abort: recv failed

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: Software caused connection abort: recv failed

STACKTRACE:

java.net.SocketException: Software caused connection abort: recv failed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1391)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1538)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1929)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278)
        at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1224)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2248)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2208)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2189)
        at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:546)
        at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(Delegating
Connection.java:237)
        at org.apache.commons.dbcp.PoolableConnectionFactory.activateObject(Pool
ableConnectionFactory.java:273)
        at org.apache.commons.pool.impl.StackObjectPool.borrowObject(StackObject
Pool.java:169)
        at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSo
urce.java:108)
        at biz.kab_studio.commons.db.iplog.IPLogger.logging(IPLogger.java:82)
        at biz.kab_studio.commons.action.StandardAction.ipLogging(StandardAction
.java:25)
        at biz.kab_studio.tukkomi.action.ViewInputFormAction.execute(ViewInputFo
rmAction.java:34)
        at org.apache.struts.action.RequestProcessor.processActionPerform(Reques
tProcessor.java:465)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:274)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:142
2)
        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:505)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:247)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:193)
        at biz.kab_studio.commons.filter.EncodeFilter.doFilter(EncodeFilter.java
:46)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:213)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:193)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:256)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:
2415)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:180)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatche
rValve.java:171)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:172)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:174)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

        at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:22
3)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:261)

        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:360)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:604)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.ja
va:562)
        at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:679)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:619)
        at java.lang.Thread.run(Thread.java:536)


** END NESTED EXCEPTION **

 どうも、MySQL Connector/Jのマニュアルによると「コネクションは8時間経ったら切られる」らしいんだがそれを知らなかった(汗)。切れたら取り直す必要があるらしい……修正修正〜。

ツッコミシステム修正。

 ツッコミシステムの上記のバグを修正しました。

// ObjectPoolインスタンスを生成します。
// 最大コネクション数。
int MAX_ACTIVE = 20;
// コネクションプール最大時の待機時間( 10 秒)。
int MAX_WAIT = 10 * 1000;
// コネクションプール内に保持できる未使用コネクションの数。
int MAX_IDLE = 20;
// 排除スレッドが排除処理を実行するまでの時間。
int TIME_BETWEEN_EVICTION_RUNS_MILLIS = 0;
// 1度のオブジェクト排除処理でチェックされるオブジェクトの数。
int NUM_TESTS_PER_EVICTION_RUN = 1;
// 未使用状態でいられる時間( 2 時間)。
int MIN_EVICTABLE_IDLE_TIME_MILLIS = 2 * 60 * 60 * 1000;
//汎用的なオブジェクトプールを作成する
GenericObjectPool pool
    = new GenericObjectPool
        ( null
        , MAX_ACTIVE
        , GenericObjectPool.WHEN_EXHAUSTED_BLOCK
        , MAX_WAIT
        , MAX_IDLE
        , false
        , false
        , TIME_BETWEEN_EVICTION_RUNS_MILLIS
        , NUM_TESTS_PER_EVICTION_RUN
        , MIN_EVICTABLE_IDLE_TIME_MILLIS
        , false
        );

 具体的には、これまで StackObjectPool を使っていたところを、 GenericObjectPool に変更して、 MIN_EVICTABLE_IDLE_TIME_MILLIS のとこの引数で未使用時間を2時間に設定。これでうまくいくか、明日の朝起きたらアクセスしてみよう。
 つかサンプル少なくて結構難しい……。ってゆーかソース落として解析しちゃえばいいのか……。
>追記。
 よく考えるとこれじゃダメかも。"MySQL closes connections after 8 hours of inactivity."だから、アイドル時間2時間だと……。ツッコミシステムならいいけど、 Java プログラミング辞書じゃなー。アイドル時間 5 秒にするかな。
>さらに追記。
 全然直ってない(汗)。
 「貸すときのチェック」ってのを加えるか……。
>最後の追記。
 修正しました