XML::FeedPPモジュール
Google CalendarのAtomFeedを取り出すPerlスクリプト
Googleカレンダーのマイカレンダー >> カレンダー設定 >> 個人用URLのXMLアドレスを$urlに代入するとカレンダーを取得できます。
ただし、これは単純にXMLを取得してくるだけなのでデータの加工は行いません。
本来ならHTTP::Liteモジュールは必要ありません。ならなぜ使っているのか!!
うちの大学では必ずProxyサーバを経由しなければHTTP接続を行うことができません。
そこで今回HTTP::LIteモジュールを使ってProxyに接続を行っています。
以下スクリプト
#!/usr/bin/perl use XML::FeedPP; $http = new HTTP::Lite; $url = 'http://www.google.com/calendar/feeds/********%40*********/private-*****************/basic'; $http->proxy("proxy.**.**.**"); $req=$http->request($url); $body=$http->body(); $feed=XML::FeedPP->new($body); print "Content-Type: text/xml;charset=euc-jp\n\n"; print $feed->to_string("euc-jp");
XML::Parserモジュールのインストール
XML::Parserモジュールのインストールについて。
このモジュールはExpatに依存しています。そこで
rpm -qa | grep expat
でexpatの存在を確認。
次にcpanでXML::Parserモジュールのインストールを行う。
install XML::Parser
以下のエラーが出る。
関数の仕様やデータ構造を記述したヘッダーファイルを始めとした
ライブラリを活用するプログラム開発に必要な物を入れたdevelが必要。
そこでyumでrpmがあるか確認。
expat.i386 1.95.8-8.2.1 installed
expat-devel.i386 1.95.8-8.2.1 core
tclxml-expat.i386 3.1-9.fc6 extras
確認できたので早速インストール。
yum -y install expat-devel.i386
その後再度cpanでXML::Parserモジュールをインストール。
install XML::Parser
/usr/bin/make install -- OK
これからはヘッダファイルがないなどのエラーにあったらdevelがあるかどうかを疑おうと思う。
にしても、モジュールインストールここまで苦労するとは(笑
CGI::Sessionモジュール
CGI::Sessionモジュール
ユーザー認証後のセッション管理を行うために今回CGI::Sessionモジュールを勉強しましたので自分の理解の範囲で書いてみたいと思います。
ログイン後にUserIDを常にサーバーで保持する必要があり、txtファイルを作ってやるのもどうなんだ。。と思ったので。
今回使ったセッションの流れを書いてみると。
1 ID・パスワード認証
認証成功(Y/N)
(Y):SessionIDを作成 CookieにSessionIDを渡し、UserIDをサーバのセッションフォルダに格納する。②へ
(N):再ログイン画面を表示
2 ログイン後、各種設定変更画面
CookieにSessionIDが存在する(Y/N)
| ___ (Y):SessionIDは有効である?(Y/N) | |
| ___(Y):正常に画面遷移を行う | |
| ___(N):Sessionエラー | |
| ___ (N)Sessionエラー |
かなりわかりにくい図ですが
1 CookieのセッションID存在判定
2 セッションID有効判定
この2つでセッションを管理しています。
今回とても詰まったところは、sessionフォルダのアクセス権です。
ここの所有者をapacheにしないとセッションが作成されても保存されず全てSessionErrorになります。
主要なメソッド
use CGI::Session; #第1引数:データソース名 #第2引数:セッションIDもしくは$cgiなどのparamやcookieメソッドをもつオブジェクト #第3引数:セッションを格納するフォルダ $session=CGI::Session->new(undef,$cgi,{Directory=>'/var/session/'}); #セッションに有効なIDを返す $session->id(); #セッションにパラメータを追加 $session->param('name','hogehoge'); #パラメータを読み出す($nameはhogeghoge) $name=$session->param('name') #sessionの有効期限を1年間に設定 $session->expire("+1y"); #sessionを削除する $session->delete();
あけましておめでとうございます
コンピュータ関係の覚書blogを今日からはじめたいと思います。
主に書く内容としてPerlを勉強しているのでそれを中心に書いていきたいと思います。