2012年12月6日 星期四

find 和 xargs 包含空白

某次剛好遇到想要計算 code 的總行數,

就下了這樣的指令,:

find . -name "*.cpp" | xargs wc -l

在我的電腦上可以正常運作,只是在 e0 的電腦上不行,

研究了一下發現是因為檔名中有空白的問題,

找到了這個解法,:

find . -name "*.cpp" -print0 | xargs -0 wc -l

find-print0 是將每個輸出的結尾加上 null,

xargs-0 則是將分隔的符號由空白改成 null

所以就可以解決 find 後檔名有空白的問題了。

2012年11月16日 星期五

LibreOffice 打字時崩潰

LibreOffice 打字時崩潰

用 ibus 在 LibreOffice 打字時有時候 LibreOffice 就會崩潰了,

後來發現崩潰總是發生在,ibus 的輸出緩衝區滿了的時候,

第一個想到的作法就是去改 ibus 的緩衝區設定,

https://github.com/float-tw/float-blog/raw/master/img/ibus_setting.jpeg

不過從這邊修改不知道什麼原因常常會自己又變回 4 或 8 之類得很小的數值,

另外找到了從 gconf-editor 設定的方式(不過限定於新酷音)

在這個項目下 desktop -> ibus -> engine -> Chewing -> maxChiSymbolLen

https://github.com/float-tw/float-blog/raw/master/img/gconf_chewing_setting.jpeg

只是這種設定只是治標不治本,當打超出設定的緩衝區時還是會崩潰 Orz

2012年11月15日 星期四

停用 F10 選單鍵 (ubuntu 12.04)

之前在 mosut 聚會聽到了 mc 這個 cli 的檔案管理程式

今天想說來是用看看好了, mc 裡面的離開是 F10,

由於 F10 在 gonme-terminal 預設是開啟選單,所以就依照之前 這篇 把 F10 disable 了,

在 mc 裡面就可以正常離開了,不過發生了一件事,竟然跳出了右鍵選單,

結果到處試了一下,F10 好像被設定成選單鍵了,原本在 stackoverflow 找到用 compizconfig-settings-manager

可以設定,不過似乎找不到對應的設定,後來有找到了下面的方式:

mkdir -p ~/.config/gtk-3.0
cat <<EOF > ~/.config/gtk-3.0/gtk.css

@binding-set NoKeyboardNavigation {
     unbind "<shift>F10"
}

* {
     gtk-key-bindings: NoKeyboardNavigation
}

EOF

也就是先建立 ~/.config/gtk-3.0/gtk.css 這個檔案,並且加入 unbind 的設定,

這樣就 OK 了,在 12.04 unity 下測試是正常的。

2012年11月10日 星期六

使用 ffmpeg, avconv 做螢幕錄影

ffmpeg

ffmpeg -f x11grab -r 25 -s 1366x768 -i :0.0 -sameq /tmp/out.mp4

avconv

avconv -f x11grab -r 25 -s 1366x768 -i :0.0 -same_quant /tmp/test.mp4

說明

f x11grab 從螢幕

-r 25 fps

-s 1366x768 解析度

-i :0.0 錄影的位置,可以用+改變位置 ex. -i :0.0+10,20

-sameq & -same_quant 與來源使用相同的 quantizer,avconv 的 man page 說不等同於畫質

,只是不知道還有什麼方式來讓畫質變好 Orz

最後檔名為輸出的檔案,ctrl-c 停止錄影

2012年11月8日 星期四

open in terminal

開啟 terminal(cmd) 於特定目錄

有時候在寫程式的時候會需要在特定目錄執行程式,

不管在 linux, windows 底下如果直接開啟 terminal 以後,

還要在 cd, cd, cd 半天才能到那個目錄下(如果那個目錄很深)

介紹兩個方法來解決這個問題

第一種

Linux 下安裝 nautilus-open-terminal

安裝後在瀏覽資料夾的時候按右鍵就會有 Open in terminal 的選項的

Windows (7/vista) 按住 shift 按右鍵會有 在此處開啟命令視窗

第二種

不管 linux, windows 開啟一個 terminal 以後,

把資料夾直接拉進 terminal 後,該路徑就會在 terminal 上了,

