XML::LibXMLを使ってみる

XML::Simpleが遅いというか重いというか。
調べてみるとXML::LibXMLが便利らしい。

それなら使ってみようかと調べてみるが・・・
XML系モジュールのベンチマーク盗用記事しか見つからない。
まともに使い方を説明しているところが無かったので、ソースを読む羽目になる。
とりあえず、WCGのデータからLastUpdatedを取得する方法

my $parser = XML::LibXML -> new();
my $dom    = $parser -> parse_file( $set{'target'} );
my $lastUpdated = ( $dom -> getElementsByTagName( 'LastUpdated' ) )[0] -> findnodes( '.' );

しかし命名法則としてXML::LibXMLはいいのだろうか。

XMLのパースで行き詰る

再開に向けて、スクリプトを見直してます。
XMLファイルの処理が問題です。
XML::Simpleが異常にメモリを食うのです。
Core2マシンではさほどたいしたことはないのですが、
ペンⅢ800Mマシンにとっては致命的。

なぜかメモリをどんどん食いつぶして180Mぐらい食ってプロセスが固まります。
といってもゾンビになるわけではなくて実行中のまま。
よくわかんない。
そろそろXML::LibXMLの出番かな~

Windowsの場合、ppmのリポジトリを追加してからインストール

 ppm install XML-LibXML
Downloading bribes packlist...done
Updating bribes database...done
ppm install failed: Can't find any package that provide XML-LibXML

D:\homepage\wcg-team2ch>ppm rep add "theoryx" "http://theoryx5.uwinnipeg.ca/ppms/"
Downloading theoryx packlist...done
Updating theoryx database...done
Repo 4 added.

> ppm install XML-LibXML
Downloading theoryx packlist...not modified
Downloading XML-LibXML-1.64...done
Downloading XML-SAX-0.16...done
Downloading XML-NamespaceSupport-1.09...done
Downloading XML-LibXML-Common-0.13...done
Unpacking XML-LibXML-1.64...done
Unpacking XML-SAX-0.16...done
Unpacking XML-NamespaceSupport-1.09...done
Unpacking XML-LibXML-Common-0.13...done
Generating HTML for XML-LibXML-1.64...done
Generating HTML for XML-SAX-0.16...done
Generating HTML for XML-NamespaceSupport-1.09...done
Generating HTML for XML-LibXML-Common-0.13...done
Updating files in site area...done
Downloading XML-LibXML-Common-0.13 install script...done
Running XML-LibXML-Common-0.13 install script...Set up gcc environment - 3.2 (mingw special 20020817-1)

A copy of the needed library libxml2.dll was found in
C:\Tcl\bin\libxml2.dll. If this is compatible with the version (2.6.27)
used to compile the Perl module, all that is needed to
complete the installation is to ensure
C:\Tcl\bin\libxml2.dll is in your PATH environment variable.

Fetch libxml2.dll? [no]
Aborting download of libxml2.dll.
done
Downloading XML-LibXML-1.64 install script...done
Running XML-LibXML-1.64 install script...Set up gcc environment - 3.2 (mingw special 20020817-1)

Do you want to alter ParserDetails.ini? [yes]
C:\Perl\bin\perl.exe -MXML::SAX -e "XML::SAX->add_parser(q(XML::LibXML::SAX::Parser))->save_parsers()"
C:\Perl\bin\perl.exe -MXML::SAX -e "XML::SAX->add_parser(q(XML::LibXML::SAX))->save_parsers()"
done
 103 files installed

ちなみに

cpan install XML::LibXML

ではNOT OKといわれる

Linuxの場合

cpan install XML::LibXML

では散々エラーをはくが、

yum install perl-XML-LibXML

でok。

CentOS リポジトリ

使い込んでいるとは家、まだまだ奥の深いLinux
yumに、パッケージのインストール先を追加してみる。
PHPで言うならばPEARやPECLみたいなもの。

検索すると以下のコマンドが紹介されている。

# wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

実行すると

–02:51:08– http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
dag.wieers.com をDNSに問いあわせています… 62.213.193.164
dag.wieers.com|62.213.193.164|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています…
301 Moved Permanently
場所: http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm [続く]
–02:51:09– http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
dag.wieers.com:80 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています… 302 Found
場所: http://rpmforge.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm [続く]
–02:51:09– http://rpmforge.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpmforge.sw.be をDNSに問いあわせています… 130.133.35.16, 88.198.65.175
rpmforge.sw.be|130.133.35.16|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 16698 (16K) [application/x-rpm]
Saving to: `rpmforge-release-0.3.6-1.el5.rf.i386.rpm’

100%[=======================================>] 16,698 26.7K/s in 0.6s

02:51:11 (26.7 KB/s) – `rpmforge-release-0.3.6-1.el5.rf.i386.rpm’ を保存しました [16698/16698]

