這兩年的工作和技術總結

揭秋明發表於2015-04-19

來公司將近兩年,從一開始的前端開發,到現在的ASP.NET Web開發、.NET客戶端工具開發,跨度比較大。目前的狀態是技術研究不夠深,多數停留在表層,沒能強制自己做好學習總結工作。專案工作內容也沒用一個傳承接代的過程,專案中需要你做什麼,那你就得去幹,下面主要梳理下這兩年的工作內容和技術成長過程。


一、智慧電子書專案

剛來公司接觸的第一個專案就是教學軟體的html5化,一開始面對HTML5/CSS3/JS,這些當時以為比較low的技術,難免有些心浮氣躁,但是接觸到前端模組化開發後,我的觀念馬上就轉變了,不管哪門技術,都有它的適用場景和優點,不能一棒子打死。前端模組化(SeaJS)讓JavaScript變得跟C++等其他高階語言一樣可以方便的進行團隊協同開發,一下子提高了生產力,糾正了我以前認為的JavaScript僅能實現某些特效的錯誤思想。還有jQuery的出現,幫助前端開發人員解決了瀏覽器相容性的頭疼問題。

這個時候我惡補JavaScript、jQuery的知識,網路收集jQuery的各種教程,其中從零開始學習jQuery系列讓我快速上手jQuery開發,同時也學習Google JavaScript 編碼規範指南

同時閱讀相關的經典書籍也不能落下,在圖書館借來的書單如下:
1. JavaScript DOM程式設計藝術
2. 編寫可維護的JavaScript
3. 精彩絕倫的CSS
4. 編寫高質量程式碼--Web前端開發修煉之道
5. 響應式Web設計實踐

這一階段算是比較輕鬆的經過了3個月的試用期,在轉正答辯會上,我也提出希望能有更多挑戰的工作機會。結果研發經理就安排我去了現在的考試產品研發線,開始了苦逼的模考之旅。


二、模考資料視覺化軟體開發

調入新的考試業務線做研發後,感覺專案的緊張程度比以前更高了,先了解了模考資料視覺化軟體的功能後,我發現該專案算是大系統中的一個子專案,可能就你一人負責,相比之前多人同時開發一個專案,任務更重了。該專案基於Chromium 嵌入式框架(CEF)內建網頁的HybridApp,需要對考試任務資料進行分析和讀取,然後根據視覺化要求及計算公式,得到最終的資料,最後利用視覺化圖表庫Highcharts進行展現。

該專案有多個奇葩的地方:

  1. 前端程式碼表現、行為、內容沒有做到完全分離
  2. 前端JS程式碼沒有進行模組化組織
  3. 前端JS程式碼無法除錯(CEF控制元件整合有誤,不支援JS除錯)

我的做法:

  1. 針對目前已有的程式碼不進行重構工作,但是在增加的程式碼中儘量做到前端程式碼的HTML/CSS/JS分離
  2. 不進行SeaJS前端程式碼改造,改用閉包的形式分離程式碼模組
  3. 通過列印關鍵物件值的除錯資訊進行除錯

做完這個專案後,發現已有的業務邏輯程式碼較多,自己也無更大的精力去改造。有空要研究下JavaScript的資料處理功能,包括效能以及實現方式。目前知道的方式有:

  1. 將資料處理放在後端,並結合HTML5中的WebWorker,防止UI卡死。
  2. 對於不支援HTML5的瀏覽器,則將需要大量處理資料的過程分割成很多小段,然後通過JavaScript的計時器來分別執行,就可以防止瀏覽器假死,詳情見該連結內容

三、基於網際網路的自動化評分系統

這個專案是考試業務線的大專案,主要分兩階段:
1. 考試資料收集,上傳至公司伺服器
2. 對當前的兩個評分系統(人工評分和機器評分系統)進行自動化排程,根據考生音訊評測情況自動分發打分任務,提高考試成績釋出速度

