goo blog サービス終了のお知らせ 

エンタープライズアプリケーション志向

成功は気づきと行動から生まれる。

Winny裁判

2009年10月11日 16時01分09秒 | Symfony
一転、無罪判決となりましたが、
日経新聞などでは著作権侵害を助長してしまうことができる
ツールだったので、それについての社会的責任がある、という指摘があります。

しかし、これはおかしい。

人を殺すことが目的の銃や、殺すことが可能な包丁、鈍器など、
それを悪用できる可能性があるからといって、製作者は有罪とはならない。
もっとわかりやすい例でいえば盗聴機の製作者が有罪になりますか?ということです。
もしかしたら、免許が必要なんて縛りがあるのかもしれませんが。

通常、悪用した利用者が有罪となります。当たり前ですよね。

この至極、当然な考え方がWinnyの場合は例外となる理由が思いつきません。

法律や裁判に詳しくはありませんが、
おそらく、このボーダーラインが曖昧なのが問題なのでしょうね。

法律がインターネットを十分に考慮てきていないからなのでしょうが、
難しい問題です。

しかし、過去にさかのぼって罰することは出来ない原則があるはずなので、
今回の件は無罪が妥当なのではないでしょうか。

Symfony1.1の勉強 その5 テストアプリを作る(データの受け渡し編)

2008年11月24日 14時51分02秒 | Symfony
前回はレイアウトをどのように編集するかについて学びました。
今回は、actionで生成したデータをtemplateにどのように渡して表示するかについて学びます。

そのための例題として、ポストに対して投稿されたコメントを
ポストの下に表示したいと思います。

1、アクション関数の定義


以下のファイルを開いて下さい。
sf_sandbox/apps/frontend/modules/post/actions/actions.class.php

executeShow()の内容を以下のように修正して下さい。

public function executeShow($request)
{
    $this->blog_post = BlogPostPeer::retrieveByPk($request->getParameter('id'));
    $this->forward404Unless($this->blog_post);

//以下の行を追加 
    $c = new Criteria();
    $c->add(BlogCommentPeer::BLOG_POST_ID, $request->getParameter('id'));
    $c->addAscendingOrderByColumn(BlogCommentPeer::CREATED_AT);
    $this->comments = BlogCommentPeer::doSelect($c);
}



補足:SymfonyにおけるDBからデータを取得する方法
CriteriaとはSQLのWHERE句の条件を設定するオブジェクトです。
$c->add()で条件句を追加
$c->addAscendingOrderByColumn()で、Order Byを指定
BlogCommentPeer::doSelect($c)で、SELECT文を実行し、その結果を取得しています。

この結果にはすでに、BlogCommentオブジェクトに値がセットされた状態で
返ってきます。O/RマッパーのPropelが勝手にやってくれます。



2、アクション関数に対応するテンプレートファイルの修正


以下のファイルを開いて下さい。
sf_sandbox/apps/frontend/modules/post/templates/showSuccess.php

以下の内容をshowSuccess.phpの末尾に追加して下さい。
と思いましたが、ここもHTMLなので原文を参照して下さい。
showSuccess.phpが目印です。

3、動作確認


1、ポストを作成
2、コメントの作成画面で、ポストを選択して、投稿
3、ポストの参照画面を開く
4、ポストの下にコメントが表示される。

これで、基本的なブログの機能はそろったんじゃないでしょうか。

チュートリアルを全部、書いて行こうと思ったのですが、
gooブログでは、HTMLがかけず、
さらに、文字数が1500文字以上になると編集画面の動作が重くなるので、
ちょっとこの辺で、お開きにしたいと思います。

この記事については、別のブログに転記しました。
こっちの方が読みやすいと思います。
http://blog.livedoor.jp/pandazx/archives/151786.html

Symfony1.1の勉強 その4 テストアプリを作る(レイアウト編集編)

2008年11月24日 14時03分35秒 | Symfony
前回から続いて、今回はレイアウト(画面)の編集を行います。

1、templatesファイルの仕組み


Symfonyでは、ヘッダやフッタのような全体で共通の表示となる
グローバルなテンプレートファイルと
各モジュールで表示する部分のテンプレートファイルで分かれています。

以下が、グローバルなテンプレートファイルです。
sf_sandbox/apps/frontend/templates/layout.php

中身を見ていただければ、だいたい分かると思いますが、
echo $sf_content となっている箇所が
各モジュールの出力結果を表示する部分です。
モジュールで処理された結果は最終的に、ここに辿りついて出力されるわけですね。

2、グローバルテンプレートファイルの修正(layout.php)


それでは、もっとこのブログが使いやすいように修正してみましょう。

以下の内容をlayout.phpの<body>タグの中に上書きして下さい

