アーカイブ

2007 年 6 月 のアーカイブ

今日のチェキ 2007-06-19

2007 年 6 月 19 日 コメントはありません
カテゴリー: 日記 タグ:

今日のチェキ 2007-06-18

2007 年 6 月 18 日 コメントはありません
カテゴリー: 日記 タグ:

conveyor

2007 年 6 月 17 日 コメント 14 件

毎月変わる静的ページをチェックするためにconveyorでなんとかしようとsubscription作ってみました。
しっかりとしたドキュメントがみつからなかったので、ソース読みつつ。

・SubscriptionBaseを継承する
・タグのパースはSimpleTag(HttpPaserの名前につられるな)
・PEARでいうところのHTTP_Request相当はHttp(HTTP_ClientはBrowser?)


<?php
Rhaco::import("SubscriptionBase");
Rhaco::import("io.Cache");
Rhaco::import("network.http.Http");
Rhaco::import("tag.data.SimpleTag");

/**
 * SampleIn
 * @author cockok
 */
class SampleIn extends SubscriptionBase
{
    function execute($variable){
        $url = 'http://hoge.jp/';
        $rss20 = new Rss20();

        // キャッシュはなんとなく3時間
        if (Cache::isExpiry($url, 3600 * 3)) {
            if (!$html = Http::get($url)) {
                return null;
            }
            Cache::set($url, $html);
        } else {
            $html = Cache::get($url);
        }

        $html = StringUtil::encoding($html);

        $tag = new SimpleTag();
        $tag->set($html, 'html');

        $title = $tag->getIn('title');
        if (count($title)) {
            $feed_title = $title[0]->getValue();
        } else {
            $feed_title = 'title';
        }
        $feed_description = 'description';
        $feed_url = 'http://hoge.jp/';
        $feed_languege = 'ja';
        $rss20->setChannel($feed_title, $feed_description, $feed_url, $feed_languege);

        foreach ($tag->getIn('div') as $div) {
            // いろいろ解析して登録
            $rss20->setItem($title, $description, $url);
        }

        return $this->merge($variable, $rss20);
    }

    function description()
    {
        return "hoge.jpを取得する";
    }

    function config()
    {
        return null;
    }
}
?>

キャッシュ、Last-Modifiedとれるならそれ比較しようかと思ったけど、今回のターゲットが吐いてなかった。
吐いてたとしても、どう保存しようか悩み所ですが。
Content-lengthで比較しようとしたら、Cache保存する際に文字コード変換されるらしく利用できず。
実際、HTTP通信よりもパースにコストがかかるので、パース後をserializeしてキャッシュしたほうがよさげ。
rhacoCacheはRSSフィード保存用な雰囲気だったのでどうしたもんか。

htmlspecialchars()や微妙なstrip_tags()を利用してませんので、XSS対策がされているRSSリーダで。

カテゴリー: 日記 タグ:

今日のチェキ 2007-06-13

2007 年 6 月 13 日 コメントはありません
カテゴリー: 日記 タグ:

今日のチェキ 2007-06-12

2007 年 6 月 12 日 コメントはありません

サービスは半日で完成させる

ヤフーとグーグル、検索結果画面の視線の違いは~アイレップ調査

Appleが「Safari 3」英語版ベータを公開、初のWindows版も
Safariは別エンジン積んでるのでwktk

マイクロソフト、「Virtual Server 2005 R2 SP1」日本語版を公開
VM上でDSPって動かしていいん?

本日弟が童貞を卒業いたしました。
感動巨編

社会保険庁とNTTデータとの「特別の事情」

ニコニコ動画(γ)‐ニフニフ動画での「おっくせんまん」が大いに盛り下がっています
  ,j;;;;;j,. —一、 `  ―–‐、_ l;;;;;;
 {;;;;;;ゝ T辷iフ i    f’辷jァ  !i;;;;;   後だしジャンケンなら負けない
  ヾ;;;ハ    ノ       .::!lリ;;r゙  そんなふうに考えていた時期が
   `Z;i   〈.,_..,.      ノ;;;;;;;;>  俺にもありました
   ,;ぇハ、 、_,.ー-、_’,.    ,f゙: Y;;f
   ~”戈ヽ   `二´    r’´:::. `!

カテゴリー: 日記 タグ:

Apache Log Analyzer 2 Feed

2007 年 6 月 11 日 コメントはありません

webdavを試験的に運用開始して、ログから書き込み削除の情報を取得したいなと考えていたところ「Apache Log Analyzer 2 Feed」なるものの存在を知ったので試してみた。
Apache Log Analyzer 2 Feed

以下、はまりどころとか。

Apacheログの改行コードはLFじゃないと動かないよ。

setLogFormatはシングルクォートで\はそのままね。(キモ)


$tool->setLogFormat('%h %l %u %t \"%r\" %>s %b');

FeedCreator.phpの180行目は変更してね。(直書きですかー)


define("TIME_ZONE","+09:00");

フィルタリングできる項目は以下のようなものがあよ。
– Remote-Host
– Remote-Logname
– Remote-User
– Time
– Request
– Final-Status
– Bytes-Sent
– Referer
– User-Agent
詳しく知りたいならApacheLogRegexp::rename_this_name()読むといいよ。

フィルタには正規表現が使えるよ。


$tool->addFilter('User-Agent', 'regexp:^DoCoMo');

webdavの追加削除RSSこんな風になりました。


<?php
require_once 'apachelog2feed/ApacheLogAnalyzer2Feed.php';

$al2f = new ApacheLogAnalyzer2Feed('ssl_access_log');
// フォーマットの設定
$al2f->setLogFormat('%h %l %u %t \"%r\" %>s %b');
// 表示件数設定
$al2f->setLogLimit(100);
// フィルタ
$al2f->addFilter('Request', 'regexp:^(PUT|DELETE) ');
// 表示
$al2f->run();
?>

Requestのファイル名をURLデコードしてあげるとわかりやすくてよさそう。

feedの詳細がprint_rまんまでしょぼいけど、そこはおいおい修正されることに期待。
そもそも、それPlaとかだったりしないんですかね。
軽く調べたけど見つからず。
conveyorに期待してます。

カテゴリー: 日記 タグ:

今日のチェキ 2007-06-11

2007 年 6 月 11 日 コメントはありません
カテゴリー: 日記 タグ:

今日のチェキ 2007-06-10

2007 年 6 月 11 日 コメントはありません
カテゴリー: 日記 タグ:

今日のチェキ 2007-06-08

2007 年 6 月 8 日 コメントはありません

youtubeのviewerがMacみたいになってる(なんてIFだか知らない)

Google のソフトウェア・エンジニアリング

ニコニコブックマーク(仮)
利用規約に反するブックマーク投稿について
これはダメかもわからんね

2次元しか愛せない。2枚目揃い。そして女性経験0。名づけて・・・「アキバ2.0」
こういう発想がDoCoMoにもあれば…

VistaでWebDAV
無事利用できました

カテゴリー: 日記 タグ:

今日のチェキ 2007-06-07

2007 年 6 月 7 日 コメント 1 件
カテゴリー: 日記 タグ: