論文の構成についてOrganization of paper

バカンスシーズンももう終わりですね。。。松浦です。
8月はガラガラの職場で久しぶりに充実した時間を送れました。

今日は基本的な論文の構成について紹介します。
修論生に毎回同じ事ばっかり言っているので、過去に
コンパクトにまとめてメーリングリストに流しました。
新しい修論生も引けるようにそのままBlogにも載せておきます。

はじめに

設定した課題との対応関係をしつこく確認しましょう。
論文などの文章はきれいに構造化されているものです。

論文の構成について

「結論→説明→結論」といった構成が基本中の基本です。
論文全体、章、節、パラグラフ、どの粒度で見ても
「結論→説明→結論」という構成を取ります。

まずはこれを徹底して下さい。その後で流れや書きやすさを
考えて構成の変更をするようにすべきです。

構成例

1章.想定環境から導かれる課題(A,Bの課題があるとします)を整理する
– 課題解決が論文の結論です。課題を解決すると宣言します。
– 課題は評価軸でもあります。評価を念頭に置いた課題設定をすべきです。

2章.関連研究の説明
– 設定した課題を評価軸にし、関連研究(手法)を紹介します。
A, Bの条件が満たされているかどうかを必ず確認します。
– まとめではA, B両方を満たす手法が無いことを示します。
なぜそうなのか、原因やトレードオフを指摘できるとなお良いです。

3章.提案手法の説明
– 課題Aを解決する手法を説明します。
– 同様に課題Bを解決する手法を示します。
– 提案手法の章を通して、課題A, Bを解決する手法を提示した事を
示し結びます

4章.評価
– A, Bの項目に分けて評価をします。A, Bは評価軸の役割も果たします。
– 実験結果を説明し、自分の手法の有効性を示します。またそれが
課題の解決に繋がることを示します。

5章.結論
– 課題、手法、評価を振り返り、課題が解決できたことを示します。

論文全体で、結論(1章.)→説明(2章.3章.4章.)→結論(5章.)という形に
なっている事が分かるでしょう。節の粒度でみても、例えば
3.1節で課題Aを解決する手法を示したとすると、課題Aを解決するという
宣言(結論)→課題Aを解決する手法の提示(説明)→課題Aを解決可能で
あるという結び(結論)、といった同様の構成を取ります。
また、上で見た来たように全ての説明は課題A, Bと対応して書かれます。
2-4章でA, Bに対応する記述が欠けていれば、それは
不完全な論文というサインです。

「結論→説明→結論」という構成を念頭に、評価軸との対応を
常にチェックしながら論文を執筆して下さい。

by MATSUURA Satoshi

[Perl] DBIx::Skinnyを使ったお手軽データストア[Perl] Simple data store using DBIx::Skinny

暑くなってきてワインからビールにスイッチして楽しんでいます。松浦です。

フランスはベルギーから近く、レフ(250ml*12)が7ユーロ、デュベルやシメイは
330mlで1.5ユーロくらい、ヒューガルデンはレフよりちょっと高いくらいで
手に入ります。レフをベースに色々挟んでビール生活を満喫しています

今日はO/Rマッパーを使って、気象データをデータベースに保存していく
お手軽な方法を紹介します。似たようなケースは色々な所で遭遇するので、
DBI等を使って直接SQLを書かず、自分の好きなO/Rマッパーでさっさと
済ませるのが得策です。

Perl界隈のO/RマッパーはDBIx::Classがメジャーですが、
今回使ったDBIx::Skinnyはより軽いDBIx::Classを目指したO/Rマッパーで、
基本的な機能は十分揃っています。後継のTengというO/Rマッパーもあります。
どの言語でも基本的にO/Rマッパーは用意されているので、使ってない方は
色々と調べてみて下さい。

環境

Mac OSX (10.7.4)
Perl (5.16.0)
SQLite (3.7.7)
DBIx-Skinny-0.0742
DBIx-Skinny-Schema-Loader-0.24

想定

ローカルのWEBサーバ(192.168.10.1)にアクセスすると、
下記のデータがJSON形式で取得出来ると想定します。
時々刻々と変化する気象データを保存するのが目的です。

今回、準備するファイルは下記の5つです。
main.plを実行するとサーバからデータを取得し、データベースに保存します。

データベースの準備

sensor.sqlを上記気象データに合わせて、下記の様に決定します。

次にデータベースを作成します。
> cd data
> sqlite3 sensor.db < sensor.sql

O/Rマッパーの準備

・lib/MySensor/DB.pm

データベースへの接続情報を記述します。
username, passwardを設定していなくても上記のように
空のパートを記述する必要があります。

・lib/MySensor/DB/Schema.pm

load_schemaが呼ばれるとここではsensor.dbの中を見て、
カラム名や型などのschemaを自動的に作ってくれます。
今回の様なシンプルなケースではloaderを使うと非常に楽です。
もちろん自分で指定することも可能です。

メインプログラム(データの取得・保存)

・main.pl

> perl main.pl
とすることで、データの取得および保存が完了です。
Loaderで自動的にSchemaを生成し、データベースへのINSERTは
$db->createの所で、ハッシュを渡してあげるだけです。
ちょっとしたデータストアを行いたいシーンで重宝します。
もちろん、本格的なアプリケーションを書く時もですけど

参考URL

・DBIx::Skinny – JPerl Advent Calendar 2009
http://perl-users.jp/articles/advent-calendar/2009/dbix-skinny/

by MATSUURA Satoshi

ArmadilloのROM書き込み方法How to write Armadillo ROM

昨日はarmadilloのファームアップデートに失敗し落胆していました。松浦です。

