NuForce Icon Mobile 與 Foobar2000/ASIO

我把 NuForce Icon Mobile 買回家後,曾接上我的桌機做為 USB 音效裝置 (C-Media USB Headphone Set)。一開始試著當前級,直入綜擴。但是輸出似乎不夠, NuForce Icon Mobile 的音量轉到最大了,喇叭才發出勉強可聽的音量。接著採類比輸出(line out)接上綜擴,音量足夠了。但解析力聽來比電光石火 Spitfire 差了些。

NuForce Icon Mobile 在我的 XP/Foobar2000 環境下,輸出設備不能用 KS 輸出。但幸好搭配 ASIO4ALL driver 後可以用 ASIO 輸出,效果明顯比 DirectSound 輸出好。

Icon Mobile 搭配 ASIO4ALL driver 時,有些設定的注意事項。

  • ASIO Buffer Size 最好保持在 512 Samples 或以上。 0 一定爆音。256 時,有些樂段會爆音。512才穩定。
  • 關閉 Hardware Buffer。一開就爆音。
  • 關閉 Always Resample 44.1 to 48。無此必要。
  • Latency Compensation: In: 0 Samples; Out: 0 Samples. 音質微調。

最後一點,NuForce Icon Mobile 使用 Foobar2000/ASIO 輸出時,最好是專心聆聽音樂。如果開啟其他程式,例如瀏覽器看網頁,都有可能影嚮音樂播放,甚至爆音。這似乎是 USB 音效裝置的通病。我的 TerraTec Xfire 1723 配合 ASIO 輸出時,就不會被其他動作影響。

Ajax and Blocking IO - To Resolve Polling Anti-pattern

在 Web 應用上,當瀏覽器向伺服端索取資料,而資料尚未存在或尚未被輸入時,我們通常令伺服端回傳代表目前無資料的訊息,並告知使用者稍候再讀取。當 JavaScript 被帶入 Web 應用程式開發領域後,我們在客戶端設計上,便運用 JavaScript 在間隔一段時間後,主動地向伺服端查詢是否有資料可以讀取。由於這個動作是放在一個無窮迴圈中,令它反覆地向伺服端執行查詢動作,故而我們將之稱為「輪詢」(polling)。

然而這種普遍地解法,實際上是一種反模式(Anti-pattern),也就是把反面的例子當成正確的做法(當我正在思考該如何表達這種普遍地錯誤形式時,我剛好瞄到桌上的《Java AntiPattern》, Anti-pattern 正是貼切描述這種情形的詞語)。在早期,瀏覽器的功能還很單純時,我們沒有別的選擇,只能使用這種輪詢式的解法。但隨著瀏覽器的功能強化與 Ajax 技術的普及,繼續使用輪詢式解法,就是反模式。正確地做法是,我們要在 Ajax 這種非同步設計模式中,導入同步 I/O 行為。在本文中,將說明如何運用 Blocking IO 解決 Ajax 設計中的輪詢反模式。

軟體開發,在雲一方

IBM 宣佈將把軟體開發與測試服務延伸到雲之彼端。快速導讀請看《A quick look at the IBM Smart Business Development and Test on the IBM Cloud》。

軟體開發的雲端服務,並非教我們如何設計與開發雲端服務項目。而是在雲之彼端為開發者提供軟體開發過程中所需的資源。軟體開發最基本的資源,是源碼的儲放與版本控制,還有規格文件的管理(wiki),這兩項就是源碼代管服務。例如 SourceForge, Google Code, GitHub 皆屬此類。 IBM 的軟體開發與測試的雲端服務內容,除了最基本的源碼代管服務,其最大的優點,在於為開發者提供解決 軟體開發之建置風險 的資源。

2010高雄國際Hi-End音響大展觀後感

數位訊源成主流,誰還要做CD-Player?

在會場,我聽到許多廠商掛在嘴上說「現在都做數位訊源播放器了,誰還要做CD-Player?」。講白一點,就是說現在都直接用個人電腦、iPod 播音樂了。新推出的播放器上,USB 端子已經成為標準配置,加上 iPod 插座更是主流趨勢。

