11/29/2010

從JDK中學習Design Pattern

學習Design Pattern最怕就是找不到範例,無法意會其中精髓。

StockOverflow 有一篇Examples of GoF Design Patterns 列出 JDK中使用哪些Design Pattern,或許可加深印象及想法!

11/22/2010

ruby irb環境中使用vim

ruby irb 環境中並不適合編輯程式碼,因此常常浪費時間在編輯上。

gem interactive_editor 簡單整合在irb使用各種編輯器!

安裝過程:

[code] gem install interactive_editor [/code]

vim ~/.irbrc

[code] require 'rubygems' require 'interactive_editor' ... [/code]

自行定義: vim ~/.irbrc

[code] ... class << self def vi(name=nil) InteractiveEditor.edit('/Applications/MacVim.app/Contents/MacOS/Vim', name) end def vim(name=nil) InteractiveEditor.edit('/Applications/MacVim.app/Contents/MacOS/Vim', name) end def gvim(name=nil) InteractiveEditor.edit('/Applications/MacVim.app/Contents/MacOS/Vim -g -f', name) end def mate(name=nil) InteractiveEditor.edit('mate -w', name) end end [/code]

執行irb,直接打vim就可以呼叫MacVim出來編輯之後,vim -> :wq 就會直接執行所編緝程式。

11/17/2010

使用Pathogen管理Vim套件

用github管理dotfiles之後,發現Vim套件有一年多沒有更新,但是更新這些plugins相關檔案全部散落於~/.vim中,真的也不知道如何整理、維護。

Vim過去套件管理

過去Vim有人提出使用Vimball格式,但是它不是官方檔案格式也不容易使用於CLI環境下!

pathogen套件管理

直到我看了Tim Pope 所開發的Vim套件管理程式pathogen.vim,只要將所有套件放在~/.vim/bundle用不同的目錄名稱來區別,執行Vim時自動將所有套件載入,要移除套件只要將~/.vim/bundle/plugin-name刪除。

目前安裝套件: ls ~/.vim/bundle

[code] IndexedSearch ir_black snipmate.vim vcscommand vim-cucumber vim-fuzzyfinder vim-markdown vim-ruby vim-sparkup vim-tcomment bufexplorer jquery taglist vim-align vim-endwise vim-git vim-rails vim-ruby-debugger vim-supertab vim-vibrantink gist nerdtree textile.vim vim-autocomplpop vim-fugitive vim-haml vim-repeat vim-shoulda vim-surround [/code]

安裝Pathogen

下載 pathogen.vim 放至 ~/.vim/autoload 目錄中 [code] -> ls ~/.vim/autoload/ pathogen.vim [/code] 編輯 vim ~/.vimrc [code] " 最前面加入 filetype off call pathogen#helptags() call pathogen#runtime_append_all_bundles() [/code]

如何同步更新Vim套件

雖然有Pathogen管理Vim套件但是無法自動更新套件,目前大致上有二種方式:

  • 寫個 vim ~/.vim/update_bundles script ,用來自動更新bundle下所有套件,同時維護update_bundles
  • 使用git submodules觀念連結散落於GitHub Vim 套件至~/.vim/bundle/

兩種方式都是有效解決同步Vim套件問題,不過各有優缺點自行評估使用,不過現在維護VIM相關設定真的也容易許多了!

參考文件

11/16/2010

用github管理dotfiles

dotfiles基本上就是個人一堆設定檔如.vim, .vimrc, .screenrc, .irb, ...

在維護這些dotfiles有時候真的很花時間,乾脆直接放在github並使用git控管,日後要重灌、更新只少有一致的版本可以使用!

先去github新建 dotfiles git repository,利用git將你的dotfiles全部commit至github中,個人是將dot改成沒有dot檔案名稱再commit,利用Ryan 所寫的Rakefile自動安裝到自己的環境中。

安裝方式:

[code] git clone git://github.com/chliu/dotfiles ~/.dotfiles cd ~/.dotfiles rake install [/code]

11/12/2010

Apple加入OpenJDK

Apple加入Oracle’s OpenJDK,將提供更多 Java 技術到OpenJDK中。

將從Java SE 7 開始提供實作包括32-bit 與64-bit HotSport-base java virtual machine, class libraries, networking stack, graphical client....

個人是比較期待graphical client相關東西,這個應該是Apple強項。 JVM漸漸走向OpenJDK!

11/08/2010

HTML 5 大方向

從上一次Steve Jobs挑起Apple與Flash大戰之後,HTML5愈來愈被人重視,先別管到底是誰輸贏,HTML5必然浮上台面上雖然真的有一點不想理它,但是它也算是下一代網頁規格、規範。

HTML5 大方向為何(很粗看一下):

  • 新增描述文件的Tag

    section, header, footer, nav, article, aside...或許div將愈用愈少, 文件結構語意更重要!

  • 支援更多API

    contracts api, selectors api v2, indexed database api, web workers, web storage, web sockets, geolocation api, canvas 2d context, messaging api, html media capture,...好吧Javascript愈寫愈少,反正瀏覽器本身內建!

    瀏覽器將漸漸成為framework!

  • web form2

    placeholder text, autofocus fields, email addresses, web addresses, numbers as spinboxes, numbers as sliders, date pickers, search boxs, color pickers, form validation, required fields, ...常用處理都內建進來,看來Javascript會再少用一些。

  • 支援CSS3
  • 支援mobile
  • 支援Video/Audio Formats

    反正就是要努力拋棄Flash!

HTML5 及各家瀏覽器都尚未準備齊全,不過只少可以看得出來下一代網頁未來的大方向。

11/06/2010

Install mod_pagespeed on Ubuntu

Google 針對Apahce出的 mod_pagespeed 模組,主要讓你的網站用最省力、簡單、自動化跑最佳化 HTML, JavaScript, CSS, Image 相關網站元素。

聽聽Google怎麼說

we’re introducing a module for the Apache HTTP Server called mod_pagespeed to perform many speed optimizations automatically. We’re starting with more than 15 on-the-fly optimizations that address various aspects of web performance, including optimizing caching, minimizing client-server round trips and minimizing payload size. We’ve seen mod_pagespeed reduce page load times by up to 50% (an average across a rough sample of sites we tried) -- in other words, essentially speeding up websites by about 2x, and sometimes even faster.

ubuntu 安裝

  1. wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb
  2. sudo dpkg -i mod-pagespeed*.deb
  3. vim /etc/apache2/mods-available/pagespeed.conf

    修改ModPagespeedDomain 加入網站domain name => www.chrispad.com

  4. sudo /etc/init.d/apache2 restart

確認網站的HTML、CSS是否已經改變過,想要進一步的微調 Go!