2008年7月31日

在家上班的員工,知識工作者服務企業的新趨勢

電子通勤族也在家工作,但並非一般SOHO是自己經營事業,一篇網誌文章說明了電子通勤與SOHO的區別。在美國已經有大量且不斷增加的工作人口,是採行電子通勤的上班方式,為企業提供勞務。傳統通勤方式的職員,若住所距離較遙遠(商業區高級住宅可不是平民老百姓能負擔的),可能很早就要起床、準備在壅擠的都會區穿梭通勤,包括衣著及交通的時間花費,每天就會浪費掉寶貴的時間及精力,電子通勤方式讓知識工作者能以更有效率的方式完成工作。對企業來說,部分的員工以電子通勤方式,就能夠省下可觀的辦公室空間、設備,要給每個員工寬敞的工作桌椅、還要冰箱電視甚至廚房,對大多企業來說那都是不可能的,但員工在家其實就已經擁有這樣舒適且熟悉的工作場所。

當然不是每個行業都適合電子通勤,但軟體產業似乎就很有這種工作型態的發展潛力,現代的軟體開發,本來就是非常依賴網路科技的,即使同在一間辦公室工作的研發團隊,仍然是透過網路串連才能順利工作,例如透過SVN版本控制讓專案可以協同進行開發,每次的進度都能提交到伺服器上保存,而測試除錯工作也透過諸如Mantis之類的Issue Tracker在線上進行,而使用線上的專案管理、知識管理平台,更是有軟體開發團隊很重要的工具,只有透過這樣的方式,才能讓進度可以被管理、軟體發行能在透明化的作業平台上進行,開發者之間、管理者彼此都能夠了解狀況。從Office軟體開始提供線上協同作業功能,以及Google推出在線上包辦電子郵件、行事曆、文件簡報編輯器的情況看來,未來辦公室電腦化作業的環境,勢必從LAN擴展到Internet,既然大家都是透過網路線串起來的,那為何又要一定坐在一起呢?再次回顧Peopleware提出的議題,接不完的電話、吵雜的辦公室、加班變常態、無聊的會議,都是知識工作者生產力的無形殺手。知識工作最重要的是員工花多少腦力在專案上面,而不是貢獻多少時間呆在辦公桌前,生產線上的員工,多待一小時可以多製造N個產品,但知識工作並不是多花一小時,就能夠多解決一項問題或多完成一項任務,多花費的時間不可能換來固定量的產出增加,而且還可能負成長,知識工作者只有在腦筋清楚、身體狀況良好的情況下,才有可能將交付的工作漂亮地做好,這也是Peopleware強調的"腦力時間"才是企業必須要管理的,腦力時間只佔一天工作時間的少部分,但那是創意型工作最重要的時間環節,若沒辦法管理好這麼重要的一環,即使員工24HR都為企業奉獻也是一點意義都沒有。要能夠電子通勤,企業所需要做的事,僅是相信聘請的工作者有能力、責任感去將任務完成,所考量的是付出的成本(薪資)是否能將產品完成,而不必在乎工作者到底花了多少時間。

在經濟學人近日的一篇翻譯文章中,再次介紹了員工在家上班的新趨勢及帶來的好處,文末提到一些可能的問題,但我認為在軟體產業比較不會有同樣問題發生。面對面的溝通很重要、集體會議討論也是必要的工作,但是網路通訊科技已經允許我們不用坐在同一個辦公桌就能Face to Face,而討論進行的方式將更加豐富有趣,且隨時都會有紀錄不必仰賴辛苦的會議記錄者。現代年輕的工作族群,都很習慣透過MSN等即時通訊軟體聯繫工作進度,即使待在同一個辦公室的人們,透過網路溝通的時間可能都還比直接講話來得多,畢竟在辦公室並不容忍太多噪音或閒聊,即使要約週末一起出遊玩樂,也很可能是透過E-Mail或MSN。程式設計的經驗告訴我們,非同步溝通往往是較有效率的,而利用網路和通訊軟體,人們可以透過非同步的方式,同時處理與更多人的溝通,而且也不用為了像面談時為及時回覆而隨口應答。
員工在家上班,每年每人多出25天的假期! (出處)

作者:經濟學人  出處:Web Only 2008/07

相關關鍵字:經濟學人

根據今年一項研究報告指出,有三千三百萬美國人的工作屬於可以在家上班的性質。如果這些人全部成為電子通勤族(telecommuters),不但石油進口量下降超過四分之一、每年二氧化碳排放量減低6700萬噸,每人每年還可省下相當於25天假期的通勤時間。

電子通勤熱潮由幾個因素所驅動:家用寬頻網路的高普及率,更方便和便宜的網路電話,成熟的虛擬私人網路軟體,以及新一代超強筆記型電腦。這些「技術 牽引力」,配合現今的「經濟推動力」,促成此趨勢的發展。許多公司已意識到能真正降低成本,招聘和保留最好員工,並能在受災難打擊時持續公司業務,才能獲 致成功。

而省錢必勝方法之一是降低辦公室空間和服務成本。透過電子通勤,公司可輕易省下一半經常開支。而由於連線至家中的寬頻網路,往往可設定為免費的語音線路,通訊成本可望降低。生產力上也表現優異,如美國運通估計,該公司電子通勤員工生產力超出一般辦公室員工40%。

然而一些疑慮也逐漸浮出水面。位於洛杉磯的招募公司Korn/Ferry發現:電子通勤族的事業常出現停滯狀態—因不常見面而成為被遺忘的一群。也 有約半數的受訪老闆覺得,長久下來,遠距員工的工作品質,因缺乏與同事面對面互動而受影響。美國西北大學則指出了電子通勤族特別需面對的兩項挑戰:一是孤立感,另一是如何取得工作與生活之間的平衡。 (陳智菁譯)

2008年7月30日

Canoo WebTest

Canoo WebTest is a free Open Source tool for automated testing of web applications in a very effective way.

