今日も元気にテクニカル

技術情報書きたいけど本ブログに書きたくないからこんな名前になりました。

2007-01-01から1年間の記事一覧

rubyのベンチマーク-benchmark.rb-

rubyスクリプト中の特定の処理の実行時間を知りたいと思ったことはありませんか?(ありまーす!) ということでbenchmark.rb Ruby Reference Manualです。benchmark.rbを使用することで特定ブロックの実行時間を計測することができます。使い方はこんな感じ。…

(小ネタ続き)取得した人狼BBS参加者リストを解析

参加者IDをこんな感じでテキストファイルに保存。 =====501村===== master knight ・ ・ ・ seena totoro =====502村===== master yamadayama ・ ・ ・ bdheki turugiこれを以下のスクリプトで解析 require 'benchmark' puts Benchmark.measure { fi…

(小ネタ)Hpricotを使って人狼BBSの参加者リストを作成する。

人狼BBSのアクティブユーザー、ヘビーユーザーの割合が知りたかったので 参加者リストを取得しIDを抜き出すスクリプトを作成しました。 require 'hpricot' require 'open-uri' #uptoメソッドetcを使用して繰り返し実行(今はしない) #501.upt…

ruby for linux

ということで自鯖作成計画の一環で右も左も分からないlinuxにrubyを導入してみる。取りあえず # yum install rubyでruby1.8.5をインストールした後rubygemsを導入。RubyGems の使い方 - WebOS Goodies…なぜかwgetでダウンロードしたパッケージが壊れてたので…

お久しぶりですリンクメモ

楽天が運営するポータルサイト : 【インフォシーク】Infoseek性懲りもなくlibXML2をインストールしようとする→失敗2006-08-10 - Hexaの日記 2006-08-12 - Hexaの日記libxmlとREXMLの文法比較。DOMを作るサンプルソースあり。ということでsqliteを勉強中。け…

自鯖立てるぞ!

ということで、自鯖立てようかなと。そりゃ自鯖は耐障害性の面で問題があるし、メンテナンスやセキュリティも大変だし、もしかしてロリポでsqlite使えるようにする手段があるのかもしれないけど…。レン鯖Hackに苦労するのと、自鯖運営に苦労するのとじゃ、後…

sqliteを使ってみる。

libxmlのインストールに挫折したのでsqliteを使ってみた。 C:\WINDOWS\system32>gem install sqlite-ruby Select which gem to install for your platform (i386-mswin32) 1. sqlite-ruby 2.2.3 (ruby) 2. sqlite-ruby 2.2.3 (mswin32) 3. sqlite-ruby 2.2.2…

libxml-rubyのインストールで挫折。

公式ページにあるとおり、gemでインストールしようとしたところエラー発生。 C:\>gem install -r libxml-ruby Need to update 1 gems from http://gems.rubyforge.org . complete Building native extensions. This could take a while... ERROR: While exec…

REXMLが遅い。遅すぎる件について

最初は気のせいかと思ったが。 <items> <item> <url>http://newsing.jp/entry?url=headlines.yahoo.co.jp%2Fhl%3Fa%3D20070528-00000001-imp-sci</url> <title>東芝、「ぷよぷよ」もできる「gigabeat V」</title> <main_text></main_text> <picker>aplin</picker> <picktime>2007-05-29 01:…</picktime></item></items>

昨日の続き-XMLの読み出し

require &#39;pp&#39; require &#39;kconv&#39; require &#39;rexml/document&#39; include REXML doc = REXML::Document.new File.open("newsing.xml","r") arr1 = [] doc.root.elements.each("//item") do |item| item.elements.each do |elem| arr2 = [] …

今日の成果-コメントの子要素まで表示する

require &#39;kconv&#39; require &#39;rexml/document&#39; include REXML doc = REXML::Document.new File.open("newsing.xml","r") doc.root.each_element do |elem| puts "====================★ENTRY★====================" elem.each_element do |elem…

REXML 昨日の続き

昨日のエントリで「REXMLを使うときにはクラスに注意しましょう」みたいなことを書いたが、基本は require &#39;kconv&#39; require &#39;rexml/document&#39; include REXML doc = REXML::Document.new File.open("newsing.xml","r") p doc.class #=> REXML…

とりあえず試してみる

前項で取りあえずメモ用にURLを張ったが… さっくりと使い方を学ぶならこちら。 Developer.com: Your Home for Java and Open Source Development Knowledge - Developer.com上ので物足りなければチュートリアルのコードをコピペ&改変すれば理解が深まる。 RE…

REXMLの利用

前記のnewsing取得スクリプトを利用して以下のようなXMLを作成してみた。 <items> <item> <url>http://newsing.jp/entry?url=headlines.yahoo.co.jp%2Fhl%3Fa%3D20070528-00000001-imp-sci</url> <title>東芝、「ぷよぷよ」もできる「gigabeat V」</title> <main_text></main_text> <picker>aplin</picker>…</item></items>

newsingの新着pickupゲット復習

結局こういうコードにしました。 require &#39;hpricot&#39; require &#39;open-uri&#39; require &#39;kconv&#39; list = Array.new maxtop = 10 # maxtop*(10+1)分の記事を取得する。 # 0〜maxtop分のnewsingユニークURL取得-----------------------------…

本題:newsingの新着記事リストから個別記事URLを取得する

ということで、newsingの新着記事リストから個別記事URLを取得する。※newsingの新着記事のアドレス体系は http://newsing.jp/list?start=x0 (x=1,2,3...) となっている。 require &#39;hpricot&#39; require &#39;open-uri&#39; require &#39;kconv&#39; lis…

適当に検索した要素のXPATH,CSSフルパスを調べる

ここまでHpricot見てきたけど、キモは「検索方法」だなぁと思う。要素の指定さえ正しくすれば返ってきた要素の加工は、今までのrubyの知識で十分だし、どっちかっていうとCSSやXPATHの知識が必要ぽい。以下ひっかかった要素のフルパスを返すメソッドをメモし…

当然調べます。

ってなわけでリファレンスの出番ですよ先生。http://tam.qmix.org/wiki/Hpricot.html Route 477 inner_html inner_textと違って指定した要素の中のHTMLも一緒に抜き出す。 doc = Hpricot(open("http://newsing.jp")) (doc/"a.medium").inner_html.each do |t…

newsingの新着記事リストから個別記事URLを取得する

俺がNEWSING★BOOSTERでやってるのと同じことをHpricotを使ってやってみる。個別記事URLはclass="medium"となっているので、以下のような構文で取り出せる。 require &#39;hpricot&#39; require &#39;open-uri&#39; require &#39;kconv&#39; doc = Hpricot(op…

さらに

試してみる。 puts (doc/"ul") #=> <ul class="test_class_1" id="test_id_1"> <li>test_li_11</li> <li>test_li_12</li> <li>test_li_13</li> </ul> <ul class="test_class_2" id="test_id_2"> <li>test_li_21</li> <li>test_li_22</li> <li>test_li_23</li> </ul> ulタグのみ指定。指定した要素は空白文字が整形されて出力されるけど、子要素はHTMLに書かれた通りに出てくるみたい。#…

取りあえず使ってみる。

こんな感じ。 require &#39;hpricot&#39; doc = Hpricot(DATA.read) puts doc/"title" #=> <title>TEST TITLE</title> puts (doc/"title") #=> <title>TEST TITLE</title> puts (doc/"title").inner_text #=> TEST TITLE __END__ <html> <head> <title>TEST TITLE</title> </head> <body> </body></html>

hpricotにした。

というのは、htreeがgemで落とせないからだ! C:\>gem install htree Bulk updating Gem source index for: http://gems.rubyforge.org ERROR: While executing gem ... (Gem::GemNotFoundException) Could not find htree (> 0) in any repositoryhpricotは…

今に必要なのはHpricot or Htree?

前回紹介したmechanizeの最大の特徴は、「フォームに情報を入力できる」ということだった。これにより、フォームに文字を入力しなければ見れない動的なページへのアクセス、またフォームを介した自動ログイン、自動投稿が可能になったのだ。なら「ふつうにア…

あらためてmechanizeの勉強をしよう

例えばnewsingからblogという文字列を含む記事を検索する場合。 require &#39;rubygems&#39; require &#39;mechanize&#39; require &#39;kconv&#39; agent = WWW::Mechanize.new agent.user_agent_alias = &#39;Windows IE 6&#39; page = agent.get(&#39;htt…

mechanizeの勉強をしよう(準備編)

と思って require &#39;mechanize&#39; したら tmp:1:in `require': no such file to load -- mechanize (LoadError) と怒られてしまった。仕方がないので gem install hogehoge すると 'gem' は、内部コマンドまたは外部コマンド、 操作可能なプログラムま…

CGI使うときのデバッグ

CGI受付を行っているスクリプトを実行したとき ruby index.cgi (offline mode: enter name=value pairs on standard input) ってな感じで先に進んでくれない。 この時はCtrl+Z(Ctrl+D)の後、Enterを押下してやればいいみたい。 もしクエリを入れるならmode=h…

開発メモ用ブログ

rubyのコードが書いてあるページを纏めるには、はてブの100文字では足りない。ということで、サブアカウントを取得してメモ用ブログを始めます。はてな記法一覧 - はてなダイアリーのヘルプrubyスーパーpre記法 1.upto(100) do |i| if i%15==0 puts "FizzBuz…