2025年1月27日 星期一

React 思維進化:一次打破常見的觀念誤解,躍升專業前端開發者

 



在估評、挑選網頁應用程式的技術範疇時,無庸置疑的容器化和前後端分離兩項技術已經是軟體開發業界默認的 De facto standard ,而前後端程式分離的概念與實踐更是一舉改變軟體工程師的職務劃分。以 JavaScript 為核心語言的網頁工程師,逐步變成掌握網站與行動應用開發話語權的前端工程師。隨著 Node.js 以其高效能成為網頁後端技術新竉兒,各種超越 JQuery 這個前端 JavaScript 函式庫的挑戰者們,也因為其青出於藍而大放異彩。其中 React 便是獨領風騷的一方之霸。

對於一個從事後端開發的工程師來說,學習 React 技術,目標純粹只是想減少自己對前端技術的知溝,方便未來能與前端工程師同事更容易討論、合作有前後端分離的網站專案。不過事與願違,在完全沒基礎的情況下,嘗試去搞清楚所謂的前端技術是怎麼一回事,很容易用自己瞭解的技術去推論,而有所侷限,反而看不清真相。像我一開始也鬧了個笑話,把 React 誤以為是 Java 語言裡的 Reactive 技術,還因此去研究了 Spring WebFlux。或是後來分不清 React 和 Node.js 的角色與關係,把 React 誤當成是某種 Node.js 上的框架。後面這點倒是不能笑我,畢竟 React 的開發環境太依賴 Node.js 了,幾乎所有的資料都是指導 React 開發者先安裝 Node.js。

正在苦惱如何事半功倍地學習必要的前端基礎時,React思維進化一書如天降甘霖般紓解我的煩憂。全書的目標便是替讀者們建立最正確、基礎的 React 技術觀念。也順道解答了為何 React 這樣的前端技術能將 JQuery 取而代之,而且形同水火,兩者不能並存。實際上就是 React 為了要減輕操作瀏覽器 DOM 的負擔,導入了 Virutal DOM 的設計,壓縮程式運行中所有的元件異動,只在最後階段才同步反映到瀏覽器的 DOM 上。JSX 是方便撰寫 React element 的語法蜜糖,而 React element 卻要經過 Babel 這種語法轉譯器的幫助,才能變成真正可運作的 JavaScript 程式碼。這一切的一切都有太多前情提要的背景知識,也難怪 React 不是非常好上手的程式語言。

不過 React 不好學習有另一個關鍵的原因,如果你在網路上查找 React element 的範例程式碼,肯定會找到兩種風格截然不同的東西,class component 和後來的 function component 。 書裡提出許多論證,讓讀者知道 function component 改進、消除了過去 class component 設計上的缺失。這樣的技術改版是不得不然,但這肯定是個容易讓初學者踩雷的誤區,甚至可能白費時間學到過時的 class component 開發技術。單向資料流的 prop 以及 state ,是確保 Virutal DOM 運作能正確無誤的機制,這也連帶著影響了程式碼的開發範型。從鳥瞰的角度來評論,可以說許多 React 特殊的程式碼設計風格與規範,以及搭配運作的 hooks 函式庫,都是為了達成更有效率的 DOM 更新,React 原始設計團隊,將此負擔轉嫁到工程師上,而不是開發出能簡化程式碼的一體適用執行環境。

不論是線上的 React 前端工程師,或是像我這種想對 React 多點瞭解的後端工程師。React思維進化都是值得成為第一本或是唯一一本的 React 技術指南。在擁有書中講解、介紹的背景知識後,讀者們才能更有自信,具備足夠的底氣去學習更進階的,如 Next.js 等 React 框架。而在全書的薰陶之後,即便看到前端工程師同事丟來的程式碼,相信也能略懂略懂的端詊。

2025年1月14日 星期二

設計聊天機器人

 


