<input type="hidden"> と <table>(いまさらIE7)

こういうhtmlを書く必要があった。

<table>
  <tr>
    <input type="hidden" name="hoge1" value="fuga1">
    <td>1行目</td>
  </tr>
  <tr>
    <input type="hidden" name="hoge2" value="fuga2">
    <td>2行目</td>
  </tr>
  <tr>
    <input type="hidden" name="hoge3" value="fuga3">
    <td>3行目</td>
  </tr>
</table>

このとき、IE7だとテーブルの上に謎のスペースができてしまう。

解決策:

以下のように改変。

<table>
  <tr>
<input type="hidden" name="hoge1" value="fuga1"><td>1行目</td>
  </tr>
  <tr>
<input type="hidden" name="hoge2" value="fuga2"><td>2行目</td>
  </tr>
  <tr>
<input type="hidden" name="hoge3" value="fuga3"><td>3行目</td>
  </tr>
</table>

inputタグの前後にスペースやら改行やらが入っていると問題らしい。

補足:
そもそも、この書き方自体がhtmlの記述の仕方に反しているので、よくないと思う。
以下更なる対処法。

<table>
  <tr>
    <td style="display: none;"><input type="hidden" name="hoge1" value="fuga1"></td>
    <td>1行目</td>
  </tr>
  <tr>
    <td style="display: none;"><input type="hidden" name="hoge2" value="fuga2"></td>
    <td>2行目</td>
  </tr>
  <tr>
    <td style="display: none;"><input type="hidden" name="hoge3" value="fuga3"></td>
    <td>3行目</td>
  </tr>
</table>

これなら反していない。はず。

半角カタカナのバイト数

1バイトだと思ってたら違った。

Shift_JISではJIS X 0201の片仮名は1バイト、漢字などは2バイトで表されることから「1バイトカナ」と呼ばれることもある。しかし文字をあらわすのに必要なバイト数は符号化方式でそれぞれ異なる。実際、「半角カナ」相当の文字を表現するのに、EUC-JPでは2バイト、UTF-16では2バイト、UTF-8では3バイトを要する。

文字コードによって違うんだね。

参考: 半角カナ - Wikipedia

正規表現で複数の条件指定をする

正規表現で、半角英数混合(半角英字のみ、半角数字のみは不可)を判定する必要が出た。
調査したり、いろいろ考えた結果、

^(?=.*([0-9]))(?=.*([A-z]))[A-z0-9]*$

という結論に達した。

肯定先読みの結果は先読み前の位置に戻ることを利用して、

  1. 何かの文字列を読み飛ばして半角数字を見つける
  2. 肯定先読みなので行頭に戻る
  3. 何かの文字列を読み飛ばして半角英字を見つける
  4. 肯定先読みなので行頭に戻る
  5. 半角英数のみで文字列が構成されているか調べる

でいけた。

(?=.*(条件A))(?=.*(条件B))で同じ部分から複数の条件判定ができる。
否定したいときは(?!.*(条件))かな?試してないけど。

参考:

SAStrutsで@Executeを付けると404エラーを起こす。

@Executeを付けないとちゃんと動くのに、付けてみると通らない。
よくよくコードを見てみると、小さな小さなミスが。

間違い

@Execute(/* 略 */)
public String Index(){
/* 以下略 */

正解

@Execute(/* 略 */)
public String index(){
/* 以下略 */

文字の大小って重要。

参考: [Seasar-user:21495] 質問:@Executeをつけると404エラーになります - Mailing List Archives

ビルド・パスのエラーが解決されるまで、プロジェクトをビルドできません。

IDE: Eclipse 4.2, および Pleiades1.4.0 プラグインを導入済み

外部からプロジェクトをインポートした時、タイトルの様なエラーが出た。

  1. 該当プロジェクトを右クリック
  2. 「プロパティー」→「Javaのビルド・パス」の順に選択
  3. 「順序およびエクスポート」タブで、「すぺて選択」を選択
  4. 「OK」を選択

ゴリ押し感半端ないけど、解決した。

アクセス修飾詞@Java

Java におけるアクセス修飾詞に関するメモ。

Java におけるアクセス修飾詞は以下の4種類。

  • public
  • protected
  • private
  • なし


1. public修飾詞
全ファイル、全クラスからアクセスできる。

2. protected修飾詞
全ファイルからアクセスできるが、他ファイルからは自クラスのサブクラスのみ参照可能(ただし、自ファイルの他クラスからは参照可能)。

3. private修飾詞
自ファイルの自クラスのみ参照可能。

4. 修飾詞無し
自ファイルの全クラスから参照可能。他ファイルからは参照できない。

参考: とほほのJava入門

CSS 2.1 におけるカスケーディングについて

CSS 2.1 のカスケーディングについて疑問に思ったので調べてみた。

CSS 2.1 のカスケーディングは以下の順序で優先される。

a. 誰の指定したスタイルかによる優先度

    1. ユーザのCSS で最重要のもの
    2. 製作者のCSS で最重要のもの
    3. ユーザのCSS
    4. 製作者のCSS
    5. UA のデフォルトCSS

b. セレクタの重みによる優先度

  • セレクタの重みの計算方法
    • セレクタを伴う規則よりstyle属性内の宣言を優先し,それをA(=1)とする(さもなくば=0)。
    • セレクタ内にあるIDセレクタを数えあげ,それを B とする。
    • その他の属性や擬似クラスを数えあげ,それを C とする。
    • 要素型名および擬似要素を数えあげ,それを D とする。
    • 1000A + 100B + 10C + D の結果がセレクタの重みとなる。

c. 宣言の位置による優先度
より後に宣言された方が優先される。

a ~ c の順で優先度を見ていけばいい。

参考: 値わりあて,カスケード処理,継承 - CSS2リファレンス