2010年3月29日月曜日

Plagger planet 設定に苦戦1

会社でいろいろやらんといけんので。
世の中から4年ほど遅れてるのね・・。

で、Planetとやらをやりたい。
PlaggerでPlanet SGIを作ってみた

あったんで参考にやるがうまくいかず。

YAMLつくって
plagger -c planet.yaml

でいくっぽいがエラー。
YAMLは上のサイトと、本家の
planet.yaml
を参考。

global:
plugin_path:
# - C:\strawberry\perl\site\lib\Plagger\Plugin
assets_path: C:\strawberry\perl\bin\assets\common
timezone: Asia/Tokyo
cache:
base: C:\strawberry\perl
log:
level: info

plugins:
# Subscribe to a couple of "My Feeds" on the web
# They could be either Feeds URL or Blog URL (with Auto-Discovery support)
- module: Subscription::Config
config:
feed:
- http://www.ncbi.nlm.nih.gov/feed/rss.cgi?ChanKey=PubMedNews

# Load 'Bundle' planet plugins
- module: Bundle::Planet
config:
title: ahoahoman
duration: 7 days
description: Everything Plagger from the Web
dir: C:\strawberry\perl\work\planet
url: http://examples.com/planet/
#theme: sixapart-std
#theme: planet
stylesheet: http://bulknews.typepad.com/blog/styles.css

でやると、
Plagger::Plugin [fatal] file error - default\template\index.tt: not found at line 144

でダメ。

そこらじゅうにdefault\template\index.tt つくったけどパスとおらず。

すったもんだしたあげく、
global:
log:
level: debug

にしてみたところ、

Plagger::Template [debug] Assets path: C:\strawberry\perl\bin\assets\common\plugins\Publish-Planet:C:\strawberry\perl\bin\assets\common\common

commonがふたつ連なってる!!。アホ。

で、
assets_path: C:\strawberry\perl\bin\assets

と修正。

やったー。終わりって思ったら
opml.tt がないってエラー。

ふう。まあもう原因わかったからいいや。
本家サイトからopml.tt とってきて保存しよ。

plagger gmail_notify.tt

こんなエラー

C:\strawberry\perl\work\plagger>plagger -c rss2emali.yaml
Plagger [info] plugin Plagger::Plugin::Subscription::Config loaded.
Plagger [info] plugin Plagger::Plugin::Publish::Gmail loaded.
............

Plagger::Plugin::Aggregator::Simple [info] Aggregate http://www.ncbi.nlm.nih.gov/feed/rss.cgi?ChanKe
y=PubMedNews success: 12 entries.
Plagger::Template [debug] Assets path: C:\strawberry\perl\bin\assets\plugins\Publish-Gmail:C:\strawb
erry\perl\bin\assets\common
Plagger::Plugin [fatal] file error - gmail_notify.tt: not found at line 144

で、Assets path の設定をするらしい。
Plagger::Template [debug] Assets path:以下の、
C:\strawberry\perl\bin\assets\common がないので作成。

で、gmail_notify.tt がないので困る。どうやら、Plagger.org からもらえばいいらしい。
Plagger.orgのここからいただく。

で、C:\strawberry\perl\bin\assets\common に保存。

さらに、rss2emali.yaml に
global:
assets_path: C:\strawberry\perl\bin\assets
を追加するらしい。

おー、なんか動いた。

plagger 500エラー

C:\strawberry\perl\work\plagger>plagger -c rss2emali.yaml
Plagger [info] plugin Plagger::Plugin::Subscription::Config loaded.
Plagger [info] plugin Plagger::Plugin::Publish::Gmail loaded.
Plagger [info] plugin Plagger::Plugin::Bundle::Defaults loaded.
Plagger [info] plugin Plagger::Plugin::Aggregator::Simple loaded.
Plagger [info] plugin Plagger::Plugin::Summary::Auto loaded.
Plagger [info] plugin Plagger::Plugin::Summary::Simple loaded.
Plagger [info] plugin Plagger::Plugin::Namespace::HatenaFotolife loaded.
Plagger [info] plugin Plagger::Plugin::Namespace::MediaRSS loaded.
Plagger [info] plugin Plagger::Plugin::Namespace::ApplePhotocast loaded.
Plagger::Plugin::Aggregator::Simple [info] Fetch http://feeds.feedburner.com/bulknews
Plagger::Cache [debug] Cache HIT: Aggregator-Simple|http://feeds.feedburner.com/bulknews
Plagger::Plugin::Aggregator::Simple [error] GET http://feeds.feedburner.com/bulknews failed: 500 Can
't connect to feeds.feedburner.com:80 (connect: timeout)
Plagger [error] http://feeds.feedburner.com/bulknews is not aggregated by any aggregator
Plagger::Plugin::Aggregator::Simple [info] Fetch http://bulknews.typepad.com/blog/atom.xml
Plagger::Cache [debug] Cache HIT: Aggregator-Simple|http://bulknews.typepad.com/blog/atom.xml

会社のWindowsに入れたら500エラーがでたが、なんのこたないプロキシエラーだった。
環境変数にHTTP_PROXY=・・・・ 設定で解決

2010年3月19日金曜日

Catalystメソッド動き

ControllerにRegist.pmあったとして、

Rootのindex.tt に、 a href=regist/test とか href=regist/test/ と書く、
で、
regist/index.tt
regist/test.tt
regist/test/index.tt
regist/test/test.tt

用意。結果は、こんな感じだった。