歐盟和 Google 先後以政治手段解決了 IE6

上個月,我在抱怨內政部自然人憑證系統僅支援IE瀏覽器時,主張要透過政治手段解決這個問題。三月初,歐盟和 Google 就先後以政治手段「解決」了 IE6。

歐盟
Google
標準化

當我們逐漸把觀看網頁的瀏覽器最低版本提高時,我們並不是在要求設計者與使用者使用那些瀏覽器的獨特功能。相反地,我們希望讓設計者與使用者享受到標準化的好處。因為愈是新版本的瀏覽器,它們對網頁標準規範的支援度就愈完善。儘管那些網頁標準規範已經發佈5年到10年之久了,例如 HTML4.1, XHTML, CSS 1 ~ 3, DOM level 1 ~ 3 ,但瀏覽器的實現腳步則是近一、兩年才逐漸趕上規範內容。造成瀏覽器實現進度落後的罪魁禍首,正是 IE6。現在的趨勢對使用者與設計者而言都是好事。設計者可以用一致地表達方式設計網頁,而使用者可以看到一致地呈現內容。

但是我國從政府機到學術圈,大多數人都未注意到這些問題。因此我國以政治手段解決 IE6 的時候,看來還遙遙無期。

Write a D-Bus service by Ruby

Install Ruby DBus

前往 ruby-dbus ,下載壓縮包 (tarball) 並解壓。

詳細安裝方式請閱讀壓縮包內的 README ,基本上只需要執行下列三個動作:

  1. ruby setup.rb config
  2. ruby setup.rb setup
  3. sudo ruby setup.rb install

Test:


irb> require 'dbus'
true

Ruby CronLine

Cron 是 Unix 平台上的工作排程服務,它有一套特定的時間記述方式,俗稱 crontab (See crontab(5))。例如 * 30 5,12,17 * * * 表示每逢 5點30分、12點30分與17點30分時,執行工作。CronLine 則是使用 Ruby 所實作的一個用於解析 crontab 的類別。它的源碼來自於 Rufus::Scheduler

每日建置系統簡化專案交接風險

每日建置系統簡化專案交接風險

日前有一位同事要離職,而他負責的案子指派給我接手維護。他負責的那件案子,我之前完全沒有接觸。原本以為專案交接會是一項很麻煩的事,但整個過程出乎意料地簡單,大概只花了不到30分鐘就交接完畢了。為什麼我們那麼快就能交接呢?原因就在於每日建置系統。

去年底完成一件大案子後,我們公司就指示我建立一套每日建置機制 (軟體開發之建置風險的故事 )。在每日建置系統上,只安裝了編譯、建置與安裝的最基本環境,其他 library 一律不裝。並要求所有專案都要實作一套可以在命令列下完成 init, build, package, install, test 動作的建置程序。視專案內容,這套建置程序可能是一份 build.xml(ant), 也可能是一份 Makefile ,或是更基礎的 shell script。重點是,這套建置程序要能交由建置系統自動執行並完成上述所有動作,整個過程不可以有人工輸入的部份。此外,我們定期會還原系統內容,以確保一個乾淨的建置環境。

專案交接時,最常碰到的情形就是接手者無法複製出原負責人的開發環境,以致於專案連建置執行都做不到,也甭提修改維護了。但是每日建置系統讓這個問題消失了。這項專案的交接工作,很幸運地在每日建置系統建立後才發生,因此大幅地減少交接工作的內容。當一個專案的內容,可以在每日建置系統上自動建置時,同時意味著別人也可以在簽出該專案的內容後,直接在命令列下建立起專案的開發環境。即使什麼文件都沒有,也可以接續專案的維護工作。至少,我可以用文字編輯器 (gedit, notepad) 開始修改程式。至少,我還有命令列可以跑 ant, make 。剩下的程式架構說明,都已經按照 Javadoc 形式寫著程式碼。剩下的問題,就是接手人員的功力高低了。

Publish File to Trac wiki

This tool which written by Ruby language publish file to Trac wiki page. It will read the file content then publish to Trac wiki.

