如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2012年3月30日

軟體開發文選 2012年3月19-30日

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/30

程式設計1.最少編碼原則(cnblogs) : 「最少編碼原則」並不是說寫的代碼少到令意思表達不清楚。其實在很多情況下,可以只寫幾行代碼就能執行相同的邏輯,最少編碼不只是寫最少量的代碼,還意味著優雅的代碼。


網頁設計1.10個便利的CSS代碼線上產生器(cnblogs) : 本文給大家帶來幾個不錯的工具,可以產生線上 CSS 代碼。節省您的時間,並自動獲得一個專業的 CSS 代碼。
2.CSS 佈局:40個教程、技巧、例子和最佳實踐(cnblogs) : 佈局(layout)是 WEB 開發一個重要的課題,進入 XHTML/CSS 後,使用 TABLE 佈局的方式逐漸淡出,CSS 佈局以眾多優點成為主流,本文將介紹 40 個基於 CSS 的 web 佈局的資源和教程。
3.關於 HTML5 的七個事實與誤解(cnblogs) : HTML5 簡單的說就是一組新的標準,語法和規則用來創建網頁,可以利用一些新的瀏覽器的「本地」功能,例如離線存儲,多媒體播放和其他的交互等等。我們所看到的很多很酷的 HTML5 網站實際上跟 HTML5 無關,而是由 CSS3 和 jQuery 生成的。
4.無需編程知識,Wix讓你零基礎打造HTML5頁面(cnblogs) : 讓沒有 Flash 知識的人也可以製作支持 Flash 的頁面,Wix 正是以此而出名。如今該平台推出新服務,將同樣思想應用到 HTML5 技術,讓你零基礎打造 HTML5 應用。這對 HTML5 技術的推動來說非常重要,因為它讓大量的人可以通過它打造跨 PC 和手機瀏覽器的應用。
5.適應未來發展 Web如何設計才更友好?(cnblogs) : 設計出對未來友好的 Web,這一思想包含很多內容:Web 標準、內容策略、漸進增強、響應式設計等等。這比任何一個方法、技術更強大。它可以幫助我們跳出現有項目的範圍思考問題,幫助我們為充滿創新、持續改變的未來做好準備。


程式語言
1. Rust 0.2 發佈,Mozilla 的編程語言(cnblogs) : Mozilla 開發一個新的程式語言,名為「Rust」目的是為瞭解決一個很頑疾的問題:軟體的演進速度大大低於硬體的演進,軟體在語言級別上無法真正利用多核計算帶來的性能提升。

2012年3月26日

FW管理隨筆之三 : 馬屁文化的形成

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/26

人人都喜歡聽好聽悅耳的話,負面言論,衝突與批評的話語沒人愛聽,特別是喜好權威的主管,更討厭下屬對自己判斷與決策的挑戰。

如果企業主管沒有接受負面問題與批評的雅量,沒有反省思考的能力,可能有幾種結果 :

1.人人粉飾太平,不敢將真正的問題與不好的狀況提出,好事誇大,壞事忽衍帶過,久而久之企業競爭力將越來越弱,甚至招致重大的危機。

2.造成馬屁文化,喜歡矯飾言詞,掩蓋問題,迎合上司者,被視為有較能力,獲得獎勵或升官;如此在組織造成示範效果,人人以為這種方式才是正途,而形成關係至上,不強調貢獻的馬屁文化。

3.劣幣驅逐良幣,有能力的人不願意待在這樣不重專業與才能的組織,虛偽小人漸漸得勢。而小人將引進更多的小人,如此就慢慢便成了侏儒企業。

強調和諧與良性互動的組織,可以讓大家快樂的工作,但是並不表示就不存在任何的問題與衝突,因此,協同解決問題取代掩飾,主管正面與公正的衝突處理,開放建設性的批評,可以讓每個同仁成為企業重要的智囊,與企業不斷改善不斷進步與提升的推力。
 
上一篇 : FW管理隨筆之二 : 您有Roadmap嗎?

2012年3月21日

工作流為主的流程監控系統(Workflow-based Process Monitoring System)簡介與參考模型。

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/21

目的 : 提供Workflow System統一與即時的統計分析與監控系統。


效益說明
1.提供流程改善的依據 : 藉由流程監控了解流程中的瓶頸,提供流程改善的參考。
2.提供跨流程共同的監控規格 : 透過統一的log規格,將Workflow System主要狀態的變更,蒐集、過濾與彙總到資料庫,統一進行監控。
3.減少人工匯整統計的工作 : 各Workflow系統需要進行流程狀態統計時,會依其職權下載所需的資訊到個人電腦再進行統計。如周報中需求最新狀態紀錄,先由個人製作到周報中再由部門主管再進行匯整監控部門需求處理的狀態。缺乏自動化的輔助系統。
4.管理更為即時 : 許多事件發生到主管收到分析資訊往往需要一段時間,透過監控即時狀態變更紀錄,可以讓主管即時得到資訊並快速做出決定。

