StatusNet Desktop
純正のクライアントソフトがあるとは知りませんでした。orz
@crontab33 さん、ありがとうございます。
上のスクリーンショットは Windows 版です。他に [OSX 10.5 Intel]
[Linux Intel 32-bit] [Linux Intel 64-bit] があるようです。
- 勝手に自動リロードしてくれる。
- 間違って Enter してもツイートしない。
- 一画面に表示されるツイート数が少ない。
- 過去のツイートを辿れない。
- 削除されたツイートがいつまでも表示される。再起動してもダメ。
ローカルでキャッシュを持っているみたい。
- 動きがもっさりしている。
すごく良いクライアントではありませんが、選択肢が増えるのは良いことです。
あ、試していませんが、iPhone 版もありました。
追記(2011-01-24):
クリーンルームだと以下のエラーが発生し、インストール出来ませんでした。。
本家に取り込んで頂けたので、[2010-07-18-2] の記事を全体的に書き換え
ました。
0.9.4 がリリースされてました。
今回も私は関係ない修正ばかりかな?
アップデートしましたが、よく分かりませんでした。アップデート手順は
今まで [2010-05-05-1][2010-07-01-1] と同じです。
あ、twittering-mode.el [2010-07-18-2] からツイートできることも確認
しました。
twittering-mode.el は、Emacs で動作する Twitter クライアントです。
詳細はオフィシャルサイトをご覧下さい。
最新リリース版 v1.0.0 は対応していませんが、2010.8.22 から Git 最新
版で StatusNet を使えるようになりました!
Twitter で出来ることはほとんど StatusNet で出来ます。ただし、
StatusNet がサポートしていない機能は使えません。例えば、`V' からの
:retweeted_by_me, :retweeted_to_me, :retweets_of_me や `L' からのリ
ストです。
GitHub からソースコード一式をダウンロードします。
http://github.com/hayamiz/twittering-mode/archives/master
EmacsWiki の「インストールの手引き」に従ってインストールします。
http://www.emacswiki.org/emacs-ja/TwitteringMode-ja
StatusNet 固有の設定をします。以下は StatusNet を
http://example.com/statusnet/ に構築し、[2010-04-18-3] の Fancy
URLs の設定を行った場合の設定になります。
(setq twittering-service-method 'statusnet) (setq twittering-auth-method 'basic) (setq twittering-username "StatusNetのアカウント") (setq twittering-api-host "example.com") (setq twittering-api-search-host "example.com") (setq twittering-web-host "example.com") (setq twittering-api-prefix "statusnet/api/") (setq twittering-search-api-method "statusnet/api/search") (setq twittering-web-path-prefix "statusnet")
SSL を使っていなければ、こちらも設定してください。
(setq twittering-use-ssl nil)
StatusNet にはハッシュタグやグループ用の API があるので、対応したい
です。
StatusNet のデモサイト http://identi.ca/ でも使うことが出来ます。
(setq twittering-service-method 'statusnet) (setq twittering-auth-method 'basic) (setq twittering-username "StatusNetのアカウント") (setq twittering-api-host "identi.ca") (setq twittering-api-search-host "identi.ca") (setq twittering-web-host "identi.ca") (setq twittering-api-prefix "api/") (setq twittering-search-api-method "api/search") (setq twittering-web-path-prefix "")
追記(2010-08-22):
本家に取り込んで頂けたので、全体的に書き換えました。
0.9.3 がリリースされてました。
今回もマイナーバージョンアップのようです。
Admin -> Design から css を変更出来るようになりました。
プロファイルに Daily average が表示されるようになりました。
他は私にはあまり関係ないかな。
前回 [2010-05-05-1] と同じ手順でアップデート出来ました。
日本語パッチ [2010-04-18-2] は今回も必要でした。
会社の StatusNet はまだアップデートしてませんが、[2010-04-18-5]
[2010-04-29-2] [2010-04-18-6] のパッチは必要そうです。
追記(2010-07-07):
会社でもバージョンアップしました。どのパッチも問題なく充てることが
出来ました。
[2010-05-16-1] の補完です。
今回の記事は元々、twittering-mode で StatusNet を使うために書きまし
た。しかし、twittering-mode 側の修正で対応することにしたので、私は
今現在設定していません。ニッチな層向けに残しておくことにします。
Identifox, twittering-mode, TweetDeck 以外に使えるクライアントがあ
れば、教えて下さい!
さて、説明に入ります。
statusnet は http://example.com/statusnet/ に構築し、
[2010-04-18-3] の Fancy URLs の設定を行ったものとします。
StatusNet の API は Twitter-compatible です。
ただし、[2010-05-16-1] で書きましたが、API の URL は少し異なります。
何らかの事情で Twitter クライアントを修正できない場合でも、Twitter
とパスを同じにすれば使えるかもしれません。Apache の mod_rewriteで置
換してみましょう。
※ /var/www は Debian における、Apache の DocumentRoot です。
以下を設定します。
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^1/(.*)$ statusnet/api/$1 RewriteRule ^search(.*)$ statusnet/api/search$1 </IfModule>
1 つ目の RewriteRule で http://example.com/1/* へのアクセスを、
http://example.com/statusnet/api/* に切り替えています。
この設定は必須です。
2 つ目の RewriteRule では検索時にアクセスする
http://example.com/search* を
http://example.com/statusnet/api/search* に切り替えています。
[2010-04-18-3] の設定も込みのパッチを貼り付けておきます。
--- /var/www/statusnet/htaccess.sample 2010-05-04 04:27:44.000000000 +0900 +++ /var/www/statusnet/.htaccess 2010-05-08 22:03:29.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. @@ -15,6 +15,9 @@ #RewriteCond %{HTTP:Authorization} ^(.*) #RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] + # for twitter client + RewriteRule (.*)/status/(.*)$ notice/$2 [R=301,L] + RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) index.php?p=$1 [L,QSA]
各ツイートへの URL を変更する設定です。
http://example.com/statusnet/<アカウント>/status/<ツイート番号> へ
のアクセスを、http://example.com/statusnet/notice/<ツイート番号> に
リダイレクトする設定です。
本当は /var/www/.htaccess に書きたかったのですが、うまくいきません
でした。
TweetDeck から StatusNet を使えるようになりました!!
TweetDeck は、Mac, Windows, Linux, iPhone, iPod touch, iPad 等で動
作する Twitter クライアントです。今回は Windows 版で試しました。
インストールと StatusNet 向けの設定は前述の URL を参考にしてくださ
い。TweetDeck for Desktop は 0.34.1 以上である必要があります。
デフォルトの設定では日本語を表示できません。
Setting アイコンをクリック→
Color/Font のタブをクリック→
InternationalFont/TwitterKey にチェックを入れれば表示できます。
Web 版で悩まされてきた、Enter でのツイートは抑制出来ます。
Setting アイコンをクリック→
General のタブをクリック→
Press Enter to Send an Update のチェックを外せば OK です。
なぜか、パブリックタイムラインを表示出来ませんでした。
そのうち対応されるのかな?
参考情報:
Tweetdeck 日本語の設定
追記(2010-05-24):
クリーンルームでは使えませんでした。初回起動時に必ず
Twitter/Facebook/MySpace のいずれかの認証を受ける必要があるためです。
非常に残念です。
追記(2010-06-07):
ある方経由で、開発元に問い合わせてもらっています。
追記(2010-06-09):
ダメでした。まだ対応する気はないとのことです。
気長に待ちましょう。。。
statusnet は http://example.com/statusnet/ に構築し、
[2010-04-18-3] の Fancy URLs の設定を行ったものとします。
基本 API
ホスト名 | パス | |
http://api.twitter.com | /1/statuses/*.xml | |
StatusNet | http://example.com | /statusnet/api/statuses/*.xml |
ホスト名 | パス | |
http://search.twitter.com | /search* | |
StatusNet | http://example.com | /statusnet/api/search* |
ホスト名 | パス | |
http://twitter.com | /<アカウント>/status/<ツイート番号> | |
StatusNet | http://example.com | /statusnet/notice/<ツイート番号> |
ホスト名 | パス | |
http://twitter.com | /#search?q=%23<タグ名> | |
StatusNet | http://example.com | /statusnet/tag/<タグ名> |
0.9.2 がリリースされたので、バージョンアップしました。
インストール [2010-04-18-1] をお手軽にした感じでした。
※ "#" は root での作業、"%" は一般ユーザでの作業です。
# /etc/init.d/apache2 stop
# cd /var/www
# tar xzf statusnet-0.9.2.tar.gz
# mv statusnet statusnet.bak
# mv statusnet-0.9.2 statusnet
# cd statusnet
# cp ../statusnet.bak/.htaccess .
# cp ../statusnet.bak/config.php .
# cp ../statusnet.bak/avatar/* avatar
# cp ../statusnet.bak/background/* background
# cp ../statusnet.bak/file/* file
# chown -R root:root .
# chown www-data:www-data . .htaccess config.php
# chown -R www-data:www-data avatar background file
今回は [2010-04-18-2] [2010-04-18-5] のパッチを当て、
[2010-04-29-2] の日本語を修正しました。
[2010-04-18-6] は当てませんでした。[2010-04-29-3] は
修正されていました。
# /etc/init.d/apache2 start
README によると、今回の主な修正は OStatus がらみのバグフィックスの
ようです。他にもインストーラのバグが修正されています。
追記(2010-05-22):
なぜか Debian Lenny では locale を英語から他の言語に変更出来ません
でした。なんでだろう???
追記(2010-05-25):
Admin->パスに存在しないロケールのパスが書かれていたためでした。
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 パッケージに含まれています。
[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 の記事をアップしました。まだ暫定です。
フォローされた時や、お気に入りに追加された時に、ユーザにメール通知
されるようになるので、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