星期三, 7月 08, 2009

名詞潮流

昨天有人跟我提 "執行力" 這個名詞,我覺得蠻感興趣的,因為我最近這一陣子還蠻常聽到這個名詞的,於是我無聊就 Google 了一下,沒有猜錯,是天下/ 商週的產物。老實說,我很久沒有看這種雜誌了,我也不是很喜歡看商週,但是對於這本雜誌所帶動的名詞潮流我倒是有點興趣。從 人脈、AQ、紫牛、藍海(還是紅海 XD?)、M型社會、執行力,這些名詞的流行,大概都跟這兩本雜誌脫離不了關係,而這些名詞的後面通常是一本書。其實我比較喜歡看的的是 "第三種猩猩", "槍炮、細菌與鋼鐵" 說 XD。

這些名詞的好與不好我不太會去評論,不過我知道的是,不管這些名詞有沒有被提出來,這些名詞所帶來的背後事實是早就存在了(說事實的原因是,有些是為了創造名詞而扭曲事實,這邊有個例子。),那麼為什麼這些名詞仍會流行 XD?

後來我在 Evil Capitalism Heroes中的 龐克扮高深(revised) 看到了如下文字:

市場經濟最迷人的地方就是
你要什麼
市場就會賣你什麼?
你要扮高深
市場就會賣你扮高深
你要義和團
市場就會賣你義和團

我不知道拿這一段話來解釋名詞潮流合不合適,但是這就是我所認為的答案。其實我說這種事並不是這麼好,因為我還在努力的尋找我的中心思維,一個沒有中心思維以及足夠強的訓練,是很容易在辯證式思考中造成自我混亂,不過仍然得依靠自我訓練以及辯證來達成目的,方法是不是對的,至今仍在摸索中。

那麼我現在到底要怎麼閱讀,我會選擇閱讀經典(但這些經典是怎麼判定的,仍有待商確),不斷的論證吧,至少就我的觀點而言,我只是一個會看著螢幕科科笑的阿宅,我不太需要趕市場的流行 XD 安靜的研究與思考就可以了。


---
繼續努力。

漫談 String Processing

String Processing 方法其實不少,剛好最近有學到,寫出來筆記一下。

C 的 string 其實是 char* 這點是非常顯而易見,若要說為什麼,不在這裡的討論範圍內,不過 C 的 string processing 幾乎是我所認為的基礎,就我所遇到的 programming language ,至少都有 C String library 所提供的功能(當然,大部分來的更多),所以要認識 function 背後所帶來的成本,學 C Standard Library 是一個不錯的選擇。

一般常見的處理方法如下:

  • naive method:
    我想這沒有什麼好解釋的 ... XD
  • Use library provided by programming language:
    其實以 Java, Python 而言,sting's function 可以解決大部分的常見問題,C++ 也可以,只是在操作上沒有這麼直覺(C++ Boost string algo 提供了不少好東西,也可以參考。)。
  • Consider a string as input/ output:
    • C: sscanf/ sprintf
    • C++: istringstream/ ostringstream
    • Java: StringReader/ StringWriter
    • 簡單的來說,就跟操作 scanf 一樣,所以 scanf 有的優點這個方法都有,缺點亦然,但是對於單一格式的字串處理,如果要轉換成 int, double 之類的,算是比較快速的一個選擇。
  • Regular Expression:
    C, C++, Java, Python 皆有相對應的 library 可供使用,這一招的用途非常的廣,通常也接近最後一招了,不過還是有死角,不建議使用 Regular Expression 在 XML 類的文件上。
  • Parser:
    通常就會針對特定文件了,例如說就有 XML parser, HTML paerser,使用這類的 parser 來處理相關格式會有事半功倍的效果。
目前想到的方法大概為這些,做個筆記,歡迎指正或補完哩。


---
想起來很多,寫起來很少 XD

星期二, 7月 07, 2009

vimrc

突然想到自己的 .vimrc 雖然不怎麼值錢,但是不見了也很麻煩,所以備份一下好了。


syntax enable 
set number

