アーカイブ

2009 年 1 月 31 日 のアーカイブ

ネガティブ思考の例とか

2009 年 1 月 31 日


ネガティブ思考の例とか。(単純に冷静な現状把握の可能性もあるが)

  • 私は認められていない。
  • 私は必要とされていない。
  • 私はいてもいなくても同じ。
  • 私に生きる意味はない。
  • 私に生きる価値はない。
  • 私は相手にとっていくらでも代替がきく人間である。
  • きっとうまくいかない。
  • (危機が迫ってもきっと)誰も助けてくれない。
  • つまらない。
  • 自分が悪い。(原因がある)
などなど。

日記・散文・その他

Publish::Delicious, LivedoorClip で utf-8 フラグを落として post すると何故か文字化け

2009 年 1 月 27 日


Plagger を利用して、Hatena から Delicious, LivedoorClip に同期してるんだが、2ヶ月ほど前からこんな感じで文字化けするようになってた。

文字化け

文字化け



2ヶ月以上も放置してて、otsune さんからも IRC でつっこまれたので、ちょっと調べてみることに。タイミングとしては、XML::Feed::RSS かなにかが XML::Feed::Entry::Format::RSS とかに変わったあたりなんだけど、そのとき cpan モジュール沢山更新したから、あんまり関係ないのかも。

で、とりあえず試行錯誤でかろうじてわかったのは、Publish::Delicious.pm の場合、

    my $params = {
        url         => $args->{entry}->link,
        description => encode('utf-8', $args->{entry}->title),
        tags        => encode('utf-8', $tag_string),
    };
の部分の、encode をはずすと文字化けしなくなるってこと。Publish::LivedoorClip も同じ。

デバッグしてみても、「utf8::is_utf8($args->{entry}->title->data)」は 1 だし、encode した文字列はちゃんとフラグ落ちてたんだけど、なんでだろう。perl の仕組みも文字列の扱いも詳しくないからこれ以上わからない。

というわけで、とりあえず以下のようなパッチを宛てて文字化け回避したのはいいけど、ちょっと場当たり的。LivedoorClip も似たような感じ。


--- a/plagger/lib/Plagger/Plugin/Publish/Delicious.pm
+++ b/plagger/lib/Plagger/Plugin/Publish/Delicious.pm
@@ -32,12 +32,16 @@ sub add_entry {
    my $params = {
        url         => $args->{entry}->link,
#        description => encode('utf-8', $args->{entry}->title),
#        tags        => encode('utf-8', $tag_string),
        description => $args->{entry}->title,
        tags        => $tag_string,
    };
ついでに、Hatenaブックマークのフィードは、何故か entry_body にブクマした記事の概要が入ってて、summary のほうに自分のコメントが入ってるので、

$params->{extended} = $args->{entry}->body_text;

のところは、
$params->{extended} = $args->{entry}->summary;

に変えてしまった。

うーん。謎いです!

環境

  • Perl v5.8.8 built for i386-freebsd-64int
  • Encode 2.27
  • URI::Fetch 0.08
  • WWW::Mechanize 1.54
  • Net::Delicious 1.13
主要なのはこんな感じ?

似たような状況に陥ってる人はおらんのかな。

Programming ,

[vimperator]copy.js の wedata 読み込みセキュリティ強化

2009 年 1 月 26 日


it:teramako(作者)さんから、copy.js の wedata 読込みに関してこんなコメントが。

僕はあまり歓迎していない。

copy.jsにはcustom句(?)があり、この値がfunctionオブジェクトの場合はそれを実行した結果文字列をクリップボードにコピーする機能がある。これがWeData化すると、よく分からないネットワーク上の誰もが更新できるコードChrome特権化で動くことになる。

copy.js のWeData対応について – vimpな日々 – vimperatorグループ はてなブックマーク数

この点は確かに、同じように悩んだ部分である。
なので、とりあえずの対処として default では wedata は読込まず、かつ読込む設定にしても custom 関数はさらにオプション指定しないと登録されないようにと二重の設定をさせるようにしていたのだが(前回の記事参照)、 やはりいつの間にか悪意あるユーザーによって function が書き換えられないとも限らない。
なので、少しセキュリティ強化を入れた。

まず、以下のような template があったとする。

copy.js template

e.g.)wedata vimp copy template



これを初めて実行しようとした時に、以下のようなメッセージが表示される。

確認ダイアログ

確認ダイアログ



キャンセルすると、そのまま終了。OK を押すと、custom 関数が実行され、

実行ダイアログ

実行ダイアログ



と、表示される。ここまでが、1回目のチェック。

ここで、悪意あるユーザーが現れ、wedata のデータを以下のように変更したとする。

変更されたデータ

変更されたデータ



で、このように wedata が書き換えられた状態を読込み、次回実行しようとすると、以前確認した時点から変更があれば、再度確認ダイアログを表示する。

