2021年12月18日

PHP 執行效能測試,比較 PHP 8.1、8.0、7.4 實測結果,Laravel 8 速度提升了 15%

2021 年 11 月底, PHP 8.1 釋出了。每次釋出新版本時,官方總是不外乎地會宣稱新版本的執行速度提升了。可是到底是不是真的有提升?就算有提升,是提升多少呢?實際上有感嗎?可能要實測才知道。

於是我這次就想要來親身體驗看看,實際測試看一下效能提升了多少。

本次會利用 Laravel 8.x 範例應用來做測試,測試的工具為 ApacheBench。

2021年12月17日

PHP 8.1 來了,新功能與特性快速介紹

在 PHP 8.0 發佈一年後,PHP 8.1 在今年 2021 年 11 月 25 日也發佈了。

去年我曾寫了一篇文章,介紹 PHP 8.0,而過去這一整年,我在開發上也實際使用了不少 PHP 8.0 的新功能,例如 Nullsafe operatormatchConstructor property promotion 。

這些改進跟新功能,替開發帶來不少方便跟效率。我相信這次的 8.1 版本,PHP 團隊也會帶來不少令人驚豔的地方吧!

本篇一樣會介紹一些我感興趣的新功能,搭配一些簡單的試玩。大家可以參考看看。

2021年12月16日

Docker image 版本差在哪?alpine, buster, bullseye 怎麼選?

大家一開始在學習使用 Docker 時,會學著撰寫 Dockerfile,也會從 DockerHub 上挑選適合的 Image。

但不知道大家有沒有發現,有時候明明都是同一個東西,卻有很多種不同的選擇?比如說,我自己最近常用 PostgreSQL postgres,一樣都是 14 版,卻有 postgres:14postgres:14-bullseyepostgres:14-alpine 等,各種不一樣標籤的 Image 。

這些不一樣的 Image 對初學者來說蠻令人困惑的,會不曉得有什麼差別,也不知道該選哪一個。但理解後發現其實沒有那麼複雜,簡單來說,後面那些字,指的是背後的作業系統。

2021年12月11日

軟體專案開發時程與品質的拉扯:工程師觀點

跳槽到新創團隊一陣子後,隨著一開始的新鮮感跟熱情逐漸散去,疲乏感就漸漸回來了。

相較於原公司的官僚,這次的疲乏感來源在於,團隊在乎的是開發時間要短、速度要快,而不看重細節與品質。

雖然可以理解新創團隊有其壓力,需要趕快滿足客戶的需求,需要趕快找到適合的商業模型,需要趕快建立起自己的品牌等。但作為一個工程師,心裡總是希望可以做出更好的成果的。

不過說起來,不管在什麼規模的公司,好像或多或少會遇到類似的問題,畢竟「時間」跟「品質」對專案管理來說,本來就是一件非常對立跟糾結的事情,很難做到大家都滿意。

2021年12月5日

PHP 魔術方法|三分鐘看懂 __invoke 用法

本篇為 PHP 系列

__invoke() 是 PHP 眾多魔術方法中的一個,可以用來讓你將物件作為 function 使用,詳細說明可參考官方說明文件

問題是,把物件當作 function 使用是什麼意思呢?其實就是在物件後面直接加(),如果還是不清楚,我們接著看以下的範例就知道囉。

2021年12月1日

PHP 7.4 新功能! PHP 也有好用的箭頭函式 Arrow Function 了

本篇為PHP系列

在 JavaScript 中有個好用的箭頭函式,用起來很簡短,但對於不懂的人來說,會覺得有點魔幻,覺得很神奇卻又不是那麼好理解,因此常常被前端工程師拿來炫技,那什麼是箭頭函式呢?

我們來看下面的 JavaScript 範例,我們有一個 array,想要把其中的每個值都變成兩倍,那可以使用 map 搭配匿名函式來這樣做:

let numbers = [1, 2, 3, 4];
let doubleNumbers = numbers.map(function(number) {
  return number * 2;
});

這樣我們的 doubleNumbers 就會是 [2, 4, 6, 8]

而上面這個範例,若改成使用箭頭函式的話,就會像這樣,變得比較簡潔:

let numbers = [1, 2, 3, 4];
let doubleNumbers = numbers.map((number) => number * 2);

這樣簡潔的特性,是箭頭函式深受喜好的原因之一,而這樣的箭頭函式在 PHP 也可以使用了。