2020年11月12日 星期四

Maven實戰


從事資訊系統開發的人,如果不是天生神力有著「一目十行,過目不忘」的本領,或多或少都會有如何達到「溫故知新」的困擾。畢竟資訊技術一日千里,永遠有學不完的新東西,但手頭上合用的工具與技術還是要維護,常常會有蠟燭兩頭燒的焦慮感。

相信今日從事Java程式開發的工程師們,肯定對Apache Maven這套開源工具不陌生。它將軟體開發生命週期的想法融入到專案管理及自動編譯工具中,讓不同的軟體專案能依循相同的目錄結構與建置階段。它有如Java開發社群的巴比倫塔,在跨團隊合作的專案中,減輕了因各自的專案開發風格(路徑規劃、編譯步驟)所造成的文化障礙。

Maven對Java社群更大的改變在於,它拯救了無數受困於JAR參考地獄的程式開發人員。透過POM設定檔中的依賴管理功能,宣告式地指名專案需要引用的JAR,Maven就自動幫你完成下載、相依性引用等讓人操煩的技術性細節。平心而論,採用Maven做為開發輔助工具,大大地提升了Java工程師的產能。

而這本「Maven實戰」便是具體而微地說明如何使用Apache Maven在實務的工作場景。它用一個前後呼應的Web應用程式專案做為範例,不疾不徐地說明了Maven中的方方面面。雖然在專案自動化建構工具的領域上已經又出現了Gradle這個後起之秀,但不可避免地仍然有許多專案是採用Maven,對於想要掌握Apache Maven工具的朋友們,「Maven實戰」絕對是值得收藏的好書。


2020年9月20日 星期日

歡樂邏輯養成班,超有料!:一學就會,一笑就懂,絕不昏昏欲睡的12堂課

 

想要一秒鐘惹怒工程師,只要對他本人說「我覺得你講的話沒有邏輯」。可想而知,每天得藉由程式碼和電腦搏感情的程式人員,是多麼在意自己的邏輯思維能力。卻也因為「邏輯」一詞的使用氾濫,常被現代人在日常生活上用來指稱「腦袋清楚」與否,模糊了「邏輯學/理則學」原是一項能增進「口語/文字溝通」正確性與效率的人類文明結晶,其重要性不亞於數學中的「四則運算」和「九九乘法」。

而「歡樂邏輯養成班,超有料!」一書便是能讓讀者輕鬆、愉快地閱讀過程中,吸收到最基本的邏輯學觀念。書中介紹的條件句「若A則B」,充斥在人們日常對話的情境中,像「如果今天是博客來會員日,我就會買書」。而人們卻常犯「若A則B,非A則非B(錯誤)」的推論錯誤,產生「如果今天不是博客來的會員日,我就不會買書(錯誤)」,更將錯誤擴大為「我只在博客來會員日買書」。後續介紹的「否命題和逆命題同真偽」、「命題和否逆命題同真偽」、「充分條件/必要條件」等觀念,都是透過幽默有趣,淺白又不失精準的說明,傳達給讀者,中間穿插著日本特有的四格漫畫更是有畫龍點睛的效果,讓思考著邏輯運算而忙碌的腦袋,能適時地喘口氣,用另一種方法(四格漫畫)獲得邏輯觀念的解說。每篇結尾都提供了驗證所學的簡短練習題,切記得按步就班地自我檢驗,才能獲得更大的學習成果。

近末篇章作者開始進一步介紹邏輯學中的「演繹」,帶出了「邏輯定律」中相當實用的幾個公式,包括了:「遞移律」、「肯定前項律」、「否定後項律」、「選言三段論」、「建構兩難律」和「背理法」。更把「演繹」和「歸納」兩大推論技巧的關係說明清楚,一解我心中殘存已久的困惑(誰先誰後)。舉例來說,時下流行的大數據便是利用歸納法來提出假設,再利用假設當前題進行演繹推論,但這種推論在前題不為真時將會失效,所以要記得時常確認前題沒變。

