不定期日記
2006-03-26 (Sun) [長年日記]
_ [JEF] JFL ジェフ・クラブ vs YKK AP
一人退場してからの方がペースをつかめていました。目に付いたのは、ジェフの25番の松本とYKKの9番の岸田。ダニロは足元でボールをもらおうとして囲まれてしまうことがほとんど。全然機能していませんでした。
_ [PC] 情報共有システム
ウェブ進化論に触発されて、会社で情報を共有するためのシステムを、MHonArc + tDiary + Scuttle で作ってみました。まずは情報を吐き出してもらうための社内Blogのようなものと、出てきた情報を整理するためのソーシャルブックマークという組み合わせです。Webで書くということが敷居が高く感じる人もいるかもしれないということで、メールでも書き込めるようにしてみました。
使ったソフトは以下
- Apache
- Radish
- MySQL 5
- ActivePerl
- ActiveRuby
- PHP 5
- MHonArc
- tDiary
- Scuttle
- Namazu
- Kakasi
- リンク作成シェル拡張
- 各種Scriptによる処理 (ほぼすべてruby)
- RadishのスプールをMHonArcで処理
- MHonArcのアウトプットからRSSを作成
- RSSを集めてきて「新着記事」「新着ブックマーク」ページを作成
- Namazuのインデックス生成
一番苦労したのは、これらを全部Windows上でやったことだったりします。IPアドレスを取得したりといった手続きが面倒というのもあるけれど、一番の理由は今後ほかの人に管理をやってもらえる可能性がゼロになってしまうからです。もっとも1週間動かしているけれど、まだ書き込みはおろか見てもらえてすらいない感じなので失敗に終わる可能性もかなり高いのですが。
以下は、個々に引っかかったところなどです。
_ MySQLの良く使うコマンド
パスワードの設定
mysqladmin -u root password <パスワード>
ユーザの作成
mysql -u root -p
でコマンドラインツールを起動して、
use mysql
で "mysql" データベースを使用するよう設定して、
grant select, insert, update, delete on *.* to <ユーザID>@localhost identified by "<パスワード>"; flush privileges;
とする。
mysql -u root -p mysql
とすることで、最初から使用するデータベースを指定することも可。
データベースを指定して、すべての権限を与えることも可。
grant all on db_name.* to <ユーザID>@localhost identified by "<パスワード>"; flush privileges;
データベースの追加
mysqladmin -u root -p create <データベース名>
または
mysql -u root -p
とした上で、
CREATE DATABASE `<データベース名>` [DEFAULT CHARACTER SET utf8];
データベースの削除
DROP DATABASE <データベース名>;
sqlファイルの実行
mysql -u ユーザー名 -p [--default-character-set=utf8] <データベース名> < tables.sql
ユーザー一覧表示
SELECT user, host FROM mysql.user;
データベース一覧
show databases;
権限の表示
show grants for user@localhost
権限の削除
REVOKE ALL ON test_db.* FROM sample@localhost;
_ MySQLデータベースのコピー
Scuttleのデータ等MySQLデータのエクスポート/インポート方法は以下の通り
mysqldump -u ユーザ -p scuttle > filename
としてエクスポート
mysql -u ユーザ -p scuttle < filename
としてインポート
_ PHPの設定
Windows XPでPHPを動作させてみよう! を参考にしました。 php.ini の設定で、
date.timezone = "GMT"
としないと、Scuttleでブックマークした時間がおかしくなるようです。
_ MHonArcの設定
リソースファイルは MHonArc の日本語化 for v2.6.x を参考にしました。 また、application/octet-streamなファイルの拡張子がすべてbinに変えられてしまうので、そのままの拡張子を使うよう以下の記述も加えました。
<MIMEArgs> m2h_external::filter; usenameext </MIMEArgs>
実行するときは以下のコマンドです。
mhonarc -add -rcfile <リソースファイル>.rc -outdir <出力ディレクトリ> <メール>
_ Outlook メールの変換
ThunderbirdでOutlookのメールをそのままインポートすることができます。Thunderbirdはmbox形式なので、あとは適当に処理するだけです。ただし、本文に charset=Shift_JIS と設定されているので文字コード変換の際は注意が必要です。_ tDiary
attach.rb では元のファイル名を生かしたファイル名で保存されるのですが、それだと日本語ファイル名をつけているとき不都合なので、以下のようにしました。
--- attach.rb.orig 2006-03-16 13:40:27.000000000 +0900 +++ attach.rb 2006-03-16 14:08:21.000000000 +0900 @@ -118,7 +118,7 @@ attaches = attach_list( date ) if @cgi.params['plugin_attach_addattach'][0] filename = @cgi.params['plugin_attach_file'][0].original_filename - filebasename = filename.sub(/\..+?$/, '') +# filebasename = filename.sub(/\..+?$/, '') extension = filename.split(/\./).to_a.pop @cgi.params['plugin_attach_file'][0].rewind if extension =~ /\A(#{@attach_ext})\z/i @@ -131,7 +131,8 @@ raise attach_error_num( @attach_maxnum ) if attaches.compact.length>= @attach_maxnum raise attach_error_size( @attach_maxsize ) if size > @attach_maxsize - file = "#{@attach_dir}/#{filebasename}_#{date}_#{attaches.length}.#{extension}".untaint +# file = "#{@attach_dir}/#{filebasename}_#{date}_#{attaches.length}.#{extension}".untaint + file = "#{@attach_dir}/#{date}_#{attaches.length}.#{extension}".untaint File::umask( 022 ) File::open( file, "wb" ) do |f| f.print @cgi.params['plugin_attach_file'][0].read
_ Scuttle
ソーシャルブックマーク(Scuttle)のインストール方法 (phpspot開発日誌)を参考にしました。
ユーザ追加の際、メールアドレスの有効性を確認するという機能があるのですが、DNSが無いという特殊な環境であるために以下のパッチをあてました。
--- services/userservice.php.orig 2006-03-10 08:04:51.000000000 +0900 +++ services/userservice.php 2006-03-10 08:06:23.000000000 +0900 @@ -326,6 +326,7 @@ } function isValidEmail($email) { + return true; if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$", $email)) { list($emailUser, $emailDomain) = split("@", $email);
ブックマークのURLを入力した際に自動でタイトルを取得する機能で、Proxyを経由させる設定は良くわからないので使えない状態になっています。
また、Firefoxでは問題ないのですが、titleタグの中に日本語が入っていると、なぜか Internet Explorer で表示できないことがあるので、表示は化けてしまうのですが以下のパッチをあてました。他に簡単ないい方法があれば知りたいです。
--- templates/top.inc.php.orig 2006-02-12 16:39:54.000000000 +0900 +++ templates/top.inc.php 2006-03-17 10:54:37.000000000 +0900 @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> - <title><?= filter($GLOBALS['sitename'] . (isset($pagetitle) ? ': ' . $pagetitle : '')) ?></title> + <title><?= rawurlencode(filter($GLOBALS['sitename'] . (isset($pagetitle) ? ': ' . $pagetitle : ''))) ?></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="icon" type="image/png" href="<?= $GLOBALS['root'] ?>icon.png" /> <link rel="stylesheet" type="text/css" href="<?= $GLOBALS['root'] ?>scuttle.css" />
_ Namazu
Replaceを使う際、Windowsでは例えば "D:\web" が "/D|/web" と表されます。 ".namazurc" では、そこでさらに "|" をエスケープして、
Index D:/web/namazu/ Replace /D\|/web/data/([a-z_]+)/cache/html/(\d\d\d\d)/ http://example.com/\1/?date=\2 Replace /D\|/web/htdocs/ http://example.com/ Lang ja
といった感じで記述します。