Hatena::ブログ(Diary)

130単位

2011-05-11

『Ruby on Rails 3 アプリケーションプログラミング』の感想とメモ

http://instagr.am/p/Dn66U/

Twitter上での告知をたまたま拝見して応募させていただいたところ、献本(プレゼント)していただきました。ありがとうございます!予想よりも早くGW前に届き、おかげでじっくりと読み進めることができました。

目次

第1章 イントロダクション

第2章 Ruby on Railsの基本

第3章 Scaffolding機能によるRails開発の基礎

第4章 ビュー開発

第5章 モデル開発

第6章 コントローラ開発

第7章 ルーティング

第8章 テスト

第9章 Railsの高度な機能

Ruby on Rails 3 アプリケーションプログラミング:書籍案内|技術評論社

感想

自分自身は本格的にRailsを触り始めて2ヶ月程度です(バージョンは3がメイン)。その中で苦労した点は以下のようなことです。

  • Web上に日本語の情報が圧倒的に少ない
  • Railsがフルスタックなぶん、全体像を理解するのに時間がかかる

これらをまとめて解決してくれるのが、『Ruby on Rails 3 アプリケーションプログラミング』といえると思います。

まずはインストール/Scaffoldがあって、View→Model→Controllerの順で書籍の半分以上がMVCの丁寧な解説になっています。主にメソッドごとに見出しが設けられており、構文、引数の説明、使用サンプル、結果をまとめて確認することができます。application.rbの設定パラメータマイグレーションrakeコマンドなど、項目が多岐にわたる場合は表形式で網羅されており、リファレンスとしても活用できます。

個人的に得るものが多かったのは、第7章のルーティングと第9章のメール/キャッシュの解説です。ルーティングはRESTfulインターフェイスの概念とそのカスタマイズが優先的に解説されており、(Railsでは)リソース中心のURL設計がいかに大事か再考するきっかけになりました。またRailsでのメール/キャッシュはほぼ知識ゼロの状態だったので、細かな解説で飛躍的に理解が深まりました。第9章では国際化やjQueryでのAjaxにも触れられており、初級者以上には有用な内容かと思います。

ひとつ注意点としては、全くのプログラミング初心者がこれ1冊で学ぶのは難しいと思います。ただし他の分野への参考書籍やWebのリンクも載っており、合わせて読むことでカバーできるような配慮もされています。

メモ

はじめて知ったことについて少しメモです。

  • 2章 p35
    • ERBで空白の制御
      • -を付けることで後方スペースを除去
<%= @msg -%>
module Railbook
  class Application < Rails::Application
    config.author = 'YAMADA.Yoshihiro'
    • 呼び出しはRailbook::Application.config.author
      • #もう少し簡潔に呼び出せたほうがいいかなと思ったりする
<title><%= @title ? @title : 'Rails 3入門' %></title>
  • 5章 p225
    • Modelで指定カラムの値をインクリメント
Model.increment(attr, num)
  • 5章 p236
    • 空白入力時に検証スキップ
      • :allow_blankとすることで長さのエラーはスキップされる
validates :isbn,
  :presence => true,
  :length => { :is => 17, :allow_blank => true }
  • 7章 p363
    • ルーティングのnamespace/scopeブロック
#URL/Controllerともに階層化
namespace 'admin' do
  resources :books
end
#Controllerのみ階層化
scope 'admin' do
  resources :books
end

そんなわけで、まもなく発売されます。AmazonにてITカテゴリ予約ランキング1位を獲得もしているようです*1。Rails3をしっかりと習得したい方にはおすすめの一冊です。

4774146633
Ruby on Rails 3 アプリケーションプログラミング

書籍サポートページは以下です。サンプルコードのダウンロードもできます。

Ruby on Rails 3 アプリケーションプログラミング - WINGS
http://www.wings.msn.to/index.php/-/A-03/978-4-7741-4663-8/

関連リンク

関連記事

2011-04-18

Rails3入門電子書籍『はじめる! Rails3(1)』のメモ

