調整留言板(disqus)的使用內容

由於留言板的使用率非常低,且 disqus 系統會拖長網頁載入時間,所以我調整了我的留言板機制。

現在大部份文章都不會看到留言板了。具共同主題或同系列的文章,則會共用同一主題的留言板。

少量的意見回饋與交流,使用 twitter 和 facebook 足以。

台灣 119 求救簡訊 APP 使用說明與開發筆記

「台灣 119 求救簡訊」是整合了 GPS 定位與 SMS 文字簡訊功能的應用程式。當使用者遇難需要向 119 消防局報案求助時,這個應用程式可以利用 SMS 文字簡訊送出求救訊息和 GPS 位置,讓消防局更快掌握受困者的地點。

此類工具對經常從事戶外活動的人頗有用處,各地方政府亦有發行類似的 App 。例如新聞「定位神準!119APP救出摸黑的登山客」。但受限於我國政府單位的短淺目光,僅在 Android 和 iOS 的軟體市集上發布此類 App 。

我用 HTML5 和 JavaScript 設計了「台灣 119 求救簡訊」這個純網頁版本的 Webapp 。此外,受益於微軟在 Windows 10 時增加了 UWP (Universal Windows Platform, 通用 Windows 平台) 的應用程式模式,同樣的源碼可以直接包裝成 UWP App 供 Windows 安裝。

Touch IME HTML5 輸入法引擎使用手冊

Touch 輸入法 Copyright (C) 2013 遊手好閒的石頭成 <shirock.tw@gmail.com>

Touch IME is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program.  If not, see
<https://www.gnu.org/licenses/lgpl-3.0-standalone.html>.

You should see https://rocksources.googlecode.com/ to get more information about Touch IME.

LGPLv3

List device path and product name of USB video devices

UVC (USB video class - wikipedia) 泛指使用 USB 連接介面的影像產品。一般使用者最熟悉的 UVC 設備就是 WebCam 。除了 WebCam ,還有數位攝影機、電視卡、或具有照相功能的設備。故一台電腦接了兩台以上的 UVC 設備並非罕見。

在 Linux 核心中,會為可用的 UVC 設備各自分配一個 dev 路徑,檔名為 video 編號。例如 /dev/video0, /dev/video1 。但是當你的電腦接了兩台以上不同的 UVC 設備時,你將發現系統缺乏清楚的訊息告訴你這些 dev 路徑與 UVC 設備的關係。你不知道這些 dev 路徑各自代表哪一台 UVC 設備。當你的應用軟體需要用 dev 路徑開啟特定設備時,這會帶給你一些小麻煩。

本文以 shell script 和 python 分別實作了一個列出 dev 路徑與其代表的 UVC 設備名稱的小工具。

使用命令列程式指定播放音效的音效裝置

同事在 linux 上設計一套基於影片的 Kiosk 導覽系統時,想在使用者操作時加入一些音效或語音提示。然而這個導覽系統本身會持續播放影片與聲音,故他必須在保持影片播放動作的狀態下,同時混入操作音效。

此外,在目標系統上,預期會有兩個音效裝置,即主機板內建音效裝置,和螢幕 HDMI 音效裝置。目標系統用螢幕喇叭,故也必須確保音效從 HDMI 音效裝置輸出。他希望用導覽系統內部呼叫命令列程式的方式簡單地實現這些需求。

Debian 套件版本新舊比較工具

我任職的公司使用 Debian 套件格式管理自行開發的各類軟體,也會將一些第三方的軟體打包為 debian 套件。套件維護者有時候會需要調整版本的描述方式,夾綴一些如 rev, update, fix 之類的字眼,以便使用者更容易理解套件的版本意義。但套件維護者在調整版本文字時,有時會搞錯版本文字所代表的新舊順序。例如 “1.0.0rev1” 和 “1.0.0-1” 何者代表的版本較新?

套件維護者需要一些工具幫助他決定如何調整版本文字的內容。本文介紹兩種比較版本文字新舊意義的方式。分別使用 dpkg 命令列工具與 python 的 apt_pkg 庫。

讓網頁在 Twitter 推文時顯示圖片 - 在 github pages 中加上 Twitter Cards 與 Open Graph 標籤

我最近轉推網頁文章時,注意到同樣只放上文字和連結的推文,有些來源的網頁在我沒有附上圖片的情況下,依然會在推文中顯示網頁中的圖片。而且這類型的推文愈來愈多。這種推文的效果很好,我也想在我的部落格 (使用 github pages) 中加上這種效果。

概觀

首先看下圖。圖中是兩篇同樣只放上文字和網頁連結的推文,但呈現效果卻不相同。

有無圖片效果的兩則推文

下方的推文只有文字內容。但上方的推文主動地顯示了該網頁中的圖片縮圖與摘要文字。看起來,上方推文的閱讀效果較佳。

虹膜辨識應搭配紅外線 LED 與紅外線濾鏡相機

大約一年前,我在「臉部辨識系統經驗談」提到虹膜辨識系統的可用性與照相鏡頭有很大的關係。當時,我認為日本 NTT 尚未徹底解決虹膜辨識系統的手機照相需求。

規劃將虹膜辨識應用於行動設備或家用消費級產品時,我們首先會想到一般的相機是否可用?遺憾的是,一般相機並不適合用於虹膜辨識。各位可以用自己的手機相機自拍眼睛周圍。從照片可以看出,由於反光等因素,甚至會在虹膜區域出現相機的倒影。故取出的虹膜特徵品質極差。

