整理之前的學習日誌和任務檔案。
導師傳來訊息"你先照 doc 上幫我 git clone 專案網址 (公司內部工具) 然後安裝 sql 在 ./sql/ 資料夾內"。我去檢查 doc (就是工程師實習生任務清單),看到導師寫的說明,逐步執行。
開啟命令提示字元,輸入指令 cd xampp/htdocs/
,再輸入 git clone 專案網址
。
開啟 phpmyadmin 後台,先新增資料庫再匯入 sql 檔案。
卡在"請稍候"畫面,傳訊息問導師,他回覆"有看chrome console 的錯誤訊息嗎",我開啟 Chrome Devtools,在 Element 分頁中看到 html 結構當中有錯誤訊息,寫說少了一個資料庫。詢問導師後確定需要再匯入一個資料庫。
匯入完成後開啟本機專案首頁,出現登入畫面,按下登入按鈕後出現 Facebook 登入視窗,寫說已封鎖不安全的登入嘗試。把網址改成 https://localhost/公司專案
,出現此網站不安全的警告,按進階按鈕、再按仍要瀏覽,再把自己的 FB 登入 ID 加到專案內的例外白名單,成功登入。
任務目標是排序數個粉絲專頁的總回應率,在網頁中列出一句話:
分析之粉絲團以 A 粉絲團回應率最高,為幾 %,其次分別為 B 粉絲團、C 粉絲團,詳細報告表如下。
努力回想以前學過的 PHP 和 SQL,試看看能不能完成這個任務。先列出子任務:
網站中有一個功能是用爬蟲拿到 Facebook 粉絲專頁的資料,儲存在 JSON 檔案中。JSON 檔案有縮小過 (minified / uglified),就是去除所有換行和縮排,可以用 JSON Formatter & Validator 或是 VSCode 延伸模組觀看設定格式過 (formatted / beautified) 的資料。
光研究資料結構就花了一些時間。目前看起來是把 JSON 檔案中的資料轉換成 PHP 當中的二維陣列,第一層是粉絲專頁,第二層是粉絲專頁的貼文,並排序。發現粉絲專頁已照總回應率排序,並且有一個陣列只儲存所有粉絲專頁的名稱,可以利用。
想起大三實習的時候,我自己畫實體關係模型圖、自己開資料表,寫 PHP 和 SQL 的時候變數名稱都會背了。
導師說要請我喝飲料,拿手機來給我看菜單,我在紅茶和鮮奶茶之間猶豫該選哪個,導師幫忙選了鮮奶茶。
參考資料:PHP: array_slice - Manual、PHP: implode - Manual
午餐前完成任務。
餐廳:均勻食堂
我點了番茄雞肉義麵 $120,雞肉用完了換成豬肉。內容物有番茄醬料、豬肉、中式料理的白細麵、白菜、高麗菜、黑木耳、杏鮑菇、毛豆仁、半顆水煮蛋。
收到飲料了,TEA TOP 台北松山店 熟成鮮奶茶 $70 無糖去冰。
拿寫好的 PHP 程式碼和網頁執行結果給導師看,導師說程式碼看起來沒問題,並且說原本以為這個網頁的資料處理是用 JS,想讓我練習 JS 才讓我來寫功能,看了才知道是用 PHP。
導師說這個網站是很久以前寫的,後端和前端混在一起,就是所謂"義大利麵的程式碼"。
導師讓我去試試看利用專案中一個不再使用的 PHP 檔案,把這一段程式碼改成前後端分離,並介紹他自己的具體做法:
並提供參考資料:API 是什麼? RESTful API 又是什麼?
打開文章才發現,我早就看過這篇文章並儲存到瀏覽器的書籤當中了,不過之前都一知半解,今天聽過導師的說明,有比較能夠理解 API 的運作方式了。
翻出大三實習的時候做的論壇網站。收藏文章和追蹤使用者的功能,前端是用 AJAX、後端是用 PHP,兩邊都是我一邊看書一邊寫出來的。還看到當年自己努力拆解網站結構,分割各區塊到獨立檔案中再引入,對我自己來說直到現在還是有參考價值。再看到手邊來自公司的專案真的是全部混在一起,感覺到前後端分離真的非常重要。
把剛才打開的文章從頭到尾看完,大部分都理解了。整理文章內容、自己實作、撰寫筆記。
要學的東西好多。決定先製作一個最小的 RESTful API 網站,再去改公司的專案。