(wedata のデータは 24時間保存しているので、実際には変更されてもすぐに取り込まれる訳ではない)

確認ダイアログ2

確認ダイアログ2



どうだろう。

これなら Greasemonkey などのように、user scripts を確認するタイミングができるし、知らないうちに違う function に置き換えられる危険も少ない。(バグがなければ。ただ、confirm は default で ok に focus がある……)

custom に指定する funciton は大抵小さいだろうから、これくらいで十分かな?と。

Links


Programming

[vimperator]wedata から copy.js の template 読み込み

2009 年 1 月 26 日


これ作ったからwedata SITEINFO からコマンドひっぱってこれるよーっていうcopy.jsの改良は他のエロい御人たちにまかせる。

copy.js 用のテンプレート wedata Database 作った – VoQn.vimp – vimperatorグループ はてなブックマーク数

とのことなので、エロくないけど機能追加しといた。copy.js 自身の対応 version は、すでに completion の関係から、実質 2.0 以上になってたので、2.0 以上のみの対応。
設定できる Option は pluginhelp -v でみてくれればよいけど、簡単に説明しておく。

  1. liberator.globalVariables.copy_use_wedata = false; // false by default
  2. liberator.globalVariables.copy_wedata_include_custom = true; // false by default
  3. liberator.globalVariables.copy_wedata_exclude_labels = [ 'anylabel1', 'anylabel2', …… ];
1. wedata から template 読込みたい人は true に。

2. custom 関係の template を読込みたい人は true に。(window.eval を利用しているので、default は false にしてる)

3. wedata から読込みたくない label のリストを設定。

ネ、簡単でしょ!

おら、とんでもなくすげぇ便利に copy.js 使ってるぜ!

あたい、copy.js でメシ食ってるわ!

ってな人は、是非 wedata に登録を。
あー、あと

wedataでの説明についてが言葉足らずなので、あとでもうちょっとマシな文面にしたい。「こう書けば良いんでないの」という方アドバイスplz.
copy.js 用のテンプレート wedata Database 作った – VoQn.vimp – vimperatorグループ はてなブックマーク数

らしいので、誰か適当におねがい。

いじょ。

追記1

セキュリティに関して少々不安があったので、ちょっと機能追加。

[vimperator]copy.js の wedata 読み込みセキュリティ強化 – suVeneのアレ はてなブックマーク数


Links


Programming

ubuntu の perl update で git-svn やらがエラー(でたので回避修正)

2009 年 1 月 24 日


今朝、何の update だったか忘れたが、perl のコアモジュール的なアップデートをした後、
plagger とか、git svn rebase などが、以下のエラーで動かなくなった。

% git svn rebase
 Errno architecture (i486-linux-gnu-thread-multi-2.6.24-14-server) does not match executable architecture (i486-linux-gnu-thread-multi-2.6.24-19-server) at /home/suvene/local/lib/perl5/Errno.pm line 11.
 Compilation failed in require at /usr/share/perl/5.8.8/File/Temp.pm line 138.
 BEGIN failed--compilation aborted at /usr/share/perl/5.8.8/File/Temp.pm line 138.
 Compilation failed in require at /usr/lib/perl5/SVN/Ra.pm line 6.
 BEGIN failed--compilation aborted at /usr/lib/perl5/SVN/Ra.pm line 6.
 Compilation failed in require at /usr/bin/git-svn line 30.
ググってみると、バグなのか、upgrade の順番が悪いのかわからないが、なにやら似たような状況の人もいる様子。

Bug #316013 in util-linux (Ubuntu): “apt-get dist-upgrade failed – architecture (i486-linux-gnu-thread-multi-2.6.15.7) does not match executable architecture (i486-linux-gnu-thread-multi-2.6.24-14-server)”

ここの中を読んでると、以下の対応方法がリンクされてて、#post5  の通りやったらエラー回避できた。

[ubuntu] apt-get upgrade fails for 8.04.1 Server – Ubuntu Forums

方法は、まんま書いてある通りだが、
  1. % vim /home/suvene/local/lib/perl5/Errno.pm11~13行目のエラー吐いてる箇所をコメントアウト
    11 #"$Config{'archname'}-$Config{'osvers'}" eq
    12 #"i486-linux-gnu-thread-multi-2.6.24-14-server" or
    13 #    die "Errno architecture (i486-linux-gnu-thread-multi-2.6.24-14-server) does not match executable architecture ($Config{'arch    name'}-$Config{'osvers'})";
  2. % sudo synaptic(GUI の使える環境で)
    全てアップグレードした後閉じる。(念のため reboot したほうがよいかも?)
  3. % cpan -f Errno(もしくはコメントアウトした箇所を元に戻す)
以上で完了。

何のエラーだか詳しくよくわからんかったのだが、とりあえず ok?

Links


Programming , ,