スポンサーサイト

  • 2015.09.25 Friday

一定期間更新がないため広告を表示しています

  • -
  • -
  • -
  • スポンサードリンク

OS X で、 gem install sqlite3 がコケる件。

  • 2012.08.29 Wednesday
  • 16:54
JUGEMテーマ:コンピュータ

これまでずっと、sqlite3 のgem がうまく入らなくて。もう縁がないんだと諦めてたんだけど、どうしても sqlite3 を Ruby で操作しないと駄目な案件にぶつかり。なんとか解決。まず、エラーはこんな感じ;
$ sudo gem install sqlite3
Password:
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.

/Users/cxp04754/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb
checking for sqlite3.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

いろいろ試したんだけど、どうも XcodeのCommand Line Tools がインストールされてないからっていう原因っぽい。これインストールしてから、gem install が成功したから。

XcodeのCommand Line Tools


grep の Ruby 版『rak』が便利な件

  • 2008.07.09 Wednesday
  • 17:45
JUGEMテーマ:コンピュータ

ラック rak

今日rakutoさんに教えてもらった「rak」。超便利です。gemが入ってれば;
sudo gem install rak
でインストールされます。あとは、デバッグ中にエラー出たときとか、該当ファイルや該当文字列を;
rak 文字列
で検索することができます。

オプションの使い方などは、http://rak.rubyforge.org/に詳解されています。


さくらインターネットで、gem install すると「chown/chgrp: Operation not permitted 」と叱られる件の対応

  • 2008.04.12 Saturday
  • 09:30
JUGEMテーマ:コンピュータ


さくらインターネットのサーバ環境は、常に変動している。Rubyの gem install も、いろんな人のブログ見ると普通に何の障害もなく実効できてるように書かれてるけど、最近どうも設定が変更されてるっぽい。(サーバによって違いがあるんだろうと思いますが。)

ぱんの場合は、gem install mysql したくて、でもそすると;
%gem install mysql
Need to update 20 gems from http://gems.rubyforge.org
....................
complete
Select which gem to install for your platform (i386-freebsd6)
1. mysql 2.7.3 (mswin32)
2. mysql 2.7.1 (mswin32)
3. mysql 2.7 (ruby)
4. mysql 2.6 (ruby)
5. Skip this gem
6. Cancel installation
> 3
Building native extensions. This could take a while...
ERROR: While executing gem ... (Gem::Installer::ExtensionBuildError)
ERROR: Failed to build gem native extension.

ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient... yes
checking for mysql_ssl_set()... yes
checking for mysql.h... no
checking for mysql/mysql.h... yes
creating Makefile

make
cc -I. -I. -I/usr/local/lib/ruby/1.8/i386-freebsd6 -I. -DHAVE_MYSQL_SSL_SET -DHAVE_MYSQL_MYSQL_H -I/usr/local/include -fPIC -O2 -fno-strict-aliasing -pipe -fPIC -c mysql.c
cc -shared -Wl,-soname,mysql.so -L'/usr/local/lib' -Wl,-R'/usr/local/lib' -L'/usr/local/lib' -Wl,-R'/usr/local/lib' -L'/usr/local/lib/mysql' -Wl,-R'/usr/local/lib/mysql' -o mysql.so mysql.o -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -L. -lruby18 -lmysqlclient -lcrypt -lm -pthread -lc

make install
/usr/bin/install -c -o root -g wheel -m 0755 mysql.so /home/(ユーザ名)/lib/ruby/gem/gems/mysql-2.7/lib
install: /home/(ユーザ名)/lib/ruby/gem/gems/mysql-2.7/lib/mysql.so: chown/chgrp: Operation not permitted
*** Error code 71


Stop in /home/(ユーザ名)/lib/ruby/gem/gems/mysql-2.7.


Gem files will remain installed in /home/(ユーザ名)/lib/ruby/gem/gems/mysql-2.7 for inspection.
Results logged to /home/(ユーザ名)/lib/ruby/gem/gems/mysql-2.7/gem_make.out
となって、パーミッションが許可されてないっぽいエラーメッセージが吐かれます。

