Jasonmel Online

Jasonmel Blog - Page 37

個人網頁改版

2016/06/08 (Wed.)

照慣例,好像每換一間公司就要把個人網頁改版一下,那就來改吧!

其實只是最近在看 Facebook 開源的 React,想實際動手試試比較有感覺,就拿 blog 來開刀。沒想到不開則已,一開才驚覺怎麼這麼好的概念現在才碰到,有點相見恨晚的遺憾在裡頭。原本的架構就是傳統 php 的思維,把資料檔案讀進來,分別依照左側的 Archives, Tags, Recent Comments 以及中間的正文刻出對應的 HTML DOM,然後印出來,程式碼非常之亂且難以維護。在 React 的概念下,每個區塊的資料各自分離成獨立的 API,以 AJAX 取得資料後再透過 React 把 HTML DOM 產生出來,而每次資料有變動,就概念上整個重新產生一次 HTML DOM (實際上 React 會去計算前後變動產生的 diff 再把差異的部分更新到頁面上,據說這作法參考了遊戲引擎在畫面上只更新變動的部分的概念),這樣一來整個架構就簡單清楚多了。以 blog 為例,只要有新的 comment 送出,就重新發一次 AJAX 取得新的中間正文資料更新 state,React 立刻會驅動 render 重新產生對應的 HTML DOM,這樣新的 comment 就會立即顯示在頁面上。這時有個新問題產生,如果要同時更新左側的 Recent Comments 區塊呢?官方的作法是用 Flux 的架構,不過目前還不太懂 Flux 區分 Action, Dispatcher, Store, View 背後的動機,所以就用簡單的 event emitter 來通知 Recent Comment 去抓新資料就解決了。這樣的機制如果要用傳統的 php 思維來做絕對是讓程式更複雜更難以維護,但透過 React 就是一個 event emitter 的工作而已。

結論就是,React 真是個偉大的發明。敬禮!

魔球(Moneyball)

2016/06/06 (Mon.)

兩本運動科學相關的書:《魔球(Moneyball)》、《跑步,該怎麼跑?(Pose Method of Running)》。

《魔球(Moneyball)》一開始,作者以一個十分有趣的問題開場。「過去幾年間,運動家隊的總薪資不是大聯盟最低,就是倒數第二(2002 年全隊總薪資四千萬美元),但該隊贏得的例行賽場次,僅次於亞特蘭大勇士隊。從 2000 年算起,運動家隊連續三年打進季後賽,其中兩年只差幾個出局數,就能淘汰最有錢的洋基隊(2002 年全隊總薪資一億兩千六百萬美元)。」這是怎麼辦到的?作者先給了一個簡單的答案:「在職棒圈,你有多少錢固然很重要,但更重要的,是你花得有多聰明。」接著帶出運動家隊總經理 Billy Beane 的故事,闡述藉由統計分析歷史紀錄,可以打破棒壇許多前輩們傳承下來的「經驗」。例如過往談到得分,都傾向聚焦於全隊打擊率,但透過分析可以發現全隊得分與打擊率關係很小,反而上壘率及長打率與得分關係密切的多,也就是許多知名的進攻戰術--觸擊、盜壘、打帶跑,在大多數情況下其實意義不大,甚至弄巧成拙。至於投手,過往注重的球速也不是個可靠的指標,畢竟球投得再快被打安打也是枉然,球雖然慢但能騙到打者才是真功夫。而除了防禦率、四壞、三振、全壘打外,還有一個投手可控制但常被忽略的就是滾地球和飛球的比例,飛球可能造成全壘打或二三壘打,但滾地球則大多可以控制在二壘之內甚至製造出局數。也因此 Billy Beane 選秀就依照這些指標,以低價選進了許多靠外表嚴重被低估的優質選手,有了選手們的歷史數據,甚至可以預測全隊球季的戰績及勝敗場數。原本帶有運氣成分、帶有貧富階級成分的棒球,透過歷史大數據的分析,就此變得科學起來,被低估的球員們也藉著數字得以被挖角,得到翻身的機會。棒球界如此,各行各業也一定存在許多類似的錯誤經驗,有了大量歷史資料以及快速普及的電腦運算能力,大數據勢必將破除更多迷思以增進整體效率。