Many people use Trac to trace the software projects. When project execution, we will renew the project's wiki page frequently. However, many contents often are written in other documents. For example the API specification, Java will write by the Javadoc form in the .java source code, Ruby has RDoc, PHP has PHPDoc. The update log will write in the Subversion commit message. “The source code is the document”, these methods are quite universal. Because the document content had already existed, we most effective processing mode is with publish tool to read the file and to publish to the wiki page. Remembers, Copy and Paste is not the job which a professional programmer should do.

我與小黑(ThinkPad X200s)之旋轉螢幕

ThinkPad X200s 是12吋寬螢幕 (1280x800),以正常方向看電子書時,略顯狹窄。如果旋轉90度的話,就可以直立閱讀電子書,剛好可以全頁顯示16開到32開(A5~A6)的書籍頁面。

基本上,螢幕旋轉是顯示器本身就有的功能,不成問題。但是旋轉後的鍵盤方向鍵與小紅點方向並不會跟著轉向,在操作上就會礙手礙腳了。 X200s 的螢幕和鍵盤是一體的,旋轉螢幕後,鍵盤與小紅點的配置方向也會跟著旋轉。但是它們的操作軸線卻沒變,所以我們在操作時就會碰到手眼不協調的狀況。除非我們像金庸筆下的周伯通,可以一心二用、雙手互搏,心中想著游標要向上時,左手可以向右或向左推小紅點。

跨網站載入與執行 JavaScript 的方式

昨天在公司的小組會議中,我和同事們討論到 JavaScript 呼叫本地桌面程序的問題,提到關於 JavaScript 跨網站執行的關卡。近年來,隨著 jQuery 等 JavaScript 框架的普及,降低了 Ajax 程式的開發門檻,但也同時讓人忽略了一些更為基礎的知識。由於 jQuery 等框架主要利用 XmlHttpRequest 實現 Ajax 能力,但 XmlHttpRequest 在使用時也受限於瀏覽器的相同網域策略 (The Same Domain Policy),所以不允許載入不同網域的文件。但是,要解決這個關卡其實只需要應用到基本的 Ajax 技巧。

所謂 JavaScript 跨網站執行的關卡只作用於 XmlHttpRequest 個體上。在 Ajax 中,我們還有很多非同步機制可以載入與執行來自不同網域的 JavaScript 程式。這些技巧, Google 在用,hackers 也很常用。

我與小黑(ThinkPad X200s)之小紅點

ThinkPad 系列筆記型電腦最大的特色就是鍵盤上的中原一點紅,俗稱小紅點的 TrackPoint 指標裝置。除了不能做到多點觸控之外,其他方面它能做得比觸控板更好。例如拍一下小紅點等於滑鼠鍵點擊一次、模擬中鍵捲動。只是在 Ubuntu 上需要做一些校調,才能使用這些功能。

關於小紅點的操作方式,可以參考《(原創) 如何使用ThinkPad的TrackPoint(小紅點)?》。只是該篇文章講的是 Windows 下如何啟用拍擊小紅點與中鍵捲動功能。

2010-09-03: 更新 Ubuntu 10.04 相關內容。

我與小黑(ThinkPad X200s)

我在過年前買了生平第一台筆記型電腦。打從一開始,我就不打算使用 Windows 作業系統,所以我特地只選擇不附OS的機種來看。而我的第二個選擇偏好是,不要觸控板。我一點都不喜歡用觸控板控制指標,又不想要多帶一個滑鼠,在這個條件下,我唯一的選擇就是 TrackPoint (小紅點),它可以讓我的雙手完全不用離開鍵盤,就能完成所有操作。雖然不附OS的機種很少,又要滿足第二個偏好更難,但非常幸運地,在那極少數可選擇的機種中,偏偏就有滿足我偏好的機種,那就是 ThinkPad X200s 。俗稱小黑。

Ubuntu NetworkManager 使用要項

Linux 延續 Unix 風格,傳統上使用 /etc/network/interfaces(本文以 network/interfaces 簡稱之) 管理網路介面設定。不論那種 Linux 散佈版本都支援這種設定方式, LPI 檢定也是考這一招。而 Ubuntu 近來在桌面環境下引進了另一套網路介面設定管理機制,即 NetworkManager 。本文旨在說明 NetworkManager 的使用要項。

