網頁

搜尋此網誌

2013年4月23日 星期二

The $100 Startup 小資創業老闆的實戰成功術

近一兩年以來,出現很多創業與創投的相關書籍,這些書多半討論科技網路方面的創業內容(例如成立網路公司、利用創投基金開始...),對於不是在科技網路領域創業的人而言,這些書的幫助有限。

現在「3000元開始的自主人生」這本以相當務實的角度出發,利用「小資(即書名的$100美金)」開始自己的「微型創業」之路,作者古利博(Chris Guillebeau)訪問相當多的微型創業老闆,分析並研究這些創業歷程,他找出實際可行的方法,在書中教導大家如何從事自己所愛的事情,以及如何創造「錢途」,這本書不講高深複雜的商業知識,而是提供立即可用的實戰技術。


古利博(Chris Guillebeau)著,連育德譯,3000元開始的自主人生:50位小資創業老闆的實戰成功術,台北市:天下遠見,2013。
譯自:The $100 Startup: reinvent the way you make a living, do what you love, and create a new feature

整本書的架構分成三部曲共14章,「創業首部曲」主要是建立正確的小資創業觀念,自己創業是為了什麼?為了做自己想要的事情(興趣),還是因為意外解雇而不得不的選擇之一,不管為何,創業是為了追尋自己所要的自由,而創造價值則是通往成功創業的途徑。

這本書最重要的一點是;「唯有提供價值給別人,才能獲得工作自由。」利用自己的專長或興趣去創造出別人所需要的產品或服務,這是微型創業成功的關鍵!如何提供別人所需的價值呢?這本書都有一些方法讓你找出來。

「創業二部曲」則是討論創業之後的工作,主要以行銷方面為主,如何開始第一筆生意,如何讓別人知道你的服務或產品,還有重要的訂價策略,價格取決於你提供的價值,而不是工作的時間。最後「創業三部曲」是討論創業上軌道後的事情,例如事業如何持續成長,商業模式的規劃等。

###

2013年4月19日 星期五

amazon.com的秘密

這是一本講述亞馬遜公司(amazon.com)從創業至成功的故事書,輕鬆地閱讀這本書來認識amazon.com,瞭解它成功的原因,為何貝佐斯(Jeffrey Preston Bezos)要從賣書這個領域開始,時間若回到亞馬遜創立的1994年,就不得不佩服他洞燭先機!

貝佐斯發現當時網際網路一年是成長23倍,他認為快速成長就代表無限商機,分析潛力商品發現賣書是最有機會的一條路,因為書本市場夠大、易於運送、不需庫存...等,加上書本的資料非常容易用電腦與網路去搜尋和管理,顧客可以用網路找書、買書。天時地利之下,貝佐斯本身也是個聰明人,也喜歡閱讀,最重要的一點,顧客至上,「點一下還不夠」,提供客戶更好的服務,這也是所有成功企業的重要基本要素,從下面這段話可以看到。

「我們要成為全世界最重視顧客的企業,無論人們想要在網路上買什麼東西,都可以在我們的網站上找到。」亞馬遜的企業使命 p. 33


理察‧布蘭特(Richard L. Brandt)著,閻紀宇譯,amazon.com的秘密,台北市,天下雜誌,2012。
譯自:One Click: Jeff Bezos and the Rise of Amazon.com

書中除了敘述這些成功過程之外,部分也描述亞馬遜如何壓榨員工的故事,也有商場上競爭的故事,整體而言,這本書完整而有秩序的介紹亞馬遜,閱讀上建議從頭開始讀起。

最後,書中附錄有一段「貝佐斯2010年普林斯頓大學畢業演講摘錄」,這段演講也可以在TouTube上看到完整演說。


貝佐斯(Jeff Bezos):仁慈比聰明困難。(It is Harder to be Kind than Clever.)...聰明是天賦,仁慈是選擇。天賦與身俱來,但是選擇就難了。如果不小心,你們可能就會被聰明誘使做了傷害仁慈的選擇。

###

2013年4月8日 星期一

Clean Code 無瑕的程式碼

最近這本『無瑕的程式碼』非常熱門!除了廣告打的兇之外(暢銷的書總是一開始就暢銷),重點在於作者和書的內容,Bob 大叔 (即Robert C. Martin) 也是另一本經典著作『敏捷軟體開發:原則、樣式及實務』的作者,不論你是否認同敏捷軟體開發 (Agile Software Development),只要是撰寫程式的軟體開發人員都要好好閱讀這本 Clean Code,因為我相信大家都會遇到這樣的事情:

公司急於讓產品完成上市,導致程式碼慢慢變得一團亂。加入越來越多的功能,程式碼越來越糟糕。每次修改程式也讓程式碼更加混亂、曲折及可怕,程式碼越來越龐大、艱深且複雜。

