2011年12月15日木曜日

デバッグ文

#define dprintf(s,...) printf("%s:%d:%s " s, __FILE__, __LINE__,__func__,__VA_ARGS__)

dprintf("check value=%d\n",cv);



2011年10月13日木曜日

emacs tab幅

set-variable[RET]tab-width[RET]4



(setq tab-width 4)
(setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80))
(setq indent-tabs-mode nil)



2011年9月17日土曜日

rpmの使い方 情報表示 その2

未インストール時-qp
インストール時-q

パッケージ情報rpm -qpi MyPkgXXX-0.0-0.x86_64.rpm

パッケージ内ファイルrpm -qpl MyPkgXXX-0.0-0.x86_64.rpm

パッケージ内のファイル状態(normal/not install/replaced)
rpm -qps MyPkgXXX-0.0-0.x86_64.rpm

install/uninstallスクリプトpreinstall/postinstall/preuninstall
rpm -qp --scripts MyPkgXXX-0.0-0.x86_64.rpm

依存パッケージ情報rpm -qp --requires MyPkgXXX-0.0-0.x86_64.rpm
rpm -q --whatrequires ntsysv

提供パッケージ情報rpm -qp --provides MyPkgXXX-0.0-0.x86_64.rpm
rpm -q --whatprovides ntsysv



2011年8月13日土曜日

CPUコア数を調べる /proc/cpuinfo

cat /proc/cpuinfo |egrep 'physical id|core' |sort

physical id の数字(種) ソケットに挿さっているCPUチップの数。
core id の数字(種)1コアのスレッド数
同じcore id が複数表示されたらそれは1つのコアあたりのスレッドの数

physical id が2通り = 2CPUチップ
同じcore id が2ある = 1物理コアあたり2スレッド(HyperThread)

$ cat /proc/cpuinfo |egrep 'physical id|core' |sort
core id : 0 スレッド1
core id : 0 スレッド2
core id : 1 スレッド1
core id : 1 スレッド2
core id : 2 スレッド1
core id : 2 スレッド2
core id : 3 スレッド1
core id : 3 スレッド2
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 4
physical id : 0 ソケット0
physical id : 0 ソケット0
physical id : 0 ソケット0
physical id : 0 ソケット0
physical id : 1 ソケット1
physical id : 1 ソケット1
physical id : 1 ソケット1
physical id : 1 ソケット1

CPUチップ 2つ
スレッド 2つ
CORE 4つ
8スレッド、topコマンドで見ると8個のCPUのように見える。


すばらしい!
http://wiki.princo.org/?CPU%A4%CE%CA%AA%CD%FD%BF%F4%A1%A6%A5%B3%A5%A2%BF%F4%A1%A6%A5%B9%A5%EC%A5%C3%A5%C9%BF%F4%A4%CE%C4%B4%A4%D9%CA%FD



2011年7月17日日曜日

assert機能 C言語

assert機能 C言語

-------------------------------------------

#include <stdio.h>

#if 0 /* アサート機能を無効にしたい場合はNDEBUGを定義する */
#define NDEBUG
#endif

#include <assert.h>

int main()
{
int a;

a = 99;
assert(a < 100);
printf("[OK]\n");

a = 101;
assert(a < 100);
/*printf("[OK]\n");*/


return 0;

}

--------------------------------------------------------------------------------------

#ifndef MY_ASSERT_H_
#define MY_ASSERT_H_


#ifndef MY_NDEBUG
/*#define myassert(expr) ((expr) ? 0: error_handler(__FILE__, __LINE__))*/
#define myassert(expr) ((expr) ? 0: printf("[ASSERT] %s(%d)\n", __FILE__, __LINE__))
#else
#define myassert(expr) /* none */
#endif


#endif





#include <stdio.h>

#if 0 /* アサート機能を無効にしたい場合はMY_NDEBUGを定義する */
#define MY_NDEBUG
#endif

#include "./myassert.h"

int main()
{
int a;

a = 99;
myassert(a < 100);
printf("[OK]\n");

a = 101;
myassert(a < 100);
/*printf("[OK]\n");*/

return 0;

}



2011年7月5日火曜日

アサート機能 assert

#include <stdio.h>

/*#define NDEBUG */ /* アサート機能を無効にしたい場合はNDEBUGを定義する */

#include <assert.h>

int main()
{
int a;

a = 100;

assert(a < 100);

printf("[OK]\n");

return 0;

}



