はてなダイアリーからWordPressへ移行

はてなダイアリーを3年近くもほったらかしにした末、衝動的にWordPressに移行した。

さくらインターネットのスタンダードに申し込んで、ドメインまでとった。金をかけるからには今度は続けるつもり、なんだけど、続くといいなぁ。

さて、サーバの設定自体はすんなりいった。事前にいくつかブログなど見たけど、実際にやってみるとチョー簡単。WordPressのインストールもさくらのサーバコントロールパネルのクイックインストールからあっという間にできた。参考にしたブログもほとんどいらなかったくらい。

cf. はてなダイアリーからWordPressへの移行手順 ― 科学と生活のイーハトーヴ

ただひとつ、はてなダイアリーのデータを移行するときに、ブログの日付の後のAMとかPMを削除しておかないと日付がおかしくなる、という情報があったので、それだけやっておいた。データをインポートした結果、おおむね大丈夫のようだ。

と思ったら、コードのインデントが全部なくなってる。ひえー、なんてこった。これ全部手で直さなきゃいけないのかなぁ。

tracをインストールしてみた

インタアクトによってローカライズされた trac-ja を使う。

必要なもの

Python が最新の2.5でないのは ClearSilver が対応していないから。

PySQLite は 2.4.0 が最新版だけど trac-admin コマンドを実行したときにエラーが出た。以前にダウンロードした 2.3.3 を試してみたら大丈夫だったので,こちらを使うことにした。

インストール

Subversion はインストール済みだったけど,ついでにアップデート。やり方は省略。

Python, PySQLite, subversion python binding, CleasSilver

インストーラだからダブルクリックしてインストールするだけ。

Python は C:\usr\python24 にインストールした。パスを通すのを忘れずに。

DocUtils

ファイルを展開して:

^o^ >cd docutils-0.4
^o^ >python setup.py install
trac

これも同様。ファイルを展開して:

^o^ >cd trac-0.10.4-ja-1
^o^ >python setup.py install

Thank you for choosing Trac 0.10.4. Enjoy your stay! と出たので無事完了。

trac の設定

まずはリポジトリを作っておく。

^o^ >svnadmin create D:/svn/sample

tracの設定には trac-admin コマンドを使う。

^o^ >python C:\usr\python24\scripts\trac-admin D:/www/trac/sample initenv
Creating a new Trac environment at D:\www\trac\sample
Trac will first ask a few questions about your environment
in order to initalize and prepare the project database.
Please enter the name of your project.
This name will be used in page titles and descriptions.
Project Name [My Project]> Sample Project
Please specify the connection string for the database to use.
By default, a local SQLite database is created in the environment
directory. It is also possible to use an already existing
PostgreSQL database (check the Trac documentation for the exact
connection string syntax).
Database connection string [sqlite:db/trac.db]>
Please specify the type of version control system,
By default, it will be svn.
If you don't want to use Trac with version control integration,
choose the default here and don't specify a repository directory.
in the next question.
Repository type [svn]>
Please specify the absolute path to the version control
repository, or leave it blank to use Trac without a repository.
You can also set the repository location later.
Path to repository [/path/to/repos]> d:/svn/sample
Please enter location of Trac page templates.
Default is the location of the site-wide templates installed with Trac.
Templates directory [C:\usr\python24\share\trac\templates]>
Creating and Initializing Project
Installing default wiki pages
C:\usr\python24\share\trac\wiki-default\CamelCase => CamelCase
C:\usr\python24\share\trac\wiki-default\checkwiki.py => checkwiki.py
C:\usr\python24\share\trac\wiki-default\InterMapTxt => InterMapTxt
(snip)
C:\usr\python24\share\trac\wiki-default\WikiPageNames => WikiPageNames
C:\usr\python24\share\trac\wiki-default\WikiProcessors => WikiProcessors
C:\usr\python24\share\trac\wiki-default\WikiRestructuredText => WikiRestructur e
dText
C:\usr\python24\share\trac\wiki-default\WikiRestructuredTextLinks => WikiRestr u
cturedTextLinks
C:\usr\python24\share\trac\wiki-default\WikiStart => WikiStart
Indexing repository
---------------------------------------------------------------------
Project environment for 'Sample Project' created.
You may now configure the environment by editing the file:
D:\www\trac\sample\conf\trac.ini
If you'd like to take this new project environment for a test drive,
try running the Trac standalone web server `tracd`:
tracd --port 8000 D:\www\trac\sample
Then point your browser to http://localhost:8000/sample.
There you can also browse the documentation for your installed
version of Trac, including information on further setup (such as
deploying Trac to a real web server).
The latest documentation can also always be found on the project
website:
http://trac.edgewall.org/
Congratulations!

D:\www\trac\wample\conf\trac.ini ファイルを編集:文字コードだけ。

