Hatena::ブログ(Diary)

techlog RSSフィード

理解というものは、つねに誤解の総体に過ぎない
 「スプートニクの恋人」とか「かえるくん、東京を救う 」より

こちらになりました → http://sadah.hatenablog.com/

2011-06-14

[][]Web開発者のための大規模サービス技術入門

「Web開発者のための大規模サービス技術入門」を読了した。

先に書いてしまうと、これは機械学習テキストマイニングをやっている大学生には、この本はとても参考になるのではないかと思った。。もし僕が大学生のときにこの本を読んでいたら、その大変さにちょっと絶望しながらも、けっこうわくわくしたと思う。

はじめに書いてあるけど、これははてなのインターシップの資料をベースに書籍化されたもの。目次はこんな感じ。

​第1回 大規模Webサービスの開発オリエンテーション―全体像を把握する​​

​第2回 大規模データ処理入門 ―メモリとディスク,Webアプリケーションと負荷​​

​第3回 OSのキャッシュと分散 ―大きなデータを効率良く扱うしくみ​​

​第4回 DBのスケールアウト戦略 ―分散を考慮したMySQLの運用​​

​第5回 大規模データ処理[実践]入門 ―アプリケーション開発の勘所​​

​第6回 [課題]圧縮プログラミング ―データサイズ,I/O高速化との関係を意識する​​

​第7回 アルゴリズムの実用化 ―身近な例で見る理論・研究の実践投入​​

​第8回 [課題]はてなキーワードリンクの実装 ―応用への道筋を知る​​

​第9回 全文検索技術に挑戦 ―大規模データ処理のノウハウ満載​​

​第10回 [課題]全文検索エンジンの作成 ―基本部分,作り込み,速度と精度の追求​​

​第11回 大規模データ処理を支えるサーバ/インフラ入門 ―Webサービスのバックエンド​​

​第12回 スケーラビリティの確保に必要な考え方 ―規模の増大とシステムの拡張​​

​第13回 冗長性の確保,システムの安定化 ―ほぼ100%の稼動率を実現するしくみ​​

​第14回 効率向上作戦 ―ハードウェアのリソースの使用率を上げる​​

​第15回 Webサービスとネットワーク ―ネットワークで見えてくるサービスの成長​​

​特別編 いまどきのWebサービス構築に求められる実践技術 ―大規模サービスに対応するために​​

読み終えて、これは大規模サービス技術入門ではなく、はてなの基盤技術入門だと感じた。

最初のほうと、最後のほうの内容は、「サーバ/インフラを支える技術」(読んだ時のエントリはこちら サーバ/インフラを支える技術 - techlog)を読んだほうが詳しくていい。インフラ周りの話は、この本よりも充実している。もちろんこの本にしか書いていないこともあるから、合わせて読むとなお良い。

中盤では、機械学習テキストマイニングの領域の話題が続いている。そこまで高度な内容ではないので、背景知識があまりなくても読み進めることができる。

このあたりを読むと、機械学習テキストマイニングが、実際にどう使われているかわかる。はてなに特化しているぶん、とても実地的で具体的な内容になっていて、そこがとても面白い。


僕が大学生だったのは10年前なので、もう一昔前になる。そのころにはもうGoogleがあって、いまさら検索の基礎を勉強しても、どうにもならないのではないかと思った。でもあの先にはこんな面白い世界が広がっていたのかと、いまになってちょっと驚く。

機械学習テキストマイニングの最初の一歩のハードルは、けっこう低くなっている。いろいろな言語に対応したライブラリが充実している。その分研究としてのハードルは上がっていると思うけど ^^;

以前、Luceneのライブラリを使って、簡単なスペルミス修正プログラムを作った。Javaでも150行くらいでできた。

こういうことが比較的簡単にできるし、本書を含め日本語の書籍もいろいろある。それでちょっと遊んでみるぶんには、すごくいい時代だと思う。


2007-06-26

[]人力検索というか、認証というか、ポイントというか、なんともいけてない

質問を登録する流れで、パスワード入力が求められた。

入力した。

Internal Server Errorが発生した。

仕方がないので戻って、再度パスワードを入力した。

Internal Server Errorが発生した。

仕方がないので戻って、再度パスワードを入力した。

Internal Server Errorが発生した。

仕方がないので戻って、再度パスワードを入力した。

やれやれだ。

あれ、なぜかはてなポイントがマイナスになっている。

質問履歴を見てみると、同じ質問が3件登録されていた。

やられたorz

仕方がないので、問い合わせフォームから問い合わせをした。

迂闊だったのは認めるけど、こういうお金が絡むところが甘いとは思わなかった。

はてなといえども、疑って掛かるべきだった。

f:id:j7400157:20070626013004j:image

2007-05-15

[][]はてなダイアリーキーワード自動リンクAPIApache XML-RPC

本をさがそうを作っていたとき、はてなダイアリーキーワード自動リンクAPIで苦戦していた。

