パソ歴10年にして初めて電源が入らないという事態に陥りました。
本日ハードディスクを増設したばかりのfedora coreの入ったマシンがうんともすんともいわなくなりました。
原因はまだわからないけど、電源が入らないということでおそらく電源ユニットかマザーボード。
メールサーバーに使ったりや大事なデータも入ってるマシンなので復旧させることに。
HDは無事なので、今回の家庭内ネットワーク再構築の後に引退してもらおうと思ってたwindowsマシンが転がってたので、それにfedoraの入ったHDを繋いでその場を凌ぐことにしました。
しかし、こういうものは一筋縄にはいかないものでfedoraが起動途中にこんなメッセージがでて止まってしまう始末。
(Repair filesystem)1#
直前のメッセージをみると増設したセカンダリのHDを繋げてないからマウントできないよーみたいなことをいってるっぽい。
(serial ATAに繋ぐケーブルがないため繋げてなかったのです。)
起動時のマウントを解除すべくfstabを開く。
#vi f/etc/stab
で、/dev/sdaの記述のあるところをコメントアウトしたけど、なぜかreadonlyで保存できない。。
fstabを無理矢理読み書きできるようにマウントしなおし。
(Repair filesystem) # mount -o rw,remount /
すると保存できるようになるので、保存して再起動。
とりあえず、無事復旧。
さて、壊れたパソコンはどうしたものか。
電源ユニットの故障かマザーボードの故障かわからないのでパーツを買い換えることも怖いな。
重い腰を上げて自宅のfedora core5にハードディスクを増設しました。
serial ATAの500Gを買い設置しようとしたらserialATAにつなぐ電源がない。。。
セカンダリ用に予備があるものと思い込んでた自分が悪いけどショック。
近所のtwo topで従来のHDD用4ピン電源コネクタを変換し、シリアルATA電源コネクタにするケーブルってのがあったのでそれを購入。
ハードの設置は簡単。
その後のfedoraでフォーマットとかが初めてだったのでドキドキしたけどここを参考に無事完了。
想定外だったのが普通プライマリーが/dev/sdaとなるところ、うちのはプライマリが/dev/sdbで追加したセカンダリが/dev/sdaとなってました。
ちなみに参考元はultra ATAなのでhdaやhdbの表記です。
自分なりにまとめようかと思ったけど事件がおこったため中止。
久々にmacについて書いてみる。
macに移行してやるみたいな記事を書いたけど、結局ハードディスクを250Gに増強し、macbookに80Gをleopardに170Gをvistaに割り当てvistaメインで使ってます。
macは気分転換用くらいに。。
vistaをNTFSで使うにしてもBootCampセットアップアシスタント上では何も設定できません。FAT32になってしまいます。
NTFSにするには、とりあえずFAT32にパーティションを分けてvistaのインストールを開始します。
プロダクトキーの入力やライセンス関連がおわった後に、Windowsのインストール場所を指定する画面がでてきます。
そこでFAT32のとこにインストールしようとしても、vistaがこのフォーマットじゃインストールできませんよ、みたいなことを言われるので
右下のドライブオプション(詳細)をクリックします。
そこでフォーマットの選択ができるのでNTFSでフォーマットかけてやれば、元に戻ってインストールを再開できます。
一瞬あせってしまったので、一応メモ。
それにしてもvista快適。
「vista使えね」とかいうやつは、実際使ったのか問い詰めたい。ただのアンチじゃないの?
「unix > windows」「FX >> IE」という図式を支持してたらプロっぽいってだけじゃないの?(特にこの業界)
個人的にはwindowsやIEはもっと評価されてもいいと思う。
市場的シェアでは評価されてるかもしれないけど、(こんな仕事していうのもなんだけど)一部の人間がセキュリティセキュリティと騒ぎすぎる気がする。
ネットのリテラシーが高い人間はmacやfirefoxを使うイメージがあるけど、一企業が作りだしたwindowsやIEにはそれなりの金額の払う価値はあると思う。
オープンソースはネットの社会ですばらしい文化で後世に受け継がれるべきものと思うけど、先人が作りだしたソフトウェアセールスというのも存続すべき。
windowsを売りだしたことどれだけの経済価値を生みだしたか従業員の家族やステークホルダを生活を守ってきたか、どれだけのユーザーの生活を快適にさせてきたかを考えるべき。
結局microsoftの企業体質にあるんかなーとも思ったりする。
まあ、どうでもいいことなんだけど。
articlesとreviewsが1対多の関係ので、両方のテーブルからデータ取得するときは:includeオプションを使うに限る。
aa = Article.find(:all, :include=>:reviews)
pp aa
結果
#<Article:0xb6dc1f5c
@attributes=
{"image_url"=>"/images/test1.gif",
"category"=>"筆記具・修正用品",
"price"=>"4500.00",
"title"=>"Test1",
"date"=>"2006-06-21 19:00:00",
"id"=>"1",
"description"=>"テスト1です。",
"vender"=>"test"},
@reviews=
[#<Review:0xb6dc14f8 @attributes={"com"=>"コメント1", "id"=>"1", "article_id"=>"1"}>, #<Review:0xb6dc123c @attributes={"com"=>"コメント2", "id"=>"2", "article_id"=>"1"}>]>
これ知らないの?といわれそうだけど。。
コントローラーで宣言した変数をテンプレートで表示する時。
@hoge = "あああ"
$hoge = "いいい"
テンプレートファイル
< %= @hoge %>
< %= $hoge %>
$も@もなければローカル変数になるのね。
Ruby on Railsのデバッグする方法は色々紹介されてるけど、一番オーソドックスであろうppを使ってみた。
案の定はまったけど、phpのprint_rに一番近いので手になじみやすいかも。
まず、コントローラーのclassの記述より上で呼び出し
require 'pp'
そして、コードのどこかに下記にように記述
pp @articles
phpをやる人間からすると当然ブラウザに変数が吐き出されるかと思いがちだけど、WEBrickのログ?みたいな感じでコンソールに表示されます。
これがわかるだけでも開発効率は高まりそう。
Ruby on Railsをちょくちょく勉強しては壁に当たってやめてしまってたけど今回はちょっと本腰いれて勉強中。
参考にさせてもらってるサイトは色々あるけど、一番参考にしてるのはこのサイトです。
レベル低すぎて人に見せたくないけど、とりあえず思いついたまま覚書メモ。
■DBの設定
テーブルの作成。
Migrationとかまだよくわかってないので手動で作成。
気をつけるとことは、やはりテーブル名を複数形にすること。
idはrailsの規約上「id」。
複数形にできないテーブル名のときはどうすんだろう?
drop table if exists articles;
create table articles ( id int not null auto_increment,
title varchar(100) not null,
description text null,
image_url varchar(200) not null,
price decimal(10,2) not null,
date datetime not null,
vender varchar(100) not null,
category varchar(100) not null,
primary key (id)
);
■DB情報をrailsに知らせる
DBへの接続情報をプロジェクト以下のconfig/database.ymlに記述
yml形式なので:の後は空白をあける
production:
adapter: mysql
database: office
username: root
password: hoge
host: localhost
■scaffoldでCRUD作成
これでモデルもコントローラーも同時に作成
ruby script/generate scaffold Article Admin
モデル名は「Article」、コントローラー名は「Admin」をscaffoldで作成という意味。
命名規則があり、テーブル名はすべて小文字の複数形で、モデル名はテーブル名の単数形、先頭の文字が大文字というふうにする。
■サーバー起動
最終的にはapacheで動かすけど、テスト時はrailsのサーバー(WEBrick)を使います。
このサーバーはポート3000を使うのでアクセス時は、http://localhost:3000/admin/listという感じでつなげる。
ちなみにこのadminはコントローラー名、listはその中で定義されてるメソッド名
ruby script/server
バックグランドで走らす場合
ruby script/server -d
これでとりあえずOK
http://localhost:3000/admin