ファイルが移動しているので、今後は以下のアドレスがいいだろう。

wget http://rpmforge.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

次に、リポジトリのインストールを行う

# rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm

警告: rpmforge-release-0.3.6-1.el5.rf.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 6b8d79e6
準備中… ########################################### [100%]
1:rpmforge-release ########################################### [100%]

う~ん、

参考にしたのはここ

http://centos.oss.sc/fundamentals/yum_rpmforge/

自鯖LinuxにFTP機能をつける

基本的にGUI。
Webminがインストールされている前提です。

左のフレームより、サーバ>ProFTPD Server
インスコされていなければ「Click here」でインストール

Installing package(s) with command yum -y install proftpd ..

Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * base: ftp.oss.eznetsols.org
 * updates: ftp.oss.eznetsols.org
 * addons: ftp.hostrino.com
 * extras: ftp.oss.eznetsols.org
Setting up Install Process
Parsing package install arguments
No package proftpd available.
Nothing to do

.. install complete.

インスコ完了か・・・と思うとハマる。
よくよくみるとno package

しかたがないのでrpmを探しに出る
が、rpmは用意されていないので、
・・・なんだっけ?
インスコしたときは切羽詰まっててできたけど、
いまど忘れ。

思い出した。
http://dag.wieers.com/rpm/packages/proftpd/
ここでrpmを作って配布してくれているのでお借りする。

CentOS5なので、proftpd-1.3.1-1.el5.rf.i386.rpm でいいはず。

# rpm -ihv proftpd-1.3.1-1.el5.rf.i386.rpm
警告: proftpd-1.3.1-1.el5.rf.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 6b8d79e6
準備中...                ########################################### [100%]
   1:proftpd                ########################################### [100%]

なんか警告されいてるけどしらんぷり。
再度WebminでProFTPDを開くと、めでたく画面が表示されます。
ためしにサーバを起動すると問題なく起動

service proftpd start
proftpd を起動中:                                          [  OK  ]

後細かい設定は勢いで済ませた覚えてない・・・やばいな。

サーバーを再構築中

落ちる頻度があまりにも高いので、
サーバーのOSをWindowsからLinuxにします。
とりあえず、一番使い込んでるCentOSになります。

あと、日報ですが、新しく線を引くか、
誰かにIPブロックを解除してもらえるようにフォーラムに凸してもらわないと、
つなげないものはどうしようもありません。

引越しすることになったら、新しい回線になるので、
また再開は出来るかもしれません。

WindowsでSMTP

Windowsでメールを送信するには、melonという便利ツールがあった。
http://seclan.dll.jp/download.htm

このツールを起動して、

phpで使いたかったので、php.iniは

; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
sendmail_from = 127.0.0.1

これだけで、mail()やmb_send_mail()が使えるようになる。

頑張ったけど高校の英語は3年間赤点でした。もえたんも挫折。

私はチーム名「Team 2ch」の解析結果をサイトで公開しているものです。
www.worldcommunitygrid.org/boinc/stats/user.gzのファイルでは、
解析時間やリザルトの提出率といった情報が欠けているため、
やむなく個別ページのXMLファイルを取得しております。
しかしこの方法では、500エラーも多く、期待したレスポンスが得られないことが多発しております。
最近では、リクエストを一定時間受け付けないというメッセージも表示され、
チームに所属するユーザーの情報を取得し終わるのに時間がかかったり、
場合によっては次の更新までに完了せず、取得を断念せざるを得ないこともありました。
このままでは負荷をかけ続ける原因として、当方がアクセスを拒否されることを懸念しており、
解析結果を楽しみにしているTeam 2chに所属するメンバーへの影響も考えられます。
こちらの希望といたしましては、個別ページの情報を効率よく取得できる方法を用意していただくか、
または、www.worldcommunitygrid.org/boinc/stats/user.gzに欠けている情報を補っていただけないものか、
ご相談に伺いました。
よろしければご検討いただければ幸いです。
以上

WCGから取得できません

355 404 sage 2008/07/16(水) 22:35:26 ID:???

前にも書いた気がしますが。
これだけ頻繁に500エラーを返すんだから、他の参照方法を用意してくれればいいんですけど。
今のやり方では、人が増えるほど取得が難しくなってしまいますね。
BANされないかヒヤヒヤです。

WCGは7千件でこの状況ですが、
UDは6万件もあったのに、これほどひどい状況にはなってなかったと思います。
F@hでは、テキストファイルを落とすだけなので、すごく楽です。

マウスイベントの追加方法

JavaScriptでマウスイベントを追加するには何パターンかあるけど、

obj.onmousedown = cursorStart;

obj.setAttribute( “onmousedown”, document.all ? new Function( “cursorStart(this)” ) : “cursorStart(this)” );

上の方じゃないと、ドラッグイベントまで追加されてしまう。
結構悩んだ。