2011/01/25

[Programming] chickenfoot , firefox 上面的瑞士小刀

前言:網路論壇 這邊 我有在 ptt 上面提示人家說,用 chickenfoot 可以解決他的問題。不過他的留言提到一個問題, chickenfoot 不能處理提示(alert)視窗的部份。其實 ... 他搞錯了,並不是不能,只是他不會而已。

讓我簡單的介紹一下 chickenfoot 是一款什麼樣的軟體。你可以用 它 來控制你的 firefox ,利用它來點擊每個網頁的連結,做你想要的測試或其它人手能作的動作。像是進到 google 的首頁,輸入關鍵字,再點擊 google search 的按鈕之類的。

以一個邪惡的應用來說,會像是「蘋果點點紅」的活動,你可以用 chickenfoot 很方便的載入你的 script ,去尋找點點紅的連結,最終達成點擊完所有的點數,這樣就可以拿到獎品。

邪惡的範例內容邏輯示意如下:

1. 用 script 找出所有 50 個點數。
2. 建成 array 。
3. for (i = 0; i < array.length; i ++) {
    go(array[i]);
} /* 點擊所有的點數 */
4. 處理 alert 視窗。

前面都很簡單,第四點的 alert 視窗不好處理,不過並不是沒有。
google keyword "firefox" "chickenfoot" "alert" "handle" 在 chickenfoot 的範例 repository 裡面一樣可以找得到一些範例。(藉此說明,網路的資訊常常以偏概全或積非成是?)

我消化了一下這邊論壇的範例,改成這樣:
function handleDialog()
{
    if (closeWindow() == false) {
        output("W");
        setTimeout(handleDialog, 500);
    } else {
        output("x");
    }
}

可以確保一定能關掉這個 alert 視窗,減少人手操作的需求。
至於邪惡的蘋果點點紅的 chickenfoot 的 script 連結在此
有需要可以拿這個參考。

操作也很簡單, Ctrl + O 載入 script ,再按下play ,接著會詢問你帳號密碼,打完之後就自動點擊完 50 點。(當然,這之中 firefox 是完全由這支 script 所控制的,跑完才把瀏覽器還給你 )

2011/01/10

[新聞] Ubunutu 11.04 開始採用 Unity 做為預設視窗介面(WM)

是的, Ubuntu 從 11.04 開始採用 unity 做為預設的視窗介面了。摒棄了 Gnome 的 Ubuntu 目的何在?且讓我們先看一下 unity 長什麼樣子:



這邊可以看得出來 Unity 的特點是:
1. 按鍵式介面(無桌面上的 icon 全部消失了)
2. 滿版外觀(部份應用程式像 pidgin 還是可以只有小小的一個在旁邊掛著)
3. 無標題列,改用 global menu applet。
4. 工作區直接這個面版上切換
5. 延續之前的設計,視窗按鈕在左邊,也避免了和 indicator 還有 logout / clock applet 的衝突。
6. 加強鍵盤的控制,按下視窗鍵可以用快速鍵直接操作面版上的按鍵。

筆者以為這樣介面的存在應該是為了因應平板電腦的興起而存在,因為像這樣的介面,非常適合觸控式的操作模式,這個面板還可以用拖拉的方式向上或向下延伸,再加下滿版的外觀,和無標題列節省顯示器上的空間,一整個感覺就是在向平板電腦操作的邁進。

不過這樣的設計似乎漏算了幾個地方:
1. 沒有考慮到 儲存裝置/NFS/SMBFS 的處理 (像 docky 有一個 mounter 來處理這個操作)
2. "還" 沒有考慮到客製化的部份 (我用拖拉沒有辦法新增這個面板上的按鍵)(說"還"是因為這還在開發中,所以應該會再做調整)
3. 功能和 dock applet 重複,所以感覺有點多餘(當然,也是因為我還有用 docky 的關係,所以還不確定這邊要怎麼劃分功能)


總結前言:
我覺得這個 WM 在效能和操作上與 Gnome 是兩個設計的面向,並沒有什麼好與不好,不過就小弟的偏好而言,比較喜歡 Unity 這樣簡單快速的介面(而且這樣我的美女桌布就可以要看時就完整的呈現)。不過這應該還只是個「半成品」,離明年四月正式釋出的時間還早,相信還有更多的設計在後面接著會跑出來,且讓我們拭目以待。

--
參考資料:
http://arstechnica.com/open-source/reviews/2010/05/exclusive-hands-on-with-ubuntus-new-unity-netbook-shell.ars
http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=32518

2010/12/17

[軟體][Linux] Gimp 2.7.3 的改變 (先前都沒注意到)


這個畫面裡面看得到兩個特點:
1. Gimp 單一視窗在 2.7.3 變成選項了,所以可以使用這個選項讓你的視窗變乾淨點,這樣編輯也會快樂一點。
2. 我的 gnome panel 把 gimp 的 menu 吃掉了,所以選單的部份現在合併到 panel 上面去,這樣軟體操作的視窗會變大一點也乾淨點。(這個選項真棒,不過,我是使用 MacBuntu 的安裝 script 之後跑出來的,還不知道是更新哪個部份會出現,暫列到 todo 上去)