參考模型 : WfMC 參考模型,WfMC 參考模型共包含五個界面
界面一 訂定工作流程作業,定義規格及其描述語言規格
界面二 定義前端應用如何呼叫Workflow Engine的服務以控制流程,活動或工作項目的進行
界面三 定義Workflow Engine叫用其他應用系統的API標準介面
界面四 定義Workflow間互動的模式與標準
界面五 定義系統監控與管理標準

其中界面五就是用來發展"工作流為主的流程監控系統"的標準,目的在於使任一廠商所發展的管理、監控程式可以與其它符合標準的WfMS作連接。讓許多不同廠商所發展的WfMS可以共用同一個管理程式所提供的功能。



如何建立高效率應用系統開發團隊

下面是筆者以個人經驗,提出建立高效率應用系統開發團隊的重點,如下

第一 專業團隊的養成,建立Library(知識庫,程式庫..)
a.尋找適合團隊中各種角色的人才, 並持續進行培訓
b.蒐集相關知識,建立與累積程式庫
c.建立高效率的工作流程並且持續改善工作流程
d.訂定績效考核標準,建立標準TAT

第二 專業分工
可將開發區分為兩大團隊 : 一個是專精商業領域知識,善於溝通的需求分析團隊與專精開發技術與架構設計的系統開發團隊。

2.1 業務需求分析團隊的任務
a.蒐集需求,過濾哪些需求適合系統化 : 成員包含熟悉各業務領域(銷售、財務、人事…)等的人員,收集並過濾需求。
b.編寫規格 : 確定需求後, 使用UML等工具編寫規格。
c.專案溝通會議 : 完成系統規格後,與系統開發團隊連繫與溝通, 應做快速而有效的溝通。

2.2系統開發團隊的任務
a.雛形製作團隊共同參與設計會議
b.繪製DFD,ERD等; 建立功能模組
c.細部設計開發與整合
e.單元測試與整合測試
f.品管(QA)
角色再區分 : 使用者介面設計人員,程式設計師, 測試與QA人員
重點 :
a.需訂定各階段標準TAT
b.持續建立公用程式庫,商業功能模組,與樣版(template)
c.持續改善流程 (生產線化)

MS Word中文文字比對問題與解決方法

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/21

MS Word比較並合併文件功能在中文處理上會有問題,例如某行文句(中文)直接進行句內文字修改,然後進行比較,可以正確的顯示差異,但是文句上加一個空白列,再修改文字,然後進行比較,產生的比較文件,會顯示刪除原文句,再新增一個文句的比對結果;但是英文文句的處理不會有這種錯誤的現象。


為正確須進行含中文字的Word文件之比較與合併,需評估其他產品。如DiffDog與Beyond Compare均可產生正確的比對結果,但是無法直接產生如Word比較文件的呈現方式。可以將此類產品做為比對參考工具,輔助文件之比對。

程式設計造成Memory Leak的原因與預防的方法

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/21

程式設計造成Memory Leak的原因

1.沒有自動記憶體管理的程式語言 : C與C++
- 程式中沒有撰寫垃圾回收的機制。

2.在自動記憶體管理環境下執行的程式語言 : Java,C#,VB.NET,Javascript等
-記憶體管理器可以回復不能存取的記憶體,但它不可以釋放仍有可能需要使用的記憶體。
-部分系統記憶體管理有瑕疵,例如 : IE
-要防止此類記憶體泄漏,開發者必須自行增加物件回收處理機制

解決方法
1.使用Garbage Collection機制
-採用具備Garbage Collection平台或工具。
-將此機制設計於自製的系統中。

2.應用程式開發過程中,應隨時注意釋放不再使用的物件
-即使有Garbage Collection機制的平台,仍無法100%避免Memory Leaks,請參考 : Java, ABAP, VB memory leak preventation 相關文章
-確定C程式中每個malloc()有相對的free()
-Coding過程寫下您Create的物件,在紙上或Text file,例如: display.newImage() … ,程式或模組結束前,關閉此物件。

3.使用工具檢查程式中是否存在memory leaks的可能
- At compile-time的檢查如static analysis工具
- 例如 : Oracle(WebLogic) JRockit Tools

4.使用工具測試程式執行是否造成memory leaks的情況
- At run-time的檢查如dynamic analysis工具

5.使用工具檢查與監控系統memory leaks的情況
-隨時監控。
-結合發送eMail機制(系統內含或3rd Party Tool)自動傳送警訊給管理人員。
-例如 : Windows Performance Monitor(perfmon)

6.注意系統版本的更新(patch)

2012年3月20日

FW管理隨筆之二 : 您有Roadmap嗎?

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/20

主管猶如團隊的舵手,引導團隊朝正確的方向走,並且應該訂定遠景與長期的計畫,然後領導團隊完成目標。

訂定Roadmap將未來的方向明確化,以具體的時程,給予團隊同仁各階段執行的目標。依此目標一步步完成企業給予的使命。

