樂多部落格文章轉移到 github pages 完工

已將樂多部格落上的文章轉移到 github pages ,新網址 rocksaying.tw 。並開啟 disqus 留言系統。

除了全站RSS訂閱,各分類頁的文章列表的上方,也有該分類的 RSS 訂閱連結。

announcement

準備將部落格從樂多搬移到 github pages 上管理。這樣發表或更新文章,只需要 git push 就完成,不需要再上樂多管理平台手動貼上。再者,現在從搜尋引擎找樂多的文章再連結閱讀時,都會先轉到所謂的閱讀模式,還要再點擊閱讀原本文章才行,太麻煩了。

Debian 8 and Github Pages.

github pages required ruby version above 1.9. debian 8 default ruby version is 2.1.

required package: ruby2.1 ruby ruby2.1-dev ruby-dev bundler rubygems-integration zlib1g-dev nodejs

  • gem issue: require package zlib1g-dev.
  • jekyllrb issue: require package nodejs.

Installing Jekyll: reference Using Jekyll with Pages

create Gemfile in the root of your github pages working copy.

source 'https://rubygems.org'
gem 'github-pages'

change directory to your github pages working copy then run bundle install.

My script to run Jekyll with GitHub Pages:

#!/bin/sh
cd ~/Public/rocksaying.github.io
exec bundle exec jekyll serve

Using web browser to open localhost:4000/.

Upgrade to Jekyll3

change directory to working copy then run gem update or bundle update.

add “gems: [jekyll-paginate]” in your _config.yaml if you need paginate.

gems: [jekyll-paginate]

See also: Upgrading from 2.x to 3.x

test css

摘要 excerpt. markdown 語法與部落格 CSS 展示。

Markdown.

分離 <--more-->

Kensington SlimBlade Trackball 軌跡球在 Linux 中的使用設定

我最近去日本時,趁便宜買了兩隻 Kensington 的軌跡球,分別是 Kensington SlimBlade Trackball 和 Kensington Orbit Trackball 。分別說明這兩隻軌跡球在 Linux 下使用的設定心得。

在 Debian 8 中,基本上不用設定任何項目便可正常使用。

如果你是左撇子,或者想要更快的捲頁速度,請繼續閱讀。

Kensington Orbit Trackball 軌跡球 在 Linux 中的使用設定

身為一位 Logitech Marble Trackball 木星軌跡球的用戶,我拿到 Kensington Orbit Trackball 軌跡球後第一眼就覺得這兩隻的球體大小似乎一樣。當場動手互換,證實 Orbit 軌跡球和 Logitech Marble 木星軌跡球的球體通用。

接著,我又比較了它和 Kensington SlimBlade Trackball 軌跡球的捲頁速度。 Orbit 軌跡球捲頁輪 (Scroll Ring) 的捲頁速度要快得多。還可用一根手指 360 度旋轉捲頁,真是爽快。唯一缺點就是少了實體中鍵。或許我當初該買 Kensington Expert Mouse 而非 SlimBlade 軌跡球。

Orbit 軌跡球最大缺點就是沒有實體中鍵,故接下來將著重說明在 Linux 如何設定中鍵模擬。

Ubuntu 啟動畫面與桌面(startx)啟動失敗的關係

我任職公司會用 Linux 系統訂製自己的視窗環境,具體作法請參考「如何訂製 Linux X 視窗環境」。在使用 Ubuntu 訂製環境時,我們將 Ubuntu 的 Display Manager (如 GDM, LigthDM) 拔掉,改為直接執行 startx 的方式,這時經常出現啟動畫面閃爍現象,以及偶爾發生 X 啟動失敗的錯誤,導致系統進入 X Window 的時間變得很長。但改回 DM 啟動模式後就沒事了。在 Debian 之下則很正常。

由於 Ubuntu 的啟動畫面由 plymouth 負責,我初步認為和 plymouth 有關。搜查了一下,可找到其他客製化系統的系統開發者者碰到相同的情況。

臉部辨識系統經驗談

Master Card 宣告加入臉部辨識認證。文中特別提了兩件事。一、它只是儲存了一個算法,而不是儲存了用戶的面容圖片;二、要做眨一眨眼的動作,避免歹徒利用卡主的照片騙過系統。

就我參與的國內生物辨識系統專案來看,大部份生物辨識系統都不會儲存原始照片。以臉部辨識為例,是從大頭照中分出特徵區域,再將特徵內容化為曲線函數儲存(就是算式),一般也不只一組。這些曲線函數組一般稱為 template 。比對時也一樣,拍照後將特徵轉為曲線函數,再比對曲線函數的差異性。

GCC 4.6 Linker Argument Picky

