nDiki : WWW
Related term
1999年1月19日 (火)
■ mirror-2.9, put の chmod 不具合

WWW ページ管理の仕事で mirror 2.9 を利用しているのだが、いままでアップロード(put)時にサーバ側で chmod がうまくできないでいた。 相手 FTP サーバは FTP server (Version wu-2.4(7) Tue Jun 9 21:37:03 JST 1998)。 ftp で chmod すると
501 CHMOD: Mode value must be between 0 and 0777
というエラーになってしまう。 どうやら Perl の関数でローカルのファイルの mode を取得した時のものをそのまま送ってしまっているのが問題のようだ。
mirror の 3419行目
# Convert from octal # Suggested patch to limit bits being set # $mode = $mode & 0777; ここ!
のコメントマークを外して有効にすると chmod 成功するようになった。
- CGI プログラム、Out of memory! に泣く (2001-01-04)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- Ming でいきなりハマる (2005-02-20)
- はてなブックマーク上の最新ブックマークを nDiki に (2005-05-16)
- Perl で遺伝的プログラミング (2004-07-05)
2001年1月4日 (木)
■ CGI プログラム、Out of memory! に泣く

昨日、Web サーバに WWW::Search モジュール、拙作 WWW::Search::Namazu2 をインストールし Namazu メタサーチ CGI も準備万端。手元でもきちんと動作している。
で Web サーバ上に CGI プログラムをセットアップ。 入力ページもきちんと出た。 が、検索させると結果がでない。 Apache のエラーログを見ると……Out of memory!
無限ループかなにかに落ちるところはないんだけどなぁ……。 いろいろコネクリまわしたが、Out of memory! は解消できず。 WWW::Search モジュールを手でいじって、使わないモジュールのロードをおさえたりすると、ちょっと先まで進むようになるがやはり Out of memory!
モジュール間の相性でメモリを食いすぎている……なんて事もないだろうなぁ。
$ulimit -a cpu time (seconds, -t) unlimited file size (512-blocks, -f) unlimited data seg size (kbytes, -d) 524288 stack size (kbytes, -s) 65536 core file size (512-blocks, -c) unlimited max memory size (kbytes, -m) unlimited locked memory (kbytes, -l) unlimited max user processes (-u) 4115 open files (-n) 8232
の限界を越えたか? サーバのメモリはさすがに使いきってないようだし。 バーチャルサーバだけに1プロセスがメモリ食いすぎると(他人にされると自分も)困るので理解できるが、ちと苦しいなぁ。
「Perl をやめる」という案は「Perl モジュールの開発」と相反するから却下。
@ 追記
2001年5月6日に、Apache の設定で limit がかけられているらしい事が判明。 (2001年5月6日追記)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- [ 日記 ] SpeedyCGI による、同時処理数制御 (2004-01-20)
- [ WiKicker ] 「最近のアクセスログ」処理思案 (2004-01-17)
2003年12月9日 (火)
■ [ お仕事 ] サーバ構築開始

来月OCNエコノミー回線を利用していたWWW/DNS/SMTPサーバをADSL回線側へ持っていくため、同時にサーバも新しく設定しなおすことに先日決まったのでそろそろ準備を。
最低限RAID1ぐらいを組んでおこうといろいろ検討したのだが、Debian GNU/Linux を使って安価にATAハードウェアRAID組めるカードが見つからず(FastTrak TX2000は管理ツールがWindows用しなないようだし、RockatRAID 133 は Debian GNU/Linux で使っているという情報がほどんどないし)。
で結局ソフトウェアRAIDにすることにした。
@ Deskstar 7K250
(7200rpm, UltraATA/100, FDB) 80GB を2台。 購入。
@ GATEWAY のPCへ
以前私が開発用 Windows BOX として使っていたPCをサーバにあてることになっている。 フタを開けて2台はいっているHDD(13GB と 60GB)を抜いて買ってきた Deskstar と交換。 内蔵ベイのディスク交換のためベイごと抜かなければならないので面倒。
@ Debian GNU/Linux
インストールCDでブート。HDD発見できず。 実はHDDはもともと ATA66カードで接続していたので(CD-ROMはオンボート)、このままでは認識しないと。 メニューから一旦 shell に入って、
cat /proc/pci
で、
Bus 0, device 13, function 0:
Unknown mass storage controller: Promise Technology Unknown device (rev 1).
Vendor id=105a. Device id=4d38.
Medium devsel. IRQ 10. Master Capable. Latency=64.
I/O at 0x1440 [0x1441]
I/O at 0x1434 [0x1435]
I/O at 0x1438 [0x1439]
I/O at 0x1430 [0x1431]
I/O at 0x10c0 [0x10c1]
Non-prefetchable 32 bit memory at 0xe8000000 [0xe8000000].
と出たので、
boot: linux ide0=0x1440,0x1436 ide1=0x1438,0x1432
でブート。これでめでたく認識。 ここで今日はそろそろタイムアウト。 続きはまた明日。
- QEMU を使って Debian GNU/Linux 上で Windows... (2005-04-08)
- DynaBook SS 3440を再セットアップして里子に (2004-03-06)
- [ Debian ] GRUB でソフトウェアRAID1 ブート設定 (2004-01-05)
- [ Debian ] ThinkPad X31 にインストール (2003-12-03)
- 納品前日なのに /var が壊れた! HDDからのブートで Debian ... (2005-09-27)
2006年12月12日 (火)
■ PAR::Repository でビルド済み Perl モジュールをネットワーク配信

