FC2ブログ
--
--.--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2013
01.14

簡易アンテナ作成っと。

Category: perl
昔は、サイトの更新時刻をチェックするのに、アンテナを使っていたりしたと思うのですが、
思い立って自作してみることにしました。

モノはコレです。

hatena anntena とか使ってもいいのですが、まぁあれはあれで、ちょっと不満があるのです…。



更新時刻の取得方法には色々ありますが、一番楽チンなのは、http header の Last-Modified から取得する方法でしょう。

$ wget -S  --spider http://dam.mukya.net/anntena/
Spider mode enabled. Check if remote file exists.
--2013-01-14 03:08:01-- http://dam.mukya.net/anntena/
Resolving dam.mukya.net... 49.212.177.125
Connecting to dam.mukya.net|49.212.177.125|:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Date: Sun, 13 Jan 2013 18:08:01 GMT
Server: Apache/2.2.22 (Debian)
Last-Modified: Sun, 13 Jan 2013 17:56:29 GMT
ETag: "92c029-cb68-4d32f3f7e2d40"
Accept-Ranges: bytes
Content-Length: 52072
Vary: Accept-Encoding
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
Length: 52072 (51K) [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.


とは言っても、spider mode でアクセスすると、403 を返してきたり、
そもそも Last-Modified を返してくれない場合もあります。

あとは、CMSを使って更新されていて、サイト内に書かれている最終更新日と、Last-Modified が大幅に違う場合もあります。

そういう場合は仕方ないので、アクセスしたファイル内に書かれている、最終更新日とおぼしき部分をパースし、適当に最終更新日として利用します。

ここの部分はまだ書いてないのですが…。

Last-Modified が取得できなくて、最終更新日が書かれてない場合は、ファイルの差分をチェックします(未実装)。
でも、面倒なんで、できればしたくないですね…。

ブログ系の場合は、また話が違ってきます。

Last-Modified を返してくれるお行儀のいい子もいますが、少数です。
そういう場合は、RSSやatomを見ます。

しかし、これもブログサービスによってかなり異なります…。
RSS version1 と version2 のデータを両方配布しているのとか、v2 のみとか、atom のみとか。

そこはまぁいいのです。

一番厄介なのは、最新更新日が明らかに超先の未来を指している場合です。

未来すぎる場合は、それを ignore して、次のエントリというかアイテムの dc:update とかを見ればいいといえばいいのですが、日付計算はめんどくさいんじゃ(#゚Д゚)ゴルァ!!

……あ、はい、そのくらいはしろって?

そうですね、頑張ります。

というわけで、こんな感じで作った|作っているよという話でした。


ダムブログやってるよーという方は、こっそりURLを教えていただければ登録しますので、よろしくお願いします。
スポンサーサイト
Comment:0  Trackback:0
2012
11.17

adiary を入れてみた。

Category: perl
perl で動くなんか簡単そうなCMSっぽいのないかなーというわけで、探したら adiary というのが出てきたので、早速インスコ。

mod_perl でも動くのがイイネ。

ドキュメントが丁寧なので、さくっとインストール出来るんじゃないかな。

と思ったけど、案外ハマる…


サムネイルが作成できなかった→ドキュメント読めってことだった。
sudo -i apt-get install perlmagick



ログインしてない状態でアクセスすると、

debug
Error : [executor] [AutoLoader] Can't find method 'get_uploader_url' in 'Satsuki::Diary' at (eval 82) line 33 (line 20 at diary.skel/_sidebar.html)


とか言われてしまう。

画像アルバムのあたりでエラーになってるようだ。
アルバムはいらないかなーというわけで、diary.skel/_sidebar.html の

<@ifexec(v.image_album_url, begin)>
<li class="to-album"><a class="image-album" href="<@v.get_uploader_url(v.image_album_url, d.year, d.mon, d.day)>" rel="nofollow">画像アルバム</a></li>
<$end>


この行削除。



日記の修正後にエラーが出る。

Error : [executor] Can't locate Satsuki/TextParser/Satsuki.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . /etc/apache2) at /home/noriko/public_html/dam.mukya.net/diary/lib/Satsuki/Base.pm line 1042. (line 8 at diary.skel/parser/default.html)


こういうのちょこちょこ出るので、色々対処したつもりだったのだが…原因がイマイチわからず…。

各cgiファイルを

#BEGIN { unshift(@INC, './lib'); }
use lib ('/home/noriko/public_html/dam.mukya.net/diary/lib');


とか、絶対パスにしてやったり、もちろん、apache の設定ファイルも

PerlSwitches -I/home/noriko/public_html/dam.mukya.net/diary/lib


を書き込んでやっているが…うーん。
apache を再起動すると、上手く動くんだけど、一回だけ。


新規作成時にもエラーが…

debug

Error : [executor] [AutoLoader] Can't find method 'load_category_name_list' in 'Satsuki::Diary' at (eval 31) line 107 (line 42 at diary.skel/diary_edit.html)


が、これも出たりでなかったり。
apache 再起動で直る…けど…うーん。


Twitter認証

debug

Error : twitter.com がエラーを返しました (Status : 400) (in HTTP.pm line 335)


と言われてしまって出来ない…。

twitterウィジットの設定 に twitter id を入れて保存→Twitter認証ボタンクリック で、無反応に…

色々連打したりクリックしてたら

debug

Error : [executor] Can't locate Satsuki/Base/OAuth.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . /etc/apache2) at /home/noriko/public_html/dam.mukya.net/diary/lib/Satsuki/Base.pm line 1042. (line 18 at diary.skel/action/twitter_oauth.html)


んと、だから設定してる perl lib がどーしてなくなるの!

lib/Satsuki.pm と lib/Satsuki/Base.pm に use lib 突っ込む…


管理メニューページ

debug

Error : [executor] [AutoLoader] Can't find method 'check_upgrade' in 'Satsuki::Diary' at (eval 43) line 18 (line 14 at diary.skel/menu.html)


F5連打してると表示されたり…


日記設定の詳細でも、

debug

Error : [executor] Can't locate Satsuki/Base/Mail.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . /etc/apache2) at /home/noriko/public_html/dam.mukya.net/diary/lib/Satsuki/Base.pm line 1043. (line 725 at diary.skel/daybook_setting.html)


メール機能いらないから、ここは何とかならんかな…


原因はなんか設定のミスだろうなぁ…なんだろう… CGIなら、ちゃんと動くんだけど。


出たエラーをφ(.. )メモメモしてみたけど、

F5連打で、そのうち直る→キャッシュ周りか?


とりあえず眠いので、解決は今度にします。
記事も書きたいし。



んなわけで、ダム関連は別ブログにしますので、そちらもよろしぅ♪

Comment:1  Trackback:0
2012
02.24

今日のちゃんとドキュメントを読みましょうコーナー

Category: perl

Class::C3::Componentised::load_components(): Use of DBIx::Class::UTF8Columns is strongly discouraged. See documentation of DBIx::Class::UTF8Columns for more info


って apache のエラーログに出てうざいなーってずっと思ってて、

DBIx::Class::UTF8Columns のドキュメントをななめ読みはしてたんだけど、よくわからん、で数年放置してたんですが、

よく読んだらちゃんと書いてありました(゚∀゚)アヒャヒャヒャヒャ

If you want to continue using this module and do not want to receive further warnings set the environment variable DBIC_UTF8COLUMNS_OK to a true value.



というわけで、

SetEnv DBIC_UTF8COLUMNS_OK 1


って、apache の設定ファイルに書いて、さいきどー、終わり!

あー(*´Д`)スキーリ
Comment:0  Trackback:0
2011
06.24

ファイル名じゃなくて、グロブとかファイルハンドル渡したいよなー

Category: perl
最近、Spreadsheet::ParseExcel あたりをさわっていたりします。

ファイルの読み込みの部分の例が

my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse('Book1.xls');


のように、ファイルを指定するようになっていて、
ファイルアップロード時とかファイルハンドル取れるし(ファイル名も取れますが)、
STDIN使うときとか、ファイルハンドルで扱えたほうが楽だし、
と思ってソースみたら ( sub _get_content )
・SCALAR リファレンス
・グロブないしはファイルハンドル
・ARRAY リファレンス
・ファイル名
に対応してて、ARRAY リファレンス は想像の斜め上いっててびっくり。

でも、このあたりの実装ってモジュールによりけりなので、たまたま Spreadsheet::ParseExcel は対応してたけど、
してないモジュールもあったりすると思います。



Comment:0  Trackback:0
2011
03.30

* と x

Category: perl
$ perl -e "print 'A' x 10"
AAAAAAAAAA

$ perl -e "print 'A' * 10"
0


そうか、なるほど・・・。

ちなみに、他の言語では

python:
$ python -c "print 'A' x 10;"
File "", line 1
print 'A' x 10;
^
SyntaxError: invalid syntax

$ python -c "print 'A' * 10;"
AAAAAAAAAA


ruby:
$ ruby -e "print 'A' x 10;"
-e:1: syntax error
print 'A' x 10;

$ ruby -e "print 'A' * 10;"
AAAAAAAAAA


php:
$ php -r "print 'A' x 10;"
PHP Parse error: syntax error, unexpected T_STRING in Command line code on line 1

$ php -r "print 'A' * 10;"
0


x を演算子として使えるのは この中では perl だけのようで。
文字列演算子というらしい。全然知らなかったやばい!

PHPだけ挙動が違うというか、文字が連続しないで数値計算される件については
やっぱりPHPの==比較が理解できない
PHP の == についてやっと理解できた・・のか?
あたりを参照してもらえれば。

ちなみに、"print '0xAA' * 10" を実行してみると
$ perl -e "print '0xAA' * 10 "
0
$ ruby -e "print '0xAA' * 10 "
0xAA0xAA0xAA0xAA0xAA0xAA0xAA0xAA0xAA0xAA
$ php -r "print '0xAA' * 10 ;"
1700
$ python -c "print '0xAA' * 10 ;"
0xAA0xAA0xAA0xAA0xAA0xAA0xAA0xAA0xAA0xAA


Comment:0  Trackback:0
back-to-top
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。