春山 征吾のくけー

https://www.unixuser.org/~haruyama/blog/ に移転しました http://wiki.livedoor.jp/haruyama_seigo/d/FrontPage @haruyama タイトルが思いつかないときはそのときかかってた曲をタイトルにしています.

2012/02/21 1つのSolrに10億文書

2012/02/21 Mixiボイスのマイニングのために, 1つのSolrに10億文書つっこんでマイニングできるようにした. 11月終わりからのデータをためていって昨日10億を越えた.

全文書に対して1日区切りのdateのファセットを新規に取ると1分くらいかかる. マイニング用途としては問題ない. 検索で絞ればもっと速い.

Scalaで書いた 自作のフィルタ で形容詞/名詞/動詞をフィルタしている. また, 分析には Perl や Clojure を利用している.

Solrの仕組み的には21億文書までいけるが, ディスク側の制限があるのでそこまではやらない.

2012/02/19 サッカー引き分け 2012/02/20 SICP読書会2章開始

2012/02/19 文京区区民大会は引き分け. 2点取られて2点取り返したという試合だった. 2失点ともからんでしまって残念. 来週からは決勝トーナメント.

2012/02/20 SICP読書会2章開始した. そろそろ発表が一周する. そして反省した. 反省会の参加者も増えてきた. もっとつまみを用意しなければならない.

今日はちょっとした楽しい知らせができそうな予感.

2012/02/18 Clojureのio処理と例外

2012/02/18 ClojureのIO処理はJavaのクラスを用いてすることになる.

本体(src/clj/clojure/java/io.clj at 1538d809db22346987075b7f91d37addd33e1afd from clojure/clojure - GitHub) や clojure-contrib の IO処理を見ると

(make-reader (make-input-stream x opts) opts)

という感じのコードがある. なお, make-input-stream 中では例外処理はしていない. Java風の疑似コードで書くと以下の感じになる.

reader = new Reader(new InputStream(x))

このとき, finally 節で reader が null でない場合に close していたとしても,

InputStream インスタンスの生成に成功して Reader

インスタンスの生成に失敗すると, InputStream のインスタンスがリークしてしまう.

ので Java では通常, Reader や Stream のインスタンスは別々の変数に保持して finally

節で 別々に close する. close で 例外が出ることもあるので

IOUtils.closeQueity() を利用することが多い.

clojure の java.io などにはリソースリークしうる問題があるようにみえる.

with-open マクロは, bindings Vector の逆順に close していく. bindings

の数だけ入れ子の try-finally に展開されるので closeQuietly 的な効果があり

正しく使えば問題ない. しかし,

(make-reader (make-input-stream x opts) opts)

的コードでは make-reader でできた reader だけ with-open

してもリークの可能性がある.

私の勘違いでなければ, clojure での IO処理は with-open

を用いて自前でやったほうがよい.

2012/02/17 雪の中サッカー

2012/02/17 雪の中サッカーした. 会社を出てサッカーに行こうとしたらちょっとだけ雨が降っていたので開催されるか確認したら, やる, というので向かったところ雨が強くなっていた. でも開催された.

SolrのHTTPでの更新とstream.fileパラメータでの更新を軽く比較した. 少しだけ stream.file で並列にやったほうがHTTPで並列にやるより速いようだ. もともとDBがshardで分割されているなどでなければ HTTP での並列更新で問題なさそうだ.

2012/02/15 徳永本読了 2012/02/16 GRAVITY DAZE 終わった

2012/02/15 徳永本を読了した. 徳永本で検索するとアダム徳永という人の本がでてきてしまうけど.

書籍サポート:日本語入力を支える技術 ―変わり続けるコンピュータと言葉の世界:サポートページ にあるサンプルコードには juman から抜き出した辞書やトレーニングデータもあるので, 自分で実装して試してみたい.

2012/02/16 夜サッカーの予定だったがなくなったので, GRAVITY DAZEのストーリーを最後までやった. 全体的によいゲームだった.