はじめる! Rails3(1) - 達人出版会

Rails3入門書の電子書籍です。初心者向けに良いということだったので購入してみました。PayPal支払いで1000円です。購入時のアカウントメールアドレス電子書籍各ページの下に付加されます。

続刊される予定のうちの第一巻ということで、これを読んだだけで実務でのアプリを作れるかというと微妙な感じですが、基礎を学べる日本語の書籍としては最適と思います。

個人的に知らなかった点もいくつかあり、知識が広げられたという意味では読んで良かったです。以下そのメモです。問題ありましたらご指摘ください。

第3章

rails _2.3.8_ appname #バージョン2
rails _3.0.3_ new appname #バージョン3
rails new hinagiku -O

第5章

第6章

  • x.days.from_now で「現在時刻からx日後」を求める
  • シードデータ投入
rake db:seed
rake db:reset

第7章

  • paramsにはシンボルを使うのが一般的(なのだろうか)
params[:id]

第8章

  • link_toの第2引数URLパスよりもシンボルやモデルオブジェクト変数を入れるようにする
    • 構造が複雑になると恩恵を受ける

第10章

  • rails.jsが削除時のフォームを生成と送信処理を行う

第11章

  • アクションは集合(collection)または要素(member)を対象とする
  • routes.rbのresourcesのブロックで :on => :member とすると resources/1/added_actionが認識される
resources :tasks do
	put :finish, :on => :member
end

第12章

第14章

  • Arelのwhere()やorder()は順番は関係ない
  • プレースホルダーの位置に挿入される値は自動的にエスケープされる
  • 引数を取る場合はlambdaを使ってスコープを定義
scope :search, lambda { |query|
	where([ "name LIKE ?", "%#{query}%" ])
}

第15章

bundle list

こちらでサンプルが見られます。

Rubyの入門書としてはこちらがおすすめみたいです。

4797357401
たのしいRuby 第3版

関連リンク

2010-07-03

Macbook 初バックアップ

まだ購入半年にも満たないMacbookのモニタが調子悪いです。サポートセンターに電話したら「初期化すると解消されるかも」というアドバイス。修理は1年の保証期間内なら無料とのことですが、せっかくの機会なので初期化してみることに。んでその前に一応バックアップをということで、やったことのメモです。地味に苦戦しました。

  • バックアップ先として選んだのは以下のUSB外付けHDDキット
  • Macに接続
  • USBつないだら読み込みはできるけど書き込みできないことに気づく
    • NTFSでは書き込みできないらしい
  • Win/Macともに読み書き可能にするにはFAT32にする必要があるらしい
  • Winに接続
  • 以下のソフトでパーティションを再構成
  • Macに接続
  • Macのディスクユーティリティ
    • HDDとしては認識されるものの、既存の構成のまま新たなパーティションはなぜか作れない
    • 全フォーマットしての再構成ならできる模様
  • Winに接続
  • コントロールパネルのディスク管理
    • パーティション作成
    • FAT32でフォーマットしようとしたらなぜかNTFSでしかできない
      • もしかしたら外付けHDDキットの影響かもしれない
  • Macに接続
  • ディスクユーティリティにてパーティションの認識がされた
    • FAT32でフォーマットしようとしたら、Time Machineをおすすめされる
    • Time Machine用にフォーマット(ファイルシステム:Mac OS 拡張)
  • Time Machine設定
    • バックアップ開始
    • 48GBで約1時間半ほどかかった
  • Finderから通常のディレクトリとして閲覧もできる

で、いまココというわけです。初の初期化に進んでみたいと思います。

2010-06-16

2回目のAWS環境構築メモ

Amazon Web Services 
http://aws.amazon.com/

生涯2回目となるAWS環境構築を行いました。付きっきりで教えていただいた1回目のときのメモにより大体はひとりできたのですが、3点ほど詰まってインフラエンジニアさんに聞いたりしました。ので、次聞かないための個人的なメモです。もし間違っていればご指摘ください。

