2005年5月アーカイブ

最近お仕事で使うデータベースはPostgreSQLが多かったのですが、久々にMySQLを使う羽目になりました。まぁ大したことないだろうと思っていたところ、内容的に統計分析系な重い処理+複雑なクエリが要件としてあったので、慌てて関連書籍を買いあさってきた次第です。

MySQLクックブック〈VOLUME1〉
ポール デュボワ Paul DuBois 赤井 誠 小桧山 淳一 因田 鈴鹿 後藤 宏
藤本 康秀 北山 貴広 高見沢 京子 礪波 徹
オライリージャパン (2003/11)
売り上げランキング: 42,865
通常24時間以内に発送

基本的に必要なかったのですが、Vol. 2を買うに当たってVol. 1が本棚にないのは許せないということで買いました。内容は基本的なことがメインです。

MySQLクックブック〈VOLUME2〉
ポール デュボワ Paul DuBois 赤井 誠 小檜山 淳一 因田 鈴鹿 後藤 宏
藤本 康秀 北山 貴広 高見沢 京子 礪波 徹
オライリージャパン (2004/01)
売り上げランキング: 63,115
通常4日間以内に発送

これの13章 統計手法が今回は中々役にたったです。

実践ハイパフォーマンスMySQL
ジェレミ・D. ザウドニ デレク・J.
ベリング Jeremy D. Zawodny Derek J. Balling 林 秀幸
オライリージャパン (2004/10)
売り上げランキング: 16,893
通常24時間以内に発送

三冊の中では一番濃いです。Oracle本などに比べるとさすがに薄い感じはしますが、現実的にチューニング周りを体系立てて説明しているのはこれだけなのでマストかなと。基本的にベンチマークやインデックスチューニングがメインです。メモリの使い方などは載ってないみたいですね。

なんだーかんだー言ってもオライリーの本が一番読みやすいです。

ただ、残念なのがこの三冊のどこにもUDFの説明がないことです。実際に今回の仕事で必要っぽいのですが、3.xで動くものが4.xだと動かなかったりと四苦八苦してるのでここは欲しいところでした。

また基本的に3.x、4.xのみの対象で5.x系の記述がないのはタイミング的にもしょうがないところでしょうか。そのうち改訂されるでしょう。

ところで何でオライリーではPHPやPostgreSQLを扱わないんですかね?

というわけで、清水の舞台からダイブする勢いで携帯をSH901iCに買い換えて3ヵ月半。
とうとうこの日がやってまいりました。

スポットAFに手ぶれ補正機能──316万画素カメラの「SH901iS」 (ITmedia)
シャープ製の「SH901iS」は316万画CCDを搭載した端末。カメラ機能を重視、静止画撮影時にはスポットAF、ムービー撮影時には手ぶれ補正機能を利用できる。

物を見ると・・・グフみたいじゃないか・・・
ms_sh901.jpg

gouf.jpg

と、どっかで吐いた台詞はさておき、そうです。新機種が出てしまったのです

一応901iCと901iSを比べてみると

機種名SH901iSSH901iC
サイズ(幅×高さ×厚み)52×112×25ミリ49×109×25ミリ
重さ150グラム148グラム
連続通話時間約130分(テレビ電話:約80分)130分
連続待受時間約420時間(静止時)、約350時間(移動時)370時間
アウトカメラ316万画素CCD(AF対応)AF機構付き202万画素CCD
インカメラ11万画素CMOS11万画素CMOS
外部メモリminiSDminiSD
メインディスプレイ2.4インチ約26万色モバイルASV液晶(240×320ピクセル)2.2インチ26万2144色ASV液晶・QVGA
サブディスプレイ--
ボディカラーブラックコスモ、シルバーサンド、ブルーストリーム、ホワイトアイスブラック×カーディナルレッド、ブラック×メタルシルバー、シルバー×プラチナホワイト

こんな感じですかね。

