Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

「巨大な検索システムを支える技術を詳しく説明した良書である」

Googleの技術を公開してくれてるらしいのにこんな感じの歯切れの悪い書評しか無いなぁと思って読んでみたら理由がわかった。

よくわかんない。だって難しいんだもの。

memcachedすら使ってないおれのシステムとは開きがありますな。ビリオンダラーを目指すならこういうのも知ってないと駄目かも。といった感じです。

鳥肌実「私もねえ、外から鍵の掛かった部屋にはいってましたよ!」

鬱病の発作?でQQ車で運ばれて1週間程入院して戻ってきましたー。

初めての体験でいろいろ書くことが溜まりましたがそれ以上に仕事が溜まったのでそれを終わらせてから書くことにします・・・。

ADSLモデムが焼けた。

機器がつぎつぎと焼けるなあ。PCのせいかとおもって弄ってたらネットワークコントローラーを削除してしまって復活するのに苦労しました。

ADSL契約したときにもらったやつなのでまたくれるのかな?

フリーになったのに以前のページだとあまりにそっけなかったのでいろいろと更新してみました。

・p0t.jpドメインをDreamHostへ移行。 ・MTをMTOS4.1に移行。 ・p0t.jpのブログ以外のコンテンツをMT管理化に。

まず500円のさくらを解約してドリホに移行。ついでにMT4.1にバージョンアップ。MT4.1はブログ以外にも普通のページを作れるCMS的な機能が付いてたのでトップページとかもMT管理下へ移行しました。

URLが http://p0t.jp/mt/ から http://p0t.jp/ に代わるので引越し用の.htaccessを作成

Redirect permanent "src path" "dst url"

を記事の分だけ書いて引越し。

<MTEntries lastn="0">Redirect permanent <$MTEntryPermalink relative_url="1"$> <$MTEntryPermalink relative_url="1"$>
</MTEntries>

こんな感じのテンプレを作って出力結果をちょっと置換してから.htaccessとして置くと膨大な量の記事があってもうまく引越しできました。

ただ気になったのが、はてブとかで古いURLと新しいURLとでブクマが分かれてしまうこと。

はてブの方で301だったら引越し先のブクマとマージして古い方は削除とかやってくれないかな。(俺が製作者だったら面倒臭くてやらないだろうけど・・・)

プログラミングGauche
  • プログラミングGauche
  • オライリージャパン(2008-03-14)
  • オライリージャパン
  • (著)Kahuaプロジェクト
  • (監修)川合 史朗
  • 定価:¥ 3,360
  • 新品価格:¥ 3,360
  • 中古価格:¥ 2,990
  • ASIN:4873113482

「これは趣味だ。趣味としての読書だ。マンガを買うのと同じようなものだ・・・。そうなんだ・・・。」

と繰り返し自分に言い訳してからプログラミングGaucheの購入ボタンを押した・・・。

そうしないと、一日の大半をschemeインタプリタの実装に費やし、

「Kahua以外で仕事を請けないっ!!!」

と宣言して餓死することになってしまうのだ。(偏見)

本当に怠惰なプログラマ(ラリーウォール的な意味じゃなくて)にうれしいツールirb・・・。

もちろん、俺も愛用しています。

で、irbに.irbrcなんてあったんですな。.irbrcに下記を追加。

require 'irb/completion'
require 'pp'
require 'rubygems'
require 'activesupport'
require 'hpricot'
IRB.conf[:SAVE_HISTORY] = 128
IRB.conf[:AUTO_INDENT] = true
IRB.conf[:PROMPT_MODE] = :SIMPLE

うわ、これはうれしい。

参考: irb – Rubyリファレンスマニュアル

passenger_error

passenger(mod_rails)のエラー画面かわいいなあ。

簡単ジオコーディングに関して、ジュンヤさんから

「Googleマップ本家にジオコーディングAPIが出来たのだからそっちを使った方が良い」

と聞いたのでちゃんとドキュメントを読んでみました。(10分もかからないのだから最初から読め)

なるほど。本家にもこんな簡単なAPIがあったんですか。 地図関係のgemを探してみると一杯ありました。中でもこれは今回の用途にあってそう。

% sudo gem install google-geocode
% irb -r google_geocode
>> GoogleGeocode.new(GOOGLE_API_KEY).locate("東京タワー").coordinates
=> [35.658587, 139.745428]

うーん。簡単。 Yahoo!マップとどっちが精度高いのかな?

関連: 簡単ジオコーディング

「あ~○○さん?知ってる知ってる」

「よかったら紹介しようか?」

実際は懇親会で名刺交換したとか、ブログコメント欄でやり取りしたとかそんな程度。そんなことをよくやる人がいる。ネームドロッパーというやつだ。

実際に単に友人が多いという人はいるがネームドロッパーには要注意だ。

(今日の俺は口滑らか過ぎたかな?)

(ちょっと2割り増しで話してなかったかな?)

個人的にもそうならないように注意したいと思っている。

でも何故いけないの?ビジネス上の付き合いなら確率の問題から言って、片っ端から「知り合い」ってことにした方が最終的には得じゃないの?

でもそうじゃない。そうじゃなかった。

フリーになってから、誰かに人を紹介することがよくあることに気付いた。 信頼できて素敵な人にほど、いい加減な人は紹介できない。

「俺なんかよりよっぽど信頼できて確かでいい仕事をする」人とか、

「あれ?この人より良い所が一つでも俺にあったっけ?」という人などを紹介する。 元々知人が多い方でもないので全力で渾身の紹介をする。 紹介は、する方にとってそれぐらい重い。

そうすると自然と良い仕事、素敵な人を逆に紹介されるようになってきた。

「良い人は良い人を紹介する」 「良い人は良い人を紹介される」 「良い人は良い人から紹介される」

単純なことだけど、Googleのページランクみたいなアルゴリズムが働いている。

「良いコンテンツを作ること。良いサイトへリンクを張ることは自サイトの価値を上げる。」 「良い仕事をすること。良い人を紹介することは自分の価値を上げる。」

ネームドロッピングはスパムと同じだ。現実世界では効率が悪く、ワークしない。

またリアルな例をひとつ。

「サイトリニューアルにあたって、霊園の地図を載せたい。」

霊園データは数百。手作業ではちょっと無理。そこでGeocoding.jpのAPI(というかGoogleマップ)を使って住所から経度・緯度の座標に変換することに。

require 'open-uri'
require 'cgi'
require 'rubygems'
require 'hpricot'

class Geo
  def self.lookup(address)
    doc = Hpricot(open("http://www.geocoding.jp/api/?v=1.1&q=#{CGI.escape(address)}"))
    {:lat => doc.at("lat").inner_text.to_f, :lng => doc.at("lng").inner_text.to_f}
  end
end

「5秒に1回ぐらいにしてください」と書いてあるので回す場合はsleep 5とか入れてください。

% irb --simple-prompt -r geo
>> Geo.lookup "東京都港区芝公園4-2-8" 
=> {:lat=>35.658634, :lng=>139.745411}

かなりいい加減な住所でもGoogleマップがいい感じに取ってくれました。(大体8割ぐらい?)

「だから霊園ってなんだよ!」というのはスルーで。