REXML Elementの呼び方

1つだけ取り出すときは doc = Document.new(open('xml_test.xml')) e = doc.elements[1] #添え字が1から始まることに注意 #または要素名 e = doc.elements["hoge"] ループで取り出すときは doc = Document.new(open('xml_test.xml')) doc.each_element("hoge…

REXMLを使うとき

以下を呼ぶ。 require('rexml/document') include REXML 参考:http://pub.cozmixng.org/~kou/rexml-doc-ja/classes/REXML/Elements.html

HashをValue順に並び替える

JavaでいうところのTreeMap(だったっけ)のようなことをやってみようとした。 {単語:出現回数}のようなHashがあったときに、出現回数降順に並べてみる。 まず、 result = hash.sort{|a, b| b[1] <=> a[1] } でソート。 ところが、この結果はHashでなくArra…

Amazon Web API 商品情報

http://webservices.amazon.co.jp/onca/xml? Service=AWSECommerceService&AWSAccessKeyId=アクセスキー &Operation=ItemLookup&ItemId=B000KFDO3A&ResponseGroup=Medium (全部で1行)Wiiを検索。 引数を間違えるとヘルプが出る。例えばOperation=hogeと記…

Amazon Web API 一番簡単なクエリー

http://webservices.amazon.co.jp/onca/xml? Service=AWSECommerceService&AWSAccessKeyId=アクセスキー&Operation=ItemSearch&SearchIndex=Books&Keywords=Google (全部で1行)Googleを検索。 というか、ヘルプがまったくない。

Amazon Web APIのドキュメント

まず、アカウントを取ることが必要。Web API用のアカウントは英語サイトで取るけれど、 日本語サイトでアカウント作成→英語サイトで開発者用の許可を取る という流れが楽っぽい。下記に流れが。 http://www.amazon.co.jp/gp/feature.html?docId=451209 登録…

readlinesって一発でできるんじゃん

今までファイルを開いて全行読み込むときは io = open("hoge.txt") any = io.readlines ってやってたけど、 any = IO.readlines("hoge.txt") でできる。 これって、closeしなくていいのかな…。

ファイルに書き込めない!と言われたときは

第2引数を忘れてます。 io = open("hoge.txt", "w+") 読み込みのときは不要。

Vistaでスリープ復帰時にユーザー選択&パスワード入力をなくす方法

ユーザーが1人しかいない場合、スリープ復帰時にユーザーを選択するのは面倒。 なので、 コントロールパネル→ハードウェアとサウンド→電源オプションの中にある「スリープ解除時のパスワード要求」 を選び、「要求しない」に設定すると復帰時に何もしなくて…

UACをオフにする方法

ユーザーアカウント制御は何かとうるさいのでオフにしてしまう。 コントロールパネル→ユーザーアカウント→ユーザーアカウント制御の有効化または無効化 を選び、チェックをはずす。はずしたらはずしたで、バルーンによる警告がうるさいが、 まぁ、それはそれ…

Arrayの中身でのソート

Arrayにオブジェクトが入っていて、かつ、そのオブジェクトの1パラメータでソートする場合。 class hoge attr_accessor :id end # listにhogeを複数追加 : #以下、ソート puts list.sort_by{|hoge| hoge.id} 便利すぎ。 Hashの場合は hash.sort{|a, b| a[1] …

日本語文字の処理

Rubyはバイトコードで処理するので、日本語文字の処理が直感的にできない悩みがあったけど、 jcode+JStringの組み合わせで漢字も含めて対処できるかもしれない。http://taiyaki.org/ruby/jstring/ $KCODE='u' require 'jcode' require 'jstring' str = "一太…

Lacoocanでのモジュール設定パス

ずっとわからず苦労してた。 LacoocanはRubyが使えるものの、導入されているライブラリが少なく独自のライブラリを入れようとしてたが、 何度試してもできずに苦労していた。 結論からすると、アクセス対象のRubyファイルは拡張子を「.cgi」にしなきゃいけな…

環境設定、パスなど

キャッシュになってたので、転載。●rubyのちょっとしたことrubyを使っていてちょっと疑問に思ったこと、使いやすくするためにした工夫、 どうでもいいようなことをまとめました。 ●requireはどこのパスから読み込む?巨大なプログラムを組むとなると、当然共…

