Web 系統

Web 程式語言導覽:http://asukademy.logdown.com/posts/252496-web-programming-language-for-the-beginner

前端與後端

網頁開發通常分成前端工程與後端工程,各自有不同的語言,但又必須在網站之中交互作用才能夠提供給訪客流暢的體驗。

前端工程

前端泛指所有訪客能夠直接交流互動的介面,舉凡網站設計、切版、功能特效、下拉選單、橫幅、確認按鈕與表單等等,皆屬於前端的範圍。一名前端工程師通常需要具備稍微的美感(但不是必備,如果能與設計師流暢配合的話),才能夠將視覺設計師想傳達的概念與 UI 設計師設計的操作流程完美的呈現。當然,許多資深的前端工程師可能自己本身也是優秀的設計師。

前端工程師關注的是用戶體驗,而他們最大的痛苦在於跨瀏覽器相容問題。由於目前的網頁標準並非在所有瀏覽器中完美實現,有時相同的程式碼在 Chrome 與 Firefox 中顯示出來會不一樣,因此一個合格的前端工程師需要能夠掌握各種不同瀏覽器的特性與 hack 技巧,才能打造跨平台的泛用網站。另外,前端領域是個求新求變的世界,作為前端工程師最好要能逼迫自己時時刻刻了解最新的程式框架、技術以及每年流行的設計風格,以免跟不上前端領域可怕的進步速度。

代表語言:HTML, CSS, Javascript

常用工具與技術: jQuery, mootools, AngularJS, ReactJS, Gulp 等

後端工程師

後端則牽涉到伺服器上的運算,例如網站的基底程式語言、資料庫管理與規劃、或者伺服器架設與架構規劃,多屬後端工程的範圍。由於後端牽涉的知識與應用層面甚廣,通常不會有單一工程師能夠一人掌握所有面向,而是由一個團隊在一定的架構與規範下完成後端應用,我們稱此架構與規範為「框架 (framework)」。當然,資深的後端工程師也是有能力掌握整個後端知識,而小型應用也可能一個人就能應付後端需求。

後端工程關注的是程式應用的邏輯、效能與穩定性,需要對程式語言基本功有更高的掌握力,資料庫規劃、HTTP 連線原理等也都必須有所涉獵,才能寫出健壯的應用。相較於前端的快速發展,後端更要求長期穩定性,因為這些程式的應用邏輯可能是一間公司的命脈,轉換架構的風險通常都很高。

一般來說,網站的後端會由三劍客組合而成,分別是伺服器軟體 + 程式語言 + 資料庫,以下是這三者之中常見的項目:

代表語言: PHP, Ruby, Python, ASP .NET, JAVA, Node.js

常用伺服器軟體: Apache, NginX, Node.js, LightHttpd

常用資料庫: MySQL, MariaDB, PostgreSQL, MSSQL, Oracle, Sqlite

2009 年 11 月正式宣布推出的 Go 語言則是本身就具備了 伺服器軟體 + 程式語言 的能力,因此網站的後端也可以簡化為 程式語言 + 資料庫。




初學 Web 開發,HTML 與 CSS 絕對是最基本的,無論是前端語言還是後端語言,最終都是借由操作這兩個語法,來控制瀏覽器顯示畫面。

接下來,在認真決定邁向前端還是後端之前,學習 Javascript 都是有幫助的,它是目前前端唯一的程式語言,無論如何都會需要用上它。當然也可以先學完後端語言再來學 Javascript,因為它的語法相較之下較為簡單,有程式語言基礎的人能夠更容易掌握,沒有程式基礎的人也能夠當做第一個語言來入門。

另外,如果選擇的後端語言是 Node.js,則兩者幾乎是一樣的東西,可以一道程式碼前後端皆通用。

雖然前端只有 Javascript 一個語言可以用,但其所衍生出來的框架與技術則是琳琅滿目。比較推薦前端初學者先從 jQuery 這個 DOM 操作框架開始學起,可以輕鬆接軌世界半數以上的前端函式庫,也不怕找不到工作。(雖然很多人根本就只學 jQuery 而從來沒有認真學過 Javascript,但也還是可以正常地開發網站)

若比喻 HTML 為網頁的骨幹,CSS 就是網頁的外觀,而 JavaScript 則提供了網頁用戶端的程式設計,三者結合可以設計出多采多姿的網頁。


維基百科:
https://en.wikipedia.org/wiki/HTML
https://en.wikipedia.org/wiki/Cascading_Style_Sheets
https://en.wikipedia.org/wiki/JavaScript


線上教學:
http://www.runoob.com/html/html-tutorial.html
http://www.runoob.com/css/css-tutorial.html
http://www.kaiching.org/2012/10/html-css-tutorial.html
http://21st.each1.net/2017/04/javascript.html


web 開發工具和資源:https://kknews.cc/tech/35e3y.html



安全性議題:

● 驗證表單的輸入
● 跨站腳本攻擊(Cross Site Scripting, 安全專家們通常將其縮寫成 XSS)
● 多次遞交表單
● 上傳惡意檔案
● 分散式阻斷服務攻擊(DDoS)
● session 劫持
● CSRF 攻擊
● 輸入過濾
● SQL 注入攻擊(SQL Injection)
● 用戶密碼的儲存方式
● 加密與解密

https://astaxie.gitbooks.io/build-web-application-with-golang/content/zh/09.0.html


怎麼防止 SQL 注入攻擊(SQL Injection):http://21st.each1.net/2017/03/php.html


程式語言編年史

程式語言編年史原文 下面這張圖片描繪了整個程式語言的歷史。包括各種程式語言的發明人、程式語言的特點和適用領域、被什麼網站或公司使用等 (檢視 完整高清圖 )。 之所以會有那麼多不同的程式語言是因為設計程式語言的初衷不同、對語言學習曲線的追求不同、不同程式之間的執行成本差異...