「手ぶれ補正機能」という単語に「やばいっ」という反応をしかけたのですが、これは動画用のようですね。動画は取らないのでどうでもいいです。

ディスプレイが大きくなったのはうらやましいですが、カメラが300万画素オーバーになった事に関してはいまいち興味がもてませんでした。正直、200万画素でも重過ぎて撮るたびに時間かかってしょうがないんですよね。

おまけにサイズが大きくなってる。今のでも最近の携帯の中では巨大なほうなのに、これは痛い気がします。

というわけで、やってしまった感を無事ぬぐうことができました。

え?必死に見えますか?えぇ。とっても必死です

Ajax and XML-RPC (Graham O'Regan's Blog)
In this post I'm going to look at one of the strongest candidates for the new standard in Ajax communication, the incredibly simple XML-RPC protocol. I'm going to use the Apache XML-RPC library to create a simple web service and create a simple Java consumer before looking at how we can use the JSolait JS XML-RPC library to consume the same service in a browser window.
Apache XML-RPCライブリを使ったXML-RPCサーブレットとJSolait JS XML-RPC libraryを使ったAjaxフロントエンドのチュートリアル。

Apache XML-RPCライブラリを使えばPOJOを簡単にXML-RPCとして利用できるという点とJavascriptライブリ集のJSolaitを使えば簡単にXML-RPCを使ったAjaxフロントエンドをインプリメントできるという点が主旨です。

特にJSolaitを使えば
<script type="text/javascript" src="./jsolait/init.js"></script>
<script type="text/javascript" src="./jsolait/lib/urllib.js"></script>
<script type="text/javascript" src="./jsolait/lib/xml.js"></script>
<script type="text/javascript" src="./jsolait/lib/xmlrpc.js"></script>
<script type="text/javascript">
<!--
/**
 * Load the xmlrpc object and a proxy to the service
 */
var xmlrpc = null;
var server = null;

try{
    var xmlrpc = importModule("xmlrpc");
    var server = new xmlrpc.ServerProxy('http://localhost:8080/xmlrpc/test.rpc', ['echoHandler.echo']);
}catch(e){
    reportException(e);
    throw "importing of xmlrpc module failed.";
}

/**
 * Delete the value in the first box and put the result of the XML-RPC
 * call into the second
 */
function echo(input){
	response = server.echoHandler.echo(input);
	document.myForm.input.value = "";
	document.myForm.result.value = response;
}
//-->
</script>

これだけでXML-RPCサーバと通信してAjax出来てしまうのがグッド。
呼び出しはこんな感じですね。

<form name="myForm" action="" method="post">
<input type="text" name="input" onKeyUp="javascript:echo(document.myForm.input.value)" /><br/>
<input type="text" name="result" /><br/>
</form>

2節を残してバルサが6シーズンぶりに17度目の優勝を飾りました。

試合前にレアルが2-2で引き分けたため引き分け以上で優勝が決まる試合だったので、早朝から気合を入れて見ていたのですが

寝ちゃいました。

前半途中までは記憶があるのですが、目が覚めたときは1-1で試合が終了してエトーとロナウジーニョが抱き合ってました。今日(5月16日)にWOWOWで18時より再放送があるのでしっかり録画しようと思います。

思えば、今期は大量補強をしたものの怪我人続出でどうなることかと思いましたが、サブのメンバーが穴を良く埋めてくれたため、最初から最後までほぼ独走で終わることができました。これだけの怪我人の中でこれだけ強さを出せたのに加えて、イニエスタやマキシ・ロペス、メッシといった若手の台頭もあるので、来期も安泰といったところでしょうか。

とにかくめでたいです。

あとはユーヴェがんがれ。

以前、AJAXのサンプルとして作った郵便番号検索なぜ町域名まで表示しないのか?という質問を何度か受けたのでその説明です。

