2009年2月28日 星期六

用 WLW 寫 blog

耶,這是篇拖了很久很久的教學文章,記得去年我要畢業前,好像答應要教 Alvin 老師,結果一暫且就…不過還好有 showmin 學長幫忙!不過文章還是不能欠啊,出來跑的,總有一天要還!

簡介

WLW 的全名是 Windows Live Writer ,所以很明顯的就是微軟出的,大家都喜歡訐詨微軟,不過不得不承認這家公司的編輯器都還不錯用,尤其和很多 blog host 提供的 editor 相比,更是好上很多,有時候真的會忍不住罵一下那些預設的 editor 是垃圾…ㄜ…我們好像是同業…

那到底 WLW 有什麼好處呢?下面就讓我用自身經驗,來個工商服務時間吧!

  1. 離線編輯、熟悉的編輯功能:沒錯,不要再相信沒有事實根據的謠言了!即使拔到獅子的鬃毛,號稱 Web 2.0 的 editor 也不會比 standalong 的桌面應用程式好用(好吧,我不否認,我討厭一股腦的把應用都丟在 web 的行銷和廣告)
    基本上 WLW 很像 word 也很像 wordpad ,所以使用者可以很快速地上手,不會常常手滑,tab 按下去就回到上一頁了…
    當然,快速鍵的支援、drag-and-drop 的功能更是沒有少,這可是身為桌面程式的驕傲唷 ^.<
  2. 不雞婆排版的編輯器:這可是最讓我激賞的一樣功能,WLW 是個不雞婆排版的編輯器,這點對於貼程式碼是個很重要的能力,因為像是 blogger editor ,它總是會重新 layout 一下你的文章,然後你辛辛苦苦排好的文章就亂了!
  3. 貼圖方便:使用 WLW 貼圖會很方便,就像是在 Word 裡頭插圖一樣,WLW 會自動上傳到 blog host 提供的空間,比起許多 on line editor 需要先上傳等自訂連結來的方便,當然也可以用 drag-and-drop 囉。
  4. 統一的編輯器:free blog host 很多,在這些廠商中跳來跳去的人也不少,雙棲、三棲、以至於 N 棲的人也很多,但是你只要學一套編輯器的使用,基本上就可以討生活了,因為 WLW 允許你註冊多個 blog 帳號來使用。
  5. 豐富外掛:很多人推薦這項功能,不過我自己很少用,而且至今我還是沒看過好用的貼程式碼外掛,這時候就很想抱怨了!blog 對程式設計師真的很不友善,可是,它們卻是程式設計師寫出來的…
    為什麼無名相簿美女牆都有人做了,就是沒有人要作一個 programmer-friendly 的編輯器,好吧,因為大家都跟我一樣只會抱怨 –,-
  6. 強大的預覽功能:雖然還在開發階段,而且我自己很好使用,但是每次改版都可以感受到 WLW 預覽功能的進步!令我訝異的是,它竟然已經可以支援 embedded object 的執行,以下圖為例,當我們嵌入 youtube object ,WLW 已經允許你執行它了。這在前幾版是會有問題的,不愧是有 browser 技術的公司啊~

image

為了怕被抹紅,說我是微軟同路人,這邊也要講一些 WLW 的缺點:

  1. 表格功能不強:WLW 的表格幾乎說只能提供設定外框、拉出 NxM 的樣式,或許對一般人夠用了,不過當遇到工程師這種愛畫表格比較功能時,就有點麻煩了,因為像是合併欄位、調整大小等細部的控制,WLW 做的不是很好,所以我的習慣是會用 nvu 這類網頁編輯器去製作好表格,然後再開啟 WLW 的 HTML 模式來加上複製。
  2. 無法用滑鼠準確的調整圖片大小,你會發現當你放開滑鼠左鍵時,圖片還是會持續擴大一點,需要花點時間習慣,或是放棄直接調整圖片屬性。

下載

WLW 的官方網頁在:http://windowslivewriter.spaces.live.com/ 或是安裝惡名昭彰的 wlsetup 時,也會有選項可以讓你安裝。

ScreenHunter_01 Feb. 27 23.54 設定

  1. 安裝好後,第一次執行會跳出像是下圖的精靈,引導使用者設定他的 blog 進 WLW。微軟當然是力推 Windows Live Space ,不過不用擔心,主流的 Blog host 它也都是支援的,點選其他的部落格服務就可以了。
    ScreenHunter_02 Feb. 27 23.57
  2. 接著會請你輸入你 blog 的網址、帳號、密碼等,就老實輸入吧!ScreenHunter_03 Feb. 27 23.57
  3. 當你輸入正確的資訊後,WLW會開始分析你使用的 blog 、blog 的樣式,然後嘗試發一篇測試文章到 blog ,這篇測試文章會自動被刪除!ScreenHunter_04 Feb. 27 23.58
  4. 一切都成功後,就為你的設定檔取個名字吧,通常就是以 blog 名稱為預設名稱。ScreenHunter_06 Feb. 28 00.03
  5. 成功後,便可以進入 WLW ,可以到工具,看一下你剛輸入的帳號資訊,之後你輸入的所有帳號也可以在這邊查詢、設定。
    ScreenHunter_08 Feb. 28 00.15 
  6. 大家如果有些不錯的 plug-in 也不要忘了分享啊!
  7. 這邊附帶提一點,WLW 有個功能叫做類別,它相當於 blogger 裡頭的標籤,可以方便大家做文章分類。

    image

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

