[c/c++] google testをカレントディレクトリ配下のみで利用する[c/c++] how to use google test under current directory

今月末に日本に帰国で、船便の準備に追われています。松浦です。
フランスの配送では何度も痛い目を見ました。フランスから見れば、日本の運送会社はどれを取っても、驚きのクオリティです。日本での配送トラブルなんかが 時々ネタにされますが、いつも微笑ましく見ています。今朝も現地の運送会社経由でワインが家に届いたのですが、1本割れていました(泣)。ちなみに、パリ のクロネコヤマトは段ボールに凱旋門やエッフェル塔が描かれていてちょいとかわいいです。

今日はgoogle testの利用方法を紹介します。お手軽にc/c++のテストフレームワークを使おうという主旨のものです。google testはc++用ですが、ここではあえてC言語用に書いています。最後におまけとしてコンパイルおよびテスト結果の表示を行ってくれるvim scriptを紹介します。

続きを読む

ベクトルで理解する相関係数correlation coefficient

フランス滞在も残り少なくなってきました。松浦です。
最近マルシェ(朝市)に行くと、牡蠣を売っている陽気な兄ちゃんや、八百屋のかわいい子や、人の良いチーズ屋のオッチャンなんかが声をかけてくれたり、雑談したりと、地元にもだいぶ馴染んできました。来月お別れかと思うと少々寂しい感じもします。

今日は相関係数をベクトルで捉える考え方を紹介します。2つの集合にどの程度の相関があるか数値的に知る際に、相関係数が有用です。しかし、相関係 数の理解が曖昧なケースが研究ゼミ等で散見されます。相関係数はcosθなんだ、と一旦出来れば相関係数の性質を誤ることは無いと思い、スライドにまとめ てみました。

続きを読む

CCNC 2013 参加レポート CCNC 2013 report

少し時間が経ってしまいましたが,先日開催された国際会議CCNC 2013に参加しましたので,その報告をしたいと思います.

会議概要

  • 会議名:IEEE CCNC 2013 (The 10th Annual IEEE Consumer Communications and Networking Conference)
  • 場所:アメリカ ラスベガス
  • 期間:2013年1月11日 – 14日
  • ウェブサイト:http://ccnc2013.ieee-ccnc.org/

CCNCは,ワイヤレスネットワークやモバイルプラットフォームなどに関する研究発表が数多く行われる国際会議です.上はモバイルアプリケーションの提案から下は無線の変調に関するものまで,幅広いレイヤの発表が行われています.

また,通常の口頭発表のセッションとは別にデモ発表のセッションも用意されており,開発したデバイスやアプリケーションを使いながら研究の紹介を行うことができます.

strip

デモ発表について

今回私は,”TrafficCam: Sharing Traffic Information based on Dynamic IPv6 Multicast Group Assignment using Smartphone Sensors”というタイトルで,ITS(Intelligent Transport Systems, 高度交通システム)に関する研究のデモ発表を行いました.
今回提案しているのは,同じ車列を走っている別の車両との通信を実現する方法に関するものです.この方法を用いて同じ渋滞に巻き込まれている別の車両と渋滞の原因に関する情報を共有するAndroidアプリケーションを開発し,そのデモンストレーションを行いました.

booth

デモのブースには多数の方に足を運んでいただき,様々なコメントを頂くことができました.コメントを頂いた方の中には自動車メーカーの研究者の方も 含まれており,非常に参考になりました.そこでも指摘されたのですが,実環境での利用を考えたとき,スケーラビリティやデプロイについてもしっかりと検討 する必要性を強く感じました.

なお,今回発表したものは,2013年3月9日のオープンキャンパスでもデモンストレーションを行う予定です.ご興味のある方は,是非お越しください!

オープンキャンパスの詳細はこちら

全体を通して

口頭発表のセッションにもいくつか参加したのですが,その中では

Yutaka Ihara, Haris Kremo, Onur Altintas, Hideaki Tanaka, Masaaki Ohtake, Takeo Fujii, Chikara Yoshimura, Keisuke Ando, Kazuya Tsukamoto, Masato Tsuru, Yuji Oie: Distributed Autonomous Multi-Hop Vehicle-to- Vehicle Communications over TV White Space, Proc. of the 10th Annual IEEE CCNC2013, pp. 330-338, Las Vegas, USA, Jan. 2013.

が印象に残っています.車車間のマルチホップ通信に関する発表だったのですが,面白いのはその評価方法で,実験に必要な無線帯域の免許を総務省から 取得し,屋外で実車を使って実験を行っていました.ITSに関するチュートリアルでもissueとして取り上げられていたのですが,評価をどのように行う か,そしてその妥当性はどうか,ということも(ITSの分野に限らず当たり前のことですが)十分検討する必要があると感じました.

