2016 終於要結束了,雖然滿懷期待地迎接 2017,但回首 2016,真的很是辛苦。由於我知道,2017 確定會更加辛苦。在這有限的時間內,我學到了很是多的知識,這一年學到的知識,比整個本科學到的還要多。css
這一點都不誇張。本科四年,迷迷糊糊的不知道本身在幹嗎,視野很窄,學到的知識很窄。讀了研以後,我所考慮的第一件事,就是選擇一個方向,而後選了半年,選好了,2016 也到來了。前端
本科就開始接觸前端,真正讓我對前端產生好感的是研一上學期的一個項目,我負責前端那一方面。雖然對前端沒有一個系統的概念,碰到問題,基本靠谷歌(百度),雖然也能解決問題,但學不到東西。node
喜歡前端,還得從喜歡 JavaScript 提及。不過,早期時候的學習 JS,都是把它看成 Java、C++ 來學,只是以爲它就是一門普通的語言,固然,這屬於最糟糕的學法,對於 JS 中很是重要的思想一無所知。python
不過,這一切,都在 2016 改變了,2016 真是蛻變的一年。react
今年開心很晚,大概 3 月底纔開學,因此前面兩個月,不談。nginx
研一下沒有多少課,導師容許的狀況下,跑到一家離學校很近的公司實習(地鐵一站路)。公司很小,剛起步,人很少,真是應了那句話,去小公司實習,啥活都幹,很是慶幸本身能夠在這裏獲得鍛鍊。git
公司屬於創業公司,主打虛擬現實,我在的時候,方向是房地產和旅遊,如今轉到教育方面。在這裏,我能接觸到前沿的虛擬現實技術,給我最大的感覺就是,虛擬現實很是火,但技術不夠成熟。虛擬現實將要開創一個行業,但這須要硬件和軟件的支持。程序員
我在這裏作的事情不少,寫過文檔,作 Unity3D 開發,Arduino 單片機開發,還負責 P 圖,維護、修改公司的網站,甚至我仍是個網管,買服務器、裝電腦、修電腦。中間還有一次去蘇州的一個展會參加展覽,展現公司的產品,因爲 VR 產品很是有觀賞性,不少人駐足,我和公司另外一個同伴一塊兒解說,也算是一次鍛鍊吧。github
先來講下 Unity,它自己是一個遊戲引擎,支持多平臺,因爲它遊戲級的畫面渲染效果堪稱完美,被衆多虛擬現實開發這用來看成虛擬現實引擎,效果比以前的一些引擎好不少。web
Unity 上手很容易,但進階很難,這每每須要一個全能的開發者,會寫腳本,會建模型,還要懂得一些光照、渲染的基本原理。因爲 Unity 須要的資源文件很大,用 git 或 svn 之類不方便管理(不過咱們公司確實沒找到一種合理的團隊合做解決方案),好在公司人很少,我寫完腳本,都直接發給 leader,有 bug,我修改一個版本,再發送。
我對模型和渲染一律不知,不會用 3DMAX 建模,不會調材質,但我會寫代碼。Unity 運行是一幀一幀的,代碼邏輯很好理解,且支持 C# 和 JavaScript 語言,基本都是寫腳本,拖到物體上,運行。
我用 C#,門檻很低,大概一個多星期,就能夠上手寫代碼了,好比太陽光隨着時間的變化,開關燈,移動,這些我均可以寫,後來作虛擬現實自行車項目的時候,接觸到物理引擎,碰撞,加速度,在參考別人的代碼下,我也能夠寫。
之因此不用 JavaScript 來寫而選擇 C#,一方面是網上 C# 的代碼樣例不少,方便參考,另外一方面,雖然 JavaScript 適合寫腳本,可是每次我看到 JavaScript 的代碼,都感受很是奇怪,這種風格我真的沒法忍受,舉個例子:private var cubeTransform;
,因此,我仍是選擇了 C#。
還有 Arduino,一款超級流行的開源硬件,我用它來收集自行車的信號,傳遞給 C# 寫的串口接受程序,實現軟硬件的互動。本科最輝煌的那段時間就是搞單片機的時候,先是 51 單片機的那門課考了滿分,老師都說歷史第一人,後來期末課設,本身手動焊板子,寫代碼,作一些好玩的東西(板子是別人設計好的,不懂設計)。那個時候一成天待在機房,寫彙編,直接操做寄存器,寫中斷,寫串口程序。
這直接致使個人畢設和硬件有關,讀了研以後仍然在學一些硬件的東西,這也是我去公司實習的目的,雖然我是以硬件的名義去實習的,但實際作的比這要多得多。
6 月的時候,我就離開了,由於導師有其餘的事情安排,如今公司發展很快,方向很好。這三個月,學到不少知識,踏入了一個行業,並瞭解這個行業的業務和發展,雖然我不打算從事這個行業,但這倒是人生的一次鍛鍊。老闆人很好,同事也很熱情,祝願他們可以創業成功。
實習的這三個月,一週 5 天有三天在公司實習,有兩天在學校上課。白天在公司,晚上就開始學習一些本身的東西。
當我開始想學習前端的時候,就拼命的在微博上找一些前端的大牛,看一看他們都在忙什麼。基本上全部的人都在寫博客,並且大多數都有本身獨立設計的博客站點。當時我還傻乎乎的認爲,博客這種東西應該是文人的喜愛,而我印象中技術人員的博客大多都還停留在教你怎麼配置文件,或者記錄下今天解決了一個什麼樣的 bug。後來本身親自寫博客以後,發現遠比想象中要複雜的多。
先從建站提及。以前就有 Linux 系統的基礎,恰逢騰訊雲和阿里雲都有學生計劃,價格很便宜,騰訊雲的學生計劃更是低到了一元每個月,還免費送域名。
建站的過程當中,學到了很多知識,反正是服了國內域名的備案。之前學網絡的時候,知道什麼是 DNS,經過騰訊的域名備案瞭解到什麼是域名解析,而又經過域名解析又瞭解到了 @ * 主機記錄和存活時間,也學習到很多新的知識。
或許當初我放棄一些免費的博客平臺好比 cnblog、csdn 或簡書、知乎頭條等是一個遺憾,可是手動搭一個開源博客,並設計本身的樣式,真的受益不淺。感受本身是一個前端人員,就要有本身設計的博客,且在設計的過程當中,學習到不少前端以外的東西。
Wordpress 很火,但因爲它是 PHP 語言寫的,而我在選擇的時候更傾向於一個 js 語言的框架。Ghost 是一個基於 nodejs 的開源博客平臺,而且能夠本身設計主題,參考官方的 API。個人第一個主題使用的是別人的,在此基礎上,我增長了一些修改。不過那個時候,啥也不懂,不會使用構建工具,直接在 css 文件裏改代碼,很是痛苦。
大概這樣子寫了三個月的博客,說實在的 Ghost 真的是一個優秀的博客框架,但我在使用的過程當中也發現了很多的問題,Ghost 是一個多人博客框架,對我來講,有點大材小用;好多功能都不夠完善,Ghost 發佈至今已經不少年過去了,但仍然不支持評論系統;Ghost 更像是給一個非技術人員提供的博客,而我若是想要本身擴張插件,很難。。。
上面不是我放棄 Ghost 的主要緣由,當我遇到 Hexo,我知道是時候放棄 Ghost 了。Hexo 是一個靜態博客,本地生成,能夠 push 到 github 上,固然也能夠用 nginx 代理到服務器上。Hexo 提供兩種方式來寫插件,一種是用 npm 管理,以 hexo-generator-{name} 的命名方式,另外一種就直接在根目錄下建一個 script 文件夾下全局函數便可。
參考 Hexo 的 API,我本身設計了一套主題,樣子很醜,還算湊合。大概花了兩個多星期,弄完了以後又有很多小的修改,整體感受 Hexo 很優秀,可是有時候寫博客也會很麻煩。
寫博客給我最大的好處就是知識點的梳理,個人博客大多都是以學習爲主,因此在寫一篇博客的時候,每每要查閱不少資料,原本覺得我對這個知識點已經很瞭解,可是查閱資料才發現,還有不少不足。寫博客是一種鍛鍊,在寫的過程當中,要學會如何組織語言,還要把一些知識點寫的通俗易懂,寫完了以後,每每還要檢查幾遍,以確保不會出現紕漏。寫博客自己就是一門藝術。
寫博客的過程當中,還學會了如何使用 markdown,如何排版,如何使用標點符號,這些都是很是小的細節,但又如此重要。
後來 6 月份,來了南京,導師安排的,公司是作安全的,我在的項目組是作 web 安全的,在安全公司裏實習,最大的感覺就是,寧肯錯殺一百,不肯漏掉一個,尤爲是一些可能對公司安全帶來威脅的小細節,堅定杜止。
在這樣的公司裏工做,是福氣,由於你必需要逼着本身,寧肯多檢查兩遍代碼,也不能等到它出現 bug 被 leader 罵一遍。公司裏沒有所謂的測試人員,本身就是測試人員,並且代碼寫完了,通常隔天就上線了,若是那個時候來個 bug,真的是毀滅性打擊。還好,代碼很簡單,出現的問題都不大。
公司裏不少時間都在寫腳本,用 Python,各類搭建靶機環境,期間,最大的收穫之一是正則表達式的熟練掌握。對於正則,不用的時候,感受沒啥,但當真的用到它,如何能寫一些高性能的正則表達式,這都是一個程序員必須掌握的,受用終生。
以前對於正則的種種,還停留在入門的階段,屬於那種會用但不深刻。在這裏實習,初期的幾個月裏,幾乎每天都和正則表達式打交道,天然而然,就很是熟練了。
既然是作安全,有時候須要復現一些漏洞,就須要搭靶機,這也是一個按部就班的過程。早期都是在外網用虛擬機裝個 Ubuntu,而後把整個虛擬機文件遷移到內網(內網是禁止連外網的),後來開始轉入到 docker 的使用,效率大大的提高,遷移文件也方便不少。總體感受,docker 的火是有其必然緣由的。
因爲是作 web 安全,有一部分的時間,是在學習 Http 協議,對於請求響應的過程作過頗多的研究,並且這和前端必備的知識又吻合,冥冥之中,也堅決了我前端的路。
實習到如今,7 個多月過去了,這裏的實習很輕鬆,歷來不會加班,晚上和雙休徹底是本身來掌控,在這裏學到了不少。
我接觸 github 很晚,或者說在想學習前端以前,就沒有去關注這個網站(感受是一大批前端的碼農讓 github 如此之火)。本人沒怎麼用過 svn,到公司實習以後,公司的開發語言是 python,用 gitlab 內網託管。git 這樣的版本控制方案,一用就愛不釋手。
關注前端的大牛,先是微博,而後是 github,看一看大神們都在忙什麼項目,我知道嗎,我須要學嗎?而後漸漸的把本身的項目也放到 github 上面去託管,儘管有時候網速感人。
不知道從何時開始,本身逐漸的向一個開源愛好者靠攏,儘管我目前對開源社區零貢獻,但我相信,將來會有的。
自從我把 github 設置成本身的主頁以後,天天打開瀏覽器,第一件事就是看看,你們都在關注哪些項目。記得 yarn 項目發佈出來以後,幾乎全部人都 star 它,火的項目,就這樣傳開了。
開始玩 segmentfault 以後,發現本身的 JS 是如此垃圾,那個時候連最基本的閉包和原型鏈都沒有弄明白。看了 jQuery 做者的《JavaScript 忍者祕籍》,慢慢的瞭解到這些概念,本身又寫了幾篇博客,來總結。
我以爲這段過程纔算 JavaScript 的真正入門,以前寫的 js 都算狗屁,由於那個時候的我連 this 都不知道怎麼用。
這一年,在 JavaScript 上長進不少。JS 中最繞人的仍是回掉,可是經過一步一步 debug 調試,按部就班,慢慢地就再也不暈頭轉向了。後來學習了 ES6,感受進入了巔峯期,尤爲是 ES6 中不少用法,讓我對整個前端最火的幾大框架又了新的認識,同時,當我學習這幾大框架的時候,也能感覺到 ES6 的威力之大。
暑假的時候,作了百度前端學院的題目,對 HTML、CSS 和 JavaScript 又有了一個進階性的認識,開始學習閉包原型鏈和類的寫法。也就是這個時候,我覺定從新看 JavaScript 的書,補強被遺漏的幾大知識點。
看了《深刻淺出 nodejs》一書,因爲當時閱讀的時候,沒有太走心,真正有用的知識點,並無學習到多少。後來學習 express 搭建服務器和博客的時候,網上有現成的教程,卻是對中間件的使用有不小的心得體會。那個時候 express 更新的很快,而教程都很老,踩了很多的坑。
九月、十月,這段時間花了不少時間在 codewars 上面,那段時間沉迷於用箭頭函數寫很是簡潔的函數,有時候還會去研究下一些有意思的前端題目,還特地加了好幾個 QQ 羣,看他們討論。當時的題目,除非是有很大坑的題目,基本都已經忘記了。
後面兩個月,開始學習 React,但中間又多了許多變故,拖了好久,纔算對 react 有個初步的認識。也寫過一篇對 JS 中繼承對深入理解的文章從一個組件的實現來認識 JS 中真正的繼承,漸漸的,愈來愈對 JS 着迷,深深的吸引着我。
從一開始,我都是很是熱衷於看原生 JS,尤爲是像 jQuery 等框架等源碼,這也是我明年 2017 首要完成對任務。
之前,我以爲本身是一個程序員,可是孤立無援,一我的,默默地寫着代碼。後來我學習前端,開始玩微博並關注一些前端方面的人,開始學習 git 並在 github 上提交了本身的第一個 commit,同時也關注着許多前端開發人員的動態,那個時候,我才以爲,我不是一我的在寫代碼。
前端,讓個人眼界獲得提升。或許我能夠經過其餘方法來提升眼界,好比去了公司以後。但如今不同,我還在學校讀書,卻能對整個行業有着本身的見解,這一切都要歸功於 Front-End。
前端只是一個選擇,它確實很火,但我保證本身並非跟風過來學習前端的。我從剛入學的時候(研究生),就在爲找工做時刻準備着,並非爲了找工做而選擇前端。到如今,2016 已經結束,我對本身的選擇並不後悔。
我不會強迫本身成爲一個硬件工程師,或者算法工程師,或者 Java 工程師,這些看起來都很是的好找工做,在我選擇前端以前,它們彷佛是較好的選擇。前端這個行業,受到不少人的批評,有人說他變化太快,有人告誡我,一個研究生不要去找這種‘低級’的工做,每次,我對於這種見解,都是一笑而過,畢竟,沒搞過前端,就沒有發言權。
存在都有其存在的意義,包括前端,發展很快,不正是說明前端這個圈子在飛快的發展嗎。
在同窗之間,我也找到了像我同樣,喜歡前端的人,你們有時候也會在一塊兒討論,畢竟同窗間的這個資源圈,確實稀少,由於大部分人還不知道本身畢業了以後幹什麼。
這篇文章本應該在年前完成,可是中間多了一些小插曲,致使今天(1 月 2 號)纔將就寫完。算了,無論了。元旦玩的很開心,可是細想起來,這三天又丟失了不少東西,好比 github 上的 commit。有失必有得,但願在 2017,本身可以取得像 2016 同樣的碩果。另外,前端不是你想學就會的,前端的門檻並非你想像的那樣低,可是,若是你選擇前端,請用心。共勉!
歡迎來個人博客交流。