libv4l2 error turning on stream~ No space left on device

當開啟兩隻以上的 USB Video Camera (WebCam) 時,有時會發生 "No space left on device" 的錯誤。

使用 guvcview 即可再現錯誤情境。步驟如下:

  1. 準備兩隻 WebCam 。
  2. 執行 guvcview -d /dev/video0 -f yuyv -s 1280x720 。開啟一隻 WebCam ,保持執行狀態。
  3. 接著執行 guvcview -d /dev/video1 -f yuyv -s 1280x720 。開啟第二隻 WebCam 。
  4. 此時第二個執行的 guvcview 不會顯示影像。而終端機上會印出下列錯誤訊息:

Debian 如何選擇登入桌面後的語系環境,與 AccountsService 有關

我安裝 Linux 桌面系統的習慣是安裝時系統預設使用英文語系。等到 GDM 登入時,才選擇中文語系環境。 不過這個使用習慣在我前陣子升級到 Debian 7 時,差點破功。因為 GDM3 的登入畫面竟然沒有語系選單了。 同樣的狀況也出現在採用 LigthDM 的桌面系統,例如 Ubuntu 12 。

原因與系統改用 AccountsService 管理使用者資訊有關。本文說明我的解決方式。 gdm3 switch language 。

Grub2 設定以 Linux LiveCD 的 ISO 檔啟動系統

對 Linux 的使用者來說,一般會使用 CloneZilla 備份與還原硬碟資料。而 CloneZilla 的承載媒體不外是 CD 或 USB 隨身碟。也因此,我們常常碰到系統出了問題需要用 CloneZilla 還原資料,卻又突然忘了 CloneZilla CD 或 USB 隨身碟放在哪的情形?此外,像是沒有光碟機可用的筆記型電腦,則非常需要不用光碟機的啟動途徑。

必較常見的作法是在硬碟中分出一個獨立的小分割區,然後將 CloneZilla USB 隨身碟版本的檔案內容,整個複製到硬碟的小分割區上。再透過 Grub 的設定,將 CloneZilla 加入 Grub 的開機啟動項目中。如此一來,就不必另外準備一片 CloneZilla CD 或 USB 隨身碟了。只要系統不是整顆硬碟報銷,那就隨時都可以啟動 CloneZilla 備份與還原硬碟上的主系統內容。但缺點是會浪費一個小分割區。不過 Grub2 支援了 CD ISO 的啟動形式。利用這個功能,我們可以讓 grub2 以硬碟內的 CloneZilla live ISO 檔啟動 CloneZilla ,省下一個安裝 CloneZilla 的小分割區。

最近更新日期: 2014-10-2 。簡化 CloneZilla 參數。加上 Ubuntu 12.04 參數。

測試虛擬化,軟體開發業界的 TDD 趨向

昨天,公司同事問了一些關於假資料(dummy data)的處理方式。先提示一下,這玩意在軟體開發業界的專業用語叫 mockmocking 。使用搜尋引擎時,用 mock 或 mocking 為關鍵字很快就能找到大量相關資訊。

我向同事說了一些簡單的實作方式。同時也提到去年 IBM 所推出的運作環境虛擬化工具 Green Hat 。無獨有偶,今天我在 InfoQ 的新聞上,又看到了另一家公司推出的類似產品。 顯示這種將運作環境或服務整個虛擬化、模擬化的測試驅動開發方式(TDD),在軟體開發業界正逐漸普及。

我的 TEAC UD-H01 聽感評論

前些日子,我買了 TEAC UD-H01 這台 DAC ,計劃換掉我用了超過五年的電光石火噴火龍 DAC 。比較著聽了一個月,寫下這篇評論。

我是用個人電腦玩數位流音響,電腦就是我的訊源。其他設備是:

  • 純數位輸出音效卡,和 X-Fire 1723 同規格,但有同軸輸出端子和 BNC 輸出端子。
  • Firestone SPITFIRE 電光石火 噴火龍 (第一代,無USB端子)。
  • 喇叭: 雅瑟 S520 。
  • 耳機: Grado S225 。
  • 喇叭擴大機: 王記 A-2150 (綜擴)。
  • 耳機擴大機: 普騰 PROTON 550 (也是綜擴)。
  • 光纖線和同軸線都是 AXE 牌,型號不記得,價位約略是在500元那一帶。

核四議題雜記

政治零分

