2009年2月28日土曜日

どう?

何?

熟睡

2009年2月22日日曜日

2009年2月20日金曜日

2009年2月19日木曜日

人生初のムービ


産後二日目、病院のパパママクラスで

2009年2月17日火曜日

python-gui

ラベル: python
#!/usr/bin/python

import sys
from Tkinter import *

def die(event):
sys.exit(0)
root = Tk()
button = Button(root)
button["text"] = "Ave atque vale !"
button.bind("<Button-1>", die)
button.pack()
root.mainloop()

python-plot

#!/usr/bin/python
import popen2
import sys

p=popen2.Popen3("gnuplot");
print p.pid;
p.tochild.write("plot sin(x)\n");
if p.poll()==-1:
i = 0;
p.tochild.flush();
print "plot over!\n";
p.wait();
else:
print "not over!\n"
exit(0);

python-csv

#!/usr/bin/python

import sys
import os

csvfilemap = {}

def collect(csvfile, csvname, linerc):
src = {}
errno = {}
if csvfile.has_key(csvname):
src = csvfile.get(csvname)
if src.has_key(linerc[0]):
errno = src.get(linerc[0])
if errno.has_key(linerc[1]):
num = errno.get(linerc[1])
errno.update({linerc[1]:num+1})
else:
errno.update({linerc[1]:1})
else:
src.update({linerc[0]:errno})
errno.update({linerc[1]:1})
else:
csvfile.update({csvname:src})
src.update({linerc[0]:errno})
errno.update({linerc[1]:1})

def readline(infilename):
i = 0;
linerc = ['',0]

for line in open(infilename, 'r'):
if i > 1:
line = line.rstrip()
tokitem = line.split(',')
linerc[0] = tokitem[0].split('/')[-1]
linerc[1] = tokitem[4]
collect(csvfilemap, infilename, linerc)
else:
i = i+1
print "end readline of",infilename

paramlen = len(sys.argv)
if paramlen == 1:
print "Please input the file name to Analyse"
sys.exit()
else:
print "Analyse the",sys.argv[1:]

for filename in sys.argv[1:]:
if os.path.isfile(filename):
print "read file",filename
readline(filename)

else:
print "not file",filename

for csvk, csvfile in csvfilemap.items():
print "csv file is :",csvk
for srck, src in csvfile.items():
print "source file is:",srck
for errk, err in sorted(src.items()):
print "error is :",errk, " Count is :",err

print "bye"


File Severity Grp Nbr Des
cription レビュー日 担当者 対策予定 対策日
cmd_common.c ++ WARNING ++ <=6= 272 [I] 整数式の値は、符号付きの結果の型
で表現できないことがあります。 参照 - ISO-6.2.1.2 (符号付き整数への)変換
cmd/cmd_common.c ++ WARNING ++ <=6= 274 [I] 整数定数式の結果は符号付きで
は表現できません。 参照 - ISO-6.2.1.2 (符号付き整数への)変換

shell-trap

emacsコマンド2

Bookmark関連操作
C-x r m Bookmark作成
C-x r l Bookmark一覧
C-x r b Bookmarkへのjump
M-x bookmark-delete Bookmark削除

emacsコマンド1

基本機能一覧
操作 機能
Ctrl-x Ctrl-s ファイルに保存
Ctrl-x Ctrl-w ファイル名を指定して保存
Ctrl-x Ctrl-f ファイルの読み込み
Ctrl-x Ctrl-c 終了
Ctrl-g 中止(あらゆるコマンドを中断)
Ctrl-f カーソル移動 : 右
Ctrl-b カーソル移動 : 左
Ctrl-p カーソル移動 : 上
Ctrl-n カーソル移動 : 下
Ctrl-a カーソル移動 : 行左端
Ctrl-e カーソル移動 : 行右端
Ctrl-v カーソル移動 : 次のページ
ESC-v カーソル移動 : 前のページ
ESC-> カーソル移動 : ファイルの末尾
ESC-< カーソル移動 : ファイルの先頭
Ctrl-d 編集 : カーソル位置の1文字削除
DEL 編集 : カーソル前の1文字削除
Ctrl-k 編集 : カーソル位置から行末までを削除
Ctrl-@ 編集 : 範囲指定開始
ESC-w 編集 : 範囲記憶
Ctrl-y 編集 : ペースト
Ctrl-_ 編集 : Undo
Ctrl-s 検索/置換 : 前方にインクリメンタル検索
Ctrl-r 検索/置換 : 後方にインクリメンタル検索
ESC-% 検索/置換 : 前方に問い合わせ置換
Ctrl-x 2 ウィンドウ : 上下に分割
Ctrl-x 1 ウィンドウ : ウィンドウを1つに戻す
Ctrl-x o ウィンドウ : 別のウィンドウに移動
ESC-m 現在行の空白でない最初の文字に移動
Ctrl-@で範囲指定開始、ESC-Ctrl-\ 指定範囲全てで TAB を実行
Ctrl-@で範囲指定開始、Ctrl-w 指定範囲を削除(して、かつコピー)
Ctrl-@で範囲指定開始、Ctrl-x n n 指定範囲のみに編集範囲を限定
Ctrl-x n w 限定した編集範囲を解除
Ctrl-x b 新しいバッファを作成
Ctrl-x i カーソル位置に別のファイルを挿入
Ctrl-y ESC-y ペースト(リングバッファ)
Ctrl-x ( キーボードマクロ定義 : 開始
Ctrl-x ) キーボードマクロ定義 : 終了
Ctrl-x e キーボードマクロ定義 : 実行
ESC 回数 Ctrl-x e キーボードマクロ定義 : n回実行
ESC-x replace-string RET 無条件全置換
ESC-x write-region RET 指定した範囲のみファイルに保存
ESC-x goto-line RET 指定した行に移動
Ctrl-x r k 矩形領域を削除(して、かつコピー)
Ctrl-x r d 矩形領域を削除
Ctrl-x r y 最後にコピーした矩形領域をペースト
Ctrl-x r o 空白で埋めた矩形領域をペースト(挿入)
ESC-x clear-rectangle 矩形領域を空白で置き換える