Hermit(Windows専用)を使うことによりarmadilloは初期化等が可能です。
今時はMacBook Proしか手元に無くてもVMWare上のWin7が有れば
シリアルで繋いで、ROMの書き込みまで上手くいくんですね。
便利な世の中になったものです。

続きを読む

私の代わりをいくらでも用意するためにKickstart Fileを使うHow to use Kickstart File ??

漸くの梅雨明けに洗濯物が干せると安堵しているM1の松浦です.
(弊研究室には私と同姓の先生がおられるのでご注意ください.私は学生です..)
じめじめとした不快指数の高い日が続いていますが,そんな日にサーバ室での作業があると暫し快適(!)な時間を過ごせます.

さて,最近私がサーバ室で行っていた作業の一つに負荷実験用の物理サーバを複数台用意するというものがあります.
弊研究室には各種実験や演算に利用するための計算機群が存在します.今回,その計算機群の一部を利用してシステムの負荷実験を行うために,同一構成の計算機複数台に,同じOSを,基本的に同じ構成でインストールするというタスクが発生しました.

当然,1台1台全て手動でインストールする,ということも可能なのですが,機器構成も同じ,OSも同じ,インストールするパッケージも同じというマシンを全て手動で用意するのは少々非効率に感じられます.
そこで,今回はRedhat系のOSにて提供されているKickstart Fileというものを利用して,手軽に計算機の複製を行うこととしました.

続きを読む

IT-Keys : 無線LANセキュリティ演習IT-Keys : Wireless LAN Security seminer

本学(当研究室)では,京都大学・大阪大学・北陸先端大と共同で,IT-Keysという実践的セキュリティエンジニア育成プロジェクトを行っています。

当研究室からは,M1が4名参加しており,その授業の一環で,大阪大学吹田キャンパスにて,無線LANセキュリティ演習が6/30から7/1にかけて行われました。

続きを読む

第4回IPv6Mobile-testbedミーティングIPv6Mobile-testbed meeting #4

更新が遅くなってしまいましたが,6/25に行われた第4回IPv6Mobile-testbedミーティングについて紹介させて頂きます.

第3回のミーティングでは,B.A.T.M.A.N.制御ツールbatctlをインストールしてNICに仮想インターフェースを割当て,室内でL2でのマルチホップ通信の動作確認を行いました.
正常に動作することが確認できたので,今回はMR(Mobile Router)用端末をルータとして使うための設定,kernelの設定&再構築を行います.
(以下OSはUbuntu-server 11.10)

1.MRとしての設定
〜まずはIPv6に関する基本的なおさらいから〜
IPv6ネットワークでは,端末へのアドレッシングにRA(Router Advertisement)を用いることができます.
RAとはルータが近隣ノードへプレフィックスなどを通知するためのNDP(Neighbor Discovery Protocol)メッセージの事であり,各端末はこのRAパケットのプレフィックスと自分のMACアドレスを組み合わせて、IPv6アドレスを生成する 事ができます.
これによって,IPv6ではIPv4のようにDHCPサーバを用意しなくても自動的にステートレスアドレスを生成することが可能です.
またIPv6では,ルータはRAを受け取らない(受け取っても解釈しない)という決まりごとがあります.
従って今回MRには,下流インターフェースの指定,RAを受け取らない,フォワーディングを行う,RAを送信するという設定が必要になります.

●下流インターフェースの設定
とりあえず今回は,下流インターフェースにeth0を利用します.(後々wlan1も利用する予定)
/etc/network/interfacesに以下の設定を追加します.

 ●RAを受け取らない・フォワーディングの有効化設定
/etc/sysctl.confを,以下のように設定する

 ●RAの送信を行う
今回RAの送信を行うためのデーモンとしてradvdを使います.
まずはradvdとをインストールします.

 インストールが完了したら,/etc/radvd.confを以下のように設定します.

あとは再起動すれば下流ネットワークにRAを送信するようになります.
なお自動起動の設定は,sysv-rc-confで行います.

2.kernelの設定&再構築
〜目的〜
MRは下流に複数のノードをもち,そのネットワークを保持したまま移動しますが,この時NEMO(Network Mobility)と呼ばれるプロトコルを利用します.
NEMOは,Mobile IPv6(CMIP)をベースに作成されたネットワークを移動させながら通信するためのプロトコルです.
そこで今回私達はNEMOを実装するために,UMIPというMobile IPv6とNEMOのオープンソース実装を利用します.
従ってまずはUMIPを利用するのに必要な準備として,Linux Kernelの2.6.26以降のバージョンに統合されているIPv6モビリティサポートの機能を使えるようにKernelのコンパイルとインストールを行います.

●Kernelのコンパイル
必要なカーネルをDLして,メニュー画面を開きます.

 以下の項目の設定をONにします.

 設定が完了したらKernelのコンパイルを行います.(長時間かかります)

 ●Kernelのインストール
コンパイルが完了したら,Kernelのインストールを行います.

Reboot後OSの名前を確認し,コンパイルしたものに変わっていれば成功です.

写真-12-07-02-18-20-08
GPSでの位置情報取得のために窓際に置かれるDevice達

今回UMIPを利用するための準備が完了したので,次回はUMIPをインストールしてNEMOを利用できるようにします.

(参考URL)
[1]How to setup a NEMO Basic support testbed (with IPsec static keying)
http://www.umip.org/docs/umip-nemo.html

[2]Kernel/Compile – Community Ubuntu Documentation
https://help.ubuntu.com/community/Kernel/Compile/

[3]How to install UMIP (kernel and userland)
http://www.umip.org/docs/umip-install.html

by Kenta MORI