相対パスで記載されたURLから、絶対パスに変換する方法
- どんなときに
open-uriなどで、HTMLページをクロールしたデータを、ローカルで開くと
デザインが崩れていたり、リンクをクリックしても思い通りのところへ飛べないことがあります。
これは、HTML内で相対パスで記載されているものを、そのまま取得しているからです。
そこで、相対パスを絶対パスに変換したいのですが、
どのメソッドを使えばいいかわからなかったので、調べると、
標準添付ライブラリで可能だったので、メモしました。
(※URLではなく、ディレクトリの相対パス→絶対パス変換は、File.expand_pathメソッドで実行可能です。)
- 解法
標準添付のURIライブラリのmergeメソッドを使用する。
- サンプル
#!/usr/local/bin/ruby require 'uri' uri = URI.parse('http://hoge.com/test/1234.html') p uri.merge('/css/def.css').to_s # => "http://hoge.com/css/def.css" p uri.merge('../lib/script.js').to_s # => "http://hoge.com/lib/script.js" p uri.merge('./5678.html').to_s # => "http://hoge.com/test/5678.html"
rexmlの使い方例メモ
rexmlは、rubyでxml解析を行うためのライブラリで、
rubyに標準添付されています。
使い方の簡単なメモ(自己流なので、使い方が間違っているかもですが。。。)
<?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xml:lang="ja"> <channel> <item> <title>ラッキー☆ちゃんねる </title> <link>http://www.lucky-ch.com/weekly/070827.html</link> <description>かがみんは俺の嫁</description> <pubDate>Sun, 17 Feb 2008 11:07:22 +0900</pubDate> <author>utadaq</author> <dc:subject>lucky-star</dc:subject> <dc:subject>kagamin</dc:subject> <dc:subject>京アニ</dc:subject> <dc:subject>next</dc:subject> </item> <item> <title>viプラグイン - EclipseWiki</title> <link>http://eclipsewiki.net/eclipse/index.php?vi%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3</link> <description></description> <pubDate>Sun, 13 Jan 2008 01:00:34 +0900</pubDate> <author>utadaq</author> <dc:subject>vi</dc:subject> <dc:subject>eclipse</dc:subject> </item> </channel> </rss>
#! /bin/ruby $KCODE = 'u' require 'rexml/document' rss = open('tmp.xml').read doc = REXML::Document.new(rss) elem = REXML::XPath.match(doc,'/rss/channel//item') elem.each_with_index do |e,i| p "------------- #{i} -------------" e.each_element('title') do |title| p "title:#{title.text}" end e.each_element('dc:subject') do |tag| p "tag :#{tag.text}" end end
- 実行結果
"------------- 0 -------------" "title:ラッキー☆ちゃんねる " "tag :lucky-star" "tag :kagamin" "tag :京アニ" "tag :next" "------------- 1 -------------" "title:viプラグイン - EclipseWiki" "tag :vi" "tag :eclipse"
XPathの指定方法については、以下のサイトを参考にさせていただきました。
http://www.nextindex.net/java/XML/XPath.html
(プログラムはJavaですが、XPathがどういうものなのかの説明がわかりやすいです)
rails2.0では、setupメソッドがうまく呼ばれないバグがある
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071221
な、なんだってー
うまくいかずに、setupに書くべき部分をそれぞれのテストメソッドの先頭に書いて
DRYじゃないなぁと気持ち悪い思いをしていた俺涙目ww
こんなソース書いてた(毎回、おなじみのquentinさんでloginしてた)
def setup end def test_should_get_index login_as('quentin') get :index assert_response :success end
静岡険道60号
ひたすら険しい道路を走っている景色と、BGMの動画。
http://www.nicovideo.jp/mylist/5393908
道路(酷・険道)好きの自分にとっては、とてもおもすれー
vimで保存したときにFirefoxを自動リロード
http://d.hatena.ne.jp/spiritloose/20061002/1159783126
に記載されているahkスクリプトで基本は大丈夫なのだけど、
自分の環境だとvimperatorを使っている環境上?windowsのタスクバーに出るFierfoxの表示が
"Mozilla Firefox" ではなく単に "Firefox"になっているので、うまく動かなかった。
(この"Firefox"は確か自分で設定した記憶が。vimperator入れると、デフォルトは"vimperator"がタスクバー上の表示になったきがした)
対処方法。
:*B0C::w`n:: SetTitleMatchMode, 2 WinGet, FF,, Firefox ControlSend,, {F5}, ahk_id %FF%
3行目を変えただけです。