所以可以先打好 cd 再把資料夾拉進去。

2012年10月18日 星期四

[開箱] KBtalKing Oni

[開箱] KBtalKing oni

雖然是開箱文,可是不知道要寫什麼....

就..貼個圖,然後寫一些心得吧Orz


盒子正面來一張,簡單的 oni 字樣

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_172322.jpg

背面 KBtalKing

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_172351.jpg

再多來幾張

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_225102.jpg https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_225135.jpg https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_225141.jpg

打開盒子,裡面還有個小盒子,鍵盤外面在包一層塑膠套保護

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_172506.jpg

先來一張全身照

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_225244.jpg

側面

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_190659.jpg

enter 特寫

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_190741.jpg https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_225446.jpg https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_225456.jpg

稍微遠一點

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_190543.jpg

左邊

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_225316.jpg

Caps Lock 燈號,白燈,不過鍵帽沒有開孔,所以燈是從旁邊透出來的

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_225426.jpg https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_225432.jpg

背面銘版,是 one 字樣

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_231014.jpg

和 Ducky 9000 合照

https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_230236.jpg https://github.com/float-tw/float-blog/raw/master/img/oni/IMG_20121016_230241.jpg

這隻是茶軸,跟合照的 Ducky 9000 一樣,不過打起來的感覺比較紮實一點,

不知道是 PBT 鍵帽、是新的還是什麼其他原因,現在覺得 Ducky 比較輕快一點,

灰色的鍵帽看起來蠻漂亮的,不過技術不好拍不太出來Orz。

2012年10月11日 星期四

取消 gnome terminal F1 幫助頁面

取消 gnome terminal F1 幫助頁面

每次在 gnome terminal 按到 F1 都會跳出該死的幫助頁面,

或是當需送出 F1 的時候,還是套出該死的幫助頁面。

編輯(E) -> 鍵盤捷徑鍵(K)... 找到求助.內容,點下去,

按下 Backspace 停用他吧....

2012年10月7日 星期日

tig

tig

tig 是把 git 倒過來寫,

是一個可以用來取代 git log 的好東西,沒什麼好介紹的,用下去就知道了,

簡單明瞭, h 可以顯示一些說明

https://github.com/float-tw/float-blog/raw/master/img/tig_1.jpeg https://github.com/float-tw/float-blog/raw/master/img/tig_2.jpeg

2012年9月22日 星期六

[Vim] 拼字檢查

[Vim] 拼字檢查

這是一個 Vim 7 新增的功能,可以作拼字檢查。

另外在某些文件中(例如 c file),只會針對是文字的部份作檢查,

例如 ch = "appll" 會被認為是拼字錯誤,而 appll = 10 則不會。

使用

開啟拼字檢查 set spell

關閉拼字檢查 set nospell

並且可以使用 set spelllang=en_GB 來設定檢查的語言

跳躍

啟動拼字檢查後可以使用 [s ]s 來前往前後尋找拼字錯誤的地方。

修正

游標在錯字上按下 z= 會進入選擇頁面,利用數字選擇正確的拼字。

補齊

在啟動拼字檢查的狀態下,利用 ^x s 便可以作拼字的補齊。

其他

zg 新增自訂正確拼字, zug 刪除

zw 刪除自訂錯誤拼字, zuw 刪除

另外,在參考了 Tsung's Blog

我也把 F2 設定成了切換檢查的開關,以及修改錯字標記的樣式

hi clear SpellBad
hi SpellBad term=underline cterm=underline ctermfg=red
map <F2> :set spell!<CR><Bar>:echo "Spell check: " . strpart("OffOn", 3 * &spell, 3)<CR>

2012年8月1日 星期三

[shell script] 列出所有檔案

[shell script] 列出所有檔案

今天要把一堆檔案轉檔,所以用了 avconv + shell script

首先要列出要轉檔的檔案,根據以前的印象我就這樣寫了

for i in $(ls)
do
    echo $i
done

在一些情況下他應該可以正常運作,

可是...這些檔案有空白阿...所以變數 i 就會拿到不完整被空白分開的檔名。

網路上查到了一些用 find, print... 的解法,看起來都超複雜的...

最後找到了這個

for i in *
do
    echo
done

這個寫法可以用在 bash sh

