2012年12月20日 星期四

include到哪一個檔案

如何知道*.c它們裡面include分別吃到哪一個*.h檔
與Makefile其include的是哪一個檔案

因為,他們會在一堆PATH裡面去找是否有這一個檔案,
但是,
到底是哪一個PATH的檔案,有辦法知道嗎?

透過outlook接收GMail信件

有下面幾點要求(問題)
1. 在兩台電腦以上的電腦可以同時收到信件(設定的時候,同時會把寄件備份的信件收下來)
2. 移動信件資料夾在非系統槽(如何在建立pop3前就先設定好)
3. 在GMail保留信件,特定時間,會自動刪除
4. 在垃圾筒刪除信件的時候,就在Server刪除信件
5. 在outlook匯入聯絡人,在寫信件的時候,會出現兩個聯絡人的選項
6. GMail有傳送限制
7. iMAP與POP3的差異缺點

等候更新...

參考資料:
為什麼我發送的郵件顯示在了我的郵件客戶端的收件箱中?
某些郵件未能下載
我如何在行動裝置或多個裝置上使用 POP?
Gmail的一些特點
將您的 Outlook 資料檔移至其他位置

2012年12月17日 星期一

RamDisk on XP

如何使用到XP上面3.25G到4G這一個位置的記憶體哩?
一般的RamDisk軟體只是把記憶體當作Disk使用,
但是,是只有把認得的記憶體區塊當作RamDisk使用,
而在XP中,3.25G-4G的這一塊記憶體區塊因為系統有專門的用途,
就沒有辦法被認到,就沒有辦法使用,
但是,試到VSuite Ramdisk (Free Edition)是可以使用的!

之前使用過Gavotte Ramdisk據說在XP下可以使用到上述的3.25G-4G的這一塊記憶體位址。
我也不知道怎麼去驗証,
我就認為是可以了。

今天有空閒,突然想來確認一下,是不是真的有使用到這一個記憶體位址。
找來找去,發現可以透過「Windows工作管理員」的「實體記憶體」的「可用」的這一個欄位來確認。
如下圖所示


我的筆電插2條2G的記憶體,但是,因為XP是32位元,3.25G-4G的這一個位址是MMIO,
作業系統另有用途,所以,沒有辦法使用。
而系統用掉的快取記憶體就有600M左右,所以剩下的2637M是其它應用程式可以使用的部分。
而我要判斷的部分就是「可用」的這一個欄位。

我安裝了Gavotte Ramdisk後,
產生了R槽,
但是,記憶體可用的欄位剩下「1548M」,如下圖
很明顯的,
它並沒有使用到3.25G-4G這一個區塊。


接下來使用VSuite Ramdisk,
在安設定的時候,有Enable OS Invisible Physical Memory與Use OS Invisible Memory的選項,
看起來真像有那麼一回事。
設定如下:



設定完後,按下Add,就會增加一個1G的R槽

這個時候快來檢查可用的實體記憶體還剩多少?
還剩下2623MB,
看起來像是有使用到3.25G-4G這一個區塊。

這樣記憶體就完全沒有浪費掉了,
喔耶~~

參考資料:
【圖解|教學|下載】如何開啟PAE、如何查看PAE是否開啟(使用Everest)
RamDisk和Junction
WD Align使用時機釋疑(WD EARS系列硬碟皆須注意)

2012年12月11日 星期二

Install Multi-OS in Advanced Format Disk

這裡記錄一下在Advanced Format Disk上安裝多個作業系統的經驗。

最近市場一直在推Windows 8,
然後,微軟有推出439可以買到Windows 8的方案,
這麼便宜的正版,當然給他敗下去了。

基本上我的筆電可以安裝Windows 7,那麼應該也是可以安裝Windows 8。
我本身是個很重視CP值高的人,
所以,我想在我的筆電上安裝Windows XP, Windows 7, Windows 8, Ubuntu, Fedora
這個時候就要使用到SPFdisk,
我的配置如下:
Windows 7(主要磁區50G) - Windows XP(主要磁區50G) - Windows 8(主要磁區50G) - Ubuntu(邏輯磁區30G) - SWAP(邏輯磁區8G) - Fedora(邏輯磁區30G) - 資料儲存空間(剩下的空間) - Ghost空間(30G)
但是,若是這樣分的話,發現我的320G的硬碟下去分的話,
資料儲存空間就根本不夠用,
所以,立馬就去光華商場買一顆750G的WD黑標五年保硬碟。

買回來之後,
馬上用SPFdisk依上面的配置先分割好,
一開始先安裝Windows 7的時候,要先用SPFdisk把Windows XP, Windows 8的磁區先隱藏起來。
再來是安裝Windows XP,要先用SPFdisk把Windows 7, Windows 8的磁區先隱藏起來。
再來是安裝Windows 8,要先用SPFdisk把Windows 7, Windows XP的磁區先隱藏起來。

