本系列文寫給 ”使用過 Jenkins Pipeline 且希望了解如何更進一步的將其寫的更有規模” 的人
最近因為工作上的需要,寫了好一段時間的 Jenkins Pipeline,剛好可以分享一些心得、以及踩過的雷,最後是我們推薦的 Architecture。
Jenkins pipeline 是 Jenkins 在 2016 年推出的 Plugin。在此之前,大家使用 Jenkins 的方式幾乎都是 Freestyle project,也就是用 UI 操作一些執行的設定 (在哪個 Node 執行、執行前、中、後要幹麻,等等),而大家很快的就發現整個專案包含設定檔都有進行版本控制的必要性。因此 Jenkins 的開發團隊就開發了 Jenkins Pipeline 來完成這件事情。有了 Jenk …
/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:連線問題。
排除連線問題之後,我還嘗試了以下方式修復:
全部無效。
這表示已排除以下原因造成的錯誤:
而在這其中最奇怪的點就是「只有顯示商家詳細資訊這個部份出錯,其他都是正常的」這個部份了。
這表示這塊功能區之中只有我會壞,也許是 API 拉資料拉不回來,但只有我拉不回來。
於是我就試了換一個帳號登入,結果就成功了!!!
結果就成功了!!!
結果就成功了!!!
因為很激動所以說了三次。
而這大概表示,google map 用了我個人相關的資訊 build 出商家資訊的 api,但我的相關資訊有東西壞掉了 (database 壞了?我的 record 沒更新到?有 corrupt data 沒有被處理好?升級時漏掉我了?有各種可能)
看了一下 Google Map 可能怎樣用我的資料之後,我把這個選項勾掉:
最近遇到一個工作上的問題,就是客戶在我們的 daemon 不正常關閉 (類似 kill -9) 之後重開,sqlite 常常會出現問題。
由於前人做了不良的示範:Log 印不夠多,因此我們初步只知道以下狀況
傑克這實在太神奇了,到底為甚麼下個 check 就會好,這個 database 是發生了甚麼事情?
考慮過以下狀況:
最近 Twitch 只要撥放 VOD 就會開始轉轉轉,實在是非常困擾。
要解決轉轉轉問題,首先就是要先分析到底在轉幾點的,照慣例打開 F12,經過簡單的分析發現 Twitch 的 VOD 是放在 akamai 的 CDN 上,並且速度非常不穩定。
上周六下午看著看著 Overwatch League 突然發現最近很熱門的話題 (XQC 被 ban) 造成被瘋狂的洗版,像是這樣:
… 真的是不太能用。
有沒有 Tool 可以 filter 掉這些 SPAM 呢?
google 了 “twitch filter” “twitch spam” “twitch chat filter” 之類的關鍵字都沒有找到任何的相關 tool 可以做這件事情,那只好自己開發一個了
(結果整個寫完了才發現有一個叫做 BetterTTV 的東西可以做到這件事情,有感 googl e 實力退步了)
Step 1.先想好 User Stories
logdown 未來聽說不會維護 && 討厭 logdown 作者的關係搬到 Medium
因為 Facebook 疑似親中的問題我重新打開閒置已久的 Twitter,第一眼觀察到的是我的塗鴉牆怎麼都是一堆看起來跟我一點關係都沒有的東西。
像是這樣:
越想越怪,怎麼看都不應該推這些內容給我啊?直到我意識到上面的追隨中數量,一看不得了: