くれすのFreeBSD日記 このページをアンテナに追加 RSSフィード

只今建設中。。。

CressUnix.org

2008年01月27日(日)Perlまだー?

[] Perl v5.10.0 来た。でも・・・ 14:17  Perl v5.10.0 来た。でも・・・ - くれすのFreeBSD日記 を含むブックマーク はてなブックマーク -  Perl v5.10.0 来た。でも・・・ - くれすのFreeBSD日記

先月、Perl v5.10.0が出ました。

v5.10.0 来た - くれすのPerl日記 - Hatena::Group::Perl

でも、まだまだPortsに上がる気配ナシ。OSのコアに近い部分だから、しばらく様子見なのかもしれない。上位互換性はあるようだが。

インタプリタパフォーマンス改善されたようなことが書かれていたので、早く試してみたい。

トラックバック - http://freebsd.g.hatena.ne.jp/Cress/20080127

2007年09月16日(日)Perl日記から来ました。

[] threadsを使えるようにする 23:04  threadsを使えるようにする - くれすのFreeBSD日記 を含むブックマーク はてなブックマーク -  threadsを使えるようにする - くれすのFreeBSD日記

この日記 スレッド書いてみようと思ったんだけど - くれすのPerl日記 - Hatena::Group::Perlの続き。

FreeBSDインストールされているPerlは、デフォルトだとスレッド機能が無効になってます。で、再構築してやれば良いわけなのだがコレが一筋縄では行かず。

それらしいドキュメントが全然なくて、Makefile*1を直接読んでみるという暴挙に出ました。すると、どうもWITH_THREADSという環境変数存在するかどうかを見ているらしい。なので(ちなみにrootcsh使ってる)

# setenv WITH_THREADS true
# portupgrade -f perl

こんな感じでした。Bシェル系が好きな人はexportとかで読み直してやって。

WITH_THREADSの値はどうやるのが一般的なんだろう?思いっきり true て決め打ちにしちゃったけど。1 とか?

追記

/usr/ports/Mk/bsd.port.mkより、

By convention these should be set to 'yes', although they only need to be defined.

だそうです。なので

# setenv WITH_THREADS yes
# portupgrade -f perl

これが正解。まあ、定義されているかどうかを見ているだけなので、"no"と入れても有効になっちゃいますが。

*1:/usr/ports/lang/perl5.8/Makefile

jun-gjun-g2007/09/18 09:55WITH_XXXの値は「yes」と書けば良い、とbsd.port.mkに書いてありますよ。

CressCress2007/09/25 01:36ご指摘ありがとうございます。初めてbsd.port.mkを読んでみました。。。
> By convention these should be set to 'yes', although they only need to be defined.
ですね。一応何入れても動くようですが。

トラックバック - http://freebsd.g.hatena.ne.jp/Cress/20070916

2007年09月04日(火)タイムアウト問題

[][] CGIApacheタイムアウトを無視する 18:19  CGIがApacheのタイムアウトを無視する - くれすのFreeBSD日記 を含むブックマーク はてなブックマーク -  CGIがApacheのタイムアウトを無視する - くれすのFreeBSD日記

処理が遅すぎてCGIタイムアウトしてしまう問題。解決すべく、それっぽいものを書いてみた。

なんでスコープにしちゃっただろう?気にしない。

#!/usr/bin/perl

use strict;

{
    print 'Content-Type: text/html'."\n";
    print "\n";

    my $count = 0;
    sub alarm_handler {
        local $| = 1;
        if (++$count % 5 == 0) {
            print $count, ' ';
        } else {
            print '.';
        }
        alarm(1);
    }
    local $SIG{ALRM} = \&alarm_handler;

    alarm(1);
    ### ↓時間のかかる処理 ####
    sleep(1) foreach (1 .. 600);
    ### ↑時間のかかる処理 ###
    alarm(0);
}

すげぇ見づらかったので、「5で割り切れたら数字を出す」というのを加えました。さらに、横にウィンドウが長くなっていくことがわかったので数字のあとにスペースも追加。

Apache 1.3(タイムアウト300秒)+Firefox 2.0 でやったら、なんとApacheタイムアウト設定を超えてしまった。5分で切れると思ったら10分達成。無通信が300秒だと切れるのかな?

結果はこんな風にでてくる。

....5 ....10 ....15 ....20 ....25 ..

トラックバック - http://freebsd.g.hatena.ne.jp/Cress/20070904