[memo][perl] 環境変数 REMOTE_USER

2008.8.4(月) 10:35   タグ: 覚え書き, Perl

はじめに

知らなかったのでメモ.

メモの内容

Basic認証や Digest認証を介してアクセスした際には,環境変数 REMOTE_USER にユーザ名が格納されますよ,と.

次のような感じで使えるわけですね.

#!/usr/bin/perl
use strict;
use warnings;

print << "…";
Content-type: text/plain; charset=utf-8

Hi, $ENV{REMOTE_USER}.
…

おわりに

ちょっとしたアプリでユーザを振り分けたいときなんかに便利かもです.

[memo][perl][cpan] PDF::API2::Lite をかじってみた

2008.7.24(木) 21:35   タグ: 覚え書き, Perl

はじめに

ちょっとやるべきことがあって,PDF を扱う CPANモジュール PDF::API2::Lite を少しかじってみました.

The CPAN Search Site - search.cpan.org

以下,かじってみたメソッドについてまとめてみます.「???」な部分はスルーしちゃって下さい.

基本的(?)なメソッド

$pdf = PDF::API2::Lite->new

PDF::API2::Lite インスタンスを生成します.以下,$pdf は同インスタンスを表すものとします.

$pdf->page( $w, $h )

$wpx,高さ $hpx のページを新たに生成します.

$pdf->saveas( $file )

$file という名前で PDF を保存します.

$font = $pdf->corefont( $fontname )

で指定したアドビコアフォント(?,adobe core font)の情報を持ったフォントオブジェクト(PDF::API2::Resource::Font::CoreFont インスタンス) を生成します.

以下,$font は???

$font = $pdf->ttfont( $ttfile )

$ttfile で指定した TrueType フォントの情報を持ったフォントオブジェクト (PDF::API2::Resource::CIDFont::TrueType インスタンス) を生成します.

以下,$font は???

画像関連のメソッド

$img = $pdf->image_jpeg( $file )

$file で指定した JPEG 画像の情報を持ったオブジェクト (PDF::API2::Resource::XObject::Image::JPEG インスタンス) を生成します.

以下,$img は???

$img = $pdf->image_png( $file )

$file で指定した PNG 画像の情報を持ったオブジェクト (PDF::API2::Resource::XObject::Image::PNG インスタンス) を生成します.

以下,$img は???

描画関連のメソッド: 基本

$pdf->fillcolor( $color )

描画における塗りつぶしの色,テキストの色を $color に設定します.

$color で指定できる色の名前やフォーマットについては以下のとおり.

色の名前

aliceblue, antiquewhite, aqua, aquamarine, azure, beige, bisque, black, blanchedalmond, blue, blueviolet, brown, burlywood, cadetblue, chartreuse, chocolate, coral, cornflowerblue, cornsilk, crimson, cyan, darkblue, darkcyan, darkgoldenrod, darkgray, darkgreen, darkgrey, darkkhaki, darkmagenta, darkolivegreen, darkorange, darkorchid, darkred, darksalmon, darkseagreen, darkslateblue, darkslategray, darkslategrey, darkturquoise, darkviolet, deeppink, deepskyblue, dimgray, dimgrey, dodgerblue, firebrick, floralwhite, forestgreen, fuchsia, gainsboro, ghostwhite, gold, goldenrod, gray, grey, green, greenyellow, honeydew, hotpink, indianred, indigo, ivory, khaki, lavender, lavenderblush, lawngreen, lemonchiffon, lightblue, lightcoral, lightcyan, lghtgoldenrodyellow, lightgray, lightgreen, lightgrey, lightpink, lightsalmon, lightseagreen, lightskyblue, lightslategray, lightslategrey, lightsteelblue, lightyellow, lime, limegreen, linen, magenta, maroon, mediumaquamarine, mediumblue, mediumorchid, mediumpurple, mediumseagreen, mediumslateblue, mediumspringgreen, mediumturquoise, mediumvioletred, midnightblue, mintcream, mistyrose, moccasin, navajowhite, navy, oldlace, olive, olivedrab, orange, orangered, orchid, palegoldenrod, palegreen, paleturquoise, palevioletred, papayawhip, peachpuff, peru, pink, plum, powderblue, purple, red, brown, royalblue, saddlebrown, salmon, sandybrown, seagreen, seashell, sienna, silver, skyblue, slateblue, slategray, slategrey, snow, springgreen, steelblue, tan, teal, thistle, tomato, turquoise, violet, wheat, white, whitesmoke, yellow, yellowgreen
PDF::API2::Lite - lite pdf creation - search.cpan.org

