https://avatars.githubusercontent.com/u/6058558

程式狂想筆記

有關程式 N+1 問題

最近在做複雜的 API
由於 PM 覺得某一個 JSON 屬性調整
結果需要改好幾隻程式 API
不過有查到可以使用GraphQL | 一种为你的 API 而生的查询语言
但這篇不是重點在 GraphQL
而是我探索某一篇 阻碍你使用 GraphQL 的十个问题 | 咀嚼之味

它就像是一顆無限向下延伸的樹。所以在我看來,GraphQL 更應該叫 TreeQL,當然在圖論裡,Tree 就是 Graph 也沒毛病啦。需要注意的是,這也會引出 「N + 1 problem」 的話題——naive 的 GraphQL 服務端實現會讓這段 query 變得異常慢!

看了一下內容,N+1 問題就有像一個查詢每一行執行 SQL
如下

1
2
3
4
5
SELECT * FROM `song` LIMIT 0, 20;
SELECT * FROM `singer` WHERE `id` = 1;
SELECT * FROM `singer` WHERE `id` = 2;
SELECT * FROM `singer` WHERE `id` = 3;
...

奇怪,這個怎麼讓我想到 ORM 也是這樣
所以我查了一下 ORM 真的也有這個問題
由於最近也想開使用 ORM ,所以進入前想了解之後使用上會遇到什麼問題
這邊只會先整理

SQL union 排序的問題

union 要做排序要放在最下面 select seq from ooo union select null as seq from xxx seq 全部都會變成 null 最近太忙了 先記錄到這邊 有空在研究 UNION 中 ORDER By 的使用 - 不要依赖这里 因为你有大脑 - ITeye 博客

Android在Chrome做Debug封包方法

之前只會用 Fiddler 做 Android Debug 工具
但當沒有同網段網域的時候,就不會很方便處理問題
前陣子有人推薦用 Android Studio 工具
裡面的 Network 可以看Inspect network traffic with Network Profiler | Android Developers
但感覺…殺雞焉用牛刀
最近聽到 Chrome 插 USB 也能用 Debug!!!

設定crontab排程時區小記

最近因為要設定 crontab 時區
但主機時區不是台灣時間
但程式是台灣時間
但這時候控制排程可能就會有時間差的問題

Git刪除Rmote Branch方法

之前就有類似寫過刪除 remote 分支方法
但今天想開出來紀錄
有時候刪除 remote 分支
但是我發現我本機上面可以看到刪除的分支(git branch -a)
要怎麼解決呢?