AWS関連

  • Regionの変更で全く異なる環境になる
  • Security Credentials -> Access Credentials
    • Access Keys
      • AMIの作成時に必要な鍵
    • X.509 Certificate
      • APIツール利用時に必要な鍵
    • それぞれ2つまでしか作成できない
    • pkは1度しかダウンロードできない
  • AMIの時点でRoot Device Typeにてinstance-storeかebsか決まっている
  • インスタンス等のAvailability Zoneは全て合わせるとよい
  • Instance TypeがAvailability Zone内(Region内?)で不足して生成できないことがある
    • 仕方がないので構成変更して柔軟に対応
  • User Data≒マシンの起動時スクリプト
    • AWS独自の言い回しらしい
    • bzip2圧縮後base64エンコードしたものを記述
    • 共通のAMIで異なる用途のマシンを立ち上げるのに有効なのだと思う
  • オートスケーリング起動設定変更
    • as-update-auto-scaling-group groupname --launch-configuration configname

その他

  • mount -o noatime
    • アクセス日時を記録せずにマウントするオプション
  • スレーブDBサーバーのmy.cnf
    • コピペする際はserver-idの重複に注意
  • Subversionリポジトリからエクスポートしたファイルの権限
    • チェックイン時の権限が引き継がれる
    • 更新時に変更された権限は反映されない

ちなみに環境構築には1日まるまるかかりました。次回は半日程度でできるといいです。書籍も何か一冊読んで体系的な知識を得たいところです。

2010-06-04

CentOS5.5にApache,PHP,APC,JSON,Ming,phpMyAdminインストール

某クラウドサーバーにいろいろ入れた際のメモです。

Apache, PHP インストール

yum install -y httpd httpd-devel 'php*'

Error: php-pecl-apc conflicts with php-eaccelerator

You could try using --skip-broken to work around the problem

You could try running: package-cleanup --problems

package-cleanup --dupes

rpm -Va --nofiles --nodigest

The program package-cleanup is found in the yum-utils package.

なんか競合が起きたらリポジトリを無効にする

yum install -y --disablerepo=epel httpd httpd-devel 'php*'

APC, JSONインストール

pecl install APC
pecl install json
echo 'extension=apc.so' > /etc/php.d/apc.ini
echo 'extension=json.so' > /etc/php.d/json.ini

拡張を記述したiniファイルを作らないといけない

Mingインストール

yum install -y bison.x86_64 flex.x86_64 freetype-devel.x86_64
wget http://downloads.sourceforge.net/project/ming/Releases/Ming%200.4.3/ming-0.4.3.tar.bz2
tar jxf ming-0.4.3.tar.bz2
cd ming-0.4.3
./configure
make
make install
cd php_ext
make
make install
echo 'extension=ming.so' > /etc/php.d/ming.ini
cd ../../
rm -rf ming-0.4.3 ming-0.4.3.tar.bz2 

Apache自動起動設定と起動

/sbin/chkconfig httpd on
vim /etc/httpd/conf/httpd.conf #ServerNameにサーバーのIPを記述
/etc/init.d/httpd configtest
/etc/init.d/httpd start

※ポートが開いてない場合はiptablesを確認(設定はインフラの人任せ><)

iptables -L
iptables -L -v -n --line-numbers #こうすると見やすいらしい

phpMyAdminインストール

wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/2.11.10/phpMyAdmin-2.11.10-all-languages-utf-8-only.tar.bz2?use_mirror=jaist
tar xfvj phpMyAdmin-2.11.10-all-languages-utf-8-only.tar.bz2
mv phpMyAdmin-2.11.10-all-languages-utf-8-only /var/www/html/phpmyadmin/
cd /var/www/html/phpmyadmin/
vim config.inc.php #既にある別環境の設定をコピーしてDBサーバー変更

その他

PHPの存在確認
php -v #バージョン
which php #コマンドの場所
PHPの設定確認
php -r 'phpinfo();' | less #rオプションは<? ... ?>不要

PHP: オプション - Manual


【関連記事】
CentOS5.4にcronインストールと設定 - 130単位