pdfのパスワードを調べる

2010年8月17日

またRoRと関係ないぜ。

pdfのパスワードが分からなくなってしまったら、

pdfcrackを使うとよいぜ。

Windows版はこちらだぜ。

使い方はGIGAZINEさんとか、いろいろ出てるから解説しないぜ。

厳密にはかったわけじゃないけど、U(L)inux版の方が速いような気がするぜ。

でも、どちらにしても、単純なパスワードじゃなければ結構時間はかかるわな。

のんびりいこうヽ(´ー`)ノ

条文の漢数字を全角算用数字に変換してやる(Perl UTF-8)

2010年7月29日

あ~すみません。またPerlの話題です。

総務省の法律条文検索すると、漢数字が使われているこんなページが出てきますよね。
例:特許法
http://law.e-gov.go.jp/htmldata/S34/S34HO121.html

まあ、これをび~っとコピペして、UTF-8のテキストファイルにし、
Perlを使って条文と、年月日と、円の表記の漢数字を全角算用数字に変換しようという試みです。

Rubyだと、結構いろいろみんな試しているですね。
http://d.hatena.ne.jp/rubikitch/20081201/1228142072

Perlだと、すでにLingua::JA::Numbersモジュールというのがあって、それを使うと楽らしい、、、と。
http://www2u.biglobe.ne.jp/MAS/perl/waza/kansuji.html

と、まあ、いろいろ先人達の残してくれた知恵を使うと楽は楽なのですが、
それはそれ、自分でも作ってみることにしました。
(というより、本当は、作った後に探せばあるということに気が付いた。悔しいので公開)

で、ソースはこちら。
■名前はない(format.plといういい加減な命名なので大きな声では言えない)

#!/usr/bin/perl

use strict;
use utf8;
use encoding("utf-8");

unless ( -e $ARGV[0] ) {
	print "Usage: \$perl format.pl 対象テキストファイル\n";
} else {

	my $filename;
	my $filename_new;

	$filename = $ARGV[0];
	$filename_new = "new_".$filename;

	open (IN, "<:utf8", $filename) || die "Error \n";

	`echo -n "" > $filename_new;`;

	while (<IN>) {
		my $line;
		my $trans;
		my $i;
		my @lists;

		# 1行分を$lineに代入する。
		$line = $_;

		# 号はタブで字下げする
		$line =~ s/^([一二三四五六七八九十])/\t$1/g;

		# "章"を変換する
		@lists = ();
		$trans = "";
		$i = "";
		push( @lists, ($line=~m/(第?[一二三四五六七八九〇十百千]+章[の]?[一二三四五六七八九〇十]*[の]?[一二三四五六七八九〇十]*)/g) );
		foreach $i (@lists) {
			$trans =  &func_TransKansuuji( $i );
			$line =~ s/第?[一二三四五六七八九〇十百千]+章[の]?[一二三四五六七八九〇十]*[の]?[一二三四五六七八九〇十]*/$trans/;
		}

		# "条"を変換する
		@lists = ();
		$trans = "";
		$i = "";
		push( @lists, ($line=~m/(第?[一二三四五六七八九〇十百千]+条[の]?[一二三四五六七八九〇十]*[の]?[一二三四五六七八九〇十]*)/g) );
		foreach $i (@lists) {
			$trans =  &func_TransKansuuji( $i );
			$line =~ s/第?[一二三四五六七八九〇十百千]+条[の]?[一二三四五六七八九〇十]*[の]?[一二三四五六七八九〇十]*/$trans/;
		}

		# "項"の見出しを変換
		@lists = ();
		push( @lists, ($line=~m/(^[一二三四五六七八九〇十百]+)/) );
		foreach $i (@lists) {
			$trans =  &func_TransKansuuji( $i );
			$line =~ s/^[一二三四五六七八九〇十百]+/$trans/;
		}

		# "項"を変換
		@lists = ();
		push( @lists, ($line=~m/(第?[一二三四五六七八九〇十百]+項)/g) );
		foreach $i (@lists) {
			$trans =  &func_TransKansuuji( $i );
			$line =~ s/第?[一二三四五六七八九〇十百]+項/$trans/;
		}

		# "号"の見出しを変換
		@lists = ();
		push( @lists, ($line=~m/(^\t[一二三四五六七八九〇十百]+)/) );
		foreach $i (@lists) {
			$trans =  &func_TransKansuuji( $i );
			$line =~ s/^\t[一二三四五六七八九〇十百]+/$trans/;
		}

		# "号"を変換
		@lists = ();
		push( @lists, ($line=~m/(第?[一二三四五六七八九〇十百]+号)/g) );
		foreach $i (@lists) {
			$trans =  &func_TransKansuuji( $i );
			$line =~ s/第?[一二三四五六七八九〇十百]+号/$trans/;
		}

		# "年"を変換
		@lists = ();
		push( @lists, ($line=~m/([一二三四五六七八九〇十百千]+年)/g) );
		foreach $i (@lists) {
			$trans =  &func_TransKansuuji( $i );
			$line =~ s/[一二三四五六七八九〇十百千]+年/$trans/;
		}

		# "月"を変換
		@lists = ();
		push( @lists, ($line=~m/([一二三四五六七八九〇十]+月)/g) );
		foreach $i (@lists) {
			$trans =  &func_TransKansuuji( $i );
			$line =~ s/[一二三四五六七八九〇十]+月/$trans/;
		}

		# "日"を変換
		@lists = ();
		push( @lists, ($line=~m/([一二三四五六七八九〇十百]+日)/g) );
		foreach $i (@lists) {
			$trans =  &func_TransKansuuji( $i );
			$line =~ s/[一二三四五六七八九〇十百]+日/$trans/;
		}

		# "円"を変換
		@lists = ();
		push( @lists, ($line=~m/([一二三四五六七八九〇十百千万億]+円)/g) );
		foreach $i (@lists) {
			$trans =  &func_TransKansuuji( $i );
			$line =~ s/[一二三四五六七八九〇十百千万億]+円/$trans/;
		}

		#
		# 変換の終わった行をファイルに書き込む
		#
		`echo -n "$line" >> $filename_new;`
	}
	close(IN);
}

####################################
# Sub func_TransKansuuji
# 漢数字を全角算用数字に変換する
# 0-9999まで対応
####################################
sub func_TransKansuuji{

	use utf8;
	use encoding("utf-8");

	my $val;
	$val = $_[0];

	# 漢数字を変換する
	$val =~ s/一/1/g;
	$val =~ s/二/2/g;
	$val =~ s/三/3/g;
	$val =~ s/四/4/g;
	$val =~ s/五/5/g;
	$val =~ s/六/6/g;
	$val =~ s/七/7/g;
	$val =~ s/八/8/g;
	$val =~ s/九/9/g;
	$val =~ s/〇/0/g;

	#
	# 十の変換
	#

	# (十を削除) 2十1、、、9十9
	$val =~ s/([23456789])十([123456789])/$1$2/g;

	# (十を0に) 2十、3十、、、9十
	$val =~ s/([23456789])十/$10/g;

	# (十を1に) 十1-十9
	$val =~ s/十([123456789])/1$1/g;

	# (十を10に) 十
	$val =~ s/十/10/g;

	#
	# 百の変換
	#

	# (百を削除) 2百10、、、、2百99
	$val =~ s/([23456789])百([123456789][1234567890])/$1$2/g;
	# (百を0に) 2百1ー2百9、、9百1-9百9
	$val =~ s/([23456789])百([123456789])/$10$2/g;

	# (百を00に)2百、3百、、、9百
	$val =~ s/([23456789])百/$100/g;

	# (百を1に) 百10、百11、、、百99
	$val =~ s/百([123456789][1234567890])/1$1/g;

	# (百を10に) 百1-百9
	$val =~ s/百([123456789])/10$1/g;

	# (百を100) 百
	$val =~ s/百/100/g;

	#
	# 千の変換
	#

	# (千を消失)2千100、、9千999
	$val =~ s/([23456789])千([123456789][1234567890][1234567890])/$1$2/g;

	# (千を0に)2千10ー3千99、、、9千99
	$val =~ s/([23456789])千([123456789][1234567890])/$10$2/g;

	# (千を00に)2千1ー2千9、、9千1-9千9
	$val =~ s/([23456789])千([123456789])/$100$2/g;

	# (千を000に)2千、3千、、9千
	$val =~ s/([23456789])千/$1000/g;

	# (千を1に)千100-千999
	$val =~ s/千([123456789][1234567890][1234567890])/1$1/g;

	# (千を10に)千10ー千99
	$val =~ s/千([123456789][1234567890])/10$1/g;

	# (千を100に)千1ー千9
	$val =~ s/千([123456789])/100$1/g;

	# (千を1000に) 千
	$val =~ s/千/1000/g;

	return $val;
}

おいら、PerlとかRubyの省略記法とか特殊変数って、すぐ忘れちゃって苦手なんすですよね。
このソースコードもあと数か月で理解不能のものになる可能性は大きく、、、

mediawikiのAPIから記事を読みこむ:その4

2010年7月23日

いい加減、mediawikiに記事を作っていくのがめんどくさくなったのであった。

そこで、定番のインポート機能がないかと探していたところ。。。

あった。

How to migrate a lot of text files

  • maintenance/edit.php
  • maintenance/importTextFile.php

という2種類が使えそうでした。

さて、helpをみると、、、

●edit.phpのヘルプ

$ php edit.php --help
Edit an article from the command line

Usage: php edit.php [options...] 

Options:
  -u <user>         Username
  -s
<summary>      Edit summary
  -m                Minor edit
  -b                Bot (hidden) edit
  -a                Enable autosummary
  --no-rc           Do not show the change in recent changes

If the specified user does not exist, it will be created.
The text for the edit will be read from stdin.</pre>
<p><strong>●importTextFile.phpのヘルプ</strong></p>
<pre>$ php importTextFile.php --help
Import Text File

USAGE: php importTextFile.php
<options> <filename>

<filename> : Path to the file containing page content to import

Options:

--title <title>
        Title for the new page; default is to use the filename as a base
--user <user>
        User to be associated with the edit
--comment <comment>
        Edit summary
--nooverwrite
        Don't overwrite existing content
--norc
        Don't update recent changes
--help
        Show this information</pre>
<p>ふむふむ。</p>
<p>ほいじゃ、こんな<strong>perlスクリプト</strong>を書いてみたよ。</p>
<pre>#!/usr/bin/perl

my $dir = './';

opendir DH, $dir or die "$dir:$!";
while (my $file = readdir DH) {
        next if $file =~ /^\.{1,2}$/;
        next if $file =~ /\.pl$/;
        next if !(-f $file);

        `/usr/bin/php ../importTextFile.php --user 編集部 $file`;
}
closedir DH;</pre>
<p>このスクリプトをインポートするファイルがたくさん入っているディレクトリ内で、実行すると、mediawikiにガンガンページができていくのでした。</p>
<p>Railsと何も関係ないし、しかもRubyとも関係ないじゃねーかと思うんですが、Perlのほうが馴染みあるからねえ。ごめんなさい。</p>
				</div>

				<p class="postmetadata"> カテゴリー: <a href="http://www.kuwazou.net/blog/rails/?cat=15" title="2-1.mediawikiのAPIから記事を読み込む の投稿をすべて表示" rel="category">2-1.mediawikiのAPIから記事を読み込む</a>, <a href="http://www.kuwazou.net/blog/rails/?cat=14" title="2.Rails vs MediaWiki の投稿をすべて表示" rel="category">2.Rails vs MediaWiki</a> |   <a href="http://www.kuwazou.net/blog/rails/?p=231#respond" title="mediawikiのAPIから記事を読みこむ:その4 へのコメント">コメントはまだありません »</a></p>
			</div>

		
			<div class="post-225 post type-post hentry category-2-1-mediawikiapi category-2-rails-vs-mediawiki" id="post-225">
				<h2><a href="http://www.kuwazou.net/blog/rails/?p=225" rel="bookmark" title="mediawikiのAPIから記事を読みこむ:その3 のパーマリンク">mediawikiのAPIから記事を読みこむ:その3</a></h2>
				<small>2010年7月16日 <!-- by くわぞう --></small>

				<div class="entry">
					<p><strong>api.php?action=parse&page=Ruby&prop=text</strong><br />
(”Ruby”はページ名のつもり)</p>
<p>おお、この方法だと、ちゃんと<strong>Wiki記法がHTMLでレンダリング</strong>されてでてくるぞ!</p>
<p>ということで、ちょっと変えてみた。</p>
<p><strong>●rubyスクリプト</strong></p>
<pre>
def hoge
  require 'rubygems'
  gem 'rbmediawiki'
  require 'rbmediawiki'

  mysite = Api.new("ja", nil, nil,
   'http://example.jp',
   'http://example.jp/wiki/api.php')
  mysite.format("txtfm")
  puts mysite.parse(nil, nil, "Ruby", nil, nil, "text")
end

hoge()
</pre>
<p>よしよし。</p>
<p>そんで、Railsにのせてみた。<br />
<strong>●app/controllers/application_controller.rb</strong></p>
<pre>
class ApplicationController < ActionController::Base
# 省略
  def self.hoge()
    require 'rubygems'
    gem 'rbmediawiki'
    require 'rbmediawiki'

    mysite = Api.new("ja",nil,nil,
    	'http://example.jp',
    	'http://example.jp/wiki/api.php')
    return mysite.parse(nil, nil, "Ruby", nil, nil, "text")
  end
end
</pre>
<p><strong>●app/views/hogehoge/index.html.erb</strong></p>
<pre>
# 省略
<%= ApplicationController::hoge() %>
</pre>
<p>よしよし。</p>
<p>次は、ハイパーリンクが相対パスになっているのを絶対パスにして、ActiveResourceを使う(のかもしれない)</p>
				</div>

				<p class="postmetadata"> カテゴリー: <a href="http://www.kuwazou.net/blog/rails/?cat=15" title="2-1.mediawikiのAPIから記事を読み込む の投稿をすべて表示" rel="category">2-1.mediawikiのAPIから記事を読み込む</a>, <a href="http://www.kuwazou.net/blog/rails/?cat=14" title="2.Rails vs MediaWiki の投稿をすべて表示" rel="category">2.Rails vs MediaWiki</a> |   <a href="http://www.kuwazou.net/blog/rails/?p=225#respond" title="mediawikiのAPIから記事を読みこむ:その3 へのコメント">コメントはまだありません »</a></p>
			</div>

		
			<div class="post-218 post type-post hentry category-2-1-mediawikiapi category-2-rails-vs-mediawiki" id="post-218">
				<h2><a href="http://www.kuwazou.net/blog/rails/?p=218" rel="bookmark" title="mediawikiのAPIから記事を読みこむ:その2 のパーマリンク">mediawikiのAPIから記事を読みこむ:その2</a></h2>
				<small>2010年7月15日 <!-- by くわぞう --></small>

				<div class="entry">
					<p><a href="http://www.kuwazou.net/blog/rails/?p=212">ということで</a></p>
<p><a href="http://rubyforge.org/projects/rbmediawiki/">rbmediawiki</a><br />
をつかってみたよ!</p>
<p>やりたいことは、決まったタイトルのページを引っ張ってきて、そこにWikiタグが残らずに、かつ、ハイパーリンクがちゃんとした形で残っててほしかったのですが、、、</p>
<p><strong>■rbmediawikiのインストール</strong></p>
<pre>
# gem install rbmediawiki
Successfully installed rbmediawiki-0.2.6.2
1 gem installed
Installing ri documentation for rbmediawiki-0.2.6.2...
Installing RDoc documentation for rbmediawiki-0.2.6.2...
</pre>
<p><strong>■xml-simpleというのも必要らしい</strong></p>
<pre>
# gem install xml-simple
Successfully installed xml-simple-1.0.12
1 gem installed
Installing ri documentation for xml-simple-1.0.12...
Installing RDoc documentation for xml-simple-1.0.12...
</pre>
<p>そして、<br />
<strong>http://~api.php?action=query&titles=Ruby&export&format=xml<br />
</strong>をコードから取得できるようにする。</p>
<p><strong>■そして、やっとこさ動いたサンプルコード</strong></p>
<pre>
def hoge
        require 'rubygems'
        gem 'rbmediawiki'
        require 'rbmediawiki'

        mysite = Api.new("ja", nil, nil, 
        'http://example.jp', 
        'http://example.jp/wiki/api.php')

        mypage = Page.new("メインページ",mysite)
     puts mypage.get
end

hoge()
</pre>
<p>。。。しかし、これはただ、Wiki記法のままのテキストを引っ張ってくるにすぎなかった!</p>
<p>なんか、いい方法はないものか?</p>
<p>続く(かどうかはわからない)</p>
				</div>

				<p class="postmetadata"> カテゴリー: <a href="http://www.kuwazou.net/blog/rails/?cat=15" title="2-1.mediawikiのAPIから記事を読み込む の投稿をすべて表示" rel="category">2-1.mediawikiのAPIから記事を読み込む</a>, <a href="http://www.kuwazou.net/blog/rails/?cat=14" title="2.Rails vs MediaWiki の投稿をすべて表示" rel="category">2.Rails vs MediaWiki</a> |   <a href="http://www.kuwazou.net/blog/rails/?p=218#respond" title="mediawikiのAPIから記事を読みこむ:その2 へのコメント">コメントはまだありません »</a></p>
			</div>

		
			<div class="post-212 post type-post hentry category-2-1-mediawikiapi category-2-rails-vs-mediawiki" id="post-212">
				<h2><a href="http://www.kuwazou.net/blog/rails/?p=212" rel="bookmark" title="mediawikiのAPIから記事を読みこむ のパーマリンク">mediawikiのAPIから記事を読みこむ</a></h2>
				<small>2010年7月15日 <!-- by くわぞう --></small>

				<div class="entry">
					<p>まあ、別に目新しくもない方法なんですが、<br />
<a href="http://www.mediawiki.org/wiki/MediaWiki/ja">mediawiki</a>に、<br />
<strong>http://~api.php?action=query&titles=Ruby&export&format=xml</strong><br />
とかやると、xml形式で記事が取得できますね。</p>
<p>これ、どないして使おうか。<br />
<a href="http://www.mediawiki.org/wiki/API:Client_code#Ruby">http://www.mediawiki.org/wiki/API:Client_code#Ruby</a><br />
やっぱりここらへんのを使うと楽なのだろうか。</p>
<p>まあ、やってみよう。<br />
できたらうれしい。</p>
				</div>

				<p class="postmetadata"> カテゴリー: <a href="http://www.kuwazou.net/blog/rails/?cat=15" title="2-1.mediawikiのAPIから記事を読み込む の投稿をすべて表示" rel="category">2-1.mediawikiのAPIから記事を読み込む</a>, <a href="http://www.kuwazou.net/blog/rails/?cat=14" title="2.Rails vs MediaWiki の投稿をすべて表示" rel="category">2.Rails vs MediaWiki</a> |   <a href="http://www.kuwazou.net/blog/rails/?p=212#respond" title="mediawikiのAPIから記事を読みこむ へのコメント">コメントはまだありません »</a></p>
			</div>

		
			<div class="post-209 post type-post hentry category-0-yodan" id="post-209">
				<h2><a href="http://www.kuwazou.net/blog/rails/?p=209" rel="bookmark" title="PowerEdge T105 にバルク品のメモリがささった のパーマリンク">PowerEdge T105 にバルク品のメモリがささった</a></h2>
				<small>2010年7月13日 <!-- by くわぞう --></small>

				<div class="entry">
					<p>やったー。<br />
うちのDell PowerEdge T105 にバルク品のメモリ<br />
DDR2-SDRAM PC2-6400 (800MHz) 2GB x 4<br />
がささって、</p>
<p><strong>8GB</strong></p>
<p>になったぞー!!!</p>
<p>購入は<br />
<a href='http://www.arkm2.com/' target='_blank'>価格.comのアンジ-さん</a></p>
<p>※BIOS 1.4.4ね。</p>
				</div>

				<p class="postmetadata"> カテゴリー: <a href="http://www.kuwazou.net/blog/rails/?cat=1" title="0. よだん の投稿をすべて表示" rel="category">0. よだん</a> |   <a href="http://www.kuwazou.net/blog/rails/?p=209#respond" title="PowerEdge T105 にバルク品のメモリがささった へのコメント">コメントはまだありません »</a></p>
			</div>

		
			<div class="post-195 post type-post hentry category-0-yodan" id="post-195">
				<h2><a href="http://www.kuwazou.net/blog/rails/?p=195" rel="bookmark" title="またメモリを間違って買ってしまった。。。 のパーマリンク">またメモリを間違って買ってしまった。。。</a></h2>
				<small>2010年7月8日 <!-- by くわぞう --></small>

				<div class="entry">
					<p>うちのPowerEdge T105には、<br />
このメモリは認識されませんでした。<br />
\14,000- 。。。泣けてくる。。。</p>
<p>–<br />
商品名<br />
DELL純正 PC2ーPC5300 DDR2 667MHz Registered ECC 4GB(2GB×2枚)デュアルチャネル対応 SAMSUN製<br />
商品説明<br />
PC5300 PC2ー667 DDR2 667MHz<br />
Registered ECC<br />
4GB(2GB×2枚)<br />
SAMSUN製<br />
デュアルチャンネル対応です。<br />
付属品<br />
なし<br />
商品の状態<br />
Registered ですのでお間違いないようお願いします。<br />
新品同様、動作確認済み。<br />
画像を使い回す場合がありロットNO等が異なる場合もあります。<br />
対応機種<br />
PowerEdge 2970<br />
PowerEdge 6950<br />
PowerEdge SC1435<br />
PowerEdge T300<br />
上記以外は不明<br />
<strong>レジスタード</strong>ですのでお間違いのないようお願いします。<br />
–</p>
<p><a href="http://pc.usy.jp/wiki/index.php?PowerEdge/T105">http://pc.usy.jp/wiki/index.php?PowerEdge/T105<br />
</a>で見て、自分で判断した限り、全然大丈夫だと思ったのだが。。。</p>
<p><span style="color: #ff0000;"><strong>そうか、Unbufferedの対語がRegisteredなのか!!!(涙)</strong></span></p>
				</div>

				<p class="postmetadata"> カテゴリー: <a href="http://www.kuwazou.net/blog/rails/?cat=1" title="0. よだん の投稿をすべて表示" rel="category">0. よだん</a> |   <a href="http://www.kuwazou.net/blog/rails/?p=195#respond" title="またメモリを間違って買ってしまった。。。 へのコメント">コメントはまだありません »</a></p>
			</div>

		
			<div class="post-76 post type-post hentry category-1-5-generate-controller- category-1-rails" id="post-76">
				<h2><a href="http://www.kuwazou.net/blog/rails/?p=76" rel="bookmark" title="ページを作る(generate controller の基礎) のパーマリンク">ページを作る(generate controller の基礎)</a></h2>
				<small>2010年6月25日 <!-- by くわぞう --></small>

				<div class="entry">
					<p><strong>※すでに、WEBrickが起動しているものとして、すすめます</strong></p>
<p>まず”hoge”という、サブディレクトリをつくってみようとします。</p>
<p>http://[IPアドレス]:3000/hoge</p>
<p>というURLになる感じですね。</p>
<p>rails_app/mondai2/のところで、</p>
<p><strong>generate controller [ディレクトリ名(Controller名)]</strong></p>
<p>とします。<br />
[ディレクトリ名]というのは少々語弊がありますが、まあそんなもんだと思うべし。</p>
<pre>$ ruby script/generate controller hoge</pre>
<p>※-pオプションをつけると、dry-run、つまり、つくるふりだけで実際にはファイルは作られません。</p>
<p>ま、それはさておきつくります。</p>
<pre>$ ruby script/generate controller hoge
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/hoge
      exists  test/functional/
      create  test/unit/helpers/
      create  app/controllers/hoge_controller.rb
      create  test/functional/hoge_controller_test.rb
      create  app/helpers/hoge_helper.rb
      create  test/unit/helpers/hoge_helper_test.rb</pre>
<p>できました。</p>
<p>重要なのは、</p>
<ul>
<li>create  <strong>app/views/hoge</strong><br />
hogeのhtmlテンプレートを置くディレクトリ<br />
ここにview (.html.erb)をおく。</li>
<li>create  <strong>app/controllers/hoge_controller.rb</strong><br />
hoge内のview(.html.erb)に対応する、<br />
Action(クラスのメソッドね)を記述する</li>
<li>create  <strong>app/helpers/hoge_helper.rb</strong><br />
hoge内のview(.html.erb)に対応する、<br />
カスタムhtmlタグを記述する</li>
</ul>
<p>なんでございまして、</p>
<ul>
<li><strong>app/views/hoge/index.html.erb</strong><br />
をつくります</p>
<pre><html>
  <body>
    <h1>ほげ</h1>
  </body>
</html></pre>
</li>
<li><strong>app/contorollers/hoge_controller.rb</strong><br />
に、Action(メソッド)を書き込みます。</p>
<pre>class HogeController < ApplicationController
    def index
    end
end</pre>
</li>
</ul>
<p>でも、これだけではだめで、</p>
<p>http://[IPアドレス]:3000/hoge</p>
<p>を開いてみても下記のようなページが表示されると思います。</p>
<p><a href="http://www.kuwazou.net/blog/rails/wp-content/uploads/2010/06/WS0000011.jpg"><img class="alignnone size-full wp-image-101" title="WS000001" src="http://www.kuwazou.net/blog/rails/wp-content/uploads/2010/06/WS0000011.jpg" alt="" width="382" height="322" /></a></p>
<p>これはWEBlickが起動している状態で新しいControllerを作ったためで、本来は</p>
<pre>$ rake routes
(in /var/www/rails_app/mondai2)
  /:controller/:action/:id
  /:controller/:action/:id(.:format)</pre>
<p>このルーティングテーブルにマッチして表示されます。<br />
(:actionのDefaultは”index”だし、:idのDefaultはnilのため)</p>
<p>なので、WEBlickを再起動するか、<br />
config/routes.rbをviなどでひらいて、何も書かずに上書きほぞんし、<br />
config/routes.rbファイルのタイムスタンプを更新してやるとちゃんと表示されます。</p>
<ul>ちなみに、今回は、<br />
generate controller [ディレクトリ名(Controller名)]<br />
だけで作成しましたが、</p>
<p><strong>generate controller [ディレクトリ名(Controller名)] [ページ名(Action名)] [ページ名(Action名)] …</strong></p>
<p>例えば、generate controller hoge index<br />
という書き方もできます。</p>
<p>こちらのほうがはるかに楽ですし、railsの流儀に沿っているといってもいいでしょう。</p>
<p>ちょっと試します。</p>
<p>まず、<strong>つくったControllerを壊します</strong>。</p>
<p><strong>destroy controller [ディレクトリ名(Controller名)]</strong></p>
<pre>$ ruby script/destroy controller hoge
          rm  test/unit/helpers/hoge_helper_test.rb
          rm  app/helpers/hoge_helper.rb
          rm  test/functional/hoge_controller_test.rb
          rm  app/controllers/hoge_controller.rb
       rmdir  test/unit/helpers
       rmdir  test/unit
    notempty  test
       rmdir  test/functional
    notempty  test
    notempty  app/views/hoge
    notempty  app/views
    notempty  app
    notempty  app/helpers
    notempty  app
    notempty  app/controllers
    notempty  app</pre>
<p>一応、実験なので、app/views/hogeも手動で消しちゃいます。</p>
<pre>$ ls app/views/hoge/
index.html.erb
$ rm -fr app/views/hoge</pre>
<p>次に、</p>
<div><strong>generate controller [ディレクトリ名(Controller名)] [ページ名(Action</strong><strong>名)]</strong></div>
<pre>$ ruby script/generate controller hoge index
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/hoge
      create  test/functional/
      create  test/unit/helpers/
      create  app/controllers/hoge_controller.rb
      create  test/functional/hoge_controller_test.rb
      create  app/helpers/hoge_helper.rb
      create  test/unit/helpers/hoge_helper_test.rb
      create  app/views/hoge/index.html.erb</pre>
<p>おぉ、<br />
<strong>app/views/hoge/index.html.erb</strong>もつくられているし、</p>
<pre>$ cat app/views/hoge/index.html.erb
<h1>Hoge#index</h1>
<p>Find me in app/views/hoge/index.html.erb</p></pre>
<p><strong>app/controllers/hoge_controller.rb</strong>にindexアクションも出来上がっている</p>
<pre>$ cat app/controllers/hoge_controller.rb
class HogeController < ApplicationController
  def index
  end
end</pre>
<p>ではないか!(知ってたけど)</p>
<p>でもって、config/routes.rbのタイムスタンプを更新してやったりすると、<br />
こんな画面が出てくると思います。<br />
<a href="http://www.kuwazou.net/blog/rails/wp-content/uploads/2010/06/WS000002.jpg"><img class="alignnone size-full wp-image-125" title="WS000002" src="http://www.kuwazou.net/blog/rails/wp-content/uploads/2010/06/WS000002.jpg" alt="" width="384" height="302" /></a></ul>
				</div>

				<p class="postmetadata"> カテゴリー: <a href="http://www.kuwazou.net/blog/rails/?cat=10" title="1-5.ページを作る(generate controller の基礎) の投稿をすべて表示" rel="category">1-5.ページを作る(generate controller の基礎)</a>, <a href="http://www.kuwazou.net/blog/rails/?cat=3" title="1. Rails基礎 の投稿をすべて表示" rel="category">1. Rails基礎</a> |   <a href="http://www.kuwazou.net/blog/rails/?p=76#respond" title="ページを作る(generate controller の基礎) へのコメント">コメントはまだありません »</a></p>
			</div>

		
			<div class="post-72 post type-post hentry category-0-yodan" id="post-72">
				<h2><a href="http://www.kuwazou.net/blog/rails/?p=72" rel="bookmark" title="WordPress 3.0 ja へのUpgrade のパーマリンク">WordPress 3.0 ja へのUpgrade</a></h2>
				<small>2010年6月25日 <!-- by くわぞう --></small>

				<div class="entry">
					<p>すごいなあ、ボタンを押すだけでUpgradeできちゃった。</p>
<p><a href="http://www.kuwazou.net/blog/rails/wp-content/uploads/2010/06/WS000000.jpg"><img class="alignleft size-medium wp-image-73" title="wordpress-3.0-ja" src="http://www.kuwazou.net/blog/rails/wp-content/uploads/2010/06/WS000000-300x254.jpg" alt="wordpress-3.0-ja" width="300" height="254" /></a></p>
				</div>

				<p class="postmetadata"> カテゴリー: <a href="http://www.kuwazou.net/blog/rails/?cat=1" title="0. よだん の投稿をすべて表示" rel="category">0. よだん</a> |   <a href="http://www.kuwazou.net/blog/rails/?p=72#respond" title="WordPress 3.0 ja へのUpgrade へのコメント">コメントはまだありません »</a></p>
			</div>

		
		<div class="navigation">
			<div class="alignleft"><a href="http://www.kuwazou.net/blog/rails/?paged=2" >« 前ページへ</a></div>
			<div class="alignright"></div>
		</div>

	
	</div>

	<div id="sidebar" role="complementary">
		<ul>
						<li>
				<form role="search" method="get" id="searchform" action="http://www.kuwazou.net/blog/rails/" >
	<div><label class="screen-reader-text" for="s">検索:</label>
	<input type="text" value="" name="s" id="s" />
	<input type="submit" id="searchsubmit" value="検索" />
	</div>
	</form>			</li>

			<!-- Author information is disabled per default. Uncomment and fill in your details if you want to use it.
			<li><h2>作成者</h2>
			<p>A little something about you, the author. Nothing lengthy, just an overview.</p>
			</li>
			-->

					</ul>
		<ul role="navigation">
			
			<li><h2>アーカイブ</h2>
				<ul>
					<li><a href='http://www.kuwazou.net/blog/rails/?m=201008' title='2010年8月'>2010年8月</a></li>
	<li><a href='http://www.kuwazou.net/blog/rails/?m=201007' title='2010年7月'>2010年7月</a></li>
	<li><a href='http://www.kuwazou.net/blog/rails/?m=201006' title='2010年6月'>2010年6月</a></li>
				</ul>
			</li>

			<li class="categories"><h2>カテゴリー</h2><ul>	<li class="cat-item cat-item-1"><a href="http://www.kuwazou.net/blog/rails/?cat=1" title="0. よだん に含まれる投稿をすべて表示">0. よだん</a> (7)
<ul class='children'>
	<li class="cat-item cat-item-17"><a href="http://www.kuwazou.net/blog/rails/?cat=17" title="pdfのパスワードを調べる に含まれる投稿をすべて表示">pdfのパスワードを調べる</a> (1)
</li>
	<li class="cat-item cat-item-6"><a href="http://www.kuwazou.net/blog/rails/?cat=6" title="ディレクトリ下のファイル内の文字列置換 に含まれる投稿をすべて表示">ディレクトリ下のファイル内の文字列置換</a> (1)
</li>
	<li class="cat-item cat-item-16"><a href="http://www.kuwazou.net/blog/rails/?cat=16" title="条文の漢数字を全角算用数字に変換してやる(Perl UTF-8) に含まれる投稿をすべて表示">条文の漢数字を全角算用数字に変換してやる(Perl UTF-8)</a> (1)
</li>
</ul>
</li>
	<li class="cat-item cat-item-3"><a href="http://www.kuwazou.net/blog/rails/?cat=3" title="1. Rails基礎 に含まれる投稿をすべて表示">1. Rails基礎</a> (5)
<ul class='children'>
	<li class="cat-item cat-item-5"><a href="http://www.kuwazou.net/blog/rails/?cat=5" title="1-1.Railsのインストールまで に含まれる投稿をすべて表示">1-1.Railsのインストールまで</a> (1)
</li>
	<li class="cat-item cat-item-7"><a href="http://www.kuwazou.net/blog/rails/?cat=7" title="1-2.Railsアプリの作成 に含まれる投稿をすべて表示">1-2.Railsアプリの作成</a> (1)
</li>
	<li class="cat-item cat-item-8"><a href="http://www.kuwazou.net/blog/rails/?cat=8" title="1-3.DB接続を設定するには に含まれる投稿をすべて表示">1-3.DB接続を設定するには</a> (1)
</li>
	<li class="cat-item cat-item-9"><a href="http://www.kuwazou.net/blog/rails/?cat=9" title="1-4.rakeコマンド一覧 に含まれる投稿をすべて表示">1-4.rakeコマンド一覧</a> (1)
</li>
	<li class="cat-item cat-item-10"><a href="http://www.kuwazou.net/blog/rails/?cat=10" title="1-5.ページを作る(generate controller の基礎) に含まれる投稿をすべて表示">1-5.ページを作る(generate controller の基礎)</a> (1)
</li>
</ul>
</li>
	<li class="cat-item cat-item-14"><a href="http://www.kuwazou.net/blog/rails/?cat=14" title="2.Rails vs MediaWiki に含まれる投稿をすべて表示">2.Rails vs MediaWiki</a> (4)
<ul class='children'>
	<li class="cat-item cat-item-15"><a href="http://www.kuwazou.net/blog/rails/?cat=15" title="2-1.mediawikiのAPIから記事を読み込む に含まれる投稿をすべて表示">2-1.mediawikiのAPIから記事を読み込む</a> (4)
</li>
</ul>
</li>
</ul></li>		</ul>
		<ul>
							<li id="linkcat-2" class="linkcat"><h2>ブログロール</h2>
	<ul class='xoxo blogroll'>
<li><a href="http://www.kuwazou.net/blog" title="今は残骸となっているくわぞうメモ 更新できず" target="_blank">くわぞうメモ (Old)</a></li>

	</ul>
</li>

				<li><h2>メタ情報</h2>
				<ul>
										<li><a href="http://www.kuwazou.net/blog/rails/wp-login.php">ログイン</a></li>
					<li><a href="http://validator.w3.org/check/referer" title="このページが XHTML 1.0 Transitional に準拠しているか確認する">Valid <abbr title="eXtensible HyperText Markup Language">XHTML</abbr></a></li>
					<li><a href="http://gmpg.org/xfn/"><abbr title="XHTML Friends Network">XFN</abbr></a></li>
					<li><a href="http://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress</a></li>
									</ul>
				</li>
			
					</ul>
	</div>



<hr />
<div id="footer" role="contentinfo">
<!-- If you'd like to support WordPress, having the "powered by" link somewhere on your blog is the best way; it's our only promotion or advertising. -->
	<p>
		くわぞうメモ 番外: Ruby on Rails 編 is proudly powered by <a href="http://wordpress.org/">WordPress</a>		<br /><a href="http://www.kuwazou.net/blog/rails/?feed=rss2">投稿 (RSS)</a> と <a href="http://www.kuwazou.net/blog/rails/?feed=comments-rss2">コメント (RSS)</a>		<!-- 16個のクエリーと0.930秒を要しました。 -->
	</p>
</div>
</div>

<!-- Gorgeous design by Michael Heilemann - http://binarybonsai.com/kubrick/ -->

		<!-- counter -->
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-17093743-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>

<SCRIPT Language="JavaScript">
<!--
document.write("<img src='http://www.dekoboko.com/acc/acclog.cgi?");
document.write("referrer="+document.referrer+"&");
document.write("width="+screen.width+"&");
document.write("height="+screen.height+"&");
document.write("color="+screen.colorDepth+"'>");
// -->
</SCRIPT>
</body>
</html>