沒有列出來的特點:
gimp 現在的 save as file format 只有 xcf 了,如果要另存成別的檔案格式需要使用 file -> export 的選項才有辦法匯出。

--
參考資料:
http://graphicssoft.about.com/od/gimptutorials/a/exporting-files.htm
http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?post_id=118712
MacBuntu

2010/12/11

[Programming][Linux] Ubuntu 桌面自動跳正妺時計

簡單的說,我想要的效果就像下面這樣:

Ubuntu 用 minik 美人時計當桌面

不過我並不想要每一分鐘都會去換一次,那樣有點傷。
所以我就讓它隨數跳的休息,起碼有 30 秒這樣。

以下是初步可以使用的 script:

#!/bin/bash

PIDFN="/tmp/minik.pid"
[ -f "$PIDFN" ] && kill `cat /tmp/minik.pid`
echo $$ > $PIDFN

while [ 1 ]; do
# http://gameflier.lovelytime.com.tw/photo/2108.JPG

STR=`date +"%H%M"`
OUTPUT="/tmp/.girls.$STR.jpg"
wget "http://gameflier.lovelytime.com.tw/photo/$STR.JPG" -O /tmp/.tmp.girls > /dev/null 2>&1
rm -f /tmp/.girls.*
mv /tmp/.tmp.girls $OUTPUT
gconftool-2 --type string -s /desktop/gnome/background/picture_filename \
"$OUTPUT"
let RND=($SECONDS%10)*6+30
sleep $RND
done

你可以在這邊下載 script 的內容,再讓它加入 start up (始動應用程式) 裡面就可以。
http://dl.dropbox.com/u/1117561/minik.sh

>> 2011.01.25 更新:
加入 pid file 避免重複執行。

2010/12/09

[軟體][Linux] VirtualBox 4.0 Beta 1 釋出, Ubuntu 使用者嘗鮮說明

注意:這篇說明是寫給 VirtualBox 4.0 Beta 1 在 Ubuntu 上面的嘗鮮者,所以需要具備一些細節的知識。

不建議非技術人員或生產人員輕易嘗試,可能會毀掉你的 epc 或工作的環境。

動機:

  • USB 2.0 EHCI 控制器和 RDP 服務器移入到 Extension Pack,不再包含在發佈版本當中,保證了 VirtualBox 是完全的開源軟件。USB 1.1 OHCI 控制器一直是核心部件,兩者的區別在於傳輸速度。(使用打印機和網銀 USB key 需要注意。)
  • 全新設計的用戶界面,增加了 NAT 端口轉發的 GUI 設置界面。
  • 增加 Open Virtualization Format Archive (OVA 格式)的支持。
  • 支持在 32bit host 上的虛擬機使用 1.5GB/2GB 內存。
  • 增加 ICH9 的 3 個 PCI 設備的支持。
  • 支持虛擬機使用 Intel HD Audio 音頻設備。(Windows 7 Guest 不再需要額外找 Realtek AC97 驅動。)
  • 增加 iSCSI、VMDK、VHD 和 Parallels 鏡像的異步 I/O 特性;允許 VHD 和 VDI 的大小縮放。
  • 增加自動更新 Guest Addition 功能
  • 引入 copy-and-paste 的特性。
  • 編程語言:API 增加標準 Java 語言的本地和遠程的支持。
  • 增加 Scale Mode 適應分辨率不高的全屏程序。


確認有足夠的動機之後,我們就開始來安裝,要做的事情如下:

  • 安裝 libstdc++5
  • 安裝 virtualbox 4.0 beta 1 的 deb
  • 安裝 extension pack
  • 修改 usb dev 的 rule
安裝 libstdc++5 的部份很簡單,因為 ubuntu 10.04 已經都換到 libstdc++6 了,所以套件倉庫已找不到這個套件了,我們要另外加來源才能安裝。(當然不建議手動安裝,修改 symbolic link,所以還是用 deb 來安裝)
把這行加到 /etc/apt/sources.list 的最後
 deb http://cz.archive.Ubuntu.com/ubuntu jaunty main universe  
然後再 sudo apt-get update; sudo apt-get install libstdc++5

就可以安裝好 libstdc++5 了。

