文章

目前顯示的是 六月, 2016的文章

adb not responding/unable to detect adb version Syntax error - Android Studio on ubuntu

圖片
當你運行 Android studio debug app 出現下面的錯誤

相見恨晚的自動化測試開發工具 Sikuli

圖片
2010年由一位在 MIT 就讀的台灣人發表的 graphic script language,

有別於一般的開發工具,利用一些截圖加上一些簡單的語法就可以操作電腦滑鼠、鍵盤。

開發這工具最難的,我覺得是圖形辨識跟操作行為的判斷。

這工具提供的語法滿完整的,不同的情境都可以簡單的使用,

搭配 Python 語法可以更靈活的操作。

我用了兩個小時的時間,就可以完成安裝並輕易完成一個自動化訂票的 script。

坦白說,效果讓我感到非常的驚豔,可能是本身是開發人員,能夠了解這軟體的困難。

只是覺得自己怎麼可以這麼 lag,六年前的玩意現在才知道。

-- 安裝步驟 --

先到 Sikuli 官網 下載 SikuliX 目前版本是1.1.0

檔案是 .jar,也就是 java 程式,所以請先安裝 jre 環境。

依教學是說只要檔案下載下來,直接點兩下執行,就會自動下載需要的檔案,

還有一個執行 Sikuli IDE 的批次檔。

安裝過程遇到 "Could not find the main class. Program will exit!"


直接在 console 下指令 " java -jar sikulixsetup-1.1.0.jar"

就會自動下載並安裝起來了。




語法的部份我是參考這個範例   Sikuli的入門使用

-- 遭遇問題 --

寫範例的過程遇到兩個問題,一個是中文的輸入問題、一個是按鍵的問題。

一、中文輸入的問題,網路上查到的解法是 type(u"中文") 或是 paste("中文"),

實際使用出現的都是亂碼。

最後解法是 paste(unicode("中文", "utf8"))

二、按鍵問題是一些特殊鍵的輸入,例如 windows 鍵 + 字母的特殊組合鍵、Enter 鍵。

這邊統一解答,windows 鍵+字母的特殊鍵組合是 type("d",KEY_META) ,

以這範例表示的是 windows 鍵 + d (一定要小寫唷!)

Enter 鍵是 type(Key.ENTER)   (Key 一定要首字大寫,ENTER是全大寫)

-- 最後完成的結果 --

我最後實作的程式是露營地的訂票程式,搭配 win…

Semaphore

多執行緒下控制可使用資源的執行緒上限數
比喻作夜店的安管人員再洽當不過,安管人員可控制夜店入場人數,
例如今天只開放100人入場,超過此人數則不得再進場,除非有人離開才可以放行,
控制人數在上限 100。
在多執行緒的情形下,資源的掌握更顯得重要,如資料庫資源。

But, what's the difference between semaphore and singleton?
singleton 是用來作 lock,可以想成是一次只開放一個人進場的安管,這樣就很好理解了。
在查到的資料上顯示,若在上限為一個物件存取的情形下,
效能上 singleton 比 semaphore 好多了。
reference: Android Semaphore