邏輯能力和數理能力一樣,都是用進廢退的智能技術,不論是已經身為家長想到培養子女在邏輯思維上的基礎,或是想保持自身在邏輯判斷上的神志清明。「歡樂邏輯養成班,超有料!」都是一本最適合「學而時習之」的優良教本。


2020年9月13日 星期日

Storm應用實踐:實時事務處理之策略

 

提到大數據,黃色小象(Hadoop)的名號已是婦孺皆知。但在巨量資料處理的實務中,Hadoop(和後起之秀Spark)只是批次運算的領頭羊,在天平另一端則是串流/即時運算(簡體稱為流運算)。Apache Storm便是名氣響亮的串流運算開源碼解決方案。

巨量資料技術最適合應用在各式的網路機制與服務。而最佳的資訊流架構規劃,應該是融合批次運算和串流運算。以這樣的使用情境為例「隨著網站使用者的瀏覽歷程,網頁自動呈現最多人感興趣的內容」。就是藉由巨量資料收集進行的批次運算結果,得出「最多人感興趣的內容」的數據洞見。配合即時(更專業上應該說「近乎即時」)收集的「使用者瀏覽數據」,動態改變「網站的呈現內容」,至此才實作出前述的系統機制。

或許有人會提出疑問,覺得同樣的數據流處理也可以用傳統的網頁程式技術來完成。差別在如果採用的是串流運算,它會針對Web主機裡的access log進行後端非同步的資料處理,實踐了營運和分析程式分離的資訊架構。一方面減少前端網頁程式的複雜度,提升程式碼的可讀性。另方面即使未來增加更多的數據分析功能,也不會因此影響到網頁回應的速度,造成整體網站的效能不彰。

從事數據分析的資訊人員,在談到串流數據處理時,肯定會聯想到Splunk(商用)和ELK(開源碼)這兩個知名的時間軸式(time-based)大數據分析平台。Storm很明顯地和它們不同,Apache Storm完全是個數據處理運算平台(platform),或更嚴格地說是一個數據處理開發框架(framework)。而Splunk和ELK是著重在巨量數據的即時分析,一條龍地提供「收集」、「處理」、「視覺化呈現」的分析工具。

拉回來說,細看Storm組成的元件和它在處理數據流時採用的架構,資深的工程師馬上會聯想到典型的訊息佇列(message queue)服務。猜的沒錯,Storm核心元件中的Spout和Bolt,對應的正是精典的「生產者/消費者」模式中「消費者」的角色。在架構Storm的解決方案時,也少不掉要安裝提供可靠數據來源的訊息佇列服務(如AcitveMQ、Kafka)。你可能會問,若是如此,又何必花費心思導入Storm方案,只要自行撰寫符合生產者/消費者模式的數據處理程式,不就可以打造出即時的數據分析功能?但是Storm平台能做的不僅是一般常見的多執行緒(multi-thread)消費者元件,它通透地提供跨主機(multi-server)、跨處理程序(multi-process)的消費者元件,理論上可以讓數據流處理的總吞吐量接近無上限(還是會卡在系統瓶頸點)。而導入Apache Storm也連帶著引進了管理介面、標準化的開發框架,這都能增進即時巨量資料處理解決方案的可維護性及穩定性。

這本「Storm應用實踐」的內容令我大為讚賞,一開始從最基礎的串流資料處理觀念說起,接著是核心元件Spout和Bolt的介紹。它以貼近IT實務的模擬案例來引導讀者打造可運作的程式原型,從中做學地逐漸讓人熟悉著手Storm開發的最佳程式範型(pattern)。

Storm的Spout和Bolt元件,如同Hadoop著名的Map/Reduce般,在極簡的類別設計下,展現出無窮潛能的實作空間。書中後半針對效能調校、程式除錯等進階議題詳加說明,還有比官網文件更深入淺出的Storm內部運作細節解說,當之無愧地可以說是「Apache Storm自學聖經」。終章作者介紹了Trident這個建基在Strom上的抽象框架,它提供了類似Spark Streaming一樣的「微批次/小批次」資料處理功能。老實說,Trident的複雜度足以獨自出版成冊,作者也言明只想粗淺介紹這個抽象框架,讓讀者有個印象,一般在開發Storm應用時不見得需要用到Trident。

