<rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xml:lang="ja">

<channel rdf:about="http://wids.net/haruka/index.rdf">
  <title>Halting and Ruminating, like a Kangaroo</title>
  <link>http://wids.net/haruka/</link>
  <description>Unix, Scripts, and Networks.</description>
  <dc:creator>H.Miyamoto</dc:creator>
  <dc:language>ja</dc:language>
  <dc:date>2008-08-20T00:21:57+09:00</dc:date>
  <items>
    <rdf:Seq>
      <rdf:li rdf:resource="http://wids.net/haruka/200808b.html#d20080820_01" />
      <rdf:li rdf:resource="http://wids.net/haruka/200808b.html#d20080819_01" />
      <rdf:li rdf:resource="http://wids.net/haruka/200808b.html#d20080818_01" />
      <rdf:li rdf:resource="http://wids.net/haruka/200808b.html#d20080816_01" />
      <rdf:li rdf:resource="http://wids.net/haruka/200808a.html#d20080815_01" />
    </rdf:Seq>
  </items>
</channel>

<item rdf:about="http://wids.net/haruka/200808b.html#d20080820_01">
  <title>日記</title>
  <link>http://wids.net/haruka/200808b.html#d20080820_01</link>
  <dc:date>2008-08-20T00:21:57+09:00</dc:date>
  <description>
  そういえばTwistedの人達が書いたNevowにはComet実装が付いてるらしい。見る気も起きないけど(*嘘。ちょっとは興味ある。)。というか、Googleインデックスの速度はやいよ。いつもいつもい...
  </description>
  <content:encoded><![CDATA[

<p>そういえばTwistedの人達が書いたNevowにはComet実装が付いてるらしい。見る気も起きないけど(*嘘。ちょっとは興味ある。)。</p>

<p>というか、Googleインデックスの速度はやいよ。</p>

<p>いつもいつもいつも必要な時はBASIC認証のやり方を忘れてるので、<a href="/archive/misc/bauth.py">ついカッとなって書いた</a>。</p>

<pre><code>#!/usr/bin/env python
# encoding: utf-8

HTACCESS = '''
&lt;Files *&gt;
 AuthName Authentication
 AuthType Basic
 AuthUserFile %s
 Require valid-user
&lt;/Files&gt;
'''

def htaccess(htpasswdpath):
    return HTACCESS % htpasswdpath

def htpasswd(username, passwd):
    import md5
    import time
    import crypt

    salt = md5.new(time.ctime()).hexdigest()[0:2]
    return ':'.join([username, crypt.crypt(passwd, salt)])

if __name__ == '__main__':
    import os
    import sys
    from getpass import getpass

    if not len(sys.argv) == 3:
        usage = 'usage: %s username passwd_file'
        print usage % sys.argv[0]
    else:
        passwd = getpass('Basic Auth Password: ')
        rpasswd = getpass('Retype Basic Auth Password: ')

        if passwd == rpasswd:
            def _write(path, s):
                fh = open(path, 'w')
                fh.write(s)
                fh.close()

            username, passwd_file = sys.argv[1], sys.argv[2]
            passwd_path = os.path.expanduser(passwd_file)

            _write('.htaccess', htaccess(passwd_path))
            _write(passwd_path, htpasswd(username, passwd))
        else:
            print '\nPasswords unmatched, abort.'
            sys.exit(1)
</code></pre>

<p>これをpreviewしてたらbin/pygeonの割りと腐った仕様発見。投稿後の日記ファイルをキャッシュとして持って次回分と比較して新規を切り出してるので、投稿後に日記ファイルの前の部分を編集すると比較がうまくいかなくてファイル全文章をポストしようとする。</p>

<p>うーん、修正……とか思って確認してたらsvnにbin/pygeonが入ってないという衝撃の事実発覚。とりあえずcommit。</p>

   ]]></content:encoded>
</item>

