#osxchat blog

2004/11/27

Blogger 可以用 Safari 貼文章了

作者: lukhnos

先前 Blogger 似乎用了一些神奇(那個Autrijus 的同義形容詞就不在這裡覆述了)的 JavaScript,讓 Safari 無論如何也不能貼文章,Camino 也怪怪的。最後還是得請出FireFox 這套我雖然很欣賞卻實在沒什麼熱情常用的瀏覽器。今天貼文章的時候發現,這個問題竟然沒有了。從此需要小狐狸的網頁又少了一尊,真是暢快人心啊。

不過Safari 的textbox ,誤刪了字卻不能undo,這件事情,還真是惱人!已經有很多人抱怨過Safari 這個「超不專業」、「超不像Apple 作風」的特色了,卻遲遲不見Apple patch這個問題。

不管怎麼樣Camino跟小狐狸還是家庭常備良藥。但是只要能用Safari 的場合,我就硬是不想換。

嘖嘖。

神奇(淫邪?)的Darwin

作者: lukhnos

不要被標題騙了,以下純粹是技術性的文章。

昨天和gugod聊到,「怎麼寫個OpenVanilla變成這樣...」,gugod笑說,「... 變成各種程式技巧的練習」。我是那種因為有了Mac、因為OS X才真的認真學起UNIX上各種工具的人,尤其是UNIX上的程式設計。而因為OpenVanilla的關係,使得我們最近對Darwin,也就是OS X基底的作業系統,稍有多一點的瞭解。

例如前陣子我們才知道,Darwin雖然支援BSD-style的dlopen() 函式庫,也就是可以在runtime 把程式庫「掛」進來,做到plug-in 的效果,但是Darwin 的dlopen() 事情只做了一半。Mach-O (就是Darwin 上的binary executable format)所做出來的共用程式庫,預設的檔案附屬名是 .dylib (Linux 上則是 .so),一旦dlopen() 開啟了,就不能dlclose() !意思是說應用程式如果載入了某個.dylib 的plug-in ,一旦載入了,就沒辦法「熱抽換」了。

為了這個問題,根據#opendarwin 頻道上的說法(Pogma, 也就是 Darwin dlopen() 函式的原作者),Apple 在2000-2001年時弄出了一個叫 "bundle" 的格式。Bundle 是可以卸載的shared library,基本上是Apple 對Mach-O 檔案格式做了很多dirty work搞出來的東西。

問題是...... 不管是 .dylib 還是 .bundle 也好,Darwin 的shared library (dynamically loadable binary executable 是比較精準的講法),竟然沒有一個其他UNIX上都有的重要屬性:reference count! 意思是說,在Darwin 上,所有 run-time 時期載入的程式庫,都是系統準備一份拷貝,掛進應用程式的記憶體空間裡頭。如果是這樣,OS X上許多有外掛能力的應用程式(例如PhotoShop),吃RAM吃得兇也就不意外了......

另一個令人昏倒的事情是,雖然 .bundle 是可以卸載的(可以用 dlclose() 再重新用 dlopen() 重新載入或是抽換等等),但是...... 如果這個 .bundle 是用 Objecitve-C/Cocoa 寫成的,嘿嘿!對不起,這個 .bundle 一樣不能 dlclose()──只要應用程式把 Objective-C 寫成的 .bundle 拿去關,奪命彩球就立刻拼命地轉──然後就segmentation fault了。究其原因是,Objective-C 的runtime system 做了太多奇怪的事,使得一旦啟動了就不能關掉。Apple 自己也在Cocoa 的文件說了,「用Obj-C 寫成的Bundle 是不能動態關閉的」。

結果Apple 原先為了解決 .dylib 不能動態卸載的問題,搞了個神奇的 .bundle 格式。但是 .bundle 也只做了半套,沒有 reference counting。然後說是能卸載,結果自家最引以為傲的 Cocoa framework / Objective-C 不買帳,這...... 簡直是 much ado about nothing (幹了這麼多白工!)的事嘛。

最近的新發現是,Darwin 的 gcc ,預設的linker 選項是,只要 /usr/lib 裡有可動態載入 (shared library) 的版本,就一定不會載入靜態連結版的程式庫。Apple 為了這件事,甚至沒有提供 crt0.o ,意思是,你想要編一份強迫靜態連結標準C 程式庫的二進位執行檔,還得自己去弄一份 crt0.o 來!Apple 不提供 crt0.o 的理由寫在他們的官方文件裡