「批次處理」和「串流處理」像是大數據工程師工具箱裡的十字和一字起子,兩者適用的情境和條件限制截然不同。透過妥善的規劃將兩者相互整合,會展現出一加一大於二的驚人成果。因此從事大數據工程的資訊人員,千萬要把握學習Apache Storm的機會,更別錯過「Storm應用實踐」這本值得典藏的傑作(還是有幾個勘誤處,細讀才會發現)。

2020年9月9日 星期三

圖解火砲


自從運用火藥爆炸威力殺敵的熱兵器問世以來,傳統以刀劍互搏的冷兵器就逐漸淡出戰場。藉由大量的影視作品,即便不是軍警的平民老百姓,相信也對一般的槍炮機制略知一二。

而這本「圖解火砲」以一篇篇問與答的圖文內容,將有關大炮的科普知識傳達給讀者。從最基本的前膛炮和後膛炮的差異到歷史上關鍵的火炮技術演進,都能輕易地在書中找到答案。後半部更依地上和海上的火炮應用獨立成章,從中可以學到「坦克」和「自走炮」的差異,「魚雷」和「水雷」的不同等等軍武小知識。

這一類的圖解大百科多半源自於日文翻譯書,內容都是非常淺顯易懂,插圖精細且賞心悅目。令人佩服日本人整理、解構事物的專業和細心。閱讀此類書藉不外乎是對討論主題感興趣,或是單純被書中插圖所吸引。不論起心動念的源由為何,圖解大百科系列總能讓讀者心滿意足地盡享閱讀之樂。


2020年8月20日 星期四

Splunk大數據分析

 

 
大數據工具如此多元的今日,開源碼的解決方案如雨後春筍般滋長。一時之間,需要掏錢購買的商用軟體難免讓公司行號考慮再三。畢竟大數據軟體所費不貲,若能妥善運用開源碼,減少專案開發所需的軟體授權費用,也算是明智的節流巧門。在景氣低迷、未見曙光的大環境下,商用版工具要脫穎而出,獲得決策者的青睞,必有它過人之處。而Splunk便是在即時大數據領域中大放異彩的優質工具。

有別於Hadoop和Spark嘗試在大數據批次處理找出最佳實作範型,Splunk專注在替即時大數據/流式大數據的應用情境提供解法。它既不像Spark streaming以短批次模擬即時,又和Apache Storm只負責數據的「處理」截然不同。Splunk是真正在流式大數據上,同時做到「收集、儲存、處理、呈現」這四個數據分析上的核心功能。簡單說,一但使用了Splunk平台,公司馬上就擁有完整、強大的即時數據分析解決方案。在開源碼的世界,可以和Splunk比肩的是由Elasticsearch、Logstash和Kibana組成的ELK平台。兩相比較,Splunk因為是用單一軟體做到收集、索引、查詢、視覺化等所有功能,因此在建置、維運以及使用上都比ELK簡易流暢。然而不論是Splunk或ELK,在大數據分析中都只是做為完善批次分析平台的不足,即時分析平台是無法取代像Hadoop和Spark這種通用平台,用於執行客製、複雜的大數據運算。

「Splunk大數據分析」是本資訊量很高的電腦書,即便在說明概念/術語的初章,就不廢話地介紹即時數據分析的獨特價值。接著一章章地講解數據導入、SPL分析語法、數據視覺化。各章內容採用實際範例來讓讀者練習,在看完功能簡述的文字後,緊接著具體的指令操作和執行結果截圖,大大地提升吸收、理解的效率。書中提及的Splunk指令集相當扎實,進階功能的應用常常就躲在隻字片語裡。最後兩章,更納入分散式佈署、效能調校等系統架構規劃的議題,全書比Splunk原廠的基礎課程更為豐富深入,可說是one for all。

