2010/01/29

そして一年以上が過ぎた。

一年以上書いていませんでした。
お久しぶりです。

仕事が激務になりしばらくBlogから離れている内に、
昔あった仕事・技術に対する向上心がどんどんと薄れて
いってしまったために完全に放置状態になってしまいました。

このまま完全にブログ離れしてしまうかなと思ったんですが
やっぱり日々感じた事や、検索して初めて知った事とか、
アウトプットとして自分の中を通して外に出すっていう行為は
割と大事な気もするのでボチボチ続けようかと考えなおしました。

ただやっぱり技術的な観点ではとても書き続けられないので
今後は適当に日常やゲームやエロゲーやらに関してつらつらと
書いていこうと思います。


とりあえず、働きたくない。

2008/09/01

安西先生、お金が欲しいです。 [ 書籍 ]

はい、久しぶりですが技術とは無関係の話です。

先週末、maitoさんと池袋でラーメンを食らった後に
軽く酒を飲みながら下らない話に花を咲かせていたのですが、
その時話にあげた本をこちらで紹介しておきます。

お金は銀行に預けるな

なかなかタイトルからしてショッキングな感じですね。
俺めっちゃ預けてますが。
簡単に内容を紹介すると、ただ預けて寝かせっぱなしにしている
お金があるなら、銀行に預けるんじゃなくて効率的に投資・運用
していきましょう・・・みたいな内容です。初心者向けに最初は
こういう感じでやってみては? ってのも紹介されてます。

うーん……今まで経済とかぜんぜん興味なかったからなぁ。
そろそろ軽くお金突っ込んで強制的に興味を持たせるべきですかねー?

2008/08/08

JSTLのfmtタグの不思議 [ Java, JSTL ]

うっへー。滅茶苦茶あいだが空いてしまいました。
プロジェクトいそがしめとはいえわれながらものぐさです。
maitoさんを見習いたいですね。勿論性的な意味で。

さて、今日は題名のJSTLのfmtタグについて。
fmtタグはフォーマットタグ(そのまんま)でして、数字や
日付等のフォーマットをしてレンダリングしてくれるのですが……
現プロジェクトで問題が発生しました。具体的には

<fmt:formatdate value="${[日付の値]}" pattern="yyyy/MM/dd" />

このように使うのですが、なぜかこれがDoCoMo端末だけ動かない。
動かないというか表記が

Tue Jul 15 18:03:41 GMT+09:00 2008

こんな感じになりやがります。なぜDoCoMoだけ?!
で、色々調べてみた所どうやらロケール情報が正しく設定されていないと
ダメらしい。通常はロケール情報はリクエストのヘッダにあるのでこれを
見に行っているようなのですが、携帯等の場合でこれがないと……
今回のようになるようです。

で、対応策。同じくfmtタグのsetLocaleタグを使って明示的に
ロケールをセッティングします。


<fmt:setlocale value="ja-JP" />

こんな感じです。ただベタ書きでja-JPって書くのは怖いんでここは
よきに計らってくださいといった感じ。

しかし携帯って怖いですわーこりゃ・・・。

2008/06/20

ミリオン目指す炎の狐 [ FireFox ]

うー、仕事がだいぶ忙しかったのを言い訳に
相当サボってました。という訳で久しぶりのトピック……

ですが今日は今ホットな話題、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/05/19

Mapを拡張forループでぶんまわす [ Java ]

ものすごい更新が空いてしまった……
基本的にものぐさなんでよくない傾向です。
そして左肩が痛い。もう四十肩ですかね?
一応25歳なんですけど……まぁいいや。

今日は先日紹介した拡張forループ文を使ってMapをループ
する方法です。

基本的にMapを作る時ってKey値を指定してValueを取得する事が
多いと思うんですが、場合によってはMapの値を全てを取得したい
って事もあると思います。そんな時は下記のように拡張forループを使います。

Map classMate = new LinkedHashMap();

classMate.add("01", "佐藤");
classMate.add("02", "田中");
classMate.add("03", "高橋");
classMate.add("04", "鈴木");

for(Map.Entry person : classMate.entrySet()){
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){
 System.out.println(str);
}

こんな感じになります。
とりあえず覚えておくと(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のコンストラクタへ
セットすれば出来るはずです。

なんではず、なのかって? 試してないからです。

今度はここらへんを実際のコードを混ぜて書きたいですねー。