2009年9月20日日曜日

java-twitter とGAE

java-twitterはApp Engineでは使えない.
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
を使っているから.

くそー...面倒くさいな..

java-twitterのインストール

twitterのAPIをwrapしたライブラリjava-twitterをインストールしようとしたら,はまったのでメモ.バイナリがダウンロードできるのだが,依存しているjarが全然書かれていないので,一筋縄ではないかない,という...これがmaven時代のjavaプロジェクトのありかたなのか.

前提として,mavenはインストールされていること.適当なプロジェクトを作る.

> mvn archetype:create -DgroupId=com.example -DartifactId=sample
> cd sample
pom.xmlを編集して,下記を追加.レポジトリを追加しているのと,コンパイラのバージョン指定.
  <repositories>
    ...
    <repository>
      <id>java-twitter-repository</id>
      <url>http://java-twitter.googlecode.com/svn/repository/</url>
      <name>java-twitter maven repository</name>
    </repository>
    ...
  </repositories>
...
  <dependencies>
    ...
    <dependency>
      <groupId>net.unto.twitter</groupId>
      <artifactId>java-twitter</artifactId>
      <version>0.9-SNAPSHOT</version>
    </dependency>
    ...
  <dependencies>
...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
で,
> mvn package
> mvn dependency:copy-dependencies -DoutputDirectory=lib
とやるとlibにすべてのjarが集められる.
> cd lib
> ls
commons-beanutils-1.7.0.jar ezmorph-1.0.6.jar
commons-codec-1.2.jar  google-collections-0.9.jar
commons-collections-3.2.jar java-twitter-0.9-SNAPSHOT.jar
commons-httpclient-3.1.jar joda-time-1.6.jar
commons-io-1.4.jar  json-lib-2.2.3-jdk15.jar
commons-lang-2.4.jar  junit-3.8.1.jar
commons-logging-1.0.4.jar protobuf-java-2.2.0.jar
こんなにたくさん...たしかにこれはいちいち書いてられないかも.

2009年9月15日火曜日

OOWebとPOST

OOWebというcherrypyににたサーバフレームワークがある.メソッドをURLツリーにマップして,リフレクションでよびだしてくれてなかなか面白いのだが,どうもPOSTで生データを送ったりするのに対応できないっぽい.formからPOSTする場合のデータはちゃんとハンドルしてくれるのだけど,逆に生のデータがとれないのだ.

メソッドにはRequestStateという引数がわたるのだけど,このRequestStateのなかに生データへアクセスする方法が含まれていないようなのだ.eclipseで止めてのぞいてみたがだめっぽい. ソースをみても,RequestState以外を引数として呼び出すコードはない.ということで多分だめ.うーん,面倒だなあ.やっぱりjettyを使うのか..

2009年8月27日木曜日

NHKのラジオ講座をMacでダウンロード

NHKのラジオ講座は,今年度から前の週1週間分だけ,ストリーミングできるようになった. これはこれですばらしいことではあるが,なんで一週間分なんだ! とか怒りもわいたり. さらに問題なのは,ストリーミングにフラッシュを使っているので,普通にダウンロードすることが できないこと.しかも昨年度の試行では普通にできたのに,わざわざ今年度からできなくしているのだ. こういう嫌がらせにどういう意味を見いだしているのか理解できない.

それはさておき何とかならないか,調べてみると,Windows上には 高梨IT製作所のキャプチャツール というツールがあり,フラッシュをダウンロードしてmp3に変換してくれる. すばらしいのだが,MP3の名前をSJISにしているので,Macにコピーして iTunesに取り込むと文字化けする. コピーするのも面倒.

で,幸いこのツールはRubyで書かれているので,Macで使えるようにしてみた. このキャプチャツールはrtmpdumpという外部プログラムを 使ってflvをダウンロードし, ffmpegを使ってmp3に変換する.なので,これらをMac上に 用意する必要がある.ちなみに,rtmpdumpはadobeの独自プロトコルをリバースエンジニアリングして 作った物のようで,ちょっとグレイかもしれない.

ffmpegは

sudo port install ffmpeg
で入る.rtmpdumpのほうはソースからコンパイルする.このときopensslが必要なので,
sudo port install openssl
でopensslを導入し,rtmpdumpのメイクファイルを編集し,CFLAGSとC++FLAGSに
-I /opt/local/include
を,LDFLAGSに
-L /open/local/lib 
を追加しておく.これでmakeすると rtmpdump_x86 というバイナリができる.これを 適当なパスにコピーしておく.

キャプチャツールにはCUI版とGUI版がある.CUI版のほうを使う. ここ からダウンロードできる. ZIPを展開すると,トップディレクトリにget-flv.rbがある. このなかで,rtmpdumpとffmpegのバイナリを指定している場所があるので 適当に書き換える.id3も指定しているが,使っていないようなので無視.

ファイル名がSJISになっているのは,わざわざSJISにしているから. lib/get_flv.rb に何カ所か tosjis を呼んで部分があるが, それらを全部削除. これで,完成.

ruby get-flv.rb kor
とやると,mp3/kor に日本語名でファイルがつくられる. iTunesに入れても文字化けしない. すばらしい.

2009年7月28日火曜日

netstat

TCPでリッスンしているポートを表示
netstat -t -l
さらに
netstat -t -l -p
とするとpidとプログラム名が表示されるけど,sudoしないと自分のプロセス以外は表示されない.

2009年7月24日金曜日

linux container ホスト,ゲスト通信

Linuxコンテナでは,ゲスト上で任意のジョブを実行することができない.vserver だとできるのだが.ネットワークをちゃんと設定してsshでやればいいのだが,macvlanを使う場合にはなかなか面倒らしい. で,いろいろ試してみたら,FIFO (名前付きパイプ) で通信できることがわかった.ゲストのファイルシステム上にFIFOをつくればいい.簡単.

2009年7月17日金曜日

VMware serverのコマンドラインからの制御

ここにいろいろ書いてある.VMのIDは16,32,といくようだ.ひょっとして48を指定すると,16と32が同時に制御できるのか?
 vmware-vim-cmd vmsvc/getallvms   - リスト取得
 vmware-vim-cmd vmsvc/power.on 16
 vmware-vim-cmd vmsvc/power.off 16
 vmware-vim-cmd vmsvc/power.reboot 16