2016年5月14日 星期六

Trace code的利器 vim + ctags + gtags(+cscope)

Trace code最重要的就是跳進函式跟列出函式或變數所使用的地方
雖然lxr就可以搞定 但每到一個新環境設定感覺還蠻麻煩的
所以我整理出最快可以完成以上功能的工具與方法

ctags參考:

$ sudo apt-get install exuberant-ctags
$ cd project/
$ ctags -R *

主要就是安裝exuberant-ctags 然後將project下所有資料夾的變數都建立索引

gtags
參考:

$ sudo apt-get install global

$ cd project/
(  $ find . -name "*.[ch]" > gtags.files  )
$ gtags

更改檔案  ~/.vimrc 加上以下兩行 讓gtags可以取代cscope 跟vim整合

set cscopeprg=gtags-cscope
cs add GTAGS

如果code有再更新 只要執行以下指令便可更新索引

$ global -u

cscope+vim參考:

更改檔案  ~/.vimrc 加上以下幾行
nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>

這邊是為了在vim裡使用快速鍵ctrl+\ 然後輸入s或g等指令呼叫cscope
如此便可以不用每次打:cs find s等指令

有了以上的三個元件設定 就能讓vim使用索引跳轉函式跟變數的功能了

例如看到一個函式或變數 就可以用ctrl+] 跳進函式的內容 ctrl+t跳回來
或是輸入ctrl+\後 按s, g, c....等指令 得到結果後一樣可以用ctrl+t跳回來


----------------

但是這個方法有個問題 就是他會用你開啟的檔案目錄為主要搜尋目錄

意思是假設你的project資料夾底下有sub_folder1跟sub_folder2

project
\---- sub_folder1
\--------aaa.c
\---- sub_folder2
\--------bbb.c
如果你把ctags和gtags的資料建在project目錄底下
則如果執行
$ cd project
$ vim sub_folder1/aaa.c 
就沒問題

但是如果你執行
$ cd project
$ cd sub_folder1
$ vim aaa.c
就會有問題 會找不到ctags跟gtags的檔案

因此這裡有人提出一個patch
http://forum.ubuntu.org.cn/viewtopic.php?f=68&t=342099

但如果不改vim就還是乖乖的從project根目錄開檔案吧....

2015年7月14日 星期二

解決 flash player 安裝失敗的問題

最近firefox一直吵著要我更新flashplayer

(firefox可以由
快速檢查一下,讓您的 Firefox 保持健康 — Mozilla
https://www.mozilla.org/zh-TW/plugincheck/ 
這個網站檢查你的外掛程式是不是都是最新版本的)

然後我照著官網說明 更新 卻遇到以下問題

行: 202
字元: 13
錯誤: XXXXX是null 或不是一個物件
程式碼: 0
URL: res://C:\Users\Sue\Desktop\flashplayer18_ha_install.exe/160"

於是我找到這篇
Important Flash Update! « Giveaway of the Day Forums
http://www.giveawayoftheday.com/forums/topic/405198

他遇到的狀況跟我差不多

Line: 202
Char: 13
Error: Unable to set property 'innerHTML' of undefined or null reference
Code: 0
URL: res://C:\Users\Sue\Desktop\flashplayer18_ha_install.exe/160"

解決辦法則是 去這個網站

Installation problems | Flash Player | Windows
https://helpx.adobe.com/flash-player/kb/installation-problems-flash-player-windows.html

在Still having problems? 下載適合你的檔案 主要就是不透過他的安裝器安裝

例如firefox就下載
Flash Player for Firefox - NPAPI

IE就下載
Flash Player for Internet Explorer - ActiveX

下載完成後 關閉所有瀏覽器後安裝 安裝完成後 你就會有最新的flashplayer了!

可以再到這邊檢查一下是不是已經安裝好新版的flashplayer

快速檢查一下,讓您的 Firefox 保持健康 — Mozilla
https://www.mozilla.org/zh-TW/plugincheck/ 







2015年6月30日 星期二

滑鼠游標經過Xshell等黑背景程式視窗會消失的問題

使用Xshell或是其他背景是黑色的程式 會遇到滑鼠滑過去會消失的問題

後來發現是因為滑鼠變成了選取文字的狀態 加上選取文字的游標又是全黑的

因此只要  控制台->滑鼠->指標->選擇文字

beam_r.cur之類不是全黑的游標圖案就好了






參考這篇

http://support.huawei.com/ecommunity/bbs/10155881.html

2015年3月17日 星期二

多音源輸出至同一喇叭(電視盒與電腦共用一個喇叭)

我的房間有提供有線電視 他是將有線的訊號傳到它們自製的電視盒

而那電視盒有提供HDMI和AV端子輸出 接到電腦螢幕的部分

我直接用一個可以提供音源的輸出的HDMItoVGA(因為我的螢幕只有多一個VGA..)

但喇叭方面就麻煩了 喇叭只有一個 所以要想辦法讓他們共用一個喇叭...

一開始買了這個轉接頭 一邊接電腦 一邊接HDMItoVGA的轉接器
 

