2008-08-01から1ヶ月間の記事一覧

HashMapの注意点

HashMapを使う上での注意点について説明します。 Map型変数を使う HashMapオブジェクトを格納するには、HashMap型変数ではなくMap型変数を使います。 // HashMapオブジェクトの生成 Map<String, String> map = new HashMap<String, String>(); HashMapはMapの実装の一つに過ぎません。HashMap</string,></string,>…

Javaで多重継承する方法

Javaでは言語仕様的に多重継承が許されていません。これは、メソッド名が重複した場合の処置など、多重継承が様々な問題を引き起こしやすいからです(C++でプログラムを書くとよくわかります)。とはいえ、どうしても多重継承をしたい場合というのもあります…

PHPで多重継承する方法

PHPでは言語仕様的に多重継承が許されていません。これは、メソッド名が重複した場合の処置など、多重継承が様々な問題を引き起こしやすいからです(C++でプログラムを書くとよくわかります)。とはいえ、どうしても多重継承をしたい場合というのもあります…

ストリートビューを滑らかに歩く

ストリートビューで街中をスムーズに移動するためのアプリケーションを作りました。SmoothWalk powered by Google Maps Street View Googleマップのストリートビューは非常に興味深い機能ですが、繰り返し矢印を押して移動するのは結構面倒です。そこで、一…

自動散策 by ストリートビュー

ストリートビューで自動散策するプログラム、AutoWalk by Street Viewを作成した。 自分のWEBサイトへの掲載方法 次のようなHTMLを作成することで、自分のWEBサイトに自動散策プログラムを埋め込むことができる。初期地点は自由に設定できるので、自分の街を…

ストリートビューのAPI(京都散策のサンプル)

(2008-08-15)『Googleマップ上でストリートビュー対応の道を青色ハイライト表示する(GStreetviewOverlay)』を追記しました 先日、Google Mapsのストリートビュー日本版が公開されたところですが、早速Google Maps APIを用いてストリートビューをいじってみ…

同期のためにVectorは使わない(VectorとCollections.synchronizedList)

よくJavaの解説には、VectorとArrayListの違いはスレッドセーフであるかないかだということが書かれている。そのような解説を読むと、スレッドセーフな可変長配列がほしい場合にはVectorを使えば良いと思ってしまいそうだが、私は同期を目的としてもVectorは…

任意の底を持つ対数を計算する方法

多くのプログラミング言語では、任意の底を持つ対数を計算するために一工夫が必要だ。 PHP PHPで任意の底の対数得るのは簡単だ。log関数を用いて次のように書く。第二引数を省略するとネイピア数(自然対数の底)eが底となる。 しかし、このように書ける言…

JavaのNaNがおかしい(というか、Doubleがおかしい)

doubleはNaN*1を値として取ることができる(その他にも、正の無限大、負の無限大をとることもできる)。これはIEEE 754で決められている。 NaNはNaNと比較しても等しくないという性質を持っている。つまり、 // aはNaNになる。 double a = 0.0 / 0.0; System…

ハッシュは二分木(ツリー)より速い(ハッシュとツリーの速度比較)

ハッシュは遅いという意見があるようだが、実装や使い方を誤らなければ、基本的にツリーよりハッシュの方が速い。(この記事は以前書いた「ハッシュは本当に遅いのか?いや、遅くない(反語)」を簡潔にまとめたものです) ハッシュとツリーの速度を比較した…

PHPのエスケープやエンコード関数

PHP

HTMLエスケープやURLエンコード、ハッシュ関数など、WEBアプリケーション作成においてよく使うPHPの関数をまとめた。 HTMLエスケープ HTML中で使われる『&』や『<』、『>』などの記号を、『&amp;』や『&lt;』、『&gt;』などに書き換えるのがHTMLエスケープだ…

staticメソッドしか持たないクラス

PHPやJavaで、staticメソッドしか持たないクラスを作るとき(例えばJavaのMathクラスのようなクラス)には、そのクラスのインスタンスが生成できないようにする必要がある(staticメソッドにインスタンス経由でメソッドにアクセスするのは明らかに無駄だ。だ…

JavaScript関連リファレンス

JavaScript関連のサイトはたくさんあるが、ある程度信頼できるリファレンスのようなものがなかなか見つからない(JavaScript歴が短いせいかもしれないけど)。とりあえず見つけたものをメモ代わりに書いておく。 Core JavaScript 1.5 Reference - mozilla de…