struts2で動的にjspにselectフィールドを渡す

struts2でviewにselect値を渡すときは

<s:select list="Map型のメンバ変数"> 

でできました。(´・ω・`)

xmlは特にいじる必要ないです。

こんな感じでできますた。

//actionコントローラ

//出力する順序を保持するにはTreeMapを使う
TreeMap<Integer, String> selectList = new TreeMap<Integer, String>;

//略dbアクセス
while(rSet.next()){
 selectList.put(rSet.getInt("col1"), rSet.getString("col2"));
}
//jsp
<s:select list="selectList">



参考文献
struts2の話 - これでも人生は上々だ?

MacTypeをいれたらカスペルスキーで定義データベースがアップデートできなくなった

MacTypeが原因

定義データベースの更新履歴をみたら、どうもmactypeレジストリモードにしてから、おかしくなったようだ。

解決策

mactypeのプロセスマネージャーを開く。
・アクセスできないシステムプロセスを隠す のチェックボックスを外す
avp.exe(カスペルスキーantivirusの実行ファイル)がでてくる
・「このプロセスを除外」「このプロセスではフォントを置換しない」の二つとも適用する
・OSごと再起動

これで
mactypeの設定ファイル
mactype.iniに
[UnloadDll]と[exclude]にavp.exeが追加されます。


ためしてはいないけど、mactype.iniを直接いじくってもいいはずです。

SQLでめったに更新されない内容をselectする時はクエリキャッシュを使う

きょうのガッテン:クエリキャッシュを使って、同じ結果を何度もselectしないようにする


しらんかった・・・。

バージョン 4.0.1 以降、MySQL サーバ には Query Cache 機能があります。 クエリキャッシュの使用時、このキャッシュには、SELECT クエリのテキストと、クライアントに送られたその結果が格納されます。 後でまったく同じクエリを受け取ると、サーバはそのクエリの解析と実行をもう一度繰り返す代わりに、クエリキャッシュから結果を取り出します。
MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.9 MySQL クエリキャッシュ

fuelのクエリビルダにもあるぜよ

$query = DB::query("SELECT * FROM users")->cached(3600, "foo.bar", false)->execute();

Query Builder Select - クラス - FuelPHP ドキュメント

クエリキャッシュ
クエリビルダは、クエリ結果のキャッシュもサポートします。これによりデータベースアクセスを減らすことができます。 これは、バックエンドでキャッシュクラスを使用し、キャッシュの読み込みと再生成の両方を行います。
cached() メソッドは、3つの引数をとります: 第一引数は有効期限 (キャッシュが有効となる秒数)、 第二引数は、クエリのカスタムキー (デフォルトでは、SQLmd5 ハッシュ値)、そして最後は、あなたが空の結果をキャッシュしたくないか を指定する、boolean値です。 カスタムキャッシュキーを使用すると、 手動で特定のクエリのキャッシュを削除したり、特定の階層へクエリキャッシュのセットを グループ化したりできるようになります。

MySQLのトランザクション分離レベルはInnoDBならデフォルトのREPEATABLE READで問題ない

MySQL :: MySQL 5.1 リファレンスマニュアル :: 13.5.10.3 InnoDB と TRANSACTION ISOLATION LEVEL
MySQLでトランザクションの4つの分離レベルを試す - FAT47の底辺インフラ議事録

きょうのガッテン:

長所短所あるけど、InnoDBならREPEATABLE READの短所のファジーリード発生しないので、細かいこと気にしないで、デフォルトのREPEATABLE READでよい。

あとは、下の挙動だけ理解しておけばとりあえずいいかな。

一貫した読み取りの中に、READ COMMITTED 分離レベルとの重要な違いがあります:同一トランザクション内の全ての一貫した読み取りは、最初の読み取りで確立された同じスナップショットを読み取ります。このしきたりは、もし同じトランザクション内でいくつかの単純な SELECT ステートメントを発行すると、これらの SELECT ステートメントはお互いに対しても一貫性を持つという事を意味します。

要は、同一トランザクション内で更新した内容は、コミットする前にトランザクション内で参照しても、更新されてないってことか。

select @@tx_isolation; # REPEATABLE READ  



#トランザクションスタート

SELECT test_col FROM test_t WHERE id = 1; #9が返る

UPDATE test_t SET test_col = 10 WHERE id = 1;

SELECT test_col FROM test_t WHERE id = 1; #★10ではなく、9が返る★

#コミット

SELECT test_col FROM test_t WHERE id = 1; #10が返る

ajaxやフォームで多重送信されるのを防ぐには

$.ajax(jQuery)を、クリック連打されても安心にする - DECKS開発につき。

きょうのガッテン:ajaxやフォームの多重送信を防ぐには

・まず、jsで物理的に2回目を押せなくする
・リクエスト先でも正当性の検証をいれる


めんどくせー

<div>とかで空要素のwidth指定を効かせるには,min-height:1pxでよい

blockレベル要素でも中身が空だったらwidth指定してもきかなかったのね。

きょうのガッテン:空要素にwidth指定を効かせるにはmin-height:1pxか

 でもいれる.


これだと、 空要素の後の"左に600pxあるよん"が一番左に詰められてしまう。

<style>
div {float:left;width:200px;}
</style>

<div></div>
<div></div>
<div></div>
<div>左に600pxあるよん</div>


これだと、 ok

<style>
div {float:left;width:200px;min-height:1px;}
</style>

<div></div>
<div></div>
<div></div>
<div>左に600pxあるよん</div>

これでも、 ok

<style>
div {float:left;width:200px;}
</style>

<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>左に600pxあるよん</div>


html - How to make a DIV with no content have a width? - Stack Overflow