2017年年終總結(就是一個程序員的瞎叨叨):
從來到中科院到現在,很開心可以在這留下來。畢竟對於我來說,這里符合我對自己畢業后前兩年的規划。我是一個很慢的人,特別是對於我想做好的事情,我會非常認真仔細的思考,不願意放過任何一個漏洞。而對於我的專業來說,對於前端,我當時也是知之甚少。我願意花費更多的時間去補充自己的知識,我非常樂意學習新的知識,新的內容,以及了解所有我不知道的,意料之外的現象。了解他們形成的原理,去避開,或使用他們。但是我不願意自己在沒有很牢固的基礎時,去大量的學習內容,我覺得這是一個表面現象,或者說這不是我想要的,想成為的人。我希望自己對所學的一切都知其然知其所以然,不僅會用,更能理解,解決,創造。這大概是我當時的想法吧。
對於前端,可能很多人都覺得簡單,甚至上手非常的快,或者覺得html和css基本不需要學習,js也只用jquery就可以了。最近也在面試一些同學,可能他們也抱着這樣的心態,我覺得這是不正確的,我並不覺得一切都很簡單,對於html的關注,和css的關注,應絲毫不亞於對js的關注,我不得不承認我當時對js的關注也多於其他兩項,我正在調整,去花更多的時間關注他們。這些都是在工作和學習中,時常會感到對這些的理解不夠深刻,只是用,很少去想為什么用。在這一年中,我覺得自己的基礎在逐漸的牢固。在工作和學習的過程中,也遇到了許多問題,產生了許多想法。使用了更多的庫,包括學習深度比較深的像cesium,three,arcgis等,使用了sass,less,gulp,grunt,等內容。寫了幾篇博客(比較遺憾,沒有多抽出時間來寫),但是總結了幾百個頁面甚至更多的知識。使用java,並且優化了自己的代碼,別人的代碼,進行了重構,自己的前端后台代碼也在不斷的成長。照着書敲了800多頁的內容。等等還有非常多的內容。在這里,所有的問題,都需要自己解決,所有的想法都要自己判斷,自己處理。像代碼的優化方式,重構都是看書和別人的總結,自己在過程中逐漸認知的內容。總體來說,就是自己一點點的累積和總結,達成了今天的自己。
接下來總結我現在能想到的一些問題:(這點也是沒有進行良好的總結導致,以后還是要多多總結,全面總結):
第一個是跨域的問題:做項目時,服務端用的python,我在自己的編輯器寫web。請求調試時跨域。當時解決方法,使用CORS進行跨域。因為服務器也是可以控制的。所以很順利。后續給組里寫的項目,都是自己需要寫后台的,所以基本沒有這個問題。直到有一次,需要去調用一個視頻流,當時我們有三種格式的,由於某些原因,獲取放到了前端。那次真的是嘗試了10多種跨域方式,最終通過webscoket解決。也幫助我總結了基本上所有的跨域方式,以及我了解到的他們的特點。
第二個是轉html轉pdf,word文檔。這個當時在百度和chrome上,都沒有現成的,或者說晚上的解決方式,主要是對於內容,格式,圖片,表格等導出控制,沒有一體化的庫或者說一個比較規范的方式。所以我是去發現現有的可能的方式,然后去總結比較,包括結合來達到我想要的結果。這個問題也教會了我當我遇到的問題,可能網上沒有答案,或者沒有合適的方案時,我自己要怎么思考,怎么分塊處理,怎么整合在一起。最終完美解決。只放了word的代碼,因為pdf還是有一個比較合適的庫,又加上后來沒有去放代碼。這個在博客和github上都有。
第三個是重拾java,寫前端的同時,寫后台的代碼。這個主要是心理上的問題,當時我感覺自己是想要吧前端做的更加好,覺得自己有許多要學習的前端的內容,不想花費時間在后台上。但是后來還是接受了,而且在這個過程中學到了許多。比如調整自己的心態,雖然之前在學校也學過,但后來基本丟的差不多了,但是會非常容易理解一種語言,也總結了學習語言的方法。我願意花時間去看一本springboot的書。所以一切就會變得簡單,后來甚至會重構之前的同事們寫的后台代碼,能發現哪些方法是好的,哪些是不合適的,比如前端列表的獲取不應該由后台controller定義。我覺得這是我一開始沒有想到的。也感覺代碼到一定程度,其實設計應該是相同的。
第四個是通過不斷的寫系統,從剛開始的緩慢到后來的速度,自己對系統的設計和組織能力,在不斷的提升。知道如何入手,知道要考慮哪些方面的內容,要思考什么樣的方式去實現。另外,也懂得與人協作可能會存在的問題。這個只能說是實踐出真知。去年大概完成了五個系統。也學習了,修改了別人的系統。
第五個是數據流展示,這個其實不算什么問題。本來是准備使用原生的websocket,但是之前的同事們采用了一個框架socketjs,所以本着遵循他們的邏輯,后台要求仍然用這種方式,所以就用了。但后來,又增加了兩個數據流后,發現后台給的接口,並不能確定數據流的類型,因為是通過rid進行區別的,但是websocket的路徑中並沒有帶rid,所以會發生串流的現象。后來采用了原生的方式進行重寫。這個主要是前后端約定方式的問題。教會了我思考擴展問題,思考現存的方式是否合適,以及是否有更好的方式可以代替。
第六個也不算是什么問題,當我們決定使用3d地圖的時候,自己研究了學習了cesium地球,還有threejs,並且可以實現我們的需求,后來因為我們之前用的平面地圖是arcgis,我們也買了arcgis的服務,也參加了arcgis的全球大會,所以改為使用arcgis3d地球。在這個過程中,一直是一個學習的過程,遇到的問題其實都是自己對該庫了解不夠多,另外還有學習方法的問題。對於問題,其實只要你花時間去解決,基本就能解決。對於庫的使用,我覺得只要是庫能做到的,我們開發人員就基本應該做到,這沒什么特別困難的事。對於學習一個新的,具有深度的庫也有了自己的理解。我們應該有正確的方法,比如從類到方法,到屬性的去學習。一步步的根據我們的要求學習這個庫。如果我們主攻這個庫,我建議采取的不是為了要求,而是我們對於每一塊自己能理解到的程度去學習。這樣會更加有深度,也許可以提出或者創造一些沒有的東西。但這個一般對於庫的開發人員來說,就像我們對於js一樣,能多深,就多深。
第七個是在寫動畫的過程中,使用的方式就不說了。主要是在js精准控制動畫過程中,產生的問題。由於界面需要的交互動畫較多,會導致一些延遲動畫在快速操作的過程中,沒有進行及時的添加移除,包括延時后產生的各種效應等。教會了我許多對於動畫的設計,和控制動畫的起始,包括了解了js的高精度計時,以及js的延時操作不可靠。也在處理threejs過程中接觸到了大量動畫渲染卡頓的問題。也了解了dom樹的渲染和利用gpu去解決js的計算問題。包括界面上的盒子。以及脫離文檔流后的部分重繪將會節約時間。等等,並不深刻,有待深入了解總結。
其實還有許多問題,沒有進行好的總結,所以或許一時想不起來,像vertical-align和line-height之間的關系,像transform的matrix。等等,當我遇到的時候可能就會想起來了,這里就不把幾百頁的內容列舉出來獻丑了。
總結一下學到的知識吧:
1.跨域
2.webStorage
3.各種各樣的插件使用。
3.html content 轉world,pdf。
4.java springboot
5.sass, less
6.gulp, grunt
7. websocket
8.flex布局
9.canvas
10.svg
11.播放各種格式的視頻流
12.cesium,arcgis
13.three.js
14.動畫
15.看並敲了七八百頁的基礎書。
16.寫了幾篇博客
17.看了半本設計模式
18.看了半本算法。
19.學習了es6
....
等等許多css和html,js細節的內容就不說了,實在是臨時想,很尷尬。。
總結展望:
1.總結:學習了大量的內容,鞏固了自己的基礎知識。也使用了很多的插件和框架,對於基礎,對於html,css,js都有了自己的理解。對於插件和庫有了自己的學習和使用方法。也依靠自己解決了許多問題,對於問題,能形成良好的思路。缺乏總結整理。對於知識的掌握缺少深入思考和聯系,對於前端的架構了解較少,對於算法數據結構,設計模式使用較少。看書較少。總體還算可以吧(我誇自己一下)。
2.展望:今年要對基礎進行更加深刻的理解,爭取能夠成為真正意義上的精通。其次,多多思考學習方法,學習管理自己。多讀一些書,還是有整體上的許多內容需要進一步學習。多多使用算法數據結構和設計模式的思想。學習vue和react,webpack。了解angular.js。多多學習源碼。任重道遠,砥礪前行。