:
[trac]
:
default_charset = japanese.shift_jis
:

tracd

trac にはスタンドアロンのサーバがついている:

^o^ >python c:/usr/python24/scripts/tracd --port 8000 d:/www/trac/sample

これでブラウザから http://localhost:8000/ にアクセスすれば,プロジェクトの一覧が表示される。

はてなダイアリーライター Version 1.4.1 を試してみた(その2)

id:takatoh:20070708:hw のつづき。Crypt::SSLeayをインストールしたらエラーになった件。

いろいろ試した結果,クッキーファイル(cookie.txt)の有無と関係が有ることがわかった。表にするとこんな感じ。

cookie.txtあり cookie.txtなし
Crypt::SSLeayなし OK OK
Crypt::SSLeayあり OK エラー

Crypt::SSLeayが無い場合にはcookie.txtの有無に関わらずOKなんだけど,これは暗号化されないってことなんで非推奨。Crypt::SSLeayをインストールするとcookie.txtが無い場合にエラーになる。無けりゃ作ってくれるはずなんだけど,ここで失敗しているように見える(最後から2行目)。……ちがうのかな。

-d オプションをつけて実行した結果:

^o^ >perl hw.pl -d
DEBUG: Debug flag on.
Hatena Diary Writer Version 1.4.1
Copyright (C) 2004,2005 by Hiroshi Yuki.
DEBUG: Loading config file (config.txt).
DEBUG: load_config: id:takatoh
DEBUG: load_config: password:********
DEBUG: load_config: cookie:cookie.txt
DEBUG: load_config: proxy:http://proxy:8080/
DEBUG: load_config: client_encoding:Shift_JIS
DEBUG: load_config: server_encoding:EUC_JP
DEBUG: main: files: current dir (.): ./2007-07-08.txt ./touch.txt
DEBUG: login: proxy for http: http://proxy:8080/
DEBUG: login: proxy for https: http://proxy:8080/
Login to https://www.hatena.ne.jp/login as takatoh.
DEBUG: login: 200 OK
DEBUG: login: $r = <HTML></HTML>
Login OK.
DEBUG: login: Making cookie jar.
DEBUG: login: $cookie_jar =
DEBUG: read_title_body: input: ./2007-07-08.txt
DEBUG: Convert from Shift_JIS to EUC_JP.
Post 2007-07-08.
DEBUG: create_it: 2007-07-08.
DEBUG: create_it: 302 Moved
DEBUG: create_it: Location: /takatoh/
DEBUG: create_it: returns 0 (ERROR).
DEBUG: try_it: update_diary_entry: CREATE.
Old cookie. Retry login.
DEBUG: login: proxy for http: http://proxy:8080/
DEBUG: login: proxy for https: http://proxy:8080/
Login to https://www.hatena.ne.jp/login as takatoh.
DEBUG: login: 200 OK
DEBUG: login: $r = <HTML></HTML>
Login OK.
DEBUG: login: Making cookie jar.
DEBUG: login: $cookie_jar =
DEBUG: create_it: 2007-07-08.
DEBUG: create_it: 302 Moved
DEBUG: create_it: Location: /takatoh/
DEBUG: create_it: returns 0 (ERROR).
DEBUG: try_it: update_diary_entry: CREATE.
Old cookie. Retry login.
DEBUG: login: proxy for http: http://proxy:8080/
DEBUG: login: proxy for https: http://proxy:8080/
Login to https://www.hatena.ne.jp/login as takatoh.
DEBUG: login: 200 OK
DEBUG: login: $r = <HTML></HTML>
Login OK.
DEBUG: login: Making cookie jar.
DEBUG: login: $cookie_jar =
ERROR: try_it: Check username/password.

結局,Crypt::SSLeayをインストール/アンインストールしたり,設定ファイルを書き換えてみたりしてるうちにできた(つまりCrypt::SSLeayなしの時にできた)クッキーファイルがあって動くようになったので今回はOKとする。Crypt::SSLeayありの状態でクッキーファイルを作る方法はわからない。

なんだか中途半端だけど時間切れだ。

追記:PCの環境

  • Windows XP
  • ActivePerl 5.8.8
  • Crypt::SSLeay 0.53

追記2:proxyなしの場合

hyukiさんのアドバイスに従ってproxyの無い環境で試してみたら,正しく投稿できた。どうやら次の3つが重なったときにエラーになるらしい。

  • Crypt::SSLeay あり
  • クッキーファイルがない
  • proxyを利用

はてなダイアリーライター Version 1.4.1 を試してみた

以前に試したときにはどういうわけだかうまくいかなかってけど,今度はうまくいったので(ちょっとはまったけど),メモ。

はてなダイアリーライター本体はここから(Version 1.4.1)。マニュアルもここ。

まずは試してみる。テスト用の日記ファイルを作って,設定ファイルはなしでやってみたらすんなり成功。ちょっと拍子抜け。

