jsRSS++ v3.1
jsRSS++ v3.1 を公開しました
3.04からの変更点
・不要なトラフィックを減らすための修正
・指定したURLがエラーを返した際の対応(401,403,404,500の代表的なもののみ)
・全体のコードの見直し
・UserAgentを吐き出すようにした
・Query文字列以前が全く同じURLだった際に保存データが読み取れなかった点を修正
jsRSS++ v3.15
ブログ等のCMSの普及にともない増加したRSSによるトラフィックが問題となりつつあります
jsRSS++では更新時間の設定で「前回の読み込みから n分以内ならキャッシュを読む」と出来ますが
さらに、更新時間以降でも HTTP のヘッダ情報をしらべて
更新されていない場合は読み込みに行かないという仕様にしました
サーバが If-Modified-Scince に対して 304 を返すようであれば有効です
サーバの返す時間はUTC(GMT?)なのでそれとの調整用にタイムゾーンの設定が1つ増えました
スクリプト内19行目
my $TimeZone = +9;
設置するサーバのタイムゾーンです
GMTに対しての数字なので、日本にあるサーバなら +9のままで大丈夫です
今までは黙ってRSSを拾ってきてたワケですが<^^;>
今後は UserAgent を置いてくるようにしました
jsRSS++/3.1 (http://www.daikoku-ya.org/)
こんな感じです
その他、一部のRSSアグリケートサービス等で 「 ? 」の前が同じURLだったさいに
キャッシュされたデータがうまく読めない状態になっていましたので修正しました
# 2.0β は問題なかったのに・・・
トラックバック(7)
このブログ記事を参照しているブログ一覧: jsRSS++ v3.1
このブログ記事に対するトラックバックURL: http://www.daikoku-ya.org/mt/mt-tb.cgi/23
» 自分のHPにRSSリーダー(みなこのひびつれづれ)~のトラックバック
(o゚◇゚)ノあぃ 久々MTネタ。 みなチャのRSSを読み込んでこのブログに表示してますが、みなひびのRSSをみなチャで表示させたいなぁ。と思って探したのがこ... 続きを読む
» RSSをJavaScript化する「jsRSS」(wolog)~のトラックバック
大黒屋本舗 :: jsRSS v3.1 表題の通りの便利なスクリプトが公開されていましたので、利用してみました。 右側の del.icio.us のところを、m... 続きを読む
» RSSリーダーでブログを表示(徒然なるアフィリエイト)~のトラックバック
こないだからずっと「自分のサイトにブログの記事を表示させたい」と思って、RSSリーダーを探してたの。 やっと私向けのRSSリーダーを見つけたよ〜ヽ(^◇^*)/... 続きを読む
» del.icio.usにしてみた(the meager)~のトラックバック
del.icio.us/nano(del.icio.us) トップページの一番上に、気になった記事をリスト表示しているHeadlinesの欄。今まで利用していた... 続きを読む


はじめまして。自分のブログのRSSを、サイトのTOPページに表示させようと、こちらのcgiをダウンロードさせて頂きました。
説明を見ながら設置をしてみたのですが、全く何も表示されないのです・・・。
bodyにスクリプトだけ記載したページも真っ白です。
http://project-chimpanzee.net/index2.html
このような場合、考えられる原因には何がありますでしょうか?もしお時間がありましたら、可能性だけでも教えて頂ければ幸いです。
御利用ありがとうございます
設置されているサーバはXREAでしょうか?
だとしたらコチラに書かれている事が原因かと思われます
まあ、他のサ−バだとしても原因は同じかと・・・
どのように対応するか思案中ですので少々お待ち下さい
ご返信ありがとうございます。
XREAの有料ユーザーでドンピシャです・・・。
とりあえず他のサイトのスクリプトで表示はできたのですが、やはりこちらの方が機能も大幅に優れているようで、期待しております。もし余裕があるようでしたらご検討頂けると幸いです。
こちらのCGIをダウンロードさせて頂き設置を試みましたがうまくいきませんでした(何も表示されません)。
infoseekの無料スペースを利用しておりますが、「広告が自動挿入されるようなページではうまく動作しない」などといった現象はございますでしょうか?
>こ〜たさん
XREAの有料ユーザという方も結構いらっしゃると思いますので
この手のエラーが出るサイト向けに別バージョンを用意しようと思います
少々時間がかかるかも知れませんがお待ち下さい
>ぶるぼんさん
御利用ありがとうございます
CGIにも強制的に広告が挿入されるサイトでは
吐き出されるJavaScriptがラーになってしまい表示出来ないようです
ある程度広告の表示等をいじれるのなら対応できそうなのですが・・・
なるほど。
広告の表示されないスペースでの利用を検討する事にします。
回答ありがとうございました。
何度もすいません…。
広告無しのサイトにて設置を試みましたがエラーとなります。
エラーメッセージはCGIの72行目です。
71行目の elsif(!(-e "$dir_temp/$temp")) に引っかかっているようです。
※元のエラーメッセージはCGIをダウンロードした際に文字化けしておりわかりません
IF文の内容から「テンプレートが見つからない」というエラーだと思うのですが、原因がわかりません。
※tempフォルダのパーミッションは「444」に設定しております。
お手数ですが原因等わかりましたらご教授頂けませんでしょうか?
さらにご回答ありがとうございます。
お待ちしております( ´∀`)
どーしてもこちらのcgiを使いたくて試してみましたがうまくいきません。
全てのみなさんのご意見を見させていただきましたが同じような問題があるようで・・・。
状況としてはまずそのままアップするとサーバーエラーが出るのでjcode.pmをlibフォルダにアップロード。use libの#をはずし、use jcodeに#をつけます。これでまずエラー回避。
しかしjsRSS.cgiにアクセスするとBad Call!!
my $acchkの1を空欄にします。
すると今度は「RSSのurlを指定してください」とでます。
当然ソースをコピペしたhtmlには何も表示されず・・・。
XREAでもなく、記述間違いでもなく、パーミッションも言われるがまま、正直お手上げです。
複数のサーバーで試してもみましたがだめでした。
そういえばいろいろ試してたら「テンプレートが見つからない」というエラーもでました。
でもどうしても使いたい〜。
なんとかなりませんでしょうか。
あ、「RSSのurlを指定してください」と出たらどこをどうすればよいのでしょうか?
はじめまして。
実は私もこ〜たさんと同じ症状で悩んでいます。
私が使っているのはSAKURA Internetです。
同じ原因かどうかを調べる方法はあるでしょうか?
mamaさんへ
RSSのurlはcgiの引数で指定します。
〜〜/jsRSS.cgi?url=http://〜/hogehoge.rdf
指定するのは表示させたいRSSへのパスです。よね?w
解決してたらごめんなさい。
大黒屋さんへ
jsRSS++もバージョン3.1に突入した事ですし、設定方法をまとめて頂けると
私のような初心者にはとても助かります。
実はenc引数が何のエンコーディングを指しているのか
よくわかっていません。^^; (多分hogehoge.rdfのエンコーディングかな?
といった状況ですので、問題の切り分けが出来なくて困ってます。
どうかよろしくお願いします。
ペプツさんへ
えーとですね、それは説明に書いてあったのでやってます。が、表示されず、cgiにアクセスすると「RSSのurlを指定してください」というエラーが出るんですよ〜。
ドタバタして遅くなりました
申し訳御座いません _o/|_
>ぶるぼんさん
テンプレートディレクトリと、中身のテンプレートファイルをご確認ください
スクリプト呼び出しの際にテンプレートを指定していない場合は
my $def_temp = 'RSS1.0.tmp';
で指定された RSS1.0.tmp がディレクトリ内にあるかご確認ください
パーミションは読み込みさえ出来れば大丈夫です
>mamaさん
ペプツさんが書かれているように url=http://〜/hogehoge.rdf を記載してください
CGIの直接呼び出しの際もオプションの引数 (url=、enc= 等)を指定してください
>ペプツさん
そうですね、一応メジャーアップデートの際は書いていたのですが
ここ最近細かいアップデートばかりなので随分と後ろの方にいってしまいました
サイトの構成を含めてその辺りを見直したいと思います
enc= で指定する文字エンコードは、jsRSS++ を設置するページのエンコードになります
>こ〜たさん
jsRSS++3.1に於て
108〜113
my $tmp = &sock('HEAD',$mod{check_gmt});
my $head = ${$tmp};
my $status = (split(/\r\n/,$head))[0];
if($status !~ /304/)
{
120〜125
}
else
{
my $tmp = &read_cache;
@data = @{$tmp};
}
346
$request .= "If-Modified-Since: $last_mod\r\n" if($method eq 'HEAD');
上記の箇所をコメントアウト、または削除すれば
たぶん大丈夫だと思うのですが如何でしょうか?
申し訳無いのですがさすがに有料だとデスト用に借りる訳にも・・・
以上の修正で大丈夫な様でしたら
今後は設定で変えられる様に致します
大黒屋さん、
私の方でコメントアウトして実行してみましたが、相変わらずでした。
もしかしたら違う症状なのかも知れません。
私の場合、html内に記述した時はcgiの部分だけ何も表示されません。
cgiを直接呼び出したときはInternalServerErrorになります。
この場合、設定やパーミッションが原因なんでしょうか?
色々試したつもりなのですが・・・。
よくある、引数に?checkを与えるとパーミッションとか設定を
チェックしてくれる機能があると嬉しいです。
もちろん、かなり手間だとは思いますが。
InternalServerErrorで考えられるのは
パーミッション、改行コード、転送モード
等のミスによる実行不可能な場合や
use、requireで指定したファイルが読み込めない場合だと思われます
(他にもありますがそれはひとまずおいときます)
スクリプトの3行目あたりに
use CGI::Carp qw(fatalsToBrowser);
を記述して実行してみて下さい
スクリプト内のエラーの場合はこれで表示出来る可能性がありますので
表示されたエラーメッセージをお教えください
試してみました。で以下のメッセージが表示されました。
Software error:
Bizarre copy of HASH in aassign at jsRSS.cgi line 66.
66行目というと、
my @data = my %site = ();
でした。
で、テストに際してよくわからない挙動がありました。
私の場合、htmlファイル内で、
http://hogehoge.co.jp/jsrss/jsRSS.cgi?url=http://hogeblog.co.jp/index.rdf::line=5::enc=sjis::temp=RSS1.0.tmp
をスクリプトタグで指定しているのですが、
CGIを直接呼ぶとブラウザは無反応。
ところが、最後に「::」をつけたりtemp引数を最後以外にもってくるとブラウザにメッセージが表示。
といった感じでした。
関係あるかわかりませんが一応報告までに。
以上、お願いします。
>大黒屋様
ご対応ありがとうございます。
ちょっと今すぐ時間が取れないのですが、試してみて結果をご報告させて頂きます。
>ペプツさん
66行目を
my @data =();
my %site = ();
と2行に分けたらどうでしょうか?
引数なしでスクリプトを呼び出した場合
普通に動作していれば「URLを指定して下さい」というメッセージが出ます
引数の順番に関してはちゃんと :: で連結されていれば
どのような順でも問題ないハズです
>こ〜たさん
お手数ですがよろしくお願い致します
大黒屋さん、
2行に分けてみると
document.write( '
指定されたurlのファイルは存在しません
', '' );
となりました。
ちなみに、$acchkが'1'だとbad call!!でした。
urlをブラウザに直打ちするとちゃんとxml形式のテキスト(rdf)が表示されます。
自分も試してみました。
ペプツさんと全く同じ状態です。
http://project-chimpanzee.net/index2.html
で「テンプレートファイルがありません」と表示されます。
http://project-chimpanzee.net/rss/jsRSS.cgi
では
document.write( '
Bad Call!!
', '' );
となります。
cgiを圧縮したものを下記に置きましたので、よろしければご参考になさってください。
http://project-chimpanzee.net/rss/jsRSS.zip
注文ばかりで大変恐縮ですが、よろしくお願いいたします。
まず、CGIを直接呼び出す場合は
my $acchk = '';
を空欄にしてください
引数に関しては ?url=http://〜〜 は必須となります
お二方ともエラーのメッセージが出ているという事は
スクリプト自体は動作しているので設定等を改めてご確認ください
tempフォルダのパーミッションを444から755に変更したら表示できました!
CGIを直接呼んだときは
document.write( '
RSSのurlを指定してください
', '' );
ですが、HTMLへのインクルードで使用しますので自分は問題なしです。
これでちょっと見た目を変更してみたいと思います。
一つ、「〜」が??に化けてしまうのですが、これはしょうがないのでしょうか?
コメントを元に戻したり色々といじって、
CGIの直接呼出しでRSSの表示は出来る様になったのですが、
各項目が全てシングルコーテーションで囲まれ、カンマで区切られているのですが、
これを外す方法はないでしょうか?
使用しているブログはseesaaブログです。
ちなみに、相変わらずhtml内だと反応無しですが・・・。
>こ〜たさん
〜 が化けるのはサイトが Shift-JIS だからかも知れません
一応対策をしてたつもりなのですが、確認してみます
>ペプツさん
jsRSSはスクリプト単体での使用は想定していません
JavaScriptのソース化するためにシングルクォートで囲んでいます
スクリプトの単体呼び出しはあくまでも動作チェックの為です
SeesaaBLOGに設置確認してみましたが特に問題無いようです
http://daikoku-ya.seesaa.net/
大黒屋さん、
わざわざテストしていただきありがとう御座います。
ただ、私の書き方が悪かったようで、
他のサイトのHPにSeeSaaのブログ(rdf)を持ってきている、という意味でした。
誤解させてすみませんでした。
単純なHTMLでもbad call!でした。
長い間ご迷惑お掛けしましたので、使用するのを諦めようかと思います。
色々とありがとう御座いました。
SeesaaBlogのRSSも普通に読み込む事が出来ます
http://www.daikoku-ya.org/perl/jsRSS/colors.html
'bad call!' はスクリプトを呼び出しているHTMLが
スクリプトと同じサーバに無い場合に表示されます
コレは 「$acchk = '1';」の値を空欄にする事で出なくなりますが
どのサーバからでもこのスクリプトを呼び出せるようになってしまいます
大黒屋さん、
せっかくレスを頂きましたので、最後に問題の切り分けを試みました。
まずレンタルサーバの提供先にApacheのエラーの確認をしましたがエラー等は出ていないとの事。
feedディレクトリにはファイルが出来ていて、cgiの直接呼出しではdocument.write(やシングルコーテーション、カンマなどが表示されるが、javascriptソース化の為なので問題ないらしい。
htmlに埋め込んだ状態では、ブラウザのステータスバーに必ず同じエラーが出る。
エラー内容は、「実行しましたが、ページでエラーが発生しました。」
詳細を見ると、
ライン:5
文字: 63
エラー:')' がありません。
コード:0
URL: http://*****.net/
自分で書いたhtmlの5行目を見たがただの<head>だし、そもそもカッコは使ってないので整合性うんぬんは関係なさそう。
試しに必要最小限のタグだけのhtmlでも同じエラーでラインも同じだった。
以上の事から、素人考えではcgi呼び出しの設定、パーミッション、埋め込み先のhtmlには問題が無さそうなのですが、大黒屋さんいかがでしょうか?
それはJavaScriptのエラーですね
スクリプトを直接呼び出した際に
document.write(
で始まって
''
);
で終わっているハズなのですが
最後の ) は表示されていますでしょうか?
何にしてもソースも実行結果も解らないので想像でしかお答えできず
原因がスクリプトにあるのかどうかすら解らない状態です
初めまして
私もさくらを使ってますが、どうもうまくいきません。
いろいろいじりましたが、
ソケットの処理に問題があるのかなと
次のバージョンに期待しております。
Software error:
Bad arg length for Socket::pack_sockaddr_in, length is 0, should be 4 at /usr/local/lib/perl5/5.8.4/mach/Socket.pm line 373.
>ISSAさん
知人に頼んでsakura(ライト)に設置してもらったのですが
Bizarre copy of HASH in aassign at jsRSS.cgi line 66.
のエラー以外は特に出ていないとの事です
ひょっとしてライトとは環境が違うのでしょうか?
大黒屋 さん>
ご返信ありがとうございます。
私はスタンダードを使用してます。
少しCGIのバージョンかえて試したり
させていただいてたのでなんともいえないのですが。。
ただBizarre copy of HASH in aassign at jsRSS.cgi line 66.このエラーは
何度試しても出ました。
2行化しても同じエラーが出た記憶があります。 また試させて報告させていただきます。
大黒屋さん、
原因がわかりました。
私がhtmlに埋め込みたいブログのタイトルは、
xxxxxx's blog
というものです。(xxxxxxは任意)
これでおそらく大黒屋さんならすぐに気付いたと思いますが、
document.write( から最後の ); までは、
シングルコーテーションでくくられ、カンマで区切られていますが、
ブログ(正確にはCGIが成形した.datファイル)にシングルコーテーションが含まれていると、
おそらく整合性エラーが発生してしまうのだと思います。
事実、ブログからシングルコーテーションを外すと展開に成功しました。
対応の程、宜しくお願いいたします。
すっかりごぶさたしてしまいました。
申し訳ありません。
あれからいろいろなご意見も寄せられ、自分でも試してみましたがやはりだめです。
真っ白です。
ちょっと整理してみます。
・ダウンロードしたものをそのままアップ。
・書き換え部分はjcode.pmのコメントアウトのみ。
use lib './lib';
#use Jcode;
としています。
・パーミッションの設定はcgiの755とfeedフォルダの777。
libとtempフォルダは755です。
その他ファイルは、pmとtmpは644。
feedフォルダの中にはなにもありません。
・cgiと同じフォルダにjavaを記述したhtmlを置いています。
・cgiを直接呼び出すとRSSのurlを指定してくださいと出ます。つまりcgiは動いています。
・javaによる書き出しはurlを指定しています。
・大黒屋さんのテンプレートサンプルからコピペしたjava書き出しも試してみました。(もちろんパスは同じになるようにしています。)
ここまでで何か問題ありますでしょうか?
feedフォルダには何か自分で保存でもしなければいけないのでしょうかね?
とにかくcgiは問題なく動いているようなので、書き出しの問題かと思うのですが、大黒屋さんのテンプレートサンプルでは表示されているjavaの記述をそのまま持ってきてもだめなのでやはりお手上げです。
〜がShift-JIS環境では化けるのは出てますが、タイトル中の半角スペースも化けますね
化けるというか改行認識されているようです
すでに気づいてるかもしれませんが一応ご報告まで
はじめまして。なかなか便利なツールと思い早速導入してみました。
私のサイトの場合、あれこれポップアップ
http://www.remus.dti.ne.jp/~a-satomi/bunsyorou/ArekorePopup.html
を使用しているので、a herfにtitle= を追加しています。
ところが、
#Title#
こうすると、ポップアップ情報は正しく出るのですが、記述の方が#Title#になってしまいます。同じ変数は2度使えないのでしょうか?
私のサイトでいうと「Friend's Blog」の上2つがMTの変数で、3番目の「ぬるゆるだる」がjsRSSで記述されています。
すいませんm(__)m タグが反応してしまって肝心なところが読めませんね。
<a href="#Link#" title="#Title#" target="_blank">#Title#</a>
<、>とも半角です
大変遅くなりまして申し訳御座いません _o/|_
なんとか一段落してコチラに取り掛かれます
いくつかの修正をした3.11をリリース致しました
>ISSAさん
Socket.pm に付いては当方の環境に於ては373行も無いモジュールで
ちょっと調べようがありませんでした
他バージョンも含めて調べてみますのでお待ち下さい
Bizarre copy of HASH 〜 のエラーに付きましては対処出来ているかと思われます
>ペプツさん
タイトル中の ' に付きましては ver3.04 以降は対応済みです
ご確認頂けますようお願い致します
>mamaさん
http://〜〜/jsRSS.cgi?url=http://www.daikoku-ya.org/index.rdf::enc=uuc
cgi を直接呼び出す際も 上記のように url を含めて呼び出してみてください
そうしてどのように表示されるかを教えて頂ければ
何処が原因なのか解りますので・・・
>えるさん
文字コード処理全般で修正しましたので恐らく治ってると思われます
御報告ありがとう御座います
>katzさん
zテンプレートで仕様出来る全ての埋め込み文字列を
複数回使用出来るように致しました
>大黒屋さん
やっているのですが、真っ白で何も表示されませんのです。
ちなみにこんな感じです。
http://www.nail.bitfemme.com/cgi/rss/
見たところ Internal Server Error を起こしているようです
パーミッション、Jcode・Socket の有無他
サーバ環境に関わる部分をご確認下さい
きっともう設置できないなんて言っているのは私だけなんだろうなと思うんですが・・。
どうしても設置したいので教えて下さい。
サーバーはwillnet、ブログはエキサイトです。JavaScriptを埋め込んだページを表示させようとすると下記のメッセージが表示されます。
document.write('
テンプレートファイルがありません
', '');
設置内容は下記の通りです。
■Jcode.pm
cgi-bin/libフォルダに以下を転送
Jcode.pm
Jcode/Constats.pm
/H2Z.pm
/Tr.pm
/Unicode/Constants.pm
/NoXS.pm
※Jcode-2.03
※lib(755) Jcode(644)
■jsRSS.cgi
use lib './lib';
#use Jcode;
my $dir_feed = 'feed';
my $check = 60;
my $TimeZone = 0;
my $acchk = '';
my $dir_temp = 'temp';
my $def_temp = 'RSS2.0.tmp'
my $CDATA = '';
my $CR = 'no';
※cgi-bin以下にアップロード
jsRSS.cgi(755)
feed(777)
temp(444)
■test.htm
tempフォルダはあるし、テンプレートファイルもあるのに、なぜテンプレートファイルがない、というメッセージが出るのでしょうか。この場合、どうしたらよいのでしょうか。
教えて下さい。お願いします。
>>りえさん
tempディレクトリに実行権限が無いと読み込めないようです
設置に関する部分での当方のミスでした
555 などに変更してみて下さい