類似於《魔球》的概念,《跑步,該怎麼跑?(Pose Method of Running)》也是藉由觀察大量世界級跑者,所得到關於最佳跑法的結論。一圖以蔽之,就是下面這張圖。其中最關鍵的部分就是深色的「關鍵姿勢」,其他部分就只是自然的姿勢輪替。而關鍵姿勢有三個要點:平衡、位能、彈力。平衡方面,處於關鍵姿勢時身體是平衡的,身體重量只落在腳掌前緣蹠球部(the ball of the foot),這樣能量就不會浪費在多餘的動作上。位能方面,這時的身體稍微前傾就像一顆在桌子邊緣準備自由落體滾下的球,蓄勢待發。彈力方面,呈 S 型的腿就像彈簧一樣,累積最大的彈性能量。而跑步速度的快慢,則取決於步伐的頻率(配合身體前傾幅度),而非步伐的長度,因為跨大步腳著地時間長,不但會需要抵制重力,也會對髖關節和膝蓋產生極大的壓力。剛好前一陣子蓬勃運動事業執行長徐正賢到公司演講,就提到台灣瘋路跑瘋到一年有幾百場賽事,爽到的不是主辦單位,而是復健科醫師,就是因為太多人沒有正確的觀念就去跑,反而容易受傷(現場就有同事在質疑會不會這些路跑賽事都是復健科醫師去辦的... XD)。另外除了肌力、柔軟度的訓練外,書中提到赤腳跑、沙灘練跑、野地小徑練跑、上坡下坡跑等練習,都是蠻有趣的激發跑步本能的做法,可以找機會試試。話說回來嘴砲容易,身體力行倒還是另一門功課,要怎麼不偷懶,同時把這樣的觀念落實融入自己的跑步姿勢中,是自己要多加努力的部分。

跑步姿勢組合,來源:《跑步,該怎麼跑?(Pose Method of Running)》。跑步姿勢組合,來源:《跑步,該怎麼跑?(Pose Method of Running)》。

Will Win, CHEN、揭密!萬惡人資主管的良心建言、超強人脈術

2016/05/18 (Wed.)

該重拾書本了。三本書:《Will Win, CHEN》、《揭密!萬惡人資主管的良心建言》、《超強人脈術》。

《Will Win, CHEN》是陳偉殷的個人自傳,紀錄這位台灣之光踏上大聯盟投手丘之前的心路歷程。「在編織一個夢想的時候,我提醒自己兩件事,第一,不一定所有人都會為你搖旗吶喊,第二,夢想不會為你量身打造。」在家人的反對下,陳偉殷好不容易得到的人生第一個左手手套,被爸爸用菜刀剁碎丟進垃圾桶,之後練球都得在教練的幫助下,瞞著家裡偷練。最後戰績投出來了,家人就沒話講了。到了日職二軍,經歷韌帶斷裂,手術、以及帶有一切未知恐懼感的復健,陳偉殷事後的感想是「如果我輸給復健中一次次的挫折感,我今天不會在這裡,我感謝那段時光,讓我變得更強壯。」到了美國,首先感受到的是文化差異。跟日本的照表操課不同的是,美國的訓練由自己安排,畢竟只有自己知道自己需要的訓練是什麼。大聯盟初登板,面對的第一個打者就是洋基隊長 Jeter,兩好三壞之後,「他微笑著,優雅地繞過四個壘包跑回來,一切好像很不真實,如果你玩過『實況野球』就會知道,我就像遊戲裡面投手挨轟時,頭冒金星的那個樣子,整個世界都在旋轉。... 我安慰自己,其實應該要覺得驕傲,因為大聯盟的第一次被轟,是來自一個超人氣的準名人堂球員,未來我也會留名在他的紀錄裡。... 我的腦子哩,從像是沒有訊號的一片空白,到終於出現了一些帶有雜訊的畫面,下方的字幕寫著-- Jeter 表示:歡迎來到大聯盟。」這,就是一步一腳印,愈挫愈勇,追著夢想向前跑的陳偉殷。

《揭密!萬惡人資主管的良心建言》作者曾任多家公司 HR,從 HR 的角度講解了許多企業用人與人事安排的內幕,看過之後許多表面看似不太合理的事情頓時就豁然開朗了,有種相見恨晚的感覺。不過由於內容繁雜,就不再佔篇幅一一列舉了。

《超強人脈術》大致歸納幾個要點:1. 人脈在乎「貢獻」。2. 在雙方「溫度」一致的情況下,共同成長,交情才能持久。3. 寫書,打造自己的個人品牌。

該唸研究所還是直接去工作

2016/05/02 (Mon.)

最近,被一位大學生問到:「請問我該唸研究所還是直接去工作?」當下我給的答案是:「都好,各有利弊。」然後就簡單分析了一下兩者的優缺點。但我相信,當事人一定不滿意於這個答案。同樣是最近,被一位學長問到:「請問朝前端發展好還是朝後端發展好?」當下我給的答案是:「都好,全端工程師正夯。」但我相信,當事人一定不滿意於這個答案。除了這兩個個案,其實生活中好像還蠻常出現類似的抉擇問題,例如「念二類組好還是念三類組好?」「公家機關好還是私人企業好?」「大公司好還是小公司好?」「在鬼島安逸領低薪好還是出國闖天下好?」