自2017年起由AlphaGO興起的人工智慧浪潮,從最初的車牌、人臉辨識,到自動翻譯和對話機器人,各種改變大家行住坐臥的AI服務,已經深深融入到你我的日常生活情境中。其中對話機器人或稱為聊天機器人被許多公司行號用來執行每日的客服事務,或是當做基本的品牌行銷渠道。而設計、開發與維運聊天機器人,卻有著和傳統資訊系統截然不同的流程與思維,這便是這本設計聊天機器人的主題,帶讀者們以產品經理或簡稱PM的觀點,用全方位的角度,好好瞭解聊天機器人到底是什麼?

從市面主流的聊天機器人平台談起,再介紹主要的各種應用情境。先從策略面的角度切入聊天機器人能為企業帶來怎麼樣的創新。接著強調設計機器人時的個性塑造要符合企業、組織的品牌形象,並補充由技術面剖析聊天機器人的系統架構等資訊。談完大方向,內容就落實到實作面的各種技術議題。最核心的當然是達成自然語言理解的人工智慧、其次是對話資訊流與多元互動使用者介面,這些都和一般網頁與應用程式開發有所不同。書中最後幾章手把手帶著讀者,從無到有地規劃、設計一個聊天機器人產品。其中撰寫對話腳本和系統測試相信對絕大多數的開發者來說,都是充滿新奇的一種體驗。

相信絕大多數的消費者對於時下所謂的智能對話機器人並沒有正向的體驗。書中預測的對話經濟風潮,對照的卻是各家大廠陸續退出智能語言服務市場,像是狠狠地打了作者一巴掌。追究原因或許有三,一是由機器學習的監督式分類模型,要處理複雜、充滿例外的自然語言理解課題,仍是力有未逮。二是對話機器人系統的維運,必須不斷地投入心力爬梳對話記錄,用以調校、優化腳本和模型,以維持智能服務的高品質,但大多數的企業、組織仍習慣以建好就結案的思維來建置資訊系統,讓八成以上的智能對話服務變成了雷聲大雨點小。最後,許多應用情境一開始都是出於過度樂觀的猜想,實際問世後不被消費者買單。像是購買流程,對照網頁操作的直觀、迅速,有多少比例的消費者願意花時間和機器人對話,只為了購買一個簡單的商品?

大型語言模型或簡稱LLM的出現,肯定會對聊天機器人相關產業產生天翻地覆的震撼。畢竟藉由生成式AI的協助下,就連非資通本科生也能輕鬆打造出能打敗專營打造對話機器人服務的科技公司。在技術力不再是發展門檻的大環境下,對話式應用能否實際開創出有如APP市場的另一片天?讓家家戶戶都能使用像電影鋼鐵人裡的智能服務賈維斯,或許是指日可待的未來。

2024年11月23日 星期六

刀背藏身:徐皓峰武俠短篇集

 

如果你覺得王家衛執導的一代宗師是寫真派武俠電影的代表作,那你肯定要一睹徐皓峰編導的硬派武俠電影師父。裡面沒有成龍打諢插科的笑料,也沒有徐克電影飛簷走壁的套招武打。有的是有血有肉的角色刻畫,以及符合物理學的比試過招,和民初的時代背景鋪陳。

刀背藏身除了收錄師父的原著外,也包含其它已經被拍成電影作品的倭寇的蹤跡和民國刺客柳白猿,還有短篇的國士和刀背藏身。如同徐皓峰在書中自述,他在執筆撰寫這些小說時,是抱持著它們未來都能被改編成電影劇本的期許。所以不論在角色的安排、對話的台詞以及劇情的節奏,都是限制在可以用兩個小時的影片長度說故事的格局。而且在一連串看過這五個短篇集後,也可以發現文本裡一定會穿插男女歡愛橋段這種增進電影看頭的調味料。

書中結尾徐皓峰講評中國電影產業困境的內容,反而變成本書的另一個亮點。他觀察到好萊塢影視產業的存在,是為了服務在工商社會中已經智竭力乏的普羅大眾得以娛樂。劇本務求邏輯清楚,台詞講究淺顯直白,更有甚者,會安排在畫面中安排解說員的演員,自言自語地獨白說給觀眾聽。而這卻不是電影這門藝術最初、最值得追求的形式,一切都是商業掛帥的緣故。