某個廢核團體發言人說: 續建核四不需要公投,只要人民(註:我們廢核團體)認為是對的事,政府就該負責任去做。而不是把責任丟給人民。

我評: 去你的。這就叫民主政治。還有,我最討厭被別人代表了,不要動不動就講「人民、社會」什麼的。不要用複數概念混淆主體。

我也可以說我認為建核四是對的,所以政府要負責任去建好,也不必公投。我的說法完全符合他們那種「我認為是對的,政府就該做」的政治想法。

AKB48 戀愛禁止條例正反兩論與峯岸南事件

我昨天在 k島的 AKB0048 next stage 最終回的實況串中回了一段話, 談的是我眼中的 AKB48 戀愛禁止條例和「峯岸南」的事。 今天想想還有些內容不是說的很清楚,所以搬回自己的部落格再寫一次。

戀愛禁止正反兩論

先說說戀愛禁止條例的由來。1990年代時,日本有一段很長時間的女性偶像冰河期。原因就是前期女偶像私下交際的醜聞不斷,到了早安少女組才又救起這個市場。所以「禁止戀愛」成了現在日本所有女性偶像團隊的隱性規則。而 AKB48 在 2010 年的 Team A 第 5 劇場公演中,更直接以「恋愛禁止条例」作為公演標題。在娛樂界中,普遍認為這是 AKB48 將這條隱性規則明文化的表現。

2013高雄國際H-End音響大展後記

今年3/14 ~ 3/17,我慣例去參觀高雄國際音響展。雖然買不起,但總要讓耳朵去聽聽高級音響的表現,才不會讓耳朵對音樂與音響的欣賞水準下降。

今年的參展廠商似乎比去年要少。 我在4樓陽台抽煙休息時,聽到兩位業內人士在閒聊的內容透露,似乎是因為今年有幾家代理商大搬風,為了抵制或是業務理由就不參展了。

ffmpeg/avconv 轉檔與影片連接範例

ffmpeg/avconv 常用參數

2014-01-28更新: 我最近更新了 Windows 上使用的轉檔工具,改用 avconv 。avconv 是 ffmpeg 的後繼工具,絕大部份的參數相同。本文所用到的參數,基本上都是兩者通用。 另外也修正了一些新、舊版本 ffmpeg 參數位置的變化。

通用
  • -codecs : 查詢目前提供哪些編碼器、解碼器。你必須用這個參數查看你安裝的 ffmpeg/avconv 可用的編碼器與解碼器項目。不是每個版本都提供相同的編碼器與解碼器。
  • -i 輸入源 : 此參數通常必須放在第一位(參數順序有影響),每一個輸入源必須配合一個 -i 。
  • -codec copy : 不改變編碼器,直接複製視訊與音訊。
  • -ss time_off : start time offset. 從開頭算起第幾秒開始處理。也可以用 hh:mm:ss[.ss] 的格式,例如: 01:30:10.30 表示從1小時30分10.30秒處開始。
  • -t duration : duration seconds of video/audio. 視訊/音訊秒數。也可以用 hh:mm:ss[.ss] 的格式,例如: 00:00:50.50 表示取 50.5 秒長度。

NHK 震災から2年 明日へコンサート AKB48 演出項目

昨天看了「NHK 震災から2年 明日へコンサート」(NHK 震災2周年 通往明日演唱會,3/9)。 這場演唱會是在 NHK Hall ,有點迷你紅白的感覺。 傑尼斯成員擔下不少內容,像 SMAP 兩次出場時,就是連唱數曲。 不過我主要看的是 AKB48 XD

2012京都賞楓,第八日:住吉大社

旅遊日期:2012 年 11 月 24 日。

第八天行程:大阪 肥後橋(地下鉄四橋線) -> 地下鉄なんば駅 -> 南海電鉄 住吉大社駅 -> 住吉大社 -> 関西空港 -> 桃園機場 。

這天是賞楓旅程的最後一天。由於我們返台搭乘的班機時間是在下午,上午還有半天的時間可逛。一般可以選擇去関西空港附近的臨空Outlet (Rinku Premium Outlet),或者在難波駅附近的日本橋、黑門市場再逛一下。不過我們這次選擇去參觀南海電鉄沿線的住吉大社。 原本的如意算盤是先逛完住吉大社再去臨空Outlet,不過最後時間實在不夠。

2012京都賞楓,第七日:興福寺、春日大社、奈良公園、東大寺、黑門市場

旅遊日期:2012 年 11 月 23 日。

