ktats****@users*****
ktats****@users*****
2012年 9月 27日 (木) 23:28:07 JST
Index: docs/articles/www.perl.com/pub/2005/06/02/catalyst.html diff -u docs/articles/www.perl.com/pub/2005/06/02/catalyst.html:1.2 docs/articles/www.perl.com/pub/2005/06/02/catalyst.html:1.3 --- docs/articles/www.perl.com/pub/2005/06/02/catalyst.html:1.2 Thu Sep 27 23:18:20 2012 +++ docs/articles/www.perl.com/pub/2005/06/02/catalyst.html Thu Sep 27 23:28:06 2012 @@ -18,6 +18,7 @@ <ul> <li> <a href="#4">ã¹ãã¼ã</a></li> <li> <a href="#5">ç°¡ææ§</a></li> + <li> <a href="#6">æè»æ§</a></li> </ul> <li> <a href="#7">ãµã³ãã«ã¢ããªã±ã¼ã·ã§ã³: 30è¡ã®ã³ã¼ãã§ãMiniMojo, Ajax-Based Wiki</a></li> @@ -189,12 +190,12 @@ 次ã®ããã«ãã¾ã: </p> -<pre class=code><code>use Catalyst qw/Email Prototype Textile/;</code></pre> -<p>will load <code>Catalyst::Plugin::Email</code>, <code>Catalyst::Plugin::Prototype</code>, +<pre class="prettyprint"><code>use Catalyst qw/Email Prototype Textile/;</code></pre> +<p class="original">will load <code>Catalyst::Plugin::Email</code>, <code>Catalyst::Plugin::Prototype</code>, and <code>Catalyst::Plugin::Textile</code> in one shot.</p> -<p><code>Catalyst::Plugin::Email</code>, <code>Catalyst::Plugin::Prototype</code>, - and <code>Catalyst::Plugin::Textile</code>ãä¸åã§ãã¼ããã¾ãã</p> +<p><code>Catalyst::Plugin::Email</code>ã¨<code>Catalyst::Plugin::Prototype</code>㨠+ ã¨<code>Catalyst::Plugin::Textile</code>ãä¸åã§ãã¼ããã¾ãã</p> <p><em>éçº</em></p> <p class="original">Catalyst comes with a built-in lightweight HTTP server for development purposes. @@ -229,7 +230,7 @@ <code>Catalyst::Log</code> ã¯ã©ã¹ã§ãã®ã³ã°ãåããã¦ãã¾ã; ãããã®ã³ã°ã®ãããç®çã®æ å ±ãå¾ãããã«ã以ä¸ã®ãããªè¡ã追å ãããã¨ã§ãã©ããªã¢ã¯ã·ã§ã³ãè¨é²ã§ãã¾ãã -<pre class=code><code>$c->log->info("We made it past the for loop"); +<pre class="prettyprint"><code>$c->log->info("We made it past the for loop"); $c->log->debug( $sql_query );</code></pre> <p><img src="http://www.perl.com/2005/06/02/graphics/log-screenshot.gif" alt="Log screenshot" height="411" width="515"><br> <em>Figure 1. Logging</em></p> @@ -300,7 +301,7 @@ URLã¨ã¢ã¯ã·ã§ã³ã®ãããã³ã°ã«ã¯è¤æ°ã®ãããããããã¾ã(that is, a Catalyst method)ã ããªããã©ãããããã«ä¾ãã¾ããã¾ããæåã©ããã®ãã£ã¹ããããç¹å®ã®ãã¹ã«ããããããã®ã¯: -<pre class=code><code>package MyApp::C::Quux; +<pre class="prettyprint"><code>package MyApp::C::Quux; # http://localhost:3000/foo/bar/yada ã ãã«ããã sub baz : Path('foo/bar/yada') { }</code></pre> @@ -310,7 +311,7 @@ <p>ãããã¬ãã«ãã¾ãã¯ãã°ãã¼ãã«ã¯ãã¢ããªã±ã¼ã·ã§ã³ãã¼ã¹ã§ã¡ã½ããåã«ç´æ¥ããããã¾ã:</p> -<pre class=code><code>package MyApp::C::Foo; +<pre class="prettyprint"><code>package MyApp::C::Foo; # http://localhost:3000/bar ã«ã®ã¿ããã sub bar : Global { }</code></pre> @@ -322,7 +323,7 @@ Controllerã¯ã©ã¹ã®ååããç±æ¥ããåå空éã§ã®ã¿åãã¾ãã </p> -<pre class=code><code>package MyApp::C::Catalog::Product; +<pre class="prettyprint"><code>package MyApp::C::Catalog::Product; # http://localhost:3000/catalog/product/buy ã«ããã sub buy : Local { } @@ -343,7 +344,7 @@ ãããããå¤ã¯ã<code>$c->request->snippets</code>ã®é åããå©ç¨ã§ãã¾ãã </p> -<pre class=code><code>package MyApp::C::Catalog; +<pre class="prettyprint"><code>package MyApp::C::Catalog; # http://localhost:3000/item23/order189 ã«ããã sub bar : Regex('^item(\d+)/order(\d+)$') { @@ -358,7 +359,7 @@ <p>æ£è¦è¡¨ç¾ã¯ã°ãã¼ãã«ã«åãã¾ã; åå空éã§ã®ã¿åãããããã°ãæ£è¦è¡¨ç¾ã«åå空éã®ååã使ã£ã¦ãã ãã:</p> -<pre class=code><code>sub foo : Regex('^catalog/item(\d+)$') { # ...</code></pre> +<pre class="prettyprint"><code>sub foo : Regex('^catalog/item(\d+)$') { # ...</code></pre> <p class="original">Finally, you can have private methods, which are never available through URLs. You can only reach them from within the application, with a namespace-prefixed @@ -368,7 +369,7 @@ ã¢ããªã±ã¼ã·ã§ã³å ããã®ã¿ãnamespace-prefixed ãªãã¹ã§ä½¿ããã¨ãã§ãã¾ã: </p> -<pre class=code><code>package MyApp::C::Foo; +<pre class="prettyprint"><code>package MyApp::C::Foo; # matches nothing, and is only available via $c->forward('/foo/bar'). sub bar : Private { }</code></pre> @@ -392,7 +393,7 @@ ãç´æ¥ã«å©ç¨å¯è½ã§ã. <code>stash</code> ã¯ãã¦ããã¼ãµã«ãªããã·ã¥ã§ã ã¢ããªã±ã¼ã·ã§ã³ã®ã³ã³ãã¼ãã³ãã§ãã¼ã¿ãå ±æããããã®ãã®ã§ã:</p> -<pre class=code><code>$c->stash->{error_message} = "You must select an entry"; +<pre class="prettyprint"><code>$c->stash->{error_message} = "You must select an entry"; # TT ã®ãã³ãã¬ã¼ãã§: [% IF error_message %] @@ -404,13 +405,13 @@ <p>Stash ã®å¤ã¯ãã³ãã¬ã¼ãã«ç´æ¥ã«å ¥ãã¾ãã ã§ãããå ¨ã¦ã®ã³ã³ããã¹ããªãã¸ã§ã¯ããã¾ãå©ç¨å¯è½ã§ã:</p> -<pre class=code><code><h1>[% c.config.name %]</h1></code></pre> +<pre class="prettyprint"><code><h1>[% c.config.name %]</h1></code></pre> <p class="original">To show a Mason example, if you want to use <code>Catalyst::View::Mason</code>:</p> <p>Masonã®ä¾ãè¦ãããã«, <code>Catalyst::View::Mason</code>ã欲ãããã°:</p> -<pre class=code><code>% foreach my $k (keys $c->req->params) { +<pre class="prettyprint"><code>% foreach my $k (keys $c->req->params) { param: <% $k %>: value: <% $c->req->params->{$k} %> % }</code></pre> @@ -480,7 +481,7 @@ <p>ãã®ã³ãã³ããå®è¡:</p> -<pre class=code><code>$ catalyst.pl MiniMojo +<pre class="prettyprint"><code>$ catalyst.pl MiniMojo $ cd MiniMojo</code></pre> <p class="original">You've just created the skeleton for your entire application, complete with @@ -495,7 +496,7 @@ <p>ãã«ãã¤ã³ãµã¼ãã®èµ·å:</p> -<pre class=code><code>$ script/minimojo_server.pl</code></pre> +<pre class="prettyprint"><code>$ script/minimojo_server.pl</code></pre> <p class="original">MiniMojo is already running, though it isn't doing much just yet. (You should have received a web page consisting solely @@ -519,7 +520,7 @@ <p>ãã©ã¤ãã¼ããª<code>end</code> ã¢ã¯ã·ã§ã³ãã¢ããªã±ã¼ã·ã§ã³ã¯ã©ã¹ã<em>lib/MiniMojo.pm</em>ã«è¿½å ãã¾ãã ãã®æ°ãããã¡ã¤ã«ãç·¨éãã¾ã:</p> -<pre class=code><code>sub end : Private { +<pre class="prettyprint"><code>sub end : Private { my ( $self, $c ) = @_; $c->forward('MiniMojo::V::TT') unless $c->res->output; }</code></pre> @@ -542,7 +543,7 @@ <p>ãã«ãã¼ã¹ã¯ãªãããä½ã£ã ã¢ããªã±ã¼ã·ã§ã³ã¯ã©ã¹ã®<code>default</code>ã¢ã¯ã·ã§ã³ãç½®ãæãã¾ã:</p> -<pre class=code><code>sub default : Private { +<pre class="prettyprint"><code>sub default : Private { my ( $self, $c ) = @_; $c->forward('/page/show'); }</code></pre> @@ -578,7 +579,7 @@ <p>次ã«ã<em>minimojo.sql</em>ã¨ãããã¡ã¤ã«ãä½ãã¾ãã SQLiteã«<code>page</code>ãã¼ãã«ãã»ããã¢ããããSQLã§ãã</p> -<pre class=code><code>-- minimojo.sql +<pre class="prettyprint"><code>-- minimojo.sql CREATE TABLE page ( id INTEGER PRIMARY KEY, title TEXT, @@ -590,7 +591,7 @@ <p>ããããããã¼ã¿ãã¼ã¹ãä½æãã¾ãã<code>sqlite</code>ã³ãã³ãã©ã¤ã³ããã°ã©ã ã使ãã¾ã:</p> -<pre class=code><code>$ sqlite minimojo.db < minimojo.sql</code></pre> +<pre class="prettyprint"><code>$ sqlite minimojo.db < minimojo.sql</code></pre> <p class="original">Depending on your setup, it might be necessary to call this as <code>sqlite3</code>.</p> @@ -600,9 +601,9 @@ <p>ãã«ãã¼ã¹ã¯ãªããã§Modelã¯ã©ã¹ã¨åºæ¬ã®ã¦ããããã¹ããä½ãã¾ã(Figure 3ã«çµæãããã¾ã):</p> -<pre class=code><code>$ script/minimojo_create.pl model CDBI CDBI dbi:SQLite:/path/to/minimojo.db</code></pre> +<pre>$ script/minimojo_create.pl model CDBI CDBI dbi:SQLite:/path/to/minimojo.db</pre> -<p><img src="http://www.perl.com/2005/06/02/graphics/model-create-screenshot.gif" alt="Model-creation screenshot" height="372" width="515"><br><em>Figure 3. Creating the model</em></p> +<p><img src="http://www.perl.com/2005/06/02/graphics/model-create-screenshot.gif" height="372" width="515" alt="Model-creation screenshot"><br><em>Figure 3. Creating the model</em></p> <p class="original">The <em>minimojo_create.pl</em> script is a helper that uses Template Toolkit to automate the creation of particular modules. The previous command @@ -631,7 +632,7 @@ <p>ãã«ãã¼ã¹ã¯ãªããã«ããViewã¯ã©ã¹ã®ä½æ:</p> -<pre class=code><code>$ script/minimojo_create.pl view TT TT</code></pre> +<pre class="prettyprint"><code>$ script/minimojo_create.pl view TT TT</code></pre> <p class="original">View classes go into <em>lib/MiniMojo/V/</em>.</p> @@ -643,7 +644,7 @@ <p>ãã«ãã¼ã¹ã¯ãªããã«ãã<code>Page</code>Controllerã¯ã©ã¹ãä½ãã¾ã:</p> -<pre class=code><code>$ script/minimojo_create.pl controller Page</code></pre> +<pre class="prettyprint"><code>$ script/minimojo_create.pl controller Page</code></pre> <p class="original">Controller classes live in <em>lib/MiniMojo/C/</em>.</p> @@ -653,7 +654,7 @@ <p><em>lib/MiniMojo/C/Page.pm</em>ã«<code>show</code>ã¢ã¯ã·ã§ã³ã追å ãã¾ã:</p> -<pre class=code><code>sub show : Regex('^(\w+)\.html$') { +<pre class="prettyprint"><code>sub show : Regex('^(\w+)\.html$') { my ( $self, $c ) = @_; $c->stash->{template} = 'view.tt'; # $c->forward('page'); @@ -684,7 +685,7 @@ <p><em>root/view.tt</em>ãä½ãã¾ã:</p> -<pre class=code><code><html> +<pre class="prettyprint"><code><html> <head><title>MiniMojo</title></head> <body> <h1>MiniMojo is set up!</h1> @@ -713,7 +714,7 @@ <p><code>Prototype</code> 㨠<code>Textile</code> ãã©ã°ã¤ã³ã使ãããã«ã ã¢ããªã±ã¼ã·ã§ã³ã¯ã©ã¹ã®<em>lib/MiniMojo.pm</em>ãå¤æ´ãã¾ããã:</p> -<pre class=code><code>use Catalyst qw/-Debug Prototype Textile/;</code></pre> +<pre class="prettyprint"><code>use Catalyst qw/-Debug Prototype Textile/;</code></pre> <p class="original"> Note that you can use the plugins by specifying their base names; Catalyst @@ -731,7 +732,7 @@ ãã¼ã¸Viewã¨ãç·¨éã®ã³ã¼ãã追å ãã¾ã:</p> -<pre class=code><code>sub page : Private { +<pre class="prettyprint"><code>sub page : Private { my ( $self, $c, $title ) = @_; $title ||= $c->req->snippets->[0] || 'Frontpage'; my $query = { title => $title }; @@ -759,7 +760,7 @@ <p><code>show</code>ã¢ã¯ã·ã§ã³ä¸ã®<code>$c->forward('page');</code>ãã³ã¡ã³ããå¤ãã¾ãã</p> -<pre class=code><code>sub edit : Local { +<pre class="prettyprint"><code>sub edit : Local { my ( $self, $c, $title ) = @_; $c->forward('page'); $c->stash->{page}->body( $c->req->params->{body} ) @@ -803,7 +804,7 @@ <p><em>root/view.tt</em> ãå¤æ´ããAjax codeãå«ãã¾ã:</p> -<pre class=code><code><html> +<pre class="prettyprint"><code><html> <head><title>MiniMojo</title></head> [% c.prototype.define_javascript_functions %] [% url = base _ 'page/edit/' _ page.title %] @@ -821,7 +822,7 @@ <p>ãã®è¡:</p> -<pre class=code><code>[% c.prototype.define_javascript_functions %]</code></pre> +<pre class="prettyprint"><code>[% c.prototype.define_javascript_functions %]</code></pre> <p class="original">includes the whole <em>prototype.js</em> library in a <code>script</code> block. Note that the <code>prototype</code> plugin is available in the context @@ -832,7 +833,7 @@ <p>ã»ã¯ã·ã§ã³</p> -<pre class=code><code>[% url = base _ 'page/edit/' _ page.title %] +<pre class="prettyprint"><code>[% url = base _ 'page/edit/' _ page.title %] <body Onload="new Ajax.Updater( 'view', '[% url %]' )"> <h1>[% page.title %]</h1> <div id="view"></div></code></pre> @@ -844,14 +845,14 @@ <p>æå¾ã«:</p> -<pre class=code><code><textarea id="editor" rows="24" cols="80">[% page.body %]</textarea> +<pre class="prettyprint"><code><textarea id="editor" rows="24" cols="80">[% page.body %]</textarea> [% c.prototype.observe_field( 'editor', { url => url, with => "'body='+value", update => 'view' } ) %]</code></pre> -<p>periodically checks the <code>textarea</code> for changes and makes an Ajax +<p class="original">periodically checks the <code>textarea</code> for changes and makes an Ajax request on demand.</p> <p>å®æçã« <code>textarea</code> ããå¤æ´ãããããã§ãã¯ãããã¼ã¢ã³ã§Ajaxãªã¯ã¨ã¹ããä½ãã¾ãã</p>