忍者ブログ
[6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]

DATE : 2024/04/27 (Sat)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2007/12/19 (Wed)

まだ先の話ですが、母校で講演することになってしまいました。

(;^ω^)講演してもらうかも、と卒業間際に冗談で言われたことがあったのですが、まさか本当になるとは夢にも思いませんでした。

( ^ω^)ま、ここは後輩のために一肌ぬぐしかありませんね。

PR

DATE : 2007/12/17 (Mon)

風林火山」が終了しました。

今年の大河ドラマは、非常に重厚な作りでよかったです。今まで私が見てきた大河ドラマでは、主人公の顔が青年期から一生を通してほぼ同じ(せいぜい晩年になるとヒゲが付いて髪に白髪が混じる程度)ことが多かったのですが、本作では特に男性陣の顔が大きく変わっていて面白かったです。

( ^ω^)最終回で若い頃の回想が挿入されていたのですが、とても同じ俳優とは思えないほどの変わりぶりで驚きました。

( ^ω^)来年の大河ドラマにさっそく武者震いですね。


DATE : 2007/12/13 (Thu)

プログラミング作法」(Brian W.Kernighan, Rob Pike著、福崎俊博訳、アスキー、2000)を読みました。プログラムを書く際のスタイルや、プログラミングの際の心構えなどについて書かれた本です。

以前、「Code Complete 第2版 ――完全なプログラミングを目指して」を読んだことがあったので、頭の中で「Code Complete」と比較しながら読みました。「Code Complete」と比べると、「プログラミング作法」はプログラミングを始めた人も対象とした内容となっています。そのため、手続き型言語やスクリプト言語を中心に取り上げています。また、前者がコードの書き方に重点を置いていたのに対し、後者はコードの書き方から始まってアルゴリズムやリソース管理の方法など、プログラミング全般に渡っています。

両者を見比べてみると、細かい点で違いが見つかります。個人的に最も目に付いたのは、変数名の付け方でした。「プログラミング作法」では、グローバル変数は長くフルスペルで、ローカル変数は短く省略形でという名付け方が推奨されています。しかし、「Code Complete」では特にグローバル変数は、ローカル変数はという違いには触れておらず、ただ単にフルスペルで長く名付ける方法が推奨されていました。グローバル変数、ローカル変数にかかわらずという表現ではなかったので、本当のところは分からないのですが、私としてはグローバル変数、ローカル変数に関わらず、名前はフルスペルで長く付ける方法の方が良いと思います。

(;^ω^)ただ、ここから思うのは、コードを書く作法は決まりきっていないということですね。「Code Complete」にしても「プログラミング作法」にしても、名著と呼ばれている本ですが、細かい部分では著者の考え方によって違いが出てくるわけです。結局のところ、コードの書き方は、コードを書く度にしっかりと考えていかなければならないようです。


DATE : 2007/12/11 (Tue)

※ これはインストールの仕方が悪かっただけなのかもしれません。ただ、長時間詰まってしまったので、ここにメモしておきます。

ST_Union( geometry set )という関数があります。これは、geometry で指定された幾何オブジェクトを結合する集約関数で、次のように使用します。ここで、幾何オブジェクトが格納されたテーブルは geometry_table で、幾何オブジェクトの列は the_geom と想定します。

SELECT ST_Union( the_geom )
FROM geometry_table;

上の例では、geometry_table テーブル内の the_geom 列に格納されている幾何オブジェクトが全て結合され、その結果、幾何オブジェクトひとつが返されます。

ところが、上の SQL を PostGIS 1.3.2 で実行すると、ST_Union( geometry )とマッチする関数はないというエラーが出てしまいました。

そこで、次のように ST_Union 関数の代わりに GeomUnion 関数を使用してみました。

SELECT GeomUnion( the_geom )
FROM geometry_table;

PostGIS の 1.3 未満では ST_Union の代わりに GeomUnion を使用していたので、昔のバージョンの関数ならば動くのではないかと踏んだのです。

そして、実際にこれはうまくいきました。ところが、PostGIS 1.3 以降は GeomUnion ではなく ST_Union 関数の使用が推奨されているので、このままではしっくりきません。将来のバージョンでは GeomUnion が削除されてしまう可能性もあります。

そこで、PostGIS 1.3 に付属する SQL 文を調べてみました。具体的には、「<PostgreSQL をインストールしたディレクトリ>\share\contrib\lwpostgis.sql」です。このファイルには、PostGIS の関数などが収められています。そのファイル内で、ST_Union や GeomUnion の集約関数の定義を探すと、次のように見つかりました。

-- Deprecation in 1.2.3
CREATE AGGREGATE GeomUnion (
    sfunc = geom_accum,
    basetype = geometry,
    type = geometry[],
    finalfunc = ST_unite_garray
    );

-- Availability: 1.2.2
CREATE AGGREGATE ST_Union (
    sfunc = ST_geom_accum,
    basetype = geometry,
    stype = geometry[],
    finalfunc = ST_unite_garray
    );

この定義を見ると、きちんと定義されているようです。しかも、定義の内容も GeomUnion と ST_Union とでまったく同じです。

そのため、上の ST_Union の定義を実行することで問題が解決しました。

(;^ω^)おそらくインストールの仕方が悪かったのだと思いますが、根本の原因はいまだに不明です。とりあえずの対処療法です。


DATE : 2007/11/28 (Wed)

ImageIO などで読み込んだ画像がインデックスカラーかどうかを判断するには、その画像のカラーモデルのインスタンスが java.awt.image.IndexColorModel かどうかを判断するだけで分かります。

例えば、java.awt.image.BufferedImage の画像 image がインデックスカラーかどうかを判断するには、次のようにします。(import 文などは省略しています)

if ( image.getColorModel() instanceof IndexColorModel ) {
    // image はインデックスカラー
}

(;^ω^)ImageIO を使った場合、読み込んだ画像のカラーモデルが自動的に設定されるので非常に便利です。

忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
ブログ内検索
最近の状況
リンク
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック