ctrl+\ s "s表Symbol,列出所有參考到游標所在字串的地方,包含定義和呼叫。 ctrl+\ g "Find this definition ctrl+\ c "c表Call,列出所有以游標所在字串當函數名的地方。 ctrl+\ t "t表Text,列出專案中所有出現游標所在字串的地方。 ctrl+\ f "f表File,以游標所在字串當檔名,開啟之。 ctrl+\ i "i表Include,以游標所在字串當檔名,列出所有include此檔的檔案。 ctrl+\ d "d表calleD,以游標所在字串當函式名,列出所有此函式呼叫的函式。
" Highlight all instances of word under cursor, when idle. " Useful when studying strange source code. " Type z/ to toggle highlighting on/off. nnoremap z/ :if AutoHighlightToggle()<Bar>set hls<Bar>endif<CR> function! AutoHighlightToggle() let @/ = '' if exists('#auto_highlight') au! auto_highlight augroup! auto_highlight setl updatetime=4000 echo 'Highlight current word: off' return 0 else augroup auto_highlight au! au CursorHold * let @/ = '\V\<'.escape(expand('<cword>'), '\').'\>' augroup end setl updatetime=500 echo 'Highlight current word: ON' return 1 endif endfunction
某個物件擁有某些 state,還有一堆其他物件很在乎這些 state 有沒有改變,這些物件在 state 改變時需要做些事情。這邊的 state 是抽象概念,舉凡一個 button 被 click、load data 的 progress、load data 完成與否、畫面是否被修改等等都可以看作 state。另外,一個 object 可能會有很多種 state。
網路上很喜歡用的說法:observer 是一種訂報紙的概念。簡言之,有間報社(subject or observable),要訂報紙的人(observer)跟報社說他要訂報紙,之後報社有新報紙了(狀態改變)就會通知這些訂戶,訂戶拿到報紙後或許拿來看、或許拿來墊便當(?),想幹嘛就幹嘛。如果一個訂戶不想收到新報紙了,就跟報社說一聲退出訂閱,之後報社就不會再通知他了。
那篇文章表示不用寫「資訊」,但以學習知識來說,我還是需要一點「重點整理」方便日後查找,尤其是一些從書上看來、稍微消化過但也還沒熟到整個記下來的部分。資訊的確幾乎都可以找 google 大神,但是重新 google 到的資訊可能跟我的印象有出入,還有一些眉眉角角不見得記得,有個地方作為資訊的集中地對我還是有用的。
跟客戶聊完天、了解系統要做什麼後建立 feature list,表示整個系統的功能概觀。畫張 use case diagram 呈現使用者或其他系統使用這個系統的藍圖,既然是藍圖,當然不會有太細節的東西啦!feature list 是以功能面的角度看整個系統,use case diagram 則是以「使用」的角度來看整個系統。feature list 裡的功能不管直接或間接,得要能跟 use case diagram 的 use case 互相對應。
記錄 object file 所用到的 symbol。每個 symbol 有其對應的 symbol value,variable 及 function 的 symbol value 是它們的 address。
symbol table 是以 struct Elf32_Sym 為 element 的 array,Elf32_Sym 一樣定義在 /usr/include/elf.h。
1 2 3 4 5 6 7 8 9
typedefstruct { Elf32_Word st_name; /* Symbol name (string tbl index) */ Elf32_Addr st_value; /* Symbol value */ Elf32_Word st_size; /* Symbol size */ unsignedchar st_info; /* Symbol type and binding */ unsignedchar st_other; /* Symbol visibility */ Elf32_Section st_shndx; /* Section index */ } Elf32_Sym;
對 linking 較重要的兩種 symbol:global symbol 及 external symbol。global symbol 是定義在此 object file 中並且會讓其他 object file 使用到的 symbol,external symbol 則是此 object file reference 到的其他 object file 中的 symbol。簡單講就是給別人用跟用別人的 symbol,有點繞舌。