Apache XML-RPCを使うと、以下のように日本語がdumpされてしまい、うまくリンクが取得できなかった。

はてな
はてな

そこで僕のとった行動は、XML-RPCのソースをとってきて、がんがんデバッグして、日本語を変換しているところを突き詰めて、コメントアウトしてしまうという、恐ろしく強引な手法・・・。

ちなみに修正したのはXMLWriterImplの212行目以降。

//					if (canEncode(c)) {
//						w.write(c);
//					} else {
//						w.write("&#");
//						w.write(Integer.toString(c));
//						w.write(";");
//					}

なにかおかしいと思いつつ、最初は文字コードとその範囲を調べて、適当に値を突っ込んでいたが、結局わけがわからなかったので、コメントアウトしてしまった・・・。

オープンソースのコードを読むのはこのときが初めてで、すごく大変だった。

# よい経験にはなったけど・・・。


しかし、今日ついに解決。

昨日コメントをいただいた、id:Yoshioriさんが公開しているはてな認証APIのライブラリに、はてなダイアリーキーワード自動リンクAPIのコードもあった。

実行してみると、ちゃんと日本語がリンクされて返ってきている。

ソースを確認してみると、僕のコードとの違いがわかった。

			map.put("body", body.getBytes("utf-8"));

パラメータをMapでリクエストするんだけど、bodyの中身がbyte[]だ。

僕はStringをそのまま突っ込んでいた・・・。文字コードについては何度も確認していたが、byte[]でよいとはわからなかった。

いろいろな文字コードでgetByteして、それをStringに直したりはしたんだけど。

XmlRpcClientConfigImplでconfigの文字コードを何度も変えていたんだけど。

いっぱい苦手な英語を読んで頑張ったんだけど。


やっぱり独学だときつい部分もあるなぁ。独学でしか身に付かないことも多いけど。

# 気合とか、根性とか・・・。

ひとのコードを読むのは、やっぱり大事だ。

2007-05-14

[][][]はてな認証APIを試してみる

はてな認証APIのサンプルを作っている。もちろんJavaで。

検索したら、すでにライブラリを作っているひとがいたので、とりあえずこれで試している。

2時間くらい試行錯誤したが、とりあえず動いた。

無理やりSeasarを使おうとしているため、ハードルが高くなってしまう・・・。

S2JSFで外部サイトにリダイレクトってどうやればいいんだ、と悩むが、普通に以下のコードでできた。

response.sendRedirect("リダイレクト先URL");

今の時点だと、かなり適当にActionでresponseをDIさせて、そこで取ってきている。これでいいんだろうか・・・だめだな。

ほんとうはLoginCheckInterceptorとか作ってやるんだろうなぁ。まあとりあずローカル環境での動作確認ということで。

あとはライブラリのクラスとメソッドを参考に、ちゃんとはてな認証APIを実装しようっと。認証部分でブラックボックスというのも、なんとなく嫌なので。はてなに任せる時点でブラックボックスだけど。

2007-05-02

[][]はてなダイアリーにした7の理由

遅ればせながら、はてなダイアリーを使ってみようと思った。

はてなのサービスってどうなのかな

やっぱりITに関わっていると、「はてな」というキーワードはよく目にする。

これまた遅ればせながら、はてなブックマークを使い始めて、それなりに使いやすかったので、こちらも使ってみようと思った。

「ソーシャルネットワーク」という部分で、他のサービスよりも先行している気がしたので。

はてなの他のサービス

はてなダイアリーを使いながら、他のサービスも使っていけたらいいなと思って。

はてな自体はあまり使っていないけど、XML-RPCのWebサービスは全て使ってみた。そこで面白いなと思ったので。やっぱりAPIが公開されているというのはよい。

データのインポート/エクスポート

これがけっこう大事。データがエクスポートできる。いざとなれば、Movable Typeに戻ることも簡単。エクスポートできるサービスって少ないと思う。

昔調べたときには全然なかった。それでMovable Typeを使っていた。

Movable Typeが使い辛い - 1

かれこれ3年ぐらい前からMovable Typeを使っていたが、僕にとっては不便な部分がいくつかあった。

Movable Typeのせいではないけど、レンタルサーバ(Xrea)で運用していると、動作がもっさりしている。エントリーの更新などでしばらく待つ。あるいはタイムアウトしてしまう。

自由度が高すぎて、使いこなせない。

Movable Typeが使い辛い - 2

バージョンアップが面倒。

Movable Typeが使い辛い - 3

携帯端末からの更新がデフォルトでサポートされていない。(他のサービスを使えばできるけど)

W-ZERO3も買ったことだし、さくさく更新ができればと思って。

というわけで、やっぱりどっかがサービスとしているBlogに乗り換えたいと思っていた。

はてな記法

仕事でWikiやtDiaryを日常的に使っているので、はてな記法も特に苦にならない。

そんなこんなで、はてなダイアリーはじめました。