RGB 表記

#rgb, #rrggbb, #rrrgggbbb and #rrrrggggbbbb
PDF::API2::Lite - lite pdf creation - search.cpan.org

CMYK 表記

%cmyk, %ccmmyykk, %cccmmmyyykkk and %ccccmmmmyyyykkkk
PDF::API2::Lite - lite pdf creation - search.cpan.org

HSL 表記

&hsl, &hhssll, &hhhssslll and &hhhhssssllll
PDF::API2::Lite - lite pdf creation - search.cpan.org

HSV 表記

!hsv, !hhssvv, !hhhsssvvv and !hhhhssssvvvv
PDF::API2::Lite - lite pdf creation - search.cpan.org

$pdf->strokecolor( $color )

描画における線,輪郭(?)の色を $color に設定します.

$color で指定できるフォーマットは上と同様です.

$pdf->linewidth( $width )

描画における線,輪郭(?)の幅を $widthpx に設定します.

$pdf->transform( %opts )

描画の基準情報を %opts で与えます.設定した情報は,再度設定しない限り維持されるようです.

主なオプション (%opts の具体的な内容) については次のとおり.

-transrate => [ $x, $y ]

描画の基準となる座標を ($x, $y) に設定します.なお,$x$y には前回設定時からの相対的な値が入るようです.

-rotate => $rot

水平方向に対する回転角度を $rot° に設定します.

-scale => [ $sx, $sy ]

描画対象の倍率を水平方向 $sx倍,垂直方向 $sy倍に,それぞれ設定します.

描画関連のメソッド: グラフィクス

$pdf->move( $x, $y )

描画の基準となる座標を ($x, $y) に設定します.

$pdf->line( $x, $y )
line メソッド.

基準座標から座標 ($x, $y) への直線を描画するための情報を蓄えます.そして,座標 ($x, $y) が新たな基準座標となります.

なお,このメソッドは描画情報を蓄えるのみで,描画は行いません.

$pdf->curve( $x1, $y1, $x2, $y2, $x3, $y3 )
curve メソッド.

基準座標から座標 ($x1, $y1) を通過して座標 ($x3, $y3) へ達するような曲線を描画するための情報を蓄えます.座標 ($x2, $y2) は制御点とでもいえばいいのかな?

なお,このメソッドは描画情報を蓄えるのみで,描画は行いません.

$pdf->ellipse( $x, $y, $a, $b )
ellipse メソッド.

座標 ($x, $y) を中心とし,長軸の長さの半分を $a,短軸の長さの半分を $b とする楕円を描画するための情報を蓄えます.

なお,このメソッドは描画情報を蓄えるのみで,描画は行いません.

$pdf->arc( $x, $y, $a, $b, $alpha, $beta, $move )
arc メソッド.

座標 ($x, $y) を中心とし,長軸の長さの半分を $a,短軸の長さの半分を $b とする楕円(円)における,???$alpha???$beta???の楕円弧(円弧)描画するための情報を蓄えます.

パラメータ $move はよくわかってません.

なお,このメソッドは描画情報を蓄えるのみで,描画は行いません.

$pdf->circle( $x, $y, $r )
circle メソッド.

座標 ($x, $y) を中心,$r を半径とする円を描画するための情報を蓄えます.

なお,このメソッドは描画情報を蓄えるのみで,描画は行いません.

$pdf->rect( $x, $y, $w, $h )
rect メソッド.

左下の座標が ($x, $y) で,水平方向の長さが $w,垂直方向の長さが $h である長方形を描画するための情報を蓄えます.

なお,このメソッドは描画情報を蓄えるのみで,描画は行いません.

$pdf->rectxy( $x1, $y1, $x2, $y2 )
rectxy メソッド.