と思ったのですが、gooブログでHTMLをそのまま表示するやり方がわからないので、
原文のModify the layoutの箇所にあるHTMLを<body>タグにコピペして下さい。

これで、ヘッダが表示されたと思います。
ヘッダにはトップ画面へのリンク、
右上に、ポスト一覧、コメント一覧へのリンク。

トップ画面へのリンクは、まだ、プロジェクト作成後のSuccess画面が表示されてしまうとは思いますが。
そこはこれから修正していきます。



3、画面表示設定(HTMLのmetaタグなど)


sf_sandbox/apps/frontend/config/view.yml
view.ymlでは、このアプリのタイトル名、読み込むcss、javascriptファイルなどを設定できます。

今はまだ、画面名が「無題」とかになっていると思いますが、
titleのコメントアウトを外すと、titleに設定された文字列が
画面名になると思います。
(要はHTMLのheadで設定するtitleタグの設定です。)

HTMLがわかる人が項目名を見れば、なんとなく意味がわかると思います。

cssファイルを複数指定したい場合はカンマ「,」区切りで指定すればOKです。
cssファイルなどの静的ファイルはsf_sandbox/webにある各フォルダに配置して下さい。


4、トップ画面の設定


トップ画面がいつまでもsuccess画面では困るので、設定したいと思います。
以下のコマンドを実行して下さい。
php symfony generate:module frontend main

これで、mainモジュールが出来ました。

次に、以下のファイルを開いて下さい。
sf_sandbox/apps/frontend/modules/main/actions/actions.class.php
executeIndex()内に記述されている行をコメントアウトして下さい。

次に、以下のファイルを開いて下さい。
sf_sandbox/apps/frontend/modules/main/templates/indexSuccess.php
ここにはトップページで表示するHTMLを書きます。
内容は何でもいいですが、原文をコピペするのがいいと思います。
目印はindexSuccess.php。

次に、以下のファイルを開いて下さい。
sf_sandbox/apps/frontend/config/routing.yml

以下のように、homepageのparamにあるmodule:の値をdefaultからmainに変更して下さい。
homepage:
   url: /
   param: { module: main, action: index }

これにより、frontendのhomepageを表示する時のデフォルト画面は
mainモジュールのindexアクションを実行した時の画面となりました。

これで、さっきはSuccess画面が出てしまったリンク「My first symfony project」を
クリックしてみると、indexSuccess.phpで記述した内容が表示されると思います。

常に、ポスト一覧、コメント一覧へのリンクは表示されているので、
これで、移動に困ることはありませんね!

レイアウト編集の基本はこれにて終了。
次回は、actionから処理した結果をtemplateに出力する方法について勉強します。

Symfony1.1の勉強 その5 テストアプリを作る(データの受け渡し編)


Symfony1.1の勉強 その3 テストアプリを作る(アプリ編)

2008年11月24日 12時54分25秒 | Symfony
前回から続いて、今回は実際に動作するアプリケーションを作成していきます。

1、Post,Commentモジュールを作成


php symfony propel:generate-crud --non-verbose-templates --with-show frontend post BlogPost
php symfony propel:generate-crud --non-verbose-templates frontend comment BlogComment
php symfony cache:clear

キャッシュのクリアは「symfony cc」でもいけます。

下記、URLにアクセスすると、画面が表示されると思います。
http://localhost/sf_sandbox/web/frontend_dev.php/post
http://localhost/sf_sandbox/web/frontend_dev.php/comment

これで一覧画面が出来ました。

2、BLOGの投稿が出きるようにします。


以下の修正を行います。
sf_sandbox/lib/model/BlogPost.phpに以下の__toString()を追加(原文コピペ推奨)
class BlogPost extends BaseBlogPost
{
  public function __toString()
  {
    return $this->getTitle();
  }
}

sf_sandbox/web/css/main.cssに以下の内容を記述(原文コピペ推奨)
body, td
{font-size: 12px;
}

td { margin: 4px; padding: 4px; }


これで作成画面ができました。

再度、さきほどのURLにアクセスしてCreateリンクから
投稿してみてください。
ただし、作成後の編集画面から一覧画面に戻るリンクがないので、
始めにアクセスしたURLに再度、アクセスして下さい。
(削除については、編集画面にDeleteリンクが付いています)

一覧画面に投稿したブログが表示されたと思います。
IDにリンクが付いているので、アクセスすると参照画面が表示されます。

これで、基本的なデータの新規作成、編集、削除、一覧表示ができました。

補足


Symfonyには本番環境のproductionと
開発環境のdevelopmentと分かれています。

開発環境では、右上にデバッグめニューバーみたいなのが出たりします。

以下のように、アクセスするURLを変えることで、
使いわけることが出来ます。

本番環境
http://localhost/sf_sandbox/web/post
開発環境
http://localhost/sf_sandbox/web/frontend_dev.php/post

