- 9月 15 週六 201215:24
[Android] 常用的adb指令
- 8月 26 週日 201211:14
如何使用gsr偵測Memory Leakage
- 8月 05 週日 201207:45
[Linux] 遞迴搜尋文字-grep
在Linux底下很常使用grep去搜尋某些特定字串,有一些使用方式記錄下來,可以方便以後快速查詢。
[root@www ~]# grep [-acinv] [--color=auto] '搜尋字串' filename
選項與參數:
-a :將 binary 檔案以 text 檔案的方式搜尋資料
-c :計算找到 '搜尋字串' 的次數
-i :忽略大小寫的不同,所以大小寫視為相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字串' 內容的那一行!
--color=auto :可以將找到的關鍵字部分加上顏色的顯示喔!
1.以 grep 尋找一個檔案中的文字:
[root@www ~]# grep [-acinv] [--color=auto] '搜尋字串' filename
選項與參數:
-a :將 binary 檔案以 text 檔案的方式搜尋資料
-c :計算找到 '搜尋字串' 的次數
-i :忽略大小寫的不同,所以大小寫視為相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字串' 內容的那一行!
--color=auto :可以將找到的關鍵字部分加上顏色的顯示喔!
1.以 grep 尋找一個檔案中的文字:
- 7月 28 週六 201214:21
[Git] 工作上常使用到的git指令
@可以看某個git check point的詳細紀錄 git log -p -l 2afeedb08454260516db332d70e661c3ae35e216
@git 退版 git checkout -b GoogleReader 2afeedb08454260516db332d70e661c3ae35e216 說明:新增一個GoogleReader的branch並還原到後面commit point的時間版本
- 7月 22 週日 201213:22
[Android] android debug tool - addr2line
一、目的
當程式運作遇到segmentation fault時,可以使用工具來偵測發生錯誤的位置。
二、範例如下所示
通常一旦出錯,錯誤訊息都會秀出這樣的log,只要記錄下address,就可透過addr2line偵測到程式碼哪一個function出錯。
I/DEBUG ( 31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 31): Build fingerprint: 'generic/sdk/generic:2.3/GRH55/79397:eng/test-keys'
I/DEBUG ( 31): pid: 378, tid: 386 >>> com.example.gltest <<<
I/DEBUG ( 31): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
I/DEBUG ( 31): r0 001dbdc0 r1 00000001 r2 00000000 r3 00000000
I/DEBUG ( 31): r4 00000000 r5 40a40000 r6 4051a480 r7 42ddbee8
I/DEBUG ( 31): r8 43661b24 r9 42ddbed0 10 42ddbebc fp 41e462d8
I/DEBUG ( 31): ip 00000001 sp 436619d0 lr 83a12f5d pc 8383deb4 cpsr 20000010
I/DEBUG ( 31): #00 pc 0003deb4 /data/data/com.example.gltest/lib/libnativemaprender.so
I/DEBUG ( 31): #01 pc 00039b76 /data/data/com.example.gltest/lib/libnativemaprender.so
I/DEBUG ( 31): #02 pc 00017d34 /system/lib/libdvm.so
- 5月 26 週六 201208:32
[Android] Android resource觀念整理
以下整理一下Android resource核心的觀念跟作法,android resource其實也是一個複雜的東西,包含Style與Theme的撰寫,兩者的差異在哪,
以下列出幾點問題如果可以釐清,我想對於應該就已經攻破android resource了。
1.Resource有哪些,String、Color、boolean.......
2.各個名詞解釋,style、theme、attr是什麼,要能夠口頭敘述出來。
2.AttributeSet跟TypedArray是什麼? 兩者有什麼關聯性,在程式碼中怎麼使用。
以下列出幾點問題如果可以釐清,我想對於應該就已經攻破android resource了。
1.Resource有哪些,String、Color、boolean.......
2.各個名詞解釋,style、theme、attr是什麼,要能夠口頭敘述出來。
2.AttributeSet跟TypedArray是什麼? 兩者有什麼關聯性,在程式碼中怎麼使用。
- 11月 29 週二 201121:42
dynamic linking library in linux
最近看到許多linux的新一點的project許多都使用dynamic linking來架構其C程式,其中dlopen這個系列雖然是很lightweight但是卻十分好用,幾年前看到dlopen的使用便覺得很酷,因此寫一個粗淺的文章來談談dlopen library。
不了解dynamic linking library嗎?我想一個例子便是Microsoft的COM架構,這類的方式有許多好處,首先是對於軟體設計人員可以更自由的與其他人開發的library獨立開發。這裡要知道的是他確實是dynamic的來連結,一般的library的linking多是在linker的階段完成,也就是說在你執行ld的時候(或是由gcc呼叫ld)便將library與執行檔的symbol link完成。因此就算你是用shared library依然在link stage後便會與特定的library有連結。
原本這樣的做法很OK,但是隨著軟體設計的彈性需求越來越被重視,一個問題開始出現:我們是不是可以在程式執行時期再來決定library的symbol link。因此一堆相對應的方式開始產生,Microsoft的COM元件便是很成功的一個方案,然而早期在linux卻苦無解決方案,直到dlopen這個library的出現。
其實他很簡單,大多數的動作都可以只用3個function便可以做完,分別是dlopen、dlsym與dlclose。dlopen當然是用來開啟一個動態連結的library,dlsym用來載入相關的symbol link,dlclose用來關閉library。我想這樣應該是有點難以了解,因此我們用一個簡單的例子來說明吧。假設我們有些情況需要求出一個連續整數的平方和,有時候卻要求立方和,現在假設求完和後的程式就跟求平方和或立方和的運算無關了,而且或許未來有4次方和或更高次方的需求,我想這是個可以考慮用dlopen來解決的狀況(好啦...這個例子太殺雞用牛刀...不過只是為了說明....睜隻眼閉隻眼吧)。
首先我們必須先定義好我們的dynamic linking library的interface,因此我們寫下了定義的include檔如下
不了解dynamic linking library嗎?我想一個例子便是Microsoft的COM架構,這類的方式有許多好處,首先是對於軟體設計人員可以更自由的與其他人開發的library獨立開發。這裡要知道的是他確實是dynamic的來連結,一般的library的linking多是在linker的階段完成,也就是說在你執行ld的時候(或是由gcc呼叫ld)便將library與執行檔的symbol link完成。因此就算你是用shared library依然在link stage後便會與特定的library有連結。
原本這樣的做法很OK,但是隨著軟體設計的彈性需求越來越被重視,一個問題開始出現:我們是不是可以在程式執行時期再來決定library的symbol link。因此一堆相對應的方式開始產生,Microsoft的COM元件便是很成功的一個方案,然而早期在linux卻苦無解決方案,直到dlopen這個library的出現。
其實他很簡單,大多數的動作都可以只用3個function便可以做完,分別是dlopen、dlsym與dlclose。dlopen當然是用來開啟一個動態連結的library,dlsym用來載入相關的symbol link,dlclose用來關閉library。我想這樣應該是有點難以了解,因此我們用一個簡單的例子來說明吧。假設我們有些情況需要求出一個連續整數的平方和,有時候卻要求立方和,現在假設求完和後的程式就跟求平方和或立方和的運算無關了,而且或許未來有4次方和或更高次方的需求,我想這是個可以考慮用dlopen來解決的狀況(好啦...這個例子太殺雞用牛刀...不過只是為了說明....睜隻眼閉隻眼吧)。
首先我們必須先定義好我們的dynamic linking library的interface,因此我們寫下了定義的include檔如下
- 10月 30 週日 201108:30
[Flex]如何在tree中使用搜尋功能
Flex裡內建的元件非常豐富,都是能幫助我們能夠快速開發的好幫手, 今天要介紹一下tree此元件,有使用過的人都曉得,若目前要開發的功能 需要主副階層的呈現方式,那麼List可能就不符合我們所想要的囉!此時 tree就派上用場了,本文要介紹就是當tree的類別累積未來越多時,如何 透過搜尋的欄位,快速找尋到我們所要的項目。
這次tree的資料格式是使用XMLList,也是使用XML標籤來定義,如下圖
而tree則是由dataProviderx來接收XML的資料,如dataProvider="{data}"; 要在tree中顯示文字的話,則要定義需擷取的標籤內容是什麼,如 labelField="@name",表示會抓取node裡name裡頭的文字內容顯示在tree上。
簡單介紹程式碼會使用到的flex內建的函式
這次tree的資料格式是使用XMLList,也是使用XML標籤來定義,如下圖
而tree則是由dataProviderx來接收XML的資料,如dataProvider="{data}"; 要在tree中顯示文字的話,則要定義需擷取的標籤內容是什麼,如 labelField="@name",表示會抓取node裡name裡頭的文字內容顯示在tree上。
簡單介紹程式碼會使用到的flex內建的函式
- 10月 26 週三 201110:46
測試SyntaxHighlighter
printf("Hello world!");
printf("Android");
printf("Android");
