2007年7月26日 星期四

mark end of tiff file

take time to write a simple program that will chech whether RowsPerStrip or StripByteCounts is 0.
If value of any of these two tags is 0, then mark end-of-tiff before this page, and adjust the number of total pages also.

This program can handle Big-Endian tiff file also. Just for fun.
But I think Dialogic cards will generate Little-Endia tiff file only. (At least for my test).

2007年7月25日 星期三

VFX test

Recently, the customer requests for a new fax receiving system that will keep the well-received pages, convert into tiff file, and then send to customer as attachment of an e-mail.

Because of the odd T1 signalling, DM/F cards cannot be used for this project.
Jim borrows two type of VFX card from hardware provider.

The result is:
VFX/40ESC-PLUS - only acts as fax channel, not fax resource
VFX/40JCT-LS - acts as fax channel and resource.

2007年7月24日 星期二

現有車機程式與悠遊卡的結合

The python program for tscc card reader is ported to terminal environment in C.
Now there is a script command, say 'tscc', could be used to interact with the card reader.
btw, complete a few script subroutines for script coder's reference.

Now, I can close this task, and do the SIP program again.

Free voice recognition software that works

看到一篇文章, 把他節錄下來, 免得忘記

http://mindmakers.org/openair/airPage.jsp
http://www.nuance.com/naturallyspeaking/
http://cmusphinx.sourceforge.net/html/compare.php
http://sourceforge.net/projects/cmusphinx

http://smart-machines.blogspot.com/2007/06/free-voice-recognition-software-that.html

If you are considering adding voice recognition to your AI or robotics project then you are probably looking for a free implementation that works well. Your other option would be to purchase a copy of what is currently considered the state-of-the-art in speech recognition, Nuance's Dragon Naturally Speaking suite. However, before spending any money, you can also try your lack with the open source Sphinx software.

Sphinx is speech recognition software that was developed at Carnegie Mellon University under DARPA funding. A few years ago, CMU released their software for free under a BSD license. The most recent version is currently available in sourceforge here.

Sphinx is a very well designed voice recognition suite that comes in many flavors. There is a non-real-time version for batch processing of voice data and a real-time version for live systems such as telephone spoken dialog and robots. As expected, the real-time version is not as accurate but this is the price you pay for the faster performance. There is also PocketSphinx which is a version of the software designed for hand held computers. All versions work using Hidden Markov Models similar to any modern speech recognition system.

I recently used the JAVA version of Sphinx with a limited vocabulary for a command and control type interface for a robotics system . In the past, I have also used IBM's ViaVoice software. Comparing the two, I have to admit that Sphinx performs equally well and it doesn't cost a penny so I switched completely to using it over ViaVoice.

If you are looking for free voice recognition software that works then Sphinx is your best choice.

go UT for sip testing

繼續前一天的測試, 寫了一個小程式, 以便可以回覆 OPTION.
結果一樣, 撥 777 或 776 都進不了 VMS.

由於對方在忙, 只好等下星期再說了.

2007年7月18日 星期三

車機, 刷卡, 派遣

跟吳總到 TSCC 去開會, 讓對方了解可以解決 派遣量 及防弊的問題.

感覺對方蠻有興趣的, 不過可能會跟 現有的設備供應商 有點衝突. 還得再想想 有什麼都贏的方案.

2007年7月17日 星期二

openvpn - client side test

試了一下 client side 的 openvpn, 安裝完畢之後, 只要將 對應的 參數檔 放在 program file\openvpn\config 目錄下, 而後 啟動 openvpn 的 服務即可.

由於 openvpn 在 windows 下, 是透過 TAP 的方式來完成. 因此無法讓 其他 用tap 連線的部分來分享.

例如, 我打算將 openvpn 的 tap device 分享出來, 但就會出錯. (也可能是 這個版本的 XP 的網路分享問題 - 待確定)

UPDATE: 在 XP SP2 的環境下, TAP 是可以分享出來的. 也就是 openvpn 的 tap, 可以讓 coLinux 的 tap 使用.

Display engine

思考如何完成新版 車機 畫面的模擬程式. 主要是希望可以透過 web 來完成. 這樣就可以利用現有的 tool 了.

把 display engine 的功能, 分割一下, 分為 core, wrapper, remote ui.
core: 處理核心, 包含: event handler, command dispatcher, window description interpreter.
wrapper: 包含兩個 link 的處理程式
  1. ui wrapper: 提供畫面控制的 function, 轉換成 內部的 UI message, 必透過 UI link 送給 remote UI; 或將 remote UI 送來的 按鍵 message, 轉換成 event handler 可以處理的型式.
  2. msg wrapper: 讓遠端的 message 可以加入 event handler 的 queue, 或將 core 產生的 message 透過 msg link 送出.
