每次都會忘記要怎麼寫...Orz
記性越來越爛.
參考的網址,
http://www.chengxusheji.com/archives/121.html
忽略目錄.
build/ , 忽略所有 build/ 目錄資料夾
如果有以下情況
build/test1/
build/test2/
build/test3/
build/
!build/test3/
則變成忽略所有build/目錄, 但是 build/test3/ 依然會被記錄
/build/
/foo/
表示gitignore不會遞迴紀錄,只會把目前的目錄下的 build/, foo/ 忽略
build/*.tmp
表示只會忽略 build/ 下的所有 *.tmp 檔案
但是 build/another_folder/*.tmp 子目錄下的 *.tmp 就不會被忽略,依然會被記錄
程式人生阿
2015年4月7日 星期二
2015年4月1日 星期三
timer create 之value 搞錯
把timer structure 的member 意義搞反,真是蠢到不行
難怪我一直覺的polling的時間間隔好像怪怪的
struct itimerspec *it=itimerspec;
memset(evp,0,sizeof(struct sigevent));
evp->sigev_signo = SIGUSR1;
evp->sigev_notify = SIGEV_SIGNAL;
timer_create(CLOCK_REALTIME, evp, tid)
interval :polling time的間隔
value: 第一次觸發signal function的時間
用下面的例子解釋,
1秒後觸發 signal function
之後, 每500ms就觸發一次polling function
it->it_interval.tv_sec = 0;
it->it_interval.tv_nsec = 500*1000*1000;
it->it_value.tv_sec = 0;
it->it_value.tv_nsec = 1;
難怪我一直覺的polling的時間間隔好像怪怪的
struct itimerspec *it=itimerspec;
memset(evp,0,sizeof(struct sigevent));
evp->sigev_signo = SIGUSR1;
evp->sigev_notify = SIGEV_SIGNAL;
timer_create(CLOCK_REALTIME, evp, tid)
interval :polling time的間隔
value: 第一次觸發signal function的時間
用下面的例子解釋,
1秒後觸發 signal function
之後, 每500ms就觸發一次polling function
it->it_interval.tv_sec = 0;
it->it_interval.tv_nsec = 500*1000*1000;
it->it_value.tv_sec = 0;
it->it_value.tv_nsec = 1;
2014年12月25日 星期四
在android shell下,no such file or directory 找不到檔案
沒在Android上寫程式過啊,還以為一樣都是linux作法應該都一樣
卻忘了最重要的事情啊,Android改寫過gnu library阿.
一般情況下用的cross compile編出的執行檔,完全不能在android上shell執行
用adb把檔案送到機器上卻發現,
/system/bin/sh: ./test: No such file or directory
如果要編出簡單的測試執行檔要加 -static,不能動態連結阿.
arm-linux-gcc -o test -Wall test.c -static
REF:
http://bbs.csdn.net/topics/390349057
真的是改天要找時間研究怎麼在build android用的執行檔,真是太蠢了..Orz
卻忘了最重要的事情啊,Android改寫過gnu library阿.
一般情況下用的cross compile編出的執行檔,完全不能在android上shell執行
用adb把檔案送到機器上卻發現,
/system/bin/sh: ./test: No such file or directory
如果要編出簡單的測試執行檔要加 -static,不能動態連結阿.
arm-linux-gcc -o test -Wall test.c -static
REF:
http://bbs.csdn.net/topics/390349057
真的是改天要找時間研究怎麼在build android用的執行檔,真是太蠢了..Orz
2014年12月9日 星期二
linux command time 的用法
看man page 還是有點模糊.
這邊試了一下發現time要用/usr/bin/time的才會有 --format 的參數可以吃。
要不然都是一直跳出 invalid argument
不過有一個參數還滿有用 %C
=>顯示這次計時用的命令跟參數
一般預設的時間結果,
real $e
user %U
sys %S
eg:
time --format "%C real: %e[sec] " du -h -d 1
這邊試了一下發現time要用/usr/bin/time的才會有 --format 的參數可以吃。
要不然都是一直跳出 invalid argument
不過有一個參數還滿有用 %C
=>顯示這次計時用的命令跟參數
一般預設的時間結果,
real $e
user %U
sys %S
eg:
time --format "%C real: %e[sec] " du -h -d 1
2014年12月8日 星期一
linux下掛載android平板
在linux下本來以為跟一般USB storage依樣會出現在 /media下面,
不過看來完全不是這麼一回事阿.
看起來好像是因為MTP檔案格式的問題,最後在下面的link找到類似的答案.
路徑會是在/run/user/$USERID/gvfs/$PAD_MTP_URL/xxxxxxxxxx
找了一個早上
http://askubuntu.com/questions/342319/where-are-mtp-mounted-devices-located-in-the-filesystem
不過看來完全不是這麼一回事阿.
看起來好像是因為MTP檔案格式的問題,最後在下面的link找到類似的答案.
路徑會是在/run/user/$USERID/gvfs/$PAD_MTP_URL/xxxxxxxxxx
找了一個早上
http://askubuntu.com/questions/342319/where-are-mtp-mounted-devices-located-in-the-filesystem
2014年6月26日 星期四
github 使用 -- CAfile fail 解法
出師不利,一開始就遇到問題
error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none while accessing https://github.com/githankH/The_Swift_Programming_Language_zh-TW.git/info/refs?service=git-upload-packfatal: HTTP request failed
解法:
**
git remote -v
=> 看目前有哪些遠端分支
git remote rm $name
=> 砍掉目前的 $name 遠端分支
$ export GIT_SSL_NO_VERIFY=1不過變成upload的時候會需要敲github的帳號密碼.
**
git remote -v
=> 看目前有哪些遠端分支
git remote rm $name
=> 砍掉目前的 $name 遠端分支
2013年4月15日 星期一
CTags 使用
Trace C Code 的Ctags,
沒辦法誰叫 source insight 這麼貴.(攤手)
要下載pacakge的可以參考這篇文章
CTags man page: 教你怎麼用指令
最常用的就是 ctags -R -f .tags. 在當前目錄以下的所有檔案建立tag
流程就分成兩步,
1. 把所有的想建立tag的 c,h 檔案都path都寫到 .tags, 這個tagfile可以自己命名. 重點是下一部產生的 .tags
2. 用ctags.exe讀取剛剛產生的tagfile,產出ctag format的檔案.
在 Sublime Text 選擇建立rebuild tags, 這樣就可以把source code跟tag建立起來了
# ctags -L tag_source -f .tags
=> -L, 讀取含有檔案列表的文字檔
=> -f, 產出 tags 檔案
PS: .tags 檔案要存放在當前工作目錄下,要不然Sublime Text 會找不到
PS:
解釋這裡 find 的用法
-prune ,忽略不看的意思
-path, 跟 -name很類似,但是這個是用來指定目錄路徑
-o , -or 的意思,用來作邏輯表示
-name, 找檔名符合我們的表示
"*.[ch]", 任何是以 '.c' 或 '.h'結尾的檔案
整串組合起來的意思是
find .
=> 找尋當前目錄下所有的檔案,
-path './drivers/iav2 ' -prune -o
-path './drivers/gpu' -prune -o
=>其中目錄路徑為./drivers/iav2或./drivers/gpu都省略不看
-name "*.[ch]
=>其它的剩餘目錄中如果有檔案結尾是.c或.h的
-print
=>全部列印出來
# find ./ -path './drviers/iav2' -prune -o -path './drivers/gpu' -prune -o -name "*.[ch]" -print
=> 找尋當前目錄下所有的檔案,其中目錄路徑為./drivers/iav2或./drivers/gpu都省略不看,其它的剩餘目錄中如果有檔案結尾是.c或.h的全部列印出來
沒辦法誰叫 source insight 這麼貴.(攤手)
要下載pacakge的可以參考這篇文章
CTags man page: 教你怎麼用指令
最常用的就是 ctags -R -f .tags. 在當前目錄以下的所有檔案建立tag
流程就分成兩步,
1. 把所有的想建立tag的 c,h 檔案都path都寫到 .tags, 這個tagfile可以自己命名. 重點是下一部產生的 .tags
2. 用ctags.exe讀取剛剛產生的tagfile,產出ctag format的檔案.
在 Sublime Text 選擇建立rebuild tags, 這樣就可以把source code跟tag建立起來了
1)建立source
# find ./ -path './drviers/iav2' -prune -o -path './drivers/gpu' -prune -o -name "*.[ch]" -print > tag_source2)產生 tags 檔,
sublime text 2 只接受 .tags 的格式,# ctags -L tag_source -f .tags
=> -L, 讀取含有檔案列表的文字檔
=> -f, 產出 tags 檔案
PS: .tags 檔案要存放在當前工作目錄下,要不然Sublime Text 會找不到
PS:
解釋這裡 find 的用法
-prune ,忽略不看的意思
-path, 跟 -name很類似,但是這個是用來指定目錄路徑
-o , -or 的意思,用來作邏輯表示
-name, 找檔名符合我們的表示
"*.[ch]", 任何是以 '.c' 或 '.h'結尾的檔案
整串組合起來的意思是
find .
=> 找尋當前目錄下所有的檔案,
-path './drivers/iav2 ' -prune -o
-path './drivers/gpu' -prune -o
=>其中目錄路徑為./drivers/iav2或./drivers/gpu都省略不看
-name "*.[ch]
=>其它的剩餘目錄中如果有檔案結尾是.c或.h的
=>全部列印出來
# find ./ -path './drviers/iav2' -prune -o -path './drivers/gpu' -prune -o -name "*.[ch]" -print
=> 找尋當前目錄下所有的檔案,其中目錄路徑為./drivers/iav2或./drivers/gpu都省略不看,其它的剩餘目錄中如果有檔案結尾是.c或.h的全部列印出來
訂閱:
意見 (Atom)