2022年2月20日

三分鐘了解 docker run 跟 docker exec 的差別

docker run 跟 docker exec 經常讓 docker 的初學者感到困惑,因為用起來感覺都很像,不知道什麼時候該用哪一個,也不知道兩者有什麼差別。

如果簡單來說的話,其實兩個最大的差別是,一個啟動新的容器,一個使用正在運行中的容器

來比較官方文件上對於兩者的說明:

docker run : Run a command in a new container

$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

docker exec : Run a command in a running container

$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

可以看到 run 使用的參數是 image name ,而 execcontainer name

2022年2月15日

台北租屋看房注意事項,9 個篩選條件讓你避開爛房間。北漂十年的心得整理

由於念書、工作的關係,我已經在台北租屋超過十年了。在這十年間,租過不少房間、看過不少房源,也踩過不少雷,因此自己大概也整理出了一些篩選物件的條件。

其實真正要挑到好的房子有非常多要注意的地方,但是受限於預算或交通距離的考量,不太可能什麼都要求到位,只能考量自己的需求與現實來做取捨

那麼以下是我根據個人的生活習慣以及主觀意見所整理的一些租屋條件,分享給大家參考看看~

初步篩選

首先是初步的篩選,初步篩選我會根據地點預算,還有物件類型

2022年1月11日

JWT 是什麼?跟 Cookie 差別在哪裡?兩個常用使用者驗證機制的比較

JWT 概念介紹

JWT 是一種 Token,它的全名是 JSON Web Token。它由伺服器端產生後,交付給客戶端使用,Token 中會夾帶取多資訊,包含用戶的驗證資料或其他。

JWT 的表現形式是一個純粹的字串,這個字串有三個部分,分別為 Header、Payload、Signature,這三個部分會串接起來,用 . 來分隔,形成這樣的格式:Header}.{Payload}.{Signature},實際範例如下:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.B3GHLnjMFsZJc3K97UIWN68E8WovKxO0Qp6Ye4sVLzo

2022年1月8日

三個點是什麼?介紹 PHP Splat Operator,直接拆開 array 並讓 function 傳入不固定數量的參數

PHP 有提供一個由三個點連在一起的語法 ... ,官方稱呼它為 ... operator 三點運算子. 或稱 Splat Operator。是 PHP 5.6 版後提供的新功能,它有兩種用法:

  1. 提供參數數量可以變化的函式,也就是可以傳入的參數數量不是固定的
  2. 陣列分拆 (unpack)
本篇是 PHP 系列,更多 PHP 相關文章請參考 → PHP 系列

2022年1月6日

資工、資管差在哪?資管就是資工加管理嗎?資工數學要很好嗎?

資工跟資管系是很常被拿來比較的科系,我也很常被問這樣的問題。

其實這個問題很難三言兩語就答完整,大部分時候我可能會隨便敷衍一下,「資管就是資工加管理啊」、「沒那麼資也沒那麼管」,打發掉一些只是湊熱鬧的人。

但是如果用這樣的方式回答正在選科系的人,或正在懷疑自己在幹嘛的人,可能就有點太不負責任了。

於是我興起了寫一篇文章來稍微認真一點回答這個問題的念頭,主要的對象應該是高三跟大一﹑大二的學生吧。

不過預防針先打在前面,這篇文章是根據我個人的經驗,每間學校的資工系跟資管系還是有一點差異,建議選填志願之前,還是以各校的課程規劃為主XD

2022年1月2日

寫給 PHP 新手的物件導向教學(四):this,self 與 static

上一回《寫給 PHP 新手的物件導向教學(三):封裝,可見度與繼承》

在前面幾篇文章中,有稍微帶過 $this 的用法,因為只是簡單帶過,所以沒有詳細說明,因此在這一回,我們會討論更多關於 $this 的部分,另外本回也會討論另一個容易跟 $this 混淆的 selfstatic 的用法。

$this

$this 是 PHP 預先定義好的變數,在物件內部被用來表示自身。

2022年1月1日

2021 年終回顧與工作雜感

轉換跑道的一年

今年是個適合轉換跑道的年份,除了自己,身邊也有許多人在 2021 年換了工作。也許是疫情的關係,沒有地方可以去,多了很多在家裡靜下心來思考的時間。

以前人常常說,不要一直換工作,對履歷不好看。這是有道理的,面試官可能會覺得這個人抗壓性不高,穩定性不足,況且只待短短的時間,很難做出一些成效。所以大家都會希望一間公司至少待個一年,比較好尋覓下一份工作。

但如果不幸進到一間公司,工作內容與自己想要追求的職涯差異過大,還要死命撐下去嗎?我個人認為,若是經濟狀況尚可,還是及早認賠殺出吧。

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日

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

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

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

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

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