@ 実行可能ファイル作成としての PAR
PAR といえば Perl スクリプトを実行可能ファイル(Windows なら EXE 形式ファイル)に変換するモジュールとして有名である。
ちなみに実行可能ファイルを作成する部分はは PAR 0.97 より PAR-Packer パッケージに分けられ、PAR 自体はインストールしやすい pure Perl なパッケージになっている。
@ PAR モジュールアーカイブからのローダとしての PAR
PAR が提供するもう一つの(こちらが本来はメイン?)機能は、プログラムの実行時に必要な Perl モジュールを PAR ファイルと呼ばれる Perl モジュールアーカイブファイルからロードする機能である。 XS モジュールなどもコンパイルすることができるどこかの環境で1度ビルドして PAR ファイルにしておけば、同じアーキテクチャのホスト上でそのまま利用することができる。
@ PAR リポジトリ
ロードしたい PAR ファイルはファイルパスだけではなく URL でも指定することができ、必要な時にオンデマンドでフェッチさせることができる。 これを使えば Perl プログラムの集中管理可能だ。
PAR 0.951 からは PAR リポジトリというコンセプトが追加され、パッケージ毎に作った PAR ファイルをサーバ上(あるいはローカル)のリポジトリに蓄積してオンデマンドでロードできるようになった。
個別に PAR ファイルを指定する従来の方式に比べてかなり便利そうである。 ということで試用してみた。
まずは
- PAR
- PAR::Repository
- PAR::Repository::Client
- PAR::Repository::Query
- PAR::Dist
- PAR::Packker
あたりをインストールし準備 OK。
@ 1. PAR リポジトリを作成する
最初に PAR-Repository に含まれている parrepo で。
parrepo create -r /tmp/PAR
PAR リポジトリファイルの中にはデータベースファイルが作成されるが、これは DBM::Deep というアーキテクチャ非依存のものを使っているので、Linux でも Windows でもどちらからでもアクセス可能である (つまり Linux 上でリポジトリをメンテできるということだ)。
@ 2. Perl パッケージを PAR ファイル化する
次に必要な PAR ファイルを作成する。 作成したいパッケージを展開してビルドし、blib ができている状態で PAR::Dist を使ってパッケージ化する。
perl Makefile.PL make make test perl -MPAR::Dist -e blib_to_par
例えば ActivePerl*1 上で WWW-Mechanize-1.20 を PAR ファイル化すると
WWW-Mechanize-1.20-MSWin32-x86-multi-thread-5.8.8.par
というファイルが作成される。
普段から ActivePerl で必要なライブラリは基本的に自前で PPM パッケージ化して、動作確認した上で PPM リポジトリに蓄積するようにしているので、合わせて次の手順でパッケージを作ることになる。
perl Makefile.PL nmake nmake test perl -MPAR::Dist -e blib_to_par make_ppm
@ 3. PAR リポジトリに PAR ファイルを登録する
PAR ファイルができたら parrepo でリポジトリに登録する。
parrepo inject -r /tmp/PAR -f xxx.par
@ 4. PAR リポジトリ上のライブラリを使用してみる
例えば先ほどの WWW::Mechanize がリポジトリに登録されている状態で
#!/usr/bin/perl
use PAR { repository => 'file:///tmp/PAR/' };
use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
$mech->get('http://www.example.com');
print $mech->content;
というスクリプトを書いて実行すると、PAR リポジトリから WWW::Mechanize がロードされて正しく実行される。
ここでリポジトリを Web サーバへアップロードして、repository のところに URL を指定するようにすることもできる。 例えばリポジトリを http://www.example.com/PAR/ に配置したとすると
#!/usr/bin/perl
use PAR { repository => 'http://www.example.com/PAR/' };
use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
$mech->get('http://www.example.com');
print $mech->content;
と書き換えることで、インストールしていない WWW::Mechanize を使用できるようになる。
@ Perl プログラムを実行形式化する
先ほどの Perl スクリプトを get_top_page.pl という名前で保存して pp で実行ファイル化する。
pp -o get_top_page.exe -M PAR::Repository::Client get_top_page.pl
とすれば get_top_page.exe という実行可能ファイルが作成される。 WWW::Mechanize はオンデマンドで http://www.example.com/PAR/ からフェッチされるので、アップデートが必要な場合は新しい PAR ファイルを作成してリポジトリを更新するだけでよい。 EXE ファイルを作成しなおして利用者に配付しなすといった作業も不要だ。
@ スクリプトもリポジトリにおく
さらには実行するスクリプトをも PAR リポジトリに置いておくことが可能だ。
例えば WWW-Mechanize に含まれている mech-dump をオンデマンドにフェッチして実行する実行形式ファイルは以下のコマンドで作成できる。
pp -o mech-dump.exe -M PAR::Repository::Client \
-e "use PAR { repository => 'http://www.example.com/PAR/', \
run => 'mech-dump' }"
@ まとめ
ActivePerl では PPM があるとはいえ、普通のユーザにちょっとしたプログラムを使ってもらうのに「ActivePerl をインストールして、PPM パッケージをインストールして、……」というのは手間すぎる。
pp で プログラムに必要なものを全てバンドルした実行形式化ファイルにするという方法ももちろんあるのだが、頻繁にアップデートするようなスクリプトの場合には、起動のための部分だけ pp で作成しておいてあとは PAR リポジトリで集中管理するというのもちょっと魅力的である。
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- 自前 PPM リポジトリの管理 (2006-07-03)
- ActivePerl で Ming (2005-02-23)
- ActivePerl 5.8.8.820 の PPM では ppd/tar... (2007-02-05)
- bundle を作成して Perl モジュールをまとめてインストール。 (2004-10-21)
Related web page
* mixi2gmail.rb少し前から mixi のちょこちょこした変更もあって以前書いたmixi2gmail.rb の挙動が怪しくなっていたので、<strong>WWW</strong>::Mechanize 0.7.5 への対応も兼ねてコードを書き直した。最近のバージョンでは取得結果を Hpricot::Doc で返すようになり、XPath での検索も出来るようなので、以前の正規表現で切り出す形から XPath で抜き出す形に変更。画像の扱いもHTMLの中にインラインで表示さhttp://yoosee.net/d/archives/2008/04/04/002.html
http://www.google.com/gwt/n?source=pagecreator&u=http%3A%2F%2Fwww.luxiotech.com-a.googlepages.com%2Fhome
GET リクエストのようであるとも言える。漆黒のコーディングは、闇夜に舞う。紳士淑女は刮目してノート PCを見よ。どれだけ多くの血を流そうとも、必ずやを手に入れるという作者の強い意志を感じる。結局、ノート PCしかない。むしろ「パック伝票待ち」大会などと称して、それをたたえるのはどうだろうか。ホームエレクターがそんなに好きなのか。まあ良い。パリの12区あhttp://onosendai.jp/hyoron/hyoron.php?URL=http%3A%2F%2Fwww.naney.org%2Fdiki
RTW65b と RTX1100 と RT107e でビンゴ。http://www.rtpro.yamaha.co.jp/RT/FAQ/Security/JVN88575577.html
http://ondras.zarovi.cz/sql/
どこかに書いたか忘れましたが、<strong>WWW</strong>::Mixiの開発動機には「inetdでは<strong>WWW</strong>::Mechanizeを使えない(使えなかった)けど、LWPでmixiのscrapingは面倒!」と思ったことがあります。そこで、LWPモジュールさえ利用できれば動作する<strong>WWW</strong>::Mixiモジュールを作成しました。私のイメージでは、<strong>WWW</strong>::Mixiと<strong>WWW</strong>::Mixi::Scarperでは依存モジュールの差も、大きな違いです。 このところ、「perl」タグの記事 - Walrus,http://walrus.vox.com/library/post/wwwmixi-050%E7%89%88%E5%85%AC%E9%96%8B.html
http://d.hatena.ne.jp/jkondo/20070727/1185575866 id:jkondoさんによる。 うーん、主旨はわからないでもないけれど、人によっては危険な考え方。取扱注意な文章だと思う。 結城の経験を振り返ってみると「ああ、あのとき頑張って本当によかった」と思うこともあるけれど「ああ、あのとき頑張らなくて本当に本当によかった」と思うこともたくさんある。そして、「頑張らなくてよかった」http://d.hatena.ne.jp/textfile/20070728/jkondo
http://radar.oreilly.com/archives/2007/04/six_rules_for_a.html 「フリーなAPI」についての6個の基本的な真実。以下は(かなりはしょった)要点。 フリーなAPIを提供している企業には理由がある。 APIがなくならないようにするためにはお金がかかるものだ。 API提供者が想定していない利用法をしたら、API提供者と喧嘩することになるだろう。 API提供者は、そのAPIの上にあなたよりも容易に類似http://d.hatena.ne.jp/textfile/20070501/sbtofa
CNETの記事やITmediaの記事によると、ビル・ゲイツ氏は娘のPC利用時間を平日は1日45分間、週末は1日1時間(宿題に使う場合はそれ以外の使用を認めている)に制限しているらしい。 http://slashdot.jp/article.pl?sid=07/02/24/2315202 以下、結城の家の話。我が家では子供のPC利用時間を制限していない。今度検討しよう。現在は、 子供の専用PCがある。 PCを使う場所は親の隣の席。 子供のPCはイhttp://d.hatena.ne.jp/textfile/20070301/pc
Compilers へえ。ドラゴンブックの新版? "21st Century Compilers" だそうです。 via http://<strong>www</strong>.kmonos.net/wlog/64.html#_1452060831 ;---------------------------------------------------------------------http://d.hatena.ne.jp/textfile/20060831/dragon
■よく検索されるキーワード
うなぎ(432) スーパー(266) 温め方(192) 温め(74) 書き方(47) 調理(46) perl(44) 提案書(37) windows(36) linux(35) cvs(32) アジェンダ(29) ウナギ(28) debian(25) ドラマ(22) svn(21) 壁紙(21) 動画(20) 鰻(19) java(19) ガッテン(18) 美味しく(18) 冷蔵庫(18) インストール(16) 画像(16) サンプル(16) 使い方(15) rcs(14) 修理(14) テンプレート(13) torrent(12) ためしてガッテン(12) tc-1(12) 温める(12) so905ics(11) web(11) iphone(11) x31(11) 渡辺杏(11) subversion(11) make(11) ganttproject(10) 影舞(10) おいしく(10) ノート(9) ガントチャート(9) パック(9) ヨドバシカメラ(9) gmail(9) apache(9) ツール(9) 映画(9) porter(9) 時計(8) thinkpad(8) emacs(8) wiki(8) usb(8) レンジ(8) google(8) gtd(8) 大井町(8) gnu(8) c#(7) ダイソー(7) 4c(7) 日本語(7) twitter(7) 提案書の書き方(7) 生年月日(7) 市原隼人(7) リフィル(7) pc(7) c++(7) 写真(7) djunit(6) scons(6) ボールペン(6) 故障(6) 方眼(6)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 方法 設定 サンプル ダウンロード セール 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 最新 MP3 動画 解説 意味 用語集 参考文献 お薦め お勧め おすすめ Blog ブログ mixi 待受画面 相場 海外旅行 旅行Process Time: 0.054454s / load averages: 1.20, 1.37, 1.38
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク