読者です 読者をやめる 読者になる 読者になる

プログラマでありたい

おっさんになっても、プログラマでありつづけたい

RubyでWebスクレイピングの話をしてきました。第1回Webスクレイピング勉強会@東京

ちょっと間が空きましたが、第1回Webスクレイピング勉強会@東京に参加して、LT枠でRubyでWebスクレイピングの話をしてきました。 Rubyで始めるWebスクレイピング from Takuro Sasaki 今まで全く参加したことがないレイヤーの勉強会だったので、新しい発見が…

Rubyのtwitterライブラリで、Twitter Streaming APIが扱えるようになっていた

久々に@sferikによるTwitterのAPIを使ってみると、いつの間にかTwitter Streaming APIも取得できるようになっていました。Twitter Streaming APIは、APIの中でも異色のもので、ひたすらパブリック・タイムラインを取得するといったものです。4年ほど前に出た…

RubyのHTTPS通信で、OpenSSL::SSL::SSLErrorが出たら?

Mac OSのバージョンアップする度に出しているような気がするのが、RubyのHTTPS通信でのエラー。ルート証明書が見つからなくてエラーがでます。 /.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/net/http.rb:918:in `connect': SSL_connect returned=1 errno=0 …

RubyでAmazon Product Advertising APIを再び使ってみる

ちょっと必要になって、再びAmazonのProduct Advertising APIを触ってみました。このAPIは、Amazon謹製のAPIで、商品検索や個別商品情報の取得が出来ます。元々このAPIの名前は、Amazon アソシエイト Web サービスといって、AWSと呼ばれていました。クラウド…

開発用プロキシ、「CocProxy」が便利

CocProxyというツールがあります。名前の通りプロキシサーバーなのですが、用途が開発用です。置換プロキシと言うらしいですが、これがとっても便利です。例えば、クローラーの開発や、HTML,CSS,JavaScriptの修正をする際に、このCocProxyを利用するとダウン…

Ruby製のクローラー AnemoneでストレージをSQLite3, MongoDBに変更する

Anemoneのストレージを変更するシリーズ、ついでにSQLite3とMongoDBも書いておきます。 AnemoneでSQLite3を利用する AnemoneでSQLite3を利用するには、オプションで:storage => Anemone::Storage::SQLite3()と指定するだけです。引数を渡さなければ、anemone…

RubyでYahoo! キーフレーズ抽出APIを使ってテキストマイニング

Rubyでキーワード抽出およびTF-IDFでキーワードの重要度の重み付けが出来んかなと思ってGemを漁ってみました。残念ながら、日本語データに関しては、それらしいのは見つかりませんでした。キーワード抽出については、Mecabで形態素解析後に品詞同士のつなが…

Ruby製のクローラー Anemoneでストレージをファイルに変更する

シリーズの如く何度かAnemoneの話を書いています。Anemoneは割りと小さなモジュールなので、ソースを読めば直ぐに解ることが多いです。一方で、ドキュメントが充実しているとは言い難いので、少し違うことをしようとすると、ソース嫁という状態になります。…

Ruby製の構文解析ツール、Nokogiriの使い方 with Xpath

RubyでHTMLやXMLをパースする構文解析ツールの定番は、Nokogiriです。スクレイピングする際の必需品で、なくてはならないモジュールの1つです。ただ色々なことが出来る反面、どこから取りかかれば良いのか解り難い部分もあります。自習を兼ねて、Nokogiri概…

Ruby製のクローラー Anemoneの文字化け対策

何度も取り上げていますが、Ruby製のクローラーであるAnemoneについてです。もう2年ほどメンテナンスされていないものの、Rubyの中のクローラー・フレームワークとしては未だに一番の完成度です。しかし、残念ながら幾つかの問題点があります。その中で日本…

Ruby2.0の文字エンコーディングの簡単なまとめ。KconvとM17N

浦島太郎状態になっていたので、Ruby周りの文字コードの扱いについて改めて勉強しなおしました。簡単にいうとRuby 1.9.1以降の多言語化仕様(M17N)では、文字コードをどう扱えばよいのかという点です。 Rubyの文字コード変換ライブラリ Ruby 1.9.1の多言語…

Capybara-DSLのはなし

ちょっとCapybaraについて、整理する必要があったのでこちらで簡単にまとめておきます。Capybaraは、Githubのスタートページに使い方が丁寧に書いているので、そちらを参照したら大抵のことが解るようになっています。 What is Capybara Capybaraは、Webアプ…

あらためてRuby製のクローラー、"anemone"を調べてみた

3年ほど前に、Ruby製のクローラー"anemone"を紹介しました。その当時から完成度が高く、Rubyでクローラーを使う場合はanemoneを利用してきました。最近、他に新しくて良いのがないか調べましたが、機能面の網羅性という意味でanemoneを超えるものは見つけら…

複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた

最近のRubyのクローラーは、EventMachineを使って並列化するのが流行のようです。EventMachineは、非同期処理をお手軽に実装できるフレームワークです。Rubyのスレッド機能との違いは、Reactorパターンを使いシングルスレッドで実装している点です。こちらの…

JavaScriptにも対応出来るruby製のクローラー、Masqueを試してみる

ちょっと前に試そうと思って、そのまま放置していたruby製のクローラー「Masque」を試してみました。ruby製のクローラーは、他にはAnemoneという優秀なものがあります。その上で何故というと、Anemoneにはない特性があるからです。 MasqueはCapybaraのDSLで…

TwilioとAmazon SNSを組み合わせて、電話で自動通知

今年の4月にTwilioのアカウントをとって早8ヶ月。これは色々なことに使えるとワクワクしながら、すっかり放置していました。日本ではKDDIさんと組んで展開し、色々な所でハンズオンなども開催されていたので、知名度的にも手軽に使える音声APIのデファクトに…

Jenkinsでビルド・パイプラインを構築する

前回、Jenkinsのインストールについて書きました。今回は、Jenkinsでビルド・パイプラインを構築する話です。 ビルド・パイプラインとは? ビルド・パイプラインとは、ビルドのプロセスを分割して順番に実行していくことです。例えばビルドの流れとして、コ…

Amazon Linux AMIにRuby用にJenkinsをインストールする

HudsonもといJenkinsは昔からよく使っていますが、全くそれに関するエントリーをあげていないことに気がつきました。ということで、暫くJenkins強化週間です。まずはお決まりのインストールメモから。Java用だと一瞬で終わってしまうので、Rubyで使用するこ…

AWS SDK for RubyでS3の操作をする

AWS SDK for Rubyでのファイル関係のS3の操作です。一覧取得とファイルの取得の方法をメモ程度にまとめています。一覧取得については、基本的には2通りあってBucket.as_treeからツリー形式で取得する方法とBucket.objects.collectからキーの一覧を取得する方…

Mac OS 10.7(lion)にNetBeansのインストール

久々にRuby On Railsで開発をしようとNetBeansを使おうとしました。新しくしたMacbook Proにはインストールしていなかったので、ダウンロードしてインストールしようとしました。プラグイン等の関係で、7.0.1をダウンロードしてウィザードに従っていると、下…

AWS SDK for RubyでS3へのアクセス認証付きURLを生成する

Amazon S3のアクセスコントロール(Access Control)には、次の5タイプがあります。 IAMのポリシーを使った制御(Using IAM Policies) バケットポリシーを使った制御(Using Bucket Policies) ACLを使った制御(Using ACLs) ACLとバケットポリシーを併用した制御(…

Mac OS X Lionに、Javaの開発環境をインストールする

久々にJavaのプログラミングをしようと思って、Mac OS X Lionに環境設定しました。それぞれのモジュールのダウンロード元が解れば、簡単です。 JDKのインストールと設定 AppleのDevelopersサイトから、JDKのダウンロードをする。Java for OS X 201X-XXX Deve…

Windows機におけるRuby On Railsの開発環境を考える

Windows機でRubyの開発するケースは、かなり多いのではないかなと思います。 そんな中で、遭遇するであろう課題を羅列してみます。 GEMモジュールが入らない or 微妙に違う 恐らく本番環境で使われるであろうLinux環境とWindows環境では、そもそもファイルシ…

Capistranoのタスク一覧

Capistranoのタスクが、具体的にどのように動くか調べてみました。最初は下記のドキュメントを参考にしていたのですが、結局ソースを見たほうが10倍簡単に理解できました。コード中のrecipes/deploy.rb辺りを一度読むことを強くお勧めします。 Capistrano re…

RubyからAmazon SESでメールを送る

プログラムからちょこっとメールを送りたい時って、ありますよね?メールサーバを立てること自体はそれ程大変ではないですが、維持管理していくのは昨今非常に面倒くさいです。またスパム撲滅の為にプロバイダの規制が多くて、気が付いたら送れなくなってい…

今更聞けないCapistranoでリリースの自動化

ここ数年で開発の現場でAgile開発の文化や手法が、ずいぶんと取り入れられるようになってきているようです。アジャイル開発はその根底に文化が大事ですが、それを支えるツールというのも重要になってきます。ソース管理やビルド管理、テストの自動化と色々あ…

RVMを使ってMacで、Ruby 1.8.7と1.9.3を共存

Mac OSX(Snow Leopard) でのRuby 1.8.7と1.9.3の共存の設定です。開発環境であれば、手軽なRVMを使うと良いと思います。 RVMのインストール $ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)設定…

RubyでAmazon DynamoDBを使ってみた

話題のDynamoDB。かなり面白そうです。アマゾンの大量のトランザクションを支える技術を、インフラの面倒をみることなく使えるという、まさにクラウドの醍醐味というサービスです。 今までクラウドとRDBの相性の悪さというのはどうしてもありました。RDBの本…

Google Chart APIで2次関数のグラフを描く

グラフを書きたくて調べていたのですが、Google Chart APIはグラフの数値だけではなく数式を渡すことが出来るようです。これで二次関数を渡して、二次曲線を描くことが出来ます。知らなかったけど、便利そうです。 Line Charts - Google Chart Tools: Image …

PythonのIDE(開発環境)を色々試してみる

Python数日目の初心者です。Google AppEngineのチュートリアルに沿ってコーディングしていますが、そろそろVimオンリーで開発するのが辛くなってきました。Pythonのコーディングで純粋なVimだと何が辛いかというと、インデントが解りづらいところです。Pytho…

始まりはいつもHello World ~google app engine for python編

環境設定が終わった所で、お決まりのHello Worldです。 Googleのチュートリアル通りにすれば、基本的に詰まることは少ないでしょう。 まずは、ディレクトリの作成。 helloworld その直下にhelloworld.pyを作ります。 print 'Content-Type: text/plain' print…

Snow LepordにGoogle App Engine用のpythonをインストール

MacBook Air Snow LepordでGoogle App Engineを使う為の準備です。 スタート ガイド: Python - Google App Engine - Google Codeの通りに準備をしていけば、特に問題ないです。Google AppEngineに必要なのは、Python2.5とApp Engine ソフトウェア開発キット…

いい歳して、Pythonに挑戦してみる

私は30歳をとっくに越えたエンジニアですが、世の中の動きに逆らいきれずPythonを覚えようと思いました。正確に言うとPythonを使いたいのではなく、Google App Engineを使いたいだけなんですけどね。1年以上前にGAE/Jの使い方をある程度覚えましたが、も…

オープンソースのRubyのWebクローラー"Anemone"を使ってみる

Webサイトの調査をしようと思い、サイトクローラーが必要になりました。 各言語ごとに色々あるので何を使うか悩むところですが、Rubyでお手軽にということでAnemoneを採用しました。 ちなみに他の言語だと、下記のうちのどれかが良いのではないでしょうか? …

Gemのリポジトリの追加と削除

Amazon EC2ではもっぱらRightScaleが提供するCentOSを使っています。特に癖もなく使いやすく満足です。1点不満があるとすれば、デフォルトで設定されているRubyのGemのリポジトリサーバが遅くて、Rubyのモジュールインストールに時間が掛かることくらいです…

Railsのaction cache(アクション キャッシュ)を使ってみる

とあるRailsで構築しているサイトでパフォーマンス改善をしたくて、キャッシュ機構の導入を検討しました。キャッシュ機構は色々なポイントがありますが、ざっくり分類すれば言って下記の3点でしょう。 1.Webサーバ側によるコンテンツキャッシュ 2.アプ…

cassandraのkeyの一覧を取得したい

cassandraインストール時についてくるCUIベースのツールcassandra-cliでは、データ操作はget,set,delしか出来ません。getはkeyを元に取得するので、そもそもkeyが解っていないと全くデータはとれません。となると、keyの一覧が欲しくなる時があると思います…

Twitter Streaming APIのJSONの構造

Twitter Streaming APIで、sampleから返ってくるjsonの値。 ぱっと見たらよく解らなかったので、メモがてらにエントリー。 % curl http://stream.twitter.com/1/statuses/sample.json -uYOUR_TWITTER_USERNAME:YOUR_PASSWORD {"coordinates"=>nil, "created_…

RubyとCassandraの連携のサンプルプログラム

先日インストールしたCassandraを、Rubyから使ってみようと思います。 gemで用意されているのかなと期待したら、やっぱりありました。幸せ インストール # gem install cassandra 中略 Installing RDoc documentation for thrift_client-0.4.2... Installing…

Googleのページランクを取得するスクリプト。或は人類のハッキング気質について

何気に検索していたら、Googleのページランクを取得するというモジュールが多数存在するようです。 ソースを見ていたら、所定のページから値を取得してきて、特定の数字で割ってランクを出しているようです。 所謂マジックナンバーを割り出しているのです。…

JRubyで"Task not supported by 'jdbc'"と出たら

Netbeans+JRubyで開発環境を作ったのですが、RSpecでテストしようとしたら、下記のようなエラーがでました。 rake aborted! Task not supported by 'jdbc' 言われた通り、jdbcに対するTaskがないのが問題のようです。 回避策は、$JRUBY_HOME\lib\ruby\gems\1…

JRubyでruby-debug-baseとruby-debug-ideをインストールする方法

jruby環境でgem install ruby-debug-baseとすると下記のようなエラーが出てくると思います。 Building native extensions. This could take a while... WARNING: JRuby does not support native extensions or the `mkmf' library. Check wiki.jruby.org for…