安裝完Windows 8後,
試著更新Windows Update,
竟然然不能更新!!?!?!
網路上找了一堆資料,竟然跟Advanced Format Disk有關係,
[問題] Windows Update 目前無法檢查更新 ...
在之前的硬碟都是用512byes為一個最小儲存單位,
而Advanced Format Disk則改為用4K為最小的儲存單位。
這個竟然跟Windows Update失效有關,真的很神奇。
到Intel的網站下載Intel® Rapid Storage Technology (Intel® RST),
就可以解決這一個問題了。

全部安裝完後,試著建立開機選單,
發現沒有辦法開進Windows 8~~
我的天啊~
這個是什麼情況?????
難到是跟Advanced Format Disk又有關係了嗎?
最後發現有支援Advanced Format Disk的SPFdisk。
SPFDISK 2012-4KB
這個時候我才知道,SSD也是使用Advanced Format Disk,
所以如果使用SSD的話,一定要使用SPFDISK 2012-4KB。

另外,這個時候又意外的發現,
若買WD的硬碟,可以免費使用Acronis True Image WD Edition,
而Acronis True Image WD Edition就可以切4K為單位的硬碟。
下載點Acronis True Image WD Edition


整顆硬碟用SPFDISK 2012-4KB重新分割後,
上面重灌OS的流程又要重新來過一次。
在安裝Ubuntu和Fedora的時候,
記得要把Grub安裝在那一個Linux磁區的啟始位址,而不是MBR,
這一點一定要特別注意。

並且在製作開機選單的時候,
透過「磁碟置換開關」的功能,
在Windows 7的啟動選擇隱藏Windows XP和Windows 8
在Windows XP的啟動選擇隱藏Windows 7和Windows 8
在Windows 8的啟動選擇隱藏Windows 7和Windows XP

最後五個作業系統總算完成了,並且相安無事的共存了。
多重開機選單如下:


附帶一提:在Ghost(11.5.1.2266)後,可以正確支援Advanced Format

參考資料:
SPFDISK 2012-4KB 修改支援 先進格式化 (4KB對齊)
SPFDISK 2012-4KB
多重開機 教學(使用SPFDISK 基本入門篇)

2012年12月6日 星期四

萬能驅動程式助理

今天要在舊電腦上裝Win7,
裝完了之後,上官網去找驅動,
全部裝完之後,
竟然有線網卡與音效卡沒有裝成功,
再用電腦型號4736ZG去找,
只有一個,
但是,為什麼還是不行呢?

還好,我更新的硬碟是在光華商場買的,
打電話去求救,
雖然我覺得驅動找不到關硬碟屁事啊~

但是,在還沒有發現有線網卡有問題之前,
同時發生了在windows 7不能更新的問題,
「Windows Update 目前無法檢查更新 因為該服務尚未執行 您可能需要重新啟動電腦」
我這個是正版的耶!
上網發現,竟然還真的跟硬碟(硬碟:WD 7500BPKT(支援Advanced Format)有關係,
而解決的方案其實只要去安裝Intel Rapid Storage Technology的程式。

所以,當驅動程式沒有辦法安裝時,
我馬上就想到也跟硬碟的Advanced Format有關係。

所以,打電話給光華商場的人請求協助,
他也說可能跟硬碟沒有關係,
但是,還是請我把電腦拿過去。

我拿過去後,
他拿出了一個軟體「萬能驅動助理」,
而這個軟體不用上網,
就可以把這一台電腦全部的驅動程式安裝完了,
實在是太神奇了。

這個當然要馬上上網把它下載下來,
當作以後有需要的時候,
馬上可以使用!

參考資料:
萬能驅動助理 WanDrv (e驅動) 5.28 繁體中文版 - 免上網自動安裝驅動程式
驅動精靈

2012年8月8日 星期三

SVN如何查看tag是由哪一個Link連結出來的

Branch\Tag是由Trunk的某一個revision所link出來的,
而要如何知道這一個Branch\Tag是由哪一個地方連結出來的呢?

若是使用TortoiseSVN的話,
則可以使用Revision Graph,
可以看出Branch\Tag是由哪一個revision的Trunk所Link出去的,
直接在Trunk的資料夾按右鍵,選擇「Revision graph」





由以上的圖可以知道,

/branches/SupportDongleEMMC_Will_Hang這個資料夾的初始板本是整個Repository的revision 13,
而它是由Repository rev 9時的/trunk所Link過去的。
換句話說,Repository rev 9時的/trunk與Repository rev 13的/branches/SupportDongleEMMC_Will_Hang的資料內容會是一樣的。

而Repository rev 14的/branches/SupportDongleEMMC_Will_Hang的內容則是由Repository rev 13的/branches/SupportDongleEMMC_Will_Hang所修改而來的。

由這個圖,我們可以很簡單並且清楚的知道分支是由哪一個部分Link出來的

還有另一個方式,可以透過SVN Show log得知~
如下圖,是直接看Repository根目錄的log,



在Repository的rev 27是新增一個資料夾,
而這一個資料夾的Copy from path是Repository的rev 23的/trunk資料夾

參考資料:
SVN中的Branches分支以及Tags标签详解与应用举例

2012年8月2日 星期四

Blogger Spot換行

至從Blogger Spot更新介面之後,
要換行都必需另外輸入<br />
非常麻煩,
原來這個要另外設定,
在新增文章時,右邊有一個文章設定→選項→換行符號→按下 Enter 鍵可建立換行符號

這樣就可以了。

如何處理分行符號? - Blogger說明

exVim

一直以來,都想要讓vim可以取代SourceInsight的目標,
但是一直沒有時間去做。

前一陣子發現同事有使用exVim,
這一個功能跟SourceInsight很類似,
現在暫時先研究如何使用~
之後就可以同時使用exVim與SourceInsight,
最後當然希望可以取代SourceInsight

先使用安裝檔的方式,讓它全部幫你設定完!
我的目標是建立一個portable的方式,
目前因為連操作方式都不熟,
還是先用最簡單的設定方式吧~

exVim主頁
exVim wiki

1. 安裝檔案
直接到exVim主頁選擇Download
選擇install去下載,
這一個安裝會全部的設定幫你設定好。

2. 建立一個Project的vimentry
到Project的根目錄資料夾,
點選右鍵,新增exvim vimentry file
新增完成之後,
直接點選這個檔案,
就可以開啟這一個視窗了

3. 掃描所有的檔案
當開啟新增的exvim vimentry file之後,
直接按\R

之後,直接點剛剛新增的vimentry的檔案,
就可以開啟這一個Project了

而以後若要重新掃描整個檔案的話,
則在指令列輸入
:Up[date] tag
:Up[date] symbol

4. 尋找tag
可以直接在目前鼠標的位置,按\]
或是在指令列輸入
:TS <tag-name>