^o^ >perl hw.pl
WARNING: Crypt::SSLeay is not found, use non-encrypted HTTP mode.
Username: takatoh
Password: ********
Login to http://www.hatena.ne.jp/login as takatoh.
Login OK.
Post 2007-07-08.
Post OK.
Logout from http://d.hatena.ne.jp as takatoh.
Logout OK.

けどちょっと待て。Cyrpt::SSLeayが無いから暗号化しないモードを使うといってる。

……それで思い出した。以前うまくいかなかったのはこのあたりだった。

というわけで,このへんのページを参考に改めてチャレンジ。

まずはOpenSSLから。上のリストの2番目のページからインストーラ(最新版 Win32OpenSSL v0.9.8e)をダウンロードしてインストールするだけ。

Crypt::SSLeay のほうは上のリストの3番目のページにある「LWPで、「https://」で始まるSSL使用サイトにアクセスできますか?」を参考にした。ppmコマンドでインストールするんだけど,モジュール名ではなくPPDファイル名を指定する必要があるらしい(GUI版ppmのリストに出てこない)。ActivePerl 5.8.8 を使っているので:

^o^ >ppm install http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd

後半,dllをインストールするか聞いてくるので yes と答えてインストールする。デフォルトが[no]になってるので注意。

さて,改めて試してみよう。ついでに設定ファイルも書いておく。

id:takatoh
password:********
cookie:cookie.txt
proxy:http://proxy:8080/
client_encoding:Shift_JIS
server_encoding:EUC_JP

これでOKのはず。

^o^ >perl hw.pl
Login to https://www.hatena.ne.jp/login as takatoh.
Login OK.
Post 2007-07-08.
Old cookie. Retry login.
Login to https://www.hatena.ne.jp/login as takatoh.
Login OK.
Old cookie. Retry login.
Login to https://www.hatena.ne.jp/login as takatoh.
Login OK.
ERROR: try_it: Check username/password.

なんでエラーになるんだ!!……orz

えーと。いろいろ試した結果何とか動くようになった。これについてはエントリーを改めて書く。

さきに書いておくと,インストールや設定ファイルは上の通りで大丈夫(たぶん)。問題はcookie.txtだった。--(つづく)

lighttpd (for Windows) に触ってみた(2)

昨日(id:takatoh:20070111:lighttpd) のつづき。

ファイルのリスト( mod_dirlisting )

URL がディレクトリを指して,かつインデックスファイルが見つからない場合に,ディレクトリ内容のリストを表示する機能。mod_dirlisting モジュールは server.modules で指定する必要もなくデフォルトで読み込まれるので,機能を有効にするだけでいい。

dir-listing.activate       = "enable"

もし,特定のディレクトリだけリストを表示したいなら次のようにする(これは C:\lighttpd\doc\dirlisting.txt に載っている例)。

$HTTP["url"] =~ "^/download($|/)" {
dir-listing.activate = "enable"
}

エイリアス( mod_alias )

mod_alias を読み込んで

"mod_alias",

エイリアスのリストを指定。lighttpd.conf に記述がないので追加する。

alias.url = ( "/cgi-bin/" => "C:/lighttpd/cgi-bin/" )

バーチャルホスト( mod_simple_vhost )

バーチャルホスト関連のモジュールには mod_evhost というのもあるけど,ここでは mod_simple_vhost を使う(名前ベース)。まずはモジュールの読み込み。

"mod_simple_vhost",

でもって,次のように設定する。これがデフォルトのバーチャルホストになる。

simple-vhost.server-root   = "C:/lighttpd/servers/"
simple-vhost.default-host  = "vhost1"
simple-vhost.document-root = "/pages/"

simple-vhost.server-root で指定したディレクトリ以下にバーチャルホストと同名のディレクトリを用意する。ほかの場所に作ってもダメなようだ。

で,この例では vhost1 がバーチャルホスト名,C:/lighttpd/servers/vhost1/pages/ がそのドキュメントルートだ。

複数のバーチャルホストをたてるには

$HTTP["host"] == "vhost2" {
server.document-root = "C:/lighttpd/servers/vhost2/pages/"
}

のように $HTTP[“host”] の値で場合分けする。

元々のホスト--昨日の例でいえば http://localhost:81/ でアクセスしていたホスト--は無効になるようだ。

lighttpd (for Windows) に触ってみた

ので,メモ。

cf. http://www.lighttpd.net/ (公式サイト)

cf. ぱるも日記 – Windows で lighttpd を使う

ダウンロード

↓ダウンロードはここから。バージョンは 1.4.11。

http://blogs.windowsnetworking.com/wnadmin/2006/09/22/lighttpd-web-server/

公式サイトにはWindows用バイナリ配布サイトへのリンクがあるけど,どういう訳か接続できない。