安裝 virtualbox 4.0 beta 1 的部份也很簡單,先下載  deb 的包裝。記得要找自已的版本代號, 10.04 是 lucid , 10.10 就是 maverick 。
然後是 sudo apt-get purge virtualbox; dpkg -i  virtualbox-4.0_4.0.0~beta1-68572~Ubuntu~lucid_i386.deb
再來是安裝 extension pack ,這邊應該是 oracle 有搞一點專利或保留的部份。一樣先下載檔案,然後在桌面上雙點就可以。(我不知道為什麼 console 底下 chmod +x 不能執行,這邊好像有玄機,所以改天可以再去查一下)
跑到這邊,應該沒事了,你的 virtualbox 已經可以跑了。不過 usb 在 virtualbox 3.2 的版本還可以動作的,到這個昇級完了又不能動了,一樣是老問題,所以先檢查 group 設定,確定這個使用者有在 vboxusers 裡面,以前有寫過,所以就不多提。
不過這次,光這樣還不行,不知道是我的情況比較特別,還是真的是 vbox 的開發人員的疏失,在 usb dev 的 rules 裡面看到了錯誤,所以再修正:
--- /etc/udev/rules.d/10-vboxdrv.rules 2010-12-09 10:18:13.000000000 +0800
+++ /home/anton/10-vboxdrv.rules 2010-12-09 10:15:44.000000000 +0800
@@ -1,5 +1,5 @@
KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="root", MODE="0600"
-SUBSYSTEM=="usb_device", ACTION=="add", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers"
-SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers"
-SUBSYSTEM=="usb_device", ACTION=="remove", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
-SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
+SUBSYSTEM=="usb_device", ACTION=="add", RUN=/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" vboxusers
+SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN=/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" vboxusers
+SUBSYSTEM=="usb_device", ACTION=="remove", RUN=/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
+SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN=/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"

簡單的說,就是這條 rule 的 RUN 參數指定的時候雙引號沒有括好,所以這條 rule 一定會失敗,失敗了 vbox 就加不了這個 node ,也就不能好好使用 usb device 了。
--
參考資料:
linux toy 上的新聞:http://linuxtoy.org/archives/virtualbox-400-beta-1-%E5%8F%91%E5%B8%83.html
英文指南:如何處理錯誤訊息(Extension 跟 libstdc++5)
ubuntu 上面安裝 libstdc++5 的指南

2010/11/10

[Linux] /usr/lib/libconf2-4/gconf-sanity-check-2 exited with status 256.

昨天在工作的時候,遇到我的 ubuntu 突然不能開 wireshark 的情況。

所以想說重開會不會恢復正常,結果跑出一個 error 是 gconf-sanity-check-2 回傳值 256 的錯誤回報。

然後 gdm 也很怪,桌布都不見了,不過還可以正常 login 。

弄了半天沒有把問題找出來,但是又急著要解決這個問題,所以後來就不爽到拿出上次用 usb creator 做的 "ubuntu 安裝隨身碟"出來,想重灌。還好那時下班時間快到了,且還跟前同事小吹有約要去吃飯,所以就先放掉不管。

早上上班時這個問題還在,翻了下 google 大神的相關文章,結果在 這邊 找到了解法:

1. sudo chmod 755 /etc/gconf/gconf.xml.system
2. sudo chmod 1777 /tmp

1 對我沒有用,還好 2 有用了。

我大概是在玩 openwrt 時有動到 /tmp 的權限。chmod 之後就恢復正常了。

2010/11/08

[軟體][Ubuntu] PPS for Linux 再次推出 (解決 PPS for Linux 沒有聲音的問題) 12/03更新

LinuxToy 拿到的消息。當然 PPS for Linux 推出,對桌面使用者而言是一件好事。不過它的設定還是有不方便的地方,像音效設定的部份:

這樣,我就只用 gnome 播放就沒有聲音了啊~ 因為 gnome 用 pulseaudio 啊。
還好,看一下 ps 裡面的進程, PPS for Linux 還是用 mplayer 抓 wid 嵌進 window 的,所以用 shell script 跳一下就可以解決:
先在 PATH 裡面把 /usr/local/bin 加到最前面,接著把這個丟到 /usr/local/bin/mplayer
#!/bin/bash

PPName=`ps -ef | grep $PPID | awk '{ if ($2 == '$PPID') print $8}'`
PPName=`basename $PPName`
[ "$PPName" != "PPStream" ] && {
/usr/bin/mplayer "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "$10" \
"$11" "$12" "$13" "$14" "$15" "$16" "$17" "$18" "$19" "$20"
exit $?
}

CMD=""
while [ -n "$1" ]; do
OPTIND=1
case "$1" in
-ao)
OPTIND=2
;;
*)
CMD=$CMD" $1"
;;
esac
shift $OPTIND
done
/usr/bin/mplayer $CMD

sudo chmod +x /usr/local/bin/mplayer

懶得自已處理的複製貼上的直接下這邊

[更新]: 12/03 處理 mplayer 平常活動會受這支 script 影響的問題。
[更新]: 12/09 再處理 PPStream 的問題。

[Windows] git-bash 底下的工具

因為工作轉到 Windows 平台上的關係,所以很多工具改到 Windows 上面運作,跟著在 TortoiseGit 底下使用 git-bash 來維護自己的專案原始碼。結果就是裝了前面提過的 auto-hotkey 使用熱鍵來提昇自己的平台操作速度; 但除了 hotkey...