另外 csh tcsh 可以這樣寫

foreach i (*)
    echo $i
end

原來可以這樣寫...太棒了!

2012年7月29日 星期日

[Linux] 關閉螢幕

[Linux] 關閉螢幕

通常筆電上都有個 Fn + F? 可以把螢幕關掉省省電之類的,

可是現在在用的 x220 沒有阿,在 windows 好像可以用 thinkpad 的軟體把

Fn + F3 設定程關閉螢幕,只是在 Ubuntu 下他就只能跳出電源統計 Orz。

目前找到了兩個方法:

一個是 xset 另一個是 vbetool

xset dpms force off

螢幕會關閉,而且鍵盤、滑鼠移動的時候就會喚醒螢幕。

所以剛好拿來給快速鍵用,我把他綁到 ThinkVantage 上。

sudo vbetool dpms on
sudo vbetool dpms off

這個需要權限而且不會自動喚醒,不過還是提一下。

2012年7月13日 星期五

github push 時仍然需要帳號密碼

github push 時仍然需要帳號密碼

有一天在把改好的東西 push 到 github 上時發現還是需要輸入帳號密碼。

可是我已經將 public key 放到 github 上了,主機上也有對應的 private key,

而我在其他電腦上也作過相同的事,卻不需要帳號密碼。

找不到原因的情況下只好求助 CrBoy 大大,

經過大大的提點以後發現我的 remote url 所用的是 https 的而不是 ssh 的,

這應該是跟在 clone repo 時所使用的 url 有關。

其中一個修改方法是在 repo 中的 .git/config 裡修改,

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
# ssh
url = git@github.com:float-tw/float-blog
# https
url = https://github.com/float-tw/float-blog.git

將 url 的部份由 https 改為 ssh 就可以了,而 url 寫法可以在 github 的 repo 頁面找到。

2012年7月4日 星期三

Run B2G on Desktop

Run B2G on Desktop
如果想玩玩看 B2G 卻沒有手機怎麼辦?
沒關係,在電腦上玩,除了使用模擬器以外還有例外的選擇,
其中一個是編譯一份電腦上可以跑的 B2G 。

環境

我所使用的環境是 Ubuntu 12.04 LTS x86_64

download source

要在電腦上跑起 B2G 需要兩個部份,
一個是 B2G 的主程式,另一個是 gaia 也就是 B2G 的使用者界面。
$ hg clone http://hg.mozilla.org/mozilla-central
$ git clone https://github.com/mozilla-b2g/gaia.git

build

B2G

B2G 的部份我們需要先建立一個設定檔 .mozconfig
下面是我所使用的設定
mk_add_options MOZ_MAKE_FLAGS="-j6"
mk_add_options MOZ_OBJDIR=../build

ac_add_options --enable-application=b2g
ac_add_options --enable-debug
ac_add_options --enable-profiling
ac_add_options --with-ccache=/usr/bin/ccache
MOZ_OBJDIR 的部份是設定編譯後檔案存放的位置,不指定的話會放在 mozilla-central 下的 obj-xxxxx
MOZ_MAKE_FLAGS 設定編譯的參數, -j 接的數字是同時執行的 jobs 數量,適當調整可以加快編譯的速度
--enable-application=b2g 這邊設定所要編譯的程式( mozilla-central 包含了 Firefox, Thunderbird, B2G 等)
--with-ccache=/usr/bin/ccache 是使用 ccahe 來加快編譯,詳細內容可以參考 這篇
寫完設定檔後就可以開始編譯了,Makefile 是 client.mk
$ make -f client.mk
整個編譯的過程需要大約半小時左右吧,另外如果有缺少編譯需要的套件,
就安裝一下吧,我是沒遇到,大概裝了太多東西了....

gaia

編譯 gaia 前呢先設定兩個環境變數,一個是 gaia repo 的位置,
另一個就跟他的名稱一樣是 gaia 的 domain
$ GAIA=PATH_TO_GAIA_REPOSITORY
$ GAIA_DOMAIN=gaiamobile.org
接下來就可以編譯了
$ DEBUG=1 make
DEBUG=1 可加可不加,主要就是影響一些 debug 訊息

執行