另一個發現是,Darwin 的gcc 有一套非常神奇(用Autrijus 的講法叫「淫邪」)的選項,叫 ZeroLink ,據Apple 的說法是,這是為了加快開發時期的linking 速度所提供的功能。簡單地說,就是把所有原來在連結時期要查的表、要核對、繫結的函式及資料符號,全部通通延後到執行時間再用「懶人」(lazy) 的模式去連結──所有的 .o , .dylib, .a 都一樣!根據Apple 的文件,ZeroLink 編出來的程式只能在開發時期使用,因為執行檔內寫死了所有先前連結 .o 檔的絕對位置。

要知道 ZeroLink 到底有多大的差別(或者有多「懶」),簡單寫一個 C++ 版的 "hello, world" 就知道了。Darwin 很奇怪地竟然沒有 libstdc++ 的動態版本(libc 卻有)。以至於任何使用了 iostream (例如 cout << "foobar") 的程式,執行檔的基本消費都有 600K 以上。一旦用上 ZeroLink,執行檔瞬間縮小到 9K !

我在OS X 之前從來不瞭解UNIX 程式設計的細節。很意外(也很好笑)的是,當初本來買Mac 是為了再也不想管那些有的沒的系統細節的我,反而因為OS X才真的覺得UNIX可親,而寫程式還是有樂趣可言。結果反而花了更多時間在這些「有的沒的」的事情上。只是我到現在還是遜腳一枚。

最後一提,打 "man gcc",就會看到一大堆 Apple/Darwin 專用的gcc 選項(例如 gcc -fast 可以編出 PPC G5 專用的執行檔),好像也真的只能用「奇技淫巧」來形容Apple 對Darwin 所做的各種量身打造工夫了。

2004/11/26

從 Muxed MPEG1 檔案中抽取音軌的方法

作者: Mengjuei Hsieh

介紹完了在 Quicktime Movie 裡面抽取音軌,接下來講從 muxed mpeg1 格式中抽取音軌。不過一時手邊沒有任何 mpeg1 格式的 Music Video ,我就隨手用早女組的廣告來充數吧。首先我們先用 Quicktime Player 開啟這個 mpg 檔案試試看:

Quicktime Pro 抽取音軌?想得美喔。我試過了用 quicktime 轉成 quicktime movie 等等的方法,結果都是讓轉換過的影片檔失去了聲音。

既然 Quicktime 不行,我們就用 bbDEMUX 吧!我選擇這個工具的原因除了因為它是 opensource 的軟體以外,它也是我找到最小的工具(壓縮檔大小 82kB)。接下來把這個 mpg 檔拖曳到 bbDEMUX 的圖示上,當然也可以先執行 bbDEMUX 再把檔案拖曳到 bbDEMUX 視窗上。

因為檔案很小,果然是瞬間就把影像和聲音分開成 *.m1a 和 *.m1v 檔案:

操作到了這一步您也許會想說,把它拖曳到 iTunes 裡面就好了吧?當然 iTunes 會播放它是沒錯啦,但是它卻不能轉換到 aac/mp3 等等格式。果真是令人絕倒啊....。想想,就把終極武器 Audacity 拿出來吧。先用 audacity open 這個 m1a 檔案:

最後就用 export as wav 功能轉換成 wave file:

那最後當然就是拖曳進去 iTues 再做打算了,反正再來轉換成別的都不是問題。

從 iTMS 的 pv 中抽取音軌

作者: Mengjuei Hsieh

Okay, 我想還是有人想從 music video 抽取音軌的,現在我就來示範一下到底該怎麼做才好∼∼
當然,我們就從 iTMS 的 Music Video 來看起,我最近最喜歡的歌是 U2 的 Vertigo....

既然只是要抽音軌,影片當然是越小越好囉。

這時候影片還沒下載完畢,請耐心等待。

下載完畢後,就可以開始下一步囉。

用 lsof | grep QTPlugin 就可以找到暫存檔的路徑,然後你就可以將它複製到桌面上。

然後用 QuickTime Player 打開它。

如果您用的是 Quicktime Pro, 那您可以繼續使用 Extract Tracks 功能。

然後選擇音軌。

把 Untitled 1 存到一個 Quicktime Movie 。

然後把它拖進去 iTunes 裡面。

順便選擇一下轉換的方法,例如 AAC 。要轉換成 iTunes 常用的格式的原因是 Quicktime Movie 格式不能插入封面 Artwork。

在這個 QuickTime Movie 上按右鍵按 Convert ...

轉好後就會出現一個 AAC 格式,這樣就可以收工了。

2004/11/25

MacOS X 下用 QuickTime Player 播放 AVI

作者: Mengjuei Hsieh