雖然實際上會有許多的變化,影響既定的工作,但是,優秀的主管,善於控制變化,對為長遠而言,重要的工作,仍能堅持執行,或有資源或時程些微修正,但是,仍不影響已定的方向。

相反地,若因忙於應付短期變化或緊急需求,而放下長遠該做的事,或因立即的績效表現,腐蝕重要工作的執行目標;最後,需長期執行的重要工作,因拖延,有一天將反過來,對組織造成重大的災難。例如,因為省錢而拖延系統平台的升級,造成平台效能不彰,問題無法處理,或對未來升級產生更大的成本等更大的問題。

明智的主管,更能預見長遠的問題或趨勢,及早進行評估與準備,訂定發展計畫/Roadmap,並能預留長期工作與短期工作的資源與預算,讓組織能從容地完成各項任務。

上一篇 : FW管理隨筆之一 : 會吵的小孩有糖吃?
下一篇 : FW管理隨筆之三 : 馬屁文化的形成


2012年3月19日

FW管理隨筆之一 : 會吵的小孩有糖吃?

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/19

"有時在路上或賣場裡,會見到一種小孩死皮賴著的吵著父母要東西,要不到就一直吵鬧",有些父母就會花很多的時間或精力來安撫這個小孩。

企業組織中也不乏這樣的人,或為了自己或自己所屬單位的利益,或為了讓自己的表現博得主管的注意,因此,會以高調(大分貝)的方式,爭取權益,表達意見或爭取認同。

這時候有些主管就會多花時間或精力來安撫或關注這樣的人。不管目的為何,往往在資源有限的情況下,這個"會吵的小孩"就得到了"糖"。衝突的情況發生時,有時"會吵的小孩"就得到認同,而默不吭聲的另一方就吃虧了。

在企業裡,這種"會吵的小孩有糖吃"的現象,對組織將造成下面三點傷害 :
1.形成本位主義 : 組織內人與人或單位與單位間,自私自利,遇到問題推諉卸責,更遑論分享與合作了。
2.組織內耗 : 遇到問題,組織花最多的時間是在釐清責任,並非在協同合作,一起找到問題,解決問題。
3.士氣的打擊 : 對於默默做事的人,發現"糖"的分配,並不是根據真正對企業的貢獻,對自己的努力將無法得到相對的認同,勢必影響做事的熱誠。

在教育上,造成"會吵的小孩有糖吃"的成因,就在於父母的態度,若父母無法控制這樣的行為,教育孩子,以理性的態度表達意見,並鼓勵分享,團隊合作與互助,將造成這種吵鬧的狀況一再的發生。而孩子將來也無法與其他小朋友和平共處。

對於企業組織而言,為避免上面提到的三點傷害,一個有智慧的主管應該抑制這種破壞團隊精神與造成組織內耗的行為,公平地面對爭議事件,獎勵分享,合作與互助,讓團隊發揮一加一大於二的效果。

後記 : 如果您的老闆,不善於面對或處理這種"要糖吃的小孩",可以把這篇文章傳給他!

下一篇 : FW管理隨筆之二 : 您有Roadmap嗎?




軟體開發文選 2012年3月13-18日

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/18

軟體開發
1.書摘:偉大的設計出自偉大的設計師,而非好的設計程序 (iThome) : 開發流程改良的程度不可能把某個領域的實務水準提升到最高點,偉大的設計並非出於偉大的流程,而是得自於有天份的人勤奮的努力
2.版本控制工具歷史的10個里程碑(cnblogs) : 版本控制產品經歷了幾十年的不斷創新。在這個領域裡最聰明的人的努力下,程式碼管理變得非常簡單而且有效。本文快速回顧了這幾十年的進展。
3.調查:你測試你的程式碼了麼?(cnblogs) :  本文列出Hacker News 與14日發起了一個投票主題:"Do you test your code? / 你測試你的程式碼了麼?" 300多的回應統計的結果。僅有13.8%會做完整的測試。半數以上不怎麼測試或測試不足。

程式設計
1.循序漸進學程式設計(cnblogs) : 技術在不斷地革新,新語言、新平臺的如雨後春筍般出現、更好的解決方案的冒出,因此我們需要跟得上節奏,我們沒有選擇,唯有努力提高自己。本文提供八點建議,讓您成為一個優秀的程式開發人員。
2.如何成為一名優秀的C程式設計師(cnblogs) : 本文作者以自己編寫遊戲程式的經驗,列出一些有關C語言的最佳讀物,提供學習C程式設計語言的參考。

2012年3月15日

Xcelsius Add-on資源

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/15

列出六個Xcelsius免費或付費的Add-ons來源 :
1.BO Information OnDemand (free/charge) : 包含Any Map, FLV Player, Sales Funnel, Timeline Char, XC Column Chart
2.XComponents (free) : 包含 XTree, XTreeGrid, XScorecard, XProgressImage, XGlobe, XBulletChart, XSparkLine, XYahooMap, XHarvelBalls
3.BDISYS : 包含BreadCrumbs, CalendarComponent, Crosstab Modeler, ExportToExcel, MultiLevel Drill PieChart
4.Centigon : 包含Background Builder, Dynamic Sort, Filtered Summary, Input Manager, CSV Connector, Gmaps Plugin
5.Reportex
6.Inovista