When you are in tag select-window, you can press <enter> to jump to the definition, meanwhile the exTagSelect will record the position to the exJumpStack, you can use <leader>tt to check your stack result. And use <leader>tf, <leader>tb to move backward and forward from the next/last definition.
這個部分的tt, tf, tb不知道如何使用??



參考資料:
ExVim 试用手记 —— 编写代码之 移动光标
Think more... - exvim

2012年4月25日 星期三

如何透過TortoiseSVN去建立本地端的SVN Server

最近老弟在討論SVN的東西,
讓我對SVN有更深入的了解~

在之前,我的認知是TortoiseSVN只是個client端的軟體~
所以,必需要有一個server的位址,這樣TortoiseSVN才可以發揮它的功能。
其實,TortoiseSVN已經具有在自己本機端建立Server的功能,
但是,存取的權限只限於本機端可以存取
不過,對自己本身來說,確是非常方便的功能。
1. 首先在本機端建立一個空白的資料夾
2. 對資料夾按右鍵,TortoiseSVN→Create repository here

3. 接著可以透過Create folder structure建立預設資料夾trunk/branches/tags,若這次沒有建立之後,就沒有機會了
PS.以後是可以透過手動建立資料夾的方式建立,其實trunk/branches/tags只是這一個Repository的根目錄下的三個資料夾,並沒有什麼特殊的地方,
其特殊的意義是我們賦予的~
而手動建立的缺點就只是會多一個建立這三個資料夾的log而已~

接下來可以透過Start Repobrowser去看這一個Repository
4.建立完之後,仍然可以對這一個資料夾去開啟這一個Repository


5. 剩下的部分就跟使用一般server是一樣的方式
若只要在本機端使用的話,這個功能是蠻不錯的!!

2012年3月31日 星期六

Defy開啟/關閉3G上網

今天去遠傳申請七天免費試用3G上網的服務,
要提供雙證件~還有1200元的保証金。
最近要去客戶那裡,這一個服務可以來試一下3G的感覺~

另外,值得一提的是,遠傳有提供每日25元吃到飽的服務,
到時候如果有要去外面旅遊的服務,
需要用到3G網路的話,
是一個不錯的服務哩~

之前剛買到智慧型手機的時候,不小心透過2G上網,當月的帳單就是7百多元~
嚇死人了~

當時就快一點上網找如何關閉透過3G上網~
也忘記當時是怎麼設定的~
現在反而要設定如何透過3G上網哩~

開啟3G上網
設定→資料管理員→資料傳輸→已啟用資料(啟用Google行動服務網路的資料存取)→勾選

設定3G轉wifi分享
選擇3G Mobile Hotspot軟體→3G Mobile Hotspot→勾選

關閉3G上網
設定→資料管理員→資料傳輸→已啟用資料(啟用Google行動服務網路的資料存取)→取消勾選

參考資料:
[心得] defy開啟與關閉3G上網功能方法

2012年3月25日 星期日

在右鍵選單設定「特定程式」開啟檔案

若可以直接對某一個檔案按右鍵,
並且選擇要開啟的檔案,
如此一來就會非常方便了~

這一篇文章,打算使用vim當作特定的程式,
可以在所有的檔案按右鍵來開啟~

