作者GALINE (天真可愛CQD)
看板PHP
標題Re: [請益] Web相關技能路線規劃
時間Sat Nov 30 18:54:12 2019
※ 引述《aa2468291 (penguin309)》之銘言:
> 想請益是否把前端技能補起來比較好
如果你只是在想學些什麼比較有價值,那麼你花時間認真學些什麼都是好的
「什麼都知道一些(超過初學者)」有時比單一技能更有價值
不過不管前端後端認真挖的話水都很深...
除了認識基礎的 html 標籤以外,大概要知道一下 DOM,CSS 的 box model,以及query selector
然後開瀏覽器的 devtool 看別人的網站怎麼設 css 的,看到看不懂的屬性就丟關鍵字搜尋
Javascript 那邊稍微麻煩一點,上面的東西要先有些些認識
可以開始想像「那如果我動態改變這個屬性大概會發生什麼」之後再來學會有效率一點
更認真一點可以去翻一下瀏覽器本身的工作流程,有個模模糊糊的概念就好
ex:
https://cythilya.github.io/2018/11/10/inside-look-at-modern-web-browser/
MDN 是不錯的文件參考,也有一些教學。不過不是每份文件都有中文
https://developer.mozilla.org/zh-TW/docs/Learn
> 老師說沒有測試的ci/cd沒甚麼意義
> 是不是這段時間我可以去了解一下php的測試
自動測試串接 CI 的概念其實很簡單
- 寫另外一支程式去檢查真正要用的程式跑出來的結果對不對
- 如果有錯誤,回傳一個不為 0 的 status code
- CI 看到不為 0 的 status code,會認定 Job 失敗
(至少我用過的 CI 都是這樣判斷的...)
舉個例子
假設我做一個...紫微斗數算命系統,裡面有個 class 負責做陽曆跟農曆轉換
那簡單的測試 script 可以長這樣
-------------------------------------
<?php
require __DIR__ . '/vendor/autoload.php';
$times = [
'1711-09-25 00:00:00' => '辛卯年八月十三子時',
'1900-01-31 02:00:00' => '庚子年正月初一丑時',
'1982-05-18 08:02:00' => '壬戌年四月二十五辰時',
];
$ctime = new ChineseTime();
$hasError = false;
foreach ($times as $input => $expectedOutput) {
$acutalOutput = $ctime->convert($input);
if ($acutalOutput !== $expectedOutput) {
echo "{$input} 的結果不是 {$expectedOutput} 而是 {$acutalOutput}\n";
$hasError = true;
}
}
printf("測試結果:%s\n", $hasError ? "失敗" : "成功");
exit($hasError ? -1 : 0);
-------------------------------------
只要 $times 裡面有夠多的資料點
那你跑這隻 test.php 大概就可以知道農曆轉換的的 code 有沒有改爛
接下來只要設定 CI job 裡面會執行 php test.php
看 CI job 的輸出訊息就知道有沒有把 code 改爛了
可喜可賀......
......不過實務上很少看到「自己寫一個 test.php」這麼土炮的搞法
通常會用人家寫好的測試框架
phpunit 這套測試框架算是業界標準,上網搜尋教學文章吧
然後也可以看看 laravel 自己的測試怎麼寫的(當然是用 phpunit)
我認為寫測試通常是難在
- 用到外部資料(Ex: 資料庫)的東西怎麼測
- 哪些東西必測哪些沒有也不那麼要緊
前者的解法通常是把跟外界互動的東西單獨抽出來寫成一個 class
然後測試的時候塞一個行為一樣的假 class (phpunit 的 test double)
有時候則是準備一整套假的外部服務
例如測試時讓 laravel 不連 mysql 而是連 in memory 的 sqlite
然後在裡面建整份測試用的資料表
後者...就是經驗跟哲學了,多踩一點雷(或多寫一些其實沒用的測試)就會有感覺
--
莉娜用魔法爆破進入屋內。
劫犯從另一個房間裡出現,大叫道︰「妳是誰!」
莉娜︰「我是個可疑的女人!」
劫犯無言以對。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.139.152.108 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1575111257.A.50F.html
1F:推 aa2468291: 感謝,我會參考看看 12/03 17:07
2F:推 onegoman: 推。 01/01 20:37