因此徐皓峰編寫的故事不見得符合邏輯脈絡,角色對話有時也挺曖昧不清。此如他所說,電影總是呈現著人會怎麼活的一種觀點與角度,而人與人相處時,說話總是留三分,言外之意說的才是真實人生。處處留白和可自行腦補的開放式結局,是他為腦力健的觀眾保留的影視佳肴,老派卻充滿浪漫。

2024年11月6日 星期三

科技巨頭的演算法大揭祕:資料科學家必讀的資料科學與機器學習實戰筆記

 



這本科技巨頭的演算法大揭祕基本上是幫讀者整理Netflix、Spotify、Facebook、Airbnb、Uber等知名企業,揭露它們在研發自家搜尋與推薦系統的過程中,有採用的設計與資訊技術。這也是本向大眾展示大數據與機器學習如何落地應用,產生實質商業價值的科普書。對於這些走在資通科技最前沿的大型企業,只要零點幾%的優化,對公司營運帶來的報酬可能就是數十萬美金起跳。因此天馬行空地翻轉手上的巨量資料,不停嘗試導入各種ML模型用來最佳化企業營運的各個層面,已變成它們工程團隊的DNA。他們不吝嗇透過網路文章、研究報告和論文,將九牛一毛的成果,挑選可公開於眾的技術片段,傳播到大眾面前,也藉此宣傳自家企業的技術優勢。多虧此書作者徐歆閔的消化吸收,替讀者將晦澀難懂的原文資料書寫成白話簡潔的科普文章,讓我們可以輕易地一窺各大山頭在數據應用的進展與巧思。

對於從事大數據與推薦系統開發的我而言,這本書是絕對值得收藏精讀的寶典。不過如果以實用角度來看,打個比方,它就像跟你介紹少林寺有七十二絕技、華山派有獨孤九劍、武當派有太極拳。而這些技藝都是知易行難,要花苦功練才能有所成,因此看完書懂些皮毛,讀者依舊學不會/做不出來。所以本書和多數教導實作的電腦書定位截然不同,科技巨頭的演算法大揭祕像是一本點到為止的武林秘笈。它開擴讀者的視野,點出在數據工程與推薦系統開發上,還有那些技能樹上的技術點,可以用心突破或加強的。像是向量運算、分類模型算是數據處理的入門招式,但在雜複的應用情境中依舊是不可或缺的核心項目。

個人認為企業的大數據應用發展過程可約略分成三階段。初步是開始收集、運用巨量資料,懂得利用大數據運算結果來優化資訊系統,擁有數據導向思維。接著是擁抱機器學習,打造以數據養模型的組織文化。充分將迴歸、分群、分類等各種AI模型導入到資訊系統的各個層面,達成無處不學習無處不優化的境地。最終的階段是以機器學習帶動大數據,靈活運用ML技術,甚至用來產生不存在的假資料,來泯除大數據應用的痛點(沒資料),此時會是見山不是山,大數據與機器學習再也分不清彼此。想當然而,這些科技巨頭早已達第三階段。

在電商平台開發推薦系統,某種程度上不如Netflix、Spotify這些訂閱制影音內容平台般單純。因為對於內容平台而言,只要推薦的內容是使用者真正感興趣的,一定能產生正向回饋,因為在月費制的前題下,消費任一內容對使用者來說是固定成本。電商平台則不然,商品售價、活動優惠、庫存滿足度甚至是競業的動態,都足以影響使用者對推薦內容的觀感與反應。這也是為何在推薦系統的發展大事件中,近來話語權最高的是影音內容平台Netflix(舉辨公開競賽),而不是電商龍頭Amazon,因為花費鉅資投入打造/購買一套推薦系統,對兩家公司在未來營收的影響上,不會是同一個數量級。對電商來說,一個完善的供應鏈數據平台,其重要性會遠大於擁有許多推薦模型的推薦系統。不論是數據工程、推薦系統甚至是機器學習,這些都是大數據工程師有機會施展拳腳的應用領域。它山之石可以攻錯,科技巨頭的演算法大揭祕便是扮演這樣的角色。