1. 透過「Win鍵+r」,輸入「regedit」。
2. 在左邊窗格找到「HKEY_CLASSES_ROOT\*\shell」機碼,並在該機碼上按一下滑鼠右鍵 ,從選單中點選【新增】→【機碼】,並且改名為VIM
3. 然後,在VIM機碼上按滑鼠右鍵,從選單中點選【新增】→【機碼】,並且改名為command
4. 點選Command機碼內的(預設值),並且修改其數值資料為E:\Portable\PortableApps\gVimPortable\gVimPortable.exe -p --remote-tab-silent "%1"
修改完後應該如下圖:


而vim的這一個指令後面接的--remote-tab-silent則是表示會尋找目前已經存在的視窗來開啟目前指定的這一個檔案。

最後結果如下:


如果要設定只有對txt副檔名的檔案顯示這一個設定的話,
一始我們找到HKEY_CLASSES_ROOT\.txt機碼,而其預設值是txtfile

因為,我必需找到txtfile的機碼,並且去修改它。

找到了txtfile的機碼之後,剩下的動作就跟之前的是一樣的了。

參考資料:
Adding entries to the Windows context menu

ASL code簡單教學

這一篇是用來記錄我自己學習ASL code的文章~
我在想一開始應該會有很多錯誤吧~
就慢慢修正囉~

Device (DeviceName) {ObjectList}
建立一個名為DeviceName的Object,其是代表Bus或device或是其它的hardware

OperationRegion (RegionName, RegionSpace, Offset, Length)
建立一個名為RegionName的變數,這一個東東代表的就是一個可以存取的空間。
RegionSpace就是這個空間的類型,在Acpi5.0可能是
SystemMemory,
SystemIO,
PCI_Config,
EmbeddedControl,
SMBus,
CMOS,
PCIBARTarget,
IPMI,
GeneralPurposeIO,
GenericSerialbus
Offset則表示由這一上述的空間的起始位址開始位移Offset (byte)的地方代表目前宣告的RegionName的起始位址。
Length則表示目前這一個RegionName所代表的大小(byte)

Field (RegionName, AccessType, LockRule, UpdateRule) {FieldUnitList}
Field通常是跟OperationRegion搭配使用,把OperationRegion宣告的空間,在細分成可以access的個別的變數。
RegionName就是OperationRegion宣告的變數名稱。
AccessType就是存取變數是一次存取的長度,可以是
AnyAcc,
ByteAcc,
WordAcc,
DWordAcc,
QWordAcc
LockRule可以設定為Lock or NoLock
若設定為Lock的情況時,當變數被access時,其它他要access這一個變數,必需等到這一個變數沒有被access才可以動作。
UpdateRule可以設定為Preserve, WriteAsOnes and WriteAsZeros
這裡若是設定一個Field為QWordAccess,則當有一個成員為4 bits,則當這一個被update時,其它的12個成員為被保留或是設定為1或是0。
以下為一個OperationRegion與Field的例子:
OperationRegion (MIOC, PCI_Config, 0x10, 0xFF)
Field (MIOC, AnyAcc, NoLock, Preserve)
{
Offset (0x58),
HXGB, 32,
HXGT, 32,
GAPE, 8,
Offset (0x70),
MR0A, 4,
MR0B, 4
}

這裡是說,宣告一個OperationRegion其起始位址為PCI configuration space的0x10 byte的地方,
並且其長度為0xFF bytes。
並且在下面宣告了一個MIOC的Field,其Access的方式並沒有限定,並且沒有Lock的機制,並保留其它沒有access的數值。
Office (0x58)意思是先直接跳到MIOC起始位置0x58 bytes的地方,
接下來設定一個名為HXGB的變數,其大小為32 bits,而其起始位置就在0x58 bytes offset of MIOC
再來設定一個名為HXGT的變數,其大小為32 bits,而其起始位置就在0x5C bytes offset of MIOC
Offset (0x70)則一樣是直接跳到MIOC起始位置0x70 bytes的地方,
再來設定一個名為MR0A的變數,其大小為4 bits,而其起始位置就在0x70 bytes offset of MIOC


參考資料:
ACPIspec5.0
自己動手寫DSDT系列教程1-ASL(ACPI Source Language)基礎篇

Xnview看圖軟體

Xnview是一個非常強大的看圖軟體~
同時,它有也提供Portable的版本~

在Windows 7下,一直以來都沒有辦法設定檔案關聯~
今天才試到可以的檔版~
XnView 1.98.1 繁體中文妖怪版(兼容32-bit + 64-bit)

設定檔案關聯


參考資料:
XnView 1.98.1 繁體中文妖怪版(兼容32-bit + 64-bit)
XnView軟體教學

2012年3月24日 星期六

加速windows7的效能

在windows下,
當開啟一個資料夾時,
系統會去掃這個資料夾下的檔案,
並且顯示縮圖給使用者看~

這一個功能可以關掉以增加效能~