最近公司有一些 C 程式碼在 Ubuntu 12.04 上編譯時發生目標參照錯誤。原因在於 Ubuntu 12.04 採用的 gcc 4.6 有一項特殊的參數順序要求(argument picky),這個中間版本一定要把 linker 參數放最後面。這項要求在舊版沒有(~ 4.4),後來的 gcc 新版(4.8, 4.9)也拿掉了。所以 gcc 4.6 以外的版本, linker 參數順序怎麼放都行。

gcc 常見的 linker 參數有 -l, -L, -Wl 。

Debian gcc list: https://packages.debian.org/search?keywords=gcc

  • squeeze (v6): 4.4.5
  • wheezy (v7): 4.7.2 (x86 arch)
  • jessie (v8): 4.9.2

Ubuntu gcc list:

  • lucid (10.04): 4.4.3
  • precise (12.04): 4.6.3
  • trusty (14.04): 4.8.2

我這幾年的主要開發環境是在 Debian 上,剛好跳過 gcc 4.6 。現在想想,2011,2012 年時,確實有不少 gcc 用家抱怨過這件事。所以後來才又取消了這項限制吧。

Debian 8~10 (jessie~buster) 安裝筆記 Firefox 與 Iceweasel

Firefox 與 Iceweasel

2019-07-15 Debian 10 更新內容。Firefox 的商標問題解套了,所以 Debian 重新將 Firefox 瀏覽器納入主要套件清單,套件名稱為 firefox-esr 。 至於 iceweasel 則停止發佈。消息來源: The end of the Iceweasel Age

2016-03-18 更新內容。隨著 Debian Jessic 轉為 stable 版本,Debian Mozilla 團隊調整了儲藏位置。於 Firefox 釋出 45.0 版時,又再次調整了 source list 路徑與套件名稱。

Mozilla 將 Firefox 的圖標註冊為商標,並附帶了一些使用限制。而 Debian 團隊為了擺脫商標使用限制,選擇自行維護一個衍生版本,此即 Iceweasel 。參考 「Iceweasel - Debian wiki」。

對一般使用者來說, Iceweasel 和 Firefox 除了應用程式的圖示不同外,兩者並無差異。所有的擴充插件或主題全部一致,連使用者偏好同步(Sync)功能都用相同的伺服器。

Debian 8 於 2015 年 4 月 25 日正式釋出。 Debian 8 安裝筆記請看「基礎篇」。

PHP框架 - CommonGateway JSON 處理之自動回傳

在「CommonGateway 初步第二篇 - JSON 的處理與資料上傳」說明了 CommonGateway 對於 JSON 資料的處理辦法。根據早先的規則要求,客戶端若想要取得 JSON 文件,則應送出需求標頭 Accept: application/json 。而 CG 收到此需求時,會自動載入和控制項方法同名的 JSON 視圖 (.pjs),例如 index.pjs, get.pjs 。而這些 JSON 視圖的內容,往往只有一行 echo json_encode($xxx); ,如「CommonGateway 初步第二篇 - JSON 的處理與資料上傳」範例所示。

這樣的視圖內容實在太空泛了。如果我有好幾個控制項都這麼回傳 JSON 文件的話,我就要複製改名好幾個這樣的 .pjs 視圖。這工作的重複性太高了, Don't Repeat Yourself 。根據 DRY 原則, CG 在 r62 擴充了視圖處理規則,增加一條自動回傳 JSON 文件的規則。如果客戶端要求傳回 JSON 文件但設計者未建立視圖時,CG 會自動調用 json_encode() 回傳資料模型(model)。在我的使用經驗上,九成的 JSON 視圖 (.pjs),其內容都只有一行 json_encode($model) 。故將此規則寫入 CommonGateway ,減少空泛又重複的 JSON 視圖文件。

PHP框架 - CommonGateway 控制項動作函數回傳狀態碼的作法

CommonGateway 是我設計的一個 PHP 迷你框架。主要用於實作 RESTful API ,兼差網站設計。

在 CommonGateway 初期版本,如果你的控制項方法成功執行但不需要回傳資料文件時,你的方法應回傳 false ,讓 CG 不必繼續處理視圖工作。但這項要求違反一般函數的慣例,因為回傳 false 通常表示動作失敗。而在本文描述的情況中,你的控制項方法實際上成功了,卻要回傳 false ,語意有重大矛盾。

仔細探討 HTTP 和 CGI 規範,當一項客戶端要求圓滿完成時,至少要回傳一個表示成功的狀態碼標頭,例如常見的 “Status: 200” 。而 CG 實際上也是這麼做。當控制項方法正常地回傳 false 時, CG 視為控制項成功執行但不必載入視圖,並默認回報客戶端狀態碼 200 。

我的源碼的 Github 搬移記錄

