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.

2009年2月13日 星期五

2009/2 Training course: Cell Programming

這幾天有學弟問我的問題,我稍做整理
1.
問:假如 SPU3 要用mfc_put 把資料丟給SPU4,
我再SPU3裡面這樣寫,
mfc_put(&myps , XXX , sizeof(my_class) , TAG , 0,0);
XXX要放SPU4的 (local store位址) + (變數位址)
我知道local store的位址從problem state可以得到
可是我再SPU3裡面要怎麼抓到SPU4的變數位址呢?
答: 對,這是一個問題,所以你必須在SPU4的code加入"告訴SPU3 它該放在我的Local Store的哪一個address"意思就是你應該在SPU4的Local Store開一個一模一樣的變數,然後用mailbox或signal告訴SPU3這個變數的addr, 叫SPU3將資料傳到這個addr

2.
問:while(spe_out_mbox_status(spe_id[0])==0);
這段code的意思是說SPU0如果他的outbound傳輸是傳給SPU0的話,
就會一直被這個while 迴圈block住嗎?
答:其實是可以直接使用spe_out_mbox_read(),但是有時會出錯,為什麼呢?因為ppe去讀spe的outbound-mailbox是"non-blocking"。所以有可能spe根本還沒把資料寫到out-bound mailbox,但是你卻跑去讀了,所以會得到錯的值。為了預防這樣的錯誤發生,所以我們要去看out-bound mailbox的status,當status的值不是0的時候,代表有資料進來了。而因為你去讀status也是non-blocking,所以要用while loop一直去偵測,直到它不為零。

3.
問:Fenced and Barrier Command
Fenced command: mfc_putfBarrier command: mfc_putb
在每一個SPE當中,會有一個DMA queue,所有要做DMA的command,都會進到這個Queue當中等待執行。但是先送進去DMA不一定會先執行。如果資料送出的先後順序對我們來說是有意義的,但我們又不想要每送一筆就blocking的在等待,所以我們就必須以fenced和barrier command來幫忙將想要資料送出。
於是我們將想要依序的資料用相同的標籤(TAG)標記,然後使用barrier/fencedcommand 將資料送出。
barrier:跟我同樣TAG的DMA指令,比我早進來DMA Queue的指令先做完,才會輪到我做。fenced:跟我同樣TAG的DMA指令,比我早進來DMA Queue的指令先做完,比我後進來指令也可能會先執行,之後再輪到fenced指令去做。

2009年2月11日 星期三

2009/2 Training Course

請 Speakers儘快上傳你的講稿資料

2/9 SystemC - DNA

2/10 SystemC - DNA

2/11 SLIM - 宗胤

2/12 Cell - bbb

2/13 Eclipse - 宗胤、阿凡

上面是Training Course課表

地點皆在4285,時間 9:00~12:00、14:00~17:00

基本上皆是早上講課,下午則是一些實作練習

歡迎各位來參加

另外請主講人在2/6前上傳投影片等資料


資料下載:

SystemC & TLM

SLIM Slide SLIM Source 作業注意事項

Cell Slide Example Source 作業(有修正請重新下載)

Eclipse Slide Example

GEF Slide Lab

2009年2月10日 星期二

2009新春

照片在此!!

附上親子圖一張

推薦書

Hi 老師及各位學長學弟妹們:

推薦兩本程式實作的好書:

1) Head 1st Design Pattern
http://supersmalldolphin.blogspot.com/2008/06/head-first-design-pattern.html

2) Effective C++
http://www.books.com.tw/exep/prod/booksfile.php?item=0010264536

第一本可幫助寫出具良好架構易維護的程式,第二本提供許多c++建議讓程式更快且避免錯誤的產生。
如果你/妳尚未閱讀過這兩本書,建議將他們當成打發時間的好朋友…
若有問題歡迎留言或寫信給我。

Thanks.

AL.

2009年2月6日 星期五

2009新春聚餐

當天早上11點,在Scream Lab 4287集合!11點半出發,逾時不候。

今年比較特別的是多辦了一次聚餐, 交換禮物的活動也從尾牙聚餐改到新春聚餐. 時間是下午一點鐘開始, 不過我把地點拉到梁勝富老師家的附近一家叫雲山坊的田園餐廳, 請各位設法早一點到(中午12點前), 外地來的學長姐, 我會安排學弟們騎車載各位過去, 必要時, 我會用車子接送個一兩趟. 應該不會有問題. 假如哪位同學可以借到車子的, 也請幫忙. 請設法通知你可以聯絡到的人, 而她他又還沒在下面名單裡簽到的.

  • aaa
  • centcent
  • starryalley
  • mobo
  • showmin
  • Dawn
  • 阿凡
  • 塞公
  • bbb
  • Buffett
  • squid
  • 皓鈞
  • kiwi
  • 品皓
  • 冠廷
  • Rufus Chang
  • 育典
  • water

下面是雲山坊的網址:

http://winsun.tu.com.tw/03map.htm

以下是幾張照片:

 

 



 

 

2009年2月4日 星期三

Coware v2007.1.2

我剛把CoWare 2007年版的裝進去WS
使用時請先source 一下 設定檔,指令如下:
ooxx@WS>source /etc/skel/CoWare.csh
然後要使用的時候,只要在你的目錄下打
ooxx@WS>pct &
就可以開始用了
Have Fun!

2009年2月3日 星期二

安裝CUDA --- VC8

首先要到CUDA官網抓一下東西

選擇 Windows XP


將下面三個都抓下來, 抓2.0就好可以了
1. CUDA 驅動程式:
2. CUDA 工具套件:
3. CUDA 軟體開發套件(SDK):

放Tool Chain:
C:\CUDA\

範例放在這邊
C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\Projects
進到 Project 之後點VC的Project檔就可以開了

一些小問題:
Q1: 有多張顯卡時, 要選另一張顯卡, 可以傳參數 "-device=1"
Q2: VC Syntax Highlight可以看 ~SDK\doc\syntax_highlighting裡面的文件

Have Fun~