Cody Blog

Mobile is eating the world

這個投影片還蠻不錯的。用數字說明Mobile是如何正在主宰整個資訊產業

其中我看到的一些事實

  • Smart phone 和 tablets 從 2007 年開始僅花了四年的時間,從於2011年開始每年的銷售的裝置數已超越PC。
  • PC平均每4~5年更換一次,Mobile device平均每2年更換一次
  • Mobile相較於PC所擁有的一些優勢:
    • 知道使用者的所在位置: location based service(LBS),
    • Apps 之間常常有密切的整合服務: 地址用 Google Map開,影片用 Youtube開, 文章記錄到 Evernote中
    • Prediction. 因為手機是使用者一天當中長時間持有,用取得使用者的資訊比較多,較容易做出一些預測服務(Ex: Google Now)
    • 其它的像是 NFS, Image recognition 目前似乎還沒有看到什麼殺手級應用
  • 自帶微軟系統的裝置數量直線下滑,微軟在資訊產業的影響力逐漸變小
  • 行動裝置由 Apple 和 Samsung 主導市場
  • 電子閱讀器市場平緩進步: Amazon 營收逐年增加,但淨利卻只有持平
  • 電子商務逐年增加,新創公司常常做商品導購的服務
  • 行動世界的四巨頭: Apple, Google, Facebook, Amazon

從 Octorpess 搬家到 Pelican

這是一個披著Octopress皮的Pelican. XD

前幾天的參加了PyConTaiwan後,對於Python的忠誠度又提升了不少。於是就一時興起Survey了一下Python的Blog系統,花了一些時間,從原本Rudy 的 Octopress blog系統轉換到Python的Pelican Blog系統了。Octopress也沒有什麼不好。但是畢竟octopress是一個我沒有接觸過的Ruby語言,當需要做一些調整,想要去看程式碼時,總是沒有比我比較熟悉的Python來得親近。但是,因為Octopress的外觀實在簡單好看,又希望盡量無痛轉移,於是我就選擇了pelican-octopress-theme,做為我的佈景主題。

從Octopress搬到Pelican,我主要是參考這篇Migrating from Octopress to Pelican文章,裡面有詳盡的Migrate步驟。

Pelican 的優點

  • 100% Python
  • 是目前最活躍的Python Blog 之一
  • 是Static Page Blog系統,快,安全。

Deploy 到 Github Page

Github 的 user page。靜態網頁一定要放在Masterbranch,而我開了另一個Source branch來放原始的Markdown檔案。使用ghp-import這個工具(沒錯,這也是Python的)可以讓deploy到github上更方便,可以平常就待在source branch來維護原始檔案的更新,而deploy則是透過指令,自動更新到Master branch,指令如下:

pelican -s pelicanconf.py content/ && ghp-import output -b master -p

也可以加到Makefile的git,裡面預設是gh-pages,記得改成 master

github: publish
    ghp-import output -b master -p

這樣之後執行make github …

Install testlink on CentOS

In this post, I'll try to explain how to install Test link 1.9.3 on CentOS 6.2 step by step:

Using yum to install required packages

yum install mysql-server php php-mysql php-gd php-ldap

Modify /etc/php.ini to optimize php configuration for TestLink

session.gc_maxlifetime = 2400
max_execution_time = 120

Set up web server and mysql services

 chkconfig httpd on
 chkconfig mysqld on
 service httpd start
 service mysqld start

Set a password for mysql root user

 mysqladmin -u root password NEWPASSWORD

Add port 80 to iptables, Add the following rule into /etc/sysconfig/iptables

-A INPUT -m state --state NEW …

一些 New HTC One 的資訊

第一次使用HTC的手機,整理一下 New HTC One的相關資訊。感覺這隻真的不錯,全鋁合金機身,而且又是找五月天代言,正港的MIT,一定要支持一下。