実は今回が初めての学会発表&初めてのアメリカ訪問だったのですが,やはりひたすら英語で話し続けるのは非常に疲れました.また,いろいろ な場所でいろいろな人に気軽に話し掛けられることが多く,空港のATMが壊れていて困っていると通りすがりの人が別のATMの場所を教えてくれたり,ホテ ルのカジノで突然「お前の靴,クールだな!」と褒められたりと,カルチャーショックの連続でした...

airport

空港にもスロットマシンが並んでいました

今回のような発表でコメントを頂いたり,他の方の研究を見聞きすると,やはり非常に刺激になるものです.今回はデモ発表でしたが,今後も研究を進め,学会発表等の形で社会に還元していきたいと考えています.

Yohei KANEMARU

忘年会が催されましたyear-end party of inet-lab

今年も無事、inet-labの忘年会を開催することができました。
これもひとえに、先生方や秘書さんといったスタッフさんが、我々学生の面倒を見てくださっているからだと思います。

なお、今回は忘年会のみならず、時系列順に並べると、大平先生の歓迎会、垣内先生の仏・Inriaからの帰国・帰ラボ記念会、田村さんの歓迎会、そして、川本さんの送別会も兼ねて行いました。

続きを読む

[Storm] ストリーム処理エンジンStorm[Storm] How to start “Storm”

奈良で迎える初めての冬が想像以上に寒くて、原付での移動に辛さを感じ始めました.学生の方の松浦です.

最近はStormというストリーム処理エンジンを触っています.HadoopやS4などの既存CEPエンジンがフォーカスしていなかった領域をカバーするものとして注目されているものです.
StormはGithub上でプロジェクトが公開されており、ライセンスの範囲であれば誰でも利用することが可能です.

本記事ではStormを始めてみるにあたっての手順を簡単にご紹介したいと思います.

続きを読む

MongoDBのReplica Setを設定するMongoDB, how to set up “Replica Set”

パリのワインサロンに参加して、大量にワインを購入しました。松浦です。
ワインサロンとは1,000に迫る数の生産者が集結し、広い会場で試飲をしまくって、生産者からお手頃な値段で直接ワインを買うというイベントです。フラ ンス人は随分適当で事務処理とか窓口対応の酷さでは定評がありますが、ワインサロンでは所狭しと並んだカウンターに皆が効率よく並び、買い手売り手共に素 晴らしく統率が取れていました。フランス人(好きなことは)こんなにちゃんと出来るのかと驚いた次第です。

今日はMongoDBの話題です。昔はちょっとしたアプリのプロトタイピングではSQLiteを使っていました。が、今ではMongoDBを使うと、この手の事をやるときは殆ど何もしなくても十分に使える環境が手に入るので、重宝しています。

ここではMongoDBのReplica Setの設定方法を紹介します。VMWare上に作成した1台のlinuxにmongodを3つ立ち上げて、その中で動作確認をするというものです。

0. テスト環境と事前準備

下記の環境でReplica Setの動作確認を行いました。

後でMongoDB用の仮想マシンを複数台つかったテストの予定があったので、雛形(各種設定とMongoDBのインストールまで終了したもの)を 用意し、そこからコピーして作成しておきました。ここから発展して色々と試したい方は雛形の作成をお勧めします。またMongoDBは相当ディスク容量を 消費するので、VMWareデフォルトの20GBは避けた方が良いです(一瞬で埋まります)。環境が許す範囲で、台数と検討の上、多めに割り当てた方が無 難です。

VMWare fusionで仮想マシンを作成したら、次はネットワークの設定です。ローカルで完結しかつ何度も実験を繰り返すのであれば、下記の様に名前を付けて固定 IPアドレスを振っておくと何かと便利です。取りあえず、3台分の固定アドレスを振った様子を示します。この作業は全てMac上です。仮想マシンのMAC アドレスを調べた後、下記の様に2つのファイルの末尾に追記するだけです。

後は個別の仮想マシンにログインして、/etc/hostnameを上記に合わせて例えば’mngVM01′の様に設定しておけば完了です。一度全 ての仮想マシンを終了し、VMWare fusion事態を立ち上げ直せば、固定のアドレスが振られますし、もちろん’ssh mng01.vm’の様な事が出来るようになります。

1. Replica Setを作成する

ここではmng01.vmにログインしているとして、Replica Setの作成方法を説明します。また既にMongoDB事態のインストールは終わっているとします。インストール自体は10genのレポジトリを利用してapt-getでインストールするのが簡単です。

