チェックボックス一括チェック
jqueryを使ったやり方。
<html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script> </head> <body> <input type="checkbox" id="checkbox_all" onclick="$('input[type=checkbox][name=toggle]').attr('checked', $('#checkbox_all').attr('checked'));" /><br> <input type="checkbox" name="toggle" value="1"><br> <input type="checkbox" name="toggle" value="2"><br> <input type="checkbox" name="toggle" value="3"><br> </body> </html>
拡張機能というかアドオンというかextensionsのディレクトリーパス
よく忘れるので。
- XP
C:\Documents and Settings\(ユーザ名)\Application Data\Mozilla\Firefox\Profiles\(ランダムな文字列).default\extensions
C:\Users\(ユーザ名)\AppData\Roaming\Mozilla\Firefox\Profiles\(ランダムな文字列).default\extensions
mechanizeの使い方
よく忘れるので。
まずrequire。
require 'mechanize'
アメブロにログインしてエントリーを自動で登録する場合
agent = WWW::Mechanize.new diary_page = agent.get("http://blog.ameba.jp/ucs/entry/srventryinsertinput.do")
ログイン処理。
フィールドは名前を指定しても取れるらしいんだけど、
うまく取れなかったので、firstを使って取得する。
login_form = diary_page.forms.first login_form.fields[0].value = "acount" login_form.fields[1].value = "password" redirect_page = agent.submit(login_form)
値セット。
フィールドを1つずつ見て、名前で判別する。
#textarea text_form = redirect_page.forms.first text_form.fields.each do |field| if field.name == "entry_title" field.value = blog_title elsif field.name == "entry_text" field.value = blog_body elsif field.name == "publish_flg" #アメブロ固有の処理 field.value = "0" end end #アメブロ固有の処理 text_form.action = "/ucs/entry/srventryinsertend1.do"
サブミット
text_form.submit
XML処理 REXMLの使い方
よく忘れるので。
こんなXMLを用意した場合の例。
<root> <a name="a1"> <b>bbb1</b> <b>bbb2</b> <b>bbb3</b> <c>ccc1</c> </a> <a> <b>bbb4</b> <b>bbb5</b> </a> <a name="a3" price="100"></a> </root>
必ずrequire
require 'rexml/document'
XML読み込み
doc = REXML::Document.new(open("hoge.xml"))
とりあえず全文dump
puts doc #結果 <root> <a name='a1'> <b>bbb1</b> <b>bbb2</b> <b>bbb3</b> <c>ccc1</c> </a> <a> <b>bbb4</b> <b>bbb5</b> </a> <a name='a3' price='100'/> </root>
ピンポイントで取得(1番目Aタグの子、1番目Bタグの値)
添え字を指定していないので1番目のものが取られる
puts doc.elements['root/a/b'].text #結果 bbb1
添え字を指定した場合
puts doc.elements['root/a[2]/b[2]'].text #結果 bbb5
全Aタグの全子要素bタグ値を全部表示
doc.elements.each('root/a/b') do |element| puts element.text end #結果 bbb1 bbb2 bbb3 bbb4 bbb5
これは「全Aタグの、それぞれ1つ目のBタグ」となる。
ループするのはAタグで、Bはループしていない。
そして、3つ目Aは子要素にBタグがないのでエラーになる。
doc.elements.each('root/a') do |element| puts element.elements['b'].text end
1つ目Aタグのbタグ値全部表示
doc.elements.each('root/a[1]/b') do |element| puts element.text end #結果 bbb1 bbb2 bbb3
1つ前のタグと後ろのタグ
doc.elements.each('root/a[1]/b[2]') do |element| puts element.previous_element.text end #結果 bbb1 doc.elements.each('root/a[1]/b[2]') do |element| puts element.next_element.text end #結果 bbb3
タグ名取得
doc.elements.each('root/a[1]') do |element| puts element.name end #結果 a
タグ名取得(子要素)
doc.elements.each('root/a[1]') do |element| puts element.elements[4].name end #結果 c
子要素数表示
doc.elements.each('root/a[2]') do |element| puts element.elements.size end #結果 2
属性値取得
doc.elements.each('root/a[3]') do |element| puts element.attributes["name"] end #結果 a3
属性はHashで返る
hash = Hash.new doc.elements.each('root/a[3]') do |element| hash = element.attributes end puts hash.size #=>2 puts hash["name"] #=>a3
属性が特定値の要素を持つタグの子要素値
doc.elements.each("root/a[@name='a1']/b") do |element| puts element.text end #結果 bbb1 bbb2 bbb3 #"root/[@name='a1']/b" という指定も可能。この場合はタグ名を限定しなくなる
特定の属性値を持つタグの、別の属性値
puts doc.elements["root/a[@name='a3']"].attributes['price'] #結果 100
参考
PostgreSQLをRailsで使う
gem install postgres-pr
gem install ruby-postgres
というのもあるらしい。
パス名に半角スペースが混じるフォルダを半角スペースがない別名で使うとき
例えば「Program Files」以下にあるexeを実行したいけど、
「Program Files」に半角スペースが混じっているせいで、うまく実行できないとき。
DOSコマンドでこれを実行する。
C:\>dir /x
すると、こんな感じで表示される。
2008/08/01 12:28 <DIR> PROGRA~1 Program Files
このパスで移動できる
C:\>cd PROGRA~1