AVI 是一種媒體播放檔案的規格,在 AVI 裡面可以裝入各式不同編碼 (Codec) 的影像或是聲音的資料,目前很流行的各式編碼包括 DIVX 等等大部分都在 Windows 上先發展出來,因為 MacOS X 並不像 Windows 一樣有很多人使用,所以在 MacOS X 上播放 AVI 檔案有時候的確是有些難度,很多人會建議剛開始使用麥金塔的朋友安裝 VLC 或是 MPlayerOSX 來播放 QuickTime Player 不能播放的 AVI 檔案。不過像我這種快轉魔人,這幾個替代品大多快轉的功能都不盡理想,所以我還是喜歡用 Quicktime Player。還好,裝上一些軟體元件之後, Quicktime Player 就可以播放大部分的 AVI 了。
    以下就是些一定要裝的 Quicktime 軟體元件
  • DivX
  • 3ivX
  • QT AC3 Codec
  • 裝好以後大部分都會裝到 /Library/Quicktime/ 裡面,如果您像我一樣有潔癖的話,您可以把它移到您自己家目錄的 Library/Quicktime/ 。

以下的 Video Codec 在麥金塔上還是有問題

  • VL10
  • 目前 MPlayer 的 Real Video 10 codec 還不算可以用,更別說 VLC 了,如果有人可以用了,請告訴我。
  • WM9
  • 目前 WM9 Video Codec 在 ppc 平台上還找不到(雖然我們已經有麥金塔的 WM9 Player, 但是它卻不能播放 AVI!)。
  • XVID
  • 有時候 QuickTime player 不能播放 'XVID' codec ,這可能是因為檔案沒有傳完整或是有些編碼上的錯誤,使用 VLC 或是 MPlayerOSX 應該可以解決。

關於聲音部份

  • Ogg Vorbis
  • 這個元件可以播放 OGG 聲音。 我不記得有任何影片檔案有用到 OGG codec, 但是有了這個元件,iTunes 就可以加入 ogg 檔案了。
  • WMA
  • 目前 Quicktime 並沒有任何 WMA 元件可以用(或者有人可以自己寫一個..),但是如果您執意不要用 VLC 或是 MPlayerOSX,您還是可以用這個 DivXWMACConverter 把影片裡面的 WMA 轉換成 mp3 codec 但是不知怎麼轉換後影像品質變差了。這個大概是 mencoder 的問題。
另外一個提醒是,Quicktime Player 並不能直接使用各式流行的 subtitle 字幕檔案,請使用 VLC/MPlayerOSX 來外掛字幕。總而言之,一般觀賞 AVI 影片的功能我們都已經達成了,但是隨手準備 VLC 和 MPlayer 絕對是件好事。

遠端安裝 headless 的 Xserve G5

作者: Julian

小弟在這的第一篇 blog entry,抱歉落落長一大串,blogger 上找不到像在 MT 裡,more 的那個選項。


昨天運氣很好的,跟同公司買了 Xserve G5 的長官,借了兩台 Xserve G5 來上手體驗一下。一台是 Xserve G5,一台是 Cluster node
第一件想做的事就是。。。重裝吧!orz

可是問題來了,這兩台機器都沒有加買顯示卡,自然原來在 Powerbook 上,把 DVD/CD 擺進去重新從 DVD drive 重裝的經驗
完全不管用了。所以趁消防演習的時候,拿了 MacOSX Panther Server 的 Starter Guide K 了一下下。原以為會很麻煩要用一堆
command-line hacks,結果統統不用,Apple 都想好了怎麼讓你從遠端安裝「斷頭」(headless)的 Xserve G5,還有漂亮的 Aqua 安裝畫面。

事前準備:

1. 先把你的 Xserve 的 serial number 抄好,在機器後面,裝 PCI-X 的位置上。並準備好你的 Panther Server 序號。要注意的:準備個小手電筒吧,Xserve 後面的機器序號貼紙位置有點不好看到。

2. Xserve 上有兩個 Gbe,先插下面的那個(eth0)就好以免困擾,然後你要有一個 Admin machine 跟他在同一個 subnet 裡。

3. 另外找一台機器當 Admin machine,只要是裝 Panther 的就可以,不一定要是 Panther Server。不過要另外安裝 Panther Server
包裝裡的 'Admin Tool' CD。這樣就可以變成是 Admin machine。

安裝過程:

1. 在 Admin machine 安裝 Admin Tools,在 Panther Server box 裡有一片 Admin tools CD ,裝進去就對了。
1. Admin Tools

2. 把 Panther Server 安裝片放進 Xserve 裡,用光碟開機。

3. 在 Admin machine 上 Run Mac OS X Server Assistant 選 'Install software on the remote server'

4. 透過 Rendezvous,'Server Assistant' 就會找到在同一個 subnet 裡等著安裝的機器。
2. Rendezvous See Server

5. 然後就可以根據螢幕指示開始裝了。
3. Select volume

4. Start install

5. Install almost done

6. 換片繼續裝。
6. 2nd disk

