2012年1月16日月曜日

[ruby]配列の複数の要素を削除する

あらかじめ用意されているメソッドは2つ。

①delete_ifメソッド
配列から指定条件を満たす要素を削除(複数要素)

data = [5,1,2,4,3]
data.delete_if {|x| x < 3} # 値が3未満の要素を削除 p data => [5, 4, 3]

②slice!メソッド
配列の任意の場所から削除(複数要素)

data = [5,1,2,4,3]
data.slice!(1, 2) # 位置1から2要素分を削除
p data
=> [5, 4, 3]

参考URL(http://l-w-i.net/t/ruby/array_001.txt)

===

しかし,任意の値を複数削除するためには,これらの条件をうまく適応できない場合もある。
そこで,配列Aの要素の中から配列Bの要素と同じものを取り除く場合を考える。

data1 = [5,1,2,4,3]
data2 = [1,4]
data2.each do |d1|
data1.each do |d2|
if d1 == d2
data1.delete(d1)
end
end
end
p data1
=> [5,2,3]

注意として,eachで回す最初の配列をdata1にすると,ループが回っている最中に配列の要素が削除されることで,
ループが任意の回数回らずに終わってしまう。そのため,1度に全ての要素を削除できないことがある。

2012年1月10日火曜日

Linuxコマンドメモ

■ファイル・文字列検索
・コマンド検索
%which コマンド名

・ファイル内の文字列検索
%grep 探したい文字列 ファイル名
%grep "where" app/controller/*.rb

・ファイルの検索
%find ディレクトリ -name "ファイル名に含まれている文字列"

Htmlメモ

■テーブル(http://www.tohoho-web.com/html/table.htm)
【テーブルの例】

列-A 列-B 列-C
行-1 A1 B1 C1-C2
行-2 A2 B2
行-3 A3 A3-B3
&#12288;<br /> <table border=4 width=250 align=center> <caption>&#12304;テーブルの例&#12305;</caption> <tr bgcolor="#cccccc"> <th><br></th> <th>列-A</th> <th>列-B</th> <th>列-C</th> </tr> <tr align=center> <td>行-1</td> <td>A1</td> <td>B1</td> <td rowspan=2>C1-C2</td> </tr> <tr align=center> <td>行-2</td> <td>A2</td> <td>B2</td> </tr> <tr align=center> <td>行-3</td> <td>A3</td> <td colspan=2>A3-B3</td> </tr> </table>

2012年1月6日金曜日

Emacsメモ

■キーバインド(http://www.greenwood.co.jp/~k-aki/article/emacs_key.xhtml)
・取り消し
Ctrl+g
・全てを選択
C-x h


■Emacs でファイルの文字コードを変換(http://d.hatena.ne.jp/gan2/20080527/1211875871)
文字化けしてないとき (SJIS のファイルを UTF-8 で保存したいとき)
「C-x RET f utf-8」


■無条件置換(http://www.bookshelf.jp/texi/emacs-20.6-man-jp/emacs_13.html#SEC93)
M-x replace-string RET string RET newstring RET

Rubyメモ

■配列を要素を含めて全てコピー(http://d.hatena.ne.jp/gan2/20070729/1185711525)
ary2 = Marshal.load(Marshal.dump(ary1))

■配列の複数の要素を削除する
http://ryoooota.blogspot.com/2012/01/ruby_16.html

■Class Array
http://doc.okkez.net/static/192/class/Array.html


■Class Hash
http://doc.okkez.net/static/192/class/Hash.html

■pushでハッシュクラスを追加する
array.push('xxx' => "yyy")

2012年1月4日水曜日

Railsメモ

■モデルで利用できる型(http://shin.moe-nifty.com/server/2006/10/ruby_on_rails__b15d.html)

:primary_key
:integer
:float
:string (255文字)
:text (無制限)
:datetime,:timestamp (日付+時刻)
:date (日付のみ)
:time (時刻のみ)
:boolean
:binary



■Rails3でscaffoldを取り消すコマンド(http://d.hatena.ne.jp/gutch01/20110304/1299212122)

$ rails destroy scaffold 取り消したいScaffold名


■RailsのWEBrickサーバを強制的に停止する方法(http://www.kagitaku.com/diary/2010/08/04/webrick-stop.html)

netstat -ano

kill


■テーブルにカラム追加(http://d.hatena.ne.jp/zucay/20110120/1295512969)
$ rails g migration AddColnameToTablename colname:string


■Railsでcsvからfixturesを投入するには(http://d.hatena.ne.jp/femoco/20090710/1247190951)
1行目にカラムを書き、2行目以降をデータとする


■Ruby on Rails フィクスチャデータのロード(http://www.ginnokagi.com/2008/05/ruby_on_rails.html)
rake db:fixtures:load


■Ruby on Rails 3 でアプリケーションを作成する(scaffold を使わずに)(http://d.hatena.ne.jp/sakagami5/20110614/1308056795)
ルーティングの設定など


■Rails 3のroutesまとめ
http://irohiroki.com/2010/08/29/rails3-routes


■ActiveRecordのfindメソッドについて(http://d.hatena.ne.jp/elm200/20070316/1174044163)
・conditions
:conditions => { :col1 => 1 , :col 2 => 2 } ( "col1 = 1 AND col2 = 2" という SQL 文が生成される)

■form_tagで配列を扱う(http://webos-goodies.jp/archives/51387214.html)
<% form_tag :action => :edit_tag, :id => @id do -%>
Tag1 : <%= text_field_tag 'tags[]' %>
Tag2 : <%= text_field_tag 'tags[]' %>
Tag3 : <%= text_field_tag 'tags[]' %>
Tag4 : <%= text_field_tag 'tags[]' %>
<%= submit_tag %>
<% end -%>