內政部自然人憑證系統的安全問題

我今天看到洪朝貴教授的 大學不敢談的資訊安全問題 ,文中提到大學線上簽核系統,因為使用了 ActiveX 的控制項,以至於自我侷限於 IE6、IE7 等舊版瀏覽器才可利用。當 Google 被駭事件中,許多駭客利用 IE 的重大安全漏洞侵入許多系統之際,這些自我侷限的線上簽核系統,也正把全校師生的隱私暴露在駭客的眼前。

然而大學資訊系統自甘成為駭客犬馬還不是最危險的。我昨天才在 如何在Firefox上使用自然人憑證系統 中說內部政的自然人憑證系統也是限用 ActiveX plugin ,所以也同樣把自己暴露在IE漏洞之中。內政部自然人憑證系統的牽連影響範圍之廣,遠非小小的大學資訊系統所能相比的。當內政部自然人憑證系統這麼大的系統都在幫駭客扶植入侵民眾電腦的跳板(IE瀏覽器)時,小小的大學資訊系統又算得了什麼呢?

再看到 iThome 的報導 《臺灣已有企業遭受IE漏洞攻擊》提到: 中華電信資安監控中心則發現,臺灣身處複雜的政治環境中,早就是許多駭客針對性攻擊的鎖定對象,對於此次來自中國的攻擊,臺灣使用者並無法倖免。 現在,除了家境貧困只能用 Ubuntu 免費系統的理由之外,我們又多了一個理由寫信給馬總統要求修改內政部自然人憑證系統,那就是「防止中國駭客侵害台灣人民的隱私」 。各位鄉親,不論你是藍是綠,都要快點寫信了,這就是愛台灣啊。

附帶一提,大多數技術人對隱私權這種政治議題向來是不當一回事的,見雲端運算與自由主義的隱憂

如何在Firefox上使用自然人憑證系統?寫信給馬總統最快

公司前一陣子部署在公務機關的 thin-client 系統,有使用者反應不能用自然人憑證晶片讀卡機。因為我們部署的系統是用 Ubuntu 桌面加上 Firefox 瀏覽器。而內政部的自然人憑證系統晶片讀卡機,要安裝 ActiveX plugin 才能使用。基本上, ActiveX 只有微軟自家的 IE 與 Windows 系統才能使用。於是公司就在討論 Firefox 要怎麼解決這個問題。

然而,技術人討論問題時的思考慣性就是只在技術手段上打轉。但是那並不是解決這個問題的最佳途徑。解決資訊系統問題的手段,不完全是靠技術手段,有時候也需要政治手段。說句很正經的玩笑話,要讓政府單位的自然人憑證系統支援非 IE 瀏覽器最快的手段,是寫信給馬總統,就說我家在僻遠鄉下,家境很窮,電腦用二手的,作業系統只能裝UBUNTU,可是這樣就不能用政府機關的自然人憑證系統使用電子化服務。

內政部的自然人憑證系統只有 IE 能用這件事,對於資訊下鄉、消弭數位落差與資訊鴻溝,以及推動全面電子化政府的政策,都是種諷刺。這幾天又看到行政院研考會放話說電子化政府的下一階段要強化手機平台的支援,讓民眾透過手機完成現在電腦上相關電子化政府的服務。又說要擴大「資訊設備借用服務」,讓更多偏鄉居民使用網路與政府的電子化服務。當那些使用手機或是安裝非 Windows 系統的桌面環境使用者,連上政府網站,結果被系統說要安裝 IE 才能使用電子化服務時,不知會做何感想。

How to write a program ran in GDM screen

我現在需要撰寫一個 GTK 程式,它必須可以執行在 GDM 的登入畫面處。並且可以在我需要時顯示出來,在我不需要時隱藏。 我規劃透過 signal 與該 GTK 程式互動,控制它的顯示與隱藏行為。

