GD のインストールに散々悩んだあげく、あきらめかていたけど、
http://tech.hitsug.net/?CentOS%2FPerlモジュール
このページに rpmforge レポジトリを使った yum でのインストールが載っていたので試したら一発で出来た。。。
yum --enablerepo=rpmforge install perl-GD
いろいろな要因があるのだろうけど。
GD のインストールに散々悩んだあげく、あきらめかていたけど、
http://tech.hitsug.net/?CentOS%2FPerlモジュール
このページに rpmforge レポジトリを使った yum でのインストールが載っていたので試したら一発で出来た。。。
yum --enablerepo=rpmforge install perl-GD
いろいろな要因があるのだろうけど。
http://search.cpan.org/~rjbs/Email-Valid-0.184/lib/Email/Valid.pm
現在でも更新されている感じのモジュール。携帯向けに Email::Valid::Loose と言うモジュールもある(有名なMIYAGAWAさん作)通常ならばこのモジュールでいいと思う。
http://search.cpan.org/~ilyam/Mail-CheckUser-1.21/CheckUser.pm
Data::Dumper の作者らしい。18 Sep 2003 となっているので更新はだいぶ前。でもこのモジュールはなかなか良くて、存在ユーザーをある程度(?)調べてくれる。存在ユーザーのチェックは送信先のメールサーバの設定によって違うのかもしれない。ソースに
## gTLD Wildcard IPs
$NXDOMAIN= {.........}
って感じでトップレベルドメイン(?)のAレコードやらCNAMEと思われるものが定義されているけど、これって更新されないのかなぁ?
で、こちらのモジュールでは携帯向けのアドレスで @ の前に . が付くもの(abc..@docomo.ne.jp など)は使えません。RFC822違反だそうです。
そこで Mail::CheckUser::Loose なるモジュールを作成・・・した訳ではないけど、リメイクして使いました。
自分の環境では /usr/lib/perl5/site_perl/5.8.5/Mail/CheckUser.pm でしたので、/usr/lib/perl5/site_perl/5.8.5/Mail/CheckUser と言うディレクトリを作り、その中に CheckUser.pm をコピペして Loose.pm にリネーム。
その Loose.pm を数カ所変更するだけです。
7行目付近
package Mail::CheckUser;
↓ ::Loose を追記
package Mail::CheckUser::Loose;
190行目付近
sub last_check() {
return $Mail::CheckUser::Last_Check;
}
↓ ::Loose を追記
sub last_check() {
return $Mail::CheckUser::Loose::Last_Check;
}
214行目付近
my $STRING_RE = ('[' . quotemeta(join '', grep(!/[<>()\[\]\\\.,;:\@"]/, # ["], UnBug Emacs map chr, 33 .. 126)) . ']'); ↓ \. を削除 my $STRING_RE = ('[' . quotemeta(join '', grep(!/[<>()\[\]\\,;:\@"]/, # ["], UnBug Emacs map chr, 33 .. 126)) . ']');
244行目付近
my $resolver = $Mail::CheckUser::Net_DNS_Resolver || new Net::DNS::Resolver;
↓ ::Loose を追記
my $resolver = $Mail::CheckUser::Loose::Net_DNS_Resolver || new Net::DNS::Resolver;
スキル不足で継承とかよくわからないので(汗
use Mail::CheckUser::Loose; my $check_email='h.o.g.e.@docomo.ne.jp'; $Mail::CheckUser::Loose::Timeout = 15; $Mail::CheckUser::Loose::Treat_Timeout_As_Fail = 'true'; if(check_email($check_email)) { print "有効なアドレスです。"; }else { print "無効なアドレスです。",last_check()->{reason}; }
こんな感じで使ったりしてます。
以下修正後の全ソース
IEの6,7,8を判別するJavascript
JavaScriptでIEかどうかをたったの1行で判別する方法
この両者のスクリプトを合わせてみた。
ライブラリを使いたくない(or使えない)状況で役に立つかも。
ちなみに「IEの6,7,8を判別するJavascript」のコードは間違っていたので少々修正。
if (typeof document.body.style.maxHeight != "undefined") { if (!/*@cc_on!@*/false){ // Not IE. alert('Not IE.'); }else if (document.documentMode >=8) { // IE8 alert('IE8'); }else { //IE7, IE8(IE7 mode) alert('IE7, IE8(IE7 mode)'); } } else { // IE6, older browsers alert(' IE6, older browsers'); }
Windows XP の IE8、IE7、FireFox、Chromeで確認OK.
Mac の Safari、FireFox、Opera、Chrome でもOK.
相変わらずクソな実装のIE。
他のブラウザで全部動くのにIE 7.0 以下の挙動はホントにクソ。
先人の方々に感謝感激雨あられですわ。
IEでのgetAttribute,setAttributeのバグ
// NG element.getAttribute("class"); element.setAttribute("style", "background-color: #fff; color: #000;"); element.setAttribute("onclick", "clickHandler(event);"); // OK element.getAttribute("className"); element.style.cssText = "background-color: #fff; color: #000;"; element.setAttribute("onclick", new Function("clickHandler(event);"));
IEでsetAttribute()とremoveAttribute()がうまく動かない問題 (ウップス!!なかわけ)
しかも、かなり重要なことを発見しました。 属性名を小文字で書かないとうまく動かない!!(IE7で確認) setAttribute("onClick", new Function("")); ではダメなのです。うまく処理されません。 setAttribute("onclick", new Function(""));
あー、これも引っかかってたわ。
ただし、上記の対応をすると他のブラウザで動かない。IE8 でもエラーが出る。IE 7以下用に振り分けないとダメなのか。。。
まぁ、そろそろIE7以下は捨ててもいいよ・・・ね?
ベタにHTMLを document.write() で書けばいい訳で・・。
クロスブラウザにするには手間ががかかる・・。
以前に配列をシャッフルの記事( https://perl.no-tubo.net/2010/01/08/pelrで配列をシャッフル/ )を書いたのだけれど、その時にコメントで List::Util を使いましょうよ、と頂いた。
そういうものもあるのか、と思っていたのだけれど理由があったので軽く調べてみた。
perl を書く時には配列処理と言うのはよく使うので、メモとしてエントリー。
配列処理に置いて同じような処理は自前で書いても書けない事は無い。ただし、コアモジュール List::Util は C(XS) で実装されている(?)ので多量の処理になるほど実行速度に差が出る。
ベンチマークをとって比較しているエントリー
配列のしゃほぅ!のベンチマーク
上記エントリーにはシャッフルのベンチマークのみだけど、きっと他の処理でも違いがあるのだろう。
List::MoreUtils を使うとさらに多くの配列処理を使用出来る。
簡単なリファレンス
List::MoreUtils - List::Utilに含まれない関数群 - あじゃぱー
インストールに関して注意点があるようです。
YellowStore: [Perl]List-MoreUtils-0.24はPerl5.8.8以前には入らない