プログラマでありたい

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

プログラム

始まりはいつも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はかなりシンプルになっていて、ほぼパラメー…

S2JDBCのSQL自動生成で、結合条件を変えたい

S2JDBCのSQL自動生成機能は、基本的に素晴らしいです。はるか昔にHibernateを使った時のもどかしさは、ほとんどありません。ただ、たまーに結合のチューニングしたいなぁと思うことがあります。 例えば、AテーブルとBテーブルをジョインして、ページングで制…

Seasar2で、AOPの使い方

AOPの基本的な機能はフレームワークが用意しているので、呼び出すだけで使えます。 設定すべきは、customizer.diconのみ。後は、必要とする機能を実装をすれば使えます。 デフォルトのcustomizer.diconは下記のようになっていると思います。 <components> </components>

S2Junit4でNoClassDefFoundErrorが出たら

DoltengでS2JDBCオンリーやS2DAOオンリーでプロジェクト作成した場合に、S2TestCaseを実行しようとするとNoClassDefFoundErrorが出ると思います。原因はS2TastCaseが、ServletAPIを必要としているからです。 対処策としては、pom.xmlにgeronimo-servlet_2.4_…

Perlで2次元ハッシュ(の一歩手前)

下記のようなデータを、日付別でみたいなぁと思いました。 いわゆる、クロス集計です。 元データ 20090301 breakfast 400 20090301 lunch 1000 20090301 dinner 800 20090302 breakfast 700 20090302 lunch 500 20090302 dinner 4000 20090303 breakfast 800…

S2JDBC使う前に読むべきエントリー あるいはServiceクラスの実装について

S2JDBCでServiceクラスをどのように作るか考えた時に参考にしたエントリー群です。肝は、3点。 Serviceクラスは、Entityクラスと1:1で対応させる。 Serviceクラスは、Entityに対する処理以外はやらない。 Serviceクラス以外は、jdbcManagerを生で使用しない…

Eclipse3.3 + Tomcat6.0.18で"Setting property 〜の警告

Java5 + Tomcat5.5から、Java6 + Tomcat6に移行。 WTPで起動すると、下記のような警告が出ます。 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:test' did not find a matching…

DBIでレコードをハッシュ配列で取得する

最近手の空いている時間でperlでごにょごにょしています。DBIを使ってレコードをハッシュ配列に格納するのはどうだったけと調べてました。ストレートにいけば、selectall_hashref()が正解なのですが、あまりよい噂をききません。で、あっと驚く代替法がある…

HTML::ExtractContentで文字コード絡みで悩む

HTML::ExtractContentを使っているのですが、下記のような警告が出て困りました。 Malformed UTF-8 character (unexpected continuation byte 0x84, with no preceding start byte) in pattern match (m//) at /usr/lib/perl5/site_perl/5.8.8/HTML/ExtractC…

findとxargsについて、もうちょっと

find/grep/xargsコマンドを使いこなす 業務で楽するためのUNIXテクニック集「検索」編 ちょっと知っているだけで、効率が全然違うのがfindとxargs。 たまに使うのを、挙げてみる。 該当ファイルの文字コードを一括置換 find . -name ’*.html’ | xargs nkf …

ハッシュに配列を格納する

OO形式で作る時に、データメンバの中身に配列を入れたい時が稀にあります。慣れていないと割と悩みます。使っていないとすぐ忘れます。(←今この状態。)思い出しがてらにメモ。 Perlクックブックに倣って、unixのログインユーザを格納する例です。 #コンス…