在隨便一個資料夾左邊,有一個組合管理,
選擇「資料夾與收尋選項」,
選擇「檢視」,
再來把「一律顯示圖示,不顯示縮圖」的選項勾選。

如此一來,就不會把一些效能花在顯示圖示上了。

參考資料:
關閉Widows 7視訊檔案預覽

設定Lingoes Portable顯示繁體中文的翻譯

之前就使用Lingoes,
因為,它有一個功能,叫做「剪貼簿取詞」,
所以,我只需要執行複製的動作,
它就會跳出一個翻譯的結果~
但是,在一陣子之前,更新之後,
其翻譯的結果會以英文為主,
結果,我要查英文,最後跳出一堆我不懂的英文。
慢慢的就沒有在用了。

剛剛在以下的網站發現,他們使用的介面查出來的結果竟然是中文~
[免費] Lingoes 靈格斯詞霸 v2.8.1 全功能翻譯軟體、電子字典
去研究了一下,發現,原來要另外去下載「Dr.eye」的詞庫到軟體中~

當然,我還是使用Portable版的Lingoes~
Lingoes Portable
而必需另外下載Dr.eye的詞典

可以透過軟體的介面連到官網詞典的下載入口


選擇從Lingoes下載辭典


所有的繁體詞典入口

選擇譯典通在線
下面的這一個聯結應該是所有的字典的存放地

下載完Dr.eye的辭典後,執行安裝,並且選擇剛剛下載完下來的辭點~

再來設定為剪貼簿取詞


如此一來,在翻譯的時候,就可以看到繁體的翻譯了~

並且把Dr.eye顯示拉到最上面~以後查詢的結果Dr.eye就會顯示在最上面了~


參考資料:
[免費] Lingoes 靈格斯詞霸 v2.8.1 全功能翻譯軟體、電子字典

2012年3月18日 星期日

Win7建立快速啟動工具列

Win7之前的系統都有快速啟動工具列,非常方便。

但是,在Win7把「快速啟動工具列」與「目前正在使用的工具列」整合在一起,
兩個東西合成一個東西,看起來就非常的擠。
並且很混亂!

1. 所以,現在先式著把「快速啟動工具列」建立出來~
a. 在工具列上任何一個地方案右鍵
b. 點選新增工具列後,在視窗的資料夾輸入框輸入 %UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\CustomerTaskBar
c. 按下選擇資料夾之後,快速啟動列就出現了,然後將鎖定工具列的選項取消,移到你習慣的位置
d. 再來我們在這個工具列按右鍵,把顯示文字和顯示標題都取消

2. 再來把「目前正在使用的工具列」取消上面永遠釘在上面的項目
「將此程式由工具列取消釘選」

3. 再來就是把具列拉高,並且分成上下兩列。而上列就是「快速啟動工具列」;下列就是「目前正在使用的工具列」。最後,若螢幕空間還算大的話,可以設定為大圖示。

最後,我的電腦顯示如下:


參考資料:
Win7密技: XP的快速啟動工具列在Win7怎麼設定出來

設定XP「類似工具列顯按紐分組」

在被強迫使用Win7後,
開始慢慢習慣Win7的介面~

其中一個在Win7的功能就是快速起動工具列會把同一類的視窗分成同一組。
而這個功能在Win XP也有,
不過,當時應該還不習慣這一個功能,所以,把它關掉了。

現在要重新把它啟動起來。
直接在下面的快速啟動工具列,按右鍵,選擇內容,
並且勾選「類似工具列按紐分組」


但是,在開啟這一個功能之後,並沒有預期的出現分類的功能。

原是這個功能就算是打開了,
預設必需要當工具列是滿的情況下,才會有分類的功能。
這樣就跟Win7的行為不一樣了,
Win7只要有兩個就會出現分類的功能了。

不過,其實這個設定是可以改的。
1. 開始→執行
2. 輸入register
3. 找到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\
4. 新增一個DWORD值TaskbarGroupSize
5. 數值設定為2
6. 重開機

參考資料:
類似工具列按鈕分組失效

2012年3月16日 星期五

設定Source Insight在已經存在的視窗打開檔案

在一些軟體可以使用快速鍵指定特定的編輯器開啟目前選擇的檔案~
例如在Beyond Compare、或是FreeCommander~

但是,如果不特別設定的話,每一次透過編輯器開啟一個檔案,
都會開啟一個新的編輯器視窗,
如果一次開啟多個檔案的話,就會存在很多個視窗~
這樣整個環境就會超亂的~

在vim的話,在開啟檔案的時候,加入特別的指令,
就會尋找目前是否有開啟視窗,
若有的話,就會使用目前開啟的視窗建立一個tab windows來開啟目前指定的檔案。
可以參考FreeCommander & MDIE

但是,目前跟VIM比較起來,還是比較多人熟悉Source Insight~
在找過Source Insight Help後,
可以使用以下指令去完成以上的動作。

=*=*=*=*=*=*=*=*=*=*=
Suppressing New Program Instances

-i <rest of command line>

