我想寫一個簡單的系列文章。主題很簡單,就是記錄下麵對上傳視頻需求時,攻城獅和普通人(泛指所有非技術人員)的一些區別。當然,從需求分析到最終完整實現,每個步驟都是有乾貨。我會儘量避免一些偏情緒化的表述。更多的時候,我們應該把註意力集中在各個需求點本身的技術實現上。 這個系列的主要目的,就是秀一下我們... ...
前言
我想寫一個簡單的系列文章。主題很簡單,就是記錄下麵對上傳視頻需求時,攻城獅和普通人(泛指所有非技術人員)的一些區別。當然,從需求分析到最終完整實現,每個步驟都是有乾貨。我會儘量避免一些偏情緒化的表述。更多的時候,我們應該把註意力集中在各個需求點本身的技術實現上。
這個系列的主要目的,就是秀一下我們作為攻城獅的優越感;不過,我總覺得我們秀完,他們可能也不知道究竟發生了什麼事。另外,更重要的是,這個系列文章展示了從需求分析到技術選項,一直到最終的自動化上傳,自動化測試的完整思考核實踐的過程。我覺得,對於攻城獅來說,後者可能是我們更需要交流和關註的。
我會適當替換一些敏感的代碼細節。即使如此,我仍然努力會保證,經過適當配置後,所有代碼都是可以正常運行的。
背景簡介
大概是上周一左右吧,臨時被安排去給一個內部項目新上傳大約 100 個新的視頻資源。要的還很急,說是周三就要做好。好吧,當時我就知道,那一周肯定會過的很“酸爽”。因為那個項目可以認為是沒有管理後臺的,數據是要直接上傳到資料庫。意思就是我要手動編輯視頻相關的資料數據。還有就是,我拿到的第一手數據,也不是什麼結構化數據,而是一個 word 表格,和一個分散在多個文件夾下的視頻資源。
更“可怕”的是,我同時還被指派成了這個項目的 ”Owner“。“Owner”,就意味著,我絕不能像他們上次那樣,繼續手動傳視頻了。成本太高,而且數據容易混亂。上一次,我只是作為一個協作者,寫了幾行項目相關的代碼,幫他們簡單設計了一個資料庫表,也沒想太多,夠用就性。畢竟當時時間也非常緊,許多東西也是沒辦法盡善盡美的。
原來只有約20個視頻,都是交給“普通人”上傳的。流程大概就是:視頻拷貝給普通人 --> 普通人上傳完視頻 --> 郵件發出來視頻url和視頻標題 --> 我手動把數據錄進資料庫。中間,往返溝通了幾次,比如視頻尺寸不對了,視頻不能播放了,標題和視頻不對應了。。。真正的往返溝通,要比多很多,但是視頻數量少,總體來看倒也無傷大雅。
但是這次是大概100個視頻。就算是只錄入數據,差不多也得1個小時了,如果再手一抖,錄錯了。。。更可怕的是,我成了項目的 Owner,以後這種事,都得我直接處理。跨部門溝通,真的成本很高,或者說我太懶了吧,懶得一遍遍去別人工位催人家。所以,我就暗暗發誓,這件事必須徹底解決。這次我要把包括視頻相關的數據,從生成到上傳,到自動化驗證,完全自動化,智能化。雖然這100個視頻,時間上不會有太多變化,但是以後,再多的視頻,最多也就是輸入幾行命令,敲幾下鍵盤,就可以自動搞定了。如此,這個Owner,才能做的舒心。當然,它是一個很小的內部項目,我也是真的不想再讓它以後占用我太多時間了。
更新規劃
如果沒有意外的話,本周三到周五晚上,每天一更;周末會適當多寫點。
(一)生成結構化數據
講述的是,數據如何從普通的 word 文檔數據,變成最終可被程式化處理的過程。是的,你沒看錯,大部人“普通人”是用 Word 來傳遞數據的。好處就是人人都能看的懂;但是人人都能看懂的東西,攻城獅反倒沒法直接用。
(二)批量驗證語義分析功能
項目對接了微軟拿到 Luis 語義識別系統。原來是手動逐條驗證每個問題和答案是否能匹配上。現在,必須寫個簡單的腳本來自動化驗證了。
(三)批量導入數據
就是如何把數據處理成資料庫需要的格式,自動導入資料庫。因為是內部項目,項目本身沒有提供數據編輯功能,所以我就採用最簡單的策略,每次數據有變化時,就全部刪除舊數據,重新批量導入新數據。新數據,肯定是從原始數據,自動生成的。手動輸入,真的很容易出問題。
(四)批量導入視頻
就是如何把視頻批量自動上傳到七牛伺服器。肯定是一個自動化腳本,可能大家都會寫。但是,小技巧往往解決大問題!晚上睡了一覺,第二天起來看到所有視頻都上傳完了,真的是很開心的事。
(五)批量驗證視頻上傳是否成功
視頻是否上傳成功,肯定需要單獨驗證的。只是上傳腳本不能說明一定都上傳成功了,需要單獨驗證下。
(六)驗證視頻能否真正播放
這一步很關鍵。項目主要在 iPad 上用,所以需要驗證每個視頻在 iPad 上能否自動播放。iPad 上,用 HTML5 Video 播放視頻時,對視頻格式有一些要求,所以每個視頻都要驗證下。原來,就那幾個,手動點下就行了。現在,肯定不能再那樣了。於是寫了一個簡答的測試網頁,通過捕捉 Video 的一些事件,來實現自動化批量驗證視頻能否真正播放。