2012年3月14日

技術債務

作者: Fred Wang (FW知識瑣記) 日期:


最近看到這個名詞,深有所感,從網路整理一些重點,做為備忘。

何謂技術債務 : 由Ward Cunningham首次提出,指開發團隊在設計或架構選擇時從短期效果的角度選擇一個易於實現的方案,但從長遠來看,這種方案會帶來不良的影響,這就是開發團隊所欠的債務。

"重構"一書作者Martin Fowler定義 : 技術債務類似於金融債務,它也會產生利息,這裡的利息其實就是指由於魯莽的設計決策導致需要在未來的開發中付出更多努力的後果。

Martin Fowler認為您可以選擇繼續支付利息,也可以透過重構過去前鲁莽的設計將本金一次付清。雖然一次性付清本金需要代價,却可以降低未來的利息。

"Code Complete"一書作者Steve McConnell將技術債務分成兩類
1.缺乏經驗造成,例如技術能力不足或經驗不足而產生品質不佳的設計。
2.為了短期的利益,選擇快速或方便的方案,對長期而言會造成不良影響。

造成的原因可能是
1.開發人員沒有經驗
2.時程的壓力
3.分工缺乏整體考量
4.過度的複雜的設計,沒有考慮使用情境等
5.短視,無法為長期經營考量設計(缺乏可讀性,可維護性,再用性等)
6.來自客戶或上司的壓力,不合理的需求,造成不合理的設計

這篇文章"用雞講解技術債務形成的過程"用有趣的例子舉出上面第6點原因。

根據CAST分析報告顯示,平均一家公司要解決技術債務的花費是每行程式碼3.61美元。

下面這篇文章提出一些解決方案 :http://www.infoq.com/articles/technical-debt-levison

身為經理人不可坐視這些技術債務不管,否則將造成很大的債務危機。需要對您的系統持續改善,減少過去專案殘留的問題,同時也可藉此提高團隊整體的開發設計能力。

2012年3月12日

軟體開發文選 2012年3月9-12日

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/9

軟體開發
1.那些永無止盡的產品改善(數位時代) : 以網路/軟體產業來看,我們永遠不以現在的產品為滿足,不斷的追求效能、功能以及服務使用者為導向前進,是完全不可避免的走向,如何快速且及時的推出「夠好」產品取悅使用者,總是我們面對的兩難。記得,即時推出、面對消費者、不斷改善、取得團隊的共識與合作,絕對是缺一不可。
2.這個服務員在電腦螢幕上幹什麼?(cnblogs) : 本文作者以他看到的在一家餐館領班使用預定系統的方式,提出一些省思,讓所有系統設計開發人員省思。

行動應用開發
1.推薦給 iOS 設計師的工具和資源(cnblogs) : 如果你是一位設計師或開發人員,準備步入 iOS 開發,這裡收集了你需要的工具。本文並不涵蓋 iOS 教程,只偏重線框圖工具和視圖資源。
2.Android 4.0使用者介面設計和元素-ICS簡介(cnblogs) : 最新的 Android 霜淇淋三明治(Ice Cream Sandwich, ICS)作業系統,不僅僅是使用者介面(UI)的簡單改變,它幾乎是對整個 Android 系統介面的重新定義。為了讓你更好地為 ICS 系統設計和開發應用,這裡是一個簡單的介紹和指南。
3.觸控手機點擊區域的小秘密(cnblogs) : 做觸屏手機產品設計,要注意所有的可點擊元素都有足夠的點擊區域,但是這並不是說你要把所有的按鈕圖示連結都設計的足夠大,手機上的視覺焦點和操作焦點是不一樣的,操作焦點是可被放大或移動的點擊區域。本文分享幾個點擊區域的小秘密,幫你解決操作準確率的問題。


網頁設計
1.矽谷稱之為「常識」的網站設計過程原則(cnblogs) : 本文介紹網站設計過程中的必要的四個基本原則。

程式設計
1.Java 程式設計師應該瞭解的 10 個物件導向設計原則(cnblogs) : 本文介紹,沒有接觸過這些物件導向設計原則, 讓在學習階段的 Java 程式設計師能夠瞭解這 10 個物件導向的設計原則。

其他
1.優秀開發者必備的四種特質(cnblogs) : 本文說明怎樣才是一名優秀的開發者,應具備哪些優秀的品質?好的開發者和差的開發者區別在哪裡?

2012年3月9日

軟體開發文選 2012年3月8日

作者: Fred Wang (FW知識瑣記) 日期:2012/3/8

軟體開發
1.軟體開發的軟實力─溝通(iThome) : 本文說明軟體開發的過程中,有一些較為「軟性」的能力,會影響到軟體開發的過程甚至結果。而像「溝通」也是軟體開發中十分重要的「軟性」能力 

