2008年10月17日(Fri)

T105届いた

最終目標は、今FreeBSDが動いているSC440にはSolaris入れてストレージサーバに、T105はVMware ESXiを入れて仮想サーバのディスクは全部iSCSIにする。

…というのはずいぶん先になりそうなので、とりあえずやること

  • ESXiを入れる1GBぐらいのUSBメモリを買ってくる
  • T105にSC440のメモリを移す
  • ESXi入れる
  • SC440にiscsi-targetを入れて動かす

これで、仮想サーバをiSCSI環境で構築できるようになるけど、問題は今の環境をどうやってiSCSI環境に移行するか。

  1. SC440にT105についてきたHDDをUSB経由でつなぐ
  2. ddでディスクをまんま複製する(シングルユーザーモード)
  3. SC440でiSCSIの領域を用意する
  4. ESXiの仮想サーバでCDブートする
  5. iSCSIで繋がってるディスクをスライス切ってnewfsしてブートマネージャをインストール
  6. 複製したHDDをUSBでつなぐ
  7. dump&restoreで複製

これでいいか?

続きを読む...

見たページを全て記録

数日前に見たあるwebページの内容をもう一度見ようと思ったらどうしても見つからないので、見たページ全部記録することにしました。URLだけだったらproxyのログに全部残ってるのですが、どうにも見つからない(見つけられない)ので、内容も保存しておいて全文検索が出来るように。

用意したもの

  1. 閲覧したページの情報を送信するGreasemonkeyスクリプト
  2. ↑の送り先になるCGI
  3. ↑の情報を保存するデータベース
  4. 全文検索エンジン(Hyper Estraierを使いました)
  5. データベースに保存された情報をHyper Estraierに流し込むスクリプト(自作)

今考えると、CGIで受け取ったデータをそのまま全文検索エンジンに放り込むだけでも十分な気がしてきましたが。

まず1.。内容を送信するために、ちょっと変更。methodをPOSTにして、Content-Type: application/x-www-form-urlencodedを送るようにして、パラメータに'document=' + encodeURIComponent(document.getElementsByTagName('html')[0].innerHTML)を追加。あと、コピペすると全角空白が混じってるので削除。(はまりました)

2.はパラメータ受け取ってデータベースに登録するだけなので、これだけ。(データベースドライバの内部実装がバインドパラメータ使ってなかったら怖いことに…)

#!/usr/local/bin/ruby

require 'dbi'
require 'cgi'

cgi = CGI.new

if cgi.has_key?('url') and cgi.has_key?('title') and cgi.has_key?('document')
  DBI.connect("dbi:Pg:dbname=browselog", "username", "password") do |dbh|
    dbh.do("SET client_encoding TO 'utf-8'")
    dbh.do("INSERT INTO logs (url,title,document,timestamp) VALUES (?,?,?,?)", 
            cgi['url'], cgi['title'], cgi['document'], 'now')
  end
end

cgi.out("text/plain") {"OK"}

5.も簡単

#!/usr/local/bin/ruby

require 'dbi'

def addindex(url,title,mdate,document)
  open('| estcmd put /home/shin/casket', 'w') do |f|
    document.gsub!(/<wbr>/,'') #MR Tech's Link Wrapper対策
    document.gsub!(/^\t+/m,'')
    url.gsub!(/[\r\n]/,'')
    title.gsub!(/[\r\n]/,'')
    f.puts "@uri=#{url}"
    f.puts "@title=#{title}"
    f.puts "@cdate=#{mdate}"
    f.puts "@mdate=#{mdate}"
    f.puts "@type=text/html"
    f.puts ""
    f.puts document
  end
end

begin
  dbh = DBI.connect("dbi:Pg:dbname=browselog", "username","password")

  sth = dbh.prepare("SELECT url,title,timestamp,document from logs where timestamp < 'today' AND timestamp > 'yesterday' ")
  sth.execute
  sth.fetch do |row|
    addindex(row[0],row[1],row[2],row[3])
  end
  sth.finish
rescue DBI::DatabaseError => e
  puts "An error occurred"
  puts "Error code: #{e.err}"
  puts "Error message: #{e.errstr}"
ensure
  dbh.disconnect if dbh
end

タグ

www.flickr.com
This is a Flickr badge showing public items from suzukis tagged with japan. Make your own badge here.

最近の話題 RSS feed

最近のコメント

メール("no-spam."を削除してください)