WWW::Mechanizeのインストール

疑似ブラウザ的にWebサイトを扱えるモジュール。コマンドは、 gem install mechanize番号聞かれたら1を入力した。 Bulk updating Gem source index for: http://gems.rubyforge.org Install required dependency hpricot? [Yn] y Select which gem to instal…

String#sliceの挙動

当たり前っちゃあたりまえだけど、メモ 戻り値は「切り出した値」。これは破壊的メソッドを使ったときも同じ。 line ="0123456" str = line.slice(0, 3) puts str =>012 破壊的メソッドを使ったときの、自分の値は「切り出された残り」 line ="0123456" line…

UTF-8環境で半角英数字前後の半角スペースを除去する方法

Webなどでは見やすさのために英数字の前後に半角スペースを挿入していることがあるが、 そんな文章から半角スペースを取るプログラムを組みたかった。 たとえば 「Java なら Eclipse、.NET なら Visual Studio というツールがあります」なら 「JavaならEclip…

UTF-8でも文字化けさせずにコンソールでデバッグする方法

Eclipseはコンソール出力がOSに依存してしまう(WindowsはSJIS)なので、 Rubyでputsをやると文字化けしてしまう。 デバッグ時は、SJISに変換してやるしかないようだ。 require 'kconv' str = "ほげほげ" puts str.tosjis こうやれば、「ほげほげ」が出力さ…

プライマリーキーを「ID」以外にする方法

def self.up create_table :testsun do |t| t.column :ex_word, :primary_key t.column :ex_word_type, :string end end これではエラー。 「id」という名前を無効にしてやらないといけない。 def self.up create_table :testsun, {:id => false} do |t| t.c…

ディレクトリがなかったら作成する

FileUtils.mkdir_p(path) unless FileTest.exist?(path) ディレクトリの作成はDir.mkdirでもいいんだけど、 FileUtils.mkdir_pを使うと階層化されたパス(/user/hoge/ababa といった形式)も渡せるのでこれが便利。 この場合、「user」「hoge」「ababa」がな…

時間のフォーマット

現在時刻をYYYYMMDDHHMISS形式で表示するには t = Time.new t.strftime("%Y%m%d%H%M%S") puts t

クラスメソッドの書き方

class Foo def Foo.bar puts "hello" end end と定義(ファイル名は「foo.rb」)。これを他のクラスから require "foo" Foo.bar とすると、「hello」が出力される。

File、あるいはDirの存在チェック

たとえば「hoge」というファイルをチェックするときは FileTest.exist?("hoge") で。戻り値はboolean。ファイルもディレクトリも同じ。

 自動選択するセレクトボックス

document.formname.selectname.options.selectedIndex = i;

Wordファイルに埋め込まれている画像の元画像を抜きとる方法

・Wordを1度、「Webページとして保存」する。 ・フォルダができる。 ・その中に画像ファイルがある。元画像と縮小版が手に入る。

逆順ソート

Array#sortを逆順にするには ary.sort{|i| -i } が正解。 Array#reverseは、現在の並び順を真逆にするだけで、ソートはしていない。

スペジェネの表示件数(Special Generator)

Controllerのそれっぽいクラスを開けると「:per_page」という変数がある。ここの数字を変えればOK。 デフォルトは10。表示件数が多いと重くなる。

CSSアドオン

窓の杜 - 【NEWS】スタイルシートのソース表示に特化したFirefox拡張「View formatted source」 http://www.forest.impress.co.jp/article/2007/06/11/vfs.html

Firefoxの場合

eventではなくeを使うのがみそ。 また、e.keyCodeとe.charCodeがある。IMEを効かせていると取れる値が違うので注意。 <script type="text/javascript"> document.onkeypress = key_Press function key_Press(e){ keycode = e.which; alert(keycode); keychar = String.fromCharCode(keycode)</script>…

キーボード入力文字を表示するJavaScript

<html> <script type="text/javascript"> document.onkeypress = key_Press function key_Press(e){ alert(String.fromCharCode(event.keyCode)); } </script> <body bgcolor="#ffffff"> </body> </html>