""" set encoding to UTF-8
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8,big5,euc-jp,gbk,euc-kr,utf-bom,iso8859-1
set termencoding=utf-8
set ambiwidth=double

""" set color scheme
set background=dark
set t_Co=256
color yen3

set title
set showmode            " Show current input mode in status line
set cursorline         " Show Cursor Line in Underline
"set showtabline=2
set wildmenu " Show autocomplete menus.
set visualbell

""" enable mouse
set mouse=a
set ttymouse=xterm
set mousemodel=extend

""" Search Setting
set showcmd
set incsearch
set showmatch

set hls

""" Backup Setting
set backup
set backupdir=$HOME/.vim/backup

""" set status bar
set laststatus=2
set statusline=%4*%<\ %1*[%F]
set statusline+=%4*\ %5*[%{&encoding}, " encoding
set statusline+=%{&fileformat}]%m " file format
set statusline+=%4*%=\ %6*%y%4*\ %3*%l%4*,\ %3*%c%4*\ \<\ %2*%P%4*\ \>
highlight User1 ctermfg=red
highlight User2 term=underline cterm=underline ctermfg=green
highlight User3 term=underline cterm=underline ctermfg=yellow
highlight User4 term=underline cterm=underline ctermfg=white
highlight User5 ctermfg=cyan
highlight User6 ctermfg=white

""" set folding
set foldnestmax=3
"set foldmethod=syntax
"set foldcolumn=4

""" Set editing Tab
set autoindent
set expandtab
set shiftwidth=4
set softtabstop=8
set tabstop=4
set smarttab
set backspace=indent,eol,start 

""" set help doc
helptags $HOME/.vim/doc 

filetype on
filetype plugin on

""" Key Mapping
nnoremap <silent> <f2> :NERDTree<cr>
nnoremap <silent> <f3> :TlistToggle<cr>
nnoremap <silent> <f6> :set foldmethod=syntax<cr>
nnoremap <silent> <f7> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<cr>

nmap cr=    $F=lcf;
nmap cl=    $F=hc^

nmap <LEADER>tc :tabnew<CR>
nmap <LEADER>te :tabedit<SPACE>
nmap <LEADER>tm :tabmove<SPACE>
nmap <LEADER>tk :tabclose<CR>
nmap <C-H> :tabprev<CR>
nmap <C-L> :tabnext<CR>

""" 讓我們可以使用 tab 來縮排
nmap <tab> v>
nmap <s-tab> v<
vmap <tab> >gv
vmap <s-tab> <gv

""" let command mode has bash key binding
cmap <c-a> <home>
cmap <c-e> <end>
cnoremap <c-b> <left>
cnoremap <c-d> <del>
cnoremap <c-f> <right>
cnoremap <c-n> <down>
cnoremap <c-p> <up>
cnoremap <esc><c-b> <s-left>
cnoremap <esc><c-f> <s-right>

""" Source Code Formating
let OmniCpp_MayCompleteScope = 1
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
" automatically open and close the popup menu / preview window
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview


""" Tab setting
autocmd TabLeave * let g:LastUsedTabPage = tabpagenr()
function! SwitchLastUsedTab()
    if exists("g:LastUsedTabPage")
        execute "tabnext " g:LastUsedTabPage
    endif
endfunction
nmap tt :call SwitchLastUsedTab()<CR>

""" Auto remove each line-end space 
autocmd FileType c,cpp,java,php,perl,python,ruby,sh,v autocmd BufWritePre  :call setline(1,map(getline(1,"$"),'substitute(v:val,"\\s\\+$","","")'))


com! -bang -nargs=? QFix cal QFixToggle(<bang>0)
fu! QFixToggle(forced)
    if exists("g:qfix_win") && a:forced == 0
        cclose
        unlet g:qfix_win
    else
        copen 10
        let g:qfix_win = bufnr("$")
        en
    endf
nn <leader>m :make<cr>
nn <leader>q :QFix<cr>

nmap <C-c><C-c> :!g++ -g -Wall % -o %:r.out<CR>

---
也可以當成參考 XD