対応策を探してたら、2ch様にて見つけました;
867 :866:2008/02/16(土) 01:25:16
あーできたー。っていうかこれ罠っぽい…
さくらインターネットでrubygemsのインストールでコケる場合の対処

/usr/local/lib/ruby/1.8/i386-freebsd6/rbconfig.rb を見ると
> CONFIG["INSTALL"] = ENV['RB_USER_INSTALL'] ? '/usr/bin/install -c' : '/usr/bin/install -c -o root -g wheel'
とかいう記述がある
よって
setenv RB_USER_INSTALL true
とかコマンドラインで入力してから rubugemsをインストールすればいい
(試してないけどたぶんrubygemsのインストール時1回のみでおk)

あーもう寝る
素敵です!
ということで、この通りやってみると;
%setenv RB_USER_INSTALL true
%gem install mysql
Select which gem to install for your platform (i386-freebsd6)
1. mysql 2.7.3 (mswin32)
2. mysql 2.7.1 (mswin32)
3. mysql 2.7 (ruby)
4. mysql 2.6 (ruby)
5. Skip this gem
6. Cancel installation
> 3
Building native extensions. This could take a while...
Successfully installed mysql-2.7
バッチリです!


2ch様では、ナイス書込みがすぐに過去ログ行っちゃっうから、googleとかにも引っかかりづらくなり、残念です。(参照リンクも貼りたいんですが、貼れないし・・・)

scRUBYt!をWindowsでネイティブに扱うの、諦めるべし?

  • 2007.12.20 Thursday
  • 00:40
JUGEMテーマ:インターネット


以前scRUBYt!を使った際は、Mac OS 10.4からで、特に問題なく使えたんだけど。Windows XPでインストールして利用しようとしたら、困難にぶつかった。

まず、普通に
gem install scrubyt

コマンドを実行すると、いろいろ依存関係(dependency)のあるライブラリを一緒にインストールしてくれるところまでは問題なし。