元データは郵政省の郵便番号データを使っています。(ちなみにデータは当時後悔されていたものです。)
このデータは補足にある通り、以下のフォーマットになっています。

  1. 全国地方公共団体コード(JIS X0401、X0402)……… 半角数字
  2. (旧)郵便番号(5桁)……………………………………… 半角数字
  3. 郵便番号(7桁)……………………………………… 半角数字
  4. 都道府県名 ………… 半角カタカナ(コード順に掲載) (注1)
  5. 市区町村名 ………… 半角カタカナ(コード順に掲載) (注1)
  6. 町域名 ……………… 半角カタカナ(五十音順に掲載) (注1)
  7. 都道府県名 ………… 漢字(コード順に掲載) (注1,2)
  8. 市区町村名 ………… 漢字(コード順に掲載) (注1,2)
  9. 町域名 ……………… 漢字(五十音順に掲載) (注1,2)
  10. 一町域が二以上の郵便番号で表される場合の表示 (注3) (「1」は該当、「0」は該当せず)
  11. 小字毎に番地が起番されている町域の表示 (注4) (「1」は該当、「0」は該当せず)
  12. 丁目を有する町域の場合の表示 (「1」は該当、「0」は該当せず)
  13. 一つの郵便番号で二以上の町域を表す場合の表示 (注5) (「1」は該当、「0」は該当せず)
  14. 更新の表示(注6)(「0」は変更なし、「1」は変更あり、「2」廃止(廃止データのみ使用))
  15. 変更理由 (「0」は変更なし、「1」市政・区政・町政・分区・政令指定都市施行、「2」住居表示の実施、「3」区画整理、「4」郵便区調整、集配局新設、「5」訂正、「6」廃止(廃止データのみ使用))

で、このデータはとても頭の悪いデータでして、そのまま使うには以下の問題を抱えています。

1つの住所が複数レコードにまたがる
26102,"602  ","6028062","キョウトフ","キョウトシカミギョウク","カメヤチョウ","京都府","京都市上京区","亀屋町(油小路通上長者町下る、油小路通下長者町上る、油小路通",0,0,0,0,0,0
26102,"602  ","6028062","キョウトフ","キョウトシカミギョウク","カメヤチョウ","京都府","京都市上京区","中長者町上る、油小路通中長者町下る、上長者町通油小路西入、上長者町通油小",0,0,0,0,0,0
26102,"602  ","6028062","キョウトフ","キョウトシカミギョウク","カメヤチョウ","京都府","京都市上京区","路東入)",0,0,0,0,0,0
これは1つのレコードにまとめる必要があります。
町域の()内に番地範囲が含まれる
01226,"07301","0730177","ホッカイドウ","スナガワシ","ソラチブト(1-349バンチ)","北海道","砂川市","空知太(1~349番地)",0,0,0,0,0,0
01226,"07911","0791181","ホッカイドウ","スナガワシ","トミヒラ(331、459-4、543バンチ)","北海道","砂川市","富平(331、459-4、543番地)",1,0,0,0,0,0
01226,"07301","0730177","ホッカイドウ","スナガワシ","ソラチブト(1-349バンチ)","北海道","砂川市","空知太(1~349番地)",0,0,0,0,0,0
01226,"07301","0730106","ホッカイドウ","スナガワシ","ソラチブト(ソノタ)","北海道","砂川市","空知太(その他)",0,0,0,0,0,0
町域の()内にビルの階層範囲が含まれる
04101,"980  ","9800021","ミヤギケン","センダイシアオバク","チュウオウ(ツギノビルヲノゾク)","宮城県","仙台市青葉区","中央(次のビルを除く)",0,0,1,0,0,0
04101,"980  ","9806190","ミヤギケン","センダイシアオバク","チュウオウアエル(チカイ・カイソウフメイ)","宮城県","仙台市青葉区","中央アエル(地階・階層不明)",0,0,0,0,0,0
04101,"980  ","9806101","ミヤギケン","センダイシアオバク","チュウオウアエル(1カイ)","宮城県","仙台市青葉区","中央アエル(1階)",0,0,0,0,0,0
04101,"980  ","9806102","ミヤギケン","センダイシアオバク","チュウオウアエル(2カイ)","宮城県","仙台市青葉区","中央アエル(2階)",0,0,0,0,0,0
・・・
04101,"980  ","9806130","ミヤギケン","センダイシアオバク","チュウオウアエル(30カイ)","宮城県","仙台市青葉区","中央アエル(30階)",0,0,0,0,0,0
04101,"980  ","9806131","ミヤギケン","センダイシアオバク","チュウオウアエル(31カイ)","宮城県","仙台市青葉区","中央アエル(31階)",0,0,0,0,0,0
町域の()内に別称が含まれる
01214,"097  ","0970034","ホッカイドウ","ワッカナイシ","サカノシタ(ルエラン)","北海道","稚内市","坂の下(ルエラン)",0,0,0,0,0,0
町域に「以下に掲載がない場合」を含む
01101,"060  ","0600000","ホッカイドウ","サッポロシチュウオウク","イカニケイサイガナイバアイ","北海道","札幌市中央区","以下に掲載がない場合",0,0,0,0,0,0
これは町域を空にしてしまえばいいと思います。
町域に「~一円」を含む
10361,"37013","3701301","グンマケン","タノグンシンマチ","シンマチイチエン","群馬県","多野郡新町","新町一円",0,0,0,0,0,0
「一円」を削除する必要があります。ただし次のように「一円」という町域も実在するので注意です。
25443,"52203","5220317","シガケン","イヌカミグンタガチョウ","イチエン","滋賀県","犬上郡多賀町","一円",0,0,0,0,0,0
町域に「~の次に番地がくる場合」を含む
08546,"30604","3060433","イバラキケン","サシマグンサカイマチ","サカイマチノツギニバンチガクルバアイ","茨城県","猿島郡境町","境町の次に番地がくる場合",0,0,0,0,0,0
「の次に番地がくる場合」を削除する必要があります。