生產力漸漸降低,於是管理者想辦法招募更多新員工,由於新員工不知原始系統的設計,因而修改將破壞原本設計的原意,程式碼趨近崩解的邊緣。於是開發人員提出無法在現有設計上繼續開發下去,新的專案油然而生...持續陷入永無止境的迴圈之中,總是希望下一個軟體專案會更好。

這樣的問題到底出在哪裡?


Robert C. Martin 著,戴于晉、博碩文化編譯,無瑕的程式碼:敏捷軟體開發技巧守則,新北市:博碩文化,2013。
譯自:Clean Code: a handbook of agile software craftsmanship

作者 Martin 先生認為在於軟體開發人員(程式設計師)的態度,程式設計師沒有專業的把程式碼撰寫優良,導致劣質的程式碼慢慢腐蝕軟體的進度和品質,解決之道是『Clean Code』!

Bob 大叔將本書分成3大部分,第一部份(第1至第10章)說明什麼是無瑕的程式碼與 Clean Code 的原則、模式和實踐方式,第二部份(第11至第16章)則是以一些案例進行討論程式碼的清理 (clean)。最後第三部份(第17章)則是『程式碼氣味型錄』,記錄這本書中 Clean Code 的心得,這部份算是重點整理。(在序中沒有明確說明章節是第幾部分,這裏是看內容後自己劃分的)

整本書相當精彩,閱讀起來也相當舒適,可以感覺博碩文化出版的用心。書中提到博碩文化在這個『名家名著系列』 的願景,這裡不得不推崇一下出版社的堅持和貢獻,希望未來台灣與華人地區有更多經典著作的中文翻譯書籍。

###

2013年4月5日 星期五

Virtualization 虛擬化技術

這篇文章將簡述虛擬化技術(virtualization),主要目的是將一些觀念說明清楚,因為現在大家對於虛擬化好像都只知道CPU的虛擬化,其實虛擬化的範圍很廣,有必要讓大家都知道。主要參考資料是『雲端策略』這本書,由陳瀅 等著,天下文化所出版。

虛擬化概念是在1950年代首次提出,到1960年代才在IBM大型主機上實現商用。電腦系統之所以可以虛擬化,原因在於電腦系統分為若干層次,在這些不同層次之間建構虛擬化層,對使用者提供與真實系統相同或類似的功能,使得上層系統可以運行在該中間層(虛擬化層)之上。由於中間層解除上下兩層間原本存在的耦合關係,使上層的運行不依賴下層的具體實作方式。

虛擬化的對象主要是各式各樣的電腦資源,經過虛擬化後的邏輯資源對使用者隱藏了不必要的細節,使用者可以在虛擬環境中實現其在真實環境中的部分或者全部功能。以電腦資源區分虛擬化技術有:
  • 硬體資源
    • CPU虛擬化
      • 軟體:全虛擬化(Full Virtualization)、半虛擬化(Para-Virtualization)
      • 硬體(硬體輔助虛擬化,hardware assisted virtualization ):Intel®VTAMD-V™
    • 記憶體虛擬化(虛擬記憶體)
      • 影子分頁表法
      • 分頁表寫入法
    • I/O虛擬化
    • 伺服器虛擬化:CPU虛擬化+記憶體虛擬化+I/O虛擬化
      • 原生虛擬化:虛擬化平台(hypervisor)
      • 寄宿虛擬化:虛擬機監視器(Virtual Machine Monitor, VMM)
    • 儲存虛擬化
      • 基於儲存設備虛擬化:磁碟陣列(Redundant Array of Inexpensive Disks, RAID)
      • 基於網路虛擬化:網路附加儲存(Network Attached Storage, NAS)與儲存區域網(Storage Area Network, SAN)
    • 網路虛擬化
      • 區域網路虛擬化:虛擬區域網路(Virtual LAN, VLAN)
      • 廣域網路虛擬化:虛擬私有網路(Virtual Private Network, VPN)
  • 軟體資源
    • 作業系統虛擬化
    • 檔案系統虛擬化
    • 桌面虛擬化(Desktop Virtualization)
    • 應用程式虛擬化(Application Virtualization)
    • 高階語言虛擬化
可以看到在CPU虛擬化的部份,一般大家說的全虛擬化、半虛擬化是指用軟體去模擬CPU,顯然這種方式一定比硬體輔助虛擬化的方式效率要差,目前幾乎都是使用硬體輔助虛擬化。注意到,除了CPU虛擬化之外,其實還有記憶體虛擬化、I/O虛擬化、儲存虛擬化、網路虛擬化等不同的資源虛擬化,不要只認為虛擬化都是指硬體CPU的部份,這是不完整的觀念!

