ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

初めてのRubyを読む その24 4.10

2011-10-05 12:20:03 | Ruby
「初めてのRuby」を読むの続き

4章 文字列
4.10 Ruby1.9とマルチバイト文字列
から

※注意!1.9です。昨日やったのは1.8。




■Ruby1.9とマルチバイト文字列

・Ruby1.9以降は「本格的な多言語対応」
  →日本語だけではない
  →Unicodeだけでもない

・1.9では、文字列は「文字の列」
  →1.8のようなバイト列ではない
  →Stringオブジェクトは自分自身のエンコーディングを知っている
  →lengthもエンコーディングを考慮して「文字の数」を返す

・特にバイナリデータを処理するため、文字列をバイト列として扱うときは
 Encoding::ASCII_8BITというエンコーディングの文字列を使用する




■4.10.1 Encoding

・各種の文字エンコーディングはEncodingオブジェクトによって表現されている
 →現在利用可能なエンコーディングを一覧したり:Encoding.name_list
  Encodingオブジェクトを取得できる

・入出力、内部表現で関係する




■4.10.2 マジックコメント

・ソースコードがどの方式でエンコードされているかを示す

・次のようなコメント文をソース冒頭に記述

  #_*_ coding: utf-8 _*_

 (#は、本当は半角)

・以下のような書き方でもよい

  # vim:fileencoding=UTF-8

 (#は、本当は半角)





■4.10.3 内部表現

・実行時の内部エンコーディングは、オブジェクトごとにまちまち
   →文字列、シンボル、正規表現は自分自身のエンコーディングを
    知っている
      →必ずしもソースコードのエンコーディングと一致させる
       必要はない

・文字列リテラルで生成されたStringオブジェクトはデフォルトで
 ソースコードと同じエンコーディング

・Stringのencodingメソッドで、コード変換できる
   →非破壊メソッド。破壊的なencoding!もある

・force_encodingメソッドは、バイト表現を変化させず、エンコーディング
 情報のみを変化させる




■4.10.4 文字列の結合

・エンコーディングが異なる文字列同士を結合するこちは出来ません
  →エンコーディングを混ぜて文字化けすることは防止される




■文字列の同値性
・文字列、バイト表現が同値でかつエンコーディングも同じ場合に限り同値

・現在のところ、文字列の大小関係は、単純にバイト列としての辞書式比較
 によって定義されている




次回から5章

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その23 4.9

2011-10-04 11:35:41 | Ruby

「初めてのRuby」を読むの続き

4章 文字列
4.9 Ruby1.8とマルチバイト文字
から

※注意!1.8です。1.9は、明日。




■4.9.1 文字列=バイト列

・Ruby1.8までは、文字列は、単なるバイト列
  →エンコーディングを認識しない
  →Stringのlengthメソッドは、バイト長を課閲す
  →StringのupcaseはASCIIの範囲のみ、大文字にする

・でも、一部の機能は日本語対応
  →$KCODE対応メソッドと正規表現処理の2つ




■4.9.2 $KCODE対応メソッド

・一部のメソッドは「規定のエンコーディング」に従って、処理を変える
 →Stringのinspectメソッド:「規定のエンコーディング」で解釈、表示

・$KCODE:「規定のエンコーディング」を保持するグローバル変数




■4.9.3 正規表現
・正規表現は、日本語によく対応
  → . は1バイトでなく、1文字に対応

・scanメソッド
  →正規表現にマッチする部分文字列があると、ブロックを繰り返す
  →生成時のオプションn,s,e,uが指定されていれば、それに
   指定されていなければ、$KCODEに従って処理する




■4.9.4 文字列の同値性

・文字列の大小は、単純に先頭から1バイトづつ比較
  →エンコーディングは関知しない
  →文字列は同じでも、エンコーディングが違えば違う文字




■4.9.5 多言語対応

・$KCODEによって処理系のモードを切り替え
   →複数のエンコーディングが混在する場合は向いていない
   →他のスレッドが$KCODEを書き換えると、予期せぬ状況に

・Ruby1.8で国際化、多言語対応:UTF-8を仕様




次回は、1.9のマルチバイト処理

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Ruby on Railsのはじめかた

2011-10-03 09:02:43 | Ruby
はじめよう Ruby on Rails
http://www.amazon.co.jp/dp/4756147739

をみてわかったことをまとめる。

インストールが終わったら(MySQLでやるとする)

1.プロジェクト名を決め、プロジェクトを作る

  rails プロジェクト名 -d mysql

  とコンソールから入力

  ※ここ
  http://www.rubylife.jp/rails/ini/index1.html
  では、プロジェクト名でなく、アプリケーション名になっているけど

2.DBの設定

  config/database.yml

  のファイルをadapter、DB、ユーザー名、パスワードなど書き換え
  (開発用、テスト用、本番用の3つ)


3.データベースの項目追加
  ruby script/generate migration ファイル名の一部

  すると、001_ファイル名の一部.rbファイルができるから、
  それを開いてテーブルを書き換える

4.画面を作成する

  ruby script/generate scaffold モデル名

5.サーバー起動

  ruby script/server

6.コントローラーを作る

  ruby script/generate controller コントローラ名

7.アクション追加
   controller.rb(テストのときはcontroller_test.rb)のファイルを探し、
   適当に修正

8.ビューの追加
   rhtmlが表示する画面なので、これをERBで修正

9.アクセス
   http://localhost:3000/コントローラ名/アクション名



参考サイト

アプリケーション作成から実行までの手順
http://www.rubylife.jp/rails/ini/




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Ruby on Railsをやるのに必要なもの

2011-10-02 22:40:20 | Ruby
はじめよう Ruby on Rails
http://www.amazon.co.jp/dp/4756147739

をみてわかったことをまとめる。

まず、インストールしなきゃいけないもの(2章に書いてある)

・Ruby
  one click ruby installer

・RubyGems

・Ruby on Rails
  Ruby Gemから
   gem install rails --include-dependencies --version 1.1.2

・データベース
  MySQLなどをふつうに

・データベースアダプタ
  Rubyで書かれたアダプタはRailsのActiveRecordに入っている
  Cで書かれたアダプタを使い対場合はGemから
    gem install mysql
  
なお、例は、WindowsでMySQLをベースに書いてある
また、Rubyのインストールにone-click ruby installer
を使っているので、1.8系?(1.9は出てないんじゃあ?)


1.9系は、RubyGemはRubyに入っている模様。

WindowsにRuby1.9.1をインストールする
http://www.atmarkit.co.jp/fcoding/articles/ruby191/ruby191a.html

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その22 4.8

2011-09-30 23:12:14 | Ruby
今日はPMBOKのほうを、都合によりできないので、Rubyを2つやって、
月曜日、PMBOKを2つやります。

ということで・・・

「初めてのRuby」を読むの続き

4章 文字列
4.8 シンボル
から




■4.8 シンボル

・シンボル:シンボルリテラルを用いるのが一般的
  →:の後に続けて、引用符で囲って内容を記述
     →シンボルの内容が識別子として妥当なら、
      引用符は省略可能

■4.8.1 シンボルの性質と用途
・シンボル:文字列と良く似ている
  →違いは軽量性と唯一性
    →唯一性:内容が同値であれば、必ず同一のオブジェクト
      →変更不可

・唯一性→ハッシュのキーに適している



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その21 4.7

2011-09-30 21:08:51 | Ruby

「初めてのRuby」を読むの続き

4章 文字列
4.7 フォーマット
から




■4.7 フォーマット
・sprintf : フォーマットを指定して、文字列を構築

・String#%メソッドも同様の機能を持っている
    表記はいくらか簡潔

・一般形式
  %[引数指定$][フラグ][幅][.精度]指示子

 []は省略可能
 文字列のこれ以外の部分は、そのまま残る

・指示子

c  文字コードとみなし、対応する文字を出す
s  文字列を出す
p  文字列を出す
d  10進表記
i  10進表記
u  符号なし整数として10進
b  2進
o  8進
x  16進(小文字)
X  16進(大文字)
f  10進少数
e  指数表示
E  指数表示
g  eまたはf
G  eまたはf

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その20 4.6

2011-09-29 17:46:23 | Ruby
「初めてのRuby」を読むの続き

4章 文字列
4.6 文字列操作
から




■4.6 イテレーター
・文字列上を繰り返すメソッド(イテレーター)を提供している

<<例>>

"str".each_byte do |byte|
p byte
end

・Ruby1.8ではeach_byteとeach_line
 Ruby1.9ではeach_byteとeach_lineとeach_char




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その19 4.5

2011-09-28 16:27:59 | Ruby
「初めてのRuby」を読むの続き

4章 文字列
4.5 文字列操作
から




■4.5 文字列操作
・文字列を連結する方法
  →加算演算子 + を使う
  →破壊的なバージョン<<もある




■4.5.1 反復
・ * 演算子
   文字列を指定した回数だけ繰り返す




■4.5.2 分解
・splitメソッド
   引数に正規表現を渡すと、そのパターンにマッチする
   部分を区切りとして文字列を分割、文字列の配列を返す




■4.5.3 比較
・以下の演算子を使って比較できる(比較は辞書式)
 <
 <=
 >=
 >
 ==
 !=
 <=>




■4.5.4 その他
・reverseメソッド 文字の並びを逆にする
・stripメソッド  先頭と末尾の空白を削除
・lengthメソッド 長さを返す





  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その18 4.4

2011-09-27 16:30:29 | Ruby

「初めてのRuby」を読むの続き

4章 文字列
4.4 部分文字列のアクセス
から




■4.4 部分文字列のアクセス

・文字列に[]を適用することで、文字列の様々な部分を取り出せる

  story[8,7]   → 8のところから、7文字
  story[8...15]  → 8~15のところ
  story["Monday"] →Mondayのところ
  story[正規表現] →正規表現の結果
    (正規表現には、正しい正規表現の式がはいる)

・Ruby1.8では、0を基点とするバイト位置
・Ruby1.9では、0を基点とする文字位置




■4.4.1 更新
・Rubyの文字列オブジェクトは変更可能
   →文字の一部を取得し、置換できる
  story["Monday"]="Friday"
     MondayがFridayに置き換わる
   ・添え字にマッチする部分が複数あっても
    最初にマッチされるもののみ

・パターンにマッチする全ての文字列を置換するには
 string#gsubを使う
   →gsubは非破壊、破壊的なバージョンはgsub!
   →一致するとブロックを実行して置換するのもある

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その17 4.3

2011-09-26 13:54:17 | Ruby
「初めてのRuby」を読むの続き

4章 文字列
4.3 正規表現
から




■正規表現

・正規表現:文字列に対してパターン照合を行うためのミニ言語
  →部分文字列を探したり置き換えたりする際、簡潔に表現

・演算子
   =~  文字列をパターンと照らし合わせる演算子

・メタキャラクタ
  |  複数のパターンを区切る
  .  任意の1文字にマッチする
  ?*  直前のパターンの出来るだけ短い繰り返し
  [ ] いずれか1文字にマッチする

・$1 現在のコンテキストで最後に行われた正規部分マッチの
   1番目のキャプチャ文字
    →$2:2番目、 $3:3番目・・・




■4.3.1 文字正規表現リテラル
・正規表現オブジェクト:正規表現リテラルによって構築可能
   →正規表現リテラル: / /で囲った式
      %記法を持ちいて%r! ! もOK
      式展開、バックスラッシュ記法も可能

・正規表現リテラルには、後ろにいくつかのオプションを
 つけることもできる
   →特性を制御




■4.3.2 鬼車

・Ruby1.9では正規表現を処理するエンジン変わる
  →鬼車

http://www.geocities.jp/kosako3/oniguruma/index_ja.html




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その16 4.2

2011-09-23 13:48:55 | Ruby

「初めてのRuby」を読むの続き

4章 文字列
4.2 文字と文字リテラル
から





■4.2 文字と文字リテラル

・Rubyは文字1つ1つを扱う方法を持っている
  →1.8と1.9では異なる言語仕様




■4.2.1 文字リテラル

・ ?の後に文字を書くと文字リテラルとして扱う
・バックスラッシュ記法を使って、特殊な文字を表現できる

Ruby 1.8の場合
  ?a   =>97

Ruby 1.9の場合
  ?a   =>"a"

・Ruby1.8と1.9では、結果がまったく異なっている




■4.2.2 文字のクラス

・Rubyは文字をあらわす固有のクラスはない
 →1.8では、文字列はバイト列だったので、
  文字はバイト値
 →1.9は、マルチバイト文字を1文字と認識
  文字リテラルは「1文字だけを含む文字列」
  Rubyのライブラリ設計は「大クラス主義」
   →むやみやたらにクラスの数を増やすのではなく
    クラスに多くの機能を与える




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その15 4.1

2011-09-22 02:25:39 | Ruby
「初めてのRuby」を読むの続き

4章 文字列
4.1 文字列の構築
から




■4章 文字列

・Rubyは強力な文字列処理能力を持っている
 →オブジェクト指向的で豊かな文字列演算
  言語機能に統合された正規表現

・Rubyは文字列処理においてもオブジェクト指向
 を貫いて、言語のほかの部分に対する一貫性を
 持っている

・Ruby1.8ではマルチバイト文字を扱う能力は
 乏しかった
 →1.9は大幅に強化
  1.9は多言語テキスト処理を完全にサポート




■4.1 文字列の構築
・new メソッドで作ることも可能
・でも多くの場合は文字列リテラルで構築される


●4.1.1 文字列リテラル
・" または ' でくくる
・両端の引用符は必ず種類が一致していること

●4.1.2 バックスラッシュ記法
・" "でくくられた文字列は、バックスラッシュ記法を解釈
   →バックスラッシュに続けて特定の記法を書く

・' 'は原則解釈されない
  →例外、'とバックスラッシュ自身

・Unicode
 →Ruby1.9でバックスラッシュ記法追加
   →とくに{ }内に書く方法では、4桁以上のコードポイント
    も表現可能
   →エンコーディングはUTF-8

●4.1.3 式展開
・" "でくくられた文字列リテラル内部では、式展開が
 行われる
  →' 'の場合は行われない
・式展開とは #{ } でくくられた部分をRubyの式
 として解釈し、その値を文字列に展開すること
   →to_sメソッドが呼び出される

●4.1.4 バッククォート文字列
・バッククォートで囲むと、中身をシェルコマンドとして実行し、
 コマンドが出力した内容を元に文字列を構築する

●パーセント記法
・%で始まる。
  →引用符が多く含まれる文字列で便利
・%の後に英字、その後に非英字
  英字:%記法の種類
  非英字:区切り記号

●ヒアドキュメント
・行を区切りとする文字列リテラル
・<<の後に任意の区切り後を記述すると、
  <<が含まれる次の行から
  区切り語だけが行頭に書いてある行まで
 が文字列リテラルになる

・<< "EOS"と書いた場合、<< EOS と書いた場合
   バックスラッシュ記法、式展開が有効
 << 'EOS'と書いた場合
   バックスラッシュ記法、式展開が無効

・区切り語の前に空白文字が入ってもいけない
 → - を書くと( << -"EOS" )
   区切り語の前にタブや空白が入ってよい




■文字列化メソッド

・to_s
・to_str
・inspect
・marshal.dump




上記説明中 < > % # は、本当は半角。
次回は4.2

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その14 3.5

2011-09-20 12:10:01 | Ruby
「初めてのRuby」を読むの続き

3章 数値
3.5 ビット演算
から




■3.5 ビット演算

・Rubyも整数に対するビット演算をサポート

  →Rubyの整数は無限に長いビット列として振る舞い
   負数は2の補数表現

  →整数オブジェクトは変更不能
     →ビット位置への代入演算子は定義されていない





■3.5.1 符号とビット

・ビット列の長さは無限
  →上位のビットには符号ビットが果てしなく充填されている
  →sprintfで負数を2進、16進にすると、奇妙な結果に!

・Rubyには符号なし整数を表現する型はない




次回から4章 文字列


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その13 3.4

2011-09-16 16:17:17 | Ruby
「初めてのRuby」を読むの続き

3章 数値
3.4 数学関係
から




■3.4 数学関係
・利用頻度の低い数学関数は、Mathモジュールの中に定義されている
・Mathモジュールを現在のスコープにincludeすると、Math.というスコープ解決を
 付けずに、関数を呼び出せる






  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初めてのRubyを読む その12 3.3

2011-09-15 15:43:24 | Ruby
 「初めてのRuby」を読むの続き

3章 数値
3.3 比較
から




■3.3 比較

・数値クラスには大小関係が定義されている
   <
   >
   <=
   =>
   ==
   !=
   <=>(宇宙船演算子)




■3.3.1 宇宙船演算子(<=>)

・左辺が右辺より

   小さければ、負
   等しければ、0
   大きければ、正

 の数を返す

・sortメソッドで大小を判定するブロックを渡せるが、
 そのブロックを記述する場合も宇宙船演算子が活躍

・comparableモジュールを使うと、<=>演算子から
 すべての比較演算子を導出できる




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする