2005年04月04日
明日あたり、辞表を出しちゃいそうな勢いのワタクシ。
ふぅ。
投稿者 Utayume : 21:22 | トラックバック (0) | 05 Work(Perl, PHP, etc)
ヘッドライン :ITビジネス&ニュース:JTB、個人情報の取得不要な情報ネット配信システム開発
JTBはメールアドレスなど顧客の個人情報を取得しなくても各種のコンテンツ(情報の内容)をインターネット配信できるシステムを開発した。すでに自社のサイトで、国内・海外旅行の最新情報などを配信するサービスに適用を始めており、外販も目指す。
上記のニュースではなんだかすごいシステムを開発したように思えますが、実際に試してみた(このあたりから)ところ、単に専用のアグリゲーター「お届けくん」でRSSを読んでいるだけですね。しかも起動するウェブブラウザはデフォルトブラウザではなくIE固定。
フジテレビの「ラフ・ティッカー」(←これってもう始まってるの?提供ページを見つけられませんでした)と同じようなものと思われます。
あのさぁ、専用アプリでしか見られないとしたら、RSSの意味がないと思うんですけど。誰が常駐する同じような機能の専用アプリを二つ以上インストールするかっていうの。自社さえよければいいという全くユーザーの側に立っていないソリューションだと思います。
ヘルプページや設定にはRSSと書かれていますが、RSSという用語は表ではほとんど使っていないのですね。さも独自技術で全て開発したように見せかけるのも卑怯かな。
今後1、2年経てばRSSは誰もが使う技術になります。それこそRSSリーダーがSafariに搭載されるのは決定していますし、IE7.0にも搭載されることも噂されています。
そうなったときに、標準仕様でないと、誰にも使われなくなります。今はいいけど、長い目で見ると、独自アプリ(しかもWinのみですし)で提供することは、開発にかかるコストや時間がかかるデメリットばかりで、メリットはほとんどないと思います。
同じJTBでも、るるぶ.comのRSS配信の方が遙かに使い勝手がいいです。
ただ、「お届けくん」ではJTBの各支店レベルの情報までRSS提供するようなので、その点では評価できますし、期待したいところです。まぁ、結局最も重要なのは情報の伝達方法ではなく情報の中身なのは言うまでもありません。
って他人事のように書いてみたり。^^;
投稿者 Utayume : 13:28 | トラックバック (0) | 05 Work(Perl, PHP, etc)
2005年03月20日
asahi.com: 旅行会社の顧客情報9万人分流出か 不正アクセスで�-�社会
旅行会社のクラブツーリズム(東京都新宿区)は19日、コンピューターへの不正アクセスにより、同社のインターネット会員のうち最大約9万300人分の顧客情報が流出した可能性がある、と発表した。同社は警視庁に被害届を出し、原因の調査を進めている。
旅行会社とか言うからめちゃめちゃびびりました。全く人ごとじゃないです。
ただ、クラブツーリズムのサーバーを見てみると、IIS/5.0。やはり狙われたのはMSサーバー。とりあえず、IISは使っていないのでその点ではまだ救われます。
もう最近、個人情報保護法の施行を前にして、胃が痛い毎日。
っていうか、もうムリっ!
投稿者 Utayume : 00:52 | トラックバック (0) | 05 Work(Perl, PHP, etc)
2005年03月09日
仕事で作っているサイトでRSS配信を始めた、と数日前のエントリーに書きましたが、それとは反対に、今度はRSSからHTML表示するプログラムを作成してみました。
流れとしては以下のような感じ。
1.更新情報は全てMySQLに入れてしまって、情報追加毎にRSSを作成。
2.上記で作成したRSSを読み込み更新情報ページを表示
普通なら、自分のサイトなのにわざわざRSSを読み込まずにMySQLから直接更新情報を取得すればいいのですが、あえて、RSSから読み込むことにしました。それはRSSを表示する環境を作っておくと後々便利だなと思ったからもありますが、それ以上に、BlogPeopleのようなものを自分でやってみたいという好奇心の方が強いかも。
RSSからHTML化するには全て自分でプログラムを書くこともそれほど難しくはありませんが、通常はXMLパーサやRSSパーサといった汎用的なプログラムを使います。
で、今回使ったのがPHPのRSSパーサとしてはおそらく一番有名なMagpie RSS。
簡単です。はっきり言って、これ使えばPHPの知識など無くても他サイトのRSSを取得して表示することが可能です。
ブログでサイドバーに任意のRSSを表示させるのも、BlogPeople等を使わずに手軽に表示させることができます。
MagpieRSS - PHP で使える RSS パーサー。
という日本語のわかりやすいページがあってワタクシごときがあんまり説明することもないので、実際にMYCOM PC WEBのRSSを取得して表示するサンプルスクリプトなどを書いてみます。
/*サンプルここから*/
<?php
require_once 'rss_fetch.incへのパス';
$url = 'http://pcweb.mycom.co.jp/haishin/rss/index.rdf';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = mb_convert_encoding($title, "euc", "auto");
$link = $rss->channel['link'];
print "<h2><a href=\"${link}\">$title</a></h2>\n";
print "<dl>\n";
foreach ($rss->items as $item ) {
$title = $item['title'];
$title = mb_convert_encoding($title, "euc", "auto");
$url = $item['link'];
$itemday = date('Y/n/j',strtotime(substr($item['dc']['date'],0,10)));
$youbi = array(0 => '(日)', 1 => '(月)', 2 => '(火)', 3 => '(水)', 4 => '(木)', 5 => '(金)', 6 => '(土)');
$mday = date('w',strtotime(substr($item['dc']['date'],0,10)));
$itemtime = date('G:i',strtotime(substr($item['dc']['date'],11,8)));
print "<div class=\"part\"><dt>${itemday} $youbi[$mday] ${itemtime}</dt><dd><a href=\"$url\">$title</a></dd></div>\n";
}
print "</dl>\n"
?>
/*サンプルここまで*/
これだけ。チョー簡単ですね。
前述MagpieRSS - PHP で使える RSS パーサーで書かれていたサンプルスクリプトに多少追記しています。
W3CDTFを変換するのをどうしようかちょっと悩みましたが、とりあえず、日付と時間を文字位置で取得するようにしました。
これを実際に組み込んだものがこれです。
注意点としてはMagpieRSS - PHP で使える RSS パーサーのコメントにも書かれていますが、現在最新版である0.71では日本語が文字化けします。回避策として古い0.61のrss_parse.incを上書きインストールします。
投稿者 Utayume : 13:22 | コメント (10) | トラックバック (5) | 04 Blog /05 Work(Perl, PHP, etc)
2005年03月05日
某仕事で作っているサイトでRSS配信を実装してみました。
本当はATOMでいきたいけど、仕様を詳しく調べるのもめんどくさかったので、日本でポピュラーと思われるRSS1.0で作ることにしました。
以下がその関数。
/*ここからサンプル関数*/
function createRSS($items,$savefile,$rssinfo){
//現在時刻
$nowtime = date("Y-m-d\TH:i:s+09:00");
$data .= <<<EOM
<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<channel rdf:about="${rssinfo['rssurl']}">
<title>${rssinfo['rsstitle']}</title>
<link>${rssinfo['rsslink']}</link>
<description>${rssinfo['rssdesc']}</description>
<dc:language>ja</dc:language>
<dc:creator>${rssinfo['rsscreate']}</dc:creator>
<dc:date>${nowtime}</dc:date>
<items>
<rdf:Seq>
EOM;
foreach($items as $item){
$data .= " <rdf:li rdf:resource=\"${item['link']}\" />\n";
}
$data .= <<<EOM
</rdf:Seq>
</items>
</channel>
EOM;
foreach($items as $item){
$data .= " <item rdf:about=\"${item['link']}\">\n";
$data .= " <title>${item['title']}</title>\n";
$data .= " <link>${item['link']}</link>\n";
$data .= " <description>${item['description']}</description>\n";
$data .= " <dc:date>${item['date']}</dc:date>\n";
$data .= " </item>\n";
}
$data .= "</rdf:RDF>\n";
$data_cv = mb_convert_encoding($data,'UTF-8','EUC-JP');
$fp = fopen($savefile,'w');
fwrite($fp,$data_cv);
}
/*サンプル関数ここまで*/
$itemsは各アイテムの多次元配列で、あらかじめDB等から代入しておきます。$savefileは保存先(UNIX上のパス)、$rssinfoはRSSファイルそのものの情報です。
$items[n] =array(
title => 'アイテムタイトル',
link => 'アイテムのリンク',
description => 'アイテムの概要',
date => 'アイテムの作成日YYYY-MM-DDTHH:MM:SS+09:00')
$rssinfo = array(
rssurl => 'RSSファイルのURL',
rsstitle => 'RSSのタイトル',
rsslink => 'RSSのリンク',
rssdesc => 'RSSの説明',
rsscreate => 'RSS作成者')
W3C RDF Validation Service
Feed Validator for Atom and RSS
RSS Validator
RSSの妥当性をチェックしてみるとFeed Validator for Atom and RSSだけは「Congratulations!」でしたが、他のふたつはエラーにorz。概要にhtmlの文字参照(&とかいうやつね)を使っているからなのですが、めんどくさいので追々考えよう。
参考図書↓。とは言っても、参考になったのは1章のみ。
入門RSS―Webにおける効率のよい情報収集/発信 新納 浩幸 by G-Tools |
投稿者 Utayume : 10:26 | トラックバック (0) | 04 Blog /05 Work(Perl, PHP, etc)
2005年03月02日
仕事で作っているサイトでJavaScriptのwindow.openがWindows版IEでは開けないという現象に合いました。
JavaScriptの記述は<a href="javascript:openWin('URL')">というような通常ではブロックされない記述方法なので、単純なポップアップウィンドウブロックのためではありません。またFirefoxやMozillaでは正常に表示されます。
IE6.0で開けない場合はウィンドウは開くものの、その中にファイルが読み込まれません。
同じような記述は他の場所でも使っており、開ける場所と開けない場所との違い(window.openで開く先は同じ)は、開けない場所では親ウィンドウがSSLサーバーであることです。
最初、子ウィンドウが他ドメインだとダメなのかな?と思って、以下のように試してみたら、ここではちゃんと開けるようです。
子ウィンドウで開く(同ドメイン)
子ウィンドウで開く(他ドメイン)
結果、この現象は、
IE6.0ではSSLサーバーからJavaScriptのwindow.openで他ドメインを読み込むことができない。
ということのようです。SSLサーバーはワタクシは1箇所しか使える場所がないので、他のSSLサーバーではどうなのかは試していません。ひょっとするとサーバー固有の問題もあるのかもしれません。
回避策として、phpでmetaタグにrefreshを入れてリダイレクトすることにしました。
//---サンプルここから
<?php
if($_GET['URL']){
$MSG = "自動的に転送されない場合は<a href=\"${URL}\">こちら</a>をクリックしてください。";
$RED = "<meta http-equiv=\"refresh\" content=\"0;url=${URL}\">\n";
}else{
$MSG = "URLが存在しません。";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<title>URL転送</title>
<?=$RED?>
</head>
<body>
<?=$MSG?>
</body>
</html>
//---サンプルここまで
上記スクリプト(redirect.php)はそのまま「redirect.php?URL=http://hogehoge」というように使えますが、スクリプトのようにURLをフルパスで渡してしまうと悪意の第三者に不正中継されてしまうおそれがあり、非常に危険です。
実際の運用ではドメインを限定したりする必要があります。ワタクシが使っている場所では飛び先もphpなので飛び先の引数のみを渡しています。
投稿者 Utayume : 20:58 | トラックバック (0) | 05 Work(Perl, PHP, etc)
2005年02月20日
入門RSS―Webにおける効率のよい情報収集/発信 新納 浩幸 Amazonで詳しく見る by G-Tools |
現在、ワタクシが仕事で制作しているサイトでRSSを利用したいと思っています。が、単に更新情報を配信するだけなら大して便利でもなく、面白くないので、何か面白い利用方法がないか調べてみようとこの著書を購入しました。
この本はRSSについて日本語で書かれた唯一の著書だと思われます。
目次からわかるように、「RSSとは何か」という概論から、実際の利用方法、さらにはgoogleやamazonのAPIまでかなり幅広く書かれています。
幅広く書かれているだけに、各種Web技術に携わっている人にとってはムラが多く、今の時期に「RSSって何?」と思って手に取る人にはかなり難しい内容ではないかと思います。どのあたりのレベルの人をターゲットにしているのか、イマイチ不明瞭です。
ワタクシとしては、前述のようにRSSの可能性を探っていますし、RSSという言葉を知って興味を持った人なら既にRSSを利用していると思われるので、「3章 RSSフィードの受信」なんてところは全く必要ないと思います。
参考になったのは「4.1 XSLTの利用」ってところかな。
まぁ、そこそこ参考にはなりました。ちょっとだけ先が見えてきました。
っていうか、RSSを活用するならXMLとXSLTをちゃんと勉強しないといけないなぁ、と思った次第。(^^;
以下の本も併せてどうぞ。
やさしいXML 高橋 麻奈 by G-Tools |
投稿者 Utayume : 23:23 | トラックバック (0) | 04 Blog /05 Work(Perl, PHP, etc)
2005年01月20日
phpのプログラムよりも、CSSのデザインの方がよっぽど時間がかかる罠。
ムキーっ!
投稿者 Utayume : 20:10 | トラックバック (0) | 05 Work(Perl, PHP, etc)
2005年01月14日
昨日に続き、Perlによるテキスト処理スクリプトの紹介。
【指定のファイル名でまとめてファイルを作成する】(←ctrl+クリック or 右クリックで保存)
使い方はこれも昨日と同じように
- スクリプトを「MakeFile_pl.txt」から「MakeFile.pl」へリネーム
- データファイルをスクリプトと同じ場所に作成(データファイルサンプル←ctrl+クリック or 右クリックで保存)
- 実行
※昨日のエントリーに書きましたが、WinならActivePerlをインストールしてスクリプトをダブルクリック、Mac OS Xではスクリプトをmiで開いて実行。 - スクリプトと同じ場所にファイルが生成される
昨日のスクリプトの応用なのですが、データファイルでファイル名とファイル内容を指定しておき、そのファイルを一気に生成します。サンプルファイルでは、ファイル名を「都市コード+html」、内容をHTMLで都市名として指定しています。マシンにも寄りますが、1000ファイルでも1秒程度で終了するはずです。
このテの地味なユーティリティってわざわざC+等で作ってアプリケーションとして公開する人はまずいないので、探すよりもPerlで書いちゃった方が早いです。っていうか、Perlがわかる人なら数分で書けます。
Web制作現場じゃなくとも、DTP現場でも非常に有用だと思います。
便利でしょ?>Perl
この処理の延長線上にあるのが、このMovable Typeでも使っているCGIというものなのです。
投稿者 Utayume : 17:19 | トラックバック (0) | 05 Work(Perl, PHP, etc)
2004年12月31日
実は今日これから仕事です。
まぁ、数十分で終わる仕事ですけどね。
これで本当にわたしの仕事納め。
で、もうひとつ。
元旦に某友の会のサイトをblog化する予定でしたが、0時には間に合いそうにないです。この正月休み中には必ず実行します。有言実行。
そんなこんなで、当然のことながら、年賀状など作っておりません。^^;
ついでに愚痴こぼせば、31日に仕事しても、当然無給です。ワタクシ、ボーナスも貰ってません。会社にはかなり貢献してると思うんだけどなぁ。。。
投稿者 Utayume : 17:24 | トラックバック (0) | 05 Work(Perl, PHP, etc)