http://webtest.canoo.com/webtest/manual/WebTestHome.html

Canoo可以用XML或Groovy撰寫Test Case,結果也可以用Web方式呈現,在Test-driven的Agile開發環境似乎是個不錯的選擇。

Groovy初體驗之XML篇

一行!一行!只要一行!

用Groovy存取XML能有多輕鬆呢?有碼有真相,請繼續往下看:

假設XML長這個樣子...
<config>
<title>我是抬頭</title>
</config>

要讀取title的文字內容,只要這樣子...
def root = new XmlParser().parse(new File("PATH_OF_XML_FILE"))
print root ['title'][0].value()[0]

還記得幫JSP/Servlet刻Java code時,光是XML Parser的設定就要幾(十)行了嗎?現在應該覺得相見恨晚了吧!

Groovy初體驗之Database篇

用Groovy存取資料庫能有多輕鬆呢? 有碼有真相,請繼續往下看:

def sql = new Sql(new javax.naming.InitialContext().lookup("java:comp/env/jdbc/ConnName").getConnection())

對於已經設定好Container的JDBC DataSource,用上述的一行指令就能夠建立連線!

如果是要即時建立新的連線呢?

def sql = Sql.newInstance("jdbc:URI_HERE", "username", "password", "DRIVER_CLASS")

既然建立連線都這麼簡單了,那下SQL查詢呢?

sql.eachRow("select id, name from people") {
println "$it.id, $it.name"
}

如果還記得在JSP要怎麼寫,現在應該覺得相見恨晚了吧!

2008年7月29日

用Groovy開發Java Web Applications

Groovy把Java變成較容易寫的Scripting language(就類似Perl/PHP/Python/Ruby),於是可以不用再去care那些繁文褥節。Java最可愛的一面就是它很為初學者著想,做了一堆保護措施防止初學者犯了笨蛋的錯誤(*但初學者仍會犯了笨蛋也不會犯的錯);對於已經有經年累月程式設計功力,又善於用Dynamic Programming Language快速打造應用程式的資深老手,一定覺得Java寫起來就像拖著牛車去跑馬拉松,即使有再多精力、創意,也只能...等明天能寫得完再說吧!

最近接手一個用Java打造的project開發案,整個都用純JSP製造而成,看得我實在一個頭三個大,於是興起嘗試Quercus的念頭,曾經用過Quercus覺得它仍有許多待發展之處,這次嘗試的結果仍是多次碰壁,好不容易設定好JDBC連線,可以通過new PDO("jdbc/ConnName");的方式簡單存取資料庫了,但中文編碼問題仍是無解,官方提供的設定說明,在百般嘗試後仍得不到預期的效果,最後只好放棄。

仍舊要使用Java的折衷方案,只好再去瞧一下傳說中發展得不錯的Groovy,嗯,一試就上癮,這東西的資源似乎開始變多了,需要什麼solution只要上Google就能在第一頁找到。於是參考了 http://groovy.codehaus.org/Groovlets 這篇官方的教學,開始玩玩Groovy打造Web Application。步驟很簡單,就是設定groovy servlet、複製需要的*.jar檔案、開始寫*.groovy script程式檔。

*原本想要將今天的Groovy玩樂心得簡單寫成教學,無奈Blogger+ScribeFire還是貼程式碼、設定檔還是很麻煩,只有等Scrapbook開發好再來寫囉。

2008年7月20日

逛網站,分享一些今天看到的網站

VooEasy 可以建立線上名片,並經營自己的社群網路。

linoit 提供一塊白板(預設是軟木板!),上面能夠隨意貼留言小紙條、圖片。

sumopaint 這真是太不可思議了!線上版繪圖軟體比小畫家還厲害N百倍,簡直看得到photoshop的影子。

我很強! Very John

在這裡,人人都是高手中的高手

VeryJohn提供一個類似twitter的服務,讓會員能快快速發表短文,不用太長,只要一封簡訊的長度。事實上VeryJohn在發言時,也能夠選擇順便發佈到twitter。和twitter不同的是,twitter什麼都能講,漫無目的的自言自語也沒關係,而VeryJohn則多了些條件,讓你以詼諧的話表達自己過人之處、做了什麼別人做不到的事(通常是別人根本不會想這麼做),kuso的程度要讓人注目。當你做了一件自己覺得很滿意的事情,但是不可能寫在104履歷表,也不能發表在自己的部落格上,因為這件事情的成就感可能在五分鐘後就會自動消失,那麼就到VeryJohn分享吧!

這樣的網站給我們的一個啟發是,Web服務的世界已經進入很兩極的階段(大鯨魚提供很有用的服務、小蝦米創造大量好玩的服務),就像電腦遊戲軟體一樣(大鯨魚設計很棒的遊戲,小蝦米製作大量有趣的小遊戲),當個人或少數幾個伙伴想要開始創造些Just For Fun的網路服務時,必須從幾個考量著眼:
  • 能夠在短時間內做出來,一個月、一個星期、一天
  • 使用者能夠透過這個平台自得其樂
  • 決定要做就馬上動手的執行力
不需要去想太多市場行銷問題、不需要花時間驗證這個點子、不需要用很嚴謹的工具實作,這樣做的投資成本非常低,一年只要幾百元的,就能創造許多就算不成功、自己也會玩得快樂的服務。

2008年7月19日

JSP遇見失效的EL

最近在JBoss 4.0.5.GA開發Web AP時,一直碰到一個囧問題,就是發佈出去的WAR包,JSP中含有EL的部份,完全起不了作用,也就是畫面中需要代入變數的部份,都變成直接顯示出EL表示式(${example_val})。

這問題真是囧到不行,重新deploy幾次仍失敗後,發現要把deploy/work資料夾給砍了,重新啟動JBoss Server,問題自己自動消失了。