RubyでTwitter Streaming APIを使ってみる

何かTwitterを使ったサービスを作ってみたくて、時間が空いている時にTwitterの仕様を眺めています。 TwitterはAPIが充実していて、非常に開発者フレンドリーです。 ただAPIの使用については回数制限などある程度の制約があるので、目的に沿って使う必要があ…

5分で作るTwitterクライアント

rubyのtwitterモジュールないかなと思ったら、やっぱりありました。 基本的な使い方は果てしなく簡単です。 まずは下準備。 gemでtwitterとoauthをインストール。 $ sudo gem install oauth Successfully installed ruby-hmac-0.4.0 Successfully installed …

もしプルシェンコとライサチェックが共演すると?

フィギュアスケート男子で金メダルをとったライサチェクジョニー・ウィアーと銀メダルのプルシェンコをみてると、この映画を思い出しました。 俺たちフィギュアスケーター シングルのフィギュアスケート界から追放された元世界チャンプの二人が男子二人のペ…

Web::Scraperのリンク集

今更ながらWeb::Scraperという便利なモジュールがあるのを知りました。 Miyagawaさん作のCPANモジュールです。 まずは、CPANサイトの説明を読みましょう。 Web::Scraper - search.cpan.org そして、説明のスライドショー。 Web Scraper Shibuya.pm tech talk…

