June 2006 Archives

PlaggerLDR をいじる

| 0 Comments | 0 TrackBacks
  • [1013]
    MySQL の予約語だったカラムを変更。
  • [1014]
    Catalyst の Model を使うように変更。
  • [1015] [1016]
    バックエンドに正しくアクセスするよう GM スクリプトを変更。
    livedoor Reader のフォルダ機能を使えるように。
    追加ボタンからフィードを登録できるように。
  • [1017]
    プラグイン (Store::DBIC, Subscription::DBI) の変更。
  • [1018]
    ピンをサポート。

worepo を更新

| 0 Comments | 0 TrackBacks

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 以降がインストールされます。

続 ブログの記事から無断コピペを防止する方法

| 0 Comments | 0 TrackBacks

ブログの記事から無断コピペを防止する方法 に関して、もっともっと、たまらない気持ちになる方法があるようですね!

右クリック禁止よりももっと強烈な方法 | 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

ブログの記事から無断コピペを防止する方法

| 1 Comment | 3 TrackBacks

ブログの記事から無断コピペを防止する方法があるようです。

設定方法はとてもカンタンです。

以下の 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 おきにメッセージを見ることができて、ホントたまりませんね!

この方法は、本仮屋ユイカ オフィシャルブログの方法を参考にさせて頂きました。

文章を読ませて考えさせる CAPTCHA

| 0 Comments | 0 TrackBacks

こういうひねくれたことをしたいのだけど、実装例ってあるのかな。 いろいろまんどくさいので、大部分を参考にしたい。

  • [画像:123456] ではなく[画像:Xを6回]以下のフォームに入力してください。
    入力フォーム[_____]
  • [画像:123456] のような [画像:6桁の数字]を以下のフォームに入力すると[画像:スパム]として取り扱います。ですから、[画像:ABCDEF]の[画像:D]を[画像:X]に置き換えた文字列を[画像:入力して下さい]。
    入力フォーム[_____]
  • [画像:123456] を以下のフォームに入力すると[画像:正しい入力]として取り扱います。ですから、[画像:ABCDEF]の[画像:D]を[画像:X]に置き換えた文字列を[画像:入力する必要はないかもわからんね]。
    入力フォーム[_____]

Re: Plagger のフェーズ

| 0 Comments | 0 TrackBacks

Yappo::Hatena::Group::Subtech Plagger のフェーズ から

「また、途中に勝手に落ちちゃうモジュールがあったとしても、被害を最小限にしたいですね。」
というのは(run_hook 内で callback するときに eval で囲む)にするではなくて?

なるほど!

eval 囲むことによって、勝手に落ちちゃう件は解決なのですね。ありがとうございます。

Plagger のフェーズを考える

| 0 Comments | 1 TrackBack

現在の 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 フェーズ
- ...

あとは実装して試してみるだけです。

Catalyst から Plagger の EntryFullText を使う

| 0 Comments | 0 TrackBacks

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 アプリの中で使う

| 0 Comments | 1 TrackBack

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 した結果を表示するアプリができました。

プラグインの動的ロード、リロードなどが出来れば、各種プラグインのデバッグ環境アプリなどができそうです。

かでなれおんがかわいすぎる件

| 0 Comments | 0 TrackBacks

かでなれおんがかわいすぎて、毎日眠れないです。