Apache Thrift を動かしてみました

Eviernote の API を使うには、Apache Thrift が必要とのこと、まずは Apache Thrift を動かしてみました。

ホームページ

ダウンロード...

  • thrift-0.6.1.tar.gzをダウンロードして、展開、コンパイルなどという方法をとろうとしましたが、autoconf のバージョンが古いというのが出てきて、MacPorts で autoconf を入れました。
  • そこでやっと気づいたのですが、MacPorts で Thrift が導入できるのではと。

MacPorts での Thrift 導入

先人に感謝です。以下のコマンドでインストールできました。バージョンが 0.6.0 ですが、まずはこれで試してみる事にします。

$ sudo port install thrift

チュートリアルの実行

tutorial/README ファイルをみながら試してみました。
C++ で試すとして、コンパイル。

$ thrift -r -gen cpp tutorial.thrift

gen-cpp ディレクトリにファイルが生成されました。

$ ls -1 gen-cpp
Calculator.cpp
Calculator.h
Calculator_server.skeleton.cpp
SharedService.cpp
SharedService.h
SharedService_server.skeleton.cpp
shared_constants.cpp
shared_constants.h
shared_types.cpp
shared_types.h
tutorial_constants.cpp
tutorial_constants.h
tutorial_types.cpp
tutorial_types.h

本来は、サーバーは Calculator_server.skeleton.cpp にコードを記述するところ、チュートリアルとして各言語の実装がされていますので、cpp ディレクトリのサーバとクライアントを make。その前に、Makefile 内のパスを修正。

 :
BOOST_DIR = /opt/local/include
THRIFT_DIR = /opt/local/include/thrift
LIB_DIR = /opt/local/lib
 :

make して、サーバ CppServer とクライアント CppClient を別ターミナルから実行。

$ ./CppServer
Starting the server...
ping()
add(1,1)
calculate(1,{4,1,0})
calculate(1,{2,15,10})
getStruct(1)
$ ./CppClient
ping()
1+1=2
InvalidOperation: Cannot divide by 0
15-10=5
Check log: 5
$

確認バージョン

  • Apache Thrift 0.6.0
  • Xcode バージョン 3.2.5
  • Mac OS X バージョン 10.6.7
カテゴリー: 開発 Tips (51): Evernote 連携 タグ: , パーマリンク

コメントは停止中です。