2009年6月23日 星期二

find到带空格文件名用xargs处理的技巧

find和xargs是最好的组合,可以说是linux shell下的瑞士军刀,用xargs配合find,比直接用find的-exec参数,速度更快,用法也更直观。
基本的用法比如:
find ./ -name '*.bak' | xargs rm -rf

一般情况,上面这个命令运行的很好,但是如果找到的文件名代空格上面的命令运行就可能会出问题了有一个参数-print0,于默认的-print相比,输出的序列不是以空格分隔,而是以null字符分隔。而xargs也有一个参数-0,可以接受以null而非空格间隔的输入流。所以说xargs简直就是为find而生的。上面的问题就很好解决了:
find ./ -name '*.bak' -print0 | xargs -0 rm -rf

2009年5月19日 星期二

ISSUE:Select error in mobigen

在mobigen的平台上,使用select時常常會因為"interrupted system call" (EINTR)出現,而導致正常流程出錯,查過google,應該是在有些platforms會有這個問題,所以在mobigen平台上,使用select時,應該在錯誤檢查再加入此判斷。
ex:
rc = select (fd + 1, &rfds, NULL, NULL, &tv);
if (rc < 0) {
if (errno == EINTR)
break;
error process...
}

WIS for Lorex 韌體 make 流程

For the first time checkout,
1. checkout from CVS Repository
# cvs co IPCAM_2_1_0_REL

2. checkout 'jsnutils' from Voldemort project (WARNING:因Voldmort project內的'jsnutils'已經修改太多,導致在ld時會出現區段錯誤)
# cd IPCAM_2_1_0_REL/wismedia/webcontrol
# cvs co -d jsnutils vdmcvs/ramdisk_src/jsnutils
2.1 modify IPCAM_2_1_0_REL/wismedia/webcontrol/jsnutils/cross.mk
# vi jsnutils/cross.mk (JPLAT=wis)

3. for LOREX jpeg snapshot (goto wismon)
# cd ../wismon/
# cvs co -d ffmpeg-012304 IPCAM_2_1_0_REL/wismedia/libs/ffmpeg-012304
# cd -

4. Start Make process
# cd ../../snapgear/
4.1 先disable video authentication for speek,因為需要link jlib,而第一次編譯時並沒有,所以一定會錯誤。
#vi usr/spook/event.h
--> //#define jim_enable_auth
4.2 修改 kernal 的設定檔
#make menuconfig
- Select LOREX from Kernel--->Pixord devices
4.3 第一次編譯 (一定會在 ffmpeg 出錯)
#make dep; make
4.4 修改 ffmpeg 設定檔,新增 'LOREX_OEM=yes'
#cd ../wismedia/wismon/ffmpeg-012304/
#vi config.mak
- LOREX_OEM=yes (add this line)
#make clean
#cd -
4.5 第二次編譯,應該不會出錯,可以正常完成
#make
4.6 修改spook設定,加入video authentication
#cd usr/spook
#vi event.h
- #define jim_enable_auth
#vi Makefile
- LIBS = -lj -I... (add -lj option)
#make clean
#cd -
4.7 最後一次編譯,完成
#make

2009年5月15日 星期五

Kdesvn ssh+svn 不用一直輸入密碼的方法

步驟 (本機端)
* ssh-keygen -> Enter -> Enter .... 不用管一直按就對了.
* ssh-keygen -t dsa -> Enter -> Enter .... 不用管一直按就對了.

步驟(伺服器端)
* 把產生id_dsa.pub / id_rsa / id_dsa, copy 到你要連的 svn server /home/xxx/.ssh/.
* cat id_dsa.pub >> authorized_keys (/home/xxx/.ssh/目錄下).
* 確認Server端檔案權限.

權限:
* /home/xxx 不能是 777 , 最少要755
* /home/xxx/.ssh 設 700
* /home/xxx/.ssh/authorized_keys 設600

收工. 以後登入Server就不用Password.

2009年4月8日 星期三

工作紀要:pes2avi 效能

來源檔:
4CH/CIF/(ch1:video ch2/3/4:blue image)/623905636 bytes/71928 fream
ch1:410399204 byte
ch2:62738460 byte
1. 原始程式,在處理完個別fream後,不加入delay。
CPU Time
。ch1 72% 72s
。ch2 70% 42s
2. 在處理完美一個fream後,依據不同值加入usleep (0)做延遲。
2000 fream 1000 fream fps
CPU Time CPU Time CPU Time
。ch1 --% --s 70% 74s 56% 79s
。ch2 --% --s 55% 45s 26% 51s
3. 在處理完美一個fream後,依據不同值加入sched_yield ()做延遲。
2000 fream 1000 fream fps 4fps always
CPU Time CPU Time CPU Time CPU Time CPU Time
。ch1 --% --s --% --s 72% 77s 77% 74s 72% 79s
。ch2 --% --s --% --s 68% 42s 70% 42s 71% 45s

工作紀要:usleep for Pentamicro

在Pentamicro上使用usleep所得到的真實時間:
[0]:(sleep.c::main) runtime=7921(10-6 s)
[1]:(sleep.c::main) runtime=9223(10-6 s)
[2]:(sleep.c::main) runtime=9915(10-6 s)
[3]:(sleep.c::main) runtime=9786(10-6 s)
[4]:(sleep.c::main) runtime=10147(10-6 s)
[5]:(sleep.c::main) runtime=9522(10-6 s)
[6]:(sleep.c::main) runtime=9673(10-6 s)
[7]:(sleep.c::main) runtime=9846(10-6 s)
[8]:(sleep.c::main) runtime=9831(10-6 s)
[9]:(sleep.c::main) runtime=9733(10-6 s)
[10]:(sleep.c::main) runtime=19919(10-6 s)
[11]:(sleep.c::main) runtime=20233(10-6 s)
[12]:(sleep.c::main) runtime=19682(10-6 s)
[13]:(sleep.c::main) runtime=19759(10-6 s)
[14]:(sleep.c::main) runtime=19931(10-6 s)
[15]:(sleep.c::main) runtime=20125(10-6 s)
[16]:(sleep.c::main) runtime=19772(10-6 s)
[17]:(sleep.c::main) runtime=19901(10-6 s)
[18]:(sleep.c::main) runtime=19956(10-6 s)
[19]:(sleep.c::main) runtime=19931(10-6 s)
[20]:(sleep.c::main) runtime=30250(10-6 s)
[21]:(sleep.c::main) runtime=29850(10-6 s)
[22]:(sleep.c::main) runtime=30170(10-6 s)
[23]:(sleep.c::main) runtime=29601(10-6 s)
[24]:(sleep.c::main) runtime=30010(10-6 s)
[25]:(sleep.c::main) runtime=30107(10-6 s)
[26]:(sleep.c::main) runtime=30181(10-6 s)
[27]:(sleep.c::main) runtime=29524(10-6 s)
[28]:(sleep.c::main) runtime=30048(10-6 s)
[29]:(sleep.c::main) runtime=30055(10-6 s)

=>以每10ms為一單位,若在此單位中,無論其值為何,皆sleep近乎同一值。

AVI檔造成檔案總管掛掉

當使用檔案總管開啟某些Pentamicro轉出的avi檔案時,會造成檔案總管當掉。
錯誤發生的dll為:shmedia.dll
上google搜尋發現是檔案總管會使用媒體預覽的功能(shmedia.dll),可能是avi的檔案內容有問題,造成預覽錯誤。
解決方式:
反註冊 shmedia.dll:regsvr32 /u shmedia.dll

PS:若需要重新安裝:regsvr32 shmedia.dll