2006年08月31日
PostgreSQL or Oracle
ぷち放置プレイ中だった検索エンジンをDB対応にしてみた。
今までブログやエントリーのメタ情報をメモリに持っていたけど、とうぜんメモリがいっぱいになれば動かない。と言うことでメタ情報をメモリに持たず、DBに保存して、必要になったときにSELECTしてブログインスタンスにし、それを使うようにした。
そしてWeb上からガンガンデータを落としつつ一晩動かしてみると・・・。
おーー!DB動かしてるマシンのCPUが100%に張り付いてる~!クロールプログラムがDB待ちでめちゃ遅い~~! orz
エントリーが20万件ほどで、もう使い物にならない程度に遅い・・・。これじゃメモリに保持した方がまだマシだったな。
使用しているDBはPostgreSQLの7.1.3なんだけど、やっぱPostgreSQLに巨大なテーブルは無理なんだろうか。以前Oracleを使ったシステムで100万件以上のデータでもサクサクだったからPostgreSQLもある程度はがんばってくれると思ったんだが・・・。
ちょっとWebで検索してみると、やっぱりPostgreSQLは巨大なデータには不向きのようだ。20万件で遅くなるのはチューニングしてないからだろうけど、半日データを集めただけでいっぱいいっぱいになるようではチューニングしても限界がありそうだ。
俺的にはPostgreSQLよりもOracleの方が知識はあるので(Oracleの資格、Oracle Silver持っててOracle Gold取ろうと勉強してた)、初歩的なチューニングならわかる。が、Oracleは鬼のように高い。不特定多数に公開できるライセンスで一番安いのが60万・・・。ゴクリ・・・。
う~む、DBに保存するのがエントリーのメタ情報だけだから、自分でDB的なモノを作った方が早いかもしれない。と言ってもこの場合のDB的なモノというのは単に転置ファイルなだけだけど。
まぁどっちにしろ今回のDBを使う化計画は失敗と言うことで。
今後の方針をまた考えねば。
大きなデータを扱おうとするといろいろ難しいなぁ。
追記
と思ったら普通に動き出した。
遅かったのは何なんだろう。再起動したわけでもなく、遅い状態からいきなり早い状態になった。
今のところDBマシンのCPU使用率は50%前後なので、もうしばらく様子を見てみる。
2006年08月30日
ろおじ
今朝の読売新聞に、京都では路地を"ろおじ"と発音するとあった。
俺は京都に住んでるけど全然そんなこと聞いたことがない!と思ったけど先日のオムライス専門店のエントリーで"17番路地"と書いたけど実際の看板には"17番ロージ"と書いてある。ふ~む、確かにろおじやそれに準ずる発音をするようだ。
TVやネットが発達した現代だから、京都独特の言葉が無くなっていくのは仕方ないんだろうなぁ。俺の親の世代ですでに京都弁では無く、京都風関西弁って感じだし。
たとえば「○○さんが来ない」の「来ない」を京都では「きーひん」大阪では「けーへん」神戸では「こーへん」と言った京都風の関西弁は使うけどコテコテの京都弁はほとんど聞かないし話せない。
うちのおばあちゃんがコテコテの京都弁(舞妓言葉ではない)で、ゴミの事を五目と言っていたのが印象的だ。小さいときからあんまりしゃべったことがないのでその言葉は俺には継承されなかったけど。
仕方ないとはいえ、京都らしさの一つが消えていくのは寂しい気がするなぁ。
2006年08月28日
オムライス分補給
前から行きたかったオムライス専門店のルフに行ってきた。
四条通から先斗町を北に向かって行って、上に17番路地と書いてある細い路地を西へ行くとある。壮絶にわかりにくいところにあるので知ってる人以外は気がつかないんだろうなぁ。そんな感じもナイス。
四条周辺のオムライスの中では今のところ一番だな。当分はここのオムライスを食べよう。
2006年08月27日
雷
我が家はTVのアンテナが共同アンテナになっているんだけど、昨日の雷雨でその共同アンテナがやられたらしくテレビの映りが激しく悪くなってしまった。
そりゃ昨日の雷はすごかったもんなぁ。雹も降ってたし。
めちゃ雷なってる時に窓から外見てたけど、雷の音が「バシャーーンッッッッ!!!!」とか「バリバリバリッッッ!!!」って耳を劈くような大きな音で結構怖かったな。(それ以上に家で動いてる複数のサーバが雷で壊れないかの方が怖かったが)
最近見てたアニメ桜蘭高校ホスト部の主人公が、普段は怖いもの無しな感じなんだけど、雷がなると怖くて動けなくなると言うありがちな設定で、見てるときは「高校生にもなって雷が怖いのかよプギャー」と思っていた。
が、小さいときに外で遊んでいて、急に夕立が降ってきて近くの屋根の下に避難、雨が強くなり動くに動けず昨日みたいなすさまじい雷が鳴ってたらトラウマになるぐらいは怖いだろうなぁ。
俺は雷は小さいときから大丈夫だったんだけど、今は我が家のマシンたちが雷サージでやられないかで怖くなってきた。雷、マジ怖い。
2006年08月26日
2006年08月23日
2006年08月20日
カラオケ10時間
学生時代はわりとよくカラオケの深夜のフリータイム(12時ぐらいから朝までのやつ)で歌っていた。でもさすがに社会人になるとほとんど行ってなかったけどお盆休みと言うことで行ってきた。しかも夜8時から朝の6時までの10時間を二人だけで!一人当たり5時間歌ったことになる。二人で10時間連続カラオケは新記録だ。そりゃ歌ってる最中にマイクの電池切れるっちゅーねん。
5時間もそんなに歌える曲数ねぇよ!と思ってたけどジュディマリとYUKIを片っ端から歌うと、結構それだけで5時間かかるものね。後はELTとかセンチメンタルバスとかヒスブルとか。ううっ!5時間歌って男性ボーカルの曲ゼロかよっ!! orz
ホントは女の子の前でかっこつけるための曲とか練習しないとダメなんだけど、ぶっちゃけそういう曲は性に合わないのか歌ってて楽しくない。歌おうと思えばヘタクソだけどスピッツとかバンプとかTMRとかいけるんだけど(あとガガガとかw)、歌って楽しいのはやっぱJAM&YUKIだなぁ。
俺が趣味に走ってひたすら女性ボーカルの曲を歌っている中、一緒に行った友達(女の子)も趣味に走ってラルク、X JAPAN、TMNとひたすら男性ボーカルなのでおあいこと言えばおあいこだ。隣の部屋に入ってた人らは「お前ら歌う曲逆逆!!」と思っていただろうw
この日はジュディマリの俺的に難しくて手を出してなかった曲も歌ったんだけど結構歌えてうれしかったな。このサイトの名前にもなってるRainbow Devils Land、カメレオンルミィ、ランチインサバンナなどなど。
カメレオンルミィが歌ってて楽しいな。むずいけど。君にムラムラ紫色♪やりたい事やまやまやまやまぶきイェロー♪
YUKIは新曲のふがいないやがいい感じだった。YUKIの歌詞は結婚して家庭を持ったからか、優しさがにじみ出るような歌詞だったけど、俺的にはJAM時代の元気いっぱいの歌詞のほうが好きだった。んで最近はYUKIの「つらいことがあっても泣いてばかりいなくて前へ進もう」って感じの好みの曲が多くなってきた。ドラマチックとか最高やね。
新曲のふがいなやでは珍しく"弱い自分"を歌詞にしててびっくり。でも歌詞見てたらYUKIがどんな気持ちで歌詞を書いてたか想像して涙出てくる。「誰かのせいにしたいよ、ふがいないや。いや。嫌。」そりゃ病気じゃ誰のせいでもないからなぁ。誰のせいでもないから余計につらいってのもあるんだろうなぁ。そんな弱い自分を出しつつも「開いた穴をふさごう、ちがいないや。」って前向きなので、歌ってて元気が出る。ちがいないや~♪いや~♪
いつもエントリーを書くと、「言いたいことは結局なんやねん」状態になるけど、今日の言いたいことは「歌って元気の出るYUKIの歌詞は最高だ」と言うことだ。
歌って元気が出たが、明日から仕事と言う現実を突きつけられ即鬱になる orz
2006年08月15日
小泉首相 靖国参拝の理由語る
日テレNEWS24「小泉首相 靖国参拝の理由語る」
小泉総理の参拝後インタビューノーカット版(約16分)
おー、やっぱり公約通りに15日に参拝したね。
反対しているのは中国韓国だけ、いつ行っても批判されるので8月15日に参拝しても同じ、参拝を問題にするのは特定勢力だけ。ときっぱり言うのはさすが小泉。
個人的には参拝してもしなくてもどっちでもいい。でも、中国韓国そして朝鮮系日本人の言いなりにはならないという態度は評価できる。
ヘタレには小泉の後は任せられない、と思って有力候補の安倍晋三をどんな人かとWikipediaで調べてみると・・・。
>講演終了後の懇談会で「北朝鮮など核攻撃で焦土にしてやる」と発言。
ちょwww安部さんwwそれ言いすぎwwww
まぁソースが無いので信憑性があるかどうかは不明。
顔だけ見てたらなんか頼りないけど、中韓や朝鮮系日本人をはじめとする反政府分子の圧力に屈しない精神があればいいな。
2006年08月13日
夏休み
ようやく夏休みに突入。
最近休みの日はフットサルの練習やったり遊びに行ったりで、ぜんぜん引きこもれなかった。
やっぱ俺は一日何もせずボーっとしないと休んだ気にならないなぁ。
ここでいう何もせずボーっとというのは、惰眠をむさぼったりマンガ読んだりアニメ見たりプログラミングしたりして、家の中で無為に過ごすことを指す。
と言うことで今日から射光カーテンをしめきり、引きこもり生活復活。
引きこもり生活突入の直前に、夏だしと言うことで海で泳いできた。
水島(GoogleMap)という所で、なんと無人島、というか離れ小島。陸から船で5分、10分ぐらいで着くぐらいの近さで、砂浜とちっちゃい丘(?)ぐらいしかない島。トイレだけはある。
シュノーケルつけてひたすら泳いでたけど気持ちよかったなぁ。ひたすら泳いでたおかげで、体の裏っかわだけめっちゃ焼けた・・・。去年も海行って焼けすぎてひどい目にあったので、今年は焼かないと思ってたんだけどヒリヒリして痛すぎるぐらいに焼けてしまった。さらに日焼け止めを塗ったんだけど、塗り方にムラがあって、背中がまだら模様に焼けてる・・・orz 結構日焼け止めのオイルって効果あるのね・・・。泳ぐから流れちゃうし、どうせ気休め程度だと思ってた。
以前なら、海行ったら疲れて死んでるだろうけど、フットサル始めたおかげかそれほど死ななくなってきた。体動かすっていうのは偉大だなぁ。サッカーうまくなるのもなんか楽しいし、休みの間も走りこみしたりして体力つけようかな。
まぁそれはともかく休みの間に検索エンジンのスケーラビリティの問題だけでも解決せねば。DB使うのにO/Rマッピングを使おうかと思ったけど、とりあえずDbUtilsを使おう。検索以外にもいろいろしようと思うと、O/Rマッピングのほうが後々楽だろうけど、そうなったらそのときまた考えよう。
さぁ、カーテン締め切った部屋で美白のツルツルゆで卵肌を取り戻しつつコーディングがんばるぞ。
2006年08月09日
New PC
以前から新しいPC欲しいなー。と思っていたけどCore 2 Duoが出るまで我慢してきた。
そして!ついに発売されたので買ってしまった。
用途はゲーム用なのでグラフィックも良いのにしてみた。
Core 2 Duo E6600(2.40G) メモリ2G GeForce7900GT
うひょー、速い、快適。まだAoE3しかインスコしてないけど、サクサクだ。
速いのは良いんだ。 しかし爆音が!!
CPUクーラーをでかいのに変えたりして静穏さには気を配ったんだけど、GeForce7900GTがうるさすぎる。小さいファンが全力で回っているようで、風切り音がひどい。
GPUの温度はアイドル時55度、高負荷時70度ぐらいなので、ファンの回転を下げることもできそうだけど・・・。
こんなにうるさいんだったら、最近遊ぶ洋ゲーの数も減ってきたことだし、性能低くてもファンレスグラフィックカードにしておけばよかったorz
次はMeromに期待だなぁ。ファンレスPCで静かな生活を取り戻したいぜ・・・。
2006年08月04日
コサイン尺度
文章の類似度を測るベクトル空間モデルで使う、二つのベクトルのコサインを出力するプログラムを書いてみた。
作ってから見つけたけど↓の本に詳細が詳しく載ってた。こっちの本には丁寧に解説されてあるので、作る前にこっちの本を読んでおけばよかったorz
内積ってどうやるんだっけとか、ノルムって何?どう計算するんだとか検索しまくったよ・・・。
public double getベクトルのなす角の余弦( double[] vector1 , double[] vector2 ){
if( vector1.length != vector2.length ){
throw new IllegalArgumentException("ベクトルの次元が一致しない");
}
double denominator = norm( vector1 ) * norm( vector2 );
double numerator = innerproduct( vector1 , vector2 ) ;
return numerator / denominator;
}
/** ノルム */
public double norm( double[] vector ){
double sum = 0;
for( int i = 0 ; i < vector.length ; i++ ){
sum += vector[i]*vector[i];
}
return Math.sqrt( sum );
}
/** 内積 */
public double innerproduct( double[] vector1 , double[] vector2 ){
double sum = 0;
for( int i = 0 ; i < vector1.length ; i++ ){
sum += vector1[i] * vector2[i];
}
return sum;
}問題はコレであっているかどうかだw
同じベクトルだと1になるし、ちょっと変えるとちょっと減る。一応あってそうだが・・・。
やってみたら単純な計算だけど内積って何だっけレベルのしょっぱい頭の俺にはハードだった・・・。
まず
の数式(俺にとっては暗号)の解読からつまずいたからなぁ。
人生、学校の勉強がいつ必要になるかわからないモノね・・・。
2006年08月01日
検索システムでけたー!
と言っても仕事サボりつつ、超シンプル版Webインターフェイスを10分ぐらいでw
ブラウザで表示し、検索単語を入力して実行ボタンを押すと検索結果が表示される。
検索対象はブログデータ17Gぐらい。インデックスファイルが700Mほど。
Web表示は生Servletを使った。Strutsとかフレームワーク使ってもよかったけど、どうせ今はシンプルな処理しかしないし。
公開するとかいろいろ考えるとセキュリティやらちゃんと設定しないとダメなので
などを読んでTomcatを勉強してみる。うひ~、本代がかさむ。
文章類似度
コマンドライン上のインターフェイスだけだけど、一応ブログ全文検索システムはできた。スケーラビリティに思いっきり問題があって、クロールするときに1Gのメモリで25万記事ぐらいが限界、でもそれは解決が難しい問題ではないのでとりあえず見なかったことにする。
で、次は「似たようなブログを探したい」と言う要求に応えるための機能を考える。
ネットを活用している人は、一つぐらい巡回しているブログがあるだろう。単に友達のブログ、と言うのであれば特に似たブログを探す必要はない。でも、たとえば「最新自作パーツのブログ」なんてのがあった場合、そこだけではなくてもっと別のブログからも情報を得たいと思うことがある。そういう場合はGoogleで検索したり、トラックバックから探してみたりするけどなかなか良いブログに巡り会わない。
そこで、ブログAを入力として、内容が似ているブログのリストを出力する機能があればよいと考える。
「内容が似ている=求めているブログ」かどうかはまた別の議論になるけど、とりあえずこう仮定する。
文章間の類似度の計算の仕方はいろいろあるみたいだけど、まずはベクトル空間モデルを使おうかと考え中。これは簡単に言うと1単語を1次元とした多次元ベクトルで文章を表して、そのベクトル同士でどれぐらい似ているかを判断する方法。
↓の本を参照した。ベクトル空間モデルは軽く触れられている程度だけど。
Wikipediaにもベクトル空間モデルの解説がある。なんかTeXの数式がぶっ壊れてるけど・・・。
どれぐらいの計算量が必要になるのかわからないけど、検索要求があってから1秒もたたずに結果を返せるんだろうか。遅い場合は前もって計算しておく必要もありそうだ。
全文章全単語でやるとえらいことになりそうなので、前もってブログの特徴語を取り出し、その特徴語で検索、引っかかったブログでまた特徴語を取り出して、その特徴語のリストをベクトルにして比較すれば計算量が抑えられるかな。特徴語はクロール時に抽出できるのでだいぶ処理は軽くなりそうだ。
で、先ほど紹介した本の著者、徳永健伸ってどんな人かなと検索すると、ふむふむどっかの大学の先生か。徳永研究室・・。ん?研究室のメンバーに見覚えのある名前が・・・。って数年前まで一緒のグループにいたKさんじゃないっすか!
社会人ドクターと言うことで行っているらしい。世間は狭いなぁ。
そして、来週仕事先の研究所でこの徳永先生にトークをしてもらえるらしい。世間は狭いなぁ。
どんな話をしてもらえるかまだメール来てないけど聞きに行ってみよう。