CPANのダウンロード先URLを変更する方法

めったにしないので中々覚えられないのが、CPANのダウンロード先のURLの変更方法です。 メモがてらに残しておきます。 現在の取得先の一覧を取得する方法 o conf urllistで取得できます。 cpan> o conf urllist urllist http://theoryx5.uwinnipeg.ca/pub/CP…

Google App Engineの始め方

八角研究所 : 誰でも簡単にできる Twitter ボット作成入門を読んでいて、Twitter botを作ってみたいなぁと思いました。Twitter API仕様書の日本語訳を読んでいたのですが、やり取りは全てHTTPなので簡単そうです。空いているサーバにボットをしこめば簡単に…

Eclipseからアプリを実行して、OutOfMemoryErrorが出たでござる

Tasteの跡を継ぐオープンソースのリコメンドエンジンのMahoutで遊んでいる最中です。このアプリはドキュメントに書いている通り、大量のメモリを消費します。サンプルアプリを作ってlivedoor clipsのデータ(150万件くらい)をサンプルに動かしたら案の定下…

S2JDBCのAutoSelectの中身

今週はがっつりとS2JDBCを使っているので、興味が出てきてS2JDBCの中身を見てみました。あまり時間がないので、とりあえずAutoSelectImplとSqlFileSelectImplだけ。並べてみると面白いですね。SqlFileSelectImplはかなりシンプルになっていて、ほぼパラメー…