frontend_dev.phpのfrontendはもちろんアプリケーション名です。

この2つを切り替える場合はSymfonyのキャッシュをクリアすることと書いてありました。
(symfony cc)

続きます。
Symfony1.1の勉強 その4 テストアプリを作る(レイアウト編集編)


Symfony1.1の勉強 その2 テストアプリを作る(DB編)

2008年11月23日 18時10分42秒 | Symfony
前回はSymfonyをインストールしました。

今回は↓このサイトを見てアプリケーションを作ります。
Symfony tutorial My first symfony project

このサイトのチュートリアルではBlogアプリケーションを作成します。
Blogの投稿と、それに対するコメント機能を持ったアプリケーションを作成します。

以下、チュートリアルの手順。

テストプロジェクトの準備


1、上記サイトにあるsf_sandbox.zipをDLして、htdocsフォルダに配置。
2、動作確認
http://localhost/sf_sandbox/web/index.php/

データベースの作成


1、DB定義ファイルを作成する


sf_sandbox/config/schema.ymlの内容を以下のように編集する。
(ここは原文の方をコピペしてもらった方が早いです)

propel:
   blog_post:
     id: ~
     title: { type: varchar(255), required: true }
     excerpt: { type: longvarchar }
     body: { type: longvarchar }
     created_at: ~
   blog_comment:
     id: ~
     blog_post_id: ~
     author: { type: varchar(255) }
     email: { type: varchar(255) }
     body: { type: longvarchar }
     created_at: ~

定義内容は見ればだいたい分かると思いますが、
「~」はデフォルト値なんだと思います。(たぶん)
idの場合はオートインクリメント、
created_atはdatetime型で作成されました。

2、DB定義ファイルをXMLファイルにコンパイル


php symfony propel:build-model
このコマンドで、sf_sandbox/data/sql/lib.model.schema.sqlが作成される(はず)

3、DBにMySQLを使う場合


php symfony configure:database mysql://DBユーザ名:パスワード@localhost/DB名

次に、sf_sandbox/config/databases.ymlを以下のように編集
all:
   propel:
     class: sfPropelDatabase
   param:
     phptype: mysql(mysqlに変更)
     database: symfony_project(DB名に変更)
     dsn: 'mysql://root:admin@localhost/symfony_project'

database.ymlにはアプリケーションがDBに接続する情報を設定します。

4、DBにテーブルを作成するSQLファイルを作成


php symfony propel:build-sql
さきほど、作成したmodelファイルからSQLファイルを作成します。

5、DBを作成


原文には書いていませんが、DBはあらかじめ自分で作成しておかなければなりません。
mysqlにログインして、
mysql> create database DB名;

6、作成したSQLファイルを実行


php symfony propel:insert-sql

7、おまじない


php symfony propel:build-forms
(このアプリで扱うPostやCommentの作成、編集をするために必要らしい)

補足


アプリケーションを作成していくと、テーブルにカラムを追加することがあります。
DBを作り直す場合は以下の手順になります。
1、schme.ymlを編集して、カラム定義を追加
2、DBを削除して、再作成
3、symfony propel:build-all

「symfony propel:buil-all」は今回、説明したテーブルの作成の
symfonyコマンドを一括でやってくれるコマンドです。

続きます。
Symfony1.1の勉強 その3 テストアプリを作る(アプリ編)

Symfony1.1の勉強 その1 WindowsにSymfonyをインストール

2008年11月23日 15時21分46秒 | Symfony

はじめに


LAMP環境を構築して、Webアプリをインストールできるレベルの人で、
Symfonyを勉強したい人向けの内容になっています。

インストール手順


1、Aapacheをインストール
2、MySQLをインストール
3、PHPをインストール(PHPは5.1以上で!)
4、環境変数にphpを登録
5、PEARをインストール
6、Symfonyをインストール

各手順の詳細


1~2はインストーラでインストールして終わり。

3はPHP圧縮ファイルを解凍して、C:php5として配置すればOK

4はマイコンピュータを右クリックして詳細タブの環境変数のPATHの末尾に
C:php5;を追加すればOK

5、C:php5フォルダを開いて、go-pear.batをダブルクリック
(途中で質問されるが全部、Enterキー)

インストール確認
pear -V でバージョン確認

6、以下のコマンドを実行
pear channel-discover pear.symfony-project.com
pear install symfony/symfony

PEARが古い人は始めにpear upgrade PEARとすればいいらしい。

インストール確認
cd C:php5pearsymfony
pear -V

私の場合、上記のように、symfonyフォルダに移動してからでないとWarnngが出ました。



次回は、Symfonyで使うデータベースを構築します。
Symfony1.1の勉強 その2 テストアプリを作る