可視化驅動――Beijing openparty 竹露端陽後記

經過四月的休整, openparty 乘着端午節的喜慶,提前爲大家準備了豐盛的大餐,地點依然是我們不見不散的老地方, ThoughtWorks 北京。

 

自從上次活動盛大創新院正式成爲 openparty 贊助方之一後,我們每次的話題優勝者(得票最多)都會得到由他們提供的錦書一部。給我們帶來 Swing Dance zengjazz 斬獲了該獎的處女獎,在此祝賀他。而其他貢獻者,爲了表示鼓勵和感謝,參加活動也可能有其它意想不到的收穫哦。


       這次的活動,依舊是帥鍋靚妹排成排,新人如春筍般冒出來,這讓本來就患有姓名盲綜合症的我情何以堪,下次一定要找個本本記下來(當然還有美女的電話,捏哈哈)。在此不再貼出他們的照片(不然怕是要搶了 flicker 的生意啦),可以稍後移駕活動相冊。

 

       本次活動話題依然包羅萬象,有 wenfeixiang 女士帶來的非技術話題「西藏十日遊」、 James 帶來的「沙發客」、 hongjun 的「 BDD 行爲驅動」等等,也有 Scott Fleckenstein 的「 ZMQ 」和汪昊的「數據可視化」等高端話題。


 

Session1 我選擇了 Scott Fleckenstein 的「 ZeroMQ 」,因爲最近正在做一些 web 消息服務器的選型,而基於 ruby ZMQ 讓人眼前一亮。 ZMQ 是一個建立在 socket 協議之上的輕量級異步消息隊列。

       消息隊列的模式非常適合併發協作, ZMQ 使用了自己的方式,突破傳統一對一的通訊協議,以更靈活的方式實現了高性能通訊處理。

       ZMQ socket 類型分爲四種:

1.         REQ/REP       傳統的 C/S 通訊模式

2.         PUB/SUB       消息隊列模式

3.         PUSH/PULL   流模式

4.         XREQ/XREP  高級定製化負載均衡模式

天然的一對 N 支持、基於更快的 MessagePack 封裝協議、支持 Transient ( 短暫 ) Durable ( 持久 ) 兩種連接方式 ZMQ 在分佈式、集羣應用中大放異彩,而 ruby 的客戶端實現代碼更是簡單的讓人無法相信:

Server

 require 'rubygems' require 'ffi-rzmq' ctx = ZMQ::Context.new sock = ctx.sockt ZMQ::REP sock.bind("tcp://127.0.0.1:10101") loop do name = sock.recv_string sock.send_string "Hello, #{name}" end 

        Client

 

 require 'rubygems' require 'ffi-rzmq' ctx = ZMQ::Context.new sock = ctx.sockt ZMQ::REQ sock.connect("tcp://127.0.0.1:10101") sock.send_string "Scott" puts sock.recv_String #=> "Hello, Scott" 

 

如此簡單的代碼就可以使用 ZMQ 搭建 REQ/REP 模式的 HelloWorld 工程。

 

之後的 Session2 ,是汪昊帶來的「數據可視化」,話題中他講了很多基於科學分析、數學計算的工具和用途,也爲大家演示了直觀的效果。其實,數據可視化的真正威力就是在直觀――將要表達的數據壓縮到人類思維可接受的數據量――這一根本的目標。

對於數據可視化,汪昊提到了 2 點最基本的過程:採樣、展示。

採樣依據應建立在系統所要關注的主要維度,使模型中的主要數據遠高於其他次要維度――增加信噪比。

展示則是需要使用更合理的圖形、顏色、符號,讓只存在於二維上的像素點(就是你的屏幕啦),更清晰的展示給人類大腦。

從系統性思維中我們知道,對於一個複雜系統,所包含的維度已遠遠超出了人腦思維的運算能力,所以,需要一定的模型來去繁從簡描述系統的主要維度――所有數據可視化是建立在近似基礎上的――這一目標的推動力,激勵了人們對數據可視化的研究――計算機本職工作便在於此,它驅動了計算機世界。

 

Session3 則是 hongjun BDD 行爲驅動。對於行爲驅動,我們可以理解爲從客戶角度出發,使用通用語言,並結合 TDD 測試驅動,讓整個需求貫穿軟件開發到交付的整個過程――是的,也可以稱爲業務可視化。

實現 BDD 最核心的方法是建立描述客戶需求的通用語言,並將該語言與開發的代碼綁定映射,比如使用「 I want 」「 then 」「 and 通用語言指導整個軟件設計開發過程,並作爲最終交付 / 驗證依據。

使用 BDD 的根本原因依然是在 Session2 中提到的可視化驅動原理,不單是數據,開發過程也是具有複雜的維,那麼我們要跟蹤和優化整個系統,也需要可視化,而 BDD 提供的流程可視化,可以讓參與開發的每一個人都有能力看到和把控開發過程,以滿足高質量的代碼交付要求。

 

可視化驅動了世界,也驅動了我們的熱情,被浸染在有這樣光榮使命的計算機世界中的各位,是不是也需要 openparty 這個可視化的平臺,來展示每個人心裏的那份特別?

本次活動照片已上傳至:

http://www.flickr.com/photos/[email protected]/sets/72157626832125508/

如果你需要原片或者不希望出現在照片中,請及時與我聯繫, [email protected] 雞毛,謝謝!