程式設計
1.程式語言的進化過程(cnblogs) : 計算機程式語言在過去幾十年發現了許多變化。最先出現的語言是用於科學計算的 Fortan 和邏輯推演的 LISP 語言,而現在用於網路程式的語言包括C#、Ruby on Rails、Note.JS。本文由 Services Angle 製作的資訊圖展示了過去數十年來程式語言的演化過程。
2.解讀 Visual Studio 11 九大新特性(cnblogs) : 2月 29 日微軟發佈了 Visual Studio 11 beta。CSDN 軟體研發頻道編譯了 Microsoft Visual Studio 全球最有價值專家 Mark Michaelis 眼中的 Visual Studio 11 九大新功能。

網頁設計
1.Adobe發表行動網頁設計工具Shadow(iThome) : Adobe昨日(3/7)推出新的網頁設計工具Shadow,該工具可以協助網頁設計師在多個行動設備中檢視網頁,並進行調整。
2.Cookie安全漫談(cnblogs) : 在 Web 應用中,Cookie 很容易成為安全問題的一部分。從以往的經驗來看,對 Cookie 在開發過程中的使用,很多開發團隊並沒有形成共識或者一定的規範,這也使得很多應用中的 Cookie 成為潛在的易受攻擊點。本文探討Cookie的安全性問題與技術讓大家加以重視。
3.如何選擇優秀的Web開發工具/IDE?(cnblogs) : Web 開發成功的關鍵之一在於找到一款優秀的開發工具/IDE,可以為你提供最多的選擇和最少的限制。雖然大部分時候,開發工具的選擇取決於公司的需求,但是本文的 7 個建議,可以幫助你快速鑑別開發環境的優劣,提高你的開發效率。

其他
1.程式設計員學英語三部曲(cnblogs) : 作者在 IT 業從業多年,翻譯過多本技術圖書,對英語的學習方法也有頗多積累。在本文中,他更是敞開心扉,分享了自己壓箱底的三大絕技。

2012年3月8日

世界最具影響力的系統開發人員或程式設計師


1.Kenneth Lane Thompson,Dennis Ritchie,Brian Kernighan : UNIX創造者與早期的開發者
2.Dennis Ritchie : C程式語言之父也是UNIX的核心開發人。
3.Tim Berners-Lee : World Wide Web的發明人,也是HTML之父,建立URI,HTTP,HTML規格,寫出第一個Web Client-Server系統。
4.James Gosling : Java程式語言的創造者
5.John McCarthy : Lisp程式語言的創造者,人工智慧之父
6.Linus Torvalds : Linux之父,為PC創造了類似UNIX的作業系統,為軟體帶來創造性的革命-Open Source
7.Edgar F. Codd : 關聯式資料庫理論基礎的發明人
8.Bjarne Stroustrup : C++語言之父
9.Thomas Eugene Kurtz, John G. Kemeny : BASIC程式語言的創造者。
10.Rasmus Lerdorf, Andi Gutmans & Zeev Suraski : PHP之父,全球34%的網頁用PHP開發。
11.Raymond F. Boyce, Donald D. Chamberlin : SQL語言的創造者。
12.Alan Kay : 物件導向程式設計的先驅者,Smalltalk的核心創造者,也是視窗GUI設計的先驅者。
13.Tim Paterson : MS-DOS(磁碟作業系統)的原始創造者。
14.Jef Raskin : Mac OS的創造者。

其他深具影響力的系統創造者 :
  • .Brendan Eich : Javascript程式語言的創造者。
  • .John Backus等 : FORTRAN程式語言的創造者
  • .Niklaus Wirth : Pascal程式語言的創造者
  • .Grace Hopper : COBOL程式語言主要的開發者
  • .Guido van Rossum : Python程式語言的創造者。
  • .Larry Wall : Perl程式語言的創造者。
  • .Larry Ellison,Bob Miner,Ed Oates : Oracle Database的創造者。
  • .Matt MullenWeg : Open Source BLogging平台WordPress的創造者。
  • .Larry Page, Sergey Brin : Google的創立者
  • .Bram Cohen : BitTorrent技術之父,P2P網路協議的創造者。
  • .Douglas Andrew Bell : 1987年開發知名的Dungeon Master為RPG遊戲帶入新的時代。
  • .Richard Bartle,Roy Trubshaw : 第一個MUD(多用戶介面)人機網路遊戲也就是多人線上遊戲的創始者。
  • . Yukihiro「Matz」Matsumoto :  Ruby程式語言的創造者。

軟體開發文選 2012年3月7日

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/7

系統開發
1.敏捷配對程式設計實踐(cnblogs) : 本文主要從提升專案品質、促進知識傳遞及減少專案風險等角度出發,講述作者所在團隊在配對程式設計(Pair Programming)實踐中的一些經歷,以及如何避免或減少其所帶來的負面影響。

