たわいもないこと...etc.


by chiro-dog

プロフィールを見る
画像一覧

S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

カテゴリ:技術メモ( 4 )

昼休みのつぶやき

mod_limitipconn ってどこからDLできるんだ!?

実験したいのに。。。困った。。。


自己レス
今日はアクセスできた。
昨日だけ、本家サイトがアクセスできなかったっぽい。
インストールしてみたが、うまくいかない。。。困った。。。
[PR]
by chiro-dog | 2007-08-23 12:44 | 技術メモ

[perlモジュールメモ]Text::CSV_XS

名前
Text::CSV_XS - CSV形式の操作ルーチン

概要
use Text::CSV_XS;

# 新しいオブジェクトを作る
$csv = Text::CSV_XS->new();

# 新しいオブジェクトを作る
$csv = Text::CSV_XS->new(\%attr);

# 縦列を連結して一つの文字列にする
$status = $csv->combine(@columns);

# 連結したその文字列を得る
$line = $csv->string();

# CSV文字列をパースしてフィールド群に切り分ける
$status = $csv->parse($line);

# パースされたそのフィールド群を得る
@columns = $csv->fields();

# 直前のステータスを得る
$status = $csv->status();

# 直前の不正引数を得る
$bad_argument = $csv->error_input();

# $io ファイルへ、すぐさまフィールド群を書き込む
$status = $csv->print($io, $columns);

# $io ファイルから1行を読み込み、パースした後にフィールド群の配列リファレンスを返す
$columns = $csv->getline($io);

# 縦列の形式を設定する
$csv->types(\@t_array);

説明
コンマ区切り文字列 CVS を組み立てたり切り分けたりするのに、Text::CVS_XS は便利な機能を提供します。Text::CVS_XS クラスのインスタンスでは、フィールド群を連結して CSV 文字列にしたり、その反対にCSV文字列をパースしてフィールド群にすることができます。

関数群
version()
(クラスメソッド) 使用しているモジュールのバージョンを返す。

new(\%attr)
(クラスメソッド) 新しい Text::CSV_XS インスタンスを返す。オブジェクトの属性値は、ハッシュリファレンス \%attr で(随意に)指定する。次の属性値を指定できる:

・quote_char
空白文字を含むフィールドをクオートするための文字で、デフォルトは二重引用符 (")。undef を指定すると、文字列がクオートされない(空白文字を使わないような簡素な場合のみ使用すること)。

・eol
横行に加える行の終わりを示す文字で、一般的には undef (無、デフォルト)、 "\012" (ラインフィード) もしくは "\015\012" (キャリッジリターン+ラインフィード) である。

・escape_char
クオートしたフィールドの中でエスケープを施す文字で、デフォルトではクオート文字 (") と同じ。

・sep_char
フィールドを区切る文字で、デフォルトはコンマ (,)。

・binary
この属性値が真 (TRUE) ならば、クオートしたフィールドの中でバイナリ文字を使用することができる。このバイナリ文字にはラインフィード、キャリッジリターン、そして NUL バイトが含まれている( NUL バイトは "0 としてエスケープしなくてはならない)。デフォルトで、この機能はオフ。

・types
カラムの形式;この属性値はすぐさま後述の types メソッドに渡される。types メソッドを使用する場合を除き、この属性値を設定してはならない。詳しくは、後述の types メソッドの説明を参照。

・always_quote
フィールド内のテキストが区切り文字を含むような場合など、その必要がある際にのみデフォルトではフィールドはクオートで区切られる。この属性値を真 TRUE に設定すると、全てのフィールドがクオートされる。この機能は外部アプリケーションを用いる場合に便利である。( Text::CVS_XS を使わない可哀想なプログラマのために :-)


これらをまとめると、
$csv = Text::CSV_XS->new();
は、以下と同じである;

$csv = Text::CSV_XS->new({
'quote_char' => '"',
'escape_char' => '"',
'sep_char' => ',',
'binary' => 0
});


combine
$status = $csv->combine(@columns);
このオブジェクト関数は、引数から CVS 文字列を組み立て、成功か失敗のステータスを返す。失敗するのは、おそらく引数が足らないか不正な文字列を引数が含むからであろう。成功した場合、 string() によって組み立てた CSV 文字列を得ることができる。失敗した場合、string() は 未定義を返し error_input() によって無効だった引数を得ることができる。

print
$status = $csv->print($io, $columns);
combine と似ているが、このメソッドは配列リファレンス(配列ではない)が入力されることを期待する;組み立てた CSV 文字列をまったく作らない;$io オブジェクトへ直ちに書き込む。ここで、print メソッドに与えるのは通常、$io オブジェクトか 類似した他のオブジェクトである。注意すべき事として、この呼び出しで次の方法は間違いである;

open (FILE, ">whatever");
$status = $csv->print(\*FILE, $columns);
\*FILE グロブはオブジェクトではないので、print メソッドを実行することができない。解決方法は IO:File オブジェクトを使用するか IO::Wrap オブジェクトの中へグロブを隠蔽してしまうことである。詳細は、IO::File(3) と IO::Wrap(3) を参照。

パフォーマンス上の理由から、この print メソッドは組み立てた CSV 文字列を外部へ提供しない。とりわけ $csv->string(), $csv->status(), $csv-fields()>, そして $csv->error_input() は、このメソッドの後で意味をなさない。

string
$line = $csv->string();
このオブジェクト関数は、 parse() への入力したものか combine() で組み立てられた CSV 文字列か、それが何であれ直前のものを返す。

parse
$status = $csv->parse($line);
このオブジェクト関数は CSV 文字列をフィールドに切り分けて、しかる後に成功か失敗のステータスを返す。失敗するのは、引数の不足か与えられた CSV 文字列が不適切なフォーマットだからであろう。成功した場合には、fields() メソッドによって切り分けられたフィールドが得られる。失敗の場合には、 fields() は未定義値を返し error_input() によって不正な引数を得ることができる。

カラムの形式を設定するために、types() メソッドを使うべきである。後述の説明を参照。

getline
$columns = $csv->getline($io);
これは print と対をなすもので、parse が combine の対となるようなものだ: IO オブジェクト $IOにおいて $IO->getline() を用いて1行を読み出し、この1行をパースして配列リファレンスに納める。この配列リファレンスが返されるか、失敗した場合には undef が返される。

繰り返しになるが、 $csv->string(), $csv->fields(), そして $csv->status() メソッドはこのメソッドの後では意味をなさない。

types
$csv->types(\@tref);
このメソッドは、縦行を指定された形式へ強制的に変換するのに用いる。たとえば、整数値で表現された1カラム、倍精度数形式の2カラム、文字列の1カラムがあった場合は、次を実行することになるだろう

$csv->types([Text::CSV_XS::IV(),
Text::CSV_XS::NV(),
Text::CSV_XS::NV(),
Text::CSV_XS::PV()]);
カラム形式をデコードするときのみ、言い換えると parse() と getline() メソッドを使うときにのみ、このカラム形式が用いられる。

カラムタイプを解除するのは次のようにする

$csv->types(undef);
あるいはまた、現在の形式を得るには次の方法を採る

$types = $csv->types();

fields
@columns = $csv->fields();
このオブジェクト関数は、 combine() への入力値か parse() から得られる切り分けられたフィールド群か、それが何であれ直前のものを返す。

status
$status = $csv->status();
This object function returns success (or failure) of combine() or parse(), whichever was called more recently. このオブジェクト関数は、 combine() か parse() かそれが何であれ直前のメソッドが成功(もしくは失敗)したかどうかを返す。

error_input
$bad_argument = $csv->error_input();
このオブジェクト関数は、combine() か parse() か、それが何であれ直前のメソッドがエラーとなった引数(もしあれば)を返す。



require Text::CSV_XS;
my $csv = Text::CSV_XS->new;
my $column = '';
my $sample_input_string = '"I said, ""Hi!""",Yes,"",2.34,,"1.09"';
if ($csv->parse($sample_input_string)) {
my @field = $csv->fields;
my $count = 0;
for $column (@field) {
print ++$count, " => ", $column, "\n";
}
print "\n";
} else {
my $err = $csv->error_input;
print "parse() failed on argument: ", $err, "\n";
}
my @sample_input_fields = ('You said, "Hello!"',
5.67,
'Surely',
'',
'3.14159');
if ($csv->combine(@sample_input_fields)) {
my $string = $csv->string;
print $string, "\n";
} else {
my $err = $csv->error_input;
print "combine() failed on argument: ", $err, "\n";
}


注意
このモジュールは策定中の CVS フォーマットを元にしているが、そのフォーマットが最も一般的なものとは言い難いかもしれない。

1. CVS フィールドの中に納めることができる文字には、 0x09 (tab) と of 0x20 (space) から 0x7E (tilde)の包括的な範囲とを含む。バイナリモードではクオートされたフィールドの中において全ての文字を受け付ける。

2. CSV のフィールドは、二重引用符(quote char)で挟まれるべきである。

3. CVS のフィールドの中にコンマ(separator char)がある場合は、二重引用符で挟まれなければならない。

4. CVS フィールドの中に二重引用符を埋め込む場合は、一対となった二重引用符の間に挟まれなければならない。バイナリモードでは特に、 NUL バイトを示す "0 を用いるべきである。

5. CSV 文字列は、 0x0A (ラインフィード) もしくは 0x0D + 0x0A(キャリッジリターン + ラインフィード)で終わるべきである。

AUTHOR
Alan Citterman が、この Perl モジュールを最初に書いた。Alan へ Text::CSV_XS に関するメールをどうか送らないで欲しい。なぜなら、今ではこのモジュールの主要部分を占める C コード部分について、彼は関与していないからである。

Jochen Wiedmann が、エンコードとデコードのルーチンを有限状態マシンを実装する C コードで書き直し、クオート、エスケープ、そしてセパレーター文字変数、バイナリモード、そして print と getline メソッドを加えた。

SEE ALSO
perl(1), IO::File(3), IO::Wrap(3)
[PR]
by chiro-dog | 2006-10-12 11:39 | 技術メモ

障害発生

うーむ。障害発生。

0:31 携帯へ障害発生通知メール有り

こんな時間に自宅からお仕事。ま、職種的に仕方ないな。
うーむ。確かにサーバダウンしてる。。。
ログインできねぇと何もできねぇ。。。
ってことで、しばし放置。

1:00 携帯へ障害回復通知メール有り

お!ログインできる。サーバリブートして復活したみたい。
とりあえず復旧した模様。。。

ふぅ。とりあえず、セーフってとこだな。落ち着いて眠れる~!
夜中のメールはいつもドキドキ。心臓に悪い。
一応明日は早めに出社するかぁ。。。(;_;)
[PR]
by chiro-dog | 2006-03-29 01:22 | 技術メモ

courier-imapに苦戦中

お仕事というかお勉強でpostfixadminというのを導入実験をしているのですが、結構はまってます。

postfixadminはqmailadminのようにWeb管理画面上でメールアドレスの管理がおこなえるツールなのです。
バーチャルドメインにも対応しておりpostfixを使っている場合には有効そうです。
しかしながら、postfixadminを導入するには、Apache、mysql、phpが必要とのこと。

Apacheはインストール済みなので、mysqlとphpをさくっと入れて(まぁ、初めてでしたのでそうサクッとは行きませんでしたが。。)postfixadminをインストール。

しかし上手くいきません。Web管理画面上で設定した内容が上手く反映されていない模様。
いろいろ調べたところpostfixadminのphpファイルをいくつか修正する必要があることが判明。そのままでは、上位のバージョンのmysqlには対応しないらしい。今回mysqlバージョン5系をインストールしているので多分上位バージョンにあたるのかなと。phpファイルを修正したところ動くようになりました。
ま、その他いろいろと悪戦苦闘しましたが、動くようになったのでよしとしましょう。

メールを送信してサーバで受信もしてくれることがわかりました。
指定したところにメールができてるしいい感じ。

さて、このメールをクライアント側で受信したいねぇ。
…あ、qpopperじゃ無理ジャン。バーチャルドメインに対応したの入れなきゃ。。。

うーむ。何を入れればよいのやら。。。
メールアカウント情報はmysqlで管理されているのでその辺対応もしてないとだめそうだしなぁ。。。リーダーに聞いてみたところcourier-imapでできるらしい。こいつはIMAP使うときによく使ったりするらしいのですが、普通にPOPも使えるそうです。

ということで、インストールを始めるが。。。。。。。
makeで失敗。。。おかしい。
よくよく調べるとconfigureで妙なワーニングが。。。

courier-imapが稼動してるマシンと比べるとconfigureのログが違う。
リーダーにも見てもらって、いろいろとソースを追ったところなんとか原因判明。
mysqlのconfigure時のオプションがいけないらしい。

OSはSolaris9なのですがパッケージで入れたために起きているらしい。

ということで、mysqlをソースで入れなおすか、courier-imapをちといじって入れるしかなさそうだ。。。

うーむ。まだまだ苦戦しそうだ。
とりあえず、今日はmysqlのコンパイルをしたまま放置で帰るかな。
実験マシンがSUNのUltra1ですからねぇ。異常に遅い。
[PR]
by chiro-dog | 2005-12-20 20:10 | 技術メモ

最新のトラックバック

ヘアスプレー
from To pass leisur..
バニラビーンズ
from ブログでCookin'!(料..
栄養たっぷり、ニンニク ..
from にんにく大好きブログ@ニンニ..
ブログで収集!ブログ・ヘ..
from ブログでCookin!特選レ..
スーパーナチュラル
from いま話題のエンターテイメント..

カテゴリ

全体
レシピ
映画
旅行
イイコト
ひとりごと
自作
投資
技術メモ
携帯レポート
未分類

以前の記事

2012年 01月
2011年 08月
2010年 09月
2010年 08月
2010年 07月
2010年 05月
2010年 03月
2010年 01月
2009年 12月
2009年 11月
2009年 08月
2009年 07月
2009年 06月
2009年 05月
2009年 03月
2009年 02月
2009年 01月
2008年 12月
2008年 11月
2008年 10月
2008年 09月
2008年 08月
2008年 07月
2008年 06月
2008年 05月
2008年 04月
2008年 03月
2008年 02月
2008年 01月
2007年 12月
2007年 11月
2007年 10月
2007年 09月
2007年 08月
2007年 07月
2007年 06月
2007年 05月
2007年 04月
2007年 03月
2007年 02月
2007年 01月
2006年 12月
2006年 11月
2006年 10月
2006年 09月
2006年 08月
2006年 07月
2006年 06月
2006年 05月
2006年 04月
2006年 03月
2006年 02月
2006年 01月
2005年 12月
2005年 11月
2005年 10月
2005年 09月

検索

お気に入りブログ

気まぐれな猫の散歩

別館

Chiro管理の別サイトです。


About this site.
このサイトは、Chiroの日々の記録を適当につづっております。コメントはご自由にどうぞ。

ライフログ


“何度も試作してようやくたどりついた”ほんとうに作りやすい焼き菓子レシピ―超人気お菓子サイトたかこ@caramel milk teaさんの (生活シリーズ)


こうちゃんの簡単料理レシピ (TJムック)

その他のジャンル

ファン

記事ランキング

ブログジャンル

画像一覧