Anuenue のHTTPでのインデックス更新で一時ファイルを使わないようにしてみた. 少し高速化した. 現在はHTTPの並列度が固定なので変更できるようにしてチューニングする. この機能を含む0.7.0をリリースしたら, 私が欲しい機能は追加しおわるので, 要望に対応したり Solr などの更新に追従するだけのモードに移る予定.

2012/02/14 サッカーした

2012/02/14 サッカーした. それなりに動けたがやっぱりパスミスが多い.

日本イソターネット協会会長のあさだたくや氏が亡くなった. 残念だ. 私はあさたくさんとは面識はなくおそらくIRCですこし会話したくらいの間柄でしかないが, 1990年代中盤から2000年代初めまでのPC-UNIX, NetNews界をひっぱっていた方なのでその文化の中で育った私は直接ではないがいろいろな影響を受けた.

会社の周りの人はあさたくさんのことを知らず, NetNewsを見ていた世代とそうでない世代のギャップを感じた.

2012/02/13 SICP読書会1章終了

2012/02/13 11月からやっているSICP読書会が1章まで終了した. いい感じで進んでいる. そして反省会で反省した.

マイニング用のSolrのインデックスを作り直して9億文書になった. まだまだなんとかなっているので10億はいけそうだ. とはいえ物理メモリがもっとほしい.

自分も昔そういうコードを書いてしまったのであれなのだが, 今どき Java で finally節 での適切な close() をしていない(もしくは Java7のtryを使っていない)ソースを初学者が参考にするサイトや本で書くのはやめてほしい.

2012/02/10 徳永本を途中まで 2012/02/11 ジェッタシー 2012/02/12 Gravity Daze をやっている

2012/02/10 徳永本が届いたので途中まで読んだ. 私は一応Anthyの関係者だけど, 関係していたときは全然知識なかった. 今は少しだけ周辺の知識が付いているので楽しく読むことができそうだ.

2012/02/11 サッカーに行ったらグラウンドが霜のために利用が許可されず, サッカーショップに行ってスパイクを買って帰った.

ゴットタンのジェッタシー特集は圧倒的だった. 去年は完全にジェッタシーの年だったが(私の中で)今年もジェッタシーの年になりそう.

2012/02/12 Gravity Daze をやっている. 予想よりも難しかった. EPISODE 11 まで終了.

まだ ICPA のヘッドハンターから Twitter と LinkedIn から接触された. LinkedIn では 「I hate ICPA」 と書いているのに. 私の周囲も多数被害にあっている. そろそろ厚生労働省に連絡すべきレベルか.

2012/02/08 研究開発エンジニアの評価 2012/02/09 サッカーした

2012/02/08 私は研究開発グループという部署に所属していて, 2/8はその部署の研究などの発表会があった. その後グループ全員でグループとして個人をどう評価するのがいいかという話し合いを飲みながらした.

前職でのエンジニアの評価は, 私が所属していた末期ではコードレビューベースだった. これはほとんどの人が共通の知識を持っている世界ではうまくいく方法だと思う. Web系である程度の規模の会社なら, Webやスマートフォン開発を行なうエンジニアが複数いて, お互いに評価することが可能だ.

しかし, 研究開発だとうまく機能しない. 大きな研究所ならば別だろうが, 研究開発エンジニア1人1人が特定のテーマでのその会社での第一人者である率が高い. 研究開発しているテーマでの知識や経験を正しく評価されなければならないし, それを他者が行なうことが難しい.

2012/02/09 サッカーした. 前日に飲みすぎたせいできつかった.

2012/02/07 Anuenue 0.6.2 リリース

2012/02/07 anuenue-wrapper - A Search Package with Apache Solr - Google Project Hosting の version 0.6.2 をリリースしました.

update/csv の stream.file パラメータに対応しました. HTTP でのデータの更新よりも高速です.

ただし, Anuenue の HTTP での更新はまだ無駄があるので, 今後チューニングします.

 
QRコード
QRコード
  • ライブドアブログ