というわけでまとめると

  1. 複数レコードにまたがる住所を1レコードにまとめる
  2. 町域の()部分は削除する。
  3. 「以下に掲載がない場合」を含む町域のカラムを空にする
  4. 「~一円」を含む町域のカラムから「一円」を削除する
  5. 「~の次に番地がくる場合」を含む町域のカラムから「の次に番地がくる場合」を削除する

こんな感じで整形できると思います。事業所個別の郵便番号はチェックしてないし、まだ他にもあるかもしれません。

がんばってください。

CodeZine
開発者のための実装系WebマガジンCodeZine(コードジン)へようこそ。

CodeZineは、開発の実装に関する様々な記事を、ソースコードを中心にジャンルに分け隔てなく提供するサイトです。登録は無料です。記事は毎月12~3本くらいのペースでアップロードしていく予定です。記事のソースコードは開発目的であれば、原則的に自由に使うことができます。開発者同士の知識の共有を支援します。
CodeZineでは、広く一般読者からの投稿も受け付けます。ぜひ、ご投稿ください。

というわけで、DBマガジンでおなじみの翔泳社が始めた技術情報サイト。結構前からベータ公開されていたようですが気が付かなかったのでチェック。コード紹介中心というのが売りのようです。RSSも公開されているようですね。

最近、@ITの記事があまり面白くないのでこういうサイトのオープンはありがたい話です。

今年のプレミアリーグの王者はすでにチェルシーに決まったわけですが、アーセナルはマンチェスターユナイテッドとの2位争い、リバプールにはエバートンと争っている来シーズンのチャンピオンズリーグ出場枠の4位がかかった試合でした。

試合は前半開始こそリバプールが一瞬押しましたが、あっという間にアーセナルのテンポとなり、前半終わって2-0。

後半に入って直ぐにリバプールのジェラードがFKを沈めて1点を返しました。後半に入ってからはリバプールのプレスが効きはじめ、いい感じに回ってたのですが終了間際にセスクに決められ終了。

