2010-04 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Debian squeeze は問題ないのですが、Debian lenny ではすぐログアウト
する問題に悩まされていました。セッションが短いと、こうなるそうです。
/etc/cron.d/php5 を以下のように修正して解決しました。
修正前
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm
修正後
00 6 10,20,30 * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm
セッションの削除を毎時 9,39 分から、毎月 10,20,30 日の 6:00 に変更
しました。数十人くらいしか使わない環境なので、設定は適当です。
PHP のセッションは session.gc_divisor, session.gc_maxlifetime,
session.gc_probability が関係しているそうです。これは以下の cgi で
確認できます。
<?php phpinfo(); ?>
Debian Lenny はこのような設定でした。
session.gc_divisor | 100 |
session.gc_maxlifetime | 1440 |
session.gc_probability | 0 |
Debian Lenny は、cron が 30 分おきに PHP のセッションを削除する。
cron の設定を変えることで、これを制御できる。
参考情報:
セッション(session)の有効期限を設定するには - spanstyle::monolog
[2010-04-18-1] の補完。
後日ネットを彷徨っていたら、こんなページを見つけました。(良く知った
方もいらっしゃいます。)
どうやら statusnet-0.9.1 のインストーラにはバグがあるようです。ただ
し PHP のバージョンによっては発生しないそうです。実際 5.3.2-1 で発
生しましたが、5.2.6-1+lenny では発生しませんでした。
インストールが途中で止まった 5.3.2-1 はその後も
/var/log/apache2/error.log にこんなログが吐かれ続けていました。
[Sun Apr 25 14:42:15 2010] [error] [client 192.168.1.11] PHP Warning: Parameter 1 to RSSCloudPlugin::onRouterInitialized() expected to be a reference, value given in /var/www/statusnet/lib/event.php on line 105
気持ち悪いので、前述のページからリンクされていた以下のパッチを当て
ました。
--- orig/statusnet-0.9.1/plugins/RSSCloud/RSSCloudPlugin.php 2010-03-29 00:39:56.000000000 +0900 +++ statusnet-0.9.1/plugins/RSSCloud/RSSCloudPlugin.php 2010-04-25 16:48:46.000000000 +0900 @@ -105,7 +105,7 @@ * @return boolean hook return */ - function onRouterInitialized(&$m) + function onRouterInitialized($m) { $m->connect('/main/rsscloud/request_notify', array('action' => 'RSSCloudRequestNotify'));
追記(2010-05-08):
0.9.2 で修正されたことを確認しました。
例えば誰かにフォローされるとこんな件名のメールが飛んできます。
誰かさん は StatusNet であなたのつぶやきを聞いています。
ちょっと気持ち悪いです...。
locale/ja/LC_MESSAGES/statusnet.po にはこのように書いてありました。
翻訳ソフトか何かを使ったのでしょうか。
msgid "%1$s is now listening to your notices on %2$s."
msgstr "%1$s は %2$s であなたのつぶやきを聞いています。"
以下に変更し、
msgstr "%1$s は %2$s であなたをフォローしました。"
msgfmt コマンドで .mo ファイルに変換しました。
% msgfmt -o statusnet.mo statusnet.po
※ Debian Lenny では msgfmt は gettext パッケージに含まれています。
個人的なメモ。ページ番号は「入門 Git」より。
P21
# グローバル変数の確認
% git config --global --list
# グローバル変数に自分の名前とメールアドレスを追加
% git config --global user.name "Takashi Masuda"
% git config --global user.email "masutaka.net@gmail.com"
# 大半の出力に色づけ
% git config --global color.ui true
# グローバル変数とローカル変数の確認
% git config --list
P42
# コミットのための対話的なステージング
% git add -i
% git pull
% git pull git://github.com/hayamiz/twittering-mode.git master
git pull と同じ意味
% git fetch
% git merge origin/master
% git push --dry-run git@github.com:masutaka/twittering-mode.git
% git push git@github.com:masutaka/twittering-mode.git
mergeしてコンフリクトが発生し、面倒で止めたくなったらこれ。
% git reset --hard ORIG_HEAD
ローカルで rm したファイルの復活
# ファイルを指定
% git checkout hoge/huga/hogehoge.txt
or
# 全ファイル(編集したファイルも上書きするので超危険なコマンド!!)
% git checkout .
git log はこれらのコマンドをよく使う
# 修正したファイル名とログメッセージを参照
% git log --stat --summary
# 修正した差分を全て表示
% git log -p
# Author, Committer 両方の名前を表示
git log --pretty=full
リポジトリ自体のクローン(git でのリポジトリのコピーがこれという認識)
% git clone --bare rep.git rep2.git
直前のコミットログの訂正
% git commit --amend
直前のコミットの取り止め。git add した直後の Staging 状態になる。
% git reset --soft 'HEAD^1'
直前のコミットの削除。危険。
% git reset --hard 'HEAD^1'
リモートリポジトリの場所
% git remote -v
リネームしたファイルを追跡した diff
% git diff -M
% git log -p -M
特定リビジョンのファイルの中身を確認
% git show リビジョン:ファイルパス
http://blog.ecworks.jp/archives/1145
http://d.hatena.ne.jp/Ubuntu/20081023/github
[2010-04-18-7] の補完です。
statusnet は http://example.com/statusnet/ に構築し、
[2010-04-18-3] の Fancy URLs の設定を行ったものとします。
KeySnail でツイートすることも出来ます。以下を .keysnail.js にコピペ
すれば、"C-c t" または "C-c C-t" でツイートできます。
key.setGlobalKey([['C-c', 't'], ['C-c', 'C-t']], function (aEvent) { prompt.read("tweet:", function (aTweet) { var username = "アカウント"; var password = "パスワード"; var xhr = new XMLHttpRequest; xhr.open("POST", "http://example.com/statusnet/api/statuses/update.json", false, username, password); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("X-Twitter-Client", "KeySnail"); xhr.setRequestHeader("X-Twitter-Client-Version", "0.1"); xhr.send("status=" + aTweet); }); }, 'Twitter投稿');
いろんな意味で本家の "C-c t" に遠く及ばないです。とりあえずツイート
出来るよといったレベルです。"C-c T" の「このページのタイトルと URL
を使ってつぶやく」の実装もまだです。
出来れば、オリジナルの Yet Another Twitter Client KeySnail を修正
する方向で実装したいですねえ。Twitter アカウントがあれば、オフィシャ
ルな StatusNet のサイト https://identi.ca/ にログイン出来ます。誰か
試してー。^^;
参考情報:
Firefox via KeySnailでtwitterに投稿するjavascript
StatusNet のデモサイト https://identi.ca/ 用のクライアント
Identifox を少し修正すると、イントラネットに構築した StatusNet でも
使えます。
statusnet は http://example.com/statusnet/ に構築し、
[2010-04-18-3] の Fancy URLs の設定を行ったものとします。
Firefox 用アドオンです。ある時点の Ecofon を StatusNet 用にポーティ
ングしたようです。
https://identi.ca/api/ がハードコーディングされているので、
identifox-0.9-fx.xpi を zip 伸長し、以下のような修正を加え、
また zip 圧縮します。
--- orig/identifox-0.9-fx/components/nsIdenticaNotifier.js 2009-03-09 03:15:06.000000000 +0900 +++ identifox-0.9-fx/components/nsIdenticaNotifier.js 2010-04-18 17:18:38.000000000 +0900 @@ -17,7 +17,7 @@ var insert_status_stmt = null; var find_status_stmt = null; -const IDENTICA_API_URL = "https://identi.ca/api/"; +const IDENTICA_API_URL = "http://example.com/statusnet/api/"; const NETWORK_TIMEOUT_TIME = 120; const APP_NAME = "IdentiFox";
他にも KeySnail や twittering-mode が使えそうですが、まだ調査中です。
参考情報:
Web Apps|StatusNet
Twmode
追記(2010-04-23):
[2010-04-23-1] に KeySnail の記事をアップしました。まだ暫定です。
StatusNet は一部、インターネットサービスにアクセスする箇所があるの
で、私がクリーンルームに設置した時はいくつかエラーが発生しました。
参考までに、情報と対策をまとめておきます。
《続きを読む》
フォローされた時や、お気に入りに追加された時に、ユーザにメール通知
されるようになるので、SMTP の設定をすると良いでしょう。パスワードを
忘れた時にユーザが再発行手続きを行えるので、メンテナンスコストも下
がります。
以下は認証なしの SMTP サーバの場合です。config.php に追記します。
// Email info, used for all outbound email $config['mail']['notifyfrom'] = 'noreply@example.com'; // Domain for generating no-reply and incoming email addresses, if enabled. // Defaults to site server name. $config['mail']['domain'] = 'example.com'; // See http://pear.php.net/manual/en/package.mail.mail.factory.php for options $config['mail']['backend'] = 'smtp'; $config['mail']['params'] = array( 'host' => 'SmtpServerName', 'port' => 25, );
$config['mail']['notifyfrom'] は StatusNet が送るメールの From: に
なります。適当に設定してください。
私が設置したクリーンルームでは、メールヘッダが常に文字化けしてしま
いました。メールサーバが怪しげな変換をしているようなんですが、そも
そも StatusNet がメールヘッダの MIME ENCODE をしていないことが原因
です。
適当なパッチを作りましたので、もし困っていたらご利用下さい。
《続きを読む》
設定はある程度 Web から出来ますが、出来ない設定も多いです。
そんな場合は config.php を修正しましょう。
私は以下の設定をしました。
$config['attachments']['uploads'] = false;
→必要になったら ON にすれば良いと思うので、添付ファイルは OFF にし
ました。
$config['location']['share'] = 'never';
→ツイートしたときに、常に「狛江市, 東京都, 日本」と挿入されるので
OFF にしました。今回設置したのはクリーンルームだったので、そもそも
位置情報が不要です。
その他の設定は config.php.sample が参考になると思います。ただ、ここ
にも載っていない設定があるので、*.php を common_config 等で grep す
る必要があるかもしれません。
Fancy URLs を設定すると、URL から index.php がなくなります。
クールな URL を実現するためにも、是非設定しましょう。
設定は比較的簡単です。
1. .htaccess を作成します。
statusnet 直下の htaccess.sample を .htaccess という名前で保存し、
修正します。以下は http://example.com/statusnet/ というサイトの場合です。
--- /var/www/statusnet/htaccess.sample 2010-03-29 00:39:56.000000000 +0900 +++ /var/www/statusnet/.htaccess 2010-04-13 01:36:37.000000000 +0900 @@ -7,7 +7,7 @@ # http://example.com/ => / # http://example.com/mublog/ => /mublog/ # - RewriteBase /mublog/ + RewriteBase /statusnet/ ## Uncomment these if having trouble with API authentication ## when PHP is running in CGI or FastCGI mode.
http://example.com/statusnet/<AdministratorNickname>/all に
アクセス出来ることを確認しましょう。
<AdministratorNickname> は [2010-04-18-1] の通りに設定した場合、
root になります。
アクセス出来ない場合は、mod_rewrite が有効でないのかもしれません。
[2010-04-13-1] を参考にしてみてください。
2. Fancy URLs を有効にします。
管理者権限(今回は root)でログインし、Admin → パスに進みます。
Fancy URLs にチェックを入れれば有効になります。
上のメニューにある Personal や Admin へのリンク先から "index.php"
が消えたはずです。
また、以降の各ツイートや各グループへのリンクからも "index.php" が消
えます。これらは MySQL のデータベースに直に書かれるので、Fancy
URLs は早めに設定することをオススメします。
参考情報:
statusnet-0.9.x.tar.gz の README
ブログを作る際のクールなURLを考える - Open MagicVox.net
Admin → Site の Default language を日本語にするだけではログイン画
面は日本語になりませんでした。ブラウザ側の言語設定によるそうですが、
少なくとも Firefox-3.5.8 は日本語になりませんでした。
language.php を修正します。すぐにログイン画面が日本語になります。
--- orig/statusnet-0.9.1/lib/language.php 2010-03-29 00:39:56.000000000 +0900 +++ statusnet-0.9.1/lib/language.php 2010-04-12 13:20:56.000000000 +0900 @@ -307,6 +307,7 @@ 'ia' => array('q' => 0.8, 'lang' => 'ia', 'name' => 'Interlingua', 'direction' => 'ltr'), 'is' => array('q' => 0.1, 'lang' => 'is', 'name' => 'Icelandic', 'direction' => 'ltr'), 'it' => array('q' => 1, 'lang' => 'it', 'name' => 'Italian', 'direction' => 'ltr'), + 'ja' => array('q' => 0.5, 'lang' => 'ja', 'name' => 'Japanese', 'direction' => 'ltr'), 'jp' => array('q' => 0.5, 'lang' => 'ja', 'name' => 'Japanese', 'direction' => 'ltr'), 'ko' => array('q' => 0.9, 'lang' => 'ko', 'name' => 'Korean', 'direction' => 'ltr'), 'mk' => array('q' => 0.5, 'lang' => 'mk', 'name' => 'Macedonian', 'direction' => 'ltr'),
参考情報:
Twitter Clone なStatusNet を入れてみる - matoken’s meme -hatena-
[2010-04-11-1] の補完。
Debian squeeze でのイントラネット版 Twitter「StatusNet」の構築方法
をまとめます。
StatusNet は PHP で書かれているので、以下のような基本的な PHP スク
リプトが Web サーバ上で動くことを確認しておきます。
<?php phpinfo(); ?>
※ "#" は root での作業、"%" は一般ユーザでの作業です。
# cd /var/www
# tar xzf statusnet-0.9.1.tar.gz
# mv statusnet-0.9.1 statusnet
# cd statusnet
# chown -R root:root .
# chown www-data:www-data . avatar background file
% mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1292 Server version: 5.1.45-1 (Debian) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec) mysql> create database statusnet; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | statusnet | +--------------------+ 3 rows in set (0.00 sec) mysql> grant all privileges on statusnet.* to statusnetuser@localhost identified by 'statusnetpassword'; Query OK, 0 rows affected (0.00 sec) mysql> exit; Bye
以下を参考に StatusNet の設定をします。
設定名 | 値 |
Site name | Hoge StatusNet |
Fancy URLs | disable |
Hostname | localhost |
Type | MySQL |
Name | statusnet(※1) |
DB username | statusnetuser(※1) |
DB password | statusnetpassword(※1) |
Administrator nickname | root(※2) |
Administrator password | rootpassword(※2) |
Subscribe to announcements | チェック |
インストーラにバグがあるのか、今回はここで止まってしまいましたが、
http://<インストールするマシン名>/statusnet/ には問題なくアクセスで
きたので、まあ良しとします。
Install StatusNet
・Starting installation...
・Checking database...
・Changing to database...
・Running database script...
・Adding SMS carrier data to database...
・Adding notice source data to database...
・Adding foreign service data to database...
・Writing config file...
curl や gd、mysql 関連のエラーが出たら、該当のパッケージをインストー
ルし、Apache を再起動してください。
# /etc/init.d/apache2 restart
私の場合は php5-curl, php5-gd, php5-mysql をインストールする必要が
ありました。
参考情報:
statusnet-0.9.x.tar.gz の README
http://localhost/hoge/ で .htaccess から mod_rewrite を使う方法。
root になって a2enmod で有効にする。
# a2enmod rewrite
これだけで使えない場合は、.htaccess の読み込みが許可されていない場
合が多い。というか私がそうだった。
/etc/apache2/sites-available/default を以下のように修正。
修正前
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory>
修正後
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride FileInfo Options Order allow,deny allow from all </Directory>
.htaccess が読み込まれているか否かは、必ずエラーが発生する内容にし
て試せば良いと思う。
mod_rewrite とは関係なくなってしまうが、.htaccess の以下のような
Order を許可するには AllowOverride の行に Limit を続けて書けば良い。
<FilesMatch "\.(ini)"> Order allow,deny </FilesMatch>
参考情報: AllowOverride ディレクティブ - Apache コア機能
某所で「社内マイクロブログ しゃべる」をテスト稼働していますが、不満
な点があるので @fortunan オススメの「StatusNet」を試してみました。
どちらもいわゆるイントラネット版 Twitter です。
まずは両者の比較です。
しゃべる | StatusNet | |
言語 | Java | PHP |
データベース | しゃべる付属の MySQL | MySQL or pgsql |
インストール | パッケージ(msi,rpm,deb)から | tar ball を展開し、Web サーバ上で動作させる |
ユーザ登録 | 管理者権限で作成 | ユーザ権限でも作成可(※1) |
まとめてユーザ登録 | csv からインポート可能 | ユーザが自由に作れるので、実質必要なし |
言語対応 | 日本語のみサポート | 多言語サポート |
検索 | 出来ない(※2) | 出来るが、日本語検索がやや怪しい |
ReTweet | 非サポート | 公式 RT が出来る |
ハッシュタグ | 非サポート | サポート |
開発状況 | 2009.3 から停止状態 | 活発 |
クライアント | P3fSV:PeraPeraPrv for Shovel | Identifox(※3) |
2010-04 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30