オープンソースの要求管理ツール(OSRMT)のインストールとクライアント起動

目的

 要求管理において、ExcelやWordで管理することに疑問を感じ、調べたところOSRMTがあることがわかった。
 それを利用できるようにし、評価してみることにした。
 (本記事は、評価までしていない。)

環境

OSRMTとは

 OSRMT:Open Source Requirements Management Tool
 (オープンソースの要求管理ツール)

 プロジェクトの要求を管理し、それら要求とプロジェクトの計画および成果物との不整合を特定することを目的とする。要求管理には変更管理と要求トレーサビリティが含まれる。(Wikipediaより)

インストール方法

 下記ダウンロード先からZIPファイルをダウンロードし、任意の場所に解凍する。
 ダウンロード先
 http://sourceforge.net/projects/osrmt/

その他起動に必要なものをインストール

 jdkのインストール。
  1.7系でOSRMTのクライアントは起動できた。
  JREだけではJAVA_HOMEがないため(なのか?)、OSRMTのクライアントが起動できなかった。
  

クライアントの起動

 インストール先にある「client」フォルダ内のrun.batを実行する。

リスナー「応答をファイルへ保存」が応答ファイルを保存する場所

目的

JMeterSQLの応答結果をファイルで保存しようと、簡単なサンプルを作り、リスナーの「応答をファイルへ保存」を設定したのはいいものの、一体どこに保存されるのか、どこで設定するのかわからず、Webを探しても情報がなかったので、ここに記す。

どこに保存されるのか

JMeterを実行する場所に保存される(らしい)。
(根拠1)GUIから実行した場合、jmeter.exeのインストール先にあった。
(根拠2)スケジューラからjmeterをコマンド実行するbatファイルを実行したとき、
     スケジューラに設定したbat実行のカレントフォルダにあった。

日本語が含まれているCSVファイルをSJISで読み込み、表示する

目的

CSVファイルを読み込み、データを加工しようとしたとき、まずは簡単に読み込んで表示するだけのシェルを作ったら、文字化けして表示された。それを回避するためのメモとして以下に残す。

原因は、PowerShell内部文字コード

読み込むファイル内に日本語がある場合、ファイルの文字コードSJISでも、Import-CSVで読み込むとUTF16(UTF16LE)らしい。
テキストファイルの読み込み書き出し - Get-Content他
Import-CSVで読み込むのではなく、Get-Content と ConvertFrom-CSVCSVファイルを読み込んでやる。Get-ContentはデフォルトSJISで読み込むので、OK。

実例

PS C:\Users\tomohiko\Documents\01_kabu\tool> ./testgetcontent.ps1


Code : 10
Name : TOPIX
a : 東証    ★文字化けしない!★
b : 指数    ★文字化けしない!★
c : 1220.77
d : 1223.12
e : 1214.69
f : 1217.52
g : -
h : -

testgetcontent.ps1の中身は以下。

$A = Get-Content .\2013-09-27_all.csv | ConvertFrom-CSV
echo $A

2013-09-27_all.csvの中身は以下。

Code,Name,a,b,c,d,e,f,g,h
10,TOPIX,東証,指数,1220.77,1223.12,1214.69,1217.52,-,-

タスクスケジューラでタスクが実行できない。

目的

 業務中にハマったタスクスケジューラの問題を忘備録として、記載する。

タスクスケジューラの問題

 タスクスケジューラでスケジュールする対象を実行するとき、フォルダパスもしくはファイル名に【括弧】が付いていると、タスクが実行されない。

 以下に簡単に例を示す。
 1.C:\temp\01_(test) に test.batを作成する。
 2.test.bat の中身は「pause」。
 3.スケジューラに登録する。
 4.スケジューラから実行する。(キャプチャなし)

 1.C:\temp\01_(test) に test.batを作成する。


 2.test.bat の中身は「pause」。


 3.スケジューラに登録する。(登録されたタスクのプロパティ)

スケジューラの一覧から右クリック−「実行する」しても、test.batを単独で実行したようにならない。

sighandler_t とビルドエラー

はじめに

 シグナルを使ったプログラムを作成中、以下のようなエラーが出た。簡単に検索できなかったため、忘備録として残す。

main.c:11:39: error: unknown type name 'sighandler_t'

エラーの取り方

 -D_GNU_SOURCE を付けて、コンパイルする。

 $ gcc -o main.o -c -g -Wall -D_GNU_SOURCE main.c

 詳細は、以下のURLにある。
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man2/signal.2.html
問題となる部分は、

sighandler_t の使用は GNU 拡張であり、 _GNU_SOURCE が定義された 場合に公開される。

のところだ。

scons と CFLAGSの指定方法

はじめに

 SConstructにCFLAGSを指定して、ビルドする方法が、すぐに見つからなかったため、ここに残す。

SConstruct内の定義

Program('daytime.c', CFLAGS='-g -Wall')

scons の実行で確認する

andre@andre-VirtualBox:~/work/daytime$ scons .
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o daytime.o -c -g -Wall daytime.c      ★ CFLAGSが指定されて、コンパイルされている ★
gcc -o daytime daytime.o
scons: done building targets.

Erlangの変数スコープについて

はじめに

Erlangの変数のスコープについて、erlang.orgの和訳をする。
元は、http://www.erlang.org/course/advanced.html

変数のスコープ

Erlangの変数XやYは、始めに束縛される場所から、最後に参照されている場所までである。
以下、ErlangのHPの例から説明する。

f( X ) ->               --- 1	変数Xは【束縛】される(★スコープ内★)
	Y = g( X ),     --- 2	変数Xは【参照】される(★スコープ内★)
	h( Y, X ),      --- 3	変数Xは【参照】される(★スコープ内★)
	p( Y ),         --- 4	以下、変数Xは利用されない(スコープ外)
	f( 12 ).        --- 5	(スコープ外)

ポイントは、束縛後、メソッド内終わりまでスコープ内とならないところ。
4行目では、もう参照することができないのである。
ここでは、変数Xに使用されている領域(メモリ)は、再利用のための領域となる。
それは、以下の原文から読み取れる。

line 1 - the variable X is defined (i.e. it becomes bound when the function is entered).
line 2 - X is used, Y is defined (first occurrence).
line 3 - X and Y are used.
line 4 - Y is used. The space used by the system for storing X can be reclaimed.
line 5 - the space used for Y can be reclaimed.

if/case/receive の変数のスコープ

条件分岐での変数スコープについて、説明する。
以下のメソッドで説明する。

f( X ) ->
    case g( X ) of
        true -> A = h( X ), B = 7;    --- 1
	false -> B = 6                --- 2
    end,
    ...,
    h( A ),                           --- 3
    ...

1の分岐が処理された場合、変数A、Bが束縛される。
2の分岐が処理された場合、変数Bが束縛される。

2の分岐が処理された場合、変数Aは束縛(定義)されていないので、
3は呼び出し失敗する。

ポイントは、分岐毎に束縛される変数が異なること。

まとめ

1.スコープは、束縛 〜 最後の参照 まで
2.分岐では、処理された分岐によって、束縛される変数が異なる。

Erlangは、難しい。。。