2014年1月31日金曜日

第14回「Excelの取り消し線を取り除いてテキストに貼り付ける」

コマンド単位の作業は、テキストファイルがいいです。

さて、第14回のお題は「Excelの取り消し線を取り除いてテキストに貼り付ける」です。

Excelの手順書だと関数が使用されていると、
コピペしにくいからテキストに貼り付けておきます。

Excelでは取り消し線もあり、そのままテキストに貼り付けると
取り消し線部分もテキストに貼り付けてしまいます。

Excelでは取り消し線部分文字は消せませんが、Wordでは以下の方法で消すことができます。
検索→書式→取り消し線にチェック→全て置換
上記の方法で、ExcelからWordにコピーし、取り消し線部分文字をけして、テキストファイルに貼り付けます。

Excel、テキストの得意分野を理解して、使い分けます。。

2014年1月22日水曜日

第13回「一行コマンドで複数コマンド実行」

tar zxvf *.tgzで複数の圧縮ファイルを解凍できません。。

さて、第13回のお題は「一行コマンドで複数コマンド実行」です。

tarコマンドを複数実行するのは面倒なので、こんな時はお世話になるのはxargs、awkです。

・ls *.tgz | xargs -n 1 tar zxvf
もしくは、
・ls -1 *.tgz | awk '{print "tar zxvf "$1}' | sh

一行野郎に今宵も男泣き。。

2014年1月21日火曜日

第12回「Perlモジュールをインストール」

Perlモジュールが足りません...

さて、第11回のお題は「Perlモジュールをインストール」です。

新しい環境にPerlモジュールがなくて、Perlプログラム実行時に怒られました...

1.お目当てのPerlモジュールがあるかを確認
find `perl -e 'print "@INC"'` -name '*.pm' -print | grep Perlモジュール名

2.お目当てのPerlモジュールをインターネットからダウンロード

3.Perlモジュールをインストール
perl ./Makefile.PL
make
make test
make install

4.インストールされているか確認
find `perl -e 'print "@INC"'` -name '*.pm' -print | grep Perlモジュール名

無事、Perlプログラムを実行できました。

2014年1月13日月曜日

第11回「GDBでプロセスにアタッチ」

プログラムの仕様に詳しくなるには、デバッグしかないですよ…

さて、第11回のお題は「GDBでプロセスにアタッチ」です。

単体試験や、設定値にどんな値が入っているか知るために、
GDBでプロセスにアタッチします。
1.make時にデバッグオプションを付けてコンパイル
CFLAGS = -g …
もしくは、
cc -c -g …
2.プロセスPIDを確認
% ps x | grep プロセス名
PID プロセス名
3.gdb起動
% gdb
4.ソースコードがあるディレクトリを指定
directory ソースコードのディレクトリパス
5.プロセスにアタッチ
attach プロセスPID
6.試験が終わったら、デタッチ
detach
quit

補足 GDBの基本操作
1.ソースコード表示
list
list filename:num
2.値表示
p 変数名
3.ブレークポイント
b 行番号
b 関数名
b ファイル名:行番号
4.ステップアウト
n
5.ステップイン
s
6.ブレークポイントまで継続
c
7.実行
r
8.ブレークポイント確認
info b
9.設定
set 変数=値
10.実行中の関数レベルを表示
where
11.ブレークポイント削除
d ブレークポイント番号
12.関数の呼び出しスタックの一覧を表示
info stack
13.存在しているスレッドの一覧を表示
info Thread

プログラミングの基本は、デバッグの繰り返しです。

第10回「SQLエラー発生させる」

DB異常系の試験は嫌なんじゃ。。

さて、第10回のお題は「SQLエラー発生させる」です。

SQL失敗の試験で手っ取り速いのが、権限を削除させます。
1.DBに接続
2.エラーを発生させるTableのDMLの権限を削除
=> REVOKE SELECT ON table名 FROM ユーザ名;
もしくは、
=> REVOKE UPDATE ON table名 FROM ユーザ名;
もしくは、
=> REVOKE INSERT ON table名 FROM ユーザ名;
もしくは、
=> REVOKE DELETE ON table名 FROM ユーザ名;
3.試験を実施
4.権限を付与(元に戻す)
=> GRANT SELECT ON table名 TO ユーザ名;
もしくは、
=> GRANT UPDATE ON table名 TO ユーザ名;
もしくは、
=> GRANT INSERT ON table名 TO ユーザ名;
もしくは、
=> GRANT DELETE ON table名 TO ユーザ名;

DB詳しくないから、壊すとややこいから、
異常系の試験は嫌なんじゃ。。

第9回「プロセスを停止(kill -STOP PID)、Tableロック(LOCK table)」

3年経過しました。

さて、第9回のお題は「プロセスを停止(kill -STOP PID)、Tableロック(LOCK table)」です。

結合試験では、デバッガが使わない範囲で、
プログラムを苛めないといけません。

ある設定値を確認したいのに、処理が速すぎて確認できないときに、
プロセスを停止(kill -STOP PID)して確認します。
1.プロセスPIDを確認
% ps x | grep プロセス名
PID プロセス名
2.プロセスを停止
% kill -STOP PID
3.試験を実施
4.プロセスを再開
% kill -CONT PID

プロセスのTableアクセス手前でプロセスを停止したい場合は、
Tableロック(LOCK table)します。
1.DBに接続します。
2.Tableをロック
=> LOCK table名;
3.試験を実施
4.ロックを解除
=> UNLOCK table名;
もしくは、
=> rollback;

異常系の試験をどうにかこなすために、
頭を悩ます日々が続きます…