完成 B2G 和 gaia 的編譯以後就可以執行了!
不過在執行前先設定一下 /etc/hosts 在裡面加上
127.0.0.1     gaiamobile.org
127.0.0.1     homescreen.gaiamobile.org
127.0.0.1     dialer.gaiamobile.org
127.0.0.1     sms.gaiamobile.org
127.0.0.1     browser.gaiamobile.org
127.0.0.1     maps.gaiamobile.org
127.0.0.1     camera.gaiamobile.org
127.0.0.1     gallery.gaiamobile.org
127.0.0.1     video.gaiamobile.org
127.0.0.1     market.gaiamobile.org
127.0.0.1     music.gaiamobile.org
127.0.0.1     settings.gaiamobile.org
127.0.0.1     clock.gaiamobile.org
127.0.0.1     crystalskull.gaiamobile.org
127.0.0.1     penguinpop.gaiamobile.org
127.0.0.1     towerjelly.gaiamobile.org
127.0.0.1     wikipedia.gaiamobile.org
127.0.0.1     cnn.gaiamobile.org
127.0.0.1     bbc.gaiamobile.org
127.0.0.1     nytimes.gaiamobile.org
127.0.0.1     calculator.gaiamobile.org
127.0.0.1     system.gaiamobile.org
後面的 gaiamobile.org 則依前面設定的 GAIA_DOMAIN 而定
之後移動到 B2G 的執行檔位置,他會在所設定的 MOZ_OBJDIR 底下的 dist/bin/
$ cd MOZ_OBJDIR/dist/bin
不要移動過去也是可以,我們要執行的就是底下的 b2g 這隻程式
執行時幫他加上 gaia profile 資料夾的位置(profile 會在 gaia make 的時候產生)
$ ./b2g -profile GAIA/profile
上面兩個步驟的 MOZ_OBJDIRGAIA 請自行更換成對應的路徑,
如果沒有意外的話就會看到 B2G 的 screen lock 了
https://github.com/float-tw/float-blog/raw/master/img/b2g_desktop_screenshot.jpeg -profile 的部份我的了解是他會利用後面的 profile 在本機上執行 service,
所以在 netstat 可以看到幾個由 b2g listen 的 port
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:2828          0.0.0.0:*               LISTEN      13371/b2g
tcp        0      0 127.0.0.1:5037          0.0.0.0:*               LISTEN      4702/adb
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      13371/b2g
tcp        0      0 127.0.0.1:4242          0.0.0.0:*               LISTEN      13371/b2g
這時除了在 b2g 本身的界面運行外,也可以試著用其他瀏覽器去連看看,
網址會是 appname.gaiamobile.org:8080 不過基本上要用 Firefox 15 以上才會有比較正常的效果。
如果想要自己丟一個 app 進去試試看的話,現在的 gaia/apps 底下有一個 template 的資料夾,
就是一個空的 app 可以參考他,以及其他其他底下的 app 來寫 manifest.webapp 這個檔案,
app 部份就主要是 HTML 和 javascript ,寫好後放在 gaia/apps 底下後重新 make 即可。
至於 app 的詳細寫法因為不是本篇重點便不詳述。
在參考資料的 gaia hacking 中也有其他多種除了在手機上執行 b2g 以外的方式,
另外如果執行上碰到什麼問題可能是我寫錯的地方也請留言指教,謝謝。

補充

操作的部份
滑鼠
上一頁: esc
Home: home
音量: page up/down
沒找到 power 如果有人找到可以通知我補充一下嗎?謝謝

2012年6月30日 星期六

Git GnuTLS handshake error

在 Ubuntu 11.10, 12.04 底下用 git clone https 的 project 時看到了這個錯誤

error: gnutls_handshake() failed: A TLS packet with unexpected length was received

最簡單的解決方法是改用 http 就可以避開這個問題,

另外的解決方法是把 git 重新編譯,好像是因為 ubuntu 預設的 SSL 是使用 GnuTLS

而 GnuTLS 在處理某些網站的時候會有錯誤 [1]

重新編譯改用 OpenSSL 就可以解決這個問題,下面簡單的編譯流程,和我遇到的問題

首先先不要急著把你的 git 移除,先拿他來下載最新的 git source cdoe

git 官網提供的也是 https 的,自己把他改成 http