で,ここの人がミラーしてるってことらしい。最新バージョンではないけど気にしないことにする。

インストール

インストールは簡単。ダウンロードしたインストーラを実行するだけ。

インストール先を聞いてこないので,C:\lighttpd に固定のようだ。

設定

設定ファイルは,C:\lighttpd\etc\lighttpd.conf。

ぱるも日記 – Windows で lighttpd を使うを参考に。あと,付属のマニュアル(英語)をちょっとだけ参照。

まずは読み込むモジュール。CGI を使えるように,mod_cgi モジュールを読み込む。コメントをはずせばいい(29行目)。

"mod_cgi",

ドキュメントルート。これはデフォルトのまま。

server.document-root        = "C:/lighttpd/htdocs/"

URLにファイル名が省略されたときのインデックスファイルに index.cgi を追加(46行目)。

index-file.names            = ( "index.cgi", "index.php", "index.html",

ポート(138行目)。デフォルトは 80 だけど Apache が使ってるので変更。

server.port                = 81

CGIスクリプトの拡張子と実行プログラムを指定(219行目~)。

cgi.assign                 = ( ".pl"  => "C:/usr/perl/bin/perl",
".rb"  => "C:/usr/ruby/bin/ruby",
".cgi" => "C:/usr/ruby/bin/ruby" )

これで lighttpd を再起動すれば,設定が有効になる。

起動・停止はスタートメニューかアイコンでできる。けど,リスタートが無いのがちょっと不便。

ユーザーディレクトリ

ユーザーディレクトリも使える。まずは mod_userdir を有効化。

"mod_userdir",

パスの設定。lighttpd.conf にデフォルトの記述がないので一番最後に追加した。

userdir.basepath = "D:/www/lighttpd_users/"
userdir.path     = "htdocs"

これで URL とパスの関係は次のようになる。

Apache の .htaccess に相当するものは無いのかな。

つづき –> id:takatoh:20070112:lighttpd

BrainFuck(というプログラミング言語)

cf. どーんとやってみよう – BrainFuck で棒グラフ

なんというか,こんなプログラミング言語があったとは。

見た目にはこれがプログラムだとは思えないんだけど,Wkikipediaにはこうある。

処理系には十分なサイズのbyte型配列とその要素のひとつを指すポインタがある。ポインタを「>」「<」命令で移動させながら、そのポインタが指す値を増減させて処理を進めていく(Hello world参照)。

実用性はほとんど無いように思われるが、これだけでチューリングマシンで実行可能なあらゆるプログラムが記述できる(チューリング完全である)とされている。

つまり,えーと,立派なプログラミング言語だってことか。

見てるだけじゃわからないので,試してみることにする。使ったのはこれ(Windows版)。

http://esoteric.sange.fi/brainfuck/compiled/win/BFI.exe

ちゃんと動いてビックリ(向井さんのとはちょっと違うけど)。

再度Wikipediaによると

実行可能な命令は「8つ」のみである。

1. > ポインタをインクリメントする。ポインタをptrとすると、C言語の「ptr++;」に相当する。

2. < ポインタをデクリメントする。C言語の「ptr–;」に相当。

3. + ポインタが指す値をインクリメントする。C言語の「(*ptr)++;」に相当。

4. – ポインタが指す値をデクリメントする。C言語の「(*ptr)–;」に相当。

5. . ポインタが指す値を出力する。C言語の「putchar(*ptr);」に相当。

6. , 1バイトを入力してポインタが指す値に代入する。C言語の「*ptr=getchar();」に相当。

7. [ ポインタが指す値が0なら、対応する ] までジャンプする。C言語の「while(*ptr){」に相当。

8. ] ポインタが指す値が0でないなら、対応する [ にジャンプする。C言語の「}」に相当。

ということらしい。ついでにいわゆる Hello world プログラムもあった。

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<
+++++++++++++++.>.+++.------.--------.>+.>.

いろいろいじってると何となくわかってきた。けど,プログラムを読んで動作を理解するのは至難の業だ。動かしてみたほうが速い。

というか,デバッグはどうやってやるんだろう。

はてなグループとコメントについて

id:takatoh:20060604:group についた hyuki さんのコメント。

参加ありがとうございます。ところで、コメントつけるときに「グループに参加」というのはどういう状況でしたか?いちおう誰で も書き込めるようになっていたはずですが…。

たぶん,はてなにログインした状態でコメントしようとしたので,グループに参加するよう促されたのではないかと思います。回避する方法があったのかもしれませんが,別段,断る理由もなかったのでそのまま参加しました。

ところが。

つけたコメントの,名前の部分がリンクになってるんですが,そのリンク先がここじゃなくて Haskellグループ内の日記(使ってないのでカラ)になってしまってます。これはどうしたらいいんだろう。時間があいたら調べてみます。