人生変わった。腰痛が治り、よく眠れるようになり、接する人が私を見る顔が明るくなった。偶然かも、気のせいかもしれないが。
だが、iPhoneは素晴らしいデバイスだ。iPhoneはiPod touchでもある。iPod touchは持っている人がいてちょっと見たことがあって、いいなと思っていたのだが、iPhoneはそれに電話と、webなどが付いているのである。
webは、基本的にPCサイトブラウザである。ズームインアウトが可能なので、小さい画面でも不具合は少ない。ブログやらニュースやらはRSSフィードをアプリで読む。メールは専用のアプリがある。アプリはapp storeからダウンロードするが、こだわらなければたいていのものは無料のものがある。
すっかりappleに魅せられて、アプリを作りたくなって、Windows7をやめてMACを買おうと思い始めた。MACは「PC」ではない。パソコンではない。MACはMACなのである。そんなところへiPadの発表。5万円だという。だが、私はそのうちこのappleが先駆けたテクノロジーはあっという間にマネされて、MACがパソコンやOSのシェアを奪うことは無いと見ている。テクノロジーは容易にマネできる。appleは、結局、閉鎖的で、クローズドで、お高くとまっている。
このブログを検索
2010/01/30
2010/01/24
RSS@perl
今perlでrssフィードを配信するスクリプトを書いている。といってもWEBでさがしたサンプルをそのまま使っているだけだが。それが、うまく動かない。スクリプト内に日本語を書くと実行できなくなる。文字化けするのではなく、実行ができないのだ。
多分文字コードの問題だと思う。ただのhtmlなら、そのまま直接日本語を書けば表示されるが、rssフィードはxmlであり、このとき日本語はutf-8でないとダメなようなのである。・・・と、ここまで書いて、わかった。スクリプトはeuc-jpで保存する。
さて、それでとりあえずリテラル文字列なら日本語が書けたのだが、ファイルを読み込んでその中の日本語を出力できない。Jcodeで変換させるだけでエラーになる。文字コードの指定が間違っているのか。sjis -> utf-8 だと思うのだが。念のためにeuc-jp -> utf-8なども試してみたがダメだ。
が一致していないときに、リテラルで日本語を書くとエラーになる。
とりあえずエラーは出なくなった。
化けてはいるが。
ファイルを保存するときの文字コードと、use encodingが一致しないとエラーになる。ただしそれは日本語リテラルを書いた場合。(ファイルから読んだ場合も同じか?)
読み込んでいるタイトル一覧ファイルのエンコードはsjisなのは間違いない。だからそれをutf8に変換しているのだが・・・化ける・・・。コードの指定をあれこれ変えたりしてもダメ・・・。
そんなことをしていると、ときどきcgiが返ってこなくなる。バグってるときもしょっちゅうあるが、ちゃんと書いていても返らないことがときどきある。
とりあえずこのソースで一度は動いた。もう気が狂いそうなので今日はここまで。朝飯にする。
多分文字コードの問題だと思う。ただのhtmlなら、そのまま直接日本語を書けば表示されるが、rssフィードはxmlであり、このとき日本語はutf-8でないとダメなようなのである。・・・と、ここまで書いて、わかった。スクリプトはeuc-jpで保存する。
さて、それでとりあえずリテラル文字列なら日本語が書けたのだが、ファイルを読み込んでその中の日本語を出力できない。Jcodeで変換させるだけでエラーになる。文字コードの指定が間違っているのか。sjis -> utf-8 だと思うのだが。念のためにeuc-jp -> utf-8なども試してみたがダメだ。
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
use XML::RSS;
my $rss = new XML::RSS (version => '1.0');
$rss->channel(
title => "example.com",
link => 'http://example.com',
language => 'ja',
description => "abc",
);
open SUBBACK, "<./subback.txt" or die;
while (<SUBBACK>){
if(/(\d*),(.*),(\d*)/){
$rss->add_item(
title => "$1",
link => "http://example.com/cgi-bin/main.cgi",
description => "$3",
);
}
}
close SUBBACK;
print "Content-type: application/xml\n\n";
print $rss->as_string;
- perl(cgi)スクリプトの文字コード
- use encodingの文字コード
が一致していないときに、リテラルで日本語を書くとエラーになる。
とりあえずエラーは出なくなった。
化けてはいるが。
#!/usr/bin/perl -w
use strict;
use XML::RSS;
use encoding 'utf8';
use Jcode;
my $rss = new XML::RSS (version => '1.0');
$rss->channel(
title => "example.com",
link => 'http://example.com',
language => 'ja',
description => "abc",
);
open SUBBACK, "<./subback.txt" or die;
while (<SUBBACK>){
if(/(\d*),(.*),(\d*)/){
my $jp = $2;
Jcode::convert( \$jp , 'utf8', 'sjis');
$rss->add_item(
title => "$jp",
link => "http://example.com/cgi-bin/bbz/main.cgi",
# description => "南無阿弥陀仏",
description => "test",
);
}
}
close SUBBACK;
print "Content-type: application/xml\n\n";
print Jcode->;new($rss->as_string)->;utf8;
ファイルを保存するときの文字コードと、use encodingが一致しないとエラーになる。ただしそれは日本語リテラルを書いた場合。(ファイルから読んだ場合も同じか?)
読み込んでいるタイトル一覧ファイルのエンコードはsjisなのは間違いない。だからそれをutf8に変換しているのだが・・・化ける・・・。コードの指定をあれこれ変えたりしてもダメ・・・。
そんなことをしていると、ときどきcgiが返ってこなくなる。バグってるときもしょっちゅうあるが、ちゃんと書いていても返らないことがときどきある。
とりあえずこのソースで一度は動いた。もう気が狂いそうなので今日はここまで。朝飯にする。