プログラマでありたい

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

プログラム

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…