M-x picture-modeとするだけで,利用できます.基本的な操作は普通のテキストと同
じです.
C-j で行の複製ができるので,罫線を引きやすくなっています.
また,文字を消しても,代わりにスペースが挿入されますので,図がずれないように
なってます.

また,カーソル移動が普通とは違っています.デフォルトでは文字を入力すると,
どんどん右へ追加されていきます (普通のテキストと同じ) .

C-c \ で右下, C-c / で左下,
C-c ' で右上,C-c ` で左上,
C-c . で下,C-c ^ で上,
C-c > で右,C-c < で左へ

これらは,文字を入力すると,この方向へ移動するようになります.
単にこの方向へカーソル移動したい時には,C-c C-f を使います.C-c C-b で逆方向
へ移動できます.

編集が終わったら,C-c C-c で終了します.そうすると,余計なスペースを削除して
前のモードに戻ります.

他の機能は,

* C-c C-dでの文字削除.普通の削除ですので,図がずれます.
* リージョン選択後にC-c C-rで罫線を作成
* リージョン選択後にC-c C-kで矩形領域 (リージョンの始点と終点を頂点とす
る長方形領域) をカット
* C-c C-yでC-c C-kでカットしたものを貼り付け
* リージョン選択後にC-c C-kで矩形領域 (リージョンの始点と終点を頂点とす
る長方形領域) をカット
* リージョン選択後にC-c C-wで矩形領域をカットしてレジスタへ保存
* C-c C-xでレジスタから貼り付け.

M-x show-paren-mod 括弧などペアで表示
C-M f 次ぎの括弧へ移動、C-M b 前の括弧へ戻る

M-x cscope-index-files インデックスファイル作成
C-s-s 定義シンボルをサーチ
C-s-g グロバルの定義を探す


テーブル追加
M-x table-insert
テーブル編集モードを解除するために
M-x table-unrecognize-table
再度テーブル編集モードに入る時はテーブルの位置にカーソルをもっていって、
M-x table-recognize-table

C-> (table-widen-cell)
カーソル位置のセルを横拡張
C-< (table-shorten-cell)
カーソル位置のセルを横収縮
C-: (table-justify)
セル中の文字列の位置を操作(Left/Center/Right)
縦方向・桁方向の両方が可能
table-split-cell
セルの分割
C-- (table-split-cell-vertically)
セルの横分割
C-| (table-split-cell-horizontally)
セルの縦分割
C-* (table-span-cell)
セルの結合

C言語のマクロ

1、2重比較を注意しましょう。
例:
#define isalpha(s) if((s) > 'a' && (s) < 'Z')
isalpha(*s++);
結果は?

2、C言語アスキー文字コード判別ライブラリの実装例

インデックス 0 0x32 0x7b

_ctype+1[]
+---+-------+----+-------+----+---+---+---+
|0--|-------|0x01|.......|0x02|...|...|...|
+---+-------+----+-------+----+---+---+---+

文字コード EOF 'A' ↑ 'z'


各ビットの定義
8 7 6 5 4 3 2 1 0
+-----+-----+-----+-----+-----+-----+-----+-----+
|-----|-----|-----|-----|-----|0-9 |a-z |A-Z |
+-----+-----+-----+-----+-----+-----+-----+-----+

3、文字列処理の落とし穴
例:
#define debug(s) sprintf("message is %s", s)

debug(message[0]);

結果は:sprintf("message is %message[0]", message[0]);


4、文字列処理記号”#”と”##”

# は、引数を文字列に変換する。

#define string(x) #x

string(Hello World)

"Hello World"

## は二つの識別子を連結させる。

#define comb(x, y) x ## y

comb(hello, world)

helloworld