This option will direct the rest of the command line to an already running instance of Source Insight, if any. If there are no instances already running, then a new instance is started.

Example:

insight3 –i myfile.cpp

This will locate an already running instance of Source Insight, and tell it to open myfile.cpp.
=*=*=*=*=*=*=*=*=*=*=

2012年3月8日 星期四

Source Insight的語法

目前的source code是使用EDK2的code base,
常常會有一些變數的定義與EDK1的不一樣,
因此,在Source Insight會沒有辦法辦識出哪一些是變數,
這個時候,就要研究如何設定Source Insight的語法,讓我可以去辦識特定的文件。

而我想Source Insight做的到的,VIM應該都做的到,在Source Insight設定完後,就要試著移值到vim啦。

這裡說明一下,Source Insight的成員
1. 語法 (Language)
在Source Insight有語法(Language)就是表示,在什麼時候文字檔的內容是要亮什麼顏色、什麼情況下代表變數、什麼情況下代表常數。
2. Document Type
Source Insight提供了一個Document Type,可以設定成許多副檔名算是在同一類。
像是*.c與*.h就是同一類的語法

新增一個語法 (Language)
Options→Document Options→Parsing
選擇Language這一個button

這個時候可以點選Language裡面的許多語法,去看裡面的設定,或是修改一些設定~
當然也可以新增一個Language,這裡可以試著新增一個叫做TEST的語法。

我們先新增comment的條件,就是當什麼情況下,它會判斷成是comment的語法。

目前以#當作註解,設定如下

並且記得要把Use Syntax Formatting勾選起來,這樣註解的顏色才會變成註解的顏色!

==========
下面有Language的Options的簡單說明~
Basic Language Options
Each language has basic options that govern how Source Insight treats files with this language. Built-in languages, such as C/C++ have fewer options in this page than do custom languages.

Contains program source code
If checked, then Source Insight will consider this a programming language. Certain features are altered when a programming language is used, as opposed to a simple textual language. For instance, references to declared symbols are displayed in the “Ref to …” styles.

Case sensitive text
This indicates whether the language is case sensitive or not. This affects how keywords are matched, as well as how symbols names are resolved in the symbol lookup engine.

Uses C preprocessor
If checked, then Source Insight will recognize #if and #ifdef preprocessor directives.

Allow smart tab
If checked, then the Smart Tab feature will be enabled when editing this type of language. If not checked, then Smart Tab will perform like a simple tab.

Use Syntax Formatting
If checked, then Syntax Formatting will be used when displaying files in this language.

Detect comment styles
If checked, then special comment styles will be detected. See also “Comment Styles”.

Non-AlphaNum identifier chars
This text box contains the set of all valid non-alpha-numeric identifier characters. Alpha-numeric strings are always considered identifiers.

Detect numbers
If checked, then numbers found in the text are formatted with the “Number” style. The check boxes following this enable special number formats for hex and octal numbers.
==========

新增一個Document Type
Options→Document Options→Add Type...

新增一個名為TEST的Document Type,
File filter選擇規類為這個Document Type的檔名名稱,
而語法(Language)則設定為剛剛新增的Language,
如此一來,就可以把剛剛設定的語法顯示出來了。

再來就是把特定的副檔名的檔案加入到選定的Document Type
另外一提的是,只有副檔名在這一些Document Type裡面的檔案同時Include when adding to projects這一個選項有被勾選時,符合File filter的檔案名稱,才會在search檔案時,才會加到這一個Project裡面。

==========
如果在A這一個檔案定義了一個全域常數,要讓其它檔案就可以透過Source Insight的Context Windows直接就可以查到這一個全域常數的值,但是,很不巧的是,我們定義這一個全域常數的語法,並沒有在Source Insight的資料庫內,這個時候,就必需要使用自定的語法了~

例如我們在test.test檔案裡面定義了以下的內容
  DEFINE FIRST_VARIABLE      = TRUE
DEFINE SECOND_VARIABLE = FALSE
DEFINE THIRD_VARIABLE = FALSE


那麼我們就在Language的Custom Parsing加入以下的內容,並且記得要把Use regular expressions for parsing勾選起來。

這裡面填的語法是
\w*DEFINE\w+\([A-Za-z0-9_]+\)
\w表示是space或是tab鍵
*是表示前面的字元出現0次或1次以上
DEFINE這裡就是表示是有這一個字串
\w同上面的解釋
+表示前面的字元出現1次以上
[A-Za-z0-9_]是表是一個字元,而其字元有可能是由所有的字母或是數字或是_其中一個

到目前為止,都是正規表示式的語法,接下這一個是非常重要的。
括號包起來的部分,就是我們要找的變數
這樣我們才可以由A這一個檔案去依這一個變數,去尋找到B這一個檔案是如何定義這一個變數的。
這樣就會有以下的效果啦~~這樣在Trace Code會比較方便~

另外一提,我有試著用兩個括號,看能不能有兩個關鍵字,結果看來是沒有辦法的~