美中不足的是,這本是上市已久的舊書,介紹的軟體版本/功能已經有點過時,因此少部份功能截圖與新版本對不上。另外書中舉的練習範例較貼近美國社會(此為簡體翻譯書),不論是航班資訊或是Twitter社群,都不是台灣人所熟悉的情境。如果將內文簡化,範例更濃縮,集中在Splunk指令集的介紹與功能呈現,有成為非官方教材的潛力。

2020年8月16日 星期日

天國飯與地獄耳:偷聽,揭露我們與惡的距離。鄰桌的故事越罪惡,食物越美味,我們都犯此不疲。

食記難寫之處在於,用來描寫盤中美饌的詞彙拿捏不容易,滿腹經論的美食作家,順手寫來通篇滿溢繞舌罕見的字句,吃個粽子也要提起屈原的國仇家恨。俗一點的則走Taipei Walker日雜情報誌的風格,內頁滿滿賞心悅目的美食美照,搭配著作家獨家的評分量表,加上店家老闆笑臉迎人的半身照,更貼心地附上地址和電話等侯讀者預約。若你已經看膩了上述兩種極端的「食記」文學,「天國飯與地獄耳」恰好能讓你耳目一新。

作者「岡田育」在書中的各篇短文中,以美食破題,描寫用餐環境/風情當基底,讓讀者跟著她一起觀察/偷聽的周邊客人互動,配上若有似無的作者個人評論。一邊透過文字感受到日本獨有的食文化,又能滿足於人們喜愛聽人八卦、看人隱私的惡趣味,真的能讓人手不釋卷,泛起邪惡的微笑一頁頁讀下去。

博客來把此書放在「社會議題」的分類中,以我來看,更精確地說它是本「社會觀察」實紀。只是作者是在餐館裡,用她特有的方式端看人間百態,本質上「天國飯與地獄耳」和「北野武」出過的一系列社會觀察評論/散文集沒有不同。「岡田育」用許多美食佳餚來點綴,論及的話題多在閒話家常的範疇,讓全書沒有憤世忌俗的毒舌冷語,還多了點飯菜香。

2020年8月9日 星期日

住房自由的人生:房地產專家張金鶚教你活用七三法則、大數據,找回居住自主權


近兩年來由於有成家打算,我開始關注買房資訊。瀏覽各家房仲網站後,「買房難,難如上青天」可比擬我心中受到的震撼。而除了房價外,建商風評、地段、格局等與購屋相關的資訊,也都成為我關心的議題。因此在書店展台上看到「住房自由的人生」一書,立馬詳實翻閱咀嚼。

時常在房地產新聞中看到作者張金鶚教授的大名,印象中他是位敢言的房市學者/專家。書中內容果不其然,有別於另一位文筆有點插科打諢的專家Sway,學者出手就是濃濃地學術味。數字、圖表、引用資料來源一應俱全,內文印出來也可以在課堂上當做講義。優點是不嘩眾取寵,章節言之有物,缺點是全書通篇讀完不免令人漸感乏味,像修了一學期的房地產導論學分。

作者在書中分享他生命中購買過的房產歷程與分析竅門。具體的提出了買房的五大重點:「產品」、「管理」、「區位」、「價位」和「時機」。而購房目的則可分為「自住居住」和「購屋投資」兩種。對於「自住居住」的人來說,五大重點的先後順序為「產品>管理>區位>價位>時機」。而「購屋投資」的人則是要用「價格>時機>區位>產品>管理」來思考。書中也介紹了「好時價」這個公益查詢房價網站,讓購屋者多一個較不商業化的資訊平台。

張教授在書中鞭辟近裡地解釋台灣房地產價位上漲的成因,就是房屋已然成為金融投資的標的物,投資客在市場上的影響力與日俱增,拖累了真正有居住需求的自住客。其實這些道理,你懂、我懂、隔壁的獨眼龍也懂。但在政府刻意忽視不作為的情況下,所有的苦果都將由民眾來承擔。