我在第一階段的任務是:

  1. 開發資料收集Restful介面,提供給考試客戶端呼叫,利用ASP.NET WebAPI、物件關係模型(ORM)框架Entity Framework,這一階段已經逐漸轉向後臺開發了,重溫了SQL以及C#。
  2. 同時開發後臺監管系統,也是基於ASP.NET MVC框架搭建。
  3. 為了適應開發的需要,我買了一本《ASP.NET MVC4 Web程式設計》,斷斷續續讀完了,該書較完整的介紹了利用ASP.NET MVC開發網站的技術,涉及前後臺的設計與開發,還包括效能優化、web安全等方面的知識。

第二階段的主要任務是:
1. 開發評分系統呼叫服務,利用Redis通訊來排程人工評分系統和機器評分系統,我們將評分流程分為基礎資料準備階段、機器評分階段、人工評分階段、成績彙總階段,每個階段對應一個服務,同時還有一個流程監控排程服務,負責訊息的轉發和控制。涉及到的知識點有:.NET多執行緒、sqlite資料庫操作、報表操作等。
2. 改進後臺監管系統,增加試卷資源的管理,並基於Bootstrap和SeaJS改造系統介面,特別針對大量列表格資料的呈現進行視覺化優化和使用者體驗,即合併列資料、資料分層分級、顯示最重要的資料、隱藏不太重要的資料。
3. 這段時間重點看的書是介紹前端MVC的書《基於MVC的JavaScript Web富應用開發》,不過有些概念理解的不是很深刻,該書較全面的介紹了MVC在前端開發中的應用。


四、統一模考平臺

進入2014年11月,新的專案又開始了,主要是對口考網進行改版,並且將考試操作搬到Web上,方便教師進行考試,且可以檢視成績報告等;在這個專案中我的主要工作是負責前端框架的搭建和設計,協調其他兩名前端開發人員進行網站的前端開發,另外還涉及到後臺介面的設計與需求討論。

在實際開發過程中,也出現了許多問題:
1. 需求不具體,花費太多時間討論需求,導致開發進度一度落後延遲
2. 程式碼質量沒有得到很好的保證,單元測試沒有做好,後來嘗試使用前端測試框架QUnit
3. 與UI的配合不夠默契,介面優化工作耗時費力

主要使用到的技術有:
1. ASP.NET MVC框架,前端還是使用seajs、jQuery模組化開發,同時利用模板引擎artTemplate生成表格資料 2. 後臺使用 Redis快取,資料庫索引技術
3. 後期嘗試使用Grunt打包上線網站,不過還沒有全部完成


五、模考試卷製作工具

加入考試業務線之後,就一直跟試卷製作打交道,發現裡面坑很深,牽涉到語音資源部和其他開發小組同事,一開始製作試卷均是手動操作,後來我開發工具進行快速轉換,主要是文字資源內容的拷貝、替換,音訊的轉換,圖片和ppr檔案的拷貝,甚至還有sqlite資料庫的讀寫。

目前已經支援全國各地幾十種試卷資源的轉換,程式碼急需重構,重構方向有如下:
1. 將對試卷模板xml的解析按照模組劃分,下次製作資源時直接根據模板來組裝
2. 利用策略者模式或者是單例模式來改造程式碼,梳理出試卷轉換操作的主要流程,並做到自動化。
3. 另外試卷原始資源製作及驗證過程主要交由語言資源部同事來進行,容易出現一些細節錯誤,這時就得我這邊來尋找問題,經常會佔用許多工作時間


六、總結

從以上專案及技術實踐看來,前後端技術都接觸到了,不過主要的精力都投入到業務開發中,需及時總結遇到的技術難點和解決方案,後續我會逐步梳理出可以總結的部分,以博文的形式釋出出來,方便記憶。


七、廣告時間

當然這兩年最重要的感悟就是,不管工作怎樣,都要好好對自己,特別是自己的身體;女友很體諒我整天對著電腦工作,讓我能每天堅持吃一個蘋果;最近還開了一家網店,淘寶店鋪名稱叫“愛吃蘋果的姑涼”,她家有個蘋果園,每年10月份是蘋果的收穫季節,剛摘下的蘋果新鮮可口,又甜又脆;如果大家讀到這裡,希望大家前往淘寶店鋪看看,同時也希望大家能捧場^-^,在此先謝謝各位童鞋啦.

淘寶店鋪二維碼 enter image description here

相關文章