事後想想,這些問題真的是問題嗎?從消極面來看,的確任何問題都可以用「都好」當作答案,畢竟怎麼走都有其優缺點,也就是其實我們就躺著擲骰子做決定就好。而這樣的消極態度,也正是我目前的人生寫照。我沒煩惱過念二類組還是三類組,單純想說繳一樣的學費,念三類組可以比二類組多學一門生物課,何樂而不為?事後證明我生物真的不行,也讓未來選系少了很多煩惱。我沒煩惱過該念研究所還是直接去工作,反正錄取了還不錯的學校,家人也支持,就去念吧。我沒煩惱過該選大公司還是小公司,反正也就只丟履歷給聽過名字的公司,然後率取了,就去上班吧。我沒煩惱過朝前端發展或朝後端發展,反正老闆給我什麼任務我就去做,然後就變成前端後端都做的全端工程師了。而我沒煩惱過要不要出國,也純粹是目前還沒有出國的機會,那就當一天鬼島和尚敲一天鬼島鐘吧。老實說,其實自己不太喜歡這樣的想法,畢竟這種隨波逐流的思維,結局如果剛好是自己想要的算運氣好,如果不是也並不意外,風險極高。但嘴巴說不要,身體卻還是給了人家這樣的答案,實在要檢討。

從積極面來看,就得端出我理想中的「藝術家」了。藝術家絕對不會問這種問題,因為藝術家夢想遠大而明確,當下在 A 點,目標在 B 點,中途的路徑抉擇,就是朝著目標的最短路徑走就對了,沒有什麼好猶豫的。在我目前的人生際遇中,有兩位很適合拿來當「藝術家」的例子,一位是 jserv 學長,一位是 redjava。jserv 學長的事蹟網路上繁族不及備載,明確的知道學校教育已經不能滿足自己對技術知識的追求,即便輟學,還是靠著堅強的實力走出一片天,在各領域都有可怕的(實在想不出其他更適合的形容詞)貢獻。redjava 則是很早就確立要出國,也很早就對人工智慧十分著迷,因此畢業後當同學們一個個進大公司的同時,redjava 獨排眾議,出社會的第一站是進中研院,接著出國念博班,最後才進入人人羨慕的 Google 的最核心的人工智慧的部門,和地表上最聰明的一群人,一起從事地表上最先進的研發工作,每次回台灣就是到處巡迴演講。雖然看結局都很美好,不過我想這其中的過程絕對是孤獨難熬的,也只有藝術家有對目標堅強的信念能熬過去。

給兒子的話:兒子,哪天當你開始問起自己名字的由來的時候,就是老爸頭疼的時候了。「藝術家」豈是三言兩語能講得完話題,所以老爸得先整理整理才行。而上面提到的「夢想遠大而明確,然後努力去實現」,就是老爸對你的期許之一。

AlphaGo 打敗人類

2016/03/15 (Tue.)

過去這周,有件重要的事情發生了:Google 收購的人工智慧圍棋系統 DeepMind AlphaGo 以 4 勝 1 敗的成績打敗了世界圍棋九段高手李世乭,目前世界排名暫居第二

許多討論在此就不贅述。不過這的確是讓人興奮的一件事,個人把它定位為人類發展史上繼「已知用火」、「農業革命」、「工業革命」、「資訊革命」之後的另一場革命--「思考革命」。用火,耕種,讓人類的基本生理需求得到滿足而有閒暇餘力發展科學,進而帶動工業革命。而工業革命以消耗天然資源取代了人類的勞力,使人類有更多的閒暇發展出更複雜的晶圓半導體、電腦系統、網路,讓全世界的訊息可以以光速傳送到世界的每個角落,帶動了資訊大爆炸的革命。如今,連複雜的思考與決策這件事都能夠被機器取代,而且機器的犯錯率遠小於人類。以 Google 自駕車為例,截至去年九月,共累積上路開了 1948394 km,零肇事率。普通人一年開個 20000 ~ 30000 km 已經很了不起了,要開到這麼多里程數大概要兩三輩子吧,更不用說普通人一輩子完全零肇事率幾乎是不太可能。而圍棋,號稱地表上最複雜的棋類遊戲,面對沒有情緒起伏、不會犯錯的機器,就連最頂尖的人類,只要一個粗心下錯一步,就輸了。以這樣的發展速度,或許在我有生之年,就能見證電腦超越人類的時刻了吧,真是既期待又怕受傷害啊!

最後,引用李開復轉發的一篇評論,「回頭看,或許人類很多發明都是錯誤方向」,提醒自己也提醒人類:Stay hungry. Stay foolish.