GAEで遊ぶ

ゴールデンウィーク2日目だが、延々とGAEと戯れ中・・・
GAEの難しいところ、よさげな所、今作ろうとしているもののメモ書き。


作ろうとしているもの


クローラ系のアプリ。前作っていたはてブベイズのGAE版。俺がそれを作っていた頃には、はてブ自体にそういった機能がなかったけど、現在だとはてブがリコメンド的な機能をもっている。はてブ本体の機能と対比しながら、リコメンドの辺りをいろいろ実験できればって感じ。


GAEで嵌った所(嵌っている所)

  • Common logging java.lang.NoClassDefFoundError(解決)
    • web-inf\libにcommons-logging-1.1.1.jarを入れているにもかかわらずNoClassDefFoundErrorがでる。
    • ローカルだと問題なく動く。
    • 対策は、「commons-logging-1.1.1.jar」をリネームしてlibに置く。
    • GAE上に「commons-logging-1.1.1.jar」がすでに置いてあって(で、中身はgoolgegいじってる)それとバッティングするのがいかんらしい。
    • 詳細はこちら
  • ezmorphが動かない(未解決)
    • ezmorphはライブラリ。直接使っているわけではないが、JSON-libが使っている。JSON-libの紹介記事はこちら
    • いろいろなライブラリを使うたびにこういったこと(ローカルでは動くが、サーバでは動かない。また、ライブラリの問題)は多々起こりそう。
    • だれか、GAEで動くライブラリのホワイトリストを作ってくれないものか・・・(もう誰か作ってないかな?)
  • ローカルでのbigTableの内容の確認が不明(未解決)
    • GAEの本番環境では、Viewがあってデータ確認、削除、作成ができる

   

    • でも、Eclipse環境でのやり方がわからない


GAEのよさげな所

  • JDOは意外とよさげ
    • ORMappingなんかやりたくない人には向いてる感じ。
    • ツリー上のデータ構造(ユーザ⇒エントリ⇒コメントみたいな)なら向いてる気がする
  • 管理コンソールが意外といい感じ
    • LogViewerでアクセス単位にログをまとめてくれて、ログレベルフィルターもかかる

   アクセスごとにまとまってる
   
   ログを開いたところ
   
   Warninngi以上のみ(開くとInfoとかも表示される)
   


その他雑感

  • クローラ系のアプリをつくるのは、ちょっとコツがいりそう
    • 基本、GAEはWebアプリを作るフレームワーク
    • クローリングして、CPUをがんがんまわすにはコツがいりそう
    • で、フレームワークを作成。BigTableにTaskクラスと使用するデータを放り込んで、時間がある限りTaskを連続実行する。
    • 今まで、一括して行っていた処理を分割。Task(例:ホッテントリのクロール)がTask(各エントリのクロール)を作るように変更。
  • 遊びで使うのは面白い
    • 仕事に使えるのか、破壊的なテクノロジーの中はわからん・・・・。ので、スルーで。
  • JDOはちょっと癖が強い
    • PersistenceManagerをcloseしてから、HtmlレンダリングのためにDeleteしたObjectアクセスしたらエラー
  • 役に立ちそうなリソース