memo.xight.org

日々のメモ

カテゴリ : chalow

2ページ目 / 全2ページ

chalow XML/SWF Charts Plug-in

Summary

  chalow から XML/SWF Charts[2005-03-10-6] を呼び出す Plug-in.

Plug-in

### XML/SWF Charts Plug-in
# usage: {{chart('XML File','width','height','bgcolor')}}
sub chart {
	my ($xml,$width,$height,$bgcolor) = @_;
	my $charts = q(http://example.com/path/to/charts.swf);
	
	$ret = << "__CHARTHTML__"
<object
  classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
  width="$width"
  height="$height"
  id="charts"
  align=""
>
<param name=movie value="$charts?xml_source=$xml">
<param name=quality value="high">
<param name=bgcolor value="$bgcolor">
<embed
  src="$charts?xml_source=$xml"
  quality="high"
  bgcolor="$bgcolor"
  width="$width"
  height="$height"
  name="charts"
  align=""
  type="application/x-shockwave-flash" 
  pluginspage="http://www.macromedia.com/go/getflashplayer"
>
</embed>
</object>
__CHARTHTML__
;
	return qq($ret);
}


Test (XML)


Amazon の画像置換

Summary

chalow で Amazon の画像置換を利用してみる.

amazon.js

function replaceImage(img) {
	if (img.width == '1' && img.src.match(/\.01\./)) {
		img.src = 'http://images-jp.amazon.com/images/G/09/x-locale/detail/thumb-no-image.gif';
		img.width = 98;
		img.height = 140;
	} else if (img.width == '1') {
		img.src = img.src.replace('.09.','.01.');
	}
}


cl.conf

  - 各 head タグ内に記述
<script src="path/to/amazon.js" type="text/javascript"></script>


  - amazon リンクの作成プラグインを変更
<img src="/path/to/image" onload="replaceImage(this)" />


Reference

  hail2u.net - 2004-05-30 - Amazon の画像置換 #2
  http://hail2u.net/blog/coding/air_2.html

画像タイトル付き Amazonリンクの作成

Summary

  あれこれポップアップ[2003-11-05-7]でAmazonへのリンクをポップアップしたい.
  <img> タグに title 属性を付加した.
  

Source

### amazon リンクの作成 (画像タイトル付き)
# usage: {{amazon_image('ASIN', 'Title', 'num')}}
sub amazon_image {
	my ($asin, $title, $num) = @_;
	my $prefix  = "http://amazon.co.jp/o/ASIN";
	my $suffix  = "xight-22/ref=nosim"; # アソシID使用時
	my $prefix2 = "http://images-jp.amazon.com/images/P";
	my $suffix2 = "MZZZZZZZ.jpg";
	if ($num ne '01'){
		$num = '09';
	}
	return qq(<a href="$prefix/$asin/$suffix" title="$title"><img src="$prefix2/$asin.$num.$suffix2" title="$title" /></a>);
}

Microsoft ダウンロードセンターへのリンクプラグイン

### Microsoft ダウンロードセンター へのリンクプラグイン
# usage: {{msdc('FamilyID','word')}}
sub msdc {
	my ($id,$str) = @_;
	my $prefix = q(http://www.microsoft.com/downloads/details.aspx);
	my $lang   = q(ja);
	return qq(<a href="$prefix?displaylang=$lang&FamilyID=$id" title="Microsoftダウンロードセンター - $str">Microsoftダウンロードセンター - $str</a>);
}

### Microsoft ダウンロードセンター への検索リンクプラグイン
# usage: {{msdc_search('word')}}
sub msdc_search {
	my ($str) = @_;
	my $prefix = q(http://www.microsoft.com/downloads/results.aspx);
	my $lang   = q(ja);
	my $enc = Jcode->new($str)->utf8;
	$enc =~ s/([^0-9a-z_ ])/'%'.unpack('H2', $1)/gei;
	$enc =~ s/\s/+/g;
	return qq(<a href="$prefix?displaylang=$lang&freeText=$enc" title="Microsoftダウンロードセンター検索 - $str">Microsoftダウンロードセンター検索 - $str</a>);
}

Wikipedia へのリンクプラグイン

Wikipedia へのリンクプラグイン [2005-11-27]改良

### Wikipedia へのリンクプラグイン
# usage: {{wikipedia('word','country')}}
sub wikipedia {
	my $default = 'ja';
	my ($str,$country) = @_;
	if (!defined($country)){
		$country = $default;
	}
	my $prefix = qq(http://$country.wikipedia.org/wiki);
	my $enc = Jcode->new($str)->utf8;
	$enc =~ s/([^0-9a-z_ ])/'%'.unpack('H2', $1)/gei;
	$enc =~ s/\s/+/g;
	return qq(<a href="$prefix/$enc" title="Wikipedia ($country) - $str">Wikipedia - $str</a>);
}



### Wikipedia へのリンクプラグイン
# usage: {{wikipedia('word')}}
sub wikipedia {
	my ($str) = @_;
	my $prefix = q(http://ja.wikipedia.org/wiki);
	my $enc = Jcode->new($str)->utf8;
	$enc =~ s/([^0-9a-z_ ])/'%'.unpack('H2', $1)/gei;
	$enc =~ s/\s/+/g;
	return qq(<a href="$prefix/$enc" title="Wikipedia - $str">Wikipedia - $str</a>);
}

PHP 関数検索へのリンクプラグイン

PHP 関数検索へのリンクプラグイン

### PHP 関数検索へのリンクプラグイン
# usage: {{php('関数名')}}
sub php {
	my ($str) = @_;
	my $prefix = q(http://www.php.net/search.php);
	my $lang = q(ja);
	# quickref  : function list
	# wholesite : whole site
	# manual    : online documentation [en]
	# bugdb     : bug database
	# maillist  : general mailing list
	# devlist   : developer mailing list
	# phpdoc    : documentation mailing list 
	my $show = q(quickref);
	return qq(<a href="$prefix?lang=$lang&show=$show&pattern=$str" title="PHP Manual - $str">PHP Manual - $str</a>);
}

Debian パッケージへのリンクプラグイン

Debian パッケージ検索へのリンク

  大文字小文字の区別はしない.
### Debian バイナリパッケージ検索へのリンク
# usage: {{debian('パッケージ名')}}
sub debian {
	my ($str) = @_;
	my $prefix = q(http://packages.debian.org);
	return qq(<a href="$prefix/$str" title="Debian パッケージディレクトリ検索 (バイナリ) - $str">Debian パッケージディレクトリ検索 (バイナリ) - $str</a>);
}
### Debian ソースパッケージ検索へのリンク
# usage: {{debian_src('パッケージ名')}}
sub debian_src {
	my ($str) = @_;
	my $prefix = q(http://packages.debian.org);
	return qq(<a href="$prefix/src:$str" title="Debian パッケージディレクトリ検索 (ソース) - $str">Debian パッケージディレクトリ検索 (ソース) - $str</a>);
}


Debian パッケージ内容検索へのリンク

  大文字小文字の区別はしない.
### Debian パッケージ内容検索へのリンク
# usage: {{debian_search('keyword')}}
sub debian_search {
	my ($str) = @_;
	my $prefix = q(http://packages.debian.org/cgi-bin/search_contents.pl);
	# $version は stable, testing, unstable で指定
	my $version = q(all);
	# $arch は 以下で指定.
	# i386      : Intel x86
	# m68k      : Motorola 680x0
	# alpha     : Alpha
	# sparc     : SPARC
	# powerpc   : PowerPC
	# arm       : ARM
	# hppa      : HP PA/RISC
	# ia64      : Intel IA-64
	# mips      : MIPS
	# mipsel    : MIPS (DEC)
	# s390      : IBM S/390
	# hurd-i386 : Hurd (i386)
	my $arch = q(i386);
	return qq(<a href="$prefix?word=$str&searchmode=searchfiles&version=$version&arch=$arch" title="Debian パッケージ内容検索 - $str">Debian パッケージ内容検索 - $str</a>);
}

キーワードに似た名前のファイルを含むパッケージ
http://packages.debian.org/cgi-bin/search_contents.pl?word=$str&searchmode=searchfiles&version=$version&arch=$arch
キーワードに似た名前のファイルやディレクトリを含むパッケージ
http://packages.debian.org/cgi-bin/search_contents.pl?word=$str&searchmode=searchfilesanddirs&version=$version&arch=$arch
packages that contain files or directories whose names contain the keyword
http://packages.debian.org/cgi-bin/search_contents.pl?word=$str&searchmode=searchword&version=$version&arch=$arch
キーワードで示されるパッケージに含まれるファイルの一覧
http://packages.debian.org/cgi-bin/search_contents.pl?word=$str&searchmode=filelist&version=$version&arch=$arch

Reference

  Debian - Packages
  http://packages.debian.org/

chalowの地図検索プラグイン

MapFanへのリンク

### MapFanへのリンク
# usage: {{mapfan('東京都○○区○町00-0')}}
sub mapfan {
	my ($str) = @_;
	my $prefix = q(http://www.mapfan.com/index.cgi);
	my $enc    = $str;
	$enc =~ s/([^0-9a-z_ ])/'%'.unpack('H2', $1)/gei;
	$enc =~ s/\s/+/g;
	return qq(<a href="$prefix?ADDR=$enc" title="Map Fan - $str">Map Fan - $str</a>);
}


MapFanへのスポット名検索リンク

### MapFanへのスポット名検索リンク
# usage: {{mapfan_search('スポット名')}}
sub mapfan_search {
	my ($str) = @_;
	my $prefix = q(http://www.mapfan.com/keywordsrch.cgi);
	my $enc    = $str;
	$enc =~ s/([^0-9a-z_ ])/'%'.unpack('H2', $1)/gei;
	$enc =~ s/\s/+/g;
	return qq(<a href="$prefix?SRCHKIND=SRCH_NAME&PARAM=$enc" title="Map Fan - スポット名検索 - $str">Map Fan - $str</a>);
}


MapionBBへの住所検索リンク

### MapionBBへのリンク
# usage: {{mapion('東京都○○区○町00-0')}}
sub mapion {
	my ($str) = @_;
	my $prefix = q(http://www.mapion.co.jp/c/f);
	my $enc    = $str;
	$enc =~ s/([^0-9a-z_ ])/'%'.unpack('H2', $1)/gei;
	$enc =~ s/\s/+/g;
	return qq(<a href="$prefix?uc=7&grp=MapionBB&find=$enc" title="Mapion BB - $str">Mapion BB - $str</a>);
}


MapionBBへのランドマーク検索リンク

### MapionBBへのランドマーク検索リンク
# usage: {{mapion_search('ランドマーク')}}
sub mapion_search {
	my ($str) = @_;
	my $prefix = q(http://www.mapion.co.jp/c/f);
	my $enc    = $str;
	$enc =~ s/([^0-9a-z_ ])/'%'.unpack('H2', $1)/gei;
	$enc =~ s/\s/+/g;
	return qq(<a href="$prefix?uc=12&grp=MapionBB&find=$enc" title="Mapion BB - ランドマーク検索 - $str">Mapion BB - $str</a>);
}

chalowのPEAR検索プラグイン

PEAR 検索プラグイン

### PEAR Moduleの検索リンク
# usage: {{pear_search('pkg_name')}}
sub pear_search {
	my ($word) = @_;
	my $prefix = q(http://pear.php.net/package-search.php);
	return qq(<a href="$prefix?pkg_name=$word" title="PEAR Search - $word">$word</a>);
}

chalowのプラグインテンプレート

ソース

### プラグイン名
# usage: {{example_plugin('arg1','arg2','arg3', [...] )}}
sub example_plugin {
	my ($arg1,$arg2,$arg3) = @_;
	my $prefix = q(http://www.example.com);
	my $suffix = q();
	my $ret    = qq($prefix/$suffix);
	
	# 処理
	
	return $ret;
}

chalowの CPAN 検索プラグイン

CPAN 検索プラグイン

### CPAN Moduleの検索リンク
# usage: {{cpan_search('Keyword','mode')}}
# mode : all    - Search in All
#        dist   - Search in Distributions
#        module - Search in Modules (default)
#        author - Search in Author
sub cpan_search {
	my ($word,$mode) = @_;
	my $prefix = q(http://search.cpan.org/search);
	if ($mode ne 'all' && $mode ne 'dist' && $mode ne 'author' && $mode ne 'module'){
		$mode = q(all);
	}
	return qq(<a href="$prefix?m=$mode&q=$word" title="CPAN Search - $word">$word</a>);
}
sub cpan{cpan_search(@_)}

chalowのはてなダイアリー検索プラグイン

ソース

### はてなダイアリーの検索へのリンク
# usage: {{hatena_search('hatena-ID','Keyword')}}
sub hatena_search {
	my ($id,$keyword) = @_;
	my $prefix = q(http://d.hatena.ne.jp);
	my $enc    = $keyword;
	$enc       =~ s/([^0-9a-z_ ])/'%'.unpack('H2', $1)/gei;
	$enc       =~ s/\s/+/g;
	return qq(<a href="$prefix/$id/searchdiary?word=$enc" title="はてなダイアリー - $id - $keyword">$id - $keyword</a>);
}

chalow の実行時間

ChangeLogのサイズ

Line 30003 (行)
Entry 2518 (エントリ)
File size 998333 (byte)
- 自宅サーバ (PentiumMMX 200MHz 64MB)

$ time /home/yoshiki/bin/chalow/chalow /home/yoshiki/memo/ChangeLog -o
117.76s user 1.24s system 99% cpu 2:00.14 total

- apollo (Pentium4 2.0GHz? 1024MB?)

$ time /home/yoshiki/bin/chalow/chalow /home/yoshiki/memo/ChangeLog
3.48s user 0.22s system 92% cpu 4.018 total