程式設計
1.為什麼 Objective-C 很難(cnblogs) : 本文解釋為什麼很多程式設計師比較學習 Ruby 或者 Java 很容易,但在決定開發 iOS 或者 OS X 應用時會那麼猶豫。雖然Apple 公司已經儘可能的減小了 Objective-C語言的大小以及複雜度,但是還是比其他語言難接觸與學習,之所以現在變得越來越流行唯一的原因就是它是做 iOS app 的唯一途徑了。
2.理解Javascript的閉包(cnblogs) : 本文舉例介紹 Javascript閉包(Closure)的語言特性,並結合一點 ECMAScript語言規範來使讀者可以更深入的理解閉包。

職涯
1.企業如何招聘到高品質的程式設計師?(cnblogs) : 本文翻譯自Stack Overflow 創始人 Jeff Atwood 發了一篇文章"How to Hire a Programmer",分享其招聘的經驗。

其他
1.解決技術負債的花費:每行程式碼3.61美金(cnblogs):CAST 定義了五大程式品質特徵 - 穩定性、性能、安全、可移交性以及可修改性)技術負債就是因品質問題需付出修正程式的代價。CAST公司發佈的有關技術債務的調查報告。CAST 以及其他一些技術負債方面的專家都認為組織應該將技術債務納入它們的主體預算中。

2012年3月7日

最賺錢的好地盤與放下

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/7

當蕭邦已經是非常知名的演奏家時,他遇到十年前一起在街頭演奏的夥伴,發現他仍在他們當年一起占到的那塊最賺錢的地方演奏。夥伴遇到蕭邦非常高興,問他現在在哪里演奏,蕭邦回答了一個很有名的音樂廳,夥伴驚訝的說:“怎麼?那裏門口也很好賺錢嗎?”

“最賺錢的好地盤”同樣是一個“風平浪靜的小港灣”,那位夥伴停留在那裏,甚至有些沾沾自喜,卻沒有意識到自己的才華,潛力,前程全都被這塊“最賺錢的好地盤”葬送了。
 
這是摘自心靈雞湯的一個故事,當您安於穩定的現狀時,看看上面的故事,這就是您“最賺錢的好地盤”嗎?  這故事可以用印度電影"三個傻瓜"中的一句話"追求卓越,成功就追隨你"相印證。您追求財富還是追求卓越?

另外一個故事 "在南美洲有一種奇特的動物——蜘蛛猴,要捕捉它們非常容易,你只要在一個玻璃瓶裏放一顆花生,然後放在那裏。蜘蛛猴剛好可以把手伸進瓶子去拿那粒花生,一旦它們握住花生,手就抽不出來。但它們就是不肯放手..."

當您被工作現狀困住,無法解脫,痛苦不堪時,通常的情況就只要放下/放手,但是,多數人對到手的名利,就是無法放下。聖嚴法師說過一句話"有能力時就提起,執著時就放下",可以作為大家的暮鼓晨鐘。

Chrome 9,IE 9,Firefox 9 三大瀏覽器安全性比較

1.黑名單服務 : 定期更新防止網路釣魚和惡意軟體的黑名單,並在使用者試圖瀏覽可能造成電腦損害的網站時予以警告。(Chrome9,IE9,FF9)

2.沙箱: 防止惡意軟體在您的電腦上安裝複本,或防止惡意軟體利用某個瀏覽器分頁的作業,影響其他分頁的運作。沙箱技術可對企圖在您電腦上留下程式、監控您的網路活動,或從您的硬碟竊取私人資訊的惡意網頁加以監控並防範。(Chrome9,IE9,FF9)
3.多進程 能容許多個程序同時執行而互不影響,每個網頁標簽為獨立執行程序,當資源過高或崩潰時,不會因為一個停頓而整個程序當掉。(Chrome9,IE9)
4. 自動更新 : 自動定期檢查更新可確保用戶使用最新版的安全性功能與修正程式。(Chrome9,IE9,FF9)
5.重定向限制 : 避免用戶在訪問非法網站時會被劫持到包含惡意程式碼的其他網站中。(IE9)
6.外掛程式(Plugins)管理 : 為了降低被攻擊的風險,外掛程式在沙箱中獨立運行,而不影響到瀏覽器的運作。例如Adobe Flash與PDF reader外掛程式獨立運行,瀏覽器不因Adobe Flash或PDF的漏洞受到感染。(Chrome9,IE9,FF9)
7.外掛程式註冊機制: 根據一定的機制,告訴用戶區別外掛程式的好壞,以便使用者更安全地使用外掛程式(IE9)
8.外掛程式自動安全測試與人工審查 : 第一種方式是當外掛作者上傳新版本時,附加元件網站會自動進行安全性測試。如果外掛程式夾帶了有害的程式碼、或者因作者疏忽導致程式有一些不安全的問題,就會被阻擋下來。第二種方式是透過官方人工審查才能成為正式的外掛套件。"(FF9)
9.外掛程式更新建議 : 外掛程式需定時更新修補安全漏洞,若用戶使用的版本過舊,瀏覽器會顯示出來,建議下載更新。(FF9)
10. 反追蹤機制 : 防止網路瀏覽行為被追蹤。(Chrome9提供外掛,IE9,FF9)
註:()內表示具備該功能的瀏覽器。

