リンクをクリックする方法いろいろ
link_with(:text => xxx) を使うパターン
これが1番使うパターン。例えば、次のような HTML の場合に使う。
<a href="/xxx/yyy/zzz">ここをクリックしたい</a>
この場合は、単純に次のようにするとクリックすることができる。
agent = Mechanize.new : agent.page.link_with(:text => "ここをクリックしたい").click
link_with(:href => xxx) を使うパターン
例えば、次のような HTML だと link_with(:text => xxx) を使うことができない。
<div id="div1"> <a href="/xxx/yyy/zzz"> <span class="text">ここをクリックしたい</span> </a> </div>
なので、この場合は、a タグの href 属性を取得して、link_with(:href => xxx).click と実行すると、「ここをクリックしたい」をクリックできる。
href を取得するには、この場合だと次のようになる。
agent = Mechanize.new : agent.page.search('//div[@id="div1"]/a/@href').text
なので、次のようにするとクリックすることができる。
agent = Mechanize.new : href = agent.page.search('//div[@id="div1"]/a[@id="a1"]/@href').text agent.page.link_with(:href => href).click
link_with(:dom_id => xxx) を使うパターン
link_with は id を指定することもできる。例えば、次のような HTML の場合に使える。
<div id="div1"> <a id="a1" href="/xxx/yyy/zzz"> <span class="text"ここをクリックしたい</span> </a> </div>
この場合は、次のようにすると id 指定でクリックすることができる。
agent = Mechanize.new : agent.page.link_with(:dom_id => "a1").click
link_with(:dom_class => xxx) を使うパターン
class 指定でもクリックすることができる。例えば、次のような HTML の場合に使える。
<div id="div1"> <a class="class-a" href="/xxx/yyy/zzz"> <span class="text"ここをクリックしたい</span> </a> </div>
この場合は、次のようにすると class 指定でクリックすることができる。
agent = Mechanize.new : agent.page.link_with(:dom_class => "class-a").click
require を記述する場所はファイルの先頭以外でもOKだった
require を記述する場所はファイルの先頭だけだと勘違いしていた。次のように書いてもOKなのか。
#! ruby #-*- encoding: utf-8 -*- class Hoge def initialize require 'xxx' end end
カレントディレクトリを取得する
PWD=`pwd | xargs basename` echo $PWD
MS932 でエンコードされた文字列を UTF-8 に変換する
いろいろハマったのでコードをメモしておく。
public static final String UTF_8 = "UTF-8"; public static final String MS932 = "MS932"; /** * MS932 でエンコードされた文字列を UTF-8 に変換する。 * * @param ms932 変換したい文字列 * @return UTF-8 に変換した文字列 * @throws UnsupportedEncodingException 変換に失敗した場合 */ public static String convertMs932ToUtf8(String ms932) throws UnsupportedEncodingException { String temp = new String(ms932.getBytes(MS932), MS932); return new String(temp.getBytes(UTF_8), UTF_8); }
今日の年月日のディレクトリを作成する
date +%Y%m%d | xargs mkdir
CVS で import したファイルのリビジョンは 1.0 じゃなかった
現在担当している案件でお客さんから「追加したファイル、変更したファイルの一覧が欲しい」とのリクエストがあった。ソースコードのバージョン管理に CVS を使っているので「現在のリビジョンと 1.0 を diff すればいい」と思っていたのだが、
- import したファイルのリビジョンは 1.1
- 新規に add+commit して、その後、commit しなかったファイルのリビジョンは 1.1
であるため、両者の区別がつかない。
てっきり、リビジョンは 1.0 から振られると思っていたんだけど、そうじゃないのね。
hello.txtを追加します
C:\work\myproject> cvs add hello.txt
cvs add: scheduling file `hello.txt' for addition
cvs add: use 'cvs commit' to add this file permanently
コミットしてリポジトリに反映します
C:\work\myproject> cvs commit -m "Add hello.txt."
cvs commit: Examining .
RCS file: c:\home\cvsroot/myproject/hello.txt,v
done
Checking in hello.txt;
c:\home\cvsroot/myproject/hello.txt,v <-- hello.txt
initial revision: 1.1
done
C:\work\myproject> cvs update
CVSの基礎練習
cvs update: Updating .
こういう差分が欲しい場合、import した直後にタグ付けしておかないと比較できないってのはホントか?結局は両方のリビジョンをチェックアウトして diff したのだが、どうもスッキリしない。cvs のみで出来そうなものだけどどうやるんだろう?
どうやら CVS ではなく Subversion を使っておけば簡単に調べられたっぽい。
バージョン番号(リビジョン番号)はソースツリー全体に対して振られるため、原則としては誰かがソースツリーのどこかのファイルを更新する度に番号が増えてゆく。(CVSではファイル毎にリビジョン番号がつけられている。)
Apache Subversion - Wikipedia
コンソールのキー配列を変更する
もうすぐ始まる改修案件の環境をVMでもらったので動かしてみると、キーボードの配列が日本語になっていたので英字キーボードの配列に変更。
$ loadkeys us