講這麼多了,來偷看一下 blogger 的編輯器吧!

image 唉,加油,好嗎?

2009年2月25日 星期三

進度報告 Tilera64 - 品皓

這禮拜是報告關於multicore的架構,所以學長幫忙找了Tilera的網站。
由於我目前還沒有其spec書可以細讀,所以只能就我目前google到的做報告。

Tilera64,MIMD system,由8X8個tile組成
每個tile都是一個能獨立執行application的元件,
由一個32 bit RISC的core,加上cache和non-blocking switch組成。
interconnection是由iMesh的on-chip network處理。

星期二討論到的問題
Q: non-blocking switch是哪部份non-blocking? non-blocking遇到封包過多怎麼辦?
Q: 既然是MIMD,那需要一個master processor做管理,在哪裡?

投影片

2009年2月24日 星期二

進度報告 - GStreamer - ㄚ凡

投影片連結

這次報告的是GStreamer這個多媒體框架

可是很遺憾 我找不到任何的架構圖可貼

所以貼一張GStreamer Editor好了


這張圖裡多少可以看出一些GStreamer的概念
最外層是一個pipeline對應一個data flow
裡面出現的thread...目前我還沒看到任何相關的說明
暫時把他當成Bin來看吧
每一個element(包括pipeline, thread, bin)的左下角都有一組NRPP
表示這個element的狀態,分別是Null, Ready, Paused, Playing
Null : 沒占據資源
Ready : 拿了資源可是沒開始讀資料, 指標還在0的位置
Paused : 跟Playing一樣,只是clock沒在跑
Playing : 讀取/處理資料流

可是更遺憾的是 這個GUI已經快5年沒有更新了
現在的core是0.10版 可是GUI還停在0.08版
因為版本不對所以不給我裝

目前釋出的版本只有linux跟OpenBSD 4.1版
至於windows...Unfortunately, we are unable to provide up-to-date Windows binaries of GStreamer, due to limited developer resources.
官方說他們的API支援多種語言,可是目前的支援...
languagestatus
PythonReleased. See the gst-python module.
PerlReleased as part of the gtk2-perl project.
.NETThe bindings are still under development and not yet released.
C++The bindings are still under development and not yet released.
GuileReleased under the aegis of the guile-gnome project.
JavaThe bindings are still under development and not yet released.
RubyThe Ruby bindings are released as part of Ruby-GNOME2.

--
這次講的部分主要是application的介紹
基本上就和SLIM差不多的概念
甚至簡單的MP3撥放可以利用他們的工具gst-launch command-line tool
$ gst-launch-0.10 filesrc location="test.mp3" ! decodebin ! Alsasink
這樣指定source, decoder, sink就可以撥放MP3
這三個element之間的連接和資料流的處理 都會自動完成

由於這句話...

GStreamer can bridge to other multimedia frameworks in order to reuse existing components (e.g. codecs) and use platform input/output mechanisms:

  • Linux/Unix: OpenMAX-IL (via gst-openmax)
  • Windows: DirectShow
  • MaxOS X: QuickTime

接下來要看看plugins是如何實作
以及gst-openmax是如何利用plugins的機制來橋接OpenMAX-IL

--
這次的問題(我記得的部份啦 有忽略的請再問我一次)

※pad的方向定義
以element之間的資料流動來看,資料從前一個element的src pad流到下一個element的sink pad,所以以一個element的內部而言,左邊是sink pad代表資料流入,右邊是src pad表示資料流出

※每個pipeline只對應一個thread?
基於這句話 Multi-threaded pipelines are trivial and transparent to construct 還有Manual的前半部只有提到每個pipeline會以一個新的thread來執行,我認為是的

一個pad可連多個pad?
關於pad的描述雖然沒有明確定義,但Manual中的一個Tee element的例子說到它的輸出(src pad)會因為需要複製一個資料流輸出,而增加一個pad(on request),相同的輸出都需要兩個src pad,所以我想GStreamer裡pad的連接應該是1對1的

以ogg decoder而言,解出的視訊與音訊是否能同步
現在想想,Manual中提到application與pipelines之間的溝通是非同步的,但音訊跟視訊在同一個pipeline中(同一thread中),是否能同步,我還要查查看

負責暫存資料的buffer是只有source element有在maintain嗎
Buffer can be allocated at any time during the execution, when ever needed.

假使有多個pipelines存在, 每一個是一個單獨的thread嗎?
這方面我也越來越有疑問了@@,我還要再找找看文件才敢回答...

--

090310

投影片

這禮拜我要報的是GStreamer怎麼跟OpenMAX IL結合
根據官網所提供的資料
目前OpenMAX IL層 只有一個open source的實作叫做Bellagio project
最新版提供18個components可用
GStreamer也針對它 提供一個gst-openmax的plugin來做結合
原理上是gst-openmax對Bellagio project提供的每一個component
做出一個對應的element 在這些elements裡用的是OpenMAX IL的API
利用呼叫OpenMAX IL API的方式來與OpenMAX IL溝通

官網提供的文件中提到GST跟OMX的比較
以及如何利用OpenMAX IL API來傳輸資料
但都是講概念 實作方面得自己去trace code
不過在Bellagio project官網上關於GStreamer plugins有一段話
The development of Gstreamer plugins that use OpenMAX components is maintained at GstOpenMAX on freedesktop
A set of old plugins developed in the context of Bellagio project can be found here
This part of the project has been discontinued, and no support will be given for it.