MQTT qos 機制,發佈者如何確認訂閱者收到訊息?

在 COSCUP 2016 無人機空汙監控物聯網 這場關於 IoT 實作經驗的議程中,與會者向講者提問了一個問題。大意是說透過 MQTT 發出控制命令後,有沒有辦法確認感應器收到命令了?

MQTT 的 qos 機制可以確保訂閱者收到訊息。但發佈方法是非同步動作,當方法返回時,並不等於訂閱者都收到訊息了。若發佈者想知道訂閱者是否收到或何時收到訊息時,確實需要多一道工作。

廢止紅十字會法是矯枉過正

首先說明中華民國紅十字會在國際上的關係。提到紅十字會的國際關係,就要提到三件事物。一個是概念性的「國際紅十字與紅新月運動」團體,另兩個則是具有正式組織架構的「紅十字國際委員會(ICRC)」和「紅十字會與紅新月會國際聯合會(IFRC)」。且 ICRC 和 IFRC 是兩個獨立組織,彼此沒有從屬關係。 ICRC、IFRC 以及各地紅十字會三者共同合作推動「國際紅十字與紅新月運動」。 ICRC 承認中華民國紅十字會,屬於「國際紅十字與紅新月運動」團體。但受限於 IFRC 的組織章程,中華民國紅十字會不是 IFRC 的會員。民進黨立委李俊俋說「中華民國紅十字會根本不被國際紅十字會承認」,顯然他沒有搞懂紅十字會組織間的關係。我也不知道他口中的「國際紅十字會」是哪個。

我的 USB DAC 連接方案

自從看了 xtreme 的 iFi Purifier2 開箱文後,我就在想能不能弄一個窮人版的。儘量拿一般人手上現有的零件,搭出一個便宜又有顯著效果的 USB DAC 連接器。

Part 1. FE1.1s

首先,第一個主角, axpro USB 2.0 Hub。

axpro USB 2.0 Hub

構造非常簡單,一個不到 150 元。原本是我帶筆電出差旅遊時用的,今天就請他為了數位音響界獻身。

Python Tools for Visual Studio 初步入門

Python Tools for Visual Studio (PTVS) 是一個銜接 Visual Studio 和 Python 解譯器的工具。現在是 Visual Studio 2015 安裝時的可選用內容。

注意,當你安裝 Visual Studio Community 和 PTVS 時, Visual Studio Community 安裝工具並不會一併幫你安裝 Python 解譯器,你得要自己下載 Windows 版的 Python 解譯器。推薦使用 CPython for Windows 。你可以選擇 Python2 或 Python3 。如果你打算用 Python 撰寫檔案處理小工具的話,我建議選擇安裝 Python3 ,它解決了 Unicode 檔名的處理問題。

Python 解譯器與 Visual Studio Community 的安裝順序並不重要。誰先裝都行。

2016年3月推薦主題文章

推薦主題文章 MQTT用戶端入門 :

另外,我在配合 Apache MQ 的 MQTT 模組時,遇到 qos 為 2 還是漏訊的情形。但配合 mosquitto 時就沒遇過。

最近規劃把 disqus 的最近留言 放到首頁側欄上。

上月底有點忙,配合「非本國國民自動通關系統」驗收,得到機場加班微調程式。硬體閘門廠商先後提供的控制規格文件和設備實際回報的內容不一樣。結果我得要自己一一觀察每個 sensor 的實際回報資料調整程式內的狀態表。這些人是在破壞軟體協作的信賴關係。

Debian 8 (jessie) WiFi 啟用後斷線

我的筆記型電腦 Thinkpad X200s 有好一陣子沒有使用 WiFi 網路。前兩天帶著出外勤時,才發現 WiFi 啟用後一下就斷線,之後再也連不上網路。不論是連接手機分享網路,或是無線 WiFi 基地台都相同。查看 dmesg 後發現下列錯誤訊息:

wlan0: authentication with xxxxx (try 1)
wlan0: authentication with xxxxx (try 2)
wlan0: authentication with xxxxx (try 3)
wlan0: authentication with xxxxx time out

MQTT用戶端入門 - 二、JavaScript 用戶端程式設計

MQTT用戶端入門之二,本文說明 JavaScript 用戶端的程式設計內容。

你的 JavaScript 寄宿環境必須支持 WebSockets 介面。 WebSockets 是 HTML5 規範項目之一,主要網路瀏覽器近三年的版本基本都提供 WebSockets 介面。 node.js 使用者請自行確認。本文範例將以瀏覽器為操作環境。

MQTT用戶端入門 - 一、在 Debian 8 安裝 mosquitto 與 MQTT 基本觀念

本文簡單說明在 Debian 8 上安裝 MQTT 實作品 mosquitto 的經驗。

MQTT 是用於遙測裝置或行動式應用程式之間傳送訊息的協定。它最早由 IBM 規劃實作,並在 2013 年提交給 OASIS (結構化資訊標準促進協會) 成為現在 IoT (Internet of Thing) 領域的訊息傳輸標準之一。

MQTT 通訊協定預期用於無線及低頻寬網路。可針對行動式應用程式可靠地處理遞送訊息的複雜性,並保持低成本地進行網路管理。 MQTT 用戶端程式庫比較小。程式庫如同郵箱,使用連接至 MQTT 伺服器的其他 MQTT 應用程式傳送及接收訊息。透過傳送訊息(而不是保持連接至等待回應的伺服器),MQTT 應用程式可節約電池壽命。 IBM WebSphere MQ 資訊中心 MQTT 簡介