これでアーセナルは今シーズンのプレミア2位を確実にして、来シーズンのチャンピオンズリーグの本戦からの出場枠を獲得しました。

一時期はどうなるかと思ったシーズンでした。まぁ結果オーライということで・・・と言いたいですが、来シーズンは主力選手の移籍問題が山積しているのでどうなることやら。ただ、一方でセスク、センデロス、フラミニが育ったのはラッキーだったかもしれません。

一方のリバプール。これで、イングランドのチャンピオンズリーグ出場枠であるプレミアの4位以内に入ることができなくなりました。チャンピオンズリーグでは決勝進出を果たしているのですが、今年からワールドカップ同様前シーズンのチャンピオンの自動出場枠が消滅したため、来シーズンの出場が完全に消滅しました。

リバプールの4位以内獲得の黄色信号とチャンピオンズリーグの快進撃が続いたあたりから、FAはUEFAに特例としての出場枠を懇願したらしいのですが、そんな虫のいい話が通じるわけもなく却下されたようです。

これで万が一(個人的にはミランが圧倒的に有利と思うから)、リバプールがチャンピオンズリーグに優勝した場合、来シーズンのチャンピオンズリーグはディフェンディングチャンピオン不在ということになります。

そもそも、今年のリバプールはチャンピオンズリーグの試合の次のプレミアの試合の成績が酷く、ほとんど勝ってません。これでは、チャンピオンズリーグを優先させて国内リーグを苗がしろにしてきたと言われても文句言えないと思います。これで、チャンピオンズリーグを落とした日にはリバプールの今シーズンは一体なんだったんだということになります。

今シーズンに限って言えば今日現在でチャンピオンズリーグ8強の中で来季出場権のないチームはリバプールだけです。リバプールには国内リーグあってのチャンピオンズリーグってことを忘れないでこの結果を恥と思ってほしいですね。

勝ち点76同士で並んだ正に首位決戦。

私事ではありますが、アーセナルはプレミアでは早々にチェルシーに後塵をなめ、チャンピオンズリーグではいつもの如くさっさと敗退するし、今年は行けると思ったバルサもリーガはともかく、チャンピオンズリーグでは惜しくも破れ、ユベントスはチャンピオンズリーグで勝てると信じていたリバプールにトリノで決められ・・・と期待を持たされながら悶々とする試合観戦が続く中、記事にする気にもならなかったわけですが、今日はやってくれました

戦前はミランのホーム、イブラヒモビッチが欠場、ミランはチャンピオンズリーグ決勝進出を決めた後、ということもあり、かなり悲観的になってました。正直、引き分けでよしくらいの感じでした。

ところが今日のユーヴェは前から積極的にプレスをして、中盤のスペースやパスコースをつぶし、ゴール前では完全に鍵をかけてミランに何もさせませんでした。特にピルロ、シェファー、カカには仕事をさせなかったのは大きいです。

一方で攻撃も特にこれといったことはできなかったのですが、これはこれでアウェーでのカペッロ采配ということで評価できると思います。

唯一の得点はデル・ピエロからのバイシクル・パスからトレゼゲのヘッドで決まりました。その他のシーンではスタムとネスタが完全に抑えていたのでラッキーパンチだったと思います。

まぁ、つまらないサッカーと言われればそれまでですが、1-0で勝つという今年のいい時のユーヴェを象徴するような試合だったと思います。

これで勝ち点が3に開いたわけですが、残り4節、チャンピオンズリーグに敗退してリーグに専念できるユーヴェとチャンピオンズリーグの決勝とチャンピオンズリーグ圏内がかかってるウディネーゼやパレルモとの試合を残しているミラン・・・

本当はここで「行ける」と言いたいのですが、チャンピオンズリーグでそれを言ったがために敗退したので辞めておきます

・・・って言っちゃったよ

プロフィール

このアーカイブについて

このページには、2005年5月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2005年4月です。

次のアーカイブは2005年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。