1.Regist.pm sub test:Local{} をさがす
2.メソッドがなければ404エラー表示

なので、、、、メソッド記述。

3.メソッドあったら、中身実行。

4. sub test:Local{} 空っぽにしとくと、
 → regist/test.tt にいく

5. $c->response->body('testtest');
→ testtest 直接書く

6. $c->stash->{template} = 'index.tt';
→ root dir の index.tt 表示

7. $c->stash->{template} = 'regist/index.tt';
→ regist/index.tt 表示

Privateアトリビュートにしたらどうなるの?
アトリビュート調べんと。

2010年3月12日金曜日

Catalyst でリンクをつくる

Hello アプリを作ったので、その中にGoodMorming.pmをつくってそこにリンクを飛ばす。

./hello_create.pl contoroller GoodMorning

Hello/lib/Hello/Controller に移動

で、Root.pm と GoodMorning.pm を編集

ともに、
sub index :Path :Args(0){}
としておく。とりあえず。

で、Hello/root ディレクトリに移動

Root.pmのインデックスページは
 index.tt として、このディレクトリに保存(Hello/root/index.tt)

GoodMorning.pmのインデックスページは、
 とりあえず、
 mkdir goodmorning (Hello/root/goodmorning) しといて、
 
 この下に、index.tt を作成。(Hello/root/goodmorning/index.tt)

で、たとえば、Hello/root/index.ttから、
 Hello/root/goodmorning/index.tt にリンクするときは、
 
 <a href=goodmorning/>おはよう</a>

 ってしとくと、
 あらやだ奥さん。GoodMorningのインデックスページにトンじゃいましたはよ。

 Root.pmののインデックスページには
 <a href=/>ハロー</a>
 
 ってしとくとリンク成功。
 
 ちなみに普通のWebページには通常通り
 <a href=http://www.google.co.jp/>Google</a>

 ってしとけばよい。
 
 いやーすごいね。かっちょいい。

 コントローラーのクラスとメソッドとアトリビュートの
 関係をお勉強してパラメータのやり取りとか
 もっとおべんきょしよ。これからだ。

2010年3月11日木曜日

Catalyst アトリビュートとは

sub index :Path{}とか:の後ろについたやつ。

いろいろある。

初めてのCatalyst入門

:Local ネームスペース+アクション名
:Global アクション名
:Path リテラルでパスを指定
:LocalRegex ローカルな正規表現でパスを指定
:Regex グローバルな正規表現でパスを指定
:Private 直接パスに割り当てられず、内部で使用
:Args 補助的に引数を制限する場合に使用
:Chained 複数のアクションを連鎖場合に使用

アクション

Controllerに定義されたメソッド

CodezineのCatalystの記事

初めてのCatalyst

初心者お勧め ホムツク

ホムツク

4.body

実際のHTMLの記述を書く

3.head

head を記述

このヘッダー部分に各種メタ情報を記述する。

meta(CSS、Javascript、文字コード), title,link,script タグなど

<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Type" content="text/html; charset=utf8">

<title> タイトル </title>

<link rel=stylesheet href=test.css type=text/css>

<script type=javascript>

2.html

まあ、これはこのタグで囲うだけ。

HTMLであることを明示する。

1.!DOCTYPE

まず!DOCTYPE

タグじゃないがHTMLの一番最初に記述
必須ではないので書かなくても動く。

HTMLのバージョンを指定

これを明示的に指定した場合は、そのバージョンに準拠した
HTMLタグでかかないとエラー。

ケイタイなんかだとCompact HTMLとか指定するらしい。

調べ次第、もうちょっと内容・説明厚くする

HTML基本書き方

1. !DOCKTYPE
2. html
3. head
4. body

で構成

2010年3月9日火曜日

Catalyst CSS

とりあえず、CSSをいれる。Hello/root 以下につくればいいのかね。

で、hello.css をつくる。

h1{
color: #ff0000;
}

div{
color: #00ff00;
}

p{
color: #0000ff;
}

みたいにかいとけばいい。
で、index.tt の なかに
link rel=stylesheet href=hello.css type=text/css

を入れとけばCSS読まれる。DIVタグとか色変わる。
CSSなんて8年ぶりくらいだ。忘れたよ。

Catalyst パス

動きを見ると、http://127.0.0.1:3000/ のパスは、
Hello/root みたい。
Hello.pmとかでディレクトリ指定する場合はここがRootになるのかね?

まあおいおいやっていこう。

Catalyst memo

catalyst.pl Helloやったら、
Hello/root ディレクトリができる。

ここにroot.tt だの index.tt だの作るのか?

で、index.tt編集。中にHTML かいて、
[% c.config.name %]

てやると、設定したハッシュ(config)のキー(name )のValueが表示される。

で、どうやら、このハッシュの設定は2箇所でできる。
ひとつは、lib/Hello.pm の __PACKAGE__->config();で、
__PACKAGE__->config( ore => 'ahoaho', anata => 'tennsai', );

ってやると、
[% c.config.ore %]
[% c.config.anata %]

でValueが表示できる。

もうひとつは、Helloディレクトリ内の、hello.confで、

ここを編集して、
kare ahokamo
kanojyo ahodesu

ってかいとくと、
[% c.config.kare %]
[% c.config.kanojyo %]

で、Valueが表示できる。

Catalystのサンプルが少ないのでやり方ふるいかも。
まあとりあえず動かすところから。
いろいろメモしとく。