2010/03/29

Apple release Mac OS X 10.6.3 with QuickTime X, OpenGL improvements

昨天蘋果釋出 Mac OS 10.6.3 更新雪豹作業系統,

主要改進了QuickTime X 和 OpenGL-base應用程式定址相容性問題.

蘋果建議使用Snow Leopard 的使用者 update 到 10.6.3 版,

這次的更新共佔 437.2 MB的空間.

概略更新的項目如下:

  • Improves the reliability and compatibility of QuickTime X
  • Addresses compatibility issues with OpenGL-based applications
  • Addresses an issue that causes background message colors to display incorrectly in Mail
  • Resolves an issue that prevented files with the # or & characters in their names from opening in Rosetta applications
  • Resolves an issue that prevented files from copying to Windows file servers
  • Improves performance of Logic Pro 9 and Main Stage 2 when running in 64-bit mode
  • Improves sleep and wake reliability when using Bonjour wake on demand
  • Addresses a color issue in iMovie with HD content
  • Improves printing reliability
  • Resolves issues with recurring events in iCal when connected to an Exchange server
  • Improves the reliability of 3rd party USB input devices
  • Fix glowing, stuck, or dark pixels when viewing video from the iMac (Late 2009) built-in iSight camera

Reference : http://www.appleinsider.com/articles/10/03/29/apple_releases_mac_os_x_10_6_3_with_quicktime_x_opengl_improvements.html

2010/03/26

Transport Stream Format.

簡介:

Transport Stream (傳輸串流) 簡稱 TS, 主要根據 ITU-T Rec. H.262 | ISO/IEC 13818-2 and ISO/IEC 13818-3制定而成.

Transport Stream 包含了一個或以上的 Program (節目),

Program 由 Video , Audio 和節目資訊(PSI) 組成,

而 Video 和 Audio 的 Elementary Stream 將被拆解裝載到 PES Packets.

而 PSI 則分為四種如下所列:

  • Program Association Table
  • Program Map Table
  • Conditional Access Table
  • Network Information Table

TS 結構分析 :

TS 的長度是固定的, 每個 TS Packet 都是 188 Bytes.

而前四個 Bytes 為同步字元(0x47),

之後則為 PID 等資訊,

解碼時, Client 端裝置會先根據 PID 找到 PAT 表,

在透過 PAT 表內提供的 PMT 之 PID 來找到PMT 所在的位置,

最後再從 PMT 中找到相對應的資料串流, 開始解碼.

因此 , PAT 和 PMT 表是一定必須要提供的部份!

TS_Packet.jpg

PAT 結構:


PAT_Table.jpg

  • table_id : 8 bit, PAT table ID 固定為 0x00
  • section_syntax_indicator : 1 bit,
  • '0' : 1 bit
  • reserved : 2 bits
  • section_length : 12 bits, ( 0xB000 | PAT HeaderLength )
  • transport_stream_id : 16 bits
  • reserved : 2 bits
  • version_number : 5 bits
  • current_next_indicator : 1 bit.
  • section_number : 8 bits,
  • last_section_number : 8 bits,
  • program_number : 16 bits, 與 PMT 表中 program_number 對應
  • reserved : 3 bits
  • network_PID or program_map_PID : 當 program_number == 0 為 networks PID, 反之為 program PID.
  • CRC_32

PMT 結構:


PMT_Table.jpg

  • table_id : 8 bit, PMT table ID 固定為 0x02
  • section_syntax_indicator : 1 bit,
  • '0' : 1 bit
  • reserved : 2 bits
  • section_length : 12 bits, ( 0xB000 | PMT HeaderLength )
  • program_number : 16 bits, (和 PAT 表中的 Program_number 對應)
  • reserved : 2 bits,
  • version_number : 5 bitts,
  • current_next_indicator : 1 bit.
  • section_number : 8 bits,
  • last_section_number : 8 bits,
  • reserved : 3 bits,
  • PCR_PID : 13 bits,
  • reserved : 4 bits,
  • program_info_length : 12 bits,
  • stream_type : 8 bits, (MPEG4 : 0x10, H.264 : 0x1B , etc ...)
  • reserved : 3 bits,
  • elementary_PID : 13 bits,
  • reserved : 4 bits
  • ES_info_length : 12 bits,
  • CRC32 : 32 bits



2010/03/25

Standard I/O Redirection

Linux 提供三種 I/O Streams 給程式使用

STDIN (0) : default is keyboard.

STDOUT (1) : default is terminal.
STDERR (2) : default is terminal.

而 STDOUT 和 STDERR 可以被重新導向至檔案 ( I/O Redirection ), 作法如下:

$ binary > (將 STDOUT 重新導向)
$ binary 2> (將 STDERR 重新導向)
$ binary &> (將所有輸出重新導向)
$ binary 2>&1 (將 STDERR 重新導向至 STDOUT)
$ binary >&2 (將STDOUT 重新導向至 STDERR)