今年3月13日,我收到一封來自 Google Code 的電子郵件,它通知我 Google Code 要停止服務了。

Earlier today, Google announced we will be turning down Google Code Project Hosting. The service started in 2006 with the goal of providing a scalable and reliable way of hosting open source projects. Since that time, millions of people have contributed to open source projects hosted on the site.

But a lot has changed since 2006. In the past nine years, many other options for hosting open source projects have popped up, along with vibrant communities of developers. It’s time to recognize that Google Code’s mission to provide open source projects a home has been accomplished by others, such as GitHub and Bitbucket.

真是麻煩啊。幸好還有一年的時間可以轉移。我花了30分鐘慎重評估 SourceForge 和 Github 後,我選定 Github 放置我的源碼。理由嘛,它沒有廣告。因為我打算把以往寫的程式統一集中在一個儲存庫,而不再分案放置,所以我沒有使用 google code 好心提供的匯出到 github 功能。不過我是個懶人,所以就一項一項慢慢搬囉。

下列為已經搬移的項目:

樂多舊網址: http://blog.roodo.com/rocksaying/archives/44117276.html

樂多舊回應
未留名 (#comment-25313208)
Thu, 16 Apr 2015 17:54:08 +0800
支持!

從太陽花眾之作為,看言論自由與私權之三例

我看了新聞報導 拆成大「招牌」學生將二審 林飛帆斥:荒謬 之後,我也覺得很荒謬。毀損財物和言論自由可以混為一談,真是鬼扯。林飛帆說「台灣社會過去一直提倡捍衞言論自由,其實距離百分之百的言論自由還有相當大的距離,還非常遙遠」。嘿,確實如此。例如他自己就離言論自由的精髓還很遙遠。

去年三月,發生了一連串的學生運動。包含林飛帆在內的參與者自稱為「太陽花學運」。我就借用這個名字,稱他們為「太陽花眾」吧。

政府推動免費 4G 上網的事

關於「台北市政府推動免費 4G 上網」的新聞。真是不懂技術。雖然柯文哲幕僚總是宣揚自己有很多「婉君」支持,但那些婉君的網路知識還真是三流。畢竟只是一群為我等軟體設計師所制訂之規則制約之人。

  1. 台北市政府自己要設一個 MVNO 電信網路,才能讓台灣 5 家 LTE 電信商的用戶可以漫遊方式連接。但得要讓用戶知道如何切換電信網路。否則在訊號範圍內有多個電信網路時, SIM 卡總是優先選擇自家的網路。
  2. 漫遊如何計費? 亞太電信和台灣大哥大漫遊的技術性擴展頻段動作,就被 NCC 警告了。
  3. 如果不用漫遊方式,那使用者得有兩張 SIM 卡,其中一張是台北市政府發的 LTE SIM 卡,到台北自己插上。雙卡手機可能省不了麻煩。因為大部份雙卡手機只有一個 SIM 槽支援 LTE ,另一個只支援 3G 或 2G 。難道你會在台北市以外的地方,只插 3G SIM 卡嗎? 還有一招,自己買一個 LTE 無線分享器插台北市政府 LTE SIM 卡,然後用 WIFI 分享給自己的其他裝置。但這最後還是要用 WIFI ,不是脫褲子放屁嗎?
  4. 嫌 WIFI 慢,所以改 LTE ? 無線訊號雖然看不見,但還是有頻寬的物理限制。免費使用,大家擠爆,誰也快不了,最後還是慢到爆。台北免費 WIFI 慢,就是因為免費啊。
  5. 最後還是要說一句,政府官員,不論是民選還是考試,都沒有成本概念。建置 LTE 不用錢的喔?就算是用稅金,表面上是全體台北市民共同負擔,但實際上只有買得起 LTE 裝置的人才能用。揭開公眾的面紗,就是剝削買不起 LTE 裝置的低下階層小平民的稅金,補貼給拿 LTE 裝置的人免費用 LTE 資源,加深數位落差鴻溝。
樂多舊網址: http://blog.roodo.com/rocksaying/archives/37919397.html

樂多舊回應
touhonoob@gmail.com(路人) (#comment-25259218)
Fri, 23 Jan 2015 03:03:47 +0800
Apple已經推出了通用SIM卡Apple SIM http://www.bnext.com.tw/article/view/id/34201
未來手機其實是朝向無SIM卡的方向發展
如果正面看待這是個有前瞻性的想法
未留名 (#comment-25259581)
Fri, 23 Jan 2015 17:15:56 +0800
通用SIM只解決了第3點。
前瞻性?這想法不夠前瞻。
前瞻性的想法,應該是把方案重點放在我列的第4、5點。

D-Link 模擬器 - 網管人員的好玩具

網管人員了解 D-Link 路由器的好玩具,在 Google 搜尋列,輸入下列關鍵字:

??? site:http://support.dlink.com/emulators/

??? 代入任一想了解的 D-Link 路由器型號,例如 dir615 。只要搜尋結果的網址資訊是 "support.dlink.com/emulators/???/" 的話,打開那項搜尋結果,就會看到路由器設定畫面的模擬操作器。設定功能模擬器的帳號密碼都是 admin 。

有很多路由器的功能,從它的產品包裝上的宣傳文字根本看不出個所以然。但在設定畫面中都能看出來。 D-Link 明明提供了這麼好玩的設定模擬器,為什麼在 D-Link 官方網站的網頁上,都找不到進入的連結呢?

樂多舊網址: http://blog.roodo.com/rocksaying/archives/37401620.html

樂多舊回應
xcojad@gmail.com(Jason Chiang) (#comment-25320685)
Thu, 07 May 2015 12:17:34 +0800
謝謝分享實用的資訊!!

Lenovo Miix2 8 ~ 一台平板、兩個螢幕、三種用途

我買了一台 Lenovo Miix2 8 吋平板,希望它能同時滿足三種用途。

用途一、就是平板。

用途二、配上鍵盤,當成筆電。同時要能充飽平板和手機的電池。

用途三、配上大尺寸電腦螢幕,當成桌上型電腦的主機。使用 USB 擴充底座 (Dock) ,外接螢幕、硬碟、有線網路。

這三種用途是為了老媽的需要。我希望找一台設備就同時滿足以上三個要求。老媽出門就是平板或筆電,回家插上底座就是桌上型電腦。一個主機、一套系統,從頭用到尾。這樣我就不用教她各種不同作業系統的操作方式,她也不必常常跑來問我這功能怎麼用、或是如何把照片從 A 設備傳到 B 設備。

PHP curl post file

日前跑一個 RESTful 服務舊案以 PHPUnit 設計的測試案例,發現有一些上傳檔案到 RESTful 服務的測試項目總是失敗。檢查程式後,發現問題出在測試案例的 curl 程式碼。

一直以來,用 PHP 的 curl 函數上傳檔案時,只需要啟用 CURLOPT_POST 選項,再於 CURLOPT_POSTFIELDS 的欄位值中,以 @ 標示檔案路徑, curl 就會自動幫我們處理讀取檔案內容並上傳給遠端的工作。參考 PHP 透過 HTTP POST 方法上傳資料與檔案給 RESTful 服務

但根據 PHP 線上使用手冊的記載,在 PHP 5.5 版之後,基於安全理由關閉了這項功能。要改用函數 curl_file_create() ,參考 PHP Manual: curl_file_create。原因很簡單,因為 curl 並不能區分你是真的要上傳檔案或是剛好輸入了一個開頭是 @ 字元的字串。如果你設計了一個用 curl POST 上傳資料的程式,又允許使用者輸入資料欄位,那麼駭客就可以故意填上 @/etc/passwd 讓 curl 將主機上的帳號清單傳出去。

日本旅遊,行動上網常見預付卡(Prepaid SIM)列表 - 2015-07-01更新

我整理了以下行動網路預付卡(Prepaid SIM),都不具通話和簡訊功能,只有上網功能(數據傳輸)。

  • So-net Prepaid LTE SIM (2015-03-18更新)
  • YOKOSO JAPAN SIM 日本7天上網 (2015-03-03新增)
  • BIC SIM JAPAN TRAVEL SIM PREPAID PACKAGE
  • T-SIM Prepaid SIM (2015-01-19更新)
  • b-mobile 台灣 VISITOR SIM (2014-11-10更新,已停售)
  • OCN Prepaid SIM for JAPAN (2014-11-20更新)
  • J Walker SIM (2015-07-01推出)
  • 遠遊卡 (2015-07-01推出)

現在連遠傳都推出國外遊旅預付卡,以後在國內可購買的產品種類也會愈來愈多吧。

日本 Prepaid SIM 流量與速率限制

本文列出的行動網路預付卡(Prepaid SIM),都不具通話和簡訊功能,只有上網功能(數據傳輸)。

日本的行動網路計費不流行「無條件吃到飽」方案,廣告說的不限流量或吃到飽方案都設有條件限制。例如早先的 b-mobile U300 就是指最高速率 300kbps 限制 (平均每秒 30KB)。

最常見的吃到飽方案的條件限制是單日不限速門檻,例如 1 天 100MB 的不限速門檻。這個門檻是說,只要你在 1天內使用的資料流量超過 100MB ,就會加上 200kbps 或 128kbps 的速率限制,每天零時恢復不限速率狀態。

想要全程享受高速傳輸的話,就要選固定資料流量方案,幾天幾GB這種。