MySQL 5.7 – InnoDB 文件的讀後筆記

Best Practices for InnoDB Tables

  • 用最常查詢的欄位當 primary key,沒有的話用 auto increment numbers
  • 設定 Foreign key 會讓該欄位被 indexed,因此加快 join 效能。並且能傳播 updates 跟 deletes 到相關 table
  • 關掉 autocommit,不然一次寫入就是一次交易,一秒可能幾百筆交易,效能會打折(受限於硬碟的寫入速度)
  • 適當的使用 START TRANSACTIONCOMMIT 把 SQL 包起來執行,不要太小包,也不要大包到要跑好幾個小時
  • 不要用 LOCK TABLES 敘述
  • 可以考慮 page compression 功能對你的 access pattern 有沒有(效能上的?)幫助
  • 啟動時加上 --sql_mode=NO_ENGINE_SUBSTITUTION 參數
Read More »

《圖解 TCP/IP 網路通訊協定》筆記

最近買了 圖解 TCP/IP 網路通訊協定 (涵蓋IPv6) 來重新學習網路的相關知識,這本書真的不錯。雖然這本書是用由下至上(Bottom-up)的方式介紹網路,但讀完之後個人認為這樣的安排也很不錯。

看完之後我認為這本書是很營養的,因為除了網路的基本知識,它也介紹了與網路安全有關的機制。

Read More »

工作五年學到的事

前公司附近咖啡店裡面的一幅圖畫

這五年間我努力讓自己做事更順暢、更完善,為此需要努力從每一次的專案汲取經驗。
這篇文章算是為自己這五年的職涯作一些心得分享,有興趣的話可以點進來看看。
但如果是有心想要成就自己的人,還是買本 The Pragmatic Programmer 來看吧 XD

因為我偶爾會突然想到很重要的一些心得,所以會時不時加入新東西到這篇文章

Read More »

Linux 玩遊戲

感謝 Valve 社的 Proton 計畫,現在想在 Linux 玩遊戲的阻礙會變少
因為可以事先到 ProtonDB 查詢自己喜歡玩的遊戲是否能在 Linux 順暢執行

在 ProtonDB 裡面會看到其實不少遊戲是原生遊戲
再來不少遊戲是白金級金級
但即使是這些級別可能還是會有問題,比如 XCOM2

粗略的瀏覽過,會發現加上反作弊程式的遊戲不能玩的比例比較高

Read More »

Lambda Timeout 可能肇因於 RDS Proxy Session Pinning

事情是這樣的:

前陣子工作上開發的 API 上線後,在當天的數千次 request 中,發生 5 次不明原因的錯誤(從 CloudWatch Dashboard 看到 API Gateway 的 5XX Error 出現大於零的數字)。

後來為了重現錯誤,用 K6 做了 soak test。在 30 分鐘內也的確出現數次錯誤。
不過 API Gateway 在 response payload 之中只給出「Internal Server Error」的訊息,為了進一步了解錯誤的原因,要參考 $context Variables for access logging only 章節在 Access Log 之中加入額外的資訊。比如說:

  • $context.authorize.error
  • $context.authorizer.error
  • $context.authenticate.error
  • $context.integration.error
  • $context.waf.error
Read More »

MySQL「ci」字集做字串比對會無視大小寫

在我踩到坑、並找到解法之後,才發現這個很基礎
但踩到了就踩到了,還是紀錄一下🙈

根據 khiav223577 大大的「MySQL 編碼挑選與差異比較」分享,
一般常使用的「ci」字集,其意思是 case-insensitive,也就是大小寫不敏感。
這種設定相當適合用在文章網站、新聞網站的搜尋功能,因為無論使用者輸入大寫的「APPLE」或小寫的「apple」,都能找到所有帶有「Apple」關鍵字的資料。
但當你需要做如 ID 比對、token 比對、短網址代碼比對,可能都需要改成 case-sensitive 字集,
或者在 WHERE 條件中使用 binary 達成目的。

Read More »

Ubuntu 22.04 應避免使用 ibus 輸入中文

我的新電腦用 Ubuntu 22.04,使用 ibus + 新酷音會造成很多困擾:

  • 在 Firefox 的 Facebook messenger (web) 輸入中文,用 Enter 完成輸入時整句消失
  • 在 Firefox 的 Todoist 建立新工作時輸入中文,會造成 Todoist 程式崩潰
  • 在 PhpStorm 輸入中文時,突然無法輸入中文(但仍顯示是中文輸入模式),需要去其他視窗嘗試輸入中文,切回 PhpStorm 才能繼續使用

後來照著「Ubuntu繁體中文輸入法?改用Fcitx5來輸入中文吧!」切換成 fcitx5 + 新酷音,目前使用起來很順利