Publish::Twitterで日本語を投稿する

きっとすぐパッチが当たる気がしますが*1

さっき気づいたけど、どうも日本語がうまく投稿できてない。

http://nyarla.net/blog/plagger10

utf8にエンコードしてやるです。

ついでに、直接Plaggerのソースをいじっちゃう人がいるようなのであえて書いておきますと、後にアップデートされたことも考えて、こちらの方のように直接改造するのではなく継承したほうがいいです。

たとえば、これは私が今までやってた、del.icio.us -> はてブへの自動投稿にTwitterへの投稿も足してやろうとさっき書いたものですが

package Plagger::Plugin::Publish::TwitterBookmark;
use strict;
use base qw( Plagger::Plugin::Publish::Twitter );
use Encode;

sub publish_entry {
    my($self, $context, $args) = @_;

    my $body = 'bkmked:'.( $args->{entry}->summary || $args->{entry}->title ) . " " . $args->{entry}->permalink;
    $context->log(info => "Updating Twitter status to '$body'");
    $self->{twitter}->update(encode_utf8($body)) or $context->error("Can't update twitter status");

}
1;

これを /home/myname/lib/Plagger/Plugin/Publish かなにかに置いて、

perl -I/home/myname/lib /usr/local/bin/plagger -c /home/myname/conf/foo.yml

とかで呼び出してやればいい気がします*2

*1:早くもあたるっぽい。Publish::Twitterのdiff - otsune's SnakeOil - subtech

*2:コメントにて、globalのplugin_pathで設定する方法が!なんだそっか。

buff-sel.el

URLをGETするelispを書いてるうちに、ふと「こんなのあるんじゃないか」と。PerlでいうLWPみたいなの。emacs-w3とかにないか。

…と思っているうちにEmacsからAtomでアクセスするのを見つけました。
clmemo@aka: Blog の記事を Emacs からポストする (1)
あはは、なんだこれでいいんじゃんか。とは思ったけど、emacs-atompubサイト、tracらしいけど500エラー連発。し、しっかり!

しかしEmacs関係の情報は、いろいろあるんだかないんだかよくわからないね。検索には引っかかるんだけど古くてリンク切れだったりMacで盛り上がってたり。まあそんなこんなでMeadowをバージョンアップしてみる気になった。Meadow 1.15をこれまで使っていて、さすがに古すぎるだろうと思ったし。

さて、buff-sel.el っていうのをだいぶ前から使っていて、これはC-xb でバッファを切り替えるとき、ミニバッファでC-n, C-pをすると隣のバッファ名が順に表示されるというもの。地味だけどもう体が慣れていて、ないと不便なのですよ。

これがMeadow2では動かない。調べてみるとミニバッファの仕様が変わったようで、erase-bufferしてるところでread-onlyである、と怒られてしまう。なんだかわからないけど以下のようにdelete-regionに置き換えたら直った。

  (defun buffer-select-prev ()
  "Move to the previous buffer on the buffer-list."
     (interactive)
-    (erase-buffer)
+    (let ((p (point)))                
+      (save-excursion 
+        (beginning-of-line)
+        (delete-region (point) p)))   
     (setq buffer-select-list-index (1- buffer-select-list-index))
     (if (< buffer-select-list-index 0)
         (setq buffer-select-list-index (1- (length buffer-select-local-list)))
     )
     (insert (buffer-name
                (nth buffer-select-list-index buffer-select-local-list)))
  )

buffer-select-next も同様。ああソース自体が検索できないぞ? 使ってみたいという奇特なひとのために。buff-sel.el

追記

Mule-UCS入れようとしたら、max-lisp-eval-depth がexceedしたそうです。

(setq max-lisp-eval-depth 10000)
(setq max-specpdl-size 10000)

とかやってもだめ。…正直いって、だめだこりゃ。もー、ばか!
もう付き合ってられん!Meadow 1.15でいこう!

エロチック街道更新システム開発計画

今サイト更新はWindows側マシンのMeadowからsamba経由でチョクにサーバのindex.htmlを編集しているのです。これ便利よ。C-xC-s が即パブリッシュ。実況的な更新も単に小刻みにセーブするだけ。

しかしそろそろブログ的というかCMS的に、ファイル保存時にDBに突っ込んだり個別ページ作ったり、あとRSSですか、まああれこれしたくなったわけで。今までの手軽さをキープしたままそれをやりたい。
むろん、車輪の再発明をするのが楽しいわけで、MTなどのツールを入れるのは却下。

とすると、セーブのキー入力をした時点でサーバ側更新プログラムをキックできればそれに越したことはない。数秒ごとにファイルが更新されたかどうかポーリングする手もあるけど、タイムラグがね。
そこで「Emacsでプロセス扱うのって、他人のをいじったことはあるけど自分で作ったことなかったなあ」などと思いつついろいろ今いじってるとこです。
まあ、Meadowからopen-network-stream でサーバのURL叩いて…って感じかな。

PuTTYでサーバに入ってそこでGNU Emacsを上げるほうがプログラムを起動するには素直かとも考えたんだけど、今度はOSかemacsか、どうもUTF-8環境だと表示がそもそもうまくいかない。euc-jpならいけるのだが、ソースや設定ファイルなど全部EUCで書くってのもぞっとしないしなあ。

