人生変わった。腰痛が治り、よく眠れるようになり、接する人が私を見る顔が明るくなった。偶然かも、気のせいかもしれないが。
だが、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が返ってこなくなる。バグってるときもしょっちゅうあるが、ちゃんと書いていても返らないことがときどきある。
とりあえずこのソースで一度は動いた。もう気が狂いそうなので今日はここまで。朝飯にする。