但或許這是一個僥倖,今天在改寫舊的AP時,原本都沒什麼狀況,但就在一次重新deploy後,JSP又開始跟EL裝不熟,砍work的大絕也回天乏術,而莫名其妙的是另外一個結構相同的Web AP,不管怎麼deploy/undeploy都不會有問題。

在絕望之際,很想從10樓往外跳的時候,Google大神伸出援助的雙手,發現了原來還有比大絕還厲害的一段語法,給JSP服用後果然一次見效,此後就JSP乖乖聽話,把EL當家人看待:
<%@page isELIgnored="false" %>

但這真是莫名其妙看到鬼,另一個好端端的Web AP不加這語法也沒問題,而且在JSP 2.0 spec中,明明EL就應該預設開啟支援的。

也難怪教人如何避免跳入Java陷阱的主題,就能寫成一系列套書。

屢次在寫J2EE時冒出想輕生的念頭,就像寫HTML時被IE整到快咳血一樣,看來為了寶貴的生命,還是趕快把SCWCD拿一拿就跟Java說掰掰吧!

TeraCopy - Copy your files faster and easier

Web Worker Daily看到一篇TeraCopy的介紹,這個軟體可以改善Windows複製檔案功能:

您是否有操作大型檔案、或是需要在兩個裝置間同步大型檔案區快?對這類型的應用,一個免費的Windows應用程式TeraCopy(官方網站) 比Windows Explorer提供更好的辦法。

TeraCopy是一個設計用來複製及搬移檔案的小程式,可以獲得最佳的速度,它提供給使用者許多特色:

  • 更快速複製檔案. TeraCopy使用動態調整的緩衝區來減少磁碟搜尋時間,在兩個硬碟裝置間同步複製檔案的速度得以提升。
  • 暫停及繼續檔案傳輸. 在任何時候可以暫停複製程序來釋放系統資源並且只要再按一下就能恢復程序。
  • 錯誤復原. 對於複製錯誤的狀況,TeraCopy將嘗試多次、或最糟情況時忽略錯誤檔案,而不會中止整個傳輸。
  • 互動檔案列表. TeraCopy顯示傳輸失敗的檔案,並讓您選擇修復問題和重新複製有問題的檔案。
  • 功能表整合. TeraCopy能夠完全取代Explorer的複製和搬移功能,不用改變您原有的習慣。
  • 完整的萬國碼支援.
支援Windows XP / Vista !




(images from CODE SECTOR)

CoolerMaster CM690 風扇配置篇

自從了CM690這咖機殼,風扇的配置問題真是令我苦惱許久,因為共有7個位置能夠裝12/14CM風扇,因此有很大的彈性可以加強風量、降低噪音,但如果配置不好則效果適得其反。原本內建的三顆風扇是CM自家的靜音風扇(1200rpm/21dBA),風量普通不過聲音確實不大。

內建的12公分靜音風扇

預設的配置是:
  • 上 * 0
  • 側 * 1
  • 後 * 1
  • 前 * 1
  • 底 * 0

買回家第一天我就將風扇裝滿:
  • 上 * 2 (另購兩顆AC盒裝低頻靜音扇)
  • 側 * 2 (另購一顆CoolerMaster靜音扇)
  • 後 * 1
  • 前 * 1
  • 底 * 1 (另購ADDA低頻扇)

當然內吹或外抽的配置是不能變的,原本設計的前、側、底內吹,上、後外抽才會有最佳的對流。

裝滿七顆風扇後噪音仍在可以容忍的範圍內,在夏天來臨之前也一直有不錯的散熱效果。不過就在7月室溫飆高後,機殼內的溫度也升高不少,為了增加散熱效率,再重新添購風扇改了一下配置。
  • 上 * 2 (新購兩顆CM散裝高風量鐮刀扇, 2000RPM/90CFM/19dBA)
  • 側 * 2
  • 後 * 1
  • 前 * 1
  • 底 * 1 (新購CM的4pin PWM風扇)

鐮刀扇的風量真的驚人,裝上去立即感覺風量大了不少,為了減少噪音問題,特地再跑去買了橡膠減震墊。

鐮刀扇加上橡膠減震墊

新的配置讓機殼內部的散熱效率提升不少,不再有溫度飆高問題,但帶來的是噪音變得無法忍受的情況。但鐮刀扇明明標示19dBA,應該不至於產生擾人的噪音,仔細觀察噪音來源後,才發現2000RPM的高轉速帶來機殼共振,造成有規律的刺耳噪音,即使在看電影時戴上全罩耳機也能隱約聽見。

由於鐮刀扇本來的設計是給CPU用的,若裝在鋼板比較薄的機殼上,很容易就造成金屬振動產生噪音,雖然CM690有良好的對流設計、寬敞的內部空間,但上、側板用的都是較薄的鋼板,加上外部滿佈通風孔、以及缺乏防噪音的設計,在加裝高轉速、高風量的系統風扇時,就很容易產生出擾人噪音(幸好硬碟部份已有減震架設計,否則噪音會更大)。但市面上要有良好散熱設計、夠硬夠堅固密合、還要抗噪音設計,大概也只有高價的聯力機殼了,聯力幾款天價(超過$8k)的機殼甚至還裝有隔音泡棉,雖然整個完美但不是貧窮學生負擔得起,CoolerMaster要價$2k以上的機殼,就已經是要吃上幾天泡麵才能買的了。

再次重新調整風扇配置,目前效果正滿意中:
  • 上 * 2 (原後風扇調到這邊裝在靠近CPU上方,另外搭配一顆庫存的AC低頻扇)
  • 側 * 2
  • 後 * 1 (將鐮刀扇換裝於此)
  • 前 * 1
  • 底 * 1

由於機殼後方的鋼材比上方硬(因為是主體),所以將鐮刀扇裝於此作抽風用,就不會造成振動問題,因為後方是熱風主要的排風出口,加強這部份的散熱效率也能換來不錯的效果。而上方裝1200RPM以下的風扇,一切就會恢復平靜了。