$ git clone http://github.com/git/git.git

把 libcurl4-gnutls-dev 換成 libcurl4-openssl dev

$ sudo apt-get install libcurl4-openssl-dev

這時候應該會順便把 libcurl4-gnutls-dev 移除,

同時也可以安裝一下編譯需要的程式、函式庫可以參考 git 資料夾下的 INSTALL 後半段,

或是編譯的時候在依照錯誤訊息去安裝。

編譯流程

$ make configure
$ ./configure
$ make all doc
# make install install-doc install-html

這邊我遇到的問題是,如果照著 INSTALL 裡的 $ ./configure --prefix=/usr

編譯出來的程式還是有相同的問題,不要加或是用 --prefix=/usr/local 才行

要編譯 doc 的話要安裝 ASCIIDOC 而 doc 編譯的時間看起來比 git 本身還久 Orz

在 install 前可以先拿編譯完在 git 資料夾下的 git 測試看看,如果沒有相同的 error 後,

再把原本的 git 移除,移除後在以 root 安裝

2012年6月21日 星期四

Build and Install B2G

Build and Install B2G

環境

括號為官方建議

  • Ubuntu 12.04 LTS x86_64 ( 11.10 x86_64 )
  • 2GB RAM ( 4GB )
  • 10GB swap space ( at least 4GB )
  • at least 80GB hard disk space
  • Samsung Nexus S GT-I9023 with ICS-kernel ( Samsung Nexus S[I9020,I9023], S2[I9100] )

需要的 tools

$ sudo apt-get install ia32-libs gcc-multilib g++-multilib bison \
flex gperf lib32z1-dev lib32ncurses5-dev lib32ncursesw5-dev \
libidl-dev lib32gomp1 autoconf2.13 ccache libx11-dev \
lib32readline-gplv2-dev lib32tinfo-dev

先安裝 java jdk 方便後面的步驟

$ sudo apt-get install openjdk-6-jdk

安裝 Android SDK

先到 Android SDK starter package 下載

解壓縮後執行 $ ./android-sdk-linux/tools/android

然後僅勾選頁面中的 Android SDK tools, Android SDK platform-tools 後,點選右下角的 Install 2 packges...(數字是由勾選的數目決定)

完成安裝後在 ~/.bashrc 中更新 PATH 方便使用

# in ~/.bashrc
# 依照 Android SDK 放置的路徑調整
PATH=$PATH:/path_to_android-sdk-linux/platform-tools
export PATH

將手機的 USB debugging 打開,應該在 應用程式->開發->USB 偵錯

接著設定 /etc/udev/rules.d/51-android.rules

#in /etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"

編譯

這部份和之後的刷機官方的說明有修改過,用幾個 script 通包了,還像蠻懶人包的,

原本是用 Makefile 那我還是依照當初用 Makefile 的作法介紹(這部份也沒有很複雜),

script 的部份可以參考官方文件

Preparing_for_your_first_B2G_build

Building_Boot_to_Gecko

首先從 github 下載 B2G 專案

git clone https://github.com/andreasgal/B2G.git

在這邊 git 我有遇到一個問題,當從 https clone 的時候會有錯誤

error: gnutls_handshake() failed: A TLS packet with unexpected length was received

改成 http 可以暫時解決這個問題,不過後續還很多 https 的部份,

我查到的解決辦法是把 git 抓回來自己重新編譯。

接下來 Makefile 的部份也可以參考 B2G 專案下的 INSTALL

首先把完整的專案下載

$ cd B2G
$ make sync

接著 config ,不同手機要用不同的,這邊以 Nexus S 做範例

$ make config-nexuss-ics

由於 gonk-ics 並沒有包含在前面 sync 完專案中所以這個步驟還會去作 make gonk-ics-sync

上面兩個部份都非常花時間,一兩個小時以上跑不掉,在加上 sync 錯誤的話要重作幾次,

建議在網路狀況好一點的時後做,或是睡前(不過就怕起來看到錯誤...)

完成以後就可以開始編譯 gonk

$ make gonk

這步驟也是有點久的,完成後編譯其他部份

$ make

刷機

首先把手機解鎖, Makefile 裡面連這個也有,夠懶吧