另外,不知道為什麼,若把User C preprocessor選取後,就必需要用\w*DEFINE\w+\([A-Za-z0-9_]+\)才可以認得到
  DEFINE FIRST_VARIABLE      = TRUE
DEFINE SECOND_VARIABLE = FALSE
DEFINE THIRD_VARIABLE = FALSE

若把User C preprocessor取消選取後,使用DEFINE\s+\([A-Za-z0-9_]+\)就可以識別出這一個變數了。
反正,這一個檔案不支援User C preprocessor,應該也不需要勾選了。
==========

參考資料:
Q: How can I add my own parsing?
Source Insight使用之添加自定义语言
SourceInsight

2012年2月28日 星期二

買HP電腦的相關設定

公司最近配了一台新的HP的電腦,為了了解一些基本的特性,
好方便以後便份與修改,開始了全面的測試。

一開始看到硬碟分割,一整個傻眼,一共有四個主要磁區。
分別是System, OS, Recovery和HP_TOOLS。
1. System Partition是Win7在建立分割的時候,就會建立出來的,約200MB左右,目的不明。
2. OS就是所謂的C槽~
3. Recovery就是放HP建立的還原映像檔,約20G左右。
4. HP_TOOLS,就是放HP的一些額外的不需要透過Windows就可以執行的程式,像是QuickWeb。

而一顆硬碟最多只能分成四個主要磁區,所以,當我進入作業系統後,大部分的空間都在C槽@@
之前我透過SPFdisk分割硬碟,也沒有特別割出200MB的區塊,一樣WIN7可以work,所以,這個System Partition我應該會把它刪掉。

OS Partition就一定要保留的啦~

在來是Recovery的部分,HP提供了一個軟體,Recovery Manager,它有一個功能,可以把Recovery裡面的映像檔燒到光碟片上。若把它燒到光碟片的話,在硬碟上也不會占用一個主要磁區,同時也可以節省這20G的空間。
而OS備份的部分,還是會用GHOST來處理吧,至少備份的時間沒有那麼長,而且步驟也沒有Recovery Manager那麼複雜。
下面會在說明,當光碟片燒出來,透過光碟開機,一共有三種主要的還原方式,會說明一下。
另外,說明,這一個光碟片只能制作一次,當光碟片制作完成後,Recovery的映像檔就會被刪除。

另外,HP_TOOLS這一個磁區也會保留,無聊的時候可以玩一下QuickWeb。

所以,看起來,目前會有二個主要磁區和一個邏輯磁區~
分別是OS和HP_TOOLS。
則邏輯磁區就可以分成D槽、E槽和F槽。
對C槽的備份的GHOST就放在F槽,目前這樣看起來好像還不錯。

制做出來的HP還原光碟片,一共有三個主要的還原方式
1. 系統復原(將電腦還原至其原始出廠狀態)
這一個會把整個硬碟刪除掉,並且只保留三個磁區
a. System Partition是Win7在建立分割的時候,就會建立出來的,約200MB左右,目的不明。
b. OS就是所謂的C槽~其中,會另外安裝所有HP的一些軟體,也有安裝Office 2010的試用軟體。
c. HP_TOOLS,就是放HP的一些額外的不需要透過Windows就可以執行的程式,像是QuickWeb。

2. 最小化映像復原(僅還原作業系統、驅動程式和特定軟體[潔淨映像])
這一個會把整個硬碟刪除掉,並且只保留三個磁區
a. System Partition是Win7在建立分割的時候,就會建立出來的,約200MB左右,目的不明。
b. OS就是所謂的C槽~其中,會另外安裝所有HP的一些基本軟體,其中不會安裝Office 2010的試用軟體。
c. HP_TOOLS,就是放HP的一些額外的不需要透過Windows就可以執行的程式,像是QuickWeb。
3. 原廠重新設定(藉由清除整個硬碟並還原至原始的出廠狀態來重設電腦)
這一個會讓整個硬碟的分割方式與內容與原本出廠的幾乎一樣,只有一個功能不行。
就是透過這一個還原的系統,並沒有辦法再燒出HP的備份光碟片,不過,還是可以使用F11 OS Recovery的功能。
其一樣是分成四個主要磁區
1. System Partition是Win7在建立分割的時候,就會建立出來的,約200MB左右,目的不明。
2. OS就是所謂的C槽~
3. Recovery就是放HP建立的還原映像檔,約20G左右。
4. HP_TOOLS,就是放HP的一些額外的不需要透過Windows就可以執行的程式,像是QuickWeb。

=============================================================

另外,HP提供了一個貼心的服務,
那就是在windows下,不需要另外按Fn就可以使用windows下的功能鍵。
但是,在這一些功能鍵,反而我不常用到,而F1-F12,反而是很常用的到。
還好,HP在BIOS有提供
System ConfigurationAction Keys ModeDisabled
這樣進到Windows,預設就是F1-F12了。

=============================================================

參考資料:
HP 筆記型電腦 ─ 使用 HP Backup and Recovery Manager
HP 筆記型電腦 ─ 停用特定機型的 Fn + 功能鍵組合