3つのmongodが立ち上がった状態です。だたし、このままではお互いの存在を知らずレプリケーション等は出来ません。replica setを動作させるためにはprimary候補のmongodに対してrs.initiateを行う必要があります。

上記の設定を施すことでreplica setが動作します。下記のようにrs.status()で確認できます。この状態でデータの書き込みや読み込みを行い、その後に mng01.vm:27018(プライマリ)に対応するプロセスをkillしてみて下さい。mng01.vm:27019に対応するmongodがセカン ダリからプライマリに役割を変え、データの読み書きを継続する様子が確認できると思います。もう一度mng01.vm:27018に対応するmongod を立ち上げると今度はセカンダリとなります。

2. おわりに

動作確認が終わったり、もう一度最初からやりたい場合は、mongodのプロセスをkillし、該当フォルダ(/data/mongo/)を削除し て上記のステップを繰り返すだけです。また何度も実験を繰り返す場合は各種設定やダミーデータを書き込むスクリプト等を作成しておくことをお勧めします。 MongoDBは主要言語のドライバーが用意されているので、プログラムを書くのは非常に簡単です。

ここでは、簡単のために1つの仮想マシン上でReplica Setのテストをしました。他にも仮想マシンを幾つか立ち上げて、同様のテストを行ったり、Shardingも併せて動かしてみるなど、環境を発展させてみて下さい。

Replica Setを利用する事で障害時にもデータの読み書きが継続可能になるという観点はもちろん大事です。もう一つReplica Setの効果は読み込み性能に現れます。プライマリ、セカンダリから読み込みを可能としておくことでデータ読み込みのクエリーを分散させることが出来ま す。大量のデータを扱うためにMongoDBのクラスタを生成する必要があるならば、読み込み性能はReplica Setの台数を増やして対応し、書き込み性能はShardingの台数を増やして対応すると押さえておくと良いと思います。なぜShardingが書き込 み性能に効果があるか知らなければ、調べておく価値はあります。

参考文献

・Replica Set
http://www.mongodb.org/display/DOCSJP/Replica+Sets
・Replica Set Tutorial
http://www.mongodb.org/display/DOCSJP/Replica+Set+Tutorial
・スケーリング MongoDB
http://www.oreilly.co.jp/books/9784873115221/
・Install MongoDB on Ubuntu
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
・VMware Fusion 4のネットワーク構成の変更
http://d.hatena.ne.jp/chocoring/20111218/p2

by MATSUURA Satoshi

SC12 参加レポートReport of SC12 Participation

11月中旬にアメリカのソルトレイクシティで行われた学会SC12 (Super Computing 2012)に参加しましたのでその報告です.

SCはハイパフォーマンスコンピューティング系の学会であり,高速演算や並列演算,分散処理などが学会の主なトピックです.また,SCでは研究のプ レゼン発表の会場と併設して,企業や大学がブースを設けて研究や製品を紹介する展示会が行われます.私はこの展示ブースのスタッフとしてSCに参加しまし た.

企業ブースではIntelやNVIDIA,Amazon,Microsoftなど名だたる企業が最新のCPUやGPUの紹介や,高機能クラウドサービスの説明,アプリケーション応用例のデモなどを行なっていました.
説明を受けた中で特に印象に残ったものは,Amazonが提供しているAWS(Amazon Web Services)中のサービスです.AWSでは「17024コアを有しベンチマークで240.09 TeraFLOPSを達成したクラスタ」という目を疑いたくなる数字を誇る環境を提供しているらしいです(詳しくはWebで).1時間うん十万円とするよ うですがこれだけの環境をお手軽に使用できるようになったのはすごい事ですよね.

私たちのブースではセンサデータを配送するためのPublish/Subscribe Systemや4K映像配信のデモやポスター,学内計算機環境などを展示しました.興味津々で話を聞いてくれるお客さんや予想外の質問を投げかけてくるお 客さんまで様々な方が私たちの展示に興味を持って下さり,1日立ち続けで英語で説明を行う状況で体も頭もフル回転で大変ではありましたが刺激的な経験とな りました.また,100枚弱持っていったパンフレットを無事全て配る事ができ,ちょっとした達成感も味わうことができました.私たちのブースでは緑茶を提 供していたのですが,すごく欲しがる人と要らない人ではっきりと分かれていたのが興味深かったです.

sc1

SCで紹介されるような高性能計算機環境の向上は私たちの生活への影響も大きいですのでこの分野の更なる発展を願うとともに,私たちも貢献していきたいものですよね.

by Tatsuya