結論是CM690可以裝90CFM的鐮刀扇,但最佳位置僅在後方。而上方風扇的升級,店家建議可以考慮1200RPM/48CFM/17dBA的高爾夫風扇,雖然價格高一些,但散熱效果和低噪音表現不錯。

2008年7月18日

Low-cost database load balancing solutions

MySQL Proxy is a simple program that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication. Its flexibility allows for unlimited uses; common ones include: load balancing; failover; query analysis; query filtering and modification; and many more.

Sequoia is a transparent middleware solution offering clustering, load balancing and failover services for any database. The database is distributed and replicated over multiple nodes and Sequoia balances the queries between them. Sequoia handles node and network failures transparently. It also provides support for hot recovery, online maintenance operations and online upgrades.

MMM (MySQL Master-Master Replication Manager) is set of flexible scripts to perform monitoring/failover and management of MySQL Master-Master replication cluster configurations. Current version of this software is stable, but authors would appreciate any comments, suggestions, bug reports about this version to make it even better.

Maatkit (formerly MySQL Toolkit) contains essential command-line tools for MySQL, such as table checksums, a query profiler, and a visual EXPLAIN tool. It provides missing features such as checking whether slaves have the same data as the master.

SQL Relay is a persistent database connection pooling, proxying and load balancing system for Unix and Linux.

解決mplayer播放srt字幕的亂碼問題

OS: Ubuntu 8.04.1

在Ubuntu中使用mplayer(或SMPlayer)播放影片,如果字幕是中文的SRT格式,可能會發生亂碼問題,這時候就必須手動編輯設定檔作點修正。

# ~/.mplayer/config
font=/usr/share/fonts/truetype/arphic/ukai.ttc
subcp=utf-8


ukai.ttc是系統中已經存在的中文字型檔,若缺少這個檔案或想使用其他自行,可以查看/usr/share/fonts/truetype資料夾中是否有其他可用字型。ttf-arphic-ukai這個套件通常是預設就安裝的,若沒有可以自己補上。

使用UTF-8的文字編碼可以讓問題少一點,但一般網路下載影片附帶的SRT檔,通常編碼都是用BIG5,這時候必須用iconv作轉換:
iconv -f big5 -t utf-8 Your_movie.srt > Your_movie.utf8.srt

走樓梯運動,商辦工作族的健身之道

自從開始騎單車,對自己的健康指數開始變得很關心,因為那直接影響到騎車樂趣,能不能騎上陡坡享受山林間漫騎,能不能在平路以時速30(登山車)、40(公路車)、高迴轉速維持長距離騎乘,讓有限的時間內能夠享受較長的路線,也直接影響到尬車時能不能快速衝刺的肌力,要向更有樂趣的騎車路線挑戰,沒有體力、耐力一切免談。將單車當成一種運動,最好能夠搭配功能齊全的碼表,除了提供時速、里程數紀錄,也能夠顯示腳踏迴轉速及心跳次數,若能夠配合年齡體重顯示運動是否適量就更為方便。騎車運動的時候,對自己的健康狀況是相當有感覺的,若前一晚熬夜沒睡好,一定會感到身體狀況明顯的差異,而有持續維持運動,初期有會在心肺功能及肌肉耐力上感到快速的進步。

原本的規劃是希望每天都能有騎車運動,最好週末還能騎百公里長程當休閒,但現實總是很難如意,每天上班到天黑,回到家還有處理不完的案子,而連日來的陰雨綿綿,也讓人想要只花一小時夜騎都很困難。我還蠻佩服許多都市人能夠在雨中夜騎,每次淋雨需要花數小時洗車就讓我卻步,沒投保鉅額意外險也讓我不想輕易就出門冒險。

為了不要讓下次騎車出遊時,發現自己體力又大幅衰退,最近開始探索合適的替代運動,走樓梯似乎是個不錯的IDEA。

但只是走一走樓梯怎麼算運動呢?我家就住沒電梯的國宅三樓,每次出門或回家都要從地下室到三樓總共爬四層樓梯,一點也不覺得有甚麼運動效果。

暑假在台中的大樓商辦上班,辦公室就位於17層樓,曾聽說過有人都是搭電梯再走三層樓當運動。為了體驗走樓梯也爆心跳的感覺,第一次索性就從1F開始爬、爬滿17層樓,在1F~7F沒什麼感覺,但8F~10F就開始心跳急加速,11F~15F覺得雙腳已經快罷工,最後的二層樓感覺就像田徑跑百米,證實了這真的有運動效果。

如果,上、下班也能變成運動,甚至中午到對街買便當也變成運動,那就能輕鬆實現每天運動的理想。

上班爬樓梯運動心得:
  • 前天晚上一定要12點前入睡,避免心跳破表
  • 上樓梯要定速,不要隨便停下休息,配合韻律呼吸
  • 要增加運動量,可以斟酌多背一台筆電,或提一桶礦泉水
  • 下樓梯很傷膝蓋關節,只求平穩不求快
在走樓梯上下班的第三天,甚至可以小跑步爬到10F,這運動效果挺不賴!

2008年7月17日

我的工作室之2008年暑假

首先是犧牲最多張小朋友換來的四核心工作機,搭配22吋雙螢幕、8600GT顯示卡,記憶體插滿8GB,硬碟總容量近2TB。在花費超過50K之後就沒再去計算,這台機器的配置是只要有需求就會立即進行升級。著重於效能和週邊能夠滿足工作需求,所以真的很棒但真的很貴的高畫質螢幕、最新款顯卡、全鋁機殼就不再考慮範圍內。

為防止在酷暑期間當機頻傳,不久前才將機殼升級為CoolerMaster CM690,裝滿7顆12公分風扇,原本是採AC、ADDA低頻風扇,但其中兩顆上方抽風用,在上個星期更換為高風量的CM鐮刀扇,標示風量90CFM、轉速2000RPM,將原本平均50度左右的北僑、CPU溫度降到42度左右,上午室溫太高使得機殼內部悶熱,為此還另外準備用計時器自動啟動的電風扇在一旁輔助散熱。