2024年10月9日 星期三

道士下山

家裡有裝有線電視的朋友們,應該或多或少已經看過電影道士下山。片中林志玲婀娜多姿的風情與郭富城和張震略帶腐味的感情,有別於他們以往的螢幕形象,確實令人印象深刻。某日遊逛恰好看到徐皓峰所著的原作小說道士下山,好奇之下隨手翻幾頁,覺得開頭節奏輕快便埋首翻閱下去。以我為例,道士下山和我是傳奇一樣,都是先看過電影再讀文字小說,恰好兩部都是電影劇情和原作內容大異其趣,讀起來沒有被破哏的疑慮。陳凱歌改編的那部電影,甚至可以說是與原作截然不同的二創,書本故事中精彩豐富的人物與情節,只被略取一二到劇本裡。

道士下山的主角何安下是一位下山入俗的道士,但有近三分之一的篇幅和比武與練功有關,不怪乎本書被分類成武俠小說。徐皓峰擅於描寫中國近代的江湖與武林,而且是非常貼近真實的那種。想當然耳,武林高手外表多半貌不驚人,而比武較量就是生死相搏,勝負大多僅止一招。被金庸小說、成龍功夫電影、日本少年動漫餵養長大的閱聽眾,第一次見識到徐皓峰式的武林高手對決,肯定覺得「啥,就這樣?」。但細思深慮後肯定會認同徐皓峰那些動作場面的呈現,畢竟武功就是殺人術,一出手更是你死我亡的大事,怎麼可能有如舞蹈般賞心悅目,打個半小時都沒完。

除了武功以外,何安下也算佛道雙修,他和佛法與修行有著深厚的機緣,也碰到收妖與飛升等靈異現象。讓此書突然從本格硬派的武俠小說,一轉眼跳躍為中國式奇幻小說,中間還穿插帶點故作玄虛的哲學佛理。故事走向轉折之大,也難怪電影作品無法將其一一收錄,只挑選閱聽大眾最會買單的武俠部份當主題。書裡還有第三種調味料,時代背景設定在民國初期,穿針引線地帶入中統局和日本特務等神秘組織。這兩個機構裡的特務們,也成為故事情節推進的催化劑。

對比以西方文化背景為原素的奇幻小說如哈利波特、魔戒,有著中國文化底蘊的當代小說容易讓兩岸華人有投入感。畢竟佛、道教、中醫、武功等觀念,人們早已耳濡目染不用作者添加註記、說明。不論是虛構人物個性的塑造、武功較量的描繪、民初時代真實人物的穿插點綴,全書整體讀來輕快不沉重,一篇篇短篇的形式也是作者特意為之,正適合通勤時翻閱。其中幾篇故事有形容人性貪婪醜惡的面貌,用得力道恰到好處,也帶有意在言外的反諷惡趣味。雖然最後的開放式結局令人有些詫異,但做為一本娛樂用途的小說,它已經是無法挑剔的極品,推薦給大家。
 

2024年10月2日 星期三

億萬負翁:亞當‧紐曼與共享辦公室帝國WeWork之暴起暴落

 



看完惡血後對美國新創產業裡光怪陸離的經營方法還意猶未盡嗎?那你可以再來看這本億萬負翁看看另一家憑藉著市場泛瀾的資金活水,拔地而起的共享空間公司WeWork。其創辨人亞當.紐曼出身以色列,絕對是位名符其實的夢想家。充分利用2010到2020年間,熱錢大舉湧入科技新創公司的時機,將房市由來已久的二房東經營手法,改良包裝成自許足以顛覆傳統商用不動產的共享辨公室巨人。