<item rdf:about="http://wids.net/haruka/200808b.html#d20080819_01">
  <title>日記</title>
  <link>http://wids.net/haruka/200808b.html#d20080819_01</link>
  <dc:date>2008-08-19T01:15:29+09:00</dc:date>
  <description>
  html2markdownについて。今回の再構築で古いhtmlを全部一旦markdown形式に変換してから再度markdownからhtmlに変換した。html2markdown.pyはCGIでも試せる...
  </description>
  <content:encoded><![CDATA[

<p>html2markdownについて。今回の再構築で古いhtmlを全部一旦markdown形式に変換してから再度markdownからhtmlに変換した。</p>

<p>html2markdown.pyは<a href="http://www.aaronsw.com/2002/html2text/">CGIでも試せるhtml2text</a>と<a href="http://www.codefu.org/wiki/Main/Html2markdown">codefu.orgのhtml2markdown</a>があったが、後者を使用してhtml → markdownにした。その後、markdown.pyも<a href="http://www.freewisdom.org/projects/python-markdown/">freewisdom.orgのmarkdown.py</a>と、ここの反応がないから<a href="http://activestate.com/">ActiveState</a>の人が書いた<a href="http://code.google.com/p/python-markdown2/">markdown2.py</a>があって、これも後者(Pygeonでも後者を使用してる)を使用して、更にBlueStoleのPython実装(手元のファイル名ではmarkdown3.py。これはPygeonで使っているものと別物)で変換した。BlueStoleから比べると、定義リストの中に複数段落とかリストを入れられるようになってるけど、RTToolに相当するものを探してないからTableはサポートしてない。まあwids.netではTable使ってないから、とりあえず。</p>

<p>ほんで、今はLocal(markdown) → Local Server(html) → Server(html)の左側の→を進めてるとこ。</p>

<pre><code>[alpha@colinux]-[01:10 AM]-[~/public_html/wieve]#3
 ::: python wieve.py -s
?      output/a.html
U      shelf/index.txt
N      shelf/test/
</code></pre>

<p>出力がsvnだよ！というとことろで今日は終わり。右側はもうxmlrpc+BASIC認証でいいやという気分になってる。Pythonだとxmlrpcはメソッドバインディングなので、扱うのが楽すぎる。</p>

   ]]></content:encoded>
</item>

<item rdf:about="http://wids.net/haruka/200808b.html#d20080818_01">
  <title>日記</title>
  <link>http://wids.net/haruka/200808b.html#d20080818_01</link>
  <dc:date>2008-08-18T21:24:09+09:00</dc:date>
  <description>
  忘れてた。我が人生において最大の天敵との戦いについての記録 (あるいは、寝坊について)失敗したあなたへを追加した。html2markdownとmarkdown3.pyについて書くこと。T氏の例の奴をl...
  </description>
  <content:encoded><![CDATA[

<p>忘れてた。</p>

<ul>
<li><a href="/lib/sleep.html">我が人生において最大の天敵との戦いについての記録 (あるいは、寝坊について)</a></li>
<li><a href="/lib/afteramistake.html">失敗したあなたへ</a></li>
</ul>

<p>を追加した。</p>

<p>html2markdownとmarkdown3.pyについて書くこと。T氏の例の奴をlibraryにあげるか検討。</p>

   ]]></content:encoded>
</item>

<item rdf:about="http://wids.net/haruka/200808b.html#d20080816_01">
  <title>日記</title>
  <link>http://wids.net/haruka/200808b.html#d20080816_01</link>
  <dc:date>2008-08-16T01:53:12+09:00</dc:date>
  <description>
  そういえば昨日の夜、姉と色々話をした。  この国には何もかもあります。でも、希望だけがない。みたいな話。というか、既に「何もかもある」状態は終わってる。そう遠くない将来、私達の国はもっと「貧乏人は死ね...
  </description>
  <content:encoded><![CDATA[

<p>そういえば昨日の夜、姉と色々話をした。</p>

<blockquote>
  <p>この国には何もかもあります。でも、希望だけがない。</p>
</blockquote>

<p>みたいな話。というか、既に「何もかもある」状態は終わってる。そう遠くない将来、私達の国はもっと「貧乏人は死ね」と声高に言うヒトタチが現れるだろう。もう何もかも遅すぎる。</p>

<p>ということで、lib/以下も反映させた。でもまだゴミ掃除とかimg/の整理とか生成システムのlast one hopのことを考えてないから、再構築が終わったとは言えない。last one hopはどうするのが一番いいのかなあ。PygeonはCLIとウェブでプレビューとポストができるから、そんくらいのものは用意しないとダメだろうし。やっぱエントリポイントみたいなのをウェブにおいてそれを叩くしかないのかな。</p>

<p>そうそう、あるサービスを終了させる時(特にそれがコミュニティを伴い、1ステップが1日サイクルの時)、猶予期間が1ヶ月というのは長すぎるようだ。半月が一番よさそうかな。</p>

<p>html2markdownとmarkdown3.pyについて書くこと。</p>

   ]]></content:encoded>
</item>

<item rdf:about="http://wids.net/haruka/200808a.html#d20080815_01">
  <title>日記</title>
  <link>http://wids.net/haruka/200808a.html#d20080815_01</link>
  <dc:date>2008-08-15T01:06:14+09:00</dc:date>
  <description>
  lib/以下も全部終わった。2001年ごろのぐちゃぐちゃマークアップも修正したから大変だった……。意味のないことをしたような気もするが、まあいいや。反映は明日以降に。
  </description>
  <content:encoded><![CDATA[

<p>lib/以下も全部終わった。2001年ごろのぐちゃぐちゃマークアップも修正したから大変だった……。意味のないことをしたような気もするが、まあいいや。反映は明日以降に。</p>

   ]]></content:encoded>
</item>

</rdf:RDF>