チュートリアルにもある、google_extractor.rb(http://scrubyt.org/your-first-extractor/)を実行してみると。RubyInline-3.6.5が起動してるのに、RubyInline-3.6.3が呼ばれてるみたいなエラーが出るので、
gem uninstall RubyInline

コマンドを実行し、どのバージョンを消すか聞かれるのでRubyInline-3.6.5を選択して。

さあ、気を取り直して、サンプルを実行するも。

"Define INLINEDIR or HOME in your environment and try again"

エラー発生。

scRUBYt!の本家サイトのフォーラム(http://agora.scrubyt.org/forums/3/topics/60?page=1)を覗いてみると、あるはあるは。クレームの嵐...

Jrubyバージョンを使えだの、cygwinで使えだの、特定機能を諦めてライブラリの呼び出しを制限しろだの、Visual Studioのdllをもってこいだの... めんどくさい!!!

なんか、この方のブログにもあるけど、結局Hipricotmechanizeを、自分の必要に応じて利用すればいいんじゃないかという気がしてきた。

scRUBYt!のコンセプトについて書かれたエッセイとかまで翻訳しといてなんだけど、最近Windows使う比率が増えてるから。Windowsでまともに動かないアプリは使いたくない!


☆2008/12/21追記
新バージョンでは、windowsに対応した模様! まだ確かめてないけどw
http://scrubyt.org/blog/at-la
st-scrubyt-041-is-out/

簡易翻訳「Web 2.0的データ抽出:Ruby/RailsでのScreen Scraping Episode 1」

  • 2007.03.27 Tuesday
  • 03:22
前回のエントリーで書いた疑問。Webページ上にある特定要素を指定する方法について、scRUBYt!の作者のエッセイが参考になりそうなので読んでたら。まず訳してみようと思って。Rubyについても英語についても得意ではないので、誤訳もあると思いますので、ご利用の際は、必ず原文と対照して確認してください。作者さまには訳掲載の許可をだしておきます。いただきました。


■原典タイトル:Data Extraction for Web 2.0: Screen Scraping in Ruby/Rails, Episode 1
■原典URL:http://www.rubyrailways.com/data-extraction-for-web-20-screen-scraping-in-rubyrails-episode1/
■翻訳対象日時:2007/3/27(火) 〜作者様はデータを時折アップデートされているようなのでご注意ください〜


■Web 2.0的データ抽出:Ruby/RailsでのScreen Scraping Episode 1


この記事は、以前書いて人気があった「first part on web scraping」の補足ととらえてもらって構いません。今回の記事と以前の記事との関係はStarWars IとIVみたいなものだと考えてください。例えば時代順としてIVが先にきているし。他にも、ジョージルーカスが初期三部作を撮った後と同じ立場にいる気がするんです。大ヒットした後で、量と質の両面でさらなるものが望まれているとかね。

以前の記事が人気だったので、待望されている感じがしてしまい、今回の記事を書き始めました(もちろんそれだけの理由というわけでないけど)。以前述べた通り、先進的なコンセプトを説明するためのscrapingのデモアプリを作りたいと思っていたんですが。Rubyのおかげで、計画は大幅に省力化されることになりました。

実は今回のweb scrapingコードが、私にとってRubyで始めての、まともなプログラムなんです。数週間前にRubyを知り、実際に何かの問題を解決するために使ってみようと決めていました。数週間、今回のアプリをハックした後、突然再利用可能なweb scrapingツール『scRUBYt!』が完成し、私の計画は大幅に見つめ直す必要ができてきました。記事の続きを書くというより、『scRUBYt!』を完成させ、それをもとに計画を描き、理論的なことも説明しようと決めたんです。

■概要:Webの情報収集(Web Information Acquisition)
システマチックにWebから情報を収集する技術を総称し「Web Information Acquisition」と呼びます。情報収集プロセスは4つのパートに分割されます(下記図参照)。実行される順に「情報検索 - Information Retrieval (IR)」、「情報抽出 - Information Extraction(IE)」、「情報統合 - Information Integration (II)」、「情報配信 - Information Delivery (ID)」となります。




□情報検索 - Information Retrieval (IR)
「Webを巡回し、次のステップで必要になるインプットドキュメントをダウンロードする」。直感的に考えれば、次のステップでドキュメントを抽出するために必要なことは、巡回するステップの中で情報検索システムが、抽出すべきデータを含む最初のドキュメントを見つけ出すことだと分かるでしょう。

Webにある情報のほとんどは、Webの奥深く - Deep Web(静的なWebドキュメントには含まれない、バックエンドのデータベースや古くなって使われなくなったデータストアの中)に存在する。ここの情報には、データベースのフロントエンドとして提供されているWebページを介してアクセスすることとなる。例えばフォームに何か入力しsubmitすることや、リンクをクリックすることや、ウィザードをたどるなどによってアクセスするのだ。空港のWebページを思いだしてみると分かりやすいだろう。空港のフライトスケジュールは、データベースから提供されているが、具体的なリクエストとしてフォームでsubmitしない限り、そのフライトスケジュールにはアクセスできない。

「deep web」の反対は「surface web(Webの表層)」だ。まさに今あなたが読んでいるこのページのように、パーマネントURLを持った静的ページである。surface webに対しての情報検索プロセスは、そのURLをダウンロードするというだけなので、それほど難しいことではない。

しかし、二段落前で述べたように、ほとんどの情報はdeep webの中に含まれている。フィールドへの入力、チェックボックスやラジオボタンの選択、リンクのクリックなど、様々なアクションによって初めて、対象のページにたどり着くことができ、その結果をダウンロードできるのだ。

自動的に情報検索するというのは、プログラムの処理内容からして、そんなに簡単なことでない。その上処理の過程で、いろんな落とし穴が待ちかまえている。HTTP protocolは処理状態の把握が困難だという点が一番の問題だ。あるリクエストに付与された情報は、次のリクエストに引き継げないのだ。この問題に対処するための、session、cookie、authorization、navigation historyといった技術については、真っ当な情報検索モジュールなら対応しているだろう。

ラッキーなことに、Rubyには上記技術に対応したパッケージがある。最もよく知られているのは「WWW::Mechanize」だ。このパッケージは、cookieを保持し、リダイレクト対応し、実際のユーザとブラウザとのやりとりのすべてをシミュレートしながら、自動的にWebページを巡回する。「Mechanize」は本当に素晴らしいが、ひとつ重大な欠陥がある。JavaScriptのサイトに対応していないのだ。すぐにJavaScriptに対応してくれたら嬉しいのだけれど。

「Mechanize」がJavaScriptに対応するという嬉しい日までは、『(Fire)Watir』というソリューションが利用できる。WatirはMechanizeと同じことを実現し、かつJavaScriptが扱えるらしい。両者をつき合わせて比較したら面白そうだけど、まだやってません。

Mechanizeを基に構築されたWeb巡回モジュールを「scRUBYt!」は利用します。将来のリリースでは、JavaScriptの問題があるので、FireWatirにも対応したいと思ってます。scRUBYt!の基本は、ツカエルツールを内包したweb scrapingのDSLです。情報抽出モジュールが高機能なので、Web巡回モジュールでも便利な機能が使えるようになっています。例を見てみましょう。

目的:amazon.comへ行き、サーチボックスに'Ruby'と入力する。結果を絞り込むために左のサイドバーから'Books'、そしてさらに'Computers & Internet' をクリックする

実現方法:

fetch 'http://www.amazon.com/'
fill_textfield 'field-keywords', 'ruby'
submit
click_link 'Books'
click_link 'Computers & Internet'

結果:このドキュメント

上記のように、scRUBYt!のDSLは、Web巡回についての記述が非常に簡潔なので、細かな実装について気にする必要がない。上の結果として、自動的にscrapingモジュールにドキュメントが流し込まれます。このあたりは既に次のセクションの話題ですね。

□情報抽出 - Information Extraction (IE)

「なぜ」Webから情報を抽出しなければならないかについては触れる必要はないでしょう。「どのように」のほうがすっとすっと興味のある問題ですね。
Webの情報抽出は退屈な作業だ。Web巡回してたどり着いてみたら、目的のデータは、フォーマットされたエレメント、スクリプト、コメントなどが混ざり合ったHTMLの中に埋もれてるから退屈なのだ。情報が意味論的表記(semantic description)を失っていて、何がWebショップの情報(レコード)なのか、ニュース記事はどれか、ということをマシンが判断できないのだ。マシンは、タグと文章が混ざり合ったスープのようなドキュメント全体を受け取ることしかできないのです。

システムの中で事前定義されている、マシンが理解できるクエリー(問い合わせ)オブジェクトなら簡単だ。Rubyで、配列にある最初の要素を得たければ、このように簡単に処理できる:

1. my_array.first


マシンへの問い合わせ構造については、SQLテーブルも参考になるだろう。検索条件にマッチした要素を抜き出すには、例えばこんなSQLクエリーを実行すればいい。

1. SELECT name FROM students WHERE age > 25


それでは、似たような検索をWebページに対して実行してみたらどうだろう。例えばあなた自身が、'Notebook'というワードで検索して、ebayのページにたどり着いて次の問い合わせ(クエリ)を実行するとしよう。「400ドル以下のレコードが全て欲しい」(通常は何も問題なく処理されるため、結果をブラウザへのレンダリングでなくデータ構造に保存する。)

クエリ(問い合わせ)自体は簡単だけれど、情報を抽出するスクリプトを実行しデータ構造に保存しなければ(もしくはscRUBYt!のようなに、処理を代行してくれるツールを使わなければ)、ソースコードから情報を得ることはできない。

この状況を打破する試みは実行されている。セマンテックウェブ(semantic Web)やコモンオントロジー(common ontologies -概念と概念間の関係の明確な記述-)、その他にタクソノミー(taxonomies -分類法-)、フォークソノミー(folksonomies -人手での分類法-)、タグ(tagging -タグ付け-)といったWeb2.0技術がよく知られている。これらの技術の目的は、前述の問題を克服し、マシンが理解可能なドキュメントをつくろうというものだ。たしかに明るい結果を残しつつあるものもあるが、Web全体がそんなフレンドリーな世界になる道のりは遠い。私の予想だと、楽観的にみて、Web88.0あたりまでかかるのではないだろうか。

しかし現時点では、2.0にいっていればいい方である。現時点でWebページをscrapeしようと思ったら、いろいろな問題と付き合っていかねばならない。概論では、Rubyのツールでどうすればよいかは書いた。(追記:そこでは触れていない「HPricot」という新顔もでてきた)

紹介したパッケージは大概、ツリーのような意味の繋がりを持った構造にWebページをパースし、クエリの仕組み(XPath、CSSセレクター、その他のツリー構造を巡回するモデル)を提供している。ここであなたは考えるだろう:「なるほど。実際にWebページをマシンが分別できるように処理し、クエリーを投げることのできる構造が今もあるんだね。じゃあさっきのパラグラフで書いてた問題ってなに?データベースの例で出たようなクエリを書いて、それをツリーか何かにそって評価すればよいだけじゃないの。」

問題は、ページについての理解が、マシンと、クエリを投げる人間ではまったく異なることだ。そしてそこにある矛盾を解決するモデルはまだ存在しない。人間は「Webショップに存在するレコードで、最高で$1000ドルまでのキャノン製カメラについての情報」をscrapeしたいと思うが、マシンはそれをこう考える:「三番目の<td>タグがあってそれは八番目の<tr>タグの中にあってそれは五番目の<table>タグの中にあって・・・(そのほか沢山のタグ)・・・は<body>タグの中にあって、それが<html>タグの中にある枠組みの中に七番目の<td>タグが'キャノン'という文字列を含んでいて、九番目の<td>タグのテキストは1000より大きくない(1000という値を得たいだけなら、正規表現か何かを使って通貨記号や付加情報を取り除けばいい)」

なぜデータベースの場合はあんなに簡単なのかといえば、データが(CREATE TABLE用語で特徴づけられた)規則性を持っているからだ。あなた自身も、コンピュータも、「生徒」や「カメラ」がどのようなものかはっきりと分かるし、双方とも同じ言語(おそらくSQL語)を話すからだ。

このことが、Webページの場合には当てはまらない。Webショップのレコードや、カメラの詳細ページ、ニュース記事は区別が付きづらい。それを解析する唯一の方法は、Webページの構造を利用することだ。これは大変面倒くさい処理である(既に述べたとおり、リアルのデータやフォーマット、スクリプト、スタイルシートなどの情報がWebページには集まっているから)。さらなる問題は、例えば、Webショップのレコードは、同じページの中でも統一されていないことだ。あるレコードには、ほかのレコードが持っているセルのいくつかが欠けていることがある。ほかのレコードが持っていない情報を詳細ページ持っていることもある。また逆の場合もあるし。場合によってはデータモデルを明らかにすることは不可能に近い。まだレコードをscrapingすることについて話していなかった。

さあそれでは、どうすればよいか?

本能的に、人間のクエリを理解しXPath(もしくはマシンが理解できるクエリの仕組みならなんでもいい)に翻訳できればいいのだ。scRUBYt!はそのへん処理をすることができる。具体的な例を通して簡単に説明しよう。

finance.yahoo.comの株価情報をモニターしたいとして、scRUBYt!を使ってどのようになるかというと:

#Navigate to the page
fetch 'http://finance.yahoo.com/'

#Grab the data!
stockinfo do
symbol 'Dow'
value '31.16'
end

アウトプットは:

<root>
<stockinfo>
<symbol>Dow</symbol>
<value>31.16</value>
</stockinfo>
<stockinfo>
<symbol>Nasdaq</symbol>
<value>4.95</value>
</stockinfo>
<stockinfo>
<symbol>S&P 500</symbol>
<value>2.89</value>
</stockinfo>
<stockinfo>
<symbol>10-Yr Bond</symbol>
<value>0.0100</value>
</stockinfo>
</root>

説明:サイト巡回についてはこれ以上説明することはない。目的のページを取ってきてscrapingモジュールに取り込めばよいだけだ。

ここで、scrapingが面白いことになっている。2つ事象が起きているのだ。出力するデータの階層構造を(オブジェクト定義の要領で、SymbolとValueのフィールド、そしてその要素を含む株価情報をscrapingし)定義することと、定義した構造にデータを入れるにあたって、scRUBYt!がページで何を探せばよいか指示することである。

なぜ、'Dow'と'31.16'を指定すれば、このようなよい結果が得られると分かったのだろう。実は、ブラウザに'http://finance.yahoo.com/'と打ち込んで、scrape対象の用例を見つけ、あとはscRUBYt!におまかせなのだ。裏ではscRUBYt!が、用例にあるXPathを見つけ出し、どうすれば類似要素を抽出しXMLの結果に上手に配置できるか計算している。(他にもscRUBYt!の処理は実行されているが、大方こんなところだ)。興味のある人がいれば、いつか詳細について触れることとします。

「OK。すごくいい。もう分かった。でもモニタリングの話を続けてるけど、実際どうすればいいんだろう。31.16というvalueは遅かれ早かれ変わるだろうし。そうなったらページを見てまた用例を指定する必要がある。モニタリングはしたくないな。」

その通り。確かに用例の変更の状況に対処できないのであれば、scRUBYt!を使う意味はそんなにない(1回だけデータを抜き出したいというなら別だけど)。幸い、scRUBYt!には強力な対処方法がある。

抽出のスクリプトを走らせ、scrapeしたデータが正しいと判断したらエクスポートすればいい。
エクスポートするfinances.yahoo.comの抽出スクリプトを見てみよう:

#Navigate to the page
fetch 'http://finance.yahoo.com/'

#Construct the wrapper
stockinfo "/html/body/div/div/div/div/div/div/table/tbody/tr" do
symbol "/td[1]/a[1]"
value "/td[3]/span[1]/b[1]"
end

見ての通り、具体的な用例は記述されていない。情報を一般化しているため、これからはこの抽出スクリプトで自動的に情報をscrapeできる。yahooのスタッフがページの構造を変えるまでは、という条件付きだが、幸せなことに、変更はそれほど頻繁ではないだろう。変更された場合は、新しい用例に合わせ抽出スクリプトを再び作り、お楽しみをまた始めればいい。(このケースに自動で対応でできるような拡張を将来計画中。)

今回は、scRUBYt!にできることのほんの一部を示したにすぎない。まだまだ、いい感じでscrapingしデータを出力するための先進機能がたくさんある。http://scrubyt.orgにもっと情報があるので、興味があればみてみて欲しい。

■結論

データ抽出の最初の2ステップ(検索と抽出)は、「どうやったら目的のデータを得られるか(問い合わせ=クエリ)」という疑問を解決するためのものだ。scRUBYt!の最新バージョン(0.2.0)は、この2ステップの機能しか搭載していない。とは言っても、それを正確に処理することだけでも、たくさんのテストやフィードバック、バグフィクス、安定化作業、新機能の積み重ねや改良が必要なのだ。これまで見てきたように、web scrapingはすごく複雑なものなので、理解してもらえるだろう。

最後の2ステップ(統合と配信)は「収集した情報で何をするか、そしてどのようにするか(編成=orchestration)」に応えるものである。これについては次回触れることにする。おそらくscRUBYt!がその機能を実装した段階での話となるだろう。

この記事を気に入って、web scrapingに興味を持ったなら、scRUBYt!をインストールし、コミュニティページ(公式ページ)で情報を追うようにしてほしい。ページはまだ立ち上げたばかりで情報は少ないが、使い始めるために必要な情報くらいは揃っているといいなと思ってます。フィードバック、提案、バグレポート、抽出スクリプトの制作など、scrubyt.orgやscRUBYt!のユーザ体験全般を豊かにするようなものを、楽しみに待ってます。あなたの経験や意見をシェアすることを忘れないでね。

MYSQL/Ruby on Windows XP

  • 2007.03.12 Monday
  • 02:50
MySQL入門以前」の評判がいいみたいなので、ここのところこの本をテキストに、MySQLの勉強してました。この本は、前半でWindowsにMySQLをインストールしてコマンドプロンプトで操作できるようになり、後半でPHPを使って簡単なWebアプリを作れるようになる本なんだけど。確かにわかりやすくて、MySQLの基本操作と、PHPの基本的な考え方は理解できたような気がする。

ただ、MySQLバージョンが4.0というのが、いやはやなんとも。
PHP使ってる分には、気にならないんだけど。Rubyでやろうとするとさ・・・。

4.0に対して、MYSQL/Ruby経由でRubyから操作を加えようとすると、必ずエラーになるんだよねー・・・。もちろん、ものの本にあるように、libmySQL.dllを、MySQLのbinフォルダから、rubyフォルダのbin以下にコピーしてますけどね。
「mysql_stmt_row_tell」のプロシジャーエントリポイントが「libmySQL.dll」に見つからない。みたいなエラーがでてさ。。。

で、結局MySQLを5.0に入れ替えて、5.0のbinフォルダにあるlibmySQL.dllをrubyのbinフォルダに入れ替えたら、うまく動くようになりました!


ちなみに、MYSQL/Rubyは、rubygemからインストールするのが便利。
rubygemsが入っていれば(「One-Click Ruby Installer」でRubyをインストールすればはじめから入ってます)、「gem install mysql」ってコマンドプロンプトから打って、mswin32版の新しい番号を選択すれば完了!(ちなみに、proxyを利用している方は、前回のエントリ参照してください)


いよいよ。明日からRubyでMySQLのプログラムが書けるかなー。ってでも仕事忙しいんだよなー来週・・・。

※ちなみに、MySQLのことがぜんぜんわかんないので「MySQL徹底入門 第2版 〜5.0&4.1新機能対応〜」を買ったんですが。こちらもわかりやすくてよいと思いました。MYSQL/Rubyをつくったとみたさん(MySQLの世界では重鎮の方のようです)が執筆に入っているし、RubyからMySQLを操作するためのサンプルがあるし、巻末にはMYSQL/Rubyのクラスやメソッドが付録で付いてるし。これから重宝しそう。

scRUBYt! (proxy設定の情報含む)

  • 2007.03.07 Wednesday
  • 13:02
ぜんぜんルノアールfanの開発はしてないです。反省。。。

あれから進んだことといえば;
・MySQLの勉強を、Windowsで実施中
・ScRUBYt!のインストール(rubygemsを使えば簡単)

くらいです。

ScRUBYt!って、Ruby設計者のmatzさんのブログで知ったんですが。要は、RSSやAtomに対応していなサイトの情報を、特定のルールで勝手にフィードするツールのようです。

たとえば;


require 'rubygems'
require 'scrubyt'

google_data = Scrubyt::Extractor.define do
fetch 'http://www.google.com/ncr', :proxy => 'proxy.xxxxx.com:8080'
fill_textfield 'q', 'ruby'
submit

result 'Ruby Programming Language'
end

google_data.to_xml.write($stdout, 1)
Scrubyt::ResultDumper.print_statistics(google_data)

※「, :proxy => 'proxy.xxxxx.com:8080'」は、プロキシーを利用してない場合は不要

とすると;


[MODE] Learning
[ACTION] Setting proxy: host=<proxy.xxxxx.com>, port=<8080>
[ACTION] fetching document: http://www.google.com/ncr
[ACTION] typing ruby into the textfield named 'q'
[ACTION] submitting form...
[ACTION] fetched http://www.google.com/search?hl=en&ie=ISO-8859-1&q=ruby
Extraction finished succesfully!

Ruby Programming Language
Ruby Home Page - What&#39;s Ruby
Ruby (programming language) - Wikipedia, the free encyclopedia
Ruby - Wikipedia, the free encyclopedia
Ruby on Rails
Ruby Central
Programming Ruby: The Pragmatic Programmer&#39;s Guide
Ruby Annotation
Why&#39;s (Poignant) Guide to Ruby
RubyForge: Welcome


result extracted 10 instances.


という結果が返ってくるわけです。

これを使って、セレクトショップならぬセレクトサイトをつくったりしたら面白そう。

※実は、ルノアールfan自体も、ルノアールのオフィシャルPCサイトを、net/http使って勝手に情報を持ってきて表示してるだけだから、scRUBYt!をもっと先に知ってたら、これで作ってたかもなー。


※進化する“Webスクレイピング”技術の世界 − @IT
http://www.atmarkit.co.jp/news/200702/20/scrubyt.html

※scRUBYt!の公式サイト;
http://scrubyt.org/

※rubygemsの自動(ダウンロード&)インストールをプロキシー経由で利用する場合は、下記のサイトが参考になります。要は、先にローカルに落としておいて、必要があれば直接ファイル名を指定してあげる(ページ下のコメント参照)ことが必要ということです。
http://f29.aaa.livedoor.jp/~snaka/PukiWiki/PukiWiki.php?Ruby%20on%20Rails%20%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%A4%C7SocketError

Rubyを挫折しない理由

  • 2007.02.23 Friday
  • 18:18
プログラムとかは、自分とは別の人種がやることだ。と思っていた自分が、半年近くプログラムの勉強を続けているのは、おそらくRubyだからなんでしょう。

たとえばPerlの場合、開発してるのは海外の人たちで、自分とはやっぱり距離があるんだけれど。母国語で、プログラム言語の開発についてのMLアーカイブを読んだりすると、なんだかすごく親近感がわくんだよね。

※1997年に[ruby-list]で交わされていたCGIのライブラリを作るあたりのやりとり
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/4817

うーむ。面白い。

PR

calendar

S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< April 2017 >>

本が出てます☆

Twitter

selected entries

categories

archives

recent comment

  • Mac OS X Lion で、emacs を楽に使うために、Meta キーを「option」に設定したい。
    通りすがり (01/19)
  • 携帯キャリアの、アクセス制限(未成年保護)についてのまとめ
    たけのこの里 (10/01)
  • Mac OS X Lion で、emacs を楽に使うために、Meta キーを「option」に設定したい。
    イシカワ (07/16)
  • さくらインターネットで、gem install すると「chown/chgrp: Operation not permitted 」と叱られる件の対応
    sean (04/20)
  • さくらインターネットで、gem install すると「chown/chgrp: Operation not permitted 」と叱られる件の対応
    てっちー (03/24)
  • Mac OS X Lion で、emacs を楽に使うために、Meta キーを「option」に設定したい。
    JO (01/04)
  • Passbook(パスブック)on iOS6 (NDAに触れない範囲で...)
    ぱん (09/28)
  • Passbook(パスブック)on iOS6 (NDAに触れない範囲で...)
    宮腰睦美 (09/23)
  • magit を、Lion の emacs にインストール
    ぱん (05/08)
  • 【 Xcode4.2 】Interface Builder使わずに、座標を合わせたい(習作1)
    ぱん (12/21)

recommend

iOSプログラミング 第2版
iOSプログラミング 第2版 (JUGEMレビュー »)
アーロン・ヒレガス,ジョー・コンウェイ,Aaron Hillegass,Joe Conway
■独学で初心者を脱出するには、必読ではないでしょうか。翻訳でニュアンスが伝わらない部分があるので、原書と、サポートサイト(英語)を活用すべし!です。

recommend

iPhoneプログラミングUIKit詳解リファレンス
iPhoneプログラミングUIKit詳解リファレンス (JUGEMレビュー »)
所 友太
■内容古いですが、iOSプログラマー中級以上の階段を登るために、必要な本だと思います。iOS5対応版出ないかな。。

recommend

iOSプログラミング入門 - Objective-C + Xcode 4で学ぶ、iOSアプリ開発の基礎
iOSプログラミング入門 - Objective-C + Xcode 4で学ぶ、iOSアプリ開発の基礎 (JUGEMレビュー »)
大津 真
■Ch.1「iOS プログラミングを始めるための基礎知識」でXcodeの概要を理解して、Ch.2「Objective-C の基礎知識」で、Objective-Cの考え方を理解できます。iOSプログラミングのキックオフにぴったり。

recommend

去年ルノアールで
去年ルノアールで (JUGEMレビュー »)
せきしろ
■ルノアールで妄想が爆発

recommend

RailsによるアジャイルWebアプリケーション開発 第4版
RailsによるアジャイルWebアプリケーション開発 第4版 (JUGEMレビュー »)
Sam Ruby,Dave Thomas,David Heinemeier Hansson
■Railsのバイブル第4版の日本語版が2011年末にリリース!サーバサイドで準備するAPIや、Webサイト関連のもろもろは、やっぱRailsでしょう。

links

profile

search this site.

others

mobile

qrcode

powered by

無料ブログ作成サービス JUGEM