###

2013年4月2日 星期二

Catalog of Design Patterns 設計模式型錄

這裡將列出物件導向程式設中的「設計模式」型錄,資料是節錄自「物件導向設計模式:可再利用物件導向軟體之要素(Design Patterns: Elements of resuable object-oriented software)」這本書的內容,此書作者是Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides著(所稱「四人幫」),由葉秉哲先生所翻譯,台灣培生教育出版,可以在天瓏書局購買(好像也只有天瓏有賣)。

下列型錄包含3大類共23個設計模式,並列出其目的。

生成模式(Creational Patterns)
將物件具現化的過程抽象化地加以萃取,使系統能獨立於物件的建立、組成及表現方式之外。
  • 工廠方法模式(Factory Method)
    定義可資生成物件的介面,但讓子類別去決定該具現出哪一種類別的物件。此模式讓類別將具現化程序交付給子類別去處置。
  • 抽象工廠模式(Abstract Factory)
    以同一個介面來建立一整族相關或相依的物件,不需點明各物件真正所屬的具象類別。
  • 建造者模式(Builder)
    從複雜物件的佈局中抽取出生成程序,以便用同一個生成程序製造各種不同的物件佈局。
  • 原型模式(Prototype)
    制訂可用原型個體生成的物件類型,爾後只須複製此原型即可生成新物件。
  • 獨體模式(Singleton)
    確保類別只會有一個物件實體存在,並提供單一存取窗口。

結構模式(Structural Patterns)
在探討如何以類別和物件組合成大型的結構。
  • 轉接器模式(Adapter)
    將類別的介面轉換成外界所預期的另一種介面,讓原先囿於介面不相容問題而無法協力合作的類別能夠兜在一起用。
  • 橋接模式(Bridge)
    將實作體系與抽象體系分離開來,讓兩者能各自更動各自演進。
  • 組合模式(Composite)
    將物件組織成樹狀結構、「部分─全體」層級關係,讓外界以一致性的方式對待個別物件和整體物件。
  • 裝飾模式(Decorator)
    將額外權責動態附加於物件身上,不必衍生子賴別即可彈性擴增功能。
  • 外觀模式(Façade)
    替子系統裡一堆介面定義一套統一的高階介面,讓子系統更易使用。
  • 享元模式(Flyweight )
    以共享機制有效地支援一大堆小規模的物件。
  • 代理模式(Proxy)
    替其他物件預留代理者空位,藉此控制存取其他物件。

行為模式(Behavioral Patterns)
探討物件之間的演算法及權責分配問題。
  • 解譯器模式(Interpreter)
    針對標的語言定義出文法,以及可解讀這種語句的解釋器。
  • 範本方法模式(Template Method)
    對於操作,只先定義好演算法的輪廓,某些步驟則留給子類別去填補,以便在不改變演算法整體構造的情形下讓子類別去精鍊某些步驟。
  • 職責鏈模式(Chain of Responsibility)
    讓多個物件都有機會處理某一訊息,以降低訊息發送者和接收者之間的耦合關係。它將接收者物件串連起來,讓訊息流經其中,直到被處理了為止。
  • 命令模式(Command)
    將訊息封裝成物件,以便能用各種不同訊息、暫存、記錄、復原等方式加以參數化處理。
  • 迭代器模式(Iterator)
    毋須知曉聚合物件的內部細節,即可依序存取內含的每一個元素。
  • 仲介者模式(Mediator)
    定義可將一群物件互動方式封裝起來的物件。因為物件彼此不直接相互指涉,所以耦合性低,容易逐一變更互動關係。
  • 備忘錄模式(Memento)
    在不違反封裝性的前提下,捕捉物件的內部狀態並存在外面,以便日後回復至此一狀態。
  • 觀察者模式(Observer)
    定義一對多的物件依存關係,讓物件狀態一有變動,就自動通知其他相依物件作該做的更新動作。
  • 狀態模式(State)
    讓物件的外顯行為隨內部狀態改變而改變,彷彿連類別也變了似的。
  • 策略模式(Strategy)
    定義一整族演算法,將每一個演算法封裝起來,可互換使用,更可在不影響外界的情況下個別抽換所引用的演算法。
  • 訪問者模式(Visitor)
    定義能逐一施行於物件結構裡各個元素的操作,讓你不必修改作用對象的類別介面,就能定義新的操作。
對於上述設計模式的目的說明,看完與看懂是兩種不同的境界,若以投手與捕手做例子,看完23個設計模式就像捕手可以接到投手所投的球,但這不表示捕手知道投手為什麼會投這樣的球,看懂則是進入知其然的境界了。

###

熱門文章