ログインできるようになったので和訳ドキュメント検索結果上位にしようキャンペーン支援。

Django オンラインドキュメント和訳

  1. WordPress 2.0.7 to 2.2.1 手順間違えて失敗
  2. 2.0.7 へバックアップから切り戻し
  3. うひょ、ログインできないorz

となったので支援しようとしたけど一時出来なくなったのではてなとか Messala の方で支援したけど、ログインできるようになったのでこちらでも支援。

つーかね、ソース追っかけてたら md5 しとったわけですよ、パスワード。んで、DB みたら user_pass カラムが varchar(21) でおや? と思って python だけど md5 したら 33 桁でそりゃ合うわけないよ、ということで varchar(33) にして md5 した文字列を update したらログイン成功ですよ。今までなんでログインできていたのか謎。

とまれ、2.2.1 へはまた明晩挑戦。

Popularity: 90%

ついでに書いておくと Unofficial Planet WordPress Japan のテンプレートいじった。Feedjack の Features には

# It generates pages/feeds with posts of a certain category (example, feed)
# It generates pages/feeds with posts from a certain subscriber (example, feed)
# It generates pages/feeds with posts of a certain category from a certain subcriber (example, feed)

と書いてあるけど、デフォルトでは全体の feed しか吐いてなかったので、各 subscriber, tag で feed 吐かせたいなぁ、と思ったので吐くようにテンプレートいじった。コントローラとかいじる必要あるのかと思ったけどテンプレート(Django ではビューで合ってる?)に書くだけでよかった。テンプレートだけで済むのはいいんだけど、書き方とかドキュメントにしておいてもらえると助かる。Feedjack 全般的にドキュメント少なすぎ。

URL 手打ちで http://planet.wp.luac.net/feed/rss/tag/del.icio.us/ とか http://planet.wp.luac.net/feed/rss/user/1/ とか http://planet.wp.luac.net/feed/rss/user/1/tag/books/ を叩くと feed が見られるので、テンプレートの中にこのような感じで表示すればよい。feed autodiscovery させたいので、HTML の head 要素に出力させたい。ついでにアイコンも出してしまいたい。

ということで Django のテンプレートいじり。else if 使いたかったのだけど使い方分からず(できるの?)。結局 if 文を一つづつ書くことで対応。

post_list.html を編集。
head 要素内に以下追加。

HTML:
  1. {% if tag and user %}
  2.         <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="{{ site.url }}/feed/rss/user/{{ user_id }}/tag/{{ tag.name|urlencode }}/" />
  3.         <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{ site.url }}/feed/atom/user/{{ user_id }}/tag/{{ tag.name|urlencode }}/" />
  4.         {% endif %}
  5.         {% if user and not tag %}
  6.         <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="{{ site.url }}/feed/rss/user/{{ user_id }}" />
  7.         <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{ site.url }}/feed/atom/user/{{ user_id }}" />
  8.         {% endif %}
  9.         {% if tag and not user %}
  10.         <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="{{ site.url }}/feed/rss/tag/{{ tag.name|urlencode }}/" />
  11.         <link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{{ site.url }}/feed/atom/tag/{{ tag.name|urlencode }}/" />
  12.         {% endif %}

アイコン出している id=button の div 要素を以下のようにした。