7. 等裝到你的機器從 list 上消失,點選進到 'Setup a remote server'
7. Still in installation

8. Setup a remote server

8. 輸入 password,就是你機器序號的前八個字。然後選語言,然後就照螢幕說明設定了。
9. enter password

9. 當中要輸入 Panther server 的序號,而有時候 UI 會怪怪的不給你按 Continue,你可以按 Back 然後再回來就可以按 Continue 了。

10. 建立 Administrator Account,想搶 uid 501 的人,here is your chance... ;-)

11. 設定網路、機器名等。就照做吧!

12. 設定 Directory Usage,我是先選 Standalone server 。
10. dir service

13. 選取開啟那些 services。
11. service list

14. Apply,然後機器會重開。
12. apply

15. 等機器重開完,剩下的就可以用 Admin Tools 裡的 Server Admin 進去管機器了。

16. ps. 把機器的 Apple Remote Desktop 開起來,連過去做一些事比較方便。

大概就這樣,有問題的話看看附的 pdf document 裡大多都有說到,只差沒有 screenshots 一步一步教你做而已。

2004/11/23

Disctop

作者: zonble

Disctop

說真的,Disctop 這個工具實在是非常詭異,而且基本上根本沒有什麼實質上的用處,不過,如果你已經有了 iMac G5 的話,Disctop 或許可以滿足您炫耀的快感吧。

Disctop 的唯一用途是,當您插入光碟的時候,就會自動從桌面的畫面邊緣,自動產生「推入」ㄧ張光碟的效果,然後就如上面圖示,在您的桌面上,出現ㄧ張與真正的光碟片大小的光碟片影像。這個程式還會很聰明的判斷輸入的是 CD 還是 DVD ,然後,在片子上打上是 CD 還是 DVD 字樣。

這個工具為什麼對 iMac G5 的使用者比較有用呢?喔,因為 iMac G5 的設計是螢幕與主機合ㄧ,看起來只有ㄧ個液晶螢幕大小,其實卻是ㄧ台主機,而 iMac G5 的吸入式光碟機,剛好位在螢幕的右側,所以,只要搭配 Disctop,當你把光碟放進 iMac G5 時,就會有ㄧ種具象化的,從螢幕右側把光碟推入到桌面的神奇效果。

在偏好設定當中,您可以挑選您所使用的 Mac 機種,不過,挑選 Mac 機種唯一的意義,就是光碟在桌面上的位置,還有推入效果的方向這樣的差別罷了。

好了。為什麼叫介紹這麼沒有用處的程式呢?因為這個程式的無用的程度,實在是大到讓人匪夷所思啊!


(mjhsieh): 以下為違反 CC 規定惡意轉載本文章的惡意網站
1. http://www.elesson.com.cn/modules/news/article.php?storyid=207

2004/11/21

Firefox 1.0 中文版釋出

作者: zonble



Firefox自由軟體的瀏覽器軟體 Mozilla Firefox 在本月份九日就正式釋出了 1.0 版,而在台灣社群的努力下,今天也終於推出了中文版的 Firefox 1.0,除了 Windows、Linux 等平台上的版本之外,也包括在 MacOS X 上可以執行的版本。您可以在Mozilla中文化網站上,下載中文 Firefox 1.0。

從昨天開始,台灣的 Firefox 也開始一系列的 Firefox 推廣周活動,包括今天下午在台大舉辦的研討會活動,以及晚間在台大體育館迴廊咖啡廳,舉辦 Firefox 1.0 釋出慶祝晚會。

Firefox 這套瀏覽器最大的特點,就是對於標準的 XHML 與 HTML 語法有著完整的支援,對於 Windows 平台的使用者來說,微軟內建的瀏覽器 Internet Explorer 許久沒有更新,加上在安全性上有著許多問題,而使用 Firefox 的話,在安全性方面較少。而 Firefox 也可以透過許多的延伸套件(extension)補強瀏覽器本身的功能,特別是如 Web Designer 這個套件,可以快速切換網頁使用的 CSS 樣式,用框線特別標出網頁的版面區塊,另外也有 JavaScript 網頁語言的偵錯(debug)工具,對於從事網頁設計者而言,都是對工作幫助許多的利器。

不過,對於 MacOS X 的使用者而言,Firefox 以及 Mozilla 等瀏覽器,在使用中文時,往往有著某些字無法顯示的問題,而中文的粗體字,也是直接在字體外框上直接描粗,其實不是相當美觀。但是,蘋果內建的瀏覽器 Safari ,對於某些 JavaScript 支援有限,在瀏覽一些網站時,也有不方便之處,所以,在使用 Safari 之外,還是建議您多安裝一套如 Firefox 這樣的瀏覽器。