左下の座標が ($x1, $y1),右上の座標が ($x2, $y2) となるような長方形を描画するための情報を蓄えます.

なお,このメソッドは描画情報を蓄えるのみで,描画は行いません.

$pdf->poly( $x1, $y1, …, $x_n, $y_n )
poly メソッド.

座標 ($x1, $y1),座標 ($x2, $y2),...,座標 ($x_n, $y_n) が順に頂点となるような多角形を描画するための情報を蓄えます.

最初の座標と最後の座標が一致していない場合,後述する close メソッドで「パスを閉じて (Illustrator 的な意味で)」おくとよさげです.

なお,このメソッドは描画情報を蓄えるのみで,描画は行いません.

$pdf->close
close メソッド.

パスを閉じます.(Illustrator 的な意味で)

$pdf->stroke
stroke メソッド.

蓄えられた描画情報に基づいて,strokecolor メソッドで設定された色で線・輪郭を描画します.

$pdf->fill
fill メソッド.

蓄えられた描画情報に基づいて,fillcolor メソッドで設定された色で「塗りつぶし」を描画します.

$pdf->fillstroke
fillstroke メソッド.

蓄えられた描画情報に基づいて,strokecolorfillcolor それぞれのメソッドで設定された色で線・輪郭つき「塗りつぶし」を描画します.

描画関連のメソッド: 画像配置

$pdf->image( $img, $x, $y, $scale )
$pdf->image( $img, $x, $y )

画像オブジェクト $img を,座標 ($x, $y) が左下となるように,伸縮倍率 $scale(指定しない場合は 1) で配置します.

描画関連のメソッド: テキスト

$pdf->textstart

今からテキストを描画しますよ,の宣言,そんなニュアンスで解釈しています.

$pdf->textfont( $font, $size )

描画するフォントの情報としてフォントオブジェクト $font の情報を設定します.また,描画するフォントのサイズを $sizepx(?) に設定します.

$pdf->textlead( $leading )

わかってません.何が起こるのでしょうかね?

$pdf->text( $string )

文字列 $string を描画します.utf-8 にデコードされていた方がよさげのようです.

$pdf->nl

改行...ですかね?試してみたところ,行の先頭に戻っただけのような感じでした.

$pdf->textend

テキスト描画終わり,の宣言,そんなニュアンスで解釈しています.

$pdf->print( $font, $size, $x, $y, $rot, $just, $text )

Convenience wrapper for shortening the textstart..textend sequence.
PDF::API2::Lite - lite pdf creation - search.cpan.org

とあるように,上記の textstart...textend をスルーしてこれだけ覚えておいてもよさげです.

このメソッドは,文字列 $textを,フォントオブジェクト $font の情報が示すフォント,サイズ $sizepx(?),水平方向に対する回転角度 $rot° で描画します.このテキストを囲む長方形の左下の座標が ($x, $y) となります.

$text は utf-8 にデコードされていた方がよさげのようです.

パラメータ $just については使い方をよくわかってません.

なお,テキストの描画には,fillcolor メソッドで設定した色が使われます.

おわりに

細かい挙動などを把握していないため解釈を謝っている部分もあるかと思いますが,PDF::API2::Lite モジュールのメソッドのうちかじってみたものを挙げてみました.

これらのメソッドを組み合わせるだけでもいろいろ PDF でいろいろ遊べそうなことを,少しかじってみてわかった気がします.

Mediabox とか XObject とかよくわからない物体があったりしますが,理解していなくてもとりあえずは PDF として出力できてはいるようなので...まぁ追々勉強するとします.

[memo][javascript] ループとイベント登録

2008.5.29(木) 11:40   タグ: 覚え書き, JavaScript

はじめに

昨日,相方 (お仕事的な意味で) に聞かれながらもすぐに答えられなかったので,復習の意味もこめてメモ.

問題

<div id="target">
  <div>A</div>
  <div>B</div>
  <div>C</div>
</div>

id="target"div 要素内のそれぞれの div 要素に対してクリックイベントを登録したい...そんなとき,ついつい次のように書いてしまいます.(自分と相方(お仕事的な意味で)が.)

