« 2004年10月 | メイン | 2004年12月 »
XML::RAIのバグを2つほど、発見。
バージョンはXML-RAI-1.04。
XML/RAI.pmの48行目
- sub time_format { $_[0]->{__timef}=$_[1] if $_[1]; $_[0]->{__timef}; } + sub time_format { $_[0]->{__timef}=$_[1] if defined $_[1]; $_[0]->{__timef}; }
XML/RAI/Object.pmの51〜52行目
- map { $_ = strftime( $timef, gmtime str2time($_->text_content) ) } @r - if $timef; + map { $_ = ($timef) ? strftime( $timef, gmtime str2time($_->text_content) ) : + $_->text_content } @r;
時間をノーマライズするときに、間にgmtimeを挟み込む理由がよくわからない。
なので、PASS_THRUにしようとしたけど、うまくいかないので気づいた。
ちなみに、上記のコードは試してない。
my $rai = XML::RAI->parse($doc); $rai->{__timef}=undef; foreach my $item (@{$rai->items}){ print str2time($item->issued->text_content)."\n"; }
こんな感じで無理矢理回避できる。
XML::RAIというRSS Parser
モジュールがあります。
The RSS Abstraction Interface, or RAI (said "ray"), provides an object-oriented interface to XML::RSS::Parser trees that abstracts the user from handling namespaces, overlapping and alternate tag mappings.
どういうものかというと、
my $rai = XML::RAI->parse($doc); foreach my $item (@{$rai->items}){ print $item->content; }
としたときに表示されるのは、
* xhtml:body
* xhtml:div
* content:encoded
* description
* dc:description
* rss091:description
の中から自動的に選択してくれます。
RSSにはいろいろバージョンありますけど、その違いも吸収できるのです。
RSSのパーサーとしては、XML::RSSがスタンダートなのだが、比較のベンチマークをしてみた。
結果1 - このblogのRSS(v1.0)を読み込ませた場合
Benchmark: timing 100 iterations of XML::RAI, XML::RSS... XML::RAI: 23 wallclock secs (23.20 usr + 0.11 sys = 23.31 CPU) @ 4.29/s (n=100) XML::RSS: 33 wallclock secs (33.36 usr + 0.01 sys = 33.37 CPU) @ 3.00/s (n=100)
これを見て、XML::RSSより速いのかと、思ったが、
結果2 - Yahoo!の新着情報のRSS(v2.0)の場合
Benchmark: timing 100 iterations of XML::RAI, XML::RSS... XML::RAI: 8 wallclock secs ( 8.10 usr + 0.02 sys = 8.12 CPU) @ 12.32/s (n=100) XML::RSS: 6 wallclock secs ( 5.15 usr + 0.00 sys = 5.15 CPU) @ 19.42/s (n=100)
という結果が出るところをみると、データによりそれぞれ。
まぁ、両方とも、XML::Parserを使っているのでそれほど違いがでないのでしょう。
前回のベンチで試したXML::LibXMLが速いのは間違いない。
ただ、XML::RAIは便利だと思う。
以下実行したスクリプト
#!/usr/bin/perl -w use strict; use IO::File; use XML::RAI; use XML::RSS; use Benchmark; my $fh = IO::File->new($ARGV[0]) or die $!; my $doc=""; while(my $ret=$fh->getline){ $doc.=$ret; } Benchmark::timethese(100, { 'XML::RSS' =>\&with_xml_rss, 'XML::RAI' => \&with_xml_rai, }); sub with_xml_rss{ my %rss; my $rss = XML::RSS->new; $rss->add_module( prefix=>"content", uri=>"http://purl.org/rss/1.0/modules/content/" ); $rss->parse($doc); my $channel = $rss->channel; $rss{title} = $channel->{title}; $rss{link} = $channel->{link}; my @items; foreach my $item (@{$rss->{items}}){ my %item; $item{title}=$item->{title}; $item{link}=$item->{link}; $item{description}=$item->{content}->{encoded} || $item->{description}; $item{date}=$item->{dc}->{date}; push(@items,\%item); } $rss{items}=\@items; } sub with_xml_rai{ my %rss; my $rai = XML::RAI->parse($doc); my $channel=$rai->channel; $rss{title}=$channel->title; $rss{link}=$channel->link; my @items; foreach my $item (@{$rai->items}){ my %item; $item{title}=$item->title; $item{link}=$item->link; $item{description}=$item->content; $item{date}=$item->issued; } $rss{items}=\@items; }
全文検索エンジンの1つのEstraierを試してみる。
Namazuとどこが違うのかは、書いてある。
Q : EstraierはNamazuとどう違うのか。
A. : Estraierは多くの点でNamazuの設計を参考にして作られている。Namazuの主な機能はEstraierでも実装されている。一般的なユーザにとってはどちらを使っても遜色ないと思われる。Estraierの利点を強いて言えば、ハイライト機能が格好いいことと、関連文書検索ができることだろう。一方Namazuの利点は、Perlプログラマにとってはカスタマイズしやすいことと、各種のアプリケーションが充実していることと、ユーザ数(運用実績)が多いので安心できるし、サポートが受けやすいということだろう。
ぼくがおもしろいと思ったのは、関連検索。
とりあえず、このblogのデータを利用しての検索ページをおいてみた。
いろいろ試していってみよう。
slashdot.jpのトピ「Slashdotに聞け!: FireFoxにどんなエクステンション入れてますか?」
All-in-One Gestures
Tabbrowser Preferences
この2つ。
Operaいらずになってしまいました。
上のslashdotのトピックスを読んでいると、あまり知らない拡張機能の名前もあって試したくなりますね。
CNETの記事「ゲーム開発者残酷物語--EA提訴で明るみに出た業界の実情」
Straitiffの上司は、「年中無休」と書かれたネオンサインを壁に掛け、「休日出勤を要求するメールを部下全員に定期的に送信していた」と語る同氏は、ソフトウェア開発者として約1年半EAで働いていたが、数週間前に解雇されてしまった。解雇理由の1つは、数カ月間連続で週80時間勤務することを拒否したためだという。
EAだから特に、っていうのも思わないこともない。映画とのタイアップで開発に時間がなく、発売日も限られているだろうし。日本とは違い、薄利多売なところもあるんじゃないでしょうか。
ちょうど今、ピープルウエアを読んでいてタイムリーなのだが、
結局は環境なのだと思う。週80時間自体は特に問題ではない。ゲーム業界に限らず、IT業界も時間なんて関係ないぐらいの時間、働いているところが多いと思う。
それでも組織としてきちんと存続していける企業は、それだけの貢献をひきだすことができる誘因が確保されてたり、企業の目的と個人の目的のすりあわせがきちんとできる様な環境を整えられているのでしょう。
このマシンに入れたRedHat LinuxのKernelの再構築をしてみている(現在make module中)
久しぶりのカーネル再構築なので(ライブで)メモしておく。
1. kernel-sourceパッケージのインストール。
# rpm -Uvh kernel-source-2.4.20-28.7.rpm
2. kernelの入手と解凍など
# cd /usr/src # wget http://www.jp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.28.tar.gz # tar zxf linux-2.4.28.tar.gz # rm linux-2.4 # ln -s linux-2.4.28 linux-2.4 # cd linux-2.4
3. configのコピー
# cp ../linux-2.4.20-28.7/configs/kernel-2.4.20-i686-smp.config ./.config # make oldconfig
4. makeなどなど
# make dep # make clean # make # make modules # make install # make modules_install
grub.confなども書き変わると思われ。
と、書いていたら、make modulesで失敗
エラーは
dn_neigh.c:584: `THIS_MODULE' undeclared here (not in a function) dn_neigh.c:584: initializer element is not constant dn_neigh.c:584: (near initialization for `dn_neigh_seq_fops.owner') make[2]: *** [dn_neigh.o] エラー 1 make[2]: 出ます ディレクトリ `/usr/src/linux-2.4.28/net/decnet' make[1]: *** [_modsubdir_decnet] エラー 2 make[1]: 出ます ディレクトリ `/usr/src/linux-2.4.28/net' make: *** [_mod_net] エラー 2
これ。どうやら、これが解決策。
dn_neigh.c
に
#include <linux/module.h>
を加えてうまくいきました。
Slashdot経由で、ITmediaのプレスによると、ITmediaと@ITが合併するそうです。
新会社は、合併後も両社のブランド(「ITmedia」・「@IT」)とそれぞれのURLを継続しさらに強化していくとともに中期的には、
1)次世代経営者・マネジメント
2)ITプロフェッショナル
3)高感度コンシューマ
の3つの領域を主要な事業分野とするべくブランドやコンテンツの強化拡充と再編を目指します。
ということなので、会社は合併しても、両方のサイトはしばらくそのまま。
両サイトともよく利用するサイトなので今後が気になります。
ITmeidaのTips for Linuxと@ITのLinux
Tipsはさりげなく良いページです。
この記事で書いたマシン。サーバ用途に使うつもりで購入したわけだが、詳しく書くと
ケースは、ブック型、マザーボードは、AsrockのSiS 661FXを搭載、CPUには、Pentium4 2.80EGHzを積んでいます。
このCPUは熱いで有名なPrescottを搭載。
CPU温度は、通常が42度、負荷をかけると50〜54度ぐらいまで上昇。
ファンが勢いよく回り、相当うるさい。
このマシンの前に某サーバマシンとして導入したのが、Athlon64 3000+。
Socket 939の最新CPUです。ケースはミドルタワー。
このマシン、最初に驚いたのが、なんと、CPUファンが止まること。
Cool'n'Quiet™
機能により、省電力になると言うことは知っていたが、ファンが止まるなんて思ってもなかったので、非常にびっくり。
さすがに、ずっと動かすマシンなので、ファンの回転を止めないようにBIOSで設定しました。
んで、発見したのがTom's Hardware guideのこのページ。
3.8 GHz P4-570
and E0 Stepping To End Intel's Performance Crisis
この消費電力の低さで、Pen4と同等ぐらいの速度がでる(らしい)のですから、
Athlonが好きになってしまいます。
一台、家用に組みたい気分になってくる散財の年末。
いつも、チェックさせて頂いている、SEMリサーチさんのところに
ルックスマート、コミュースタイルと提携の記事が載った。
ルックスマートのサイト上の案内によると、コミュースタイル( http://www.comiu.com/ )とサーチにおいて提携する模様。現時点でコミュースタイルのサイト上にはルックスマートのディレクトリ、サーチまたは広告らしきものは表示されていない。
とりあえず、書いておくと。http://www.comiu.com/からリンクされている、
ハピタン・ミルタン・サイタンの3つのバーチャルタウンのコミュニティ内に検索ボックスがあります。
自分の記事へのリンク。スクリーンショットあります。
AsrockのP4S61にLinuxインストールのメモ
マザーボードの詳細
搭載チップセットは、SiS 661FX+963L, Supports Hyper-Threading Technology
BIOSのバージョンは2.5
このマシンにLinux(試したのはTurboLinuxD10とRedHat7.3)をインストールし、起動すると、
hda: attached ide-disk driver. hda: lost interrupt hda: lost interrupt hda: lost interrupt ..
となって、起動しない。
まともに起動させるには、起動時にKernelオプションで、noapicを付け加える必要がある。
一度起動すれば、grub.confにnoapicを付け加えておくだけでOK。
これくらい最初に確認すべきでした。
そもそも、Alan
Coxのメッセージだが、SiSのAPICは
SiS APIC should work in 2.4.21-pre5-ac2 and later or in 2.5.x although thats by no means certain for all cases yet 8)
ということらしい。Turboは2.6になっているんだけどな。
Windowsは全然問題ないんだけどな。
Perlで配列をランダムな順番に並び替えるスクリプトを書いてベンチマーク取ってみた。
環境はActivePerl 5.8
スクリプトは
#!/usr/bin/perl use strict; use Benchmark; my @array=qw(a b c d e f g h i j k l m n); Benchmark::timethese(50000, { use_sort=>\&use_sort, use_foreach=>\&use_foreach, }); sub use_sort{ my @new= map {$array[$_->[0]]} sort {$a->[1] <=> $b->[1]} map {[$_,rand(1)]} 0..$#array; } sub use_foreach{ my @new = (); foreach (0..$#array) { my $rand = int(rand(@new + 1)); push(@new, $new[$rand]); $new[$rand] = $array[$_]; } return @new; }
結果は、こうなる
C:\dir>perl random.pl Benchmark: timing 50000 iterations of use_foreach, use_sort... use_foreach: 2 wallclock secs ( 2.05 usr + 0.00 sys = 2.05 CPU) @ 24425.99/s(n=50000) use_sort: 5 wallclock secs ( 4.86 usr + 0.00 sys = 4.86 CPU) @ 10290.18/s (n=50000)
Perlメモにもあるforeachとpushを使った方法が速い。それも2倍以上。意外に差がついた。
ただし、個人的に、
my @random = map {$array[$_->[0]]} sort {$a->[1] <=> $b->[1]} map {[$_,rand(1)]} 0..$#array;
この書き方にかっこよさを感じてしまう。
最近はCPUも速いし、許してください。
ちょっとした思いつきなのだが、RSSの自動翻訳なんてあったら便利かなぁ。
もしくは、RSS Readerに翻訳機能を搭載するというのもアリ。
PCにインストール型のRSS
Readerを使っているならよくある翻訳ソフトを入れればそれで十分だろうけど、どこでも使えるサーバ型のReaderにこそ搭載していたら便利だと思ったり。
翻訳の制度は別として、ネックは翻訳ソフトの調達かな。
東芝の「The
翻訳サーバV2」。サーバ製品はあるのね。
Googleの翻訳。存在をしらなかった。
微妙に古いニュースだが
Google、ブログサービス「Blogger」が日本語など多言語表示に対応
今回の多言語対応により、Bloggerのトップページやアカウント登録ページ、サービスガイドページ、プロフィール編集画面などが各言語に翻訳される。対応言語は、英語に加えて、日本語、フランス語、イタリア語、スペイン語、ドイツ語、韓国語、繁体中国語、簡体中国語、ブラジル系ポルトガル語の合計10言語。
登録ページとトップページなどが日本語になっているのを確認しました。登録もしました。kazeburoで探せばたぶん見つかる。まだ、なにも書いてないけど。
こういう他言語対応はGoogleの技術(ノウハウ)なのかしら。
個人的にはBloglinesの日本語化をお願いしたい。
サービスはとてもいいので上司に紹介したいと思うのだが、英語を受け付けない人なので話がすすまない。
英語なら最低読む努力をしてみるべきだとも思う。
mixiのゆうきまさみコミュで紹介されてた
究極超人あ〜る占い
やってみた。
かぜぶろさんは 成原博士 !
なんか微妙。鰯水とか言われるよりましか?
この占いは、インスタント占いツクールなるものを利用している。
人気のキャラ系占いが、あっという間に作れる便利サイトです。
占いのタイトル(例:アジアン料理占い)と、各キャラ名(例:ナシゴレン、生春巻き、ビビンバ、トムヤムクン…など)を決めるだけ(サンプル)! 書くのがかなり大変な結果文は、コンピュータがあなたの代わりに考えてくれます。もちろん、自分で結果文を書くこともできるので、コンピュータの考えた結果文を少し書き換えたり(最初はこの方法がおすすめ)、最初から全部自分で書いたりして、オリジナリティあふれる占いにすることもできます。
おもしろい。
なんか思いついたらつくってみよう。
ログからたどって、登録してしまった。よかったのかしら。
RSS
Reader
非常にシンプルで最初の段階という感じですが、これからが楽しみ。
登録したからにはいろいろ試して協力しなければ。
最近はもっぱらBloglinesをつかってます。
機能もありますし、Notiferも便利。
ただ、よく言われることですが、ちょっと重いかなぁ。
ちょっと違うけど、2chリーダにp2というのがある。
会社のS氏はこれを利用していて、かなりよいらしい。
2chリーダーもサーバ型へ(元々がそれだけど)なっていったりするのかしら。
うちのとあるサーバが一時的にApacheが「だんまり」になることがあって、いろいろ試した結果、
/proc/sys/net/ipv4/tcp_syncookiesに1を立ててみたところ「だんまり」になるのは押さえられた。
(少なくても今のところ)
昨日syncookiesを立てたマシンにさっそく
possible SYN flooding on port 80
が記録されている。
しかし、この前に記録されている
TCP: Treason uncloaked! Peer 210.143.XXX.XXX:25432/80 shrinks window 3129198689:3129208179. Repaired.
などをしらべると、buggyなクライアントがいるぐらい、というところだろうなと思う。
ただ、一部buggyなクライアント(回線が重いだけ?)のためにサーバが一時だんまりになったりするということは考えられるのでsyncookiesを立てたのは正解だったのではないかと考えている。
このsyncookiesはただ闇雲に立てればいいわけではなく、クライアント(メールなど)になるマシンは要注意。
そのサーバが攻撃しているように、相手のファイヤーウォールに検知されてしまったりします。
/proc/sys/net/ipv4/tcp_max_syn_backlog /proc/sys/net/core/tcp_rmem
このあたりの数字をいじるというのもありそうだけど、
しばらくは、このままかな。ApacheのMaxClientsに達することは、「だんまり」になるとき以外ないし。
参考
@IT /procによるLinuxチューニング
[後編]
会社でS氏とともにFlashを画像にコンバートする方法を開発しました。
さっそくPOISの携帯バージョンでお部屋画像を表示に対応しました。
パケット代が少々増えますけど、バーチャルタウンの雰囲気がでると思います。
画像が悪いけど、お部屋が携帯で表示されているの図(携帯電話はV301SH)
Flashでお絵かき→画像化など、いろいろと活用方法がありそうなので楽しみな技術です。
MySQLのファイルが4GBの壁に当たってます。
とりあえず、取得プログラムを停止して、
似たページが増えてきたし、新しいことを考えることにします。
オフィシャル(?)サイト
大編成のスティールドラム・オーケストラです。plantsに入っている1曲しか知らないけど。
なかなかいい感じなのです。
汎用JPドメインが使えるようになってから、正式のURLに「www」のつかないことが増えてきたと思う。
例えば、
http://panasonic.jp/
http://canon.jp/
この2つ。www付きでアクセスしても、ない方に飛ばされます。
ま、この方が短いしかっこいいのという判断だろう。雑誌に載せる場合や携帯にも。
んで、この調子で汎用JPドメインではないところにアクセスしてみると、
http://yahoo.co.jp/は、OK
http://drecom.co.jp/は、OK
http://sony.co.jp/は、NG
さまざまです。
でも、www抜きでアクセスできるようになっていた方が便利だと思う。→sony
不思議なのは、Dell
http://www.dell.co.jp/は正しくリダイレクト。
http://dell.co.jp/は、英語ページがでてくる。
細かいところだけど、サイト作成時には気を使ってもらいたいところ。
まぁ、一般のユーザは、ぼくのようにURLをほとんど手打ちじゃなく、検索エンジンで検索してやってくるのだろうから、関係ないかな。
MYCOM PC Webの特集「今年の年賀状はフリーで行こう - Perl + TeXでこだわりの宛名印刷」
実際、筆者は数年前から年賀状にTeXとPerlを組み合わせた宛名印刷を利用しているが、一度安定運用が始まれば一年に一回宛名データを見直す程度でほとんど手間いらずだ。少々強引な理由付けではあるが、以降はTeXを利用した宛名印刷について説明したい。
理由付けは強引かなと思うけど、手間いらずの理由はなんとなくわかる。
TeXは大学のとき、すこし触った程度。
CSV→Tex→PDF
という流れはなにかに利用できるかも。
はてなからメールがきた。
この度、はてなでは、ユーザー様にはてなをご利用いただくにあたって、必要
な登録情報項目として「住所」を追加し、「氏名」「生年月日」「性別」につ
いても正しい登録をおこなっていただき、皆様に安心してはてなをご利用いた
だくための「はてな住所登録、正しい情報登録キャンペーン」を実施します。
皆様のご協力をお願いいたします。
Web上の説明ページはこちら
切込隊長BLOG(ブログ)ですでにまとめられてしまっているが、ある意味脅し。またはすばらしい手。
メールアドレスでさえ、2〜3割ぐらいは届かなくなってしまうようなこともありますから、実際どうなるか、見物。2ch風に、ログ(IPアドレスと時間)をしっかりとのこして、「該当機関」からの請求があった場合、ログを渡してしまうのが楽だと思うけど。
ちなみに会社の住所を入れておいた。300ポイントはちょっと欲しい(w。
ぱどタウンのMDのキャンペーンページがひどい。
もう、なんというか、「さすが」って感じ。
新商品「どっきん(ハート)スタイルMD」が新登場
特別提供価格 0パドル (金利・手数料一切無料)
購入者から続々とヨロコビの声が!
・ピカピカ光ってとってもカワイイですわ!
・スゲー特殊機能があるらしいぜっ!
・宇宙からのお告げがもらえた・・・
・買ったらなんだかやせたかも?
宇宙からのお告げとか、やせたとか、さすがです。
Panasonic SJ-MJ59-S ポータブルMDプレーヤー シルバー
ちなみに、本物のプレイヤーのスピーカー部は点灯はするが、点滅はしない。