剛拿到手機可以先做的事

  • 檢查一下沒有沒縫。這隻採鋁合金外,有很漂亮的金屬質感,但是也造成上市初期的良率太低,而傳出多起接縫問題。據說五月後的貨這方面的問題少了很多

  • 把舊手機的資料傳輸到新手機 HTC 傳輸工具 - Google Play Android 應用程式 把舊Android手機(支援2.3以上,不一定要HTC)的設定,照片,簡訊等資訊透過無線網路傳輸到NewOne。用官方的方法沒辦法用Pin碼自動配對成功,之後是用新一內建的App:設定精靈。並讓舊手機連到一個特殊的基地台,就Ok了。

  • 查詢 IMEI 手機的身份證字號: 撥打 *#06#

  • 查詢出廠時間: HTC Support 需要輸入的IMEI跟S/N可以在包裝盒裡面的貼紙找到

  • hTC硬體功能測試(HTC function Test v4.01.04g): 撥打 ##3424## 可以測試hTC的各項硬體功能,建議可以先全部都測過一遍,檢查一下是否正常

  • HTC 輕鬆上手

DIY

特色

sed的s指令筆記

s Command

s(substitue) 指令是 sed 中最常用的,可以把文件中的字串替換掉。基本的syntax s/RegEx/SubEx/,例如 s/Old/New/:

$ echo 'this is old' > input.txt
$ sed s/old/new/ input.txt

這個sed指令可以把文件中的old字串換成new

sed 執行流程

sed不像一般程式語言有 variable 的概念,但是sed有兩個特別的buffer(or workspace)可以讓sed執行較複雜的工作。這兩個buffer稱為Pattern space和Hold space。sed執行是從input stream中,每次執行一行,流程大致如下:

  1. sed從input stream讀一行的內容
  2. 把換行符號(trailing newlines)移除
  3. 把它放到pattern sapce
  4. 執行指令(上面的例子就是s command把old取代成new)
  5. 把換行符號(trailing newlines)補回來
  6. sed 把結果印到 output steam
  7. 如果還有input的話,就繼續執行step1,否則就結束

而pattern space在每一個迴圈都會清除,但是hold space則不會,可參考‘h’, ‘H’, ‘x’, ‘g’, ‘G’指令。

s 指令的其它選項

-e: sed script,可以連接多個 sed script,如果只有一個 sed script 則 -e 可以省略。例如: $ echo 1234567890 …

自動化軟體測試的金字塔

Automation pyramid

測試的重點

軟體測試在敏捷化開發一定會遇到的問題,就是原本很可能都是以“週”為單位完成的Task。如果在一個三週Sprint的情況下,測試工作很可能都要變成以“天“為單位完成的Task,我們要如何能把大部份的測試活動都在短的時間區間完成!?如同 Scrum 大師 Mike Cohn 所說的,我們需要一個健康測試金字塔。把時間投資在對的測試活動上。

金字塔有三層,由下而上分別是 Unit Test ,Acceptance Test, GUI Tests。最上面不一定大小的 Manual Tests。這邊傳達的最重要的概念就是,我們應該盡可能地把時間投資在 Unit test 上,理由很簡單,因為 Unit Test 穩定度是最高的,而且最容易被執行。如果一個測試目標能在 Unit tests level 被處理掉的話,我們應該要盡量讓它們在 Unit test level 就發生。而當測試的 Scope 愈來愈大,測試的成本就會愈來愈貴,可能會由白箱測試變黑箱測試,所需要的測試文件就需要更多來傳達資訊。

很可惜地,大部份的測試團隊,剛好相反。投入了大量人力在 Manual tests 之上。也因為有大量的 Tester 在執行 GUI Test、Manual Test 所以 Developer 在相對少的資源下,就只能把大部份可以在 unit test level 就處理掉的任務直接讓給 tester 來完成。

金字塔 與 三隻小豬的故事

三隻小豬

Patrick Wilson-Welsh 把這個金字塔比喻成三隻小豬的故事。有做過 GUI test 的人應該都知道,我們應該最後才做 GUI test,因為他最 brittle,最容易因為一點點的改變而讓測試不通過。所以 Patrick …

Pretotype - 把事情做對之前, 確保做了對的事