remote ui:
  1. 透過 UI link 連接到 wrapper, 處理 remote message. 或將 按鍵 動作, 轉換成 UI message 送到 wrapper
  2. 提供 UI, 以便輸入 event,
  3. 將 msg link 收到的資料, 顯示在 UI 的 log area.

2007年7月13日 星期五

最近待辦事項

1. 研讀 mg1264 的使用手冊, 了解如何在 linux 環境下使用, 並進一步研究如何產生相應的儲存檔案, 即在 windows 上播放的問題.

2. 車機的部分功能待確定: keypad, buzzer, external flash 的更新.

3. LI 的評估工作. 例如, 如何將存下來的資料, streaming 到 client 端. client 端的程式還有多少 effort.

4. 研究 openvpn - (2007/07/14 測試過了, client 端可用)

5. 撰寫 新的 UI 概念測試程式. (2007/07/17 規劃了程式架構)

如何處理 45 TB 的資料

前幾天, 公司有一個案子要報價, 是 150M 用戶的 VMS, 要提供每人 30MB 的容量, 同時會有 26 E1 的接入.

這可是大型的案子. 光硬碟就要 45TB ! 雖然一定做的出來, 但是還是得做一些 survey.

首先得考慮這麼大的容量, 如果不幸沒有正常 umount, 下次要 mount 得執行 fsck 的話, 那得要花多少時間. (i.e. fsck after crash) 選擇使用 journalling filesystem 或多或少可以解決一部分這個問題.

再來, 是萬一真的得徹底執行 fsck 的話, 得多久. (ie. how much time it costs to do a complete fsck), 這就得衡量 filesystem size. 例如: 檢查 4TB 所花的時間, 跟同時檢查兩個 2TB 所花的時間有差多少.

另外一些問題是, 我有哪些 filesystem 可供選擇 ?
經過一番調查, 有幾點要注意 (已經決定使用 linux 了)
1. linux kernel 的 block layer 是否可以 support 這麼大的容量. ([1])
-> 2.6 的 kernel, 可以打開 CONFIG_LBD.
-> linux 使用 sector_t 大小的變數, 來定址某一 block device 上的 sector (512Byte),
for 32bit, sector_t 為 32bit (if CONFIG_LBD not defined, i.e. 2TiB limit), or 64bit (if CONFIG_LBD defined)
for 64bit, sector_t 為 64bit. (i.e. 2^73 = 8 ZiB [2])

所以, 只要確定是使用 linux 2.6, 並且 enable CONFIG_LBD, 這樣就可以使用 大於 2TB 的 disk array.

2. 哪些 filesystem 可以 support 這麼大的容量 ([Comparison of file systems])
我想下列是可以考慮的選擇 ext3, reiserfs3, jfs, xfs.
file systemmax.
file size
max.
vol. size
max. # of file
max # of inodes
max. # of file
in a directory
ext3 (4KB block)2TiB
16TiBless than
# of inodes
If V is the volume size in bytes,
then the default number of inodes
is given by V/213 (or the
number of blocks, whichever
is less), and the minimum by V/223

ReiserFs3
8 TiB16 TiB


jfs4 PiB32 PiB


xfs8 EiB8 EiB



由於是小檔案 (幾 MB) 居多, 因此還是得確認一下每一個 filesystem 可以儲存的最大檔案數.

3. 由於 acd/acdmgr 會透過 NFS 存取 file server, 所以 NFS 是否 support 這麼大的容量 ? 或者有別的 solution ?
-> 應該只需考慮 filesize. 因為, nfs server 並沒有實際建立一個 filesystem, 而是 export 一個 local filesystem to remote by the lower layer file system.
-> nfs v3 以後, 是使用 64 bit 來 存取 一個file.
-> 在這個應用中, 應該不會有這個問題. (每個人只有 30MB 的空間)

4. performance 的比較
a. ext2/ext3/reiserfs/jfs IBM 的一篇文章, 從不同的角度來看這個問題.
b. xfs 的 performance tweak.

5. LVM / RAID 的考慮

2007年7月10日 星期二

write and SIGPIPE

這兩天把之前懷疑的東西再拿出來看看. (write and SIGPIPE)
現有的 library 都是先呼叫 select(), 確定可以讀/寫的file descriptor list, 而後逐個先執行 read, 再執行 write.

但有一個 glare condition 沒有處理到. 若是在 read() 和 write() 之間, socket 被對端關閉了, 那呼叫 write() 就會產生 SIGPIPE. 如果沒有忽略, 或者處理 SIGPIPE, 那預設的處理方式就是退出程式.

解決的方法, 就是寫一個 dummy 的 signal handler. 當 write() 觸發 SIGPIPE 後, 忽略他. 靠下一次的 read() 來關閉這個鏈路.

至於已經有的程式, 就得逐個檢查了.