2007年12月12日

Net::FTP::Simple

ダウンロードされるファイルは実行パスみたい、、指定はできない模様、、。。
まぁちょっと使う程度にはいいかも。
my @received_filtered_files = Net::FTP::Simple->retrieve_files({
username => $username,
password => $password,
server => $server,
remote_dir => $remote_dir,
debug_ftp => 1,
file_filter => qr/^2007/,
mode => 'ascii',
});
debug_ftp は、以下のような感じで出る。
Net::FTP=GLOB(0x300214d4)<<< 226 Transfer complete.
Net::FTP=GLOB(0x300214d4)>>> PORT 192,168,1,2,161,249
Net::FTP=GLOB(0x300214d4)<<< 200 PORT command successful
Net::FTP=GLOB(0x300214d4)>>> RETR 20070316.txt
Net::FTP=GLOB(0x300214d4)<<< 150 Opening ASCII mode data connection for 20070316.txt (35435 bytes)
Net::FTP=GLOB(0x300214d4)<<< 226 Transfer complete.
Net::FTP=GLOB(0x300214d4)>>> PORT 192,168,1,2,161,250
Net::FTP=GLOB(0x300214d4)<<< 200 PORT command successful
Net::FTP=GLOB(0x300214d4)>>> RETR 20070317.txt
Net::FTP=GLOB(0x300214d4)<<< 150 Opening ASCII mode data connection for 20070317.txt (114635226 bytes)
それにしても、インストールの時の依存モジュールの数ったら、結構、すごいね、、、(w;

2007年8月31日

Deep recursion on subroutine ...

Class::Accessor を 間違えて use base せずに、単純に use したら、"Deep recursion on subroutine..." とか言われて少しハマッタ。。。

2007年8月29日

publicfile と CSS

今日のバッドノウハウは、なかなかレアだww

publicfile 配下の HTML を読み込んだ際に、Firefox だと CSS が読み込まれない、、というか、適用されない、、。回避する方法をいくつか発見したので紹介。。ちなみに、IE6では、ちゃんと適用されている、、。

1. DOCTYPE宣言を書かない
2. DOCTYPE宣言を XHTML → HTML に変更する ※DTDのURLは指定しない
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
3. CSS のファイル名を、example.css → example.css.text=css に変える

原因は、publicfile が CSS ファイルを返すヘッダーに、Content-Type: text/plainとして出力するため、Firefox では CSS として読み込まれず、適用してくれない。。

どうやら、Firefox で XHTML としてDOCTYPE宣言をすると、サーバーの返すヘッダーもちゃんとチェックしているようです、、ただ、IE6 は、その辺がユルユルみたい。。

【参考】
publicfile においてファイル名でヘッダーを操作する
publicfile home
Mozilla Webページ作者 FAQ - スタイルシートが機能しない! どうして?

2007年8月9日

IEで overflow: hidden と、 position: relative。

IE6 で、overflow: hidden が上手くいかないケース。。っというか、Firefox と挙動が違うので、苛立った件。
#wrapper {
background: #fcc;
border: 1px solid gray;
overflow: hidden;
width: 50px;
height: 50px;
}
#container {
background: #ccf;
border: 1px solid gray;
position: relative;
}
<div id="wrapper">
<div id="container">
<span>aaaaaaaaaaaaaaaaaaaaa<br />aaaaaaaaaaaaaaaaaaaaaaaaa</span>
</div>
</div>
Firefox だと、ちゃんとoverflow: hiddenで、範囲外の部分が切り落とされるのだが、、IE6 だと、、切り落とされない。。しかも、面白い事に、width と height を、0px 指定すると IE6 でも、隠される。。。ちなみに、1px 指定だと全部表示される。。
何故かと原因を探していたら、id=container の、position: relative が原因らしい、、何故だ?? position: static にすると、正常な動作をするみたい、、、。。

追伸:Hash Mitz先生へ
メッセージ頂いていたのに返信しなくて、すみません、、今度、fieldset の件も合わせて機会のあるときに、いろいろお聞きいたします。。宜しくお願いいたします(><)
って、これメッセージ返信すればいいじゃん、、orz

2007年7月24日

IE で fieldset の background-color が...