HTML:
  1. <div id="buttons">
  2.       <a href="{{ site.url }}/feed/rss/" title="RSS 2.0 feed"><img src="{{ media_url }}/img/button-rss.png"/></a> &bull;
  3.       <a href="http://www.djangoproject.com/"><img src="http://media.djangoproject.com/img/badges/djangosite80x15.gif" border="0" alt="A Django site." title="A Django site."/></a> &bull;
  4.       <a href="{{ site.url }}/feed/atom/" title="Atom 1.0 feed"><img src="{{ media_url }}/img/button-atom.png"/></a><br />
  5.       <a href="{{ site.url }}/opml/" title="OPML"><img src="{{ media_url }}/img/button-opml.png"/></a>
  6.       {% if user and tag %}
  7.       &bull;
  8.       <a href="{{ site.url }}/feed/rss/user/{{ user_id }}/tag/{{ tag.name|urlencode }}/" title="{{ tag.name }}'s RSS 2.0 feed"><img src="{{ media_url }}/img/button-rss.png"/></a> &bull;
  9.       <a href="{{ site.url }}/feed/atom/user/{{ user_id }}/tag/{{ tag.name|urlencode }}/" title="{{ tag.name }}'s Atom 1.0 feed"><img src="{{ media_url }}/img/button-atom.png"/></a>
  10.       {% endif %}
  11.       {% if user and not tag%}
  12.       &bull;
  13.       <a href="{{ site.url }}/feed/rss/user/{{ user_id }}/" title="{{ user.name }}'s RSS 2.0 feed"><img src="{{ media_url }}/img/button-rss.png"/></a> &bull;
  14.       <a href="{{ site.url }}/feed/atom/user/{{ user_id }}/" title="{{ user.name }}'s Atom 1.0 feed"><img src="{{ media_url }}/img/button-atom.png"/></a>
  15.       {% endif %}
  16.       {% if tag and not user %}
  17.       &bull;
  18.       <a href="{{ site.url }}/feed/rss/tag/{{ tag.name|urlencode }}/" title="{{ tag.name }}'s RSS 2.0 feed"><img src="{{ media_url }}/img/button-rss.png"/></a> &bull;
  19.       <a href="{{ site.url }}/feed/atom/tag/{{ tag.name|urlencode }}/" title="{{ tag.name }}'s Atom 1.0 feed"><img src="{{ media_url }}/img/button-atom.png"/></a>
  20.       {% endif %}
  21.     </div>

subscriber, tag もない場合は全体の feed, Django へのリンク, OPML を表示。subscriber と tag の時は subscriber, tag のアイコンを表示。subscriber の時は subscriber の feed アイコンを表示。tag の時は tag の feed アイコンを表示。

元から機能搭載されているとはいえ、テンプレートいじるだけでなんとかなるのは凄い便利と思った。Django がすごいのか Feedjack の作り方がすごいのか。とはいえ、Feedjack のドキュメントの充実化を願う。

Popularity: 24%

Unofficial Planet WordPress Japan の Feedjack を 0.9.10 に更新した。CHANGES 見たけど feed のデコードについての記述なし。あやしいなぁ、と思いつつも更新した。

で、コード見たけど views.py の該当箇所 99 行目

CODE:
  1. description=site.description,

のままだけど site.description デコードなしでいけてる。0.9.9 との全差分見ないとわからんけど直ってるようなので見ないで済ます。

依然として管理画面で設定した Links が表示されないのが謎。テンプレート確認しておくか。

Popularity: 20%

Python 勉強中ということもあり、やっぱり Feedjack 使って Unofficial Planet WordPress Japan 再構築。Feed 再登録も骨だったが(移転したり名前解決できなかったりとかあったりしたので)、いざ入れ替えたら RSS2.0 のフィードが吐けない。UnicodeDecodeError だから Atom の方も駄目かな、と思ったけど Atom はおk。意味不明だ。ソース追っかけたら Django の feedgenerator.py に行きつくもまだちゃんと読んでない。うーむ、困った。

Planet の時は過去記事を保存できなかったけど、Feedjack にしたので過去記事もページネーションで読むこと可能。カテゴリをキーワードとしてタグクラウドも作ってくれるので Planet よりは使い勝手よい感じ。ウェブ管理画面もあるから OS にログインしなくてもよいしね。

要は問題は RSS2.0 であって、こいつをなんとかしないといかん。

Popularity: 32%

Feedjack を設置しようと試験的に Django つっこんで動かそうとしたんだけど、Django 分かってないから動かすのも一苦労な上に操作方法不明でひでぶあべしたわば。

というところに出会ったのが FeedWordPress。こちらも Planet みたいな Feed Aggregator なんだけど異なるのは WordPress ぷらぎんってこと。これならよさそうな上に WordPress の Feed Aggregator なら適切っぽい雰囲気。ひとまずこちらも試験的に動かして気に入ったら入れ替えよう。

どっちにしても既存 Unofficial Planet WordPress の Feed URL とは異なるのでリダイレクト処理必要になるんだけどね。そもそも FeedWordPress が Feed 吐くのかも確認してないんだけどね。

Popularity: 37%