看了GTAC 2011 Opening Keynote: Test is dead時注意到這本書。查了一下,發現Amazon的高評價,就馬上買了Kindle版(0.99 Usd)來看。裡面有一些不錯的觀念,在現今軟體業 Startup 風氣盛行的年代,我想值得記錄一下。

什麼是 Pretotype

Pretotype 不是 Prototype 的筆誤。這個字是作者 Alberto Savoia 自創的單字。從 Prototype 衍生而來。pre 跟 pro 都有 earier, before 的意思。一般傳統上,我們常常為了證明一些點子是否可行,都會先用少量的成本投入,來測試看看是否值得再繼續投入下去,比如說原型(Prototype),或是POC(Prove of Concept)都是典型的例子。但是Alberto覺得Prototype還是太貴了。能否有一些更快速,省成本的方法來驗證我們做的是對的它。因為找對的它來做是非常重要的,一些常見的統計數據告訴我們:

  • 90% 的 Mobile App 不賺錢
  • 80% 的 Startup 把投資者的錢賠了
  • 80% 的 餐廳在一年內就關門大吉

所以,愈早知道是否是對的“它”,遠比把“它”做對來得重要的多。

失敗定律

絕大多數的新物事都將會失敗, 即使被完美無瑕地執行

所以,我們常常在做一些不對的事情而不自知。當然,這邊所謂的對或是不對,其實定義可以很簡單,就是指目標市場的接受度。但是如果市場不買帳,就算他做的很完美,終究會走向失敗之路。Pretotype 是一種讓我們可以少痛一點的方式,即早發見這其實是不對的。而不是花了大把銀子跟青春才發現這不是市場要的。Pretotype 是指一種介於抽象概念(Abstract concept)跟原型(Prototype …

Install Jenkins on CentOS 6.3

安裝 JDK

CentOS預設的JAVA版本和Jenkins不相容,所以要改安裝 OpenJDK 。可以用 yum search 檢查應該安裝那一個版本: yum search openjdk 會有 java-1.6.0 跟 java-1.7.0 兩個版本可供安裝,在此我選擇比較新的版本:1.7.0: yum install java-1.7.0-openjdk -y

安裝 Jenkins

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins -y

設定 Jenkins

  1. 修改 iptables : 打開 80 Port,編輯/etc/sysconfig/iptables,把下面的rule加到最後一條 iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

  2. 讓 Jenkins 開機自動啟動 chkconfig Jenkins …

Testopia 測試案例管理系統簡介

Why Testopia ?

最近想研究一些時下流行的測試案例(Test Case)管理系統,之前有稍微裝一下Test Link來玩看看。因為看到《How Google Tests Software》裡面有提到一點,就是在Gogole裡,如果自動化測試測試沒過的話,會直接自動新增一筆Bug Tacker給相關人員,可見其相當重視自動化測試的品質,讓Automation的Bug提升到跟Product Bug相等重要。這也讓我重新思考 Bug Tracking System 對於Automation們的重要性。所以這讓我注意到另一套 Test Case Management System: Testopia。我覺得Testopia最大的特色,就是他是一套Bug Tracking System: Bugzilla 的延伸套件。也就是如果我們採用了Testopia來當我們的測試案例管理系統的話。也就相當於能直接擁有一套 Bug Tracking System了。這成為我想玩玩看 Testopia 的最大理由 :)

安裝 Testopia:

要玩 Testopia 之前要先安裝 Bugzilla,關於 Bugzilla 的安裝,這邊有記錄,安裝 Testopia 其實很簡單,下載 Testopia 的 tarball file : 當下最新的版本是2.5版

  1. 解壓縮︰ tar zxvf testopia-2.5-BUGZILLA-4.2.tar.gz

  2. 把裡面的內容丟到 bugzilla 的根目錄,例如 /var/www/html/bugzilla

  3. 執行 checksetup 的 perl 檔 : ./checksetup.pl

這樣就安裝完成了。

Testopia 的架構

Testopia 手冊裡面有一張圖很清楚地表達整個 Testopia 的架構 …