にぽたん研修所 兼 にぽたん休憩所

旧にぽたん休憩所をマージしたからわけがわからない

めも添削

書こう書こうと思ってて忘れてた。
めも帖 - 「10 分で作る Sledge アプリケーション」のめも
を軽く添削してみるの巻。

  • pwd は、現在いるディレクトリを表示する。今回の場合は、「/home/nipotan/」
  • bookmarkというディレクトリを作成。その中に、「etc」「view」「misc」「lib」というディレクトリを作成
  • cd lib
  • sledge-setup Bookmark
  • ここで設定ファイル?らしいのが作られています。

というよりは、最低限必要となるスケルトンのクラスみたいなものです。
Sledge::Install::Stub に元があります。

ファイルとかディレクトリとかのリストを出してみただけです

  • sudo vi /etc/Bookmark-conf.pl
  • ENV{SLEDGE_CONFIG_NAME} = '_production';
  • MySQLのセッション用DB(ここでは「Bookmark」)を作成

たしか小文字で bookmark でした。セッション用テーブルだけではなく、実際にブックマークのテーブルも入れます。

  • /tmp/sledge1.11/eg/にあるsessions.sql、sessions-pg.sqlを実行している

/tmp/Sledge-1.11 というのは、あくまで Sledge のソースツリーがある場所なので、/tmp じゃないかも知れないです。
あと、sessions-pg.sql は、セッション用 DB が PostgreSQL の時用なので、今回は MySQL を使用した関係で実行はしてません。
set autolist してたりするので、補完候補の中で -pg.sql が出たのでわかりにくかったかも知れないです。

  • 先ほど作成したmisc内に、bookmark.sqlを作成
  • create table bookmark (id int unsigned not null auto_increment,url varchar(255),title varchar(255),description text,timestamp timestamp,primary key (id))type=innodb;
  • ?)grant select,insert,delete,update on bookmark.*@ to www@localhost identified by 'nipotan'

「?)」って書いてあるので一応説明すると「localhost から www というユーザ名で接続してきた場合は、'nipotan' というパスワードが必要で、bookmark というデータベース内の全てのテーブルに対して CRUD だけ許可しますよ」ということです。bookmark.*@ ←この @ は不要で。

  • /bookmark/lib/Bookmark/Config にある_common.pmを設定する
  • $c{TMPL_PATH} を設定
  • $c{DATASOURCE} を設定(?)

細かいことを言えば %C ←大文字ですね。$C{DATASOURCE} は DBI で DB への接続をする時に必要なデータソース情報です。

  • $c{COOKIE_NAME} を設定
  • $c{COOKIE_PATH} を設定
  • $c{COOKE_DOMAIN } を設定
  • _common.pmをコピーして、_production.pmを作る
  • MixIn.pmを作る。Exporterを継承
    • ここでは、何かを雛形にして製作しているのではなく、1から書いている
    • Exporterというのは、サブルーチンをインポートするpmらしい
  • mkdir Page Data
  • Bookmark::Data::Base; (Base.pm)をつくっています
  • Bookmark::Data::Base は、Class::DBI を継承
  • ?)__PACKAGE__ ってなんだっけ?(どこかで読んだんだけれど)

package 名の文字列を表すリテラルです。

package Foo;
__PACKAGE__->bar;
package Foo;
Foo->bar;
と同義。

  • Bookmark::Data::Bookmark; (Bookmark.pm)をつくっています
  • Bookmark::Data::Bookmark は、Bookmark::Data::Base を継承
  • ?)ここらへんがよくわからないです。たぶん、Class::DBIを継承しているので、DBへの操作が書かれているっぽい

Class::DBI の perldoc を見られるといいですが、Bookmark::Data::Base には DB への接続情報を持ち、その接続情報を継承して、bookmark テーブルの操作関連が Bookmark::Data::Bookmark に書かれてたりします。

  • cd ../Pages
  • Bookmark::Pages::Root; (Root.pm)をつくっています
  • Bookmark::Pages::Root は、Bookmark::Pages を継承
  • ?)ここらへんがよくわからないです。たぶん、Controllerになるのかな?

そうですね。

  • /bookmark/lib/view/ に、index.htmlを作成
    • form タグにactionを書いていないけれど?いいのかな?

action ないと、current URI が action になります。

  • TT2の形式で。
  • nl2brというフィルタはなんだ? → 試していないけれど、テキスト中の改行を
    に変換?

nl2br は、改行を <br> にしてます。
Bookmark::Pages::Root にあった、こんなようなやつです。

__PACKAGE__->register_hook(
BEFORE_DISPATCH => sub {
my $self = shift;
$self->tmpl->set_option(
FILTERS => {
nl2br => sub {
my $str = shift;
$str =~ s/(\r\n|[\r\n])/<br>$1/g;
$str;
},
},
);
},
);

  • /bookmark/etc/ startup.plを作成
  • ?)/bookmark/etc/ map.properties を作成

Sledge::Dispatcher::Properties 用の、URL と Class のマッピングリストです。

  • ?)/bookmark/etc/ b.nipotan.org.conf を作成

Apache (mod_perl) から読み込ませる conf です。

    • SetHandler perl-script
    • PerlRequire /home/nipotan/bookmark/etc/startup.pl
    • PerlHandler Sledge::Dispatcher::Properties
    • PerlSetVer SledgeMapFile /home/nipotan/bookmark/etc/map.properties
  • httpd.conf を設定
    • Include /home/nipotan/bookmark/etc/b.nipotan.org.conf とする
  • configtest を実行(こいうのがあるんだねぇ。知らなかった)

Apache を restart する前に configtest で、startup.pl から use されるのにエラーとかがないか、あとは Include される conf にエラーとかがないかチェックします。
しないで restart して、エラーがあったりすると Apache が落ちてしまうので。。。

  • ここからテスト開始

の前に /usr/local/apache/bin/apachectl restart して Include を有効にしてあげます。

というカンジです。