這部電腦目前運行Ubuntu Desktop 8.04.1,足夠的桌面大小及硬體效能,可以同時開啟多部虛擬機器工作,隨時快速切換到為不同客戶開發專案時使用的平台,也拿來測試新發行的作業系統、運行Cisco Lab模擬器、模擬多伺服器及網路測試環境。不過最近拿來模擬Sakai的多AP/DB Server作Load Balance測試環境,仍感到效能不足,目前考慮添購第二部高時脈處理器、高容量記憶體的機器來輔助。以高效能的Linux PC當工作站、伺服器,一樣可以24H不間斷運作,即使要多幾部當備援、平衡負載,也不用花太多錢,需要穩定一點的作業系統,可以考慮CentOS,其實蠻值得中小企業採用的。



已退役的舊機器,傳統4:3比例的19吋螢幕,插滿也只有2G的記憶體,變成家中的文書機,目前是老爸每天愛用的股票機,最常執行的是看盤軟體和奇摩股市首頁。配備Creative Sound Blaster Audigy 2 音效卡以及SB自家的2.1聲道喇叭,有時仍拿來看電影和聽音樂,原本我最愛的擴大機及SONY音箱,已經送給女王當音響,所以現在使用頻率比我的iPod Touch還低。

超耐用的舊款羅技無線鍵盤滑鼠,當初用1K向民雄工廠的老闆購得展示二手品,但一直用到現在好幾年,卻怎麼也不會壞,不過耗電量比起新款的高很多,時常需要將電池取下充電。



手邊的兩台筆記型電腦,一台是被我操到時常罷工的ASUS M9J,T5500+記憶體極限2.5GB;另一台新的ASUS F8S是公司配的工作機,配備就比較宜人些,T9300(2.5GHz)+記憶體4GB,硬碟有320GB,加上最近新買的外接320GB創見防震碟,終於可以快樂工作。

M9J目前搭配Ubuntu Desktop 8.04.1(x64版),硬體幾乎是100%相容,小問題不像之前那麼多了,用NB開啟3D桌面、Screenlets、Cairo-dock,自己每天看都還是覺得超炫,Ubuntu能用apt安裝的軟體多到可以一直玩不完,整個就讓人沉迷於其中,這也是Ubuntu讓人愛不釋手的原因之一吧!

新的F8S目前還是保留預裝的Windows Vista,雖然不是很好用,但畢竟是微軟新的主力產品,遲早還是要學會用它。雖然配有4GB的記憶體,CPU時脈也有2.5GHz,但在Vista下根本沒快感,每次使用Vista都要忍不住抱怨,希望新的Service Pack真有傳言中說的效能改善。

躲在角落的伺服器主機,雖然效能不高(只有Sempron 2800+/3GB RAM),不過硬碟容量及穩定性是我最滿意的,目前同時跑Ubuntu Server + XP(虛擬機器執行,養驢專用),完全不理它也能安安靜靜地24H運作,除了加硬碟需要關機外,其他時間大概連重開機都不用。

如果一定要宅著,我喜歡待在自己的工作室,遠勝於學校的實驗室、公司的辦公室。創造一個屬於自己工作空間,一切都會簡單又有效率。需要的東西都圍繞四周、垂手可得,無論是書、唱片、機器、玩具、零食飲料...;寬頻網路一個人獨享,怎麼用也不會影響別人;想要安靜就能安靜,要聽什麼音樂都能隨時點播;想研究什麼就研究什麼,想接什麼案子自己決定;想做什麼網站隨時開發、上線。Peopleware一書就清楚說明了一切,但別肖想在上頭的人看得到。身為資訊人的你,實驗室、辦公室給了你什麼?如果只是張桌子、椅子,就要好好想清楚是不是想要成天與桌椅為伍了。

用FireFox幫助你用部落格賺錢

Firefox 不但是個網頁瀏覽好幫手、開發網頁除錯利器,加上兩個不錯的外掛,也可以幫忙兼職經營部落格、靠網路廣告賺點小外快的你,更方便地發佈、管理部落格文章,以及隨時掌握即時整合的廣告收入狀況。

ScribeFire
- Fire up your blogging
只要打開Firefox,就能輕輕鬆鬆寫網誌!不用再大費周章登入部落格,就算擁有多個部落格,也能一次搞定。這麼好康的事情,ScribeFire幫你做到了。目前支援的部落格平台有:WordPress、MovableType、Drupal、Textpattern、Roller、MetaWeblog API、Blogger、Tumblr。使用ScribeFire的好處很多,除了可以同時管理多個部落格的文章新增及修改,還能夠幫你使用pings以及設定TrackBack、Technorati標籤等,也支援文章分類的管理。對於經常需要一邊看著其他網站內容,一邊撰寫評論、推介文章的寫作者,ScribeFire更是能夠讓你在瀏覽網頁的同時,就在下方的分割視窗寫作。

MoneyQuake - financial extension for FireFox
若你申請放置了網路廣告,想利用部落格的人氣賺點零用錢,就不能錯過MoneyQuake這個外掛,它在FireFox的狀態列增加一個小圖示,當滑鼠游標移上去,立即就能顯示今天、昨天、這個月的廣告收益,自動定時更新,不用再辛苦的登入廣告商網站去查看紀錄。

當然啦!這些外掛都是舶來品,對於國內的服務就沒支援,例如BloggerAds的廣告、痞客邦的部落格,暫時是沒辦法享受到這樣的便利,不過只要有需求就會刺激新軟體誕生的,慢慢等吧。

Open source XML diff written in Java