実行例
$ ./myassert
myassert: myassert.c:13: main: Assertion `a < 100' failed.
Abort



2011年6月30日木曜日

vxWorks FTP タイムアウト時間

vxWorks FTP タイムアウト時間


config.h
ftpのタイムアウト時間を設定(追加)
--->
#undef FTP_TIMEOUT
#define FTP_TIMEOUT (30) /* 30sec */
<---


デフォルトは0
0だとFTP_REPLYTIMEOUTDEFAULT (10 秒 ) 。

ネットワークスタックプログラマーズガイド FTPクライアントの章



2011年6月25日土曜日

シェル csh if文 結果

シェル csh if文 結果

#!/bin/tcsh -v

LBL_START:

echo "start `date`"

DoMycommando

set result=$?

if ( $result != 0 ) then
echo "resutl = $result"
goto LBL_EXIT
endif

echo "Done `date`"
#sleep 5

goto LBL_START

LBL_EXIT:

echo "Done `date`"



2011年4月14日木曜日

Googleカレンダー 日本語検索

Googleカレンダーで日本語検索する方法

「検索キーワード 検索キーワード」を入力する。

例えば、「会議」を検索したい場合、検索欄に「会議 会議」と2回同じフレーズを入れると検索できるようです。
http://www.google.com/support/forum/p/calendar/thread?tid=0bcc7c9f378ff8bb&hl=ja



2011年4月5日火曜日

シェル csh PATH path 抽出

シェル csh PATH path 抽出

ファイル名のうちパス名部分だけを取り出したり、拡張子だけを取り 出したりできる。

${VAR:t}
basenameに同じ。 パス名部分を除いたファイル名を取り出すときに使う。

${VAR:h}
dirnameに同じ。 ファイル名部分を取り除いて、パス名部分だけにしたい場合に使う。

${VAR:r}
拡張子部分を削除。

${VAR:e}
拡張子部分をのこして、ほかの部分を削除。



2011年3月18日金曜日

WindowsXPのアプリケーションの背景色変更

WindowsXPのアプリケーションの背景色変更

デスクトップで右クリック
プロパティ
デザインタブ
詳細設定(D)
表示(例、上側)の「ウィンドウの文字の背景部分」をクリック
(指定する部分がウィンドウになる)
色1で指定。



2011年3月2日水曜日

リモートデスクトップ

windowsのリモートデスクトップ

画面サイズが合わない場合。(ログインする側の方が、ログインされる側より大きなディスプレイだった場合)

1.リモートデスクトップ接続ウィンドウのオプション

2.画面

3.リモートデスクトップのサイズを指定する。



2011年2月25日金曜日

gssftpのデバッグログ出力 ftp llinux

1.設定変更 xinetd
/etc/xinetd.d/gssftp
service ftp
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/kerberos/sbin/ftpd
server_args = -lll -v ←**** -v(-d)デバッグログ出力 -lll/var/log/messagesへ少し詳しいログ出力
log_on_failure += USERID
disable = no
}


2.変更後、xinetd再起動
# /etc/init.d/xinetd restart


3.設定変更(追加) syslogd
/etc/syslog.conf

# for gssftp -v
# kill -HUP `cat /var/run/syslogd.pid`
# /etc/xinetd.d/gssftp
# server_args = -lll -v
daemon.debug /var/log/ftpftp.log


gssftp(ftpd)のfacilityが分からない。
もしかするとNFSデーモンなどのログも出力されるかもしれない。

4.変更後、syslogdに変更通知
# kill -HUP `cat /var/run/syslogd.pid`




$ cat /etc/xinetd.d/gssftp(xinetdの設定といった方がいいのか)
service ftp 設定するサービスの名前(/etc/services定義のサービス名を指定)
{
flags = REUSE ポート使用中(TIME__WAIT)でも再利用できるようにする。
socket_type = stream サービスが使用するソケットタイプ
wait = no マルチスレッドnoを指定
user = root サービスを実行するユーザ名を root にする
server = /usr/kerberos/sbin/ftpd 起動するサーバーの絶対パス
server_args = -l サーバーへ渡すオプション
log_on_failure += USERID 接続失敗時記録するログの種類。USERIDリモートホストの認証ユーザー名
disable = no サービスの停止を指定no==停止しない
}
log_on_success 接続成功時に記録するログの種類。xinetd.conf、DURATION期間、USERID。
=設定
+=追加設定
-=設定削除
http://www.express.nec.co.jp/linux/distributions/knowledge/network/xinetd.html



2011年2月19日土曜日

定型 perl

------------------------------------
#!/usr/bin/perl

use strict;
use warnings;

exit 0;
------------------------------------
#入力
print "file = ";
chomp(my $line = <STDIN>);
------------------------------------
#ファイルオープン
unless(open(FILE_OUT, "> $fileOut")) {
print "[Error]open\n";
exit 1;
}
close FILE_OUT;

unless(open(FILE_IN, "$fileIn")) {
print "[Error]open\n";
exit 1;
}


#ファイルリード
$line = <FILE_IN> ;

#ファイルクローズ
close FILE_IN;
------------------------------------

コメントは#だっけ?



2011年2月16日水曜日

ワンライナー(メモ)

指定回数実行
for i in `seq 1 1 100`; do // do something; done

prog1が終了したら、prog2を実行
pkill -0 prog1; while [ $? -eq 0 ]; do sleep 10; pkill -0 prog1; done; prog2

一定間隔でコマンド実行
$ watch -d "ls -lt targetDir" (デフォ2秒でディレクトリ確認 -d:表示変化(部)をハイライト表示)

ハイライト表示で画面壊れる場合は、-d付けない。
--interval=5でインターバル時間調整可能。



シェル bash if文

export w_i=1;
if [ ${w_i} -eq 1 ]then
w_i=1;
echo "w_i = ${w_i}"

echo "Wait for you"
sleep 5s
echo "Done"
fi



2011年2月5日土曜日

printf 書式 unsinged long

unsigned = %u
short = %hd
long = %ld
unsigned long = %lu
long double = %Lf

これもまた忘れるね



2011年2月2日水曜日

tar アーカイブ除外

tarアーカイブでファイル、ディレクトリを除外する。
--exculdeで除外指定。

tar cvf include.tar --exclude '*/.secret/*' ./include

勉強になります http://www.odin.hyork.net/write/write0045.html



2011年1月29日土曜日

シェル csh y/n

echo -n "OK? y/n "
set my_yes=$<

if ( "$my_yes" != "y" && "$my_yes" != "Y" ) then
exit 0
endif

勉強になります
http://flex.ee.uec.ac.jp/texi/csh-nyuumon/io.html



2011年1月22日土曜日

デバッグツール(メモ)

urifyメモリアクセス検査使い方調査済み
PureCoverageコードカバレージ
Quantifyパフォーマンス測定


gcovコードカバレージ
CXXFLAGS += -fprofile-arcs -ftest-coverage -coverage
LDFLAGS += -lgcov
% myprog (created myproc.gcda)
% gcov myprog (created myprog.cc.gcov)
% less myprog.cc.gcov (result)

gconfプロファイラ、パフォーマンス測定
mcheckメモリアクセス検査


astyleコード整形
gdbデバッガ(C、C++)
perldbデバッガ(perl)
Klockwork静的解析(C, C++)ツール
straceシステムコール、シグナルトレース(Solarisのtruss)
ltraceシステムコール、シグナルトレースライブラリもトレース対象とする
gcore/usr/bin/gcore(gdb_gcore.sh?)実行中プロセスのcoreを生成する

Cyclomaticサイクロマティック
Doxygenドキュメント


globalプログラム解析
valgrindメモリリーク検査らしい
google-perftoolsメモリ使用解析

vxWorks
ProfileScope統計プロファイラ
MemScopeメモリアナライザ
StethoScopeデータモニタ



2011年1月21日金曜日

少し速い ping -n

この概要は表示できません。投稿を閲覧するには ここをクリック してください。

2011年1月19日水曜日

findコマンド すぐ忘れる

該当ファイルアーカイブ
ディレクトリパスを含むので同名ファイルが有っても問題ない。
find ./ -name '*.log' | xargs tar cvf log.tar

60日より古いファイルを探す
find . -maxdepth 1 -type f -mtime +60 -exec ls -l {} \;
find . -maxdepth 1 -type f -mtime +60 -delete  (Solarisはダメかも?!)<-- br="" solaris="">



否定指示
find . -not -name '*.bz2' | xargs bzip2



特定のDirectoryを除く
find ./ -type d -name node_modules -prune -o -type f -name '*.txt' -exec file {} \;


-type d -name node_modules -prune
directoryで, node_modulesという名称を除く(prune:切り落とす)

-o または -o 以下の条件

ここで肝心なのは, -prune の条件はtrueなので, ORが成立する.

2011年1月15日土曜日

gdb 子プロセスをデバッグ

set follow-fork-mode child
set follow-fork-mode parent 元に戻す(戻さないとsystem()シェル?に突入する!?)



less tail -f -F のように

less表示中に'F'キー押すとtail -f/-Fモードになる。
ctrl+cでモード解除。

$ less +F file.txt とするとモードで起動、解除はctrl+C



2011年1月8日土曜日

printf 書式 %p

滅多に使わないから忘れてしまう。

$ cat percentP_printf.c
#include <stdio.h>

int main()
{
int a = 10;
int *p;

p = &a;

printf("a(%%p) = %p\n", &a);
printf("p(%%p) = %p\n", p);

return 0;
}
$ ./percentP_printf
a(%p) = 0x7fff5744bc64
p(%p) = 0x7fff5744bc64  ←ポインタpを%pで表示すると、変数aのアドレスを表示
$



2011年1月5日水曜日

お気に入り ブックマーク bookmark 移行 sleipnir safari

iCBM3

firefox(firefox3ではなく)で書き出し。
書き出し後、エディタでutf-8(bomなし)改行CR。

safari(ブックマークウィンドウの状態で)、メニュー、インポート。