第七天行程:大阪 肥後橋(地下鉄四橋線) -> 地下鉄なんば駅、大阪難波駅 -> 近鉄奈良線 -> 近鉄奈良駅 -> 興福寺 -> 春日大社 -> 奈良公園 -> 東大寺 -> 大阪 難波 -> 日本橋 -> 黑門市場 -> AKB48 Cafe & Shop 難波店。

本日全程使用関西周遊卡三日券。但是要注意,在奈良境內的巴士,不適用関西周遊卡。從近鉄奈良駅到春日大社這一段路,步行距離約1.5公里。

PHP框架 - CommonGateway 第二步 - JSON 的處理與資料上傳

本文接續「CommonGateway 初步」的內容,說明 CommonGateway 如何處理 JSON 文件與資料上傳。

HTTP協定關於要求與提交文件型態的規範

HTTP協定定義了兩項關於文件型態的標頭(header),一為 Accept,二為 Content-Type

在傳統的 REST-like 應用中,這兩個標頭的原始定義並沒有被廣泛採用。大多數程式人員都是透過自定的額外參數來決定服務端該回應什麼文件型態給客戶端。 但在 RESTful 服務的設計場合中,文件型態的交換方式則回歸到這兩個標頭的原始定義了。 所以程式人員必須先分清楚這兩個標頭的使用場合。

2012京都賞楓,第五日:天龍寺、寶筐院、嵯峨野トロッコ列車、常寂光寺、二尊院、大覺寺

旅遊日期:2012 年 11 月 21 日。

第五天行程:四条河原町 -> 天龍寺 -> 寶筐院 -> 嵯峨野觀光電車(嵯峨野トロッコ列車) -> 常寂光寺 -> 二尊院 -> 大覺寺。

今天是電車與腳踏車行程。巴士一日券不適用嵐山地區。関西周遊卡不能搭嵯峨野觀光電車(這屬於JR系統),而嵐電地面電車來回也只需400円。所以今天沒有使用任何優惠票券,主要交通費用是JR電車費790円和腳踏車租金1000円。

PHP框架 - CommonGateway 初步

CommonGateway Framework (以下簡稱 CG)。概念請見「CommonGateway 介紹」。源碼託管於 github : common-gateway-framework ,主要程式碼只有一個 index.php 。

本文範例之完整內容請見「demo/api-first-step」。以下將逐步說明如何使用 CG 設計你的第一個 RESTful API 。

CG (也就是那個 index.php) 放在網頁根目錄下,然後以瀏覽器或你慣用的 REST client 工具開啟網頁。本文範例的網頁根目錄是 /home/rock/public/cg ,瀏覽器開啟的 URL 是 http://localhost/cg/index.php 。開啟後,會看到下列的提示內容:

index.php/{control_name}/{object_id}.

You may put your controller class in controllers/{class_name}.php.

PHP框架 - CommonGateway 介紹

CommanGateway Framework 是一個極小化的 PHP Web 框架。它的主程式就只有一個檔案 - index.php 。 我原先甚至不將它稱為 framework ,而只是一個導入器。但解釋麻煩,還是按一般認知,當它是框架吧。

CommonGateway 主要設計目的是用於設計 RESTful API 或是 Single page web app 。 它按照 MVC 的設計模式,將 Web 應用服務分成三個部份,即資料模型(Model)、流程控制項(Controller)與視圖(View)。 CommonGateway 替設計人員處理控制項與視圖工作。 至於資料模型則不是 CommonGateway 的責任。資料模型由設計人員透過其偏好的資料庫框架處理。

CommonGateway 為設計人員完成下列工作:

  • 根據 URL 路徑(PATH_INFO) 選擇 Web 應用服務的控制項。 正是這「依路徑選擇目標」的行為特徵,而且又是 Common Gateway Interface (CGI) 的實作項目,故我將此項目命名為 CommonGateway 。
  • 它會將客戶端送出的文件資料,預先處理成關聯式陣列結構。 除了傳統的 Query string 與 Form data ,它也能處理 HTTP PUT Method 會送出的資料。它也支援 JSON 型態的資料。
  • 它會根據 RESTful 的原則,調用對應的控制項方法。
  • 它會根據控制項方法的回傳結果與客戶端期望的文件回應型態,處理對應的視圖樣板。
  • 它會儘量透過外部注入的方式,將其他資源放入控制項 (即 IoC 模式),減少對原有程式碼的侵入性。