Java重構工具(Refactoring Tools)整理

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/7, revised 2012/4/5

網路上許多重構工具版本都相當老舊,也沒有新板產生。早期一些重構工具的網站也已經關閉了。下面是一些現存Java重構工具的整理 :

1. Eclipse提供的20多個重構功能
image
2.RefactorIT : 自動化重構, 原始碼衡量, 稽核與修正。可以單獨安裝或作為Eclipse與NetBeans開發環境的插件(Plug-in) ,Open Source :
http://sourceforge.net/projects/refactorit/

3.JFactory : 提供15種重構能力的工具,可以單獨執行,直接下命令列或作為JBuilder, NetBeans與Elixir IDE的插件。 Open Source : http://jrefactory.sourceforge.net/

4.Transmogrify : Java程式碼分析與重構工具
. Open Source :
http://transmogrify.sourceforge.net/

5.DPT(Design Pattern Transformer) : 研究用途的工具,提供prototype工具,以利對Java程式碼重構的設計與了解。 Free : http://dpt.kupin.de/

6.JavaRefactor : 小型的Java程式碼重構工具,為JEdit的插件。(http://plugins.jedit.org/plugins/?JavaRefactor)

企業贏家與輸家的差別

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/7

本文摘自天下雜誌第321期對哈佛大學Rosabeth Moss Kanter教授的專訪。
(Kanter曾調查1243家企業在網路經濟破滅後,2001一到2003年的表現,1511位球隊教練和運動員進行訪問、面談,分析出贏家、輸家的分水嶺是在「信心」。) 下面是一些摘要

"化妝品公司雅詩蘭黛副總裁珍妮特,早在一九九○年就預測凱瑪百貨(Kmart)、塔吉克百貨(Target)輸家贏家面貌。她說,走 進塔吉克百貨,辦公室乾淨明亮,色彩鮮豔,工作人員驕傲地介紹自己執掌的範圍,對工作充滿熱情。但走進凱瑪百貨,卻儼若堡壘,會議室黯然無光,公司代表更 是面無表情,咖啡和水都不請客人喝,公司成敗跟他們完全無關。"

"員工行為不是一個命令、一個動作,而是態度、感情、慾望、願望綜合而成,領導人必須創造一個文化,讓員工可以高效率工作,而且成果斐然。"

"今天是知識經濟時代,專業人員的來源靠創造力,他們需要鼓勵。通常策略成功與否,不是策略本身好壞,而在是否有效執行策略,策略尤其必須靠一個有信心的團隊執行。"

"沒有企業或團隊可以每戰必贏,但是贏家會從失敗中學習。贏家和輸家的分野在是否能處理挫折,解決問題。".."每個公司都應該有一個機制來解決問題。公司整體能面對問題,不是掩蓋,從各部門徵調人才,一起討論,解決問題,以免滑入輸家軌道。"

"問:贏家有些什麼特徵?
答:他們充滿鬥志,生氣盎然,速度快,專注解決問題,而不是抱怨問題。員工間彼此尊重,同事間會稱讚彼此的成就..."

"問:輸家有什麼特徵?
答:看他的員工及外界關係人就可知道。員工總是怒氣沖沖、爭論、諉過,各部門本位主義。員工被動,不願提創新方案...領導人總是強調節流、削減支出,而不是開源、增加收入。總在替換經理人,而不想組織或結構上有什麼問題。"

您所在的企業是符合上面的贏家還是輸家呢?








軟體開發文選 2012年3月6日

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/6

系統開發
1.原始程式控制管理的十條戒律(cnblogs): 本文列出十條原始程式控制管理的基本觀念:及時,儘早的提交程式,充分瞭解你提交的東西,並確認它們確實需要被提交到程式庫,解釋你的提交,自己提交自己的程式,不要忘記資料庫版本控制,不要忘記依賴項。並請你忘記 VSS。 


程式設計
1.程式設計改革(cnblogs) : 本文作者說明當前程式設計面臨的問題,並發表自己對程式設計改革的想法。
2.白天工作型程式師 vs 夜晚工作型程式師(cnblogs) : 本文比較兩種類型的程式設計師,一種是為工作而寫程式的人,而另一種是對程式設計有高度興趣的人。兩者不同的是對程式設計的熱忱。
3. 6 個提高 Java 開發者效率的工具(cnblogs): Productivity tools for java developers一文作者列出
JRebel, tmux, zsh, sublime, vi(m), bash/awk/sed/cut 等腳本語言以提高Java開發者效率。

網頁設計
1.如何設計網站,才能打動用戶的心?(cnblogs): 本文翻譯Jeremy Girard 在 Smashing Magazine 上發表的"A Fun Approach To Creating More Successful Websites"一文,列舉了一系列成功網站,它們巧妙利用趣味性元素,取得了很大的成功——打動了用戶的心,並給用戶留下了深刻的印象。


職涯
1.IT自由職業者的狀況(cnblogs) : 本文以圖表呈現自由職業雖然看上去更靈活、更獨立、更自主,但它確實不容易。選擇自由職業這條道路雖然在經濟復蘇時可以幫上你的忙,但背後所潛在的風險卻不容忽視。

其他
1.論 NoSQL 資料模型(cnblogs): 本文內容是對"NoSQL Data Modeling Techniques"一文的簡單概述,原文對 NoSQL 的幾種資料模型進行了詳細深入的討論,是瞭解 NoSQL 資料模型不可錯過的全面資料。

2012年3月5日

軟體開發文選 2012年3月5日

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/5

軟體開發
1.軟體發展如同木匠做桌子(cnblogs) : 本文以一個專業的桌子訂製過程比擬軟體開發的過程,需要瞭解使用者業務需求,誰要用,如何使用,用在什麼地方,資料量如何,要與什麼整合等等,然後搭建架構,確保系統可以承受使用的負載,確保效能等品質,最後交付給客戶符合需求,完整且可信賴的產品。
2.引入新程式設計語言的經驗教訓(cnblogs) : 作者以自身的經驗說明,在團隊中引進新的程式設計語言會發生的狀況,以及如何讓夥伴減少對新語言的恐懼,並得到團隊的支援。


行動應用
1.25款Web設計師的實用Android應用推薦(cnblogs) : 本文介紹了 25 款實用的 Android 應用。這些 Android 應用具有不同的功能,希望它們不僅對開發者的設計過程有所幫助,在文件管理和在線交流應用等方面也能夠給予開發者一些啟發。
2.使Android開發方便快捷的8個好工具(cnblogs) :  本文介紹8 個最好的 Android 工具以許多不同的方式 説明開發人員 ,例如 – SDK 和 AVD 管理器,android ADT,android DDMS 等等,每個工具表現其獨特和不同的品質,使它非常有用於開發。

職涯
1.如何在面試時寫出高品值的程式碼(cnblogs) : 本文作者總結自己多年面試他人以及被他人面試的經驗,發現應聘者可以從程式碼的規範性、完整性和穩固性(robustness)三個方面提高程式碼的品質。


其他
1.網友失耐心,贏過競爭對手的網路魔幻數字「0.25秒」(數位時代) : 調查機構Forrester在2009年研究發現,網路購物者希望在兩秒內能順利開啟網頁,否則就會放棄該網頁。微軟運算科學速度專家Harry Shum提出,現今網路的魔幻數字是0.25秒,是否能夠贏過對手就取決於0.25秒之間。

Ruby on Rails 開發網頁應用系統有多快?

作者: Fred Wang (FW知識瑣記) 日期:

Ruby 是近年使用率成長相當快的語言,在2004年TIOBE排名27名到2012年2月排名提升到第12名,2008年排名曾經到達第8名。

RoR與PHP, Java相比
1.可擴展性(Scaling) : PHP > Java > RoR
2.開發速度 : RoR > PHP > Java
3.開發工具 : Java > RoR = PHP
4.可維護性 : RoR > Java > PHP

Java(Spring/Hibernate)與 Ruly on Rails開發網頁應用系統的比較 (Juston Gehtland發表的數據)
1.時間 : Java花4個月(每週20小時), RoR花4天(每天5小時)
2.程式碼 : Java 3292行, RoR 1164行
3.設定檔 : Java 1161行, RoR 113行
4.Class/method數 : Java 62/549, RoR 55/126

程式碼行數比
Justin Gehtland估計Java : Rails = 3.5 : 1
JavaEye 站長估計Java : Rails = 10 : 1
Proc.net估計 PHP : Rails = 10 : 1
Thegiive實驗的結果 PHP : Rails = 8 : 1

或許不像懂C或Java語言的人那麼多,技術團隊需要學習新的技術等因素,讓您對此技術的投入抱持猶豫的態度。

不過時間就是金錢,如果使用此技術可以讓您或您的團隊,增加三倍以上的接案量,一年的業績提升三倍以上,那麼其他差異都不是那麼重要了!

2012年3月1日

Javascript Frameworks資源整理 - Yahoo YUI

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/1

Web Sites
1.YUI Documentation : developer.yahoo.com/yui

2.Yahoo User Interface Blog : yuiblog.com
3.Dav's Blog , code samples


文章
1.Nate Koechley, "Yahoo! vs. Yahoo!: Case Studies"

2.Nate Koechley,"YUI's CSS Foundation"

3.Yahoo, "Know Me, Touch Me, Love Me - YUI"(中文)**

4.Vani Raja,"Making the hard stuff fun & easy with YUI CSS"

5.張克軍,"打造高品質前端-YUI應用"

6.Doug Geoffray & Todd Kloots,"Designing RIA Accessibility:A Yahoo UI (YUI) Menu Case Study"

7.Satyen Desai,"YUI()"

8.Nicholas C. Zakas,"Test Driven Development with YUI Test"