June 2006 Archives
Plagger を楽にインスコするために作り始めたパッケージ群を更新しました。
worepo を使うと、Rawhide (Fedora Development) 環境で、Plagger の実行に必要なパッケージをコマンド1発で高速にインストールできます。
詳しい利用方法は、Plagger の fedora-develpment i386 用 rpm をご覧下さい。
更新の詳細については、
をどうぞ。
バグ情報
過去に、extras の perl-DateTimeパッケージ (DateTime, DateTime::TimeZone, DateTime::Locale の複合パッケージ) を乗っ取った時に、version の指定を間違えたため、extras での更新があっても反映されない状態になっていました。
今回の更新で、worepo より perl-DateTime を削除したので、今後新規に worepo を利用する場合には、このバグ情報の記載は該当しません。
過去に worepo からパッケージをインストールしたことがあり、 rpm -q perl-DateTime の結果が perl-DateTime-0.3000-3.0.2.fc6 となる場合は、 以下の手順で修正をお願いします。
手動で、
sudo rpm -e perl-DateTime --nodeps sudo yum clean all sudo yum install perl-DateTime
と実行してください。本来の extras の perl-DateTime-0.31-1.fc6 以降がインストールされます。
ブログの記事から無断コピペを防止する方法 に関して、もっともっと、たまらない気持ちになる方法があるようですね!
右クリック禁止よりももっと強烈な方法 | Oreriron という記事に、 base64 な encode されてるコードがあります。decode してみると、base64 な encode をされている flash が出てきます。その flash を flasm にかけると、なんと、「クリップボードを経由した無断コピペができないんだ!」と強く実感がわくスクリプトが顔をだします!
ほんと、たまりませんね!
コピペするだけなので、設定がとてもカンタンですね!
movie 'encoded.swf' compressed
// flash 7, total frames: 1, frame rate: 1 fps, 1x1 px
frame 0
push 'code'
getVariable
push 1, 'System'
getVariable
push 'setClipboard'
callMethod
pop
push 0.0, 'this'
getVariable
push 'stop'
callMethod
pop
end // of frame 0
end
ブログの記事から無断コピペを防止する方法があるようです。
設定方法はとてもカンタンです。
以下の JavaScript を書くだけです。mt-site.js とかがいいかもしれませんね!
function ss_clipboardClear()
{
window.clipboardData.setData("Text", " ");
}
setInterval('ss_clipboardClear()', 200);
IE の設定で「スクリプトによる貼り付け処理の許可」を「ダイアログを表示する」とかにしていると、「クリップボードを経由した無断コピペができないんだ!」という実感がわき、とてもうれしくなりますね!特にこの設定の場合、IE のプロセスを kill しないとどうにもできなくなるところが、たまりませんね!
Firefox の場合は、「エラー: window.clipboardData has no properties ソースファイル: http://www.motokari.jp/blog/mt-site.js 行: 106」というエラーが JavaScript コンソールに表示されるということを、drry さんに教えて頂きました。IE の場合と同様に、「クリップボードを経由した無断コピペができないんだ!」という実感がわき、とてもうれしくなりますね!しかも 200ms おきにメッセージを見ることができて、ホントたまりませんね!
この方法は、本仮屋ユイカ オフィシャルブログの方法を参考にさせて頂きました。
こういうひねくれたことをしたいのだけど、実装例ってあるのかな。 いろいろまんどくさいので、大部分を参考にしたい。
- [画像:123456] ではなく[画像:Xを6回]以下のフォームに入力してください。
入力フォーム[_____] - [画像:123456] のような [画像:6桁の数字]を以下のフォームに入力すると[画像:スパム]として取り扱います。ですから、[画像:ABCDEF]の[画像:D]を[画像:X]に置き換えた文字列を[画像:入力して下さい]。
入力フォーム[_____] - [画像:123456] を以下のフォームに入力すると[画像:正しい入力]として取り扱います。ですから、[画像:ABCDEF]の[画像:D]を[画像:X]に置き換えた文字列を[画像:入力する必要はないかもわからんね]。
入力フォーム[_____]
Yappo::Hatena::Group::Subtech Plagger のフェーズ から
「また、途中に勝手に落ちちゃうモジュールがあったとしても、被害を最小限にしたいですね。」
というのは(run_hook 内で callback するときに eval で囲む)にするではなくて?
なるほど!
eval 囲むことによって、勝手に落ちちゃう件は解決なのですね。ありがとうございます。
現在の Plagger のフェーズは、Plagger のフェーズの流れで書いたように、
- Aggregate
- Upgrade
- SmartFeed
- Publish
という感じになってますね。
自前でクロールしたり、たくさんフィードを登録してるときに、メモリ使用量がありえないことにならないようにしたいですね。また、途中に勝手に落ちちゃうモジュールがあったとしても、被害を最小限にしたいですね。
安全に動かすための方法を CustomFeed 抜き、SmartFeed 抜きで考えています。
- Crawl
- Parse
- Upgrade
- Publish
Crawl フェーズ - subscription.load - (feed = subscription->feeds) - crawl.feed - store.rawfeed (生の Feed を保存) Parse フェーズ - (feed = retrieve.rawfeeds) - aggregator.filter.feed - (entry = feed->entries) - aggregator.entry.fixup - aggregator.finalize - store.feed (Parse 済みの Feed を保存) Upgrade フェーズ - (feed = retrieve.feeds) - (entry = feed->entries) - update.entry.fixup - update.feed.fixup - update.fixup - store.feed (Upgrade 済みの Feed を保存) Publish フェーズ - ...
あとは実装して試してみるだけです。
Plagger を Catalyst アプリの中で使う では、Plagger の Subscription::Config と Aggregator::Simple が動きました。
今度は、CustomFeed::Debug の config の中身を書き換えて Filter::EntryFullText に渡して、コンテンツの body を取得してみたいと思います。Plagger と Catalyst による、いわゆる印刷用ページの実現です。
Root コントローラ の show がメインの処理です。
まず、query string の url パラメータを CustomFeed::Debug のエントリとして書き換えます。これは、rewrite_customfeed_debug でやっています。
次に、Filter::EntryFullText に渡すために plagger_run します。plagger_run は Plagger::Feed を返すので受け取ります。
そして受け取ったものから、url にマッチするものをとりだします。これは get_entry_result でやっています。
以上、うまく取り出せたら、TT で表示できます。
Plagger を Catalyst アプリの中で使えるといろんな楽しいことが出来そうなので、いじってみることにしました。便宜上 Plagggr という Catalyst アプリにしました。
まず、Plagger に use base qw(Plagger); した Plagger::Configurable を作ります。Plagger 側に加える変更はこれだけです。変更にあたって clear_session など、Plagger::Server のアイディアが参考になりました。
次に、Catalyst::Plugin::Plagger を作ります。Catalyst::Plugin::Markdown とかが参考になりました。
そして、Plagger の動作を Catalyst の config で定義します。plagggr.yml-sample (動作時には plagggr.yaml にリネーム) という感じで、plagger という空間に、通常の Plagger の yaml を書けば動きます。インデントが一段下がるので、注意が必要ですね。
Catalyst アプリで、プラグインとして読み込み、Root コントローラで Plagger の run を呼んでみます。
あとは、起動スクリプト script/plagggr_server.pl で読み込むライブラリの位置をちょっといじります。
以上、毎回 Aggregator::Simple した結果を表示するアプリができました。
プラグインの動的ロード、リロードなどが出来れば、各種プラグインのデバッグ環境アプリなどができそうです。
かでなれおんがかわいすぎて、毎日眠れないです。