$ make unlock-bootloader
或是想要自己來
$ fastboot oem unlock

這邊要提一下,幾乎全部寫在 Makefile 中的動作都是當作手機是開機的狀態,

所以如果需要進 bootloader 他會先 adb reboot bootloader

如果手機已經在 bootloader 下的話會錯誤,就先把手機正常開機吧。

然後就可以開始刷機了,嗯這個也都寫好好了

$ make flash-only

這邊完成後手機就會重新開機到 B2G 底下了,不過看到的應該是 Server not found 的畫面,

因為 gaia 還沒安裝,所以接著安裝 gaia

$ make install-gaia

這個步驟會去把 gaia 裡的 home, apps 做快取然後手機上,所以如果不想在上面看到一堆程式,

可以在 B2G/gaia/apps 底下刪掉,想放進自己寫也可以丟進去。

這樣就完成了。

因為有些部份是照印象寫的,如果有漏掉或錯誤的部份煩請告訴我一下,謝謝。

2012年6月19日 星期二

Build Android-ICS Kernel for Nexus S

Build Android-ICS Kernel for Nexus S

環境

  • Ubuntu 12.04 LTS x86_64
  • GNU make 3.8.1
  • Git 1.7.11.rc2
編譯環境需求可以參考 http://source.android.com/source/initializing.html
ps. 有部份完整編譯 android 所需要的。

下載source

首先要先找到想要編譯 kernel 的 git log 這邊必須下載 drvice project
而 project 命名方式是 device/<vendor>/<name>
而 Nexus S 是 samsung 出的然後名字叫 crespo
$ git clone https://android.googlesource.com/device/samsung/crespo
$ cd crespo
$ git log kernel
之後可以在 git log 裡面找所需要的 commit
接下來下載 kernel source
$ git clone https://android.googlesource.com/kernel/samsung.git
下載、設定 toolchain
$ git clone https://android.googlesource.com/platform/prebuilt
$ export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

編譯

$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ cd samsung
$ git checkout <commit_from_first_step>
$ make herring_defconfig
$ make menuconfig
$ make -j$(($(grep -c processor /proc/cpuinfo) * 3 / 2))
make herring_defconfig使用預設的設定
make menuconfig再去做所需要的調整(像我是想開啟 Oprofile 的支援)
<commit_from_first_step>的部份就是在前面 git log 裡找到的 commit
make 加上 -j 加速一下編譯,
完成後就可以在 samsung/arch/arm/boot 底下找到 zImage 了
至於解開 boot.img 更換 zImage 在重新打包的步驟可以在參考資料的後兩篇找到。
燒錄所需要的 adb, fastboot 可以下載 android sdk

2012年6月15日 星期五

xdotool 簡單介紹

xdotool

原本希望找個程式幫我重複做幾個無聊的動作,

而一開始想到的東西是 sikuli ,而無奈他執行的時候一直 carsh,

另外花時間解決這個問題感覺不太符合效益,所以就找到了這個東西。

簡介

套件說明:simulate X11 keyboard/mouse input

也就是在 X Windows 下模擬鍵盤和滑鼠的輸入

安裝

ubuntu/debian

sudo apt-get install xdotool

其他可以參考 xdotool 的 project 頁面

範例

鍵盤輸入 a

xdotool key a

按住 a 放開 a

xdotool keydown a
xdotool keyup a

滑鼠移動到 (100, 200) 的位置

xdotool mousemove 100 200

按下滑鼠左鍵(左鍵:1、滾輪:2、右鍵:3、滾輪上/下:4/5)

xdotool click 1

按住滑鼠放開滑鼠

xdotool mousedown
xdotool mouseup

取得目前滑鼠位置

xdotool getmouselocation

各個動作下還可以加上一些參數,下面一個 man page 裡的例子

送出 ctrl + c 到所有 title 是 'gdb' 的視窗中

xdotool search --name gdb key ctrl+c

比較詳細的資料可以參考 man page 中的說明

執行方式

執行方式大概有下面幾種

直接下命令

像上面範例中的作法一樣,直接在 CLI 上輸入

xdotool click

從檔案中讀取指令

xdotool filename

從標準輸入(stdin)讀取

可以搭配 redirection 來從檔案中讀取

