2010年12月7日火曜日

DBスペシャリスト

DBスペシャリスト試験 始めました。

んで、早速「候補キー」の解釈でつまづく。

教科書的な定義はしっかり理解してて、使える自信もあるんですよ。

「行を一意に特定できる、属性の組み合わせ」でしょ。

余裕。

でもね、DBスペシャリスト試験過去問での回答になっとくがいかない。

平成21年度春期試験の午後Ⅰ 問2 設問1 (3)の回答がわからない。

この問題だと、候補キーが2つあって、それらのうち主キーに適切なのは?不適切なものとその理由は?

ということを問いているのですが、

不適切な方の候補キーが問題文の条件により、そもそも候補キーではない気がする。

なぜか?

この場合の候補キーは問題文の「一意」という記述から下記になります。

候補キー1 ⇒ 「部品番号」
候補キー2 ⇒ 「顧客仕様製品コード、顧客仕様製品名」

そして、問題文の条件から、候補キー2はnullで登録されることがありえるとのこと。

となりますと、、、

候補キー2がnullであるデータが2件以上登録された時点で、候補キーではなくなる。

ということが言えそうなので、候補キーは2つ存在しないという結論に至りました。

それとも、問題文に記述はないが「候補キー2がnullのデータは2件以上登録できませんよ」

ということを暗に醸していて、それを察知してねということなのでしょうか。

※nullデータが表に1行のみであれば候補キー2の一意性は保てるため。

あれ?もしそうだとするとこのシステムやばくね?

製品名が決まってない受注は先着1名様のみと。

「・・・仕様です」そんな言葉が頭をよぎります。

うーん。

なんにせよ、どう解釈すればいいのでしょうか。

おしえてエライ人。

正直、午後問題がずっとこんな調子かと思うと解ける自信がないです。

2010年10月29日金曜日

クラスに含まれるStaticフィールドの値を列挙してみる。

いつも忘れてしまう。
プリミティブ型の値範囲。
ちまちま書くのがめんどくさかったので、リフレクションを使って書いてみました。

再利用性はありません。あしからず。
でもtypeNames辺りに表示したいクラス名をいれてあげれば何でもいけちゃいます。

・・・ってかそろそろ値範囲覚えろよ。オレ。

package examples;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class ShowStaticField {

 /**
  * スタティックフィールドの値を表示します。
  * @param args
  */
 public static void main(String[] args) {
  //表示したいクラス名を列挙。
  //別に何のクラスでもOK。
  String[] typeNames= {
    "java.lang.Boolean",
    "java.lang.Character",
    "java.lang.Byte",
    "java.lang.Short",
    "java.lang.Integer",
    "java.lang.Long",
    "java.lang.Float",
    "java.lang.Double"    
  };
  
  for(int i=0 ; i < typeNames.length;i++ ){
   Class clazz;
   try{
    //列挙したクラスを取得。
    clazz = Class.forName(typeNames[i]);
    System.out.println("■"+clazz.getName()+"のStaticフィールド情報■");
    Field[] clazzFields = clazz.getFields();
    for(int j = 0 ; j < clazzFields.length ; j++ ){
     if(Modifier.isStatic(clazzFields[j].getModifiers())){
      System.out.println(clazzFields[j].getName()+":"+clazzFields[j].get(null));
     }
    }
   }catch(Exception e){
    e.printStackTrace();
   }
  }
  
 }
}



実行結果


■java.lang.BooleanのStaticフィールド情報■
TRUE:true
FALSE:false
TYPE:boolean


・(略)


2010年10月19日火曜日

itunes 10 日本語ジャンルに書き換わる問題を解消してみる。【for windows】

itunesがupdateされるといつも日本語ジャンルに書き換わってしまいます。
ほんと困るよね~。
っと言うわけで、義務的作業。
Localizable.stringsを書き換えて対応っと思ったのですが、、、
今回は何か様子が違いますね。

itunesのバージョン7くらいまでは、
Program Files ⇒ iTunes ⇒ iTunes.Resources ⇒ ja.lprojフォルダにある
Localizable.stringsのジャンル名をen.lprojフォルダの内容でコピペ保存でOKでしたが、
保存後に起動確認しようとしましたが、下記エラーが出て立ち上がりません。

【エラー内容】
iTunes cannot run because some of its required files are missing. Please reinstall iTuens.
(ファイルないから、もっかいインストールしてねという旨)

【症状】
Localizable.stringsを保存すると、保存後のファイルが文字化けする。
保存時に、既存の文字コード、改行コードは替えていない
なお、修正せずに上書き保存を行っただけでも起動が不可能になる。

【原因】
どうやら、「iTunes U」の箇所がおかしい模様。
バイナリエディタ(Stirling)で確認した所、iTunesとUの間はタダのスペースではなく、「A0 00」が入ってます。
※通常のスペースは「20」

って言うか至る所にこのコードがあるぞ。
バイナリエディタで置換しても、テキストエディタで置換しても不可能っすね・・・。

【解消手順】
下記サイトの、
「iTunesでジャンルを勝手に日本語に書き換えられないようにするスクリプト」が素敵。
http://www1.atwiki.jp/itunes/pages/26.html#id_a7a8d45d

今回は完全に他力本願。
私では太刀打ちできませんでした。
作った人に感謝。
すげぇなぁ。