說穿了,WeWork之所以能快速地在美國與世界大舉鴻圖,訣竅是不計成本的租用商用大樓並改裝成明亮、富有設計感的辨公環境,以低廉的租金吸引自由工作者和中小型企業。成長引擎依賴的是紐曼用他個人魅力與人脈帶來的超額投資。從數百萬到數百億美金,這十年間WeWork的估值曾一度攀上近千億美元。諷刺的是,從WeWork開張的第一天起,這公司就沒真正的賺錢過。雖然有著不斷成倍增長的營業額,但在扣除營運成本後,到中後期,幾乎每天就燒掉數十萬美元。它就像傳統老鼠會般,只能不斷尋求更多的投資方加入以維持現金流而不破產。在投資市場深怕錯失壓寶另一家像亞馬遜或優步等新創公司而大發利市的氛圍下,紐曼他操弄這種貪婪心態需要有人幫其造夢的渴求,隨之因應而起。

嘗試打破市場遊戲規則的新創企業,加上源源不絕的營運資金,以跑馬圈地的經營策略追求吃下過半市場,等時機成熟再回頭來重塑市場價格,達成隱性托拉斯的經營策略,長久以來都是資通科技產業慣用的招術,而紐曼確實是將此精神挪到商用不動產的第一人。說實話,這種燒別人的錢賠本賣的手法,根本沒有讓流動資本額外創造出附加的商品/服務價值。要從正面思考來評價這種運用資本的思維,只能說這是種把資產階級的財富散播出去,進而補貼廣大的消費者,達到財富重分配的奇異法門。

紐曼後期找到孫正義參予投資WeWork後,號稱十倍速先生的孫正義只問營收成長而不管營業損失的投資理念,更是加劇腐化紐曼原本已經扭曲的公司治理。在不受董事會、市場監督的情況下,紐曼一家開始把WeWork所擁有的無限資金為私產,滿足個人日益膨脹的欲望與貪念。上下其手地用自己名義添購房產,再回過頭來要WeWork向他自己簽訂租約,成為公司的大房東。如果是正常公司,這行為已經足以告發紐曼背信罪,但在新創圈,這樣無法無天的創業者,多到好像不足為奇。

億萬負翁讓我們看到新創公司如何用一種不負責的態度、欺騙的手法,取得投資方的信任與資金。甚至運用這些金彈來破壞原本正常運作的理性市場,造成原本認真經營的競業失去生計。當然也別一桿子打翻一船人,利用資本市場的過剩資金,提供俱備潛力的新創公司發芽茁壯,一直是成就美國資通科技領先國的靈丹妙藥。但如果利令智昏,為求巨富的投資方自願退守成任憑經營者胡搞瞎搞,結果就是劣幣驅除良幣的讓有心人可以海撈一筆。

2024年9月21日 星期六

野貓阿健

 



這本是書寫一群街貓的記事,作者村松友視曾經出過一本有關自家竉物貓的苦艾酒物語而聲名大燥。在苦艾酒以二十一歲高齡去世後,作者和其妻雖然無法再展開雙手接納另一隻貓來到家中,因為不想有貓承擔著扮演苦艾酒替身的角色。不過卻對生活週邊的野貓付出更多的關心,任其來往家中庭院,隨時應供牠們乾乾和罐罐任其享用。

在眾多貓味中,更有個性也是全書主角的阿健,和其瘦小的身形相互地卻有著十足火爆的個性,以及靈活矯健的打鬥身手。讓作者聯想到有如一位武功高強的俠客,就像日本演員高倉健扮演的螢幕角色一樣,這也是阿健這個名字的由來。書中斷斷續續地記綠作者夫妻和阿健之間的互動,和阿健與其它野貓的日常。

和被照顧地無微不致的家貓、還保持著野性對人疏遠的野貓都不同,街貓發展出在街頭生存的獨特智慧,對生活中遭遇的人們保持著若即若離的距離。以一種孤高又優雅的態度存活在世界上,這就是俗稱浪浪的一生。野貓阿健便是一本獻給浪浪的書,以作者略帶奇想的思維,觀察那些舉世皆同的小可愛們。

同時書中後記所說,人本質上可以分成兩種,遇到貓之前和遇到貓之後。當你的生命中有機會和貓這種獨特卻可愛的生物有了交集,你看待這世上所有貓咪的方法就會有天翻地覆的改變,你將變成一位愛貓人,而這本書正是適合所有愛貓人閱讀。