ネガティブ思考の例とか
- 私は認められていない。
- 私は必要とされていない。
- 私はいてもいなくても同じ。
- 私に生きる意味はない。
- 私に生きる価値はない。
- 私は相手にとっていくらでも代替がきく人間である。
- きっとうまくいかない。
- (危機が迫ってもきっと)誰も助けてくれない。
- つまらない。
- 自分が悪い。(原因がある)
などなど。
などなど。
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;
に変えてしまった。
うーん。謎いです!
主要なのはこんな感じ?
似たような状況に陥ってる人はおらんのかな。
僕はあまり歓迎していない。
copy.jsにはcustom句(?)があり、この値がfunctionオブジェクトの場合はそれを実行した結果文字列をクリップボードにコピーする機能がある。これがWeData化すると、よく分からないネットワーク上の誰もが更新できるコードがChrome特権化で動くことになる。
この点は確かに、同じように悩んだ部分である。
なので、とりあえずの対処として default では wedata は読込まず、かつ読込む設定にしても custom 関数はさらにオプション指定しないと登録されないようにと二重の設定をさせるようにしていたのだが(前回の記事参照)、 やはりいつの間にか悪意あるユーザーによって function が書き換えられないとも限らない。
なので、少しセキュリティ強化を入れた。
まず、以下のような template があったとする。
これを初めて実行しようとした時に、以下のようなメッセージが表示される。
キャンセルすると、そのまま終了。OK を押すと、custom 関数が実行され、
と、表示される。ここまでが、1回目のチェック。
ここで、悪意あるユーザーが現れ、wedata のデータを以下のように変更したとする。
で、このように wedata が書き換えられた状態を読込み、次回実行しようとすると、以前確認した時点から変更があれば、再度確認ダイアログを表示する。
(wedata のデータは 24時間保存しているので、実際には変更されてもすぐに取り込まれる訳ではない)
どうだろう。
これなら Greasemonkey などのように、user scripts を確認するタイミングができるし、知らないうちに違う function に置き換えられる危険も少ない。(バグがなければ。ただ、confirm は default で ok に focus がある……)
custom に指定する funciton は大抵小さいだろうから、これくらいで十分かな?と。
これ作ったからwedata SITEINFO からコマンドひっぱってこれるよーっていうcopy.jsの改良は他のエロい御人たちにまかせる。copy.js 用のテンプレート wedata Database 作った – VoQn.vimp – vimperatorグループ
とのことなので、エロくないけど機能追加しといた。copy.js 自身の対応 version は、すでに completion の関係から、実質 2.0 以上になってたので、2.0 以上のみの対応。
設定できる Option は pluginhelp -v でみてくれればよいけど、簡単に説明しておく。
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グループ
らしいので、誰か適当におねがい。
いじょ。
セキュリティに関して少々不安があったので、ちょっと機能追加。
[vimperator]copy.js の wedata 読み込みセキュリティ強化 – suVeneのアレ
% 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 の順番が悪いのかわからないが、なにやら似たような状況の人もいる様子。
ここの中を読んでると、以下の対応方法がリンクされてて、#post5 の通りやったらエラー回避できた。
[ubuntu] apt-get upgrade fails for 8.04.1 Server – Ubuntu Forums
方法は、まんま書いてある通りだが、
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'})";
以上で完了。
何のエラーだか詳しくよくわからんかったのだが、とりあえず ok?
Recent Comments