要達成上述目標,最大的麻煩在於該把程式的執行指令放在何處?才可以讓它在 GDM 登入畫面處執行,又該如何在 GDM 完成登入工作後被關閉。

不太 mobile 的 Moblin

我因為工作關係,拿到了一台安裝 Moblin 系統的平板電腦樣機。試用了幾天後,我的感覺是,這 Moblin 其實不太 moblie...

Moblin 是 Intel 推出的作業系統,應用於其 Atom 處理器架構,例如小筆電、netbook、手持式設備(MID)等。官方網站位於 moblin.org。Intel 推出 Moblin 的目的,是基於市場行銷考量,他們希望吸引更多的廠商推出基於 Atom 架構的應用設備。Moblin 最早是 Intel 與 Ubuntu 合作開發,後來因為 Intel 堅持 Moblin 只能運行於 Atom 架構上,這點與 Ubuntu 的宗旨不合,所以兩者分道揚鏢。Ubuntu 自己推出 Ubuntu Netbook Remix (UNR)。Intel 則改用 Fedora 為核心,繼續開發 Moblin 。

VirtualBox有多種授權區分,企業使用並未免費

上週才剛說「微軟」這麼大的軟體公司也會發生源碼授權管理上的疏失。結果這週就發現公司內部也差點踩到授權地雷。

公司昨天的站立會議中,系統工程人員說最近將部署到某客戶的系統內的 VirtualBox 出了問題,要如何如何?我聽到一半就覺得不對筋。因為他說的 VirtualBox 版本是 3.x 版,然而這個版本的 VirtualBox 用於企業用途上必須購買授權。

VirtualBox 隨版本不同而採用不同的授權證(Open Source VirtualBox and other editions)。VirtualBox 2.x 採用 GPL 授權證,這表示不限用途皆可免費使用。在 Ubuntu 套件中的 VirtualBox-OSE 就是此版。但是 VirtualBox 3.x 卻分兩種授權,一種是個人與評估用途免費的「VirtualBox Personal Use and Evaluation License」,另一種是用於企業業務的「Sun VirtualBox Perpetual License」。

我們部署到客戶的系統,自然是要用於支援客戶的業務。故而若安裝 VirtualBox 3.x 版,就必須向 Sun 購買 VirtualBox Perpetual License 才能合法使用。由於我們或客戶皆未購買此授權,故我馬上向公司反應這一點,要改裝 VirtualBox-OSE 才行。

話剛說完沒多久,我就在 iThome 上看到一篇介紹 VirtualBox 3.x 的技術報導,該文內容正好就寫著「建議售價:免費」的字眼。這是錯誤訊息。資訊人員不可不察。

IFRS會計制度將促使企業更新ERP,POS等資訊系統

iThome 報導《CIO趕快醒醒吧!IFRS要來了》,因為很多人以為IFRS轉換只是一個單純的會計課題:只要把一些試算表攤出來運算就可以完成。但KPMG的經驗發現,轉換當中需要大規模的IT系統改變、商業流程改變與人員的重新訓練。

軟體程式追隨業務流程」。隨著企業的資訊化作業程度提度,有愈來愈多的企業,將他們的商業流程建立在資訊軟體之中。當 IFRS 將改變企業內部的商業流程時,勢必要更新資訊軟體內部的程式流程。所以 IT 部門在 IFRS 的轉換過程中,也是相當重要的參與者。

報導中提到「IFRS將是千年蟲之後,IT部門最大的挑戰」。儘管如此,若你問我資訊人員有沒有應付 IFRS 的標準做法的話?我會回答「沒有」。 IFRS 是一項會計制度的變革,而不是一項軟體技術的變革,它改變的是企業的商業流程。由於每個企業都有不同的商業流程,因此我們難以期望資訊業界會出現應付 IFRS 的標準做法。但從 IFRS 是會計制度這一點,倒是可以看出哪些企業用的商業軟體將會被捲入 IFRS 的轉換過程。大到 ERP, CRM ;小到進銷存系統(POS)。都將配合 IFRS 修改。ERP 很貴,大多數中小企業沒有使用。但是 POS 的用戶就多了。MIS 人員可要做好心理準備了。