xdotool -
xdotool - < filename

寫成 script

#!/usr/bin/xdotool

mousemove 100 200
click

其他

有一 xdotoolgui 的東西,似乎是可以直接用來編輯 xdotool 的命令,

不過我的需求沒有很複雜,而也他也不再套件庫中,所以我就沒有深入研究。

2012年6月10日 星期日

Graphviz

Graphviz

介紹

Graphviz是一套open source的圖形視覺化軟體,
簡單的來說我們可以用文字描述nodes之間的關係,就可以將圖畫出來。

安裝

Graphviz官網的Download頁面就可以下載到各作業系統的版本,
包含Linux, Solaris, Windows, Mac。
如果是Linux的話也可以直接從套件庫安裝,以Ubuntu/Debian為例的話
sudo apt-get install graphviz

語法

Graphviz是是使用一種稱作dot語言的圖形描述語言來描述圖形,
而在Graphviz中又分為無向圖和有向圖,底下各舉一個範例。
  • 無向圖
graph G
{
        A -- B;
}
上面的code可以畫出下面這張圖
https://github.com/float-tw/float-blog/raw/master/img/undirected_graph.jpg
  • 有向圖
digraph G
{
        A -> B;
}
這段則可以畫出下面這張
https://github.com/float-tw/float-blog/raw/master/img/directed_graph.jpg
有向圖和無向圖的差異主要有兩個地方,第一個是宣告圖形的關鍵字,
無向圖是graph,有向圖是digraph,另一個是圖形連接用的符號,
無向圖是用--,有向圖是用->

編譯方式

Graphviz包含了dot, neato, circo, twopi, fdp, dotty, lefty等工具,
其中dot, neato, circo, twopi, fdp都是產生圖形的工具,差異是產的圖形的方式不同,
dotty,lefty則是圖形化的修改工具。
以dot來舉例,假設輸入檔案為input.dot,希望輸出jpg格式的檔案,命名為output.jpg,
可以用下面兩種方式:
dot -T jpg input.dot -o output.jpg
or
dot -T jpg input.dot > output.jpg

形狀和排列

有時候輸出的圖形可能和我們想像的不一樣,像是
digraph G
{
        a -> b;
        a -> c;
}
https://github.com/float-tw/float-blog/raw/master/img/graphviz_ex1.jpg
如果希望a和b可以擺在相同高度,那可以這樣修改
digraph G
{
        a -> b;
        a -> c;
        {rank=same; a; b;}
}
https://github.com/float-tw/float-blog/raw/master/img/graphviz_ex2.jpg
另外,node和arrow等等的形狀、顏色都是可以修改的在document裡面可以找到很多範例
下面隨便舉個例子(從node-shape的範例修改)
digraph G
{
        rankdir=LR
        node [shape=box, color=blue]
        node1 [style=filled]
        node2 [style=filled, fillcolor=red]
        node0 -> node1;
        node1-> node2[arrowhead=vee];
}
https://github.com/float-tw/float-blog/raw/master/img/graphviz_ex3.jpg

2012年5月26日 星期六

開張

開張

domain name

在申請完float.tw這個domain以後就想說可以用他來作什麼
後來決定就來寫一下blog吧,所以就這樣開張了

設定DNS

這段是要來抱怨的XD,基本上我完全沒有設定DNS的經驗
所以就依照blogger的說明中去設定,他的說明大概長這樣
https://github.com/float-tw/float-blog/raw/master/img/google-dns-set-exp.jpeg
畫紅線的部份寫了 看到名稱時,只需要輸入『www』 所以我就很天真的這樣設定
https://github.com/float-tw/float-blog/raw/master/img/dns-set.jpeg
blogger這邊是這樣
https://github.com/float-tw/float-blog/raw/master/img/blogger-set.jpeg
然後在設定DNS的時候網頁有提到可能24-48小時才會生效,所以我就開始癡癡的等
知道怎麼設定DNS的人大概知道怎麼一回事了......
一天過去了還是沒有生效,所以就請了小畢大大幫我看了一下
原來主機應該設定成domain前面的東西阿Orz

reStructuredText

順帶一提
這篇文章是用 reStructuredText 寫成的
然後預計會使用 github 來管理這個部落格的文章