うー、仕事がだいぶ忙しかったのを言い訳に
相当サボってました。という訳で久しぶりのトピック……
ですが今日は今ホットな話題、FireFox3について。
なにやら24時間でのDL数でギネス申請するとか。
ふぉく助(きつね)もかわいらしいので是非頑張って欲しいです。
さて、僕は我が家でも職場でもFireFox使ってるんですが
二つの理由でFireFox3の導入を迷ってました。
1.FireFoxの要、プラグインが非対応の物が多い
これはそのまんま。リリースしたばかりなので便利なプラグイン
があまり対応してない・・・・・・
確かにFireFox3はとても早いのでAjaxバリバリなページ(Gmailとか
RememberTheMilkとか?)では便利なのですがやはり物足りない。
2.クロスブラウザ的な不安
これは職場限定なのですが、ブラウザのVersionUpにより挙動が
変わられると色々困る。
上記二点の理由から、
『そうだ、両方いれればいいじゃん』
という風に思いつくのは至極当然……という訳で今日はFireFox2&3の
共存方法について。
まず手順だけ書いておくと、
1.FireFox3(以下3)をダウンロードし、FireFox2(以下2)を終了します。
2.2のショートカットを作成し、プロパティを開きます。
3.プロパティの"リンク元"の末尾に、半角スペース+'-p default -no-remote'と
入力し、OKをクリックします。
4.スタートメニューより、ファイル名を指定して実行をクリックします
5.'firefox -createprofile firefox3(ここは任意の名称で可)'と入力しエンターを押します。
何も処理が行われていないように見えますが、ここはこれでOKです。
6.3をインストールします。インストール方法はカスタムを選び、2のパスとかぶらないように。
また「FireFoxを既定のブラウザに~(略)」のチェックは外します。
7.ショートカットを作成の画面では全部チェックを外しておきます。
8.インストールを行い、終了後の「今すぐFireFoxを起動」のチェックを外し完了します。
9.3をインストールしたフォルダを開き、3のfirefox.exeのショートカットを適当な所に作ります。
10.9で作成したショートカットのプロパティを開きます。
11.プロパティの"リンク元"の末尾に、半角スペース+'-p firefox3(5で設定した任意の名称)
-no-remote'と入力しエンターを押します。
以上の操作により、作成したショートカットからFireFox2とFireFox3を共存して起動できます。
次に、かいつまんでどういう事をやっているかの説明を。
(といっても、上記操作はWEBで調べた結果なので、自分なりの解釈になるんですが)
おおまかには、FireFox2用とFireFox3用のプロファイルを作成し、ショートカットで
起動オプションを設定してそれぞれのプロファイルを指定、また別個に起動できるように
指定する事で共存できるようにしているようです。
起動オプションに関しては、
-p:このオプションでプロファイルマネージャを起動するらしい。(我が家は上手くいかなかった)
また、上で書いたように、 -p "プロファイル名" って書く事でプロファイルを指定して
起動する。default指定するとデフォルトで設定されているプロファイルを読みに行く訳ですね。
-createprofile:読んで字の如く、プロファイルを作成します。使い方は上のほうで書いたように
-createprofile "プロファイル名" という風に使います。
-no-remote:これは初めて知ったんですが、なにやらアプリを複数起動する為のオプションらしい。
これのおかげでFireFox2とFireFox3が同時に起動できる…と。
これを全部使って、
FireFox2をデフォルトのプロファイルを指定して、同時起動可能とする
↓
FireFox3用に新しくプロファイルを作成しておく
↓
FireFox3をインストールする
↓
FireFox3を、事前に作ったプロファイルを指定して、同時起動可能とする
こんな流れみたいです。そんな訳で早速使ってみたFireFox3はマジで爆速でした。
でもセキュリティホール見つかったって本当??
2008/06/20
ミリオン目指す炎の狐 [ FireFox ]
2008/05/19
Mapを拡張forループでぶんまわす [ Java ]
ものすごい更新が空いてしまった……
基本的にものぐさなんでよくない傾向です。
そして左肩が痛い。もう四十肩ですかね?
一応25歳なんですけど……まぁいいや。
今日は先日紹介した拡張forループ文を使ってMapをループ
する方法です。
基本的にMapを作る時ってKey値を指定してValueを取得する事が
多いと思うんですが、場合によってはMapの値を全てを取得したい
って事もあると思います。そんな時は下記のように拡張forループを使います。
Map
classMate.add("01", "佐藤");
classMate.add("02", "田中");
classMate.add("03", "高橋");
classMate.add("04", "鈴木");
for(Map.Entry
System.out.println(person.getKey());
System.out.println(person.getValue());
}
上記のように書く事で、01佐藤02田中03高橋04鈴木 のように出力されます。
簡単ですね。ポイントは
(マップ名).entrySet()
とする事でエントリのSet(Collectionを継承している)を取得する所。
もう一つのポイントは
Map.Entry<(型名), (型名)> とする事でエントリの型を指定する所かな?
知らないでも特に不自由しないけど、知ってると何かで役立つような情報でした。
2008/05/07
拡張forループ~素晴らしきJDK5~ [ Java, JDK5 ]
GWがあったので更新が長らく止まってました。
さて、今日はJDK5から新しく追加された機能、
拡張forループです。
今までJavaでfor文を使う場合、以下のように
コードを書いていたと思われます。
1.配列のループ
int[] array=new int[100];for ( int i = 0; i < array.length; i++ ) {
// 何らかの処理2 .コレクションのループ(Iteratorの使用)
}
List persons;
for (Iterator it = persons.iterator(); it.hasNext(); ) {
Person person = (Person)it.next();
// 何らかの処理
}
こんな感じでしょうか?相変わらず実際にコンパイルしてないので通るか不安……
さて、ここでJDK5で新登場した拡張forループの使い方です!!
3.拡張forループ
int[] array=new int[100];for(int i : array){
これだけ。なんとまー楽になった事か。具体的に説明するとこうなります。
for([変数の型] [ループ内で使う変数名] : [配列、又はコレクションの変数名]){
例えば、stringListという名前の、String型のListが存在したとします。その場合
for(String str : stringList){
こんな感じになります。
とりあえず覚えておくと(JDK5を使うなら)何かと便利(というか作業効率が上がる)
なので是非是非。
2008/04/25
Mapの実装クラスについて [ Java ]
昨日のエントリでMapについて書いた訳ですが、JavaのMapは
インターフェースなので使う時は実装クラスを使わないといけません。
これが結構色々種類があって、それを全部説明する僕が面倒です
ので幾つかピックアップして解説してみようと思います。
という訳で選手入場です!
1.HashMap
はい、トップバッターは一番使われてるのでは? と僕が思っている
ハッシュマップから。これはほんとごくごく普通の連想配列です。
あえて突っ込むとしたらば、同期化はされてない事とnullが許容
されているって事ぐらいでしょうか。あ、後このクラスはMapの
順序が保証されません。
順番とかどうでも良い、本当にハッシュテーブルが欲しい時は
これで事足りますね。
2.LinkedHashMap
さぁ二番手に行ってみましょう。今度のMapは1番のHashMapと
ほぼ同じです。相違点は挿入した順序を保持する事。
つい最近仕事で使ったので記憶に新しい……
3.TreeMap
今日はこれで最後、TreeMapです。これはMapがソートされた
状態で保持されます。何でソートされるかというと勿論Key値です。
ハッシュでソートされるという事ですね。で、これってどういう風に
ソートされるの? 昇順? 降順? という疑問が沸くと思うのですが
デフォルトは昇順です。正確に言うとComparableインターフェースの
compareToメソッドによってソートされます。
その為、TreeMapを使って自分の思うようにMapをソートしたい場合は
Comparatorオブジェクトを生成し、それをTreeMapのコンストラクタへ
セットすれば出来るはずです。
なんではず、なのかって? 試してないからです。
今度はここらへんを実際のコードを混ぜて書きたいですねー。
2008/04/24
Mapって知ってますか? [ Java ]
タイトルを見てこう思った人がいるかもしれない。
はい! 地図の事です!
お前は俺か。
はい、という訳で今日はまずJavaのMapという物の概念から
考えていきましょー。まぁJavaに限らずほとんどの言語に
ある話なんで多分みなさん知ってると思うんですが。
さて、Mapというのはキーとそれに対応する値がセットになった
エントリの集合体のような物です。
はい、何を言っているか分かりませんね。
例えば、学校のクラスの出席番号を考えてみましょう。
No 名前
1 山田
2 畠中
3 川畑
4 立神
こんな出席番号のクラスがあったとしましょう。
さてここで質問です。出席番号2番の生徒の名前は?
答えは当然"畠中"君ですね。(畠中さん、かもしれないですが)
このように、キー値(出席番号)と、それに対応する値(名前)が
セットになったエントリ(No:名前)が複数ある物がMapです。
さて、ここでさっきのデータにエントリを増やしてみます。
No 名前
1 山田
2 畠中
3 川畑
4 立神
2 計羅
上記データはMapとして……いや、出席番号として正しく機能するでしょうか?
勿論、答えはNo!!! です。何故ならこのクラス、出席番号2番の人! と先生が
点呼をすると
畠中「はい!」
計羅「ういす!!」
二人返事しちゃいますね。これじゃ出席番号としては機能してません。
これと同じように、Mapにおいてはキー値は重複しないという約束が
あります。特に難しい事は無いですね。
じゃ、これを実際にJavaのコードにしてみたものを以下に。
Map
classMap.put(1, "山田");
classMap.put(2, "畠中");
classMap.put(3, "川畑");
classMap.put(4, "立神");
こんな感じでしょうか?(コンパイル通してないからあってるか不安……)
上記コードのclassMapというマップが上の方で作ったデータと
全く同じ事を示している状態になります。
ここでは例としてMapの実装クラスはHashMapを使いましたが、他の
物を使った時との違いを今度書きたいと思います。
2008/04/23
Javaで配列のソートがしたい時どうする? [ Java ]
仕事がちょっと忙しくて昨日、一昨日と二日間サボってました。
さて、今日はタイトルの通りJavaで配列のソートをする時
どうする? というお話です。
昨日は仕事で画面上の表示するデータをとある項目の数値で
ソートしたかったのですが、普段だったらSQLにORDER BY句を
付け足して終了! とする所がhibernateを使ってDBアクセスを
行っている為にそれが出来なかったのです。
その為既に取得したデータ郡をJavaでソートしよう! という
事になった訳ですが……意外に簡単でした。やり方はこう。
ex)配列のsort
String[] orgStringArray = {
"3", "4", "2", "1", "9", "8"
}
Arrays.sort(orgStringArray);
これだけ。これでorgStringArrayというStringの配列が昇順で
ソートされます。(Arraysクラスはjava.utilパッケージにあります)
ここまで読んだ人は、『じゃ降順はどうするんだ?』とか
『実際にはこんな単純なオブジェクトじゃない事が多いんだけど』とか
『配列じゃなくてコレクションのsortをしたいんだけど!』とか ←僕です
色々思う所があると思いますが、それはまた後日。
2008/04/18
オブジェクトのクラス、そして全てのメンバへ…… [ Java ]
今日は原点に帰ってJavaについて。
とあるオブジェクトがあったとして、そのクラスを
取得したい場合。例えば
String foo = "foo";
ここでfooからクラス情報を取得したい場合は
foo.getClass();
これでclass情報を取得できます。
さて、ここまでは誰でも知ってるような事だと思いますが、
今日はクラス情報からそのクラスが持つメンバ一覧を
どのように取得するかを紹介したいと思います。
……といっても
foo.getClass().getDeclaredFields()
これだけ。ちなみに返される値はFieldオブジェクトの配列です。
なので実際には上記コードは
Field[] fields = foo.getClass().getDeclaredFields();
こんな感じになりますね。
ここからリフレクション等を使うと色々便利な事ができそうな予感……!!