使用 > 輸出導向的檔案預設會被完全覆蓋, 也可改用 >> 來添加在原檔案的結尾

而關閉 File Description 的方式則如下:

$ n<&- (關閉 Input File Description n)
$ 0<&- , $ <&- (關閉 STDIN)
$ m>&- (關閉 Output File Description m)
$ 1>&- , $ >&- (關閉 STDOUT)
reference : http://tldp.org/LDP/abs/html/io-redirection.html


2010/03/14

Linux 底下處理減號開頭的檔案名稱

在 Linux 底下, 由於減號(-) 通常都被來利用為指令的 Option,

因此若我們執行檔案處理的指令時,

若遇到減號開頭的檔名 (Example : -filename)

則通常會無法順利執行,

例如:

$ rm -filename

$ mv -filename filename

$ cp -filename filename

002.jpg

這幾個執行的結果都是失敗的!

遇到這種情況我們通常可以透過 ./ 或是 -- 來解決:

$ cp ./-filename filename

$ rm -- filename

003.jpg

當然啦,在UNIX底下, 減號是非常常用的特殊符號, 極度不建議拿來命名檔案或資料夾,

但若真的遇到這種狀況的話, 就透過以上的方式來處理囉 :)

2010/03/09

X over ssh

一般我們遠端使用 Linux or Unix 主機時,

常常是透過 telnet 或是 ssh 來做文字模式的操作 如果我們希望遠端使用 Linux 或是 Unix 系統的圖形介面,

常用的方式有 VNC, 另一種就是透過 ssh 來啟動 X 圖形介面.

X 視窗系統(目前版本為 X11) 提供了圖形介面來代替文字操作介面, 多數 Unix-linx 的作業系統都有支援,

ssh 則是使用 Secure shell, 透過網路來做兩台主機間的溝通. 可以在加密的狀態下使兩台有ssh的裝置透過網路連接

如果我們透過 ssh 使用 X windows system,

就可以透過遠端連線來使用圖形話GUI介面,
要使用 X over ssh 要先準備幾個項目
1. 首先在本機端 (local) 安裝 X server
2. 遠端系統必須預先安裝 xterm, xeyes, xcalc, xlogo, xedit, xload, xclock, and twm, mwm, Gnome and/or KDE
3. 選擇性安裝 xsnow, rclock, rxvt, xpaint, xdaliclock, Blackbox, wmaker, and fvwm2

4. 防火牆必須允許 ssh 通過
5. 遠端系統必須運行 sshd .

當準備好以上幾個項目後, 就可以透過簡單的指令來實作 X over ssh  

只要在平常ssh 指令後加上 "-X" option, 就能讓 X windows 通過 ssh 來運行

例如:

ssh -X 192.168.0.100
若是遠端的主機使用標準外的ssh port (default port 22),
則可以加上 "-p" 來指定使用的 port.

ssh -X -p 8080 192.168.0.100

當login近遠端的主機後, 及可以透過 command line 帶起圖形介面的APP.



這邊的例子是透過 X 啟動遠端主機的 Wireshark,


要注意的是, 雖然 wireshark 是開在 local 的畫面,


但實際上透過網路鯊魚擷取到的封包是遠端主機網路介面抓到的喔!


另外也可以在透過ssh -X 連線到遠端主機後,

執行遠端的 gnome 介面或是 kde 介面,

就可以以圖形介面來操作系統囉!

kde介面:

$ startkde

gnome 介面:

$ gnome-session



reference:

http://www.vanemery.com/Linux/XoverSSH/X-over-SSH2.html

2010/03/04

Vim Session

Vim 7 除了相當好用的 Vim Tab Pages 功能外,
也能搭配 mksession 來儲存目前 Vim 的狀態,
例如,每次工作實都開了一些Vim Tab Pages,
或是設定了一些 .vimrc 中非預設的設定
但關掉 Terminal 後就通通消失,
Tab Page要重開, 設定也要重新設定過,

這時候就可以利用 mksession的功能囉!





:mksession 預設會幫你在目前的目錄底下產生 Session.vim
裡面記錄了已經開啟的 Tab 資訊以及其他設定,
也可以用縮寫 :mks

下次開始 Vim 時, 只要加上 -S Session.vim,






或是開啟 Vim 後使用 :source Session.vim,




就能恢復上次工作的狀態了:)




當然,也可以自己決定Session檔的名稱,
只要在 mksession 時指定檔案名稱即可

:mksession filename

要注意的是如果Session file 已經存在,
則必須要加上 ! 來覆蓋已存在的檔案.

:mksession! filename


搭配Tab Pages 真的是蠻方便的功能唷^^b