發現從HDMI轉接器傳出來的音源不夠力

根本蓋不過電腦的音量 聲音超小


後來想說用RCA的紅白音源來跟電腦的音源接在一起 就沒問題了吧
於是就用了這條線


 

















結果....因為兩邊差不多強 所以兩邊的聲音都怪怪悶悶的...
最後 我找到這篇文章 

文章的最後他說 直接用電腦的line-in 就可以解決了!
 

最後買了這條線 一邊接電視盒的RCA(AV端子音源)  一邊接PC的line-in(藍色孔)
 

就OK了!









 

接到電腦後 就可以用軟體控制輸入的音量了!












現在可以一邊用電腦一邊聽新聞(?了!!






2015年2月11日 星期三

Chrome快取資料夾與使用者資料夾設定

因為用了SSD 所以會比較在意硬碟讀寫次數

發現chrome瀏覽器的讀寫頻率非常的高

因此就想要把它的快取目錄設定到ramdisk

但它沒辦法像firefox一樣 可以直接設定系統參數

只能設定啟動的參數 可以參考這篇教學:

http://blog.joaoko.net/archives/2957

可以設定使用者的資料所在位置跟快取資料夾的位置

–user-data-dir=R:\MyPatch\ChromeUserData\ 
–disk-cache-dir=R:\MyPatch\ChromeCache\
   

但這樣設定會發生問題 那就是重開機後使用者資料都不見了

有人說直接備份ramdisk的資料 開機還原就好了 但是我沒辦法XD

因此 我就將設定改成


–user-data-dir=D:\MyPatch\ChromeUserData\ 
–disk-cache-dir=R:\MyPatch\ChromeCache\

把user data放到一般磁碟 快取還是放在ramdisk

但這樣還有個問題 就是chrome開機啟動時

並不會用這個參數.....Orz 

因此會變成兩個chrome 一個用你設定的路徑一個用預設路徑


所以 就另外找到一個方法

http://plog.tc.edu.tw/post/1013/85340

這個方法就是將原來的預設路徑 改成指向你想要路徑的捷徑 
  
在Linux上稱為symbolic link

在Windows上 用mklink建立 (用右鍵的建立捷徑似乎不行)

在開始打上cmd 並執行以下參數

mklink /D "C:\Users\XXXX\AppData\Local\Google\Chrome\User Data" "D:\ChromeUserData"

mklink /D "D:\ChromeUserData\Default\Cache" "R:\Temp"
我的設定方法是 將原來預設的User data目錄指向D槽

但是又想讓快取放在ramdisk裡 因此就加了第二條

把在D槽裡面的使用者資料夾下 快取的目錄 設定到ramdisk裡

這樣就完成了 Chrome瀏覽器使用者資料放在一般硬碟 快取放在ramdisk的設定


P.S.這邊有一點要注意的是 如果mklink指向的資料夾不存在 
  
Chrome瀏覽器會砍掉那個捷徑然後自己新建資料夾

所以指向ramdisk的那個資料夾一定要在開機時建好

我是將windows的temp目錄也設定在ramdisk裡

所以開機才會在ramdisk裡生成Temp目錄

如果ramdisk開機不會生成任何資料夾的話 也可以直接指定R:就好

mklink /D "D:\ChromeUserData\Default\Cache" "R:\"

2014年10月9日 星期四

水樹奈々『禁断のレジスタンス』MUSIC CLIP(Full Ver.)






歌曲在1:14開始 如果不想看開頭的可以直接跳到那邊

10/15發售預定

這首歌一開始是在演唱會聽到的

那時大家手燈的打CALL都亂成一片XD

沒辦法 很多人都是第一次聽到這首歌吧

期待能再聽到她在演唱會現場唱這首歌

讓我拿著我的king blade揮舞!

尤其是副歌的部分 一整個超嗨

2014年9月17日 星期三

Ubuntu中文輸入法無輸入視窗

最近SCIM一直會無預警的死掉

我就想說乾脆換回ibus

但把scim移除乾淨換成ibus後

一直沒辦法指定他為預設輸入法

就算去 語言支援 那邊把ibus設定為預設輸入法也沒用

後來發現有個檔案 ~/.xprofile  裡面的內容如下

export XMODIFIERS="@im=SCIM"
export GTK_IM_MODULE=scim-bridge
scim -d &

我猜是我之前裝scim的時候設定的吧 於是把他改成

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx

然後重新開機就可以在任何程式打中文了


 p.s. 剛剛在打這篇文章的時候 有句 "我猜是我之前"

我打到"我之前"這邊 他一直顯示我知前 我想修正 但他只讓我選"我"和"前" ....

還有我想要打 我的 結果他會出現 我得

然後我往前選 變成我只能選1.我得 而不是 得 的候選字

這點真的很奇怪....

*後來研究一下 發現是要按兩次↓ 就會出現 得 的候選字了

**後來發現 設定中有個 後方選詞 把他關掉就可以了!! 就不會有我說的那個現象