今日は、CSS をごにょごにょしていたら、、IE だけ fieldset の background-color の色が他のブラウザと違う表示のされ方をする事を発見。。。
fieldset {
margin: 0;
padding: 10px;
border: 1px solid gray;
background-color: #69C;
color: white;
}
んー、まだまだ、CSS は勉強中なので知らない事が多いのだが、、fieldset の background-color は、指定しない方が吉なのか?、、それとも、回避する方法があるのだろうか、、??ちなみに、Firefox と Opera では、ちゃんと同じように background-color は適用されている、、、。

2007年7月6日

初めてのパッチを書いた

今さら、CGI::Application かよってのは置いておいて、、
CGI::Application::Plugin::Config::YAML を使うときに、いきなり、config_read を使うと、"No config file specified!" とか言われて怒られるのだが、、config_read に、ファイル名渡してるんだから、それ使ってよ。って事で、パッチ書いてみました、、
※初めてのパッチ作成
参考:diffとpatchについて
*** YAML.pm.org Fri Oct 28 16:49:42 2005
--- YAML.pm Fri Jul 6 19:09:51 2007
***************
*** 78,93 ****

sub config_read {
my ($self, $file) = @_;
! my $conf = $self->config();
$conf->read($file);
return;
}

sub config {
! my $self = shift;
my $create = !$self->{__CONFIG_YAML}->{__CONFIG_OBJ} || $self->{__CONFIG_YAML}->{__FILE_CHANGED};
if ( $create ) {
! my $file_name = $self->config_file or die "No config file specified!";

my $conf;
eval{
--- 78,93 ----

sub config_read {
my ($self, $file) = @_;
! my $conf = $self->config($file);
$conf->read($file);
return;
}

sub config {
! my ($self, $file) = @_;
my $create = !$self->{__CONFIG_YAML}->{__CONFIG_OBJ} || $self->{__CONFIG_YAML}->{__FILE_CHANGED};
if ( $create ) {
! my $file_name = $self->config_file($file) or die "No config file specified!";

my $conf;
eval{
如何でしょう??
作者様に送るかどうか、、、どうしよう、、とりあえず、送ってみようかな、、id:nekokak さんが作ったものなので、日本語でお願いできるし、、orz

YAML と YAML::Syck の違い

いろいろと、YAML 周りを試行錯誤していて、YAML と YAML::Syck の違いを見つけたので、ご報告。。。
my $my_yaml = <<'__YAML__';
---
param1 : [ NOT_BLANK, ASCII, [ LENGTH, 2, 5 ] ]
? date: [ year, month, day ]
: [ DATE ]

__YAML__

use YAML;
use YAML::Syck;
use Data::Dumper;

my $data1 = YAML::Load($my_yaml);
my $data2 = YAML::Syck::Load($my_yaml);

print "--data1--\n", Dumper($data1);
print "--data2--\n", Dumper($data2);
上記のコードは、先日、苦労して見つけた、? と : の記法を用いて、ハッシュのキーに、ハッシュを持たせるための方法ですが、実はこの記法は、YAML では対応しているが、、YAML::Syck では、対応していないという事が発覚した!!上記のコードの実行結果は以下のようになった
--data1--
$VAR1 = {
'date: [ year, month, day ]' => [
'DATE'
],
'param1' => [
'NOT_BLANK',
'ASCII',
[
'LENGTH',
'2',
'5'
]
]
};
--data2--
$VAR1 = {
'HASH(0x8150b44)' => [
'DATE'
],
'param1' => [
'NOT_BLANK',
'ASCII',
[
'LENGTH',
'2',
'5'
]
]
};
Ingy++ !!
ちなみに、Dump も試してみたところ、、、
use YAML;
use YAML::Syck;

my $data = {
param1 => ['NOT_BLANK', 'ASCII', ['LENGTH', 2, 5]],
{ date => ['year', 'month', 'day'] } => ['DATE'],
};
print "--YAML::Dump--\n", YAML::Dump($data);
print "--YAML::Syck::Dump--\n", YAML::Syck::Dump($data);
実行結果、、、
--YAML::Dump--
---
HASH(0x815ebe4):
- DATE
param1:
- NOT_BLANK
- ASCII
-
- LENGTH
- 2
- 5
--YAML::Syck::Dump--
---
HASH(0x815ebe4):
- DATE
param1:
- NOT_BLANK
- ASCII
-
- LENGTH
- 2
- 5
って、どちらも、、ちゃんと Dump できないようでした、、、何か方法は無いのかなぁ、、(T_T)

追記:ハッシュになってるかと思いきや、、ただの文字列だった事に気づきました、、、このエントリーを見て、ハマッてしまった方、、大変、申し訳ありませんでした。。。m(__)m