2012年2月20日 星期一

BIOS相關名詞簡寫

Intel Graphics Driver(IGD)
Application Program Interface (API)
Boot Loader Development Kit (BLDK)
Configuration Editor (CED)
Detailed Timing Descriptor (DTD)
Driver Executable Environment (DXE)
EFI Byte Code (EBC)
Embedded Computing Group (Intel Corp.) (ECG)
Extended Display Identification Data (EDID)
Extensible Firmware Interface (EFI)
Embedded Pre-OS Graphics (EPOG)
GNU Compiler Collection (GCC)
Graphics Output Protocol (GOP)
General Purpose Input/Output (GPIO)
High-Definition Multimedia Interface (HDMI)
Intel® Embedded Graphics Drivers (IEGD)
Intel Graphics Driver (IGD)
In-Vehicle Infotainment (IVI)
Low Voltage Differential Signaling (LVDS)
PCI Express (PCIe)
Serial Digital Video Output. (SDVO)
POWERVR™ SGX Graphics Processing Unit (GPU) IP core (SGX)
Techtronix Logic Analyzer (TLA)
Universal Extensible Firmware Interface (UEFI)
Virtualization Technology (VT)
Intel 虛擬技術
embeded Multi Media Card (eMMC)
Understanding eMMC User Capacity
e·MMC v4.41 and v4.5
BIOS Modification Program (BMP)
video BIOS table (VBT)
Enhanced Host Controller Interface (EHCI)
Open Host Controller Interface (OHCI)
Universal Host Controller Interface (UHCI)
Trusted Platform Module (TPM)
Digital Temperature Sensor (DTS)
System Managment interrupt (SMI)
Windows Management Instrumentation (WMI)
System Control interrupt (SCI)
SCI v.s SMI 基本概念
EFI Firmware File system (FFS)
Flash Device (FD)
Firmware Volumes (FVs)
Image Signal Processer (ISP)
Platform Configuration Database (PCD)
USB On-The-Go (USB-OTG)
OTG規格簡介
Single Parallel Hub USB (SPH-USB)
System Management Interrupt (SMI)
System Control Interrupt (SCI)
SCI v.s SMI 基本概念
Secure Digital I/O (SDIO)
Secure Digital Memory Device (SD)
OEM Activation 3.0 (OA 3.0)
Platform Secure Storage (PSS)
Random Number Generator (RNG)
Customer Reference Board (CRB)
Dynamic Video Memory Technology (DVMT)
Form Factor Reference Design (FFRD)
Reference and Validation Platform (RVP)
Memory Reference Code (MRC)
Intel® eXtended Debug Port (XDP)
Flexible Flat Cable (FFC)
Flex Printed Circuit (FPC)
Dynamic Platform and Thermal Framework (DPTF)
Human Interface Device (HID)
Card Specific Data register (CSD)
Industry Standard Architecture (ISA)

Spec
External Design Specification (EDS)
INTEL Active Management Technology (AMT)

ACPI
Operating System-directed configuration and Power Management (OSPM)
Advanced Configuration and Power Interface (ACPI)
Differentiated System Description Table (DSDT)

2012年2月17日 星期五

如何分析SMBIOS

最在在porting新的function,有需要更新SMBIOS的資料,
因此,學會了如何簡單的分析SMBIOS。

SMBIOS有很多的type,每一個type分別有要特別存放的data,
同時,每一個type有其不同的struct,
這一些部分一定要參考spec,
spec有定義,
而我目前就先以SMBIOS type1為例。

如果要讀取BIOS的相關資訊,可以下載RW-Everything這一個軟體,
裡面有一個讀取SMBIOS的功能,並且會幫你解析出來,是一個非常棒的軟體,而且是免費的。

另外,SMBIOS,在網路上Search就有了,我使用的版本是System Management BIOS (SMBIOS) Reference Specification v.2.7.1的版本。

下面就是Specification裡面對type 1 header的定義。

而下面就是透過RW-Everything讀取出來的SMBIOS data


SMBIOS的每一個type分為header與string兩大部分,前面全部都是Header的部分,而後面的部分都是string的部分。而每一個string跟string之間,都是以00(一個byte)當作一個分隔。
並且以00 00(二個byte)則是代表這一個type的string的結束。

2012年2月15日 星期三

在define中連接字串與數字

若定義可以設定的好,其實超好用的~

#include <stdio.h>

#define LINE_FILE(x,y) "Line " #y " of file" x
#define _LINE_FILE_(x,y) LINE_FILE(x , y)
#define __LINE_FILE__ _LINE_FILE_( __FILE__ , __LINE__ )

#define MyMacro(a,b,c) a##b##c

int main (
)
{
const char *pwsz = __LINE_FILE__;
const char *MyMacro(A,B,c) = "good";
printf("%s\n",pwsz);
printf("%s\n",MyMacro(A,B,c));
return 0;
}


參考資料:
EFI v.s #define
#define連接字串和數字 『轉錄』