/usr/local/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/bin/ld: contacts-mailplus-server: hidden symbol `__gcov_init’ in /usr/
local/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libgcov.a(_gcov.o) is referenced by DSO
/usr/local/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/bin/ld: final link failed: Bad value

編譯時遇到這個問題,花了好長一段時間分析之後發現是 library 沒有 link 到 -lgcov 的問題,但不是很直覺。

我的 library 如下:

A.so <- B.so <- binary

其中 A.so 編譯的時候有下 --coverage 但 linking 的時候沒有下,編譯的時候下會導致 gcc gen 出一些 code,需要在 link time 得時候 link 起來,但 linking 沒下就導致那個 .so 存在一些 undefined symbol (__gcov_init),然而 __gcov_init 這隻 symbol 被宣告成 hidden 因此不能借用其他 so 的 symbol,就導致了這個狀況。

解法就是 A.so 在 linking 的時候也要下 --coverage


redis 是個非常好用的工具,網路上有太多文章在介紹如何安裝、使用、以及有什麼功能,在此不贅述。我就 focus 在敝公司我的使用情境上遇到一些我們之前沒意識到的問題。

我們拿來幹麻

某個古老的產品一直以來 daemon 和 deamon 之間溝通的方式就是透過 domain socket 直接對對方下指令,因為功能日漸龐大的關係,有很多細節問題並不想在一開始處理 (ex. delay 送 job、retry 機制、對面的 daemon 因為某些原因掛掉,sender 就會卡住等等)

我們決定改成使用 Message Queue 類似的機制,先是 survey 了幾套現成的 Job Queue,kafka、RabbitMQ、甚至不太像 job queue 的 zeroMQ 等,但不是啟動太 heavy 就是記憶 …


最近遇到一個神秘的問題,症狀是我的 Query 看起來非常正常,但就是會少 Query 出一些東西。

Query 大概長這樣:

SELECT * FROM some_table         --- A
WHERE some_column IN ((
SELECT * FROM another_table --- B
));

因為 B Query 在我的 case 裡面相當複雜(有用到 WITH RECURSIVE 的巢狀 Query),因此我直覺一直認為 B Query 出了問題,但丟進去 Query 都沒任何異狀,結果相當正常,但 A Query 的結果一直都不太對勁。

找了一段時間之後才發現問題在 IN 後面的兩層括號 (( SubQuery ))

原來 IN 後面的語法本來就可接多個 e …


從昨天開始,我不管搜尋什麼,在點開搜尋結果的時候都會出現 “無法連線”,像是這樣:

但除了詳細資料無法正常顯示出來之外,其他的功能全部都正常,包含:

  • 路況顯示
  • 導航
  • 搜尋

因此很難想像真的是它上面的 tooltip:連線問題。

排除連線問題之後,我還嘗試了以下方式修復:

  • 重設 google map
  • 解安裝 google map 更新並重新安裝
  • 升級 Samsung Galaxy S9+ 至最新板
  • 根據這篇文章重新設定過日期時間(follow ntp)
  • 試過用安全模式進入 Map

全部無效。

這表示已排除以下原因造成的錯誤:

  • 網路錯誤(其他服務完全沒問題)
  • 應用程式錯誤(各種應用程式錯誤的方式已經測試過,且和朋友對過版本號)
  • S9 錯誤 / 系統造成的錯誤 (網路上有看到另外一個人有一樣問題也是最近才發生,他是 OPPO 機器)
  • 日期與時間造成的問題(maybe API 加密的方法有用到時間? not sure)
  • 該功能壞掉(其他人都正常)

而在這其中最奇怪的點就是「只有顯示商家詳細資訊這個部份出錯,其他都是正常的」這個部份了。

這表示這塊功能區之中只有我會壞,也許是 API 拉資料拉不回來,但只有我拉不回來。

於是我就試了換一個帳號登入,結果就成功了!!!

結果就成功了!!!

結果就成功了!!!

因為很激動所以說了三次。

而這大概表示,google map 用了我個人相關的資訊 build 出商家資訊的 api,但我的相關資訊有東西壞掉了 (database 壞了?我的 record 沒更新到?有 corrupt data 沒有被處理好?升級時漏掉我了?有各種可能)

看了一下 Google Map 可能怎樣用我的資料之後,我把這個選項勾掉:


最近遇到一個工作上的問題,就是客戶在我們的 daemon 不正常關閉 (類似 kill -9) 之後重開,sqlite 常常會出現問題。

由於前人做了不良的示範:Log 印不夠多,因此我們初步只知道以下狀況

  1. 通常中獎的機器先前都發生過不正常斷電
  2. 接著就無法啟動,顯示 sqlite database 錯誤(這裡 log 印不夠不知道是甚麼錯誤)
  3. 我們進去手動使用 sqlite 指令開起來下個 PRAGMA integrity_check; 然後就好了

傑克這實在太神奇了,到底為甚麼下個 check 就會好,這個 database 是發生了甚麼事情?

考慮過以下狀況:

  • database 如果檔案真的爛掉,那麼 integrity check 只會檢查出錯誤而已 -> 應該不是
  • 相關的 lock 被卡住 -> 還是無法 …


最近 Twitch 只要撥放 VOD 就會開始轉轉轉,實在是非常困擾。

要解決轉轉轉問題,首先就是要先分析到底在轉幾點的,照慣例打開 F12,經過簡單的分析發現 Twitch 的 VOD 是放在 akamai 的 CDN 上,並且速度非常不穩定。

速度時快時慢,有時候速度只有 257KB/s


上周六下午看著看著 Overwatch League 突然發現最近很熱門的話題 (XQC 被 ban) 造成被瘋狂的洗版,像是這樣:

… 真的是不太能用。

有沒有 Tool 可以 filter 掉這些 SPAM 呢?

google 了 “twitch filter” “twitch spam” “twitch chat filter” 之類的關鍵字都沒有找到任何的相關 tool 可以做這件事情,那只好自己開發一個了

(結果整個寫完了才發現有一個叫做 BetterTTV 的東西可以做到這件事情,有感 googl e 實力退步了)

Step 1.先想好 User Stories

  • 可以在聊天室開始洗的時候就可以直接 filter,不需要進入設定才做,那樣很慢
  • 可以快速 filter,不要有繁瑣的步驟
  • 可以 filter keyword,只要 substring 符合就直接 filter,才不用一個一個 …


logdown 未來聽說不會維護 && 討厭 logdown 作者的關係搬到 Medium

舊家在 http://ensky.logdown.com/


因為 Facebook 疑似親中的問題我重新打開閒置已久的 Twitter,第一眼觀察到的是我的塗鴉牆怎麼都是一堆看起來跟我一點關係都沒有的東西。

像是這樣:

越想越怪,怎麼看都不應該推這些內容給我啊?直到我意識到上面的追隨中數量,一看不得了:

Ensky Lin

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store