It's a collection from http://www.manageability.org/blog/stuff/open-source-xml-diff-in-java
  1. VMTools
    - The toolkit contains tools for automatically generating differences
    between two XML documents. The difference document generated is
    optimized for minimal size. Supports mark-up style documents in
    addition to data documents.
  2. 3DM
    - The 3DM tool is a tool for performing 3-way merging and differencing
    of XML files. Unlike line-based tools, such as diff and diff3, 3DM is
    aware of the structure of the processed XML documents. 3DM is not
    limited to update/insert/delete operations, it also handles moves and
    copies of entire subtrees. 3DM is not reliant on edit histories; the
    only input needed are the XML files.
  3. diffxml
    - Standard UNIX tools exist for comparing (diff) and patching (patch)
    files, which operate on a line by line basis using well-studied methods
    for computing the longest common subsequence (LCS). This project
    contains XML diff and patch utilities. Also contains an implementation
    of a Delta Update Language or DUL.
  4. diffmk
    - Converts the documents into two lists of nodes (text and/or element
    nodes) and attempts to find the longest common subsequence of nodes.
    Phrased another way, it finds the smallest number of additions and
    deletions to each list that are required to make the two lists the same.
  5. XMLUnit
    - XMLUnit for Java provides two JUnit extension classes, XMLAssert and
    XMLTestCase, and a set of supporting classes (e.g. Diff, DetailedDiff )
    that allow assertions to be made about the differences between two
    pieces of XML. XMLUnit for Java can also treat HTML content (even
    badly-formed HTML) as valid XML to allow these assertions to be made
    about the content of web pages too.
  6. OpenSHORE XML Merger
    - ool to insert XML tags from differnt sources into one or more text
    files. The Java program reads a very simple file format (*.xmlm files)
    with one XML command per line. XMLM sorts these commands, removes
    duplicates, ensures correct tag structure and generate XML files from
    listed files.
  7. XOperator
    - XOperator is a scriptable command-line tool and library to compare,
    merge and synchronize XML documents, a framework to formulate and
    evaluate algebraic expressions on XML trees and a framework to express
    object-oriented inheritance (and more) in pure XML.
  8. JXyDiff - JXyDiff is a based on XyDiff.
    It was originally developed at INRIA. It employs a novel Change Model
    tailored to XML data. It is a tree oriented algorithm that is fast and
    can detect if a node has been moved or updated.
  9. DiffX
    - DiffX is an open source Java API for comparing XML documents by
    analyzing the sequence of XML events. When processing XML data for
    comparison it more interesting to know that a word in the text of
    chapter X, paragraph Y has been changed rather than knowing that line Z
    is different. DiffX can ignorethe order of the attributes and white
    space for indentation or namespace prefixes.
  10. XMLPatch
    - XMLPatch, developed at Nokia, is a framework utilizing XML Path
    language (XPath) selectors for the use in applying a set of patches to
    a document. The framework includes a simple xml-diff utility.
  11. XMerge
    - The XMerge SDK provides a framework for converting documents between
    different formats using conversion plugins to read and write each
    format. In addition to format conversion, the XMerge SDK provides a
    framework for merging changes in one document format into an original
    document. XMerge provides plugins that are designed to support the
    OpenOffice.org XML file format. The framework is able to support
    "chaining" of conversions, also known as an "Any-to-Any" conversion,
    eg. convert from a Palm document to a PocketPC document through the
    intermediate OpenOffice.org XML file format.
  12. A7Soft JExamXML

HtmlCleaner 2.0 released!

新版本帶來數個改進與修正,包括:
  • 完整代碼重構,讓Cleaner的API更好並更有彈性
  • 增加維護DOM結構的物件方法
  • 增加基本的XPath支援
  • 新的參數用來控制cleaner的行為
更多訊息可以參考發行公告.

HtmlCleaner是一套開放原始碼的HTML解析器,使用JAVA撰寫。許多網站的HTML碼通常很凌亂、格式不佳並不適合用在進階的處理。對於這樣的網頁文件,必須先對其內容作清理。對於所給的HTML代碼,HtmlCleaner重新排列個別的元素並產生格式良好的XML,它預設是根據大多數瀏覽器用來建構DOM的相同規則。然而,使用者也可以提供自訂的標籤和規則集來進行標籤的過濾與平衡處理。

這裡提供一個範例,一個結構不良的HTML代碼,包含未有對應結束標籤的起始標籤以及少了引號:

<table id=table1 cellspacing=2px
<h1>
CONTENT</h1>
<td><a href=index.html>1 -> Home Page</a>
<td><a href=intro.html>2 -> Introduction</a>

在使用HtmlCleaner處理後,XML的輸出就像下列的樣子:

<?xml version="1.0" encoding="UTF-8"?>
<html>
<head />
<body>
<h1>CONTENT</h1>
<table id="table1" cellspacing="2px">
<tbody>
<tr>
<td>
<a href="index.html">1 -> Home Page</a>
</td>
<td>
<a href="intro.html">2 -> Introduction</a>
</td>
</tr>
</tbody>
</table>
</body>
</html>


這是一個很酷的工具,對於需要撰寫自動化網頁處理的人來說,一定有相當的實用性,使用DOM可以很簡單地存取XML的內容,但往往網頁設計者並沒有依照W3C的XHTML要求撰寫代碼,所以使用一般XML的Parser,解析結果一定是一團糟糕,HtmlCleaner似乎讓我們省了不少功夫。

2008年7月15日

7-11 開始賣自行車

7-11開始賣自行車了,架上有免費DM可以索取,主要是賣Ventura這個品牌,有提供7-11付款、配送到府服務。Ventura在最近的單車雜誌都有刊登廣告,之前在Costco也有賣過,雖然知名度並不算高,但隨著小折超夯,Ventura也在網路上有不少討論。Ventura的Traveler與Seattle是比較受到注意的車款,20"配6/7段變速的鋁合金折疊車,折疊機構由韓國品牌Dahon專利授權,所以跟Dahon車系一樣能夠折得很工整。

折疊車系列
Ventura Newport $6,999
Ventura Traveler $7,999
Ventura Seattle $13,999
Mobiky $23,800
Aicool $5,880