Google ReaderでCPU100%?

ウイルスバスター2007で処理が重く(遅く)なる問題と対処法‐園部研という記事を読んでいて、まあ、ノートンが重いからウイルスバスターにしたのに、難儀なこっちゃ、と思いつつ、でも確かにたまに重いことがある、ゲージの動作がガタガタなのでパンヤもでないからトマホークなんて夢のまた夢、なんてこともあったので、ふとタスクマネージャを見てみたのでした。

すると、CPUをほぼ100%占めてるやつが、いましたよ。…ウイルスバスターではなくFirefox

おや、なんで?いつのまにかそういう仕様?いや、もしそうならもっと騒ぎになってそうだわなあ…と思って、いくつか怪しげな開きっぱなしのタブを消してみました。
YouTubeは…関係ない。flashや広告gifが多目のページも…関係ない。ついでにエロチック街道…も関係ない。

と、Google Readerを閉じたところぱたりとCPUが0%に。これか!
まあその後念のためもう一度開いてみると、…特にCPUを消費し続けることもなく、落ち着いてる。
多分、Ajaxとかなんとか、いろんなことやってるJavaScriptがどこかでおかしくなって、延々となにかの処理を繰り返していたんじゃないかな。OSやブラウザを数週間ずーっと立ち上げっぱなしなんてザラな使い方をしているので、それがよくないのかもしれない。

思いついたときにすぐ操作できる状態にしたいからそうしてるわけで、特にRSS Readerなんてのはいまや一番使ってるサービス。あまり使わないようにする、というわけにもいかない。

ってなわけで、Google Readerに限らず、GMailとかLDRとか、なんだかいろんなことをやってくれていそうなサービスを利用するときは、ときどきせめてタブを閉じてみたりしよう、と。
そんな風に思った次第。

今年も東京でYAPC

http://tokyo2007.yapcasia.org/
昨年大成功を収めた(何をもって成功はよくわからないけど、多分成功なんじゃないかな!)
Perlカンファレンスが今年も!

昨年はPerl作者Larry WallやらDamian Conwayを始め綺羅星のごときPerl神たちが集い、
「これを逃したら次に直接見られる機会ももうあるまい」
とあわてて駆けつけたものですが、今年もかー。

なんにせよ、あの笑いが絶えないカンファレンスがまた見られるとはうれしいことです。
四月の頭は仕事入れないようにしよう。

とりあえずYAPC::Asiaのエントリーにパッチを。

--- yapcasia_2007_tokyo.html.orig   2007-01-08 22:16:55.000000000 +0900
+++ yapcasia_2007_tokyo.html        2007-01-08 22:17:06.000000000 +0900
@@ -9,7 +9,7 @@

 2006年につづき、海外からのゲストスピーカーも多数予定しています。

-チケットの販売開始は2006年の2月中旬〜下旬を予定しています。
+チケットの販売開始は2007年の2月中旬〜下旬を予定しています。

 また、スピーカーの募集も本日より開始しています。20分、45分のプレゼンテーション の登録を受け付けます。

Encode::Detect のコンパイルエラー

今(今?)ちまたで絶賛のPlaggerインストールプレイですが、手ごわい相手としてよく挙げられているものにEncode::Detectってのがあります。

なんかTemplateが中ボスでEncode::Detectがラスボスっぽい
http://mono.kmc.gr.jp/~yhara/d/?date=20061015

でまあ、このあたりとかを見てそのままモジュールを順に入れたりするわけですが。
http://www.emaillab.org/spamassassin/patch/spamassassin-3.1.5-normalize-test6.txt

どうもgccが古いとコケるらしい。
http://d.hatena.ne.jp/nipotan/20060821/1156142353

Encode::Detect 1.00になっても同じ。

parse error before `__attribute__'

などが大量に出て、

error building lib/Encode/Detect/Detector.o from 'lib/Encode/Detect/Detector.c' at /usr/local/lib/perl5/site_perl/5.8.8/ExtUtils/CBuilder/Base.pm line 108.
make: *** [all] Error 2

というコンパイルエラー。
GCCのバージョンを上げればよさそうなんだけど、私の環境はFedora RegacyだったりしてGCC 3.2、それ以降のRPMがなさげ。

もう少し調べると、これについては
http://rt.perl.org/rt3//Public/Bug/Display.html?id=39634
あたりで議論されていました。perl.hにパッチが、とか言ってますがとりあえずの対処として、
Encode::Detect を落としてきて Detector.xs に以下のパッチを当てると解消します。

--- Detector.xs.orig    2006-10-28 05:48:59.000000000 +0900
+++ Detector.xs 2007-01-07 01:26:42.000000000 +0900
@@ -38,6 +38,7 @@
 #define PERL_NO_GET_CONTEXT     /* we want efficiency */
 #include "EXTERN.h"
 #include "perl.h"
+#undef HASATTRIBUTE_UNUSED
 #include "XSUB.h"
 }

これでやっと入りました。まあなくてもとりあえずPlagger動かせたりはするみたいだけど、
普通にEncode::Guessより便利だし使いたかったので。