<script type="text/javascript">
var divs = document.getElementById( ‘target’ )
                   .getElementsByTagName( ‘div’ )
;
for( var i = 0; i < divs.length; i++ ) {
  divs[i].addEventListener( ‘click’, function() {
    alert( i );    
  } );
}
</script>

このコードを実行すると,イベント登録したどの要素 (A,B,C とそれぞれ表示されるはず) をクリックしても,

3

なアラートしか表示されません.

一解決策

こんな風にしてみました.

<script type="text/javascript">
var divs = document.getElementById( ‘target’ )
                   .getElementsByTagName( ‘div’ )
;
for( var i = 0; i < divs.length; i++ ) {
  ( function() {
      var j = i;
      divs[i].addEventListener( ‘click’, function() {
      alert( j );
    } );
  } )();
}
</script>

それぞれの要素をクリックすると,

0
1
2

のようにアラートが表示されるかと.

解説

サイ本 は 4.3.1 項,最初の 2文がすべてを物語っていましたね.

C や C++、Java と異なり、JavaScript にはブロックレベルのスコープがありません。ある関数で宣言された変数は、どのブロックで宣言されたのかにかかわらず「関数全体」で有効です。

David Flanagan,村上 列 訳 『JavaScript 第5版』 オライリー・ジャパン,p.52

おわりに

ここしばらく jQuery (そういえば,1.2.6 が出てますね) を使ってばかりで意識すらしていない状況だったので,改めて勉強し直せました.

クロスブラウザ問題とか 1つのイベントリスナーを使い回すとかは,この際おいときましょう.

[memo][perl][linux] XML::Parser のインストールに失敗する件

2008.4.11(金) 15:23   タグ: 覚え書き, Perl, Debian, linux

はじめに

にこぐらふ をごにょごにょするために XML::RSS モジュールでも入れてみようとしたところ,これが必要としているモジュール XML::Parser がない,と怒られました.

ではまずそれからインストール...と,ここでも怒られてしまいました.

以下,その辺のメモです.

原因

どうやら expat なライブラリがないためらしいです.

解決

Debian さんを使用ちゅうなので,apt で探してみることに.

A というライブラリの場合,たいていは libA のような名前で apt のリストに入っているので,ここでは,libexpat としてみたところ,libexpat1 とか libexpat1-dev とかいうのが候補にあったので,考えなしにインストールしてしまいました.

% sudo apt-get install libexpat1 libexpat1-dev

その後 XML::Parser も問題なく入りました.

おわりに

というわけで,XML::RSS も無事にインストールできました.

[memo][perl] zipファイルに格納されているファイル名を確認する

2008.4.5(土) 22:09   タグ: 覚え書き, Perl

もっとシンプルなやり方がありそうですが,個人的に使ったことがなかったのでメモ.

zipファイルの中身を確認するには,Archive::Zip モジュールの memberNames メソッドを用いればよさげです.

このメソッドは,指定した zipファイルに格納されているファイル (やディレクトリ?) 名をリストで返してくれるので,あとはこのリストをどうこうすれば OK です.

以下,第 1引数に zipファイルを指定することで,その内容を表示するスクリプトです.

use strict;
use warnings;

use Archive::Zip;

$ARGV[0] || exit;
my $zip = Archive::Zip->new( $ARGV[0] );
print join( "\n", $zip->memberNames ) . "\n";
__END__

参考

ぶろぐ内検索

WCAN 2008 Winter

wcan2008winter

DeLLa.JS

細々公開ちゅう

  • DQWindowManager
  • ごよてい?
  • にこぐらふ
  • twitomonitor [ついともにた]
  • issm's ...
  • 今さら攻略 スーパーマリオブラザーズ 2

I'm doing...

Loading...

最近のエントリ

最近のトラックバック

最近のコメント

タグ

月別

あわせて読みたい

あわせて読みたいブログパーツ

数値いくつか

  • issmの泳いだ距離
  • issmの100m個メタイム(秒)
  • issmのBMIとissmの体脂肪率
  • issmの最高血圧とissmの最低血圧

スポンサード リンク

メタ情報