公路車系列
Ventura Equipe $9,999

登山車系列
Ventura M-Byte $6,999

不過,好鄰居買東西雖然方便,但可別肖想要打折。

VMWare 6.0.4 Ctrl/Alt/Shift/CapsLock按鍵失效

Bugs!!!

測試環境是 Ubuntu 8.04 + VMWare 6.0.4

快樂使用虛擬機器時,回到Ubuntu桌面發現重要的功能鍵通通失效了,Ctrl+Alt不能用讓我的3D桌面怎麼也轉不起來,Shift/Caps Lock失效讓我想打大寫字母比登天還難,當然輸入法也不能切換了,這種情況真是囧。

爬了很多forum,發現有setxkbmap似乎可以解決這個問題,正在期待下一次鍵盤失效中…(話說很想要壞掉的時候卻都不會壞!!!)


2008年7月13日

BackTrack 3 - linux live distribution focused on penetration testing

from [http://www.remote-exploit.org/backtrack.html]
BackTrack is the most Top rated linux live distribution focused on penetration testing. With no installation whatsoever, the analysis platform is started directly from the CD-Rom and is fully accessible within minutes. It's evolved from the merge of the two wide spread distributions - Whax and Auditor Security Collection. By joining forces and replacing these distributions, BackTrack has gained massive popularity and was voted in 2006 as the #1 Security Live Distribution by insecure.org. Security professionals as well as new comers are using BackTrack as their favorite toolset all over the globe. BackTrack has a long history and was based on many different linux distributions until it is now based on a Slackware linux distribution and the corresponding live-CD scripts by Tomas M. (www.slax.org) . Every package, kernel configuration and script is optimized to be used by security penetration testers. Patches and automation have been added, applied or developed to provide a neat and ready-to-go environment.

BackTrack 3 在 6 月底發佈 Final release,提供LiveCD、LiveUSB、VMWare Image三個版本。

2008年7月8日

使用 diskpart.exe 重新規劃磁碟分割

1. 在命令提示字元, 輸入 diskpart.exe.
2.型別 list volume 如果要顯示在電腦上現有的磁碟區。
3.型別 Select volume volume number 磁碟區號碼 是數字, 而該磁碟區, 您要擴充
4.型別 extend [size=n] [disk=n] [noerr] . 下面將說明參數:
size=n
The space, in megabytes (MB), to add to the current partition. If you do not specify a size, the disk is extended to take up all of the next contiguous unallocated space.

disk=n
The dynamic disk on which to extend the volume. Space equal to size=n is allocated on the disk. If no disk is specified, the volume is extended on the current disk.

noerr
For scripting only. When an error is thrown, this parameter specifies that Diskpart continue to process commands as if the error did not occur. Without the noerr parameter, an error causes Diskpart to quit with an error code.
5.型別 exit 若要結束 Diskpart . exe。

from http://support.microsoft.com/kb/325590/zh-tw

2008年7月7日

SQL Server 的最大容量規格

其實也沒什麼上限,主要都受限於disk/memory size。

Playing SVN with Ubuntu

Subversion 是一套好用的版本控制工具,一般簡稱為 SVN,可跨平台、跨開發工具支援,除了作為程式碼專案的版本控制管理,拿來當文件管理、備份、分享系統也相當實用。在 SVN 成為普遍使用的工具之前,最常被使用的工具是CVS(Current Version System),以Eclipse開發工具來說,CVS是很早就已內建支援的團隊協同(team collaboration)開發工具,而SVN通常必須加上3rd Party的延伸套件(Subclipse)才能支援(成為預設套件應該只是時間上的問題,目前3.4已經提供Subversive - SVN Team Provider,只是要另外加裝3rd Party Connectors)。由於SVN的易學易用,並有許多具親和力的圖形介面工具、可與Windows檔案瀏覽器(Explorer)整合(Tortoisesvn),即使是Visual Studio .NET的開發者,也有AnkhSVN可以選擇(當然使用人口沒微軟自家的Team System多啦)。集合起各種作業系統、開發環境平台的使用者,SVN儼然成為時下的主流。

這篇文章提供Ubuntu安裝SVN伺服器的初步說明,希望能幫助還未上手的朋友能在短時間內學會使用這個好工具。

安裝 Subversion

要善用Ubuntu超級豐富的APT套件庫,不但省時省力、日後也好維護。
sudo apt-get install subversion
一道指令解決。

設定 SVN 伺服器

自己架設伺服器也只需要很少的幾個步驟。
sudo apt-get install xinet.d
這道指令並非與SVN直接相關,而是安裝一個xinetd的daemon程式,它就像一個伺服器服務程式的管家,負責幫忙接待想透過網路連結服務的客戶。

建立新檔案在 /etc/xinet.d/svn ,檔案內容如下:
# default: off
# description: svnserve is the server part of Subversion.
# server_args = -i -r /var/lib/svn/repositories
service svn
{
disable = no
port = 3690
socket_type = stream
protocol = tcp
wait = no
user = svn
server = /usr/bin/svnserve
server_args = -i -r /home/svn
}

* /home/svn 是自行指定的 repository 存放目錄

接著建立 svn 的 user 及 home directory:
sudo mkdir /home/svn
sudo useradd -d /home/svn svn
sudo chown svn.svn /home/svn

重新啟動 xinetd ,測試SVN服務:
sudo /etc/init.d/xinetd restart
telnet localhost 3690

當telnet程式連線成功,並出現以下訊息,則表示SVN daemon已經啟動成功:
( success ( 1 2 ( ANONYMOUS ) ( edit-pipeline svndiff1 absent-entries ) ) )

建立新的 repository

cd /home/svn
sudo svnadmin create NEW_REPO
sudo chown svn.svn NEW_REPO -R

完成之後,就能已 svn 指令(SVN client)操作。
svn list svn://localhost/NEW_REPO
當然,因為都還沒有丟檔案,回傳一定是空的。

如果要操作權限(例如有帳號密碼可讀寫,訪客只能讀不能寫),則需要編輯 NEW_REPO/conf/svnserve.conf,設定以下三行(取消註解):
anon-access = read
auth-access = write
password-db = passwd

並在 NEW_REPO/conf/passwd 下新增帳號及密碼,例如:
[users]
jacky = pwd_is_blank

---= Q&A =---

SVN server在運作一段時間後,可能出現資料庫錯誤的狀況,訊息如下:
Could not open the requested SVN filesystem

此時必須使用 db_recover 指令進行修復,以Ubuntu Linux來說,安裝db4.*-util套件即可取得此程式。

以下示範在 Ubuntu Linux 的流程:

先搜尋有哪些db4.*-util版本可以安裝。
apt-cache search db4.*-util
db4.6-util - Berkeley v4.6 Database Utilities db4.2-util - Berkeley v4.2 Database Utilities db4.3-util - Berkeley v4.3 Database Utilities db4.4-util - Berkeley v4.4 Database Utilities db4.5-util - Berkeley v4.5 Database Utilities
我選擇的是db4.4-util,因此開始apt-get安裝。
apt-get install db4.4-util

安裝完成後,就會多一道 db4.4_recover 指令,切換到 svn repository directory 下執行這道指令即可修復。

更多參考資源在:

Subversion support for Eclipse 3.4 Ganymede

在 Eclipse 3.3 或更早期的版本,支援SVN(Subversion)版本控制通常都是加裝Subclipse這個外掛軟體,在Eclipse 3.4 Ganymede已將SVN列入Collaboration的支援,這需要透過內建的Software Updates and Add-ons手動加裝SVN Team Provider。僅安裝Provider的使用者會發現,雖然可以設定SVN的來源,卻在讀取時出現錯誤訊息,經過Google的檢索,發現問題出在必須另行加裝3rd-party Connectors,這在安裝Provider時並不會有任何提示。

因此所需要安裝的Package共有三項:
  • SVN Team Provider
  • SVNKit ?.?.? Implementation
  • Subversive SVN Connectors
必須先加入以下的Update Sites才能找齊上述Packages。您也可以參考:

2008年7月6日

Firefox 3.0 的繁簡轉換

在Firefox 2.0時代,最常使用的繁簡轉碼擴充套件是新同文堂,只要設定了預設繁體顯示,不管上哪個簡體網站,顯示都會自動轉換成繁體。

雖然Firefox 3.0已經正式推出,但擴充套件更新的腳步就沒這麼快了,我還是相當期待新同文堂下次的更新就能夠支援FF3.0,不過在這段時間還是必須找到替代品。

Google發現一篇"比同文堂更好用"的介紹,原來有另一個擴充套件Gb2Big已經支援FF3.0,使用FF3.0內建的附加元件管理,就能夠搜尋&安裝完成。

Gb2Big的使用方式比較簡易,就是使用瀏覽工具列的自訂去新增繁簡轉換按鈕,如此就能在遇到簡體網站的時候,按一下進行立即的字碼顯示切換。雖然沒有自動預設繁體的功能,不過在過渡時期仍是個不錯的解決方案。

Firefox Party 3.0

Firefox 3 真是又快又好用阿~ 7/19在台北還有個盛大趴踢~

Firefox Partya3.0

Firefox Partya3.0

純廣告文!

Google-Gadgets for Ubuntu 8.04

Google Gadgets能幫Linux桌面添加更多樂趣,更令人興奮的是在Ubuntu中不必自己動手編譯,只要增加兩行套件來源,輕輕鬆鬆就能裝好google-gadgets。

套件來源(for google-gadgets only):
deb http://ppa.launchpad.net/googlegadgets/ubuntu hardy main
deb-src http://ppa.launchpad.net/googlegadgets/ubuntu hardy main


安裝指令:
apt-get install google-gadgets

簡單的步驟就能安裝好。現在,您需要的是能容納更多桌面小玩意的大螢幕了!


準備 SCWCD 310-083 認証考試吧!

打算利用暑假時間準備認証考試,
第一個目標是SCWCD =>
Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5 (CX-310-083)

雖然考到這張證照對升學(已唸研究所)、工作(已從事JavaEE開發工作)都沒幫助,
以後也不打算一直待在寫Java的軟體圈,
但還是想知道自己是不是裝滿半瓶水、能夠響叮噹了。

閱讀的教材是O'Reilly的Head First Servlets and JSP (2nd Edition / Mar 2008),
市面上有針對JavaEE5的認証書籍也僅此一本。

有興趣的朋友也歡迎一起準備、交換考試資訊。

2008年7月4日

Config Ubuntu to enable Open-SSH X11 Forwarding

In server-side, edit "/etc/ssh/sshd_config" file, check settings below:
X11Forwarding yes
X11DisplayOffset 10


Default settings in Ubuntu hardy are X11 forwarding enabled, because of the X11Forwarding is set to yes.

If the configuration file modified, please reload sshd using "/etc/init.d/ssh restart" command.

Parameters must added when client-side using ssh command to connect remote host, two commands below will establishing X11 forwarding connection.
  • ssh -Y user@remote_hostname
  • ssh -X -C user@remote_hostname
Description of parameters is shown below.
-X Enables X11 forwarding.
-Y Enables trusted X11 forwarding.
-C Requests compression of all data.

If something was wrong, there will be some error messages when execute X11 applications on remote host, like "xclock", messages maybe like:
Error: no display specified
To solve this problem, using "ssh -X -v user@remote_hostname" to show all debug messages. This provide information like:
debug1: Remote: No xauth program; cannot forward with spoofing.
The sample error message tell us need to install "xauth" on remote host. It's a program X11 forward required. Just type "apt-get install xauth" to perform installation.
lyhcode by lyhcode
歡迎轉載,請務必註明出處!