如何從零開始寫一個網站
作為一個程式設計師,如果沒有寫過一個自己的網站,總覺這個職業生涯是殘缺不全的。話說哪些做基礎研究如演算法或OS的大佬,儘可以鄙夷這樣的思維,但如你我般普通非大神類程式猿,卻沒有深度,也應該有點廣度。
回想第一個“網站”是我用VimWIKI生成的HTML,通過
file:///D:/vimwiki/html/links.html
來訪問(到如今它依然管用!)。接著嘗試了WAMP(把LAMP中的L改成W,即Linux變Windows),不錯,依然可行,通過
localhost://127.0.0.1
可以訪問了。但我仍舊喜歡file協議。接下來租了一個國內VPS,便宜但不夠穩定。但個人網站就不計較了。不過同步的方法很傻,通過FileZilla檔案傳輸過去。後來用SVN進行版本控制,感覺沒那麼山寨了。
這個階段的工作很簡單,學習VimWIKI的語法,寫文件,生成HTML。整個網站也異常簡單,申請一個域名,租用一個便宜的Linux VPS,安裝一個Apache,用SVN控制版本與釋出。那時對HTML都很陌生,更無論JavaScript、CSS之流。動態頁面的概念,還很遙遠。
過了不久,因為工作的需求,要自己寫一個真正的網站了,那才第一次與LAMP親密接觸。應對一個陌生領域,我的基本對策就是買一打五星級的書。我最偏愛的圖書就是以 XXX Programming Language 命名的圖書,霸氣且經久耐用(好比 C Programming Language、C++ Programming Language 吧)。按這個原則,買了幾本PHP、JavaScript、CSS、Mysql的書。HTML好書真的難找,我買的是圖靈出版的《精通CSS與HTML設計模式》(選書的另一個原則就是看出版社)。不過要說這段時間的最強偏愛,還是圖靈的另一本:《SQL反模式》(如果你偏愛 Effective C++或 Effective TCP/IP Programming,那這本書也不容錯過了)。我沒有在用什麼語言寫網站上花費什麼時間,Java、PHP、以及MS的語言、環境對我而言同樣陌生;Python雖然略會一點,但我仍隨大流,以及參考以前同事的擅長。
這次租了Linode的VPS,穩定性絕佳。傳送郵件的任務,起初用sendmail,很快切換到網易的免費企業郵箱,過了數月,發現很快超過網易郵箱限額,於是又切換到Google APP的免費郵箱服務。網站方面,用PHP交纏HTML,總覺得很醜陋,於是用了Smarty模版,把邏輯與展現分離;雖然沒碰到效能方面的問題(嗯,訪問量還太小),但等到在Smarty中也要用變數、迴圈等方式時,還是頗有些後悔。想想還是對PHP的使用不夠熟練使然。至於那些XXX框架,每當我想要嘗試時,就想起Randy Pausch《最後一課》中講的:
基本功,基本功,還是基本功。基本功不好,上層花哨的東西你就玩不轉。
從零開始,你才知道你真正需要的是什麼;啟用已有的成熟方案,已是後一步的事。四處打聽什麼好、什麼強,真是很傻很天真;好比小馬過河的教訓,自己做了才知道。
後來瞭解了Bootstrap,運用後,又再次較大規模的改進了網站(前一次是用Smarty時)。嗯,現在問題的關鍵,又演變為怎麼拆分、組織資料,這才是根本之道。近日買了《淘寶技術這十年》,說到底,依然是資料拆分、組織的問題。什麼語言、框架、協議,最後都要讓位於最基本的業務邏輯。
又後來,Linode北美伺服器大規模不能訪問,甚至從北美Linode訪問國內也有問題。只好租了另一個Linode日本VPS作為跳轉。某些函式呼叫改為HTTP遠端呼叫;用Git替換了SVN;SSH每次要通過日本中轉。等等。
現在網站很少有獨立存在者,與其他大網站的API互動也是勢在必行。要學習的東西也很多。就如古話說的,你瞭解的東西越多,不瞭解的東西就越多。像王興說每年畢業季總推薦胡適伯伯的《贈與今年的大學畢業生》,保持自己的興趣、好奇心才更為重要 ;)
相關文章
- 從零開始寫一個網頁網頁
- 從零開始開發一個大型網站網站
- 從零開始 如何打造一個誘人的電商網站網站
- 從零開始用 Flask 搭建一個網站(一)Flask網站
- 從零開始寫一個ExporterExport
- 從零開始仿寫一個抖音App——開始APP
- 從零開始寫一個node爬蟲(一)爬蟲
- 從零開始,如何用puppeteer寫一個爬蟲指令碼爬蟲指令碼
- 從零開始編寫一個babel外掛Babel
- 從零開始寫一個Javascript解析器JavaScript
- 從零開始:用REACT寫一個格鬥遊戲(一)React遊戲
- 從零開始寫JavaScript框架(一)JavaScript框架
- 如何從零開始學習一個框架框架
- 從零開始仿寫一個B站客戶端之抓包介面客戶端
- 從零開始:用REACT寫一個格鬥遊戲(二)React遊戲
- 從零開始寫一個微前端框架-沙箱篇前端框架
- 從零開始手寫一個微前端框架-渲染篇前端框架
- 從零開始開發一個 WebpackWeb
- 如何從零開始寫一個即時通訊軟體(附原始碼)原始碼
- 從零開始搭建屬於自己的網站網站
- 【從零開始擼一個App】PKCEAPP
- 從零開始編寫自己的JavaScript框架(一)JavaScript框架
- 從零開始寫JavaScript框架(二)JavaScript框架
- [AST實戰]從零開始寫一個wepy轉VUE的工具ASTVue
- 從零開始寫一個微前端框架-樣式隔離篇前端框架
- 從零開始寫一個微前端框架-資料通訊篇前端框架
- 從零開始編寫一個 Python 非同步 ASGI WEB 框架Python非同步Web框架
- 從零開始用golang編寫一個分散式測試工具Golang分散式
- 從零開始實現一個RPC框架(零)RPC框架
- 從零開始做一個SLG遊戲(一):六邊形網格遊戲
- 從零開始搭建一個 hexo 部落格。Hexo
- 【從零開始擼一個App】KotlinAPPKotlin
- 從零開始搭建一個vue專案Vue
- 從零開始搭建一個mock服務Mock
- 一起學習造輪子(二):從零開始寫一個ReduxRedux
- 從零開始寫一個node爬蟲(上)—— 資料採集篇爬蟲
- 用 Golang 寫一個搜尋引擎 (0x00)--- 從零開始Golang
- 【從零開始寫一個簡單的ImageLoader框架】ImageLoader分析框架