Home > Tags > perl

perl Tag Archive

Plagger を導入してみる

今さらですが、サーバにPlagger を入れてみました。

Vine3.2はモジュールの導入に往生しますが、ハヤテのごとく!プライスレス の管理人blog Vine Linux に Plagger インストール を参考に、ちまちまとインストールしていったら無事に動きました。

……まぁ、HTTP::Cookies::Mozilla の導入時に、CPAN だとテストでエラーになるので、ソースから強引にインストールしましたが(^^;

で、何をやったのかというと、かにしのぷらねっとを試しに構築してみたり。スタイルシート借り物なので早くデザイン直さないとなぁ。
ま、これはともかく、Planet の構築自体がかなり簡単にできるので、仕事でも情報集めに重宝しそう。

フレッツスクウェア へのルーティング

NTT東日本フレッツ公式:フレッツ・スクウェア|接続方法|フレッツ・スクウェア接続方法(ADSL/Bフレッツ、ブロードバンドルータご利用のお客さま)で公開されているフレッツスクウェアのIPアドレス帯の情報を元に、YAMAHA RTシリーズ用の静的ルーティングコマンドを標準出力するスクリプト。

#!/usr/bin/perl
use strict;
use NetAddr::IP;

use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->agent("MyApp/0.1 ");
my $req = HTTP::Request->new(GET => 'http://routing.flets/routing.html');
my $res = $ua->request($req);
my @routing;
if ($res->is_success) {
  @routing = split/\n/,$res->content;
}
else {
  print $res->status_line, "\n";
  exit;
}
foreach (@routing) {
  if (/^Route[\d]+=Add,([\d]+\.[\d]+\.[\d]+\.[\d]+),([\d]+\.[\d]+\.[\d]+\.[\d]+),,1$/) {
    my $ip = new NetAddr::IP($1,$2);
    print "ip route ",$ip," gateway pp 2\n";
    }
}
exit;

pp 2をフレッツスクウェアへの接続に利用している場合です。

あとは、

dns server select 100002 pp 2 any .flets
dns server select 500001 外部DNSサーバ any . restrict pp 1

としてやると、URLに応じてDNSを切り替えてインターネットと、フレッツスクウェアに同時にアクセスできますとさ。YAMAHAヤマハブロードバンドルーターpp select 9あたりが参考になります。

Net::Amazon のバージョンを上げてみた

CPANを覗いてみたらNet::Amazonのバージョンが0.36に上がっていたので、ローカル環境にインストールしてあるモジュールをアップデートしてみました。

数ヶ月前から、Amazonの書籍データからReleaseDateが取れていなかったのですが、今回のバージョンアップでは取れるようになりました。この辺はAmazonの仕様変更の影響なのかなぁ。

既存のスクリプトでは検索するカテゴリをbooks-jpのようにロケールを追加して指定していたのですが、本バージョンでは逆にロケールが付いているとエラーになって検索できなくなりました。もともとロケールはスクリプト内で指定してあるので、こっちが本来想定されていた動作なのかもしれませんが。

もう一つ、画像のURLを取得するためのオブジェクトが、説明ではImageUrlLarge() ImageUrlMedium() ImageUrlSmall()となっているのに、実際はLargeImageUrl() MediumImageUrl() SmallImageUrl()に変更になっているっぽかったり。あ、これはソース読めばいいのか。

まぁ、ともかくこれで今まで取れなかった、「データ上は存在するのに取得できない発売日」も正常に取得できるようになり、また楽ができるようになったというわけでなかなかいい感じです。さらに便利に使えるようになりたいものです。

中継君の古いキャッシュが削除されないバグの修正

Amazon Searchの負荷軽減に使用している中継君 Ver1.4.3で、Ver.1.3.0から利用可能になった保存キャッシュの上限設定がうまく動かなかった症状を修正しました。

ソースを見てみると、実際に生成されるキャッシュのファイルの拡張子*1と、削除しようとするキャッシュのファイルの拡張子*2が異なっているため、古いキャッシュが削除されないまま、結果新しいキャッシュが生成されないようになってしまっています。

とりあえず、簡単な書き換えでさくっと対応。

$ diff -ur jc.cgi.org jc.cgi
--- jc.cgi.org  2006-12-20 20:56:52.000000000 +0900
+++ jc.cgi      2006-12-20 20:59:40.000000000 +0900
@@ -142,8 +142,10 @@

        } else {
                $ch = $erace_cf;
-               $cache = 'cache/' . $ch . '.js';
-               unlink($cache);
+               my @cache;
+               push @cache , 'cache/' . $ch . '.dat';
+               push @cache , 'cache/' . $ch . '.typ';
+               unlink(@cache);

                # ファイルリスト更新
                if ( !open (OLD,"cache/filelist") ) {

しばらく動かしてみた感じでは、古いデータはしっかりと削除され、本来期待される動作になったと思います。

  1. .datおよび.typ []
  2. .js []

Home > Tags > perl

応援中
サイト内検索
フィード
メタ情報
広告
ブログパーツ
あわせて読みたい フィードメーター - MOMENTS

Return to page top